diff --git a/.github/release-template.md b/.github/release-template.md index 52a0f81..8770207 100644 --- a/.github/release-template.md +++ b/.github/release-template.md @@ -15,5 +15,25 @@ ${CHANGELOG} ## :package: Download: The following installation archives can be downloaded for different hardware platforms. To verify their integrity a `sha256` checksum is provided as well. -- Intel NUC: -:package: [thinRoot-${VERSION}-intelnuc.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-intelnuc.img)
SHA256: XSHAintelnuc.imgX
+- Generic-x86_64: +:package: [thinroot-${VERSION}-generic-x86_64.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-generic-x86_64.img)
SHA256: XSHAgeneric-x86_64.imgX
+ +- RaspberryPi5 Model B, RaspberryPi Compute Module 5, RaspberryPi 500: +:package: [thinroot-${VERSION}-rpi5.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi5.img)
SHA256: XSHArpi5.imgX
+:package: [thinroot-${VERSION}-rpi5-kernel.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi5-kernel.img)
SHA256: XSHArpi5-kernel.imgX
+:package: [thinroot-${VERSION}-rpi5-sdcard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi5-sdcard.img)
SHA256: XSHArpi5-sdcard.imgX
+ +- RaspberryPi4 Model B, RaspberryPi Compute Module 4, RaspberryPi 400: +:package: [thinroot-${VERSION}-rpi4.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi4.img)
SHA256: XSHArpi4.imgX
+:package: [thinroot-${VERSION}-rpi4-kernel.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi4-kernel.img)
SHA256: XSHArpi4-kernel.imgX
+:package: [thinroot-${VERSION}-rpi4-sdcard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi4-sdcard.img)
SHA256: XSHArpi4-sdcard.imgX
+ +- RaspberryPi3 Model B+, RaspberryPi3 Model B, RaspberryPi3 Model A+, RaspberryPi Compute Module 3, RaspberryPi Compute Module 3 lite, RaspberryPi Zero 2 W: +:package: [thinroot-${VERSION}-rpi3.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi3.img)
SHA256: XSHArpi3.imgX
+:package: [thinroot-${VERSION}-rpi3-kernel.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi3-kernel.img)
SHA256: XSHArpi3-kernel.imgX
+:package: [thinroot-${VERSION}-rpi3-sdcard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi3-sdcard.img)
SHA256: XSHArpi3-sdcard.imgX
+ +- TinkerBoard S, TinkerBoard: +:package: [thinroot-${VERSION}-tinkerboard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-tinkerboard.img)
SHA256: XSHAtinkerboard.imgX
+:package: [thinroot-${VERSION}-tinkerboard-kernel.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-tinkerboard-kernel.img)
SHA256: XSHAtinkerboard-kernel.imgX
+:package: [thinroot-${VERSION}-tinkerboard-sdcard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-tinkerboard-sdcard.img)
SHA256: XSHAtinkerboard-sdcard.imgX
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 370c857..9a3329b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ permissions: jobs: skip_check: name: Duplicate Check - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 outputs: should_skip: ${{ steps.check.outputs.should_skip }} steps: @@ -32,14 +32,19 @@ jobs: name: Linter Checks needs: skip_check if: ${{ needs.skip_check.outputs.should_skip != 'true' }} - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout Code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Check shell scripts uses: ludeeus/action-shellcheck@2.0.0 + with: + ignore_paths: >- + buildroot-patches/0010-lib32-integration/buildroot/support/scripts + env: + SHELLCHECK_OPTS: -e SC3010 -e SC3014 -e SC3057 -e SC3036 -e SC3028 -e SC3020 - name: Check yaml files uses: frenck/action-yamllint@v1.5 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3211b2d..5819f0c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,7 +24,7 @@ jobs: permissions: contents: write # ncipollo/release-action name: Release draft - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 outputs: upload_url: ${{ steps.release_drafter.outputs.upload_url }} version: ${{ steps.env.outputs.version }} @@ -33,7 +33,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 @@ -60,7 +60,7 @@ jobs: - name: Generate changelog id: changelog - uses: metcalfc/changelog-generator@v4.3.1 + uses: metcalfc/changelog-generator@v4.6.2 with: myToken: ${{ secrets.GITHUB_TOKEN }} @@ -78,7 +78,7 @@ jobs: - name: Create release draft id: release_drafter - uses: ncipollo/release-action@v1.14.0 + uses: ncipollo/release-action@v1.20.0 with: tag: ${{ steps.env.outputs.tag }} name: 'thinRoot ${{ steps.env.outputs.version }}' @@ -89,7 +89,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Upload release-template.md artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: path: /tmp/release-template.md name: release-template.md @@ -108,11 +108,11 @@ jobs: strategy: fail-fast: false matrix: - platform: [intelnuc] + platform: [generic-x86_64, rpi3, rpi4, rpi5, tinkerboard] steps: - name: Checkout Code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install Dependencies run: | @@ -148,7 +148,7 @@ jobs: # - name: remote debug tmate session # uses: mxschmitt/action-tmate@v1 - # if: matrix.platform == 'intelnuc' + # if: matrix.platform == 'generic-x86_64' # major build step - name: Build @@ -159,24 +159,56 @@ jobs: ####################### # release uploads - - name: Upload release snapshot [intelnuc] + - name: Upload release image [generic-x86_64, rpi3, rpi4, rpi5, tinkerboard] uses: shogo82148/actions-upload-release-asset@v1 with: upload_url: ${{ needs.release_draft.outputs.upload_url }} asset_path: release/thinroot-${{ needs.release_draft.outputs.version }}-${{ matrix.platform }}.img asset_content_type: application/octet-stream - - name: Upload build release checksum [intelnuc] + - name: Upload release image checksum [generic-x86_64, rpi3, rpi4, rpi5, tinkerboard] uses: shogo82148/actions-upload-release-asset@v1 with: upload_url: ${{ needs.release_draft.outputs.upload_url }} asset_path: release/thinroot-${{ needs.release_draft.outputs.version }}-${{ matrix.platform }}.img.sha256 asset_content_type: text/plain + - name: Upload release sdcard image [rpi3, rpi4, rpi5, tinkerboard] + if: matrix.platform == 'rpi3' || matrix.platform == 'rpi4' || matrix.platform == 'rpi5' || matrix.platform == 'tinkerboard' + uses: shogo82148/actions-upload-release-asset@v1 + with: + upload_url: ${{ needs.release_draft.outputs.upload_url }} + asset_path: release/thinroot-${{ needs.release_draft.outputs.version }}-${{ matrix.platform }}-sdcard.img + asset_content_type: application/octet-stream + + - name: Upload release sdcard image checksum [rpi3, rpi4, rpi5, tinkerboard] + if: matrix.platform == 'rpi3' || matrix.platform == 'rpi4' || matrix.platform == 'rpi5' || matrix.platform == 'tinkerboard' + uses: shogo82148/actions-upload-release-asset@v1 + with: + upload_url: ${{ needs.release_draft.outputs.upload_url }} + asset_path: release/thinroot-${{ needs.release_draft.outputs.version }}-${{ matrix.platform }}-sdcard.img.sha256 + asset_content_type: text/plain + + - name: Upload release kernel image [rpi3, rpi4, rpi5, tinkerboard] + if: matrix.platform == 'rpi3' || matrix.platform == 'rpi4' || matrix.platform == 'rpi5' || matrix.platform == 'tinkerboard' + uses: shogo82148/actions-upload-release-asset@v1 + with: + upload_url: ${{ needs.release_draft.outputs.upload_url }} + asset_path: release/thinroot-${{ needs.release_draft.outputs.version }}-${{ matrix.platform }}-kernel.img + asset_content_type: application/octet-stream + + - name: Upload release kernel image checksum [rpi3, rpi4, rpi5, tinkerboard] + if: matrix.platform == 'rpi3' || matrix.platform == 'rpi4' || matrix.platform == 'rpi5' || matrix.platform == 'tinkerboard' + uses: shogo82148/actions-upload-release-asset@v1 + with: + upload_url: ${{ needs.release_draft.outputs.upload_url }} + asset_path: release/thinroot-${{ needs.release_draft.outputs.version }}-${{ matrix.platform }}-kernel.img.sha256 + asset_content_type: text/plain + ####################### # manifest file artifact upload - name: Upload manifest artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: path: release/thinroot-${{ needs.release_draft.outputs.version }}-${{ matrix.platform }}.mf name: thinroot-${{ needs.release_draft.outputs.version }}-${{ matrix.platform }}.mf @@ -193,29 +225,29 @@ jobs: permissions: contents: write # ncipollo/release-action name: Update checksums - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: [release_draft, build] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 # download all artifact files - name: Download all workflow artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 - name: Patch release draft shell: bash run: | for f in */*.mf; do while read -r line; do - NEEDLE=$(echo "${line}" | awk '{print $3}' | sed 's/.*-\(.*\..*\)$/\1/') + NEEDLE=$(echo "${line}" | awk '{print $3}' | cut -d'-' -f3-) SHACKS=$(echo "${line}" | awk '{print $2}') sed -i "s/XSHA${NEEDLE}X/${SHACKS}/" release-template.md/release-template.md done < <(cat ${f}) done - name: Update release draft - uses: ncipollo/release-action@v1.14.0 + uses: ncipollo/release-action@v1.20.0 with: tag: ${{ needs.release_draft.outputs.tag }} bodyFile: release-template.md/release-template.md diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index b07660c..f5dca7e 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -5,7 +5,7 @@ name: Snapshot Build on: schedule: - - cron: '0 0 * * *' # run at 0 AM UTC + - cron: '0 5 * * *' # run at 5:00 AM UTC workflow_dispatch: inputs: skip_build: @@ -20,9 +20,9 @@ permissions: jobs: repo-check: name: Check for Changes - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - id: commit-check run: echo "has-commits=$(git --no-pager log --pretty='format:%an' --since='24 hours ago' | grep -v github-actions | wc -l)" >> $GITHUB_OUTPUT outputs: @@ -43,11 +43,11 @@ jobs: strategy: fail-fast: false matrix: - platform: [intelnuc] + platform: [generic-x86_64, rpi3, rpi4, rpi5, tinkerboard] steps: - name: Checkout Code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install Dependencies run: | @@ -103,11 +103,11 @@ jobs: ######################## # upload build artifacts - - name: Upload build artifact [intelnuc] - uses: actions/upload-artifact@v4 + - name: Upload build artifacts + uses: actions/upload-artifact@v6 with: - path: release/thinroot-${{ env.VERSION }}-${{ matrix.platform }}.img* - name: thinroot-${{ env.VERSION }}-${{ env.GITHUB_SHA7 }}-${{ matrix.platform }}.img + path: release/thinroot-${{ env.VERSION }}-${{ matrix.platform }}* + name: thinroot-${{ env.VERSION }}-${{ env.GITHUB_SHA7 }}-${{ matrix.platform }} continue-on-error: true # cleanup @@ -122,7 +122,7 @@ jobs: packages: write # smartsquaregmbh/delete-old-packages actions: write # c-hive/gha-remove-artifacts name: Cleanup artifacts/packages - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Remove old artifacts uses: c-hive/gha-remove-artifacts@v1.4.0 diff --git a/Makefile b/Makefile index dc5b1dc..2bb79f1 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2024.02.1 -BUILDROOT_SHA256=4c9f3a3bc19462a9bf838d7f37996c49c68a63af9f9e6c254ee76e0e02cd8194 +BUILDROOT_VERSION=2025.11.1 +BUILDROOT_SHA256=234b2e9bfad26d38dcca297daf9d7c0055826d98730c3f1da5515ba8e3ad7ca6 BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) @@ -29,7 +29,7 @@ buildroot-$(BUILDROOT_VERSION).tar.gz: $(BR2_DL_DIR) buildroot-$(BUILDROOT_VERSION): | buildroot-$(BUILDROOT_VERSION).tar.gz @echo "[patching buildroot-$(BUILDROOT_VERSION)]" - if [ ! -d $@ ]; then tar xf buildroot-$(BUILDROOT_VERSION).tar.gz; for p in $(sort $(wildcard buildroot-patches/*.patch)); do echo "\nApplying $${p}"; patch -d buildroot-$(BUILDROOT_VERSION) --remove-empty-files -p1 < $${p} || exit 127; [ ! -x $${p%.*}.sh ] || $${p%.*}.sh buildroot-$(BUILDROOT_VERSION); done; fi + if [ ! -d $@ ]; then tar xf buildroot-$(BUILDROOT_VERSION).tar.gz; for p in $(sort $(wildcard buildroot-patches/*.patch)); do echo "\nApplying $${p}"; patch -d buildroot-$(BUILDROOT_VERSION) --remove-empty-files --no-backup-if-mismatch -p1 < $${p} || exit 127; [ ! -x $${p%.*}.sh ] || $${p%.*}.sh buildroot-$(BUILDROOT_VERSION); done; fi build-$(PRODUCT): | buildroot-$(BUILDROOT_VERSION) mkdir $(shell pwd)/build-$(PRODUCT) @@ -70,7 +70,7 @@ $(addsuffix -release, $(PRODUCTS)): %: release: build @echo "[creating release: $(PRODUCT)]" - $(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(shell echo $(PRODUCT) | cut -d'_' -f2)) + $(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(PRODUCT)) if [ -x $(BOARD_DIR)/post-release.sh ]; then $(BOARD_DIR)/post-release.sh $(BOARD_DIR) ${PRODUCT} ${PRODUCT_VERSION}; fi check-all: $(addsuffix -check, $(PRODUCTS)) @@ -79,7 +79,7 @@ $(addsuffix -check, $(PRODUCTS)): %: check: buildroot-$(BUILDROOT_VERSION) build-$(PRODUCT)/.config @echo "[checking: $(PRODUCT)]" - $(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(shell echo $(PRODUCT) | cut -d'_' -f2)) + $(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(PRODUCT)) @echo "[checking status: $(BUILDROOT_EXTERNAL)]" buildroot-$(BUILDROOT_VERSION)/utils/check-package --exclude PackageHeader --br2-external $(BUILDROOT_EXTERNAL)/package/*/* @@ -113,6 +113,14 @@ savedefconfig: buildroot-$(BUILDROOT_VERSION) build-$(PRODUCT) toolchain: buildroot-$(BUILDROOT_VERSION) build-$(PRODUCT)/.config cd $(shell pwd)/build-$(PRODUCT) && $(MAKE) O=$(shell pwd)/build-$(PRODUCT) -C ../buildroot-$(BUILDROOT_VERSION) BR2_EXTERNAL=../$(BUILDROOT_EXTERNAL) BR2_DL_DIR=$(BR2_DL_DIR) BR2_CCACHE_DIR=$(BR2_CCACHE_DIR) BR2_JLEVEL=$(BR2_JLEVEL) PRODUCT=$(PRODUCT) PRODUCT_VERSION=$(PRODUCT_VERSION) toolchain +.PHONY: multilib32-menuconfig +multilib32-menuconfig: buildroot-$(BUILDROOT_VERSION) build-$(PRODUCT)/.config + cd $(shell pwd)/build-$(PRODUCT)/build/multilib32-*/output && $(MAKE) BR2_EXTERNAL_THINROOT_PATH=$(shell pwd)/$(BUILDROOT_EXTERNAL) menuconfig + +.PHONY: multilib32-savedefconfig +multilib32-savedefconfig: buildroot-$(BUILDROOT_VERSION) build-$(PRODUCT)/.config + cd $(shell pwd)/build-$(PRODUCT)/build/multilib32-*/output && $(MAKE) BR2_EXTERNAL_THINROOT_PATH=$(shell pwd)/$(BUILDROOT_EXTERNAL) savedefconfig + .PHONY: linux-check-dotconfig linux-check-dotconfig: buildroot-$(BUILDROOT_VERSION) build-$(PRODUCT) cd $(shell pwd)/build-$(PRODUCT) && $(MAKE) O=$(shell pwd)/build-$(PRODUCT) -C ../buildroot-$(BUILDROOT_VERSION) BR2_EXTERNAL=../$(BUILDROOT_EXTERNAL) BR2_DL_DIR=$(BR2_DL_DIR) BR2_CCACHE_DIR=$(BR2_CCACHE_DIR) BR2_JLEVEL=$(BR2_JLEVEL) PRODUCT=$(PRODUCT) PRODUCT_VERSION=$(PRODUCT_VERSION) linux-check-dotconfig BR2_DEFCONFIG=../$(DEFCONFIG_DIR)/$(PRODUCT).config BR2_CHECK_DOTCONFIG_OPTS="--github-format --strip-path-prefix=$(PWD)/" @@ -156,6 +164,8 @@ help: @echo " $(MAKE) PRODUCT= busybox-update-config: update busybox defconfig file" @echo " $(MAKE) PRODUCT= uboot-menuconfig: change u-boot config options" @echo " $(MAKE) PRODUCT= uboot-update-defconfig: update u-boot defconfig file" + @echo " $(MAKE) PRODUCT= multilib32-menuconfig: change config options for multilib32 build environment" + @echo " $(MAKE) PRODUCT= multilib32-savedefconfig: update defconfig file for multilib32 build environment" @echo @echo " $(MAKE) PRODUCT= legal-info: update legal information file" @echo diff --git a/README.md b/README.md index 41b1ecb..0d0ada9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + [![Current Release](https://img.shields.io/github/release/jens-maus/thinRoot.svg)](https://github.com/jens-maus/thinRoot/releases/latest) [![Downloads](https://img.shields.io/github/downloads/jens-maus/thinRoot/latest/total.svg)](https://github.com/jens-maus/thinRoot/releases/latest) @@ -10,32 +10,65 @@ [![Donate](https://img.shields.io/badge/donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RAQSDY9YNZVCL) [![GitHub stars](https://img.shields.io/github/stars/jens-maus/thinRoot.svg?style=social&label=Star)](https://github.com/jens-maus/thinRoot/stargazers/) -_thinRoot_ is a buildroot (https://buildroot.org/) powered operating system environment to create lightweight user-defined kiosk systems as ThinClients (e.g. using intel NUC, RaspberryPi, ASUS Tinkerboard, etc.) to smoothly connect to server-based desktop environments using ThinLinc, RDP (xfreerdp/remmina), VNC, etc. or to create simply web-kiosk systems displaying a webpage fullscreen. +_thinRoot_ is a buildroot (https://buildroot.org/) powered operating system environment to create lightweight user-defined kiosk systems or ThinClients for generic x86_64 hardware (e.g. intelNUC, standard PCs, Laptops, etc.) or single-board computer (SBC) driven embedded systems (RaspberryPi, ASUS Tinkerboard, etc.) to smoothly connect to server-based desktop environments (Linux/Windows Terminalserver, VDIs, etc.) via included ThinLinc, RDP (xfreerdp), VNC, SPICE, etc. clients or to create simple web-kiosk systems displaying a single fullscreen webpage upon bootup. ## :cookie: Features -* provides a lightweight kiosk system which after bootup provides a simple connection GUI with options to connect via [ThinLinc](http://www.cendio.se/), RDP (via [freerdp](https://github.com/FreeRDP/FreeRDP) or [remmina](https://remmina.org/)) or VNC to Linux and Windows-based Terminalservers. -* allows to run a fullscreen webbrowser (e.g. [qt-webengine-kiosk](https://github.com/akdor1154/qt-webengine-kiosk)) for webkiosk-based applications. -* allows to either use PXE/TFTP-based network boot environments or allow to directly install the thinRoot images onto a local storage disk. -* allows to create full-fledged system images below 150MB in size (e.g. for a fast network-based bootup). - -## :fire: Limitations -* The only limitation is, that we are **currently** not providing ready-to-use images for your selected hardware. Hence, you will have to create these images yourself using the provided information below. +* allows to be setup as a lightweight and generic ThinClient system which after bootup providing a simple connection GUI (using [qutselect](https://github.com/hzdr/qutselect)) with options to connect via [ThinLinc](http://www.cendio.se/), RDP (via [freerdp](https://github.com/FreeRDP/FreeRDP)), VNC or [SPICE](https://www.spice-space.org/) to Linux- or Windows-based desktop systems (Terminalserver, VDI, etc.) including potential USB device redirection/forwarding. +* allows to be setup to start only a fullscreen webbrowser (via [WebKit/MiniBrowser](https://github.com/WebKit/WebKit/tree/main/Tools/MiniBrowser)) for simple fullscreen webkiosk use-cases. +* direct support for SPICE-based connections to SPICE-enabled VDI systems hosted via [ProxmoxVE](https://www.proxmox.com/en/) including cluster proxied connection support. +* boots and operates completly in a full-fledged RAM disk with no mandatory local disk storage requirements. +* allows to be booted solely using existing PXE+TFTP/HTTP+DHCP-based netboot environments or to directly install the thinRoot images onto a small local boot disk. +* allows to use a TFTP/HTTP-connected bootserver: fetches environment files from a bootserver which then can be used to define alternative system bootup procedures (based on the hostname/MAC of the client system) by simply changing these environment files on the TFTP/HTTP bootserver. +* highly optimized for a small footprint: compressed kernel and system for fast network-based bootup use-cases. +* easily adaptable to other potential use cases apart from simple web-kiosk or ThinClient environment uses. +* can be easily enhanced to support more x86/ARM-based hardware. ## :computer: Requirements -1. One of the following ThinClient / single-board-computer (SBC) hardware: - * RaspberryPi 4, RaspberryPi 400, RaspberryPi Compute Module 4 - * RaspberryPi 3, RaspberryPi Compute Module 3 - * ASUS Tinkerboard, ASUS Tinkerboard S - * All "Intel NUC" type systems -2. If you want to run thinRoot as a pure network booted system, you require a PXE+TFTP+DHCP environment. -4. A server-based desktop environment to connect to (e.g. Linux via ThinLinc, Windows via RDP, etc.). +1. A supported x86_64/ARM-based hardware. Well working and tested hardware: + * All generic x86_64-based hardware (e.g. Intel NUC, modern Laptops, etc.) which come with directly supported PXE boot capabilities (Legacy or UEFI) in the BIOS. + * All ARM-based single board computer (SBC) systems supported by the [U-Boot](https://www.denx.de/project/u-boot/) bootloader which is used to provide a common way to boot the kernel and initrd via network. This includes: + * [RaspberryPi5 Model B](https://www.raspberrypi.com/products/raspberry-pi-5/), [RaspberryPi Compute Module 5](https://www.raspberrypi.com/products/compute-module-5), [RaspberryPi 500](https://www.raspberrypi.com/products/raspberry-pi-500/) + * [RaspberryPi4 Model B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/), [RaspberryPi Compute Module 4](https://www.raspberrypi.com/products/compute-module-4), [RaspberryPi 400](https://www.raspberrypi.com/products/raspberry-pi-400-unit/) + * [RaspberryPi3 Model B+](https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/), [RaspberryPi3 Model B](https://www.raspberrypi.com/products/raspberry-pi-3-model-b/), [RaspberryPi3 Model A+](https://www.raspberrypi.com/products/raspberry-pi-3-model-a-plus/), [RaspberryPi Compute Module 3](https://www.raspberrypi.com/products/compute-module-3-plus/), [RaspberryPi Zero 2 W](https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/) + * [TinkerBoard S](https://www.asus.com/de/networking-iot-servers/aiot-industrial-solutions/all-series/tinker-board-s/), [TinkerBoard](https://www.asus.com/de/networking-iot-servers/aiot-industrial-solutions/all-series/tinker-board/) +2. An already working PXE+TFTP/HTTP+DHCP bootserver environment where the thinRoot images and its environment files can be installed and directly accessed upon bootup via TFTP/HTTP sideloading. +3. In case of a ThinClient use-case: A network-based desktop environment (e.g. Windows Terminalserver, VDI system, etc.) to connect to via ThinLinc, RDP, VNC or SPICE protocol. +4. In case of a web-kisok use-case: A web page that can be configured using a bootserver-definable environment file so that thinRoot automatically starts as a lightweight web-kiosk. -## :cloud: Installation -The installation of thinRoot is quite straight forward as it is delivered as a full PXE bootable system image that can be directly booted using a PXE+TFTP+DHCP environment: +## :cloud: Quick-Installation +The installation of thinRoot is quite straight forward as it is delivered as fully network bootable system images which boot directly into a RAMdisk using images hosted by a an already existing PXE+TFTP/HTTP+DHCP environment: -1. [Download latest release](https://github.com/jens-maus/thinRoot/releases) archive for the hardware platform you are using: -2. Unarchive tar.bz2 file resulting in a 'bzImage' file to be bootable via a standard PXE environment. +1. [Download latest release](https://github.com/jens-maus/thinRoot/releases) zip archive for the hardware platform you are interesed in: + - *generic-x86_64* + 1. Put the unarchived `*.img` file into your tftpboot PXE environment (e.g. under `/tftpboot/thinroot`). + - *RaspberryPi, Tinkerboard*: + 1. Put the unarchived `*-[platform]-kernel.img` and `*-[platform].img` file into your existing tftpboot PXE environment where `[platform]` corresponds to your chosen hardware image. + 2. Use an imaging tool (e.g. [Etcher](https://github.com/balena-io/etcher) to flash the included `*-[platform]-sdcard.img` files to a fresh microSD card or USB thumb drive. + 3. Modify the `/boot/bootEnv.txt` file in the FAT32 boot partition to match your TFTP/HTTP bootserver setup. +2. Make sure your PXE+TFTP/HTTP+DHCP/bootserver provides the image files also via HTTP (e.g. using a nginx proxy against `/tftpboot`). +3. (`generic-x86_64`): Modify your PXE+TFTP/HTTP+DHCP/bootserver environment to load the corresponding `*.img` via HTTP and with the following APPEND line + - *iPXE/UEFI boot environment*: + ```cfg + set root-path http://192.168.74.30/thinroot/ + kernel ${root-path}thinroot.img + imgargs thinroot.img BOOT_IMAGE=${root-path}/thinroot.img console=tty2 noswap noinitrd consoleblank=120 init_on_alloc=1 init_on_free=0 slab_nomerge net.ifnames=0 intel_iommu=igfx_off quiet loglevel=0 + ``` + - *Syslinux/Legacy boot environment*: + ```cfg + LABEL thinroot + MENU LABEL ^thinRoot (stable) + KERNEL http://192.168.74.30/thinroot/thinroot.img + APPEND console=tty2 noswap noinitrd consoleblank=120 init_on_alloc=1 init_on_free=0 slab_nomerge net.ifnames=0 intel_iommu=igfx_off quiet loglevel=0 + ``` +4. (`rpi*, tinkerboard*`): Modify the `/boot/bootEnv.txt` file on the microSD card/USB thumb drive to match your PXE+TFTP/HTTP+DHCP environment: + ``` + bootserver=192.168.74.30 + kernel_img=thinroot/thinroot-tinkerboard-kernel.img + initrd=thinroot/thinroot-tinkerboard.img + extraargs=BASE_PATH=http://192.168.74.30/thinroot + ``` + Make sure to remove comments (`#`) from lines which are required and modify the pathes to match your PXE+TFTP/HTTP+DHCP environment. For example, it might also simply be enough to just enable the `extraargs=...` line if you want the image on the microSD card itself to be booted. However, if you want to fetch the kernel image and initrd from the `bootserver` make sure to uncomment these lines as well. ## :yum: How to contribute As the thinRoot project is an open source based project everyone is invited to contribute to this project. So, if you are a talented developer and want to contribute to the success of thinRoot feel free to send over pull requests or report issues / enhancement requests. Please note, however, the licensing and contributing implications and accept that - in short - anything you contribute to this repository/project (especially source code) will be (re)licensed under the Apache 2.0 license (see [CONTRIBUTING.md](CONTRIBUTING.md)). In addition, please understand that we will only accept contributions (either source code or issues in the issue tracker) if these comply to our [CODE OF CONDUCT](CODE_OF_CONDUCT.md). @@ -49,9 +82,9 @@ Building your own thinRoot image is a very straight forward process using this b ```sh $ git clone https://github.com/jens-maus/thinRoot $ cd thinRoot -$ make PRODUCT=intelnuc release +$ make PRODUCT=generic-x86_64 release [wait up to 1h] -$ cp release/thinroot-YYYYMMDD-intelnuc.img /tftpboot/thinroot/ +$ cp release/thinroot-YYYYMMDD-generic-x86_64.img /tftpboot/thinroot/ ``` ## :scroll: License diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index f9cebed..0fd19ce 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -10,11 +10,14 @@ BR2_TARGET_GENERIC_HOSTNAME="thinroot" BR2_TARGET_GENERIC_ISSUE="Welcome to thinRoot" BR2_TARGET_GENERIC_PASSWD_SHA512=y BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_TARGET_GENERIC_GETTY_PORT="tty2" -BR2_ENABLE_LOCALE_WHITELIST="C en_US de_DE" -BR2_GENERATE_LOCALE="en_US de_DE" +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C.UTF-8 en_US.UTF-8 de_DE.UTF-8" +BR2_GENERATE_LOCALE="C.UTF-8 en_US.UTF-8 de_DE.UTF-8" BR2_SYSTEM_ENABLE_NLS=y +BR2_TARGET_TZ_INFO=y BR2_TARGET_LOCALTIME="Europe/Berlin" BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_THINROOT_PATH)/rootfs-overlay" BR2_LINUX_KERNEL=y @@ -23,6 +26,9 @@ BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y # Buildroot packages +BR2_PACKAGE_XZ=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_HOST_KMOD_XZ=y BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_THINROOT_PATH)/Busybox.config" BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y BR2_PACKAGE_ALSA_UTILS=y @@ -30,6 +36,10 @@ BR2_PACKAGE_ALSA_UTILS_AMIXER=y BR2_PACKAGE_FFMPEG=y # BR2_PACKAGE_FFMPEG_FFMPEG is not set BR2_PACKAGE_FFMPEG_XCBGRAB=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_GLIBC_UTILS=y +BR2_PACKAGE_X264=y +BR2_PACKAGE_X265=y BR2_PACKAGE_PULSEAUDIO=y BR2_PACKAGE_DOSFSTOOLS=y BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y @@ -40,34 +50,32 @@ BR2_PACKAGE_F2FS_TOOLS=y BR2_PACKAGE_NTFS_3G=y BR2_PACKAGE_DEJAVU=y BR2_PACKAGE_LIBERATION=y -BR2_PACKAGE_MESA3D_DEMOS=y -BR2_PACKAGE_FREERDP=y +BR2_PACKAGE_LIBDRM=y BR2_PACKAGE_MESA3D=y BR2_PACKAGE_MESA3D_LLVM=y -BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LLVMPIPE=y BR2_PACKAGE_MESA3D_OPENGL_GLX=y BR2_PACKAGE_MESA3D_OPENGL_EGL=y BR2_PACKAGE_MESA3D_OPENGL_ES=y +BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS=y BR2_PACKAGE_PSPLASH=y -BR2_PACKAGE_PSPLASH_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/patches/psplash/hzdr" -BR2_PACKAGE_QT5BASE_OPENGL=y -BR2_PACKAGE_QT5BASE_OPENGL_ES2=y -BR2_PACKAGE_QT5BASE_OPENGL_LIB=y -BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb" +BR2_PACKAGE_PSPLASH_IMAGE="$(BR2_EXTERNAL_THINROOT_PATH)/patches/psplash/logo-hzdr.png" BR2_PACKAGE_XORG7=y BR2_PACKAGE_XSERVER_XORG_SERVER=y BR2_PACKAGE_XLIB_LIBXAW=y BR2_PACKAGE_XLIB_LIBXV=y +BR2_PACKAGE_XAPP_XCOMPMGR=y BR2_PACKAGE_XAPP_XPROP=y BR2_PACKAGE_XAPP_XRANDR=y BR2_PACKAGE_XAPP_XSETROOT=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y +BR2_PACKAGE_XDRIVER_XF86_INPUT_LIBINPUT=y BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC=y BR2_PACKAGE_NODM=y BR2_PACKAGE_XDOTOOL=y BR2_PACKAGE_OPENBOX=y BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_COMPRESS=y +BR2_PACKAGE_LINUX_FIRMWARE_COMPRESS_ZSTD=y BR2_PACKAGE_ACPID=y BR2_PACKAGE_EUDEV_RULES_GEN=y BR2_PACKAGE_USBMOUNT=y @@ -84,14 +92,24 @@ BR2_PACKAGE_NTP_NTPDATE=y BR2_PACKAGE_WGET=y BR2_PACKAGE_IRQBALANCE=y BR2_PACKAGE_TAR=y +BR2_PACKAGE_UTIL_LINUX_RFKILL=y +BR2_PACKAGE_PCSC_LITE=y +# BR2_PACKAGE_URANDOM_SCRIPTS is not set +BR2_TARGET_ROOTFS_CPIO=y BR2_TARGET_ROOTFS_CPIO_LZ4=y # BR2_TARGET_ROOTFS_TAR is not set BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_MKPASSWD=y BR2_PACKAGE_HOST_MTOOLS=y -BR2_PACKAGE_QUTSELECT=y -BR2_PACKAGE_THINLINC=y BR2_PACKAGE_HOTKEYD=y BR2_PACKAGE_NUMLOCKX=y BR2_PACKAGE_XPRINTIDLE=y +BR2_PACKAGE_XOSD=y +BR2_PACKAGE_XKB_SWITCH=y +BR2_PACKAGE_PIPEWIRE=y +BR2_PACKAGE_SETROOTPIX=y + +# X11 debug +#BR2_PACKAGE_XAPP_XDPYINFO=y +#BR2_PACKAGE_MESA3D_DEMOS=y diff --git a/buildroot-external/Busybox.config b/buildroot-external/Busybox.config index 6cb7420..d80bfbb 100644 --- a/buildroot-external/Busybox.config +++ b/buildroot-external/Busybox.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Busybox version: 1.36.1 -# Wed Mar 27 17:09:52 2024 +# Tue Feb 4 14:35:58 2025 # CONFIG_HAVE_DOT_CONFIG=y @@ -571,19 +571,19 @@ CONFIG_TUNE2FS=y # Linux Module Utilities # # CONFIG_MODPROBE_SMALL is not set -CONFIG_DEPMOD=y -CONFIG_INSMOD=y -CONFIG_LSMOD=y -CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y -CONFIG_MODINFO=y -CONFIG_MODPROBE=y -CONFIG_FEATURE_MODPROBE_BLACKLIST=y -CONFIG_RMMOD=y +# CONFIG_DEPMOD is not set +# CONFIG_INSMOD is not set +# CONFIG_LSMOD is not set +# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set +# CONFIG_MODINFO is not set +# CONFIG_MODPROBE is not set +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +# CONFIG_RMMOD is not set # # Options common to multiple modutils # -CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y +# CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS is not set # CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set # CONFIG_FEATURE_2_4_MODULES is not set # CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set @@ -591,12 +591,12 @@ CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y # CONFIG_FEATURE_INSMOD_LOADINKMEM is not set # CONFIG_FEATURE_INSMOD_LOAD_MAP is not set # CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set -CONFIG_FEATURE_CHECK_TAINTED_MODULE=y +# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set # CONFIG_FEATURE_INSMOD_TRY_MMAP is not set -CONFIG_FEATURE_MODUTILS_ALIAS=y -CONFIG_FEATURE_MODUTILS_SYMBOLS=y -CONFIG_DEFAULT_MODULES_DIR="/lib/modules" -CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" +# CONFIG_FEATURE_MODUTILS_ALIAS is not set +# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set +CONFIG_DEFAULT_MODULES_DIR="" +CONFIG_DEFAULT_DEPMOD_FILE="" # # Linux System Utilities @@ -1012,26 +1012,22 @@ CONFIG_VCONFIG=y CONFIG_DHCPD_LEASES_FILE="" # CONFIG_DUMPLEASES is not set # CONFIG_DHCPRELAY is not set -CONFIG_UDHCPC=y -CONFIG_FEATURE_UDHCPC_ARPING=y -CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y -CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" -CONFIG_UDHCPC6_DEFAULT_SCRIPT="/usr/share/udhcpc/default6.script" -CONFIG_UDHCPC6=y -CONFIG_FEATURE_UDHCPC6_RFC3646=y -CONFIG_FEATURE_UDHCPC6_RFC4704=y -CONFIG_FEATURE_UDHCPC6_RFC4833=y -CONFIG_FEATURE_UDHCPC6_RFC5970=y - -# -# Common options for DHCP applets -# -CONFIG_UDHCPC_DEFAULT_INTERFACE="eth0" +# CONFIG_UDHCPC is not set +# CONFIG_FEATURE_UDHCPC_ARPING is not set +# CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set +CONFIG_UDHCPC_DEFAULT_SCRIPT="" +CONFIG_UDHCPC6_DEFAULT_SCRIPT="" +# CONFIG_UDHCPC6 is not set +# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set +# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set +CONFIG_UDHCPC_DEFAULT_INTERFACE="" # CONFIG_FEATURE_UDHCP_PORT is not set CONFIG_UDHCP_DEBUG=0 -CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0 # CONFIG_FEATURE_UDHCP_RFC3397 is not set -CONFIG_FEATURE_UDHCP_8021Q=y +# CONFIG_FEATURE_UDHCP_8021Q is not set CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" # diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index 700c8b5..d0a76cf 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -8,7 +8,15 @@ menu "Additional software" source "$BR2_EXTERNAL_THINROOT_PATH/package/numlockx/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/xprintidle/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/remmina/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/virt-viewer/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/spice-gtk/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/phodav/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/rpi-eeprom/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/qt-webengine-kiosk/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/qt-kiosk-browser/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/multilib32/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/yoe-kiosk-browser/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/xosd/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/xkb-switch/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/setrootpix/Config.in" endmenu diff --git a/buildroot-external/board/intelnuc/kernel.config b/buildroot-external/board/generic-x86_64/kernel.config similarity index 66% rename from buildroot-external/board/intelnuc/kernel.config rename to buildroot-external/board/generic-x86_64/kernel.config index 1197d14..a2cd499 100644 --- a/buildroot-external/board/intelnuc/kernel.config +++ b/buildroot-external/board/generic-x86_64/kernel.config @@ -19,13 +19,16 @@ CONFIG_SYSFB=y CONFIG_FB=y CONFIG_FB_EFI=y -CONFIG_DRM=y -CONFIG_DRM_FBDEV_EMULATION=y +# disable simple framebuffer support +# CONFIG_FB_SIMPLE is not set + CONFIG_DRM_I915=y CONFIG_DRM_I915_CAPTURE_ERROR=y CONFIG_DRM_I915_COMPRESS_ERROR=y CONFIG_DRM_I915_USERPTR=y -# CONFIG_DRM_SIMPLEDRM is not set +CONFIG_DRM_AMDGPU=y +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_CIK=y CONFIG_MMC=y CONFIG_MMC_BLOCK=y @@ -34,11 +37,13 @@ CONFIG_MMC_SDHCI_ACPI=y CONFIG_MMC_SDHCI_PCI=y CONFIG_MMC_REALTEK_PCI=m CONFIG_MMC_REALTEK_USB=m +CONFIG_X86_X2APIC=y CONFIG_X86_INTEL_LPSS=y CONFIG_MISC_RTSX_PCI=m CONFIG_MISC_RTSX_USB=m +CONFIG_SND_HDA_COMPONENT=y CONFIG_SND_HDA_INTEL=m CONFIG_SND_HDA_I915=y CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y @@ -47,23 +52,13 @@ CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m CONFIG_SND_SOC=m CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y -CONFIG_SND_SOC_INTEL_SST=m CONFIG_SND_SOC_INTEL_CATPT=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m -CONFIG_SND_SOC_INTEL_SKYLAKE=m -CONFIG_SND_SOC_INTEL_SKL=m -CONFIG_SND_SOC_INTEL_APL=m -CONFIG_SND_SOC_INTEL_KBL=m -CONFIG_SND_SOC_INTEL_GLK=m -CONFIG_SND_SOC_INTEL_CNL=m -CONFIG_SND_SOC_INTEL_CFL=m -CONFIG_SND_SOC_INTEL_CML_H=m -CONFIG_SND_SOC_INTEL_CML_LP=m -CONFIG_SND_SOC_INTEL_SKYLAKE_FAMILY=m -CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC=y -CONFIG_SND_SOC_INTEL_SKYLAKE_COMMON=m +CONFIG_SND_SOC_SOF_INTEL_SKL=m +CONFIG_SND_SOC_SOF_INTEL_APL=m +CONFIG_SND_SOC_SOF_INTEL_CNL=m CONFIG_SND_SOC_ACPI_INTEL_MATCH=m CONFIG_SND_SOC_INTEL_MACH=y CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES=y @@ -166,7 +161,6 @@ CONFIG_EDAC_IGEN6=m CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_COMPAT=y CONFIG_I2C_CHARDEV=m CONFIG_I2C_MUX=m CONFIG_I2C_TINY_USB=m @@ -178,6 +172,9 @@ CONFIG_SPI_DLN2=m CONFIG_GPIO_DLN2=m CONFIG_MFD_DLN2=m +# Required for some PCIe devices such as ath12k +CONFIG_IRQ_REMAP=y + CONFIG_HW_RANDOM_AMD=y CONFIG_HW_RANDOM_INTEL=y CONFIG_HW_RANDOM_TPM=y @@ -186,3 +183,77 @@ CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" CONFIG_RTC_SYSTOHC=y CONFIG_RTC_SYSTOHC_DEVICE="rtc0" + +CONFIG_MEDIA_SUPPORT=m +CONFIG_VIDEO_DEV=m +CONFIG_DVB_CORE=m +# CONFIG_DVB_NET is not set +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m + +# set some ACPI options +CONFIG_ACPI_BATTERY=y + +# enable input MOUSEDEV +CONFIG_MOUSE_PS2_LIFEBOOK=y + +# DRM options +CONFIG_DRM_TTM=y +CONFIG_DRM_BUDDY=y + +# enable DESIGNWARE I2C/PCI support for touchpads and other +CONFIG_I2C_DESIGNWARE_CORE=y +CONFIG_I2C_DESIGNWARE_SLAVE=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_DESIGNWARE_BAYTRAIL=y +CONFIG_I2C_DESIGNWARE_PCI=y + +# enable special multifunction device drivers +CONFIG_MFD_INTEL_LPSS=m +CONFIG_MFD_INTEL_LPSS_ACPI=m +CONFIG_MFD_INTEL_LPSS_PCI=m + +# enable Synaptics RMI4 bus support +CONFIG_RMI4_CORE=m +CONFIG_RMI4_I2C=m +CONFIG_RMI4_SPI=m +CONFIG_RMI4_SMB=m +CONFIG_RMI4_F03=y +CONFIG_RMI4_F03_SERIO=m +CONFIG_RMI4_2D_SENSOR=y +CONFIG_RMI4_F11=y +CONFIG_RMI4_F12=y +CONFIG_RMI4_F30=y +CONFIG_RMI4_F34=y +CONFIG_RMI4_F3A=y +# CONFIG_RMI4_F54 is not set +CONFIG_RMI4_F55=y + +# enable special support for Thinkpad systems/laptops +CONFIG_THINKPAD_ACPI=m +# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set +# CONFIG_THINKPAD_ACPI_DEBUG is not set +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +CONFIG_THINKPAD_LMI=m + +# enable special support for DELL systems/laptops +CONFIG_X86_PLATFORM_DRIVERS_DELL=y +CONFIG_DELL_LAPTOP=m +# CONFIG_DELL_RBU is not set +CONFIG_DELL_RBTN=m +CONFIG_DELL_SMBIOS=m +CONFIG_DELL_SMBIOS_WMI=y +CONFIG_DELL_SMBIOS_SMM=y +CONFIG_DELL_SMO8800=m +CONFIG_DELL_WMI=m +CONFIG_DELL_WMI_PRIVACY=y +CONFIG_DELL_WMI_AIO=m +CONFIG_DELL_WMI_DESCRIPTOR=m +CONFIG_DELL_WMI_DDV=m +CONFIG_DELL_WMI_LED=m +CONFIG_DELL_WMI_SYSMAN=m + +# disable unnecessary stuff +# CONFIG_HYPERVISOR_GUEST is not set diff --git a/buildroot-external/board/generic-x86_64/post-build.sh b/buildroot-external/board/generic-x86_64/post-build.sh new file mode 100755 index 0000000..eba9dc3 --- /dev/null +++ b/buildroot-external/board/generic-x86_64/post-build.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +# create VERSION file +echo "VERSION=${PRODUCT_VERSION}" >"${TARGET_DIR}/VERSION" +echo "PRODUCT=${PRODUCT}" >>"${TARGET_DIR}/VERSION" +echo "PLATFORM=generic-x86_64" >>"${TARGET_DIR}/VERSION" + +# remove /etc/dbus-1/system.d/pulseaudio-system.conf +rm -f "${TARGET_DIR}/etc/dbus-1/system.d/pulseaudio-system.conf" +rm -f "${TARGET_DIR}/usr/share/dbus-1/system.d/pulseaudio-system.conf" + +# remove /etc/init.d/S40xorg as not needed +rm -f "${TARGET_DIR}/etc/init.d/S40xorg" + +# remove /lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf as it is systemd only +rm -f "${TARGET_DIR}/lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf" + +# remove unnecessary /etc/init.d/fuse3 +rm -f "${TARGET_DIR}/etc/init.d/fuse3" + +# remove unnecessary /usr/share/clc +rm -rf "${TARGET_DIR}/usr/share/clc" + +# remove unnecessary /lib/firmware stuff +rm -rf "${TARGET_DIR}/lib/firmware/intel-ucode" +rm -rf "${TARGET_DIR}/lib/firmware/amd-ucode" diff --git a/buildroot-external/board/intelnuc/post-image.sh b/buildroot-external/board/generic-x86_64/post-image.sh similarity index 100% rename from buildroot-external/board/intelnuc/post-image.sh rename to buildroot-external/board/generic-x86_64/post-image.sh diff --git a/buildroot-external/board/intelnuc/post-release.sh b/buildroot-external/board/generic-x86_64/post-release.sh similarity index 100% rename from buildroot-external/board/intelnuc/post-release.sh rename to buildroot-external/board/generic-x86_64/post-release.sh diff --git a/buildroot-external/board/intelnuc/users_table.txt b/buildroot-external/board/generic-x86_64/users_table.txt similarity index 100% rename from buildroot-external/board/intelnuc/users_table.txt rename to buildroot-external/board/generic-x86_64/users_table.txt diff --git a/buildroot-external/board/intelnuc/kernel_defconfig b/buildroot-external/board/intelnuc/kernel_defconfig deleted file mode 100644 index cc6d663..0000000 --- a/buildroot-external/board/intelnuc/kernel_defconfig +++ /dev/null @@ -1,353 +0,0 @@ -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_KERNEL_LZ4=y -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_AUDIT=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_PREEMPT_VOLUNTARY=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_TASKSTATS=y -CONFIG_TASK_DELAY_ACCT=y -CONFIG_TASK_XACCT=y -CONFIG_TASK_IO_ACCOUNTING=y -CONFIG_LOG_BUF_SHIFT=18 -CONFIG_CGROUPS=y -CONFIG_CGROUP_SCHED=y -CONFIG_CGROUP_FREEZER=y -CONFIG_CPUSETS=y -CONFIG_CGROUP_CPUACCT=y -CONFIG_NAMESPACES=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" -CONFIG_EXPERT=y -# CONFIG_COMPAT_BRK is not set -CONFIG_PROFILING=y -CONFIG_SMP=y -CONFIG_X86_INTEL_LPSS=y -CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y -CONFIG_MICROCODE_AMD=y -CONFIG_X86_MSR=y -CONFIG_X86_CPUID=y -CONFIG_NUMA=y -CONFIG_X86_CHECK_BIOS_CORRUPTION=y -# CONFIG_MTRR_SANITIZER is not set -CONFIG_EFI=y -CONFIG_EFI_STUB=y -CONFIG_HZ_1000=y -CONFIG_KEXEC=y -CONFIG_CRASH_DUMP=y -# CONFIG_ACPI_BATTERY is not set -CONFIG_ACPI_DOCK=y -CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_X86_ACPI_CPUFREQ=y -CONFIG_INTEL_IDLE=y -CONFIG_IA32_EMULATION=y -# CONFIG_VIRTUALIZATION is not set -CONFIG_JUMP_LABEL=y -# CONFIG_GCC_PLUGINS is not set -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_MAC_PARTITION=y -CONFIG_BSD_DISKLABEL=y -CONFIG_BINFMT_MISC=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_XFRM_USER=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -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_PNP_BOOTP=y -CONFIG_IP_PNP_RARP=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_SYN_COOKIES=y -# CONFIG_INET_DIAG is not set -CONFIG_TCP_CONG_ADVANCED=y -# CONFIG_TCP_CONG_BIC is not set -# CONFIG_TCP_CONG_WESTWOOD is not set -# CONFIG_TCP_CONG_HTCP is not set -CONFIG_TCP_MD5SIG=y -CONFIG_INET6_AH=y -CONFIG_INET6_ESP=y -# CONFIG_IPV6_SIT is not set -CONFIG_NETLABEL=y -CONFIG_NETFILTER=y -# CONFIG_NETFILTER_ADVANCED is not set -CONFIG_NF_CONNTRACK=y -CONFIG_NF_CONNTRACK_FTP=y -CONFIG_NF_CONNTRACK_IRC=y -CONFIG_NF_CONNTRACK_SIP=y -CONFIG_NF_CT_NETLINK=y -CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y -CONFIG_NETFILTER_XT_TARGET_NFLOG=y -CONFIG_NETFILTER_XT_TARGET_SECMARK=y -CONFIG_NETFILTER_XT_TARGET_TCPMSS=y -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y -CONFIG_NETFILTER_XT_MATCH_POLICY=y -CONFIG_NETFILTER_XT_MATCH_STATE=y -CONFIG_IP_NF_IPTABLES=y -CONFIG_IP_NF_FILTER=y -CONFIG_IP_NF_TARGET_REJECT=y -CONFIG_IP_NF_MANGLE=y -CONFIG_IP6_NF_IPTABLES=y -CONFIG_IP6_NF_MATCH_IPV6HEADER=y -CONFIG_IP6_NF_FILTER=y -CONFIG_IP6_NF_TARGET_REJECT=y -CONFIG_IP6_NF_MANGLE=y -CONFIG_NET_SCHED=y -CONFIG_NET_SCH_FQ_CODEL=y -CONFIG_NET_SCH_DEFAULT=y -CONFIG_NET_EMATCH=y -CONFIG_NET_CLS_ACT=y -CONFIG_BT=m -CONFIG_BT_RFCOMM=m -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=m -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_HIDP=m -CONFIG_BT_HCIBTUSB=m -CONFIG_BT_HCIUART=m -CONFIG_BT_HCIUART_ATH3K=y -CONFIG_BT_HCIBCM203X=m -CONFIG_BT_HCIBPA10X=m -CONFIG_BT_HCIBFUSB=m -CONFIG_BT_HCIDTL1=m -CONFIG_BT_HCIBT3C=m -CONFIG_BT_HCIBLUECARD=m -CONFIG_BT_HCIVHCI=m -CONFIG_BT_MRVL=m -CONFIG_BT_ATH3K=m -CONFIG_CFG80211=y -CONFIG_MAC80211=y -CONFIG_RFKILL=y -CONFIG_PCI=y -CONFIG_PCIEPORTBUS=y -CONFIG_HOTPLUG_PCI=y -CONFIG_PCCARD=y -CONFIG_YENTA=y -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_DEBUG_DEVRES=y -CONFIG_CONNECTOR=y -CONFIG_EFI_VARS=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_NVME_MULTIPATH=y -CONFIG_NVME_FC=y -CONFIG_MISC_RTSX_PCI=y -CONFIG_MISC_RTSX_USB=m -CONFIG_BLK_DEV_SD=y -CONFIG_BLK_DEV_SR=y -CONFIG_CHR_DEV_SG=y -CONFIG_SCSI_CONSTANTS=y -CONFIG_SCSI_SPI_ATTRS=y -CONFIG_ATA=y -CONFIG_MD=y -CONFIG_BLK_DEV_MD=y -CONFIG_BLK_DEV_DM=y -CONFIG_DM_MIRROR=y -CONFIG_DM_ZERO=y -CONFIG_MACINTOSH_DRIVERS=y -CONFIG_MAC_EMUMOUSEBTN=y -CONFIG_NETDEVICES=y -CONFIG_NETCONSOLE=y -CONFIG_TIGON3=y -CONFIG_NET_TULIP=y -CONFIG_E100=y -CONFIG_E1000=y -CONFIG_E1000E=y -CONFIG_IGB=y -CONFIG_IGC=y -CONFIG_SKY2=y -CONFIG_FORCEDETH=y -CONFIG_8139TOO=y -CONFIG_R8169=y -CONFIG_FDDI=y -CONFIG_IWLWIFI=m -CONFIG_IWLMVM=m -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_EVDEV=y -CONFIG_INPUT_JOYSTICK=y -CONFIG_INPUT_TABLET=y -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_INPUT_MISC=y -# CONFIG_LEGACY_PTYS is not set -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_NR_UARTS=32 -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_MANY_PORTS=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SERIAL_8250_DETECT_IRQ=y -CONFIG_SERIAL_8250_RSA=y -CONFIG_SERIAL_NONSTANDARD=y -CONFIG_TTY_PRINTK=y -CONFIG_HW_RANDOM=y -CONFIG_NVRAM=y -CONFIG_HPET=y -# CONFIG_HPET_MMAP is not set -CONFIG_I2C_CHARDEV=m -CONFIG_I2C_I801=y -CONFIG_POWER_RESET=y -CONFIG_WATCHDOG=y -CONFIG_DRM=y -CONFIG_DRM_I915=y -CONFIG_FB=y -CONFIG_FB_EFI=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_SOUND=y -CONFIG_SND=y -CONFIG_SND_HRTIMER=y -CONFIG_SND_SEQUENCER=y -CONFIG_SND_SEQ_DUMMY=y -CONFIG_SND_HDA_INTEL=m -CONFIG_SND_HDA_HWDEP=y -CONFIG_SND_HDA_PATCH_LOADER=y -CONFIG_SND_HDA_CODEC_REALTEK=m -CONFIG_SND_HDA_CODEC_ANALOG=m -CONFIG_SND_HDA_CODEC_SIGMATEL=m -CONFIG_SND_HDA_CODEC_VIA=m -CONFIG_SND_HDA_CODEC_HDMI=m -CONFIG_SND_HDA_CODEC_CIRRUS=m -CONFIG_SND_HDA_CODEC_CONEXANT=m -CONFIG_SND_HDA_CODEC_CA0110=m -CONFIG_SND_HDA_CODEC_CA0132=m -CONFIG_SND_HDA_CODEC_CMEDIA=m -CONFIG_SND_HDA_CODEC_SI3054=m -CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1 -CONFIG_SND_USB_AUDIO=y -CONFIG_HIDRAW=y -CONFIG_HID_A4TECH=y -CONFIG_HID_APPLE=y -CONFIG_HID_BELKIN=y -CONFIG_HID_CHERRY=y -CONFIG_HID_CHICONY=y -CONFIG_HID_CYPRESS=y -CONFIG_HID_EZKEY=y -CONFIG_HID_GYRATION=y -CONFIG_HID_ITE=y -CONFIG_HID_KENSINGTON=y -CONFIG_HID_LOGITECH=y -CONFIG_LOGITECH_FF=y -CONFIG_HID_REDRAGON=y -CONFIG_HID_MICROSOFT=y -CONFIG_HID_MONTEREY=y -CONFIG_HID_NTRIG=y -CONFIG_HID_PANTHERLORD=y -CONFIG_PANTHERLORD_FF=y -CONFIG_HID_PETALYNX=y -CONFIG_HID_SAMSUNG=y -CONFIG_HID_SUNPLUS=y -CONFIG_HID_TOPSEED=y -CONFIG_HID_PID=y -CONFIG_USB_HIDDEV=y -CONFIG_USB=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_MON=y -CONFIG_USB_XHCI_HCD=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_UHCI_HCD=y -CONFIG_USB_PRINTER=m -CONFIG_USB_WDM=m -CONFIG_USB_STORAGE=y -CONFIG_USB_STORAGE_REALTEK=m -CONFIG_USB_STORAGE_DATAFAB=m -CONFIG_USB_STORAGE_FREECOM=m -CONFIG_USB_STORAGE_ISD200=m -CONFIG_USB_STORAGE_USBAT=m -CONFIG_USB_STORAGE_SDDR09=m -CONFIG_USB_STORAGE_SDDR55=m -CONFIG_USB_STORAGE_JUMPSHOT=m -CONFIG_USB_STORAGE_ALAUDA=m -CONFIG_USB_STORAGE_ONETOUCH=m -CONFIG_USB_STORAGE_KARMA=m -CONFIG_USB_STORAGE_CYPRESS_ATACB=m -CONFIG_USB_STORAGE_ENE_UB6250=m -CONFIG_USB_UAS=m -CONFIG_USB_MDC800=m -CONFIG_USB_MICROTEK=m -CONFIG_MMC=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PCI=y -CONFIG_MMC_SDHCI_ACPI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_REALTEK_PCI=y -CONFIG_MMC_REALTEK_USB=m -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_CLASS_FLASH=m -CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y -CONFIG_LEDS_TRIGGER_TIMER=y -CONFIG_LEDS_TRIGGER_ONESHOT=y -CONFIG_LEDS_TRIGGER_DISK=y -CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_LEDS_TRIGGER_BACKLIGHT=y -CONFIG_LEDS_TRIGGER_CPU=y -CONFIG_LEDS_TRIGGER_ACTIVITY=y -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -CONFIG_LEDS_TRIGGER_TRANSIENT=y -CONFIG_LEDS_TRIGGER_CAMERA=y -CONFIG_LEDS_TRIGGER_PANIC=y -CONFIG_LEDS_TRIGGER_NETDEV=y -CONFIG_LEDS_TRIGGER_PATTERN=y -CONFIG_LEDS_TRIGGER_AUDIO=y -CONFIG_EDAC=y -CONFIG_EDAC_I7CORE=m -CONFIG_EDAC_SBRIDGE=m -CONFIG_RTC_CLASS=y -CONFIG_DMADEVICES=y -CONFIG_AMD_IOMMU=y -CONFIG_AMD_IOMMU_V2=m -CONFIG_INTEL_IOMMU=y -CONFIG_INTEL_IOMMU_SVM=y -CONFIG_RAS=y -CONFIG_EXT2_FS=y -CONFIG_EXT3_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_F2FS_FS=y -CONFIG_AUTOFS4_FS=y -CONFIG_FUSE_FS=y -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=850 -CONFIG_PROC_KCORE=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_HUGETLBFS=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3_ACL=y -CONFIG_NFS_V4=y -CONFIG_ROOT_NFS=y -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_850=y -CONFIG_NLS_CODEPAGE_1250=y -CONFIG_NLS_ASCII=y -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_UTF8=y -CONFIG_SECURITY=y -CONFIG_SECURITY_NETWORK=y -CONFIG_SECURITY_SELINUX=y -CONFIG_SECURITY_SELINUX_BOOTPARAM=y -CONFIG_SECURITY_SELINUX_DISABLE=y -CONFIG_PRINTK_TIME=y -CONFIG_MAGIC_SYSRQ=y -# CONFIG_SCHED_DEBUG is not set -CONFIG_SCHEDSTATS=y -CONFIG_BLK_DEV_IO_TRACE=y -CONFIG_DEBUG_BOOT_PARAMS=y diff --git a/buildroot-external/board/intelnuc/post-build.sh b/buildroot-external/board/intelnuc/post-build.sh deleted file mode 100755 index cb11502..0000000 --- a/buildroot-external/board/intelnuc/post-build.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# create VERSION file -echo "VERSION=${PRODUCT_VERSION}" >"${TARGET_DIR}/VERSION" -echo "PRODUCT=${PRODUCT}" >>"${TARGET_DIR}/VERSION" -echo "PLATFORM=intelnuc" >>"${TARGET_DIR}/VERSION" - -# remove /etc/dbus-1/system.d/pulseaudio-system.conf -rm -f "${TARGET_DIR}/etc/dbus-1/system.d/pulseaudio-system.conf" - -# remove /etc/init.d/S40xorg as not needed -rm -f "${TARGET_DIR}/etc/init.d/S40xorg" diff --git a/buildroot-external/board/rpi3/config.txt b/buildroot-external/board/rpi3/config.txt index 68035ff..179aa50 100644 --- a/buildroot-external/board/rpi3/config.txt +++ b/buildroot-external/board/rpi3/config.txt @@ -18,9 +18,6 @@ dtparam=spi=on # enable the UART #enable_uart=1 -# make sure the uart is running at 48MHz -#init_uart_clock=48000000 - # switch the bluetooth UART to the miniuart # for basic bluetooth support and fix core_freq #dtoverlay=miniuart-bt @@ -43,10 +40,6 @@ dtparam=watchdog=on # start with heartbeat on PWR led and mmc0 on ACT led dtparam=pwr_led_trigger=timer,act_led_trigger=mmc0 -# start device tree at 0x2008000 to have -# space for the u-boot boot script -device_tree_address=0x2008000 - # use fixed names for start.elf/fixup.dat start_file=start.elf fixup_file=fixup.dat diff --git a/buildroot-external/board/rpi3/genimage.cfg b/buildroot-external/board/rpi3/genimage.cfg index c65b79d..8c3d22e 100644 --- a/buildroot-external/board/rpi3/genimage.cfg +++ b/buildroot-external/board/rpi3/genimage.cfg @@ -4,22 +4,19 @@ image boot.vfat { files = { "VERSION", - "bcm2710-rpi-3-b-plus.dtb", - "bcm2837-rpi-3-b-plus.dtb", "bcm2710-rpi-3-b.dtb", - "bcm2837-rpi-3-b.dtb", + "bcm2710-rpi-3-b-plus.dtb", "bcm2710-rpi-2-b.dtb", "bcm2710-rpi-cm3.dtb", - "bcm2837-rpi-3-a-plus.dtb", - "bcm2837-rpi-cm3-io3.dtb", "bcm2710-rpi-zero-2.dtb", + "bcm2710-rpi-zero-2-w.dtb", "cmdline.txt", "config.txt", "bootEnv.txt", "rpi-firmware/bootcode.bin", "rpi-firmware/fixup.dat", "rpi-firmware/start.elf", - "rpi-firmware/overlays", + "overlays", "u-boot.bin", "boot.scr" } diff --git a/buildroot-external/board/rpi3/kernel.config b/buildroot-external/board/rpi3/kernel.config new file mode 100644 index 0000000..55e53a1 --- /dev/null +++ b/buildroot-external/board/rpi3/kernel.config @@ -0,0 +1,33 @@ +# disable old framebuffer for video display to work +# CONFIG_FB_BCM2708 is not set + +# disable video camera support +# CONFIG_VIDEO_BCM2835_UNICAM is not set + +# disable touchscreen +# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set + +# disable simple framebuffer support +# CONFIG_FB_SIMPLE is not set + +# enable mmc support +CONFIG_MMC_BCM2835=y + +# use pl011 serial as a kernel module and +# disable serial console on amba +CONFIG_SERIAL_AMBA_PL011=m +# CONFIG_SERIAL_AMBA_PL011_CONSOLE is not set + +# disable backlight support +# CONFIG_BACKLIGHT_RPI is not set + +# enable DRM +CONFIG_DRM=y +CONFIG_DRM_V3D=y +CONFIG_DRM_VC4=y +CONFIG_DRM_SIMPLEDRM=y + +# enable SND +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SOC=y diff --git a/buildroot-external/board/rpi3/kernel_defconfig b/buildroot-external/board/rpi3/kernel_defconfig deleted file mode 100644 index 20c5b88..0000000 --- a/buildroot-external/board/rpi3/kernel_defconfig +++ /dev/null @@ -1,1267 +0,0 @@ -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_DEFAULT_HOSTNAME="localhost" -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_AUDIT=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_PREEMPT=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BSD_PROCESS_ACCT_V3=y -CONFIG_TASKSTATS=y -CONFIG_TASK_DELAY_ACCT=y -CONFIG_TASK_XACCT=y -CONFIG_TASK_IO_ACCOUNTING=y -CONFIG_IKCONFIG=m -CONFIG_IKCONFIG_PROC=y -CONFIG_MEMCG=y -CONFIG_BLK_CGROUP=y -CONFIG_CGROUP_FREEZER=y -CONFIG_CGROUP_DEVICE=y -CONFIG_CGROUP_CPUACCT=y -CONFIG_NAMESPACES=y -CONFIG_USER_NS=y -CONFIG_SCHED_AUTOGROUP=y -CONFIG_BLK_DEV_INITRD=y -# CONFIG_SGETMASK_SYSCALL is not set -CONFIG_EMBEDDED=y -# CONFIG_COMPAT_BRK is not set -CONFIG_PROFILING=y -CONFIG_SMP=y -CONFIG_NR_CPUS=4 -# CONFIG_SCHED_MC is not set -CONFIG_EFI=y -CONFIG_EFI_STUB=y -CONFIG_HZ_1000=y -# CONFIG_RANDOMIZE_BASE is not set -# CONFIG_SUSPEND is not set -CONFIG_PM=y -CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y -CONFIG_CPUFREQ_DT=y -CONFIG_CPU_IDLE_GOV_LADDER=y -# CONFIG_VIRTUALIZATION is not set -CONFIG_JUMP_LABEL=y -CONFIG_COMPAT_32BIT_TIME=y -CONFIG_MODULES=y -CONFIG_MODULE_FORCE_LOAD=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_BLK_DEV_THROTTLING=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_MAC_PARTITION=y -CONFIG_BINFMT_MISC=m -CONFIG_KSM=y -CONFIG_CLEANCACHE=y -CONFIG_FRONTSWAP=y -CONFIG_CMA=y -CONFIG_ZSWAP=y -CONFIG_Z3FOLD=m -CONFIG_ZSMALLOC=m -CONFIG_IDLE_PAGE_TRACKING=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_PACKET_DIAG=m -CONFIG_UNIX=y -CONFIG_UNIX_DIAG=m -CONFIG_TLS=m -CONFIG_XFRM_USER=m -CONFIG_NET_KEY=m -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_FIB_TRIE_STATS=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_PNP_BOOTP=y -CONFIG_IP_PNP_RARP=y -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE_DEMUX=m -CONFIG_NET_IPGRE=m -CONFIG_NET_IPGRE_BROADCAST=y -CONFIG_IP_MROUTE=y -CONFIG_IP_MROUTE_MULTIPLE_TABLES=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_SYN_COOKIES=y -CONFIG_NET_IPVTI=m -CONFIG_NET_FOU=y -CONFIG_INET_AH=m -CONFIG_INET_ESP=m -CONFIG_INET_ESP_OFFLOAD=m -CONFIG_INET_IPCOMP=m -CONFIG_INET_DIAG=m -CONFIG_INET_UDP_DIAG=m -CONFIG_INET_RAW_DIAG=m -CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_HSTCP=m -CONFIG_TCP_CONG_HYBLA=m -CONFIG_TCP_CONG_NV=m -CONFIG_TCP_CONG_SCALABLE=m -CONFIG_TCP_CONG_LP=y -CONFIG_TCP_CONG_VENO=m -CONFIG_TCP_CONG_YEAH=m -CONFIG_TCP_CONG_ILLINOIS=m -CONFIG_TCP_CONG_DCTCP=m -CONFIG_TCP_CONG_CDG=m -CONFIG_TCP_CONG_BBR=m -CONFIG_TCP_MD5SIG=y -CONFIG_IPV6=m -CONFIG_IPV6_ROUTER_PREF=y -CONFIG_IPV6_ROUTE_INFO=y -CONFIG_IPV6_OPTIMISTIC_DAD=y -CONFIG_INET6_AH=m -CONFIG_INET6_ESP=m -CONFIG_INET6_ESP_OFFLOAD=m -CONFIG_INET6_IPCOMP=m -CONFIG_IPV6_MIP6=m -CONFIG_IPV6_ILA=m -CONFIG_IPV6_SIT_6RD=y -CONFIG_IPV6_TUNNEL=m -CONFIG_IPV6_MULTIPLE_TABLES=y -CONFIG_IPV6_SUBTREES=y -CONFIG_IPV6_MROUTE=y -CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y -CONFIG_IPV6_PIMSM_V2=y -CONFIG_NETLABEL=y -CONFIG_NETWORK_SECMARK=y -CONFIG_NETFILTER=y -CONFIG_NF_CONNTRACK=m -CONFIG_NF_CONNTRACK_SECMARK=y -CONFIG_NF_CONNTRACK_ZONES=y -CONFIG_NF_CONNTRACK_EVENTS=y -CONFIG_NF_CONNTRACK_TIMEOUT=y -CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CONNTRACK_AMANDA=m -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_SNMP=m -CONFIG_NF_CONNTRACK_PPTP=m -CONFIG_NF_CONNTRACK_SANE=m -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m -CONFIG_NF_CT_NETLINK_TIMEOUT=m -CONFIG_NF_CT_NETLINK_HELPER=m -CONFIG_NETFILTER_NETLINK_GLUE_CT=y -CONFIG_NETFILTER_XT_SET=m -CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_HMARK=m -CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -CONFIG_NETFILTER_XT_TARGET_LED=m -CONFIG_NETFILTER_XT_TARGET_LOG=m -CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_TARGET_NFLOG=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_TARGET_TEE=m -CONFIG_NETFILTER_XT_TARGET_TPROXY=m -CONFIG_NETFILTER_XT_TARGET_TRACE=m -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -CONFIG_NETFILTER_XT_MATCH_BPF=m -CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_CPU=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ESP=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -CONFIG_NETFILTER_XT_MATCH_IPVS=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -CONFIG_NETFILTER_XT_MATCH_NFACCT=m -CONFIG_NETFILTER_XT_MATCH_OSF=m -CONFIG_NETFILTER_XT_MATCH_OWNER=m -CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_RATEEST=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_RECENT=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_TIME=m -CONFIG_NETFILTER_XT_MATCH_U32=m -CONFIG_IP_SET=m -CONFIG_IP_SET_BITMAP_IP=m -CONFIG_IP_SET_BITMAP_IPMAC=m -CONFIG_IP_SET_BITMAP_PORT=m -CONFIG_IP_SET_HASH_IP=m -CONFIG_IP_SET_HASH_IPPORT=m -CONFIG_IP_SET_HASH_IPPORTIP=m -CONFIG_IP_SET_HASH_IPPORTNET=m -CONFIG_IP_SET_HASH_NET=m -CONFIG_IP_SET_HASH_NETPORT=m -CONFIG_IP_SET_HASH_NETIFACE=m -CONFIG_IP_SET_LIST_SET=m -CONFIG_IP_VS=m -CONFIG_IP_VS_PROTO_TCP=y -CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_ESP=y -CONFIG_IP_VS_PROTO_AH=y -CONFIG_IP_VS_PROTO_SCTP=y -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -CONFIG_IP_VS_SED=m -CONFIG_IP_VS_NQ=m -CONFIG_IP_VS_FTP=m -CONFIG_IP_VS_PE_SIP=m -CONFIG_IP_NF_IPTABLES=y -CONFIG_IP_NF_MATCH_AH=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_RPFILTER=m -CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_FILTER=y -CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_NAT=m -CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_RAW=m -CONFIG_IP_NF_ARPTABLES=m -CONFIG_IP_NF_ARPFILTER=m -CONFIG_IP_NF_ARP_MANGLE=m -CONFIG_IP6_NF_IPTABLES=m -CONFIG_IP6_NF_MATCH_AH=m -CONFIG_IP6_NF_MATCH_EUI64=m -CONFIG_IP6_NF_MATCH_FRAG=m -CONFIG_IP6_NF_MATCH_OPTS=m -CONFIG_IP6_NF_MATCH_HL=m -CONFIG_IP6_NF_MATCH_IPV6HEADER=m -CONFIG_IP6_NF_MATCH_MH=m -CONFIG_IP6_NF_MATCH_RPFILTER=m -CONFIG_IP6_NF_MATCH_RT=m -CONFIG_IP6_NF_TARGET_HL=m -CONFIG_IP6_NF_FILTER=m -CONFIG_IP6_NF_TARGET_REJECT=m -CONFIG_IP6_NF_MANGLE=m -CONFIG_IP6_NF_RAW=m -CONFIG_IP6_NF_NAT=m -CONFIG_IP6_NF_TARGET_MASQUERADE=m -CONFIG_IP6_NF_TARGET_NPT=m -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_IP=m -CONFIG_BRIDGE_EBT_IP6=m -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_MARK=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_VLAN=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_MARK_T=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_NFLOG=m -CONFIG_SCTP_COOKIE_HMAC_SHA1=y -CONFIG_ATM=m -CONFIG_L2TP=m -CONFIG_L2TP_V3=y -CONFIG_L2TP_IP=m -CONFIG_L2TP_ETH=m -CONFIG_BRIDGE=m -CONFIG_VLAN_8021Q=m -CONFIG_VLAN_8021Q_GVRP=y -CONFIG_VLAN_8021Q_MVRP=y -CONFIG_ATALK=m -CONFIG_6LOWPAN=m -CONFIG_IEEE802154=m -CONFIG_IEEE802154_6LOWPAN=m -CONFIG_MAC802154=m -CONFIG_NET_SCHED=y -CONFIG_NET_SCH_CBQ=m -CONFIG_NET_SCH_HTB=m -CONFIG_NET_SCH_HFSC=m -CONFIG_NET_SCH_ATM=m -CONFIG_NET_SCH_PRIO=m -CONFIG_NET_SCH_MULTIQ=m -CONFIG_NET_SCH_RED=m -CONFIG_NET_SCH_SFB=m -CONFIG_NET_SCH_SFQ=m -CONFIG_NET_SCH_TEQL=m -CONFIG_NET_SCH_TBF=m -CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_DSMARK=m -CONFIG_NET_SCH_NETEM=m -CONFIG_NET_SCH_DRR=m -CONFIG_NET_SCH_MQPRIO=m -CONFIG_NET_SCH_CHOKE=m -CONFIG_NET_SCH_QFQ=m -CONFIG_NET_SCH_CODEL=m -CONFIG_NET_SCH_FQ_CODEL=m -CONFIG_NET_SCH_FQ=m -CONFIG_NET_SCH_HHF=m -CONFIG_NET_SCH_PIE=m -CONFIG_NET_SCH_INGRESS=m -CONFIG_NET_SCH_PLUG=m -CONFIG_NET_SCH_DEFAULT=y -CONFIG_NET_SCH_FQ_CODEL=y -CONFIG_NET_CLS_BASIC=m -CONFIG_NET_CLS_TCINDEX=m -CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_FW=m -CONFIG_NET_CLS_U32=m -CONFIG_CLS_U32_MARK=y -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_RSVP6=m -CONFIG_NET_CLS_FLOW=m -CONFIG_NET_CLS_CGROUP=m -CONFIG_NET_EMATCH=y -CONFIG_NET_EMATCH_CMP=m -CONFIG_NET_EMATCH_NBYTE=m -CONFIG_NET_EMATCH_U32=m -CONFIG_NET_EMATCH_META=m -CONFIG_NET_EMATCH_TEXT=m -CONFIG_NET_EMATCH_IPSET=m -CONFIG_NET_CLS_ACT=y -CONFIG_NET_ACT_POLICE=m -CONFIG_NET_ACT_GACT=m -CONFIG_GACT_PROB=y -CONFIG_NET_ACT_MIRRED=m -CONFIG_NET_ACT_IPT=m -CONFIG_NET_ACT_NAT=m -CONFIG_NET_ACT_PEDIT=m -CONFIG_NET_ACT_SIMP=m -CONFIG_NET_ACT_SKBEDIT=m -CONFIG_NET_ACT_CSUM=m -CONFIG_BATMAN_ADV=m -CONFIG_OPENVSWITCH=m -CONFIG_VSOCKETS=m -CONFIG_NET_PKTGEN=m -CONFIG_HAMRADIO=y -CONFIG_AX25=m -CONFIG_NETROM=m -CONFIG_ROSE=m -CONFIG_MKISS=m -CONFIG_6PACK=m -CONFIG_BPQETHER=m -CONFIG_BAYCOM_SER_FDX=m -CONFIG_BAYCOM_SER_HDX=m -CONFIG_YAM=m -CONFIG_CAN=m -CONFIG_CAN_VCAN=m -CONFIG_CAN_SLCAN=m -CONFIG_CAN_MCP251X=m -CONFIG_CAN_GS_USB=m -CONFIG_CAN_PEAK_USB=m -CONFIG_BT=m -CONFIG_BT_RFCOMM=m -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=m -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_HIDP=m -CONFIG_BT_6LOWPAN=m -CONFIG_BT_HCIBTUSB=m -CONFIG_BT_HCIUART=m -CONFIG_BT_HCIUART_ATH3K=y -CONFIG_BT_HCIUART_3WIRE=y -CONFIG_BT_HCIBCM203X=m -CONFIG_BT_HCIBPA10X=m -CONFIG_BT_HCIBFUSB=m -CONFIG_BT_HCIVHCI=m -CONFIG_BT_MRVL=m -CONFIG_BT_MRVL_SDIO=m -CONFIG_BT_ATH3K=m -CONFIG_CFG80211=m -CONFIG_MAC80211=m -CONFIG_MAC80211_MESH=y -CONFIG_RFKILL=m -CONFIG_RFKILL_INPUT=y -CONFIG_NET_9P=m -CONFIG_NFC=m -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -# CONFIG_FIRMWARE_MEMMAP is not set -CONFIG_MTD=m -CONFIG_MTD_BLOCK=m -CONFIG_MTD_SPI_NOR=m -CONFIG_MTD_UBI=m -CONFIG_OF=y -CONFIG_OF_CONFIGFS=y -CONFIG_ZRAM=m -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_CRYPTOLOOP=m -CONFIG_BLK_DEV_DRBD=m -CONFIG_BLK_DEV_NBD=m -CONFIG_BLK_DEV_RAM=y -CONFIG_CDROM_PKTCDVD=m -CONFIG_ATA_OVER_ETH=m -CONFIG_EEPROM_AT24=m -CONFIG_TI_ST=m -# CONFIG_SCSI_PROC_FS is not set -CONFIG_BLK_DEV_SD=y -CONFIG_CHR_DEV_ST=m -CONFIG_BLK_DEV_SR=m -CONFIG_CHR_DEV_SG=m -CONFIG_SCSI_ISCSI_ATTRS=y -CONFIG_ISCSI_TCP=m -CONFIG_ISCSI_BOOT_SYSFS=m -CONFIG_ATA=y -CONFIG_MD=y -CONFIG_MD_LINEAR=m -CONFIG_BLK_DEV_DM=m -CONFIG_DM_CRYPT=m -CONFIG_DM_SNAPSHOT=m -CONFIG_DM_THIN_PROVISIONING=m -CONFIG_DM_MIRROR=m -CONFIG_DM_LOG_USERSPACE=m -CONFIG_DM_RAID=m -CONFIG_DM_ZERO=m -CONFIG_DM_DELAY=m -CONFIG_NETDEVICES=y -CONFIG_BONDING=m -CONFIG_DUMMY=m -CONFIG_WIREGUARD=m -CONFIG_IFB=m -CONFIG_MACVLAN=m -CONFIG_VXLAN=m -CONFIG_NETCONSOLE=m -CONFIG_TUN=m -CONFIG_VETH=m -CONFIG_VSOCKMON=m -CONFIG_ENC28J60=m -CONFIG_LED_TRIGGER_PHY=y -CONFIG_MDIO_BITBANG=m -CONFIG_PPP=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_FILTER=y -CONFIG_PPP_MPPE=m -CONFIG_PPP_MULTILINK=y -CONFIG_PPPOATM=m -CONFIG_PPPOE=m -CONFIG_PPPOL2TP=m -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_SLIP=m -CONFIG_SLIP_COMPRESSED=y -CONFIG_SLIP_SMART=y -CONFIG_USB_CATC=m -CONFIG_USB_KAWETH=m -CONFIG_USB_PEGASUS=m -CONFIG_USB_RTL8150=m -CONFIG_USB_RTL8152=m -CONFIG_USB_LAN78XX=y -CONFIG_USB_USBNET=y -CONFIG_USB_NET_AX8817X=m -CONFIG_USB_NET_AX88179_178A=m -CONFIG_USB_NET_CDCETHER=m -CONFIG_USB_NET_CDC_EEM=m -CONFIG_USB_NET_CDC_NCM=m -CONFIG_USB_NET_HUAWEI_CDC_NCM=m -CONFIG_USB_NET_CDC_MBIM=m -CONFIG_USB_NET_DM9601=m -CONFIG_USB_NET_SR9700=m -CONFIG_USB_NET_SR9800=m -CONFIG_USB_NET_SMSC75XX=m -CONFIG_USB_NET_SMSC95XX=y -CONFIG_USB_NET_GL620A=m -CONFIG_USB_NET_NET1080=m -CONFIG_USB_NET_PLUSB=m -CONFIG_USB_NET_MCS7830=m -CONFIG_USB_NET_CDC_SUBSET=m -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_KC2190=y -CONFIG_USB_NET_ZAURUS=m -CONFIG_USB_NET_CX82310_ETH=m -CONFIG_USB_NET_KALMIA=m -CONFIG_USB_NET_QMI_WWAN=m -CONFIG_USB_HSO=m -CONFIG_USB_NET_INT51X1=m -CONFIG_USB_IPHETH=m -CONFIG_USB_SIERRA_NET=m -CONFIG_USB_VL600=m -CONFIG_ATH9K=m -CONFIG_ATH9K_HTC=m -CONFIG_CARL9170=m -CONFIG_ATH6KL=m -CONFIG_ATH6KL_USB=m -CONFIG_AR5523=m -CONFIG_AT76C50X_USB=m -CONFIG_B43=m -# CONFIG_B43_PHY_N is not set -CONFIG_B43LEGACY=m -CONFIG_BRCMFMAC=m -CONFIG_BRCMFMAC_USB=y -CONFIG_BRCMDBG=y -CONFIG_HOSTAP=m -CONFIG_P54_COMMON=m -CONFIG_P54_USB=m -CONFIG_LIBERTAS=m -CONFIG_LIBERTAS_USB=m -CONFIG_LIBERTAS_SDIO=m -CONFIG_LIBERTAS_THINFIRM=m -CONFIG_LIBERTAS_THINFIRM_USB=m -CONFIG_MWIFIEX=m -CONFIG_MWIFIEX_SDIO=m -CONFIG_MT7601U=m -CONFIG_RT2X00=m -CONFIG_RT2500USB=m -CONFIG_RT73USB=m -CONFIG_RT2800USB=m -CONFIG_RT2800USB_RT3573=y -CONFIG_RT2800USB_RT53XX=y -CONFIG_RT2800USB_RT55XX=y -CONFIG_RT2800USB_UNKNOWN=y -CONFIG_RTL8187=m -CONFIG_RTL8192CU=m -CONFIG_RTL8XXXU=m -CONFIG_USB_ZD1201=m -CONFIG_ZD1211RW=m -CONFIG_MAC80211_HWSIM=m -CONFIG_USB_NET_RNDIS_WLAN=m -CONFIG_IEEE802154_AT86RF230=m -CONFIG_IEEE802154_MRF24J40=m -CONFIG_IEEE802154_CC2520=m -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_JOYDEV=m -CONFIG_INPUT_EVDEV=m -# CONFIG_KEYBOARD_ATKBD is not set -CONFIG_KEYBOARD_GPIO=m -CONFIG_KEYBOARD_TCA6416=m -CONFIG_KEYBOARD_TCA8418=m -# CONFIG_INPUT_MOUSE is not set -CONFIG_INPUT_JOYSTICK=y -CONFIG_JOYSTICK_IFORCE=m -CONFIG_JOYSTICK_IFORCE_USB=m -CONFIG_JOYSTICK_XPAD=m -CONFIG_JOYSTICK_XPAD_FF=y -CONFIG_JOYSTICK_XPAD_LEDS=y -CONFIG_JOYSTICK_PSXPAD_SPI=m -CONFIG_JOYSTICK_PSXPAD_SPI_FF=y -CONFIG_JOYSTICK_RPISENSE=m -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_ADS7846=m -CONFIG_TOUCHSCREEN_EGALAX=m -CONFIG_TOUCHSCREEN_EXC3000=m -CONFIG_TOUCHSCREEN_GOODIX=m -CONFIG_TOUCHSCREEN_EDT_FT5X06=m -CONFIG_TOUCHSCREEN_USB_COMPOSITE=m -CONFIG_TOUCHSCREEN_STMPE=m -CONFIG_TOUCHSCREEN_IQS5XX=m -CONFIG_INPUT_MISC=y -CONFIG_INPUT_AD714X=m -CONFIG_INPUT_ATI_REMOTE2=m -CONFIG_INPUT_KEYSPAN_REMOTE=m -CONFIG_INPUT_POWERMATE=m -CONFIG_INPUT_YEALINK=m -CONFIG_INPUT_CM109=m -CONFIG_INPUT_UINPUT=m -CONFIG_INPUT_GPIO_ROTARY_ENCODER=m -CONFIG_INPUT_ADXL34X=m -CONFIG_INPUT_CMA3000=m -CONFIG_SERIO=m -CONFIG_SERIO_RAW=m -CONFIG_GAMEPORT=m -CONFIG_GAMEPORT_NS558=m -CONFIG_GAMEPORT_L4=m -CONFIG_BRCM_CHAR_DRIVERS=y -CONFIG_BCM2835_DEVGPIOMEM=y -# CONFIG_LEGACY_PTYS is not set -CONFIG_SERIAL_8250=y -# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set -CONFIG_SERIAL_8250_16550A_VARIANTS=y -CONFIG_SERIAL_8250_CONSOLE=y -# CONFIG_SERIAL_8250_DMA is not set -CONFIG_SERIAL_8250_NR_UARTS=1 -CONFIG_SERIAL_8250_RUNTIME_UARTS=0 -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SERIAL_OF_PLATFORM=y -CONFIG_SERIAL_SC16IS7XX=m -CONFIG_SERIAL_SC16IS7XX_SPI=y -CONFIG_SERIAL_DEV_BUS=m -CONFIG_TTY_PRINTK=y -CONFIG_HW_RANDOM=y -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=m -CONFIG_I2C_MUX=m -CONFIG_I2C_MUX_GPMUX=m -CONFIG_I2C_MUX_PCA954x=m -CONFIG_I2C_MUX_PINCTRL=m -CONFIG_I2C_GPIO=m -CONFIG_I2C_ROBOTFUZZ_OSIF=m -CONFIG_I2C_TINY_USB=m -CONFIG_SPI=y -CONFIG_SPI_SPIDEV=m -CONFIG_SPI_SLAVE=y -CONFIG_PPS_CLIENT_LDISC=m -CONFIG_PPS_CLIENT_GPIO=m -CONFIG_PINCTRL=y -CONFIG_PINCTRL_MCP23S08=m -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_PCF857X=m -CONFIG_GPIO_ARIZONA=m -CONFIG_GPIO_STMPE=y -CONFIG_W1=m -CONFIG_W1_MASTER_DS2490=m -CONFIG_W1_MASTER_DS2482=m -CONFIG_W1_MASTER_DS1WM=m -CONFIG_W1_MASTER_GPIO=m -CONFIG_W1_SLAVE_THERM=m -CONFIG_W1_SLAVE_SMEM=m -CONFIG_W1_SLAVE_DS2408=m -CONFIG_W1_SLAVE_DS2413=m -CONFIG_W1_SLAVE_DS2406=m -CONFIG_W1_SLAVE_DS2423=m -CONFIG_W1_SLAVE_DS2431=m -CONFIG_W1_SLAVE_DS2433=m -CONFIG_W1_SLAVE_DS2438=m -CONFIG_W1_SLAVE_DS2780=m -CONFIG_W1_SLAVE_DS2781=m -CONFIG_W1_SLAVE_DS28E04=m -CONFIG_POWER_RESET=y -CONFIG_POWER_RESET_GPIO=y -CONFIG_BATTERY_DS2760=m -CONFIG_HWMON=m -CONFIG_SENSORS_DS1621=m -CONFIG_SENSORS_IIO_HWMON=m -CONFIG_SENSORS_JC42=m -CONFIG_SENSORS_LM75=m -CONFIG_SENSORS_PWM_FAN=m -CONFIG_SENSORS_SHT21=m -CONFIG_SENSORS_SHT3x=m -CONFIG_SENSORS_SHTC1=m -CONFIG_SENSORS_INA2XX=m -CONFIG_SENSORS_TMP102=m -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_CORE=y -CONFIG_GPIO_WATCHDOG=m -CONFIG_MFD_RASPBERRYPI_POE_HAT=m -CONFIG_MFD_STMPE=y -CONFIG_STMPE_SPI=y -CONFIG_MFD_ARIZONA_I2C=m -CONFIG_MFD_ARIZONA_SPI=m -CONFIG_MFD_WM5102=y -CONFIG_REGULATOR=y -CONFIG_REGULATOR_FIXED_VOLTAGE=m -CONFIG_REGULATOR_GPIO=y -CONFIG_MEDIA_SUPPORT=m -CONFIG_MEDIA_USB_SUPPORT=y -CONFIG_USB_VIDEO_CLASS=m -CONFIG_USB_PWC=m -CONFIG_VIDEO_CPIA2=m -CONFIG_USB_ZR364XX=m -CONFIG_USB_STKWEBCAM=m -CONFIG_USB_S2255=m -CONFIG_VIDEO_USBTV=m -CONFIG_VIDEO_PVRUSB2=m -CONFIG_VIDEO_HDPVR=m -CONFIG_VIDEO_STK1160_COMMON=m -CONFIG_VIDEO_GO7007=m -CONFIG_VIDEO_GO7007_USB=m -CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m -CONFIG_VIDEO_AU0828=m -CONFIG_DVB_USB_V2=m -CONFIG_DVB_USB_AF9035=m -CONFIG_DVB_USB_ANYSEE=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_AZ6007=m -CONFIG_DVB_USB_CE6230=m -CONFIG_DVB_USB_EC168=m -CONFIG_DVB_USB_GL861=m -CONFIG_DVB_USB_MXL111SF=m -CONFIG_DVB_USB_DVBSKY=m -CONFIG_SMS_USB_DRV=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -CONFIG_DVB_AS102=m -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_EM28XX_V4L2=m -CONFIG_VIDEO_EM28XX_ALSA=m -CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_RADIO_SI470X=m -CONFIG_USB_SI470X=m -CONFIG_I2C_SI470X=m -CONFIG_RADIO_SI4713=m -CONFIG_I2C_SI4713=m -CONFIG_USB_MR800=m -CONFIG_USB_DSBR=m -CONFIG_RADIO_SHARK=m -CONFIG_RADIO_SHARK2=m -CONFIG_USB_KEENE=m -CONFIG_USB_MA901=m -CONFIG_RADIO_TEA5764=m -CONFIG_RADIO_SAA7706H=m -CONFIG_RADIO_TEF6862=m -CONFIG_RADIO_WL1273=m -CONFIG_RADIO_WL128X=m -CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_VIDEO_UDA1342=m -CONFIG_VIDEO_SONY_BTF_MPX=m -CONFIG_VIDEO_TVP5150=m -CONFIG_VIDEO_TW2804=m -CONFIG_VIDEO_TW9903=m -CONFIG_VIDEO_TW9906=m -CONFIG_VIDEO_OV7640=m -CONFIG_VIDEO_MT9V011=m -CONFIG_VIDEO_AD5398=m -CONFIG_DRM=m -CONFIG_DRM_LOAD_EDID_FIRMWARE=y -CONFIG_DRM_UDL=m -CONFIG_DRM_PANEL_SIMPLE=m -CONFIG_DRM_PANEL_ILITEK_ILI9806E=m -CONFIG_DRM_PANEL_SITRONIX_ST7701=m -CONFIG_DRM_PANEL_TPO_Y17P=m -CONFIG_DRM_TOSHIBA_TC358762=m -CONFIG_DRM_PANEL_MIPI_DBI=m -CONFIG_TINYDRM_HX8357D=m -CONFIG_TINYDRM_REPAPER=m -CONFIG_FB=y -CONFIG_FB_UDL=m -CONFIG_FB_SIMPLE=y -CONFIG_BACKLIGHT_PWM=m -CONFIG_BACKLIGHT_GPIO=m -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_SOUND=y -CONFIG_SND=m -CONFIG_SND_OSSEMUL=y -CONFIG_SND_PCM_OSS=m -CONFIG_SND_HRTIMER=m -CONFIG_SND_SEQUENCER=m -CONFIG_SND_SEQ_DUMMY=m -CONFIG_SND_DUMMY=m -CONFIG_SND_ALOOP=m -CONFIG_SND_VIRMIDI=m -CONFIG_SND_MTPAV=m -CONFIG_SND_SERIAL_U16550=m -CONFIG_SND_MPU401=m -CONFIG_SND_USB_AUDIO=m -CONFIG_SND_USB_UA101=m -CONFIG_SND_USB_CAIAQ=m -CONFIG_SND_USB_CAIAQ_INPUT=y -CONFIG_SND_USB_6FIRE=m -CONFIG_SND_USB_TONEPORT=m -CONFIG_SND_SOC=m -CONFIG_SND_RPI_SIMPLE_SOUNDCARD=m -CONFIG_SND_RPI_WM8804_SOUNDCARD=m -CONFIG_SND_SOC_AD193X_SPI=m -CONFIG_SND_SOC_AD193X_I2C=m -CONFIG_SND_SOC_ADAU1701=m -CONFIG_SND_SOC_AK4554=m -CONFIG_SND_SOC_CS4265=m -CONFIG_SND_SOC_CS4271_I2C=m -CONFIG_SND_SOC_DA7213=m -CONFIG_SND_SOC_DMIC=m -CONFIG_SND_SOC_ICS43432=m -CONFIG_SND_SOC_MA120X0P=m -CONFIG_SND_SOC_MAX98357A=m -CONFIG_SND_SOC_PCM179X_I2C=m -CONFIG_SND_SOC_PCM186X_I2C=m -CONFIG_SND_SOC_PCM5102A=m -CONFIG_SND_SOC_PCM512x_I2C=m -CONFIG_SND_SOC_TAS571X=m -CONFIG_SND_SOC_TLV320AIC32X4_I2C=m -CONFIG_SND_SOC_WM8731=m -CONFIG_SND_SOC_WM8741=m -CONFIG_SND_SOC_WM8804_I2C=m -CONFIG_SND_SOC_WM8960=m -CONFIG_SND_SOC_TPA6130A2=m -CONFIG_SND_SOC_I_SABRE_CODEC=m -CONFIG_SND_SIMPLE_CARD=m -CONFIG_SND_AUDIO_GRAPH_CARD=m -CONFIG_HIDRAW=y -CONFIG_UHID=m -CONFIG_HID_A4TECH=m -CONFIG_HID_ACRUX=m -CONFIG_HID_APPLE=m -CONFIG_HID_BELKIN=m -CONFIG_HID_BETOP_FF=m -CONFIG_HID_CHERRY=m -CONFIG_HID_CHICONY=m -CONFIG_HID_CYPRESS=m -CONFIG_HID_DRAGONRISE=m -CONFIG_HID_EMS_FF=m -CONFIG_HID_ELECOM=m -CONFIG_HID_ELO=m -CONFIG_HID_EZKEY=m -CONFIG_HID_GEMBIRD=m -CONFIG_HID_HOLTEK=m -CONFIG_HID_KEYTOUCH=m -CONFIG_HID_KYE=m -CONFIG_HID_UCLOGIC=m -CONFIG_HID_WALTOP=m -CONFIG_HID_GYRATION=m -CONFIG_HID_TWINHAN=m -CONFIG_HID_KENSINGTON=m -CONFIG_HID_LCPOWER=m -CONFIG_HID_LOGITECH=m -CONFIG_HID_LOGITECH_DJ=m -CONFIG_LOGITECH_FF=y -CONFIG_LOGIRUMBLEPAD2_FF=y -CONFIG_LOGIG940_FF=y -CONFIG_HID_MAGICMOUSE=m -CONFIG_HID_MICROSOFT=m -CONFIG_HID_MONTEREY=m -CONFIG_HID_MULTITOUCH=m -CONFIG_HID_NTRIG=m -CONFIG_HID_ORTEK=m -CONFIG_HID_PANTHERLORD=m -CONFIG_HID_PETALYNX=m -CONFIG_HID_PICOLCD=m -CONFIG_HID_PLAYSTATION=m -CONFIG_PLAYSTATION_FF=y -CONFIG_HID_ROCCAT=m -CONFIG_HID_SAMSUNG=m -CONFIG_HID_SONY=m -CONFIG_HID_SPEEDLINK=m -CONFIG_HID_STEAM=m -CONFIG_HID_SUNPLUS=m -CONFIG_HID_GREENASIA=m -CONFIG_HID_SMARTJOYPLUS=m -CONFIG_HID_TOPSEED=m -CONFIG_HID_THINGM=m -CONFIG_HID_THRUSTMASTER=m -CONFIG_HID_WACOM=m -CONFIG_HID_WIIMOTE=m -CONFIG_HID_XINMO=m -CONFIG_HID_ZEROPLUS=m -CONFIG_HID_ZYDACRON=m -CONFIG_HID_PID=y -CONFIG_USB_HIDDEV=y -CONFIG_USB_LED_TRIG=y -CONFIG_USB=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_LEDS_TRIGGER_USBPORT=m -CONFIG_USB_MON=m -CONFIG_USB_PRINTER=m -CONFIG_USB_TMC=m -CONFIG_USB_STORAGE=y -CONFIG_USB_STORAGE_REALTEK=m -CONFIG_USB_STORAGE_DATAFAB=m -CONFIG_USB_STORAGE_FREECOM=m -CONFIG_USB_STORAGE_ISD200=m -CONFIG_USB_STORAGE_USBAT=m -CONFIG_USB_STORAGE_SDDR09=m -CONFIG_USB_STORAGE_SDDR55=m -CONFIG_USB_STORAGE_JUMPSHOT=m -CONFIG_USB_STORAGE_ALAUDA=m -CONFIG_USB_STORAGE_ONETOUCH=m -CONFIG_USB_STORAGE_KARMA=m -CONFIG_USB_STORAGE_CYPRESS_ATACB=m -CONFIG_USB_STORAGE_ENE_UB6250=m -CONFIG_USB_UAS=m -CONFIG_USB_MDC800=m -CONFIG_USB_MICROTEK=m -CONFIG_USBIP_CORE=m -CONFIG_USBIP_VHCI_HCD=m -CONFIG_USBIP_HOST=m -CONFIG_USB_DWC2=y -CONFIG_USB_DWC2_HOST=y -CONFIG_USB_SERIAL=m -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_AIRCABLE=m -CONFIG_USB_SERIAL_ARK3116=m -CONFIG_USB_SERIAL_BELKIN=m -CONFIG_USB_SERIAL_CH341=m -CONFIG_USB_SERIAL_WHITEHEAT=m -CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m -CONFIG_USB_SERIAL_CP210X=m -CONFIG_USB_SERIAL_CYPRESS_M8=m -CONFIG_USB_SERIAL_EMPEG=m -CONFIG_USB_SERIAL_FTDI_SIO=m -CONFIG_USB_SERIAL_VISOR=m -CONFIG_USB_SERIAL_IPAQ=m -CONFIG_USB_SERIAL_IR=m -CONFIG_USB_SERIAL_EDGEPORT=m -CONFIG_USB_SERIAL_EDGEPORT_TI=m -CONFIG_USB_SERIAL_F81232=m -CONFIG_USB_SERIAL_GARMIN=m -CONFIG_USB_SERIAL_IPW=m -CONFIG_USB_SERIAL_IUU=m -CONFIG_USB_SERIAL_KEYSPAN_PDA=m -CONFIG_USB_SERIAL_KEYSPAN=m -CONFIG_USB_SERIAL_KLSI=m -CONFIG_USB_SERIAL_KOBIL_SCT=m -CONFIG_USB_SERIAL_MCT_U232=m -CONFIG_USB_SERIAL_METRO=m -CONFIG_USB_SERIAL_MOS7720=m -CONFIG_USB_SERIAL_MOS7840=m -CONFIG_USB_SERIAL_NAVMAN=m -CONFIG_USB_SERIAL_PL2303=m -CONFIG_USB_SERIAL_OTI6858=m -CONFIG_USB_SERIAL_QCAUX=m -CONFIG_USB_SERIAL_QUALCOMM=m -CONFIG_USB_SERIAL_SPCP8X5=m -CONFIG_USB_SERIAL_SAFE=m -CONFIG_USB_SERIAL_SIERRAWIRELESS=m -CONFIG_USB_SERIAL_SYMBOL=m -CONFIG_USB_SERIAL_TI=m -CONFIG_USB_SERIAL_CYBERJACK=m -CONFIG_USB_SERIAL_OPTION=m -CONFIG_USB_SERIAL_OMNINET=m -CONFIG_USB_SERIAL_OPTICON=m -CONFIG_USB_SERIAL_XSENS_MT=m -CONFIG_USB_SERIAL_WISHBONE=m -CONFIG_USB_SERIAL_SSU100=m -CONFIG_USB_SERIAL_QT2=m -CONFIG_USB_SERIAL_DEBUG=m -CONFIG_USB_EMI62=m -CONFIG_USB_EMI26=m -CONFIG_USB_ADUTUX=m -CONFIG_USB_SEVSEG=m -CONFIG_USB_LEGOTOWER=m -CONFIG_USB_LCD=m -CONFIG_USB_CYPRESS_CY7C63=m -CONFIG_USB_CYTHERM=m -CONFIG_USB_IDMOUSE=m -CONFIG_USB_FTDI_ELAN=m -CONFIG_USB_APPLEDISPLAY=m -CONFIG_USB_LD=m -CONFIG_USB_TRANCEVIBRATOR=m -CONFIG_USB_IOWARRIOR=m -CONFIG_USB_TEST=m -CONFIG_USB_ISIGHTFW=m -CONFIG_USB_YUREX=m -CONFIG_USB_ATM=m -CONFIG_USB_SPEEDTOUCH=m -CONFIG_USB_CXACRU=m -CONFIG_USB_UEAGLEATM=m -CONFIG_USB_XUSBATM=m -CONFIG_NOP_USB_XCEIV=y -CONFIG_USB_GADGET=y -CONFIG_MMC=y -CONFIG_MMC_BLOCK_MINORS=32 -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SPI=m -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_PCA9532=m -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_PCA955X=m -CONFIG_LEDS_PCA963X=m -CONFIG_LEDS_PWM=y -CONFIG_LEDS_IS31FL32XX=m -CONFIG_LEDS_USER=m -CONFIG_LEDS_TRIGGER_TIMER=y -CONFIG_LEDS_TRIGGER_ONESHOT=y -CONFIG_LEDS_TRIGGER_DISK=y -CONFIG_LEDS_TRIGGER_MTD=y -CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_LEDS_TRIGGER_BACKLIGHT=y -CONFIG_LEDS_TRIGGER_CPU=y -CONFIG_LEDS_TRIGGER_ACTIVITY=y -CONFIG_LEDS_TRIGGER_GPIO=y -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -CONFIG_LEDS_TRIGGER_TRANSIENT=m -CONFIG_LEDS_TRIGGER_CAMERA=m -CONFIG_LEDS_TRIGGER_INPUT=y -CONFIG_LEDS_TRIGGER_PANIC=y -CONFIG_LEDS_TRIGGER_NETDEV=y -CONFIG_LEDS_TRIGGER_PATTERN=m -CONFIG_LEDS_TRIGGER_ACTPWR=y -CONFIG_ACCESSIBILITY=y -CONFIG_SPEAKUP=m -CONFIG_SPEAKUP_SYNTH_SOFT=m -CONFIG_RTC_CLASS=y -# CONFIG_RTC_HCTOSYS is not set -# CONFIG_RTC_SYSTOHC is not set -CONFIG_RTC_DRV_ABX80X=m -CONFIG_RTC_DRV_DS1307=m -CONFIG_RTC_DRV_DS1374=m -CONFIG_RTC_DRV_DS1672=m -CONFIG_RTC_DRV_MAX6900=m -CONFIG_RTC_DRV_RS5C372=m -CONFIG_RTC_DRV_ISL1208=m -CONFIG_RTC_DRV_ISL12022=m -CONFIG_RTC_DRV_X1205=m -CONFIG_RTC_DRV_PCF8523=m -CONFIG_RTC_DRV_PCF85063=m -CONFIG_RTC_DRV_PCF85363=m -CONFIG_RTC_DRV_PCF8563=m -CONFIG_RTC_DRV_PCF8583=m -CONFIG_RTC_DRV_M41T80=m -CONFIG_RTC_DRV_BQ32K=m -CONFIG_RTC_DRV_S35390A=m -CONFIG_RTC_DRV_FM3130=m -CONFIG_RTC_DRV_RX8581=m -CONFIG_RTC_DRV_RX8025=m -CONFIG_RTC_DRV_EM3027=m -CONFIG_RTC_DRV_RV3028=m -CONFIG_RTC_DRV_SD3078=m -CONFIG_RTC_DRV_M41T93=m -CONFIG_RTC_DRV_M41T94=m -CONFIG_RTC_DRV_DS1302=m -CONFIG_RTC_DRV_DS1305=m -CONFIG_RTC_DRV_DS1390=m -CONFIG_RTC_DRV_R9701=m -CONFIG_RTC_DRV_RX4581=m -CONFIG_RTC_DRV_RS5C348=m -CONFIG_RTC_DRV_MAX6902=m -CONFIG_RTC_DRV_PCF2123=m -CONFIG_RTC_DRV_DS3232=m -CONFIG_RTC_DRV_PCF2127=m -CONFIG_RTC_DRV_RV3029C2=m -CONFIG_DMADEVICES=y -CONFIG_DMABUF_HEAPS=y -CONFIG_DMABUF_HEAPS_SYSTEM=y -CONFIG_DMABUF_HEAPS_CMA=y -CONFIG_UIO=m -CONFIG_UIO_PDRV_GENIRQ=m -CONFIG_VHOST_VSOCK=m -CONFIG_STAGING=y -CONFIG_PRISM2_USB=m -CONFIG_R8712U=m -CONFIG_R8188EU=m -CONFIG_VT6656=m -CONFIG_STAGING_MEDIA=y -CONFIG_FB_TFT=m -CONFIG_FB_TFT_AGM1264K_FL=m -CONFIG_FB_TFT_BD663474=m -CONFIG_FB_TFT_HX8340BN=m -CONFIG_FB_TFT_HX8347D=m -CONFIG_FB_TFT_HX8353D=m -CONFIG_FB_TFT_HX8357D=m -CONFIG_FB_TFT_ILI9163=m -CONFIG_FB_TFT_ILI9320=m -CONFIG_FB_TFT_ILI9325=m -CONFIG_FB_TFT_ILI9340=m -CONFIG_FB_TFT_ILI9341=m -CONFIG_FB_TFT_ILI9481=m -CONFIG_FB_TFT_ILI9486=m -CONFIG_FB_TFT_PCD8544=m -CONFIG_FB_TFT_RA8875=m -CONFIG_FB_TFT_S6D02A1=m -CONFIG_FB_TFT_S6D1121=m -CONFIG_FB_TFT_SH1106=m -CONFIG_FB_TFT_SSD1289=m -CONFIG_FB_TFT_SSD1306=m -CONFIG_FB_TFT_SSD1331=m -CONFIG_FB_TFT_SSD1351=m -CONFIG_FB_TFT_ST7735R=m -CONFIG_FB_TFT_TINYLCD=m -CONFIG_FB_TFT_TLS8204=m -CONFIG_FB_TFT_UC1701=m -CONFIG_FB_TFT_UPD161704=m -CONFIG_FB_TFT_WATTEROTT=m -CONFIG_COMMON_CLK=y -CONFIG_MAILBOX=y -# CONFIG_IOMMU_SUPPORT is not set -CONFIG_IIO=m -CONFIG_IIO_BUFFER_CB=m -CONFIG_MCP320X=m -CONFIG_MCP3422=m -CONFIG_BME680=m -CONFIG_CCS811=m -CONFIG_SENSIRION_SGP30=m -CONFIG_SPS30_I2C=m -CONFIG_MAX30102=m -CONFIG_DHT11=m -CONFIG_HTU21=m -CONFIG_APDS9960=m -CONFIG_BH1750=m -CONFIG_MAXIM_THERMOCOUPLE=m -CONFIG_MAX31856=m -CONFIG_PWM=y -CONFIG_PWM_PCA9685=m -CONFIG_RESET_CONTROLLER=y -CONFIG_GENERIC_PHY=y -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_REISERFS_FS=m -CONFIG_REISERFS_FS_XATTR=y -CONFIG_REISERFS_FS_POSIX_ACL=y -CONFIG_REISERFS_FS_SECURITY=y -CONFIG_JFS_FS=m -CONFIG_JFS_POSIX_ACL=y -CONFIG_JFS_SECURITY=y -CONFIG_JFS_STATISTICS=y -CONFIG_XFS_FS=m -CONFIG_XFS_QUOTA=y -CONFIG_XFS_POSIX_ACL=y -CONFIG_XFS_RT=y -CONFIG_GFS2_FS=m -CONFIG_OCFS2_FS=m -CONFIG_BTRFS_FS=m -CONFIG_BTRFS_FS_POSIX_ACL=y -CONFIG_NILFS2_FS=m -CONFIG_F2FS_FS=y -CONFIG_F2FS_FS_SECURITY=y -CONFIG_FANOTIFY=y -CONFIG_QFMT_V1=m -CONFIG_QFMT_V2=m -CONFIG_AUTOFS4_FS=y -CONFIG_FUSE_FS=m -CONFIG_CUSE=m -CONFIG_OVERLAY_FS=m -CONFIG_FSCACHE=y -CONFIG_FSCACHE_STATS=y -CONFIG_CACHEFILES=y -CONFIG_ISO9660_FS=m -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_UDF_FS=m -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_NTFS_FS=m -CONFIG_NTFS_RW=y -CONFIG_NTFS3_FS=m -CONFIG_TMPFS=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_ECRYPT_FS=m -CONFIG_HFS_FS=m -CONFIG_HFSPLUS_FS=m -CONFIG_JFFS2_FS=m -CONFIG_JFFS2_SUMMARY=y -CONFIG_UBIFS_FS=m -CONFIG_SQUASHFS=m -CONFIG_SQUASHFS_XATTR=y -CONFIG_SQUASHFS_LZO=y -CONFIG_SQUASHFS_XZ=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3_ACL=y -CONFIG_NFS_V4=y -CONFIG_NFS_SWAP=y -CONFIG_NFS_V4_1=y -CONFIG_NFS_V4_2=y -CONFIG_ROOT_NFS=y -CONFIG_NFS_FSCACHE=y -CONFIG_NFSD=m -CONFIG_NFSD_V3_ACL=y -CONFIG_NFSD_V4=y -CONFIG_RPCSEC_GSS_KRB5=m -CONFIG_CIFS=m -CONFIG_CIFS_UPCALL=y -CONFIG_CIFS_XATTR=y -CONFIG_CIFS_DFS_UPCALL=y -CONFIG_CIFS_FSCACHE=y -CONFIG_SMB_SERVER=m -CONFIG_9P_FS=m -CONFIG_9P_FS_POSIX_ACL=y -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_737=m -CONFIG_NLS_CODEPAGE_775=m -CONFIG_NLS_CODEPAGE_850=m -CONFIG_NLS_CODEPAGE_852=m -CONFIG_NLS_CODEPAGE_855=m -CONFIG_NLS_CODEPAGE_857=m -CONFIG_NLS_CODEPAGE_860=m -CONFIG_NLS_CODEPAGE_861=m -CONFIG_NLS_CODEPAGE_862=m -CONFIG_NLS_CODEPAGE_863=m -CONFIG_NLS_CODEPAGE_864=m -CONFIG_NLS_CODEPAGE_865=m -CONFIG_NLS_CODEPAGE_866=m -CONFIG_NLS_CODEPAGE_869=m -CONFIG_NLS_CODEPAGE_936=m -CONFIG_NLS_CODEPAGE_950=m -CONFIG_NLS_CODEPAGE_932=m -CONFIG_NLS_CODEPAGE_949=m -CONFIG_NLS_CODEPAGE_874=m -CONFIG_NLS_ISO8859_8=m -CONFIG_NLS_CODEPAGE_1250=m -CONFIG_NLS_CODEPAGE_1251=m -CONFIG_NLS_ASCII=y -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_ISO8859_2=m -CONFIG_NLS_ISO8859_3=m -CONFIG_NLS_ISO8859_4=m -CONFIG_NLS_ISO8859_5=m -CONFIG_NLS_ISO8859_6=m -CONFIG_NLS_ISO8859_7=m -CONFIG_NLS_ISO8859_9=m -CONFIG_NLS_ISO8859_13=m -CONFIG_NLS_ISO8859_14=m -CONFIG_NLS_ISO8859_15=m -CONFIG_NLS_KOI8_R=m -CONFIG_NLS_KOI8_U=m -CONFIG_NLS_UTF8=y -CONFIG_DLM=m -CONFIG_SECURITY=y -CONFIG_SECURITYFS=y -CONFIG_SECURITY_NETWORK=y -CONFIG_SECURITY_PATH=y -CONFIG_SECURITY_YAMA=y -CONFIG_LSM="" -CONFIG_CRYPTO_USER=m -CONFIG_CRYPTO_CRYPTD=m -CONFIG_CRYPTO_CHACHA20POLY1305=m -CONFIG_CRYPTO_CBC=y -CONFIG_CRYPTO_CTS=y -CONFIG_CRYPTO_XTS=y -CONFIG_CRYPTO_ADIANTUM=m -CONFIG_CRYPTO_HMAC=y -CONFIG_CRYPTO_XCBC=m -CONFIG_CRYPTO_SHA1=y -CONFIG_CRYPTO_SHA512=y -CONFIG_CRYPTO_SHA3=m -CONFIG_CRYPTO_SM3=m -CONFIG_CRYPTO_WP512=m -CONFIG_CRYPTO_AES=y -CONFIG_CRYPTO_CAST5=m -CONFIG_CRYPTO_DES=y -CONFIG_CRYPTO_LZ4=m -CONFIG_CRYPTO_USER_API_HASH=m -CONFIG_CRYPTO_USER_API_SKCIPHER=m -CONFIG_CRYPTO_USER_API_RNG=m -CONFIG_CRYPTO_USER_API_AEAD=m -CONFIG_CRC_ITU_T=y -CONFIG_LIBCRC32C=y -CONFIG_DMA_CMA=y -CONFIG_CMA_SIZE_MBYTES=5 -CONFIG_PRINTK_TIME=y -CONFIG_BOOT_PRINTK_DELAY=y -CONFIG_KGDB=y -CONFIG_KGDB_KDB=y -CONFIG_KDB_KEYBOARD=y -CONFIG_DEBUG_MEMORY_INIT=y -CONFIG_DETECT_HUNG_TASK=y -CONFIG_RCU_CPU_STALL_TIMEOUT=60 -CONFIG_LATENCYTOP=y -CONFIG_FUNCTION_PROFILER=y -CONFIG_STACK_TRACER=y -CONFIG_IRQSOFF_TRACER=y -CONFIG_SCHED_TRACER=y -CONFIG_BLK_DEV_IO_TRACE=y -# CONFIG_UPROBE_EVENTS is not set -# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/buildroot-external/board/rpi3/post-build.sh b/buildroot-external/board/rpi3/post-build.sh index 1a31948..66d0fc3 100755 --- a/buildroot-external/board/rpi3/post-build.sh +++ b/buildroot-external/board/rpi3/post-build.sh @@ -1,5 +1,8 @@ #!/bin/sh +# Stop on error +set -e + # create VERSION file echo "VERSION=${PRODUCT_VERSION}" >"${TARGET_DIR}/VERSION" echo "PRODUCT=${PRODUCT}" >>"${TARGET_DIR}/VERSION" @@ -11,6 +14,19 @@ ln -sf ../VERSION "${TARGET_DIR}/boot/VERSION" # remove /etc/dbus-1/system.d/pulseaudio-system.conf rm -f "${TARGET_DIR}/etc/dbus-1/system.d/pulseaudio-system.conf" +rm -f "${TARGET_DIR}/usr/share/dbus-1/system.d/pulseaudio-system.conf" # remove /etc/init.d/S40xorg as not needed rm -f "${TARGET_DIR}/etc/init.d/S40xorg" + +# remove /etc/X11/xorg.conf.d/20-intel.conf as it will not work on rpi +rm -f "${TARGET_DIR}/etc/X11/xorg.conf.d/20-intel.conf" + +# remove /lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf as it is systemd only +rm -f "${TARGET_DIR}/lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf" + +# remove unnecessary /etc/init.d/fuse3 +rm -f "${TARGET_DIR}/etc/init.d/fuse3" + +# remove unnecessary /usr/share/clc +rm -rf "${TARGET_DIR}/usr/share/clc" diff --git a/buildroot-external/board/rpi3/post-image.sh b/buildroot-external/board/rpi3/post-image.sh index 9e450c7..be8136f 100755 --- a/buildroot-external/board/rpi3/post-image.sh +++ b/buildroot-external/board/rpi3/post-image.sh @@ -1,17 +1,23 @@ #!/bin/sh +# Stop on error +set -e + BOARD_DIR="$(dirname "$0")" -BOARD_NAME="$(basename "${BOARD_DIR}")" +#BOARD_NAME="$(basename "${BOARD_DIR}")" # Use our own cmdline.txt+config.txt -cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/cmdline.txt" "${BINARIES_DIR}/" -cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/config.txt" "${BINARIES_DIR}/" -cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/bootEnv.txt" "${BINARIES_DIR}/" +cp "${BOARD_DIR}/cmdline.txt" "${BINARIES_DIR}/" +cp "${BOARD_DIR}/config.txt" "${BINARIES_DIR}/" +cp "${BOARD_DIR}/bootEnv.txt" "${BINARIES_DIR}/" + +# README needs to be present, otherwise os_prefix is not +# prepended implicitly to the overlays' path, see: +# https://www.raspberrypi.com/documentation/computers/config_txt.html#overlay_prefix +touch "${BINARIES_DIR}/overlays/README" 2>/dev/null || true # VERSION File cp "${TARGET_DIR}/boot/VERSION" "${BINARIES_DIR}" # create *.img file using genimage -support/scripts/genimage.sh -c "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/genimage.cfg" - -exit $? +support/scripts/genimage.sh -c "${BOARD_DIR}/genimage.cfg" diff --git a/buildroot-external/board/rpi3/uboot-patches b/buildroot-external/board/rpi3/uboot-patches deleted file mode 120000 index bf535e8..0000000 --- a/buildroot-external/board/rpi3/uboot-patches +++ /dev/null @@ -1 +0,0 @@ -../rpi4/uboot-patches \ No newline at end of file diff --git a/buildroot-external/board/rpi3/uboot.config b/buildroot-external/board/rpi3/uboot.config new file mode 100644 index 0000000..8b47431 --- /dev/null +++ b/buildroot-external/board/rpi3/uboot.config @@ -0,0 +1,21 @@ +# keep serial enabled +CONFIG_SERIAL_PRESENT=y + +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_MANUFACTURER="RaspberryPi" +CONFIG_USB_GADGET_VENDOR_NUM=0x0a5c +CONFIG_USB_GADGET_PRODUCT_NUM=0x000e +CONFIG_USB_GADGET_DOWNLOAD=y + +CONFIG_CMD_NVME=y + +CONFIG_USB_STORAGE=y +CONFIG_USB_FUNCTION_MASS_STORAGE=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_GENERIC=y +CONFIG_USB_OHCI_HCD=y + +CONFIG_USB_XHCI_BRCM=y + +CONFIG_NVME=y +CONFIG_NVME_PCI=y diff --git a/buildroot-external/board/rpi3/uboot_defconfig b/buildroot-external/board/rpi3/uboot_defconfig deleted file mode 100644 index 1c3497b..0000000 --- a/buildroot-external/board/rpi3/uboot_defconfig +++ /dev/null @@ -1,77 +0,0 @@ -CONFIG_ARM=y -CONFIG_ARCH_CPU_INIT=y -CONFIG_ARCH_BCM283X=y -CONFIG_SYS_TEXT_BASE=0x00080000 -CONFIG_TARGET_RPI_3=y -CONFIG_SYS_MALLOC_F_LEN=0x2000 -CONFIG_NR_DRAM_BANKS=1 -CONFIG_ENV_SIZE=0x4000 -CONFIG_DEFAULT_DEVICE_TREE="bcm2836-rpi-2-b" -CONFIG_DISTRO_DEFAULTS=y -CONFIG_OF_BOARD_SETUP=y -CONFIG_BOOTDELAY=-2 -CONFIG_AUTOBOOT_KEYED=y -CONFIG_AUTOBOOT_PROMPT="Hit to stop autoboot in %2ds\n" -CONFIG_AUTOBOOT_DELAY_STR="\x18" -CONFIG_USE_PREBOOT=y -CONFIG_SILENT_CONSOLE=y -CONFIG_SILENT_U_BOOT_ONLY=y -# CONFIG_DISPLAY_CPUINFO is not set -CONFIG_MISC_INIT_R=y -CONFIG_SYS_PROMPT="U-Boot> " -CONFIG_CMD_GPIO=y -CONFIG_CMD_GPT=y -CONFIG_CMD_MMC=y -CONFIG_CMD_USB=y -CONFIG_CMD_CACHE=y -CONFIG_CMD_TIME=y -CONFIG_CMD_PMIC=y -CONFIG_CMD_REGULATOR=y -CONFIG_CMD_FS_UUID=y -CONFIG_OF_BOARD=y -CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" -CONFIG_SYS_RELOC_GD_ENV_ADDR=y -CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -CONFIG_VERSION_VARIABLE=y -CONFIG_REGMAP=y -CONFIG_SYSCON=y -CONFIG_CLK=y -CONFIG_MISC=y -CONFIG_DM_MMC=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_BCM2835=y -CONFIG_PHYLIB=y -CONFIG_DM_ETH=y -CONFIG_PINCTRL=y -CONFIG_DM_PMIC=y -CONFIG_DM_REGULATOR=y -CONFIG_DM_REGULATOR_FIXED=y -CONFIG_SPL_DM_REGULATOR_FIXED=y -CONFIG_RAM=y -CONFIG_NULLDEV_SERIAL=y -CONFIG_USB=y -CONFIG_DM_USB=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_GENERIC=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_DWC2=y -CONFIG_USB_KEYBOARD=y -CONFIG_USB_GADGET=y -CONFIG_USB_GADGET_MANUFACTURER="RaspberryPi" -CONFIG_USB_GADGET_VENDOR_NUM=0x0a5c -CONFIG_USB_GADGET_PRODUCT_NUM=0x000e -CONFIG_USB_GADGET_DOWNLOAD=y -CONFIG_USB_FUNCTION_MASS_STORAGE=y -CONFIG_USB_HOST_ETHER=y -CONFIG_USB_ETHER_ASIX=y -CONFIG_USB_ETHER_LAN78XX=y -CONFIG_USB_ETHER_SMSC95XX=y -CONFIG_DM_VIDEO=y -# CONFIG_VIDEO_BPP8 is not set -# CONFIG_VIDEO_BPP16 is not set -CONFIG_SYS_WHITE_ON_BLACK=y -CONFIG_CONSOLE_SCROLL_LINES=10 -CONFIG_PHYS_TO_BUS=y -CONFIG_CMD_DHRYSTONE=y -CONFIG_ERRNO_STR=y -CONFIG_OF_LIBFDT_OVERLAY=y diff --git a/buildroot-external/board/rpi4/config.txt b/buildroot-external/board/rpi4/config.txt index 0a24880..9aab61a 100644 --- a/buildroot-external/board/rpi4/config.txt +++ b/buildroot-external/board/rpi4/config.txt @@ -1,10 +1,8 @@ # enable aarch64 bit support arm_64bit=1 -# make sure to use less memory for the GPU and -# all total memory available -gpu_mem=128 -#dtoverlay=vc4-kms-v3d +# enable vc4/v3d GPU dtoverlay +dtoverlay=vc4-fkms-v3d # Disable overscan assuming the display supports displaying the full resolution # If the text shown on the screen disappears off the edge, comment this out @@ -18,18 +16,14 @@ dtparam=spi=on # enable the UART #enable_uart=1 -# make sure the uart is running at 48MHz -#init_uart_clock=48000000 - # switch the bluetooth UART to the miniuart # for basic bluetooth support and fix core_freq #dtoverlay=miniuart-bt -#core_freq=250 # for disabling bluetooth alltogether # you can uncomment the following two lines -dtoverlay=disable-bt -dtparam=uart1=off +#dtoverlay=disable-bt +#dtparam=uart1=off # disable the splash screen disable_splash=1 @@ -43,6 +37,10 @@ dtparam=watchdog=on # start with heartbeat on PWR led and mmc0 on ACT led dtparam=pwr_led_trigger=timer,act_led_trigger=mmc0 +# Enable boost from 1.5Ghz to 1.8Ghz on compatible models +[pi4] +arm_boost=1 + # special device tree options for Compute Module 4 [cm4] dtoverlay=dwc2 @@ -52,10 +50,6 @@ dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi # reset to apply to all platforms [all] -# start device tree at 0x2008000 to have -# space for the u-boot boot script -device_tree_address=0x2008000 - # use fixed names for start.elf/fixup.dat start_file=start.elf fixup_file=fixup.dat diff --git a/buildroot-external/board/rpi4/genimage.cfg b/buildroot-external/board/rpi4/genimage.cfg index d5266e8..77b209b 100644 --- a/buildroot-external/board/rpi4/genimage.cfg +++ b/buildroot-external/board/rpi4/genimage.cfg @@ -10,7 +10,7 @@ image boot.vfat { "cmdline.txt", "config.txt", "bootEnv.txt", - "rpi-firmware/overlays", + "overlays", "rpi-eeprom/pieeprom.upd", "rpi-eeprom/pieeprom.sig", "u-boot.bin", diff --git a/buildroot-external/board/rpi4/kernel-patches/0008-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch b/buildroot-external/board/rpi4/kernel-patches/0001-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch similarity index 65% rename from buildroot-external/board/rpi4/kernel-patches/0008-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch rename to buildroot-external/board/rpi4/kernel-patches/0001-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch index 517fc05..5afa314 100644 --- a/buildroot-external/board/rpi4/kernel-patches/0008-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch +++ b/buildroot-external/board/rpi4/kernel-patches/0001-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch @@ -1,10 +1,7 @@ -From febaf077f14b86da1edaa01abee2d0bfcf7bdece Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> -References: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> +From e2f2644f306f44e65bb8082bac3c26cb5e699664 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 2 Jun 2020 21:20:08 +0000 -Subject: [PATCH 8/8] ARM: dts: bcm283x: add compatible picked up by U-Boot +Subject: [PATCH] ARM: dts: bcm283x: add compatible picked up by U-Boot Without brcm,bcm2835-pl011 in compatible U-Boot uses the regular PL011 driver which seems to crash when enable_uart=1 is not used. Using @@ -14,15 +11,15 @@ not using that compatible string. Signed-off-by: Pascal Vizeli Signed-off-by: Stefan Agner --- - arch/arm/boot/dts/bcm2711.dtsi | 8 ++++---- - arch/arm/boot/dts/bcm283x.dtsi | 2 +- + arch/arm/boot/dts/broadcom/bcm2711.dtsi | 8 ++++---- + arch/arm/boot/dts/broadcom/bcm283x.dtsi | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) -diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi -index 4f87bb4fd3d1..12f0d90e8957 100644 ---- a/arch/arm/boot/dts/bcm2711.dtsi -+++ b/arch/arm/boot/dts/bcm2711.dtsi -@@ -110,7 +110,7 @@ +diff --git a/arch/arm/boot/dts/broadcom/bcm2711.dtsi b/arch/arm/boot/dts/broadcom/bcm2711.dtsi +index 4a379a14966d8..30f6ccdcef178 100644 +--- a/arch/arm/boot/dts/broadcom/bcm2711.dtsi ++++ b/arch/arm/boot/dts/broadcom/bcm2711.dtsi +@@ -128,7 +128,7 @@ rng@7e104000 { }; uart2: serial@7e201400 { @@ -31,7 +28,7 @@ index 4f87bb4fd3d1..12f0d90e8957 100644 reg = <0x7e201400 0x200>; interrupts = ; clocks = <&clocks BCM2835_CLOCK_UART>, -@@ -121,7 +121,7 @@ +@@ -139,7 +139,7 @@ uart2: serial@7e201400 { }; uart3: serial@7e201600 { @@ -40,7 +37,7 @@ index 4f87bb4fd3d1..12f0d90e8957 100644 reg = <0x7e201600 0x200>; interrupts = ; clocks = <&clocks BCM2835_CLOCK_UART>, -@@ -132,7 +132,7 @@ +@@ -150,7 +150,7 @@ uart3: serial@7e201600 { }; uart4: serial@7e201800 { @@ -49,7 +46,7 @@ index 4f87bb4fd3d1..12f0d90e8957 100644 reg = <0x7e201800 0x200>; interrupts = ; clocks = <&clocks BCM2835_CLOCK_UART>, -@@ -143,7 +143,7 @@ +@@ -161,7 +161,7 @@ uart4: serial@7e201800 { }; uart5: serial@7e201a00 { @@ -58,11 +55,11 @@ index 4f87bb4fd3d1..12f0d90e8957 100644 reg = <0x7e201a00 0x200>; interrupts = ; clocks = <&clocks BCM2835_CLOCK_UART>, -diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi -index 4426f9e6ba92..abcf677fe416 100644 ---- a/arch/arm/boot/dts/bcm283x.dtsi -+++ b/arch/arm/boot/dts/bcm283x.dtsi -@@ -306,7 +306,7 @@ +diff --git a/arch/arm/boot/dts/broadcom/bcm283x.dtsi b/arch/arm/boot/dts/broadcom/bcm283x.dtsi +index 2ca8a2505a4db..6f91c85677d89 100644 +--- a/arch/arm/boot/dts/broadcom/bcm283x.dtsi ++++ b/arch/arm/boot/dts/broadcom/bcm283x.dtsi +@@ -302,7 +302,7 @@ uart1_ctsrts_gpio42: uart1-ctsrts-gpio42 { }; uart0: serial@7e201000 { @@ -71,6 +68,3 @@ index 4426f9e6ba92..abcf677fe416 100644 reg = <0x7e201000 0x200>; interrupts = <2 25>; clocks = <&clocks BCM2835_CLOCK_UART>, --- -2.29.2 - diff --git a/buildroot-external/board/rpi4/kernel-patches/0002-USB-storage-Increase-maximum-length-of-the-quirks-st.patch b/buildroot-external/board/rpi4/kernel-patches/0002-USB-storage-Increase-maximum-length-of-the-quirks-st.patch new file mode 100644 index 0000000..8fe523e --- /dev/null +++ b/buildroot-external/board/rpi4/kernel-patches/0002-USB-storage-Increase-maximum-length-of-the-quirks-st.patch @@ -0,0 +1,30 @@ +From 8b7bfad7fda35949975f359c7e207bc57bc765db Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= +Date: Mon, 15 Apr 2024 14:07:34 +0200 +Subject: [PATCH] USB: storage: Increase maximum length of the quirks string +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Maximum length of the quirks string is 127 characters which is not sufficient +for the already long list of quirky controllers in HAOS. Increase the size of +the quirks variable to allow up to 255 characters. + +Signed-off-by: Jan Čermák +--- + drivers/usb/storage/usb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c +index 7b36a3334fb34..9691e6b9fe5aa 100644 +--- a/drivers/usb/storage/usb.c ++++ b/drivers/usb/storage/usb.c +@@ -71,7 +71,7 @@ static unsigned int delay_use = 1; + module_param(delay_use, uint, S_IRUGO | S_IWUSR); + MODULE_PARM_DESC(delay_use, "seconds to delay before using a new device"); + +-static char quirks[128]; ++static char quirks[256]; + module_param_string(quirks, quirks, sizeof(quirks), S_IRUGO | S_IWUSR); + MODULE_PARM_DESC(quirks, "supplemental list of device IDs and their quirks"); + diff --git a/buildroot-external/board/rpi4/kernel.config b/buildroot-external/board/rpi4/kernel.config new file mode 100644 index 0000000..3329a01 --- /dev/null +++ b/buildroot-external/board/rpi4/kernel.config @@ -0,0 +1,37 @@ +# disable old framebuffer for video display to work +# CONFIG_FB_BCM2708 is not set + +# disable video camera support +# CONFIG_VIDEO_BCM2835_UNICAM is not set + +# disable touchscreen +# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set + +# disable simple framebuffer support +# CONFIG_FB_SIMPLE is not set + +# enable mmc support +CONFIG_MMC_BCM2835=y + +# use pl011 serial as a kernel module and +# disable serial console on amba +CONFIG_SERIAL_AMBA_PL011=m +# CONFIG_SERIAL_AMBA_PL011_CONSOLE is not set + +# nvme support +CONFIG_NVME_CORE=y +CONFIG_BLK_DEV_NVME=y + +# disable backlight support +# CONFIG_BACKLIGHT_RPI is not set + +# enable DRM +CONFIG_DRM=y +CONFIG_DRM_V3D=y +CONFIG_DRM_VC4=y +# CONFIG_DRM_SIMPLEDRM is not set + +# enable SND +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SOC=y diff --git a/buildroot-external/board/rpi4/kernel_defconfig b/buildroot-external/board/rpi4/kernel_defconfig deleted file mode 100644 index a75a9fc..0000000 --- a/buildroot-external/board/rpi4/kernel_defconfig +++ /dev/null @@ -1,1461 +0,0 @@ -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_DEFAULT_HOSTNAME="localhost" -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_GENERIC_IRQ_DEBUGFS=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_BPF_SYSCALL=y -CONFIG_PREEMPT=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BSD_PROCESS_ACCT_V3=y -CONFIG_TASKSTATS=y -CONFIG_TASK_XACCT=y -CONFIG_TASK_IO_ACCOUNTING=y -CONFIG_IKCONFIG=m -CONFIG_IKCONFIG_PROC=y -CONFIG_MEMCG=y -CONFIG_BLK_CGROUP=y -CONFIG_CFS_BANDWIDTH=y -CONFIG_CGROUP_PIDS=y -CONFIG_CGROUP_FREEZER=y -CONFIG_CPUSETS=y -CONFIG_CGROUP_DEVICE=y -CONFIG_CGROUP_CPUACCT=y -CONFIG_CGROUP_PERF=y -CONFIG_CGROUP_BPF=y -CONFIG_NAMESPACES=y -CONFIG_USER_NS=y -CONFIG_SCHED_AUTOGROUP=y -CONFIG_BLK_DEV_INITRD=y -# CONFIG_SGETMASK_SYSCALL is not set -CONFIG_EMBEDDED=y -# CONFIG_COMPAT_BRK is not set -CONFIG_PROFILING=y -CONFIG_SMP=y -CONFIG_NR_CPUS=256 -# CONFIG_SCHED_MC is not set -# CONFIG_RANDOMIZE_BASE is not set -# CONFIG_SUSPEND is not set -CONFIG_PM=y -# CONFIG_ACPI is not set -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y -CONFIG_CPUFREQ_DT=y -CONFIG_CPU_IDLE=y -CONFIG_KVM=y -CONFIG_JUMP_LABEL=y -CONFIG_COMPAT_32BIT_TIME=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_MODULE_SRCVERSION_ALL=y -CONFIG_BLK_DEV_THROTTLING=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_MAC_PARTITION=y -CONFIG_BINFMT_MISC=m -CONFIG_CLEANCACHE=y -CONFIG_FRONTSWAP=y -CONFIG_CMA=y -CONFIG_ZSWAP=y -CONFIG_Z3FOLD=m -CONFIG_ZSMALLOC=m -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_XFRM_USER=y -CONFIG_NET_KEY=m -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -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_PNP_RARP=y -CONFIG_NET_IPIP=m -CONFIG_NET_IPGRE_DEMUX=m -CONFIG_NET_IPGRE=m -CONFIG_IP_MROUTE=y -CONFIG_IP_MROUTE_MULTIPLE_TABLES=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_NET_IPVTI=m -CONFIG_NET_FOU=m -CONFIG_INET_AH=m -CONFIG_INET_ESP=m -CONFIG_INET_IPCOMP=m -CONFIG_INET_DIAG=m -CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_BBR=m -CONFIG_IPV6=m -CONFIG_IPV6_ROUTER_PREF=y -CONFIG_IPV6_ROUTE_INFO=y -CONFIG_INET6_AH=m -CONFIG_INET6_ESP=m -CONFIG_INET6_ESP_OFFLOAD=m -CONFIG_INET6_IPCOMP=m -CONFIG_IPV6_ILA=m -CONFIG_IPV6_VTI=m -CONFIG_IPV6_SIT_6RD=y -CONFIG_IPV6_GRE=m -CONFIG_IPV6_MULTIPLE_TABLES=y -CONFIG_IPV6_SUBTREES=y -CONFIG_IPV6_MROUTE=y -CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y -CONFIG_IPV6_PIMSM_V2=y -CONFIG_NETFILTER=y -CONFIG_BRIDGE_NETFILTER=m -CONFIG_NF_CONNTRACK=m -CONFIG_NF_CONNTRACK_ZONES=y -CONFIG_NF_CONNTRACK_EVENTS=y -CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CONNTRACK_AMANDA=m -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_SNMP=m -CONFIG_NF_CONNTRACK_PPTP=m -CONFIG_NF_CONNTRACK_SANE=m -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m -CONFIG_NF_TABLES=m -CONFIG_NF_TABLES_INET=y -CONFIG_NF_TABLES_NETDEV=y -CONFIG_NFT_NUMGEN=m -CONFIG_NFT_CT=m -CONFIG_NFT_FLOW_OFFLOAD=m -CONFIG_NFT_COUNTER=m -CONFIG_NFT_CONNLIMIT=m -CONFIG_NFT_LOG=m -CONFIG_NFT_LIMIT=m -CONFIG_NFT_MASQ=m -CONFIG_NFT_REDIR=m -CONFIG_NFT_NAT=m -CONFIG_NFT_TUNNEL=m -CONFIG_NFT_OBJREF=m -CONFIG_NFT_QUEUE=m -CONFIG_NFT_QUOTA=m -CONFIG_NFT_REJECT=m -CONFIG_NFT_COMPAT=m -CONFIG_NFT_HASH=m -CONFIG_NFT_FIB_INET=m -CONFIG_NFT_SOCKET=m -CONFIG_NFT_OSF=m -CONFIG_NFT_TPROXY=m -CONFIG_NFT_DUP_NETDEV=m -CONFIG_NFT_FWD_NETDEV=m -CONFIG_NFT_FIB_NETDEV=m -CONFIG_NF_FLOW_TABLE_INET=m -CONFIG_NF_FLOW_TABLE=m -CONFIG_NETFILTER_XT_SET=m -CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_HMARK=m -CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -CONFIG_NETFILTER_XT_TARGET_LED=m -CONFIG_NETFILTER_XT_TARGET_LOG=m -CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_TARGET_NFLOG=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_TARGET_TEE=m -CONFIG_NETFILTER_XT_TARGET_TPROXY=m -CONFIG_NETFILTER_XT_TARGET_TRACE=m -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -CONFIG_NETFILTER_XT_MATCH_BPF=m -CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_CPU=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ESP=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -CONFIG_NETFILTER_XT_MATCH_IPVS=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -CONFIG_NETFILTER_XT_MATCH_NFACCT=m -CONFIG_NETFILTER_XT_MATCH_OSF=m -CONFIG_NETFILTER_XT_MATCH_OWNER=m -CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_RATEEST=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_RECENT=m -CONFIG_NETFILTER_XT_MATCH_SOCKET=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_TIME=m -CONFIG_NETFILTER_XT_MATCH_U32=m -CONFIG_IP_SET=m -CONFIG_IP_SET_BITMAP_IP=m -CONFIG_IP_SET_BITMAP_IPMAC=m -CONFIG_IP_SET_BITMAP_PORT=m -CONFIG_IP_SET_HASH_IP=m -CONFIG_IP_SET_HASH_IPPORT=m -CONFIG_IP_SET_HASH_IPPORTIP=m -CONFIG_IP_SET_HASH_IPPORTNET=m -CONFIG_IP_SET_HASH_NET=m -CONFIG_IP_SET_HASH_NETPORT=m -CONFIG_IP_SET_HASH_NETIFACE=m -CONFIG_IP_SET_LIST_SET=m -CONFIG_IP_VS=m -CONFIG_IP_VS_PROTO_TCP=y -CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_ESP=y -CONFIG_IP_VS_PROTO_AH=y -CONFIG_IP_VS_PROTO_SCTP=y -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -CONFIG_IP_VS_SED=m -CONFIG_IP_VS_NQ=m -CONFIG_IP_VS_FTP=m -CONFIG_IP_VS_PE_SIP=m -CONFIG_NFT_DUP_IPV4=m -CONFIG_NFT_FIB_IPV4=m -CONFIG_NF_TABLES_ARP=y -CONFIG_NF_FLOW_TABLE_IPV4=m -CONFIG_NF_LOG_ARP=m -CONFIG_IP_NF_IPTABLES=m -CONFIG_IP_NF_MATCH_AH=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_RPFILTER=m -CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_FILTER=m -CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_NAT=m -CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_RAW=m -CONFIG_IP_NF_ARPTABLES=m -CONFIG_IP_NF_ARPFILTER=m -CONFIG_IP_NF_ARP_MANGLE=m -CONFIG_NFT_DUP_IPV6=m -CONFIG_NFT_FIB_IPV6=m -CONFIG_NF_FLOW_TABLE_IPV6=m -CONFIG_IP6_NF_IPTABLES=m -CONFIG_IP6_NF_MATCH_AH=m -CONFIG_IP6_NF_MATCH_EUI64=m -CONFIG_IP6_NF_MATCH_FRAG=m -CONFIG_IP6_NF_MATCH_OPTS=m -CONFIG_IP6_NF_MATCH_HL=m -CONFIG_IP6_NF_MATCH_IPV6HEADER=m -CONFIG_IP6_NF_MATCH_MH=m -CONFIG_IP6_NF_MATCH_RPFILTER=m -CONFIG_IP6_NF_MATCH_RT=m -CONFIG_IP6_NF_MATCH_SRH=m -CONFIG_IP6_NF_TARGET_HL=m -CONFIG_IP6_NF_FILTER=m -CONFIG_IP6_NF_TARGET_REJECT=m -CONFIG_IP6_NF_TARGET_SYNPROXY=m -CONFIG_IP6_NF_MANGLE=m -CONFIG_IP6_NF_RAW=m -CONFIG_IP6_NF_SECURITY=m -CONFIG_IP6_NF_NAT=m -CONFIG_IP6_NF_TARGET_MASQUERADE=m -CONFIG_IP6_NF_TARGET_NPT=m -CONFIG_NF_TABLES_BRIDGE=m -CONFIG_NFT_BRIDGE_REJECT=m -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_IP=m -CONFIG_BRIDGE_EBT_IP6=m -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_MARK=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_VLAN=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_MARK_T=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_NFLOG=m -CONFIG_SCTP_COOKIE_HMAC_SHA1=y -CONFIG_ATM=m -CONFIG_L2TP=m -CONFIG_L2TP_V3=y -CONFIG_L2TP_IP=m -CONFIG_L2TP_ETH=m -CONFIG_BRIDGE=m -CONFIG_VLAN_8021Q=m -CONFIG_VLAN_8021Q_GVRP=y -CONFIG_ATALK=m -CONFIG_6LOWPAN=m -CONFIG_IEEE802154=m -CONFIG_IEEE802154_6LOWPAN=m -CONFIG_MAC802154=m -CONFIG_NET_SCHED=y -CONFIG_NET_SCH_CBQ=m -CONFIG_NET_SCH_HTB=m -CONFIG_NET_SCH_HFSC=m -CONFIG_NET_SCH_ATM=m -CONFIG_NET_SCH_PRIO=m -CONFIG_NET_SCH_MULTIQ=m -CONFIG_NET_SCH_RED=m -CONFIG_NET_SCH_SFB=m -CONFIG_NET_SCH_SFQ=m -CONFIG_NET_SCH_TEQL=m -CONFIG_NET_SCH_TBF=m -CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_DSMARK=m -CONFIG_NET_SCH_NETEM=m -CONFIG_NET_SCH_DRR=m -CONFIG_NET_SCH_MQPRIO=m -CONFIG_NET_SCH_CHOKE=m -CONFIG_NET_SCH_QFQ=m -CONFIG_NET_SCH_CODEL=m -CONFIG_NET_SCH_FQ_CODEL=m -CONFIG_NET_SCH_CAKE=m -CONFIG_NET_SCH_FQ=m -CONFIG_NET_SCH_HHF=m -CONFIG_NET_SCH_PIE=m -CONFIG_NET_SCH_INGRESS=m -CONFIG_NET_SCH_PLUG=m -CONFIG_NET_SCH_DEFAULT=y -CONFIG_NET_SCH_FQ_CODEL=y -CONFIG_NET_CLS_BASIC=m -CONFIG_NET_CLS_TCINDEX=m -CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_FW=m -CONFIG_NET_CLS_U32=m -CONFIG_CLS_U32_MARK=y -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_RSVP6=m -CONFIG_NET_CLS_FLOW=m -CONFIG_NET_CLS_CGROUP=m -CONFIG_NET_EMATCH=y -CONFIG_NET_EMATCH_CMP=m -CONFIG_NET_EMATCH_NBYTE=m -CONFIG_NET_EMATCH_U32=m -CONFIG_NET_EMATCH_META=m -CONFIG_NET_EMATCH_TEXT=m -CONFIG_NET_EMATCH_IPSET=m -CONFIG_NET_CLS_ACT=y -CONFIG_NET_ACT_POLICE=m -CONFIG_NET_ACT_GACT=m -CONFIG_GACT_PROB=y -CONFIG_NET_ACT_MIRRED=m -CONFIG_NET_ACT_IPT=m -CONFIG_NET_ACT_NAT=m -CONFIG_NET_ACT_PEDIT=m -CONFIG_NET_ACT_SIMP=m -CONFIG_NET_ACT_SKBEDIT=m -CONFIG_NET_ACT_CSUM=m -CONFIG_BATMAN_ADV=m -CONFIG_OPENVSWITCH=m -CONFIG_VSOCKETS=m -CONFIG_CGROUP_NET_PRIO=y -CONFIG_NET_PKTGEN=m -CONFIG_HAMRADIO=y -CONFIG_AX25=m -CONFIG_NETROM=m -CONFIG_ROSE=m -CONFIG_MKISS=m -CONFIG_6PACK=m -CONFIG_BPQETHER=m -CONFIG_BAYCOM_SER_FDX=m -CONFIG_BAYCOM_SER_HDX=m -CONFIG_YAM=m -CONFIG_CAN=m -CONFIG_CAN_J1939=m -CONFIG_CAN_ISOTP=m -CONFIG_CAN_VCAN=m -CONFIG_CAN_SLCAN=m -CONFIG_CAN_MCP251X=m -CONFIG_CAN_MCP251XFD=m -CONFIG_CAN_EMS_USB=m -CONFIG_CAN_GS_USB=m -CONFIG_CAN_PEAK_USB=m -CONFIG_BT=m -CONFIG_BT_RFCOMM=m -CONFIG_BT_RFCOMM_TTY=y -CONFIG_BT_BNEP=m -CONFIG_BT_BNEP_MC_FILTER=y -CONFIG_BT_BNEP_PROTO_FILTER=y -CONFIG_BT_HIDP=m -CONFIG_BT_6LOWPAN=m -CONFIG_BT_HCIBTUSB=m -CONFIG_BT_HCIUART=m -CONFIG_BT_HCIUART_3WIRE=y -CONFIG_BT_HCIUART_BCM=y -CONFIG_BT_HCIBCM203X=m -CONFIG_BT_HCIBPA10X=m -CONFIG_BT_HCIBFUSB=m -CONFIG_BT_HCIVHCI=m -CONFIG_BT_MRVL=m -CONFIG_BT_MRVL_SDIO=m -CONFIG_BT_ATH3K=m -CONFIG_CFG80211=m -CONFIG_CFG80211_WEXT=y -CONFIG_MAC80211=m -CONFIG_MAC80211_MESH=y -CONFIG_RFKILL=m -CONFIG_RFKILL_INPUT=y -CONFIG_NET_9P=m -CONFIG_NFC=m -CONFIG_PCI=y -CONFIG_PCI_MSI=y -CONFIG_UEVENT_HELPER=y -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -# CONFIG_FIRMWARE_MEMMAP is not set -CONFIG_MTD=m -CONFIG_MTD_BLOCK=m -CONFIG_MTD_BLOCK2MTD=m -CONFIG_MTD_SPI_NOR=m -CONFIG_MTD_UBI=m -CONFIG_OF=y -CONFIG_OF_CONFIGFS=y -CONFIG_ZRAM=m -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_CRYPTOLOOP=m -CONFIG_BLK_DEV_DRBD=m -CONFIG_BLK_DEV_NBD=m -CONFIG_BLK_DEV_RAM=y -CONFIG_CDROM_PKTCDVD=m -CONFIG_ATA_OVER_ETH=m -CONFIG_BLK_DEV_NVME=y -CONFIG_EEPROM_AT24=m -CONFIG_TI_ST=m -CONFIG_SCSI=y -# CONFIG_SCSI_PROC_FS is not set -CONFIG_BLK_DEV_SD=y -CONFIG_CHR_DEV_ST=m -CONFIG_BLK_DEV_SR=m -CONFIG_CHR_DEV_SG=m -CONFIG_SCSI_ISCSI_ATTRS=y -CONFIG_ISCSI_TCP=m -CONFIG_ISCSI_BOOT_SYSFS=m -CONFIG_ATA=m -CONFIG_SATA_AHCI=m -CONFIG_SATA_MV=m -CONFIG_MD=y -CONFIG_MD_LINEAR=m -CONFIG_BLK_DEV_DM=m -CONFIG_DM_CRYPT=m -CONFIG_DM_SNAPSHOT=m -CONFIG_DM_THIN_PROVISIONING=m -CONFIG_DM_CACHE=m -CONFIG_DM_MIRROR=m -CONFIG_DM_LOG_USERSPACE=m -CONFIG_DM_RAID=m -CONFIG_DM_ZERO=m -CONFIG_DM_DELAY=m -CONFIG_NETDEVICES=y -CONFIG_BONDING=m -CONFIG_DUMMY=m -CONFIG_WIREGUARD=m -CONFIG_IFB=m -CONFIG_MACVLAN=m -CONFIG_MACVTAP=m -CONFIG_IPVLAN=m -CONFIG_VXLAN=m -CONFIG_NETCONSOLE=m -CONFIG_TUN=m -CONFIG_VETH=m -CONFIG_NET_VRF=m -CONFIG_VSOCKMON=m -CONFIG_BCMGENET=y -CONFIG_ENC28J60=m -CONFIG_QCA7000_SPI=m -CONFIG_QCA7000_UART=m -CONFIG_R8169=m -CONFIG_WIZNET_W5100=m -CONFIG_WIZNET_W5100_SPI=m -CONFIG_BROADCOM_PHY=y -CONFIG_MICREL_PHY=y -CONFIG_MDIO_BITBANG=m -CONFIG_PPP=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_FILTER=y -CONFIG_PPP_MPPE=m -CONFIG_PPP_MULTILINK=y -CONFIG_PPPOATM=m -CONFIG_PPPOE=m -CONFIG_PPPOL2TP=m -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_SLIP=m -CONFIG_SLIP_COMPRESSED=y -CONFIG_SLIP_SMART=y -CONFIG_USB_CATC=m -CONFIG_USB_KAWETH=m -CONFIG_USB_PEGASUS=m -CONFIG_USB_RTL8150=m -CONFIG_USB_RTL8152=y -CONFIG_USB_LAN78XX=y -CONFIG_USB_USBNET=y -CONFIG_USB_NET_AX8817X=m -CONFIG_USB_NET_AX88179_178A=m -CONFIG_USB_NET_CDCETHER=m -CONFIG_USB_NET_CDC_EEM=m -CONFIG_USB_NET_CDC_NCM=m -CONFIG_USB_NET_HUAWEI_CDC_NCM=m -CONFIG_USB_NET_CDC_MBIM=m -CONFIG_USB_NET_DM9601=m -CONFIG_USB_NET_SR9700=m -CONFIG_USB_NET_SR9800=m -CONFIG_USB_NET_SMSC75XX=m -CONFIG_USB_NET_SMSC95XX=y -CONFIG_USB_NET_GL620A=m -CONFIG_USB_NET_NET1080=m -CONFIG_USB_NET_PLUSB=m -CONFIG_USB_NET_MCS7830=m -CONFIG_USB_NET_CDC_SUBSET=m -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_KC2190=y -CONFIG_USB_NET_ZAURUS=m -CONFIG_USB_NET_CX82310_ETH=m -CONFIG_USB_NET_KALMIA=m -CONFIG_USB_NET_QMI_WWAN=m -CONFIG_USB_HSO=m -CONFIG_USB_NET_INT51X1=m -CONFIG_USB_IPHETH=m -CONFIG_USB_SIERRA_NET=m -CONFIG_USB_VL600=m -CONFIG_USB_NET_AQC111=m -CONFIG_ATH9K=m -CONFIG_ATH9K_HTC=m -CONFIG_CARL9170=m -CONFIG_ATH6KL=m -CONFIG_ATH6KL_USB=m -CONFIG_AR5523=m -CONFIG_AT76C50X_USB=m -CONFIG_B43=m -# CONFIG_B43_PHY_N is not set -CONFIG_B43LEGACY=m -CONFIG_BRCMFMAC=m -CONFIG_BRCMFMAC_USB=y -CONFIG_BRCMDBG=y -CONFIG_HOSTAP=m -CONFIG_P54_COMMON=m -CONFIG_P54_USB=m -CONFIG_LIBERTAS=m -CONFIG_LIBERTAS_USB=m -CONFIG_LIBERTAS_SDIO=m -CONFIG_LIBERTAS_THINFIRM=m -CONFIG_LIBERTAS_THINFIRM_USB=m -CONFIG_MWIFIEX=m -CONFIG_MWIFIEX_SDIO=m -CONFIG_MT7601U=m -CONFIG_MT76x0U=m -CONFIG_MT76x2U=m -CONFIG_RT2X00=m -CONFIG_RT2500USB=m -CONFIG_RT73USB=m -CONFIG_RT2800USB=m -CONFIG_RT2800USB_RT3573=y -CONFIG_RT2800USB_RT53XX=y -CONFIG_RT2800USB_RT55XX=y -CONFIG_RT2800USB_UNKNOWN=y -CONFIG_RTL8187=m -CONFIG_RTL8192CU=m -CONFIG_RTL8XXXU=m -CONFIG_USB_ZD1201=m -CONFIG_ZD1211RW=m -CONFIG_MAC80211_HWSIM=m -CONFIG_USB_NET_RNDIS_WLAN=m -CONFIG_IEEE802154_AT86RF230=m -CONFIG_IEEE802154_MRF24J40=m -CONFIG_IEEE802154_CC2520=m -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_JOYDEV=m -CONFIG_INPUT_EVDEV=y -# CONFIG_KEYBOARD_ATKBD is not set -CONFIG_KEYBOARD_GPIO=m -CONFIG_KEYBOARD_TCA6416=m -CONFIG_KEYBOARD_TCA8418=m -CONFIG_KEYBOARD_MATRIX=m -CONFIG_KEYBOARD_CAP11XX=m -# CONFIG_INPUT_MOUSE is not set -CONFIG_INPUT_JOYSTICK=y -CONFIG_JOYSTICK_IFORCE=m -CONFIG_JOYSTICK_IFORCE_USB=m -CONFIG_JOYSTICK_XPAD=m -CONFIG_JOYSTICK_XPAD_FF=y -CONFIG_JOYSTICK_XPAD_LEDS=y -CONFIG_JOYSTICK_PSXPAD_SPI=m -CONFIG_JOYSTICK_PSXPAD_SPI_FF=y -CONFIG_JOYSTICK_RPISENSE=m -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_ADS7846=m -CONFIG_TOUCHSCREEN_EGALAX=m -CONFIG_TOUCHSCREEN_EXC3000=m -CONFIG_TOUCHSCREEN_GOODIX=m -CONFIG_TOUCHSCREEN_ILI210X=m -CONFIG_TOUCHSCREEN_EDT_FT5X06=m -CONFIG_TOUCHSCREEN_USB_COMPOSITE=m -CONFIG_TOUCHSCREEN_STMPE=m -CONFIG_TOUCHSCREEN_IQS5XX=m -CONFIG_INPUT_MISC=y -CONFIG_INPUT_AD714X=m -CONFIG_INPUT_ATI_REMOTE2=m -CONFIG_INPUT_KEYSPAN_REMOTE=m -CONFIG_INPUT_POWERMATE=m -CONFIG_INPUT_YEALINK=m -CONFIG_INPUT_CM109=m -CONFIG_INPUT_UINPUT=m -CONFIG_INPUT_GPIO_ROTARY_ENCODER=m -CONFIG_INPUT_ADXL34X=m -CONFIG_INPUT_CMA3000=m -CONFIG_SERIO=m -CONFIG_SERIO_RAW=m -CONFIG_GAMEPORT=m -CONFIG_GAMEPORT_NS558=m -CONFIG_GAMEPORT_L4=m -CONFIG_BRCM_CHAR_DRIVERS=y -CONFIG_BCM2835_DEVGPIOMEM=y -CONFIG_RPIVID_MEM=m -# CONFIG_LEGACY_PTYS is not set -CONFIG_SERIAL_8250=y -# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set -CONFIG_SERIAL_8250_16550A_VARIANTS=y -CONFIG_SERIAL_8250_CONSOLE=y -# CONFIG_SERIAL_8250_DMA is not set -CONFIG_SERIAL_8250_NR_UARTS=1 -CONFIG_SERIAL_8250_RUNTIME_UARTS=0 -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SERIAL_OF_PLATFORM=y -CONFIG_SERIAL_SC16IS7XX=m -CONFIG_SERIAL_SC16IS7XX_SPI=y -CONFIG_SERIAL_DEV_BUS=y -CONFIG_TTY_PRINTK=y -CONFIG_HW_RANDOM=y -CONFIG_TCG_TPM=m -CONFIG_TCG_TIS_SPI=m -CONFIG_RANDOM_TRUST_BOOTLOADER=y -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=m -CONFIG_I2C_MUX_GPMUX=m -CONFIG_I2C_MUX_PCA954x=m -CONFIG_I2C_MUX_PINCTRL=m -CONFIG_I2C_GPIO=m -CONFIG_I2C_ROBOTFUZZ_OSIF=m -CONFIG_I2C_TINY_USB=m -CONFIG_SPI=y -CONFIG_SPI_GPIO=m -CONFIG_SPI_SPIDEV=m -CONFIG_SPI_SLAVE=y -CONFIG_PPS_CLIENT_LDISC=m -CONFIG_PPS_CLIENT_GPIO=m -CONFIG_PINCTRL=y -CONFIG_PINCTRL_MCP23S08=m -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_PCA953X=m -CONFIG_GPIO_PCA953X_IRQ=y -CONFIG_GPIO_PCF857X=m -CONFIG_GPIO_ARIZONA=m -CONFIG_GPIO_FSM=m -CONFIG_GPIO_STMPE=y -CONFIG_GPIO_MOCKUP=m -CONFIG_W1=m -CONFIG_W1_MASTER_DS2490=m -CONFIG_W1_MASTER_DS2482=m -CONFIG_W1_MASTER_DS1WM=m -CONFIG_W1_MASTER_GPIO=m -CONFIG_W1_SLAVE_THERM=m -CONFIG_W1_SLAVE_SMEM=m -CONFIG_W1_SLAVE_DS2408=m -CONFIG_W1_SLAVE_DS2413=m -CONFIG_W1_SLAVE_DS2406=m -CONFIG_W1_SLAVE_DS2423=m -CONFIG_W1_SLAVE_DS2431=m -CONFIG_W1_SLAVE_DS2433=m -CONFIG_W1_SLAVE_DS2438=m -CONFIG_W1_SLAVE_DS2780=m -CONFIG_W1_SLAVE_DS2781=m -CONFIG_W1_SLAVE_DS28E04=m -CONFIG_W1_SLAVE_DS28E17=m -CONFIG_POWER_RESET=y -CONFIG_POWER_RESET_GPIO=y -CONFIG_BATTERY_DS2760=m -CONFIG_BATTERY_MAX17040=m -CONFIG_BATTERY_GAUGE_LTC2941=m -CONFIG_SENSORS_DS1621=m -CONFIG_SENSORS_GPIO_FAN=m -CONFIG_SENSORS_IIO_HWMON=m -CONFIG_SENSORS_JC42=m -CONFIG_SENSORS_LM75=m -CONFIG_SENSORS_PWM_FAN=m -CONFIG_SENSORS_SHT21=m -CONFIG_SENSORS_SHT3x=m -CONFIG_SENSORS_SHTC1=m -CONFIG_SENSORS_INA2XX=m -CONFIG_SENSORS_TMP102=m -CONFIG_THERMAL=y -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_CORE=y -CONFIG_GPIO_WATCHDOG=m -CONFIG_MFD_RASPBERRYPI_POE_HAT=m -CONFIG_MFD_STMPE=y -CONFIG_STMPE_SPI=y -CONFIG_MFD_SYSCON=y -CONFIG_MFD_ARIZONA_I2C=m -CONFIG_MFD_ARIZONA_SPI=m -CONFIG_MFD_WM5102=y -CONFIG_REGULATOR=y -CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_REGULATOR_ARIZONA_LDO1=m -CONFIG_REGULATOR_ARIZONA_MICSUPP=m -CONFIG_REGULATOR_GPIO=y -CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=m -CONFIG_RC_CORE=y -CONFIG_LIRC=y -CONFIG_BPF_LIRC_MODE2=y -CONFIG_RC_DECODERS=y -CONFIG_IR_NEC_DECODER=m -CONFIG_IR_RC5_DECODER=m -CONFIG_IR_RC6_DECODER=m -CONFIG_IR_JVC_DECODER=m -CONFIG_IR_SONY_DECODER=m -CONFIG_IR_SANYO_DECODER=m -CONFIG_IR_SHARP_DECODER=m -CONFIG_IR_MCE_KBD_DECODER=m -CONFIG_IR_XMP_DECODER=m -CONFIG_IR_IMON_DECODER=m -CONFIG_RC_DEVICES=y -CONFIG_RC_ATI_REMOTE=m -CONFIG_IR_IMON=m -CONFIG_IR_MCEUSB=m -CONFIG_IR_REDRAT3=m -CONFIG_IR_STREAMZAP=m -CONFIG_IR_IGUANA=m -CONFIG_IR_TTUSBIR=m -CONFIG_RC_LOOPBACK=m -CONFIG_IR_GPIO_CIR=m -CONFIG_IR_GPIO_TX=m -CONFIG_IR_PWM_TX=m -CONFIG_MEDIA_SUPPORT=m -CONFIG_MEDIA_USB_SUPPORT=y -CONFIG_USB_VIDEO_CLASS=m -CONFIG_USB_PWC=m -CONFIG_VIDEO_CPIA2=m -CONFIG_USB_ZR364XX=m -CONFIG_USB_STKWEBCAM=m -CONFIG_USB_S2255=m -CONFIG_VIDEO_USBTV=m -CONFIG_VIDEO_PVRUSB2=m -CONFIG_VIDEO_HDPVR=m -CONFIG_VIDEO_STK1160_COMMON=m -CONFIG_VIDEO_GO7007=m -CONFIG_VIDEO_GO7007_USB=m -CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m -CONFIG_VIDEO_AU0828=m -CONFIG_VIDEO_AU0828_RC=y -CONFIG_VIDEO_CX231XX=m -CONFIG_VIDEO_CX231XX_ALSA=m -CONFIG_VIDEO_CX231XX_DVB=m -CONFIG_VIDEO_TM6000=m -CONFIG_VIDEO_TM6000_ALSA=m -CONFIG_VIDEO_TM6000_DVB=m -CONFIG_DVB_USB=m -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_DIBUSB_MB=m -CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_CXUSB=m -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_VP7045=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_USB_PCTV452E=m -CONFIG_DVB_USB_DW2102=m -CONFIG_DVB_USB_CINERGY_T2=m -CONFIG_DVB_USB_DTV5100=m -CONFIG_DVB_USB_AZ6027=m -CONFIG_DVB_USB_TECHNISAT_USB2=m -CONFIG_DVB_USB_V2=m -CONFIG_DVB_USB_AF9015=m -CONFIG_DVB_USB_AF9035=m -CONFIG_DVB_USB_ANYSEE=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_AZ6007=m -CONFIG_DVB_USB_CE6230=m -CONFIG_DVB_USB_EC168=m -CONFIG_DVB_USB_GL861=m -CONFIG_DVB_USB_LME2510=m -CONFIG_DVB_USB_MXL111SF=m -CONFIG_DVB_USB_RTL28XXU=m -CONFIG_DVB_USB_DVBSKY=m -CONFIG_SMS_USB_DRV=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -CONFIG_DVB_AS102=m -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_EM28XX_V4L2=m -CONFIG_VIDEO_EM28XX_ALSA=m -CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_RADIO_SI470X=m -CONFIG_USB_SI470X=m -CONFIG_I2C_SI470X=m -CONFIG_RADIO_SI4713=m -CONFIG_I2C_SI4713=m -CONFIG_USB_MR800=m -CONFIG_USB_DSBR=m -CONFIG_RADIO_SHARK=m -CONFIG_RADIO_SHARK2=m -CONFIG_USB_KEENE=m -CONFIG_USB_MA901=m -CONFIG_RADIO_TEA5764=m -CONFIG_RADIO_SAA7706H=m -CONFIG_RADIO_TEF6862=m -CONFIG_RADIO_WL1273=m -CONFIG_RADIO_WL128X=m -CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_V4L_TEST_DRIVERS=y -CONFIG_VIDEO_VIMC=m -CONFIG_VIDEO_VIVID=m -CONFIG_VIDEO_VIM2M=m -CONFIG_VIDEO_VICODEC=m -CONFIG_VIDEO_UDA1342=m -CONFIG_VIDEO_SONY_BTF_MPX=m -CONFIG_VIDEO_ADV7180=m -CONFIG_VIDEO_TC358743=m -CONFIG_VIDEO_TVP5150=m -CONFIG_VIDEO_TW2804=m -CONFIG_VIDEO_TW9903=m -CONFIG_VIDEO_TW9906=m -CONFIG_VIDEO_IMX219=m -CONFIG_VIDEO_IMX290=m -CONFIG_VIDEO_IMX477=m -CONFIG_VIDEO_IMX519=m -CONFIG_VIDEO_OV2311=m -CONFIG_VIDEO_OV5647=m -CONFIG_VIDEO_OV7251=m -CONFIG_VIDEO_OV7640=m -CONFIG_VIDEO_OV9281=m -CONFIG_VIDEO_IRS1125=m -CONFIG_VIDEO_MT9V011=m -CONFIG_VIDEO_AD5398=m -CONFIG_DRM=m -CONFIG_DRM_LOAD_EDID_FIRMWARE=y -CONFIG_DRM_UDL=m -CONFIG_DRM_PANEL_SIMPLE=m -CONFIG_DRM_PANEL_ILITEK_ILI9806E=m -CONFIG_DRM_PANEL_ILITEK_ILI9881C=m -CONFIG_DRM_PANEL_JDI_LT070ME05000=m -CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m -CONFIG_DRM_PANEL_SITRONIX_ST7701=m -CONFIG_DRM_PANEL_TPO_Y17P=m -CONFIG_DRM_DISPLAY_CONNECTOR=m -CONFIG_DRM_SIMPLE_BRIDGE=m -CONFIG_DRM_TOSHIBA_TC358762=m -CONFIG_DRM_PANEL_MIPI_DBI=m -CONFIG_TINYDRM_HX8357D=m -CONFIG_TINYDRM_ILI9225=m -CONFIG_TINYDRM_ILI9341=m -CONFIG_TINYDRM_MI0283QT=m -CONFIG_TINYDRM_REPAPER=m -CONFIG_TINYDRM_ST7586=m -CONFIG_TINYDRM_ST7735R=m -CONFIG_DRM_GUD=m -CONFIG_FB=y -CONFIG_FB_UDL=m -CONFIG_FB_SIMPLE=y -CONFIG_FB_SSD1307=m -CONFIG_FB_RPISENSE=m -CONFIG_BACKLIGHT_PWM=m -CONFIG_BACKLIGHT_GPIO=m -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -CONFIG_LOGO=y -# CONFIG_LOGO_LINUX_MONO is not set -# CONFIG_LOGO_LINUX_VGA16 is not set -CONFIG_SOUND=y -CONFIG_SND=m -CONFIG_SND_OSSEMUL=y -CONFIG_SND_PCM_OSS=m -CONFIG_SND_HRTIMER=m -CONFIG_SND_SEQUENCER=m -CONFIG_SND_SEQ_DUMMY=m -CONFIG_SND_DUMMY=m -CONFIG_SND_ALOOP=m -CONFIG_SND_VIRMIDI=m -CONFIG_SND_MTPAV=m -CONFIG_SND_SERIAL_U16550=m -CONFIG_SND_MPU401=m -CONFIG_SND_USB_AUDIO=m -CONFIG_SND_USB_UA101=m -CONFIG_SND_USB_CAIAQ=m -CONFIG_SND_USB_CAIAQ_INPUT=y -CONFIG_SND_USB_6FIRE=m -CONFIG_SND_USB_HIFACE=m -CONFIG_SND_USB_TONEPORT=m -CONFIG_SND_SOC=m -CONFIG_SND_RPI_SIMPLE_SOUNDCARD=m -CONFIG_SND_RPI_WM8804_SOUNDCARD=m -CONFIG_SND_SOC_AD193X_SPI=m -CONFIG_SND_SOC_AD193X_I2C=m -CONFIG_SND_SOC_ADAU1701=m -CONFIG_SND_SOC_ADAU7002=m -CONFIG_SND_SOC_AK4554=m -CONFIG_SND_SOC_CS4265=m -CONFIG_SND_SOC_CS4271_I2C=m -CONFIG_SND_SOC_CS42XX8_I2C=m -CONFIG_SND_SOC_DA7213=m -CONFIG_SND_SOC_DMIC=m -CONFIG_SND_SOC_ICS43432=m -CONFIG_SND_SOC_MA120X0P=m -CONFIG_SND_SOC_MAX98357A=m -CONFIG_SND_SOC_PCM179X_I2C=m -CONFIG_SND_SOC_PCM186X_I2C=m -CONFIG_SND_SOC_PCM5102A=m -CONFIG_SND_SOC_PCM512x_I2C=m -CONFIG_SND_SOC_SGTL5000=m -CONFIG_SND_SOC_SPDIF=m -CONFIG_SND_SOC_TAS571X=m -CONFIG_SND_SOC_TLV320AIC32X4_I2C=m -CONFIG_SND_SOC_WM8731=m -CONFIG_SND_SOC_WM8741=m -CONFIG_SND_SOC_WM8804_I2C=m -CONFIG_SND_SOC_WM8960=m -CONFIG_SND_SOC_TPA6130A2=m -CONFIG_SND_SOC_I_SABRE_CODEC=m -CONFIG_SND_SIMPLE_CARD=m -CONFIG_SND_AUDIO_GRAPH_CARD=m -CONFIG_HID_BATTERY_STRENGTH=y -CONFIG_HIDRAW=y -CONFIG_UHID=m -CONFIG_HID_A4TECH=m -CONFIG_HID_ACRUX=m -CONFIG_HID_APPLE=m -CONFIG_HID_ASUS=m -CONFIG_HID_BELKIN=m -CONFIG_HID_BETOP_FF=m -CONFIG_HID_BIGBEN_FF=m -CONFIG_HID_CHERRY=m -CONFIG_HID_CHICONY=m -CONFIG_HID_CYPRESS=m -CONFIG_HID_DRAGONRISE=m -CONFIG_HID_EMS_FF=m -CONFIG_HID_ELECOM=m -CONFIG_HID_ELO=m -CONFIG_HID_EZKEY=m -CONFIG_HID_GEMBIRD=m -CONFIG_HID_HOLTEK=m -CONFIG_HID_KEYTOUCH=m -CONFIG_HID_KYE=m -CONFIG_HID_UCLOGIC=m -CONFIG_HID_WALTOP=m -CONFIG_HID_GYRATION=m -CONFIG_HID_TWINHAN=m -CONFIG_HID_KENSINGTON=m -CONFIG_HID_LCPOWER=m -CONFIG_HID_LOGITECH=m -CONFIG_HID_LOGITECH_DJ=m -CONFIG_LOGITECH_FF=y -CONFIG_LOGIRUMBLEPAD2_FF=y -CONFIG_LOGIG940_FF=y -CONFIG_HID_MAGICMOUSE=m -CONFIG_HID_MICROSOFT=m -CONFIG_HID_MONTEREY=m -CONFIG_HID_MULTITOUCH=m -CONFIG_HID_NTRIG=m -CONFIG_HID_ORTEK=m -CONFIG_HID_PANTHERLORD=m -CONFIG_HID_PETALYNX=m -CONFIG_HID_PICOLCD=m -CONFIG_HID_PLAYSTATION=m -CONFIG_PLAYSTATION_FF=y -CONFIG_HID_ROCCAT=m -CONFIG_HID_SAMSUNG=m -CONFIG_HID_SONY=m -CONFIG_SONY_FF=y -CONFIG_HID_SPEEDLINK=m -CONFIG_HID_STEAM=m -CONFIG_HID_SUNPLUS=m -CONFIG_HID_GREENASIA=m -CONFIG_HID_SMARTJOYPLUS=m -CONFIG_HID_TOPSEED=m -CONFIG_HID_THINGM=m -CONFIG_HID_THRUSTMASTER=m -CONFIG_HID_WACOM=m -CONFIG_HID_WIIMOTE=m -CONFIG_HID_XINMO=m -CONFIG_HID_ZEROPLUS=m -CONFIG_HID_ZYDACRON=m -CONFIG_HID_PID=y -CONFIG_USB_HIDDEV=y -CONFIG_USB=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_MON=m -CONFIG_USB_XHCI_HCD=y -CONFIG_USB_XHCI_PLATFORM=y -CONFIG_USB_PRINTER=m -CONFIG_USB_TMC=m -CONFIG_USB_STORAGE=y -CONFIG_USB_STORAGE_REALTEK=m -CONFIG_USB_STORAGE_DATAFAB=m -CONFIG_USB_STORAGE_FREECOM=m -CONFIG_USB_STORAGE_ISD200=m -CONFIG_USB_STORAGE_USBAT=m -CONFIG_USB_STORAGE_SDDR09=m -CONFIG_USB_STORAGE_SDDR55=m -CONFIG_USB_STORAGE_JUMPSHOT=m -CONFIG_USB_STORAGE_ALAUDA=m -CONFIG_USB_STORAGE_ONETOUCH=m -CONFIG_USB_STORAGE_KARMA=m -CONFIG_USB_STORAGE_CYPRESS_ATACB=m -CONFIG_USB_STORAGE_ENE_UB6250=m -CONFIG_USB_UAS=y -CONFIG_USB_MDC800=m -CONFIG_USB_MICROTEK=m -CONFIG_USBIP_CORE=m -CONFIG_USBIP_VHCI_HCD=m -CONFIG_USBIP_HOST=m -CONFIG_USBIP_VUDC=m -CONFIG_USB_DWC2=m -CONFIG_USB_SERIAL=m -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_AIRCABLE=m -CONFIG_USB_SERIAL_ARK3116=m -CONFIG_USB_SERIAL_BELKIN=m -CONFIG_USB_SERIAL_CH341=m -CONFIG_USB_SERIAL_WHITEHEAT=m -CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m -CONFIG_USB_SERIAL_CP210X=m -CONFIG_USB_SERIAL_CYPRESS_M8=m -CONFIG_USB_SERIAL_EMPEG=m -CONFIG_USB_SERIAL_FTDI_SIO=m -CONFIG_USB_SERIAL_VISOR=m -CONFIG_USB_SERIAL_IPAQ=m -CONFIG_USB_SERIAL_IR=m -CONFIG_USB_SERIAL_EDGEPORT=m -CONFIG_USB_SERIAL_EDGEPORT_TI=m -CONFIG_USB_SERIAL_F81232=m -CONFIG_USB_SERIAL_GARMIN=m -CONFIG_USB_SERIAL_IPW=m -CONFIG_USB_SERIAL_IUU=m -CONFIG_USB_SERIAL_KEYSPAN_PDA=m -CONFIG_USB_SERIAL_KEYSPAN=m -CONFIG_USB_SERIAL_KLSI=m -CONFIG_USB_SERIAL_KOBIL_SCT=m -CONFIG_USB_SERIAL_MCT_U232=m -CONFIG_USB_SERIAL_METRO=m -CONFIG_USB_SERIAL_MOS7720=m -CONFIG_USB_SERIAL_MOS7840=m -CONFIG_USB_SERIAL_NAVMAN=m -CONFIG_USB_SERIAL_PL2303=m -CONFIG_USB_SERIAL_OTI6858=m -CONFIG_USB_SERIAL_QCAUX=m -CONFIG_USB_SERIAL_QUALCOMM=m -CONFIG_USB_SERIAL_SPCP8X5=m -CONFIG_USB_SERIAL_SAFE=m -CONFIG_USB_SERIAL_SIERRAWIRELESS=m -CONFIG_USB_SERIAL_SYMBOL=m -CONFIG_USB_SERIAL_TI=m -CONFIG_USB_SERIAL_CYBERJACK=m -CONFIG_USB_SERIAL_OPTION=m -CONFIG_USB_SERIAL_OMNINET=m -CONFIG_USB_SERIAL_OPTICON=m -CONFIG_USB_SERIAL_XSENS_MT=m -CONFIG_USB_SERIAL_WISHBONE=m -CONFIG_USB_SERIAL_SSU100=m -CONFIG_USB_SERIAL_QT2=m -CONFIG_USB_SERIAL_DEBUG=m -CONFIG_USB_EMI62=m -CONFIG_USB_EMI26=m -CONFIG_USB_ADUTUX=m -CONFIG_USB_SEVSEG=m -CONFIG_USB_LEGOTOWER=m -CONFIG_USB_LCD=m -CONFIG_USB_CYPRESS_CY7C63=m -CONFIG_USB_CYTHERM=m -CONFIG_USB_IDMOUSE=m -CONFIG_USB_FTDI_ELAN=m -CONFIG_USB_APPLEDISPLAY=m -CONFIG_USB_LD=m -CONFIG_USB_TRANCEVIBRATOR=m -CONFIG_USB_IOWARRIOR=m -CONFIG_USB_TEST=m -CONFIG_USB_ISIGHTFW=m -CONFIG_USB_YUREX=m -CONFIG_USB_ATM=m -CONFIG_USB_SPEEDTOUCH=m -CONFIG_USB_CXACRU=m -CONFIG_USB_UEAGLEATM=m -CONFIG_USB_XUSBATM=m -CONFIG_NOP_USB_XCEIV=y -CONFIG_USB_GADGET=y -CONFIG_USB_CONFIGFS=m -CONFIG_USB_CONFIGFS_SERIAL=y -CONFIG_USB_CONFIGFS_ACM=y -CONFIG_USB_CONFIGFS_OBEX=y -CONFIG_USB_CONFIGFS_NCM=y -CONFIG_USB_CONFIGFS_ECM=y -CONFIG_USB_CONFIGFS_ECM_SUBSET=y -CONFIG_USB_CONFIGFS_RNDIS=y -CONFIG_USB_CONFIGFS_EEM=y -CONFIG_USB_CONFIGFS_MASS_STORAGE=y -CONFIG_USB_CONFIGFS_F_LB_SS=y -CONFIG_USB_CONFIGFS_F_FS=y -CONFIG_USB_CONFIGFS_F_UAC1=y -CONFIG_USB_CONFIGFS_F_UAC2=y -CONFIG_USB_CONFIGFS_F_MIDI=y -CONFIG_USB_CONFIGFS_F_HID=y -CONFIG_USB_CONFIGFS_F_UVC=y -CONFIG_USB_CONFIGFS_F_PRINTER=y -CONFIG_USB_ZERO=m -CONFIG_USB_AUDIO=m -CONFIG_USB_ETH=m -CONFIG_USB_GADGETFS=m -CONFIG_USB_MASS_STORAGE=m -CONFIG_USB_G_SERIAL=m -CONFIG_USB_MIDI_GADGET=m -CONFIG_USB_G_PRINTER=m -CONFIG_USB_CDC_COMPOSITE=m -CONFIG_USB_G_ACM_MS=m -CONFIG_USB_G_MULTI=m -CONFIG_USB_G_HID=m -CONFIG_USB_G_WEBCAM=m -CONFIG_MMC=y -CONFIG_MMC_BLOCK_MINORS=32 -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SPI=m -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_PCA9532=m -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_PCA955X=m -CONFIG_LEDS_PCA963X=m -CONFIG_LEDS_PWM=y -CONFIG_LEDS_IS31FL32XX=m -CONFIG_LEDS_TRIGGER_TIMER=y -CONFIG_LEDS_TRIGGER_ONESHOT=y -CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_LEDS_TRIGGER_BACKLIGHT=y -CONFIG_LEDS_TRIGGER_CPU=y -CONFIG_LEDS_TRIGGER_GPIO=y -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -CONFIG_LEDS_TRIGGER_TRANSIENT=m -CONFIG_LEDS_TRIGGER_CAMERA=m -CONFIG_LEDS_TRIGGER_INPUT=y -CONFIG_LEDS_TRIGGER_PANIC=y -CONFIG_LEDS_TRIGGER_NETDEV=m -CONFIG_LEDS_TRIGGER_PATTERN=m -CONFIG_LEDS_TRIGGER_ACTPWR=y -CONFIG_ACCESSIBILITY=y -CONFIG_SPEAKUP=m -CONFIG_SPEAKUP_SYNTH_SOFT=m -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_ABX80X=m -CONFIG_RTC_DRV_DS1307=m -CONFIG_RTC_DRV_DS1374=m -CONFIG_RTC_DRV_DS1672=m -CONFIG_RTC_DRV_MAX6900=m -CONFIG_RTC_DRV_RS5C372=m -CONFIG_RTC_DRV_ISL1208=m -CONFIG_RTC_DRV_ISL12022=m -CONFIG_RTC_DRV_X1205=m -CONFIG_RTC_DRV_PCF8523=m -CONFIG_RTC_DRV_PCF85063=m -CONFIG_RTC_DRV_PCF85363=m -CONFIG_RTC_DRV_PCF8563=m -CONFIG_RTC_DRV_PCF8583=m -CONFIG_RTC_DRV_M41T80=m -CONFIG_RTC_DRV_BQ32K=m -CONFIG_RTC_DRV_S35390A=m -CONFIG_RTC_DRV_FM3130=m -CONFIG_RTC_DRV_RX8581=m -CONFIG_RTC_DRV_RX8025=m -CONFIG_RTC_DRV_EM3027=m -CONFIG_RTC_DRV_RV3028=m -CONFIG_RTC_DRV_SD3078=m -CONFIG_RTC_DRV_M41T93=m -CONFIG_RTC_DRV_M41T94=m -CONFIG_RTC_DRV_DS1302=m -CONFIG_RTC_DRV_DS1305=m -CONFIG_RTC_DRV_DS1390=m -CONFIG_RTC_DRV_R9701=m -CONFIG_RTC_DRV_RX4581=m -CONFIG_RTC_DRV_RS5C348=m -CONFIG_RTC_DRV_MAX6902=m -CONFIG_RTC_DRV_PCF2123=m -CONFIG_RTC_DRV_DS3232=m -CONFIG_RTC_DRV_PCF2127=m -CONFIG_RTC_DRV_RV3029C2=m -CONFIG_DMADEVICES=y -CONFIG_DMABUF_HEAPS=y -CONFIG_DMABUF_HEAPS_SYSTEM=y -CONFIG_DMABUF_HEAPS_CMA=y -CONFIG_AUXDISPLAY=y -CONFIG_HD44780=m -CONFIG_UIO=m -CONFIG_UIO_PDRV_GENIRQ=m -CONFIG_VHOST_NET=m -CONFIG_VHOST_VSOCK=m -CONFIG_VHOST_CROSS_ENDIAN_LEGACY=y -CONFIG_STAGING=y -CONFIG_PRISM2_USB=m -CONFIG_R8712U=m -CONFIG_R8188EU=m -CONFIG_VT6656=m -CONFIG_STAGING_MEDIA=y -CONFIG_VIDEO_RPIVID=m -CONFIG_ASHMEM=y -CONFIG_FB_TFT=m -CONFIG_FB_TFT_AGM1264K_FL=m -CONFIG_FB_TFT_BD663474=m -CONFIG_FB_TFT_HX8340BN=m -CONFIG_FB_TFT_HX8347D=m -CONFIG_FB_TFT_HX8353D=m -CONFIG_FB_TFT_HX8357D=m -CONFIG_FB_TFT_ILI9163=m -CONFIG_FB_TFT_ILI9320=m -CONFIG_FB_TFT_ILI9325=m -CONFIG_FB_TFT_ILI9340=m -CONFIG_FB_TFT_ILI9341=m -CONFIG_FB_TFT_ILI9481=m -CONFIG_FB_TFT_ILI9486=m -CONFIG_FB_TFT_PCD8544=m -CONFIG_FB_TFT_RA8875=m -CONFIG_FB_TFT_S6D02A1=m -CONFIG_FB_TFT_S6D1121=m -CONFIG_FB_TFT_SH1106=m -CONFIG_FB_TFT_SSD1289=m -CONFIG_FB_TFT_SSD1306=m -CONFIG_FB_TFT_SSD1331=m -CONFIG_FB_TFT_SSD1351=m -CONFIG_FB_TFT_ST7735R=m -CONFIG_FB_TFT_ST7789V=m -CONFIG_FB_TFT_TINYLCD=m -CONFIG_FB_TFT_TLS8204=m -CONFIG_FB_TFT_UC1701=m -CONFIG_FB_TFT_UPD161704=m -CONFIG_FB_TFT_WATTEROTT=m -CONFIG_MAILBOX=y -# CONFIG_IOMMU_SUPPORT is not set -CONFIG_IIO=m -CONFIG_IIO_BUFFER_CB=m -CONFIG_MCP320X=m -CONFIG_MCP3422=m -CONFIG_TI_ADS1015=m -CONFIG_BME680=m -CONFIG_CCS811=m -CONFIG_SENSIRION_SGP30=m -CONFIG_SPS30_I2C=m -CONFIG_MAX30102=m -CONFIG_DHT11=m -CONFIG_HDC100X=m -CONFIG_HTU21=m -CONFIG_INV_MPU6050_I2C=m -CONFIG_APDS9960=m -CONFIG_BH1750=m -CONFIG_TSL4531=m -CONFIG_VEML6070=m -CONFIG_BMP280=m -CONFIG_MAXIM_THERMOCOUPLE=m -CONFIG_MAX31856=m -CONFIG_PWM_PCA9685=m -CONFIG_RESET_CONTROLLER=y -CONFIG_ANDROID=y -CONFIG_ANDROID_BINDER_IPC=y -CONFIG_ANDROID_BINDERFS=y -CONFIG_NVMEM_RMEM=m -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_REISERFS_FS=m -CONFIG_REISERFS_FS_XATTR=y -CONFIG_REISERFS_FS_POSIX_ACL=y -CONFIG_REISERFS_FS_SECURITY=y -CONFIG_JFS_FS=m -CONFIG_JFS_POSIX_ACL=y -CONFIG_JFS_SECURITY=y -CONFIG_JFS_STATISTICS=y -CONFIG_XFS_FS=m -CONFIG_XFS_QUOTA=y -CONFIG_XFS_POSIX_ACL=y -CONFIG_XFS_RT=y -CONFIG_GFS2_FS=m -CONFIG_OCFS2_FS=m -CONFIG_BTRFS_FS=m -CONFIG_BTRFS_FS_POSIX_ACL=y -CONFIG_NILFS2_FS=m -CONFIG_F2FS_FS=y -CONFIG_F2FS_FS_SECURITY=y -CONFIG_FS_ENCRYPTION=y -CONFIG_FANOTIFY=y -CONFIG_QFMT_V1=m -CONFIG_QFMT_V2=m -CONFIG_AUTOFS4_FS=y -CONFIG_FUSE_FS=m -CONFIG_CUSE=m -CONFIG_OVERLAY_FS=m -CONFIG_FSCACHE=y -CONFIG_FSCACHE_STATS=y -CONFIG_CACHEFILES=y -CONFIG_ISO9660_FS=m -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_UDF_FS=m -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -CONFIG_EXFAT_FS=m -CONFIG_NTFS_FS=m -CONFIG_NTFS_RW=y -CONFIG_NTFS3_FS=m -CONFIG_TMPFS=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_ECRYPT_FS=m -CONFIG_HFS_FS=m -CONFIG_HFSPLUS_FS=m -CONFIG_JFFS2_FS=m -CONFIG_JFFS2_SUMMARY=y -CONFIG_UBIFS_FS=m -CONFIG_SQUASHFS=m -CONFIG_SQUASHFS_XATTR=y -CONFIG_SQUASHFS_LZO=y -CONFIG_SQUASHFS_XZ=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3_ACL=y -CONFIG_NFS_V4=y -CONFIG_NFS_SWAP=y -CONFIG_NFS_V4_1=y -CONFIG_NFS_V4_2=y -CONFIG_ROOT_NFS=y -CONFIG_NFS_FSCACHE=y -CONFIG_NFSD=m -CONFIG_NFSD_V3_ACL=y -CONFIG_NFSD_V4=y -CONFIG_CIFS=m -CONFIG_CIFS_UPCALL=y -CONFIG_CIFS_XATTR=y -CONFIG_CIFS_POSIX=y -CONFIG_CIFS_DFS_UPCALL=y -CONFIG_CIFS_FSCACHE=y -CONFIG_SMB_SERVER=m -CONFIG_9P_FS=m -CONFIG_9P_FS_POSIX_ACL=y -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_737=m -CONFIG_NLS_CODEPAGE_775=m -CONFIG_NLS_CODEPAGE_850=m -CONFIG_NLS_CODEPAGE_852=m -CONFIG_NLS_CODEPAGE_855=m -CONFIG_NLS_CODEPAGE_857=m -CONFIG_NLS_CODEPAGE_860=m -CONFIG_NLS_CODEPAGE_861=m -CONFIG_NLS_CODEPAGE_862=m -CONFIG_NLS_CODEPAGE_863=m -CONFIG_NLS_CODEPAGE_864=m -CONFIG_NLS_CODEPAGE_865=m -CONFIG_NLS_CODEPAGE_866=m -CONFIG_NLS_CODEPAGE_869=m -CONFIG_NLS_CODEPAGE_936=m -CONFIG_NLS_CODEPAGE_950=m -CONFIG_NLS_CODEPAGE_932=m -CONFIG_NLS_CODEPAGE_949=m -CONFIG_NLS_CODEPAGE_874=m -CONFIG_NLS_ISO8859_8=m -CONFIG_NLS_CODEPAGE_1250=m -CONFIG_NLS_CODEPAGE_1251=m -CONFIG_NLS_ASCII=y -CONFIG_NLS_ISO8859_1=m -CONFIG_NLS_ISO8859_2=m -CONFIG_NLS_ISO8859_3=m -CONFIG_NLS_ISO8859_4=m -CONFIG_NLS_ISO8859_5=m -CONFIG_NLS_ISO8859_6=m -CONFIG_NLS_ISO8859_7=m -CONFIG_NLS_ISO8859_9=m -CONFIG_NLS_ISO8859_13=m -CONFIG_NLS_ISO8859_14=m -CONFIG_NLS_ISO8859_15=m -CONFIG_NLS_KOI8_R=m -CONFIG_NLS_KOI8_U=m -CONFIG_DLM=m -CONFIG_SECURITY=y -CONFIG_SECURITY_APPARMOR=y -CONFIG_LSM="" -CONFIG_CRYPTO_USER=m -CONFIG_CRYPTO_CRYPTD=m -CONFIG_CRYPTO_CHACHA20POLY1305=m -CONFIG_CRYPTO_ADIANTUM=m -CONFIG_CRYPTO_XCBC=m -CONFIG_CRYPTO_WP512=m -CONFIG_CRYPTO_CAST5=m -CONFIG_CRYPTO_DES=y -CONFIG_CRYPTO_LZ4=m -CONFIG_CRYPTO_USER_API_HASH=m -CONFIG_CRYPTO_USER_API_SKCIPHER=m -CONFIG_CRYPTO_USER_API_RNG=m -CONFIG_CRYPTO_USER_API_AEAD=m -# CONFIG_CRYPTO_HW is not set -CONFIG_CRC_ITU_T=y -CONFIG_LIBCRC32C=y -CONFIG_DMA_CMA=y -CONFIG_CMA_SIZE_MBYTES=5 -CONFIG_PRINTK_TIME=y -CONFIG_BOOT_PRINTK_DELAY=y -CONFIG_KGDB=y -CONFIG_KGDB_KDB=y -CONFIG_KDB_KEYBOARD=y -CONFIG_DEBUG_MEMORY_INIT=y -CONFIG_DETECT_HUNG_TASK=y -CONFIG_LATENCYTOP=y -CONFIG_FUNCTION_PROFILER=y -CONFIG_STACK_TRACER=y -CONFIG_IRQSOFF_TRACER=y -CONFIG_SCHED_TRACER=y -CONFIG_BLK_DEV_IO_TRACE=y -# CONFIG_UPROBE_EVENTS is not set diff --git a/buildroot-external/board/rpi4/post-build.sh b/buildroot-external/board/rpi4/post-build.sh index d61c3f3..5093b07 100755 --- a/buildroot-external/board/rpi4/post-build.sh +++ b/buildroot-external/board/rpi4/post-build.sh @@ -1,5 +1,8 @@ #!/bin/sh +# Stop on error +set -e + # create VERSION file echo "VERSION=${PRODUCT_VERSION}" >"${TARGET_DIR}/VERSION" echo "PRODUCT=${PRODUCT}" >>"${TARGET_DIR}/VERSION" @@ -11,6 +14,19 @@ ln -sf ../VERSION "${TARGET_DIR}/boot/VERSION" # remove /etc/dbus-1/system.d/pulseaudio-system.conf rm -f "${TARGET_DIR}/etc/dbus-1/system.d/pulseaudio-system.conf" +rm -f "${TARGET_DIR}/usr/share/dbus-1/system.d/pulseaudio-system.conf" # remove /etc/init.d/S40xorg as not needed rm -f "${TARGET_DIR}/etc/init.d/S40xorg" + +# remove /etc/X11/xorg.conf.d/20-intel.conf as it will not work on rpi +rm -f "${TARGET_DIR}/etc/X11/xorg.conf.d/20-intel.conf" + +# remove /lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf as it is systemd only +rm -f "${TARGET_DIR}/lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf" + +# remove unnecessary /etc/init.d/fuse3 +rm -f "${TARGET_DIR}/etc/init.d/fuse3" + +# remove unnecessary /usr/share/clc +rm -rf "${TARGET_DIR}/usr/share/clc" diff --git a/buildroot-external/board/rpi4/post-image.sh b/buildroot-external/board/rpi4/post-image.sh index 9e450c7..be8136f 100755 --- a/buildroot-external/board/rpi4/post-image.sh +++ b/buildroot-external/board/rpi4/post-image.sh @@ -1,17 +1,23 @@ #!/bin/sh +# Stop on error +set -e + BOARD_DIR="$(dirname "$0")" -BOARD_NAME="$(basename "${BOARD_DIR}")" +#BOARD_NAME="$(basename "${BOARD_DIR}")" # Use our own cmdline.txt+config.txt -cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/cmdline.txt" "${BINARIES_DIR}/" -cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/config.txt" "${BINARIES_DIR}/" -cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/bootEnv.txt" "${BINARIES_DIR}/" +cp "${BOARD_DIR}/cmdline.txt" "${BINARIES_DIR}/" +cp "${BOARD_DIR}/config.txt" "${BINARIES_DIR}/" +cp "${BOARD_DIR}/bootEnv.txt" "${BINARIES_DIR}/" + +# README needs to be present, otherwise os_prefix is not +# prepended implicitly to the overlays' path, see: +# https://www.raspberrypi.com/documentation/computers/config_txt.html#overlay_prefix +touch "${BINARIES_DIR}/overlays/README" 2>/dev/null || true # VERSION File cp "${TARGET_DIR}/boot/VERSION" "${BINARIES_DIR}" # create *.img file using genimage -support/scripts/genimage.sh -c "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/genimage.cfg" - -exit $? +support/scripts/genimage.sh -c "${BOARD_DIR}/genimage.cfg" diff --git a/buildroot-external/board/rpi4/uboot-patches/0000-rpi-bootdelay.patch b/buildroot-external/board/rpi4/uboot-patches/0000-rpi-bootdelay.patch deleted file mode 100644 index 58d9706..0000000 --- a/buildroot-external/board/rpi4/uboot-patches/0000-rpi-bootdelay.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- uboot/include/configs/rpi.h.orig 2020-01-06 21:56:31.000000000 +0100 -+++ uboot/include/configs/rpi.h 2020-06-04 12:05:40.714314603 +0200 -@@ -79,6 +79,8 @@ - - /* Environment */ - #define CONFIG_SYS_LOAD_ADDR 0x1000000 -+#define CONFIG_BOOT_RETRY_TIME 20 -+#define CONFIG_RESET_TO_RETRY - - /* Shell */ - -@@ -89,9 +91,9 @@ - - /* Environment */ - #define ENV_DEVICE_SETTINGS \ -- "stdin=serial,usbkbd\0" \ -- "stdout=serial,vidconsole\0" \ -- "stderr=serial,vidconsole\0" -+ "stdin=usbkbd\0" \ -+ "stdout=vidconsole\0" \ -+ "stderr=vidconsole\0" - - #ifdef CONFIG_ARM64 - #define FDT_HIGH "ffffffffffffffff" diff --git a/buildroot-external/board/rpi4/uboot-patches/0003-ARM-bcm283x-change-the-virtual-address-of-the-XHCI-P.patch b/buildroot-external/board/rpi4/uboot-patches/0003-ARM-bcm283x-change-the-virtual-address-of-the-XHCI-P.patch deleted file mode 100644 index 844ef0a..0000000 --- a/buildroot-external/board/rpi4/uboot-patches/0003-ARM-bcm283x-change-the-virtual-address-of-the-XHCI-P.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 72619dd5d0be59e702fd7b7090916ee688c34180 Mon Sep 17 00:00:00 2001 -Message-Id: <72619dd5d0be59e702fd7b7090916ee688c34180.1631043469.git.stefan@agner.ch> -In-Reply-To: <9cb97076d98f7f68534abb3d1f596644ae730841.1631043469.git.stefan@agner.ch> -References: <9cb97076d98f7f68534abb3d1f596644ae730841.1631043469.git.stefan@agner.ch> -From: Marek Szyprowski -Date: Thu, 17 Jun 2021 11:22:03 +0200 -Subject: [PATCH 3/4] ARM: bcm283x: change the virtual address of the XHCI PCI - device base - -Move the XHCI PCI device base up in the virtual address space. This fixes -initialization failure observed with newer Raspberry Pi firmware, later -than 63b1922311 ("firmware: arm_loader: Update armstubs with those from -PR 117). It looks that chosing 0xff800000 as the XHCI PCI device base -conflicts with the updated ARM/VideoCore firmware. - -This also requires to reduce the size of the mapped PCI device region -from 8MiB to 4MiB to fit into 32bit address space. This is still enough -for the XHCI PCI device. - -Signed-off-by: Marek Szyprowski ---- - arch/arm/mach-bcm283x/init.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c -index 49027ce0a2..9803499985 100644 ---- a/arch/arm/mach-bcm283x/init.c -+++ b/arch/arm/mach-bcm283x/init.c -@@ -14,7 +14,7 @@ - #include - - #define BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS 0x600000000UL --#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x800000UL -+#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x400000UL - - #ifdef CONFIG_ARM64 - #include -@@ -148,7 +148,7 @@ int mach_cpu_init(void) - - #ifdef CONFIG_ARMV7_LPAE - #ifdef CONFIG_TARGET_RPI_4_32B --#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xff800000UL -+#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xffc00000UL - #include - #include - --- -2.33.0 - diff --git a/buildroot-external/board/rpi4/uboot-patches/0004-IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch b/buildroot-external/board/rpi4/uboot-patches/0004-IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch deleted file mode 100644 index 80aa349..0000000 --- a/buildroot-external/board/rpi4/uboot-patches/0004-IOMUX-Fix-buffer-overflow-in-iomux_replace_device.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 0a33e4e03b9266818d6f0a6d566bf12be55c657c Mon Sep 17 00:00:00 2001 -Message-Id: <0a33e4e03b9266818d6f0a6d566bf12be55c657c.1631043469.git.stefan@agner.ch> -In-Reply-To: <9cb97076d98f7f68534abb3d1f596644ae730841.1631043469.git.stefan@agner.ch> -References: <9cb97076d98f7f68534abb3d1f596644ae730841.1631043469.git.stefan@agner.ch> -From: Yuichiro Goto -Date: Mon, 26 Apr 2021 08:08:03 +0900 -Subject: [PATCH 4/4] IOMUX: Fix buffer overflow in iomux_replace_device() - -Use of strcat() against an uninitialized buffer would lead -to buffer overflow. This patch fixes it. - -Fixes: 694cd5618c ("IOMUX: Introduce iomux_replace_device()") -Signed-off-by: Yuichiro Goto -Cc: Peter Robinson -Cc: Andy Shevchenko -Cc: Nicolas Saenz Julienne -Reviewed-by: Andy Shevchenko -Tested-by: Peter Robinson ---- - common/iomux.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/common/iomux.c b/common/iomux.c -index b9088aa3b5..c428f7110a 100644 ---- a/common/iomux.c -+++ b/common/iomux.c -@@ -158,8 +158,12 @@ int iomux_replace_device(const int console, const char *old, const char *new) - return -ENOMEM; - } - -- strcat(tmp, ","); -- strcat(tmp, name); -+ if (arg) { -+ strcat(tmp, ","); -+ strcat(tmp, name); -+ } -+ else -+ strcpy(tmp, name); - - arg = tmp; - size = strlen(tmp) + 1; --- -2.33.0 - diff --git a/buildroot-external/board/rpi4/uboot.config b/buildroot-external/board/rpi4/uboot.config new file mode 100644 index 0000000..9f9a916 --- /dev/null +++ b/buildroot-external/board/rpi4/uboot.config @@ -0,0 +1,13 @@ +# keep serial enabled +CONFIG_SERIAL_PRESENT=y + +CONFIG_CMD_NVME=y + +CONFIG_USB_STORAGE=y +CONFIG_USB_FUNCTION_MASS_STORAGE=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_GENERIC=y +CONFIG_USB_OHCI_HCD=y + +CONFIG_NVME=y +CONFIG_NVME_PCI=y diff --git a/buildroot-external/board/rpi4/uboot_defconfig b/buildroot-external/board/rpi4/uboot_defconfig deleted file mode 100644 index 562929e..0000000 --- a/buildroot-external/board/rpi4/uboot_defconfig +++ /dev/null @@ -1,94 +0,0 @@ -CONFIG_ARM=y -CONFIG_ARCH_BCM283X=y -CONFIG_SYS_TEXT_BASE=0x00080000 -CONFIG_TARGET_RPI_4=y -CONFIG_SYS_MALLOC_F_LEN=0x2000 -CONFIG_ENV_SIZE=0x4000 -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_DISTRO_DEFAULTS=y -# CONFIG_EXPERT is not set -CONFIG_OF_BOARD_SETUP=y -CONFIG_BOOTDELAY=-2 -CONFIG_AUTOBOOT_KEYED=y -CONFIG_AUTOBOOT_PROMPT="Hit to stop autoboot in %2ds\n" -CONFIG_AUTOBOOT_DELAY_STR="\x18" -CONFIG_USE_PREBOOT=y -CONFIG_PREBOOT="pci enum; usb start;" -CONFIG_SILENT_CONSOLE=y -CONFIG_SILENT_U_BOOT_ONLY=y -# CONFIG_DISPLAY_CPUINFO is not set -# CONFIG_DISPLAY_BOARDINFO is not set -CONFIG_MISC_INIT_R=y -CONFIG_SYS_PROMPT="U-Boot> " -CONFIG_CMD_DFU=y -CONFIG_CMD_GPIO=y -CONFIG_CMD_MMC=y -CONFIG_CMD_PCI=y -CONFIG_CMD_USB=y -CONFIG_CMD_CACHE=y -CONFIG_CMD_TIME=y -CONFIG_CMD_PMIC=y -CONFIG_CMD_REGULATOR=y -CONFIG_CMD_FS_UUID=y -# CONFIG_ISO_PARTITION is not set -# CONFIG_EFI_PARTITION is not set -CONFIG_OF_BOARD=y -CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" -CONFIG_SYS_RELOC_GD_ENV_ADDR=y -CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -CONFIG_VERSION_VARIABLE=y -CONFIG_DM_DMA=y -CONFIG_REGMAP=y -CONFIG_SYSCON=y -CONFIG_CLK=y -CONFIG_DFU_MMC=y -CONFIG_MISC=y -CONFIG_DM_MMC=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_SDMA=y -CONFIG_MMC_SDHCI_BCM2835=y -CONFIG_DM_ETH=y -CONFIG_BCMGENET=y -CONFIG_PCI=y -CONFIG_DM_PCI=y -CONFIG_PCI_BRCMSTB=y -CONFIG_PINCTRL=y -# CONFIG_PINCTRL_GENERIC is not set -CONFIG_DM_PMIC=y -CONFIG_DM_REGULATOR=y -CONFIG_DM_REGULATOR_FIXED=y -CONFIG_SPL_DM_REGULATOR_FIXED=y -CONFIG_RAM=y -CONFIG_DM_RESET=y -CONFIG_DM_RNG=y -CONFIG_RNG_IPROC200=y -# CONFIG_REQUIRE_SERIAL_CONSOLE is not set -CONFIG_NULLDEV_SERIAL=y -CONFIG_USB=y -CONFIG_DM_USB=y -CONFIG_DM_USB_GADGET=y -CONFIG_USB_XHCI_HCD=y -CONFIG_USB_XHCI_PCI=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_GENERIC=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_KEYBOARD=y -CONFIG_USB_KEYBOARD_FN_KEYS=y -CONFIG_USB_GADGET=y -CONFIG_USB_GADGET_MANUFACTURER="FSL" -CONFIG_USB_GADGET_VENDOR_NUM=0x0525 -CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 -CONFIG_USB_GADGET_DWC2_OTG=y -CONFIG_USB_GADGET_DOWNLOAD=y -CONFIG_USB_FUNCTION_MASS_STORAGE=y -CONFIG_USB_HOST_ETHER=y -CONFIG_DM_VIDEO=y -# CONFIG_VIDEO_BPP8 is not set -# CONFIG_VIDEO_BPP16 is not set -CONFIG_SYS_WHITE_ON_BLACK=y -CONFIG_CONSOLE_SCROLL_LINES=10 -CONFIG_PHYS_TO_BUS=y -CONFIG_CMD_DHRYSTONE=y -CONFIG_ERRNO_STR=y -CONFIG_OF_LIBFDT_OVERLAY=y -# CONFIG_EFI_LOADER is not set diff --git a/buildroot-external/board/rpi4_32/bootEnv.txt b/buildroot-external/board/rpi4_32/bootEnv.txt deleted file mode 100644 index 386a9f4..0000000 --- a/buildroot-external/board/rpi4_32/bootEnv.txt +++ /dev/null @@ -1,4 +0,0 @@ -#bootserver=192.168.74.30 -#kernel_img=thinroot/thinroot-rpi4_32-kernel.img -#initrd=thinroot/thinroot-rpi4_32.img -#extraargs=BASE_PATH=http://192.168.74.30/thinroot diff --git a/buildroot-external/board/rpi4_32/kernel_defconfig b/buildroot-external/board/rpi4_32/kernel_defconfig deleted file mode 100644 index a1719e5..0000000 --- a/buildroot-external/board/rpi4_32/kernel_defconfig +++ /dev/null @@ -1,8 +0,0 @@ -CONFIG_LOCALVERSION="" -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_KERNEL_LZ4=y -CONFIG_DEFAULT_HOSTNAME="localhost" -CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y -CONFIG_CMDLINE="" -CONFIG_NET_SCH_DEFAULT=y -CONFIG_NET_SCH_FQ_CODEL=y diff --git a/buildroot-external/board/rpi4_32/post-build.sh b/buildroot-external/board/rpi4_32/post-build.sh deleted file mode 100755 index 33e481b..0000000 --- a/buildroot-external/board/rpi4_32/post-build.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -# create VERSION file -echo "VERSION=${PRODUCT_VERSION}" >"${TARGET_DIR}/VERSION" -echo "PRODUCT=${PRODUCT}" >>"${TARGET_DIR}/VERSION" -echo "PLATFORM=rpi4-32" >>"${TARGET_DIR}/VERSION" - -# link VERSION in /boot on rootfs -mkdir -p "${TARGET_DIR}/boot" -ln -sf ../VERSION "${TARGET_DIR}/boot/VERSION" - -# remove /etc/dbus-1/system.d/pulseaudio-system.conf -rm -f "${TARGET_DIR}/etc/dbus-1/system.d/pulseaudio-system.conf" - -# remove /etc/init.d/S40xorg as not needed -rm -f "${TARGET_DIR}/etc/init.d/S40xorg" diff --git a/buildroot-external/board/rpi4_32/post-image.sh b/buildroot-external/board/rpi4_32/post-image.sh deleted file mode 100755 index 9e450c7..0000000 --- a/buildroot-external/board/rpi4_32/post-image.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -BOARD_DIR="$(dirname "$0")" -BOARD_NAME="$(basename "${BOARD_DIR}")" - -# Use our own cmdline.txt+config.txt -cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/cmdline.txt" "${BINARIES_DIR}/" -cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/config.txt" "${BINARIES_DIR}/" -cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/bootEnv.txt" "${BINARIES_DIR}/" - -# VERSION File -cp "${TARGET_DIR}/boot/VERSION" "${BINARIES_DIR}" - -# create *.img file using genimage -support/scripts/genimage.sh -c "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/genimage.cfg" - -exit $? diff --git a/buildroot-external/board/rpi4_32/uboot-patches b/buildroot-external/board/rpi4_32/uboot-patches deleted file mode 120000 index bf535e8..0000000 --- a/buildroot-external/board/rpi4_32/uboot-patches +++ /dev/null @@ -1 +0,0 @@ -../rpi4/uboot-patches \ No newline at end of file diff --git a/buildroot-external/board/rpi4_32/uboot_defconfig b/buildroot-external/board/rpi4_32/uboot_defconfig deleted file mode 100644 index 7778531..0000000 --- a/buildroot-external/board/rpi4_32/uboot_defconfig +++ /dev/null @@ -1,96 +0,0 @@ -CONFIG_ARM=y -CONFIG_ARCH_BCM283X=y -CONFIG_SYS_TEXT_BASE=0x00008000 -CONFIG_TARGET_RPI_4_32B=y -CONFIG_SYS_MALLOC_F_LEN=0x2000 -CONFIG_ENV_SIZE=0x4000 -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_DISTRO_DEFAULTS=y -# CONFIG_EXPERT is not set -CONFIG_OF_BOARD_SETUP=y -CONFIG_BOOTDELAY=-2 -CONFIG_AUTOBOOT_KEYED=y -CONFIG_AUTOBOOT_PROMPT="Hit to stop autoboot in %2ds\n" -CONFIG_AUTOBOOT_DELAY_STR="\x18" -CONFIG_USE_PREBOOT=y -CONFIG_PREBOOT="pci enum; usb start;" -CONFIG_SILENT_CONSOLE=y -CONFIG_SILENT_U_BOOT_ONLY=y -# CONFIG_DISPLAY_CPUINFO is not set -# CONFIG_DISPLAY_BOARDINFO is not set -CONFIG_MISC_INIT_R=y -CONFIG_SYS_PROMPT="U-Boot> " -CONFIG_CMD_DFU=y -CONFIG_CMD_GPIO=y -CONFIG_CMD_MMC=y -CONFIG_CMD_PCI=y -CONFIG_CMD_USB=y -CONFIG_CMD_CACHE=y -CONFIG_CMD_TIME=y -CONFIG_CMD_PMIC=y -CONFIG_CMD_REGULATOR=y -CONFIG_CMD_FS_UUID=y -# CONFIG_ISO_PARTITION is not set -# CONFIG_EFI_PARTITION is not set -CONFIG_OF_BOARD=y -CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" -CONFIG_SYS_RELOC_GD_ENV_ADDR=y -CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y -CONFIG_VERSION_VARIABLE=y -CONFIG_DM_DMA=y -CONFIG_REGMAP=y -CONFIG_SYSCON=y -CONFIG_CLK=y -CONFIG_DFU_MMC=y -CONFIG_MISC=y -CONFIG_DM_MMC=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_SDMA=y -CONFIG_MMC_SDHCI_BCM2835=y -CONFIG_DM_ETH=y -CONFIG_BCMGENET=y -CONFIG_PCI=y -CONFIG_DM_PCI=y -CONFIG_PCI_BRCMSTB=y -CONFIG_PINCTRL=y -# CONFIG_PINCTRL_GENERIC is not set -CONFIG_DM_PMIC=y -CONFIG_DM_REGULATOR=y -CONFIG_DM_REGULATOR_FIXED=y -CONFIG_SPL_DM_REGULATOR_FIXED=y -CONFIG_RAM=y -CONFIG_DM_RESET=y -CONFIG_DM_RNG=y -CONFIG_RNG_IPROC200=y -# CONFIG_REQUIRE_SERIAL_CONSOLE is not set -CONFIG_NULLDEV_SERIAL=y -CONFIG_USB=y -CONFIG_DM_USB=y -CONFIG_DM_USB_GADGET=y -CONFIG_USB_XHCI_HCD=y -CONFIG_USB_XHCI_PCI=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_GENERIC=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_KEYBOARD=y -CONFIG_USB_KEYBOARD_FN_KEYS=y -CONFIG_USB_GADGET=y -CONFIG_USB_GADGET_MANUFACTURER="FSL" -CONFIG_USB_GADGET_VENDOR_NUM=0x0525 -CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 -CONFIG_USB_GADGET_DWC2_OTG=y -CONFIG_USB_GADGET_DOWNLOAD=y -CONFIG_USB_FUNCTION_MASS_STORAGE=y -CONFIG_USB_HOST_ETHER=y -CONFIG_DM_VIDEO=y -# CONFIG_VIDEO_BPP8 is not set -# CONFIG_VIDEO_BPP16 is not set -CONFIG_SYS_WHITE_ON_BLACK=y -CONFIG_CONSOLE_SCROLL_LINES=10 -CONFIG_PHYS_TO_BUS=y -CONFIG_ADDR_MAP=y -CONFIG_SYS_NUM_ADDR_MAP=2 -CONFIG_CMD_DHRYSTONE=y -CONFIG_ERRNO_STR=y -CONFIG_OF_LIBFDT_OVERLAY=y -# CONFIG_EFI_LOADER is not set diff --git a/buildroot-external/board/rpi4_32/boot.cmd b/buildroot-external/board/rpi5/boot.cmd similarity index 74% rename from buildroot-external/board/rpi4_32/boot.cmd rename to buildroot-external/board/rpi5/boot.cmd index 7da8149..18837db 100644 --- a/buildroot-external/board/rpi4_32/boot.cmd +++ b/buildroot-external/board/rpi5/boot.cmd @@ -6,6 +6,7 @@ setenv loglevel "0" setenv bootfs 1 setenv kernel_img "thinroot-Image" setenv initrd "thinroot-initrd" +setenv usbstoragequirks "174c:55aa:u,2109:0715:u,152d:0578:u,152d:0579:u,152d:1561:u,174c:0829:u,14b0:0206:u,174c:55aa:u" # output where we are booting from itest.b ${devnum} == 0 && echo "U-boot loaded from SD" @@ -23,7 +24,7 @@ fdt get value bootargs /chosen bootargs # set bootargs setenv rootfs_str "/dev/ram0" -setenv bootargs "dwc_otg.lpm_enable=0 sdhci_bcm2708.enable_llm=0 console=${console} kgdboc=${console} scandelay=5 root=${rootfs_str} ro noswap rootfstype=ext4 elevator=deadline fsck.repair=yes lapic rootwait rootdelay=5 consoleblank=120 logo.nologo quiet loglevel=${loglevel} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${bootargs}" +setenv bootargs "dwc_otg.lpm_enable=0 sdhci_bcm2708.enable_llm=0 console=${console} root=${rootfs_str} ro noswap rootfstype=ext4 fsck.repair=yes rootwait rootdelay=5 consoleblank=120 logo.nologo quiet loglevel=${loglevel} init_on_alloc=1 init_on_free=1 slab_nomerge iomem=relaxed net.ifnames=0 usb-storage.quirks=${usbstoragequirks} ${extraargs} ${bootargs}" if env exists bootserver; then echo "==== NETWORK BOOT ====" @@ -50,7 +51,7 @@ else fi # boot kernel -bootz ${kernel_addr_r} ${initrd_addr_r} ${fdt_addr} +booti ${kernel_addr_r} ${initrd_addr_r} ${fdt_addr} echo "Boot failed, resetting..." reset diff --git a/buildroot-external/board/rpi5/bootEnv.txt b/buildroot-external/board/rpi5/bootEnv.txt new file mode 100644 index 0000000..a4011e6 --- /dev/null +++ b/buildroot-external/board/rpi5/bootEnv.txt @@ -0,0 +1,4 @@ +#bootserver=192.168.74.30 +#kernel_img=thinroot/thinroot-rpi5-kernel.img +#initrd=thinroot/thinroot-rpi5.img +#extraargs=BASE_PATH=http://192.168.74.30/thinroot diff --git a/buildroot-external/board/rpi4_32/cmdline.txt b/buildroot-external/board/rpi5/cmdline.txt similarity index 100% rename from buildroot-external/board/rpi4_32/cmdline.txt rename to buildroot-external/board/rpi5/cmdline.txt diff --git a/buildroot-external/board/rpi4_32/config.txt b/buildroot-external/board/rpi5/config.txt similarity index 53% rename from buildroot-external/board/rpi4_32/config.txt rename to buildroot-external/board/rpi5/config.txt index 7540ebd..e0fad56 100644 --- a/buildroot-external/board/rpi4_32/config.txt +++ b/buildroot-external/board/rpi5/config.txt @@ -1,15 +1,17 @@ # enable aarch64 bit support -#arm_64bit=1 +arm_64bit=1 -# make sure to use less memory for the GPU and -# all total memory available -gpu_mem=128 -#dtoverlay=vc4-kms-v3d +# enable vc4/v3d GPU dtoverlay +dtoverlay=vc4-kms-v3d # Disable overscan assuming the display supports displaying the full resolution # If the text shown on the screen disappears off the edge, comment this out disable_overscan=1 +# Enable DRM VC4 V3D driver +dtoverlay=vc4-kms-v3d +max_framebuffers=1 + # enable i2c and spi dtparam=i2c_arm=on dtparam=i2c1=on @@ -18,18 +20,10 @@ dtparam=spi=on # enable the UART #enable_uart=1 -# make sure the uart is running at 48MHz -#init_uart_clock=48000000 - -# switch the bluetooth UART to the miniuart -# for basic bluetooth support and fix core_freq -#dtoverlay=miniuart-bt -#core_freq=250 - # for disabling bluetooth alltogether # you can uncomment the following two lines -dtoverlay=disable-bt -dtparam=uart1=off +#dtoverlay=disable-bt +#dtparam=uart1=off # disable the splash screen disable_splash=1 @@ -43,23 +37,6 @@ dtparam=watchdog=on # start with heartbeat on PWR led and mmc0 on ACT led dtparam=pwr_led_trigger=timer,act_led_trigger=mmc0 -# special device tree options for Compute Module 4 -[cm4] -dtoverlay=dwc2 -dtparam=i2c_vc=on -dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi - -# reset to apply to all platforms -[all] - -# start device tree at 0x2008000 to have -# space for the u-boot boot script -device_tree_address=0x2008000 - -# use fixed names for start.elf/fixup.dat -start_file=start.elf -fixup_file=fixup.dat - # lets u-boot take over the boot process kernel=u-boot.bin diff --git a/buildroot-external/board/rpi4_32/genimage.cfg b/buildroot-external/board/rpi5/genimage.cfg similarity index 67% rename from buildroot-external/board/rpi4_32/genimage.cfg rename to buildroot-external/board/rpi5/genimage.cfg index 3e97f6a..cb85e21 100644 --- a/buildroot-external/board/rpi4_32/genimage.cfg +++ b/buildroot-external/board/rpi5/genimage.cfg @@ -4,29 +4,25 @@ image boot.vfat { files = { "VERSION", - "bcm2711-rpi-4-b.dtb", - "bcm2711-rpi-400.dtb", - "bcm2711-rpi-cm4.dtb", + "bcm2712-rpi-5-b.dtb", + "bcm2712d0-rpi-5-b.dtb", + "bcm2712-rpi-500.dtb", + "bcm2712-rpi-cm5-cm4io.dtb", + "bcm2712-rpi-cm5-cm5io.dtb", + "bcm2712-rpi-cm5l-cm4io.dtb", + "bcm2712-rpi-cm5l-cm5io.dtb", "cmdline.txt", "config.txt", "bootEnv.txt", - "rpi-firmware/overlays", + "overlays", "rpi-eeprom/pieeprom.upd", "rpi-eeprom/pieeprom.sig", "u-boot.bin", "boot.scr" } - file fixup.dat { - image = "rpi-firmware/fixup4.dat" - } - - file start.elf { - image = "rpi-firmware/start4.elf" - } - file thinroot-Image { - image = "zImage" + image = "Image" } file thinroot-initrd { diff --git a/buildroot-external/board/rpi4_32/kernel-patches b/buildroot-external/board/rpi5/kernel-patches similarity index 100% rename from buildroot-external/board/rpi4_32/kernel-patches rename to buildroot-external/board/rpi5/kernel-patches diff --git a/buildroot-external/board/rpi5/kernel.config b/buildroot-external/board/rpi5/kernel.config new file mode 100644 index 0000000..3329a01 --- /dev/null +++ b/buildroot-external/board/rpi5/kernel.config @@ -0,0 +1,37 @@ +# disable old framebuffer for video display to work +# CONFIG_FB_BCM2708 is not set + +# disable video camera support +# CONFIG_VIDEO_BCM2835_UNICAM is not set + +# disable touchscreen +# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set + +# disable simple framebuffer support +# CONFIG_FB_SIMPLE is not set + +# enable mmc support +CONFIG_MMC_BCM2835=y + +# use pl011 serial as a kernel module and +# disable serial console on amba +CONFIG_SERIAL_AMBA_PL011=m +# CONFIG_SERIAL_AMBA_PL011_CONSOLE is not set + +# nvme support +CONFIG_NVME_CORE=y +CONFIG_BLK_DEV_NVME=y + +# disable backlight support +# CONFIG_BACKLIGHT_RPI is not set + +# enable DRM +CONFIG_DRM=y +CONFIG_DRM_V3D=y +CONFIG_DRM_VC4=y +# CONFIG_DRM_SIMPLEDRM is not set + +# enable SND +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SOC=y diff --git a/buildroot-external/board/rpi5/post-build.sh b/buildroot-external/board/rpi5/post-build.sh new file mode 100755 index 0000000..aacc962 --- /dev/null +++ b/buildroot-external/board/rpi5/post-build.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +# Stop on error +set -e + +# create VERSION file +echo "VERSION=${PRODUCT_VERSION}" >"${TARGET_DIR}/VERSION" +echo "PRODUCT=${PRODUCT}" >>"${TARGET_DIR}/VERSION" +echo "PLATFORM=rpi5" >>"${TARGET_DIR}/VERSION" + +# link VERSION in /boot on rootfs +mkdir -p "${TARGET_DIR}/boot" +ln -sf ../VERSION "${TARGET_DIR}/boot/VERSION" + +# remove /etc/dbus-1/system.d/pulseaudio-system.conf +rm -f "${TARGET_DIR}/etc/dbus-1/system.d/pulseaudio-system.conf" +rm -f "${TARGET_DIR}/usr/share/dbus-1/system.d/pulseaudio-system.conf" + +# remove /etc/init.d/S40xorg as not needed +rm -f "${TARGET_DIR}/etc/init.d/S40xorg" + +# remove /etc/X11/xorg.conf.d/20-intel.conf as it will not work on rpi +rm -f "${TARGET_DIR}/etc/X11/xorg.conf.d/20-intel.conf" + +# remove /lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf as it is systemd only +rm -f "${TARGET_DIR}/lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf" + +# remove unnecessary /etc/init.d/fuse3 +rm -f "${TARGET_DIR}/etc/init.d/fuse3" + +# remove unnecessary /usr/share/clc +rm -rf "${TARGET_DIR}/usr/share/clc" diff --git a/buildroot-external/board/rpi5/post-image.sh b/buildroot-external/board/rpi5/post-image.sh new file mode 100755 index 0000000..be8136f --- /dev/null +++ b/buildroot-external/board/rpi5/post-image.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# Stop on error +set -e + +BOARD_DIR="$(dirname "$0")" +#BOARD_NAME="$(basename "${BOARD_DIR}")" + +# Use our own cmdline.txt+config.txt +cp "${BOARD_DIR}/cmdline.txt" "${BINARIES_DIR}/" +cp "${BOARD_DIR}/config.txt" "${BINARIES_DIR}/" +cp "${BOARD_DIR}/bootEnv.txt" "${BINARIES_DIR}/" + +# README needs to be present, otherwise os_prefix is not +# prepended implicitly to the overlays' path, see: +# https://www.raspberrypi.com/documentation/computers/config_txt.html#overlay_prefix +touch "${BINARIES_DIR}/overlays/README" 2>/dev/null || true + +# VERSION File +cp "${TARGET_DIR}/boot/VERSION" "${BINARIES_DIR}" + +# create *.img file using genimage +support/scripts/genimage.sh -c "${BOARD_DIR}/genimage.cfg" diff --git a/buildroot-external/board/rpi4_32/post-release.sh b/buildroot-external/board/rpi5/post-release.sh similarity index 91% rename from buildroot-external/board/rpi4_32/post-release.sh rename to buildroot-external/board/rpi5/post-release.sh index fce56f1..d462201 100755 --- a/buildroot-external/board/rpi4_32/post-release.sh +++ b/buildroot-external/board/rpi5/post-release.sh @@ -11,8 +11,8 @@ PRODUCT_VERSION=${3} # change into release dir cd ./release -# copy the zImage and create checksum -cp -a "../build-${PRODUCT}/images/zImage" "thinroot-${PRODUCT_VERSION}-${PRODUCT}-kernel.img" +# copy the bzImage and create checksum +cp -a "../build-${PRODUCT}/images/Image" "thinroot-${PRODUCT_VERSION}-${PRODUCT}-kernel.img" sha256sum "thinroot-${PRODUCT_VERSION}-${PRODUCT}-kernel.img" >"thinroot-${PRODUCT_VERSION}-${PRODUCT}-kernel.img.sha256" cp -a "../build-${PRODUCT}/images/rootfs.cpio.uboot" "thinroot-${PRODUCT_VERSION}-${PRODUCT}.img" sha256sum "thinroot-${PRODUCT_VERSION}-${PRODUCT}.img" >"thinroot-${PRODUCT_VERSION}-${PRODUCT}.img.sha256" diff --git a/buildroot-external/board/rpi5/uboot.config b/buildroot-external/board/rpi5/uboot.config new file mode 100644 index 0000000..629cefd --- /dev/null +++ b/buildroot-external/board/rpi5/uboot.config @@ -0,0 +1,13 @@ +CONFIG_CMD_NVME=y + +CONFIG_USB_STORAGE=y +CONFIG_USB_FUNCTION_MASS_STORAGE=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_GENERIC=y +CONFIG_USB_OHCI_HCD=y + +CONFIG_MMC_SDHCI_BCMSTB=y +CONFIG_SERIAL_PRESENT=y + +CONFIG_NVME=y +CONFIG_NVME_PCI=y diff --git a/buildroot-external/board/rpi4_32/users_table.txt b/buildroot-external/board/rpi5/users_table.txt similarity index 100% rename from buildroot-external/board/rpi4_32/users_table.txt rename to buildroot-external/board/rpi5/users_table.txt diff --git a/buildroot-external/board/tinkerboard/boot.cmd b/buildroot-external/board/tinkerboard/boot.cmd index 16ae555..b375c86 100644 --- a/buildroot-external/board/tinkerboard/boot.cmd +++ b/buildroot-external/board/tinkerboard/boot.cmd @@ -17,6 +17,9 @@ if test -e ${devtype} ${devnum}:${bootfs} bootEnv.txt; then env import -t ${load_addr} ${filesize} fi +# load kernel cmdline from /boot/cmdline.txt +fileenv ${devtype} ${devnum}:${bootfs} ${load_addr} cmdline.txt cmdline + # Load device tree if test "$devnum" = "0"; then setenv fdtfile "rk3288-tinker-s.dtb" @@ -43,7 +46,7 @@ fi # set bootargs setenv rootfs_str "/dev/ram0" -setenv bootargs "console=${console} root=${rootfs_str} ro rootfstype=ext4 fsck.repair=yes rootwait rootdelay=5 consoleblank=120 quiet loglevel=${loglevel} init_on_alloc=1 init_on_free=1 slab_nomerge iomem=relaxed net.ifnames=0 usb-storage.quirks=${usbstoragequirks} ${extraargs} ${bootargs}" +setenv bootargs "console=${console} root=${rootfs_str} ro rootfstype=ext4 fsck.repair=yes rootwait rootdelay=5 consoleblank=120 quiet loglevel=${loglevel} init_on_alloc=1 init_on_free=1 slab_nomerge iomem=relaxed net.ifnames=0 usb-storage.quirks=${usbstoragequirks} ${cmdline} ${extraargs} ${bootargs}" if env exists bootserver; then echo "==== NETWORK BOOT ====" diff --git a/buildroot-external/board/tinkerboard/cmdline.txt b/buildroot-external/board/tinkerboard/cmdline.txt new file mode 100644 index 0000000..e69de29 diff --git a/buildroot-external/board/tinkerboard/genimage.cfg b/buildroot-external/board/tinkerboard/genimage.cfg index 97282d6..b54c234 100644 --- a/buildroot-external/board/tinkerboard/genimage.cfg +++ b/buildroot-external/board/tinkerboard/genimage.cfg @@ -4,6 +4,7 @@ image boot.vfat { files = { "VERSION", + "cmdline.txt", "rk3288-tinker.dtb", "rk3288-tinker-s.dtb", "boot.scr", diff --git a/buildroot-external/board/tinkerboard/kernel-patches/0001-Revert-ARM-dts-rockchip-use-DMA-channels-for-UARTs-f.patch b/buildroot-external/board/tinkerboard/kernel-patches/0001-Revert-ARM-dts-rockchip-use-DMA-channels-for-UARTs-f.patch index 346bd85..0abc425 100644 --- a/buildroot-external/board/tinkerboard/kernel-patches/0001-Revert-ARM-dts-rockchip-use-DMA-channels-for-UARTs-f.patch +++ b/buildroot-external/board/tinkerboard/kernel-patches/0001-Revert-ARM-dts-rockchip-use-DMA-channels-for-UARTs-f.patch @@ -1,5 +1,4 @@ -From 3553f8a938dbb498aa1846a37ea343b7f53739da Mon Sep 17 00:00:00 2001 -Message-Id: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> +From b4d676729c5bee4b9adb85362f6f2e32f833b6c2 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Wed, 17 Feb 2021 19:55:41 +0100 Subject: [PATCH] Revert "ARM: dts: rockchip: use DMA channels for UARTs for @@ -7,13 +6,13 @@ Subject: [PATCH] Revert "ARM: dts: rockchip: use DMA channels for UARTs for This reverts commit 3425fe335c29310f6628faf9a7947d07f32d8962. --- - arch/arm/boot/dts/rk3288.dtsi | 8 -------- + arch/arm/boot/dts/rockchip/rk3288.dtsi | 8 -------- 1 file changed, 8 deletions(-) -diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi -index 487b0e03d4b4..1569b1824c89 100644 ---- a/arch/arm/boot/dts/rk3288.dtsi -+++ b/arch/arm/boot/dts/rk3288.dtsi +diff --git a/arch/arm/boot/dts/rockchip/rk3288.dtsi b/arch/arm/boot/dts/rockchip/rk3288.dtsi +index cb9cdaddffd4..51f1273d6beb 100644 +--- a/arch/arm/boot/dts/rockchip/rk3288.dtsi ++++ b/arch/arm/boot/dts/rockchip/rk3288.dtsi @@ -378,8 +378,6 @@ uart0: serial@ff180000 { reg-io-width = <4>; clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>; @@ -50,6 +49,3 @@ index 487b0e03d4b4..1569b1824c89 100644 pinctrl-names = "default"; pinctrl-0 = <&uart4_xfer>; status = "disabled"; --- -2.39.1 - diff --git a/buildroot-external/board/tinkerboard/kernel-patches/0002-ARM-DTS-rk3288-tinker-Defining-the-SPI-interface.patch b/buildroot-external/board/tinkerboard/kernel-patches/0002-ARM-DTS-rk3288-tinker-Defining-the-SPI-interface.patch index c5c9bae..46a9c62 100644 --- a/buildroot-external/board/tinkerboard/kernel-patches/0002-ARM-DTS-rk3288-tinker-Defining-the-SPI-interface.patch +++ b/buildroot-external/board/tinkerboard/kernel-patches/0002-ARM-DTS-rk3288-tinker-Defining-the-SPI-interface.patch @@ -1,7 +1,4 @@ -From 695638c05c0bb6f7bcc65e172dd132b3aa280b47 Mon Sep 17 00:00:00 2001 -Message-Id: <695638c05c0bb6f7bcc65e172dd132b3aa280b47.1676488094.git.stefan@agner.ch> -In-Reply-To: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> -References: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> +From 02c7d9bb23f497993d52f5a41341ed955e6a2745 Mon Sep 17 00:00:00 2001 From: "Miouyouyou (Myy)" Date: Mon, 5 Nov 2018 22:15:14 +0100 Subject: [PATCH] ARM: DTS: rk3288-tinker: Defining the SPI interface @@ -17,13 +14,13 @@ Signed-off-by: Miouyouyou (Myy) [move change to rk3288-tinker.dtsi] Signed-off-by: Stefan Agner --- - arch/arm/boot/dts/rk3288-tinker.dtsi | 19 +++++++++++++++++++ + arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) -diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi +diff --git a/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi b/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi index 09618bb7d872..30430d2e64b9 100644 ---- a/arch/arm/boot/dts/rk3288-tinker.dtsi -+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi +--- a/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi ++++ b/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi @@ -483,6 +483,25 @@ &sdio0 { status = "okay"; }; @@ -50,6 +47,3 @@ index 09618bb7d872..30430d2e64b9 100644 &tsadc { rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */ rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */ --- -2.39.1 - diff --git a/buildroot-external/board/tinkerboard/kernel-patches/0003-ARM-dts-rockchip-enable-I2C1-4-on-rk3288-tinker.patch b/buildroot-external/board/tinkerboard/kernel-patches/0003-ARM-dts-rockchip-enable-I2C1-4-on-rk3288-tinker.patch index 1abdb06..1a2a1ba 100644 --- a/buildroot-external/board/tinkerboard/kernel-patches/0003-ARM-dts-rockchip-enable-I2C1-4-on-rk3288-tinker.patch +++ b/buildroot-external/board/tinkerboard/kernel-patches/0003-ARM-dts-rockchip-enable-I2C1-4-on-rk3288-tinker.patch @@ -1,7 +1,4 @@ -From d04122215cb56b57458e05b475e41744b8126533 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> -References: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> +From bf7869033cf3caa50912cbdfa548428a6571c104 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Fri, 4 Sep 2020 21:57:55 +0200 Subject: [PATCH] ARM: dts: rockchip: enable I2C1/4 on rk3288-tinker @@ -10,13 +7,13 @@ Enable I2C devices which are accessible via 40-pin header. Signed-off-by: Stefan Agner --- - arch/arm/boot/dts/rk3288-tinker.dtsi | 8 ++++++++ + arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+) -diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi +diff --git a/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi b/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi index 30430d2e64b9..395afc2b2283 100644 ---- a/arch/arm/boot/dts/rk3288-tinker.dtsi -+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi +--- a/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi ++++ b/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi @@ -342,10 +342,18 @@ regulator-state-mem { }; }; @@ -36,6 +33,3 @@ index 30430d2e64b9..395afc2b2283 100644 &i2c5 { status = "okay"; }; --- -2.39.1 - diff --git a/buildroot-external/board/tinkerboard/kernel-patches/0004-RK3288-DTSI-rk3288.dtsi-Add-missing-SPI2-pinctrl.patch b/buildroot-external/board/tinkerboard/kernel-patches/0004-RK3288-DTSI-rk3288.dtsi-Add-missing-SPI2-pinctrl.patch index 67f5356..6a8ce20 100644 --- a/buildroot-external/board/tinkerboard/kernel-patches/0004-RK3288-DTSI-rk3288.dtsi-Add-missing-SPI2-pinctrl.patch +++ b/buildroot-external/board/tinkerboard/kernel-patches/0004-RK3288-DTSI-rk3288.dtsi-Add-missing-SPI2-pinctrl.patch @@ -1,7 +1,4 @@ -From 7d37754f29c379c5066c6abf38c8d01d654b1613 Mon Sep 17 00:00:00 2001 -Message-Id: <7d37754f29c379c5066c6abf38c8d01d654b1613.1676488094.git.stefan@agner.ch> -In-Reply-To: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> -References: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> +From a0ef6a86e96920a9cf703d8c65d0126494037d37 Mon Sep 17 00:00:00 2001 From: Myy Miouyouyou Date: Thu, 19 Oct 2017 21:24:47 +0200 Subject: [PATCH] RK3288: DTSI: rk3288.dtsi: Add missing SPI2 pinctrl @@ -13,13 +10,13 @@ This patch is taken from the patches provided by the ARMbian team. Signed-off-by: Myy Miouyouyou --- - arch/arm/boot/dts/rk3288.dtsi | 2 +- + arch/arm/boot/dts/rockchip/rk3288.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi -index 1569b1824c89..478fd1bb85df 100644 ---- a/arch/arm/boot/dts/rk3288.dtsi -+++ b/arch/arm/boot/dts/rk3288.dtsi +diff --git a/arch/arm/boot/dts/rockchip/rk3288.dtsi b/arch/arm/boot/dts/rockchip/rk3288.dtsi +index 51f1273d6beb..d8663928bfe2 100644 +--- a/arch/arm/boot/dts/rockchip/rk3288.dtsi ++++ b/arch/arm/boot/dts/rockchip/rk3288.dtsi @@ -311,7 +311,7 @@ spi2: spi@ff130000 { dma-names = "tx", "rx"; interrupts = ; @@ -29,6 +26,3 @@ index 1569b1824c89..478fd1bb85df 100644 reg = <0x0 0xff130000 0x0 0x1000>; #address-cells = <1>; #size-cells = <0>; --- -2.39.1 - diff --git a/buildroot-external/board/tinkerboard/kernel-patches/0005-ARM-DTSI-rk3288-tinker-Improving-the-CPU-max-voltage.patch b/buildroot-external/board/tinkerboard/kernel-patches/0005-ARM-DTSI-rk3288-tinker-Improving-the-CPU-max-voltage.patch index 65fef97..44ee8a0 100644 --- a/buildroot-external/board/tinkerboard/kernel-patches/0005-ARM-DTSI-rk3288-tinker-Improving-the-CPU-max-voltage.patch +++ b/buildroot-external/board/tinkerboard/kernel-patches/0005-ARM-DTSI-rk3288-tinker-Improving-the-CPU-max-voltage.patch @@ -1,7 +1,4 @@ -From 05fde1d1dbbe7805a58a8c445b8fb19e0df59826 Mon Sep 17 00:00:00 2001 -Message-Id: <05fde1d1dbbe7805a58a8c445b8fb19e0df59826.1676488094.git.stefan@agner.ch> -In-Reply-To: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> -References: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> +From e828e0fc2be98e5ad20c93981681505fc97b063b Mon Sep 17 00:00:00 2001 From: "Miouyouyou (Myy)" Date: Mon, 5 Nov 2018 20:16:05 +0100 Subject: [PATCH] ARM: DTSI: rk3288-tinker: Improving the CPU max voltage @@ -10,13 +7,13 @@ Taken from the various patches provided by @TonyMac32 . Signed-off-by: Miouyouyou (Myy) --- - arch/arm/boot/dts/rk3288-tinker.dtsi | 2 +- + arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi +diff --git a/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi b/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi index 395afc2b2283..c7e79e594720 100644 ---- a/arch/arm/boot/dts/rk3288-tinker.dtsi -+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi +--- a/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi ++++ b/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi @@ -184,7 +184,7 @@ vdd_cpu: DCDC_REG1 { regulator-always-on; regulator-boot-on; @@ -26,6 +23,3 @@ index 395afc2b2283..c7e79e594720 100644 regulator-name = "vdd_arm"; regulator-ramp-delay = <6000>; regulator-state-mem { --- -2.39.1 - diff --git a/buildroot-external/board/tinkerboard/kernel-patches/0006-drivers-mmc-dw-mci-rockchip-Handle-ASUS-Tinkerboard-.patch b/buildroot-external/board/tinkerboard/kernel-patches/0006-drivers-mmc-dw-mci-rockchip-Handle-ASUS-Tinkerboard-.patch index bb77274..65116b0 100644 --- a/buildroot-external/board/tinkerboard/kernel-patches/0006-drivers-mmc-dw-mci-rockchip-Handle-ASUS-Tinkerboard-.patch +++ b/buildroot-external/board/tinkerboard/kernel-patches/0006-drivers-mmc-dw-mci-rockchip-Handle-ASUS-Tinkerboard-.patch @@ -1,7 +1,4 @@ -From 940d61e1e04929166d5a2bcbc1934aa931952ca5 Mon Sep 17 00:00:00 2001 -Message-Id: <940d61e1e04929166d5a2bcbc1934aa931952ca5.1676488094.git.stefan@agner.ch> -In-Reply-To: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> -References: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> +From ad1ffd6be5f54a0871e3c303602548687dfe0ffc Mon Sep 17 00:00:00 2001 From: Myy Miouyouyou Date: Sun, 7 Jan 2018 01:52:44 +0100 Subject: [PATCH] drivers: mmc: dw-mci-rockchip: Handle ASUS Tinkerboard reboot @@ -24,7 +21,7 @@ Signed-off-by: Myy Miouyouyou 1 file changed, 66 insertions(+) diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c -index 2a99f15f527f..181718374429 100644 +index b07190ba4b7a..0badaa1b404e 100644 --- a/drivers/mmc/host/dw_mmc-rockchip.c +++ b/drivers/mmc/host/dw_mmc-rockchip.c @@ -12,6 +12,11 @@ @@ -114,6 +111,3 @@ index 2a99f15f527f..181718374429 100644 return 0; } --- -2.39.1 - diff --git a/buildroot-external/board/tinkerboard/kernel-patches/0007-ARM-dts-rockchip-Add-Bluetooth-to-rk3288-tinker.patch b/buildroot-external/board/tinkerboard/kernel-patches/0007-ARM-dts-rockchip-Add-Bluetooth-to-rk3288-tinker.patch index 67abf46..b943705 100644 --- a/buildroot-external/board/tinkerboard/kernel-patches/0007-ARM-dts-rockchip-Add-Bluetooth-to-rk3288-tinker.patch +++ b/buildroot-external/board/tinkerboard/kernel-patches/0007-ARM-dts-rockchip-Add-Bluetooth-to-rk3288-tinker.patch @@ -1,7 +1,4 @@ -From 479e2acb95c09b15382b3766391294790ebd200b Mon Sep 17 00:00:00 2001 -Message-Id: <479e2acb95c09b15382b3766391294790ebd200b.1676488094.git.stefan@agner.ch> -In-Reply-To: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> -References: <3553f8a938dbb498aa1846a37ea343b7f53739da.1676488094.git.stefan@agner.ch> +From 4e6c3d013c847f199664a3075934f5ca52d8cba4 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Tue, 10 May 2022 22:57:26 +0200 Subject: [PATCH] ARM: dts: rockchip: Add Bluetooth to rk3288-tinker @@ -11,13 +8,13 @@ for Realtek rtl8723bs Bluetooth device. Signed-off-by: Stefan Agner --- - arch/arm/boot/dts/rk3288-tinker.dtsi | 26 ++++++++++++++++++++++++++ + arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) -diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi +diff --git a/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi b/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi index c7e79e594720..5d261fae6e72 100644 ---- a/arch/arm/boot/dts/rk3288-tinker.dtsi -+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi +--- a/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi ++++ b/arch/arm/boot/dts/rockchip/rk3288-tinker.dtsi @@ -386,6 +386,20 @@ bl_en: bl-en { }; }; @@ -58,6 +55,3 @@ index c7e79e594720..5d261fae6e72 100644 }; &uart1 { --- -2.39.1 - diff --git a/buildroot-external/board/tinkerboard/kernel-patches/0008-usb-audio-add-ASUS-TinkerBoard-s-ALC4040.patch b/buildroot-external/board/tinkerboard/kernel-patches/0008-usb-audio-add-ASUS-TinkerBoard-s-ALC4040.patch new file mode 100644 index 0000000..aefcdf1 --- /dev/null +++ b/buildroot-external/board/tinkerboard/kernel-patches/0008-usb-audio-add-ASUS-TinkerBoard-s-ALC4040.patch @@ -0,0 +1,32 @@ +From f597ec583c262ed4c3264ddf661e22b503fb8a11 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= +Date: Wed, 10 Jan 2024 16:29:59 +0100 +Subject: [PATCH] usb-audio: add ASUS TinkerBoard's ALC4040 + +Converted to git-series patch from the original plain git diff file +buildroot-external/board/asus/tinker/patches/linux/3001_Tinkerboard-4.19-audio.patch + +Co-authored-by: Pascal Vizeli +--- + sound/usb/card.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/sound/usb/card.c b/sound/usb/card.c +index 1b2edc0fd2e9..3069ac5b6759 100644 +--- a/sound/usb/card.c ++++ b/sound/usb/card.c +@@ -521,6 +521,14 @@ static void usb_audio_make_shortname(struct usb_device *dev, + } + + strim(card->shortname); ++ ++ /* Tinker Board ALC4040 CODEC */ ++ ++ if(USB_ID_VENDOR(chip->usb_id) == 0x0bda && ++ USB_ID_PRODUCT(chip->usb_id) == 0x481a) { ++ strlcat(card->shortname, " OnBoard", sizeof(card->shortname)); ++ } ++ + } + + static void usb_audio_make_longname(struct usb_device *dev, diff --git a/buildroot-external/board/tinkerboard/kernel-patches/1013-ARM-DTS-rk3288-tinker-Enabling-SDIO-and-Wifi.patch b/buildroot-external/board/tinkerboard/kernel-patches/1013-ARM-DTS-rk3288-tinker-Enabling-SDIO-and-Wifi.patch deleted file mode 100644 index 18b6c9c..0000000 --- a/buildroot-external/board/tinkerboard/kernel-patches/1013-ARM-DTS-rk3288-tinker-Enabling-SDIO-and-Wifi.patch +++ /dev/null @@ -1,98 +0,0 @@ -From d5d5c53173c484a13cda62a537cbf75a5df4b0e4 Mon Sep 17 00:00:00 2001 -From: "Miouyouyou (Myy)" -Date: Mon, 5 Nov 2018 21:58:56 +0100 -Subject: [PATCH] ARM: DTS: rk3288-tinker: Enabling SDIO and Wifi - -Adding the appropriate nodes in order to exploit the WiFi capabilities -of the board. -Since these capabilities are provided through SDIO, and the SDIO -nodes were not defined, these were added too. - -These seems to depend on each other so they are added in one big -patch. - -Split if necessary. - -Signed-off-by: Miouyouyou (Myy) ---- - arch/arm/boot/dts/rk3288-tinker.dts | 62 +++++++++++++++++++++++++++++++++++++ - 1 file changed, 62 insertions(+) - -diff --git a/arch/arm/boot/dts/rk3288-tinker.dts b/arch/arm/boot/dts/rk3288-tinker.dts -index 1e43527aa..d4df13bed 100644 ---- a/arch/arm/boot/dts/rk3288-tinker.dts -+++ b/arch/arm/boot/dts/rk3288-tinker.dts -@@ -6,8 +6,70 @@ - /dts-v1/; - - #include "rk3288-tinker.dtsi" -+#include - - / { - model = "Rockchip RK3288 Asus Tinker Board"; - compatible = "asus,rk3288-tinker", "rockchip,rk3288"; -+ -+ /* This is essential to get SDIO devices working. -+ The Wifi depends on SDIO ! */ -+ sdio_pwrseq: sdio-pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ clocks = <&rk808 RK808_CLKOUT1>; -+ clock-names = "ext_clock"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&chip_enable_h>, <&wifi_enable_h>; -+ -+ /* -+ * On the module itself this is one of these (depending -+ * on the actual card populated): -+ * - SDIO_RESET_L_WL_REG_ON -+ * - PDN (power down when low) -+ */ -+ reset-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>, <&gpio4 27 GPIO_ACTIVE_LOW>; -+ }; -+ -+ wireless-wlan { -+ compatible = "wlan-platdata"; -+ rockchip,grf = <&grf>; -+ sdio_vref = <1800>; -+ status = "okay"; -+ wifi_chip_type = "8723bs"; -+ WIFI,host_wake_irq = <&gpio4 30 GPIO_ACTIVE_HIGH>; -+ }; -+}; -+ -+&io_domains { -+ wifi-supply = <&vcc_18>; -+}; -+ -+&pinctrl { -+ sdio-pwrseq { -+ wifi_enable_h: wifienable-h { -+ rockchip,pins = <4 28 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ -+ chip_enable_h: chip-enable-h { -+ rockchip,pins = <4 27 RK_FUNC_GPIO &pcfg_pull_none>; -+ }; -+ }; -+}; -+ -+&sdio0 { -+ bus-width = <4>; -+ cap-sd-highspeed; -+ cap-sdio-irq; -+ clock-frequency = <50000000>; -+ clock-freq-min-max = <200000 50000000>; -+ disable-wp; -+ keep-power-in-suspend; -+ mmc-pwrseq = <&sdio_pwrseq>; -+ non-removable; -+ num-slots = <1>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; -+ sd-uhs-sdr104; -+ status = "okay"; -+ supports-sdio; - }; --- -2.16.4 - diff --git a/buildroot-external/board/tinkerboard/kernel-patches/3000_DTS_rearrange_thermal_zones.patch b/buildroot-external/board/tinkerboard/kernel-patches/3000_DTS_rearrange_thermal_zones.patch deleted file mode 100644 index 0048203..0000000 --- a/buildroot-external/board/tinkerboard/kernel-patches/3000_DTS_rearrange_thermal_zones.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- a/arch/arm/boot/dts/rk3288.dtsi.orig 2022-04-08 00:04:12.060918630 +0200 -+++ b/arch/arm/boot/dts/rk3288.dtsi 2022-04-08 00:06:00.578306333 +0200 -@@ -456,13 +456,6 @@ - }; - - thermal-zones { -- reserve_thermal: reserve-thermal { -- polling-delay-passive = <1000>; /* milliseconds */ -- polling-delay = <5000>; /* milliseconds */ -- -- thermal-sensors = <&tsadc 0>; -- }; -- - cpu_thermal: cpu-thermal { - polling-delay-passive = <100>; /* milliseconds */ - polling-delay = <5000>; /* milliseconds */ -@@ -534,6 +527,13 @@ - }; - }; - }; -+ -+ reserve_thermal: reserve-thermal { -+ polling-delay-passive = <1000>; /* milliseconds */ -+ polling-delay = <5000>; /* milliseconds */ -+ -+ thermal-sensors = <&tsadc 0>; -+ }; - }; - - tsadc: tsadc@ff280000 { diff --git a/buildroot-external/board/tinkerboard/kernel-patches/3001_Tinkerboard-4.19-audio.patch b/buildroot-external/board/tinkerboard/kernel-patches/3001_Tinkerboard-4.19-audio.patch deleted file mode 100644 index f85f24f..0000000 --- a/buildroot-external/board/tinkerboard/kernel-patches/3001_Tinkerboard-4.19-audio.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/sound/usb/card.c b/sound/usb/card.c -index 2bfe4e80a..cea93aaf5 100644 ---- a/sound/usb/card.c -+++ b/sound/usb/card.c -@@ -382,6 +382,14 @@ static void usb_audio_make_shortname(struct usb_device *dev, - } - - strim(card->shortname); -+ -+ /* Tinker Board ALC4040 CODEC */ -+ -+ if(USB_ID_VENDOR(chip->usb_id) == 0x0bda && -+ USB_ID_PRODUCT(chip->usb_id) == 0x481a) { -+ strlcat(card->shortname, " OnBoard", sizeof(card->shortname)); -+ } -+ - } - - static void usb_audio_make_longname(struct usb_device *dev, diff --git a/buildroot-external/board/tinkerboard/kernel.config b/buildroot-external/board/tinkerboard/kernel.config new file mode 100644 index 0000000..3db88e5 --- /dev/null +++ b/buildroot-external/board/tinkerboard/kernel.config @@ -0,0 +1,20 @@ +CONFIG_KERNEL_LZ4=y +# CONFIG_KERNEL_GZIP is not set + +CONFIG_MFD_RK8XX=y +CONFIG_MFD_RK8XX_I2C=y +CONFIG_DW_DMAC_CORE=m +CONFIG_DW_DMAC=m + +# disable simple framebuffer support +# CONFIG_FB_SIMPLE is not set + +# CONFIG_WERROR is not set +CONFIG_DRM=y +CONFIG_DRM_ROCKCHIP=y +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_DRM_PANEL_SIMPLE=m + +CONFIG_DW_WATCHDOG=y +CONFIG_CPUFREQ_DT=y +CONFIG_CPUFREQ_DT_PLATDEV=y diff --git a/buildroot-external/board/tinkerboard/kernel_defconfig b/buildroot-external/board/tinkerboard/kernel_defconfig index 758a15b..4a9bebc 100644 --- a/buildroot-external/board/tinkerboard/kernel_defconfig +++ b/buildroot-external/board/tinkerboard/kernel_defconfig @@ -1,5 +1,4 @@ # CONFIG_LOCALVERSION_AUTO is not set -CONFIG_KERNEL_LZ4=y CONFIG_DEFAULT_HOSTNAME="localhost" CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y @@ -8,7 +7,8 @@ CONFIG_AUDIT=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_PREEMPT=y -CONFIG_IKCONFIG=m +# CONFIG_PREEMPT_DYNAMIC is not set +CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_IKHEADERS=m CONFIG_LOG_BUF_SHIFT=18 @@ -28,11 +28,6 @@ CONFIG_CGROUP_PERF=y CONFIG_NAMESPACES=y CONFIG_USER_NS=y CONFIG_BLK_DEV_INITRD=y -CONFIG_EMBEDDED=y -# CONFIG_COMPAT_BRK is not set -CONFIG_SLAB_FREELIST_RANDOM=y -CONFIG_SLAB_FREELIST_HARDENED=y -CONFIG_SHUFFLE_PAGE_ALLOCATOR=y CONFIG_PROFILING=y CONFIG_ARCH_ROCKCHIP=y CONFIG_ARM_THUMBEE=y @@ -44,7 +39,6 @@ CONFIG_SMP=y CONFIG_HZ_250=y CONFIG_HIGHMEM=y # CONFIG_HIGHPTE is not set -# CONFIG_ARM_MODULE_PLTS is not set CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y @@ -52,7 +46,8 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y -CONFIG_CPUFREQ_DT=m +CONFIG_CPUFREQ_DT=y +CONFIG_CPUFREQ_DT_PLATDEV=y CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_VFP=y @@ -60,17 +55,7 @@ CONFIG_NEON=y CONFIG_KERNEL_MODE_NEON=y CONFIG_PM_DEBUG=y CONFIG_PM_ADVANCED_DEBUG=y -CONFIG_CRYPTO_SHA1_ARM_NEON=m -CONFIG_CRYPTO_SHA1_ARM_CE=m -CONFIG_CRYPTO_SHA2_ARM_CE=m -CONFIG_CRYPTO_SHA512_ARM=m -CONFIG_CRYPTO_AES_ARM=m -CONFIG_CRYPTO_AES_ARM_BS=m -CONFIG_CRYPTO_AES_ARM_CE=m -CONFIG_CRYPTO_GHASH_ARM_CE=m -CONFIG_CRYPTO_CRCT10DIF_ARM_CE=m -CONFIG_CRYPTO_CRC32_ARM_CE=m -CONFIG_CRYPTO_NHPOLY1305_NEON=m +# CONFIG_GCC_PLUGINS is not set CONFIG_MODULES=y CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y @@ -83,14 +68,14 @@ CONFIG_PARTITION_ADVANCED=y CONFIG_MAC_PARTITION=y CONFIG_BINFMT_FLAT=y CONFIG_BINFMT_ZFLAT=y -CONFIG_BINFMT_SHARED_FLAT=y -CONFIG_KSM=y -CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 -CONFIG_CLEANCACHE=y -CONFIG_FRONTSWAP=y CONFIG_ZSWAP=y -CONFIG_Z3FOLD=y CONFIG_ZSMALLOC=y +CONFIG_SLAB_FREELIST_RANDOM=y +CONFIG_SLAB_FREELIST_HARDENED=y +CONFIG_SHUFFLE_PAGE_ALLOCATOR=y +# CONFIG_COMPAT_BRK is not set +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 CONFIG_IDLE_PAGE_TRACKING=y CONFIG_NET=y CONFIG_PACKET=y @@ -120,8 +105,6 @@ CONFIG_IP_MROUTE_MULTIPLE_TABLES=y CONFIG_IP_PIMSM_V1=y CONFIG_IP_PIMSM_V2=y CONFIG_NET_IPVTI=m -CONFIG_NET_FOU=y -CONFIG_NET_FOU_IP_TUNNELS=y CONFIG_INET_AH=m CONFIG_INET_ESP=m CONFIG_INET_ESP_OFFLOAD=m @@ -160,11 +143,9 @@ CONFIG_NETLABEL=y CONFIG_NETWORK_SECMARK=y CONFIG_NETWORK_PHY_TIMESTAMPING=y CONFIG_NETFILTER=y -CONFIG_NF_CONNTRACK=m -CONFIG_NF_LOG_NETDEV=m +CONFIG_NF_CONNTRACK=y CONFIG_NF_CONNTRACK_SECMARK=y CONFIG_NF_CONNTRACK_ZONES=y -# CONFIG_NF_CONNTRACK_PROCFS is not set CONFIG_NF_CONNTRACK_EVENTS=y CONFIG_NF_CONNTRACK_TIMEOUT=y CONFIG_NF_CONNTRACK_TIMESTAMP=y @@ -188,7 +169,6 @@ CONFIG_NF_TABLES_NETDEV=y CONFIG_NFT_NUMGEN=m CONFIG_NFT_CT=m CONFIG_NFT_FLOW_OFFLOAD=m -CONFIG_NFT_COUNTER=m CONFIG_NFT_CONNLIMIT=m CONFIG_NFT_LOG=m CONFIG_NFT_LIMIT=m @@ -196,7 +176,6 @@ CONFIG_NFT_MASQ=m CONFIG_NFT_REDIR=m CONFIG_NFT_NAT=m CONFIG_NFT_TUNNEL=m -CONFIG_NFT_OBJREF=m CONFIG_NFT_QUEUE=m CONFIG_NFT_QUOTA=m CONFIG_NFT_REJECT=m @@ -213,7 +192,6 @@ CONFIG_NFT_FIB_NETDEV=m CONFIG_NF_FLOW_TABLE_INET=m CONFIG_NF_FLOW_TABLE=m CONFIG_NETFILTER_XT_SET=m -CONFIG_NETFILTER_XT_TARGET_AUDIT=m CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m CONFIG_NETFILTER_XT_TARGET_CONNMARK=m @@ -231,7 +209,6 @@ CONFIG_NETFILTER_XT_TARGET_TEE=m CONFIG_NETFILTER_XT_TARGET_TPROXY=m CONFIG_NETFILTER_XT_TARGET_TRACE=m CONFIG_NETFILTER_XT_TARGET_SECMARK=m -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m CONFIG_NETFILTER_XT_MATCH_BPF=m @@ -270,7 +247,6 @@ CONFIG_NETFILTER_XT_MATCH_SOCKET=m CONFIG_NETFILTER_XT_MATCH_STATE=m CONFIG_NETFILTER_XT_MATCH_STATISTIC=m CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m CONFIG_NETFILTER_XT_MATCH_TIME=m CONFIG_NETFILTER_XT_MATCH_U32=m CONFIG_IP_SET=m @@ -316,7 +292,6 @@ CONFIG_IP_VS_PE_SIP=m CONFIG_NFT_DUP_IPV4=m CONFIG_NFT_FIB_IPV4=m CONFIG_NF_TABLES_ARP=y -CONFIG_NF_FLOW_TABLE_IPV4=m CONFIG_NF_LOG_ARP=m CONFIG_NF_REJECT_IPV4=y CONFIG_IP_NF_IPTABLES=y @@ -332,7 +307,6 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_NETMAP=m CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_TTL=m CONFIG_IP_NF_RAW=m @@ -342,7 +316,6 @@ CONFIG_IP_NF_ARPFILTER=m CONFIG_IP_NF_ARP_MANGLE=m CONFIG_NFT_DUP_IPV6=m CONFIG_NFT_FIB_IPV6=m -CONFIG_NF_FLOW_TABLE_IPV6=m CONFIG_IP6_NF_IPTABLES=m CONFIG_IP6_NF_MATCH_AH=m CONFIG_IP6_NF_MATCH_EUI64=m @@ -366,7 +339,6 @@ CONFIG_IP6_NF_TARGET_MASQUERADE=m CONFIG_IP6_NF_TARGET_NPT=m CONFIG_NF_TABLES_BRIDGE=m CONFIG_NFT_BRIDGE_REJECT=m -CONFIG_NF_LOG_BRIDGE=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m @@ -403,22 +375,17 @@ CONFIG_L2TP_V3=y CONFIG_L2TP_IP=m CONFIG_L2TP_ETH=m CONFIG_BRIDGE=m -CONFIG_BRIDGE_VLAN_FILTERING=y CONFIG_NET_DSA=m CONFIG_NET_DSA_TAG_GSWIP=m CONFIG_NET_DSA_TAG_QCA=m -CONFIG_VLAN_8021Q_GVRP=y -CONFIG_VLAN_8021Q_MVRP=y CONFIG_ATALK=m CONFIG_DEV_APPLETALK=m CONFIG_IPDDP=m CONFIG_IPDDP_ENCAP=y CONFIG_6LOWPAN=m CONFIG_NET_SCHED=y -CONFIG_NET_SCH_CBQ=m CONFIG_NET_SCH_HTB=m CONFIG_NET_SCH_HFSC=m -CONFIG_NET_SCH_ATM=m CONFIG_NET_SCH_PRIO=m CONFIG_NET_SCH_MULTIQ=m CONFIG_NET_SCH_RED=m @@ -429,7 +396,6 @@ CONFIG_NET_SCH_TBF=m CONFIG_NET_SCH_CBS=m CONFIG_NET_SCH_ETF=m CONFIG_NET_SCH_GRED=m -CONFIG_NET_SCH_DSMARK=m CONFIG_NET_SCH_NETEM=m CONFIG_NET_SCH_DRR=m CONFIG_NET_SCH_MQPRIO=m @@ -447,14 +413,11 @@ CONFIG_NET_SCH_PLUG=m CONFIG_NET_SCH_DEFAULT=y CONFIG_DEFAULT_FQ_CODEL=y CONFIG_NET_CLS_BASIC=m -CONFIG_NET_CLS_TCINDEX=m CONFIG_NET_CLS_ROUTE4=m CONFIG_NET_CLS_FW=m CONFIG_NET_CLS_U32=m CONFIG_CLS_U32_PERF=y CONFIG_CLS_U32_MARK=y -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_RSVP6=m CONFIG_NET_CLS_FLOW=m CONFIG_NET_CLS_CGROUP=m CONFIG_NET_CLS_BPF=m @@ -466,7 +429,6 @@ CONFIG_NET_EMATCH_NBYTE=m CONFIG_NET_EMATCH_U32=m CONFIG_NET_EMATCH_META=m CONFIG_NET_EMATCH_TEXT=m -CONFIG_NET_EMATCH_CANID=m CONFIG_NET_EMATCH_IPSET=m CONFIG_NET_EMATCH_IPT=m CONFIG_NET_CLS_ACT=y @@ -497,62 +459,27 @@ CONFIG_OPENVSWITCH=m CONFIG_NETLINK_DIAG=m CONFIG_HSR=m CONFIG_CGROUP_NET_PRIO=y -CONFIG_CAN=y -CONFIG_CAN_RAW=m -CONFIG_CAN_BCM=m -CONFIG_CAN_GW=m -CONFIG_CAN_J1939=m -CONFIG_CAN_VCAN=m -CONFIG_CAN_VXCAN=m -CONFIG_CAN_SLCAN=m -CONFIG_CAN_FLEXCAN=m -CONFIG_CAN_GRCAN=m -CONFIG_CAN_TI_HECC=m -CONFIG_CAN_C_CAN=m -CONFIG_CAN_C_CAN_PLATFORM=m -CONFIG_CAN_CC770=m -CONFIG_CAN_CC770_ISA=m -CONFIG_CAN_CC770_PLATFORM=m -CONFIG_CAN_IFI_CANFD=m -CONFIG_CAN_M_CAN=m -CONFIG_CAN_M_CAN_PLATFORM=m -CONFIG_CAN_M_CAN_TCAN4X5X=m -CONFIG_CAN_RCAR=m -CONFIG_CAN_RCAR_CANFD=m -CONFIG_CAN_SJA1000=m -CONFIG_CAN_SJA1000_ISA=m -CONFIG_CAN_SJA1000_PLATFORM=m -CONFIG_CAN_SOFTING=m -CONFIG_CAN_HI311X=m -CONFIG_CAN_MCP251X=y -CONFIG_CAN_8DEV_USB=m -CONFIG_CAN_EMS_USB=m -CONFIG_CAN_ESD_USB2=m -CONFIG_CAN_GS_USB=m -CONFIG_CAN_KVASER_USB=m -CONFIG_CAN_MCBA_USB=m -CONFIG_CAN_PEAK_USB=m -CONFIG_CAN_UCAN=m +# CONFIG_CAN is not set CONFIG_BT=y CONFIG_BT_RFCOMM=y CONFIG_BT_HIDP=y CONFIG_BT_6LOWPAN=m -CONFIG_BT_HCIBTUSB=y -CONFIG_BT_HCIBTSDIO=y -CONFIG_BT_HCIUART=y +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_ATH3K=y CONFIG_BT_HCIUART_3WIRE=y -CONFIG_BT_HCIBFUSB=y -CONFIG_BT_HCIVHCI=y -CONFIG_BT_MRVL=y -CONFIG_BT_MRVL_SDIO=y +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m CONFIG_BT_MTKSDIO=m CONFIG_BT_MTKUART=m CONFIG_CFG80211=y CONFIG_NL80211_TESTMODE=y CONFIG_CFG80211_DEBUGFS=y -CONFIG_CFG80211_WEXT=y -CONFIG_MAC80211=y +# CONFIG_CFG80211_CRDA_SUPPORT is not set +CONFIG_MAC80211=m CONFIG_MAC80211_MESH=y CONFIG_MAC80211_DEBUGFS=y CONFIG_MAC80211_DEBUG_MENU=y @@ -572,15 +499,12 @@ CONFIG_BLK_DEV_DRBD=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=1 CONFIG_ATA_OVER_ETH=m -CONFIG_VIRTIO_BLK=m -CONFIG_BLK_DEV_RBD=m CONFIG_EEPROM_AT24=m CONFIG_MISC_RTSX_USB=m +CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=y CONFIG_SCSI_SPI_ATTRS=y -CONFIG_SCSI_VIRTIO=m -CONFIG_ATA=y CONFIG_MD=y CONFIG_BLK_DEV_DM=y CONFIG_DM_CRYPT=y @@ -606,7 +530,6 @@ CONFIG_GTP=m CONFIG_MACSEC=m CONFIG_TUN=y CONFIG_VETH=m -CONFIG_VIRTIO_NET=m CONFIG_NET_VRF=m CONFIG_B53_SPI_DRIVER=m CONFIG_B53_MDIO_DRIVER=m @@ -616,18 +539,14 @@ CONFIG_NET_DSA_BCM_SF2=m CONFIG_NET_DSA_LOOP=m CONFIG_NET_DSA_MT7530=m CONFIG_NET_DSA_MV88E6060=m -CONFIG_NET_DSA_MICROCHIP_KSZ8795=m -CONFIG_NET_DSA_MICROCHIP_KSZ8795_SPI=m CONFIG_NET_DSA_MV88E6XXX=m CONFIG_NET_DSA_SJA1105=m -CONFIG_NET_DSA_REALTEK_SMI=m CONFIG_NET_DSA_SMSC_LAN9303_MDIO=m CONFIG_NET_DSA_VITESSE_VSC73XX_SPI=m # CONFIG_NET_VENDOR_ALACRITECH is not set # CONFIG_NET_VENDOR_AMAZON is not set # CONFIG_NET_VENDOR_AQUANTIA is not set CONFIG_EMAC_ROCKCHIP=y -# CONFIG_NET_VENDOR_AURORA is not set # CONFIG_NET_VENDOR_BROADCOM is not set # CONFIG_NET_VENDOR_CIRRUS is not set # CONFIG_NET_VENDOR_CORTINA is not set @@ -657,8 +576,8 @@ CONFIG_STMMAC_ETH=y # CONFIG_NET_VENDOR_WIZNET is not set CONFIG_LED_TRIGGER_PHY=y CONFIG_ADIN_PHY=m -CONFIG_AX88796B_PHY=m CONFIG_MICROCHIP_T1_PHY=m +CONFIG_REALTEK_PHY=m CONFIG_ROCKCHIP_PHY=y CONFIG_DP83TC811_PHY=m CONFIG_MDIO_MSCC_MIIM=m @@ -669,15 +588,8 @@ CONFIG_PPP_DEFLATE=m CONFIG_PPP_FILTER=y CONFIG_PPP_MPPE=m CONFIG_PPP_MULTILINK=y -CONFIG_PPPOE=m -CONFIG_PPTP=m CONFIG_PPPOL2TP=m CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_SLIP=m -CONFIG_SLIP_COMPRESSED=y -CONFIG_SLIP_SMART=y -CONFIG_SLIP_MODE_SLIP6=y CONFIG_USB_CATC=m CONFIG_USB_KAWETH=m CONFIG_USB_PEGASUS=m @@ -732,10 +644,10 @@ CONFIG_LIBERTAS=m CONFIG_LIBERTAS_USB=m CONFIG_LIBERTAS_SDIO=m CONFIG_LIBERTAS_SPI=m -CONFIG_LIBERTAS_THINFIRM=y +CONFIG_LIBERTAS_THINFIRM=m CONFIG_LIBERTAS_THINFIRM_USB=m -CONFIG_MWIFIEX=y -CONFIG_MWIFIEX_SDIO=y +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m CONFIG_MWIFIEX_USB=m CONFIG_MT7601U=m CONFIG_MT76x0U=m @@ -756,9 +668,7 @@ CONFIG_RTL8XXXU=y CONFIG_RTW88=m CONFIG_USB_ZD1201=m CONFIG_ZD1211RW=m -CONFIG_USB_NET_RNDIS_WLAN=y -CONFIG_VIRT_WIFI=m -CONFIG_INPUT_POLLDEV=y +CONFIG_USB_NET_RNDIS_WLAN=m CONFIG_INPUT_JOYDEV=y CONFIG_INPUT_EVDEV=y CONFIG_KEYBOARD_QT1050=m @@ -770,24 +680,9 @@ CONFIG_KEYBOARD_TM2_TOUCHKEY=m # CONFIG_MOUSE_PS2 is not set CONFIG_MOUSE_CYAPA=y CONFIG_MOUSE_ELAN_I2C=y -CONFIG_INPUT_JOYSTICK=y -CONFIG_JOYSTICK_IFORCE=y -CONFIG_JOYSTICK_IFORCE_USB=y -CONFIG_JOYSTICK_XPAD=y -CONFIG_JOYSTICK_XPAD_FF=y -CONFIG_JOYSTICK_XPAD_LEDS=y -CONFIG_JOYSTICK_PXRC=m -CONFIG_JOYSTICK_FSIA6B=m +# CONFIG_INPUT_JOYSTICK is not set CONFIG_INPUT_TABLET=y -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_ADS7846=m -CONFIG_TOUCHSCREEN_ADC=m -CONFIG_TOUCHSCREEN_ATMEL_MXT=y -CONFIG_TOUCHSCREEN_BU21029=m -CONFIG_TOUCHSCREEN_ELAN=y -CONFIG_TOUCHSCREEN_USB_COMPOSITE=y -CONFIG_TOUCHSCREEN_ZET6223=m -CONFIG_TOUCHSCREEN_IQS5XX=m +# CONFIG_INPUT_TOUCHSCREEN is not set CONFIG_INPUT_MISC=y CONFIG_INPUT_MAX77650_ONKEY=m CONFIG_INPUT_GPIO_VIBRA=m @@ -804,9 +699,7 @@ CONFIG_SERIAL_FSL_LINFLEXUART=m CONFIG_NULL_TTY=m CONFIG_SERIAL_DEV_BUS=y # CONFIG_SERIAL_DEV_CTRL_TTYPORT is not set -CONFIG_VIRTIO_CONSOLE=m CONFIG_HW_RANDOM=y -CONFIG_HW_RANDOM_VIRTIO=m CONFIG_TCG_TPM=y CONFIG_TCG_TIS_I2C_INFINEON=y CONFIG_I2C_CHARDEV=y @@ -866,7 +759,6 @@ CONFIG_CHARGER_UCS1002=m CONFIG_SENSORS_AD7314=m CONFIG_SENSORS_AD7414=m CONFIG_SENSORS_AD7418=m -CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m CONFIG_SENSORS_ADM1029=m @@ -912,7 +804,6 @@ CONFIG_SENSORS_MAX1668=m CONFIG_SENSORS_MAX197=m CONFIG_SENSORS_MAX31722=m CONFIG_SENSORS_MAX6639=m -CONFIG_SENSORS_MAX6642=m CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_MAX6697=m CONFIG_SENSORS_MAX31790=m @@ -938,7 +829,6 @@ CONFIG_SENSORS_PC87360=m CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_NTC_THERMISTOR=m CONFIG_SENSORS_NCT6683=m -CONFIG_SENSORS_NCT6775=m CONFIG_SENSORS_NCT7802=m CONFIG_SENSORS_NCT7904=m CONFIG_SENSORS_NPCM7XX=m @@ -958,7 +848,6 @@ CONFIG_SENSORS_SMSC47B397=m CONFIG_SENSORS_SCH5627=m CONFIG_SENSORS_SCH5636=m CONFIG_SENSORS_STTS751=m -CONFIG_SENSORS_SMM665=m CONFIG_SENSORS_ADC128D818=m CONFIG_SENSORS_ADS7828=m CONFIG_SENSORS_ADS7871=m @@ -992,7 +881,6 @@ CONFIG_MFD_MADERA=m CONFIG_MFD_MADERA_I2C=m CONFIG_MFD_MAX77650=m CONFIG_MFD_CPCAP=m -CONFIG_MFD_RK808=y CONFIG_MFD_TPS6586X=y CONFIG_MFD_TQMX86=m CONFIG_MFD_ROHM_BD718XX=m @@ -1008,275 +896,7 @@ CONFIG_REGULATOR_PWM=y CONFIG_REGULATOR_RK808=y CONFIG_REGULATOR_SY8824X=m CONFIG_REGULATOR_TPS6586X=y -CONFIG_RC_CORE=y -CONFIG_LIRC=y -CONFIG_RC_DECODERS=y -CONFIG_IR_NEC_DECODER=m -CONFIG_IR_RC5_DECODER=m -CONFIG_IR_RC6_DECODER=m -CONFIG_IR_JVC_DECODER=m -CONFIG_IR_SONY_DECODER=m -CONFIG_IR_SANYO_DECODER=m -CONFIG_IR_SHARP_DECODER=m -CONFIG_IR_MCE_KBD_DECODER=m -CONFIG_IR_XMP_DECODER=m -CONFIG_IR_IMON_DECODER=m -CONFIG_IR_RCMM_DECODER=m -CONFIG_RC_DEVICES=y -CONFIG_IR_SPI=m -CONFIG_IR_GPIO_CIR=m CONFIG_MEDIA_SUPPORT=y -CONFIG_VIDEO_FIXED_MINOR_RANGES=y -CONFIG_MEDIA_USB_SUPPORT=y -CONFIG_USB_VIDEO_CLASS=m -CONFIG_USB_M5602=m -CONFIG_USB_STV06XX=m -CONFIG_USB_GL860=m -CONFIG_USB_GSPCA_BENQ=m -CONFIG_USB_GSPCA_CONEX=m -CONFIG_USB_GSPCA_CPIA1=m -CONFIG_USB_GSPCA_DTCS033=m -CONFIG_USB_GSPCA_ETOMS=m -CONFIG_USB_GSPCA_FINEPIX=m -CONFIG_USB_GSPCA_JEILINJ=m -CONFIG_USB_GSPCA_JL2005BCD=m -CONFIG_USB_GSPCA_KINECT=m -CONFIG_USB_GSPCA_KONICA=m -CONFIG_USB_GSPCA_MARS=m -CONFIG_USB_GSPCA_MR97310A=m -CONFIG_USB_GSPCA_NW80X=m -CONFIG_USB_GSPCA_OV519=m -CONFIG_USB_GSPCA_OV534=m -CONFIG_USB_GSPCA_OV534_9=m -CONFIG_USB_GSPCA_PAC207=m -CONFIG_USB_GSPCA_PAC7302=m -CONFIG_USB_GSPCA_PAC7311=m -CONFIG_USB_GSPCA_SE401=m -CONFIG_USB_GSPCA_SN9C2028=m -CONFIG_USB_GSPCA_SN9C20X=m -CONFIG_USB_GSPCA_SONIXB=m -CONFIG_USB_GSPCA_SONIXJ=m -CONFIG_USB_GSPCA_SPCA500=m -CONFIG_USB_GSPCA_SPCA501=m -CONFIG_USB_GSPCA_SPCA505=m -CONFIG_USB_GSPCA_SPCA506=m -CONFIG_USB_GSPCA_SPCA508=m -CONFIG_USB_GSPCA_SPCA561=m -CONFIG_USB_GSPCA_SPCA1528=m -CONFIG_USB_GSPCA_SQ905=m -CONFIG_USB_GSPCA_SQ905C=m -CONFIG_USB_GSPCA_SQ930X=m -CONFIG_USB_GSPCA_STK014=m -CONFIG_USB_GSPCA_STK1135=m -CONFIG_USB_GSPCA_STV0680=m -CONFIG_USB_GSPCA_SUNPLUS=m -CONFIG_USB_GSPCA_T613=m -CONFIG_USB_GSPCA_TOPRO=m -CONFIG_USB_GSPCA_TOUPTEK=m -CONFIG_USB_GSPCA_TV8532=m -CONFIG_USB_GSPCA_VC032X=m -CONFIG_USB_GSPCA_VICAM=m -CONFIG_USB_GSPCA_XIRLINK_CIT=m -CONFIG_USB_GSPCA_ZC3XX=m -CONFIG_USB_PWC=m -CONFIG_VIDEO_CPIA2=m -CONFIG_USB_ZR364XX=m -CONFIG_USB_STKWEBCAM=m -CONFIG_USB_S2255=m -CONFIG_VIDEO_USBTV=m -CONFIG_VIDEO_PVRUSB2=m -CONFIG_VIDEO_HDPVR=m -CONFIG_VIDEO_STK1160_COMMON=m -CONFIG_VIDEO_AU0828=m -CONFIG_VIDEO_CX231XX=m -CONFIG_VIDEO_CX231XX_ALSA=m -CONFIG_VIDEO_CX231XX_DVB=m -CONFIG_VIDEO_TM6000=m -CONFIG_VIDEO_TM6000_ALSA=m -CONFIG_VIDEO_TM6000_DVB=m -CONFIG_DVB_USB=m -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_DIBUSB_MB=m -CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_CXUSB=m -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_VP7045=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_USB_PCTV452E=m -CONFIG_DVB_USB_DW2102=m -CONFIG_DVB_USB_CINERGY_T2=m -CONFIG_DVB_USB_DTV5100=m -CONFIG_DVB_USB_AZ6027=m -CONFIG_DVB_USB_TECHNISAT_USB2=m -CONFIG_DVB_USB_V2=y -CONFIG_DVB_USB_AF9015=m -CONFIG_DVB_USB_AF9035=m -CONFIG_DVB_USB_ANYSEE=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_AZ6007=m -CONFIG_DVB_USB_CE6230=m -CONFIG_DVB_USB_EC168=m -CONFIG_DVB_USB_GL861=m -CONFIG_DVB_USB_LME2510=m -CONFIG_DVB_USB_MXL111SF=m -CONFIG_DVB_USB_RTL28XXU=m -CONFIG_DVB_USB_DVBSKY=m -CONFIG_DVB_USB_ZD1301=m -CONFIG_SMS_USB_DRV=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -CONFIG_DVB_AS102=m -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_EM28XX_V4L2=m -CONFIG_VIDEO_EM28XX_ALSA=m -CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_USB_AIRSPY=m -CONFIG_USB_HACKRF=m -CONFIG_USB_MSI2500=m -CONFIG_RADIO_SI470X=y -CONFIG_USB_SI470X=m -CONFIG_I2C_SI470X=m -CONFIG_RADIO_SI4713=m -CONFIG_USB_SI4713=m -CONFIG_PLATFORM_SI4713=m -CONFIG_USB_MR800=m -CONFIG_USB_DSBR=m -CONFIG_RADIO_SHARK=m -CONFIG_RADIO_SHARK2=m -CONFIG_USB_KEENE=m -CONFIG_USB_RAREMONO=m -CONFIG_USB_MA901=m -CONFIG_RADIO_TEA5764=m -CONFIG_RADIO_SAA7706H=m -CONFIG_RADIO_TEF6862=m -CONFIG_RADIO_WL1273=m -CONFIG_SMS_SIANO_DEBUGFS=y -CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_VIDEO_MUX=m -CONFIG_VIDEO_XILINX=m -CONFIG_VIDEO_XILINX_TPG=m -CONFIG_V4L_MEM2MEM_DRIVERS=y -CONFIG_VIDEO_ROCKCHIP_RGA=m -CONFIG_DVB_PLATFORM_DRIVERS=y -CONFIG_DVB_C8SECTPFE=m -CONFIG_SMS_SDIO_DRV=m -CONFIG_V4L_TEST_DRIVERS=y -CONFIG_VIDEO_VIVID=m -CONFIG_VIDEO_VIM2M=m -CONFIG_VIDEO_VICODEC=m -CONFIG_VIDEO_IR_I2C=m -CONFIG_VIDEO_TVAUDIO=m -CONFIG_VIDEO_TDA7432=m -CONFIG_VIDEO_TDA9840=m -CONFIG_VIDEO_TEA6415C=m -CONFIG_VIDEO_TEA6420=m -CONFIG_VIDEO_CS5345=m -CONFIG_VIDEO_TLV320AIC23B=m -CONFIG_VIDEO_UDA1342=m -CONFIG_VIDEO_WM8739=m -CONFIG_VIDEO_VP27SMPX=m -CONFIG_VIDEO_SONY_BTF_MPX=m -CONFIG_VIDEO_SAA6588=m -CONFIG_VIDEO_ADV7180=m -CONFIG_VIDEO_ADV7183=m -CONFIG_VIDEO_ADV7604=m -CONFIG_VIDEO_ADV7842=m -CONFIG_VIDEO_BT819=m -CONFIG_VIDEO_BT856=m -CONFIG_VIDEO_BT866=m -CONFIG_VIDEO_KS0127=m -CONFIG_VIDEO_ML86V7667=m -CONFIG_VIDEO_SAA7110=m -CONFIG_VIDEO_TC358743=m -CONFIG_VIDEO_TVP514X=m -CONFIG_VIDEO_TVP5150=m -CONFIG_VIDEO_TVP7002=m -CONFIG_VIDEO_TW2804=m -CONFIG_VIDEO_TW9903=m -CONFIG_VIDEO_TW9906=m -CONFIG_VIDEO_VPX3220=m -CONFIG_VIDEO_SAA717X=m -CONFIG_VIDEO_SAA7127=m -CONFIG_VIDEO_SAA7185=m -CONFIG_VIDEO_ADV7170=m -CONFIG_VIDEO_ADV7175=m -CONFIG_VIDEO_ADV7343=m -CONFIG_VIDEO_ADV7393=m -CONFIG_VIDEO_ADV7511=m -CONFIG_VIDEO_AD9389B=m -CONFIG_VIDEO_AK881X=m -CONFIG_VIDEO_THS8200=m -CONFIG_VIDEO_UPD64031A=m -CONFIG_VIDEO_UPD64083=m -CONFIG_SDR_MAX2175=m -CONFIG_VIDEO_THS7303=m -CONFIG_VIDEO_M52790=m -CONFIG_VIDEO_I2C=m -CONFIG_VIDEO_ST_MIPID02=m -CONFIG_VIDEO_IMX274=m -CONFIG_VIDEO_OV2640=m -CONFIG_VIDEO_OV2659=m -CONFIG_VIDEO_OV2680=m -CONFIG_VIDEO_OV2685=m -CONFIG_VIDEO_OV5640=m -CONFIG_VIDEO_OV5645=m -CONFIG_VIDEO_OV5647=m -CONFIG_VIDEO_OV6650=m -CONFIG_VIDEO_OV5670=m -CONFIG_VIDEO_OV5675=m -CONFIG_VIDEO_OV5695=m -CONFIG_VIDEO_OV7251=m -CONFIG_VIDEO_OV772X=m -CONFIG_VIDEO_OV7640=m -CONFIG_VIDEO_OV7670=m -CONFIG_VIDEO_OV7740=m -CONFIG_VIDEO_OV8856=m -CONFIG_VIDEO_OV9640=m -CONFIG_VIDEO_OV9650=m -CONFIG_VIDEO_OV13858=m -CONFIG_VIDEO_VS6624=m -CONFIG_VIDEO_MT9M001=m -CONFIG_VIDEO_MT9M032=m -CONFIG_VIDEO_MT9M111=m -CONFIG_VIDEO_MT9P031=m -CONFIG_VIDEO_MT9T001=m -CONFIG_VIDEO_MT9T112=m -CONFIG_VIDEO_MT9V011=m -CONFIG_VIDEO_MT9V032=m -CONFIG_VIDEO_MT9V111=m -CONFIG_VIDEO_SR030PC30=m -CONFIG_VIDEO_NOON010PC30=m -CONFIG_VIDEO_M5MOLS=m -CONFIG_VIDEO_RJ54N1=m -CONFIG_VIDEO_S5K6AA=m -CONFIG_VIDEO_S5K6A3=m -CONFIG_VIDEO_S5K4ECGX=m -CONFIG_VIDEO_S5K5BAF=m -CONFIG_VIDEO_SMIAPP=m -CONFIG_VIDEO_ET8EK8=m -CONFIG_VIDEO_S5C73M3=m -CONFIG_VIDEO_AK7375=m -CONFIG_VIDEO_DW9807_VCM=m -CONFIG_VIDEO_ADP1653=m -CONFIG_VIDEO_LM3560=m -CONFIG_VIDEO_LM3646=m -CONFIG_MEDIA_TUNER_SIMPLE=y -CONFIG_MEDIA_TUNER_TDA8290=y -CONFIG_MEDIA_TUNER_MT20XX=y -CONFIG_MEDIA_TUNER_XC2028=y -CONFIG_MEDIA_TUNER_XC5000=y -CONFIG_MEDIA_TUNER_XC4000=y -CONFIG_MEDIA_TUNER_MC44S803=y CONFIG_DRM=y CONFIG_DRM_DEBUG_MM=y CONFIG_DRM_I2C_NXP_TDA9950=m @@ -1286,7 +906,6 @@ CONFIG_DRM_ROCKCHIP=y CONFIG_ROCKCHIP_DW_HDMI=y CONFIG_ROCKCHIP_LVDS=y CONFIG_DRM_UDL=y -CONFIG_DRM_RCAR_LVDS=m CONFIG_DRM_PANEL_ARM_VERSATILE=m CONFIG_DRM_PANEL_SIMPLE=y CONFIG_DRM_PANEL_ILITEK_ILI9881C=m @@ -1321,60 +940,11 @@ CONFIG_TINYDRM_ILI9341=m CONFIG_TINYDRM_MI0283QT=m CONFIG_DRM_LIMA=m CONFIG_DRM_PANFROST=m -CONFIG_FB_MODE_HELPERS=y +CONFIG_FB=y +CONFIG_FB_SIMPLE=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_PWM=y CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -CONFIG_LOGO=y -# CONFIG_LOGO_LINUX_MONO is not set -# CONFIG_LOGO_LINUX_VGA16 is not set -# CONFIG_LOGO_LINUX_CLUT224 is not set -CONFIG_SOUND=m -CONFIG_SND=m -CONFIG_SND_HRTIMER=m -CONFIG_SND_DYNAMIC_MINORS=y -CONFIG_SND_SEQUENCER=m -CONFIG_SND_SEQ_DUMMY=m -CONFIG_SND_DUMMY=m -CONFIG_SND_ALOOP=m -# CONFIG_SND_ARM is not set -# CONFIG_SND_SPI is not set -CONFIG_SND_USB_AUDIO=m -CONFIG_SND_SOC=m -CONFIG_SND_SOC_FSL_AUDMIX=m -CONFIG_SND_SOC_MTK_BTCVSD=m -CONFIG_SND_SOC_ROCKCHIP=m -CONFIG_SND_SOC_ROCKCHIP_SPDIF=m -CONFIG_SND_SOC_ROCKCHIP_MAX98090=m -CONFIG_SND_SOC_ROCKCHIP_RT5645=m -CONFIG_SND_SOC_RK3288_HDMI_ANALOG=m -CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER=m -CONFIG_SND_SOC_XILINX_SPDIF=m -CONFIG_SND_SOC_AK4458=m -CONFIG_SND_SOC_AK5558=m -CONFIG_SND_SOC_BD28623=m -CONFIG_SND_SOC_CPCAP=m -CONFIG_SND_SOC_CS35L36=m -CONFIG_SND_SOC_CS4341=m -CONFIG_SND_SOC_ES7241=m -CONFIG_SND_SOC_MAX9867=m -CONFIG_SND_SOC_PCM1789_I2C=m -CONFIG_SND_SOC_RK3328=m -CONFIG_SND_SOC_RT5616=m -CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m -CONFIG_SND_SOC_SPDIF=m -CONFIG_SND_SOC_SSM2305=m -CONFIG_SND_SOC_TDA7419=m -CONFIG_SND_SOC_TSCS454=m -CONFIG_SND_SOC_UDA1334=m -CONFIG_SND_SOC_WM8782=m -CONFIG_SND_SOC_WM8904=m -CONFIG_SND_SOC_MAX9759=m -CONFIG_SND_SOC_MT6351=m -CONFIG_SND_SOC_MT6358=m -CONFIG_SND_SOC_NAU8540=m -CONFIG_SND_SIMPLE_CARD=m CONFIG_HID_BATTERY_STRENGTH=y CONFIG_HIDRAW=y CONFIG_UHID=y @@ -1392,7 +962,6 @@ CONFIG_HID_CHICONY=m CONFIG_HID_CORSAIR=m CONFIG_HID_COUGAR=m CONFIG_HID_MACALLY=m -CONFIG_HID_PRODIKEYS=m CONFIG_HID_CP2112=m CONFIG_HID_CREATIVE_SB0540=m CONFIG_HID_CYPRESS=m @@ -1437,10 +1006,8 @@ CONFIG_PANTHERLORD_FF=y CONFIG_HID_PENMOUNT=m CONFIG_HID_PETALYNX=m CONFIG_HID_PICOLCD=m -CONFIG_HID_PICOLCD_FB=y CONFIG_HID_PICOLCD_BACKLIGHT=y CONFIG_HID_PICOLCD_LEDS=y -CONFIG_HID_PICOLCD_CIR=y CONFIG_HID_PLANTRONICS=m CONFIG_HID_PRIMAX=m CONFIG_HID_ROCCAT=m @@ -1472,7 +1039,6 @@ CONFIG_HID_SENSOR_HUB=m CONFIG_HID_SENSOR_CUSTOM_SENSOR=m CONFIG_HID_ALPS=m CONFIG_USB_HIDDEV=y -CONFIG_I2C_HID=y CONFIG_USB_LED_TRIG=y CONFIG_USB_CONN_GPIO=m CONFIG_USB_ANNOUNCE_NEW_DEVICES=y @@ -1491,7 +1057,6 @@ CONFIG_USBIP_CORE=m CONFIG_USBIP_VHCI_HCD=m CONFIG_USBIP_HOST=m CONFIG_USBIP_VUDC=m -CONFIG_USB_CDNS3=m CONFIG_USB_DWC2=y CONFIG_USB_SERIAL=m CONFIG_USB_SERIAL_GENERIC=y @@ -1503,7 +1068,6 @@ CONFIG_USB_SERIAL_CH341=m CONFIG_USB_SERIAL_WHITEHEAT=m CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m CONFIG_USB_SERIAL_CP210X=m -CONFIG_USB_SERIAL_CYPRESS_M8=m CONFIG_USB_SERIAL_EMPEG=m CONFIG_USB_SERIAL_FTDI_SIO=m CONFIG_USB_SERIAL_VISOR=m @@ -1535,7 +1099,6 @@ CONFIG_USB_SERIAL_SIERRAWIRELESS=m CONFIG_USB_SERIAL_SYMBOL=m CONFIG_USB_SERIAL_TI=m CONFIG_USB_SERIAL_CYBERJACK=m -CONFIG_USB_SERIAL_XIRCOM=m CONFIG_USB_SERIAL_OPTION=m CONFIG_USB_SERIAL_OMNINET=m CONFIG_USB_SERIAL_OPTICON=m @@ -1562,7 +1125,6 @@ CONFIG_MMC_BLOCK_MINORS=16 CONFIG_MMC_TEST=y CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_OF_ASPEED=m CONFIG_MMC_SDHCI_OF_DWCMSHC=m CONFIG_MMC_SDHCI_CADENCE=m CONFIG_MMC_DW=y @@ -1584,7 +1146,6 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_CPU=y CONFIG_LEDS_TRIGGER_ACTIVITY=y -CONFIG_LEDS_TRIGGER_GPIO=y CONFIG_LEDS_TRIGGER_DEFAULT_ON=y CONFIG_LEDS_TRIGGER_TRANSIENT=y CONFIG_LEDS_TRIGGER_CAMERA=m @@ -1635,7 +1196,6 @@ CONFIG_RTC_DRV_DS1390=m CONFIG_RTC_DRV_MAX6916=m CONFIG_RTC_DRV_R9701=m CONFIG_RTC_DRV_RX4581=m -CONFIG_RTC_DRV_RX6110=m CONFIG_RTC_DRV_RS5C348=m CONFIG_RTC_DRV_MAX6902=m CONFIG_RTC_DRV_PCF2123=m @@ -1643,51 +1203,17 @@ CONFIG_RTC_DRV_MCP795=m CONFIG_RTC_DRV_DS3232=m CONFIG_RTC_DRV_PCF2127=m CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RX6110=m CONFIG_RTC_DRV_CADENCE=m CONFIG_DMADEVICES=y CONFIG_DW_AXI_DMAC=m CONFIG_FSL_QDMA=m CONFIG_PL330_DMA=y CONFIG_DMABUF_SELFTESTS=m -# CONFIG_VIRTIO_MENU is not set CONFIG_STAGING=y CONFIG_RTL8723BS=m CONFIG_R8712U=m -CONFIG_R8188EU=m CONFIG_STAGING_MEDIA=y -CONFIG_ASHMEM=y -CONFIG_FB_TFT=m -CONFIG_FB_TFT_AGM1264K_FL=m -CONFIG_FB_TFT_BD663474=m -CONFIG_FB_TFT_HX8340BN=m -CONFIG_FB_TFT_HX8347D=m -CONFIG_FB_TFT_HX8353D=m -CONFIG_FB_TFT_HX8357D=m -CONFIG_FB_TFT_ILI9163=m -CONFIG_FB_TFT_ILI9320=m -CONFIG_FB_TFT_ILI9325=m -CONFIG_FB_TFT_ILI9340=m -CONFIG_FB_TFT_ILI9341=m -CONFIG_FB_TFT_ILI9481=m -CONFIG_FB_TFT_ILI9486=m -CONFIG_FB_TFT_PCD8544=m -CONFIG_FB_TFT_RA8875=m -CONFIG_FB_TFT_S6D02A1=m -CONFIG_FB_TFT_S6D1121=m -CONFIG_FB_TFT_SH1106=m -CONFIG_FB_TFT_SSD1289=m -CONFIG_FB_TFT_SSD1305=m -CONFIG_FB_TFT_SSD1306=m -CONFIG_FB_TFT_SSD1331=m -CONFIG_FB_TFT_SSD1351=m -CONFIG_FB_TFT_ST7735R=m -CONFIG_FB_TFT_ST7789V=m -CONFIG_FB_TFT_TINYLCD=m -CONFIG_FB_TFT_TLS8204=m -CONFIG_FB_TFT_UC1611=m -CONFIG_FB_TFT_UC1701=m -CONFIG_FB_TFT_UPD161704=m -CONFIG_FB_TFT_WATTEROTT=m CONFIG_FIELDBUS_DEV=m CONFIG_HMS_ANYBUSS_BUS=m CONFIG_ARCX_ANYBUS_CONTROLLER=m @@ -1701,7 +1227,6 @@ CONFIG_ROCKCHIP_IODOMAIN=y CONFIG_ROCKCHIP_PM_DOMAINS=y CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y CONFIG_DEVFREQ_GOV_USERSPACE=y -# CONFIG_EXTCON is not set CONFIG_MEMORY=y CONFIG_IIO=y CONFIG_ADXL345_I2C=m @@ -1716,7 +1241,6 @@ CONFIG_IIO_RESCALE=m CONFIG_BME680=m CONFIG_PMS7003=m CONFIG_SENSIRION_SGP30=m -CONFIG_SPS30=m CONFIG_AD5686_SPI=m CONFIG_AD5696_I2C=m CONFIG_AD5758=m @@ -1762,9 +1286,8 @@ CONFIG_PHY_ROCKCHIP_USB=y CONFIG_ARM_CCI_PMU=m # CONFIG_ARM_CCI400_PMU is not set # CONFIG_ARM_CCI5xx_PMU is not set -CONFIG_ANDROID=y CONFIG_DAX=y -CONFIG_ROCKCHIP_EFUSE=y +CONFIG_NVMEM_ROCKCHIP_EFUSE=y CONFIG_MUX_ADG792A=m CONFIG_MUX_ADGS1408=m CONFIG_MUX_GPIO=m @@ -1790,14 +1313,11 @@ CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y CONFIG_QFMT_V1=m CONFIG_QFMT_V2=m -CONFIG_AUTOFS4_FS=y CONFIG_FUSE_FS=m CONFIG_CUSE=m -CONFIG_VIRTIO_FS=m CONFIG_OVERLAY_FS=m CONFIG_FSCACHE=y CONFIG_FSCACHE_STATS=y -CONFIG_FSCACHE_HISTOGRAM=y CONFIG_CACHEFILES=y CONFIG_ISO9660_FS=m CONFIG_JOLIET=y @@ -1813,15 +1333,12 @@ CONFIG_ECRYPT_FS=m CONFIG_HFS_FS=m CONFIG_HFSPLUS_FS=m CONFIG_SQUASHFS=m -CONFIG_SQUASHFS_DECOMP_MULTI=y CONFIG_SQUASHFS_XATTR=y CONFIG_SQUASHFS_LZO=y CONFIG_SQUASHFS_XZ=y CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y CONFIG_SQUASHFS_EMBEDDED=y CONFIG_PSTORE=y -CONFIG_PSTORE_DEFLATE_COMPRESS=m -CONFIG_PSTORE_LZ4HC_COMPRESS=m CONFIG_PSTORE_CONSOLE=y CONFIG_PSTORE_RAM=y CONFIG_NFS_FS=y @@ -1838,8 +1355,6 @@ CONFIG_NFSD_V4=y CONFIG_NFSD_V4_SECURITY_LABEL=y CONFIG_RPCSEC_GSS_KRB5=m CONFIG_CEPH_FS=m -CONFIG_CEPH_FSCACHE=y -CONFIG_CEPH_FS_POSIX_ACL=y CONFIG_CIFS=m CONFIG_CIFS_UPCALL=y CONFIG_CIFS_XATTR=y @@ -1858,30 +1373,14 @@ CONFIG_SECURITY_PATH=y CONFIG_HARDENED_USERCOPY=y CONFIG_FORTIFY_SOURCE=y CONFIG_SECURITY_YAMA=y +CONFIG_LSM="yama,loadpin,safesetid,integrity" CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y CONFIG_INIT_ON_FREE_DEFAULT_ON=y -CONFIG_LSM="yama,loadpin,safesetid,integrity" CONFIG_CRYPTO_USER=m CONFIG_CRYPTO_PCRYPT=m CONFIG_CRYPTO_TEST=m CONFIG_CRYPTO_DH=m CONFIG_CRYPTO_ECRDSA=m -CONFIG_CRYPTO_AEGIS128=m -CONFIG_CRYPTO_ECHAINIV=y -CONFIG_CRYPTO_CFB=m -CONFIG_CRYPTO_LRW=m -CONFIG_CRYPTO_PCBC=m -CONFIG_CRYPTO_KEYWRAP=m -CONFIG_CRYPTO_XCBC=m -CONFIG_CRYPTO_VMAC=m -CONFIG_CRYPTO_MD4=y -CONFIG_CRYPTO_RMD128=m -CONFIG_CRYPTO_RMD160=m -CONFIG_CRYPTO_RMD256=m -CONFIG_CRYPTO_RMD320=m -CONFIG_CRYPTO_SHA1=y -CONFIG_CRYPTO_TGR192=m -CONFIG_CRYPTO_WP512=m CONFIG_CRYPTO_AES_TI=m CONFIG_CRYPTO_ANUBIS=m CONFIG_CRYPTO_BLOWFISH=m @@ -1891,11 +1390,22 @@ CONFIG_CRYPTO_CAST6=m CONFIG_CRYPTO_DES=y CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_KHAZAD=m -CONFIG_CRYPTO_SALSA20=m CONFIG_CRYPTO_SEED=m CONFIG_CRYPTO_SERPENT=m CONFIG_CRYPTO_TEA=m CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_CFB=m +CONFIG_CRYPTO_KEYWRAP=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_AEGIS128=m +CONFIG_CRYPTO_ECHAINIV=y +CONFIG_CRYPTO_MD4=y +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_VMAC=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_XCBC=m CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_842=m CONFIG_CRYPTO_LZ4=m @@ -1907,6 +1417,17 @@ CONFIG_CRYPTO_USER_API_HASH=m CONFIG_CRYPTO_USER_API_SKCIPHER=m CONFIG_CRYPTO_USER_API_RNG=m CONFIG_CRYPTO_USER_API_AEAD=m +CONFIG_CRYPTO_GHASH_ARM_CE=m +CONFIG_CRYPTO_NHPOLY1305_NEON=m +CONFIG_CRYPTO_SHA1_ARM_NEON=m +CONFIG_CRYPTO_SHA1_ARM_CE=m +CONFIG_CRYPTO_SHA2_ARM_CE=m +CONFIG_CRYPTO_SHA512_ARM=m +CONFIG_CRYPTO_AES_ARM=m +CONFIG_CRYPTO_AES_ARM_BS=m +CONFIG_CRYPTO_AES_ARM_CE=m +CONFIG_CRYPTO_CRC32_ARM_CE=m +CONFIG_CRYPTO_CRCT10DIF_ARM_CE=m CONFIG_CRYPTO_DEV_ROCKCHIP=m CONFIG_CRYPTO_DEV_SAFEXCEL=m CONFIG_CRYPTO_DEV_CCREE=m @@ -1916,29 +1437,23 @@ CONFIG_CRC4=m CONFIG_CRC7=m CONFIG_PRINTK_TIME=y CONFIG_BOOT_PRINTK_DELAY=y -CONFIG_PAGE_POISONING=y -CONFIG_PAGE_POISONING_NO_SANITY=y -CONFIG_PAGE_POISONING_ZERO=y CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 -CONFIG_DETECT_HUNG_TASK=y -CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y +# CONFIG_SLUB_DEBUG is not set +CONFIG_DEBUG_WX=y +CONFIG_SCHED_STACK_END_CHECK=y CONFIG_PANIC_ON_OOPS=y CONFIG_PANIC_TIMEOUT=-1 -CONFIG_SCHED_STACK_END_CHECK=y -CONFIG_DEBUG_SG=y -CONFIG_DEBUG_NOTIFIERS=y -CONFIG_DEBUG_CREDENTIALS=y +CONFIG_DETECT_HUNG_TASK=y +CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y CONFIG_SCHEDSTATS=y CONFIG_DEBUG_SPINLOCK=y -CONFIG_DEBUG_CREDENTIALS=y +CONFIG_DEBUG_SG=y +CONFIG_DEBUG_NOTIFIERS=y +CONFIG_BUG_ON_DATA_CORRUPTION=y CONFIG_RCU_CPU_STALL_TIMEOUT=60 CONFIG_FUNCTION_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y # CONFIG_UPROBE_EVENTS is not set -# CONFIG_RUNTIME_TESTING_MENU is not set -CONFIG_BUG_ON_DATA_CORRUPTION=y CONFIG_IO_STRICT_DEVMEM=y -CONFIG_DEBUG_WX=y -CONFIG_DEBUG_USER=y -CONFIG_STRICT_DEVMEM=y +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/buildroot-external/board/tinkerboard/post-build.sh b/buildroot-external/board/tinkerboard/post-build.sh index 58095fc..ed58fa9 100755 --- a/buildroot-external/board/tinkerboard/post-build.sh +++ b/buildroot-external/board/tinkerboard/post-build.sh @@ -1,5 +1,8 @@ #!/bin/sh +# Stop on error +set -e + # create VERSION file echo "VERSION=${PRODUCT_VERSION}" >"${TARGET_DIR}/VERSION" echo "PRODUCT=${PRODUCT}" >>"${TARGET_DIR}/VERSION" @@ -11,6 +14,19 @@ ln -sf ../VERSION "${TARGET_DIR}/boot/VERSION" # remove /etc/dbus-1/system.d/pulseaudio-system.conf rm -f "${TARGET_DIR}/etc/dbus-1/system.d/pulseaudio-system.conf" +rm -f "${TARGET_DIR}/usr/share/dbus-1/system.d/pulseaudio-system.conf" # remove /etc/init.d/S40xorg as not needed rm -f "${TARGET_DIR}/etc/init.d/S40xorg" + +# remove /etc/X11/xorg.conf.d/20-intel.conf as it will not work on rpi +rm -f "${TARGET_DIR}/etc/X11/xorg.conf.d/20-intel.conf" + +# remove /lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf as it is systemd only +rm -f "${TARGET_DIR}/lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf" + +# remove unnecessary /etc/init.d/fuse3 +rm -f "${TARGET_DIR}/etc/init.d/fuse3" + +# remove unnecessary /usr/share/clc +rm -rf "${TARGET_DIR}/usr/share/clc" diff --git a/buildroot-external/board/tinkerboard/post-image.sh b/buildroot-external/board/tinkerboard/post-image.sh index 7304f45..6ce1269 100755 --- a/buildroot-external/board/tinkerboard/post-image.sh +++ b/buildroot-external/board/tinkerboard/post-image.sh @@ -1,16 +1,19 @@ #!/bin/sh -#MKIMAGE=${HOST_DIR}/usr/bin/mkimage +# Stop on error +set -e + BOARD_DIR="$(dirname "$0")" -BOARD_NAME="$(basename "${BOARD_DIR}")" +#BOARD_NAME="$(basename "${BOARD_DIR}")" # bootEnv.txt file -cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/bootEnv.txt" "${BINARIES_DIR}/" +cp "${BOARD_DIR}/bootEnv.txt" "${BINARIES_DIR}/" + +# Use our own cmdline.txt +cp "${BOARD_DIR}/cmdline.txt" "${BINARIES_DIR}/" # VERSION File cp "${TARGET_DIR}/boot/VERSION" "${BINARIES_DIR}" # create *.img file using genimage -support/scripts/genimage.sh -c "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/genimage.cfg" - -exit $? +support/scripts/genimage.sh -c "${BOARD_DIR}/genimage.cfg" diff --git a/buildroot-external/board/tinkerboard/uboot-patches/0001-SPL-modify-load-address-of-U-Boot.patch b/buildroot-external/board/tinkerboard/uboot-patches/0001-SPL-modify-load-address-of-U-Boot.patch deleted file mode 100644 index 22e8b88..0000000 --- a/buildroot-external/board/tinkerboard/uboot-patches/0001-SPL-modify-load-address-of-U-Boot.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 983121a741192153492a61befc0e0fc61b9f8b14 Mon Sep 17 00:00:00 2001 -Message-Id: <983121a741192153492a61befc0e0fc61b9f8b14.1617731428.git.stefan@agner.ch> -From: Pascal Vizeli -Date: Fri, 24 Apr 2020 12:41:50 +0000 -Subject: [PATCH 1/2] SPL: modify load address of U-Boot - -Default load address of U-Boot is at sector 16384, which is where HAOS -has its first partition. Use 0x2000 (8192) instead. - -Signed-off-by: Pascal Vizeli -Signed-off-by: Stefan Agner ---- - configs/tinker-rk3288_defconfig | 1 + - configs/tinker-s-rk3288_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/configs/tinker-rk3288_defconfig b/configs/tinker-rk3288_defconfig -index 8686a66d13..c3363821dd 100644 ---- a/configs/tinker-rk3288_defconfig -+++ b/configs/tinker-rk3288_defconfig -@@ -88,3 +88,4 @@ CONFIG_VIDEO_ROCKCHIP=y - CONFIG_DISPLAY_ROCKCHIP_HDMI=y - CONFIG_CMD_DHRYSTONE=y - CONFIG_ERRNO_STR=y -+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x2000 -diff --git a/configs/tinker-s-rk3288_defconfig b/configs/tinker-s-rk3288_defconfig -index 22714833cc..f5dd23577c 100644 ---- a/configs/tinker-s-rk3288_defconfig -+++ b/configs/tinker-s-rk3288_defconfig -@@ -90,3 +90,4 @@ CONFIG_DISPLAY_ROCKCHIP_HDMI=y - CONFIG_CONSOLE_SCROLL_LINES=10 - CONFIG_CMD_DHRYSTONE=y - CONFIG_ERRNO_STR=y -+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x2000 --- -2.31.1 - diff --git a/buildroot-external/board/tinkerboard/uboot-patches/0002-pmic-enable-LDO2-vcc33_mipi-at-bootup.patch b/buildroot-external/board/tinkerboard/uboot-patches/0002-pmic-enable-LDO2-vcc33_mipi-at-bootup.patch deleted file mode 100644 index eed2768..0000000 --- a/buildroot-external/board/tinkerboard/uboot-patches/0002-pmic-enable-LDO2-vcc33_mipi-at-bootup.patch +++ /dev/null @@ -1,68 +0,0 @@ -From f9195bc5cb18f71117f6efc1c352209e62c53706 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: <983121a741192153492a61befc0e0fc61b9f8b14.1617731428.git.stefan@agner.ch> -References: <983121a741192153492a61befc0e0fc61b9f8b14.1617731428.git.stefan@agner.ch> -From: Pascal Vizeli -Date: Fri, 24 Apr 2020 11:37:55 +0000 -Subject: [PATCH 2/2] pmic: enable LDO2 vcc33_mipi at bootup - -Signed-off-by: Pascal Vizeli ---- - board/rockchip/tinker_rk3288/tinker-rk3288.c | 37 ++++++++++++++++++++ - 1 file changed, 37 insertions(+) - -diff --git a/board/rockchip/tinker_rk3288/tinker-rk3288.c b/board/rockchip/tinker_rk3288/tinker-rk3288.c -index f85209c649..6fa1bb0c66 100644 ---- a/board/rockchip/tinker_rk3288/tinker-rk3288.c -+++ b/board/rockchip/tinker_rk3288/tinker-rk3288.c -@@ -13,6 +13,7 @@ - #include - #include - #include -+#include - - static int get_ethaddr_from_eeprom(u8 *addr) - { -@@ -48,3 +49,39 @@ int mmc_get_env_dev(void) - - return 1; - } -+ -+ -+#ifdef CONFIG_DM_PMIC -+static int rockchip_set_regulator_on(const char *name, uint uv) -+{ -+ struct udevice *dev; -+ int ret; -+ -+ ret = regulator_get_by_platname(name, &dev); -+ if (ret) { -+ debug("%s: Cannot find regulator %s\n", __func__, name); -+ return ret; -+ } -+ ret = regulator_set_value(dev, uv); -+ if (ret) { -+ debug("%s: Cannot set regulator %s\n", __func__, name); -+ return ret; -+ } -+ ret = regulator_set_enable(dev, 1); -+ if (ret) { -+ debug("%s: Cannot enable regulator %s\n", __func__, name); -+ return ret; -+ } -+ -+ return 0; -+} -+ -+int power_init_board(void) -+{ -+ int ret = rockchip_set_regulator_on("vcc33_mipi", 3300000); -+ if (ret) -+ return ret; -+ -+ return 0; -+} -+#endif --- -2.31.1 - diff --git a/buildroot-external/board/tinkerboard/uboot-patches/0036-auto-enable-ums-mode-when-TinkerBoard-is-connected-t.patch b/buildroot-external/board/tinkerboard/uboot-patches/0036-auto-enable-ums-mode-when-TinkerBoard-is-connected-t.patch deleted file mode 100644 index 645cf6b..0000000 --- a/buildroot-external/board/tinkerboard/uboot-patches/0036-auto-enable-ums-mode-when-TinkerBoard-is-connected-t.patch +++ /dev/null @@ -1,177 +0,0 @@ -diff -ruN u-boot-2021.04-rc4.orig/arch/arm/mach-rockchip/rk3288/rk3288.c u-boot-2021.04-rc4/arch/arm/mach-rockchip/rk3288/rk3288.c ---- u-boot-2021.04-rc4.orig/arch/arm/mach-rockchip/rk3288/rk3288.c 2021-03-15 17:06:41.000000000 +0100 -+++ u-boot-2021.04-rc4/arch/arm/mach-rockchip/rk3288/rk3288.c 2021-03-28 22:37:12.919110399 +0200 -@@ -22,9 +22,45 @@ - #include - #include - #include -+#include - - DECLARE_GLOBAL_DATA_PTR; - -+enum project_id { -+ TinkerBoardS = 0, -+ TinkerBoard = 7, -+}; -+ -+enum pcb_id { -+ SR, -+ ER, -+ PR, -+}; -+ -+extern bool force_ums; -+ -+/* -+ * RK3288 IO memory map: -+ * -+ */ -+#define RKIO_GPIO0_PHYS 0xFF750000 -+#define RKIO_GRF_PHYS 0xFF770000 -+#define RKIO_GPIO1_PHYS 0xFF780000 -+#define RKIO_GPIO2_PHYS 0xFF790000 -+#define RKIO_GPIO3_PHYS 0xFF7A0000 -+#define RKIO_GPIO4_PHYS 0xFF7B0000 -+#define RKIO_GPIO5_PHYS 0xFF7C0000 -+#define RKIO_GPIO6_PHYS 0xFF7D0000 -+ -+/* gpio power down/up control */ -+#define GRF_GPIO2A_P 0x150 -+#define GRF_GPIO6A_P 0x190 -+ -+/* gpio input/output control */ -+#define GPIO_SWPORT_DR 0x00 -+#define GPIO_SWPORT_DDR 0x04 -+#define GPIO_EXT_PORT 0x50 -+ - #define GRF_BASE 0xff770000 - - const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { -@@ -117,6 +153,55 @@ - return rk3288_board_late_init(); - } - -+int check_force_enter_ums_mode(void) -+{ -+ int tmp; -+ enum pcb_id pcbid; -+ enum project_id projectid; -+ -+ // GPIO2_A1/GPIO2_A2/GPIO2_A3 pull up enable -+ // please check TRM V1.2 part1 page 152 -+ tmp = readl(RKIO_GRF_PHYS + GRF_GPIO2A_P); -+ writel((tmp&~(0x03F<<2)) | 0x3F<<(16 + 2) | 0x15<<2, RKIO_GRF_PHYS + GRF_GPIO2A_P); -+ -+ // GPIO2_A1/GPIO2_A2/GPIO2_A3/GPIO2_B0/GPIO2_B1/GPIO2_B2 set to input -+ tmp = readl(RKIO_GPIO2_PHYS + GPIO_SWPORT_DDR); -+ writel(tmp & ~(0x70E), RKIO_GPIO2_PHYS + GPIO_SWPORT_DDR); -+ -+ // GPIO6_A5 pull up/down disable -+ tmp = readl(RKIO_GRF_PHYS + GRF_GPIO6A_P); -+ writel((tmp&~(0x03<<10)) | 0x03<<(16 + 10), RKIO_GRF_PHYS + GRF_GPIO6A_P); -+ -+ // GPIO6_A5 set to input -+ tmp = readl(RKIO_GPIO6_PHYS + GPIO_SWPORT_DDR); -+ writel(tmp & ~(0x20), RKIO_GPIO6_PHYS + GPIO_SWPORT_DDR); -+ -+ mdelay(10); -+ -+ // read GPIO2_A1/GPIO2_A2/GPIO2_A3 value -+ projectid = (readl(RKIO_GPIO2_PHYS + GPIO_EXT_PORT) & 0x0E) >>1; -+ -+ // read GPIO2_B0/GPIO2_B1/GPIO2_B2 value -+ pcbid = (readl(RKIO_GPIO2_PHYS + GPIO_EXT_PORT) & 0x700) >> 8; -+ -+ // only Tinker Board S and the PR stage PCB has this function -+ if(projectid!=TinkerBoard && pcbid >= ER){ -+ printf("PC event = 0x%x\n", readl(RKIO_GPIO6_PHYS + GPIO_EXT_PORT)&0x20); -+ if((readl(RKIO_GPIO6_PHYS + GPIO_EXT_PORT)&0x20)==0x20) { -+ // SDP detected, enable EMMC and unlock usb current limit -+ printf("usb connected to SDP, force enter ums mode\n"); -+ force_ums = true; -+ // unlock usb current limit and re-enable EMMC -+ // set GPIO6_A6, GPIO6_A7 to high -+ tmp = readl(RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); -+ writel(tmp | 0xc0, RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); -+ tmp = readl(RKIO_GPIO6_PHYS + GPIO_SWPORT_DDR); -+ writel(tmp | 0xc0, RKIO_GPIO6_PHYS + GPIO_SWPORT_DDR); -+ } -+ } -+ return 0; -+} -+ - static int ft_rk3288w_setup(void *blob) - { - const char *path; -diff -ruN u-boot-2021.04-rc4.orig/cmd/usb_mass_storage.c u-boot-2021.04-rc4/cmd/usb_mass_storage.c ---- u-boot-2021.04-rc4.orig/cmd/usb_mass_storage.c 2021-03-15 17:06:41.000000000 +0100 -+++ u-boot-2021.04-rc4/cmd/usb_mass_storage.c 2021-03-28 22:37:12.919110399 +0200 -@@ -136,7 +136,7 @@ - return ret; - } - --static int do_usb_mass_storage(struct cmd_tbl *cmdtp, int flag, -+int do_usb_mass_storage(struct cmd_tbl *cmdtp, int flag, - int argc, char *const argv[]) - { - const char *usb_controller; -diff -ruN u-boot-2021.04-rc4.orig/common/autoboot.c u-boot-2021.04-rc4/common/autoboot.c ---- u-boot-2021.04-rc4.orig/common/autoboot.c 2021-03-15 17:06:41.000000000 +0100 -+++ u-boot-2021.04-rc4/common/autoboot.c 2021-03-28 22:39:35.533904675 +0200 -@@ -38,6 +38,8 @@ - static int stored_bootdelay; - static int menukey; - -+bool force_ums = false; -+ - #ifdef CONFIG_AUTOBOOT_ENCRYPTION - #define AUTOBOOT_STOP_STR_SHA256 CONFIG_AUTOBOOT_STOP_STR_SHA256 - #else -@@ -368,10 +370,25 @@ - return s; - } - -+extern int do_usb_mass_storage(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]); -+ - void autoboot_command(const char *s) - { - debug("### main_loop: bootcmd=\"%s\"\n", s ? s : ""); - -+ if (force_ums) { -+ // force to enter ums mode -+ char *local_args[4]; -+ char str1[]="ums", str2[]="1", str3[]="mmc", str4[]="0"; -+ -+ local_args[0]=str1; -+ local_args[1]=str2; -+ local_args[2]=str3; -+ local_args[3]=str4; -+ do_usb_mass_storage(NULL, 0, 4, local_args); -+ return; -+ } -+ - if (s && (stored_bootdelay == -2 || - (stored_bootdelay != -1 && !abortboot(stored_bootdelay)))) { - bool lock; -diff -ruN u-boot-2021.04-rc4.orig/common/board_r.c u-boot-2021.04-rc4/common/board_r.c ---- u-boot-2021.04-rc4.orig/common/board_r.c 2021-03-15 17:06:41.000000000 +0100 -+++ u-boot-2021.04-rc4/common/board_r.c 2021-03-28 22:37:12.919110399 +0200 -@@ -697,6 +697,7 @@ - #ifdef CONFIG_CMD_ONENAND - initr_onenand, - #endif -+ check_force_enter_ums_mode, - #ifdef CONFIG_MMC - initr_mmc, - #endif -diff -ruN u-boot-2021.04-rc4.orig/include/init.h u-boot-2021.04-rc4/include/init.h ---- u-boot-2021.04-rc4.orig/include/init.h 2021-03-15 17:06:41.000000000 +0100 -+++ u-boot-2021.04-rc4/include/init.h 2021-03-28 22:37:12.919110399 +0200 -@@ -294,6 +294,7 @@ - /* manipulate the U-Boot fdt before its relocation */ - int board_fix_fdt(void *rw_fdt_blob); - int board_late_init(void); -+int check_force_enter_ums_mode (void); - int board_postclk_init(void); /* after clocks/timebase, before env/serial */ - int board_early_init_r(void); - diff --git a/buildroot-external/board/tinkerboard/uboot-patches/0039-fixed-enter-ums-mode-fail-sometimes.patch b/buildroot-external/board/tinkerboard/uboot-patches/0039-fixed-enter-ums-mode-fail-sometimes.patch deleted file mode 100644 index 6b442e6..0000000 --- a/buildroot-external/board/tinkerboard/uboot-patches/0039-fixed-enter-ums-mode-fail-sometimes.patch +++ /dev/null @@ -1,115 +0,0 @@ -diff -ruN uboot-2020.10.orig/arch/arm/mach-rockchip/rk3288/rk3288.c uboot-2020.10/arch/arm/mach-rockchip/rk3288/rk3288.c ---- uboot-2020.10.orig/arch/arm/mach-rockchip/rk3288/rk3288.c 2020-10-19 15:31:48.054507491 +0200 -+++ uboot-2020.10/arch/arm/mach-rockchip/rk3288/rk3288.c 2020-10-19 15:31:59.126695845 +0200 -@@ -152,18 +152,67 @@ - return rk3288_board_late_init(); - } - -+/* -+* -+* usb current limit : GPIO6_A6 (H:unlock, L:lock) -+* -+*/ -+void usb_current_limit_ctrl(bool unlock_current) -+{ -+ int tmp; -+ -+ tmp = readl(RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); -+ if(unlock_current == true) -+ writel(tmp | 0x40, RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); -+ else -+ writel(tmp & ~0x40, RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); -+ -+ tmp = readl(RKIO_GPIO6_PHYS + GPIO_SWPORT_DDR); -+ writel(tmp | 0x40, RKIO_GPIO6_PHYS + GPIO_SWPORT_DDR); -+} -+ -+/* -+* -+* eMMC maskrom mode : GPIO6_A7 (H:disable maskrom, L:enable maskrom) -+* -+*/ -+void rk3288_maskrom_ctrl(bool enable_emmc) -+{ -+ int tmp; -+ -+ tmp = readl(RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); -+ if(enable_emmc == true) -+ writel(tmp | 0x80, RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); -+ else -+ writel(tmp & ~0x80, RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); -+ -+ tmp = readl(RKIO_GPIO6_PHYS + GPIO_SWPORT_DDR); -+ writel(tmp | 0x80, RKIO_GPIO6_PHYS + GPIO_SWPORT_DDR); -+ mdelay(10); -+} -+ -+/* -+* -+* project id : GPIO2_A3 GPIO2_A2 GPIO2_A1 -+* pcb id : GPIO2_B2 GPIO2_B1 GPIO2_B0 -+* SDP/CDP : GPIO6_A5 (H:SDP, L:CDP) -+* usb current limit : GPIO6_A6 (H:unlock, L:lock) -+* eMMC maskrom mode : GPIO6_A7 (H:disable maskrom, L:enable maskrom) -+* -+* Please check TRM V1.2 part1 page 152 for the following register settings -+* -+*/ - int check_force_enter_ums_mode(void) - { - int tmp; - enum pcb_id pcbid; - enum project_id projectid; - -- // GPIO2_A1/GPIO2_A2/GPIO2_A3 pull up enable -- // please check TRM V1.2 part1 page 152 -+ // GPIO2_A3/GPIO2_A2/GPIO2_A1 pull up enable - tmp = readl(RKIO_GRF_PHYS + GRF_GPIO2A_P); - writel((tmp&~(0x03F<<2)) | 0x3F<<(16 + 2) | 0x15<<2, RKIO_GRF_PHYS + GRF_GPIO2A_P); - -- // GPIO2_A1/GPIO2_A2/GPIO2_A3/GPIO2_B0/GPIO2_B1/GPIO2_B2 set to input -+ // GPIO2_A3/GPIO2_A2/GPIO2_A1/GPIO2_B2/GPIO2_B1/GPIO2_B0 set to input - tmp = readl(RKIO_GPIO2_PHYS + GPIO_SWPORT_DDR); - writel(tmp & ~(0x70E), RKIO_GPIO2_PHYS + GPIO_SWPORT_DDR); - -@@ -177,10 +226,10 @@ - - mdelay(10); - -- // read GPIO2_A1/GPIO2_A2/GPIO2_A3 value -+ // read GPIO2_A3/GPIO2_A2/GPIO2_A1 value - projectid = (readl(RKIO_GPIO2_PHYS + GPIO_EXT_PORT) & 0x0E) >>1; - -- // read GPIO2_B0/GPIO2_B1/GPIO2_B2 value -+ // read GPIO2_B2/GPIO2_B1/GPIO2_B0 value - pcbid = (readl(RKIO_GPIO2_PHYS + GPIO_EXT_PORT) & 0x700) >> 8; - - // only Tinker Board S and the PR stage PCB has this function -@@ -190,12 +239,10 @@ - // SDP detected, enable EMMC and unlock usb current limit - printf("usb connected to SDP, force enter ums mode\n"); - force_ums = true; -- // unlock usb current limit and re-enable EMMC -- // set GPIO6_A6, GPIO6_A7 to high -- tmp = readl(RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); -- writel(tmp | 0xc0, RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); -- tmp = readl(RKIO_GPIO6_PHYS + GPIO_SWPORT_DDR); -- writel(tmp | 0xc0, RKIO_GPIO6_PHYS + GPIO_SWPORT_DDR); -+ rk3288_maskrom_ctrl(true); -+ usb_current_limit_ctrl(true); -+ } else { -+ usb_current_limit_ctrl(false); - } - } - return 0; -diff -ruN uboot-2020.10.orig/arch/arm/mach-rockchip/spl.c uboot-2020.10/arch/arm/mach-rockchip/spl.c ---- uboot-2020.10.orig/arch/arm/mach-rockchip/spl.c 2020-10-05 17:15:32.000000000 +0200 -+++ uboot-2020.10/arch/arm/mach-rockchip/spl.c 2020-10-19 15:32:27.039170694 +0200 -@@ -125,6 +125,7 @@ - - board_early_init_f(); - -+ usb_current_limit_ctrl(true); - ret = spl_early_init(); - if (ret) { - printf("spl_early_init() failed: %d\n", ret); diff --git a/buildroot-external/board/tinkerboard/uboot-patches/0045-modify-UMS-name-of-uboot.patch b/buildroot-external/board/tinkerboard/uboot-patches/0045-modify-UMS-name-of-uboot.patch deleted file mode 100644 index 16e242e..0000000 --- a/buildroot-external/board/tinkerboard/uboot-patches/0045-modify-UMS-name-of-uboot.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/cmd/usb_mass_storage.c b/cmd/usb_mass_storage.c -index cb5260b558..4c3da13115 100644 ---- a/cmd/usb_mass_storage.c -+++ b/cmd/usb_mass_storage.c -@@ -108,7 +108,7 @@ static int ums_init(const char *devtype, const char *devnums_part_str) - name = malloc(UMS_NAME_LEN); - if (!name) - goto cleanup; -- snprintf(name, UMS_NAME_LEN, "UMS disk %d", ums_count); -+ snprintf(name, UMS_NAME_LEN, "RaspberryMatic UMS disk %d", ums_count); - ums[ums_count].name = name; - ums[ums_count].block_dev = *block_dev; - diff --git a/buildroot-external/board/tinkerboard/uboot-patches/0049-added-timeout-when-force-entering-UMS-mode.patch b/buildroot-external/board/tinkerboard/uboot-patches/0049-added-timeout-when-force-entering-UMS-mode.patch deleted file mode 100644 index f5be6bf..0000000 --- a/buildroot-external/board/tinkerboard/uboot-patches/0049-added-timeout-when-force-entering-UMS-mode.patch +++ /dev/null @@ -1,115 +0,0 @@ -diff -ruN uboot-2020.10.orig/arch/arm/mach-rockchip/rk3288/rk3288.c uboot-2020.10/arch/arm/mach-rockchip/rk3288/rk3288.c ---- uboot-2020.10.orig/arch/arm/mach-rockchip/rk3288/rk3288.c 2020-10-19 15:33:15.255988933 +0200 -+++ uboot-2020.10/arch/arm/mach-rockchip/rk3288/rk3288.c 2020-10-19 15:35:13.365992573 +0200 -@@ -161,6 +161,7 @@ - { - int tmp; - -+ printf("%s: unlock_current = %d\n", __func__, unlock_current); - tmp = readl(RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); - if(unlock_current == true) - writel(tmp | 0x40, RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); -@@ -180,6 +181,7 @@ - { - int tmp; - -+ printf("%s: enable_emmc = %d\n", __func__, enable_emmc); - tmp = readl(RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); - if(enable_emmc == true) - writel(tmp | 0x80, RKIO_GPIO6_PHYS + GPIO_SWPORT_DR); -diff -ruN uboot-2020.10.orig/cmd/usb_mass_storage.c uboot-2020.10/cmd/usb_mass_storage.c ---- uboot-2020.10.orig/cmd/usb_mass_storage.c 2020-10-19 15:33:15.259989001 +0200 -+++ uboot-2020.10/cmd/usb_mass_storage.c 2020-10-19 15:35:59.882781689 +0200 -@@ -218,6 +218,9 @@ - usb_gadget_handle_interrupts(controller_index); - - rc = fsg_main_thread(NULL); -+ if (rc == -ETIMEDOUT) { -+ goto cleanup_register; -+ } - if (rc) { - /* Check I/O error */ - if (rc == -EIO) -diff -ruN uboot-2020.10.orig/common/autoboot.c uboot-2020.10/common/autoboot.c ---- uboot-2020.10.orig/common/autoboot.c 2020-10-19 15:33:15.255988933 +0200 -+++ uboot-2020.10/common/autoboot.c 2020-10-19 15:37:22.820188645 +0200 -@@ -38,6 +38,7 @@ - static int menukey; - - bool force_ums = false; -+bool getdescriptor = false; - - #ifdef CONFIG_AUTOBOOT_ENCRYPTION - #define AUTOBOOT_STOP_STR_SHA256 CONFIG_AUTOBOOT_STOP_STR_SHA256 -@@ -376,8 +377,11 @@ - local_args[1]=str2; - local_args[2]=str3; - local_args[3]=str4; -- do_usb_mass_storage(NULL, 0, 4, local_args); -- return; -+ -+ if (do_usb_mass_storage(NULL, 0, 4, local_args) == -ETIMEDOUT) { -+ rk3288_maskrom_ctrl(false); -+ usb_current_limit_ctrl(false); -+ } - } - - if (stored_bootdelay != -1 && s && !abortboot(stored_bootdelay)) { -diff -ruN uboot-2020.10.orig/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c uboot-2020.10/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c ---- uboot-2020.10.orig/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c 2020-10-05 17:15:32.000000000 +0200 -+++ uboot-2020.10/drivers/usb/gadget/dwc2_udc_otg_xfer_dma.c 2020-10-19 15:38:35.485421353 +0200 -@@ -1383,6 +1383,7 @@ - debug_cond(DEBUG_SETUP != 0, - "%s: *** USB_REQ_GET_DESCRIPTOR\n", - __func__); -+ getdescriptor = true; - break; - - case USB_REQ_SET_INTERFACE: -diff -ruN uboot-2020.10.orig/drivers/usb/gadget/f_mass_storage.c uboot-2020.10/drivers/usb/gadget/f_mass_storage.c ---- uboot-2020.10.orig/drivers/usb/gadget/f_mass_storage.c 2020-10-05 17:15:32.000000000 +0200 -+++ uboot-2020.10/drivers/usb/gadget/f_mass_storage.c 2020-10-19 15:40:17.815157292 +0200 -@@ -655,7 +655,7 @@ - static int sleep_thread(struct fsg_common *common) - { - int rc = 0; -- int i = 0, k = 0; -+ int i = 0, k = 0, j = 0; - - /* Wait until a signal arrives or we are woken up */ - for (;;) { -@@ -666,6 +666,7 @@ - busy_indicator(); - i = 0; - k++; -+ j++; - } - - if (k == 10) { -@@ -680,6 +681,13 @@ - k = 0; - } - -+ if (j == 300) { //about 3 seconds -+ if(force_ums && !getdescriptor) { -+ printf("wait for usb get descriptor cmd timeout\n"); -+ return -ETIMEDOUT; -+ } -+ } -+ - usb_gadget_handle_interrupts(controller_index); - } - common->thread_wakeup_needed = 0; -diff -ruN uboot-2020.10.orig/include/linux/usb/gadget.h uboot-2020.10/include/linux/usb/gadget.h ---- uboot-2020.10.orig/include/linux/usb/gadget.h 2020-10-05 17:15:32.000000000 +0200 -+++ uboot-2020.10/include/linux/usb/gadget.h 2020-10-19 15:40:55.427795361 +0200 -@@ -25,6 +25,9 @@ - - struct usb_ep; - -+extern bool force_ums; -+extern bool getdescriptor; -+ - /** - * struct usb_request - describes one i/o request - * @buf: Buffer used for data. Always provide this; some controllers diff --git a/buildroot-external/board/tinkerboard/uboot.config b/buildroot-external/board/tinkerboard/uboot.config new file mode 100644 index 0000000..5d04c12 --- /dev/null +++ b/buildroot-external/board/tinkerboard/uboot.config @@ -0,0 +1,11 @@ +CONFIG_ENV_SIZE=0x1f000 +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x200 +CONFIG_OF_LIBFDT_OVERLAY=y + +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_MANUFACTURER="ASUS" +CONFIG_USB_GADGET_VENDOR_NUM=0x0b05 +CONFIG_USB_GADGET_PRODUCT_NUM=0x7820 +CONFIG_USB_GADGET_DOWNLOAD=y + +# CONFIG_USB_STORAGE is not set diff --git a/buildroot-external/board/tinkerboard/uboot_defconfig b/buildroot-external/board/tinkerboard/uboot_defconfig deleted file mode 100644 index 96ffa82..0000000 --- a/buildroot-external/board/tinkerboard/uboot_defconfig +++ /dev/null @@ -1,95 +0,0 @@ -CONFIG_ARM=y -CONFIG_ARCH_ROCKCHIP=y -CONFIG_SYS_TEXT_BASE=0x01000000 -CONFIG_SPL_GPIO_SUPPORT=y -CONFIG_SYS_MALLOC_F_LEN=0x4000 -CONFIG_NR_DRAM_BANKS=1 -CONFIG_ROCKCHIP_RK3288=y -CONFIG_TARGET_TINKER_RK3288=y -CONFIG_SPL_STACK_R_ADDR=0x800000 -CONFIG_SPL_SIZE_LIMIT=307200 -CONFIG_DEBUG_UART_BASE=0xff690000 -CONFIG_DEBUG_UART_CLOCK=24000000 -CONFIG_DEFAULT_DEVICE_TREE="rk3288-tinker-s" -CONFIG_DEBUG_UART=y -# CONFIG_ANDROID_BOOT_IMAGE is not set -CONFIG_BOOTDELAY=-2 -CONFIG_USE_PREBOOT=y -CONFIG_DEFAULT_FDT_FILE="rk3288-tinker-s.dtb" -CONFIG_SILENT_CONSOLE=y -CONFIG_SILENT_U_BOOT_ONLY=y -CONFIG_SYS_DEVICE_NULLDEV=y -CONFIG_DISPLAY_BOARDINFO_LATE=y -CONFIG_SPL_STACK_R=y -CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x300000 -CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x200 -CONFIG_SPL_I2C_SUPPORT=y -CONFIG_SPL_POWER_SUPPORT=y -CONFIG_CMD_GPIO=y -CONFIG_CMD_GPT=y -CONFIG_CMD_I2C=y -CONFIG_CMD_MMC=y -CONFIG_CMD_SPI=y -CONFIG_CMD_USB=y -CONFIG_CMD_USB_MASS_STORAGE=y -# CONFIG_CMD_SETEXPR is not set -CONFIG_CMD_CACHE=y -CONFIG_CMD_TIME=y -CONFIG_CMD_PMIC=y -CONFIG_CMD_REGULATOR=y -# CONFIG_SPL_DOS_PARTITION is not set -# CONFIG_SPL_EFI_PARTITION is not set -CONFIG_SPL_PARTITION_UUIDS=y -CONFIG_SPL_OF_CONTROL=y -CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" -CONFIG_ENV_IS_IN_EXT4=y -CONFIG_ENV_EXT4_INTERFACE="mmc" -CONFIG_ENV_EXT4_DEVICE_AND_PART="0:auto" -CONFIG_ENV_EXT4_FILE="/boot/boot.env" -CONFIG_SYS_RELOC_GD_ENV_ADDR=y -CONFIG_REGMAP=y -CONFIG_SPL_REGMAP=y -CONFIG_SYSCON=y -CONFIG_SPL_SYSCON=y -# CONFIG_SPL_SIMPLE_BUS is not set -CONFIG_CLK=y -CONFIG_SPL_CLK=y -CONFIG_FASTBOOT_CMD_OEM_FORMAT=y -CONFIG_ROCKCHIP_GPIO=y -CONFIG_SYS_I2C_ROCKCHIP=y -CONFIG_MISC=y -CONFIG_I2C_EEPROM=y -CONFIG_MMC_DW=y -CONFIG_MMC_DW_ROCKCHIP=y -CONFIG_SF_DEFAULT_SPEED=20000000 -CONFIG_DM_ETH=y -CONFIG_ETH_DESIGNWARE=y -CONFIG_GMAC_ROCKCHIP=y -CONFIG_PINCTRL=y -CONFIG_SPL_PINCTRL=y -# CONFIG_SPL_PINCTRL_FULL is not set -CONFIG_DM_PMIC=y -CONFIG_PMIC_RK8XX=y -CONFIG_SPL_DM_REGULATOR=y -CONFIG_DM_REGULATOR_FIXED=y -CONFIG_SPL_DM_REGULATOR_FIXED=y -CONFIG_REGULATOR_RK8XX=y -CONFIG_PWM_ROCKCHIP=y -CONFIG_RAM=y -CONFIG_SPL_RAM=y -CONFIG_DEBUG_UART_SHIFT=2 -CONFIG_SYSRESET=y -CONFIG_USB=y -CONFIG_USB_DWC2=y -CONFIG_ROCKCHIP_USB2_PHY=y -CONFIG_USB_GADGET=y -CONFIG_USB_GADGET_MANUFACTURER="ASUS" -CONFIG_USB_GADGET_VENDOR_NUM=0x0b05 -CONFIG_USB_GADGET_PRODUCT_NUM=0x7820 -CONFIG_USB_GADGET_DWC2_OTG=y -CONFIG_USB_HOST_ETHER=y -CONFIG_USB_ETHER_ASIX=y -CONFIG_USB_ETHER_SMSC95XX=y -CONFIG_CMD_DHRYSTONE=y -CONFIG_ERRNO_STR=y -CONFIG_OF_LIBFDT_OVERLAY=y diff --git a/buildroot-external/bootloader/uboot.config b/buildroot-external/bootloader/uboot.config new file mode 100644 index 0000000..962ac8f --- /dev/null +++ b/buildroot-external/bootloader/uboot.config @@ -0,0 +1,38 @@ +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_DISTRO_DEFAULTS=y +CONFIG_EXPERT=y +# CONFIG_DISPLAY_CPUINFO is not set +# CONFIG_DISPLAY_BOARDINFO is not set +CONFIG_BOOTDELAY=-2 +CONFIG_SYS_PROMPT="ThinRoot> " +CONFIG_DOS_PARTITION=y +# CONFIG_ISO_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +CONFIG_FS_EXT4=y +CONFIG_FS_FAT=y +# CONFIG_ENV_IS_IN_FAT is not set +# CONFIG_ENV_IS_IN_EXT4 is not set +# CONFIG_ENV_IS_IN_MMC is not set +CONFIG_ENV_IS_NOWHERE=y +# CONFIG_EFI_LOADER is not set +CONFIG_CMD_SETEXPR=y +CONFIG_AUTOBOOT_KEYED=y +CONFIG_AUTOBOOT_PROMPT="Hit to stop autoboot in %2ds\n" +CONFIG_AUTOBOOT_DELAY_STR="\x18" +CONFIG_BOOT_RETRY=y +CONFIG_BOOT_RETRY_TIME=20 +CONFIG_RESET_TO_RETRY=y +CONFIG_SILENT_CONSOLE=y +CONFIG_SPL_SILENT_CONSOLE=y +CONFIG_TPL_SILENT_CONSOLE=y +CONFIG_SILENT_U_BOOT_ONLY=y +CONFIG_DISPLAY_BOARDINFO=y +# CONFIG_REQUIRE_SERIAL_CONSOLE is not set +# CONFIG_SERIAL_PRESENT is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_GENERIC=y +CONFIG_USB_OHCI_HCD=y +# CONFIG_VIDEO_LOGO is not set +CONFIG_USB_FUNCTION_MASS_STORAGE=y +CONFIG_ERRNO_STR=y +CONFIG_LZ4=y diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config new file mode 100644 index 0000000..3c6eefc --- /dev/null +++ b/buildroot-external/configs/generic-x86_64.config @@ -0,0 +1,67 @@ +BR2_x86_64=y +BR2_x86_corei7=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_12=y +# BR2_TARGET_ENABLE_ROOT_LOGIN is not set +BR2_ROOTFS_USERS_TABLES="${BR2_EXTERNAL_THINROOT_PATH}/board/generic-x86_64/users_table.txt" +BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.68" +BR2_LINUX_KERNEL_DEFCONFIG="x86_64" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS=y +BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL=y +BR2_PACKAGE_XDRIVER_XF86_VIDEO_AMDGPU=y +BR2_PACKAGE_XDRIVER_XF86_VIDEO_INTEL=y +BR2_PACKAGE_LINUX_FIRMWARE_I915=y +BR2_PACKAGE_LINUX_FIRMWARE_RADEON=y +BR2_PACKAGE_LINUX_FIRMWARE_IBT=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9XXX=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_QUZ=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y +BR2_PACKAGE_LINUX_FIRMWARE_AMD_UCODE=y +BR2_PACKAGE_INTEL_MICROCODE=y +BR2_PACKAGE_LIBDRM_RADEON=y +BR2_PACKAGE_LIBDRM_AMDGPU=y +BR2_PACKAGE_BLUEZ5_UTILS=y +BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y +BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y +BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED=y +BR2_PACKAGE_LIBKRB5=y +BR2_PACKAGE_LIBNSS=y +BR2_PACKAGE_CUPS=y +BR2_PACKAGE_LIBV4L_UTILS=y +BR2_TARGET_ROOTFS_INITRAMFS=y + +# select/deselect webkiosk/thinroot applications +BR2_PACKAGE_QUTSELECT=y +BR2_PACKAGE_THINLINC=y +BR2_PACKAGE_FREERDP=y +# BR2_PACKAGE_FREERDP_CLIENT_WL is not set +BR2_PACKAGE_VIRT_VIEWER=y +BR2_PACKAGE_WEBKITGTK=y +BR2_PACKAGE_WEBKITGTK_HTTPS=y +BR2_PACKAGE_WEBKITGTK_MULTIMEDIA=y +BR2_PACKAGE_WEBKITGTK_MINIBROWSER=y +#BR2_PACKAGE_WPEWEBKIT=y +#BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA=y +#BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM=y +#BR2_PACKAGE_COG=y +#BR2_PACKAGE_YOE_KIOSK_BROWSER=y +#BR2_PACKAGE_QT5=y +#BR2_PACKAGE_QT5BASE_OPENGL_ES2=y +#BR2_PACKAGE_QT5BASE_LINUXFB=y +#BR2_PACKAGE_QT5BASE_XCB=y +#BR2_PACKAGE_QT5BASE_EGLFS=y +#BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb" +#BR2_PACKAGE_QT5BASE_GIF=y +#BR2_PACKAGE_QT5LOCATION=y +#BR2_PACKAGE_QT5MULTIMEDIA=y +#BR2_PACKAGE_QT5DECLARATIVE=y +#BR2_PACKAGE_QT_WEBKIT_KIOSK=y diff --git a/buildroot-external/configs/intelnuc.config b/buildroot-external/configs/intelnuc.config deleted file mode 100644 index 653e3d5..0000000 --- a/buildroot-external/configs/intelnuc.config +++ /dev/null @@ -1,34 +0,0 @@ -BR2_x86_64=y -BR2_x86_corei7=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y -# BR2_TARGET_ENABLE_ROOT_LOGIN is not set -BR2_ROOTFS_USERS_TABLES="${BR2_EXTERNAL_THINROOT_PATH}/board/intelnuc/users_table.txt" -BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/intelnuc/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/intelnuc/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/intelnuc" -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.23" -BR2_LINUX_KERNEL_DEFCONFIG="x86_64" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/intelnuc/kernel.config" -BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y -BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915=y -BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS=y -BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL=y -BR2_PACKAGE_XDRIVER_XF86_VIDEO_AMDGPU=y -BR2_PACKAGE_XDRIVER_XF86_VIDEO_INTEL=y -BR2_PACKAGE_LINUX_FIRMWARE_I915=y -BR2_PACKAGE_LINUX_FIRMWARE_RADEON=y -BR2_PACKAGE_LINUX_FIRMWARE_IBT=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9XXX=y -BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_QUZ=y -BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y -BR2_PACKAGE_LIBDRM_RADEON=y -BR2_PACKAGE_LIBDRM_AMDGPU=y -BR2_PACKAGE_BLUEZ5_UTILS=y -BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y -BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y -BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED=y -BR2_TARGET_ROOTFS_INITRAMFS=y diff --git a/buildroot-external/configs/rpi3.config b/buildroot-external/configs/rpi3.config index 3ef3b42..645774f 100644 --- a/buildroot-external/configs/rpi3.config +++ b/buildroot-external/configs/rpi3.config @@ -1,134 +1,40 @@ BR2_aarch64=y -BR2_ARM_FPU_VFPV4=y -BR2_DL_DIR="$(TOPDIR)/../download" -BR2_KERNEL_MIRROR="https://www.kernel.org/pub" -BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" -BR2_CCACHE=y -BR2_OPTIMIZE_2=y -BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_THINROOT_PATH)/patches" -BR2_RELRO_PARTIAL=y -BR2_TOOLCHAIN_BUILDROOT_GLIBC=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y -BR2_TOOLCHAIN_BUILDROOT_CXX=y -BR2_GCC_ENABLE_LTO=y -BR2_TARGET_GENERIC_HOSTNAME="thinroot" -BR2_TARGET_GENERIC_ISSUE="Welcome to thinRoot" -BR2_TARGET_GENERIC_PASSWD_SHA512=y -BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y -BR2_TARGET_GENERIC_GETTY_PORT="tty2" -BR2_ENABLE_LOCALE_WHITELIST="C en_US de_DE" -BR2_GENERATE_LOCALE="en_US de_DE" -BR2_SYSTEM_ENABLE_NLS=y -BR2_TARGET_TZ_INFO=y -BR2_TARGET_LOCALTIME="Europe/Berlin" +BR2_cortex_a53=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_LIB_DIR="lib" +BR2_ROOTFS_LIB32_DIR="lib32" BR2_ROOTFS_USERS_TABLES="${BR2_EXTERNAL_THINROOT_PATH}/board/rpi3/users_table.txt" -BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_THINROOT_PATH)/rootfs-overlay" BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi3/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi3/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi3" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/stable_20240124.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/stable_20250127.tar.gz" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi3/kernel-patches" BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi3/kernel_defconfig" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-arm64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/rpi3/kernel.config" BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2837-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2837-rpi-3-b-plus broadcom/bcm2710-rpi-2-b broadcom/bcm2710-rpi-cm3 broadcom/bcm2837-rpi-3-a-plus broadcom/bcm2837-rpi-cm3-io3" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2710-rpi-2-b broadcom/bcm2710-rpi-cm3 broadcom/bcm2710-rpi-zero-2 broadcom/bcm2710-rpi-zero-2-w" +BR2_LINUX_KERNEL_INSTALL_INTREE_OVERLAYS=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y -BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_THINROOT_PATH)/Busybox.config" -BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y -BR2_PACKAGE_ALSA_UTILS=y -BR2_PACKAGE_ALSA_UTILS_AMIXER=y -BR2_PACKAGE_GSTREAMER1=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA=y -BR2_PACKAGE_GST1_PLUGINS_GOOD=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX=y -BR2_PACKAGE_GST1_PLUGINS_BAD=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX=y -BR2_PACKAGE_GST1_LIBAV=y -BR2_PACKAGE_PULSEAUDIO=y -BR2_PACKAGE_DOSFSTOOLS=y -BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y -BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y -BR2_PACKAGE_E2FSPROGS=y -BR2_PACKAGE_EXFAT=y -BR2_PACKAGE_F2FS_TOOLS=y -BR2_PACKAGE_NTFS_3G=y -BR2_PACKAGE_DEJAVU=y -BR2_PACKAGE_LIBERATION=y -BR2_PACKAGE_FREERDP=y -BR2_PACKAGE_MESA3D=y -BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D=y -BR2_PACKAGE_MESA3D_OPENGL_GLX=y -BR2_PACKAGE_MESA3D_OPENGL_ES=y -BR2_PACKAGE_PSPLASH=y -BR2_PACKAGE_PSPLASH_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/patches/psplash/hzdr" -BR2_PACKAGE_QT5BASE_OPENGL_ES2=y -BR2_PACKAGE_QT5BASE_LINUXFB=y -BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb" -BR2_PACKAGE_QT5BASE_GIF=y -BR2_PACKAGE_QT5LOCATION=y -BR2_PACKAGE_QT5MULTIMEDIA=y -BR2_PACKAGE_QT5SENSORS=y -BR2_PACKAGE_QT5WEBENGINE=y -BR2_PACKAGE_XORG7=y -BR2_PACKAGE_XSERVER_XORG_SERVER=y -BR2_PACKAGE_XLIB_LIBXAW=y -BR2_PACKAGE_XAPP_XPROP=y -BR2_PACKAGE_XAPP_XRANDR=y -BR2_PACKAGE_XAPP_XSETROOT=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y +BR2_PACKAGE_LIBDRM_VC4=y BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV=y BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBTURBO=y -BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC=y -BR2_PACKAGE_NODM=y -BR2_PACKAGE_XDOTOOL=y -BR2_PACKAGE_OPENBOX=y BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI=y BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT=y BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI=y -BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE=y -BR2_PACKAGE_RPI_FIRMWARE_VERSION="1.20220331" +BR2_PACKAGE_RPI_FIRMWARE_VERSION="1.20211118" BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y -BR2_PACKAGE_ACPID=y -BR2_PACKAGE_EUDEV_RULES_GEN=y BR2_PACKAGE_I2C_TOOLS=y BR2_PACKAGE_RPI_USERLAND=y BR2_PACKAGE_UBOOT_TOOLS=y BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE=y BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE=y BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE=y -BR2_PACKAGE_USBMOUNT=y -BR2_PACKAGE_CA_CERTIFICATES=y -BR2_PACKAGE_LIBGCRYPT=y -BR2_PACKAGE_LEVELDB=y -BR2_PACKAGE_CAIRO_PNG=y -BR2_PACKAGE_OPENJPEG=y -BR2_PACKAGE_WAYLAND=y -BR2_PACKAGE_WOFF2=y -BR2_PACKAGE_LIBSOUP=y -BR2_PACKAGE_LIBTASN1=y -BR2_PACKAGE_READLINE=y -BR2_PACKAGE_CHRONY=y -BR2_PACKAGE_DHCPCD=y -BR2_PACKAGE_DROPBEAR=y -BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS=y -BR2_PACKAGE_NTP=y -# BR2_PACKAGE_NTP_NTPD is not set -BR2_PACKAGE_NTP_NTPDATE=y -BR2_PACKAGE_WGET=y -BR2_PACKAGE_IRQBALANCE=y -BR2_PACKAGE_TAR=y -BR2_PACKAGE_UTIL_LINUX_RFKILL=y BR2_TARGET_ROOTFS_CPIO=y BR2_TARGET_ROOTFS_CPIO_LZ4=y BR2_TARGET_ROOTFS_CPIO_UIMAGE=y @@ -136,20 +42,40 @@ BR2_TARGET_ROOTFS_CPIO_UIMAGE=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.04" -BR2_TARGET_UBOOT_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi3/uboot-patches" -BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y -BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi3/uboot_defconfig" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_3" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_THINROOT_PATH)/board/rpi3/uboot.config" +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y BR2_TARGET_UBOOT_NEEDS_DTC=y -BR2_PACKAGE_HOST_DOSFSTOOLS=y -BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GENIMAGE=y -BR2_PACKAGE_HOST_MKPASSWD=y -BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi3/boot.cmd" +BR2_PACKAGE_MULTILIB32=y +BR2_PACKAGE_MULTILIB32_CONFIG_FRAGMENT_FILE="multilib32_arm_a53.config" + +# select/deselect webkiosk/thinroot applications BR2_PACKAGE_QUTSELECT=y -BR2_PACKAGE_HOTKEYD=y -BR2_PACKAGE_NUMLOCKX=y -BR2_PACKAGE_XPRINTIDLE=y -BR2_PACKAGE_QT_WEBENGINE_KIOSK=y +BR2_PACKAGE_THINLINC=y +BR2_PACKAGE_FREERDP=y +# BR2_PACKAGE_FREERDP_CLIENT_WL is not set +BR2_PACKAGE_VIRT_VIEWER=y +BR2_PACKAGE_WEBKITGTK=y +BR2_PACKAGE_WEBKITGTK_HTTPS=y +BR2_PACKAGE_WEBKITGTK_MULTIMEDIA=y +BR2_PACKAGE_WEBKITGTK_MINIBROWSER=y +#BR2_PACKAGE_WPEWEBKIT=y +#BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA=y +#BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM=y +#BR2_PACKAGE_COG=y +#BR2_PACKAGE_YOE_KIOSK_BROWSER=y +#BR2_PACKAGE_QT5=y +#BR2_PACKAGE_QT5BASE_OPENGL_ES2=y +#BR2_PACKAGE_QT5BASE_LINUXFB=y +#BR2_PACKAGE_QT5BASE_XCB=y +#BR2_PACKAGE_QT5BASE_EGLFS=y +#BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb" +#BR2_PACKAGE_QT5BASE_GIF=y +#BR2_PACKAGE_QT5LOCATION=y +#BR2_PACKAGE_QT5MULTIMEDIA=y +#BR2_PACKAGE_QT5DECLARATIVE=y +#BR2_PACKAGE_QT_WEBKIT_KIOSK=y diff --git a/buildroot-external/configs/rpi4.config b/buildroot-external/configs/rpi4.config index cdf79b3..b0b00eb 100644 --- a/buildroot-external/configs/rpi4.config +++ b/buildroot-external/configs/rpi4.config @@ -1,134 +1,39 @@ BR2_aarch64=y BR2_cortex_a72=y -BR2_ARM_FPU_VFPV4=y -BR2_DL_DIR="$(TOPDIR)/../download" -BR2_KERNEL_MIRROR="https://www.kernel.org/pub" -BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" -BR2_CCACHE=y -BR2_OPTIMIZE_2=y -BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_THINROOT_PATH)/patches" -BR2_RELRO_PARTIAL=y -BR2_TOOLCHAIN_BUILDROOT_GLIBC=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y -BR2_TOOLCHAIN_BUILDROOT_CXX=y -BR2_GCC_ENABLE_LTO=y -BR2_TARGET_GENERIC_HOSTNAME="thinroot" -BR2_TARGET_GENERIC_ISSUE="Welcome to thinRoot" -BR2_TARGET_GENERIC_PASSWD_SHA512=y -BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y -BR2_TARGET_GENERIC_GETTY_PORT="tty2" -BR2_ENABLE_LOCALE_WHITELIST="C en_US de_DE" -BR2_GENERATE_LOCALE="en_US de_DE" -BR2_SYSTEM_ENABLE_NLS=y -BR2_TARGET_TZ_INFO=y -BR2_TARGET_LOCALTIME="Europe/Berlin" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_LIB_DIR="lib" +BR2_ROOTFS_LIB32_DIR="lib32" BR2_ROOTFS_USERS_TABLES="${BR2_EXTERNAL_THINROOT_PATH}/board/rpi4/users_table.txt" -BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_THINROOT_PATH)/rootfs-overlay" BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/stable_20240124.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/stable_20250127.tar.gz" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4/kernel-patches" BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4/kernel_defconfig" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-arm64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4/kernel.config" BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-4-b broadcom/bcm2711-rpi-400 broadcom/bcm2711-rpi-cm4" +BR2_LINUX_KERNEL_INSTALL_INTREE_OVERLAYS=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y -BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_THINROOT_PATH)/Busybox.config" -BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y -BR2_PACKAGE_ALSA_UTILS=y -BR2_PACKAGE_ALSA_UTILS_AMIXER=y -BR2_PACKAGE_GSTREAMER1=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA=y -BR2_PACKAGE_GST1_PLUGINS_GOOD=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX=y -BR2_PACKAGE_GST1_PLUGINS_BAD=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX=y -BR2_PACKAGE_GST1_LIBAV=y -BR2_PACKAGE_PULSEAUDIO=y -BR2_PACKAGE_DOSFSTOOLS=y -BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y -BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y -BR2_PACKAGE_E2FSPROGS=y -BR2_PACKAGE_EXFAT=y -BR2_PACKAGE_F2FS_TOOLS=y -BR2_PACKAGE_NTFS_3G=y -BR2_PACKAGE_DEJAVU=y -BR2_PACKAGE_LIBERATION=y -BR2_PACKAGE_FREERDP=y -BR2_PACKAGE_MESA3D=y -BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D=y -BR2_PACKAGE_MESA3D_OPENGL_GLX=y -BR2_PACKAGE_MESA3D_OPENGL_ES=y -BR2_PACKAGE_PSPLASH=y -BR2_PACKAGE_PSPLASH_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/patches/psplash/hzdr" -BR2_PACKAGE_QT5BASE_OPENGL_ES2=y -BR2_PACKAGE_QT5BASE_LINUXFB=y -BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb" -BR2_PACKAGE_QT5BASE_GIF=y -BR2_PACKAGE_QT5LOCATION=y -BR2_PACKAGE_QT5MULTIMEDIA=y -BR2_PACKAGE_QT5SENSORS=y -BR2_PACKAGE_QT5WEBENGINE=y -BR2_PACKAGE_XORG7=y -BR2_PACKAGE_XSERVER_XORG_SERVER=y -BR2_PACKAGE_XLIB_LIBXAW=y -BR2_PACKAGE_XAPP_XPROP=y -BR2_PACKAGE_XAPP_XRANDR=y -BR2_PACKAGE_XAPP_XSETROOT=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y +BR2_PACKAGE_LIBDRM_VC4=y BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV=y BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBTURBO=y -BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC=y -BR2_PACKAGE_NODM=y -BR2_PACKAGE_XDOTOOL=y -BR2_PACKAGE_OPENBOX=y BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI=y BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT=y BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI=y -BR2_PACKAGE_LINUX_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE=y -BR2_PACKAGE_RPI_FIRMWARE_VERSION="1.20220331" +BR2_PACKAGE_RPI_FIRMWARE_VERSION="1.20211118" BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y -BR2_PACKAGE_ACPID=y -BR2_PACKAGE_EUDEV_RULES_GEN=y BR2_PACKAGE_I2C_TOOLS=y BR2_PACKAGE_RPI_USERLAND=y BR2_PACKAGE_UBOOT_TOOLS=y BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE=y BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE=y BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE=y -BR2_PACKAGE_USBMOUNT=y -BR2_PACKAGE_CA_CERTIFICATES=y -BR2_PACKAGE_LIBGCRYPT=y -BR2_PACKAGE_LEVELDB=y -BR2_PACKAGE_CAIRO_PNG=y -BR2_PACKAGE_OPENJPEG=y -BR2_PACKAGE_WAYLAND=y -BR2_PACKAGE_WOFF2=y -BR2_PACKAGE_LIBSOUP=y -BR2_PACKAGE_LIBTASN1=y -BR2_PACKAGE_READLINE=y -BR2_PACKAGE_CHRONY=y -BR2_PACKAGE_DHCPCD=y -BR2_PACKAGE_DROPBEAR=y -BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS=y -BR2_PACKAGE_NTP=y -# BR2_PACKAGE_NTP_NTPD is not set -BR2_PACKAGE_NTP_NTPDATE=y -BR2_PACKAGE_WGET=y -BR2_PACKAGE_IRQBALANCE=y -BR2_PACKAGE_TAR=y -BR2_PACKAGE_UTIL_LINUX_RFKILL=y BR2_TARGET_ROOTFS_CPIO=y BR2_TARGET_ROOTFS_CPIO_LZ4=y BR2_TARGET_ROOTFS_CPIO_UIMAGE=y @@ -136,21 +41,41 @@ BR2_TARGET_ROOTFS_CPIO_UIMAGE=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.04" -BR2_TARGET_UBOOT_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4/uboot-patches" -BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y -BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4/uboot_defconfig" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_4" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4/uboot.config" +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y BR2_TARGET_UBOOT_NEEDS_DTC=y -BR2_PACKAGE_HOST_DOSFSTOOLS=y -BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GENIMAGE=y -BR2_PACKAGE_HOST_MKPASSWD=y -BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4/boot.cmd" -BR2_PACKAGE_QUTSELECT=y -BR2_PACKAGE_HOTKEYD=y -BR2_PACKAGE_NUMLOCKX=y -BR2_PACKAGE_XPRINTIDLE=y +BR2_PACKAGE_MULTILIB32=y +BR2_PACKAGE_MULTILIB32_CONFIG_FRAGMENT_FILE="multilib32_arm_a72.config" BR2_PACKAGE_RPI_EEPROM=y -BR2_PACKAGE_QT_WEBENGINE_KIOSK=y + +# select/deselect webkiosk/thinroot applications +BR2_PACKAGE_QUTSELECT=y +BR2_PACKAGE_THINLINC=y +BR2_PACKAGE_FREERDP=y +# BR2_PACKAGE_FREERDP_CLIENT_WL is not set +BR2_PACKAGE_VIRT_VIEWER=y +BR2_PACKAGE_WEBKITGTK=y +BR2_PACKAGE_WEBKITGTK_HTTPS=y +BR2_PACKAGE_WEBKITGTK_MULTIMEDIA=y +BR2_PACKAGE_WEBKITGTK_MINIBROWSER=y +#BR2_PACKAGE_WPEWEBKIT=y +#BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA=y +#BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM=y +#BR2_PACKAGE_COG=y +#BR2_PACKAGE_YOE_KIOSK_BROWSER=y +#BR2_PACKAGE_QT5=y +#BR2_PACKAGE_QT5BASE_OPENGL_ES2=y +#BR2_PACKAGE_QT5BASE_LINUXFB=y +#BR2_PACKAGE_QT5BASE_XCB=y +#BR2_PACKAGE_QT5BASE_EGLFS=y +#BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb" +#BR2_PACKAGE_QT5BASE_GIF=y +#BR2_PACKAGE_QT5LOCATION=y +#BR2_PACKAGE_QT5MULTIMEDIA=y +#BR2_PACKAGE_QT5DECLARATIVE=y +#BR2_PACKAGE_QT_WEBKIT_KIOSK=y diff --git a/buildroot-external/configs/rpi4_32.config b/buildroot-external/configs/rpi4_32.config deleted file mode 100644 index a46eb8d..0000000 --- a/buildroot-external/configs/rpi4_32.config +++ /dev/null @@ -1,156 +0,0 @@ -BR2_arm=y -BR2_cortex_a72=y -BR2_ARM_FPU_VFPV4=y -BR2_DL_DIR="$(TOPDIR)/../download" -BR2_KERNEL_MIRROR="https://www.kernel.org/pub" -BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" -BR2_CCACHE=y -BR2_OPTIMIZE_2=y -BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_THINROOT_PATH)/patches" -BR2_RELRO_PARTIAL=y -BR2_TOOLCHAIN_BUILDROOT_GLIBC=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y -BR2_TOOLCHAIN_BUILDROOT_CXX=y -BR2_GCC_ENABLE_LTO=y -BR2_TARGET_GENERIC_HOSTNAME="thinroot" -BR2_TARGET_GENERIC_ISSUE="Welcome to thinRoot" -BR2_TARGET_GENERIC_PASSWD_SHA512=y -BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y -BR2_TARGET_GENERIC_GETTY_PORT="tty2" -BR2_ENABLE_LOCALE_WHITELIST="C en_US de_DE" -BR2_GENERATE_LOCALE="en_US de_DE" -BR2_SYSTEM_ENABLE_NLS=y -BR2_TARGET_TZ_INFO=y -BR2_TARGET_LOCALTIME="Europe/Berlin" -BR2_ROOTFS_USERS_TABLES="${BR2_EXTERNAL_THINROOT_PATH}/board/rpi4_32/users_table.txt" -BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_THINROOT_PATH)/rootfs-overlay" -BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4_32/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4_32/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4_32" -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/stable_20240124.tar.gz" -BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4_32/kernel-patches" -BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4_32/kernel_defconfig" -BR2_LINUX_KERNEL_LZ4=y -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2711-rpi-4-b bcm2711-rpi-400 bcm2711-rpi-cm4" -BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y -BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_THINROOT_PATH)/Busybox.config" -BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y -BR2_PACKAGE_ALSA_UTILS=y -BR2_PACKAGE_ALSA_UTILS_AMIXER=y -BR2_PACKAGE_GSTREAMER1=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA=y -BR2_PACKAGE_GST1_PLUGINS_GOOD=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX=y -BR2_PACKAGE_GST1_PLUGINS_BAD=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX=y -BR2_PACKAGE_GST1_LIBAV=y -BR2_PACKAGE_PULSEAUDIO=y -BR2_PACKAGE_DOSFSTOOLS=y -BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y -BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y -BR2_PACKAGE_E2FSPROGS=y -BR2_PACKAGE_EXFAT=y -BR2_PACKAGE_F2FS_TOOLS=y -BR2_PACKAGE_NTFS_3G=y -BR2_PACKAGE_DEJAVU=y -BR2_PACKAGE_LIBERATION=y -BR2_PACKAGE_FREERDP=y -BR2_PACKAGE_MESA3D=y -BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y -BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D=y -BR2_PACKAGE_MESA3D_OPENGL_GLX=y -BR2_PACKAGE_MESA3D_OPENGL_ES=y -BR2_PACKAGE_PSPLASH=y -BR2_PACKAGE_PSPLASH_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/patches/psplash/hzdr" -BR2_PACKAGE_QT5BASE_OPENGL_ES2=y -BR2_PACKAGE_QT5BASE_LINUXFB=y -BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb" -BR2_PACKAGE_QT5BASE_GIF=y -BR2_PACKAGE_QT5LOCATION=y -BR2_PACKAGE_QT5MULTIMEDIA=y -BR2_PACKAGE_QT5SENSORS=y -BR2_PACKAGE_QT5WEBENGINE=y -BR2_PACKAGE_XORG7=y -BR2_PACKAGE_XSERVER_XORG_SERVER=y -BR2_PACKAGE_XLIB_LIBXAW=y -BR2_PACKAGE_XAPP_XPROP=y -BR2_PACKAGE_XAPP_XRANDR=y -BR2_PACKAGE_XAPP_XSETROOT=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y -BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV=y -BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBTURBO=y -BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC=y -BR2_PACKAGE_NODM=y -BR2_PACKAGE_XDOTOOL=y -BR2_PACKAGE_OPENBOX=y -BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI=y -BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT=y -BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI=y -BR2_PACKAGE_LINUX_FIRMWARE=y -BR2_PACKAGE_RPI_FIRMWARE=y -BR2_PACKAGE_RPI_FIRMWARE_VERSION="1.20220331" -BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y -BR2_PACKAGE_ACPID=y -BR2_PACKAGE_EUDEV_RULES_GEN=y -BR2_PACKAGE_I2C_TOOLS=y -BR2_PACKAGE_UBOOT_TOOLS=y -BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE=y -BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE=y -BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE=y -BR2_PACKAGE_USBMOUNT=y -BR2_PACKAGE_CA_CERTIFICATES=y -BR2_PACKAGE_LIBGCRYPT=y -BR2_PACKAGE_LEVELDB=y -BR2_PACKAGE_CAIRO_PNG=y -BR2_PACKAGE_OPENJPEG=y -BR2_PACKAGE_WAYLAND=y -BR2_PACKAGE_WOFF2=y -BR2_PACKAGE_LIBSOUP=y -BR2_PACKAGE_LIBTASN1=y -BR2_PACKAGE_READLINE=y -BR2_PACKAGE_CHRONY=y -BR2_PACKAGE_DHCPCD=y -BR2_PACKAGE_DROPBEAR=y -BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS=y -BR2_PACKAGE_NTP=y -# BR2_PACKAGE_NTP_NTPD is not set -BR2_PACKAGE_NTP_NTPDATE=y -BR2_PACKAGE_WGET=y -BR2_PACKAGE_IRQBALANCE=y -BR2_PACKAGE_TAR=y -BR2_PACKAGE_UTIL_LINUX_RFKILL=y -BR2_TARGET_ROOTFS_CPIO=y -BR2_TARGET_ROOTFS_CPIO_LZ4=y -BR2_TARGET_ROOTFS_CPIO_UIMAGE=y -# BR2_TARGET_ROOTFS_TAR is not set -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y -BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.04" -BR2_TARGET_UBOOT_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4_32/uboot-patches" -BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y -BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4_32/uboot_defconfig" -BR2_TARGET_UBOOT_NEEDS_DTC=y -BR2_PACKAGE_HOST_DOSFSTOOLS=y -BR2_PACKAGE_HOST_E2FSPROGS=y -BR2_PACKAGE_HOST_GENIMAGE=y -BR2_PACKAGE_HOST_MKPASSWD=y -BR2_PACKAGE_HOST_MTOOLS=y -BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y -BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi4_32/boot.cmd" -BR2_PACKAGE_QUTSELECT=y -BR2_PACKAGE_THINLINC=y -BR2_PACKAGE_HOTKEYD=y -BR2_PACKAGE_NUMLOCKX=y -BR2_PACKAGE_XPRINTIDLE=y -BR2_PACKAGE_RPI_EEPROM=y -BR2_PACKAGE_QT_WEBENGINE_KIOSK=y diff --git a/buildroot-external/configs/rpi5.config b/buildroot-external/configs/rpi5.config new file mode 100644 index 0000000..02f5a31 --- /dev/null +++ b/buildroot-external/configs/rpi5.config @@ -0,0 +1,80 @@ +BR2_aarch64=y +BR2_cortex_a76=y +BR2_ARM64_PAGE_SIZE_16K=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y +BR2_ROOTFS_LIB_DIR="lib" +BR2_ROOTFS_LIB32_DIR="lib32" +BR2_ROOTFS_USERS_TABLES="${BR2_EXTERNAL_THINROOT_PATH}/board/rpi5/users_table.txt" +BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi5/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi5/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi5" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/stable_20250127.tar.gz" +BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi5/kernel-patches" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2712" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-arm64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/rpi5/kernel.config" +BR2_LINUX_KERNEL_LZ4=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2712-rpi-5-b broadcom/bcm2712d0-rpi-5-b broadcom/bcm2712-rpi-500 broadcom/bcm2712-rpi-cm5-cm4io broadcom/bcm2712-rpi-cm5-cm5io broadcom/bcm2712-rpi-cm5l-cm4io broadcom/bcm2712-rpi-cm5l-cm5io" +BR2_LINUX_KERNEL_INSTALL_INTREE_OVERLAYS=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D=y +BR2_PACKAGE_LIBDRM_VC4=y +BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV=y +BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBTURBO=y +BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI=y +BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT=y +BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_RPI_USERLAND=y +BR2_PACKAGE_UBOOT_TOOLS=y +BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE=y +BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE=y +BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE=y +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_LZ4=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_arm64" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_THINROOT_PATH)/board/rpi5/uboot.config" +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_THINROOT_PATH)/board/rpi5/boot.cmd" +BR2_PACKAGE_MULTILIB32=y +BR2_PACKAGE_MULTILIB32_CONFIG_FRAGMENT_FILE="multilib32_arm_a76-16k.config" +BR2_PACKAGE_RPI_EEPROM=y +BR2_PACKAGE_RPI_EEPROM_RPI5=y + +# select/deselect webkiosk/thinroot applications +BR2_PACKAGE_QUTSELECT=y +BR2_PACKAGE_THINLINC=y +BR2_PACKAGE_FREERDP=y +# BR2_PACKAGE_FREERDP_CLIENT_WL is not set +BR2_PACKAGE_VIRT_VIEWER=y +BR2_PACKAGE_WEBKITGTK=y +BR2_PACKAGE_WEBKITGTK_HTTPS=y +BR2_PACKAGE_WEBKITGTK_MULTIMEDIA=y +BR2_PACKAGE_WEBKITGTK_MINIBROWSER=y +#BR2_PACKAGE_WPEWEBKIT=y +#BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA=y +#BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM=y +#BR2_PACKAGE_COG=y +#BR2_PACKAGE_YOE_KIOSK_BROWSER=y +#BR2_PACKAGE_QT5=y +#BR2_PACKAGE_QT5BASE_OPENGL_ES2=y +#BR2_PACKAGE_QT5BASE_LINUXFB=y +#BR2_PACKAGE_QT5BASE_XCB=y +#BR2_PACKAGE_QT5BASE_EGLFS=y +#BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb" +#BR2_PACKAGE_QT5BASE_GIF=y +#BR2_PACKAGE_QT5LOCATION=y +#BR2_PACKAGE_QT5MULTIMEDIA=y +#BR2_PACKAGE_QT5DECLARATIVE=y +#BR2_PACKAGE_QT_WEBKIT_KIOSK=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 6a27e4c..da9752e 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -1,127 +1,33 @@ BR2_arm=y BR2_cortex_a17=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_12=y BR2_ARM_FPU_NEON_VFPV4=y -BR2_DL_DIR="$(TOPDIR)/../download" -BR2_KERNEL_MIRROR="https://www.kernel.org/pub" -BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" -BR2_CCACHE=y -BR2_OPTIMIZE_2=y -BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_THINROOT_PATH)/patches" # BR2_COMPILER_PARANOID_UNSAFE_PATH is not set -BR2_RELRO_PARTIAL=y -BR2_TOOLCHAIN_BUILDROOT_CXX=y -BR2_GCC_ENABLE_LTO=y -BR2_TARGET_GENERIC_HOSTNAME="thinroot" -BR2_TARGET_GENERIC_ISSUE="Welcome to thinRoot" -BR2_TARGET_GENERIC_PASSWD_SHA512=y -BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y -BR2_TARGET_GENERIC_GETTY_PORT="tty2" -BR2_ENABLE_LOCALE_WHITELIST="C en_US de_DE" -BR2_GENERATE_LOCALE="en_US de_DE" -BR2_SYSTEM_ENABLE_NLS=y -BR2_TARGET_TZ_INFO=y -BR2_TARGET_LOCALTIME="Europe/Berlin" BR2_ROOTFS_USERS_TABLES="${BR2_EXTERNAL_THINROOT_PATH}/board/tinkerboard/users_table.txt" -BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_THINROOT_PATH)/rootfs-overlay" BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.23" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.68" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-arm32.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel.config" BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="rk3288-tinker rk3288-tinker-s" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/rk3288-tinker rockchip/rk3288-tinker-s" BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y -BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_THINROOT_PATH)/Busybox.config" -BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y -BR2_PACKAGE_ALSA_UTILS=y -BR2_PACKAGE_ALSA_UTILS_AMIXER=y -BR2_PACKAGE_GSTREAMER1=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT=y -BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA=y -BR2_PACKAGE_GST1_PLUGINS_GOOD=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y -BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX=y -BR2_PACKAGE_GST1_PLUGINS_BAD=y -BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX=y -BR2_PACKAGE_GST1_LIBAV=y -BR2_PACKAGE_PULSEAUDIO=y -BR2_PACKAGE_DOSFSTOOLS=y -BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y -BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y -BR2_PACKAGE_E2FSPROGS=y -BR2_PACKAGE_EXFAT=y -BR2_PACKAGE_F2FS_TOOLS=y -BR2_PACKAGE_NTFS_3G=y -BR2_PACKAGE_DEJAVU=y -BR2_PACKAGE_LIBERATION=y -BR2_PACKAGE_FREERDP=y -BR2_PACKAGE_MESA3D=y -BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y -BR2_PACKAGE_MESA3D_OPENGL_GLX=y -BR2_PACKAGE_MESA3D_OPENGL_EGL=y -BR2_PACKAGE_MESA3D_OPENGL_ES=y -BR2_PACKAGE_PSPLASH=y -BR2_PACKAGE_PSPLASH_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/patches/psplash/hzdr" -BR2_PACKAGE_QT5BASE_OPENGL_ES2=y -BR2_PACKAGE_QT5BASE_LINUXFB=y -BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb" -BR2_PACKAGE_QT5BASE_GIF=y -BR2_PACKAGE_QT5LOCATION=y -BR2_PACKAGE_QT5MULTIMEDIA=y -BR2_PACKAGE_QT5SENSORS=y -BR2_PACKAGE_QT5WEBENGINE=y -BR2_PACKAGE_XORG7=y -BR2_PACKAGE_XSERVER_XORG_SERVER=y -BR2_PACKAGE_XLIB_LIBXAW=y -BR2_PACKAGE_XAPP_XPROP=y -BR2_PACKAGE_XAPP_XRANDR=y -BR2_PACKAGE_XAPP_XSETROOT=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST=y +BR2_PACKAGE_LIBDRM_VC4=y BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV=y BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBTURBO=y -BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC=y -BR2_PACKAGE_NODM=y -BR2_PACKAGE_XDOTOOL=y -BR2_PACKAGE_OPENBOX=y -BR2_PACKAGE_LINUX_FIRMWARE=y -BR2_PACKAGE_ACPID=y -BR2_PACKAGE_EUDEV_RULES_GEN=y BR2_PACKAGE_I2C_TOOLS=y BR2_PACKAGE_UBOOT_TOOLS=y BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE=y BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE=y BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE=y -BR2_PACKAGE_USBMOUNT=y -BR2_PACKAGE_CA_CERTIFICATES=y -BR2_PACKAGE_LIBGCRYPT=y -BR2_PACKAGE_LEVELDB=y -BR2_PACKAGE_CAIRO_PNG=y -BR2_PACKAGE_OPENJPEG=y -BR2_PACKAGE_WAYLAND=y -BR2_PACKAGE_WOFF2=y -BR2_PACKAGE_LIBSOUP=y -BR2_PACKAGE_LIBTASN1=y -BR2_PACKAGE_READLINE=y -BR2_PACKAGE_CHRONY=y -BR2_PACKAGE_DHCPCD=y -BR2_PACKAGE_DROPBEAR=y -BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS=y -BR2_PACKAGE_NTP=y -# BR2_PACKAGE_NTP_NTPD is not set -BR2_PACKAGE_NTP_NTPDATE=y -BR2_PACKAGE_WGET=y -BR2_PACKAGE_IRQBALANCE=y -BR2_PACKAGE_TAR=y -BR2_PACKAGE_UTIL_LINUX_RFKILL=y BR2_TARGET_ROOTFS_CPIO=y BR2_TARGET_ROOTFS_CPIO_LZ4=y BR2_TARGET_ROOTFS_CPIO_UIMAGE=y @@ -129,27 +35,43 @@ BR2_TARGET_ROOTFS_CPIO_UIMAGE=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.04" -BR2_TARGET_UBOOT_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/uboot-patches" -BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y -BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/uboot_defconfig" -BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.10" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="tinker-s-rk3288" +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/uboot.config" +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y # BR2_TARGET_UBOOT_FORMAT_BIN is not set BR2_TARGET_UBOOT_FORMAT_DTB_BIN=y BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="idbloader.img" -BR2_PACKAGE_HOST_DOSFSTOOLS=y -BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GENIMAGE=y -BR2_PACKAGE_HOST_MKPASSWD=y -BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/boot.cmd" + +# select/deselect webkiosk/thinroot applications BR2_PACKAGE_QUTSELECT=y BR2_PACKAGE_THINLINC=y -BR2_PACKAGE_HOTKEYD=y -BR2_PACKAGE_NUMLOCKX=y -BR2_PACKAGE_XPRINTIDLE=y -BR2_PACKAGE_QT_WEBENGINE_KIOSK=y +BR2_PACKAGE_FREERDP=y +# BR2_PACKAGE_FREERDP_CLIENT_WL is not set +BR2_PACKAGE_VIRT_VIEWER=y +BR2_PACKAGE_WEBKITGTK=y +BR2_PACKAGE_WEBKITGTK_HTTPS=y +BR2_PACKAGE_WEBKITGTK_MULTIMEDIA=y +BR2_PACKAGE_WEBKITGTK_MINIBROWSER=y +#BR2_PACKAGE_WPEWEBKIT=y +#BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA=y +#BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM=y +#BR2_PACKAGE_COG=y +#BR2_PACKAGE_YOE_KIOSK_BROWSER=y +#BR2_PACKAGE_QT5=y +#BR2_PACKAGE_QT5BASE_OPENGL_ES2=y +#BR2_PACKAGE_QT5BASE_LINUXFB=y +#BR2_PACKAGE_QT5BASE_XCB=y +#BR2_PACKAGE_QT5BASE_EGLFS=y +#BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb" +#BR2_PACKAGE_QT5BASE_GIF=y +#BR2_PACKAGE_QT5LOCATION=y +#BR2_PACKAGE_QT5MULTIMEDIA=y +#BR2_PACKAGE_QT5DECLARATIVE=y +#BR2_PACKAGE_QT_WEBKIT_KIOSK=y diff --git a/buildroot-external/external.mk b/buildroot-external/external.mk index cf0290f..49d21cb 100644 --- a/buildroot-external/external.mk +++ b/buildroot-external/external.mk @@ -10,3 +10,26 @@ linux-check-dotconfig: linux-check-configuration-done --src-kconfig $(LINUX_SRCDIR)Kconfig \ --actual-config $(LINUX_SRCDIR).config \ $(shell echo $(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE) $(BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES)) + +# if cpu microcode is required we embed it into the kernel build +ifeq ($(or $(BR2_PACKAGE_INTEL_MICROCODE),$(BR2_PACKAGE_LINUX_FIRMWARE_AMD_UCODE)),y) + +UCODE_FRAG := $(BINARIES_DIR)/linux-ucode.fragment + +# Hook: vor der Kernelkonfiguration Fragment erzeugen +define GEN_UCODE_FRAGMENT + @echo ">> Generating $(UCODE_FRAG)" + @mkdir -p $(BINARIES_DIR) + @{ \ + echo 'CONFIG_EXTRA_FIRMWARE_DIR="$(BINARIES_DIR)"'; \ + printf 'CONFIG_EXTRA_FIRMWARE="'; \ + ( cd $(BINARIES_DIR) 2>/dev/null && \ + find intel-ucode amd-ucode -type f \! -name "*README*" \! -name "*.asc" -printf '%p ' 2>/dev/null || true ); \ + echo '"'; \ + } > $(UCODE_FRAG) +endef + +LINUX_PRE_PATCH_HOOKS += GEN_UCODE_FRAGMENT +LINUX_KCONFIG_FRAGMENT_FILES += $(UCODE_FRAG) + +endif diff --git a/buildroot-external/kernel/6.1/device-support-pci.config b/buildroot-external/kernel/6.12/device-support-pci.config similarity index 100% rename from buildroot-external/kernel/6.1/device-support-pci.config rename to buildroot-external/kernel/6.12/device-support-pci.config diff --git a/buildroot-external/kernel/6.1/device-support.config b/buildroot-external/kernel/6.12/device-support.config similarity index 66% rename from buildroot-external/kernel/6.1/device-support.config rename to buildroot-external/kernel/6.12/device-support.config index 15fc568..50fa89c 100644 --- a/buildroot-external/kernel/6.1/device-support.config +++ b/buildroot-external/kernel/6.12/device-support.config @@ -12,6 +12,24 @@ CONFIG_USB_HIDDEV=y CONFIG_USB_ACM=m +# enable USB storage support +CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_REALTEK_AUTOPM=y +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_UAS=m + # disable USB gadget support # CONFIG_USB_GADGET is not set @@ -38,11 +56,14 @@ CONFIG_BT_HCIBTUSB=m CONFIG_BT_HCIBTUSB_BCM=y CONFIG_BT_HCIBTUSB_RTL=y +# enable PCI support +CONFIG_PCI=y + # Wi-Fi Support CONFIG_RTL_CARDS=m CONFIG_RTL8192CU=m CONFIG_RTL8XXXU=m -CONFIG_R8188EU=m +CONFIG_RTL8188EE=m CONFIG_WLAN_VENDOR_MEDIATEK=y CONFIG_MT7601U=m @@ -59,9 +80,9 @@ CONFIG_RT2800USB_RT53XX=y CONFIG_RT2800USB_RT55XX=y CONFIG_RT2800USB_UNKNOWN=y -# disable Multimedia core support -# CONFIG_MEDIA_SUPPORT is not set -# CONFIG_MEDIA_TUNER is not set +# enable Multimedia core support +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_TUNER=y # enable GPIO support CONFIG_GPIOLIB=y @@ -79,3 +100,9 @@ CONFIG_STAGING=y CONFIG_DRM_DISPLAY_HELPER=y CONFIG_DRM_TTM=y CONFIG_DRM_BUDDY=y + +# enable I2C HID support +CONFIG_I2C_HID=m +CONFIG_I2C_HID_ACPI=m +CONFIG_I2C_HID_OF=m +CONFIG_I2C_HID_CORE=m diff --git a/buildroot-external/kernel/6.1/global.config b/buildroot-external/kernel/6.12/global.config similarity index 69% rename from buildroot-external/kernel/6.1/global.config rename to buildroot-external/kernel/6.12/global.config index ca00788..8c07491 100644 --- a/buildroot-external/kernel/6.1/global.config +++ b/buildroot-external/kernel/6.12/global.config @@ -10,21 +10,40 @@ CONFIG_EXPERT=y # enable hardware random number generators CONFIG_HW_RANDOM=y -# disable kernel rtc handling -# CONFIG_RTC_HCTOSYS is not set -# CONFIG_RTC_SYSTOHC is not set - # disable autofs support -# CONFIG_AUTOFS4_FS is not set # CONFIG_AUTOFS_FS is not set -# disable joystick/touchscreen/mouse/remote controller support +# disable joystick/touchscreen/remote controller support # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TOUCHSCREEN is not set -# CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_TABLET is not set # CONFIG_RC_CORE is not set +# enable input MOUSEDEV to allow touchpads to work in X +CONFIG_INPUT_MOUSEDEV=m +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_BYD=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_ELANTECH_SMBUS=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_MOUSE_PS2_SMBUS=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_I2C=y +CONFIG_MOUSE_ELAN_I2C_SMBUS=y +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m + # disable CAN support # CONFIG_CAN is not set @@ -50,8 +69,36 @@ CONFIG_HW_RANDOM=y CONFIG_SOUND=m CONFIG_SND=m CONFIG_SND_HDA=m +CONFIG_SND_HDA_GENERIC_LEDS=y +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_BEEP_MODE=0 +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_CODEC_REALTEK=m +CONFIG_SND_HDA_CODEC_ANALOG=m +CONFIG_SND_HDA_CODEC_SIGMATEL=m +CONFIG_SND_HDA_CODEC_VIA=m +CONFIG_SND_HDA_CODEC_HDMI=m +CONFIG_SND_HDA_CODEC_CIRRUS=m +CONFIG_SND_HDA_CODEC_CONEXANT=m +CONFIG_SND_HDA_CODEC_CA0110=m +CONFIG_SND_HDA_CODEC_CA0132=m +CONFIG_SND_HDA_CODEC_CA0132_DSP=y +CONFIG_SND_HDA_CODEC_CMEDIA=m +CONFIG_SND_HDA_CODEC_SI3054=m +CONFIG_SND_HDA_GENERIC=m +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1 +CONFIG_SND_HDA_CORE=m +CONFIG_SND_HDA_DSP_LOADER=y +CONFIG_SND_HDA_COMPONENT=y +CONFIG_SND_HDA_EXT_CORE=m +CONFIG_SND_HDA_PREALLOC_SIZE=0 CONFIG_SND_USB=y -CONFIG_SND_USB_AUDIO=y +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_SOC_HDA=m + +# disable speakup support # CONFIG_SPEAKUP is not set # disable accessibility support @@ -72,8 +119,10 @@ CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y # CONFIG_BACKLIGHT_LM3630A is not set # CONFIG_BACKLIGHT_PWM is not set -# disable direct rendering manager support -# CONFIG_DRM is not set +# enable general direct rendering manager support +CONFIG_DRM=y +CONFIG_DRM_FBDEV_EMULATION=y +# CONFIG_DRM_SIMPLEDRM is not set # disable DVB hardware support # CONFIG_DVB_CORE is not set @@ -84,8 +133,8 @@ CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y # disable samba server kernel support # CONFIG_SMB_SERVER is not set -# disable media controller (camera) support -# CONFIG_MEDIA_CONTROLLER is not set +# enable media controller (camera) support +CONFIG_MEDIA_CONTROLLER=y # disable all runtime testing menu items # CONFIG_RUNTIME_TESTING_MENU is not set @@ -118,12 +167,15 @@ CONFIG_LRU_GEN_ENABLED=y # enable ondemand frequency scaling CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y # filesystem support settings CONFIG_MISC_FILESYSTEMS=y CONFIG_BLOCK=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y CONFIG_EXT4_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y @@ -142,6 +194,9 @@ CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_TMPFS_XATTR=y # CONFIG_CEPH_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set # partition support CONFIG_PARTITION_ADVANCED=y @@ -152,13 +207,16 @@ CONFIG_MSDOS_PARTITION=y # disable quota support # CONFIG_QUOTA is not set +# CONFIG_QUOTACTL is not set +# CONFIG_QFMT_V1 is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set + +# enable ata support +CONFIG_ATA=y -# enable raid/lvm support -CONFIG_MD=y -CONFIG_BLK_DEV_DM=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_DM_VERITY=y -# CONFIG_BLK_DEV_BSGLIB is not set +# disable raid/lvm support +# CONFIG_MD is not set # audit support CONFIG_AUDIT=y @@ -188,12 +246,16 @@ CONFIG_BT_LEDS=y # enabke ipv6 support CONFIG_IPV6=y CONFIG_IPV6_ROUTER_PREF=y -CONFIG_IPV6_SIT=m +# CONFIG_IPV6_SIT is not set # enable IP multicast routing CONFIG_IP_MROUTE=y CONFIG_IPV6_MROUTE=y +# enable mptcp support +CONFIG_MPTCP=y +CONFIG_MPTCP_IPV6=y + # disable network bridge support # CONFIG_BRIDGE is not set @@ -227,15 +289,19 @@ CONFIG_CFG80211_WEXT=y # CONFIG_VLAN_8021Q_GVRP is not set # CONFIG_VLAN_8021Q_MVRP is not set -# disable ip/udp tunnels -# CONFIG_NET_IP_TUNNEL is not set -# CONFIG_NET_UDP_TUNNEL is not set +# enable ip/udp tunnels +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_UDP_TUNNEL=m # disable wireguard support # CONFIG_WIREGUARD is not set # human interface devices support CONFIG_HID=y +CONFIG_HID_RMI=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_ALPS=m +CONFIG_HID_LENOVO=m CONFIG_HIDRAW=y CONFIG_UHID=y @@ -251,7 +317,6 @@ CONFIG_LEDS_TRIGGER_MTD=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_CPU=y CONFIG_LEDS_TRIGGER_ACTIVITY=y -CONFIG_LEDS_TRIGGER_GPIO=y CONFIG_LEDS_TRIGGER_DEFAULT_ON=y # userspace LED support @@ -275,13 +340,14 @@ CONFIG_DETECT_HUNG_TASK=y CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 # set some ACPI options +CONFIG_ACPI=y # CONFIG_ACPI_BATTERY is not set # CONFIG_ACPI_SLEEP is not set CONFIG_ACPI_APEI=y CONFIG_ACPI_APEI_GHES=y -# disable CGROUP (not needed by thinclient) -# CONFIG_CGROUP is not set +# disable CGROUPS (not needed by thinclient) +# CONFIG_CGROUPS is not set # CONFIG_BLK_CGROUP is not set # CONFIG_CGROUP_PIDS is not set # CONFIG_CGROUP_RDMA is not set @@ -291,21 +357,29 @@ CONFIG_ACPI_APEI_GHES=y # CONFIG_CGROUP_MISC is not set # CONFIG_CGROUP_DEBUG is not set # CONFIG_SOCK_CGROUP_DATA is not set +# CONFIG_SCHED_AUTOGROUP is not set # disable some debugging to safe space # CONFIG_KALLSYMS_ALL is not set # CONFIG_PM_DEBUG is not set # CONFIG_KPROBES is not set # CONFIG_NET_9P is not set +# CONFIG_KGDB is not set +# CONFIG_LATENCYTOP is not set # disable unnecessary stuff # CONFIG_EFI_MIXED is not set # CONFIG_SUSPEND is not set # CONFIG_MEDIA_CEC_SUPPORT is not set -# CONFIG_HYPERVISOR_GUEST is not set # CONFIG_HIBERNATION is not set -# CONFIG_BACKLIGHT_CLASS_DEVICE is not set # disable virtio support # CONFIG_VIRTIO_MENU is not set # CONFIG_VIRTIO_CONSOLE is not set + +# enable firmware compression +CONFIG_FW_LOADER_COMPRESS=y +CONFIG_FW_LOADER_COMPRESS_ZSTD=y + +# enable USER_NS +CONFIG_USER_NS=y diff --git a/buildroot-external/kernel/6.1/security-arm32.config b/buildroot-external/kernel/6.12/security-arm32.config similarity index 100% rename from buildroot-external/kernel/6.1/security-arm32.config rename to buildroot-external/kernel/6.12/security-arm32.config diff --git a/buildroot-external/kernel/6.1/security-arm64.config b/buildroot-external/kernel/6.12/security-arm64.config similarity index 100% rename from buildroot-external/kernel/6.1/security-arm64.config rename to buildroot-external/kernel/6.12/security-arm64.config diff --git a/buildroot-external/kernel/6.1/security-x86_32.config b/buildroot-external/kernel/6.12/security-x86_32.config similarity index 100% rename from buildroot-external/kernel/6.1/security-x86_32.config rename to buildroot-external/kernel/6.12/security-x86_32.config diff --git a/buildroot-external/kernel/6.1/security-x86_64.config b/buildroot-external/kernel/6.12/security-x86_64.config similarity index 92% rename from buildroot-external/kernel/6.1/security-x86_64.config rename to buildroot-external/kernel/6.12/security-x86_64.config index 46c4f5e..5688d60 100644 --- a/buildroot-external/kernel/6.1/security-x86_64.config +++ b/buildroot-external/kernel/6.12/security-x86_64.config @@ -18,14 +18,13 @@ CONFIG_RANDOMIZE_MEMORY=y CONFIG_LEGACY_VSYSCALL_NONE=y # Enable Kernel Page Table Isolation to remove an entire class of cache timing side-channels. -CONFIG_PAGE_TABLE_ISOLATION=y +CONFIG_MITIGATION_PAGE_TABLE_ISOLATION=y # Enable chip-specific IOMMU support. CONFIG_INTEL_IOMMU=y CONFIG_INTEL_IOMMU_DEFAULT_ON=y CONFIG_INTEL_IOMMU_SVM=y CONFIG_AMD_IOMMU=y -CONFIG_AMD_IOMMU_V2=y # Straight-Line-Speculation -CONFIG_SLS=y +CONFIG_MITIGATION_SLS=y diff --git a/buildroot-external/kernel/6.1/security.config b/buildroot-external/kernel/6.12/security.config similarity index 91% rename from buildroot-external/kernel/6.1/security.config rename to buildroot-external/kernel/6.12/security.config index 070c1d6..33a8e73 100644 --- a/buildroot-external/kernel/6.1/security.config +++ b/buildroot-external/kernel/6.12/security.config @@ -10,8 +10,10 @@ CONFIG_MODULE_FORCE_UNLOAD=y # CONFIG_MODULE_SIG_FORCE is not set # CONFIG_MODULE_SIG_ALL is not set # CONFIG_MODULE_SIG_SHA512 is not set -# CONFIG_MODULE_SIG_HASH is not set -CONFIG_MODULE_COMPRESS_NONE=y +CONFIG_MODULE_COMPRESS=y +CONFIG_MODULE_COMPRESS_ALL=y +CONFIG_MODULE_COMPRESS_XZ=y +CONFIG_MODULE_DECOMPRESS=y # Make sure kernel page tables have safe permissions. CONFIG_STRICT_KERNEL_RWX=y @@ -31,7 +33,6 @@ CONFIG_IO_STRICT_DEVMEM=y CONFIG_SYN_COOKIES=y # Perform additional validation of various commonly targeted structures. -CONFIG_DEBUG_CREDENTIALS=y CONFIG_DEBUG_NOTIFIERS=y CONFIG_DEBUG_LIST=y CONFIG_DEBUG_SG=y @@ -58,7 +59,6 @@ CONFIG_SECURITY_LANDLOCK=y # Make sure SELinux cannot be disabled trivially. # CONFIG_SECURITY_SELINUX_BOOTPARAM is not set # CONFIG_SECURITY_SELINUX_DEVELOP is not set -# CONFIG_SECURITY_WRITABLE_HOOKS is not set # Enable "lockdown" LSM for bright line between the root user and kernel memory. # CONFIG_SECURITY_LOCKDOWN_LSM is not set @@ -104,7 +104,6 @@ CONFIG_SECURITY_DMESG_RESTRICT=y CONFIG_UBSAN=y CONFIG_UBSAN_TRAP=y CONFIG_UBSAN_BOUNDS=y -CONFIG_UBSAN_SANITIZE_ALL=y # CONFIG_UBSAN_SHIFT is not set # CONFIG_UBSAN_DIV_ZERO is not set # CONFIG_UBSAN_UNREACHABLE is not set @@ -129,11 +128,6 @@ CONFIG_IOMMU_DEFAULT_DMA_STRICT=y CONFIG_TCG_TPM=y CONFIG_HW_RANDOM_TPM=y -# Get as much entropy as possible from external sources. The Chacha mixer isn't vulnerable to injected entropy, so even -# malicious sources should not cause problems. -CONFIG_RANDOM_TRUST_BOOTLOADER=y -CONFIG_RANDOM_TRUST_CPU=y - # Make scheduler aware of SMT Cores. Program needs to opt-in to using this feature with prctl(PR_SCHED_CORE). CONFIG_SCHED_SMT=y CONFIG_SCHED_CORE=y @@ -157,9 +151,6 @@ CONFIG_RESET_ATTACK_MITIGATION=y # Block TTY stuffing attacks (this will break screen readers, see "dev.tty.legacy_tiocsti" sysctl below). ## CONFIG_LEGACY_TIOCSTI is not set # kernel 6.2+ -# If SELinux can be disabled at runtime, the LSM structures cannot be read-only; keep off. -# CONFIG_SECURITY_SELINUX_DISABLE is not set - # Enable AppArmor security module CONFIG_SECURITY_APPARMOR=y CONFIG_DEFAULT_SECURITY_APPARMOR=y diff --git a/buildroot-external/kernel/6.6/device-support.config b/buildroot-external/kernel/6.6/device-support.config index 4315cd9..26524e2 100644 --- a/buildroot-external/kernel/6.6/device-support.config +++ b/buildroot-external/kernel/6.6/device-support.config @@ -80,9 +80,9 @@ CONFIG_RT2800USB_RT53XX=y CONFIG_RT2800USB_RT55XX=y CONFIG_RT2800USB_UNKNOWN=y -# disable Multimedia core support -# CONFIG_MEDIA_SUPPORT is not set -# CONFIG_MEDIA_TUNER is not set +# enable Multimedia core support +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_TUNER=y # enable GPIO support CONFIG_GPIOLIB=y @@ -98,5 +98,9 @@ CONFIG_STAGING=y # DRM options CONFIG_DRM_DISPLAY_HELPER=y -CONFIG_DRM_TTM=y -CONFIG_DRM_BUDDY=y + +# enable I2C HID support +CONFIG_I2C_HID=m +CONFIG_I2C_HID_ACPI=m +CONFIG_I2C_HID_OF=m +CONFIG_I2C_HID_CORE=m diff --git a/buildroot-external/kernel/6.6/global.config b/buildroot-external/kernel/6.6/global.config index 8f6e0e3..edd8967 100644 --- a/buildroot-external/kernel/6.6/global.config +++ b/buildroot-external/kernel/6.6/global.config @@ -13,13 +13,37 @@ CONFIG_HW_RANDOM=y # disable autofs support # CONFIG_AUTOFS_FS is not set -# disable joystick/touchscreen/mouse/remote controller support +# disable joystick/touchscreen/remote controller support # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TOUCHSCREEN is not set -# CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_TABLET is not set # CONFIG_RC_CORE is not set +# enable input MOUSEDEV to allow touchpads to work in X +CONFIG_INPUT_MOUSEDEV=m +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_BYD=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_ELANTECH_SMBUS=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_MOUSE_PS2_SMBUS=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_I2C=y +CONFIG_MOUSE_ELAN_I2C_SMBUS=y +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m + # disable CAN support # CONFIG_CAN is not set @@ -67,11 +91,11 @@ CONFIG_SND_HDA_GENERIC=m CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1 CONFIG_SND_HDA_CORE=m CONFIG_SND_HDA_DSP_LOADER=y -CONFIG_SND_HDA_COMPONENT=y CONFIG_SND_HDA_EXT_CORE=m CONFIG_SND_HDA_PREALLOC_SIZE=0 CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=m +CONFIG_SND_SOC_HDA=m # disable speakup support # CONFIG_SPEAKUP is not set @@ -94,8 +118,10 @@ CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y # CONFIG_BACKLIGHT_LM3630A is not set # CONFIG_BACKLIGHT_PWM is not set -# disable direct rendering manager support -# CONFIG_DRM is not set +# enable general direct rendering manager support +CONFIG_DRM=y +CONFIG_DRM_FBDEV_EMULATION=y +# CONFIG_DRM_SIMPLEDRM is not set # disable DVB hardware support # CONFIG_DVB_CORE is not set @@ -106,8 +132,8 @@ CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y # disable samba server kernel support # CONFIG_SMB_SERVER is not set -# disable media controller (camera) support -# CONFIG_MEDIA_CONTROLLER is not set +# enable media controller (camera) support +CONFIG_MEDIA_CONTROLLER=y # disable all runtime testing menu items # CONFIG_RUNTIME_TESTING_MENU is not set @@ -167,6 +193,9 @@ CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_TMPFS_XATTR=y # CONFIG_CEPH_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set # partition support CONFIG_PARTITION_ADVANCED=y @@ -177,6 +206,10 @@ CONFIG_MSDOS_PARTITION=y # disable quota support # CONFIG_QUOTA is not set +# CONFIG_QUOTACTL is not set +# CONFIG_QFMT_V1 is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set # enable ata support CONFIG_ATA=y @@ -218,6 +251,10 @@ CONFIG_IPV6_ROUTER_PREF=y CONFIG_IP_MROUTE=y CONFIG_IPV6_MROUTE=y +# enable mptcp support +CONFIG_MPTCP=y +CONFIG_MPTCP_IPV6=y + # disable network bridge support # CONFIG_BRIDGE is not set @@ -251,15 +288,19 @@ CONFIG_CFG80211_WEXT=y # CONFIG_VLAN_8021Q_GVRP is not set # CONFIG_VLAN_8021Q_MVRP is not set -# disable ip/udp tunnels -# CONFIG_NET_IP_TUNNEL is not set -# CONFIG_NET_UDP_TUNNEL is not set +# enable ip/udp tunnels +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_UDP_TUNNEL=m # disable wireguard support # CONFIG_WIREGUARD is not set # human interface devices support CONFIG_HID=y +CONFIG_HID_RMI=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_ALPS=m +CONFIG_HID_LENOVO=m CONFIG_HIDRAW=y CONFIG_UHID=y @@ -298,6 +339,7 @@ CONFIG_DETECT_HUNG_TASK=y CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 # set some ACPI options +CONFIG_ACPI=y # CONFIG_ACPI_BATTERY is not set # CONFIG_ACPI_SLEEP is not set CONFIG_ACPI_APEI=y @@ -314,20 +356,25 @@ CONFIG_ACPI_APEI_GHES=y # CONFIG_CGROUP_MISC is not set # CONFIG_CGROUP_DEBUG is not set # CONFIG_SOCK_CGROUP_DATA is not set +# CONFIG_SCHED_AUTOGROUP is not set # disable some debugging to safe space # CONFIG_KALLSYMS_ALL is not set # CONFIG_PM_DEBUG is not set # CONFIG_KPROBES is not set # CONFIG_NET_9P is not set +# CONFIG_KGDB is not set +# CONFIG_LATENCYTOP is not set # disable unnecessary stuff -# CONFIG_EFI_MIXED is not set # CONFIG_SUSPEND is not set # CONFIG_MEDIA_CEC_SUPPORT is not set -# CONFIG_HYPERVISOR_GUEST is not set # CONFIG_HIBERNATION is not set # disable virtio support # CONFIG_VIRTIO_MENU is not set # CONFIG_VIRTIO_CONSOLE is not set + +# enable firmware compression +CONFIG_FW_LOADER_COMPRESS=y +CONFIG_FW_LOADER_COMPRESS_ZSTD=y diff --git a/buildroot-external/kernel/6.6/security.config b/buildroot-external/kernel/6.6/security.config index d3dbf25..dde0a34 100644 --- a/buildroot-external/kernel/6.6/security.config +++ b/buildroot-external/kernel/6.6/security.config @@ -10,7 +10,8 @@ CONFIG_MODULE_FORCE_UNLOAD=y # CONFIG_MODULE_SIG_FORCE is not set # CONFIG_MODULE_SIG_ALL is not set # CONFIG_MODULE_SIG_SHA512 is not set -CONFIG_MODULE_COMPRESS_NONE=y +CONFIG_MODULE_COMPRESS_XZ=y +CONFIG_MODULE_DECOMPRESS=y # Make sure kernel page tables have safe permissions. CONFIG_STRICT_KERNEL_RWX=y diff --git a/buildroot-external/package/hotkeyd/S60hotkeyd b/buildroot-external/package/hotkeyd/S60hotkeyd new file mode 100644 index 0000000..35f4098 --- /dev/null +++ b/buildroot-external/package/hotkeyd/S60hotkeyd @@ -0,0 +1,42 @@ +#!/bin/sh +# shellcheck shell=dash +# +# start/stop hotkey daemon +# + +DAEMON="hotkeyd" + +start() { + echo -n "Starting ${DAEMON}: " + start-stop-daemon -S -q -b -m -p /var/run/hotkeyd.pid --exec /bin/hotkeyd -- -q + echo "OK" +} + +stop () { + echo -n "Stopping ${DAEMON}: " + start-stop-daemon -K -q -p /var/run/hotkeyd.pid + echo "OK" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot-external/package/hotkeyd/hotkeyd.hash b/buildroot-external/package/hotkeyd/hotkeyd.hash new file mode 100644 index 0000000..ee3a28d --- /dev/null +++ b/buildroot-external/package/hotkeyd/hotkeyd.hash @@ -0,0 +1 @@ +sha256 333683b482417282af5c7f1d9010074ec6efebb4c6015b66459769fe6b993172 hotkeyd-b35ba8173d9a95f0e8cc3be2d168124fc641fee6.tar.gz diff --git a/buildroot-external/package/hotkeyd/hotkeyd.mk b/buildroot-external/package/hotkeyd/hotkeyd.mk index 3497614..1b24fc6 100644 --- a/buildroot-external/package/hotkeyd/hotkeyd.mk +++ b/buildroot-external/package/hotkeyd/hotkeyd.mk @@ -2,13 +2,12 @@ # # hotkeyd # -# https://github.com/vflyson/hotkeyd +# https://github.com/jens-maus/hotkeyd # ################################################################################ -HOTKEYD_VERSION = 0.4.4 -HOTKEYD_TAG = 0ee8b2ae1344c9c8bedd0f91ebda0b389271a6d3 -HOTKEYD_SITE = $(call github,jens-maus,hotkeyd,$(HOTKEYD_TAG)) +HOTKEYD_VERSION = b35ba8173d9a95f0e8cc3be2d168124fc641fee6 +HOTKEYD_SITE = $(call github,jens-maus,hotkeyd,$(HOTKEYD_VERSION)) HOTKEYD_LICENSE = GPL-3.0 HOTKEYD_LICENSE_FILES = LICENSE @@ -20,4 +19,9 @@ define HOTKEYD_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(@D)/hotkeyd $(TARGET_DIR)/bin/ endef +define HOTKEYD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(HOTKEYD_PKGDIR)/S60hotkeyd \ + $(TARGET_DIR)/etc/init.d/S60hotkeyd +endef + $(eval $(generic-package)) diff --git a/buildroot-external/package/multilib32/Config.in b/buildroot-external/package/multilib32/Config.in new file mode 100644 index 0000000..b375db1 --- /dev/null +++ b/buildroot-external/package/multilib32/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MULTILIB32 + bool "On a 64bit systems this package allows recompile the used toolchain for 32bit systems and stores the created libraries to /lib32,/usr/lib32 accordingly" + +config BR2_PACKAGE_MULTILIB32_CONFIG_FRAGMENT_FILE + string "kconfig fragment file" + depends on BR2_PACKAGE_MULTILIB32 diff --git a/buildroot-external/package/multilib32/external/Buildroot.config b/buildroot-external/package/multilib32/external/Buildroot.config new file mode 100644 index 0000000..b2c84f0 --- /dev/null +++ b/buildroot-external/package/multilib32/external/Buildroot.config @@ -0,0 +1,27 @@ +BR2_CCACHE=y +BR2_DL_DIR="$(TOPDIR)/../download" +BR2_ENABLE_LTO=y +BR2_GNU_MIRROR="http://ftp.gnu.org/pub/gnu" +BR2_KERNEL_HEADERS_5_15=y +BR2_KERNEL_MIRROR="https://www.kernel.org/pub" +BR2_OPTIMIZE_2=y +BR2_RELRO_PARTIAL=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# packages required as 32bit versions +#BR2_PACKAGE_C_ARES=y +#BR2_PACKAGE_FILE=y +#BR2_PACKAGE_FONTCONFIG=y +#BR2_PACKAGE_LIBGLIB2=y +#BR2_PACKAGE_LIBUSB=y +#BR2_PACKAGE_LIBUSB_COMPAT=y +#BR2_PACKAGE_LIBUV=y +#BR2_PACKAGE_LIBXMLPARSER=y +#BR2_PACKAGE_LIBXMLRPCXX=y +#BR2_PACKAGE_PCRE=y +#BR2_PACKAGE_READLINE=y +BR2_PACKAGE_OPENSSL=y +BR2_PACKAGE_PCSC_LITE=y +BR2_PACKAGE_PULSEAUDIO=y +BR2_PACKAGE_XORG7=y +BR2_PACKAGE_XLIB_LIBX11=y diff --git a/buildroot-external/package/multilib32/external/Config.ext.in b/buildroot-external/package/multilib32/external/Config.ext.in new file mode 100644 index 0000000..e69de29 diff --git a/buildroot-external/package/multilib32/external/Config.in b/buildroot-external/package/multilib32/external/Config.in new file mode 100644 index 0000000..501e326 --- /dev/null +++ b/buildroot-external/package/multilib32/external/Config.in @@ -0,0 +1,2 @@ +# External packages +source "$BR2_EXTERNAL_MULTILIB32_PATH/Config.ext.in" diff --git a/buildroot-external/package/multilib32/external/configs/multilib32_arm_a53-64k.config b/buildroot-external/package/multilib32/external/configs/multilib32_arm_a53-64k.config new file mode 100644 index 0000000..5d76a12 --- /dev/null +++ b/buildroot-external/package/multilib32/external/configs/multilib32_arm_a53-64k.config @@ -0,0 +1,3 @@ +BR2_arm=y +BR2_cortex_a53=y +BR2_ARM_PAGE_SIZE_64K=y diff --git a/buildroot-external/package/multilib32/external/configs/multilib32_arm_a53.config b/buildroot-external/package/multilib32/external/configs/multilib32_arm_a53.config new file mode 100644 index 0000000..41c8eea --- /dev/null +++ b/buildroot-external/package/multilib32/external/configs/multilib32_arm_a53.config @@ -0,0 +1,2 @@ +BR2_arm=y +BR2_cortex_a53=y diff --git a/buildroot-external/package/multilib32/external/configs/multilib32_arm_a72.config b/buildroot-external/package/multilib32/external/configs/multilib32_arm_a72.config new file mode 100644 index 0000000..5c2d974 --- /dev/null +++ b/buildroot-external/package/multilib32/external/configs/multilib32_arm_a72.config @@ -0,0 +1,2 @@ +BR2_arm=y +BR2_cortex_a72=y diff --git a/buildroot-external/package/multilib32/external/configs/multilib32_arm_a76-16k.config b/buildroot-external/package/multilib32/external/configs/multilib32_arm_a76-16k.config new file mode 100644 index 0000000..c7bd524 --- /dev/null +++ b/buildroot-external/package/multilib32/external/configs/multilib32_arm_a76-16k.config @@ -0,0 +1,3 @@ +BR2_arm=y +BR2_cortex_a76=y +BR2_ARM_PAGE_SIZE_16K=y diff --git a/buildroot-external/package/multilib32/external/configs/multilib32_arm_a76.config b/buildroot-external/package/multilib32/external/configs/multilib32_arm_a76.config new file mode 100644 index 0000000..861f5d3 --- /dev/null +++ b/buildroot-external/package/multilib32/external/configs/multilib32_arm_a76.config @@ -0,0 +1,2 @@ +BR2_arm=y +BR2_cortex_a76=y diff --git a/buildroot-external/package/multilib32/external/configs/multilib32_i686.config b/buildroot-external/package/multilib32/external/configs/multilib32_i686.config new file mode 100644 index 0000000..1d303e2 --- /dev/null +++ b/buildroot-external/package/multilib32/external/configs/multilib32_i686.config @@ -0,0 +1 @@ +BR2_x86_i686=y diff --git a/buildroot-external/package/multilib32/external/external.desc b/buildroot-external/package/multilib32/external/external.desc new file mode 100644 index 0000000..16f52db --- /dev/null +++ b/buildroot-external/package/multilib32/external/external.desc @@ -0,0 +1 @@ +name: MULTILIB32 diff --git a/buildroot-external/package/multilib32/external/external.mk b/buildroot-external/package/multilib32/external/external.mk new file mode 100644 index 0000000..bb197fb --- /dev/null +++ b/buildroot-external/package/multilib32/external/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_THINROOT_PATH)/package/*/*.mk)) diff --git a/buildroot-external/package/multilib32/multilib32.mk b/buildroot-external/package/multilib32/multilib32.mk new file mode 100644 index 0000000..0ca990e --- /dev/null +++ b/buildroot-external/package/multilib32/multilib32.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# Multlib32 Package +# +################################################################################ + +MULTILIB32_VERSION = 1.3.0 +MULTILIB32_SOURCE = + +define MULTILIB32_BUILD_CMDS + mkdir -p $(@D)/output + $(MAKE) O=$(@D)/output -C $(TOPDIR) HOSTCXX="$(HOSTCXX_NOCCACHE)" HOSTCC="$(HOSTCC_NOCCACHE)" BR2_EXTERNAL=$(MULTILIB32_PKGDIR)/external alldefconfig + (cd $(@D)/output && HOSTCXX="$(HOSTCXX_NOCCACHE)" HOSTCC="$(HOSTCC_NOCCACHE)" BR2_EXTERNAL=$(MULTILIB32_PKGDIR)/external $(TOPDIR)/support/kconfig/merge_config.sh $(MULTILIB32_PKGDIR)/external/Buildroot.config $(MULTILIB32_PKGDIR)/external/configs/$(BR2_PACKAGE_MULTILIB32_CONFIG_FRAGMENT_FILE)) + $(MAKE) O=$(@D)/output -C $(TOPDIR) HOSTCXX="$(HOSTCXX_NOCCACHE)" HOSTCC="$(HOSTCC_NOCCACHE)" BR2_EXTERNAL=$(MULTILIB32_PKGDIR)/external +endef + +define MULTILIB32_INSTALL_TARGET_CMDS + tar xvf $(@D)/output/images/rootfs.tar --transform='s/.\/lib\//lib32\//' -C $(TARGET_DIR)/ --wildcards --show-transformed-names "./lib/*.so*" + tar xvf $(@D)/output/images/rootfs.tar --transform='s/.\/usr\/lib\//usr\/lib32\//' -C $(TARGET_DIR)/ --wildcards --show-transformed-names "./usr/lib/*.so*" + mkdir -p $(TARGET_DIR)/etc/ld.so.conf.d + echo -e "/lib32\n/usr/lib32\n/usr/local/lib32" >$(TARGET_DIR)/etc/ld.so.conf.d/lib32.conf + if [[ $(BR2_ARCH) == "x86_64" ]]; then ln -sf ../lib32/ld-linux.so.2 $(TARGET_DIR)/lib/ ; fi + if [[ $(BR2_ARCH) == "aarch64" ]]; then ln -sf ../lib32/ld-linux-armhf.so.3 $(TARGET_DIR)/lib/ ; fi +endef + +$(eval $(generic-package)) diff --git a/buildroot-external/package/phodav/Config.in b/buildroot-external/package/phodav/Config.in new file mode 100644 index 0000000..ea02baa --- /dev/null +++ b/buildroot-external/package/phodav/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PHODAV + bool "phodav" + select BR2_PACKAGE_LIBSOUP3 + help + minimal WebDAV server implementation using + GNOME libsoup (RFC 4918) + + https://gitlab.gnome.org/GNOME/phodav diff --git a/buildroot-external/package/phodav/phodav.mk b/buildroot-external/package/phodav/phodav.mk new file mode 100644 index 0000000..d17deb1 --- /dev/null +++ b/buildroot-external/package/phodav/phodav.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# phodav +# +# https://gitlab.gnome.org/GNOME/phodav +# +################################################################################ + +PHODAV_VERSION = v3.0 +PHODAV_SITE = https://github.com/GNOME/phodav.git +PHODAV_SITE_METHOD = git +PHODAV_LICENSE = LGPL-2.1 +PHODAV_LICENSE_FILES = COPYING +PHODAV_INSTALL_STAGING = YES + +PHODAV_DEPENDENCIES = libsoup3 + +define PHODAV_TARBALL_VERSION + echo $(PHODAV_VERSION) | tr -d v >$(@D)/.tarball-version +endef +PHODAV_POST_PATCH_HOOKS += PHODAV_TARBALL_VERSION + +$(eval $(meson-package)) diff --git a/buildroot-external/package/qutselect/Config.in b/buildroot-external/package/qutselect/Config.in index 1f42da9..30f7273 100644 --- a/buildroot-external/package/qutselect/Config.in +++ b/buildroot-external/package/qutselect/Config.in @@ -1,13 +1,19 @@ config BR2_PACKAGE_QUTSELECT bool "qutselect" - select BR2_PACKAGE_QT5 - select BR2_PACKAGE_QT5BASE - select BR2_PACKAGE_QT5BASE_GUI - select BR2_PACKAGE_QT5BASE_XCB - select BR2_PACKAGE_QT5X11EXTRAS - select BR2_PACKAGE_QT5BASE_FONTCONFIG - select BR2_PACKAGE_QT5BASE_PNG + select BR2_PACKAGE_QT6 + select BR2_PACKAGE_QT6BASE + select BR2_PACKAGE_QT6BASE_GUI + select BR2_PACKAGE_QT6BASE_XCB + select BR2_PACKAGE_QT6X11EXTRAS + select BR2_PACKAGE_QT6BASE_FONTCONFIG + select BR2_PACKAGE_QT6BASE_PNG + select BR2_PACKAGE_QT6BASE_WIDGETS + select BR2_PACKAGE_QT6BASE_NETWORK + select BR2_PACKAGE_JQ + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBCURL_CURL + select BR2_PACKAGE_YAD help - A Qt5-based (unix) terminal server selection tool + A Qt-based (unix) terminal server selection tool https://github.com/hzdr/qutselect diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash new file mode 100644 index 0000000..c2e7ddb --- /dev/null +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 955a7262bf4b788799eed891740969d94c2fb549ae9d85f43459fd2b887eb2a0 qutselect-3.17.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index 2d8ba5a..3dd1506 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,11 +4,11 @@ # ################################################################################ -QUTSELECT_VERSION = 2.4 +QUTSELECT_VERSION = 3.17 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE -QUTSELECT_DEPENDENCIES = qt5base +QUTSELECT_DEPENDENCIES = qt6base jq libcurl yad QUTSELECT_CONF_OPTS = -DCMAKE_INSTALL_PREFIX:PATH=/ define QUTSELECT_INSTALL_TARGET_CMDS diff --git a/buildroot-external/package/remmina/Config.in b/buildroot-external/package/remmina/Config.in index db7232e..b83a585 100644 --- a/buildroot-external/package/remmina/Config.in +++ b/buildroot-external/package/remmina/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_REMMINA bool "remmina" - select BR2_PACKAGE_CAIRO_PDF + select BR2_PACKAGE_CAIRO_ZLIB # select BR2_PACKAGE_AVAHI select BR2_PACKAGE_LIBGTK3 select BR2_PACKAGE_LIBVNCSERVER diff --git a/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash b/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash index a4fc9c9..1137ec5 100644 --- a/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash +++ b/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash @@ -1,3 +1,3 @@ # Locally computed sha256 8070f30d450f10fa9253e7a254cd3877fa4b973eb437b94d8c03e2fabc64c916 LICENSE -sha256 5d53606e939a48206d0d68c6398e900ff2845863a52c28c2739fa84c8fbc0bac rpi-eeprom-b745226b41ac202976ee8307fcb179a1193fab3c.tar.gz +sha256 74dc46174620ee56ab83b42c2662a679efad80c66ecd38428d21b11a0bbe080e rpi-eeprom-6c2e2d6833df14134463ea8968151f031950a21e.tar.gz diff --git a/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk b/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk index 210000b..c383ddd 100644 --- a/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk +++ b/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk @@ -4,7 +4,7 @@ # ################################################################################ -RPI_EEPROM_VERSION = b745226b41ac202976ee8307fcb179a1193fab3c +RPI_EEPROM_VERSION = 6c2e2d6833df14134463ea8968151f031950a21e RPI_EEPROM_SITE = $(call github,raspberrypi,rpi-eeprom,$(RPI_EEPROM_VERSION)) RPI_EEPROM_LICENSE = BSD-3-Clause RPI_EEPROM_LICENSE_FILES = LICENSE @@ -12,10 +12,10 @@ RPI_EEPROM_INSTALL_IMAGES = YES ifeq ($(BR2_PACKAGE_RPI_EEPROM_RPI4),y) # Raspberry Pi 4 - RPI_EEPROM_FIRMWARE_PATH = firmware-2711/stable/pieeprom-2024-01-22.bin + RPI_EEPROM_FIRMWARE_PATH = firmware-2711/stable/pieeprom-2025-02-11.bin else ifeq ($(BR2_PACKAGE_RPI_EEPROM_RPI5),y) # Raspberry Pi 5 - RPI_EEPROM_FIRMWARE_PATH = firmware-2712/stable/pieeprom-2024-02-16.bin + RPI_EEPROM_FIRMWARE_PATH = firmware-2712/stable/pieeprom-2025-03-19.bin endif define RPI_EEPROM_BUILD_CMDS diff --git a/buildroot-external/package/setrootpix/Config.in b/buildroot-external/package/setrootpix/Config.in new file mode 100644 index 0000000..4612959 --- /dev/null +++ b/buildroot-external/package/setrootpix/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SETROOTPIX + bool "setrootpix" + select BR2_PACKAGE_XLIB_LIBX11 + help + A utility to set the X11 root window to dedicated color in + a compositor-compatible way. diff --git a/buildroot-external/package/setrootpix/LICENSE b/buildroot-external/package/setrootpix/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/buildroot-external/package/setrootpix/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/buildroot-external/package/setrootpix/Makefile b/buildroot-external/package/setrootpix/Makefile new file mode 100644 index 0000000..6e084d1 --- /dev/null +++ b/buildroot-external/package/setrootpix/Makefile @@ -0,0 +1,13 @@ +CC = gcc + +CFLAGS = -Wall -Wextra -O2 -pipe + +all: setrootpix + +setrootpix: setrootpix.o + $(CC) -o setrootpix setrootpix.o -lX11 + +.c.o: + $(CC) -c $(CFLAGS) $< + +setrootpix.o: setrootpix.c diff --git a/buildroot-external/package/setrootpix/setrootpix.c b/buildroot-external/package/setrootpix/setrootpix.c new file mode 100644 index 0000000..1bd4319 --- /dev/null +++ b/buildroot-external/package/setrootpix/setrootpix.c @@ -0,0 +1,104 @@ +/* + * setrootpix.c + * + * Sets a solid-color root background using a 1x1 pixmap (tiled by the X server), + * and publishes background pixmap hints: + * - _XROOTPMAP_ID + * - ESETROOT_PMAP_ID + * - _XSETROOT_ID + * + * Uses RetainPermanent so the pixmap survives after this helper exits. + * + * Build: + * ${TARGET_CC} -O2 -Wall -Wextra -o setrootpix setrootpix.c -lX11 + * + * Usage: + * ./setrootpix "#32436B" + */ + +#include +#include +#include +#include + +static int alloc_color(Display *dpy, Colormap cmap, const char *spec, XColor *out) +{ + if (!XParseColor(dpy, cmap, spec, out)) { + return 0; + } + if (!XAllocColor(dpy, cmap, out)) { + return 0; + } + return 1; +} + +static void set_pixmap_property(Display *dpy, Window root, Atom prop, Pixmap pm) +{ + /* XIDs are 32-bit; store as 32-bit item for XChangeProperty format=32. */ + uint32_t id = (uint32_t)pm; + + XChangeProperty(dpy, root, prop, XA_PIXMAP, 32, PropModeReplace, + (unsigned char *)&id, 1); +} + +int main(int argc, char **argv) +{ + const char *color = (argc >= 2) ? argv[1] : "#32436B"; + + Display *dpy = XOpenDisplay(NULL); + if (!dpy) { + fprintf(stderr, "setrootpix: cannot open display\n"); + return 1; + } + + const int scr = DefaultScreen(dpy); + Window root = RootWindow(dpy, scr); + Colormap cmap = DefaultColormap(dpy, scr); + + /* Critical: keep resources (pixmap) after this client exits. */ + XSetCloseDownMode(dpy, RetainPermanent); + + XColor col; + if (!alloc_color(dpy, cmap, color, &col)) { + fprintf(stderr, "setrootpix: cannot parse/alloc color '%s'\n", color); + XCloseDisplay(dpy); + return 2; + } + + /* 1x1 pixmap; will be tiled across the root window. */ + Pixmap pm = XCreatePixmap(dpy, root, 1, 1, DefaultDepth(dpy, scr)); + if (!pm) { + fprintf(stderr, "setrootpix: XCreatePixmap failed\n"); + XCloseDisplay(dpy); + return 3; + } + + GC gc = XCreateGC(dpy, pm, 0, NULL); + if (!gc) { + fprintf(stderr, "setrootpix: XCreateGC failed\n"); + XFreePixmap(dpy, pm); + XCloseDisplay(dpy); + return 4; + } + + XSetForeground(dpy, gc, col.pixel); + XFillRectangle(dpy, pm, gc, 0, 0, 1, 1); + XFreeGC(dpy, gc); + + /* Apply pixmap as root background and repaint. */ + XSetWindowBackgroundPixmap(dpy, root, pm); + XClearWindow(dpy, root); + + /* Publish hints used by compositors / pseudo-transparency clients. */ + Atom a_root = XInternAtom(dpy, "_XROOTPMAP_ID", False); + Atom a_eset = XInternAtom(dpy, "ESETROOT_PMAP_ID", False); + Atom a_xset = XInternAtom(dpy, "_XSETROOT_ID", False); + + set_pixmap_property(dpy, root, a_root, pm); + set_pixmap_property(dpy, root, a_eset, pm); + set_pixmap_property(dpy, root, a_xset, pm); + + XFlush(dpy); + XCloseDisplay(dpy); + return 0; +} diff --git a/buildroot-external/package/setrootpix/setrootpix.hash b/buildroot-external/package/setrootpix/setrootpix.hash new file mode 100644 index 0000000..e63ebdc --- /dev/null +++ b/buildroot-external/package/setrootpix/setrootpix.hash @@ -0,0 +1 @@ +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/buildroot-external/package/setrootpix/setrootpix.mk b/buildroot-external/package/setrootpix/setrootpix.mk new file mode 100644 index 0000000..7afab79 --- /dev/null +++ b/buildroot-external/package/setrootpix/setrootpix.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# setrootpix +# +################################################################################ + +SETROOTPIX_VERSION = 0.2.0 +SETROOTPIX_SITE = $(BR2_EXTERNAL_THINROOT_PATH)/package/setrootpix +SETROOTPIX_SITE_METHOD = local +SETROOTPIX_LICENSE = Apache-2.0 +SETROOTPIX_LICENSE_FILES = LICENSE +SETROOTPIX_DEPENDENCIES = xlib_libX11 + +define SETROOTPIX_BUILD_CMDS + $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" CFLAGS="$(TARGET_CFLAGS)" -C $(@D) all +endef + +define SETROOTPIX_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/setrootpix $(TARGET_DIR)/usr/bin +endef + +$(eval $(generic-package)) diff --git a/buildroot-external/package/spice-gtk/Config.in b/buildroot-external/package/spice-gtk/Config.in new file mode 100644 index 0000000..58a5b3f --- /dev/null +++ b/buildroot-external/package/spice-gtk/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_SPICE_GTK + bool "spice-gtk" + select BR2_PACKAGE_SPICE_PROTOCOL + select BR2_PACKAGE_HOST_PYTHON_SIX + select BR2_PACKAGE_HOST_PYTHON_PYPARSING + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBJPEG + select BR2_PACKAGE_JSON_GLIB + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OPUS + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + select BR2_PACKAGE_GST1_PLUGINS_GOOD + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT + select BR2_PACKAGE_GST1_PLUGINS_BAD + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPUS + select BR2_PACKAGE_LIBCAP_NG + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_USBREDIR + select BR2_PACKAGE_USBUTILS + select BR2_PACKAGE_LZ4 + select BR2_PACKAGE_PHODAV + select BR2_PACKAGE_OPUS + help + SPICE Client library using GLib and GTK+ + + https://gitlab.freedesktop.org/spice/spice-gtk diff --git a/buildroot-external/package/spice-gtk/spice-gtk.mk b/buildroot-external/package/spice-gtk/spice-gtk.mk new file mode 100644 index 0000000..3a8efc5 --- /dev/null +++ b/buildroot-external/package/spice-gtk/spice-gtk.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# spice-gtk +# +# https://gitlab.freedesktop.org/spice/spice-gtk +# +################################################################################ + +SPICE_GTK_VERSION = 0.42 +SPICE_GTK_SOURCE = spice-gtk-$(SPICE_GTK_VERSION).tar.xz +SPICE_GTK_SITE = https://www.spice-space.org/download/gtk +SPICE_GTK_LICENSE = GPL-2.0 +SPICE_GTK_LICENSE_FILES = COPYING +SPICE_GTK_INSTALL_STAGING = YES + +SPICE_GTK_DEPENDENCIES = \ + spice-protocol \ + host-python-six \ + host-python-pyparsing \ + jpeg \ + json-glib \ + gstreamer1 \ + gst1-plugins-good \ + gst1-plugins-bad \ + gst1-plugins-base \ + libcap-ng \ + usbredir \ + usbutils \ + phodav \ + opus + +SPICE_GTK_CONF_OPTS += -Dusb-ids-path=/usr/share/hwdata/usb.ids + +$(eval $(meson-package)) diff --git a/buildroot-external/package/thinlinc/thinlinc.hash b/buildroot-external/package/thinlinc/thinlinc.hash index 46de5ae..bfdf202 100644 --- a/buildroot-external/package/thinlinc/thinlinc.hash +++ b/buildroot-external/package/thinlinc/thinlinc.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 ea3a92186cbaf71cc4ab692b3baeadd94b3836242e58705a38fe3683f4f18691 tl-4.16.0-3389-client-linux-dynamic-x86_64.tar.gz -sha256 ec5f602e7d7732dce6b3ba2a48f2908c4a5660652d8fe0f0029556c08a26f624 tl-4.16.0-3389-client-linux-dynamic-armhf.tar.gz +sha256 7d37b31a19f45044844113eb1d855935ca65578f306f95ffc6aa6521f2d12c00 tl-4.18.0-3768-client-linux-dynamic-x86_64.tar.gz +sha256 cd35be934574a197cc01399e7c3a2a9e5451e42215b0aab7ea9f29771927a643 tl-4.18.0-3768-client-linux-dynamic-armhf.tar.gz diff --git a/buildroot-external/package/thinlinc/thinlinc.mk b/buildroot-external/package/thinlinc/thinlinc.mk index d9801f2..9bc180c 100644 --- a/buildroot-external/package/thinlinc/thinlinc.mk +++ b/buildroot-external/package/thinlinc/thinlinc.mk @@ -6,11 +6,13 @@ # ################################################################################ -THINLINC_VERSION = 4.16.0-3389 +THINLINC_VERSION = 4.18.0-3768 THINLINC_SITE = https://www.cendio.com/downloads/clients ifeq ($(call qstrip,$(BR2_ARCH)),x86_64) THINLINC_SOURCE = tl-$(THINLINC_VERSION)-client-linux-dynamic-x86_64.tar.gz +else ifeq ($(call qstrip,$(BR2_ARCH)),aarch64) +THINLINC_SOURCE = tl-$(THINLINC_VERSION)-client-linux-dynamic-armhf.tar.gz else ifeq ($(call qstrip,$(BR2_ARCH)),arm) THINLINC_SOURCE = tl-$(THINLINC_VERSION)-client-linux-dynamic-armhf.tar.gz endif diff --git a/buildroot-external/package/virt-viewer/Config.in b/buildroot-external/package/virt-viewer/Config.in new file mode 100644 index 0000000..9a4e17f --- /dev/null +++ b/buildroot-external/package/virt-viewer/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_VIRT_VIEWER + bool "virt-viewer" + select BR2_PACKAGE_CAIRO_ZLIB + select BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_SPICE_GTK + help + The virtual machine console viewer + + https://gitlab.com/virt-viewer/virt-viewer diff --git a/buildroot-external/package/virt-viewer/virt-viewer.mk b/buildroot-external/package/virt-viewer/virt-viewer.mk new file mode 100644 index 0000000..8beeb4c --- /dev/null +++ b/buildroot-external/package/virt-viewer/virt-viewer.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# virt-viewer +# +# https://gitlab.com/virt-viewer/virt-viewer +# +################################################################################ + +#VIRT_VIEWER_VERSION = v11.0 +VIRT_VIEWER_VERSION = 82dbca46b605685ab354bf8cea7f2a2615132b39 +VIRT_VIEWER_SITE = https://gitlab.com/virt-viewer/virt-viewer.git +VIRT_VIEWER_SITE_METHOD = git +#VIRT_VIEWER_DEPENDENCIES = xlib_libXScrnSaver +VIRT_VIEWER_LICENSE = GPL-2.0 +VIRT_VIEWER_LICENSE_FILES = COPYING + +VIRT_VIEWER_DEPENDENCIES = libgtk3 spice-gtk + +define VIRT_VIEWER_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/buildroot-build/src/remote-viewer $(TARGET_DIR)/bin/ +endef + +$(eval $(meson-package)) diff --git a/buildroot-external/package/xkb-switch/Config.in b/buildroot-external/package/xkb-switch/Config.in new file mode 100644 index 0000000..e6c7f22 --- /dev/null +++ b/buildroot-external/package/xkb-switch/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XKB_SWITCH + bool "xkb-switch" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + CLI zum Abfragen/Umschalten des XKB-Layouts. diff --git a/buildroot-external/package/xkb-switch/xkb-switch.hash b/buildroot-external/package/xkb-switch/xkb-switch.hash new file mode 100644 index 0000000..04befc3 --- /dev/null +++ b/buildroot-external/package/xkb-switch/xkb-switch.hash @@ -0,0 +1 @@ +sha256 89e7cc64a3bfc481b0e341b79320de4f0adbdba49b551988fe4bf02f6ae9e003 xkb-switch-1.8.5.tar.gz diff --git a/buildroot-external/package/xkb-switch/xkb-switch.mk b/buildroot-external/package/xkb-switch/xkb-switch.mk new file mode 100644 index 0000000..273169c --- /dev/null +++ b/buildroot-external/package/xkb-switch/xkb-switch.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# xkb-switch +# +################################################################################ + +XKB_SWITCH_VERSION = 1.8.5 +XKB_SWITCH_SITE = $(call github,sergei-mironov,xkb-switch,$(XKB_SWITCH_VERSION)) +XKB_SWITCH_LICENSE = MIT +XKB_SWITCH_LICENSE_FILES = COPYING + +XKB_SWITCH_DEPENDENCIES = xlib_libX11 xlib_libxkbfile +XKB_SWITCH_CONF_OPTS = \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_BINDIR=bin \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_INSTALL_MANDIR=share/man + +$(eval $(cmake-package)) diff --git a/buildroot-external/package/xosd/Config.in b/buildroot-external/package/xosd/Config.in new file mode 100644 index 0000000..7710ce9 --- /dev/null +++ b/buildroot-external/package/xosd/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_XOSD + bool "xosd" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + help + XOSD displays text on your screen, sounds simple right? + The difference is it is unmanaged and shaped, so it appears + transparent. This gives the effect of an On Screen Display, + like your TV/VCR etc. + + https://sourceforge.net/projects/libxosd/ diff --git a/buildroot-external/package/xosd/xosd.hash b/buildroot-external/package/xosd/xosd.hash new file mode 100644 index 0000000..81f29a9 --- /dev/null +++ b/buildroot-external/package/xosd/xosd.hash @@ -0,0 +1 @@ +sha256 4f1fa96f4895baee6a3cba40f188a0da23bbac9d68e8c326d749e084143cb508 xosd-2.2.14.tar.gz diff --git a/buildroot-external/package/xosd/xosd.mk b/buildroot-external/package/xosd/xosd.mk new file mode 100644 index 0000000..99653de --- /dev/null +++ b/buildroot-external/package/xosd/xosd.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libxosd / xosd +# +################################################################################ + +XOSD_VERSION = 2.2.14 +XOSD_SITE = https://downloads.sourceforge.net/project/libxosd/libxosd/xosd-$(XOSD_VERSION) +XOSD_LICENSE = GPL-2.0-or-later +XOSD_LICENSE_FILES = COPYING +XOSD_DEPENDENCIES = xlib_libX11 xlib_libXext + +# remove unnecessary stuff +define XOSD_REMOVE_DATA + $(RM) -r $(TARGET_DIR)/usr/share/xosd + $(RM) -r $(TARGET_DIR)/usr/bin/xosd-config +endef +XOSD_POST_INSTALL_TARGET_HOOKS += XOSD_REMOVE_DATA + +$(eval $(autotools-package)) diff --git a/buildroot-external/package/xprintidle/xprintidle.mk b/buildroot-external/package/xprintidle/xprintidle.mk index fc38630..2f52337 100644 --- a/buildroot-external/package/xprintidle/xprintidle.mk +++ b/buildroot-external/package/xprintidle/xprintidle.mk @@ -13,7 +13,7 @@ XPRINTIDLE_LICENSE = GPL-2.0 XPRINTIDLE_LICENSE_FILES = COPYING define XPRINTIDLE_INSTALL_TARGET_CMDS - $(INSTALL) -D -m 0755 $(@D)/build/xprintidle $(TARGET_DIR)/bin/ + $(INSTALL) -D -m 0755 $(@D)/buildroot-build/xprintidle $(TARGET_DIR)/bin/ endef $(eval $(meson-package)) diff --git a/buildroot-external/package/yoe-kiosk-browser/Config.in b/buildroot-external/package/yoe-kiosk-browser/Config.in new file mode 100644 index 0000000..4d60c55 --- /dev/null +++ b/buildroot-external/package/yoe-kiosk-browser/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_YOE_KIOSK_BROWSER + bool "yoe-kiosk-browser" + select BR2_PACKAGE_HOST_QT6TOOLS + select BR2_PACKAGE_QT6WEBENGINE + select BR2_PACKAGE_QT6MULTIMEDIA + select BR2_PACKAGE_QT6DECLARATIVE + select BR2_PACKAGE_QT6DECLARATIVE_QUICK + select BR2_PACKAGE_QT6SHADERTOOLS + select BR2_PACKAGE_QT6VIRTUALKEYBOARD + help + Simple Qt Webengine browser diff --git a/buildroot-external/package/yoe-kiosk-browser/yoe-kiosk-browser.mk b/buildroot-external/package/yoe-kiosk-browser/yoe-kiosk-browser.mk new file mode 100644 index 0000000..54a9929 --- /dev/null +++ b/buildroot-external/package/yoe-kiosk-browser/yoe-kiosk-browser.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# yoe-kiosk-browser +# +################################################################################ + +YOE_KIOSK_BROWSER_VERSION = 47846c7a62aea8317070f4a79b80cd26ded74bdd +YOE_KIOSK_BROWSER_SITE = https://github.com/YoeDistro/yoe-kiosk-browser +YOE_KIOSK_BROWSER_SITE_METHOD = git +YOE_KIOSK_BROWSER_DEPENDENCIES = qt6base qt6declarative qt6virtualkeyboard +YOE_KIOSK_BROWSER_LICENSE = LGPL-3.0 + +#define QT_WEBENGINE_KIOSK_CONFIGURE_CMDS +# (cd $(@D); $(TARGET_MAKE_ENV) $(QT5_QMAKE) PREFIX=/usr) +#endef +# +#define QT_WEBENGINE_KIOSK_BUILD_CMDS +# $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +#endef +# +#define QT_WEBENGINE_KIOSK_INSTALL_TARGET_CMDS +# $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src -f Makefile.qt-webengine-kiosk \ +# INSTALL_ROOT=$(TARGET_DIR) \ +# install_target +# $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ +# INSTALL_ROOT=$(TARGET_DIR) +#endef + +$(eval $(cmake-package)) diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index 1dc5a49..629b3a5 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,2 +1,3 @@ -sha256 200fd119cb9ef06bcedcdb52be00ba443163eab154295c5831fed9a12211a8b9 linux-6.6.23.tar.xz -sha256 f2de57e2e0e945bd97ab59b607dea082b1650f02e82c63795797cd36e03c4ccc stable_20240124.tar.gz +sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz +sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz +sha256 d367c7504bd4da520dd01eb08125d2d0ac088bc8af4cd56d236f2074dd4225b7 linux-6.12.68.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index 1dc5a49..629b3a5 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,2 +1,3 @@ -sha256 200fd119cb9ef06bcedcdb52be00ba443163eab154295c5831fed9a12211a8b9 linux-6.6.23.tar.xz -sha256 f2de57e2e0e945bd97ab59b607dea082b1650f02e82c63795797cd36e03c4ccc stable_20240124.tar.gz +sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz +sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz +sha256 d367c7504bd4da520dd01eb08125d2d0ac088bc8af4cd56d236f2074dd4225b7 linux-6.12.68.tar.xz diff --git a/buildroot-external/patches/psplash/create-patches.sh b/buildroot-external/patches/psplash/create-patches.sh deleted file mode 100755 index a36e278..0000000 --- a/buildroot-external/patches/psplash/create-patches.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# -# Tiny wrapper script walking through our subdirectories containing -# "logo.png" files and generating the corresponding patch files in -# the same subdirectory. -# -# This tool requires "gdk-pixbuf-csource" from libgtk -# - -logofiles=$(find . -maxdepth 2 -type f -name logo.png -print) -for file in ${logofiles}; do - dir=$(dirname "${file}") - gdk-pixbuf-csource --macros --name=POKY_IMG "${dir}/logo.png" | sed 's/guint8/uint8/g' >/tmp/psplash-poky-img.h - diff -N -u --label=psplash/psplash-poky-img.h.orig --label=psplash/psplash-poky-img.h psplash-poky-img.h.orig /tmp/psplash-poky-img.h >"${dir}/0001-logo.patch" - rm -f /tmp/psplash-poky-img.h -done diff --git a/buildroot-external/patches/psplash/hzdr/0001-logo.patch b/buildroot-external/patches/psplash/hzdr/0001-logo.patch deleted file mode 100644 index d6e29ad..0000000 --- a/buildroot-external/patches/psplash/hzdr/0001-logo.patch +++ /dev/null @@ -1,2013 +0,0 @@ ---- psplash/psplash-poky-img.h.orig -+++ psplash/psplash-poky-img.h -@@ -0,0 +1,2010 @@ -+/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ -+ -+#define POKY_IMG_ROWSTRIDE (2336) -+#define POKY_IMG_WIDTH (584) -+#define POKY_IMG_HEIGHT (112) -+#define POKY_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */ -+#define POKY_IMG_RLE_PIXEL_DATA ((uint8*) \ -+ "\10\0\0\0\0\2\1\0\0\4\0\0\0\1\1\0\0\0\3\3\0\0\6\0\0\0\2\0\0\1\0\14\3\230" \ -+ "\4\0\5\0\10\1\1\0\0\0\7\14\3\0\0\13\3\1\0\2\0\0\5\1\0\1\1\13\3\10\0\13" \ -+ "\3\7\0\6\0\300\0\0\0\0\10\0\3\0\0\0\0\5\0\10\0\6\0\1\0\0\0\0\3\5\0\4" \ -+ "\0\0\0\15\0\0\6\0\1\0\0\230\1\0\0\0\10\10\3\0\0\3\2\0\0\6\0\0\0\15\0" \ -+ "\0\6\11\0\0\0\0\1\0\0\0\1\7\0\3\0\14\3\210\0\0\0\0\3\0\0\4\0\0\0\2\0" \ -+ "\1\1\1\0\205\0\1\0\0\1\2\1\0\0\202\3\2\0\0\202\2\1\0\0\3\1\0\0\0\2\1" \ -+ "\0\0\3\2\0\0\360\1\0\0\0\10\13\0\0\3\12\0\11\0\7\0\7\0\4\1\10\0\0\1\20" \ -+ "\11\0\2\5\0\2\3\0\0\7\0\5\0\210\0\0\0\0\10\0\3\4\0\1\10\0\0\3\0\4\0\7" \ -+ "\0\0\0\12\4\0\0\4\0\0\0\2\0\3\0\3\0\7\0\320\1\0\0\0\210\2\1\0\0\202\0" \ -+ "\0\2\0\1\0\0\0\0\203\1\0\0\0\202\3\0\0\0\204\1\0\2\0\202\1\0\4\0\202" \ -+ "\0\0\4\0\2\5\1\2\0\3\0\2\0\202\1\0\2\0\202\0\0\4\0\5\0\1\6\0\0\0\5\0" \ -+ "\0\0\2\0\2\2\4\0\1\3\2\0\202\0\1\0\0\3\0\0\0\0\1\0\0\0\3\0\0\0\230\0" \ -+ "\0\0\0\10\5\0\0\0\0\0\14\3\1\2\4\0\10\4\0\0\3\0\0\0\0\1\5\0\0\4\0\0\6" \ -+ "\0\0\0\340\1\0\0\0\1\0\4\0\0\202\0\3\0\0\2\0\2\0\0\0\1\0\0\202\0\2\1" \ -+ "\0\6\0\1\3\0\0\1\7\0\0\2\6\0\0\3\6\0\0\2\5\0\0\1\2\0\202\0\0\4\0\11\0" \ -+ "\0\5\0\1\0\4\0\3\1\4\0\2\2\2\0\0\0\0\0\0\1\0\0\1\0\0\0\3\0\0\0\5\0\0" \ -+ "\0\210\0\0\0\0\10\0\3\0\0\0\1\0\0\3\0\0\0\5\3\6\0\0\4\22\14\0\1\4\0\1" \ -+ "\0\0\0\1\0\22\14\230\0\1\0\0\10\3\0\0\0\1\5\10\0\6\0\4\0\7\0\0\0\0\5" \ -+ "\0\0\0\7\0\0\3\2\0\0\0\5\0\0\300\0\0\0\0\10\0\1\0\0\0\0\5\0\6\0\2\0\1" \ -+ "\0\0\0\0\6\6\0\6\5\3\0\10\0\0\0\0\2\13\3\230\0\0\4\0\10\0\2\0\0\0\4\0" \ -+ "\0\0\2\2\0\4\2\5\0\0\3\2\0\0\6\0\0\0\4\0\0\3\0\0\0\210\0\0\0\0\2\0\0" \ -+ "\4\0\0\0\2\0\202\0\0\0\0\203\0\1\0\0\1\0\1\3\0\370\0\0\4\0\10\0\5\0\0" \ -+ "\1\1\0\0\3\0\0\0\1\1\0\0\0\1\2\0\0\2\0\0\0\1\0\0\5\0\6\0\210\0\0\0\0" \ -+ "\10\0\1\5\0\0\3\0\0\0\0\14\3\0\0\7\0\1\11\0\0\0\5\0\0\0\4\0\0\0\3\0\0" \ -+ "\330\0\0\4\0\202\0\0\2\0\203\0\0\0\0\203\1\0\0\0\204\0\2\0\0\1\0\1\0" \ -+ "\0\203\0\2\0\0\202\0\1\7\0\16\0\4\10\0\1\5\6\0\2\4\1\0\1\2\0\0\1\0\0" \ -+ "\0\1\1\0\0\0\5\0\0\0\2\0\0\0\1\0\0\0\1\4\0\0\0\2\0\3\3\1\0\3\3\0\0\1" \ -+ "\1\0\0\230\0\0\0\0\10\7\0\0\0\0\0\13\3\0\1\2\0\3\1\0\0\1\0\2\0\0\2\10" \ -+ "\0\0\6\4\0\4\0\0\0\340\0\0\4\0\202\1\1\1\0\202\0\0\0\0\202\1\0\0\0\202" \ -+ "\2\0\1\0\20\7\0\0\0\6\0\0\0\4\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0" \ -+ "\1\3\0\0\1\5\0\0\1\4\0\0\1\2\0\0\0\2\0\3\5\4\0\1\1\1\0\1\0\0\0\5\1\0" \ -+ "\0\210\0\0\0\0\10\5\0\0\0\3\0\2\0\5\1\2\0\1\6\14\3\0\3\16\6\0\2\0\0\14" \ -+ "\0\0\3\16\0\0\6\230\0\0\4\0\202\0\3\0\0\6\14\0\0\3\34\5\0\32\1\1\0\0" \ -+ "\0\2\5\0\0\0\7\0\0\2\0\0\300\0\0\0\0\10\6\5\1\0\4\3\11\0\7\1\3\0\1\0" \ -+ "\0\0\0\6\4\0\0\0\0\0\1\0\4\0\0\11#&\230\0\0\2\0\10\0\3\0\0\0\6\7\0\0" \ -+ "\2\7\0\0\0\7\0\0\2\5\0\0\6\6\0\5\7\0\0\21\0\0\14\210\0\0\0\0\202\0\0" \ -+ "\2\0\202\0\0\0\0\202\0\1\0\0\3\0\2\1\0\3\4\6\0\0\0\2\0\203\0\1\3\0\203" \ -+ "\0\0\2\0\1\0\1\3\0\360\0\0\2\0\10\0\13\13\3\0\13\21\14\0\4\0\0\0\3\0" \ -+ "\0\5\6\1\0\2\4\0\0\1\2\0\0\3\0\7\0\210\0\0\0\0\10\23\0\0\17\10\0\0\0" \ -+ "\7\2\26\22\0\0\22\14\0\3\2\0\0\2\5\0\0\4\4\0\0\4\3\0\330\0\0\2\0\203" \ -+ "\0\1\4\0\202\0\1\2\0\1\0\0\2\0\202\0\1\0\0\202\0\0\11\0\7\0\0\7\0\0\0" \ -+ "\5\0\2\0\5\0\4\0\3\0\3\0\0\0\4\0\0\0\0\2\0\0\202\1\3\0\0\202\0\1\0\0" \ -+ "\202\0\0\0\0\5\4\2\3\0\0\2\0\0\0\1\0\0\1\3\0\0\0\2\0\0\202\0\0\0\0\202" \ -+ "\0\0\2\0\230\0\0\0\0\10\10\0\0\0\5\4\14\3\0\1\6\0\3\0\0\0\4\0\10\0\0" \ -+ "\1\15\6\0\2\6\0\3\0\7\0\340\0\0\2\0\202\3\0\7\0\3\3\0\5\0\3\0\4\0\4\0" \ -+ "\4\0\202\4\0\2\0\1\4\0\0\0\203\1\0\0\0\1\2\1\0\0\202\5\1\0\0\12\4\0\0" \ -+ "\0\3\0\0\0\0\2\0\0\0\3\2\0\0\4\5\0\2\3\7\0\1\2\6\0\0\0\2\0\0\0\0\0\2" \ -+ "\2\0\0\210\0\0\0\0\10\0\2\0\0\0\2\2\0\0\0\0\0\1\0\0\0\15\0\0\6n,\22\223" \ -+ "\314S&\377\336R.\377\230\341R\26\377\10\336X\31\377\322V\32\377\323P" \ -+ "\34\377\307R&\377f+\15\207\20\3\0\11\0\0\4\0\0\6\1\0\300\0\0\0\0\10\1" \ -+ "\0\0\0\0\0\5\0\4\0\0\0\1\0\0\0\0\6\2\0\0\1\0\0\0\3\17\11\32""7a\201\230" \ -+ "\35V\235\326\10\40Q\213\274\37V\226\315\37V\231\320#V\230\320!X\233\323" \ -+ "\33S\216\301\21""4\\x\0\7\30\25\210\0\0\0\0\2\0\0\2\0\1\1\1\0\202\0\0" \ -+ "\0\0\6\0\2\0\0\0\1\0\0\1\2\4\0\6\7\13\3\32S\232\323\33T\233\323\202\34" \ -+ "U\234\326\203\33T\233\323\1\34U\234\326\360\35V\235\326\10\"Y\222\307" \ -+ ")M\201\260\11\31""08\0\1\0\0\3\0\2\0\1\0\0\0\0\1\0\0\0\0\11\0\210\0\0" \ -+ "\0\0\10\0\0\14\3\0\16\34\32\37E\204\263\36R\235\326\34V\225\312\40T\237" \ -+ "\331\40P\230\320!P\226\315\320\35V\235\326\210\33T\233\323\20$M\215\277" \ -+ "#L\214\277\40I\211\274\36E\206\266\33C\201\260\30@~\252\26>|\247\25;" \ -+ "z\244\33""4Sl\30/Nd\23(EX\16\"=L\12\32""3>\4\23*/\0\11\37\40\0\4\30\25" \ -+ "\203\0\2\0\0\3\0\1\0\0\0\0\0\0\3\0\0\0\202\4\0\0\0\1\3\0\4\0\203\3\0" \ -+ "\0\0\4\4\0\1\0\3\0\7\0\1\0\14\3\0\0\20\11\230\0\0\0\0\10\11/Sl\36R\216" \ -+ "\301\33W\223\307\35T\212\274\40S\225\312\31T\232\323\30T\222\307\40R" \ -+ "\227\315\340\35V\235\326\30\37T\230\320\40U\231\320\40U\227\315!T\225" \ -+ "\312\36Q\220\304\31M\207\271\25G\202\260\22E~\252\13+Qj\4!CU\0\21""0" \ -+ "8\0\4\33\32\0\1\16\6\0\0\5\0\3\0\0\0\6\0\0\0\2\2\0\0\4\4\0\0\2\1\0\0" \ -+ "\1\0\0\0\1\0\2\0\2\2\4\0\2\3\5\0\0\2\1\0\210\0\0\0\0\10\0\2\0\0\0\10" \ -+ "\11\0\1\5\4\0\0\2\0\0\7\0\0\0\1775\6\255\356`\26\377\371Y\17\377\230" \ -+ "\361_\24\377\10\363Z\24\377\356[\25\377\371Z\31\377\360_*\377{*\14\247" \ -+ "\22\0\0\14\6\0\7\0\3\1\4\0\300\0\0\0\0\10\3\1\4\0\0\0\4\0\4\0\0\0\2\1" \ -+ "\0\0\0\3\0\0\0\1\0\0\0\2\22\14\"G|\377\230\32]\254\377\10!\\\252\377" \ -+ "\37]\262\377\34Z\261\377\36Z\260\377\36`\267\377\40^\261\377\26;p\225" \ -+ "\0\1\23\17\210\0\0\0\0\2\0\0\2\0\1\1\1\0\202\0\0\0\0\6\0\2\1\0\0\0\2" \ -+ "\0\1\2\6\0\11\12\17\11\32]\254\377\33^\255\377\202\35`\257\377\203\34" \ -+ "_\256\377\1\35`\257\377\360\32]\254\377\10\33]\275\377(U\246\377\3\26" \ -+ ">L\0\0\7\0\5\0\6\0\6\2\3\0\1\2\0\0\0\0\10\0\211\0\0\0\0\7\0\15\25\22" \ -+ "&S\226\377\"`\267\377\33^\257\377\37\\\271\377#Z\267\377&]\272\377\320" \ -+ "\32]\254\377\210\34_\256\377\202\32_\255\377\2\33`\256\377\34_\256\377" \ -+ "\202\34_\255\377\202\35_\255\377\22\36_\263\377\34]\261\377\36[\254\377" \ -+ "\40Z\253\377\"Z\247\377\"W\243\377\40T\237\377\37Q\232\323\35D}\252\24" \ -+ "9n\223\10'Sl\0\27""9F\0\14#&\0\5\20\11\0\1\5\0\1\0\0\0\2\1\0\0\3\0\0" \ -+ "\0\202\4\0\0\0\4\4\0\2\0\1\0\4\0\0\0\4\0\0\3\6\0\230\0\0\0\0\10\1*Xr" \ -+ "!Z\247\377\34c\265\377!`\257\377#\\\266\377\34]\267\377\32^\257\377\"" \ -+ "`\267\377\340\32]\254\377\30\27Z\261\377\31\\\263\377\32^\263\377\35" \ -+ "_\263\377\35`\261\377\34_\256\377\33]\253\377\32\\\250\377$b\267\377" \ -+ "$^\260\377$U\241\377\"J\210\377\32""9g\212\17$CU\0\16\35\35\0\3\13\3" \ -+ "\1\0\0\0\3\0\0\0\4\0\0\0\6\1\0\0\3\0\0\0\0\0\0\0\0\1\2\0\0\1\4\0\210" \ -+ "\0\0\0\0\10\6\0\0\0\2\0\6\0\7\0\4\0\6\0\4\0\13\0\0\3\201/\11\260\361" \ -+ "^\31\377\365[\21\377\230\364Z\32\377\10\366[\31\377\365a\31\377\375[" \ -+ "\23\377\356\\\40\377r)\6\230\10\0\0\0\0\3\14\3\0\1\0\0\301\0\0\0\0\7" \ -+ "\0\1\2\0\6\2\0\0\3\0\0\0\0\0\2\0\4\3\0\0\0\3\20\11\33C~\377\230\40[\265" \ -+ "\377\10\35_\255\377\36`\266\377\40^\263\377\40]\256\377\33_\264\377\36" \ -+ "_\261\377\26\3\0\0\0\2\1\0\0\0\1\11" \ -+ "\0\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264" \ -+ "\377\34^\252\377\"\\\256\377\34]\255\377\360\37^\256\377\30!Z\251\377" \ -+ "#^\254\377!\\\252\377\37]\252\377\"_\257\377\37^\256\377\33Y\256\377" \ -+ "\35Z\263\377*\\\241\377\12*Qj\0\4\13\3\4\0\0\0\3\0\0\0\0\0\4\0\0\1\5" \ -+ "\0\0\0\0\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0\0z-\17\244\364[\37\377" \ -+ "\363\\\23\377\230\363[\30\377\10\362]\33\377\361]\27\377\364[\25\377" \ -+ "\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301\0\0\0\0\7\1\1\3\0\0" \ -+ "\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10" \ -+ "\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377" \ -+ "\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0\2\0\2\0\5\0\1\0\2\0\1" \ -+ "\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36]\254\377\37^\256\377" \ -+ "\202\36]\255\377\3\37^\256\377\37]\260\377\36\\\257\377\360\37^\256\377" \ -+ "\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0\1\0\0\5\0\1\0\0\0\5\0\0" \ -+ "\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254" \ -+ "\377\35^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\20\35\\\254" \ -+ "\377\37]\260\377\40^\261\377\40_\257\377!`\260\377#`\260\377\"_\257\377" \ -+ "\"\\\255\377$b\265\377\24[\255\377\23[\260\377)b\263\377\35@v\236\0\16" \ -+ "#&\0\1\3\0\2\1\0\0\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\" \ -+ "\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\360\37^\256" \ -+ "\377\13\34Z\255\377\"_\257\377\"`\253\377\40[\251\377![\255\377\37[\261" \ -+ "\377\33\\\256\377\35_\255\377\35c\271\377\36L\212\377\10\30""2;\202\1" \ -+ "\0\0\0\13\0\1\4\0\0\3\6\0\0\0\0\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1" \ -+ "\0\0z-\17\244\364[\37\377\363\\\23\377\230\363[\30\377\10\362]\33\377" \ -+ "\361]\27\377\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0" \ -+ "\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203" \ -+ "\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377" \ -+ "\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0" \ -+ "\0\2\0\2\0\5\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377" \ -+ "\36]\254\377\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260\377\36" \ -+ "\\\257\377\360\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0" \ -+ "\0\1\0\0\5\0\1\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R" \ -+ "\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\360\37^\256\377\20\36X\251\377\36\\\257\377\33]\261\377\31]\262\377" \ -+ "\30\\\257\377\33]\261\377\34]\261\377\35[\260\377\27[\244\377\37a\267" \ -+ "\377\33\\\266\377\36\\\257\377,^\243\377\25""2^{\0\0\13\3\14\1\0\3\220" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\360\37^\256\377\30\33^\271\377\33^" \ -+ "\255\377\35]\245\377\37]\252\377\37[\263\377\37\\\267\377\35^\256\377" \ -+ "\33`\245\377\12]\273\3770e\263\377\32-Wr\2\3\10\0\1\2\0\0\0\2\0\0\0\0" \ -+ "\5\0\0\0\0\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0\0z-\17\244\364[\37" \ -+ "\377\363\\\23\377\230\363[\30\377\10\362]\33\377\361]\27\377\364[\25" \ -+ "\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301\0\0\0\0\7\1\1\3" \ -+ "\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377" \ -+ "\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263" \ -+ "\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0\2\0\2\0\5\0\1\0\2" \ -+ "\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36]\254\377\37^\256" \ -+ "\377\202\36]\255\377\3\37^\256\377\37]\260\377\36\\\257\377\360\37^\256" \ -+ "\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0\1\0\0\5\0\1\0\0\0\5" \ -+ "\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"" \ -+ "[\254\377\35^\256\377\37^\253\377\36\\\261\377\370\37^\256\377\12\35" \ -+ "\\\254\377\40Z\256\377#`\261\377\27[\254\377\35e\271\377\37W\242\377" \ -+ "\2\34=L\0\3\0\0\0\1\5\0\0\0\2\0\202\0\1\0\0\4\1\0\0\0\2\1\0\0\0\0\2\0" \ -+ "\0\0\5\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35" \ -+ "]\264\377\34^\252\377\"\\\256\377\34]\255\377\370\37^\256\377\20$\\\263" \ -+ "\377\26^\252\377\32]\244\342\0\26""1;\1\2\0\0\10\0\0\0\5\0\15\6\0\0\13" \ -+ "\3\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0\0z-\17\244\364[\37\377\363\\" \ -+ "\23\377\230\363[\30\377\10\362]\33\377\361]\27\377\364[\25\377\360]\32" \ -+ "\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4" \ -+ "\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255" \ -+ "\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9" \ -+ "r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0\2\0\2\0\5\0\1\0\2\0\1\0\0\0" \ -+ "\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36]\254\377\37^\256\377\202\36" \ -+ "]\255\377\3\37^\256\377\37]\260\377\36\\\257\377\360\37^\256\377\10\34" \ -+ "]\257\377!\\\252\377\7\30""2;\0\2\0\0\0\1\0\0\5\0\1\0\0\0\5\0\0\2\0\0" \ -+ "\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35" \ -+ "^\256\377\37^\253\377\36\\\261\377\370\37^\256\377\11\36_\257\377\36" \ -+ "[\256\377\40]\256\377\31\\\253\377\27]\262\377%^\255\377\32;h\212\0\6" \ -+ "\11\0\0\0\2\0\206\0\0\0\0\1\0\0\4\0\210\0\0\0\0\10\16'Og\40[\251\377" \ -+ "\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255" \ -+ "\377\370\37^\256\377\20\40X\255\377\31`\260\377\36a\247\377\20""3]{\0" \ -+ "\2\3\0\6\0\0\0\3\0\4\0\0\0\7\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0" \ -+ "\0z-\17\244\364[\37\377\363\\\23\377\230\363[\30\377\10\362]\33\377\361" \ -+ "]\27\377\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301" \ -+ "\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263" \ -+ "\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34" \ -+ "_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0" \ -+ "\2\0\2\0\5\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36" \ -+ "]\254\377\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260\377\36\\" \ -+ "\257\377\360\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0" \ -+ "\1\0\0\5\0\1\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370" \ -+ "\37^\256\377\20\35`\257\377\37[\261\377\37Y\253\377\37^\255\377\31[\257" \ -+ "\377$`\266\377*V\223\307\0\36;I\1\0\2\0\1\0\0\0\2\1\0\0\0\0\0\0\0\0\2" \ -+ "\0\0\1\0\0\1\0\0\0\4\0\3\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377" \ -+ "\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\370\37" \ -+ "^\256\377\20\37W\252\377\34`\263\377\36a\250\377)O\216\301\0\12\30\25" \ -+ "\1\0\4\0\1\0\0\0\1\1\1\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0\0z-\17" \ -+ "\244\364[\37\377\363\\\23\377\230\363[\30\377\10\362]\33\377\361]\27" \ -+ "\377\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301\0\0" \ -+ "\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230" \ -+ "\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0\2\0\2" \ -+ "\0\5\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36]\254" \ -+ "\377\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260\377\36\\\257\377" \ -+ "\360\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0\1\0\0\5" \ -+ "\0\1\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33" \ -+ "^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370\37^\256" \ -+ "\377\20\33^\254\377\40^\263\377\35W\253\377\"`\255\377\36_\261\377\36" \ -+ "[\264\377&[\251\377\24B}\252\2\1\11\0\1\0\0\0\5\2\0\0\0\0\2\0\0\1\6\0" \ -+ "\0\2\0\0\1\0\0\0\5\0\1\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377" \ -+ "\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\370\37" \ -+ "^\256\377\20![\255\377\34_\260\377\31\\\252\377-[\246\377\12\36AR\0\1" \ -+ "\12\0\2\2\0\0\1\2\0\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0\0z-\17\244" \ -+ "\364[\37\377\363\\\23\377\230\363[\30\377\10\362]\33\377\361]\27\377" \ -+ "\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301\0\0\0\0" \ -+ "\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37" \ -+ "^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377" \ -+ "\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0\2\0\2\0\5" \ -+ "\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36]\254\377" \ -+ "\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260\377\36\\\257\377\360" \ -+ "\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0\1\0\0\5\0\1" \ -+ "\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254" \ -+ "\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370\37^\256\377" \ -+ "\20\33_\252\377\37]\262\377\40Y\260\377!_\254\377!`\260\377\33[\265\377" \ -+ "\36Z\262\377!Z\247\345\7\17$&\0\1\2\0\4\1\0\0\1\0\2\0\0\2\11\0\0\2\0" \ -+ "\0\0\1\0\0\6\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\" \ -+ "\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\370\37^\256" \ -+ "\377\20\37\\\257\377\32]\253\377\32\\\262\377$Y\251\377\34""8w\241\0" \ -+ "\4\16\6\1\3\0\0\0\1\0\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0\0z-\17" \ -+ "\244\364[\37\377\363\\\23\377\230\363[\30\377\10\362]\33\377\361]\27" \ -+ "\377\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301\0\0" \ -+ "\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230" \ -+ "\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0\2\0\2" \ -+ "\0\5\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36]\254" \ -+ "\377\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260\377\36\\\257\377" \ -+ "\360\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0\1\0\0\5" \ -+ "\0\1\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33" \ -+ "^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370\37^\256" \ -+ "\377\20\40`\250\377\35Y\257\377!\\\266\377\35\\\253\377\33]\251\377\37" \ -+ "_\266\377\36[\266\377\40^\261\377\21*Rj\0\6\17\11\1\0\0\0\4\0\2\0\3\2" \ -+ "\10\0\0\2\0\0\1\2\0\0\4\0\4\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256" \ -+ "\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\370" \ -+ "\37^\256\377\20\33Y\254\377\34^\250\377\36b\267\377\33Y\256\377(O\236" \ -+ "\377\0\13\31\27\0\2\0\0\0\0\0\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0" \ -+ "\0z-\17\244\364[\37\377\363\\\23\377\230\363[\30\377\10\362]\33\377\361" \ -+ "]\27\377\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301" \ -+ "\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263" \ -+ "\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34" \ -+ "_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0" \ -+ "\2\0\2\0\5\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36" \ -+ "]\254\377\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260\377\36\\" \ -+ "\257\377\360\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0" \ -+ "\1\0\0\5\0\1\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370" \ -+ "\37^\256\377\20#_\245\377\35Y\261\377\40]\272\377\33\\\254\377\33]\247" \ -+ "\377!`\260\377\36\\\261\377\36[\254\377\40I\201\377\0\16\37\40\0\1\0" \ -+ "\0\7\0\0\0\6\1\7\0\0\3\0\0\1\4\0\0\1\0\5\0\210\0\0\0\0\10\16'Og\40[\251" \ -+ "\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34" \ -+ "]\255\377\370\37^\256\377\20\33Y\256\377!a\253\377\34a\257\377\31\\\267" \ -+ "\377+Z\254\377\3\31""08\0\2\0\0\0\0\11\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0" \ -+ "\2\0\2\1\0\0z-\17\244\364[\37\377\363\\\23\377\230\363[\30\377\10\362" \ -+ "]\33\377\361]\27\377\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0" \ -+ "\3\0\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1" \ -+ "\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13" \ -+ "\0\2\0\0\0\0\2\0\2\0\5\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33" \ -+ "Z\251\350\36]\254\377\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260" \ -+ "\377\36\\\257\377\360\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;" \ -+ "\0\2\0\0\0\1\0\0\5\0\1\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14" \ -+ "\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261" \ -+ "\377\370\37^\256\377\20\"]\241\377\40\\\264\377\34[\272\377\34_\260\377" \ -+ "\36b\251\377\34[\250\377\32W\250\377#]\256\377*]\237\377\0\24+2\0\1\0" \ -+ "\0\10\0\0\0\7\1\5\0\0\2\0\0\0\6\0\0\0\0\11\0\210\0\0\0\0\10\16'Og\40" \ -+ "[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377" \ -+ "\34]\255\377\370\37^\256\377\20\34]\257\377\"a\256\377\26\\\242\377\30" \ -+ "^\300\377(]\255\377\17&FX\0\5\0\0\1\0\21\14\15\0\2\6\3\0\5\0\0\6\15\6" \ -+ "\0\2\2\0\25\0\0\22\2012\13\260\351a%\377\377U\14\377\230\361]\27\377" \ -+ "\10\362\\\35\377\370Z\23\377\371\\\25\377\337d)\377s1\16\233\16\0\0\6" \ -+ "\0\1\4\0\0\1\11\0\300\0\0\0\0\10\3\0\0\0\0\1\4\0\0\1\5\0\1\0\0\0\10\1" \ -+ "\0\0\1\1\1\0\0\5\26\22#Ll\220\230\36\\\257\377\10\"]\271\377\"Z\261\377" \ -+ "\"\\\260\377\31]\262\377\26a\262\377%d\247\377\33>f\207\0\1\23\17\212" \ -+ "\0\0\0\0\202\1\1\1\0\202\0\0\0\0\3\3\3\3\0\11\11\11\0\32^\257\360\307" \ -+ "\32^\257\377\3\37Y\255\377\40Z\256\377![\257\377\203\"[\262\377\2!Z\261" \ -+ "\377!Z\263\377\250\36\\\257\377\10\36a\260\377&Y\232\377\1\36H[\0\0\23" \ -+ "\17\6\1\5\0\4\0\0\0\4\4\2\0\0\2\2\0\210\0\0\0\0\10\3\0\0\0\0\12!#(R\214" \ -+ "\377\40]\255\377\31]\260\377\32]\254\377\32[\253\377\35^\260\377\270" \ -+ "\36\\\257\377\210#]\256\377\210\"\\\255\377\1\37]\252\377\204\37\\\254" \ -+ "\377\203\37\\\255\377\202#Y\257\377\3\"Z\257\377\"[\262\377\40\\\262" \ -+ "\377\202\36\\\261\377\12\34]\261\377%X\247\377!Z\253\377\34]\261\377" \ -+ "\34`\265\377\32`\266\377\33]\261\377\37\\\255\377#Z\252\377\34]\261\377" \ -+ "\202\33\\\260\377\5\34^\264\377\33_\264\377\32^\263\377\33\\\256\377" \ -+ "\37^\255\377\230\37^\256\377\10\32[\255\377\24""3l\220\0\3\0\0\0\1\0" \ -+ "\0\2\4\1\0\1\0\5\0\4\1\0\0\2\0\6\0\210\0\0\0\0\7\0+\\x(Y\233\377)`\263" \ -+ "\377\33X\263\377\34^\265\377\36_\263\377!_\262\377\321!Z\261\377\20!" \ -+ "Z\247\377\"]\251\377$_\253\377!_\252\377\37^\253\377\34^\254\377\34_" \ -+ "\260\377\35_\263\377\26`\271\377\23_\263\377\20]\253\377\31^\251\377" \ -+ "\"`\253\377\40[\251\377\33Z\252\377\36b\265\377\230\37^\256\377\20\30" \ -+ "[\262\377\"b\254\377\37^\253\377\35_\255\377\37Z\264\377\24@}\252\0\4" \ -+ "\7\0\11\0\0\0\2\2\0\0\0\2\0\0\0\4\5\0\0\2\5\0\16\0\0\6Z'\22u\245K(\342" \ -+ "\275J\33\377\230\275J\24\377\10\277H&\377\303D\33\377\277B\24\377\250" \ -+ "E\36\350[!\13x\23\0\0\17\7\0\0\0\4\0\0\0\300\0\0\0\0\10\4\0\0\0\0\0\2" \ -+ "\0\0\1\5\0\0\0\2\0\4\0\0\0\3\2\0\0\0\5\20\11\21""1J^\230\33I\207\271" \ -+ "\10\31G\205\266\33E\177\255\37I\203\263\31K\210\271\23J\212\274\30G}" \ -+ "\252\22*La\0\1\22\14\212\0\0\0\0\202\1\1\1\0\202\0\0\0\0\2\2\2\2\0\6" \ -+ "\6\6\0\310\31""9l\220\10\16r\230\23Au\236\26Dx\241\30Fz\244" \ -+ "\32G~\252\33H\177\255\34I\200\255\250\33I\207\271\4\36I|\247#Cl\220\7" \ -+ "\27""1;\0\0\11\0\202\4\0\0\0\2\2\2\0\0\0\2\5\0\210\0\0\0\0\10\0\1\0\0" \ -+ "\0\12\34\32\36@p\225\33I\207\377\33K\211\274\36K\202\260\36I~\252\35" \ -+ "G\201\260\270\33I\207\271\210\27M\225\312\210\30N\226\315\1\27P\227\315" \ -+ "\202\30Q\230\320\5\31Q\233\323\32R\234\326\33S\235\326\33S\236\331\34" \ -+ "T\237\377\202\36]\244\377\26\34\\\244\377\32\\\250\377\33]\253\377\33" \ -+ "^\257\377\33_\262\377\34`\263\377\37a\267\377\37c\266\377\35a\262\377" \ -+ "\31^\254\377\31\\\252\377\36]\254\377$]\254\377&[\253\377\37Y\252\377" \ -+ "%_\260\377\"_\257\377\34Y\252\377\35\\\254\377\36_\261\377\34]\257\377" \ -+ "\33\\\256\377\230\37^\256\377\10\35^\260\377\33=z\244\0\5\7\0\0\2\0\0" \ -+ "\1\3\0\0\1\0\5\0\3\0\0\0\1\0\5\0\210\0\0\0\0\10\1#>L\36Ai\215\31Bv\236" \ -+ "\21\77z\244\23D|\247\23Bv\236\26Dx\241\30Ay\244\320\26Dx\241\202\32C" \ -+ "\205\266\16\31B\204\263\26B\203\263\26C\206\266\31H\214\277\40P\230\320" \ -+ "%U\237\377*]\236\377(`\253\377#a\270\377\33]\264\377\32\\\260\377\40" \ -+ "b\260\377\"a\260\377\33Y\254\377\230\37^\256\377\20\33]\264\377\40`\250" \ -+ "\377\36]\252\377\34]\255\377\40^\265\377\34H\207\271\0\6\15\6\10\0\0" \ -+ "\0\4\0\0\0\3\3\0\0\2\6\7\0\0\3\7\0\0\0\4\0\7\0\0\0\17\0\0\11\22\0\0\14" \ -+ "\230\0\0\4\0\10\7\0\0\0\13\0\0\3\20\0\0\11\21\7\0\14\1\3\0\0\0\3\7\0" \ -+ "\0\5\6\0\0\4\0\0\300\0\0\0\0\4\10\1\0\0\0\1\3\0\0\3\11\0\0\4\7\0\202" \ -+ "\3\0\0\0\2\0\1\5\0\0\12\27\25\230\0\3\2\0\10\0\7\10\0\0\3\2\0\0\1\0\0" \ -+ "\0\3\5\0\0\3\14\3\0\5\16\6\6\2\1\0\16\0\0\6\210\0\0\0\0\204\1\1\1\0\203" \ -+ "\0\0\0\0\1\2\2\2\0\310\0\0\4\0\202\0\3\0\0\1\0\4\1\0\203\0\5\4\0\2\0" \ -+ "\4\3\0\0\2\4\0\250\0\3\2\0\10\0\2\23\17\0\5\22\14\0\0\7\0\3\0\0\0\5\0" \ -+ "\0\0\4\0\0\0\1\1\1\0\0\1\4\0\210\0\0\0\0\10\11\0\0\0\1\0\0\0\2\7\32\27" \ -+ "\0\0\27\25\0\0\22\14\0\0\11\0\0\0\12\0\0\0\14\3\270\0\3\2\0\210\0\4\7" \ -+ "\0\210\0\3\6\0\6\0\3\3\0\0\2\5\0\0\3\6\0\0\4\7\0\0\5\10\0\1\6\12\0\202" \ -+ "\2\7\13\3\30\0\14\32\27\0\16\34\32\0\21$&\1\27.5\7\37;I\17&FX\26.Rj\32" \ -+ "2Xr\20I~\252\33R\213\377#Z\233\377&\\\246\377&_\256\377%b\262\377\36" \ -+ "`\256\377\24Y\244\377!Z\251\377\"]\253\377#^\254\377\40[\251\377\37Z" \ -+ "\250\377\40]\255\377\37`\262\377\31]\262\377\230\37^\256\377\10\36a\260" \ -+ "\377%K\214\277\0\15\32\27\0\2\0\0\0\1\0\0\2\0\5\0\1\1\0\0\1\0\4\0\210" \ -+ "\0\0\0\0\10\0\2\0\0\2\5\0\0\0\3\2\0\0\3\4\0\0\7\5\0\0\4\0\0\0\3\3\0\0" \ -+ "\1\6\0\320\0\4\3\0\202\0\1\5\0\16\0\2\4\0\0\3\4\0\0\3\5\0\0\5\11\0\0" \ -+ "\12\22\14\1\16\27\25\17%La\32""8l\377'O\227\377(^\264\377\36`\267\377" \ -+ "\27[\260\377\32[\253\377!_\254\377\230\37^\256\377\14\34^\265\377\36" \ -+ "^\246\377\36]\254\377\31\\\253\377!_\266\377&S\226\377\0\16\32\27\6\0" \ -+ "\0\0\0\4\0\0\0\3\0\0\0\1\0\0\0\0\5\0\202\0\1\7\0\2\0\2\5\0\0\3\4\0\230" \ -+ "\4\0\0\0\10\0\0\11\0\0\1\4\0\0\3\0\0\0\3\2\0\0\2\5\0\0\4\10\0\0\1\0\0" \ -+ "\0\2\0\0\300\0\0\0\0\10\6\0\0\0\0\0\0\0\0\1\7\0\0\2\6\0\1\0\0\0\5\0\0" \ -+ "\0\3\2\0\0\0\1\4\0\230\1\0\2\0\10\0\2\3\0\2\1\0\0\6\0\0\0\3\0\0\0\0\0" \ -+ "\7\0\0\0\11\0\3\0\5\0\13\0\1\3\210\0\0\0\0\1\1\1\1\0\207\0\0\0\0\310" \ -+ "\3\0\0\0\203\1\0\4\0\203\1\0\5\0\202\1\0\7\0\250\1\0\2\0\202\1\0\0\0" \ -+ "\2\3\2\0\0\2\1\0\0\202\1\0\0\0\202\0\0\2\0\210\0\0\0\0\10\0\1\0\0\0\0" \ -+ "\2\0\0\0\11\0\0\0\7\0\2\1\0\0\3\0\0\0\7\2\0\0\4\0\0\0\270\1\0\2\0\224" \ -+ "\0\0\0\0\204\0\0\2\0\2\7\3\0\0\6\2\0\0\202\3\0\0\0\202\1\0\0\0\16\1\0" \ -+ "\2\0\0\0\4\0\0\4\14\3\0\12\30\25\1\25""08\16&Rj\32Az\244!X\233\377\32" \ -+ "b\256\377\22c\262\377\"a\260\377\27X\252\377\32]\256\377\"a\261\377\202" \ -+ "\40[\251\377\2!`\260\377\32^\263\377\230\37^\256\377\10\35`\256\377+" \ -+ "W\240\377\3\30""5@\0\2\0\0\0\0\0\0\3\1\6\0\1\0\0\0\0\0\2\0\210\0\0\0" \ -+ "\0\2\7\0\12\0\5\0\11\0\203\1\0\5\0\3\3\0\4\0\7\0\10\0\7\0\11\0\320\1" \ -+ "\0\5\0\20\4\0\0\0\5\1\0\0\4\3\0\0\4\4\0\0\2\3\0\0\1\2\0\0\1\1\1\0\0\1" \ -+ "\3\0\0\0\20\11\0\6\33\32\7\34;I\30=q\230$X\241\377!_\264\377\31[\257" \ -+ "\377\34]\255\377\230\37^\256\377\12\35]\264\377\35]\245\377\37^\256\377" \ -+ "\30[\254\377\36_\263\377*Y\237\377\1\26)/\3\0\0\0\0\2\3\0\0\1\2\0\202" \ -+ "\0\1\3\0\4\0\0\2\0\0\1\5\0\0\2\5\0\0\1\4\0\230\1\3\0\0\10\2\0\1\0\0\2" \ -+ "\0\0\0\3\0\0\0\3\2\0\0\0\5\0\3\2\10\0\1\0\0\0\3\3\0\0\300\0\0\0\0\2\4" \ -+ "\0\0\0\1\1\1\0\202\0\1\5\0\4\3\3\3\0\3\0\0\0\6\1\0\0\3\0\0\0\230\1\0" \ -+ "\2\0\6\0\2\0\0\1\0\0\0\6\2\0\0\7\3\0\0\6\5\0\0\1\3\0\0\202\0\1\0\0\215" \ -+ "\0\0\0\0\1\1\1\1\0\202\0\0\0\0\310\0\1\0\0\202\1\0\0\0\202\2\1\0\0\204" \ -+ "\3\2\0\0\250\1\0\2\0\1\4\5\0\0\202\0\1\0\0\202\0\1\2\0\3\0\0\2\0\1\1" \ -+ "\3\0\5\3\4\0\210\0\0\0\0\10\0\2\0\0\1\2\4\0\0\0\4\0\2\0\1\0\7\10\2\0" \ -+ "\0\1\0\0\0\2\0\0\0\1\0\0\270\1\0\2\0\220\0\0\0\0\203\2\0\1\0\1\1\0\0" \ -+ "\0\204\1\0\2\0\1\1\0\0\0\204\0\0\0\0\23\1\1\0\0\2\2\0\0\1\3\0\0\7\0\0" \ -+ "\0\10\0\0\0\7\0\0\0\0\1\0\0\0\4\17\11\0\30:F\20=v\236&\\\244\377\40b" \ -+ "\260\377\31`\262\377\26`\267\377\30`\265\377\36]\255\377\40[\251\377" \ -+ "\37\\\255\377\34^\264\377\230\37^\256\377\10\32_\252\377)\\\253\377\13" \ -+ "&Qj\0\4\0\0\1\0\0\0\2\2\4\0\0\0\0\0\1\1\1\0\210\0\0\0\0\6\3\0\7\0\0\0" \ -+ "\2\0\0\1\0\0\1\2\0\0\1\0\0\0\3\0\0\0\202\6\0\0\0\322\2\1\0\0\205\1\0" \ -+ "\0\0\11\0\0\0\0\7\2\0\0\1\0\0\0\0\2\0\0\0\14\26\22\15.Qj%U\223\307'd" \ -+ "\267\377\25\\\270\377\230\37^\256\377\3\34]\261\377\37]\246\377!]\263" \ -+ "\377\202\32\\\260\377\6)Z\246\377\6\36""8C\0\0\0\0\5\0\10\0\3\0\5\0\3" \ -+ "\0\2\0\202\1\0\0\0\3\3\2\0\0\6\5\1\0\3\0\0\0\230\1\0\4\0\10\3\0\0\0\2" \ -+ "\1\0\0\1\1\0\0\1\0\2\0\3\0\5\0\6\0\7\0\7\0\7\0\7\0\5\0\300\0\0\0\0\10" \ -+ "\3\2\0\0\5\5\5\0\0\1\3\0\0\0\2\0\4\4\4\0\1\0\0\0\3\0\0\0\5\1\0\0\230" \ -+ "\3\0\0\0\10\3\0\13\3\5\0\11\0\6\0\4\0\6\0\2\0\3\0\2\0\1\0\4\0\1\0\5\0" \ -+ "\0\0\4\0\215\0\0\0\0\202\1\1\1\0\1\0\0\0\0\310\0\2\0\0\260\3\0\0\0\10" \ -+ "\0\1\0\0\0\2\2\0\0\3\6\0\0\5\10\0\0\4\7\0\2\3\7\0\2\0\3\0\3\0\0\0\210" \ -+ "\0\0\0\0\5\0\3\0\0\7\3\0\0\6\0\0\0\4\0\0\0\1\1\0\0\202\0\2\0\0\1\2\2" \ -+ "\2\0\270\3\0\0\0\210\0\1\0\0\210\0\2\0\0\207\0\1\0\0\4\0\0\2\0\1\0\5" \ -+ "\0\1\0\4\0\1\0\2\0\205\1\0\0\0\20\3\1\6\0\3\0\0\0\6\0\0\0\10\0\0\0\6" \ -+ "\0\0\0\0\0\4\0\1\10\32\27\13\25""08\32J\212\274#a\252\377\31c\270\377" \ -+ "\20Z\261\377\33^\257\377#^\254\377\34Y\251\377\34]\261\377\230\37^\256" \ -+ "\377\10\31_\247\377%]\264\377\27""7r\230\0\4\2\0\1\0\0\0\2\2\2\0\0\0" \ -+ "\2\0\1\1\0\0\210\0\0\0\0\2\1\0\7\0\1\0\2\0\203\3\0\0\0\3\4\0\2\0\5\0" \ -+ "\1\0\4\0\0\0\320\3\0\0\0\202\3\0\5\0\204\3\0\2\0\12\3\0\4\0\4\0\6\0\7" \ -+ "\5\0\0\1\1\0\0\2\4\0\0\0\2\0\0\0\3\4\0\22-J^&X\237\377\34`\305\377\230" \ -+ "\37^\256\377\16\34Z\257\377!`\247\377\40\\\264\377\32^\263\377\30\\\255" \ -+ "\377&Y\250\377\14&G[\0\1\0\0\0\0\5\0\0\1\4\0\0\1\2\0\0\0\0\0\1\0\0\0" \ -+ "\6\0\0\0\202\10\0\0\0\230\0\1\0\0\10\1\1\0\0\4\1\0\0\4\0\0\0\1\1\0\0" \ -+ "\0\3\0\0\0\4\0\0\0\5\0\0\0\4\0\0\300\0\0\0\0\10\0\0\2\0\0\0\0\0\3\3\3" \ -+ "\0\1\0\0\0\3\3\3\0\0\0\0\0\1\1\1\0\3\3\3\0\230\0\3\0\0\1\0\1\4\0\202" \ -+ "\0\1\5\0\2\0\2\5\0\0\2\4\0\202\0\3\5\0\1\0\3\4\0\211\0\0\0\0\202\1\1" \ -+ "\1\0\202\0\0\0\0\202\1\1\1\0\1\0\0\0\0\310\0\0\4\0\205\0\3\0\0\1\0\3" \ -+ "\2\0\202\0\4\3\0\250\0\3\0\0\2\0\2\3\0\1\2\4\0\202\0\0\2\0\202\0\0\0" \ -+ "\0\202\1\0\0\0\210\0\0\0\0\10\0\3\5\0\0\1\4\0\0\0\4\0\0\2\5\0\0\4\6\0" \ -+ "\0\4\7\0\0\3\12\0\0\2\13\3\270\0\3\0\0\220\1\0\4\0\202\3\0\2\0\202\3" \ -+ "\0\4\0\1\4\0\5\0\203\4\0\6\0\202\0\1\4\0\202\0\2\5\0\1\0\3\6\0\203\0" \ -+ "\2\5\0\4\0\3\5\0\0\1\2\0\0\0\2\0\6\0\2\0\203\6\0\0\0\11\5\0\0\0\12\34" \ -+ "@O\36Cx\377\36\\\245\377\26]\257\377\33\\\256\377#^\254\377![\254\377" \ -+ "\33\\\260\377\230\37^\256\377\10\30a\246\377\37\\\267\377\"G\215\277" \ -+ "\0\6\6\0\3\0\0\0\1\1\1\0\0\0\5\0\1\2\0\0\210\0\0\0\0\10\0\2\5\0\0\3\0" \ -+ "\0\0\4\0\0\0\2\0\0\0\1\5\0\0\2\10\0\0\4\3\0\0\6\0\0\320\0\3\0\0\6\0\3" \ -+ "\2\0\0\3\0\0\0\4\0\0\0\6\0\0\0\5\0\0\0\4\0\0\202\0\2\0\0\10\3\0\0\0\0" \ -+ "\1\0\0\0\2\3\0\3\3\0\0\4\0\0\0\2\12\25\22\20""5i\215\36\\\257\377\230" \ -+ "\37^\256\377\20\35[\256\377$`\250\377\34W\261\377\34`\265\377\27^\256" \ -+ "\377%Y\254\377\23/Vo\0\2\0\0\2\1\0\0\3\2\0\0\0\0\0\0\0\0\2\0\1\2\4\0" \ -+ "\0\1\4\0\0\2\4\0\0\6\7\0\230\1\1\0\0\10\0\3\13\3\0\4\15\6\3\0\5\0\4\0" \ -+ "\2\0\1\0\0\0\0\1\0\0\4\4\6\0\3\0\4\0\300\0\0\0\0\10\0\2\6\0\0\0\2\0\10" \ -+ "\7\5\0\3\0\0\0\1\0\0\0\0\1\3\0\0\1\4\0\0\1\5\0\230\3\0\4\0\5\7\1\0\0" \ -+ "\4\0\0\0\3\2\0\0\4\3\0\0\3\0\0\0\203\4\0\0\0\211\0\0\0\0\202\2\2\2\0" \ -+ "\203\0\0\0\0\2\1\1\1\0\0\0\0\0\310\0\0\2\0\203\4\0\1\0\1\4\0\3\0\203" \ -+ "\3\0\2\0\251\3\0\4\0\10\1\0\0\0\7\3\2\0\3\0\0\0\5\0\0\0\3\0\0\0\1\0\0" \ -+ "\0\4\4\4\0\1\1\3\0\210\0\0\0\0\10\0\1\0\0\3\0\0\0\7\0\0\0\6\1\0\0\0\1" \ -+ "\0\0\1\1\0\0\6\0\0\0\13\0\0\3\270\3\0\4\0\210\0\1\0\0\210\0\2\0\0\203" \ -+ "\0\1\0\0\205\0\0\0\0\202\0\2\0\0\202\0\1\0\0\202\2\1\0\0\2\2\0\1\0\2" \ -+ "\0\3\0\202\0\0\2\0\202\0\0\4\0\14\0\1\5\0\1\2\6\0\0\2\5\0\0\2\2\0\4\0" \ -+ "\13\3\12\34@O\40P\220\304$f\264\377\34[\252\377!Z\251\377&`\261\377\33" \ -+ "\\\260\377\230\37^\256\377\10\31b\247\377\33Z\271\377*Q\234\326\0\10" \ -+ "\10\0\3\0\0\0\1\1\0\0\0\0\5\0\1\2\0\0\210\0\0\0\0\10\5\0\4\0\3\0\0\0" \ -+ "\4\0\0\0\4\0\2\0\3\0\11\0\1\0\11\0\0\0\2\0\0\3\0\0\320\4\0\3\0\2\1\0" \ -+ "\4\0\3\0\2\0\203\3\0\0\0\1\5\0\0\0\202\5\0\1\0\10\4\0\5\0\0\3\14\3\0" \ -+ "\3\11\0\1\0\2\0\13\0\0\3\3\0\11\0\0\30=L!Y\224\377\230\37^\256\377\10" \ -+ "\36[\256\377%a\251\377\31T\260\377\35a\266\377\30_\255\377$[\256\377" \ -+ "\30""5]{\0\4\3\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\223\0\0\0\0\10\0" \ -+ "\0\13\3\2\7\0\0\22)I^*^\261\377\27_\261\377\32_\254\377\37]\262\377\35" \ -+ "\\\253\377\230\37^\256\377\7\40]\270\377\32^\257\377\"[\240\334\0\26" \ -+ ",2\1\0\4\0\4\0\0\0\2\0\5\0\351\0\0\0\0\10\0\4\0\0\1\0\5\0\0\0\4\0\0\2" \ -+ "\1\0\4\0\3\0\4\1\0\0\0\5\13\3\31Er\230\230\37^\256\377\10\34]\255\377" \ -+ "\34^\254\377\37\\\257\377\"\\\256\377\33^\254\377\34\\\263\377\32:s\233" \ -+ "\0\1\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\223\0\0\0\0\10\1\0\7\0\0" \ -+ "\2\0\0\1\25-5\33L\221\377\35a\262\377\34_\260\377\36\\\261\377\34[\252" \ -+ "\377\230\37^\256\377\7\36[\266\377\32^\257\377#\\\243\377\2\34""5@\1" \ -+ "\0\5\0\5\1\0\0\0\0\4\0\351\0\0\0\0\10\0\3\0\0\2\1\7\0\0\0\4\0\0\1\2\0" \ -+ "\3\0\0\0\7\0\0\0\0\4\7\0\16""4[x\230\37^\256\377\10\34]\255\377\34^\254" \ -+ "\377\37\\\257\377\"\\\256\377\33^\254\377\35]\264\377\32:s\233\0\1\0" \ -+ "\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\223\0\0\0\0\10\2\0\3\0\1\0\0\0" \ -+ "\0\3\14\3\13""3d\204%_\261\377\34\\\264\377\37\\\257\377\40[\251\377" \ -+ "\230\37^\256\377\7\35[\262\377\27^\256\377$^\247\377\12$EX\1\2\6\0\4" \ -+ "\1\0\0\0\0\4\0\351\0\0\0\0\10\0\2\0\0\2\1\7\0\0\0\5\0\0\2\2\0\3\0\0\0" \ -+ "\13\1\0\3\0\2\2\0\13%H[\230\37^\256\377\10\34]\255\377\34^\254\377\37" \ -+ "\\\257\377\"\\\256\377\34_\255\377\35]\264\377\33;t\233\0\1\0\0\377\0" \ -+ "\0\0\0\377\0\0\0\0\377\0\0\0\0\223\0\0\0\0\10\4\0\0\0\3\0\0\0\0\3\0\0" \ -+ "\2!=L(Y\246\377\33X\265\377\36\\\257\377#\\\253\377\230\37^\256\377\7" \ -+ "\35[\260\377\30_\257\377#^\252\377\23.Yu\0\2\3\0\2\2\0\0\0\0\5\0\351" \ -+ "\0\0\0\0\10\0\1\0\0\1\0\5\0\0\0\5\0\0\1\4\0\3\0\0\0\12\0\0\0\0\1\0\0" \ -+ "\23)Nd\230\37^\256\377\10\35^\256\377\34^\254\377\37\\\257\377\"\\\256" \ -+ "\377\34_\255\377\36^\265\377\33;t\233\0\2\0\0\377\0\0\0\0\377\0\0\0\0" \ -+ "\377\0\0\0\0\223\0\0\0\0\10\1\0\0\0\6\2\1\0\0\2\0\0\0\21\34\32%P\224" \ -+ "\312\35Z\267\377\35^\262\377$\\\251\377\230\37^\256\377\10\37\\\255\377" \ -+ "\30_\257\377!^\256\377\32""8l\220\0\3\2\0\1\2\0\0\0\0\5\0\2\1\0\0\350" \ -+ "\0\0\0\0\10\1\2\0\0\1\0\5\0\1\2\6\0\0\2\2\0\2\0\3\0\7\0\0\0\0\1\11\0" \ -+ "\37;j\215\230\37^\256\377\10\35^\256\377\34^\254\377\37\\\257\377#]\257" \ -+ "\377\34_\255\377\36^\265\377\33;t\233\0\1\0\0\377\0\0\0\0\377\0\0\0\0" \ -+ "\377\0\0\0\0\224\0\0\0\0\7\5\0\4\0\3\0\0\0\0\3\5\0\35Ey\244\37_\267\377" \ -+ "\33_\264\377!Z\247\377\230\37^\256\377\10\40^\253\377\30_\255\377\37" \ -+ "]\260\377\"@~\252\0\3\2\0\0\2\0\0\0\0\5\0\3\2\0\0\350\0\0\0\0\10\0\2" \ -+ "\0\0\1\0\5\0\2\2\4\0\0\1\0\0\0\0\4\0\1\0\2\0\0\20%)!M\216\301\230\37" \ -+ "^\256\377\10\35^\256\377\34^\254\377\37\\\257\377\"\\\256\377\34_\255" \ -+ "\377\35]\264\377\32:s\233\0\1\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0" \ -+ "\223\0\0\0\0\10\0\1\0\0\1\0\4\0\6\0\0\0\0\2\2\0\26""9a\201\36a\262\377" \ -+ "\25\\\264\377\"]\251\377\230\37^\256\377\10!_\252\377\26_\254\377\33" \ -+ "\\\260\377&G\214\277\0\4\0\0\0\3\0\0\0\0\5\0\2\1\0\0\350\0\0\0\0\10\0" \ -+ "\1\0\0\1\0\5\0\1\0\0\0\0\1\0\0\0\0\4\0\0\7\21\14\17""1Vo\34Z\257\377" \ -+ "\230\37^\256\377\10\36_\257\377\35_\255\377\40]\260\377\"\\\256\377\33" \ -+ "^\254\377\34\\\263\377\31""9r\230\0\1\0\0\377\0\0\0\0\377\0\0\0\0\377" \ -+ "\0\0\0\0\223\0\0\0\0\10\0\3\4\0\1\0\7\0\12\1\4\0\0\0\2\0\16""2Rj\32]" \ -+ "\253\377\20Z\263\377%a\252\377\230\37^\256\377\10\40^\247\377\25^\253" \ -+ "\377\33[\262\377*J\223\307\0\5\0\0\0\4\0\0\0\0\5\0\1\0\0\0\350\0\0\0" \ -+ "\0\10\0\1\2\0\6\1\10\0\3\0\0\0\2\3\0\0\0\0\5\0\7\23!#$P}\377\27c\303" \ -+ "\377\230\37^\256\377\20\36_\257\377\35_\255\377\40]\260\377\"\\\256\377" \ -+ "\33^\254\377\33[\262\377\30""8q\230\0\1\0\0\4\0\0\0\0\4\2\0\0\1\11\0" \ -+ "\0\0\4\0\2\2\0\0\0\1\4\0\0\0\11\0\6\0\0\0\377\1\0\0\0\11\1\0\0\0\0\2" \ -+ "\0\0\0\4\0\0\0\2\4\0\0\0\2\0\0\3\2\0\0\6\1\0\0\3\2\0\3\0\5\0\270\0\0" \ -+ "\0\0\14\0\2\0\0\0\3\4\0\0\0\2\0\1\0\0\0\6\3\0\0\5\2\0\0\3\0\0\0\2\0\10" \ -+ "\0\0\5\0\0\0\1\0\0\0\0\2\0\1\0\0\0\202\3\0\0\0\2\1\0\0\0\1\1\1\0\241" \ -+ "\1\0\0\0\17\1\1\0\0\0\1\3\0\0\0\5\0\0\1\5\0\0\1\4\0\0\1\2\0\0\3\0\0\7" \ -+ "\0\7\0\6\0\2\0\3\0\0\0\3\3\3\0\2\1\7\0\0\0\7\0\1\0\2\0\2\1\0\0\240\0" \ -+ "\0\0\0\5\0\2\5\0\0\6\0\0\0\0\7\0\0\1\0\0\0\7\0\0\202\0\3\0\0\1\0\1\0" \ -+ "\0\230\1\0\0\0\5\6\0\0\0\3\0\0\0\1\0\5\0\0\0\4\0\1\0\2\0\202\3\0\0\0" \ -+ "\1\4\0\2\0\300\0\0\0\0\10\10\0\0\0\0\1\4\0\0\4\3\0\0\2\5\0\21\35""5@" \ -+ "\33^\254\377\36]\254\377\40]\255\377\230\37^\256\377\10\36]\252\377\33" \ -+ "\\\256\377\36\\\257\377\40V\234\326\2\5\24\17\1\0\0\0\0\0\0\0\0\2\5\0" \ -+ "\210\0\0\0\0\3\1\0\2\0\0\0\11\0\0\0\5\0\202\3\0\0\0\3\0\1\5\0\0\3\6\0" \ -+ "\6\0\0\0\320\1\0\0\0\2\1\1\0\0\0\0\0\0\203\0\1\0\0\203\0\2\0\0\10\3\0" \ -+ "\2\0\7\1\1\0\4\0\0\0\0\1\4\0\12\34""2;!K{\247#c\255\377\23`\274\377\230" \ -+ "\37^\256\377\20\40]\256\377\37]\262\377\34Y\251\377\"`\251\377\35^\256" \ -+ "\377\"[\250\377\6\"I^\5\2\0\0\5\0\4\0\0\4\2\0\0\1\7\0\4\0\1\0\5\1\0\0" \ -+ "\0\1\2\0\0\0\11\0\7\0\0\0\377\1\0\0\0\11\1\0\0\0\6\0\0\0\1\0\0\0\6\2" \ -+ "\3\0\12\0\3\0\4\0\0\0\0\1\0\0\3\0\2\0\21\0\3\14\270\0\0\0\0\3\0\1\0\0" \ -+ "\1\2\4\0\2\3\7\0\203\0\1\0\0\6\1\2\4\0\1\1\13\3\3\0\0\0\5\0\6\0\7\1\15" \ -+ "\6\3\0\11\0\244\1\0\0\0\202\0\1\0\0\4\0\0\0\0\0\0\2\0\2\2\2\0\3\3\3\0" \ -+ "\202\1\0\0\0\2\3\5\4\0\0\3\0\0\202\0\2\0\0\4\0\1\0\0\2\0\3\0\3\1\2\0" \ -+ "\3\2\0\0\240\0\0\0\0\10\6\0\2\0\6\0\0\0\4\0\13\3\4\0\5\0\7\3\0\0\6\0" \ -+ "\0\0\12\0\1\0\10\0\1\0\230\1\0\0\0\2\3\0\0\0\1\0\0\0\205\0\0\0\0\1\0" \ -+ "\0\2\0\300\0\0\0\0\10\6\0\0\0\0\1\4\0\0\4\3\0\0\1\2\0\16\32""08\33]\253" \ -+ "\377\37^\255\377\40]\255\377\230\37^\256\377\5\36]\252\377\33\\\256\377" \ -+ "\37]\260\377\37X\235\377\2\10\26\22\202\0\0\0\0\1\0\2\3\0\210\0\0\0\0" \ -+ "\3\6\1\0\0\0\2\7\0\0\1\4\0\202\3\0\0\0\3\0\1\4\0\0\1\2\0\6\0\0\0\320" \ -+ "\1\0\0\0\204\6\0\4\0\204\4\0\4\0\10\0\2\0\0\0\2\5\0\0\11!#\12)Wr\40L" \ -+ "\213\274']\247\377\37^\255\377\27Z\251\377\230\37^\256\377\20\40]\260" \ -+ "\377\37\\\255\377\36]\254\377\35`\257\377\32]\256\377'\\\242\377\0\25" \ -+ "5@\3\0\0\0\3\0\2\0\0\2\0\0\0\1\4\0\7\0\0\0\4\0\0\0\0\1\7\0\0\2\25\22" \ -+ "\0\0\5\0\377\0\0\2\0\1\0\0\2\0\202\0\2\0\0\6\0\2\3\0\2\0\1\0\0\0\4\0" \ -+ "\0\3\5\0\1\0\0\0\17\0\0\11\270\0\0\0\0\20\3\2\0\0\0\0\2\0\0\0\5\0\1\5" \ -+ "\10\0\0\1\0\0\0\2\0\0\1\2\4\0\0\0\7\0\12\3\0\0\4\0\0\0\0\0\4\0\0\1\11" \ -+ "\0\0\3\7\0\0\4\4\0\0\3\4\0\0\5\10\0\240\0\0\2\0\4\0\3\6\0\0\1\4\0\0\0" \ -+ "\2\0\1\0\2\0\202\3\0\2\0\11\1\0\0\0\3\1\2\0\0\4\16\6\0\4\5\0\0\5\0\0" \ -+ "\1\3\0\0\2\1\0\0\4\0\1\0\1\0\0\0\241\0\0\0\0\10\10\0\0\0\4\0\0\0\5\2" \ -+ "\23\17\0\0\14\3\0\3\0\0\0\0\4\0\1\0\4\0\3\0\4\0\230\0\0\2\0\2\0\3\12" \ -+ "\0\0\1\4\0\202\0\1\0\0\2\1\3\0\0\0\3\2\0\202\0\2\1\0\300\0\0\0\0\10\6" \ -+ "\0\0\0\0\1\4\0\0\3\3\0\0\0\2\0\12\25)/\32\\\250\377\37^\255\377\36]\254" \ -+ "\377\230\37^\256\377\5\36^\250\377\33\\\256\377\35^\262\377\40Y\240\377" \ -+ "\5\14\34\32\202\0\0\0\0\1\0\0\2\0\210\0\0\0\0\10\7\0\0\0\2\3\7\0\0\1" \ -+ "\7\0\3\1\2\0\5\1\0\0\0\1\5\0\0\0\5\0\5\0\0\0\320\0\0\2\0\2\0\2\0\0\0" \ -+ "\1\0\0\202\0\2\0\0\2\0\1\0\0\0\2\0\0\202\0\2\2\0\10\0\21\36\35\7&EX\32" \ -+ "D~\252$]\256\377!b\276\377\31\\\265\377\32[\253\377#b\251\377\230\37" \ -+ "^\256\377\20\37]\262\377\40[\251\377\37^\255\377\30^\264\377\31[\257" \ -+ "\377$S\213\377\0\11\35\35\1\0\0\0\4\0\3\0\0\5\1\0\1\2\4\0\6\0\0\0\3\4" \ -+ "\0\0\3\25)/\17(Qj\15&EX\377\13(H[\10\13(H[\13*G[\5(H[\6'H[\12%CU\6'F" \ -+ "X\4+H[\4\33+2\271\0\0\0\0\4\5\1\0\0\1\0\2\0\0\0\5\0\2\2\4\0\202\0\1\0" \ -+ "\0\12\3\2\0\0\4\0\3\0\0\4\0\0\0\10\6\0\7\32)/\15(CU\12,H[\5&EX\6$FX\14" \ -+ "&Ka\240\13(H[\3\15+Md\7%G[\12$G[\202\17'Ka\7\13#G[\11#FX\13(J^\22)Rj" \ -+ "\10\31""5@\0\10\22\14\0\0\2\0\202\3\0\2\0\2\2\0\3\0\0\2\1\0\241\0\0\0" \ -+ "\0\7\0\6\4\0\13!FX\6&Md\7+CU\7(I^\13)Ka\10(Nd\230\13(H[\6\16(Ka\6\30" \ -+ ",2\0\4\6\0\0\1\0\0\0\0\0\0\0\0\2\0\202\0\1\0\0\300\0\0\0\0\10\6\0\0\0" \ -+ "\0\2\5\0\0\3\1\0\0\0\0\0\6\16!#\33Z\247\377\40_\256\377\35\\\254\377" \ -+ "\230\37^\256\377\10\37]\250\377\34]\257\377\36_\263\377\40\\\244\377" \ -+ "\11\21$&\0\0\2\0\0\0\0\0\0\1\0\0\210\0\0\0\0\10\7\20!#\15&DU\5%Ka\16" \ -+ "'FX\21&EX\11%J^\12'I^\22'DU\320\13(H[\20\11*I^\7*H[\4'G[\3%H[\6(Md\17" \ -+ "2Zu\33>f\207$Gq\230&S\227\315)[\244\377&_\256\377\36\\\261\377\27[\260" \ -+ "\377\32^\261\377\34_\256\377\32\\\250\377\230\37^\256\377\20\37]\262" \ -+ "\377!]\246\377\32\\\252\377\30_\273\377\36]\254\377\25""8`~\0\4\15\6" \ -+ "\1\0\0\0\3\0\2\0\0\2\0\0\0\1\0\0\3\0\0\0\0\7\11\0\20""2Wr)Z\237\377'" \ -+ "]\235\377\377\36^\250\377\11\36^\250\377\"X\256\377!Y\260\377%Y\255\377" \ -+ "'X\245\377$]\252\377$`\251\377\25;l\220\0\5\27\25\270\0\0\0\0\20\1\0" \ -+ "\0\0\3\1\4\0\3\0\4\0\3\0\0\0\5\0\0\0\5\2\0\0\3\0\0\0\3\0\5\0\0\20.5\22" \ -+ "3`~*S\223\307(Z\243\377!Y\246\377%]\252\377)^\256\377)Y\255\377\240\36" \ -+ "^\250\377\14\33[\245\377\35\\\251\377\36]\254\377\34[\253\377\35\\\254" \ -+ "\377\40_\256\377!_\252\377\37]\246\377*Aj\215\21\">L\0\5\17\11\0\0\2" \ -+ "\0\202\4\0\3\0\2\1\0\2\0\0\1\0\0\240\0\0\0\0\10\0\0\15\6\0\17#&#J\217" \ -+ "\301!X\250\377#`\243\377\"]\253\377![\254\377\36]\255\377\230\36^\250" \ -+ "\377\10&U\231\377\24""5`~\0\10\25\22\0\0\0\0\1\0\0\0\1\0\4\0\3\0\0\0" \ -+ "\6\0\0\0\300\0\0\0\0\10\4\0\0\0\0\2\5\0\0\3\0\0\1\0\0\0\2\11\33\32\31" \ -+ "Y\243\377\40_\256\377\33\\\254\377\230\37^\256\377\6\37]\246\377\34]" \ -+ "\257\377\35_\265\377\37]\250\377\13\26*/\0\1\4\0\212\0\0\0\0\10\12""0" \ -+ "a\201\37X\233\377\31\\\253\377\37]\252\377\40X\243\377\36\\\251\377\35" \ -+ "\\\251\377\"]\243\377\320\36^\250\377\20\37X\245\377!Z\247\377#\\\253" \ -+ "\377$]\256\377![\257\377\40Y\260\377!Z\263\377\"[\264\377\34X\270\377" \ -+ "\37Z\266\377\40]\260\377!_\254\377!_\252\377!`\255\377\37`\260\377\36" \ -+ "`\264\377\230\37^\256\377\20\36\\\257\377!_\252\377\30Y\251\377\40b\271" \ -+ "\377'X\232\377\0\27/8\0\3\4\0\1\1\3\0\3\1\4\0\1\6\0\0\3\3\1\0\3\0\0\0" \ -+ "\0\3\11\0\10""1_~\37]\262\377\26\\\262\377\377\35^\262\377\11\35^\262" \ -+ "\377\34[\272\377\35\\\275\377#^\272\377\"Z\255\377\34\\\263\377\37`\262" \ -+ "\377\22:k\220\0\2\11\0\270\0\0\0\0\20\0\1\0\0\1\0\2\0\4\0\0\0\6\0\0\0" \ -+ "\4\1\0\0\0\0\2\0\0\2\21\14\7\25""08\31K\220\304%Z\250\377'b\274\377\34" \ -+ "]\271\377\25X\261\377\26\\\261\377\32^\263\377\30Z\261\377\240\35^\262" \ -+ "\377\20\35Z\255\377!a\270\377\36a\272\377\30[\264\377\34^\262\377(a\256" \ -+ "\377!T\225\377\17=x\241\0\17\31\27\0\4\5\0\0\4\0\0\0\2\0\0\7\6\1\0\7" \ -+ "\3\4\0\2\0\1\0\2\2\2\0\240\0\0\0\0\10\7\0\0\0\0\12\27\25&Q\226\377\37" \ -+ "]\262\377\34a\254\377\33]\261\377\33]\263\377\30^\266\377\230\35^\262" \ -+ "\377\10#_\267\377\20""7n\223\0\3\23\17\1\0\0\0\4\0\0\0\6\0\12\0\6\0\4" \ -+ "\0\11\0\0\0\300\0\0\0\0\10\3\0\0\0\0\1\4\0\0\2\0\0\3\0\0\0\0\6\26\22" \ -+ "\30V\237\377\37^\255\377\34]\257\377\230\37^\256\377\6\"^\247\377\34" \ -+ "]\257\377\33^\265\377\36]\252\377\16\32""08\0\1\4\0\212\0\0\0\0\10\3" \ -+ "'Yu$]\244\377\33a\271\377\36^\266\377\40Y\260\377\40^\265\377\33]\263" \ -+ "\377\37^\256\377\320\35^\262\377\202!`\257\377\13\36_\257\377\34]\255" \ -+ "\377\32[\255\377\31[\257\377\32\\\260\377\34^\262\377#b\262\377\37^\256" \ -+ "\377\33Z\252\377\33Y\254\377\36[\256\377\203\37\\\257\377\230\37^\256" \ -+ "\377\20\36]\254\377\37`\262\377\32[\257\377'\\\250\377\"Bq\230\0\2\16" \ -+ "\6\1\1\0\0\0\0\0\0\0\0\5\0\0\2\0\0\4\3\0\0\10\0\0\0\0\3\6\0\14""1^{#" \ -+ "\\\265\377\30[\266\377\377#[\250\377\11#[\250\377\35_\253\377\33\\\254" \ -+ "\377\"]\251\377\37\\\237\377\27Z\250\377\36]\254\377\31L\0\1\17\11\0\1" \ -+ "\0\0\0\2\0\0\1\3\0\0\2\4\0\0\0\1\0\0\1\0\2\0\202\1\0\0\0\240\0\0\0\0" \ -+ "\10\16\2\0\6\0\14\14\3(V\224\377\33\\\256\377\32_\244\377\40^\251\377" \ -+ "\40^\247\377!a\253\377\230#[\250\377\10\37Z\266\377\20""5i\215\0\2\11" \ -+ "\0\10\2\0\0\6\0\0\0\1\0\10\0\0\0\4\0\1\0\0\0\300\0\0\0\0\10\3\0\2\0\0" \ -+ "\1\4\0\0\2\0\0\6\1\0\0\0\3\22\14\31U\236\377\36]\254\377\33^\257\377" \ -+ "\230\37^\256\377\10\"^\246\377\34]\257\377\32]\264\377\34^\254\377\16" \ -+ "\35""4>\0\1\5\0\0\0\0\0\1\0\0\0\210\0\0\0\0\10\14$H[,]\230\377\34]\255" \ -+ "\377#]\257\377%X\247\377%\\\254\377\40[\251\377#]\246\377\320#[\250\377" \ -+ "\3\35Z\253\377\35\\\254\377\36]\255\377\202\37^\256\377\203\35^\256\377" \ -+ "\10\33[\242\377\40`\252\377!`\260\377\37]\262\377\36\\\263\377\37]\262" \ -+ "\377\36\\\257\377\33Z\251\377\230\37^\256\377\20\37]\246\377\33^\267" \ -+ "\377\35]\265\377\"K\211\377\14\34""6@\0\0\4\0\1\0\0\0\0\1\0\0\0\3\14" \ -+ "\3\0\2\0\0\4\1\0\0\14\0\0\3\2\1\0\0\17+Sl'Z\255\377\40\\\264\377\377" \ -+ "\33_\262\377\11\33_\262\377\34a\254\377\31\\\255\377\40_\256\377\"`\253" \ -+ "\377\32]\266\377\33Z\271\377\27""7p\225\1\0\2\0\270\0\0\0\0\20\0\2\0" \ -+ "\0\0\0\0\0\4\0\0\0\1\0\2\0\3\17\33\32\30:]{\"\\\234\377\30`\265\377\33" \ -+ "^\254\377\36_\263\377\"^\266\377#[\262\377\"Y\251\377!Z\247\377\"[\254" \ -+ "\377#\\\263\377\240\33_\262\377\20\37^\256\377\32\\\260\377\31a\266\377" \ -+ "\33`\256\377\14D\201\260\0\31L\0\11\26\22\0\0\5\0\2\0" \ -+ "\3\0\2\0\1\0\0\2\0\0\250\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^" \ -+ "\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256" \ -+ "\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0" \ -+ "\0\0\0\2\0\300\0\0\0\0\10\0\0\2\0\0\2\0\0\3\0\2\0\1\0\0\0\3\1\6\0\33" \ -+ "N\220\304\27`\257\377![\255\377\230\37^\256\377\10\32^\261\377#[\250" \ -+ "\377\36_\263\377\36^\250\377\10%EX\0\0\2\0\2\1\0\0\1\0\0\0\210\0\0\0" \ -+ "\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252" \ -+ "\377\"\\\256\377\34]\255\377\360\37^\256\377\30\35\\\251\377!`\257\377" \ -+ "\37]\260\377\33Y\256\377\35[\262\377\"`\265\377\"_\257\377\32X\243\377" \ -+ ",e\264\377\31F\177\377\0\32""5@\0\2\5\0\4\0\0\0\5\0\0\0\1\0\0\0\0\1\2" \ -+ "\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262" \ -+ "\377\377\37^\256\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\260\0\0\0\0\2" \ -+ "\0\0\14\3\1\2\4\0\202\4\0\0\0\14\1\0\4\0\1\2\6\0\0\1\0\0\0\3\0\0\0\32" \ -+ "/8\27\26Ax\241\"Y\251\377\"_\270\377\35X\264\377\37]\262" \ -+ "\377\40_\256\377\34^\254\377\36\\\257\377!^\261\377$]\254\377#[\245\377" \ -+ "\240\37^\256\377\13!`\243\377\33\\\256\377\37\\\271\377\"U\244\377\23" \ -+ "5b\201\0\16\30\25\0\1\0\0\5\2\0\0\0\3\6\0\0\1\4\0\0\1\2\0\202\0\1\0\0" \ -+ "\3\1\3\0\0\0\0\0\0\0\0\4\0\250\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377" \ -+ "\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^" \ -+ "\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1" \ -+ "\0\0\0\0\0\2\0\300\0\0\0\0\10\0\0\2\0\0\2\0\0\3\0\2\0\1\0\0\0\3\1\6\0" \ -+ "\33N\220\304\27`\257\377![\255\377\230\37^\256\377\10\33_\262\377$\\" \ -+ "\251\377\34]\261\377\36^\250\377\15*J^\0\0\2\0\1\0\0\0\2\0\1\0\210\0" \ -+ "\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^" \ -+ "\252\377\"\\\256\377\34]\255\377\360\37^\256\377\30\32a\263\377\23Z\254" \ -+ "\377\27[\254\377\40\\\245\377\30E~\252\4\34>L\0\2\10\0\4\0\0\0\4\0\3" \ -+ "\0\4\0\0\0\3\0\0\0\1\0\0\0\1\0\5\0\0\0\13\3\0\0\7\0\1\2\6\0\0\1\0\0\4" \ -+ "\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\377\37" \ -+ "^\256\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377![\255\377" \ -+ "\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\260\0\0\0\0\20\3\3\13\3" \ -+ "\0\1\4\0\0\10\20\11\11*Md\32I\215\277$]\266\377#a\270\377\32Y\246\377" \ -+ "\"a\261\377\35^\256\377\32[\253\377\32[\255\377\35[\256\377\37^\256\377" \ -+ "!_\254\377#_\250\377\240\37^\256\377\11\33Y\242\377)b\251\377#P\213\274" \ -+ "\10\"EX\0\2\13\3\0\1\0\0\2\1\0\0\0\0\2\0\0\0\4\0\202\0\1\0\0\5\0\5\1" \ -+ "\0\2\3\5\0\1\0\5\0\1\0\2\0\3\0\0\0\250\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0" \ -+ "\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\0\0\2\0\0\2\0\0\3\0\2\0\1\0\0\0" \ -+ "\3\1\6\0\33N\220\304\27`\257\377![\255\377\230\37^\256\377\10\33_\262" \ -+ "\377$\\\251\377\34]\261\377\36^\250\377\16+Ka\0\1\3\0\1\0\0\0\2\0\1\0" \ -+ "\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377" \ -+ "\34^\252\377\"\\\256\377\34]\255\377\360\37^\256\377\30\"]\253\377(]" \ -+ "\237\377!Jx\241\12#AR\0\4\22\14\0\0\5\0\4\0\0\0\11\1\0\0\0\0\5\0\1\0" \ -+ "\0\0\2\1\0\0\4\0\0\0\3\0\2\0\1\0\5\0\0\0\4\0\1\3\2\0\0\1\0\0\4\0\0\0" \ -+ "\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\377\37^\256" \ -+ "\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377![\255\377\34" \ -+ "_\255\377\34\\\263\377\31""9r\230\0\2\0\0\260\0\0\0\0\12\6\0\0\0\0\13" \ -+ "\33\32\20""3k\220$X\253\377\"`\265\377\35\\\253\377\37]\252\377\37\\" \ -+ "\254\377\32^\251\377\33^\255\377\202\35_\263\377\4\33^\254\377\32^\251" \ -+ "\377\33\\\254\377\34]\261\377\240\37^\256\377\14\35^\272\377\20A{\247" \ -+ "\0\27%)\0\2\0\0\4\0\0\0\5\0\4\0\0\0\7\0\0\1\10\0\6\1\0\0\5\1\0\0\1\2" \ -+ "\0\0\0\1\0\0\202\0\0\2\0\2\3\0\2\0\6\0\2\0\250\0\0\0\0\10\1\1\0\0\0\7" \ -+ "\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\" \ -+ "\261\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0" \ -+ "\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\0\0\2\0\0\2\0\0\3\0\2\0" \ -+ "\1\0\0\0\3\1\6\0\33N\220\304\27`\257\377![\255\377\230\37^\256\377\10" \ -+ "\33_\262\377$\\\251\377\34]\261\377\36^\250\377\17,La\0\1\3\0\1\0\0\0" \ -+ "\2\0\1\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35" \ -+ "]\264\377\34^\252\377\"\\\256\377\34]\255\377\357\37^\256\377\31\37^" \ -+ "\256\360\27={\247\1\35DU\0\3\14\3\4\0\0\0\15\0\0\6\6\0\0\0\0\0\2\0\0" \ -+ "\4\0\0\0\3\11\0\0\1\0\0\2\2\0\0\4\1\0\0\3\0\0\0\2\0\1\0\1\3\0\0\0\2\0" \ -+ "\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262" \ -+ "\377\377\37^\256\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\240\0\0\0\0\5" \ -+ "\3\0\0\0\4\0\0\0\2\0\3\0\1\0\4\0\1\0\5\0\202\0\0\4\0\15\1\2\4\0\0\3\2" \ -+ "\0\0\0\4\0\4\0\2\0\4\0\0\0\0\3\2\0\0\2\2\0\3\0\0\0\12\0\0\0\0\34J^\24" \ -+ "G~\252$]\242\377\35[\256\377\202\33\\\266\377\2\34Z\257\377#`\261\377" \ -+ "\230\37^\256\377\24\40_\246\377\33Z\252\377\35]\267\377\36_\271\377\31" \ -+ "[\257\377\32Y\251\377\40\\\262\377%\\\271\377\40]\260\377\31^\254\377" \ -+ "\30a\256\377\36a\260\377#\\\253\377#X\244\377\34Z\247\377\34`\265\377" \ -+ "\37$8\377\0\6\24\17\0\1\7\0\0\3\2\0\202\0\1\0\0\2\4\2\3\0\1\0\2\0\260" \ -+ "\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204" \ -+ "\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\4\0" \ -+ "\2\0\0\2\0\0\2\2\2\0\6\0\0\0\0\1\2\0\24P\217\301\40Y\260\377\40\\\262" \ -+ "\377\230\37^\256\377\6\31`\262\377\"[\250\377\35^\262\377\37]\250\377" \ -+ "\20*Ka\1\1\3\0\212\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\340\37^\256\377" \ -+ "\21\31Z\254\377\36_\261\377\"a\261\377\37^\256\377\35\\\254\377\37^\256" \ -+ "\377!^\256\377\37\\\254\377$]\252\377\35\\\254\377\33^\265\377\35_\266" \ -+ "\377\35U\240\334\34Ax\241\21$DU\5\12\35\35\2\0\1\0\202\3\0\0\0\4\4\0" \ -+ "\0\0\3\0\0\0\1\0\0\0\1\1\1\0\211\0\0\0\0\10\0\1\0\0\4\0\0\0\0\0\4\0\1" \ -+ "\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\377\37^\256\377\11\37" \ -+ "^\256\377\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\240\0\0\0\0\30\6\5\3\0\4\2\3\0\0\0\0\0" \ -+ "\0\0\2\0\1\1\3\0\0\0\2\0\0\0\0\0\2\2\2\0\5\3\4\0\0\1\0\0\0\0\2\0\1\0" \ -+ "\0\0\7\0\0\0\1\1\0\0\0\5\22\14\13$Md\"T\221\304*_\243\377#^\252\377\31" \ -+ "Z\254\377\36`\266\377!b\266\377\35\\\254\377\37Z\250\377\230\37^\256" \ -+ "\377\30!a\253\377\36]\255\377\34\\\263\377\36_\263\377\37a\255\377\40" \ -+ "b\254\377!`\255\377\35[\256\377\30]\253\377\37`\262\377!^\256\377\32" \ -+ "\\\252\377\30\\\257\377&`\264\377\"N\213\274\1\40\77O\0\4\22\14\0\0\13" \ -+ "\3\0\1\4\0\0\5\1\0\0\1\0\0\0\0\0\0\3\1\2\0\1\0\4\0\260\0\0\0\0\10\1\1" \ -+ "\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253" \ -+ "\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0" \ -+ "\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\4\0\2\0\0\3\0" \ -+ "\0\2\2\2\0\6\0\0\0\0\1\2\0\25Q\220\304\40Y\260\377\40\\\262\377\230\37" \ -+ "^\256\377\6\31`\262\377\"[\250\377\35^\262\377\37]\250\377\17)J^\1\1" \ -+ "\3\0\212\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264" \ -+ "\377\34^\252\377\"\\\256\377\34]\255\377\340\37^\256\377\17\34]\257\377" \ -+ "\35^\260\377\36]\255\377\35\\\254\377\40_\257\377!`\260\377\33X\250\377" \ -+ "\22O\237\377\"I\212\377\26""9o\377\14(Md\3\30+2\0\11\17\11\0\3\2\0\0" \ -+ "\2\0\0\202\0\1\2\0\1\1\2\4\0\202\0\0\2\0\4\0\0\0\0\2\2\2\0\2\0\1\0\1" \ -+ "\0\0\0\210\0\0\0\0\10\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1W" \ -+ "r\33]\251\377\40\\\262\377\377\37^\256\377\11\37^\256\377\34]\255\377" \ -+ "\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230" \ -+ "\0\2\0\0\240\0\0\0\0\1\0\1\3\0\202\0\1\0\0\2\2\2\2\0\2\2\0\0\202\1\0" \ -+ "\0\0\21\2\1\0\0\3\0\0\0\4\2\3\0\3\3\3\0\3\0\0\0\1\0\0\0\1\16\36\35\30" \ -+ "=q\230\36W\246\377'^\256\377#]\256\377\33Z\252\377\30[\254\377\35`\257" \ -+ "\377\36`\256\377\37]\252\377!\\\250\377\230\37^\256\377\30\35^\256\377" \ -+ "\37`\262\377\37]\260\377\35\\\251\377\35]\244\377\34_\243\377\33_\246" \ -+ "\377\31^\251\377\37a\265\377\33Z\247\377\37]\252\377\37]\260\377\37Y" \ -+ "\253\377\22\77z\244\0\20&)\1\0\0\0\0\1\7\0\0\1\4\0\0\3\2\0\0\2\0\0\0" \ -+ "\1\0\0\0\0\0\0\1\0\2\0\1\0\4\0\260\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230" \ -+ "\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0" \ -+ "\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\4\0\2\0\0\3\0\0\1\3\2\0\4\0\0\0\0\2" \ -+ "\5\0\27R\224\312\40Y\260\377\37]\260\377\230\37^\256\377\6\31`\262\377" \ -+ "\"[\250\377\35^\262\377\37]\250\377\15'H[\1\1\3\0\212\0\0\0\0\10\16'" \ -+ "Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256" \ -+ "\377\34]\255\377\340\37^\256\377\2\36_\261\377\35^\260\377\202\35\\\254" \ -+ "\377\16\40_\257\377!`\260\377\32W\247\377\20M\235\377\10%C\377\0\23+" \ -+ "\377\0\5\17\11\6\1\0\0\10\0\0\0\7\0\0\0\1\1\0\0\0\3\0\0\0\1\2\0\0\3\3" \ -+ "\0\202\0\3\6\0\4\0\4\7\0\0\0\2\0\1\0\0\0\5\1\0\0\210\0\0\0\0\10\0\1\0" \ -+ "\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\377" \ -+ "\37^\256\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377![\255" \ -+ "\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\240\0\0\0\0\5\0\1\4" \ -+ "\0\0\1\2\0\1\3\2\0\2\4\1\0\0\1\0\0\203\1\0\0\0\20\1\2\0\0\5\0\0\0\6\0" \ -+ "\0\0\0\1\7\0\5#=L\33N\207\271\40Z\253\377%c\270\377\33Y\260\377\31Z\256" \ -+ "\377\34_\260\377\36c\261\377\35`\256\377\34^\254\377\37\\\254\377#]\257" \ -+ "\377\230\37^\256\377\30\32]\256\377\36_\261\377\37^\255\377\37]\252\377" \ -+ "\40^\251\377\35_\251\377\33`\255\377\32a\261\377\36V\253\377\36`\256" \ -+ "\377\37a\253\377\37T\230\320\13'Wr\0\0\22\14\3\0\0\0\4\0\0\0\0\2\1\0" \ -+ "\0\4\0\0\0\1\0\0\0\2\0\0\0\1\0\0\2\2\0\0\2\2\4\0\2\0\5\0\260\0\0\0\0" \ -+ "\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37" \ -+ "^\253\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0" \ -+ "\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\3\0\0\0" \ -+ "\0\3\0\0\0\1\3\0\4\0\0\0\0\5\11\0\30U\226\315\37[\261\377\36\\\257\377" \ -+ "\230\37^\256\377\6\31`\262\377#\\\251\377\35^\262\377\40^\251\377\12" \ -+ "$EX\1\1\3\0\212\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377" \ -+ "\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\340\37^\256\377\3\34" \ -+ "]\257\377\36_\261\377\40_\257\377\202\36]\255\377\16\37^\256\377\37\\" \ -+ "\254\377\34Y\251\377$^\257\377!U\236\377\37I\203\263\25""2Zu\6\25*/\0" \ -+ "\1\6\0\6\0\0\0\14\0\0\3\5\6\1\0\0\0\0\0\0\1\0\0\202\0\1\2\0\3\0\1\3\0" \ -+ "\2\2\2\0\2\1\0\0\210\0\0\0\0\10\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2" \ -+ "\0\16""1Wr\33]\251\377\40\\\262\377\377\37^\256\377\11\37^\256\377\34" \ -+ "]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377" \ -+ "\31""9r\230\0\2\0\0\240\0\0\0\0\3\0\2\5\0\0\3\4\0\0\2\0\0\202\0\1\0\0" \ -+ "\23\1\2\0\0\3\3\1\0\2\2\2\0\4\1\0\0\0\1\0\0\0\2\24\17\15-`~\40Y\240\334" \ -+ "\35b\257\377\32_\255\377\33W\257\377\36`\266\377\34_\260\377\34_\256" \ -+ "\377\34_\255\377\34^\254\377\37]\260\377!]\265\377\40Y\263\377\230\37" \ -+ "^\256\377\15\35`\261\377\34]\255\377\34[\252\377\37\\\254\377\"_\262" \ -+ "\377\37]\264\377\32Z\262\377\30Z\261\377(b\266\377\40X\245\377\34K\201" \ -+ "\260\5\37""6@\0\1\4\0\202\10\0\0\0\1\4\4\0\0\204\0\1\0\0\4\4\4\2\0\3" \ -+ "\3\3\0\0\0\2\0\0\0\4\0\260\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33" \ -+ "^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256" \ -+ "\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0" \ -+ "\0\0\0\2\0\300\0\0\0\0\10\3\0\0\0\0\3\0\0\0\0\4\0\4\0\4\0\3\10\16\6\33" \ -+ "X\233\323\37[\261\377\36]\255\377\230\37^\256\377\6\31`\262\377#\\\251" \ -+ "\377\34]\261\377!_\252\377\10\"CU\2\2\4\0\212\0\0\0\0\10\16'Og\40[\251" \ -+ "\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34" \ -+ "]\255\377\340\37^\256\377\20\33\\\256\377\36_\261\377!`\260\377\37^\256" \ -+ "\377\35\\\254\377\36]\255\377\"_\257\377#`\260\377\26^\263\377\23\\\270" \ -+ "\377\26_\276\377\35_\275\377\37W\244\342\33@t\233\11\35""6@\0\2\11\0" \ -+ "\202\1\0\0\0\202\2\1\0\0\202\1\0\0\0\2\4\4\4\0\0\1\0\0\210\0\0\0\0\10" \ -+ "\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262" \ -+ "\377\377\37^\256\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\240\0\0\0\0\30" \ -+ "\0\0\4\0\0\0\2\0\0\0\0\0\0\1\0\0\0\2\0\0\1\3\2\0\0\1\4\0\0\0\7\0\0\1" \ -+ "\0\0\0\23+2\23A}\252\35Z\255\377\35^\262\377\36]\254\377\31[\251\377" \ -+ "\35a\266\377\33^\255\377\34]\255\377\34^\254\377\32\\\252\377\33Z\252" \ -+ "\377\37]\262\377\40^\265\377\37Z\264\377\230\37^\256\377\21\37]\260\377" \ -+ "\33\\\254\377\34^\254\377\34]\257\377\33X\261\377\37X\262\377%[\263\377" \ -+ "(\\\257\377\37W\244\377\23""7i\215\0\11\27\25\3\0\0\0\6\2\0\0\1\0\0\0" \ -+ "\3\0\0\0\4\0\0\0\2\3\0\0\202\0\0\0\0\2\2\2\0\0\2\2\2\0\202\0\0\0\0\1" \ -+ "\0\0\2\0\260\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254" \ -+ "\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32_\255" \ -+ "\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300" \ -+ "\0\0\0\0\10\3\0\0\0\0\4\0\0\0\1\4\0\3\0\5\0\5\11\24\17\35Y\237\377\37" \ -+ "[\261\377\34]\255\377\230\37^\256\377\7\30_\261\377#\\\251\377\34]\261" \ -+ "\377!_\252\377\5\37@O\2\2\4\0\1\1\0\0\211\0\0\0\0\10\16'Og\40[\251\377" \ -+ "\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255" \ -+ "\377\340\37^\256\377\2\33\\\256\377\34]\257\377\203\36]\255\377\1\37" \ -+ "^\256\377\202\40]\255\377\20'[\246\377!]\246\377\34`\253\377\26c\253" \ -+ "\377\27c\256\377\36b\255\377\31T\240\334\15A\215\277\6\23&)\0\0\20\11" \ -+ "\0\0\7\0\10\4\5\0\4\0\0\0\3\0\0\0\0\0\0\0\0\1\2\0\210\0\0\0\0\10\0\1" \ -+ "\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377" \ -+ "\377\37^\256\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377!" \ -+ "[\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\240\0\0\0\0\25" \ -+ "\3\0\4\0\6\2\3\0\1\0\0\0\0\1\0\0\0\5\1\0\0\1\4\0\0\1\13\3\1\7\25\22\6" \ -+ "%DU!M\212\274%_\263\377\32^\261\377\34^\252\377\36[\253\377\34]\257\377" \ -+ "\32_\255\377\35\\\253\377!`\260\377#`\261\377!^\261\377\40]\260\377\202" \ -+ "\35[\256\377\1\36_\257\377\230\37^\256\377\17\36[\254\377\35\\\253\377" \ -+ "\37b\260\377\35a\262\377\32Z\261\377&]\257\377-\\\242\377%M\212\274\6" \ -+ "\37H[\0\4\21\14\1\1\0\0\7\0\0\0\1\0\0\0\0\2\3\0\1\3\2\0\202\3\1\2\0\7" \ -+ "\1\0\0\0\1\0\2\0\1\1\3\0\0\0\2\0\0\0\0\0\2\2\2\0\4\4\2\0\260\0\0\0\0" \ -+ "\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37" \ -+ "^\253\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0" \ -+ "\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\1\0\0\0" \ -+ "\0\4\0\0\0\0\5\0\4\0\10\0\5\13\27\25\35\\\241\377\40\\\262\377\34^\254" \ -+ "\377\230\37^\256\377\7\30_\261\377$]\252\377\34]\261\377\"`\253\377\3" \ -+ "\35>L\2\2\4\0\1\1\0\0\211\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37" \ -+ "\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\340\37^\256" \ -+ "\377\202\34]\257\377\2\35\\\254\377\36]\255\377\202\37^\256\377\16\37" \ -+ "\\\254\377\35Z\252\377\37\\\255\377!^\257\377!`\257\377\36]\254\377\32" \ -+ "Y\246\377\35]\247\377\"b\252\377\"`\251\377%P\205\377\13*Vo\0\7!#\0\0" \ -+ "\11\0\202\5\0\0\0\2\0\0\0\0\0\4\4\0\210\0\0\0\0\10\0\1\0\0\4\0\0\0\0" \ -+ "\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\377\37^\256\377" \ -+ "\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\240\0\0\0\0\30\4\0\2\0\7\1\3\0\1" \ -+ "\0\0\0\0\1\0\0\0\4\3\0\0\1\7\0\4\14\31\27\"*=\377\32\\\260\377!\\\250" \ -+ "\377'[\246\377#Z\252\377\36_\257\377\33c\257\377\33^\254\377\35Z\253" \ -+ "\377!^\257\377![\257\377\35V\255\377\37X\257\377$]\264\377\37\\\255\377" \ -+ "\31[\245\377\35`\247\377\230\37^\256\377\21'_\262\377\34[\252\377\32" \ -+ "_\254\377\32a\257\377\34_\256\377']\245\377\27@v\236\0\22""8C\10\0\0" \ -+ "\0\1\0\0\0\0\3\5\0\0\4\4\0\2\0\1\0\4\0\4\0\0\0\5\0\0\3\4\0\1\0\2\0\203" \ -+ "\1\0\4\0\3\0\0\4\0\1\1\3\0\1\1\0\0\261\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0" \ -+ "\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\1\0\0\0\0\4\0\0\0\0\5\0\4\0\10" \ -+ "\0\6\14\30\25\36]\242\377\37]\262\377\34^\254\377\230\37^\256\377\7\30" \ -+ "_\261\377$]\252\377\33\\\260\377\"`\253\377\2\34=L\2\2\4\0\1\1\0\0\211" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\340\37^\256\377\202\35^\260\377\202" \ -+ "\37^\256\377\202\36]\255\377\22\37\\\254\377\40]\255\377\34`\261\377" \ -+ "\33\\\256\377\40]\260\377%]\262\377$Z\260\377\"Z\261\377!Z\263\377\35" \ -+ "X\262\377\36a\262\377)\\\236\377\30""5_~\1\10\33\32\3\0\0\0\5\0\0\0\0" \ -+ "\1\0\0\0\3\1\0\210\0\0\0\0\10\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0" \ -+ "\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\37]\262\377\40]" \ -+ "\260\377\35Z\253\377\33Z\252\377\35`\261\377\33c\265\377\25`\263\377" \ -+ "\27b\265\377\300\36]\254\377\10\40^\261\377!^\256\377\36Y\247\377\37" \ -+ "]\252\377\"a\260\377\31\\\253\377\36a\262\377\33\\\256\377\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\230\0\0\0\0\20\4\0\5\0\3\0\4\0\0\0\0\0" \ -+ "\0\1\0\0\0\2\0\0\1\2\0\0\4\0\0\0\5\0\1\0\0\2\13\3\0\0\5\0\6\2\0\0\5\1" \ -+ "\0\0\0\1\0\0\1\27.5\22B\200\255\35^\274\377\240\37^\256\377\20\34]\261" \ -+ "\377\36_\263\377\35`\261\377\32_\255\377\33`\255\377\34a\256\377\34_" \ -+ "\256\377\34]\257\377\35[\262\377\33_\262\377\26_\256\377\36a\257\377" \ -+ "$V\233\377\20+Vo\0\3\14\3\12\0\0\0\300\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0" \ -+ "\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\4\0\0\0\0\1\12\0\6\0\0\0\6\2\0" \ -+ "\0\0\34""9F$]\252\377\35[\262\377\33^\257\377\230\37^\256\377\10#\\\255" \ -+ "\377\40_\254\377\31\\\265\377\34]\257\377\14\34+2\0\1\4\0\1\0\5\0\1\0" \ -+ "\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264" \ -+ "\377\34^\252\377\"\\\256\377\34]\255\377\360\37^\256\377\30\34b\252\377" \ -+ "\31[\271\377\"]\273\377\26C|\247\0\21\35\35\0\3\0\0\11\4\1\0\6\0\7\0" \ -+ "\1\1\1\0\0\1\0\0\0\0\2\0\3\3\3\0\4\2\3\0\1\0\2\0\0\1\6\0\0\0\7\0\0\1" \ -+ "\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377" \ -+ "\230\37^\256\377\3\36[\256\377!^\257\377#^\254\377\202\"[\250\377\3\40" \ -+ "\\\245\377\36Z\243\377\40\\\245\377\300![\257\377\10$\\\263\377&^\263" \ -+ "\377$Z\260\377%[\263\377#[\262\377\36W\256\377$]\264\377#\\\263\377\230" \ -+ "\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\230\0\0\0\0\5\3\0\2\0\1\0\2\0\1" \ -+ "\1\3\0\2\4\3\0\0\4\0\0\202\0\1\0\0\11\0\0\5\0\0\0\0\0\1\0\0\0\0\1\0\0" \ -+ "\0\5\17\11\11#H[$P\215\277*b\255\377\30U\245\377\240\37^\256\377\20!" \ -+ "Z\251\377\"\\\256\377\37]\260\377\33^\257\377\31\\\252\377\31]\250\377" \ -+ "\37^\256\377\"^\264\377\22^\252\377\37b\263\377&]\257\377\34D\202\260" \ -+ "\5\37@O\0\6\17\11\0\1\2\0\5\0\4\0\300\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0" \ -+ "\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\3\0\0\0\0\2\13\3\4\0\0\0\4\1\0" \ -+ "\0\1\"CU#\\\251\377\37[\263\377\34_\256\377\230\37^\256\377\10#\\\255" \ -+ "\377\40_\254\377\31\\\265\377\36]\255\377\14\31)/\0\1\4\0\1\0\5\0\1\0" \ -+ "\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264" \ -+ "\377\34^\252\377\"\\\256\377\34]\255\377\360\37^\256\377\10\35]\247\377" \ -+ "\36`\256\377!_\264\377%Z\250\377\34@r\230\0\22!#\0\1\0\0\14\3\6\3\202" \ -+ "\1\0\0\0\3\0\0\2\0\0\0\0\0\1\1\1\0\202\0\0\0\0\202\0\1\0\0\7\4\0\0\0" \ -+ "\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256" \ -+ "\377\10\35Z\252\377\40]\256\377\40_\257\377\40]\255\377#^\254\377#\\" \ -+ "\251\377#^\252\377$_\255\377\300\35^\256\377\10\23_\252\377\25b\252\377" \ -+ "\27`\255\377\32a\263\377\31]\260\377\31^\251\377\30b\253\377\24`\254" \ -+ "\377\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377" \ -+ "\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\230\0\0\0\0\20\0\0\2\0\1" \ -+ "\1\1\0\0\2\0\0\0\1\0\0\0\0\2\0\0\1\4\0\0\2\3\0\1\5\6\0\4\2\0\0\0\1\0" \ -+ "\0\0\16\36\35\25""7g\212#W\243\377\40]\266\377\32[\257\377\37]\250\377" \ -+ "\240\37^\256\377\20\"[\252\377![\254\377\40Z\254\377\36[\253\377!_\254" \ -+ "\377#b\261\377\40^\263\377\32W\260\377\34e\261\377\40Y\234\377\25""5" \ -+ "f\207\5\17*/\1\0\5\0\3\0\0\0\0\1\0\0\0\5\10\0\300\0\0\0\0\10\1\1\0\0" \ -+ "\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377" \ -+ "\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0" \ -+ "\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\3\0\0\0\0\2\11\0" \ -+ "\6\1\0\0\0\1\0\0\10.Sl!Z\251\377\40\\\262\377\35`\257\377\230\37^\256" \ -+ "\377\10![\254\377\36`\254\377\33]\264\377\36]\255\377\12\30%)\0\1\2\0" \ -+ "\1\0\5\0\1\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\360\37^\256\377" \ -+ "\30\40Z\243\377!`\247\377\33\\\254\377\40_\274\377)_\267\377\27L\26E{\247(`\253\377\25Z\267\377\37`\264\377#^\254\377" \ -+ "\35W\250\377\34Z\261\377!a\271\377\"a\260\377\37[\243\377\240\37^\256" \ -+ "\377\17!\\\250\377\31X\250\377\40^\261\377'a\253\377\33J\202\260\10%" \ -+ "EX\0\10\24\17\1\0\0\0\12\1\2\0\3\0\0\0\1\1\0\0\0\1\0\0\0\2\2\0\0\3\4" \ -+ "\0\4\5\7\0\301\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"" \ -+ "[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32" \ -+ "_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0" \ -+ "\300\0\0\0\0\10\2\1\0\0\0\0\4\0\1\0\6\0\6\36""6@!\\\236\377\35Z\263\377" \ -+ "\"Z\255\377\32_\254\377\230\37^\256\377\10\36\\\257\377\35_\253\377\34" \ -+ "Z\255\377\37U\237\331\0\4\12\0\1\0\0\0\1\0\5\0\0\1\3\0\210\0\0\0\0\10" \ -+ "\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"" \ -+ "\\\256\377\34]\255\377\360\37^\256\377\30\40Y\262\377\37^\255\377\31" \ -+ "[\245\377\31[\251\377\40_\256\377\37_\251\377\32\\\252\377\35_\266\377" \ -+ "\31Bn\223\0\20+2\0\0\5\0\7\0\0\0\3\0\0\0\0\2\5\0\0\1\2\0\2\1\0\0\0\1" \ -+ "\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377" \ -+ "\230\37^\256\377\10![\257\377\32]\264\377\33a\266\377%\\\235\377\21." \ -+ "Pg\0\0\11\0\1\0\0\0\2\1\0\0\300\0\2\0\0\10\12\0\14\3\2\1\0\0\0\2\0\0" \ -+ "\2\1\6\0\4\0\0\0\0\1\0\0\0\3\27\25\"A\201\260\230\37^\256\377\10\34]" \ -+ "\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31" \ -+ "9r\230\0\2\0\0\230\0\0\0\0\20\3\0\11\0\4\0\0\0\1\1\0\0\0\6\5\0\20*EX" \ -+ "(Y\224\377\"i\273\377\11^\271\377\37_\246\377\33\\\254\377\33\\\270\377" \ -+ "\40]\270\377\"\\\260\377\40Y\250\377\37\\\254\377\35_\265\377\240\37" \ -+ "^\256\377\12\34a\254\377!`\260\377(X\252\377\32>z\244\0\26""2;\0\3\4" \ -+ "\0\3\0\0\0\12\1\0\0\0\0\13\3\0\2\6\0\202\0\1\0\0\4\0\2\0\0\0\1\0\0\0" \ -+ "\0\2\0\0\0\4\0\300\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377" \ -+ "\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32" \ -+ "_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0" \ -+ "\300\0\0\0\0\10\1\0\0\0\1\0\2\0\5\4\12\0\16)DU#b\247\377\33[\263\377" \ -+ "\"Y\253\377\34a\256\377\230\37^\256\377\10\36\\\257\377\34^\252\377\34" \ -+ "Y\254\377\35S\235\326\0\1\7\0\1\0\0\0\1\0\5\0\1\2\4\0\210\0\0\0\0\10" \ -+ "\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"" \ -+ "\\\256\377\34]\255\377\360\37^\256\377\16)^\252\377\34Y\251\377\32_\255" \ -+ "\377\35b\255\377\33Z\247\377\35Z\255\377\37`\264\377\33`\256\3771d\245" \ -+ "\377\4\37J^\2\1\21\14\12\0\0\0\4\0\0\0\0\3\2\0\202\0\2\0\0\10\0\1\0\0" \ -+ "\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230" \ -+ "\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj" \ -+ "\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7" \ -+ "\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255" \ -+ "\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0" \ -+ "\0\221\0\0\0\0\17\0\1\0\0\1\3\0\0\0\3\6\0\0\0\5\0\0\1\0\0\2\1\0\0\4\0" \ -+ "\0\0\13\0\0\3\0\0\5\0\0\26""5@\21B}\252\37]\252\352\33\\\260\377\36X" \ -+ "\252\377%\\\254\377\240\37^\256\377\20\40`\252\377\33_\260\377\27_\264" \ -+ "\377\32]\264\377\40^\263\377#]\257\377\37\\\255\377\32[\257\377\35^\262" \ -+ "\377&Y\222\377\23""1I^\0\7\16\6\3\0\5\0\10\1\11\0\0\0\0\0\0\4\0\0\310" \ -+ "\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204" \ -+ "\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\270\0\0\0\0\20\0\2" \ -+ "\5\0\0\0\4\0\0\0\2\0\4\2\3\0\4\3\1\0\1\0\0\0\0\0\0\0\0\0\2\0\6\0\0\0" \ -+ "\1\1\0\0\0\6\21\14\36L\210\271\36Y\263\377\40^\261\377\33]\251\377\33" \ -+ "`\256\377\230\37^\256\377\10\37]\252\377\31`\262\377\37Z\266\377%C\203" \ -+ "\263\0\3\2\0\0\3\6\0\0\2\0\0\0\0\4\0\210\0\0\0\0\10\16'Og\40[\251\377" \ -+ "\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255" \ -+ "\377\230\37^\256\377\10\26_\273\377\31R\225\377\12\40""5\377\22!BR\22" \ -+ "&\77O\20$\77O\4(>L\14&=L\260\16\"CU\20\23!;I\16\40DU\25""0e\207#H\216" \ -+ "\301'W\251\377!Z\261\377\32\\\262\377\30_\261\377#]\261\377#]\257\377" \ -+ "\35W\250\377$a\261\377\34]\255\377\34_\260\377\33^\257\377\34]\257\377" \ -+ "\230\37^\256\377\20\31]\260\377\"V\241\377\0\15\32\27\3\0\2\0\7\0\0\0" \ -+ "\0\4\0\0\0\6\2\0\1\0\2\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1" \ -+ "Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377" \ -+ "\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1" \ -+ "\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\220\0\0\0\0\20\0\2\4\0\1\2\7\0\2\0\1\0" \ -+ "\3\0\0\0\2\1\0\0\2\1\11\0\0\0\0\0\1\2\0\0\0\4\25\22\14#BR\40H{\247$]" \ -+ "\242\377\37`\262\377\34^\262\377\37\\\255\377\"[\252\377\240\37^\256" \ -+ "\377\20\32Z\264\377\37^\256\377!`\247\377\37]\246\377\36]\255\377\34" \ -+ "Z\261\377\35[\260\377\40_\256\377!H\201\377\7%I^\0\4\16\6\0\0\2\0\6\0" \ -+ "\2\0\5\0\6\0\0\0\2\0\0\5\0\0\310\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230" \ -+ "\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0" \ -+ "\0\1\0\0\0\0\0\2\0\270\0\0\0\0\202\1\1\3\0\203\0\0\2\0\13\0\1\2\0\0\2" \ -+ "\3\0\0\4\5\0\12\3\0\0\0\2\0\0\0\34""6@'X\233\377\34X\260\377\40_\257" \ -+ "\377\34^\252\377\34_\260\377\230\37^\256\377\10\37]\252\377\31`\262\377" \ -+ "\36Y\263\377\40>z\244\0\3\2\0\0\1\3\0\0\2\0\0\0\1\5\0\210\0\0\0\0\10" \ -+ "\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"" \ -+ "\\\256\377\34]\255\377\230\37^\256\377\4!Z\253\377\32Ez\244\0\5\13\3" \ -+ "\0\0\20\11\202\0\0\11\0\2\0\5\11\0\0\1\7\0\260\0\1\4\0\20\0\2\7\0\0\5" \ -+ "\12\0\0\3\11\0\0\6\24\17\0\37\34G|\247\36[\254\377\30" \ -+ "^\263\377\33^\257\377\40]\255\377\40^\253\377\40]\255\377\40_\257\377" \ -+ "!_\262\377\"`\263\377!_\262\377\34]\255\377\31[\251\377\240\37^\256\377" \ -+ "\16%^\257\377!O\212\274\12(BR\0\3\5\0\3\0\0\0\14\5\0\3\5\3\4\0\0\0\5" \ -+ "\0\0\0\4\0\3\2\7\0\0\0\4\0\0\0\2\0\1\1\1\0\4\4\4\0\202\2\2\0\0\310\0" \ -+ "\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204" \ -+ "\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\270\0\0\0\0\20\0\6" \ -+ "\10\0\0\1\0\0\3\0\0\0\5\0\0\0\0\0\13\3\0\4\36\35\3$Og\35H}\377%`\254" \ -+ "\377#]\257\377\34Z\255\377\36a\257\377\34^\254\377\36[\256\377\40^\261" \ -+ "\377\31^\251\377\230\37^\256\377\10\37]\262\377\33`\255\377\"X\236\377" \ -+ "\0\21\35\35\3\0\4\0\5\0\0\0\1\2\0\0\0\0\11\0\210\0\0\0\0\10\16'Og\40" \ -+ "[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377" \ -+ "\34]\255\377\230\37^\256\377\10\"Z\257\377\33Dx\241\0\6\2\0\4\0\3\0\5" \ -+ "\2\0\0\4\0\0\0\0\2\0\0\4\0\0\0\260\4\0\5\0\2\0\0\0\0\2\4\1\0\202\0\2" \ -+ "\0\0\14\0\1\0\0\2\2\0\0\1\0\0\0\3\0\0\0\1\0\4\0\14!@O%X\227\377\34`\263" \ -+ "\377\31[\262\377\37\\\257\377\"_\257\377\35\\\253\377\230\37^\256\377" \ -+ "\20\36[\253\377\40]\256\377\40^\265\377$^\262\377\7.Og\0\4\0\0\4\0\0" \ -+ "\0\0\0\2\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377" \ -+ "\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377" \ -+ "#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2" \ -+ "\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34" \ -+ "]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377" \ -+ "\31""9r\230\0\2\0\0\220\0\0\0\0\20\3\0\0\0\27*Ka#Q\236\331\40`\272\377" \ -+ "\34`\263\377\35_\253\377\35_\251\377\32^\251\377\34_\255\377\32]\256" \ -+ "\377\30\\\257\377\32^\263\377\33]\263\377\34]\257\377\37^\255\377\"`" \ -+ "\253\377\237\37^\256\377\21\37^\256\360\33A\177\255\0\23""2;\0\3\2\0" \ -+ "\10\4\0\0\6\1\0\0\0\0\5\0\0\2\5\0\0\6\5\0\3\0\2\0\4\0\2\0\5\0\1\0\5\0" \ -+ "\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\2\0\310\0\0\0\0\10\1\1\0\0\0\7\14\3" \ -+ "\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261" \ -+ "\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2" \ -+ "\0\0\1\0\0\1\0\0\0\0\0\2\0\270\0\0\0\0\20\0\3\4\0\0\1\0\0\3\0\0\0\3\1" \ -+ "\6\0\17\27,2\35L\2\34""5@\250\6" \ -+ "\36:F\210\5#=L\20\5%Ka\7)Og\14-Xr\21""3a\201\25""9k\220\34Av\236#H\177" \ -+ "\255%L\205\377.W\225\377)X\234\377&[\247\377\"\\\260\377\37]\264\377" \ -+ "\36\\\263\377\36[\254\377\37Y\252\377\240\37^\256\377\10\24`\256\377" \ -+ "\"\\\260\377\32""9o\225\0\1\5\0\5\1\0\0\0\1\0\0\0\2\0\0\3\0\0\0\210\0" \ -+ "\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^" \ -+ "\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|" \ -+ "\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\0" \ -+ "\1\4\0\0\1\0\0\3\16$&#L\216\377\33]\261\377\31`\256\377\36]\252\377#" \ -+ "\\\255\377\230\37^\256\377\7\36Z\260\377\33]\261\377\37]\252\377!^\256" \ -+ "\377\36W\246\377\0\31*/\3\0\0\0\202\0\1\0\0\7\4\0\0\0\0\0\4\0\1\0\0\0" \ -+ "\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255" \ -+ "\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0" \ -+ "\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203" \ -+ "\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377" \ -+ "\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\20\1\0\0\0\2" \ -+ "\2\4\0\1\1\0\0\0\2\7\0\0\0\0\0\3\16\40\40\26Q\215\277&f\255\377\40_\254" \ -+ "\377!`\255\377\37^\253\377\35\\\253\377\37^\256\377!_\262\377\40^\261" \ -+ "\377\37]\260\377\240\37^\256\377\10!\\\270\377\40]\266\377\36\\\257\377" \ -+ "\37[\244\377\30J\207\377\3%S\377\0\20""1\377\14\26/8\310\3\32,2\10\2" \ -+ "\25""3>\6\23""6@\1\31""5@\6\31""7C\1\0\0\0\3\0\2\0\0\2\0\0\1\0\2\0\210" \ -+ "\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\230\37^\256\377\10\36b\307\377&[\267\377" \ -+ "&Q\240\377-V\245\377)\\\257\377!Z\261\377%_\263\377'\\\254\377\250\35" \ -+ "^\256\377\210![\255\377\202\36[\254\377\16\35[\256\377\35[\260\377\33" \ -+ "[\262\377\33]\264\377\34]\267\377\34_\270\377\40[\265\377\35]\265\377" \ -+ "\32]\266\377\27]\265\377\30^\264\377\34^\262\377!`\260\377%_\260\377" \ -+ "\240\37^\256\377\10\24]\254\377)^\254\377\15&Og\0\0\5\0\3\0\0\0\0\2\0" \ -+ "\0\0\0\2\0\3\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\" \ -+ "\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256" \ -+ "\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0" \ -+ "\1\0\2\0\270\0\0\0\0\202\0\1\0\0\6\0\7\15\6\15""2_~$^\260\377\34`\265" \ -+ "\377\35\\\251\377#^\254\377\230\37^\256\377\20\37\\\257\377\31[\257\377" \ -+ "\40^\253\377\37^\256\377\37\\\254\377\13)CU\2\0\3\0\0\0\0\0\0\1\0\0\4" \ -+ "\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37" \ -+ "^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2" \ -+ "\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1" \ -+ "\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377" \ -+ "\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210" \ -+ "\0\0\0\0\10\0\0\5\0\3\2\7\0\1\0\0\0\0\1\5\0\3\1\2\0\5\25,2\32\\\246\377" \ -+ "\23_\265\377\203\35\\\253\377\3\36]\255\377\40_\257\377\40^\261\377\202" \ -+ "\37]\260\377\240\37^\256\377\10\33[\245\377\34^\250\377\34`\251\377\35" \ -+ "a\252\377\36\\\245\377\35S\235\377$R\235\3775\\\247\377\310\36]\252\377" \ -+ "\10![\244\377'X\244\377%\\\237\377$M\213\274\5\21\37\40\0\0\7\0\0\2\2" \ -+ "\0\1\0\2\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"" \ -+ "[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\10\30" \ -+ "\\\261\377\40]\256\377\40Y\246\377\40^\253\377\30_\261\377\21]\261\377" \ -+ "\27_\261\377\30]\252\377\250\37^\253\377\210\35_\253\377\203\35^\262" \ -+ "\377\202\34^\262\377\202\32^\261\377\11\33_\262\377\33_\260\377\34a\257" \ -+ "\377\33c\257\377\32d\255\377\33c\255\377\34_\255\377\36]\255\377\35Z" \ -+ "\253\377\240\37^\256\377\10\30\\\255\377-\\\242\377\1\25.5\0\0\5\0\3" \ -+ "\0\0\0\1\4\0\0\0\0\5\0\1\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256" \ -+ "\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230" \ -+ "\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0" \ -+ "\0\3\0\0\1\0\2\0\270\0\0\0\0\10\0\2\0\0\1\0\0\0\0\4\0\0\0\34""6@*[\250" \ -+ "\377\36]\272\377\32[\253\377$_\253\377\230\37^\256\377\20\37]\260\377" \ -+ "\31Z\256\377$^\257\377\36\\\257\377\35_\255\377\26""6\\x\1\0\5\0\0\0" \ -+ "\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\" \ -+ "\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257" \ -+ "\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0" \ -+ "\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377" \ -+ "\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230" \ -+ "\0\2\0\0\210\0\0\0\0\16\0\0\11\0\0\0\4\0\3\0\0\0\3\5\4\0\5\0\0\0\0\11" \ -+ "\35\35\36Z\242\377\32a\271\377\36]\255\377\35\\\254\377\37^\256\377\40" \ -+ "_\257\377\37^\256\377\35\\\254\377\202\35[\256\377\240\37^\256\377\10" \ -+ "\40_\254\377\34^\252\377\34`\253\377\33`\255\377\32a\261\377\40d\271" \ -+ "\377\40a\273\377\31X\265\377\310\"Z\255\377\10\27^\266\377\33\\\270\377" \ -+ "\33a\267\377\"V\242\377\0\14\34\32\0\0\4\0\0\1\2\0\1\0\2\0\210\0\0\0" \ -+ "\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377" \ -+ "\37^\253\377\36\\\261\377\230\37^\256\377\10\34[\252\377!_\254\377\40" \ -+ "^\251\377\34^\254\377\32^\257\377\30_\257\377\37a\255\377!`\247\377\250" \ -+ "\"Y\263\377\210!Z\263\377\1\"]\253\377\203\"]\251\377\14\"^\247\377!" \ -+ "]\246\377\37^\245\377\36]\244\377\35Z\252\377\34[\250\377\32]\244\377" \ -+ "\32]\243\377\31]\244\377\33]\251\377\33\\\254\377\33\\\256\377\240\37" \ -+ "^\256\377\10\34_\260\377(Q\211\274\0\10\26\22\1\0\4\0\1\0\0\0\0\2\0\0" \ -+ "\0\0\5\0\2\1\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377" \ -+ "\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0" \ -+ "\2\0\270\0\0\0\0\10\0\1\0\0\1\0\0\0\0\2\0\0\0\15\30\25(Q\223\377\36[" \ -+ "\270\377\30Z\256\377#a\252\377\231\37^\256\377\17\32[\255\377%_\260\377" \ -+ "\33\\\256\377\31^\254\377\31=m\223\0\0\5\0\1\0\0\0\0\1\0\0\4\0\0\0\0" \ -+ "\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377" \ -+ "\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0" \ -+ "\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0" \ -+ "\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260" \ -+ "\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0" \ -+ "\0\10\0\0\7\0\1\0\5\0\4\1\0\0\1\3\0\0\7\0\0\0\3\12\32\27&]\240\377\40" \ -+ "^\261\377\202\37]\260\377\2!_\262\377\40^\261\377\202\35\\\254\377\2" \ -+ "\37^\256\377\40_\257\377\240\37^\256\377\2!`\257\377\35\\\253\377\202" \ -+ "\37^\253\377\4\31X\245\377\35Z\252\377\"_\260\377\36[\256\377\310\33" \ -+ "]\261\377\10\"]\251\377!Z\253\377\36\\\261\377)W\242\377\2\15\23\17\10" \ -+ "\3\0\0\2\2\2\0\3\1\6\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33" \ -+ "^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256" \ -+ "\377\10\40[\265\377#\\\266\377\"[\265\377\37Z\264\377\36Y\263\377!Z\263" \ -+ "\377#[\260\377%Y\254\377\250\34_\260\377\210\37\\\257\377\204\40]\260" \ -+ "\377\202!^\257\377\5!^\256\377\40]\255\377%\\\267\377$[\265\377\"[\262" \ -+ "\377\202\37\\\255\377\1\36]\255\377\202\35^\260\377\240\37^\256\377\10" \ -+ "\35^\262\377\32=g\212\0\1\6\0\4\0\2\0\0\0\2\0\0\2\0\0\0\0\4\0\1\1\0\0" \ -+ "\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377" \ -+ "\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32" \ -+ "H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\271\0\0\0\0\7" \ -+ "\2\1\0\0\1\1\0\0\0\5\13\3\37@u\236!Z\264\377\27Z\263\377!a\251\377\230" \ -+ "\37^\256\377\20\37^\255\377\36\\\257\377%^\257\377\33]\261\377\23_\253" \ -+ "\377\32B}\252\0\0\7\0\3\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0" \ -+ "\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]" \ -+ "\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0" \ -+ "\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230" \ -+ "\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\10\0\0\4\0\2\2\4\0\3" \ -+ "\4\0\0\0\3\0\0\3\2\0\0\11\22#&&]\240\377\33X\253\377\202\36\\\257\377" \ -+ "\6\40^\261\377\37]\260\377\35[\256\377\37^\256\377\"a\261\377\40_\257" \ -+ "\377\240\37^\256\377\10\33]\253\377\33Z\251\377\35Z\252\377\"\\\255\377" \ -+ "$]\254\377#\\\253\377\"]\253\377\40^\253\377\310\36]\252\377\10\"]\243" \ -+ "\377![\245\377\31Z\256\377'U\240\377\0\12\13\3\11\2\0\0\0\0\0\0\1\0\4" \ -+ "\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377" \ -+ "\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\5\36[\253\377\36" \ -+ "]\254\377\37^\255\377\37]\252\377!\\\252\377\202\"]\251\377\1#^\252\377" \ -+ "\250![\255\377\210\35^\256\377\2\33]\263\377\34\\\263\377\202\33[\262" \ -+ "\377\6\34]\261\377\35^\262\377\36\\\261\377\35[\260\377\36\\\263\377" \ -+ "\37[\263\377\203\40\\\264\377\3\36\\\261\377\35[\256\377\32[\253\377" \ -+ "\240\37^\256\377\10\35[\262\377\7&BR\2\0\1\0\6\0\0\0\1\1\3\0\0\0\4\0" \ -+ "\0\0\0\0\1\1\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377" \ -+ "\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0" \ -+ "\2\0\270\0\0\0\0\10\1\0\4\0\2\0\1\0\3\0\0\0\0\1\6\0\22""0Vo#[\260\377" \ -+ "\30]\272\377\37_\246\377\230\37^\256\377\20\36]\252\377\37]\260\377#" \ -+ "Z\255\377\34^\262\377\23a\254\377\34G\213\274\0\2\13\3\3\0\0\0\0\1\0" \ -+ "\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230" \ -+ "\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj" \ -+ "\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7" \ -+ "\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255" \ -+ "\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0" \ -+ "\0\210\0\0\0\0\10\5\0\4\0\0\0\0\0\0\2\0\0\0\5\2\0\0\4\0\0\0\15!#\35Y" \ -+ "\237\377\37_\266\377\202\35[\260\377\202\37]\260\377\1\35[\256\377\202" \ -+ "\40_\257\377\1\33Z\252\377\240\37^\256\377\10\32\\\262\377\37_\266\377" \ -+ "\37]\264\377\36Z\262\377!_\264\377\35^\260\377\30]\252\377\31c\254\377" \ -+ "\310\37^\256\377\10\27`\255\377\31a\263\377\23`\274\377\"[\254\377\0" \ -+ "\12\15\6\5\1\0\0\0\0\0\0\1\0\6\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R" \ -+ "\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\230\37^\256\377\10\35^\256\377\35^\260\377\36_\261\377\35^\256\377\36" \ -+ "]\254\377\35^\256\377\33]\261\377\32`\265\377\250\34_\255\377\210\36" \ -+ "]\254\377\2\37a\255\377\36`\254\377\202\34^\252\377\1\40_\254\377\202" \ -+ "\40_\256\377\5\37^\255\377\30a\245\377\32`\250\377\33^\254\377\34]\257" \ -+ "\377\202\36\\\257\377\2\36]\255\377\36]\254\377\240\37^\256\377\10\32" \ -+ "W\260\377\0\26+2\6\0\0\0\7\0\0\0\1\2\4\0\0\0\5\0\0\0\0\0\1\1\1\0\210" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H" \ -+ "|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10" \ -+ "\1\0\5\0\1\0\2\0\4\0\2\0\0\0\7\0\12%CU$]\256\377\31]\276\377\34_\245" \ -+ "\377\230\37^\256\377\20\36]\252\377\40]\260\377\40W\252\377\34`\263\377" \ -+ "\25d\257\377\37K\222\307\0\4\17\11\3\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1" \ -+ "\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34" \ -+ "]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0" \ -+ "\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0" \ -+ "\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377!" \ -+ "[\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0" \ -+ "\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370" \ -+ "\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377\2\13" \ -+ "\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370" \ -+ "\37^\256\377\20\34_\255\377\33^\255\377\35_\251\377!`\257\377\36Z\262" \ -+ "\377\35[\250\377\40c\252\377\30[\264\377%Cg\377\0\10\31\27\0\2\0\0\1" \ -+ "\2\0\0\0\1\0\0\0\3\10\0\0\0\4\0\5\0\0\0\210\0\0\0\0\10\16'Og\40[\251" \ -+ "\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34" \ -+ "]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0" \ -+ "\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\1\0\0\0\0\2\4\0\0\2\0\0\1" \ -+ "\0\0\0\15\22&)\37]\252\377\37^\256\377\34]\255\377\230\37^\256\377\20" \ -+ "\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36P\227\315" \ -+ "\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]" \ -+ "\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\" \ -+ "\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3" \ -+ "\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377" \ -+ "\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263" \ -+ "\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0" \ -+ "\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377\34" \ -+ "^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0" \ -+ "\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35" \ -+ "^\256\377\37^\253\377\36\\\261\377\370\37^\256\377\20\40b\260\377\32" \ -+ "[\253\377\35^\256\377\37]\260\377\36\\\261\377!`\260\377\36`\254\377" \ -+ "\36_\261\377\21)EX\0\3\16\6\0\2\0\0\3\2\0\0\0\0\2\0\2\3\10\0\0\0\2\0" \ -+ "\3\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35" \ -+ "]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z" \ -+ "\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270" \ -+ "\0\0\0\0\10\1\0\0\0\0\1\4\0\0\1\0\0\3\0\0\0\13\20$&\36\\\251\377\37^" \ -+ "\256\377\34]\255\377\230\37^\256\377\20\36]\255\377\36]\254\377\35]\264" \ -+ "\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0" \ -+ "\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256" \ -+ "\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0" \ -+ "\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0" \ -+ "\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40" \ -+ "]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0" \ -+ "\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255" \ -+ "\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377" \ -+ "\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\370\37^\256\377\20\40_\257\377\36]\255\377\34]\261\377\34\\\263\377" \ -+ "\32]\256\377\36_\261\377\40]\255\377\34W\233\323\0\15\32\27\0\2\5\0\0" \ -+ "\1\0\0\4\0\0\0\1\0\4\0\1\1\11\0\1\2\4\0\0\1\0\0\210\0\0\0\0\10\16'Og" \ -+ "\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256" \ -+ "\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0" \ -+ "\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\1\0\0\0\0\1\4\0\0" \ -+ "\1\0\0\3\0\0\0\10\15!#\33Y\244\377\36]\254\377\34]\255\377\230\37^\256" \ -+ "\377\20\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36" \ -+ "P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16" \ -+ "1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377" \ -+ "\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1" \ -+ "\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4" \ -+ "\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377" \ -+ "\34^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0" \ -+ "\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377" \ -+ "\35^\256\377\37^\253\377\36\\\261\377\370\37^\256\377\20\34[\253\377" \ -+ "#b\262\377\35Z\263\377\35_\266\377\30]\253\377\34Z\255\377'Z\251\377" \ -+ "\14:n\223\0\1\4\0\0\2\0\0\1\0\0\0\3\0\0\0\1\0\5\0\0\0\7\0\1\3\2\0\0\2" \ -+ "\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264" \ -+ "\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377" \ -+ "\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0" \ -+ "\10\1\0\0\0\0\2\2\0\0\3\0\0\3\0\0\0\6\13\36\35\31W\242\377\37\\\254\377" \ -+ "\34]\255\377\230\37^\256\377\20\36]\255\377\36]\254\377\35]\264\377#" \ -+ "[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0" \ -+ "\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377" \ -+ "\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0" \ -+ "\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0" \ -+ "\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260" \ -+ "\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0" \ -+ "\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377" \ -+ "\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377\2" \ -+ "\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\370\37^\256\377\12\35[\256\377\"_\260\377\35Z\263\377\34^\265\377\31" \ -+ "^\253\377%`\254\377'P\220\377\0\27""9F\3\0\0\0\3\2\0\0\202\1\0\0\0\4" \ -+ "\3\0\5\0\1\0\5\0\0\2\1\0\0\3\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31" \ -+ "`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377" \ -+ "\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0" \ -+ "\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\3\0\0\0\0\2\2\0\0\2\0\0\3\0\0\0\6" \ -+ "\11\34\32\31T\240\377\37\\\254\377\36]\254\377\230\37^\256\377\20\36" \ -+ "]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36P\227\315\0" \ -+ "\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251" \ -+ "\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256" \ -+ "\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0" \ -+ "\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10" \ -+ "\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377" \ -+ "\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17" \ -+ "\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377\34^\254" \ -+ "\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0" \ -+ "\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\370\37^\256\377\20\"`\265\377\34Y\252\377" \ -+ "\40\\\262\377\32\\\262\377\35`\256\377+`\242\377\32""7a\201\0\1\20\11" \ -+ "\4\0\0\0\1\0\0\0\0\1\0\0\2\2\2\0\3\1\4\0\3\0\2\0\1\1\1\0\0\3\0\0\210" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H" \ -+ "|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10" \ -+ "\4\0\0\0\0\1\2\0\0\1\0\0\4\0\0\0\5\10\33\32\31U\236\377\37]\252\377\36" \ -+ "]\254\377\230\37^\256\377\20\36]\255\377\36]\254\377\35]\264\377#[\256" \ -+ "\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0" \ -+ "\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10" \ -+ "\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0" \ -+ "\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1" \ -+ "\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7" \ -+ "\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370" \ -+ "\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377\2\13" \ -+ "\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370" \ -+ "\37^\256\377\20\40a\265\377\33X\251\377!_\254\377\32]\254\377\36`\256" \ -+ "\377\32L\201\260\3\24(,\7\0\0\0\4\0\0\0\0\0\0\0\0\2\0\0\0\2\1\0\2\1\0" \ -+ "\0\4\0\1\0\1\0\0\0\0\1\2\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377" \ -+ "\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37" \ -+ "^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3" \ -+ "\0\0\1\0\2\0\270\0\0\0\0\1\4\0\0\0\202\0\1\0\0\5\4\0\0\0\6\11\32\27\32" \ -+ "V\237\377\"]\253\377\36]\254\377\230\37^\256\377\20\36]\255\377\36]\254" \ -+ "\377\35]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0" \ -+ "\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377" \ -+ "\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12" \ -+ ",Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0" \ -+ "\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255" \ -+ "\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0" \ -+ "\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377" \ -+ "\34]\255\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37" \ -+ "W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0" \ -+ "\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36" \ -+ "\\\261\377\370\37^\256\377\20\33]\261\377\36]\255\377\37]\246\377\36" \ -+ "`\256\377\35\\\254\377\2.[x\0\3\7\0\22\0\0\14\5\0\6\0\0\0\4\0\0\5\4\0" \ -+ "\0\3\0\0\1\0\0\0\5\0\0\0\1\0\2\0\0\0\5\0\210\0\0\0\0\10\16'Og\40[\251" \ -+ "\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34" \ -+ "]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0" \ -+ "\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\1\4\0\0\0\202\0\1\0\0\5\4\0" \ -+ "\0\0\7\10\32\27\33W\240\377#^\254\377\36]\254\377\230\37^\256\377\20" \ -+ "\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36P\227\315" \ -+ "\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]" \ -+ "\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\" \ -+ "\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3" \ -+ "\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377" \ -+ "\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263" \ -+ "\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0" \ -+ "\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377\34" \ -+ "^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0" \ -+ "\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35" \ -+ "^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\4\40`\270\377\35]" \ -+ "\264\377\33[\262\377\34]\261\377\202\37]\260\377\202\37]\262\377\10+" \ -+ "_\252\377\31Z\256\377\34c\277\377\"\\\255\377\21""2]{\0\10\15\6\0\1\0" \ -+ "\0\6\4\11\0\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377" \ -+ "\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36" \ -+ "Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270" \ -+ "\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33W\240\377\37" \ -+ "\\\254\377\34]\257\377\230\37^\256\377\20\36]\255\377\36]\254\377\35" \ -+ "]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4" \ -+ "\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37" \ -+ "^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2" \ -+ "\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1" \ -+ "\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377" \ -+ "\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211" \ -+ "\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]" \ -+ "\255\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242" \ -+ "\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14" \ -+ "\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261" \ -+ "\377\360\37^\256\377\17\37Y\252\377\40]\255\377\40_\256\377\37^\255\377" \ -+ "\32[\253\377\33Z\252\377\34[\253\377\36]\255\377\27X\254\377\33]\264" \ -+ "\377$_\255\377\26An\223\0\20!#\0\0\4\0\6\2\3\0\221\0\0\0\0\10\16'Og\40" \ -+ "[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377" \ -+ "\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0" \ -+ "\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0" \ -+ "\0\4\1\0\0\4\7\30\25\33W\240\377\37\\\254\377\34]\257\377\230\37^\256" \ -+ "\377\20\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36" \ -+ "P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16" \ -+ "1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377" \ -+ "\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1" \ -+ "\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4" \ -+ "\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377" \ -+ "\34^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0" \ -+ "\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377" \ -+ "\35^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\17\37^\243\377" \ -+ "\40^\247\377!\\\250\377\36X\251\377\37\\\255\377#b\262\377\37`\260\377" \ -+ "\30[\252\377\34c\277\377#^\254\377\30>k\220\1\23\37\40\0\1\0\0\4\0\0" \ -+ "\0\4\0\1\0\221\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377" \ -+ "\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36" \ -+ "Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270" \ -+ "\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33W\240\377\37" \ -+ "\\\254\377\34]\257\377\230\37^\256\377\20\36]\255\377\36]\254\377\35" \ -+ "]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4" \ -+ "\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37" \ -+ "^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2" \ -+ "\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1" \ -+ "\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377" \ -+ "\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211" \ -+ "\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]" \ -+ "\255\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242" \ -+ "\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14" \ -+ "\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261" \ -+ "\377\360\37^\256\377\20\33_\262\377\34]\255\377!^\256\377(a\260\377%" \ -+ "_\260\377\34Z\255\377\32\\\262\377\34b\272\377$^\257\377\24\77l\220\0" \ -+ "\22\36\35\1\0\0\0\7\0\0\0\6\1\0\0\1\0\0\0\1\1\1\0\220\0\0\0\0\10\16'" \ -+ "Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256" \ -+ "\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0" \ -+ "\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0" \ -+ "\2\0\0\4\1\0\0\4\7\30\25\33W\240\377\37\\\254\377\34]\257\377\230\37" \ -+ "^\256\377\20\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377" \ -+ "\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0" \ -+ "\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]" \ -+ "\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0" \ -+ "\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230" \ -+ "\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0" \ -+ "\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37" \ -+ "]\262\377\34^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0" \ -+ "\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377" \ -+ "\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\20\34" \ -+ "\\\275\377\35^\272\377\32^\263\377\27Z\251\377\32\\\250\377\"_\257\377" \ -+ "%\\\257\377\"V\254\355\16/Zu\0\14\35\35\0\1\0\0\13\3\0\3\5\0\5\0\0\0" \ -+ "\4\0\0\2\0\0\0\1\0\0\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37" \ -+ "\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256" \ -+ "\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0" \ -+ "\1\0\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33" \ -+ "W\240\377\37\\\254\377\34]\257\377\230\37^\256\377\20\36]\255\377\36" \ -+ "]\254\377\35]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0" \ -+ "\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262" \ -+ "\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377" \ -+ "\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0" \ -+ "\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35" \ -+ "_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0" \ -+ "\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251" \ -+ "\377\34]\255\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377" \ -+ "\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0" \ -+ "\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377" \ -+ "\36\\\261\377\360\37^\256\377\20\"[\254\377!_\264\377\32_\272\377\27" \ -+ "^\272\377\40a\265\377)Z\237\377\37@u\236\14#La\0\5\12\0\0\0\4\0\4\0\0" \ -+ "\0\10\3\0\0\0\0\4\0\0\0\14\3\0\3\10\0\1\1\0\0\220\0\0\0\0\10\16'Og\40" \ -+ "[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377" \ -+ "\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0" \ -+ "\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0" \ -+ "\0\4\1\0\0\4\7\30\25\33W\240\377\37\\\254\377\34]\257\377\230\37^\256" \ -+ "\377\20\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36" \ -+ "P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16" \ -+ "1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377" \ -+ "\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1" \ -+ "\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4" \ -+ "\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377" \ -+ "\34^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0" \ -+ "\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377" \ -+ "\35^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\20\40[\237\377" \ -+ "\37[\243\377$_\255\377(]\251\377\36J\207\271\13'Nd\0\12\27\25\0\2\0\0" \ -+ "\0\1\0\0\7\3\4\0\4\0\1\0\1\0\0\0\0\1\0\0\0\2\7\0\0\0\5\0\2\0\1\0\220" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H" \ -+ "|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10" \ -+ "\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33W\240\377\37\\\254\377\34" \ -+ "]\257\377\230\37^\256\377\20\36]\255\377\36]\254\377\35]\264\377#[\256" \ -+ "\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0" \ -+ "\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10" \ -+ "\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0" \ -+ "\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1" \ -+ "\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7" \ -+ "\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370" \ -+ "\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377\2\13" \ -+ "\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\360" \ -+ "\37^\256\377\20\36_\263\377![\244\342\26Ey\244\0\"@O\0\11\26\22\0\3\4" \ -+ "\0\1\2\0\0\4\0\0\0\1\0\4\0\1\1\1\0\0\0\0\0\1\1\1\0\2\3\0\0\1\1\0\0\1" \ -+ "\0\0\0\4\0\17\11\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377" \ -+ "\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0" \ -+ "\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33W\240" \ -+ "\377\37\\\254\377\34]\257\377\230\37^\256\377\20\36]\255\377\36]\254" \ -+ "\377\35]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0" \ -+ "\0\13\3\1\0\2\0\15\4\0\6\7\0\0\0\0\1\11\0\21""2Sl&`\237\377\23^\261\377" \ -+ "\230\35_\253\377\6#]\257\377\32\\\263\377\32]\264\377$Y\235\377\23*T" \ -+ "l\0\0\20\11\202\4\0\5\0\300\0\0\0\0\10\3\0\11\0\0\4\0\0\0\3\0\0\2\0\5" \ -+ "\0\10\0\0\0\4\5\0\0\0\5\27\25\36F\203\263\230\35_\253\377\10\37^\255" \ -+ "\377\35X\264\377\37\\\265\377\30_\255\377\26^\262\377#Y\257\377\36""6" \ -+ "d\204\1\4\0\0\210\0\0\0\0\202\0\0\2\0\6\0\1\0\0\5\3\0\0\0\1\0\0\0\21" \ -+ "&)$a\232\377\10d\273\377\370\35_\253\377\10\40]\256\377\32]\256\377\37" \ -+ "]\264\377-U\232\377\0\11\35\35\5\1\2\0\7\0\5\0\1\0\5\0\210\0\0\0\0\10" \ -+ "\16\0\0\6\0\3\31\27!S\220\377\26`\267\377\22]\272\377\34b\270\377\35" \ -+ "a\262\377\30a\260\377\330\35_\253\377\1\35[\256\377\203\36\\\257\377" \ -+ "\202\37]\260\377\202\40^\261\377\202\40^\251\377\202\40^\253\377\202" \ -+ "\37\\\254\377\202\36[\254\377\20\27_\263\377\31_\264\377\35`\261\377" \ -+ "!^\256\377%^\253\377&Z\245\377\37O\227\315\25D\214\277\35\"6@\13\21\37" \ -+ "\40\0\2\10\0\0\1\0\0\1\3\0\0\2\3\0\0\1\0\0\0\1\0\2\0\230\0\0\0\0\10\1" \ -+ "(Sl']\233\377\33_\262\377\24[\265\377\37]\264\377%^\257\377\34[\253\377" \ -+ "\30`\264\377\230\35_\253\377\10\24`\264\377\27F|\247\0\2\22\14\6\0\0" \ -+ "\0\7\1\0\0\0\1\0\0\0\1\2\0\1\2\6\0\270\0\0\0\0\10\10\0\13\3\0\2\10\0" \ -+ "\0\3\0\0\7\0\0\0\2\10\30\25(U\226\377\27_\263\377\32c\257\377\230\35" \ -+ "_\253\377\20\27`\254\377\33`\255\377\34c\265\377\23_\267\377\25`\263" \ -+ "\377\35P\211\274\0\2\25\22\17\0\0\11\0\0\7\0\0\0\2\0\4\0\0\0\0\0\2\0" \ -+ "\0\2\25\22\14""1^{!]\246\377\25^\272\377\230\36]\255\377\10\35[\256\377" \ -+ "\32`\265\377\35d\264\377&\\\230\377\20.J^\0\1\5\0\3\0\0\0\3\1\0\0\300" \ -+ "\0\0\0\0\10\1\0\7\0\0\2\0\0\0\3\0\0\1\0\5\0\7\0\0\0\1\1\0\0\0\4\22\14" \ -+ "$Fv\377\230\36]\255\377\10\36]\252\377\"[\264\377#\\\263\377\32\\\250" \ -+ "\377\31]\260\377%[\263\377\31""7m\223\0\4\7\0\210\0\0\0\0\10\1\0\0\0" \ -+ "\0\1\3\0\0\0\2\0\1\0\0\0\0\0\5\0\0\16-5(U\230\377\27^\272\377\370\36" \ -+ "]\255\377\10\30\\\255\377\27`\257\377\34`\261\377%X\221\377\0\16\31\27" \ -+ "\0\3\0\0\0\2\0\0\0\4\0\0\210\0\0\0\0\10\10\0\0\0\0\14\35\35)T\211\377" \ -+ "$_\255\377\36[\256\377\"Y\253\377#Z\254\377\"\\\256\377\330\36]\255\377" \ -+ "\203!^\257\377\2\40]\256\377\37\\\255\377\203\36[\254\377\30\24Z\262" \ -+ "\377\25[\263\377\31\\\263\377\33]\263\377\35^\262\377\40]\260\377\40" \ -+ "]\256\377![\254\377'Z\255\377\"R\236\377\33D\206\266\24""6f\207\16(I" \ -+ "^\7\32+2\0\12\20\11\0\3\2\0\0\3\21\14\0\0\13\3\0\1\4\0\0\3\0\0\1\3\0" \ -+ "\0\1\1\0\0\1\0\0\0\2\0\5\0\230\0\0\0\0\10\5+Xr)]\231\377\40c\262\377" \ -+ "\34_\266\377!^\257\377#[\246\377\34Z\245\377\32_\255\377\230\36]\255" \ -+ "\377\10\37]\264\377\35A\177\377\0\0\33\32\4\0\2\0\6\1\0\0\1\2\4\0\0\4" \ -+ "\7\0\2\2\4\0\270\0\0\0\0\10\6\0\0\0\0\3\2\0\0\4\0\0\0\2\0\0\0\16%)'Y" \ -+ "\240\377\26_\273\377\24\\\260\377\230\36]\255\377\11![\257\377\"Y\253" \ -+ "\377\"Y\254\377\36Z\260\377#^\254\377&Q\206\377\0\12\33\32\11\0\0\0\2" \ -+ "\3\5\0\202\0\0\0\0\5\0\0\5\0\0\6\30\25\25.Vo.T\222\377.\\\247\345\230" \ -+ "!]\265\371\10'W\254\355#[\260\363\"\\\255\355\"R\220\304\16,Nd\0\11\22" \ -+ "\14\0\10\4\0\0\6\0\0\300\0\0\0\0\10\0\0\4\0\0\2\0\0\0\4\0\0\5\2\13\3" \ -+ "\7\0\2\0\10\3\0\0\0\12\16\6$=\\x\230!]\265\371\10\34]\235\326\"]\251" \ -+ "\350(`\252\352#c\243\337\37b\250\350\"[\252\352\21:r\230\0\14!#\210\0" \ -+ "\0\0\0\10\5\1\0\0\0\1\3\0\0\2\5\0\0\0\2\0\5\2\11\0\20\26,25P\177\255" \ -+ "2]\241\334\370!]\265\371\10*W\262\366(\\\262\366'W\254\355)L\214\277" \ -+ "\0\21)/\0\5\11\0\0\1\2\0\0\3\2\0\210\0\0\0\0\10\0\2\22\14\0\22""4>\33" \ -+ "L\207\271\"[\250\350(]\255\355(Y\250\350'Z\253\352\"Z\255\355\330!]\265" \ -+ "\371\26!]\245\342\40\\\244\342\37[\243\337\36Z\242\337\35Y\241\334\34" \ -+ "X\240\334\33W\237\331\32V\236\331!M\212\274\40J\206\266\35F~\252\30=" \ -+ "q\230\23""5c\204\13*Vo\7#Ka\2\36EX\4\12\26\22\0\7\21\14\0\3\13\3\0\1" \ -+ "\7\0\0\1\5\0\0\1\4\0\202\0\1\2\0\10\0\1\7\0\0\1\4\0\0\3\2\0\1\3\0\0\0" \ -+ "\1\0\0\0\0\0\0\1\0\2\0\1\0\4\0\230\0\0\0\0\10\6.k\220\35Q\232\323\32" \ -+ "X\257\360\33[\265\371\40Y\260\363#Z\252\352\"]\253\352\35`\261\363\230" \ -+ "!]\265\371\10/Y\225\312(Aj\215\0\5\30\25\3\0\2\0\1\0\0\0\0\1\4\0\0\0" \ -+ "\2\0\3\0\0\0\270\0\0\0\0\10\12\2\0\0\0\4\3\0\0\4\0\0\0\0\2\0\0\11*/'" \ -+ "I\221\304'V\256\3600[\252\352\230!]\265\371\20\"\\\246\345&Z\245\342" \ -+ "'Y\242\337']\247\345!\\\240\377\31K\200\255\0\22.5\0\3\13\3\0\0\0\0\0" \ -+ "\1\0\0\4\3\0\0\4\0\0\0\1\0\2\0\2\2\16\6\0\1\26\22\0\0\31\27\230\0\3\0" \ -+ "\0\10\0\1\0\0\0\3\7\0\0\7\17\11\0\12\22\14\0\1\4\0\4\0\0\0\5\0\0\0\1" \ -+ "\0\2\0\300\0\0\0\0\10\1\1\1\0\0\5\0\0\0\4\3\0\1\0\11\0\7\0\4\0\6\0\0" \ -+ "\0\0\1\0\0\0\11\31\27\230\0\3\0\0\10\0\12\1\0\0\1\4\0\0\0\2\0\0\2\0\0" \ -+ "\0\3\0\0\0\3\13\3\6\2\0\0\12\0\0\0\210\0\0\0\0\10\3\0\0\0\0\0\0\0\0\4" \ -+ "\5\0\0\1\0\0\1\1\0\0\0\1\0\0\0\5\15\6\0\4\27\25\370\0\3\0\0\10\0\3\5" \ -+ "\0\0\6\12\0\0\7\20\11\0\16\25\22\0\2\0\0\1\0\0\0\0\0\0\0\0\1\4\0\210" \ -+ "\0\0\0\0\10\12\1\0\0\1\1\0\0\0\10\13\3\0\2\13\3\0\1\7\0\0\1\2\0\0\5\7" \ -+ "\0\0\6\12\0\330\0\3\0\0\202\0\4\4\0\202\0\3\3\0\204\0\2\2\0\6\0\1\14" \ -+ "\3\0\2\13\3\0\1\7\0\0\2\5\0\0\2\1\0\1\2\0\0\202\1\1\0\0\2\4\5\0\0\1\2" \ -+ "\0\0\203\0\1\0\0\202\0\0\0\0\11\1\1\1\0\0\3\2\0\0\5\1\0\1\3\0\0\0\2\0" \ -+ "\0\0\1\0\0\1\1\0\0\2\2\4\0\2\0\5\0\230\0\0\0\0\10\7\0\0\0\5\6\1\0\0\4" \ -+ "\11\0\0\3\12\0\0\2\5\0\0\1\0\0\0\2\0\0\0\4\0\0\230\0\3\0\0\10\0\6\22" \ -+ "\14\0\11\14\3\0\2\0\0\1\3\0\0\3\6\0\0\1\5\4\0\2\2\2\0\4\0\0\0\270\0\0" \ -+ "\0\0\10\7\0\5\0\0\0\5\0\0\4\0\0\6\4\0\0\1\0\0\0\0\12\26\22\0\3\16\6\0" \ -+ "\4\2\0\230\0\3\0\0\20\0\5\16\6\0\3\11\0\0\0\7\0\0\0\13\3\0\2\16\6\0\7" \ -+ "\17\11\1\0\0\0\11\0\0\0\0\0\0\0\1\1\0\0\1\0\0\0\3\0\0\0\4\1\0\0\6\2\0" \ -+ "\0\10\1\0\0\7\0\0\0\230\4\0\0\0\3\6\2\0\0\0\1\0\0\0\2\0\0\202\0\1\0\0" \ -+ "\3\0\0\0\0\2\4\3\0\0\1\4\0\301\0\0\0\0\7\0\1\0\0\0\1\3\0\1\0\11\0\5\0" \ -+ "\5\0\14\7\3\3\0\1\0\0\0\1\5\0\230\4\0\0\0\10\0\0\2\0\4\0\11\0\7\0\10" \ -+ "\0\11\0\5\0\3\0\5\0\1\0\14\3\4\0\11\0\11\0\0\0\210\0\0\0\0\10\5\1\0\0" \ -+ "\0\0\0\0\0\2\3\0\0\2\0\0\1\2\0\0\2\2\0\0\0\1\0\0\0\2\0\0\370\4\0\0\0" \ -+ "\10\7\0\0\0\4\0\0\0\1\0\0\0\6\2\1\0\6\0\0\0\14\3\6\3\4\0\3\0\1\0\6\0" \ -+ "\210\0\0\0\0\10\4\0\0\0\1\0\2\0\0\0\5\0\1\0\4\0\10\2\4\0\7\0\0\0\5\1" \ -+ "\0\0\0\0\2\0\330\4\0\0\0\207\4\0\7\0\2\5\0\10\0\4\0\0\0\202\2\1\0\0\202" \ -+ "\1\2\0\0\202\0\3\0\0\11\0\4\0\0\0\1\11\0\0\0\11\0\0\0\5\0\0\1\3\0\0\0" \ -+ "\0\0\1\0\0\0\3\0\0\0\4\2\0\0\204\0\1\0\0\4\0\0\0\0\3\3\3\0\1\1\3\0\0" \ -+ "\0\4\0\230\0\0\0\0\2\14\0\0\3\10\0\4\0\202\1\0\5\0\4\4\0\2\0\6\0\0\0" \ -+ "\7\1\1\0\1\0\0\0\230\4\0\0\0\10\0\4\0\0\2\10\0\0\0\2\0\0\1\2\0\0\0\2" \ -+ "\0\0\0\1\0\0\2\1\0\0\6\0\0\0\270\0\0\0\0\10\4\0\4\0\0\0\7\0\0\2\5\0\6" \ -+ "\2\0\0\3\0\0\0\0\0\5\0\1\0\0\0\12\0\0\0\230\4\0\0\0\13\0\1\0\0\4\1\0" \ -+ "\0\6\0\0\0\7\2\0\0\1\0\0\0\0\1\0\0\1\0\0\0\3\0\0\0\1\2\4\0\0\1\3\0\0" \ -+ "\1\0\0\203\0\2\0\0\202\0\3\0\0\230\0\0\4\0\10\3\0\0\0\4\1\0\0\1\0\0\0" \ -+ "\3\0\0\0\6\0\0\0\10\0\1\0\10\0\3\0\6\0\4\0\300\0\0\0\0\10\1\1\1\0\0\0" \ -+ "\0\0\0\1\0\0\0\0\5\0\2\0\5\0\1\0\0\0\0\1\0\0\1\1\1\0\230\0\0\4\0\3\0" \ -+ "\3\0\0\0\2\1\0\2\3\5\0\203\0\2\0\0\2\0\1\2\0\0\1\0\0\210\0\0\0\0\3\3" \ -+ "\0\0\0\0\0\0\0\0\1\5\0\202\0\0\5\0\3\1\0\5\0\3\0\5\0\6\1\10\0\370\0\0" \ -+ "\4\0\10\1\2\0\0\1\3\0\0\0\2\0\0\0\1\0\0\1\0\4\0\4\0\5\0\3\0\0\0\3\0\4" \ -+ "\0\210\0\0\0\0\203\0\1\0\0\5\3\0\0\0\6\1\0\0\4\0\0\0\3\0\0\0\1\0\4\0" \ -+ "\330\0\0\4\0\210\0\1\0\0\6\4\0\0\0\3\0\0\0\1\0\2\0\0\0\2\0\0\0\4\0\0" \ -+ "\1\4\0\202\0\2\5\0\2\7\0\0\0\6\0\0\0\202\4\0\0\0\7\1\0\0\0\0\0\2\0\0" \ -+ "\0\4\0\0\3\6\0\0\1\0\0\1\1\0\0\2\2\0\0\204\0\0\0\0\1\0\0\2\0\230\0\0" \ -+ "\0\0\4\0\2\0\0\0\1\0\0\0\3\2\0\0\2\0\0\202\0\1\0\0\2\1\3\0\0\0\3\0\0" \ -+ "\230\0\0\4\0\3\2\0\6\0\3\1\6\0\0\0\4\0\202\0\0\5\0\3\0\0\4\0\3\1\2\0" \ -+ "\4\0\0\0\270\0\0\0\0\1\1\0\0\0\204\0\2\0\0\3\0\6\0\0\0\5\0\0\0\3\0\0" \ -+ "\230\0\0\4\0\10\1\0\7\0\3\0\5\0\4\0\2\0\5\0\1\0\3\0\0\0\0\0\0\0\0\2\1" \ -+ "\0\0\1\0\0\202\0\2\5\0\6\0\0\2\0\0\1\3\0\1\2\4\0\0\1\2\0\0\2\4\0\0\3" \ -+ "\5\0\230\0\2\0\0\4\0\2\11\0\0\3\10\0\0\2\5\0\0\2\0\0\202\0\3\0\0\2\0" \ -+ "\2\0\0\0\4\0\0\300\0\0\0\0\5\3\1\4\0\1\0\0\0\0\0\0\0\0\1\2\0\0\2\3\0" \ -+ "\202\0\1\0\0\1\3\3\5\0\231\0\2\0\0\7\0\4\7\0\0\0\11\0\0\2\5\0\0\4\0\0" \ -+ "\0\5\0\0\0\1\0\0\0\1\2\0\210\0\0\0\0\202\1\0\0\0\6\0\0\2\0\2\1\7\0\0" \ -+ "\0\10\0\0\0\7\0\1\0\6\0\2\0\5\0\370\0\2\0\0\202\0\0\14\3\6\0\1\0\0\0" \ -+ "\2\0\0\0\1\6\0\0\0\2\0\2\4\0\0\3\5\0\0\210\0\0\0\0\10\0\0\7\0\0\0\5\0" \ -+ "\0\0\4\0\1\0\4\0\0\0\5\0\0\0\7\0\0\0\13\3\2\0\15\6\330\0\2\0\0\210\0" \ -+ "\1\0\0\202\4\0\0\0\202\3\0\0\0\6\1\0\2\0\2\0\3\0\2\0\5\0\1\0\5\0\4\0" \ -+ "\2\0\3\0\2\0\203\3\0\0\0\1\1\0\0\0\202\2\1\0\0\3\1\0\0\0\2\0\1\0\2\0" \ -+ "\3\0\202\0\0\2\0\3\0\0\0\0\3\3\3\0\5\5\3\0\230\0\0\0\0\202\0\4\0\0\4" \ -+ "\0\6\0\0\0\3\0\0\0\5\0\0\0\2\0\0\202\0\3\0\0\230\0\2\0\0\10\5\0\6\0\1" \ -+ "\0\5\0\1\0\10\0\1\0\6\0\1\0\5\0\3\1\4\0\2\1\0\0\1\0\0\0\270\0\0\0\0\10" \ -+ "\1\4\0\0\0\3\0\0\0\2\3\0\0\0\4\0\2\2\12\0\0\1\15\6\0\3\22\14\0\0\16\6" \ -+ "\230\0\2\0\0\14\2\0\13\3\0\0\7\0\0\0\5\0\0\0\2\0\1\0\2\0\1\1\3\0\0\0" \ -+ "\2\0\0\1\4\0\0\2\5\0\0\0\2\0\3\0\0\0\6\0\0\0\202\7\0\0\0\2\6\0\0\0\4" \ -+ "\0\2\0\231\3\0\0\0\7\5\0\0\0\6\0\0\0\4\0\0\0\2\0\3\0\0\1\6\0\0\0\7\0" \ -+ "\0\1\10\0\300\0\0\0\0\10\3\0\4\0\2\0\1\0\0\0\0\0\0\2\0\0\0\6\3\0\0\3" \ -+ "\3\0\0\2\5\0\0\0\4\0\230\3\0\0\0\10\7\0\0\0\4\0\4\0\0\0\13\3\1\1\11\0" \ -+ "\5\5\3\0\3\0\0\0\4\0\0\0\7\1\3\0\210\0\0\0\0\4\3\3\3\0\4\3\1\0\1\0\0" \ -+ "\0\0\1\0\0\202\0\2\0\0\2\0\4\0\0\0\3\0\0\370\3\0\0\0\4\4\0\1\0\4\0\2" \ -+ "\0\5\2\0\0\1\1\0\0\202\0\0\14\3\202\0\1\2\0\210\0\0\0\0\10\0\0\2\0\0" \ -+ "\0\0\0\2\3\0\0\1\2\0\0\0\2\0\0\0\6\0\0\0\2\0\0\0\3\0\0\334\3\0\0\0\204" \ -+ "\4\0\0\0\202\0\2\0\0\1\0\1\0\0\202\0\2\1\0\1\0\0\0\0\202\1\0\0\0\3\0" \ -+ "\1\0\0\0\2\1\0\1\3\2\0\202\0\0\2\0\202\0\0\4\0\2\0\0\5\0\2\0\3\0\202" \ -+ "\1\0\4\0\3\2\0\5\0\1\0\5\0\0\0\2\0\232\0\0\0\0\10\1\4\13\3\0\0\5\0\3" \ -+ "\0\2\0\4\0\2\0\7\0\7\0\3\0\7\0\5\0\12\0\4\0\13\3\230\3\0\0\0\3\6\4\0" \ -+ "\0\1\1\0\0\2\3\0\0\202\1\0\0\0\2\4\0\0\0\3\2\0\0\271\0\0\0\0\10\0\4\3" \ -+ "\0\0\0\2\0\2\0\3\0\4\0\0\0\13\1\0\3\7\0\0\0\11\0\0\0\12\0\0\0\230\3\0" \ -+ "\0\0\202\0\2\0\0\6\1\6\0\0\0\2\0\0\0\1\0\0\3\4\0\0\0\0\0\0\0\0\4\0") -+ -+ diff --git a/buildroot-external/patches/psplash/hzdr/logo.png b/buildroot-external/patches/psplash/logo-hzdr.png similarity index 100% rename from buildroot-external/patches/psplash/hzdr/logo.png rename to buildroot-external/patches/psplash/logo-hzdr.png diff --git a/buildroot-external/patches/psplash/thinroot/logo.png b/buildroot-external/patches/psplash/logo-thinroot.png similarity index 100% rename from buildroot-external/patches/psplash/thinroot/logo.png rename to buildroot-external/patches/psplash/logo-thinroot.png diff --git a/buildroot-external/patches/psplash/thinroot/0001-logo.patch b/buildroot-external/patches/psplash/thinroot/0001-logo.patch deleted file mode 100644 index bdde4b6..0000000 --- a/buildroot-external/patches/psplash/thinroot/0001-logo.patch +++ /dev/null @@ -1,1308 +0,0 @@ ---- psplash/psplash-poky-img.h.orig -+++ psplash/psplash-poky-img.h -@@ -0,0 +1,1305 @@ -+/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ -+ -+#define POKY_IMG_ROWSTRIDE (1356) -+#define POKY_IMG_WIDTH (339) -+#define POKY_IMG_HEIGHT (104) -+#define POKY_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */ -+#define POKY_IMG_RLE_PIXEL_DATA ((uint8*) \ -+ "\377\377\377\377\0\225\377\377\377\0\207\323\312\302\0""2\323\312\303" \ -+ "\0\322\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307\252}\0\322\276" \ -+ "\241\0\323\267\206\0\323\265\201\0\325\271\206\0\327\272\202\0\333\272" \ -+ "x\0\320\264\201\0\305\253\202\0\312\242X\0\327\272\177\0\335\271i\0\341" \ -+ "\302\177\2\350\304q\33\353\317\2208\360\310jD\366\315lB\373\324b\36\371" \ -+ "\325s\0\365\317o\11\372\342t:\357\311VO\356\300M\207\371\305/\234\373" \ -+ "\316<\231\370\326d{\370\327rL\371\326k\37\370\325\206\0\372\327r\0\372" \ -+ "\330z\0\373\327l\0\372\331o\0\373\332d\0\371\335\222\0\371\335\215\0" \ -+ "\372\331}\0\367\331\226\0\371\330\207\0\365\330\235\0\370\327\214\0\373" \ -+ "\325|\0\366\330\226\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377" \ -+ "\377\377\377\0\377\377\377\377\0\213\377\377\377\0\207\323\312\302\0" \ -+ "2\323\312\303\0\322\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307" \ -+ "\252}\0\322\276\241\0\323\267\206\0\323\265\201\0\325\271\206\0\327\272" \ -+ "\202\0\333\272x\0\320\264\201\0\305\253\202\0\312\242X\0\327\274\206" \ -+ "\26\336\270bf\346\274P\252\362\3019\323\372\305'\360\375\314!\370\375" \ -+ "\320#\370\375\3242\326\373\325J\234\372\317M\263\376\332&\363\372\320" \ -+ "6\375\372\3055\377\376\312\40\377\376\314\5\377\377\315\0\377\377\322" \ -+ "\20\375\374\3304\331\373\326Y\237\372\327pQ\372\330\177\10\373\327m\0" \ -+ "\372\331o\0\373\332d\0\371\335\222\0\371\335\215\0\372\331}\0\367\331" \ -+ "\226\0\371\330\207\0\365\330\235\0\370\327\214\0\373\325|\0\366\330\226" \ -+ "\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377\377\377\377\0\377" \ -+ "\377\377\377\0\213\377\377\377\0\207\323\312\302\0""2\323\312\303\0\322" \ -+ "\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307\252}\0\322\276\241" \ -+ "\0\323\267\206\0\323\265\201\0\325\271\206\0\327\272\202\0\333\272x\0" \ -+ "\320\264\202\0\303\251\202\5\311\241Yb\317\234-\327\332\237\17\377\351" \ -+ "\253\1\377\372\276\0\377\377\313\0\377\376\320\0\377\376\325\0\377\376" \ -+ "\331\0\377\376\333\4\377\376\333\23\377\376\330'\377\377\327-\377\377" \ -+ "\331'\377\376\330.\377\375\327-\377\376\326\30\377\376\324\0\377\377" \ -+ "\325\0\377\376\334\7\377\376\335&\371\375\331M\304\372\327lM\372\331" \ -+ "r\2\373\332d\0\371\335\222\0\371\335\215\0\372\331}\0\367\331\226\0\371" \ -+ "\330\207\0\365\330\235\0\370\327\214\0\373\325|\0\366\330\226\0\365\336" \ -+ "\257\0\363\337\273\0\221\363\337\272\0\377\377\377\377\0\377\377\377" \ -+ "\377\0\213\377\377\377\0\207\323\312\302\0""2\323\312\303\0\322\310\275" \ -+ "\0\277\252\215\0\272\234k\0\275\235j\0\307\252}\0\322\276\241\0\323\267" \ -+ "\206\0\323\265\201\0\325\271\206\0\327\272\202\0\333\272x\0\320\266\207" \ -+ "\37\311\246g\256\333\253B\377\352\264)\377\361\270\23\377\356\262\2\377" \ -+ "\356\257\0\377\372\300\1\377\376\321\0\377\376\326\1\377\376\334\0\377" \ -+ "\376\337\0\377\376\341\2\377\376\341\11\377\376\336\32\377\375\335\36" \ -+ "\377\376\337\16\377\376\337\24\377\376\336\35\377\376\336\32\377\376" \ -+ "\334\6\377\376\332\0\377\376\337\0\377\376\341\16\377\375\335*\374\374" \ -+ "\332S\246\373\332i%\371\335\225\0\371\335\215\0\372\331}\0\367\331\226" \ -+ "\0\371\330\207\0\365\330\235\0\370\327\214\0\373\325|\0\366\330\226\0" \ -+ "\365\336\257\0\363\337\273\0\221\363\337\272\0\377\377\377\377\0\377" \ -+ "\377\377\377\0\213\377\377\377\0\207\323\312\302\0""2\323\312\303\0\322" \ -+ "\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307\252}\0\322\276\241" \ -+ "\0\323\267\206\0\323\265\201\0\325\271\210\0\327\272\205\1\332\271{P" \ -+ "\336\264V\325\354\2703\377\370\300\40\377\376\306\22\377\377\314\14\377" \ -+ "\376\317\5\377\372\305\1\377\366\266\0\377\374\304\1\377\376\327\1\377" \ -+ "\375\333\0\377\376\336\1\377\376\342\5\377\376\343\4\377\375\344\6\377" \ -+ "\376\342\25\377\375\337\30\377\375\342\11\377\376\342\10\377\376\342" \ -+ "\17\377\376\342\16\377\375\340\5\377\376\332\0\377\376\342\3\377\376" \ -+ "\344\21\377\376\341\36\377\375\335>\334\373\334\177S\371\335\223\0\372" \ -+ "\331}\0\367\331\226\0\371\330\207\0\365\330\235\0\370\327\214\0\373\325" \ -+ "|\0\366\330\226\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377\377" \ -+ "\377\377\0\377\377\377\377\0\213\377\377\377\0\207\323\312\302\0""2\323" \ -+ "\312\303\0\322\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307\252" \ -+ "}\0\322\276\241\0\323\267\206\0\323\266\206\0\324\267\2065\332\260X\257" \ -+ "\346\262/\372\364\271\25\377\374\301\13\377\376\306\3\377\376\312\0\377" \ -+ "\376\315\0\377\376\322\0\377\377\327\4\377\375\317\2\377\374\275\0\377" \ -+ "\376\312\0\377\376\334\0\377\376\336\1\377\376\342\4\377\376\344\7\377" \ -+ "\376\346\12\377\376\350\13\377\376\347\20\377\376\343\24\377\376\344" \ -+ "\15\377\375\345\10\377\376\345\15\377\376\345\14\377\376\336\2\377\376" \ -+ "\331\1\377\376\346\12\377\376\346\20\377\376\343\26\377\377\337*\371" \ -+ "\373\334m\205\372\331\205\16\366\331\231\0\371\330\207\0\365\330\235" \ -+ "\0\370\327\214\0\373\325|\0\366\330\226\0\365\336\257\0\363\337\273\0" \ -+ "\221\363\337\272\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377" \ -+ "\0\207\323\312\302\0\34\323\312\303\0\322\310\275\0\277\252\215\0\272" \ -+ "\234k\0\275\235j\0\307\252}\0\322\277\243\0\323\271\217\22\322\254f\213" \ -+ "\334\2515\363\352\261\22\377\366\273\5\377\375\300\0\377\377\306\0\377" \ -+ "\377\312\1\377\376\316\0\377\376\321\0\377\376\324\2\377\376\330\2\377" \ -+ "\375\335\1\377\376\323\0\377\376\302\1\377\376\321\0\377\376\337\1\377" \ -+ "\375\341\3\377\375\344\10\377\376\347\15\377\376\350\20\377\202\376\351" \ -+ "\21\377\24\376\350\21\377\376\347\16\377\376\350\14\377\377\352\14\377" \ -+ "\376\343\6\377\376\325\1\377\376\346\12\377\376\352\21\377\376\347\23" \ -+ "\377\376\345\23\377\376\340\36\377\374\332^\306\370\327\217G\370\330" \ -+ "\212\0\365\330\235\0\370\327\214\0\373\325|\0\366\330\226\0\365\336\257" \ -+ "\0\363\337\273\0\221\363\337\272\0\377\377\377\377\0\377\377\377\377" \ -+ "\0\213\377\377\377\0\207\323\312\302\0""2\323\312\303\0\322\310\275\0" \ -+ "\277\252\215\0\272\234k\0\275\235j\0\307\254\202\0\317\267\2235\321\250" \ -+ "S\302\335\245\31\377\353\261\6\377\364\271\0\377\373\277\0\377\376\304" \ -+ "\0\377\376\311\1\377\376\314\0\377\376\320\1\377\376\323\1\377\376\326" \ -+ "\1\377\376\331\1\377\376\334\1\377\376\341\1\377\376\321\1\377\376\306" \ -+ "\0\377\376\332\3\377\375\341\3\377\375\343\7\377\376\346\15\377\376\351" \ -+ "\22\377\376\352\24\377\376\353\27\377\375\354\32\377\375\353\31\377\376" \ -+ "\352\22\377\376\352\21\377\376\344\14\377\376\341\14\377\376\352\16\377" \ -+ "\375\353\23\377\376\353\26\377\376\350\21\377\376\346\20\377\376\341" \ -+ "\35\377\376\330M\362\372\327\177\204\364\330\240\4\370\327\215\0\373" \ -+ "\325|\0\366\330\226\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377" \ -+ "\377\377\377\0\377\377\377\377\0\213\377\377\377\0\207\323\312\302\0" \ -+ "\36\323\312\303\0\322\310\275\0\277\252\215\0\272\234k\0\275\237n\0\305" \ -+ "\246u]\315\2358\352\334\243\12\377\352\260\0\377\364\270\0\377\371\276" \ -+ "\0\377\375\302\1\377\376\306\2\377\376\313\1\377\376\316\0\377\376\321" \ -+ "\0\377\376\324\0\377\376\330\0\377\375\332\0\377\376\333\0\377\376\337" \ -+ "\2\377\376\341\2\377\376\314\0\377\376\316\1\377\376\340\5\377\376\342" \ -+ "\3\377\376\345\16\377\375\351\22\377\375\352\23\377\375\353\27\377\203" \ -+ "\375\354\30\377\21\376\353\25\377\376\354\20\377\376\354\16\377\376\353" \ -+ "\20\377\375\355\25\377\375\354\30\377\376\353\24\377\376\350\17\377\376" \ -+ "\347\15\377\376\341\40\377\376\331D\377\373\326q\252\370\327\214\33\373" \ -+ "\325}\0\366\330\226\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377" \ -+ "\377\377\377\0\377\377\377\377\0\213\377\377\377\0\207\323\312\302\0" \ -+ "2\323\312\303\0\322\310\275\0\277\252\215\0\272\235o\0\276\233bg\311" \ -+ "\227+\365\331\237\4\377\346\253\0\377\357\264\0\377\367\273\0\377\374" \ -+ "\300\0\377\376\305\0\377\376\311\2\377\376\314\0\377\375\317\0\377\376" \ -+ "\322\0\377\376\326\0\377\376\330\1\377\376\332\0\377\376\334\1\377\376" \ -+ "\335\1\377\376\342\3\377\375\334\2\377\376\311\0\377\376\327\4\377\376" \ -+ "\344\31\377\376\3472\377\376\356:\377\376\3565\377\375\3571\377\375\357" \ -+ "-\377\376\357*\377\375\356%\377\376\356\40\377\375\355\31\377\375\355" \ -+ "\27\377\376\356\32\377\376\356\33\377\375\356\32\377\375\354\30\377\376" \ -+ "\353\24\377\376\351\21\377\376\346\16\377\375\337$\377\376\331>\377\374" \ -+ "\326c\307\372\325|#\365\330\230\0\365\336\257\0\363\337\273\0\221\363" \ -+ "\337\272\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\207" \ -+ "\323\312\302\0\35\323\312\303\0\322\310\275\0\300\254\222\0\272\230c" \ -+ "m\302\220#\371\325\232\0\377\342\246\0\377\353\257\1\377\362\266\1\377" \ -+ "\371\275\1\377\375\301\0\377\377\305\1\377\376\311\0\377\376\314\0\377" \ -+ "\376\317\0\377\376\322\1\377\376\326\1\377\376\330\0\377\375\332\0\377" \ -+ "\376\335\0\377\376\336\1\377\376\341\4\377\376\344\15\377\375\322\1\377" \ -+ "\376\314\0\377\376\3452\377\376\355S\377\376\362\\\377\376\365b\377\202" \ -+ "\376\366d\377\6\376\370c\377\376\370`\377\376\367X\377\376\363I\377\376" \ -+ "\3605\377\376\356$\377\202\376\356\36\377\13\375\355\34\377\376\354\30" \ -+ "\377\376\354\26\377\376\351\20\377\376\344\21\377\375\336)\377\375\330" \ -+ ";\377\375\325Z\314\366\330\225(\365\336\262\0\363\337\273\0\221\363\337" \ -+ "\272\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\210\323" \ -+ "\312\302\0""3\324\313\303\0\273\242~e\272\211\"\377\316\223\0\377\333" \ -+ "\240\0\377\346\251\1\377\355\261\1\377\362\266\1\377\371\275\1\377\375" \ -+ "\301\0\377\376\305\1\377\376\311\0\377\376\314\1\377\375\316\0\377\376" \ -+ "\322\1\377\376\325\1\377\376\330\1\377\375\333\1\377\376\334\1\377\376" \ -+ "\335\0\377\376\340\20\377\376\350;\377\375\344.\377\376\311\0\377\376" \ -+ "\332\26\377\375\360X\377\376\361^\377\376\366h\377\376\370m\377\376\371" \ -+ "o\377\376\372q\377\376\373r\377\376\373q\377\376\373p\377\376\371i\377" \ -+ "\375\366Y\377\376\362=\377\376\356'\377\376\355\36\377\375\354\33\377" \ -+ "\376\354\31\377\376\352\25\377\376\350\20\377\375\342\24\377\375\333" \ -+ "*\377\376\3279\377\376\324[\322\366\335\250*\362\340\301\0\363\337\273" \ -+ "\0\363\337\272\0\217\363\337\273\0\377\377\377\377\0\377\377\377\377" \ -+ "\0\213\377\377\377\0\206\324\313\303\0""5\323\313\303\0\326\316\311\0" \ -+ "\307\270\245E\261\203-\357\304\211\0\377\324\227\0\377\336\241\1\377" \ -+ "\350\252\0\377\356\262\0\377\363\267\0\377\371\274\0\377\375\300\0\377" \ -+ "\376\305\0\377\375\310\0\377\377\313\1\377\376\315\0\377\376\321\0\377" \ -+ "\376\324\1\377\376\327\0\377\375\331\0\377\375\333\0\377\376\335\10\377" \ -+ "\376\3423\377\376\350N\377\376\360Y\377\376\326\25\377\376\313\1\377" \ -+ "\375\354I\377\376\363g\377\376\366h\377\376\371o\377\376\373t\377\376" \ -+ "\373u\377\376\373v\377\376\373w\377\376\373u\377\376\372s\377\376\372" \ -+ "q\377\376\372j\377\376\365T\377\377\3603\377\376\354\36\377\375\354\32" \ -+ "\377\375\353\30\377\376\351\25\377\376\345\16\377\376\336\22\377\376" \ -+ "\332)\377\377\3267\377\374\325i\311\365\332\242\33\363\336\262\0\363" \ -+ "\337\266\0\217\363\337\265\0\377\377\377\377\0\377\377\377\377\0\213" \ -+ "\377\377\377\0\206\306\267\252\0""5\307\271\255\0\304\267\252\32\254" \ -+ "\207I\320\264|\0\377\312\216\0\377\326\230\1\377\340\242\1\377\351\253" \ -+ "\0\377\356\261\1\377\363\266\0\377\370\274\1\377\375\300\0\377\376\304" \ -+ "\1\377\376\310\0\377\376\313\1\377\376\315\0\377\376\317\0\377\376\323" \ -+ "\1\377\376\326\0\377\375\331\0\377\376\332\0\377\375\337\"\377\376\345" \ -+ "G\377\376\347K\377\376\361b\377\375\350E\377\376\306\0\377\376\337*\377" \ -+ "\376\364j\377\375\364h\377\376\370p\377\376\372w\377\376\373x\377\376" \ -+ "\373z\377\376\373{\377\376\373z\377\376\373x\377\376\372u\377\376\372" \ -+ "s\377\376\372n\377\376\367b\377\376\361E\377\375\354%\377\375\353\30" \ -+ "\377\376\351\25\377\376\347\21\377\376\341\12\377\376\334\24\377\376" \ -+ "\330'\377\377\3247\377\373\322k\246\363\336\261\4\363\337\264\0\217\363" \ -+ "\336\256\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\205" \ -+ "\306\270\253\0\"\307\270\254\0\307\272\260\0\260\226s\213\245q\11\377" \ -+ "\275\203\0\377\314\220\0\377\327\231\0\377\340\242\1\377\350\252\1\377" \ -+ "\356\260\0\377\363\265\0\377\367\273\0\377\374\277\0\377\376\303\0\377" \ -+ "\376\307\0\377\376\312\1\377\376\314\0\377\375\316\0\377\377\322\1\377" \ -+ "\376\324\1\377\376\327\0\377\375\332\10\377\375\3409\377\376\346L\377" \ -+ "\376\347O\377\375\354Y\377\376\363d\377\376\317\20\377\376\320\22\377" \ -+ "\376\361b\377\376\364j\377\376\367n\377\376\371w\377\376\372}\377\203" \ -+ "\376\373~\377\22\376\373|\377\376\373y\377\376\372w\377\376\372r\377" \ -+ "\376\371k\377\375\367b\377\376\363P\377\375\354&\377\375\351\24\377\376" \ -+ "\350\22\377\376\345\15\377\376\337\15\377\376\331\32\377\376\327*\377" \ -+ "\377\321\77\377\366\331\222l\363\337\266\0\363\344\303\0\216\363\344" \ -+ "\302\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\205\314" \ -+ "\300\266\0""7\315\302\272\0\306\271\2556\234s*\362\254t\0\377\300\205" \ -+ "\0\377\316\217\0\377\327\231\0\377\337\241\2\377\346\250\1\377\354\256" \ -+ "\0\377\361\263\1\377\365\271\0\377\372\276\1\377\375\301\0\377\376\305" \ -+ "\0\377\376\310\0\377\376\313\1\377\376\314\0\377\376\320\0\377\377\322" \ -+ "\0\377\376\325\0\377\376\331\26\377\376\340A\377\376\344K\377\376\347" \ -+ "Q\377\375\351V\377\376\362h\377\376\3379\377\376\304\2\377\376\351P\377" \ -+ "\376\365l\377\375\365l\377\376\370u\377\376\371}\377\376\372~\377\375" \ -+ "\374}\377\375\374~\377\376\374~\377\376\373}\377\376\373z\377\376\373" \ -+ "w\377\377\372q\377\376\370g\377\376\366a\377\376\360H\377\376\351\32" \ -+ "\377\376\347\21\377\376\344\16\377\375\341\6\377\376\332\17\377\376\326" \ -+ "\33\377\376\323,\377\374\320S\347\363\336\264!\363\356\345\0\216\363" \ -+ "\354\340\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\204" \ -+ "\303\267\255\0$\302\267\255\0\305\273\264\0\250\220o\242\227f\4\377\260" \ -+ "w\0\377\277\205\1\377\314\216\1\377\325\226\0\377\335\237\1\377\345\246" \ -+ "\1\377\352\255\0\377\357\261\1\377\364\266\0\377\370\273\0\377\374\277" \ -+ "\0\377\376\302\0\377\376\306\1\377\376\311\0\377\377\314\1\377\375\316" \ -+ "\0\377\376\320\0\377\376\323\0\377\375\330&\377\376\337D\377\375\344" \ -+ "L\377\376\346S\377\376\350U\377\376\356c\377\376\354[\377\376\304\1\377" \ -+ "\375\3323\377\376\364l\377\376\363k\377\376\366s\377\376\370{\377\376" \ -+ "\371}\377\203\376\373}\377\21\375\374~\377\376\373~\377\376\373|\377" \ -+ "\376\373w\377\376\371o\377\376\367e\377\376\363\\\377\376\352-\377\376" \ -+ "\345\20\377\376\344\21\377\376\341\10\377\376\334\11\377\376\327\22\377" \ -+ "\376\324\23\377\377\3170\377\370\326\207\240\362\353\337\1\216\362\351" \ -+ "\330\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\204\303" \ -+ "\272\261\0%\304\273\263\0\275\262\250,\222o2\356\232f\0\377\260w\0\377" \ -+ "\276\202\1\377\312\213\0\377\324\224\0\377\333\233\1\377\342\243\1\377" \ -+ "\350\252\1\377\355\257\0\377\361\263\0\377\365\270\0\377\372\274\0\377" \ -+ "\376\300\0\377\376\303\0\377\376\307\0\377\376\312\0\377\376\315\1\377" \ -+ "\375\317\0\377\376\321\2\377\376\330.\377\376\336D\377\375\343J\377\377" \ -+ "\346R\377\376\346U\377\376\352[\377\376\360g\377\376\316\35\377\376\314" \ -+ "\27\377\376\357e\377\376\361g\377\376\365p\377\376\370x\377\376\371|" \ -+ "\377\376\371}\377\204\376\372}\377\20\376\371|\377\376\371y\377\376\370" \ -+ "r\377\375\366i\377\375\364b\377\376\354\77\377\376\344\22\377\376\344" \ -+ "\21\377\376\342\12\377\376\335\3\377\376\330\16\377\376\323\12\377\376" \ -+ "\321\33\377\374\317P\357\361\335\2636\355\343\314\0\215\356\342\307\0" \ -+ "\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\204\306\277\270" \ -+ "\0$\311\303\276\0\252\232\205|\210]\20\377\233f\0\377\256t\1\377\272" \ -+ "\177\0\377\307\210\1\377\321\221\1\377\330\230\0\377\336\237\1\377\345" \ -+ "\247\0\377\352\254\0\377\356\260\0\377\362\264\1\377\366\271\0\377\373" \ -+ "\276\0\377\376\301\0\377\376\304\0\377\376\310\0\377\376\312\0\377\376" \ -+ "\314\0\377\376\317\4\377\376\3262\377\376\334C\377\376\341H\377\375\343" \ -+ "O\377\375\345T\377\376\346V\377\376\356g\377\376\3318\377\375\300\1\377" \ -+ "\376\347V\377\376\357g\377\376\363l\377\376\365u\377\377\367{\377\203" \ -+ "\376\370|\377\22\376\371|\377\376\370|\377\376\371{\377\376\371x\377" \ -+ "\376\370q\377\376\366j\377\376\363c\377\376\357Q\377\376\344\31\377\375" \ -+ "\342\15\377\376\341\10\377\376\337\2\377\375\331\10\377\376\323\15\377" \ -+ "\376\320\11\377\376\314-\377\364\324\212\221\356\337\301\0\215\357\336" \ -+ "\271\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\204\300" \ -+ "\267\255\0$\306\276\270\10\232\204c\277\202T\0\377\232e\0\377\251r\1" \ -+ "\377\267{\0\377\301\205\1\377\314\213\1\377\325\224\0\377\334\232\1\377" \ -+ "\341\242\2\377\346\247\0\377\353\255\1\377\357\261\0\377\364\265\0\377" \ -+ "\370\272\0\377\374\276\0\377\376\300\0\377\376\304\0\377\377\310\0\377" \ -+ "\376\312\0\377\376\315\4\377\376\324/\377\375\332C\377\376\336I\377\375" \ -+ "\342P\377\375\344T\377\376\345T\377\376\351a\377\376\343P\377\374\275" \ -+ "\4\377\376\334@\377\376\356h\377\375\357g\377\376\364q\377\376\366x\377" \ -+ "\202\376\370{\377\24\376\371|\377\376\370{\377\376\371{\377\376\371y" \ -+ "\377\376\367u\377\376\367q\377\376\365j\377\376\363b\377\376\360[\377" \ -+ "\376\346(\377\375\341\11\377\376\341\10\377\376\337\3\377\376\332\3\377" \ -+ "\376\323\16\377\376\317\4\377\377\315\26\377\371\315_\334\356\335\267" \ -+ "\37\355\340\302\0\214\355\337\277\0\377\377\377\377\0\377\377\377\377" \ -+ "\0\213\377\377\377\0\203\271\256\245\0;\272\260\247\0\267\254\243*\213" \ -+ "oD\340\200R\0\377\226d\0\377\244n\0\377\262w\1\377\274\200\1\377\306" \ -+ "\210\0\377\320\217\1\377\327\225\1\377\335\235\1\377\342\242\2\377\347" \ -+ "\250\1\377\354\256\1\377\360\261\1\377\365\265\1\377\370\272\0\377\373" \ -+ "\275\0\377\376\300\0\377\376\304\1\377\376\307\0\377\376\313\2\377\376" \ -+ "\321*\377\376\326\77\377\376\333G\377\376\337N\377\376\341Q\377\375\342" \ -+ "R\377\376\345X\377\376\347[\377\373\300\21\377\375\316'\377\375\354f" \ -+ "\377\375\354c\377\376\361m\377\376\363s\377\375\365v\377\376\366y\377" \ -+ "\376\366z\377\376\367w\377\376\366v\377\376\366u\377\376\365r\377\376" \ -+ "\364m\377\376\362g\377\376\361c\377\376\360_\377\375\3478\377\376\337" \ -+ "\10\377\376\337\7\377\376\337\4\377\376\333\0\377\376\323\12\377\376" \ -+ "\317\7\377\377\315\12\377\374\311A\377\357\327\244V\354\334\267\0\214" \ -+ "\355\333\263\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0" \ -+ "\203\303\272\265\0<\306\276\272\0\263\247\236M\200_.\371~Q\0\377\221" \ -+ "`\0\377\237j\0\377\254s\1\377\267{\0\377\300\203\0\377\312\213\0\377" \ -+ "\322\221\0\377\330\227\0\377\335\235\2\377\343\244\2\377\350\251\0\377" \ -+ "\354\255\0\377\361\261\0\377\365\266\1\377\370\272\0\377\374\275\1\377" \ -+ "\376\301\0\377\376\304\0\377\376\307\2\377\375\315\"\377\376\323;\377" \ -+ "\376\330D\377\376\332I\377\376\336N\377\376\340P\377\376\341R\377\377" \ -+ "\347]\377\373\307\37\377\373\301\20\377\376\347^\377\375\351b\377\376" \ -+ "\356h\377\376\361n\377\376\363p\377\376\363r\377\375\363s\377\375\364" \ -+ "s\377\376\364q\377\376\364p\377\375\364o\377\376\363h\377\376\361e\377" \ -+ "\376\360c\377\376\356_\377\376\347D\377\376\336\11\377\376\336\3\377" \ -+ "\376\335\2\377\376\332\0\377\376\323\6\377\375\316\10\377\375\314\6\377" \ -+ "\375\310-\377\362\317\204\233\353\334\275\0\353\334\274\0\213\353\334" \ -+ "\273\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\203\312" \ -+ "\303\277\0'\317\311\307\0\260\244\230sxV\37\377}P\0\377\215\\\0\377\232" \ -+ "f\0\377\246o\0\377\262v\1\377\272~\0\377\303\206\0\377\315\213\0\377" \ -+ "\324\221\1\377\331\230\0\377\337\236\2\377\343\244\0\377\350\251\1\377" \ -+ "\354\255\0\377\361\261\1\377\365\265\0\377\367\271\0\377\373\275\1\377" \ -+ "\376\300\0\377\376\303\1\377\376\312\35\377\376\3174\377\376\324>\377" \ -+ "\375\327D\377\376\332J\377\376\335N\377\376\336O\377\376\344[\377\374" \ -+ "\3172\377\370\267\6\377\376\341R\377\376\350a\377\376\351c\377\376\356" \ -+ "k\377\376\360m\377\376\361m\377\203\376\362n\377\22\376\362l\377\375" \ -+ "\361i\377\376\356e\377\376\356c\377\376\356a\377\375\353\\\377\376\346" \ -+ "J\377\376\336\16\377\376\334\1\377\376\333\1\377\375\331\1\377\376\323" \ -+ "\3\377\376\316\11\377\375\313\1\377\376\307\35\377\364\313k\326\353\334" \ -+ "\302\14\353\335\304\0\213\353\335\303\0\377\377\377\377\0\377\377\377" \ -+ "\377\0\213\377\377\377\0\203\274\263\253\0%\301\271\263\0\245\226\205" \ -+ "\217uR\31\377|O\0\377\212Z\0\377\226b\0\377\240j\0\377\254r\1\377\265" \ -+ "x\0\377\275\200\1\377\306\207\1\377\317\214\0\377\325\222\0\377\332\230" \ -+ "\1\377\336\236\1\377\343\244\1\377\350\251\0\377\354\256\1\377\360\261" \ -+ "\1\377\364\264\1\377\367\270\0\377\372\274\1\377\374\300\0\377\375\306" \ -+ "\25\377\376\314.\377\376\3208\377\376\322>\377\376\326C\377\376\330J" \ -+ "\377\376\332L\377\376\340V\377\374\325B\377\365\262\7\377\376\331D\377" \ -+ "\376\346a\377\376\347a\377\376\353f\377\202\376\354g\377\25\376\355i" \ -+ "\377\376\357i\377\376\357h\377\376\356g\377\376\356d\377\376\354b\377" \ -+ "\376\354a\377\375\353_\377\376\351Z\377\376\345L\377\376\335\23\377\376" \ -+ "\332\1\377\376\331\2\377\376\330\1\377\376\323\0\377\376\315\12\377\376" \ -+ "\311\0\377\376\306\23\377\365\307U\366\354\331\2650\354\331\267\0\213" \ -+ "\354\331\266\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0" \ -+ "\203\255\237\225\0(\260\244\234\6\233\210t\251uQ\30\377{N\0\377\210X" \ -+ "\0\377\222_\1\377\234f\0\377\246n\0\377\260u\1\377\271{\0\377\277\201" \ -+ "\1\377\310\210\0\377\317\215\1\377\325\223\1\377\332\230\0\377\337\236" \ -+ "\1\377\343\243\1\377\350\251\1\377\353\254\0\377\357\261\1\377\363\263" \ -+ "\0\377\367\267\0\377\371\274\0\377\375\300\11\377\376\307%\377\376\314" \ -+ "6\377\376\317<\377\376\322C\377\376\326L\377\375\327M\377\375\332R\377" \ -+ "\375\330N\377\362\261\5\377\374\3163\377\377\344g\377\376\346g\377\375" \ -+ "\351m\377\376\353m\377\375\351g\377\375\352e\377\202\375\353c\377\22" \ -+ "\375\352c\377\376\352b\377\375\353`\377\375\352_\377\375\351\\\377\376" \ -+ "\350X\377\376\344K\377\376\333\20\377\375\331\2\377\376\330\5\377\376" \ -+ "\325\2\377\376\321\0\377\376\314\10\377\376\310\2\377\376\305\14\377" \ -+ "\366\303G\377\355\330\253Y\354\332\263\0\213\354\332\261\0\377\377\377" \ -+ "\377\0\377\377\377\377\0\213\377\377\377\0\203\257\242\226\0<\263\247" \ -+ "\235\13\231\206q\267sQ\31\377yO\0\377\204U\0\377\217\\\1\377\231c\0\377" \ -+ "\241j\0\377\253q\1\377\264v\1\377\274|\0\377\301\202\1\377\311\210\0" \ -+ "\377\317\215\0\377\325\223\1\377\331\227\0\377\335\234\2\377\342\242" \ -+ "\1\377\346\247\1\377\353\253\0\377\356\257\0\377\362\263\1\377\366\266" \ -+ "\0\377\371\273\1\377\375\277\11\377\376\302\23\377\377\307\35\377\375" \ -+ "\312)\377\376\3161\377\376\3173\377\376\3227\377\377\324\77\377\361\260" \ -+ "\4\377\370\300\27\377\377\334N\377\376\337]\377\376\350o\377\376\355" \ -+ "w\377\376\353p\377\375\352k\377\376\351i\377\375\351c\377\377\350`\377" \ -+ "\376\350_\377\375\350^\377\376\347[\377\376\347X\377\376\345S\377\376" \ -+ "\341G\377\376\331\17\377\376\326\0\377\376\325\2\377\376\324\2\377\376" \ -+ "\317\1\377\376\313\4\377\376\307\5\377\376\304\10\377\367\302=\377\353" \ -+ "\321\232\200\351\334\300\0\213\351\333\275\0\377\377\377\377\0\377\377" \ -+ "\377\377\0\213\377\377\377\0\203\253\235\217\0<\256\243\225\26\226\202" \ -+ "j\323vR\35\377zP\4\377\201R\0\377\213Z\1\377\225a\1\377\235f\0\377\246" \ -+ "m\1\377\256r\0\377\266w\1\377\275}\0\377\303\204\0\377\313\211\1\377" \ -+ "\321\216\0\377\325\223\0\377\331\230\0\377\336\235\1\377\342\242\2\377" \ -+ "\347\246\0\377\352\253\0\377\356\257\0\377\361\262\1\377\365\265\1\377" \ -+ "\370\271\0\377\372\274\0\377\375\277\0\377\376\300\1\377\376\303\2\377" \ -+ "\375\304\3\377\376\306\4\377\377\312\11\377\361\260\2\377\364\264\3\377" \ -+ "\377\316\15\377\376\320\37\377\375\332@\377\376\343a\377\376\347n\377" \ -+ "\376\350m\377\376\351l\377\376\351j\377\376\350f\377\376\347a\377\375" \ -+ "\345\\\377\376\344V\377\376\344T\377\376\342O\377\376\337C\377\376\327" \ -+ "\16\377\377\324\0\377\376\322\2\377\376\322\3\377\376\317\0\377\376\313" \ -+ "\3\377\376\305\7\377\375\302\6\377\366\3006\377\352\314\212\240\351\332" \ -+ "\273\0\213\351\331\270\0\377\377\377\377\0\377\377\377\377\0\213\377" \ -+ "\377\377\0\202\304\274\267\0\36\306\276\271\0\300\270\261\26\215x]\323" \ -+ "wU!\377{S\13\377\177Q\0\377\210W\1\377\222]\1\377\232d\1\377\243j\0\377" \ -+ "\253n\0\377\261s\1\377\271y\0\377\276\177\0\377\305\205\1\377\314\211" \ -+ "\1\377\321\217\0\377\326\223\0\377\332\230\1\377\335\234\1\377\342\241" \ -+ "\2\377\346\246\0\377\352\252\1\377\355\256\0\377\361\261\1\377\365\264" \ -+ "\0\377\366\267\0\377\371\273\0\377\374\275\0\377\376\277\0\377\202\376" \ -+ "\301\0\377\35\377\305\0\377\360\261\1\377\356\254\0\377\377\310\0\377" \ -+ "\376\310\0\377\376\313\0\377\375\320\20\377\376\326+\377\376\334F\377" \ -+ "\376\341X\377\376\344d\377\376\346h\377\376\347e\377\376\345^\377\376" \ -+ "\344X\377\376\342Q\377\376\340M\377\376\333A\377\376\323\14\377\377\322" \ -+ "\0\377\376\320\1\377\376\317\5\377\376\316\1\377\376\312\1\377\375\304" \ -+ "\7\377\374\300\6\377\366\2771\377\353\314\206\274\356\346\333\3\213\356" \ -+ "\345\325\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\202" \ -+ "\303\274\266\0""3\304\276\270\0\277\267\260$\214wY\350wU\40\377~V\20" \ -+ "\377\177S\1\377\205T\0\377\217[\0\377\226a\1\377\237f\0\377\250k\1\377" \ -+ "\256p\0\377\264v\0\377\273{\1\377\301\200\0\377\310\206\0\377\315\212" \ -+ "\1\377\321\220\1\377\326\224\0\377\331\230\0\377\335\234\1\377\341\242" \ -+ "\2\377\345\244\0\377\352\252\1\377\354\256\1\377\360\260\0\377\362\263" \ -+ "\1\377\365\266\0\377\367\271\0\377\372\274\0\377\374\276\0\377\376\277" \ -+ "\0\377\377\301\1\377\362\262\0\377\351\246\0\377\376\304\0\377\377\307" \ -+ "\0\377\377\311\0\377\376\313\0\377\377\314\0\377\375\315\3\377\375\320" \ -+ "\22\377\376\325&\377\375\334E\377\376\341Z\377\377\343_\377\377\343\\" \ -+ "\377\375\341U\377\376\336L\377\376\330;\377\376\320\10\377\202\375\317" \ -+ "\0\377\10\375\316\3\377\377\315\1\377\376\311\1\377\375\302\7\377\372" \ -+ "\276\5\377\365\277/\377\352\306x\321\346\324\270\13\213\346\323\264\0" \ -+ "\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\202\272\260\246" \ -+ "\0)\274\262\251\0\267\257\251&\211sV\365yW#\377}W\23\377\200S\4\377\203" \ -+ "R\0\377\214Z\0\377\223^\1\377\232c\0\377\243h\0\377\253m\1\377\257r\1" \ -+ "\377\267x\0\377\275|\0\377\303\202\1\377\312\207\0\377\316\213\0\377" \ -+ "\323\220\1\377\327\224\1\377\332\230\1\377\335\234\1\377\341\240\1\377" \ -+ "\345\244\0\377\350\251\0\377\353\254\0\377\357\260\0\377\362\261\1\377" \ -+ "\365\264\1\377\367\270\0\377\370\272\0\377\373\274\0\377\375\277\0\377" \ -+ "\362\263\0\377\344\240\0\377\374\275\0\377\377\304\0\377\376\306\0\377" \ -+ "\377\310\1\377\376\312\1\377\376\312\0\377\202\376\313\0\377\22\376\315" \ -+ "\5\377\376\321\32\377\376\330:\377\375\335O\377\376\337U\377\376\333" \ -+ "N\377\376\3265\377\375\316\4\377\375\315\0\377\377\314\0\377\377\313" \ -+ "\1\377\376\311\1\377\377\307\1\377\374\302\7\377\372\275\7\377\365\276" \ -+ "/\377\353\304q\337\346\321\253\40\213\346\320\250\0\377\377\377\377\0" \ -+ "\377\377\377\377\0\213\377\377\377\0\77\260\223^\0\260\223]\0\265\233" \ -+ "o\14\247\223x\226\206oS\376{X%\377~W\23\377\177S\4\377\202S\0\377\212" \ -+ "Y\0\377\221\\\1\377\230a\0\377\240e\0\377\247k\0\377\254o\1\377\262t" \ -+ "\1\377\271z\0\377\277~\0\377\305\203\0\377\313\207\0\377\320\214\0\377" \ -+ "\323\221\0\377\327\224\0\377\331\227\0\377\335\234\1\377\341\241\2\377" \ -+ "\345\244\0\377\350\250\1\377\354\254\0\377\355\257\0\377\361\261\1\377" \ -+ "\364\262\1\377\365\266\0\377\367\271\0\377\372\273\1\377\362\263\1\377" \ -+ "\340\233\1\377\370\270\0\377\377\301\0\377\375\302\1\377\376\305\1\377" \ -+ "\376\307\0\377\376\310\0\377\376\311\1\377\376\312\0\377\376\313\0\377" \ -+ "\376\312\0\377\376\314\0\377\376\317\24\377\376\3231\377\375\326D\377" \ -+ "\376\322.\377\375\314\2\377\377\313\0\377\377\313\1\377\376\311\1\377" \ -+ "\376\307\0\377\376\305\0\377\375\301\4\377\371\274\11\377\364\274-\377" \ -+ "\352\302g\346\345\315\235*\213\345\314\232\0\377\377\377\377\0\377\377" \ -+ "\377\377\0\213\377\377\377\0/\261\224_\0\262\226b\0\255\2039\206\217" \ -+ "c\34\377\204mP\377{X&\377}U\23\377~R\3\377\203T\0\377\211V\1\377\217" \ -+ "[\0\377\226_\0\377\236c\0\377\244h\1\377\252m\0\377\257q\1\377\265v\1" \ -+ "\377\274{\1\377\301\200\0\377\307\205\1\377\314\211\0\377\317\215\0\377" \ -+ "\324\221\0\377\327\224\1\377\332\230\0\377\336\235\0\377\341\240\2\377" \ -+ "\345\244\0\377\351\247\0\377\353\253\1\377\356\256\0\377\361\260\1\377" \ -+ "\363\262\1\377\365\263\1\377\370\267\0\377\362\262\0\377\335\231\0\377" \ -+ "\363\262\0\377\375\277\1\377\376\277\0\377\376\301\0\377\375\303\0\377" \ -+ "\376\305\0\377\377\306\1\377\376\307\1\377\376\310\1\377\377\311\0\377" \ -+ "\202\376\312\0\377\16\376\313\1\377\376\315\26\377\376\316\32\377\376" \ -+ "\312\0\377\376\311\1\377\376\311\0\377\377\307\0\377\377\306\1\377\375" \ -+ "\303\0\377\373\300\3\377\367\274\14\377\363\273+\377\352\300d\356\347" \ -+ "\322\252:\213\347\321\244\0\377\377\377\377\0\377\377\377\377\0\213\377" \ -+ "\377\377\0-\234u8\0\234v<\17\234a\10\323\211]\32\377\177eG\377{V'\377" \ -+ "}T\24\377~Q\2\377\203S\0\377\210V\1\377\217Z\0\377\225_\0\377\234c\0" \ -+ "\377\242g\1\377\247j\1\377\254n\0\377\261r\1\377\270x\1\377\276}\0\377" \ -+ "\304\201\0\377\311\206\1\377\316\212\0\377\321\216\0\377\325\222\1\377" \ -+ "\330\225\1\377\333\231\0\377\337\234\1\377\343\240\2\377\346\244\0\377" \ -+ "\351\247\0\377\354\253\1\377\355\255\0\377\357\257\0\377\363\261\1\377" \ -+ "\366\263\1\377\362\260\1\377\334\227\0\377\355\254\0\377\372\274\0\377" \ -+ "\374\275\0\377\376\276\0\377\376\300\0\377\376\301\1\377\375\302\0\377" \ -+ "\376\305\0\377\202\376\306\1\377\22\376\307\0\377\377\310\0\377\375\310" \ -+ "\0\377\376\310\0\377\376\310\1\377\376\307\0\377\377\306\1\377\377\306" \ -+ "\0\377\376\306\1\377\376\305\0\377\376\302\0\377\374\277\2\377\366\274" \ -+ "\17\377\363\273,\377\351\276\\\375\347\316\235f\357\324\234\0\360\334" \ -+ "\260\0\211\360\334\262\0\377\377\377\377\0\377\377\377\377\0\213\377" \ -+ "\377\377\0""2\214_\34\0\214a\37\20\225d\27\317\262\200\36\377\261s\26" \ -+ "\377\217P\23\377\204Q\15\377}M\2\377\177N\0\377\210V\0\377\215Y\0\377" \ -+ "\223^\1\377\233b\0\377\241f\0\377\245i\0\377\253n\1\377\257r\1\377\265" \ -+ "u\1\377\273z\0\377\300~\0\377\307\203\0\377\313\206\0\377\316\212\0\377" \ -+ "\321\216\1\377\326\221\1\377\330\225\1\377\333\231\1\377\337\235\1\377" \ -+ "\343\240\1\377\345\243\0\377\351\246\1\377\353\252\0\377\355\254\0\377" \ -+ "\357\256\0\377\361\261\1\377\361\260\1\377\332\225\0\377\351\246\0\377" \ -+ "\370\271\0\377\372\273\0\377\374\275\1\377\375\276\0\377\376\277\0\377" \ -+ "\375\300\0\377\376\301\0\377\375\302\0\377\376\304\0\377\376\305\1\377" \ -+ "\377\306\1\377\377\306\0\377\202\377\307\0\377\14\376\306\0\377\377\306" \ -+ "\1\377\376\305\1\377\376\304\1\377\375\303\0\377\376\301\0\377\374\276" \ -+ "\1\377\365\274\23\377\362\273.\377\352\275W\377\354\310\177\342\361\324" \ -+ "\225I\212\361\336\263\0\377\377\377\377\0\377\377\377\377\0\213\377\377" \ -+ "\377\0\"\261\220a\0\244\202Q\17\221n3\322\251y\31\377\327\214\0\377\265" \ -+ "\\\0\377\220>\0\377\205C\0\377\201I\0\377\210U\1\377\216Y\0\377\224]" \ -+ "\1\377\232a\0\377\240e\0\377\245g\0\377\252l\1\377\256p\0\377\262s\1" \ -+ "\377\271x\1\377\276|\0\377\304\201\0\377\310\204\1\377\314\210\1\377" \ -+ "\317\212\0\377\323\217\1\377\327\223\1\377\332\227\0\377\334\231\0\377" \ -+ "\340\235\1\377\343\240\1\377\346\243\1\377\351\246\0\377\353\251\1\377" \ -+ "\355\254\1\377\202\357\256\0\377\14\331\224\0\377\345\241\1\377\366\265" \ -+ "\1\377\367\270\0\377\372\273\0\377\373\274\0\377\374\275\0\377\376\276" \ -+ "\0\377\376\277\0\377\376\300\0\377\376\301\0\377\376\302\0\377\202\376" \ -+ "\303\0\377\4\375\305\0\377\376\305\0\377\376\304\1\377\376\304\0\377" \ -+ "\202\375\302\0\377\12\376\301\1\377\375\300\0\377\372\276\2\377\364\273" \ -+ "\30\377\360\2722\377\354\273L\377\372\307/\377\371\316_\350\361\335\261" \ -+ "\"\361\336\265\0\210\361\336\263\0\377\377\377\377\0\377\377\377\377" \ -+ "\0\213\377\377\377\0-\306\254\212\7\253\206Q\222\210lE\373yX+\377\215" \ -+ "b\30\377\262w\11\377\265b\1\377\276o\10\377\273w\7\377\225Z\0\377\213" \ -+ "T\0\377\221Z\0\377\232a\0\377\237d\1\377\243g\0\377\250j\1\377\254n\1" \ -+ "\377\261r\1\377\267x\1\377\274|\1\377\302\200\0\377\307\204\0\377\313" \ -+ "\207\1\377\316\212\0\377\321\216\1\377\326\221\1\377\331\224\1\377\333" \ -+ "\227\1\377\335\232\0\377\340\236\1\377\343\241\1\377\345\243\0\377\350" \ -+ "\246\0\377\353\251\2\377\354\253\1\377\356\255\1\377\330\223\1\377\340" \ -+ "\235\0\377\365\263\1\377\366\264\1\377\367\267\0\377\371\272\0\377\373" \ -+ "\273\1\377\374\275\1\377\375\276\0\377\203\376\277\0\377\2\376\301\0" \ -+ "\377\375\301\0\377\202\375\302\0\377\17\376\301\0\377\376\302\0\377\375" \ -+ "\301\0\377\376\300\1\377\376\300\0\377\375\301\0\377\372\276\0\377\364" \ -+ "\272\30\377\357\2728\377\362\271.\377\376\306\5\377\376\316\"\377\363" \ -+ "\336\252I\362\340\272\0\361\340\270\0\207\361\340\267\0\377\377\377\377" \ -+ "\0\377\377\377\377\0\213\377\377\377\0""0\275\230]\205\241{>\377\213" \ -+ "tX\377\177]/\377{T\30\377{S\23\377\251q\3\377\352\245\6\377\346\245\5" \ -+ "\377\305\204\0\377\261t\0\377\242f\0\377\232c\1\377\236d\0\377\242f\1" \ -+ "\377\246h\0\377\254m\0\377\262q\1\377\264s\0\377\270v\0\377\275{\1\377" \ -+ "\303\200\1\377\311\205\1\377\315\211\1\377\320\214\0\377\324\221\1\377" \ -+ "\327\223\0\377\331\226\1\377\334\230\0\377\336\233\1\377\341\237\2\377" \ -+ "\343\240\1\377\346\242\0\377\350\246\0\377\353\247\0\377\355\252\0\377" \ -+ "\330\222\0\377\334\230\0\377\361\261\0\377\365\262\1\377\367\263\0\377" \ -+ "\367\266\0\377\370\270\0\377\372\272\1\377\373\274\1\377\374\274\1\377" \ -+ "\375\275\0\377\376\276\1\377\202\376\277\1\377\21\377\277\0\377\376\277" \ -+ "\1\377\376\300\0\377\376\277\1\377\377\277\0\377\376\277\0\377\376\300" \ -+ "\1\377\375\277\0\377\371\275\0\377\363\271\30\377\355\2719\377\362\267" \ -+ "\"\377\375\266\0\377\375\273\2\377\356\333\251Q\357\335\264\0\362\335" \ -+ "\250\0\207\362\336\256\0\377\377\377\377\0\377\377\377\377\0\213\377" \ -+ "\377\377\0""0\262\2040\350\234q-\377\210e4\377\177^2\377\177X\31\377" \ -+ "|S\15\377\226^\1\377\306\205\0\377\331\231\0\377\340\237\1\377\347\247" \ -+ "\2\377\332\232\3\377\243g\0\377\234a\0\377\242e\1\377\237b\0\377\303" \ -+ "\205\1\377\343\243\1\377\333\232\0\377\325\225\1\377\317\216\0\377\315" \ -+ "\213\0\377\314\211\0\377\315\211\0\377\317\211\0\377\322\214\0\377\325" \ -+ "\217\0\377\331\224\1\377\332\226\0\377\333\231\0\377\337\235\0\377\342" \ -+ "\236\2\377\344\240\2\377\346\242\1\377\350\245\0\377\353\247\0\377\330" \ -+ "\221\0\377\331\223\1\377\357\256\0\377\361\261\0\377\364\262\0\377\366" \ -+ "\262\1\377\367\265\0\377\367\267\0\377\370\270\0\377\371\271\0\377\373" \ -+ "\272\0\377\374\274\0\377\202\374\275\0\377\203\375\276\0\377\17\375\277" \ -+ "\1\377\375\276\0\377\375\276\1\377\374\277\0\377\373\275\0\377\370\273" \ -+ "\0\377\363\271\33\377\355\267:\377\360\267+\377\376\266\0\377\374\264" \ -+ "\4\377\361\311f{\366\322p\0\365\336\247\0\364\337\253\0\206\364\337\251" \ -+ "\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0""2\261\201(" \ -+ "\333\251p\13\377\210Z\22\377}\\1\377\201[\"\377\201U\20\377\231b\1\377" \ -+ "\222]\1\377\243l\0\377\304\210\0\377\351\253\5\377\350\243\7\377\253" \ -+ "i\0\377\234a\0\377\240c\1\377\246j\1\377\350\254\0\377\374\277\0\377" \ -+ "\373\277\0\377\374\301\1\377\373\277\0\377\373\276\0\377\370\273\0\377" \ -+ "\364\267\0\377\362\264\1\377\361\263\6\377\352\255\24\377\332\225\0\377" \ -+ "\331\223\1\377\333\226\1\377\334\231\0\377\337\234\1\377\342\235\1\377" \ -+ "\343\240\1\377\346\242\0\377\350\245\0\377\327\220\1\377\325\216\1\377" \ -+ "\356\253\0\377\360\256\0\377\362\260\1\377\364\261\0\377\366\261\0\377" \ -+ "\367\263\0\377\370\265\0\377\370\267\0\377\370\270\0\377\371\272\0\377" \ -+ "\372\273\0\377\373\273\0\377\202\374\274\0\377\21\374\275\0\377\374\275" \ -+ "\1\377\374\274\0\377\372\274\0\377\373\275\0\377\371\274\0\377\367\273" \ -+ "\1\377\363\270\33\377\356\2673\377\360\2724\377\376\276\4\377\373\272" \ -+ "\5\377\363\275A\365\372\314Mv\364\335\243\2\363\341\271\0\364\340\260" \ -+ "\0\205\364\340\256\0\377\377\377\377\0\377\377\377\377\0\213\377\377" \ -+ "\377\0""4\262\225_n\264w\0\377\251m\0\377\206W\27\377\177V%\377\202W" \ -+ "\25\377\227`\2\377\213Z\10\377\202Q\3\377\220Y\0\377\315\211\0\377\340" \ -+ "\227\0\377\265q\0\377\245e\1\377\241b\0\377\253o\0\377\330\233\0\377" \ -+ "\347\252\1\377\361\264\0\377\371\275\1\377\375\302\1\377\377\305\0\377" \ -+ "\377\307\0\377\377\312\0\377\377\313\0\377\377\330,\377\376\325A\377" \ -+ "\344\233\0\377\330\220\0\377\332\224\0\377\333\226\1\377\335\231\0\377" \ -+ "\337\232\0\377\342\234\2\377\343\237\1\377\346\242\1\377\326\216\1\377" \ -+ "\322\212\0\377\353\250\1\377\356\254\0\377\357\255\0\377\361\257\1\377" \ -+ "\362\261\1\377\364\261\0\377\367\262\1\377\367\264\0\377\370\264\1\377" \ -+ "\370\266\0\377\370\267\0\377\370\272\0\377\371\271\1\377\372\272\1\377" \ -+ "\202\372\272\0\377\20\371\272\1\377\370\271\0\377\370\272\0\377\366\271" \ -+ "\0\377\365\270\2\377\363\267\23\377\364\271\20\377\366\274\36\377\373" \ -+ "\303\40\377\375\277\4\377\363\300R\377\371\306K\376\371\320S\201\370" \ -+ "\326i\0\367\332\205\0\366\333\221\0\204\366\332\217\0\377\377\377\377" \ -+ "\0\377\377\377\377\0\213\377\377\377\0""2\270\253\233\4\253\206A\217" \ -+ "\302\201\1\377\277z\0\377\236c\13\377\210T\22\377\230\\\3\377\221Y\11" \ -+ "\377\207T\6\377\214W\0\377\304\177\0\377\336\226\1\377\303\200\1\377" \ -+ "\272x\0\377\262q\0\377\236d\0\377\240e\0\377\256o\0\377\271z\1\377\305" \ -+ "\206\1\377\322\222\0\377\336\240\1\377\351\252\0\377\361\264\0\377\367" \ -+ "\274\1\377\376\3249\377\375\310\36\377\345\230\0\377\331\215\0\377\332" \ -+ "\221\0\377\333\224\1\377\335\227\0\377\336\231\0\377\340\232\0\377\342" \ -+ "\234\1\377\345\237\1\377\325\214\1\377\320\206\2\377\350\245\0\377\355" \ -+ "\251\0\377\355\254\1\377\356\254\0\377\360\255\0\377\360\257\1\377\363" \ -+ "\260\1\377\365\261\1\377\367\261\0\377\367\262\0\377\370\264\0\377\370" \ -+ "\265\0\377\203\367\267\0\377\202\370\267\0\377\17\367\267\1\377\367\267" \ -+ "\0\377\367\270\0\377\366\270\0\377\367\272\10\377\374\276\1\377\375\300" \ -+ "\1\377\375\304\26\377\376\306&\377\374\305:\377\374\311S\377\374\307" \ -+ "7\377\375\312\33n\371\326d\0\367\326w\0\204\367\325t\0\365\377\377\377" \ -+ "\0\331\0\0\0\0\2\251\207\0""0\251\207\0`\203\251\207\0\200\2\251\207" \ -+ "\0`\251\207\0""0\264\0\0\0\0G\270\250\224\0\260\236\211\2\256\212Od\301" \ -+ "\210\22\337\325\220\0\377\310\204\0\377\302~\0\377\264s\2\377\234^\1" \ -+ "\377\226X\1\377\304~\1\377\333\226\1\377\320\215\1\377\313\210\1\377" \ -+ "\277|\0\377\240f\0\377\235d\1\377\243f\0\377\246h\1\377\250j\0\377\254" \ -+ "l\1\377\262q\0\377\272w\0\377\303}\1\377\312\204\0\377\351\242\3\377" \ -+ "\374\265\0\377\346\233\1\377\332\217\0\377\332\221\0\377\334\223\1\377" \ -+ "\335\226\1\377\336\230\0\377\340\231\0\377\342\233\0\377\343\234\0\377" \ -+ "\325\213\0\377\316\203\1\377\346\241\0\377\352\246\0\377\354\250\1\377" \ -+ "\356\252\0\377\357\252\0\377\357\253\0\377\361\255\0\377\362\257\1\377" \ -+ "\363\260\1\377\364\260\0\377\367\260\0\377\367\262\0\377\370\263\0\377" \ -+ "\370\264\0\377\370\265\0\377\370\266\0\377\371\267\0\377\371\270\1\377" \ -+ "\373\273\0\377\374\276\0\377\375\300\0\377\375\301\6\377\375\304\5\377" \ -+ "\376\307\0\377\377\307\0\377\376\312\31\377\376\314*\377\376\3124\377" \ -+ "\375\307E\377\375\310*\372\372\324VR\367\330\200\0\367\326w\0\203\367" \ -+ "\326x\0\377\0\0\0\0\234\0\0\0\0\1\251\207\0\20\204\251\207\0@\203\251" \ -+ "\207\0\200\4\251\207\0\257\251\207\0\277\251\207\0\317\251\207\0@\245" \ -+ "\0\0\0\0\2\251\207\0\200\251\207\0\357\207\251\207\0\377\2\251\207\0" \ -+ "\357\251\207\0\200\262\0\0\0\0=\270\250\223\0\260\234\202\0\257\226|" \ -+ "\0\246\203I(\257\201)\223\316\222\10\356\343\240\0\377\344\240\0\377" \ -+ "\334\227\0\377\320\213\1\377\331\226\1\377\335\235\1\377\332\230\1\377" \ -+ "\327\224\0\377\311\205\0\377\242d\0\377\237b\1\377\245e\0\377\247g\0" \ -+ "\377\252k\1\377\255n\1\377\262p\0\377\266t\1\377\274w\0\377\301z\1\377" \ -+ "\341\230\0\377\374\266\0\377\355\247\0\377\345\235\0\377\343\235\0\377" \ -+ "\343\237\0\377\344\237\0\377\345\240\0\377\346\241\0\377\350\243\0\377" \ -+ "\352\244\0\377\333\222\0\377\317\202\1\377\346\237\0\377\352\244\0\377" \ -+ "\353\246\1\377\354\250\1\377\356\251\0\377\357\253\0\377\362\254\0\377" \ -+ "\362\256\0\377\364\260\0\377\366\261\0\377\367\262\0\377\371\265\0\377" \ -+ "\372\266\0\377\372\271\0\377\374\273\0\377\375\276\0\377\376\301\0\377" \ -+ "\376\303\0\377\376\306\2\377\376\307\2\377\376\311\0\377\376\312\2\377" \ -+ "\375\311\13\377\202\376\315\0\377\10\376\315\12\377\376\315\34\377\376" \ -+ "\314$\377\376\3121\377\376\3107\377\375\314\"\341\370\325d)\367\327}" \ -+ "\0\203\367\326x\0\377\0\0\0\0\227\0\0\0\0\1\251\207\0\277\217\251\207" \ -+ "\0\377\1\251\207\0@\244\0\0\0\0\1\251\207\0\237\213\251\207\0\377\1\251" \ -+ "\207\0\237\261\0\0\0\0\20\270\250\223\0\260\234\202\0\257\225v\0\250" \ -+ "\204L\0\240|B\0\251~8*\270\2112\203\313\223\26\327\340\240\3\375\361" \ -+ "\255\0\377\364\260\0\377\355\255\0\377\347\246\1\377\343\241\1\377\330" \ -+ "\226\0\377\263n\0\377\202\250`\0\377'\250b\0\377\250e\1\377\255i\1\377" \ -+ "\261l\0\377\266o\1\377\273u\1\377\302z\0\377\342\227\0\377\375\271\0" \ -+ "\377\367\264\4\377\362\256\2\377\362\256\3\377\361\257\2\377\362\257" \ -+ "\2\377\362\257\1\377\362\257\0\377\364\260\0\377\366\263\0\377\352\244" \ -+ "\0\377\326\212\0\377\354\247\0\377\362\256\0\377\363\256\0\377\364\260" \ -+ "\0\377\366\260\0\377\370\263\0\377\371\265\0\377\372\267\0\377\373\271" \ -+ "\0\377\375\275\4\377\375\300\10\377\376\304\22\377\376\311!\377\376\315" \ -+ "/\377\376\3205\377\376\315\"\377\376\313\4\377\376\314\0\377\376\315" \ -+ "\1\377\202\376\317\0\377\15\376\320\0\377\375\315\13\377\376\317\10\377" \ -+ "\376\320\0\377\376\316\3\377\376\316\15\377\376\315\30\377\376\313!\377" \ -+ "\377\312/\377\377\311(\377\375\316\35\267\371\331m\14\367\332\206\0\202" \ -+ "\367\332\203\0\377\0\0\0\0\212\0\0\0\0\2\251\207\0""0\251\207\0\40\213" \ -+ "\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251\207\0@\243\0\0\0\0\1" \ -+ "\251\207\0`\215\251\207\0\377\1\251\207\0`\260\0\0\0\0""8\270\250\223" \ -+ "\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0\252\177;\0\263\213I\0" \ -+ "\266\227n\21\256\203\77Z\273\214-\241\321\230\24\327\350\246\0\377\367" \ -+ "\263\0\377\366\265\0\377\357\256\1\377\351\246\0\377\337\232\1\377\326" \ -+ "\217\0\377\314\204\1\377\304|\0\377\277v\0\377\273r\1\377\274o\2\377" \ -+ "\274p\1\377\303v\1\377\342\225\0\377\375\277\26\377\376\305&\377\374" \ -+ "\303&\377\374\304/\377\375\3040\377\374\3061\377\375\3061\377\374\306" \ -+ "/\377\375\307-\377\376\3133\377\372\303*\377\345\234\5\377\363\263\10" \ -+ "\377\375\303\26\377\375\305\32\377\376\310\40\377\376\312#\377\376\314" \ -+ "*\377\376\3171\377\376\3228\377\376\325B\377\376\330M\377\376\332V\377" \ -+ "\376\334[\377\376\336^\377\376\337[\377\376\337Z\377\375\336Y\377\376" \ -+ "\3318\377\376\322\3\377\202\376\323\1\377\20\376\324\0\377\376\325\0" \ -+ "\377\376\323\2\377\376\317\21\377\376\320\4\377\376\320\0\377\375\316" \ -+ "\1\377\376\315\7\377\376\314\25\377\376\313\36\377\376\311(\377\376\311" \ -+ "\33\377\374\324A\205\367\334\214\0\367\333\205\0\367\333\204\0\354\0" \ -+ "\0\0\0\2\251\207\0\20\251\207\0@\231\0\0\0\0\4\251\207\0\40\251\207\0" \ -+ "\237\251\207\0\377\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207" \ -+ "\0\377\1\251\207\0@\243\0\0\0\0\1\251\207\0\317\215\251\207\0\377\1\251" \ -+ "\207\0\317\260\0\0\0\0J\270\250\223\0\260\234\202\0\257\225v\0\250\204" \ -+ "K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\215]\0\252\215j\0\253" \ -+ "\204J\37\275\225UV\314\227'\252\345\245\4\375\373\272\0\377\377\300\0" \ -+ "\377\374\275\0\377\374\274\0\377\373\274\0\377\367\270\0\377\364\263" \ -+ "\0\377\360\255\0\377\353\246\0\377\345\236\0\377\343\232\0\377\361\256" \ -+ "\12\377\376\312\"\377\376\314/\377\376\317A\377\376\321I\377\377\322" \ -+ "O\377\376\325S\377\376\326W\377\376\327Y\377\376\331Z\377\376\333a\377" \ -+ "\377\336g\377\364\267\37\377\370\275$\377\377\337d\377\376\340g\377\376" \ -+ "\343m\377\376\344q\377\376\345r\377\376\346u\377\375\350v\377\376\347" \ -+ "s\377\376\350s\377\375\350u\377\375\350p\377\375\350m\377\376\347h\377" \ -+ "\376\344Z\377\376\340B\377\376\333$\377\376\326\3\377\376\327\0\377\376" \ -+ "\330\0\377\376\327\0\377\376\325\1\377\376\324\0\377\376\321\6\377\376" \ -+ "\316\20\377\376\317\4\377\376\316\0\377\375\315\0\377\376\314\5\377\375" \ -+ "\313\21\377\376\313\32\377\376\311\"\377\376\312\17\366\372\324OF\366" \ -+ "\333\206\0\366\335\226\0\352\0\0\0\0\4\251\207\0\20\251\207\0\200\251" \ -+ "\207\0\357\251\207\0\200\227\0\0\0\0\2\251\207\0\40\251\207\0\237\203" \ -+ "\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0" \ -+ "\377\1\251\207\0@\243\0\0\0\0\217\251\207\0\377\260\0\0\0\0\22\270\250" \ -+ "\223\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0\252\177:\0\264\213" \ -+ "G\0\267\227g\0\261\214Y\0\254\215a\0\257\211P\0\272\234y\0\272\215B\2" \ -+ "\255\211\26\315\273\213\22\377\345\252\13\377\376\301\0\377\377\304\0" \ -+ "\377\202\377\301\0\377#\377\303\0\377\377\305\0\377\377\310\0\377\377" \ -+ "\312\0\377\377\312\1\377\377\313\3\377\376\313\2\377\376\314\16\377\376" \ -+ "\320%\377\375\3233\377\376\326@\377\376\331I\377\376\332Q\377\376\334" \ -+ "X\377\375\336\\\377\375\341b\377\376\347m\377\375\327K\377\374\300\30" \ -+ "\377\376\344h\377\376\350p\377\376\350n\377\376\350o\377\375\351q\377" \ -+ "\376\351r\377\375\351l\377\376\350f\377\376\347`\377\375\345X\377\376" \ -+ "\344H\377\376\3377\377\375\335!\377\375\332\16\377\376\327\1\377\376" \ -+ "\327\0\377\202\376\330\0\377\21\376\326\1\377\376\325\1\377\376\323\1" \ -+ "\377\377\323\1\377\376\322\0\377\376\317\10\377\375\315\20\377\375\317" \ -+ "\1\377\375\314\0\377\377\313\0\377\376\313\3\377\375\312\17\377\375\312" \ -+ "\27\377\375\311\23\377\375\313\20\323\366\332\200\32\364\337\242\0\350" \ -+ "\0\0\0\0\3\251\207\0\20\251\207\0\200\251\207\0\357\202\251\207\0\377" \ -+ "\1\251\207\0\200\225\0\0\0\0\2\251\207\0@\251\207\0\237\205\251\207\0" \ -+ "\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251" \ -+ "\207\0@\243\0\0\0\0\217\251\207\0\377\260\0\0\0\0\33\270\250\223\0\260" \ -+ "\234\202\0\257\225v\0\250\204K\0\243}=\0\252\177:\0\264\213G\0\267\227" \ -+ "g\0\261\214Y\0\254\215a\0\257\211N\0\273\233s\0\275\217\77\0\251\207" \ -+ "\0\277\251\207\0\377\254\206\16\377\300\216\17\377\354\263\3\377\377" \ -+ "\307\0\377\377\305\0\377\375\301\0\377\375\303\0\377\376\306\1\377\377" \ -+ "\307\1\377\376\310\1\377\376\312\0\377\376\313\0\377\202\377\314\0\377" \ -+ "\30\375\315\0\377\375\317\6\377\376\320\14\377\376\321\23\377\376\323" \ -+ "\32\377\376\325#\377\376\330.\377\376\3328\377\376\336H\377\376\313\36" \ -+ "\377\376\3256\377\376\343X\377\376\337@\377\376\334,\377\376\333(\377" \ -+ "\375\333#\377\376\332\34\377\376\331\25\377\376\330\14\377\376\327\3" \ -+ "\377\376\326\0\377\375\325\3\377\376\327\3\377\375\327\1\377\202\376" \ -+ "\326\0\377\1\376\327\0\377\202\376\325\1\377\2\376\325\0\377\377\324" \ -+ "\0\377\202\376\322\1\377\14\376\320\0\377\376\315\11\377\376\314\16\377" \ -+ "\376\315\1\377\377\314\1\377\376\314\0\377\376\311\2\377\375\312\13\377" \ -+ "\375\310\23\377\376\307\3\377\373\3209\225\365\336\233\5\346\0\0\0\0" \ -+ "\3\251\207\0\40\251\207\0\217\251\207\0\357\204\251\207\0\377\1\251\207" \ -+ "\0\200\222\0\0\0\0\3\251\207\0\20\251\207\0`\251\207\0\317\207\251\207" \ -+ "\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251" \ -+ "\207\0@\243\0\0\0\0\1\251\207\0\357\215\251\207\0\377\1\251\207\0\357" \ -+ "\260\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0\243" \ -+ "}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211N" \ -+ "\0\273\233s\0\275\217\77\0\251\207\0\277\202\251\207\0\377\15\251\207" \ -+ "\1\377\257\213\27\377\312\230\17\377\370\277\2\377\377\312\0\377\377" \ -+ "\306\0\377\376\305\1\377\376\306\1\377\377\310\0\377\375\310\0\377\376" \ -+ "\312\1\377\376\313\0\377\377\313\0\377\202\376\314\0\377\202\375\315" \ -+ "\0\377)\375\316\0\377\376\317\0\377\376\320\1\377\376\322\16\377\375" \ -+ "\326(\377\375\3257\377\376\310\24\377\376\332C\377\376\331.\377\376\322" \ -+ "\0\377\376\323\0\377\375\323\0\377\376\323\0\377\376\325\0\377\376\325" \ -+ "\3\377\376\325\7\377\375\326\14\377\375\325\17\377\375\326\16\377\376" \ -+ "\325\11\377\376\325\4\377\376\325\2\377\376\325\1\377\376\324\1\377\376" \ -+ "\324\0\377\377\323\0\377\376\322\1\377\376\321\1\377\376\321\0\377\375" \ -+ "\317\0\377\376\316\0\377\376\314\11\377\375\314\5\377\377\314\0\377\376" \ -+ "\313\0\377\376\312\0\377\376\310\1\377\376\310\4\377\377\307\7\377\376" \ -+ "\310\4\370\366\320XV\344\0\0\0\0\2\251\207\0P\251\207\0\257\207\251\207" \ -+ "\0\377\1\251\207\0\200\220\0\0\0\0\2\251\207\0P\251\207\0\237\212\251" \ -+ "\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377" \ -+ "\1\251\207\0@\243\0\0\0\0\1\251\207\0\237\215\251\207\0\377\1\251\207" \ -+ "\0\237\260\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204" \ -+ "K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257" \ -+ "\211N\0\273\233s\0\275\217\77\0\251\207\0\277\204\251\207\0\377/\251" \ -+ "\207\1\377\266\215\26\377\337\250\14\377\376\307\0\377\377\313\1\377" \ -+ "\376\305\1\377\377\307\0\377\376\310\0\377\375\311\1\377\376\312\1\377" \ -+ "\376\312\0\377\376\313\1\377\377\314\3\377\376\314\1\377\375\315\1\377" \ -+ "\375\316\5\377\376\317\17\377\376\321\37\377\376\324,\377\376\323+\377" \ -+ "\376\327<\377\376\314$\377\375\316'\377\376\333I\377\376\324\31\377\376" \ -+ "\322\3\377\376\323\5\377\376\322\2\377\376\324\7\377\376\325\20\377\375" \ -+ "\325\22\377\375\325\23\377\376\324\23\377\376\324\20\377\376\324\16\377" \ -+ "\376\324\11\377\375\324\4\377\376\323\1\377\376\324\0\377\377\323\0\377" \ -+ "\376\323\1\377\376\322\1\377\376\320\1\377\376\320\0\377\375\317\0\377" \ -+ "\376\315\0\377\375\316\0\377\202\376\314\0\377\7\377\313\0\377\376\313" \ -+ "\2\377\376\311\1\377\376\312\0\377\377\310\0\377\376\305\3\377\360\307" \ -+ "Io\341\0\0\0\0\3\251\207\0""0\251\207\0\217\251\207\0\357\211\251\207" \ -+ "\0\377\1\251\207\0\200\214\0\0\0\0\4\251\207\0\20\251\207\0P\251\207" \ -+ "\0\237\251\207\0\357\214\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251" \ -+ "\207\0\277\217\251\207\0\377\1\251\207\0@\243\0\0\0\0\2\251\207\0\40" \ -+ "\251\207\0\357\213\251\207\0\377\2\251\207\0\357\251\207\0\40\260\0\0" \ -+ "\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0\252" \ -+ "\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211N\0\273\233" \ -+ "s\0\275\217\77\0\251\207\0\277\206\251\207\0\377\7\254\210\16\377\302" \ -+ "\224\30\377\365\276\0\377\377\314\0\377\377\307\1\377\376\306\1\377\376" \ -+ "\307\0\377\202\375\310\0\377\37\376\311\1\377\376\312\1\377\377\314\0" \ -+ "\377\377\314\1\377\376\314\2\377\375\316\13\377\376\317\27\377\375\321" \ -+ "!\377\376\321!\377\376\322!\377\376\3239\377\376\310\31\377\375\326\77" \ -+ "\377\375\330A\377\376\322\35\377\376\322\20\377\376\321\7\377\376\321" \ -+ "\5\377\375\323\23\377\376\324\25\377\376\324\24\377\377\322\26\377\375" \ -+ "\323\27\377\376\323\25\377\376\323\17\377\376\322\7\377\376\321\1\377" \ -+ "\376\322\1\377\376\321\1\377\375\321\0\377\376\321\0\377\202\375\317" \ -+ "\0\377\14\375\316\1\377\375\316\0\377\376\315\0\377\377\314\1\377\377" \ -+ "\315\0\377\377\314\0\377\377\314\2\377\377\311\0\377\374\306\4\377\363" \ -+ "\276\35\316\354\300Hj\352\321\221\15\336\0\0\0\0\3\251\207\0@\251\207" \ -+ "\0\217\251\207\0\337\214\251\207\0\377\1\251\207\0\200\214\0\0\0\0\1" \ -+ "\251\207\0\277\217\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0" \ -+ "\277\217\251\207\0\377\1\251\207\0@\244\0\0\0\0\2\251\207\0""0\251\207" \ -+ "\0\357\211\251\207\0\377\2\251\207\0\357\251\207\0""0\261\0\0\0\0\16" \ -+ "\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0\252\177:\0" \ -+ "\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211N\0\273\233s\0\275" \ -+ "\217\77\0\251\207\0\277\207\251\207\0\377\3\251\207\1\377\262\211\21" \ -+ "\377\337\251\11\377\202\377\312\0\377\6\376\305\1\377\377\307\0\377\376" \ -+ "\307\0\377\376\310\0\377\375\310\1\377\376\311\1\377\202\376\313\0\377" \ -+ "\25\377\313\0\377\376\313\0\377\376\314\2\377\375\315\2\377\375\315\1" \ -+ "\377\375\321\"\377\376\315/\377\375\311\36\377\375\331H\377\376\330F" \ -+ "\377\376\327@\377\376\327<\377\376\3266\377\376\324&\377\376\321\13\377" \ -+ "\376\317\10\377\375\321\33\377\375\324,\377\376\323)\377\376\321\31\377" \ -+ "\376\317\5\377\202\376\320\0\377\5\376\317\0\377\375\317\0\377\376\315" \ -+ "\0\377\375\316\0\377\376\316\0\377\202\377\317\0\377\12\377\315\0\377" \ -+ "\377\314\0\377\374\311\3\377\370\303\14\361\362\276\34\320\353\274;\223" \ -+ "\346\276aK\352\2718\21\344\300m\0\352\322\224\0\335\0\0\0\0\1\251\207" \ -+ "\0\200\217\251\207\0\377\1\251\207\0\200\214\0\0\0\0\1\251\207\0\277" \ -+ "\217\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207" \ -+ "\0\377\1\251\207\0@\245\0\0\0\0\4\251\207\0\20\251\207\0p\251\207\0\257" \ -+ "\251\207\0\337\203\251\207\0\377\4\251\207\0\337\251\207\0\257\251\207" \ -+ "\0p\251\207\0\20\262\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v" \ -+ "\0\250\204K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254" \ -+ "\215a\0\257\211N\0\273\233s\0\275\217\77\0\251\207\0\277\211\251\207" \ -+ "\0\377\15\252\207\14\377\305\224\22\377\370\302\0\377\377\314\0\377\377" \ -+ "\307\0\377\377\306\0\377\376\307\0\377\376\310\1\377\375\310\0\377\375" \ -+ "\311\1\377\376\311\1\377\377\312\0\377\376\313\0\377\202\377\313\0\377" \ -+ "\23\376\314\0\377\376\315\0\377\376\316\33\377\375\307\33\377\375\326" \ -+ "C\377\376\331J\377\376\332O\377\376\333R\377\376\334U\377\376\334P\377" \ -+ "\376\3308\377\376\324%\377\376\324+\377\376\3257\377\376\3255\377\376" \ -+ "\322(\377\376\321\26\377\376\320\17\377\377\317\5\377\202\377\320\0\377" \ -+ "\17\377\320\3\377\377\320\7\377\376\312\1\377\372\305\4\377\364\300\22" \ -+ "\350\356\274&\311\346\2664\242\342\263:h\335\260W4\341\266Y\10\350\272" \ -+ "A\0\342\276r\0\353\2724\0\345\300g\0\352\322\223\0\335\0\0\0\0\1\251" \ -+ "\207\0\200\217\251\207\0\377\1\251\207\0\200\214\0\0\0\0\1\251\207\0" \ -+ "\277\217\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251" \ -+ "\207\0\377\1\251\207\0@\342\0\0\0\0\16\270\250\223\0\260\234\202\0\257" \ -+ "\225v\0\250\204K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y" \ -+ "\0\254\215a\0\257\211N\0\273\233s\0\275\217\77\0\251\207\0\277\212\251" \ -+ "\207\0\377\6\251\207\3\377\266\214\26\377\352\262\3\377\377\313\0\377" \ -+ "\377\311\1\377\377\306\1\377\202\377\307\0\377*\376\307\0\377\375\307" \ -+ "\1\377\375\311\1\377\376\311\1\377\376\311\0\377\376\312\0\377\376\313" \ -+ "\1\377\376\313\0\377\377\312\0\377\376\315&\377\376\325B\377\376\332" \ -+ "T\377\376\335\\\377\376\336`\377\375\341b\377\377\341d\377\377\342g\377" \ -+ "\377\341c\377\377\336Y\377\377\335P\377\377\334F\377\377\332=\377\377" \ -+ "\3275\377\377\323.\377\375\316$\377\370\307\40\377\357\277)\377\340\263" \ -+ "+\377\333\2563\313\340\265N\201\333\264aU\335\261S0\330\261c\24\324\257" \ -+ "v\0\337\264N\0\336\261Q\0\342\267W\0\351\272\77\0\343\276o\0\353\272" \ -+ "4\0\345\300g\0\352\322\223\0\335\0\0\0\0\1\251\207\0\200\217\251\207" \ -+ "\0\377\1\251\207\0\200\214\0\0\0\0\1\251\207\0\277\217\251\207\0\377" \ -+ "\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251\207" \ -+ "\0@\342\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0" \ -+ "\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211" \ -+ "N\0\273\233s\0\275\217\77\0\251\207\0\277\214\251\207\0\377\6\257\213" \ -+ "\31\377\327\242\17\377\374\307\0\377\377\314\0\377\377\313\1\377\377" \ -+ "\310\0\377\202\377\307\0\377\1\376\311\0\377\202\377\312\0\377\7\377" \ -+ "\313\3\377\377\315\1\377\377\316\11\377\377\321\36\377\377\323%\377\377" \ -+ "\333N\377\377\337\\\377\202\377\337Y\377\34\377\334V\377\375\331N\377" \ -+ "\374\330P\377\372\324L\377\365\314G\377\355\302>\377\346\273:\377\334" \ -+ "\263:\377\321\2504\377\307\234#\377\274\225\40\377\265\221\34\377\257" \ -+ "\213\15\377\253\211\5\377\252\210\1\260\324\257p\0\323\265\206\0\336" \ -+ "\265]\0\333\262Y\0\326\260o\0\337\264L\0\336\261Q\0\342\267W\0\351\272" \ -+ "\77\0\343\276o\0\353\2724\0\345\300g\0\352\322\223\0\335\0\0\0\0\1\251" \ -+ "\207\0\200\217\251\207\0\377\1\251\207\0\200\214\0\0\0\0\1\251\207\0" \ -+ "\277\217\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251" \ -+ "\207\0\377\1\251\207\0@\342\0\0\0\0\16\270\250\223\0\260\234\202\0\257" \ -+ "\225v\0\250\204K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y" \ -+ "\0\254\215a\0\257\211N\0\273\233s\0\275\217\77\0\251\207\0\277\215\251" \ -+ "\207\0\377\33\254\211\11\377\277\222\30\377\336\250\16\377\363\275\7" \ -+ "\377\374\305\6\377\377\311\10\377\377\312\7\377\377\310\5\377\375\310" \ -+ "\10\377\376\312\22\377\373\307\23\377\372\313!\377\370\310+\377\363\302" \ -+ "+\377\361\3022\367\357\301B\361\352\275B\341\335\2606\377\324\246-\377" \ -+ "\316\2441\377\310\2423\377\277\225\37\377\273\225\37\377\270\223\33\377" \ -+ "\261\214\17\377\256\213\14\377\252\211\5\377\206\251\207\0\377\16\251" \ -+ "\207\0\357\326\260j\0\325\265\200\0\336\265[\0\333\262Y\0\326\260o\0" \ -+ "\337\264L\0\336\261Q\0\342\267W\0\351\272\77\0\343\276o\0\353\2724\0" \ -+ "\345\300g\0\352\322\223\0\335\0\0\0\0\1\251\207\0\200\217\251\207\0\377" \ -+ "\1\251\207\0\200\214\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251" \ -+ "\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251\207\0@\342" \ -+ "\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0" \ -+ "\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211N\0\273" \ -+ "\233s\0\275\217\77\0\251\207\0\277\217\251\207\0\377\21\254\207\11\377" \ -+ "\263\213#\332\312\232<\234\322\2371\267\330\2464\266\333\254B\270\330" \ -+ "\253H\247\316\2339\207\323\250S\212\313\227 +# + +# wrapper to call pactl as truser +pactl() +{ + /bin/su - truser -c "/usr/bin/pactl ${1} ${2} ${3}" +} + +# get the volume and return the volume in % +pa_get_sink_volume() +{ + VOLUME=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -o '[0-9]\+%' | head -n1 | tr -d %) +} + +# get the volume and return the volume in % +pa_get_source_volume() +{ + VOLUME=$(pactl get-source-volume @DEFAULT_SOURCE@ | grep -o '[0-9]\+%' | head -n1 | tr -d %) +} + +# get the mute mode of the output sink +pa_get_sink_mute() +{ + MUTE=$(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print ($2=="yes")?1:0}') +} + +# get the mute mode of the input source +pa_get_source_mute() +{ + MUTE=$(pactl get-source-mute @DEFAULT_SOURCE@ | awk '{print ($2=="yes")?1:0}') +} + +# function to optionally output the current +# speaker volume or source input in percentage +osd_notify() +{ + if [ -x /usr/bin/osd_cat ]; then + if [ "${MUTE}" == "1" ]; then + VOLUME="0" + MUTETEXT=" (mute)" + else + MUTETEXT="" + fi + + if [ "${TARGET}" == "speaker" ]; then + COLOR=green + TEXT="VOL:" + elif [ "${TARGET}" == "mic" ]; then + COLOR=orange + TEXT="MIC:" + fi + + # kill previous osd_cat + pkill /usr/bin/osd_cat + export LANG=en_US.UTF-8 + export DISPLAY=:0 + /usr/bin/osd_cat -A center -p bottom -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c "${COLOR}" -s 5 -d 3 --barmode=percentage -P "${VOLUME}" -T "${TEXT} ${VOLUME}%${MUTETEXT}" & + fi +} + +############################################ +# main starts here + +TARGET=${1} +CMD=${2} + +if [ "${TARGET}" == "speaker" ]; then + if [ "${CMD}" == "toggle" ]; then + pactl set-sink-mute @DEFAULT_SINK@ "${CMD}" + else + pactl set-sink-volume @DEFAULT_SINK@ "${CMD}" + pactl set-sink-mute @DEFAULT_SINK@ 0 + fi + pa_get_sink_volume + pa_get_sink_mute +elif [ "${TARGET}" == "mic" ]; then + if [ "${CMD}" == "toggle" ]; then + pactl set-source-mute @DEFAULT_SOURCE@ "${CMD}" + else + pactl set-source-volume @DEFAULT_SOURCE@ "${CMD}" + pactl set-source-mute @DEFAULT_SOURCE@ 0 + fi + pa_get_source_volume + pa_get_source_mute +fi + +osd_notify + +exit 0 diff --git a/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh b/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh index f83e94e..18c761c 100755 --- a/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh +++ b/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh @@ -2,4 +2,4 @@ # # kill all qutselect related sessions and return to the qutselect GUI # -pkill "tlclient.bin|xfreerdp|rdesktop|vncviewer" +pkill "tlclient.bin|xfreerdp|rdesktop|vncviewer|remote-viewer|chrome|zoom" diff --git a/buildroot-external/rootfs-overlay/bin/qutselect-lock.sh b/buildroot-external/rootfs-overlay/bin/qutselect-lock.sh index 45fc250..803ec6f 100755 --- a/buildroot-external/rootfs-overlay/bin/qutselect-lock.sh +++ b/buildroot-external/rootfs-overlay/bin/qutselect-lock.sh @@ -12,7 +12,7 @@ if /usr/bin/pgrep "tlclient.bin" >/dev/null 2>&1; then else # otherwise we check for xfreerdp or rdesktop and then use Windows+L to lock # the windows session - if /usr/bin/pgrep "xfreerdp|rdesktop|vncviewer" >/dev/null 2>&1; then + if /usr/bin/pgrep "xfreerdp|rdesktop|vncviewer|remote-viewer" >/dev/null 2>&1; then /bin/su - truser -c "DISPLAY=:0.0 /usr/bin/xdotool keydown Super_L key l keyup Super_L" & else # bring the system into standby mode diff --git a/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_rdp.sh b/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_rdp.sh deleted file mode 100755 index f908bcd..0000000 --- a/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_rdp.sh +++ /dev/null @@ -1,204 +0,0 @@ -#!/bin/sh -# shellcheck shell=dash disable=SC2169 -# -# This is a startup script for qutselect which initates a -# RDP session to a windows server either via rdesktop or uttsc -# -# It receives the following inputs: -# -# $1 = PID of qutselect -# $2 = serverType (SRSS, RDP, VNC) -# $3 = 'true' if dtlogin mode was on while qutselect was running -# $4 = the resolution (either 'fullscreen' or 'WxH') -# $5 = the selected color depth (8, 16, 24) -# $6 = the current max. color depth (8, 16, 24) -# $7 = the selected keylayout (e.g. 'de' or 'en') -# $8 = the domain (e.g. 'FZR', used for RDP) -# $9 = the username -# $10 = the servername (hostname) to connect to -# - -XFREERDP=/usr/bin/xfreerdp -TLSSOPASSWORD=/opt/thinlinc/bin/tl-sso-password -TLBESTWINSERVER=/opt/thinlinc/bin/tl-best-winserver - -##################################################### -# check that we have 10 command-line options at hand -if [ $# -lt 10 ]; then - echo "ERROR: missing arguments!" - exit 2 -fi - -# catch all arguments is some local variables -#parentPID="${1}" -#serverType="${2}" -dtlogin="${3}" -resolution="${4}" -#colorDepth="${5}" -#curDepth="${6}" -keyLayout="${7}" -domain="${8}" -username="${9}" -serverName="${10}" - -# if this is a ThinLinc session we can grab the password -# using the tl-sso-password command in case the user wants -# to connect to one of our servers (FZR domain) -if [ -x ${TLSSOPASSWORD} ]; then - if ${TLSSOPASSWORD} -c && [ "${domain}" = "FZR" ]; then - password=$(${TLSSOPASSWORD}) - fi -fi - -# read the password from stdin if not specified yet -if [ -z "${password}" ]; then - read -r password -fi - -# if the serverName contains more than one server we go and -# check via the check_nrpe command which server to prefer -serverList=$(echo "${serverName}" | tr -s ',' ' ') -numServers=$(echo "${serverList}" | wc -w) -if [ "${numServers}" -gt 1 ]; then - # check if we can find a suitable binary - if [ -x ${TLBESTWINSERVER} ]; then - bestServer=$(${TLBESTWINSERVER} "${serverList}") - res=$? - else - # as an alternative we search for the tool in the scripts subdir - # this tool also allows to override the username via -u - if [ -x "scripts/tl-best-winserver" ]; then - bestServer=$(scripts/tl-best-winserver -u "${username}" "${serverList}") - res=$? - else - # we don't have tl-best-winserver so lets simply take the first - # one in the list - bestServer=$(echo "${serverList}" | awk '{ print $1 }') - res=0 - fi - fi - if [ $res -eq 0 ]; then - serverName=${bestServer} - fi -fi - -# variable to prepare the command arguments -cmdArgs="" -RET=2 - -## XFREERDP -# if $cmdArgs is empty and xfreerdp exists use that one -if [ -z "${cmdArgs}" ] && [ -x ${XFREERDP} ]; then - - # resolution - if [ "${resolution}" = "fullscreen" ]; then - cmdArgs="$cmdArgs /f" - - # enable multi monitor support, but only if the two displays - # are not mirrored (offset = 0) - for r in $(xrandr | grep " connected" | cut -d " " -f3); do - x=$(echo "${r}" | cut -d "+" -f2) - - # check the x-offset for being non-zero and if so - # enable multimon support - if [ "${x}" -ne 0 ]; then - cmdArgs="$cmdArgs /multimon" - break - fi - done - - else - cmdArgs="$cmdArgs /size:${resolution}" - fi - - # color depth - #cmdArgs="$cmdArgs /bpp:${colorDepth}" - cmdArgs="$cmdArgs /bpp:32" - - # keyboard - if [ "${keyLayout}" = "de" ]; then - cmdArgs="$cmdArgs /kbd:0x407" # German - else - cmdArgs="$cmdArgs /kbd:0x409" # US - fi - - # add domain - if [ "x${domain}" != "xNULL" ]; then - cmdArgs="$cmdArgs /d:${domain}" - else - cmdArgs="$cmdArgs /d:FZR" - fi - - # add username - if [ "x${username}" != "xNULL" ]; then - cmdArgs="$cmdArgs /u:${username}" - else - if [ "x${domain}" != "xNULL" ]; then - cmdArgs="$cmdArgs /u:${domain}\\" - fi - fi - - # set the window title to the server name we connect to - cmdArgs="$cmdArgs /t:${username}@${serverName}" - - # ignore the certificate in case of encryption - cmdArgs="$cmdArgs /cert-ignore" - - # add the usb path as a local path. if TLSESSIONDATA is set - # we are in a thinlinc session and thus have to forward - # ${HOME}/thindrives/mnt instead - if [ -n "${TLSESSIONDATA}" ]; then - mkdir -p "${TLSESSIONDATA}/drives" - cmdArgs="$cmdArgs /drive:USB,${TLSESSIONDATA}/drives/" - else - if [ -n "${SUN_SUNRAY_TOKEN}" ]; then - cmdArgs="$cmdArgs /drive:USB,/tmp/SUNWut/mnt/${USER}/" - else - cmdArgs="$cmdArgs /drive:USB,/run/usbmount/" - fi - fi - - # enable sound redirection - cmdArgs="$cmdArgs /sound:sys:pulse" - - # enable audio input redirection - cmdArgs="$cmdArgs /microphone:sys:pulse" - - # performance optimization options - cmdArgs="$cmdArgs +auto-reconnect +fonts +window-drag -menu-anims -themes +wallpaper +heartbeat /dynamic-resolution /gdi:hw /rfx /gfx:avc444 +gfx-thin-client /video /network:lan" - - # if we are not in dtlogin mode we go and - # output the rdesktop line that is to be executed - if [ "x${dtlogin}" != "xtrue" ]; then - - # add clipboard synchronization (only required in non-dtlogin mode) - cmdArgs="$cmdArgs /clipboard" - - echo "${XFREERDP} ${cmdArgs} /v:${serverName}" - else - # disable the full-screen toggling and floatbar in case we are in dtlogin mode - cmdArgs="$cmdArgs -toggle-fullscreen" - fi - - # increase logging - cmdArgs="$cmdArgs /log-level:INFO" - - # run xfreerdp finally - if [ "x${password}" != "xNULL" ]; then - cmdArgs="$cmdArgs /from-stdin" - # shellcheck disable=SC2086 - echo "${password}" | ${XFREERDP} ${cmdArgs} /v:"${serverName}" >/var/log/xfreerdp-$$.log 2>&1 & - RET=$? - else - # shellcheck disable=SC2086 - ${XFREERDP} ${cmdArgs} /v:"${serverName}" >var/log/xfreerdp-$$.log 2>&1 & - RET=$? - fi - - if [ ${RET} -ne 0 ]; then - cmdArgs="" - echo "ERROR: couldn't start xfreerdp" - fi -fi - -exit ${RET} diff --git a/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_vnc.sh b/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_vnc.sh deleted file mode 100755 index cfbab78..0000000 --- a/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_vnc.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh -# -# This is a startup script for qutselect which initates a -# VNC session to a windows server via 'vncviewer' -# -# It receives the following inputs: -# -# $1 = PID of qutselect -# $2 = serverType (SRSS, RDP, VNC) -# $3 = 'true' if dtlogin mode was on while qutselect was running -# $4 = the resolution (either 'fullscreen' or 'WxH') -# $5 = the selected color depth (8, 16, 24) -# $6 = the current max. color depth (8, 16, 24) -# $7 = the selected keylayout (e.g. 'de' or 'en') -# $8 = the domain (e.g. 'FZR', used for RDP) -# $9 = the username -# $10 = the servername (hostname) to connect to - -VNCVIEWER=/lib/tlclient/vncviewer - -##################################################### -# check that we have 10 command-line options at hand -if [ $# -lt 10 ]; then - printf "ERROR: missing arguments!" - exit 2 -fi - -# catch all arguments is some local variables -#parentPID="${1}" -#serverType="${2}" -dtlogin="${3}" -resolution="${4}" -#colorDepth="${5}" -#curDepth="${6}" -#keyLayout="${7}" -#domain="${8}" -#username="${9}" -serverName="${10}" - -# read the password from stdin -read -r password - -# variable to prepare the command arguments -cmdArgs="-shared -menukey=" - -# resolution -if [ "${resolution}" = "fullscreen" ]; then - cmdArgs="$cmdArgs -fullscreen -fullscreensystemkeys" -fi - -# run vncviewer finally -if [ "${password}" != "NULL" ]; then - if [ "${dtlogin}" != "true" ]; then - echo "${VNCVIEWER} ${cmdArgs} ${serverName}" - fi - # shellcheck disable=SC2086 - VNC_PASSWORD="${password}" ${VNCVIEWER} ${cmdArgs} "${serverName}" 2>/dev/null >/dev/null - RET=$? -else - if [ "${dtlogin}" != "true" ]; then - echo "${VNCVIEWER} ${cmdArgs} ${serverName}" - fi - # shellcheck disable=SC2086 - ${VNCVIEWER} ${cmdArgs} "${serverName}" 2>/dev/null >/dev/null - RET=$? -fi - -if [ $RET != 0 ]; then - echo "ERROR: ${VNCVIEWER} returned invalid return code ($RET)" - exit 2 -fi - -exit ${RET} diff --git a/buildroot-external/rootfs-overlay/bin/umounter.sh b/buildroot-external/rootfs-overlay/bin/umounter.sh index e41f7bc..2a198da 100755 --- a/buildroot-external/rootfs-overlay/bin/umounter.sh +++ b/buildroot-external/rootfs-overlay/bin/umounter.sh @@ -1,8 +1,35 @@ #!/bin/sh -grep /media/usb /proc/mounts | awk '{ print $2 }' | while read -r MNTPATH; do + +# show an OSD display +if [ -x /usr/bin/osd_cat ]; then + export LANG=en_US.UTF-8 + export DISPLAY=:0 + echo "Unmounting USB..." | /usr/bin/osd_cat -A center -p top -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c green -s 5 -d 20 & +fi + +# umount all stuff including bind mounts +grep "/media/usb" /proc/mounts | awk '{ print $2 }' | while read -r MNTPATH; do /bin/umount "${MNTPATH}" done -grep /usbmount /proc/mounts | awk '{ print $2 }' | while read -r BINDPATH; do +grep "/usbmount" /proc/mounts | awk '{ print $2 }' | while read -r BINDPATH; do /bin/umount "${BINDPATH}" /bin/rmdir "${BINDPATH}" done + +# check if umount worked fine +if [ -x /usr/bin/osd_cat ]; then + if ! grep -q -m1 "/media/usb" /proc/mounts 2>/dev/null && + ! grep -q -m1 "/usbmount" /proc/mounts 2>/dev/null; then + RESULT="OK" + POS=180 + COLOR=green + else + RESULT="FAIL" + POS=200 + COLOR=red + fi + export LANG=en_US.UTF-8 + export DISPLAY=:0 + echo "${RESULT}" | /usr/bin/osd_cat -A center -p top -i ${POS} -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c ${COLOR} -s 5 -d 2 + pkill osd_cat +fi diff --git a/buildroot-external/rootfs-overlay/bin/wm-startup.sh b/buildroot-external/rootfs-overlay/bin/wm-startup.sh index 906b2fa..8e9d8ee 100755 --- a/buildroot-external/rootfs-overlay/bin/wm-startup.sh +++ b/buildroot-external/rootfs-overlay/bin/wm-startup.sh @@ -61,6 +61,13 @@ create_thinlinc_conf -remove _NET_DESKTOP_NAMES \ -remove _NET_CURRENT_DESKTOP 2> /dev/null +# set solid background color in root window +/usr/bin/setrootpix "#32436B" + +# start compositor process (xcompmgr) +/usr/bin/xcompmgr & +sleep 0.2 + # start wm (openbox is the default) if [ -z "${SESSION_0_WM}" ]; then SESSION_0_WM=/usr/bin/openbox @@ -72,11 +79,14 @@ if ! wait_for_wm; then echo "$0: Timeout waiting for wm to start" fi -# set solid background color in root window -/usr/bin/xsetroot -solid "#32436B" +# move mouse pointer off screen to hide it in case +# a user wants this upon startup +if [ "${SESSION_0_HIDECURSOR}" = "true" ]; then + /usr/bin/xdotool mousemove 0 5000 +fi # update the default pulseaudio sink -/bin/pa-update-default-sink.sh +#/bin/pa-update-default-sink.sh # if SESSION_0_STARTUP is not set we start qutselect-startup.sh as the # default topmost application @@ -86,7 +96,7 @@ fi # start qutselect unlimited while true; do - if ! ${SESSION_0_XSTARTUP} >/var/log/xm-startup.log 2>&1; then + if ! ${SESSION_0_XSTARTUP}; then break fi done diff --git a/buildroot-external/rootfs-overlay/etc/X11/Xsession b/buildroot-external/rootfs-overlay/etc/X11/Xsession index 3146ba5..2e551e3 100755 --- a/buildroot-external/rootfs-overlay/etc/X11/Xsession +++ b/buildroot-external/rootfs-overlay/etc/X11/Xsession @@ -21,15 +21,15 @@ message () { fi } -message_nonl () { - # pretty-print messages of arbitrary length (no trailing newline); use - # xmessage if it is available and $DISPLAY is set - MESSAGE="$PROGNAME: $*" - echo -n "$MESSAGE" | fold -s -w "${COLUMNS:-80}" >&2; - if [ -n "$DISPLAY" ] && command -v xmessage > /dev/null 2>&1; then - echo -n "$MESSAGE" | fold -s -w "${COLUMNS:-80}" | xmessage -center -file - - fi -} +#message_nonl () { +# # pretty-print messages of arbitrary length (no trailing newline); use +# # xmessage if it is available and $DISPLAY is set +# MESSAGE="$PROGNAME: $*" +# echo -n "$MESSAGE" | fold -s -w "${COLUMNS:-80}" >&2; +# if [ -n "$DISPLAY" ] && command -v xmessage > /dev/null 2>&1; then +# echo -n "$MESSAGE" | fold -s -w "${COLUMNS:-80}" | xmessage -center -file - +# fi +#} errormsg () { # exit script with error @@ -37,16 +37,16 @@ errormsg () { exit 1 } -internal_errormsg () { - # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message - # One big call to message() for the sake of xmessage; if we had two then - # the user would have dismissed the error we want reported before seeing the - # request to report it. - errormsg "$*" \ - "Please report the installed version of the \"x11-common\"" \ - "package and the complete text of this error message to" \ - "." -} +#internal_errormsg () { +# # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message +# # One big call to message() for the sake of xmessage; if we had two then +# # the user would have dismissed the error we want reported before seeing the +# # request to report it. +# errormsg "$*" \ +# "Please report the installed version of the \"x11-common\"" \ +# "package and the complete text of this error message to" \ +# "." +#} # initialize variables for use by all session scripts diff --git a/buildroot-external/rootfs-overlay/etc/X11/Xsession.d/99x11-common_start b/buildroot-external/rootfs-overlay/etc/X11/Xsession.d/99x11-common_start index 559f159..d834285 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/Xsession.d/99x11-common_start +++ b/buildroot-external/rootfs-overlay/etc/X11/Xsession.d/99x11-common_start @@ -1,6 +1,6 @@ # $Id: 99x11-common_start 305 2005-07-03 18:51:43Z dnusinow $ # start windows manager and topmost app not exiting at all. -exec /bin/wm-startup.sh +exec /bin/wm-startup.sh >/var/log/wm-startup.log 2>&1 # vim:set ai et sts=2 sw=2 tw=80: diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf index 6043d56..03d089e 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf @@ -1,11 +1,4 @@ Section "Module" - Load "fb" - Load "fbdevhw" - Load "wfb" - Load "int10" - Load "vbe" - Load "vgahw" - Load "shadow" - Load "shadowfb" - Load "exa" + Load "glx" + Load "glamoregl" EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/01-mouse.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/01-mouse.conf deleted file mode 100644 index f24b4eb..0000000 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/01-mouse.conf +++ /dev/null @@ -1,5 +0,0 @@ -Section "InputClass" - Identifier "Mouse Defaults" - MatchIsPointer "on" - Option "Resolution" "800" -EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/10-evdev.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/10-evdev.conf deleted file mode 100644 index cc83ab2..0000000 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/10-evdev.conf +++ /dev/null @@ -1,40 +0,0 @@ -# -# Catch-all evdev loader for udev-based systems -# We don't simply match on any device since that also adds accelerometers -# and other devices that we don't really want to use. The list below -# matches everything but joysticks. - -Section "InputClass" - Identifier "evdev pointer catchall" - MatchIsPointer "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev keyboard catchall" - MatchIsKeyboard "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev touchpad catchall" - MatchIsTouchpad "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev tablet catchall" - MatchIsTablet "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev touchscreen catchall" - MatchIsTouchscreen "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/12-screen.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/12-screen.conf index da0a511..47041bf 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/12-screen.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/12-screen.conf @@ -1,33 +1,5 @@ Section "Screen" - Identifier "Screen0" - Device "Card0" - Monitor "Monitor0" - SubSection "Display" - Viewport 0 0 - Depth 1 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 4 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 8 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 15 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 16 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 24 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 32 - EndSubSection + Identifier "Screen0" + Device "Intel Graphics" + DefaultDepth 24 EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/15-dri.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/15-dri.conf deleted file mode 100644 index 4cfe2e5..0000000 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/15-dri.conf +++ /dev/null @@ -1,3 +0,0 @@ -Section "Dri" - Mode 0660 -EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf index 9748b4d..e5b3e4e 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf @@ -1,6 +1,5 @@ Section "Device" - Identifier "Intel Graphics" - Driver "intel" - Option "AccelMethod" "sna" - Option "DRI" "iris" + Identifier "Intel Graphics" + Driver "modesetting" + Option "AccelMethod" "glamor" EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/40-libinput.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/40-libinput.conf new file mode 100644 index 0000000..43e22db --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/40-libinput.conf @@ -0,0 +1,37 @@ +# libinput catch-all configuration (Xorg) +# This replaces legacy evdev/synaptics catch-alls. + +Section "InputClass" + Identifier "libinput pointer catchall" + MatchIsPointer "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput keyboard catchall" + MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchpad catchall" + MatchIsTouchpad "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchscreen catchall" + MatchIsTouchscreen "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput tablet catchall" + MatchIsTablet "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/70-synaptics.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/70-synaptics.conf deleted file mode 100644 index aa50456..0000000 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/70-synaptics.conf +++ /dev/null @@ -1,46 +0,0 @@ -# Example xorg.conf.d snippet that assigns the touchpad driver -# to all touchpads. See xorg.conf.d(5) for more information on -# InputClass. -# DO NOT EDIT THIS FILE, your distribution will likely overwrite -# it when updating. Copy (and rename) this file into -# /etc/X11/xorg.conf.d first. -# Additional options may be added in the form of -# Option "OptionName" "value" -# -Section "InputClass" - Identifier "touchpad catchall" - Driver "synaptics" - MatchIsTouchpad "on" -# This option is recommend on all Linux systems using evdev, but cannot be -# enabled by default. See the following link for details: -# http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html -# MatchDevicePath "/dev/input/event*" -EndSection - -Section "InputClass" - Identifier "touchpad ignore duplicates" - MatchIsTouchpad "on" - MatchOS "Linux" - MatchDevicePath "/dev/input/mouse*" - Option "Ignore" "on" -EndSection - -# This option enables the bottom right corner to be a right button on clickpads -# and the right and middle top areas to be right / middle buttons on clickpads -# with a top button area. -# This option is only interpreted by clickpads. -Section "InputClass" - Identifier "Default clickpad buttons" - MatchDriver "synaptics" - Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0" - Option "SecondarySoftButtonAreas" "58% 0 0 15% 42% 58% 0 15%" -EndSection - -# This option disables software buttons on Apple touchpads. -# This option is only interpreted by clickpads. -Section "InputClass" - Identifier "Disable clickpad buttons on Apple touchpads" - MatchProduct "Apple|bcm5974" - MatchDriver "synaptics" - Option "SoftButtonAreas" "0 0 0 0 0 0 0 0" -EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/90-input.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/90-input.conf index 7628653..581d674 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/90-input.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/90-input.conf @@ -1,6 +1,4 @@ Section "ServerFlags" - Option "AutoAddDevices" "true" - Option "AutoEnableDevices" "true" - Option "AllowEmptyInput" "true" - Option "IgnoreABI" "true" + # Useful for headless/late-attached input devices. + Option "AllowEmptyInput" "true" EndSection diff --git a/buildroot-external/rootfs-overlay/etc/dhcpcd.conf b/buildroot-external/rootfs-overlay/etc/dhcpcd.conf index a4115e5..a4d3a08 100644 --- a/buildroot-external/rootfs-overlay/etc/dhcpcd.conf +++ b/buildroot-external/rootfs-overlay/etc/dhcpcd.conf @@ -54,3 +54,6 @@ env hostname_fqdn=false # setup NTP to use chrony env NTP_CONF=/etc/chrony.conf + +# allow specific interfaces (eth*, wlan*) only +allowinterfaces eth* wlan* diff --git a/buildroot-external/rootfs-overlay/etc/fstab b/buildroot-external/rootfs-overlay/etc/fstab new file mode 100644 index 0000000..4ee2725 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/fstab @@ -0,0 +1,10 @@ +# +/dev/root / ext2 rw,noauto 0 1 +LABEL=bootfs /boot vfat rw,noauto 0 0 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0 +tmpfs /dev/shm tmpfs mode=1777 0 0 +tmpfs /tmp tmpfs mode=1777 0 0 +tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 +tmpfs /opt tmpfs mode=1777,size=90% 0 0 +sysfs /sys sysfs defaults 0 0 diff --git a/buildroot-external/rootfs-overlay/etc/hotkeyd.conf b/buildroot-external/rootfs-overlay/etc/hotkeyd.conf index 3e95ffd..3e19614 100644 --- a/buildroot-external/rootfs-overlay/etc/hotkeyd.conf +++ b/buildroot-external/rootfs-overlay/etc/hotkeyd.conf @@ -22,6 +22,9 @@ RIGHTALT+F10 /bin/umounter.sh & LEFTALT+FN+F10 /bin/umounter.sh & RIGHTALT+FN+F10 /bin/umounter.sh & +# scrolllock keyboard language OSD +SCROLLLOCK /bin/display-kblayout.sh & + # SUN keyboard settings COPY /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Control_L key Insert keyup Control_L" & PASTE /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Shift_L key Insert keyup Shift_L" & @@ -29,12 +32,19 @@ CUT /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Shift_L key Delete 'k UNDO /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Control_L key z keyup Control_L" & # audo control hotkeys -VOLUMEUP /bin/su - truser -c "/usr/bin/amixer sset Master 5%+" & -VOLUMEDOWN /bin/su - truser -c "/usr/bin/amixer sset Master 5%-" & -MUTE /bin/su - truser -c "/usr/bin/amixer sset Master toggle" & -LEFTALT+KPPLUS /bin/su - truser -c "/usr/bin/amixer sset Master 5%+" & -RIGHTALT+KPPLUS /bin/su - truser -c "/usr/bin/amixer sset Master 5%+" & -LEFTALT+KPMINUS /bin/su - truser -c "/usr/bin/amixer sset Master 5%-" & -RIGHTALT+KPMINUS /bin/su - truser -c "/usr/bin/amixer sset Master 5%-" & -LEFTALT+KPASTERISK /bin/su - truser -c "/usr/bin/amixer sset Master toggle" & -RIGHTALT+KPASTERISK /bin/su - truser -c "/usr/bin/amixer sset Master toggle" & +VOLUMEUP /bin/pa-volume-control.sh speaker +5% & +VOLUMEDOWN /bin/pa-volume-control.sh speaker -5% & +MUTE /bin/pa-volume-control.sh speaker toggle & +MICMUTE /bin/pa-volume-control.sh mic toggle & +LEFTALT+KPPLUS /bin/pa-volume-control.sh speaker +5% & +RIGHTALT+KPPLUS /bin/pa-volume-control.sh speaker +5% & +LEFTALT+KPMINUS /bin/pa-volume-control.sh speaker -5% & +RIGHTALT+KPMINUS /bin/pa-volume-control.sh speaker -5% & +LEFTALT+KPASTERISK /bin/pa-volume-control.sh speaker toggle & +RIGHTALT+KPASTERISK /bin/pa-volume-control.sh speaker toggle & +LEFTSHIFT+KPPLUS /bin/pa-volume-control.sh mic +5% & +RIGHTSHIFT+KPPLUS /bin/pa-volume-control.sh mic +5% & +LEFTSHIFT+KPMINUS /bin/pa-volume-control.sh mic -5% & +RIGHTSHIFT+KPMINUS /bin/pa-volume-control.sh mic -5% & +LEFTSHIFT+KPASTERISK /bin/pa-volume-control.sh mic toggle & +RIGHTSHIFT+KPASTERISK /bin/pa-volume-control.sh mic toggle & diff --git a/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles b/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles index 3f7e8a0..c657bb9 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles +++ b/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles @@ -42,7 +42,7 @@ install_net_overlay() { # file (overlay.tar.bz2) and installs it on top # of the rootfs if /usr/bin/wget -q "${BASE_PATH}/overlay.pkg" -O "${TMPDIR}/overlay.pkg"; then - /bin/tar -C / -xf "${TMPDIR}/overlay.pkg" + /bin/tar -C / -xf "${TMPDIR}/overlay.pkg" --warning=no-timestamp fi } @@ -70,7 +70,7 @@ load_thinroot_hosts() { # put all additional groups matching the hostname # to the host variable - FOUND_GRP=$(grep -m1 -e ^"${HOSTNAME}" "${TMPDIR}/thinroot.hosts" | cut -d" " -f "2-") + FOUND_GRP=$(grep -m1 -i -e "^${HOSTNAME} " "${TMPDIR}/thinroot.hosts" | awk '{for(i=3;i<=NF;i++) {printf $i " "}}') if [[ -n "${FOUND_GRP}" ]]; then for grp in ${FOUND_GRP}; do # a comment lets us break out here @@ -83,7 +83,7 @@ load_thinroot_hosts() { done fi MAC_ADDR=$(cat "/sys/class/net/$(ip route show default | awk '/default/ {print $5}')/address") - FOUND_GRP=$(grep -m1 -i "${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | cut -d" " -f "2-") + FOUND_GRP=$(grep -m1 -i " ${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | awk '{for(i=3;i<=NF;i++) {printf $i " "}}') if [[ -n "${FOUND_GRP}" ]]; then for grp in ${FOUND_GRP}; do # a comment lets us break out here @@ -95,8 +95,11 @@ load_thinroot_hosts() { fi done - if [[ "${HOSTNAME}" == "localhost" ]]; then - NEW_HOSTNAME=$(grep -m1 -i "${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | cut -f1) + # if no hostname can be queried (localhost or thinroot fallback), then + # we try to get it from the thinroot.hosts file instead + if [[ "${HOSTNAME}" == "localhost" ]] || + [[ "${HOSTNAME}" == "thinroot" ]]; then + NEW_HOSTNAME=$(grep -m1 -i " ${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | cut -d" " -f1) if [[ -n "${NEW_HOSTNAME}" && "${NEW_HOSTNAME}" != "-" ]]; then /bin/hostname "${NEW_HOSTNAME}" HOSTNAME=$(/bin/hostname) @@ -159,7 +162,7 @@ setup_dns() { setup_ntp() { if [[ -n "${NET_TIME_SERVER}" ]]; then - echo "server ${NET_TIME_SERVER}" >>/etc/chrony.conf + echo "server ${NET_TIME_SERVER} prefer iburst" >>/etc/chrony.conf fi # add some standard/default settings @@ -189,11 +192,6 @@ setup_xconf() { sed -i "/Option .*AutoRepeat/c\\\tOption \"AutoRepeat\" \"${KEYBOARD_AUTOREPEAT}\"" /etc/X11/xorg.conf.d/00-keyboard.conf fi - # 01-mouse.conf - if [[ -n "${MOUSE_RESOLUTION}" ]]; then - sed -i "/Option .*Resolution/c\\\tOption \"Resolution\" \"${MOUSE_RESOLUTION}\"" /etc/X11/xorg.conf.d/01-mouse.conf - fi - # 10-serverlayout.conf if [[ -n "${SCREEN_BLANK_TIME}" ]]; then sed -i "/Option .*BlankTime/c\\\tOption \"BlankTime\" \"${SCREEN_BLANK_TIME}\"" /etc/X11/xorg.conf.d/10-serverlayout.conf @@ -207,6 +205,9 @@ setup_xconf() { if [[ -n "${SCREEN_OFF_TIME}" ]]; then sed -i "/Option .*OffTime/c\\\tOption \"OffTime\" \"${SCREEN_OFF_TIME}\"" /etc/X11/xorg.conf.d/10-serverlayout.conf fi + if xargs -n1 -a /proc/cmdline | grep -q "^debug$"; then + DONT_VT_SWITCH_STATE=FALSE + fi if [[ -n "${DONT_VT_SWITCH_STATE}" ]]; then sed -i "/Option .*DontVTSwitch/c\\\tOption \"DontVTSwitch\" \"${DONT_VT_SWITCH_STATE}\"" /etc/X11/xorg.conf.d/10-serverlayout.conf fi @@ -265,6 +266,7 @@ start() { mkdir -p "${TMPDIR}" mkdir -p "${ENVDIR}" mkdir -p /var/run/usbmount + chown truser:truser /opt # initialize everything init diff --git a/buildroot-external/rootfs-overlay/etc/init.d/S49chrony b/buildroot-external/rootfs-overlay/etc/init.d/S49chronyd similarity index 94% rename from buildroot-external/rootfs-overlay/etc/init.d/S49chrony rename to buildroot-external/rootfs-overlay/etc/init.d/S49chronyd index 9ef59fb..77835a1 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/S49chrony +++ b/buildroot-external/rootfs-overlay/etc/init.d/S49chronyd @@ -11,7 +11,7 @@ test -x $DAEMON || exit 0 init() { # retrieve NTPSERVERS from chrony.conf if [[ -e /etc/chrony.conf ]]; then - NTPSERVERS=$(grep server /etc/chrony.conf | awk '{ print $2 }' | xargs echo) + NTPSERVERS=$(grep -e "^server " /etc/chrony.conf | cut -d' ' -f2 | xargs echo) fi # make sure /var/lib/chrony exists so that the drift file diff --git a/buildroot-external/rootfs-overlay/etc/init.d/S60hotkeyd b/buildroot-external/rootfs-overlay/etc/init.d/S60hotkeyd deleted file mode 100755 index 66f4dca..0000000 --- a/buildroot-external/rootfs-overlay/etc/init.d/S60hotkeyd +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -# shellcheck shell=dash -# -# start/stop hotkey daemon -# - -start() { - echo -n "Starting hotkeyd: " - start-stop-daemon -S -q -b -m -p /var/run/hotkeyd.pid --exec /bin/hotkeyd -- -q - echo "OK" -} - -stop () { - echo -n "Stopping hotkeyd: " - start-stop-daemon -K -q -p /var/run/hotkeyd.pid - echo "OK" -} - -restart() { - stop - sleep 1 - start -} - -case "$1" in - start) - start - ;; - stop) - stop - ;; - restart|reload) - restart - ;; - *) - echo "Usage: $0 {start|stop|restart}" - exit 1 -esac - -exit $? diff --git a/buildroot-external/rootfs-overlay/etc/init.d/S99SetupLEDs b/buildroot-external/rootfs-overlay/etc/init.d/S99SetupLEDs index 388df82..5f13976 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/S99SetupLEDs +++ b/buildroot-external/rootfs-overlay/etc/init.d/S99SetupLEDs @@ -12,8 +12,13 @@ # leds accordingly case "${PLATFORM}" in rpi*) - LED_GREEN="/sys/class/leds/led0" - LED_RED="/sys/class/leds/led1" + if grep -q "Pi 400" /proc/device-tree/model 2>/dev/null; then + LED_GREEN="/sys/class/leds/PWR" + LED_RED= + else + LED_GREEN="/sys/class/leds/ACT" + LED_RED="/sys/class/leds/PWR" + fi ;; tinkerboard*) LED_GREEN="/sys/class/leds/led-0" diff --git a/buildroot-external/rootfs-overlay/etc/init.d/rcK b/buildroot-external/rootfs-overlay/etc/init.d/rcK index 0906a9a..3975f6f 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/rcK +++ b/buildroot-external/rootfs-overlay/etc/init.d/rcK @@ -1,5 +1,5 @@ #!/bin/sh -# shellcheck shell=dash disable=SC1090,SC2169,SC3010,SC3057 +# shellcheck shell=dash disable=SC2169 source=/dev/null # # Stop all init scripts in /etc/init.d # executing them in reversed numerical order. @@ -10,6 +10,11 @@ for i in $(ls -r /etc/init.d/S??*) ;do # Ignore dangling symlinks (if any). [[ ! -f "${i}" ]] && continue + # make sure psplash is running + if ! pgrep -n /usr/bin/psplash >/dev/null 2>&1; then + /usr/bin/psplash -n 2>/dev/null & + fi + # put the psplash progess bar to the # corresponding level name=${i##*/} @@ -33,5 +38,13 @@ for i in $(ls -r /etc/init.d/S??*) ;do esac done +# make sure psplash is running +if ! pgrep -n /usr/bin/psplash >/dev/null 2>&1; then + /usr/bin/psplash -n 2>/dev/null & +fi + /usr/bin/psplash-write "MSG Rebooting..." /usr/bin/psplash-write "PROGRESS 0" + +# quit psplash +/usr/bin/psplash-write "QUIT" diff --git a/buildroot-external/rootfs-overlay/etc/init.d/rcS b/buildroot-external/rootfs-overlay/etc/init.d/rcS index 6e3976b..cbf64d6 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/rcS +++ b/buildroot-external/rootfs-overlay/etc/init.d/rcS @@ -1,19 +1,36 @@ #!/bin/sh -# shellcheck shell=dash disable=SC1090,SC2169,SC3010,SC3057 +# shellcheck shell=dash disable=SC2169 source=/dev/null # # Start all init scripts in /etc/init.d # executing them in numerical order. +# make sure we have a secure umask +umask 0002 + +# mount all filesystems +/bin/mount -a + +# create /var/run, /var/cache and /run/lock +/bin/mkdir -p /var/run /var/cache /run/lock + +# create ld.so.cache file +/sbin/ldconfig -C /var/cache/ld.so.cache + for i in /etc/init.d/S??* ;do # Ignore dangling symlinks (if any). [[ ! -f "${i}" ]] && continue + # make sure psplash is running + if ! pgrep -n /usr/bin/psplash >/dev/null 2>&1; then + /usr/bin/psplash -n 2>/dev/null & + fi + # put the psplash progess bar to the # corresponding level name=${i##*/} num=${name:1:2} - /usr/bin/psplash-write "MSG ${name:3}..." + /usr/bin/psplash-write "MSG Starting ${name:3}..." /usr/bin/psplash-write "PROGRESS $((${num#0}+1))" case "${i}" in @@ -32,4 +49,16 @@ for i in /etc/init.d/S??* ;do esac done +# make sure psplash is running +if ! pgrep -n /usr/bin/psplash >/dev/null 2>&1; then + /usr/bin/psplash -n 2>/dev/null & +fi + /usr/bin/psplash-write "PROGRESS 100" + +[[ -r /VERSION ]] && . /VERSION + +echo "Finished Boot: thinRoot ${VERSION} (${PRODUCT})" + +# quit psplash after 5 seconds +(sleep 5; /usr/bin/psplash-write "QUIT") & diff --git a/buildroot-external/rootfs-overlay/etc/inittab b/buildroot-external/rootfs-overlay/etc/inittab index a079bee..eb5e866 100644 --- a/buildroot-external/rootfs-overlay/etc/inittab +++ b/buildroot-external/rootfs-overlay/etc/inittab @@ -13,16 +13,15 @@ # action == one of sysinit, respawn, askfirst, wait, and once # process == program to run -# Startup the system -null::sysinit:/bin/mount -t proc proc /proc -null::sysinit:/bin/mkdir -p /dev/pts -null::sysinit:/bin/mkdir -p /dev/shm -tty2::sysinit:/bin/mount -a -null::sysinit:/bin/mkdir -p /run/lock -null::sysinit:/bin/hostname -F /etc/hostname -null::sysinit:/usr/bin/psplash -n & -# now run any rc scripts -::sysinit:/etc/init.d/rcS +# Init the system +tty2::sysinit:/bin/mount /proc +tty2::sysinit:/bin/mount /sys +tty2::sysinit:/bin/mount /tmp +tty2::sysinit:/bin/mkdir -p /dev/pts /dev/shm + +# run any rc scripts (start) and move boot.log +::sysinit:/etc/init.d/rcS 2>&1 | /usr/bin/tee -a /tmp/boot.log +::sysinit:/bin/mv /tmp/boot.log /var/log/boot.log # Put a getty on tty2 tty2::askfirst:/sbin/getty -L tty2 0 vt100 @@ -32,5 +31,5 @@ tty2::askfirst:/sbin/getty -L tty2 0 vt100 # Stuff to do before rebooting ::shutdown:/etc/init.d/rcK -tty2::shutdown:/bin/umount -a -r -null::shutdown:/sbin/swapoff -a +tty2::shutdown:/bin/umount -a -r -f >/dev/null +tty2::shutdown:/sbin/swapoff -a diff --git a/buildroot-external/rootfs-overlay/etc/ld.so.cache b/buildroot-external/rootfs-overlay/etc/ld.so.cache new file mode 120000 index 0000000..a2de479 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/ld.so.cache @@ -0,0 +1 @@ +/var/cache/ld.so.cache \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/etc/ld.so.conf b/buildroot-external/rootfs-overlay/etc/ld.so.conf new file mode 100644 index 0000000..83327c0 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/ld.so.conf @@ -0,0 +1 @@ +include /etc/ld.so.conf.d/*.conf diff --git a/buildroot-external/rootfs-overlay/etc/network/interfaces b/buildroot-external/rootfs-overlay/etc/network/interfaces index 9066fd7..005b47c 100644 --- a/buildroot-external/rootfs-overlay/etc/network/interfaces +++ b/buildroot-external/rootfs-overlay/etc/network/interfaces @@ -3,3 +3,6 @@ iface lo inet loopback auto wlan0 iface wlan0 inet manual + +auto eth0 +iface eth0 inet manual diff --git a/buildroot-external/rootfs-overlay/etc/profile.d/0000-default-locale.sh b/buildroot-external/rootfs-overlay/etc/profile.d/0000-default-locale.sh new file mode 100755 index 0000000..3b20f55 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/profile.d/0000-default-locale.sh @@ -0,0 +1,2 @@ +# shellcheck shell=dash +export LANG=en_US.UTF-8 diff --git a/buildroot-external/rootfs-overlay/etc/qt-webengine-kiosk.ini b/buildroot-external/rootfs-overlay/etc/qt-webengine-kiosk.ini deleted file mode 100644 index e23c464..0000000 --- a/buildroot-external/rootfs-overlay/etc/qt-webengine-kiosk.ini +++ /dev/null @@ -1,186 +0,0 @@ -[browser] -; Full URI or full path to HTML file -;homepage=http://www.example.com/ -homepage=default.html - -; Delay load homepage on startup -startup_load_delayed=true -; Delay in msec -startup_load_delay=100 - -; Delay in msec, default 15 sec -; Set to -1 to disable -network_error_reload_delay=15000 - -; Delay in msec, default 15 sec -page_load_timeout=15000 -; Show some error messages, like network errors -; Messages text box will appear above page -; For debug purpose mostly -show_error_messaged=false - -; When you enable the cookiejar your cookies will be remembered between runs. -; When you disable the cookiejar your cookies will disappear when you quit the program. -cookiejar=false - -java=false -javascript=true -; handle window.open? -; catch link and follow. no new windows. -javascript_can_open_windows=true -; handle window.close ? -javascript_can_close_windows=false -webgl=false -plugins=true - -; Custom User-Agent header -; Default value: Mozilla/5.0 (%Platform%%Security%%Subplatform%) AppleWebKit/%WebKitVersion% (KHTML, like Gecko) %AppVersion Safari/%WebKitVersion% -; Set it to empty value to use defaults -custom_user_agent_header= - -; Don't show any javascript console messages by default -; For debug purpose mostly -show_js_console_messages=false - -; Trust any certificate by default -ignore_ssl_errors=true - -; Don't close application, show default homepage. Used with javascript window.close() -show_homepage_on_window_close=true - -; Disable reaction on keyboard -disable_hotkeys=false - - -; Interrupt long running javascript ever -interrupt_javascript=true - -; Interrupt long running javascript after this time in seconds -; By defaults in Qt first check will be after 10s of hang and every 10s -interrupt_javascript_interval=30 - - -[signals] -enable=true - -; Warning! -; Some signals dont' exists on some systems... -; Windows - SIGUSR1, SIGUSR2 - -; Empty by default -; SIGUSR1 - reload config and load homepage URI -; If set - try to load defined URI -SIGUSR1= -; SIGUSR2 - load homepage URI from current config -; If set - try to load defined URI -SIGUSR2= - -[rpc] -; @TODO -; May be JSON-RPC -enable=false -; Do not forget to allow access in your firewall -listen=127.0.0.1:9000 - -[inspector] -; Call web-inspector by F12 -enable=false -; Visible on browser start -visible=false - -[attach] -; Attach files content then page loaded. Styles goes first -; Define each file full path and split with comma -styles= -javascripts= - -[event-sounds] -enable=false -; full-path to sound file -; format - supported by Qt or system -; Sound for click anywhere in window -;window-clicked=window-clicked.wav -; Sound for click on a link -;link-clicked=link-clicked.wav - -[cache] -enable=true -; Full path to cache directory -location=cache -; Max cache size in bytes, default 100Mb -size=100000000 -; cache clean up -clean-on-start=false -clean-on-exit=false - -[application] -; Used in User-Agent header -organization=Organization -organization-domain=www.example.com -name=QtWebkitKiosk -version=1.99.11-dev - -[printing] -enable=false -show-printer-dialog=false -printer=default -page_margin_left=0 -page_margin_top=0 -page_margin_right=0 -page_margin_bottom=0 - -[proxy] -enable=false -system=true -host=proxy.example.com -port=3128 -auth=false -username=username -password=password - -[view] -fullscreen=true -maximized=false -fixed-size=false -fixed-width=800 -fixed-height=600 -fixed-centered=true -; if not centered -fixed-x=0 -fixed-y=0 - -; Another window manager hint to prevent showing other windows or taskbar -stay_on_top=false - -;; Minimum window size, default - 320x200 -;minimum-width=320 -;minimum-height=200 - -; Try to avoid some bogus Windows behaviour when taskbar become visible after window fullscreened... -startup_resize_delayed=true -; Delay in msec -startup_resize_delay=200 - -; Try to hide window scrollbars for any content overflow. Scrolling works only with keyboard keys. If they not disabled. -hide_scrollbars=true - -; Try to hide selection -disable_selection=true - -; Show progress bar at page top then web-page loading -show_load_progress=true - -; Page scale factor -page_scale=1.0 - -; If you use this program without a mouse it can be nice to hide the mouse. -; This does not disable the mouse itself: you can still interact with websites -; using the mouse, you just won't be able to see the mouse pointer. -hide_mouse_cursor=true - -[localstorage] -enable=true - -[security] -; Locally loaded documents are allowed to access remote urls. -local_content_can_access_remote_urls=false diff --git a/buildroot-external/rootfs-overlay/etc/sysctl.conf b/buildroot-external/rootfs-overlay/etc/sysctl.conf index d16adc4..ab4d70e 100644 --- a/buildroot-external/rootfs-overlay/etc/sysctl.conf +++ b/buildroot-external/rootfs-overlay/etc/sysctl.conf @@ -10,8 +10,8 @@ kernel.perf_event_paranoid = 3 # Avoid non-ancestor ptrace access to running processes and their credentials. kernel.yama.ptrace_scope = 1 -# Disable User Namespaces, as it opens up a large attack surface to unprivileged users. -user.max_user_namespaces = 0 +# Enable User Namespaces for sanboxing applications like chrome, etc. +user.max_user_namespaces = 15000 # increase netfilter conntrack maximum hash table size to 256K net.netfilter.nf_conntrack_buckets = 65536 diff --git a/buildroot-external/rootfs-overlay/etc/usbmount/mount.d/00_create_model_symlink b/buildroot-external/rootfs-overlay/etc/usbmount/mount.d/00_create_model_symlink index ed6b56c..2a7e19d 100755 --- a/buildroot-external/rootfs-overlay/etc/usbmount/mount.d/00_create_model_symlink +++ b/buildroot-external/rootfs-overlay/etc/usbmount/mount.d/00_create_model_symlink @@ -38,4 +38,11 @@ fi # If the symlink does not yet exist, create it. test -e "/var/run/usbmount/${name}" || (mkdir "/var/run/usbmount/${name}"; mount --bind "${UM_MOUNTPOINT}" "/var/run/usbmount/${name}") +if [ -x /usr/bin/osd_cat ]; then + export LANG=en_US.UTF-8 + export DISPLAY=:0 + COLOR=green + echo "Mounted USB: '${name}'..." | /usr/bin/osd_cat -A center -p top -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c ${COLOR} -s 5 -d 3 +fi + exit 0 diff --git a/buildroot-external/rootfs-overlay/etc/usbmount/umount.d/00_remove_model_symlink b/buildroot-external/rootfs-overlay/etc/usbmount/umount.d/00_remove_model_symlink index 5f2c9a5..31e1db2 100755 --- a/buildroot-external/rootfs-overlay/etc/usbmount/umount.d/00_remove_model_symlink +++ b/buildroot-external/rootfs-overlay/etc/usbmount/umount.d/00_remove_model_symlink @@ -21,4 +21,11 @@ if [ -n "${MOUNTNAME}" ]; then /bin/rmdir "${MOUNTNAME}" fi +if [ -x /usr/bin/osd_cat ]; then + export LANG=en_US.UTF-8 + export DISPLAY=:0 + COLOR=red + echo "Unclean USB eject: Press ALT+F10 next time!" | /usr/bin/osd_cat -A center -p top -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c ${COLOR} -s 5 -d 10 +fi + exit 0 diff --git a/buildroot-external/rootfs-overlay/etc/xdg/openbox/rc.xml b/buildroot-external/rootfs-overlay/etc/xdg/openbox/rc.xml index beef1fb..a7a5668 100644 --- a/buildroot-external/rootfs-overlay/etc/xdg/openbox/rc.xml +++ b/buildroot-external/rootfs-overlay/etc/xdg/openbox/rc.xml @@ -47,7 +47,7 @@ Clearlooks - LM + CLM