diff options
Diffstat (limited to 'qemu/pc-bios')
106 files changed, 0 insertions, 12524 deletions
diff --git a/qemu/pc-bios/Makefile b/qemu/pc-bios/Makefile deleted file mode 100644 index 315288df8..000000000 --- a/qemu/pc-bios/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# -# NOTE: only compilable with x86 cross compile tools -# -include ../config-host.mak - -DEFINES= - -TARGETS= - -all: $(TARGETS) - -%.o: %.S - $(CC) $(DEFINES) -c -o $@ $< - -%.dtb: %.dts - dtc -I dts -O dtb -o $@ $< - -clean: - rm -f $(TARGETS) *.o *~ diff --git a/qemu/pc-bios/QEMU,cgthree.bin b/qemu/pc-bios/QEMU,cgthree.bin Binary files differdeleted file mode 100644 index 6fec94620..000000000 --- a/qemu/pc-bios/QEMU,cgthree.bin +++ /dev/null diff --git a/qemu/pc-bios/QEMU,tcx.bin b/qemu/pc-bios/QEMU,tcx.bin Binary files differdeleted file mode 100644 index d79cc1fea..000000000 --- a/qemu/pc-bios/QEMU,tcx.bin +++ /dev/null diff --git a/qemu/pc-bios/README b/qemu/pc-bios/README deleted file mode 100644 index 5a8a93193..000000000 --- a/qemu/pc-bios/README +++ /dev/null @@ -1,44 +0,0 @@ -- SeaBIOS (bios.bin) is the successor of pc bios. - See http://www.seabios.org/ for more information. - -- The VGA BIOS and the Cirrus VGA BIOS come from the LGPL VGA bios - project (http://www.nongnu.org/vgabios/). - -- The PowerPC Open Hack'Ware Open Firmware Compatible BIOS is - available at http://repo.or.cz/w/openhackware.git. - -- OpenBIOS (http://www.openbios.org/) is a free (GPL v2) portable - firmware implementation. The goal is to implement a 100% IEEE - 1275-1994 (referred to as Open Firmware) compliant firmware. - The included images for PowerPC (for 32 and 64 bit PPC CPUs), - Sparc32 (including QEMU,tcx.bin and QEMU,cgthree.bin) and Sparc64 are built - from OpenBIOS SVN revision 1280. - -- SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware - implementation for certain IBM POWER hardware. The sources are at - https://github.com/aik/SLOF, and the image currently in qemu is - built from git tag qemu-slof-20160223. - -- sgabios (the Serial Graphics Adapter option ROM) provides a means for - legacy x86 software to communicate with an attached serial console as - if a video card were attached. The master sources reside in a subversion - repository at http://sgabios.googlecode.com/svn/trunk. A git mirror is - available at git://git.qemu-project.org/sgabios.git. - -- The PXE roms come from the iPXE project. Built with BANNER_TIME 0. - Sources available at http://ipxe.org. Vendor:Device ID -> ROM mapping: - - 8086:100e -> pxe-e1000.rom - 8086:1209 -> pxe-eepro100.rom - 1050:0940 -> pxe-ne2k_pci.rom - 1022:2000 -> pxe-pcnet.rom - 10ec:8139 -> pxe-rtl8139.rom - 1af4:1000 -> pxe-virtio.rom - -- The sources for the Alpha palcode image is available from: - git://github.com/rth7680/qemu-palcode.git - -- The u-boot binary for e500 comes from the upstream denx u-boot project where - it was compiled using the qemu-ppce500 target. - A git mirror is available at: git://git.qemu-project.org/u-boot.git - The hash used to compile the current version is: 2072e72 diff --git a/qemu/pc-bios/acpi-dsdt.aml b/qemu/pc-bios/acpi-dsdt.aml Binary files differdeleted file mode 100644 index 558c10f51..000000000 --- a/qemu/pc-bios/acpi-dsdt.aml +++ /dev/null diff --git a/qemu/pc-bios/bamboo.dtb b/qemu/pc-bios/bamboo.dtb Binary files differdeleted file mode 100644 index d12e201aa..000000000 --- a/qemu/pc-bios/bamboo.dtb +++ /dev/null diff --git a/qemu/pc-bios/bamboo.dts b/qemu/pc-bios/bamboo.dts deleted file mode 100644 index 62fabcca6..000000000 --- a/qemu/pc-bios/bamboo.dts +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Device Tree Source for AMCC Bamboo - * - * Copyright (c) 2006, 2007 IBM Corp. - * Josh Boyer <jwboyer@linux.vnet.ibm.com> - * - * This file is licensed under the terms of the GNU General Public - * License version 2. This program is licensed "as is" without - * any warranty of any kind, whether express or implied. - */ - -/dts-v1/; - -/ { - #address-cells = <2>; - #size-cells = <1>; - model = "amcc,bamboo"; - compatible = "amcc,bamboo"; - dcr-parent = <&{/cpus/cpu@0}>; - - aliases { - serial0 = &UART0; - serial1 = &UART1; - }; - - cpus { - #address-cells = <1>; - #size-cells = <0>; - - cpu@0 { - device_type = "cpu"; - model = "PowerPC,440EP"; - reg = <0>; - clock-frequency = <0x1fca0550>; - timebase-frequency = <0x017d7840>; - i-cache-line-size = <0x20>; - d-cache-line-size = <0x20>; - i-cache-size = <0x8000>; - d-cache-size = <0x8000>; - dcr-controller; - dcr-access-method = "native"; - }; - }; - - memory { - device_type = "memory"; - reg = <0x0 0x0 0x9000000>; - }; - - UIC0: interrupt-controller0 { - compatible = "ibm,uic-440ep","ibm,uic"; - interrupt-controller; - cell-index = <0x0>; - dcr-reg = <0x0c0 0x009>; - #address-cells = <0x0>; - #size-cells = <0x0>; - #interrupt-cells = <0x2>; - }; - - SDR0: sdr { - compatible = "ibm,sdr-440ep"; - dcr-reg = <0x00e 0x002>; - }; - - CPR0: cpr { - compatible = "ibm,cpr-440ep"; - dcr-reg = <0x00c 0x002>; - }; - - plb { - compatible = "ibm,plb-440ep", "ibm,plb-440gp", "ibm,plb4"; - #address-cells = <2>; - #size-cells = <1>; - ranges; - clock-frequency = <0x07f28154>; - - SDRAM0: sdram { - compatible = "ibm,sdram-440ep", "ibm,sdram-405gp"; - dcr-reg = <0x010 0x2>; - }; - - DMA0: dma { - compatible = "ibm,dma-440ep", "ibm,dma-440gp"; - dcr-reg = <0x100 0x027>; - }; - - POB0: opb { - compatible = "ibm,opb-440ep", "ibm,opb-440gp", "ibm,opb"; - #address-cells = <1>; - #size-cells = <1>; - /* Bamboo is oddball in the 44x world and doesn't use the ERPN - * bits. - */ - ranges = <0x00000000 0x0 0x00000000 0x80000000 - 0x80000000 0x0 0x80000000 0x80000000>; - /* interrupt-parent = <&UIC1>; */ - interrupts = <7 4>; - clock-frequency = <0x03f940aa>; - - EBC0: ebc { - compatible = "ibm,ebc-440ep", "ibm,ebc-440gp", "ibm,ebc"; - dcr-reg = <0x012 2>; - #address-cells = <2>; - #size-cells = <1>; - clock-frequency = <0x03f940aa>; - interrupts = <5 1>; - /* interrupt-parent = <&UIC1>; */ - }; - - UART0: serial@ef600300 { - device_type = "serial"; - compatible = "ns16550"; - reg = <0xef600300 8>; - virtual-reg = <0xef600300>; - clock-frequency = <0x00a8c000>; - current-speed = <0x1c200>; - interrupt-parent = <&UIC0>; - interrupts = <0 4>; - }; - - UART1: serial@ef600400 { - device_type = "serial"; - compatible = "ns16550"; - reg = <0xef600400 8>; - virtual-reg = <0xef600400>; - clock-frequency = <0x00a8c000>; - current-speed = <0>; - interrupt-parent = <&UIC0>; - interrupts = <1 4>; - }; - - IIC0: i2c@ef600700 { - device_type = "i2c"; - compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic"; - reg = <0xef600700 0x14>; - interrupt-parent = <&UIC0>; - interrupts = <2 4>; - }; - - IIC1: i2c@ef600800 { - device_type = "i2c"; - compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic"; - reg = <0xef600800 14>; - interrupt-parent = <&UIC0>; - interrupts = <7 4>; - }; - - ZMII0: emac-zmii@ef600d00 { - device_type = "zmii-interface"; - compatible = "ibm,zmii-440ep", "ibm,zmii-440gp", "ibm,zmii"; - reg = <0xef600d00 0xc>; - }; - - }; - - PCI0: pci@ec000000 { - device_type = "pci"; - #interrupt-cells = <1>; - #size-cells = <2>; - #address-cells = <3>; - compatible = "ibm,plb440ep-pci", "ibm,plb-pci"; - primary; - reg = <0 0xeec00000 8 /* Config space access */ - 0 0xeed00000 4 /* IACK */ - 0 0xeed00000 4 /* Special cycle */ - 0 0xef400000 0x40>; /* Internal registers */ - - /* Outbound ranges, one memory and one IO, - * later cannot be changed. Chip supports a second - * IO range but we don't use it for now - */ - ranges = <0x02000000 0 0xa0000000 0 0xa0000000 0 0x20000000 - 0x01000000 0 0x00000000 0 0xe8000000 0 0x00010000>; - - /* Inbound 2GB range starting at 0 */ - dma-ranges = <0x42000000 0 0 0 0 0 0x80000000>; - - /* Bamboo has all 4 IRQ pins tied together per slot */ - interrupt-map-mask = <0xf800 0 0 0>; - interrupt-map = < - /* IDSEL 1 */ - 0x0800 0 0 0 &UIC0 0x1c 8 - - /* IDSEL 2 */ - 0x1000 0 0 0 &UIC0 0x1b 8 - - /* IDSEL 3 */ - 0x1800 0 0 0 &UIC0 0x1a 8 - - /* IDSEL 4 */ - 0x2000 0 0 0 &UIC0 0x19 8 - >; - }; - - }; - - chosen { - linux,stdout-path = "/plb/opb/serial@ef600300"; - }; -}; diff --git a/qemu/pc-bios/bios-256k.bin b/qemu/pc-bios/bios-256k.bin Binary files differdeleted file mode 100644 index e7a7e72e3..000000000 --- a/qemu/pc-bios/bios-256k.bin +++ /dev/null diff --git a/qemu/pc-bios/bios.bin b/qemu/pc-bios/bios.bin Binary files differdeleted file mode 100644 index b0ae502f6..000000000 --- a/qemu/pc-bios/bios.bin +++ /dev/null diff --git a/qemu/pc-bios/efi-e1000.rom b/qemu/pc-bios/efi-e1000.rom Binary files differdeleted file mode 100644 index 4bc89a3d2..000000000 --- a/qemu/pc-bios/efi-e1000.rom +++ /dev/null diff --git a/qemu/pc-bios/efi-eepro100.rom b/qemu/pc-bios/efi-eepro100.rom Binary files differdeleted file mode 100644 index 85b7f9bc7..000000000 --- a/qemu/pc-bios/efi-eepro100.rom +++ /dev/null diff --git a/qemu/pc-bios/efi-ne2k_pci.rom b/qemu/pc-bios/efi-ne2k_pci.rom Binary files differdeleted file mode 100644 index ebafd8452..000000000 --- a/qemu/pc-bios/efi-ne2k_pci.rom +++ /dev/null diff --git a/qemu/pc-bios/efi-pcnet.rom b/qemu/pc-bios/efi-pcnet.rom Binary files differdeleted file mode 100644 index 6f1972375..000000000 --- a/qemu/pc-bios/efi-pcnet.rom +++ /dev/null diff --git a/qemu/pc-bios/efi-rtl8139.rom b/qemu/pc-bios/efi-rtl8139.rom Binary files differdeleted file mode 100644 index 086551b76..000000000 --- a/qemu/pc-bios/efi-rtl8139.rom +++ /dev/null diff --git a/qemu/pc-bios/efi-virtio.rom b/qemu/pc-bios/efi-virtio.rom Binary files differdeleted file mode 100644 index 140c6806d..000000000 --- a/qemu/pc-bios/efi-virtio.rom +++ /dev/null diff --git a/qemu/pc-bios/keymaps/ar b/qemu/pc-bios/keymaps/ar deleted file mode 100644 index c430c03bb..000000000 --- a/qemu/pc-bios/keymaps/ar +++ /dev/null @@ -1,98 +0,0 @@ -# generated from XKB map ar -include common -map 0x401 -exclam 0x02 shift -at 0x03 shift -numbersign 0x04 shift -dollar 0x05 shift -percent 0x06 shift -asciicircum 0x07 shift -ampersand 0x08 shift -asterisk 0x09 shift -parenleft 0x0a shift -parenright 0x0b shift -minus 0x0c -underscore 0x0c shift -equal 0x0d -plus 0x0d shift -Arabic_dad 0x10 altgr -Arabic_fatha 0x10 shift altgr -Arabic_sad 0x11 altgr -Arabic_fathatan 0x11 shift altgr -Arabic_theh 0x12 altgr -Arabic_damma 0x12 shift altgr -Arabic_qaf 0x13 altgr -Arabic_dammatan 0x13 shift altgr -Arabic_feh 0x14 altgr -UFEF9 0x14 shift altgr -Arabic_ghain 0x15 altgr -Arabic_hamzaunderalef 0x15 shift altgr -Arabic_ain 0x16 altgr -grave 0x16 shift altgr -Arabic_ha 0x17 altgr -division 0x17 shift altgr -Arabic_khah 0x18 altgr -multiply 0x18 shift altgr -Arabic_hah 0x19 altgr -Arabic_semicolon 0x19 shift altgr -bracketleft 0x1a -braceleft 0x1a shift -Arabic_jeem 0x1a altgr -bracketright 0x1b -braceright 0x1b shift -Arabic_dal 0x1b altgr -Arabic_sheen 0x1e altgr -backslash 0x1e shift altgr -Arabic_seen 0x1f altgr -Arabic_yeh 0x20 altgr -bracketleft 0x20 shift altgr -Arabic_beh 0x21 altgr -bracketright 0x21 shift altgr -Arabic_lam 0x22 altgr -UFEF7 0x22 shift altgr -Arabic_alef 0x23 altgr -Arabic_hamzaonalef 0x23 shift altgr -Arabic_teh 0x24 altgr -Arabic_tatweel 0x24 shift altgr -Arabic_noon 0x25 altgr -Arabic_comma 0x25 shift altgr -Arabic_meem 0x26 altgr -slash 0x26 shift altgr -semicolon 0x27 -colon 0x27 shift -Arabic_kaf 0x27 altgr -apostrophe 0x28 -quotedbl 0x28 shift -Arabic_tah 0x28 altgr -grave 0x29 -asciitilde 0x29 shift -Arabic_thal 0x29 altgr -Arabic_shadda 0x29 shift altgr -backslash 0x2b -bar 0x2b shift -less 0x2b altgr -greater 0x2b shift altgr -Arabic_hamzaonyeh 0x2c altgr -asciitilde 0x2c shift altgr -Arabic_hamza 0x2d altgr -Arabic_sukun 0x2d shift altgr -Arabic_hamzaonwaw 0x2e altgr -Arabic_kasra 0x2e shift altgr -Arabic_ra 0x2f altgr -Arabic_kasratan 0x2f shift altgr -UFEFB 0x30 altgr -UFEF5 0x30 shift altgr -Arabic_alefmaksura 0x31 altgr -Arabic_maddaonalef 0x31 shift altgr -Arabic_tehmarbuta 0x32 altgr -apostrophe 0x32 shift altgr -comma 0x33 -less 0x33 shift -Arabic_waw 0x33 altgr -period 0x34 -greater 0x34 shift -Arabic_zain 0x34 altgr -slash 0x35 -question 0x35 shift -Arabic_zah 0x35 altgr -Arabic_question_mark 0x35 shift altgr diff --git a/qemu/pc-bios/keymaps/bepo b/qemu/pc-bios/keymaps/bepo deleted file mode 100644 index d40041a4c..000000000 --- a/qemu/pc-bios/keymaps/bepo +++ /dev/null @@ -1,333 +0,0 @@ -include common - -# Bépo : Improved ergonomic french keymap using Dvorak method. -# Built by community on 'Dvorak Fr / Bépo' : -# see http://www.clavier-dvorak.org/wiki/ to join and help. -# -# Bépo layout (1.0rc2 version) for a pc105 keyboard (french) : -# ┌────┐ -# │ S A│ S = Shift, A = AltGr + Shift -# │ s a│ s = normal, a = AltGr -# └────┘ -# -# ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ -# │ # ¶ │ 1 „ │ 2 “ │ 3 ” │ 4 ≤ │ 5 ≥ │ 6 │ 7 ¬ │ 8 ¼ │ 9 ½ │ 0 ¾ │ ° ′ │ ` ″ ┃ ⌫ Retour┃ -# │ $ – │ " — │ « < │ » > │ ( [ │ ) ] │ @ ^ │ + ± │ - − │ / ÷ │ * × │ = ≠ │ % ‰ ┃ arrière┃ -# ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ -# ┃ ┃ B ¦ │ É ˝ │ P § │ O Œ │ È ` │ ! │ V │ D Ð │ L │ J IJ │ Z Ə │ W ┃Entrée ┃ -# ┃Tab ↹ ┃ b | │ é ˊ │ p & │ o œ │ è ` │ ˆ ¡ │ v ˇ │ d ð │ l / │ j ij │ z ə │ w ̆ ┃ ⏎ ┃ -# ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ -# ┃ ┃ A Æ │ U Ù │ I ˙ │ E ¤ │ ; ̛ │ C ſ │ T Þ │ S ẞ │ R ™ │ N │ M º │ Ç , ┃ ┃ -# ┃Maj ⇬ ┃ a æ │ u ù │ i ̈ │ e € │ , ’ │ c © │ t þ │ s ß │ r ® │ n ˜ │ m ¯ │ ç ¸ ┃ ┃ -# ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ -# ┃ ┃ Ê │ À │ Y ‘ │ X ’ │ : · │ K │ ? ̉ │ Q ̣ │ G │ H ‡ │ F ª ┃ ┃ -# ┃Shift ⇧┃ ê / │ à \ │ y { │ x } │ . … │ k ~ │ ' ¿ │ q ˚ │ g µ │ h † │ f ˛ ┃Shift ⇧ ┃ -# ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ -# ┃ ┃ ┃ ┃ Espace inséc. Espace inséc. fin ┃ ┃ ┃ ┃ -# ┃Ctrl ┃Meta ┃Alt ┃ ␣ (Espace) _ ␣ ┃AltGr ⇮┃Menu ┃Ctrl ┃ -# ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ - - -# First row -## keycode 41 = dollar numbersign U+2013 U+00b6 -dollar 0x29 -numbersign 0x29 shift -U2013 0x29 altgr -U00b6 0x29 shift altgr - -## keycode 2 = +quotedbl +one U+2014 U+201e -quotedbl 0x2 -one 0x2 shift -U2014 0x2 altgr -U201e 0x2 shift altgr - -## keycode 3 = +guillemotleft +two less U+201c -guillemotleft 0x3 -two 0x3 shift -less 0x3 altgr -U201c 0x3 shift altgr - -## keycode 4 = +guillemotright +three greater U+201d -guillemotright 0x4 -three 0x4 shift -greater 0x4 altgr -U201d 0x4 shift altgr - -## keycode 5 = +parenleft +four bracketleft U+2264 -parenleft 0x5 -four 0x5 shift -bracketleft 0x5 altgr -U2264 0x5 shift altgr - -## keycode 6 = +parenright +five bracketright U+2265 -parenright 0x6 -five 0x6 shift -bracketright 0x6 altgr -U2265 0x6 shift altgr - -## keycode 7 = +at +six asciicircum -at 0x7 -six 0x7 shift -asciicircum 0x7 altgr - -## keycode 8 = +plus +seven U+00b1 U+00ac -plus 0x8 -seven 0x8 shift -U00b1 0x8 altgr -U00ac 0x8 shift altgr - -## keycode 9 = +minus +eight U+2212 U+00bc -minus 0x9 -eight 0x9 shift -U2212 0x9 altgr -U00bc 0x9 shift altgr - -## keycode 10 = +slash +nine U+00f7 U+00bd -slash 0xa -nine 0xa shift -U00f7 0xa altgr -U00bd 0xa shift altgr - -## keycode 11 = +asterisk +zero U+00d7 U+00be -asterisk 0xb -zero 0xb shift -U00d7 0xb altgr -U00be 0xb shift altgr - -## keycode 12 = equal U+00b0 U+2260 U+2032 -equal 0xc -U00b0 0xc shift -U2260 0xc altgr -U2032 0xc shift altgr - -## keycode 13 = percent grave U+2030 U+2033 -percent 0xd -grave 0xd shift -U2030 0xd altgr -U2033 0xd shift altgr - - -# Second row - -# simplified letter definitions notation : -## keycode 16 = b -b 0x10 addupper -## keycode 18 = p -p 0x12 addupper -## keycode 19 = o -o 0x13 addupper -## keycode 22 = v -v 0x16 addupper -## keycode 23 = d -d 0x17 addupper -## keycode 24 = l -l 0x18 addupper -## keycode 25 = j -j 0x19 addupper -## keycode 26 = z -z 0x1a addupper -## keycode 27 = w -w 0x1b addupper - -# then, add specific definitions -## AltGr keycode 16 = bar -bar 0x10 altgr -## Shift AltGr keycode 16 = brokenbar -brokenbar 0x10 shift altgr - -## keycode 17 = +eacute +Eacute dead_acute -eacute 0x11 -Eacute 0x11 shift -dead_acute 0x11 altgr - -## AltGr keycode 18 = ampersand -ampersand 0x12 altgr -## Shift AltGr keycode 18 = U+00a7 -U00a7 0x12 shift altgr - -## AltGr keycode 19 = +U+0153 -U+0153 0x13 altgr -## Shift AltGr keycode 19 = +U+0152 -U+0152 0x13 shift altgr - -## keycode 20 = +egrave +Egrave dead_grave grave # no Meta ! -egrave 0x14 -Egrave 0x14 shift -dead_grave 0x14 altgr - -## keycode 21 = dead_circumflex exclam exclamdown -dead_circumflex 0x15 -exclam 0x15 shift -exclamdown 0x15 altgr - -## AltGr keycode 22 = dead_caron -dead_caron 0x16 altgr - -## AltGr keycode 23 = eth -eth 0x17 altgr -## Shift AltGr keycode 23 = ETH -ETH 0x17 shift altgr - -## AltGr keycode 25 = +U+0133 -U+0133 0x19 altgr -## Shift AltGr keycode 25 = +U+0132 -U+0132 0x19 shift altgr - -## AltGr keycode 26 = +U+0259 -U+0259 0x1a altgr -## Shift AltGr keycode 26 = +U+018f -U+018f 0x1a shift altgr - - - -# Third row - -# simplified letter definitions notation : -## keycode 30 = a -a 0x1e addupper -## keycode 31 = u -u 0x1f addupper -## keycode 32 = i -i 0x20 addupper -## keycode 33 = e -e 0x21 addupper -## keycode 35 = c -c 0x23 addupper -## keycode 36 = t -t 0x24 addupper -## keycode 37 = s -s 0x25 addupper -## keycode 38 = r -r 0x26 addupper -## keycode 39 = n -n 0x27 addupper -## keycode 40 = m -m 0x28 addupper - -# then, add specific definitions -## AltGr keycode 30 = +ae -ae 0x1e altgr -## Shift AltGr keycode 30 = +AE -AE 0x1e shift altgr - -## AltGr keycode 31 = +ugrave -ugrave 0x1f altgr -## Shift AltGr keycode 31 = +Ugrave -Ugrave 0x1f shift altgr - -## AltGr keycode 32 = dead_diaeresis -dead_diaeresis 0x20 altgr - - -## AltGr keycode 33 = U+20ac -U20ac 0x21 altgr - -## keycode 34 = comma semicolon U+2019 +U+031b -comma 0x22 -semicolon 0x22 shift -U2019 0x22 altgr -U+031b 0x22 shift altgr - -## AltGr keycode 35 = copyright -copyright 0x23 altgr -## Shift AltGr keycode 35 = U+017f -U017f 0x23 shift altgr - -## AltGr keycode 36 = +thorn -thorn 0x24 altgr -## Shift AltGr keycode 36 = +THORN -THORN 0x24 shift altgr - -## AltGr keycode 37 = +ssharp -ssharp 0x25 altgr -## Shift AltGr keycode 37 = U+1e9e -U1e9e 0x25 shift altgr - -## AltGr keycode 38 = registered -registered 0x26 altgr -## Shift AltGr keycode 38 = U+2122 -U2122 0x26 shift altgr - -## AltGr keycode 39 = dead_tilde -dead_tilde 0x27 altgr - -## Shift AltGr keycode 40 = masculine -masculine 0x28 shift altgr - -## keycode 43 = +ccedilla +Ccedilla dead_cedilla -ccedilla 0x2b -Ccedilla 0x2b shift -dead_cedilla 0x2b altgr - - -# Fourth row - -# simplified letter definitions notation : -## keycode 45 = y -y 0x2d addupper -## keycode 46 = x -x 0x2e addupper -## keycode 48 = k -k 0x30 addupper -## keycode 50 = q -q 0x32 addupper -## keycode 51 = g -g 0x33 addupper -## keycode 52 = h -h 0x34 addupper -## keycode 53 = f -f 0x35 addupper - -# then, add specific definitions -## keycode 86 = +ecircumflex +Ecircumflex slash slash -ecircumflex 0x56 -Ecircumflex 0x56 shift - -## keycode 44 = +agrave +Agrave backslash -agrave 0x2c -Agrave 0x2c shift -backslash 0x2c altgr - -## AltGr keycode 45 = braceleft -braceleft 0x2d altgr -## Shift AltGr keycode 45 = U+2018 -U2018 0x2d shift altgr - -## AltGr keycode 46 = braceright -braceright 0x2e altgr - -## keycode 47 = period colon U+2026 periodcentered -period 0x2f -colon 0x2f shift -U2026 0x2f altgr -periodcentered 0x2f shift altgr - -## AltGr keycode 48 = asciitilde -asciitilde 0x30 altgr -## Shift AltGr keycode 48 = U+2328 -U2328 0x30 shift altgr - -## keycode 49 = apostrophe question questiondown +U+0309 -apostrophe 0x31 -question 0x31 shift -questiondown 0x31 altgr -U+0309 0x31 shift altgr - -## AltGr keycode 51 = mu -mu 0x33 altgr - -## AltGr keycode 52 = U+2020 -U2020 0x34 altgr -## Shift AltGr keycode 52 = U+2021 -U2021 0x34 shift altgr - -## Shift AltGr keycode 53 = ordfeminine -ordfeminine 0x35 shift altgr - - - -## keycode 57 = space nobreakspace underscore U+202f -space 0x39 -nobreakspace 0x39 shift -underscore 0x39 altgr -U202f 0x39 shift altgr diff --git a/qemu/pc-bios/keymaps/common b/qemu/pc-bios/keymaps/common deleted file mode 100644 index adc56c77d..000000000 --- a/qemu/pc-bios/keymaps/common +++ /dev/null @@ -1,157 +0,0 @@ -include modifiers - -# -# Top row -# -1 0x2 -2 0x3 -3 0x4 -4 0x5 -5 0x6 -6 0x7 -7 0x8 -8 0x9 -9 0xa -0 0xb -BackSpace 0xe - -# -# QWERTY first row -# -Tab 0xf localstate -ISO_Left_Tab 0xf shift -q 0x10 addupper -w 0x11 addupper -e 0x12 addupper -r 0x13 addupper -t 0x14 addupper -y 0x15 addupper -u 0x16 addupper -i 0x17 addupper -o 0x18 addupper -p 0x19 addupper - -# -# QWERTY second row -# -a 0x1e addupper -s 0x1f addupper -d 0x20 addupper -f 0x21 addupper -g 0x22 addupper -h 0x23 addupper -j 0x24 addupper -k 0x25 addupper -l 0x26 addupper -Return 0x1c localstate - -# -# QWERTY third row -# -z 0x2c addupper -x 0x2d addupper -c 0x2e addupper -v 0x2f addupper -b 0x30 addupper -n 0x31 addupper -m 0x32 addupper - -space 0x39 localstate - -less 0x56 -greater 0x56 shift -bar 0x56 altgr -brokenbar 0x56 shift altgr - -# -# Esc and Function keys -# -Escape 0x1 localstate -F1 0x3b localstate -F2 0x3c localstate -F3 0x3d localstate -F4 0x3e localstate -F5 0x3f localstate -F6 0x40 localstate -F7 0x41 localstate -F8 0x42 localstate -F9 0x43 localstate -F10 0x44 localstate -F11 0x57 localstate -F12 0x58 localstate - -# Printscreen, Scrollock and Pause -# Printscreen really requires four scancodes (0xe0, 0x2a, 0xe0, 0x37), -# but (0xe0, 0x37) seems to work. -Print 0xb7 localstate -Sys_Req 0xb7 localstate -Execute 0xb7 localstate -Scroll_Lock 0x46 - -# -# Insert - PgDown -# -Insert 0xd2 localstate -Delete 0xd3 localstate -Home 0xc7 localstate -End 0xcf localstate -Page_Up 0xc9 localstate -Page_Down 0xd1 localstate - -# -# Arrow keys -# -Left 0xcb localstate -Up 0xc8 localstate -Down 0xd0 localstate -Right 0xcd localstate - -# -# Numpad -# -Num_Lock 0x45 -KP_Divide 0xb5 -KP_Multiply 0x37 -KP_Subtract 0x4a -KP_Add 0x4e -KP_Enter 0x9c - -KP_Decimal 0x53 numlock -KP_Separator 0x53 numlock -KP_Delete 0x53 - -KP_0 0x52 numlock -KP_Insert 0x52 - -KP_1 0x4f numlock -KP_End 0x4f - -KP_2 0x50 numlock -KP_Down 0x50 - -KP_3 0x51 numlock -KP_Next 0x51 - -KP_4 0x4b numlock -KP_Left 0x4b - -KP_5 0x4c numlock -KP_Begin 0x4c - -KP_6 0x4d numlock -KP_Right 0x4d - -KP_7 0x47 numlock -KP_Home 0x47 - -KP_8 0x48 numlock -KP_Up 0x48 - -KP_9 0x49 numlock -KP_Prior 0x49 - -Caps_Lock 0x3a -# -# Inhibited keys -# -Multi_key 0x0 inhibit diff --git a/qemu/pc-bios/keymaps/cz b/qemu/pc-bios/keymaps/cz deleted file mode 100644 index 6584bfb18..000000000 --- a/qemu/pc-bios/keymaps/cz +++ /dev/null @@ -1,94 +0,0 @@ -include common - -# Czech qwertz layout -# comments are czech descriptions of the characters - -# ----------- -# First row -# ----------- - -# strednik, kolecko -semicolon 0x29 -dead_abovering 0x29 shift - -# numbers -plus 0x2 -1 0x2 shift -ecaron 0x3 -2 0x3 shift -scaron 0x4 -3 0x4 shift -ccaron 0x5 -4 0x5 shift -rcaron 0x6 -5 0x6 shift -zcaron 0x7 -6 0x7 shift -yacute 0x8 -7 0x8 shift -aacute 0x9 -8 0x9 shift -iacute 0xa -9 0xa shift -eacute 0xb -0 0xb shift - -# rovnitko -equal 0x0c -percent 0x0c shift - -# carka, hacek -dead_acute 0x0d -dead_caron 0x0d shift - -# ------------ -# Second row -# ------------ - -z 0x15 addupper - -# u s carkou, zpetne lomitko -uacute 0x1a -slash 0x1a shift - -# prava zavorka, leva zavorka -parenright 0x1b -parenleft 0x1b shift - -# ----------- -# Third row -# ----------- - -# u s krouzkem, uvozovky -uring 0x27 -quotedbl 0x27 shift - -# paragraf, vykricnik -section 0x28 -exclam 0x28 shift - -# vodorovna dvojtecka, apostrof -dead_diaeresis 0x2b -apostrophe 0x2b shift - -# ------------ -# Fourth row -# ------------ - -# zpetne lomitko, roura -backslash 0x2b -bar 0x2b shift - -y 0x2c addupper - -# carka, otaznik -comma 0x33 -question 0x33 shift - -# tecka, dvojtecka -period 0x34 -colon 0x34 shift - -# minus, podtrzitko -minus 0x35 -underscore 0x35 shift diff --git a/qemu/pc-bios/keymaps/da b/qemu/pc-bios/keymaps/da deleted file mode 100644 index 3884dcf14..000000000 --- a/qemu/pc-bios/keymaps/da +++ /dev/null @@ -1,120 +0,0 @@ -# generated from XKB map dk -include common -map 0x406 -exclam 0x02 shift -exclamdown 0x02 altgr -onesuperior 0x02 shift altgr -quotedbl 0x03 shift -at 0x03 altgr -twosuperior 0x03 shift altgr -numbersign 0x04 shift -sterling 0x04 altgr -threesuperior 0x04 shift altgr -currency 0x05 shift -dollar 0x05 altgr -onequarter 0x05 shift altgr -percent 0x06 shift -onehalf 0x06 altgr -cent 0x06 shift altgr -ampersand 0x07 shift -yen 0x07 altgr -fiveeighths 0x07 shift altgr -slash 0x08 shift -braceleft 0x08 altgr -division 0x08 shift altgr -parenleft 0x09 shift -bracketleft 0x09 altgr -guillemotleft 0x09 shift altgr -parenright 0x0a shift -bracketright 0x0a altgr -guillemotright 0x0a shift altgr -equal 0x0b shift -braceright 0x0b altgr -degree 0x0b shift altgr -plus 0x0c -question 0x0c shift -plusminus 0x0c altgr -questiondown 0x0c shift altgr -dead_acute 0x0d -dead_grave 0x0d shift -bar 0x0d altgr -brokenbar 0x0d shift altgr -Greek_OMEGA 0x10 shift altgr -lstroke 0x11 altgr -Lstroke 0x11 shift altgr -EuroSign 0x12 altgr -cent 0x12 shift altgr -registered 0x13 altgr -thorn 0x14 altgr -THORN 0x14 shift altgr -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oe 0x18 altgr -OE 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -aring 0x1a -Aring 0x1a shift -dead_diaeresis 0x1a altgr -dead_abovering 0x1a shift altgr -dead_diaeresis 0x1b -dead_circumflex 0x1b shift -dead_tilde 0x1b altgr -dead_caron 0x1b shift altgr -ordfeminine 0x1e altgr -masculine 0x1e shift altgr -ssharp 0x1f altgr -section 0x1f shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -lstroke 0x26 altgr -Lstroke 0x26 shift altgr -ae 0x27 -AE 0x27 shift -oslash 0x28 -Ooblique 0x28 shift -dead_caron 0x28 shift altgr -onehalf 0x29 -section 0x29 shift -threequarters 0x29 altgr -paragraph 0x29 shift altgr -apostrophe 0x2b -asterisk 0x2b shift -dead_doubleacute 0x2b altgr -multiply 0x2b shift altgr -guillemotleft 0x2c altgr -guillemotright 0x2d altgr -copyright 0x2e altgr -leftdoublequotemark 0x2f altgr -grave 0x2f shift altgr -rightdoublequotemark 0x30 altgr -mu 0x32 altgr -masculine 0x32 shift altgr -comma 0x33 -semicolon 0x33 shift -dead_cedilla 0x33 altgr -dead_ogonek 0x33 shift altgr -period 0x34 -colon 0x34 shift -periodcentered 0x34 altgr -dead_abovedot 0x34 shift altgr -minus 0x35 -underscore 0x35 shift -hyphen 0x35 altgr -macron 0x35 shift altgr -nobreakspace 0x39 altgr -less 0x56 -greater 0x56 shift -backslash 0x56 altgr -notsign 0x56 shift altgr diff --git a/qemu/pc-bios/keymaps/de b/qemu/pc-bios/keymaps/de deleted file mode 100644 index ed929c743..000000000 --- a/qemu/pc-bios/keymaps/de +++ /dev/null @@ -1,114 +0,0 @@ -# generated from XKB map de -include common -map 0x407 -exclam 0x02 shift -onesuperior 0x02 altgr -exclamdown 0x02 shift altgr -quotedbl 0x03 shift -twosuperior 0x03 altgr -oneeighth 0x03 shift altgr -section 0x04 shift -threesuperior 0x04 altgr -sterling 0x04 shift altgr -dollar 0x05 shift -onequarter 0x05 altgr -currency 0x05 shift altgr -percent 0x06 shift -onehalf 0x06 altgr -threeeighths 0x06 shift altgr -ampersand 0x07 shift -threequarters 0x07 altgr -fiveeighths 0x07 shift altgr -slash 0x08 shift -braceleft 0x08 altgr -seveneighths 0x08 shift altgr -parenleft 0x09 shift -bracketleft 0x09 altgr -trademark 0x09 shift altgr -parenright 0x0a shift -bracketright 0x0a altgr -plusminus 0x0a shift altgr -equal 0x0b shift -braceright 0x0b altgr -ssharp 0x0c -question 0x0c shift -backslash 0x0c altgr -questiondown 0x0c shift altgr -acute 0x0d -dead_acute 0x0d -grave 0x0d shift -dead_grave 0x0d shift -dead_cedilla 0x0d altgr -dead_ogonek 0x0d shift altgr -at 0x10 altgr -Greek_OMEGA 0x10 shift altgr -EuroSign 0x12 altgr -paragraph 0x13 altgr -registered 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -z 0x15 addupper -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oslash 0x18 altgr -Ooblique 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -udiaeresis 0x1a -Udiaeresis 0x1a shift -dead_diaeresis 0x1a altgr -dead_abovering 0x1a shift altgr -plus 0x1b -asterisk 0x1b shift -asciitilde 0x1b altgr -dead_tilde 0x1b altgr -dead_macron 0x1b shift altgr -ae 0x1e altgr -AE 0x1e shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -odiaeresis 0x27 -Odiaeresis 0x27 shift -dead_doubleacute 0x27 altgr -adiaeresis 0x28 -Adiaeresis 0x28 shift -dead_caron 0x28 shift altgr -asciicircum 0x29 -dead_circumflex 0x29 -degree 0x29 shift -notsign 0x29 altgr -numbersign 0x2b -apostrophe 0x2b shift -dead_breve 0x2b shift altgr -y 0x2c addupper -guillemotleft 0x2c altgr -guillemotright 0x2d altgr -cent 0x2e altgr -copyright 0x2e shift altgr -leftdoublequotemark 0x2f altgr -rightdoublequotemark 0x30 altgr -mu 0x32 altgr -masculine 0x32 shift altgr -comma 0x33 -semicolon 0x33 shift -horizconnector 0x33 altgr -multiply 0x33 shift altgr -period 0x34 -colon 0x34 shift -periodcentered 0x34 altgr -division 0x34 shift altgr -minus 0x35 -underscore 0x35 shift -dead_belowdot 0x35 altgr -dead_abovedot 0x35 shift altgr diff --git a/qemu/pc-bios/keymaps/de-ch b/qemu/pc-bios/keymaps/de-ch deleted file mode 100644 index 852f8b8db..000000000 --- a/qemu/pc-bios/keymaps/de-ch +++ /dev/null @@ -1,169 +0,0 @@ -# rdesktop Swiss-German (de-ch) keymap file -# 2003-06-03 by noldi@tristar.ch -# -include common -map 0x00000807 -# -# Scan Code 1 -section 0x29 -degree 0x29 shift -notsign 0x29 altgr inhibit -# -# Scan Code 2 -plus 0x2 shift -brokenbar 0x02 altgr -# -# Scan Code 3 -quotedbl 0x03 shift -at 0x03 altgr -# -# Scan Code 4 -asterisk 0x04 shift -numbersign 0x04 altgr -# -# Scan Code 5 -ccedilla 0x05 shift -onequarter 0x05 altgr inhibit -# -# Scan Code 6 -percent 0x06 shift -onehalf 0x06 altgr inhibit -# -# Scan Code 7 -ampersand 0x07 shift -notsign 0x07 altgr -# -# Scan Code 8 -slash 0x08 shift -bar 0x08 altgr -# -# Scan Code 9 -parenleft 0x09 shift -cent 0x09 altgr -# -# Scan Code 10 -parenright 0x0a shift -# -# Scan Code 11 -equal 0x0b shift -braceright 0x0b altgr inhibit -# -# Scan Code 12 -apostrophe 0x0c -question 0x0c shift -dead_acute 0x0c altgr -# -# Scan Code 13 -dead_circumflex 0x0d -dead_grave 0x0d shift -dead_tilde 0x0d altgr -# -# Scan Code 19 -EuroSign 0x12 altgr -# -# Scan Code 22 -z 0x15 addupper -# -# Scan Code 27 -udiaeresis 0x1a -egrave 0x1a shift -bracketleft 0x1a altgr -# -# Scan Code 28 -dead_diaeresis 0x1b -exclam 0x1b shift -bracketright 0x1b altgr -# -# Scan Code 40 -odiaeresis 0x27 -eacute 0x27 shift -# -# Scan Code 41 -adiaeresis 0x28 -agrave 0x28 shift -braceleft 0x28 altgr -# -# Scan Code 42 (only on international keyboards) -dollar 0x2b -sterling 0x2b shift -braceright 0x2b altgr -# -# Scan Code 45 (only on international keyboards) -backslash 0x56 altgr -# -# Scan Code 46 -y 0x2c addupper -# -# Scan Code 53 -comma 0x33 -semicolon 0x33 shift -# -# Scan Code 54 -period 0x34 -colon 0x34 shift -# -# Scan Code 55 -minus 0x35 -underscore 0x35 shift -# -# Suppress Windows unsupported AltGr keys -# -# Scan Code 17 -paragraph 0x10 altgr inhibit -# -# Scan Code 21 -tslash 0x14 altgr inhibit -# -# Scan Code 22 -leftarrow 0x15 altgr inhibit -# -# Scan Code 23 -downarrow 0x16 altgr inhibit -# -# Scan Code 24 -rightarrow 0x17 altgr inhibit -# -# Scan Code 25 -oslash 0x18 altgr inhibit -# -# Scan Code 26 -thorn 0x19 altgr inhibit -# -# Scan Code 31 -ae 0x1e altgr inhibit -# -# Scan Code 32 -ssharp 0x1f altgr inhibit -# -# Scan Code 33 -eth 0x20 altgr inhibit -# -# Scan Code 34 -dstroke 0x21 altgr inhibit -# -# Scan Code 35 -eng 0x22 altgr inhibit -# -# Scan Code 36 -hstroke 0x23 altgr inhibit -# -# Scan Code 38 -kra 0x25 altgr inhibit -# -# Scan Code 39 -lstroke 0x26 altgr inhibit -# -# Scan Code 46 -guillemotleft 0x2c altgr inhibit -# -# Scan Code 47 -guillemotright 0x2d altgr inhibit -# -# Scan Code 49 -leftdoublequotemark 0x2f altgr inhibit -# -# Scan Code 50 -rightdoublequotemark 0x30 altgr inhibit -# -# Scan Code 52 -mu 0x32 altgr inhibit diff --git a/qemu/pc-bios/keymaps/en-gb b/qemu/pc-bios/keymaps/en-gb deleted file mode 100644 index b45f06c7c..000000000 --- a/qemu/pc-bios/keymaps/en-gb +++ /dev/null @@ -1,119 +0,0 @@ -# generated from XKB map gb -include common -map 0x809 -exclam 0x02 shift -onesuperior 0x02 altgr -exclamdown 0x02 shift altgr -quotedbl 0x03 shift -twosuperior 0x03 altgr -oneeighth 0x03 shift altgr -sterling 0x04 shift -threesuperior 0x04 altgr -dollar 0x05 shift -EuroSign 0x05 altgr -percent 0x06 shift -onehalf 0x06 altgr -threeeighths 0x06 shift altgr -asciicircum 0x07 shift -threequarters 0x07 altgr -fiveeighths 0x07 shift altgr -ampersand 0x08 shift -braceleft 0x08 altgr -seveneighths 0x08 shift altgr -asterisk 0x09 shift -bracketleft 0x09 altgr -trademark 0x09 shift altgr -parenleft 0x0a shift -bracketright 0x0a altgr -plusminus 0x0a shift altgr -parenright 0x0b shift -braceright 0x0b altgr -degree 0x0b shift altgr -minus 0x0c -underscore 0x0c shift -backslash 0x0c altgr -questiondown 0x0c shift altgr -equal 0x0d -plus 0x0d shift -dead_cedilla 0x0d altgr -dead_ogonek 0x0d shift altgr -at 0x10 altgr -Greek_OMEGA 0x10 shift altgr -lstroke 0x11 altgr -Lstroke 0x11 shift altgr -paragraph 0x13 altgr -registered 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oslash 0x18 altgr -Ooblique 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -bracketleft 0x1a -braceleft 0x1a shift -dead_diaeresis 0x1a altgr -dead_abovering 0x1a shift altgr -bracketright 0x1b -braceright 0x1b shift -dead_tilde 0x1b altgr -dead_macron 0x1b shift altgr -ae 0x1e altgr -AE 0x1e shift altgr -ssharp 0x1f altgr -section 0x1f shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -lstroke 0x26 altgr -Lstroke 0x26 shift altgr -semicolon 0x27 -colon 0x27 shift -dead_acute 0x27 altgr -dead_doubleacute 0x27 shift altgr -apostrophe 0x28 -at 0x28 shift -dead_circumflex 0x28 altgr -dead_caron 0x28 shift altgr -grave 0x29 -notsign 0x29 shift -bar 0x29 altgr -numbersign 0x2b -asciitilde 0x2b shift -dead_grave 0x2b altgr -dead_breve 0x2b shift altgr -guillemotleft 0x2c altgr -less 0x2c shift altgr -guillemotright 0x2d altgr -greater 0x2d shift altgr -cent 0x2e altgr -copyright 0x2e shift altgr -leftdoublequotemark 0x2f altgr -rightdoublequotemark 0x30 altgr -mu 0x32 altgr -masculine 0x32 shift altgr -comma 0x33 -less 0x33 shift -horizconnector 0x33 altgr -multiply 0x33 shift altgr -period 0x34 -greater 0x34 shift -periodcentered 0x34 altgr -division 0x34 shift altgr -slash 0x35 -question 0x35 shift -dead_belowdot 0x35 altgr -dead_abovedot 0x35 shift altgr -backslash 0x56 -bar 0x56 shift diff --git a/qemu/pc-bios/keymaps/en-us b/qemu/pc-bios/keymaps/en-us deleted file mode 100644 index f5784bbb3..000000000 --- a/qemu/pc-bios/keymaps/en-us +++ /dev/null @@ -1,35 +0,0 @@ -# generated from XKB map us -include common -map 0x409 -exclam 0x02 shift -at 0x03 shift -numbersign 0x04 shift -dollar 0x05 shift -percent 0x06 shift -asciicircum 0x07 shift -ampersand 0x08 shift -asterisk 0x09 shift -parenleft 0x0a shift -parenright 0x0b shift -minus 0x0c -underscore 0x0c shift -equal 0x0d -plus 0x0d shift -bracketleft 0x1a -braceleft 0x1a shift -bracketright 0x1b -braceright 0x1b shift -semicolon 0x27 -colon 0x27 shift -apostrophe 0x28 -quotedbl 0x28 shift -grave 0x29 -asciitilde 0x29 shift -backslash 0x2b -bar 0x2b shift -comma 0x33 -less 0x33 shift -period 0x34 -greater 0x34 shift -slash 0x35 -question 0x35 shift diff --git a/qemu/pc-bios/keymaps/es b/qemu/pc-bios/keymaps/es deleted file mode 100644 index 0c29eec5a..000000000 --- a/qemu/pc-bios/keymaps/es +++ /dev/null @@ -1,105 +0,0 @@ -# generated from XKB map es -include common -map 0x40a -exclam 0x02 shift -bar 0x02 altgr -quotedbl 0x03 shift -at 0x03 altgr -oneeighth 0x03 shift altgr -periodcentered 0x04 shift -numbersign 0x04 altgr -sterling 0x04 shift altgr -dollar 0x05 shift -asciitilde 0x05 altgr -percent 0x06 shift -onehalf 0x06 altgr -threeeighths 0x06 shift altgr -ampersand 0x07 shift -notsign 0x07 altgr -fiveeighths 0x07 shift altgr -slash 0x08 shift -seveneighths 0x08 shift altgr -parenleft 0x09 shift -trademark 0x09 shift altgr -parenright 0x0a shift -plusminus 0x0a shift altgr -equal 0x0b shift -degree 0x0b shift altgr -apostrophe 0x0c -question 0x0c shift -exclamdown 0x0d -questiondown 0x0d shift -Greek_OMEGA 0x10 shift altgr -lstroke 0x11 altgr -Lstroke 0x11 shift altgr -EuroSign 0x12 altgr -paragraph 0x13 altgr -registered 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oslash 0x18 altgr -Ooblique 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -dead_grave 0x1a -dead_circumflex 0x1a shift -bracketleft 0x1a altgr -dead_abovering 0x1a shift altgr -plus 0x1b -asterisk 0x1b shift -bracketright 0x1b altgr -dead_macron 0x1b shift altgr -ae 0x1e altgr -AE 0x1e shift altgr -ssharp 0x1f altgr -section 0x1f shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -lstroke 0x26 altgr -Lstroke 0x26 shift altgr -ntilde 0x27 -Ntilde 0x27 shift -dead_doubleacute 0x27 shift altgr -dead_acute 0x28 -dead_diaeresis 0x28 shift -braceleft 0x28 altgr -masculine 0x29 -ordfeminine 0x29 shift -backslash 0x29 altgr -ccedilla 0x2b -Ccedilla 0x2b shift -braceright 0x2b altgr -dead_breve 0x2b shift altgr -guillemotleft 0x2c altgr -less 0x56 -greater 0x56 shift -guillemotright 0x2d altgr -cent 0x2e altgr -copyright 0x2e shift altgr -leftdoublequotemark 0x2f altgr -grave 0x2f shift altgr -rightdoublequotemark 0x30 altgr -mu 0x32 altgr -comma 0x33 -semicolon 0x33 shift -horizconnector 0x33 altgr -multiply 0x33 shift altgr -period 0x34 -colon 0x34 shift -division 0x34 shift altgr -minus 0x35 -underscore 0x35 shift -dead_belowdot 0x35 altgr -dead_abovedot 0x35 shift altgr diff --git a/qemu/pc-bios/keymaps/et b/qemu/pc-bios/keymaps/et deleted file mode 100644 index 85541a377..000000000 --- a/qemu/pc-bios/keymaps/et +++ /dev/null @@ -1,85 +0,0 @@ -map 0x00000425 -include common - -# -# Top row -# -dead_caron 0x29 -dead_tilde 0x29 shift - -# 1 -exclam 0x2 shift - -# 2 -quotedbl 0x3 shift -at 0x3 altgr - -# 3 -numbersign 0x4 shift -sterling 0x4 altgr -# 4 -currency 0x5 shift -dollar 0x5 altgr -# 5 -percent 0x6 shift -# 6 -ampersand 0x7 shift -# 7 -slash 0x8 shift -braceleft 0x8 altgr -# 8 -parenleft 0x9 shift -bracketleft 0x9 altgr -# 9 -parenright 0xa shift -bracketright 0xa altgr -# 0 -equal 0xb shift -braceright 0xb altgr - -plus 0xc -question 0xc shift -backslash 0xc altgr - -acute 0xd -dead_acute 0xd -grave 0xd shift -dead_grave 0xd shift - -# -# QWERTY first row -# -EuroSign 0x12 altgr -udiaeresis 0x1a -Udiaeresis 0x1a shift -otilde 0x1b -Otilde 0x1b shift -section 0x1b altgr - -# -# QWERTY second row -# -scaron 0x1f altgr -Scaron 0x1f altgr shift -odiaeresis 0x27 -Odiaeresis 0x27 shift -adiaeresis 0x28 -Adiaeresis 0x28 shift -asciicircum 0x28 altgr -apostrophe 0x2b -asterisk 0x2b shift -onehalf 0x2b altgr -# -# QWERTY third row -# -less 0x56 -greater 0x56 shift -bar 0x56 altgr -zcaron 0x2c altgr -Zcaron 0x2c altgr shift -comma 0x33 -semicolon 0x33 shift -period 0x34 -colon 0x34 shift -minus 0x35 -underscore 0x35 shift diff --git a/qemu/pc-bios/keymaps/fi b/qemu/pc-bios/keymaps/fi deleted file mode 100644 index 4be75865a..000000000 --- a/qemu/pc-bios/keymaps/fi +++ /dev/null @@ -1,122 +0,0 @@ -# generated from XKB map se_FI -include common -map 0x40b -exclam 0x02 shift -exclamdown 0x02 altgr -onesuperior 0x02 shift altgr -quotedbl 0x03 shift -at 0x03 altgr -twosuperior 0x03 shift altgr -numbersign 0x04 shift -sterling 0x04 altgr -threesuperior 0x04 shift altgr -currency 0x05 shift -dollar 0x05 altgr -onequarter 0x05 shift altgr -percent 0x06 shift -onehalf 0x06 altgr -cent 0x06 shift altgr -ampersand 0x07 shift -yen 0x07 altgr -fiveeighths 0x07 shift altgr -slash 0x08 shift -braceleft 0x08 altgr -division 0x08 shift altgr -parenleft 0x09 shift -bracketleft 0x09 altgr -guillemotleft 0x09 shift altgr -parenright 0x0a shift -bracketright 0x0a altgr -guillemotright 0x0a shift altgr -equal 0x0b shift -braceright 0x0b altgr -degree 0x0b shift altgr -plus 0x0c -question 0x0c shift -backslash 0x0c altgr -questiondown 0x0c shift altgr -dead_acute 0x0d -dead_grave 0x0d shift -plusminus 0x0d altgr -notsign 0x0d shift altgr -at 0x10 altgr -Greek_OMEGA 0x10 shift altgr -lstroke 0x11 altgr -Lstroke 0x11 shift altgr -EuroSign 0x12 altgr -cent 0x12 shift altgr -registered 0x13 altgr -thorn 0x14 altgr -THORN 0x14 shift altgr -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oe 0x18 altgr -OE 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -aring 0x1a -Aring 0x1a shift -dead_diaeresis 0x1a altgr -dead_abovering 0x1a shift altgr -dead_diaeresis 0x1b -dead_circumflex 0x1b shift -dead_tilde 0x1b altgr -dead_caron 0x1b shift altgr -ordfeminine 0x1e altgr -masculine 0x1e shift altgr -ssharp 0x1f altgr -section 0x1f shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -ampersand 0x25 shift altgr -lstroke 0x26 altgr -Lstroke 0x26 shift altgr -odiaeresis 0x27 -Odiaeresis 0x27 shift -oslash 0x27 altgr -Ooblique 0x27 shift altgr -adiaeresis 0x28 -Adiaeresis 0x28 shift -ae 0x28 altgr -AE 0x28 shift altgr -section 0x29 -onehalf 0x29 shift -paragraph 0x29 altgr -threequarters 0x29 shift altgr -apostrophe 0x2b -asterisk 0x2b shift -acute 0x2b altgr -multiply 0x2b shift altgr -guillemotleft 0x2c altgr -guillemotright 0x2d altgr -copyright 0x2e altgr -leftdoublequotemark 0x2f altgr -grave 0x2f shift altgr -rightdoublequotemark 0x30 altgr -apostrophe 0x30 shift altgr -mu 0x32 altgr -masculine 0x32 shift altgr -comma 0x33 -semicolon 0x33 shift -dead_cedilla 0x33 altgr -dead_ogonek 0x33 shift altgr -period 0x34 -colon 0x34 shift -periodcentered 0x34 altgr -dead_abovedot 0x34 shift altgr -minus 0x35 -underscore 0x35 shift -hyphen 0x35 altgr -macron 0x35 shift altgr -nobreakspace 0x39 altgr diff --git a/qemu/pc-bios/keymaps/fo b/qemu/pc-bios/keymaps/fo deleted file mode 100644 index c00d9d4de..000000000 --- a/qemu/pc-bios/keymaps/fo +++ /dev/null @@ -1,76 +0,0 @@ -map 0x438 -include common - -# -# Top row -# -onehalf 0x29 -section 0x29 shift - -# 1 -exclam 0x2 shift - -# 2 -quotedbl 0x3 shift -at 0x3 altgr - -# 3 -numbersign 0x4 shift -sterling 0x4 altgr -# 4 -currency 0x5 shift -dollar 0x5 altgr -# 5 -percent 0x6 shift -# 6 -ampersand 0x7 shift -# 7 -slash 0x8 shift -braceleft 0x8 altgr -# 8 -parenleft 0x9 shift -bracketleft 0x9 altgr -# 9 -parenright 0xa shift -bracketright 0xa altgr -# 0 -equal 0xb shift -braceright 0xb altgr - -plus 0xc -question 0xc shift -plusminus 0xc altgr - -bar 0xd altgr -dead_acute 0xd - -# -# QWERTY first row -# -EuroSign 0x12 altgr -aring 0x1a -Aring 0x1a shift -eth 0x1b addupper -asciitilde 0x1b altgr - -# -# QWERTY second row -# -ae 0x27 addupper -oslash 0x28 -Ooblique 0x28 shift -apostrophe 0x2b -asterisk 0x2b shift - -# -# QWERTY third row -# -less 0x56 -greater 0x56 shift -backslash 0x56 altgr -comma 0x33 -semicolon 0x33 shift -period 0x34 -colon 0x34 shift -minus 0x35 -underscore 0x35 shift diff --git a/qemu/pc-bios/keymaps/fr b/qemu/pc-bios/keymaps/fr deleted file mode 100644 index ba5a176c3..000000000 --- a/qemu/pc-bios/keymaps/fr +++ /dev/null @@ -1,181 +0,0 @@ -include common -map 0x40c -# -# Top row -# -twosuperior 0x29 -notsign 0x29 altgr - -ampersand 0x02 -1 0x02 shift -onesuperior 0x02 altgr -exclamdown 0x02 shift altgr - -eacute 0x03 -2 0x03 shift -asciitilde 0x03 altgr -oneeighth 0x03 shift altgr - -quotedbl 0x04 -3 0x04 shift -numbersign 0x04 altgr - -apostrophe 0x05 -4 0x05 shift -braceleft 0x05 altgr - -parenleft 0x06 -5 0x06 shift -bracketleft 0x06 altgr -threeeighths 0x06 shift altgr - -minus 0x07 -6 0x07 shift -bar 0x07 altgr -fiveeighths 0x07 shift altgr - -egrave 0x08 -7 0x08 shift -grave 0x08 altgr -seveneighths 0x08 shift altgr - -underscore 0x09 -8 0x09 shift -backslash 0x09 altgr -trademark 0x09 shift altgr - -ccedilla 0x0a -9 0x0a shift -asciicircum 0x0a altgr -plusminus 0x0a shift altgr - -agrave 0x0b -0 0x0b shift -at 0x0b altgr - -parenright 0x0c -degree 0x0c shift -bracketright 0x0c altgr -questiondown 0x0c shift altgr - -equal 0x0d -plus 0x0d shift -braceright 0x0d altgr -dead_ogonek 0x0d shift altgr - -# -# AZERTY first row -# - -a 0x10 addupper -ae 0x10 altgr -AE 0x10 shift altgr - -z 0x11 addupper -guillemotleft 0x11 altgr - -EuroSign 0x12 altgr - -paragraph 0x13 altgr -registered 0x13 shift altgr - -tslash 0x14 altgr -Tslash 0x14 shift altgr - -leftarrow 0x15 altgr -yen 0x15 shift altgr - -downarrow 0x16 altgr -uparrow 0x16 shift altgr - -rightarrow 0x17 altgr -idotless 0x17 shift altgr - -oslash 0x18 altgr -Ooblique 0x18 shift altgr - -thorn 0x19 altgr -THORN 0x19 shift altgr - -dead_circumflex 0x1a -dead_diaeresis 0x1a shift -dead_abovering 0x1a shift altgr - -dollar 0x1b -sterling 0x1b shift -currency 0x1b altgr -dead_macron 0x1b shift altgr - -# -# AZERTY second row -# -q 0x1e addupper -Greek_OMEGA 0x1e shift altgr - -ssharp 0x1f altgr - -eth 0x20 altgr -ETH 0x20 shift altgr - -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr - -eng 0x22 altgr -ENG 0x22 shift altgr - -hstroke 0x23 altgr -Hstroke 0x23 shift altgr - -kra 0x25 altgr - -lstroke 0x26 altgr -Lstroke 0x26 shift altgr - -m 0x27 addupper -masculine 0x27 shift altgr - -ugrave 0x28 -percent 0x28 shift -dead_caron 0x28 shift altgr - -asterisk 0x2b -mu 0x2b shift -dead_grave 0x2b altgr -dead_breve 0x2b shift altgr - -# -# AZERTY third row -# -less 0x56 -greater 0x56 shift - -w 0x2c addupper - -guillemotright 0x2d altgr - -cent 0x2e altgr -copyright 0x2e shift altgr - -leftdoublequotemark 0x2f altgr - -rightdoublequotemark 0x30 altgr - -comma 0x32 -question 0x32 shift -dead_acute 0x32 altgr -dead_doubleacute 0x32 shift altgr - -semicolon 0x33 -period 0x33 shift -horizconnector 0x33 altgr -multiply 0x33 shift altgr - -colon 0x34 -slash 0x34 shift -periodcentered 0x34 altgr -division 0x34 shift altgr - -exclam 0x35 -section 0x35 shift -dead_belowdot 0x35 altgr -dead_abovedot 0x35 shift altgr diff --git a/qemu/pc-bios/keymaps/fr-be b/qemu/pc-bios/keymaps/fr-be deleted file mode 100644 index 62f71286e..000000000 --- a/qemu/pc-bios/keymaps/fr-be +++ /dev/null @@ -1,134 +0,0 @@ -# generated from XKB map be -include common -map 0x80c -ampersand 0x02 -1 0x02 shift -bar 0x02 altgr -exclamdown 0x02 shift altgr -eacute 0x03 -2 0x03 shift -at 0x03 altgr -oneeighth 0x03 shift altgr -quotedbl 0x04 -3 0x04 shift -numbersign 0x04 altgr -sterling 0x04 shift altgr -apostrophe 0x05 -4 0x05 shift -onequarter 0x05 altgr -dollar 0x05 shift altgr -parenleft 0x06 -5 0x06 shift -onehalf 0x06 altgr -threeeighths 0x06 shift altgr -section 0x07 -6 0x07 shift -asciicircum 0x07 altgr -fiveeighths 0x07 shift altgr -egrave 0x08 -7 0x08 shift -braceleft 0x08 altgr -seveneighths 0x08 shift altgr -exclam 0x09 -8 0x09 shift -bracketleft 0x09 altgr -trademark 0x09 shift altgr -ccedilla 0x0a -9 0x0a shift -braceleft 0x0a altgr -plusminus 0x0a shift altgr -agrave 0x0b -0 0x0b shift -braceright 0x0b altgr -degree 0x0b shift altgr -parenright 0x0c -degree 0x0c shift -backslash 0x0c altgr -questiondown 0x0c shift altgr -minus 0x0d -underscore 0x0d shift -dead_cedilla 0x0d altgr -dead_ogonek 0x0d shift altgr -a 0x10 addupper -Greek_OMEGA 0x10 shift altgr -z 0x11 addupper -lstroke 0x11 altgr -Lstroke 0x11 shift altgr -EuroSign 0x12 altgr -cent 0x12 shift altgr -paragraph 0x13 altgr -registered 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oslash 0x18 altgr -Ooblique 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -dead_circumflex 0x1a -dead_diaeresis 0x1a shift -bracketleft 0x1a altgr -dead_abovering 0x1a shift altgr -dollar 0x1b -asterisk 0x1b shift -bracketright 0x1b altgr -dead_macron 0x1b shift altgr -q 0x1e addupper -ae 0x1e altgr -AE 0x1e shift altgr -ssharp 0x1f altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -lstroke 0x26 altgr -Lstroke 0x26 shift altgr -m 0x27 addupper -dead_acute 0x27 altgr -dead_doubleacute 0x27 shift altgr -ugrave 0x28 -percent 0x28 shift -dead_acute 0x28 altgr -dead_caron 0x28 shift altgr -twosuperior 0x29 -threesuperior 0x29 shift -notsign 0x29 altgr -mu 0x2b -sterling 0x2b shift -dead_grave 0x2b altgr -dead_breve 0x2b shift altgr -w 0x2c addupper -guillemotleft 0x2c altgr -guillemotright 0x2d altgr -cent 0x2e altgr -copyright 0x2e shift altgr -leftdoublequotemark 0x2f altgr -grave 0x2f shift altgr -rightdoublequotemark 0x30 altgr -comma 0x32 -question 0x32 shift -dead_cedilla 0x32 altgr -masculine 0x32 shift altgr -semicolon 0x33 -period 0x33 shift -horizconnector 0x33 altgr -multiply 0x33 shift altgr -colon 0x34 -slash 0x34 shift -periodcentered 0x34 altgr -division 0x34 shift altgr -equal 0x35 -plus 0x35 shift -dead_tilde 0x35 altgr -dead_abovedot 0x35 shift altgr -backslash 0x56 altgr diff --git a/qemu/pc-bios/keymaps/fr-ca b/qemu/pc-bios/keymaps/fr-ca deleted file mode 100644 index b645208e4..000000000 --- a/qemu/pc-bios/keymaps/fr-ca +++ /dev/null @@ -1,50 +0,0 @@ -# Canadian French -# By Simon Germain -include common -map 0xc0c - -backslash 0x29 altgr -plusminus 0x2 altgr -at 0x3 altgr -sterling 0x4 altgr -cent 0x5 altgr -currency 0x6 altgr -notsign 0x7 altgr -bar 0x29 shift -twosuperior 0x9 altgr -threesuperior 0xa altgr -onequarter 0xb altgr -onehalf 0xc altgr -threequarters 0xd altgr -section 0x18 altgr -paragraph 0x19 altgr -bracketleft 0x1a altgr -bracketright 0x1b altgr -asciitilde 0x27 altgr -braceleft 0x28 altgr -braceright 0x2b altgr -less 0x2b -greater 0x2b shift -guillemotleft 0x56 -guillemotright 0x56 shift -degree 0x56 altgr -mu 0x32 altgr -eacute 0x35 -dead_acute 0x35 altgr -dead_grave 0x28 -dead_circumflex 0x1a -dead_circumflex 0x1a shift -dead_cedilla 0x1b -dead_diaeresis 0x1b shift -exclam 0x2 shift -quotedbl 0x3 shift -slash 0x4 shift -dollar 0x5 shift -percent 0x6 shift -question 0x7 shift -ampersand 0x8 shift -asterisk 0x9 shift -parenleft 0xa shift -parenright 0xb shift -underscore 0xc shift -plus 0xd shift diff --git a/qemu/pc-bios/keymaps/fr-ch b/qemu/pc-bios/keymaps/fr-ch deleted file mode 100644 index 4620d2033..000000000 --- a/qemu/pc-bios/keymaps/fr-ch +++ /dev/null @@ -1,114 +0,0 @@ -# generated from XKB map fr_CH -include common -map 0x100c -exclam 0x02 shift -onesuperior 0x02 altgr -exclamdown 0x02 shift altgr -quotedbl 0x03 shift -twosuperior 0x03 altgr -oneeighth 0x03 shift altgr -section 0x04 shift -threesuperior 0x04 altgr -sterling 0x04 shift altgr -dollar 0x05 shift -onequarter 0x05 altgr -currency 0x05 shift altgr -percent 0x06 shift -onehalf 0x06 altgr -threeeighths 0x06 shift altgr -ampersand 0x07 shift -threequarters 0x07 altgr -fiveeighths 0x07 shift altgr -slash 0x08 shift -braceleft 0x08 altgr -seveneighths 0x08 shift altgr -parenleft 0x09 shift -bracketleft 0x09 altgr -trademark 0x09 shift altgr -parenright 0x0a shift -bracketright 0x0a altgr -plusminus 0x0a shift altgr -equal 0x0b shift -braceright 0x0b altgr -ssharp 0x0c -question 0x0c shift -backslash 0x0c altgr -questiondown 0x0c shift altgr -acute 0x0d -dead_acute 0x0d -grave 0x0d shift -dead_grave 0x0d shift -dead_cedilla 0x0d altgr -dead_ogonek 0x0d shift altgr -at 0x10 altgr -Greek_OMEGA 0x10 shift altgr -EuroSign 0x12 altgr -paragraph 0x13 altgr -registered 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -z 0x15 addupper -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oslash 0x18 altgr -Ooblique 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -udiaeresis 0x1a -Udiaeresis 0x1a shift -dead_diaeresis 0x1a altgr -dead_abovering 0x1a shift altgr -plus 0x1b -asterisk 0x1b shift -asciitilde 0x1b altgr -dead_tilde 0x1b altgr -dead_macron 0x1b shift altgr -ae 0x1e altgr -AE 0x1e shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -odiaeresis 0x27 -Odiaeresis 0x27 shift -dead_doubleacute 0x27 altgr -adiaeresis 0x28 -Adiaeresis 0x28 shift -dead_caron 0x28 shift altgr -asciicircum 0x29 -dead_circumflex 0x29 -degree 0x29 shift -notsign 0x29 altgr -numbersign 0x2b -apostrophe 0x2b shift -dead_breve 0x2b shift altgr -y 0x2c addupper -guillemotleft 0x2c altgr -guillemotright 0x2d altgr -cent 0x2e altgr -copyright 0x2e shift altgr -leftdoublequotemark 0x2f altgr -rightdoublequotemark 0x30 altgr -mu 0x32 altgr -masculine 0x32 shift altgr -comma 0x33 -semicolon 0x33 shift -horizconnector 0x33 altgr -multiply 0x33 shift altgr -period 0x34 -colon 0x34 shift -periodcentered 0x34 altgr -division 0x34 shift altgr -minus 0x35 -underscore 0x35 shift -dead_belowdot 0x35 altgr -dead_abovedot 0x35 shift altgr diff --git a/qemu/pc-bios/keymaps/hr b/qemu/pc-bios/keymaps/hr deleted file mode 100644 index 613aa6925..000000000 --- a/qemu/pc-bios/keymaps/hr +++ /dev/null @@ -1,125 +0,0 @@ -# generated from XKB map hr -include common -map 0x41a -exclam 0x02 shift -asciitilde 0x02 altgr -dead_tilde 0x02 shift altgr -quotedbl 0x03 shift -dead_caron 0x03 altgr -caron 0x03 shift altgr -numbersign 0x04 shift -asciicircum 0x04 altgr -dead_circumflex 0x04 shift altgr -dollar 0x05 shift -dead_breve 0x05 altgr -breve 0x05 shift altgr -percent 0x06 shift -degree 0x06 altgr -dead_abovering 0x06 shift altgr -ampersand 0x07 shift -dead_ogonek 0x07 altgr -ogonek 0x07 shift altgr -slash 0x08 shift -grave 0x08 altgr -dead_grave 0x08 shift altgr -parenleft 0x09 shift -dead_abovedot 0x09 altgr -abovedot 0x09 shift altgr -parenright 0x0a shift -dead_acute 0x0a altgr -apostrophe 0x0a shift altgr -equal 0x0b shift -dead_doubleacute 0x0b altgr -doubleacute 0x0b shift altgr -apostrophe 0x0c -question 0x0c shift -dead_diaeresis 0x0c altgr -diaeresis 0x0c shift altgr -plus 0x0d -asterisk 0x0d shift -dead_cedilla 0x0d altgr -cedilla 0x0d shift altgr -backslash 0x10 altgr -Greek_OMEGA 0x10 shift altgr -bar 0x11 altgr -Lstroke 0x11 shift altgr -EuroSign 0x12 altgr -paragraph 0x13 altgr -registered 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -z 0x15 addupper -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oslash 0x18 altgr -Ooblique 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -scaron 0x1a -Scaron 0x1a shift -division 0x1a altgr -dead_abovering 0x1a shift altgr -dstroke 0x1b -Dstroke 0x1b shift -multiply 0x1b altgr -dead_macron 0x1b shift altgr -ae 0x1e altgr -AE 0x1e shift altgr -ssharp 0x1f altgr -section 0x1f shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -bracketleft 0x21 altgr -ordfeminine 0x21 shift altgr -bracketright 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -lstroke 0x25 altgr -ampersand 0x25 shift altgr -Lstroke 0x26 altgr -ccaron 0x27 -Ccaron 0x27 shift -dead_acute 0x27 altgr -dead_doubleacute 0x27 shift altgr -cacute 0x28 -Cacute 0x28 shift -ssharp 0x28 altgr -dead_caron 0x28 shift altgr -dead_cedilla 0x29 -dead_diaeresis 0x29 shift -notsign 0x29 altgr -zcaron 0x2b -Zcaron 0x2b shift -currency 0x2b altgr -dead_breve 0x2b shift altgr -y 0x2c addupper -guillemotleft 0x2c altgr -less 0x2c shift altgr -guillemotright 0x2d altgr -greater 0x2d shift altgr -cent 0x2e altgr -copyright 0x2e shift altgr -at 0x2f altgr -grave 0x2f shift altgr -braceleft 0x30 altgr -apostrophe 0x30 shift altgr -braceright 0x31 altgr -section 0x32 altgr -masculine 0x32 shift altgr -comma 0x33 -semicolon 0x33 shift -horizconnector 0x33 altgr -multiply 0x33 shift altgr -period 0x34 -colon 0x34 shift -periodcentered 0x34 altgr -division 0x34 shift altgr -minus 0x35 -underscore 0x35 shift -dead_belowdot 0x35 altgr -dead_abovedot 0x35 shift altgr diff --git a/qemu/pc-bios/keymaps/hu b/qemu/pc-bios/keymaps/hu deleted file mode 100644 index 8aba44441..000000000 --- a/qemu/pc-bios/keymaps/hu +++ /dev/null @@ -1,115 +0,0 @@ -# Hungarian keyboard layout (QWERTZ) -# Created by: The NeverGone <never@delfin.klte.hu> - -include common -map 0x40e - - -# AltGr keys: -notsign 0x29 altgr -asciitilde 0x02 altgr -caron 0x03 altgr -asciicircum 0x04 altgr -breve 0x05 altgr -degree 0x06 altgr -ogonek 0x07 altgr -grave 0x08 altgr -abovedot 0x09 altgr -acute 0x0a altgr -doubleacute 0x0b altgr -diaeresis 0x0c altgr -cedilla 0x0d altgr -backslash 0x10 altgr -bar 0x11 altgr -EuroSign 0x12 altgr -Iacute 0x17 altgr -division 0x1a altgr -multiply 0x1b altgr -dstroke 0x1f altgr -Dstroke 0x20 altgr -bracketleft 0x21 altgr -bracketright 0x22 altgr -iacute 0x24 altgr -lstroke 0x25 altgr -Lstroke 0x26 altgr -dollar 0x27 altgr -ssharp 0x28 altgr -currency 0x2b altgr -less 0x56 altgr -greater 0x2c altgr -numbersign 0x2d altgr -ampersand 0x2e altgr -at 0x2f altgr -braceleft 0x30 altgr -braceright 0x31 altgr -semicolon 0x33 altgr -asterisk 0x35 altgr - - -# Shift keys: -section 0x29 shift -apostrophe 0x02 shift -quotedbl 0x03 shift -plus 0x04 shift -exclam 0x05 shift -percent 0x06 shift -slash 0x07 shift -equal 0x08 shift -parenleft 0x09 shift -parenright 0x0a shift -Odiaeresis 0x0b shift -Udiaeresis 0x0c shift -Oacute 0x0d shift -Z 0x15 shift -Odoubleacute 0x1a shift -Uacute 0x1b shift -Eacute 0x27 shift -Aacute 0x28 shift -Udoubleacute 0x2b shift -Y 0x2c shift -question 0x33 shift -colon 0x34 shift -underscore 0x35 shift -F13 0x3b shift -F14 0x3c shift -F15 0x3d shift -F16 0x3e shift -F17 0x3f shift -F18 0x40 shift -F19 0x41 shift -F20 0x42 shift -F21 0x43 shift -F22 0x44 shift -F23 0x57 shift -F24 0x58 shift - - -# Ctrl keys: -F25 0x3b ctrl -F26 0x3c ctrl -F27 0x3d ctrl -F28 0x3e ctrl -F29 0x3f ctrl -F30 0x40 ctrl -F31 0x41 ctrl -F32 0x42 ctrl -F33 0x43 ctrl -F34 0x44 ctrl -F35 0x57 ctrl -#NoSymbol 0x58 ctrl - - -0 0x29 -odiaeresis 0x0b -udiaeresis 0x0c -oacute 0x0d -z 0x15 -odoubleacute 0x1a -uacute 0x1b -eacute 0x27 -aacute 0x28 -udoubleacute 0x2b -y 0x2c -comma 0x33 -period 0x34 -minus 0x35 diff --git a/qemu/pc-bios/keymaps/is b/qemu/pc-bios/keymaps/is deleted file mode 100644 index 935ac1da7..000000000 --- a/qemu/pc-bios/keymaps/is +++ /dev/null @@ -1,139 +0,0 @@ -# 2004-03-16 Halldór Guðmundsson and Morten Lange -# Keyboard definition file for the Icelandic keyboard -# to be used in rdesktop 1.3.x ( See rdesktop.org) -# generated from XKB map de, and changed manually -# Location for example /usr/local/share/rdesktop/keymaps/is -include common -map 0x40f -exclam 0x02 shift -onesuperior 0x02 altgr -exclamdown 0x02 shift altgr -quotedbl 0x03 shift -twosuperior 0x03 altgr -oneeighth 0x03 shift altgr -#section 0x04 shift -numbersign 0x04 shift -threesuperior 0x04 altgr -sterling 0x04 shift altgr -dollar 0x05 shift -onequarter 0x05 altgr -currency 0x05 shift altgr -percent 0x06 shift -onehalf 0x06 altgr -threeeighths 0x06 shift altgr -ampersand 0x07 shift -threequarters 0x07 altgr -fiveeighths 0x07 shift altgr -slash 0x08 shift -braceleft 0x08 altgr -seveneighths 0x08 shift altgr -parenleft 0x09 shift -bracketleft 0x09 altgr -trademark 0x09 shift altgr -parenright 0x0a shift -bracketright 0x0a altgr -plusminus 0x0a shift altgr -equal 0x0b shift -braceright 0x0b altgr -#ssharp 0x0c -odiaeresis 0x0c -#question 0x0c shift -Odiaeresis 0x0c shift -backslash 0x0c altgr -questiondown 0x0c shift altgr -#acute 0x0d -minus 0x0d -#dead_acute 0x0d -#grave 0x0d shift -#dead_grave 0x0d shift -underscore 0x0d shift -dead_cedilla 0x0d altgr -dead_ogonek 0x0d shift altgr -at 0x10 altgr -Greek_OMEGA 0x10 shift altgr -EuroSign 0x12 altgr -paragraph 0x13 altgr -registered 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -#z 0x15 addupper -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oslash 0x18 altgr -Ooblique 0x18 shift altgr -#thorn 0x19 altgr -#THORN 0x19 shift altgr -#udiaeresis 0x1a -#Udiaeresis 0x1a shift -#dead_diaeresis 0x1a altgr -#dead_abovering 0x1a shift altgr -eth 0x1a -ETH 0x1a shift -apostrophe 0x1b -question 0x1b shift -#plus 0x1b -#asterisk 0x1b shift -asciitilde 0x1b altgr -#grave 0x1b altgr -#dead_tilde 0x1b altgr -#dead_macron 0x1b shift altgr -#ae 0x1e altgr -#AE 0x1e shift altgr -#eth 0x20 altgr -#eth 0x20 -#ETH 0x20 shift altgr -#ETH 0x20 shift -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -#adiaeresis 0x27 -#Adiaeresis 0x27 shift -ae 0x27 -AE 0x27 shift -dead_doubleacute 0x27 altgr -#adiaeresis 0x28 -#Adiaeresis 0x28 shift -#dead_caron 0x28 shift altgr -#asciicircum 0x29 -acute 0x28 -dead_acute 0x28 -#dead_circumflex 0x29 -#degree 0x29 shift -#notsign 0x29 altgr -plus 0x2b -asterisk 0x2b shift -grave 0x2b altgr -#numbersign 0x2b -#apostrophe 0x2b shift -#dead_breve 0x2b shift altgr -#y 0x2c addupper -guillemotleft 0x2c altgr -guillemotright 0x2d altgr -cent 0x2e altgr -copyright 0x2e shift altgr -leftdoublequotemark 0x2f altgr -rightdoublequotemark 0x30 altgr -mu 0x32 altgr -masculine 0x32 shift altgr -comma 0x33 -semicolon 0x33 shift -horizconnector 0x33 altgr -multiply 0x33 shift altgr -period 0x34 -colon 0x34 shift -periodcentered 0x34 altgr -division 0x34 shift altgr -#minus 0x35 -#underscore 0x35 shift -thorn 0x35 -THORN 0x35 shift -dead_belowdot 0x35 altgr -dead_abovedot 0x35 shift altgr diff --git a/qemu/pc-bios/keymaps/it b/qemu/pc-bios/keymaps/it deleted file mode 100644 index 00ca73a3e..000000000 --- a/qemu/pc-bios/keymaps/it +++ /dev/null @@ -1,115 +0,0 @@ -# generated from XKB map it -include common -map 0x410 -exclam 0x02 shift -onesuperior 0x02 altgr -exclamdown 0x02 shift altgr -quotedbl 0x03 shift -twosuperior 0x03 altgr -oneeighth 0x03 shift altgr -sterling 0x04 shift -threesuperior 0x04 altgr -dollar 0x05 shift -onequarter 0x05 altgr -percent 0x06 shift -onehalf 0x06 altgr -threeeighths 0x06 shift altgr -ampersand 0x07 shift -threequarters 0x07 altgr -fiveeighths 0x07 shift altgr -slash 0x08 shift -braceleft 0x08 altgr -seveneighths 0x08 shift altgr -parenleft 0x09 shift -trademark 0x09 shift altgr -parenright 0x0a shift -plusminus 0x0a shift altgr -equal 0x0b shift -braceright 0x0b altgr -degree 0x0b shift altgr -apostrophe 0x0c -question 0x0c shift -grave 0x0c altgr -questiondown 0x0c shift altgr -igrave 0x0d -asciicircum 0x0d shift -asciitilde 0x0d altgr -dead_ogonek 0x0d shift altgr -at 0x10 altgr -Greek_OMEGA 0x10 shift altgr -lstroke 0x11 altgr -Lstroke 0x11 shift altgr -EuroSign 0x12 altgr -cent 0x12 shift altgr -paragraph 0x13 altgr -registered 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oslash 0x18 altgr -Ooblique 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -egrave 0x1a -eacute 0x1a shift -bracketleft 0x1a altgr -dead_abovering 0x1a shift altgr -plus 0x1b -asterisk 0x1b shift -bracketright 0x1b altgr -dead_macron 0x1b shift altgr -ae 0x1e altgr -AE 0x1e shift altgr -ssharp 0x1f altgr -section 0x1f shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -lstroke 0x26 altgr -Lstroke 0x26 shift altgr -ograve 0x27 -ccedilla 0x27 shift -at 0x27 altgr -dead_doubleacute 0x27 shift altgr -agrave 0x28 -degree 0x28 shift -numbersign 0x28 altgr -backslash 0x29 -bar 0x29 shift -notsign 0x29 altgr -ugrave 0x2b -section 0x2b shift -dead_grave 0x2b altgr -dead_breve 0x2b shift altgr -guillemotleft 0x2c altgr -guillemotright 0x2d altgr -cent 0x2e altgr -copyright 0x2e shift altgr -leftdoublequotemark 0x2f altgr -grave 0x2f shift altgr -rightdoublequotemark 0x30 altgr -mu 0x32 altgr -masculine 0x32 shift altgr -comma 0x33 -semicolon 0x33 shift -horizconnector 0x33 altgr -multiply 0x33 shift altgr -period 0x34 -colon 0x34 shift -periodcentered 0x34 altgr -division 0x34 shift altgr -minus 0x35 -underscore 0x35 shift -dead_belowdot 0x35 altgr -dead_abovedot 0x35 shift altgr diff --git a/qemu/pc-bios/keymaps/ja b/qemu/pc-bios/keymaps/ja deleted file mode 100644 index 9d90a78c8..000000000 --- a/qemu/pc-bios/keymaps/ja +++ /dev/null @@ -1,109 +0,0 @@ -# generated from XKB map jp106 -include common -map 0x411 -exclam 0x02 shift -kana_NU 0x02 altgr -quotedbl 0x03 shift -kana_FU 0x03 altgr -numbersign 0x04 shift -kana_A 0x04 altgr -kana_a 0x04 shift altgr -dollar 0x05 shift -kana_U 0x05 altgr -kana_u 0x05 shift altgr -percent 0x06 shift -kana_E 0x06 altgr -kana_e 0x06 shift altgr -ampersand 0x07 shift -kana_O 0x07 altgr -kana_o 0x07 shift altgr -apostrophe 0x08 shift -kana_YA 0x08 altgr -kana_ya 0x08 shift altgr -parenleft 0x09 shift -kana_YU 0x09 altgr -kana_yu 0x09 shift altgr -parenright 0x0a shift -kana_YO 0x0a altgr -kana_yo 0x0a shift altgr -asciitilde 0x0b shift -kana_WA 0x0b altgr -kana_WO 0x0b shift altgr -minus 0x0c -equal 0x0c shift -kana_HO 0x0c altgr -asciicircum 0x0d -asciitilde 0x0d shift -kana_HE 0x0d altgr -kana_TA 0x10 altgr -kana_TE 0x11 altgr -kana_I 0x12 altgr -kana_i 0x12 shift altgr -kana_SU 0x13 altgr -kana_KA 0x14 altgr -kana_N 0x15 altgr -kana_NA 0x16 altgr -kana_NI 0x17 altgr -kana_RA 0x18 altgr -kana_SE 0x19 altgr -at 0x1a -grave 0x1a shift -voicedsound 0x1a altgr -bracketleft 0x1b -braceleft 0x1b shift -semivoicedsound 0x1b altgr -kana_openingbracket 0x1b shift altgr -kana_CHI 0x1e altgr -kana_TO 0x1f altgr -kana_SHI 0x20 altgr -kana_HA 0x21 altgr -kana_KI 0x22 altgr -kana_KU 0x23 altgr -kana_MA 0x24 altgr -kana_NO 0x25 altgr -kana_RI 0x26 altgr -semicolon 0x27 -plus 0x27 shift -kana_RE 0x27 altgr -colon 0x28 -asterisk 0x28 shift -kana_KE 0x28 altgr -Zenkaku_Hankaku 0x29 -bracketright 0x2b -braceright 0x2b shift -kana_MU 0x2b altgr -kana_closingbracket 0x2b shift altgr -kana_TSU 0x2c altgr -kana_tsu 0x2c shift altgr -kana_SA 0x2d altgr -kana_SO 0x2e altgr -kana_HI 0x2f altgr -kana_KO 0x30 altgr -kana_MI 0x31 altgr -kana_MO 0x32 altgr -comma 0x33 -less 0x33 shift -kana_NE 0x33 altgr -kana_comma 0x33 shift altgr -period 0x34 -greater 0x34 shift -kana_RU 0x34 altgr -kana_fullstop 0x34 shift altgr -slash 0x35 -question 0x35 shift -kana_ME 0x35 altgr -kana_conjunctive 0x35 shift altgr -Eisu_toggle 0x3a shift -Execute 0x54 shift -Kanji 0x70 -backslash 0x73 -yen 0x7d -bar 0x7d shift -underscore 0x73 shift -Henkan_Mode 0x79 -Katakana_Real 0x70 -Katakana 0x70 -Muhenkan 0x7b -Henkan_Mode_Real 0x79 -Henkan_Mode_Ultra 0x79 -backslash_ja 0x73 diff --git a/qemu/pc-bios/keymaps/lt b/qemu/pc-bios/keymaps/lt deleted file mode 100644 index 3d9d619ea..000000000 --- a/qemu/pc-bios/keymaps/lt +++ /dev/null @@ -1,57 +0,0 @@ -# generated from XKB map lt -include common -map 0x427 -exclam 0x02 shift -aogonek 0x02 altgr -Aogonek 0x02 shift altgr -at 0x03 shift -ccaron 0x03 altgr -Ccaron 0x03 shift altgr -numbersign 0x04 shift -eogonek 0x04 altgr -Eogonek 0x04 shift altgr -dollar 0x05 shift -eabovedot 0x05 altgr -Eabovedot 0x05 shift altgr -percent 0x06 shift -iogonek 0x06 altgr -Iogonek 0x06 shift altgr -asciicircum 0x07 shift -scaron 0x07 altgr -Scaron 0x07 shift altgr -ampersand 0x08 shift -uogonek 0x08 altgr -Uogonek 0x08 shift altgr -asterisk 0x09 shift -umacron 0x09 altgr -Umacron 0x09 shift altgr -parenleft 0x0a shift -doublelowquotemark 0x0a altgr -parenright 0x0b shift -leftdoublequotemark 0x0b altgr -minus 0x0c -underscore 0x0c shift -equal 0x0d -plus 0x0d shift -zcaron 0x0d altgr -Zcaron 0x0d shift altgr -bracketleft 0x1a -braceleft 0x1a shift -bracketright 0x1b -braceright 0x1b shift -semicolon 0x27 -colon 0x27 shift -apostrophe 0x28 -quotedbl 0x28 shift -grave 0x29 -asciitilde 0x29 shift -backslash 0x2b -bar 0x2b shift -comma 0x33 -less 0x33 shift -period 0x34 -greater 0x34 shift -slash 0x35 -question 0x35 shift -endash 0x56 -EuroSign 0x56 shift diff --git a/qemu/pc-bios/keymaps/lv b/qemu/pc-bios/keymaps/lv deleted file mode 100644 index 1d9172791..000000000 --- a/qemu/pc-bios/keymaps/lv +++ /dev/null @@ -1,128 +0,0 @@ -# generated from XKB map lv -include common -map 0x426 -exclam 0x02 shift -onesuperior 0x02 altgr -exclamdown 0x02 shift altgr -at 0x03 shift -twosuperior 0x03 altgr -oneeighth 0x03 shift altgr -numbersign 0x04 shift -threesuperior 0x04 altgr -sterling 0x04 shift altgr -dollar 0x05 shift -EuroSign 0x05 altgr -cent 0x05 shift altgr -percent 0x06 shift -onehalf 0x06 altgr -threeeighths 0x06 shift altgr -asciicircum 0x07 shift -threequarters 0x07 altgr -fiveeighths 0x07 shift altgr -ampersand 0x08 shift -braceleft 0x08 altgr -seveneighths 0x08 shift altgr -asterisk 0x09 shift -bracketleft 0x09 altgr -trademark 0x09 shift altgr -parenleft 0x0a shift -bracketright 0x0a altgr -plusminus 0x0a shift altgr -parenright 0x0b shift -braceright 0x0b altgr -degree 0x0b shift altgr -minus 0x0c -underscore 0x0c shift -backslash 0x0c altgr -questiondown 0x0c shift altgr -equal 0x0d -plus 0x0d shift -dead_cedilla 0x0d altgr -dead_ogonek 0x0d shift altgr -at 0x10 altgr -Greek_OMEGA 0x10 shift altgr -lstroke 0x11 altgr -Lstroke 0x11 shift altgr -emacron 0x12 altgr -Emacron 0x12 shift altgr -rcedilla 0x13 altgr -Rcedilla 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -leftarrow 0x15 altgr -yen 0x15 shift altgr -umacron 0x16 altgr -Umacron 0x16 shift altgr -imacron 0x17 altgr -Imacron 0x17 shift altgr -omacron 0x18 altgr -Omacron 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -bracketleft 0x1a -braceleft 0x1a shift -dead_diaeresis 0x1a altgr -dead_abovering 0x1a shift altgr -bracketright 0x1b -braceright 0x1b shift -dead_tilde 0x1b altgr -dead_macron 0x1b shift altgr -ISO_Next_Group 0x1c shift -amacron 0x1e altgr -Amacron 0x1e shift altgr -scaron 0x1f altgr -Scaron 0x1f shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -gcedilla 0x22 altgr -Gcedilla 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kcedilla 0x25 altgr -Kcedilla 0x25 shift altgr -lcedilla 0x26 altgr -Lcedilla 0x26 shift altgr -semicolon 0x27 -colon 0x27 shift -dead_acute 0x27 altgr -dead_doubleacute 0x27 shift altgr -apostrophe 0x28 -quotedbl 0x28 shift -leftdoublequotemark 0x28 altgr -doublelowquotemark 0x28 shift altgr -grave 0x29 -asciitilde 0x29 shift -notsign 0x29 altgr -backslash 0x2b -bar 0x2b shift -dead_grave 0x2b altgr -dead_breve 0x2b shift altgr -zcaron 0x2c altgr -Zcaron 0x2c shift altgr -guillemotright 0x2d altgr -greater 0x2d shift altgr -ccaron 0x2e altgr -Ccaron 0x2e shift altgr -leftdoublequotemark 0x2f altgr -grave 0x2f shift altgr -rightdoublequotemark 0x30 altgr -apostrophe 0x30 shift altgr -ncedilla 0x31 altgr -Ncedilla 0x31 shift altgr -mu 0x32 altgr -masculine 0x32 shift altgr -comma 0x33 -less 0x33 shift -horizconnector 0x33 altgr -multiply 0x33 shift altgr -period 0x34 -greater 0x34 shift -periodcentered 0x34 altgr -division 0x34 shift altgr -slash 0x35 -question 0x35 shift -dead_belowdot 0x35 altgr -dead_abovedot 0x35 shift altgr -nobreakspace 0x39 altgr diff --git a/qemu/pc-bios/keymaps/mk b/qemu/pc-bios/keymaps/mk deleted file mode 100644 index 18c150484..000000000 --- a/qemu/pc-bios/keymaps/mk +++ /dev/null @@ -1,101 +0,0 @@ -# generated from XKB map mk -include common -map 0x42f -exclam 0x02 shift -at 0x03 shift -doublelowquotemark 0x03 shift altgr -numbersign 0x04 shift -leftdoublequotemark 0x04 shift altgr -dollar 0x05 shift -percent 0x06 shift -asciicircum 0x07 shift -ampersand 0x08 shift -asterisk 0x09 shift -parenleft 0x0a shift -parenright 0x0b shift -minus 0x0c -underscore 0x0c shift -equal 0x0d -plus 0x0d shift -Cyrillic_lje 0x10 altgr -Cyrillic_LJE 0x10 shift altgr -Cyrillic_nje 0x11 altgr -Cyrillic_NJE 0x11 shift altgr -Cyrillic_ie 0x12 altgr -Cyrillic_IE 0x12 shift altgr -Cyrillic_er 0x13 altgr -Cyrillic_ER 0x13 shift altgr -Cyrillic_te 0x14 altgr -Cyrillic_TE 0x14 shift altgr -Macedonia_dse 0x15 altgr -Macedonia_DSE 0x15 shift altgr -Cyrillic_u 0x16 altgr -Cyrillic_U 0x16 shift altgr -Cyrillic_i 0x17 altgr -Cyrillic_I 0x17 shift altgr -Cyrillic_o 0x18 altgr -Cyrillic_O 0x18 shift altgr -Cyrillic_pe 0x19 altgr -Cyrillic_PE 0x19 shift altgr -bracketleft 0x1a -braceleft 0x1a shift -Cyrillic_sha 0x1a altgr -Cyrillic_SHA 0x1a shift altgr -bracketright 0x1b -braceright 0x1b shift -Macedonia_gje 0x1b altgr -Macedonia_GJE 0x1b shift altgr -Cyrillic_a 0x1e altgr -Cyrillic_A 0x1e shift altgr -Cyrillic_es 0x1f altgr -Cyrillic_ES 0x1f shift altgr -Cyrillic_de 0x20 altgr -Cyrillic_DE 0x20 shift altgr -Cyrillic_ef 0x21 altgr -Cyrillic_EF 0x21 shift altgr -Cyrillic_ghe 0x22 altgr -Cyrillic_GHE 0x22 shift altgr -Cyrillic_ha 0x23 altgr -Cyrillic_HA 0x23 shift altgr -Cyrillic_je 0x24 altgr -Cyrillic_JE 0x24 shift altgr -Cyrillic_ka 0x25 altgr -Cyrillic_KA 0x25 shift altgr -Cyrillic_el 0x26 altgr -Cyrillic_EL 0x26 shift altgr -semicolon 0x27 -colon 0x27 shift -Cyrillic_che 0x27 altgr -Cyrillic_CHE 0x27 shift altgr -apostrophe 0x28 -quotedbl 0x28 shift -Macedonia_kje 0x28 altgr -Macedonia_KJE 0x28 shift altgr -grave 0x29 -asciitilde 0x29 shift -backslash 0x2b -bar 0x2b shift -Cyrillic_zhe 0x2b altgr -Cyrillic_ZHE 0x2b shift altgr -Cyrillic_ze 0x2c altgr -Cyrillic_ZE 0x2c shift altgr -Cyrillic_dzhe 0x2d altgr -Cyrillic_DZHE 0x2d shift altgr -Cyrillic_tse 0x2e altgr -Cyrillic_TSE 0x2e shift altgr -Cyrillic_ve 0x2f altgr -Cyrillic_VE 0x2f shift altgr -Cyrillic_be 0x30 altgr -Cyrillic_BE 0x30 shift altgr -Cyrillic_en 0x31 altgr -Cyrillic_EN 0x31 shift altgr -Cyrillic_em 0x32 altgr -Cyrillic_EM 0x32 shift altgr -comma 0x33 -less 0x33 shift -semicolon 0x33 shift altgr -period 0x34 -greater 0x34 shift -colon 0x34 shift altgr -slash 0x35 -question 0x35 shift diff --git a/qemu/pc-bios/keymaps/modifiers b/qemu/pc-bios/keymaps/modifiers deleted file mode 100644 index d73b7a663..000000000 --- a/qemu/pc-bios/keymaps/modifiers +++ /dev/null @@ -1,18 +0,0 @@ -Shift_R 0x36 -Shift_L 0x2a - -Alt_R 0xb8 -Mode_switch 0xb8 -ISO_Level3_Shift 0xb8 -Alt_L 0x38 - -Control_R 0x9d -Control_L 0x1d - -# Translate Super to Windows keys. -# This is hardcoded. See documentation for details. -Super_R 0xdc -Super_L 0xdb - -# Translate Menu to the Windows Application key. -Menu 0xdd diff --git a/qemu/pc-bios/keymaps/nl b/qemu/pc-bios/keymaps/nl deleted file mode 100644 index b4892f930..000000000 --- a/qemu/pc-bios/keymaps/nl +++ /dev/null @@ -1,59 +0,0 @@ -# Dutch (Netherlands) -include common -map 0x413 - -exclam 0x02 shift -onesuperior 0x02 altgr -quotebl 0x03 shift -twosuperior 0x03 altgr -numbersign 0x04 shift -threesuperior 0x04 altgr -dollar 0x05 shift -onequarter 0x05 altgr -percent 0x06 shift -onehalf 0x06 altgr -ampersand 0x07 shift -threequarters 0x07 altgr -underscore 0x08 shift -sterling 0x08 altgr -parenleft 0x09 shift -braceleft 0x09 altgr -parenright 0x0a shift -braceright 0x0a altgr -apostrophe 0x0b shift -slash 0x0c -question 0x0c shift -backslash 0x0c altgr -degree 0x0d -dead_tilde 0x0d shift -dead_cedilla 0x0d altgr -EuroSign 0x12 altgr -paragraph 0x13 altgr -dead_diaeresis 0x1a -dead_circumflex 0x1a shift -asterisk 0x1b -bar 0x1b shift -ssharp 0x1f altgr -plus 0x27 -plusminus 0x27 shift -dead_acute 0x28 -dead_grave 0x28 shift -at 0x29 -section 0x29 shift -notsign 0x29 altgr -less 0x2b -greater 0x2b shift -guillemotleft 0x2c altgr -guillemotright 0x2d altgr -copyright 0x2e altgr -mu 0x32 altgr -comma 0x33 -semicolon 0x33 shift -period 0x34 -colon 0x34 shift -periodcentered 0x34 altgr -hyphen 0x35 -equal 0x35 shift -bracketright 0x56 -bracketleft 0x56 shift -brokenbar 0x56 altgr diff --git a/qemu/pc-bios/keymaps/nl-be b/qemu/pc-bios/keymaps/nl-be deleted file mode 100644 index 34fc881ad..000000000 --- a/qemu/pc-bios/keymaps/nl-be +++ /dev/null @@ -1,3 +0,0 @@ -# Dutch (Belgium) -map 0x813 -include common diff --git a/qemu/pc-bios/keymaps/no b/qemu/pc-bios/keymaps/no deleted file mode 100644 index 40a64790d..000000000 --- a/qemu/pc-bios/keymaps/no +++ /dev/null @@ -1,119 +0,0 @@ -# generated from XKB map no -include common -map 0x414 -exclam 0x02 shift -exclamdown 0x02 altgr -onesuperior 0x02 shift altgr -quotedbl 0x03 shift -at 0x03 altgr -twosuperior 0x03 shift altgr -numbersign 0x04 shift -sterling 0x04 altgr -threesuperior 0x04 shift altgr -currency 0x05 shift -dollar 0x05 altgr -onequarter 0x05 shift altgr -percent 0x06 shift -onehalf 0x06 altgr -cent 0x06 shift altgr -ampersand 0x07 shift -yen 0x07 altgr -fiveeighths 0x07 shift altgr -slash 0x08 shift -braceleft 0x08 altgr -division 0x08 shift altgr -parenleft 0x09 shift -bracketleft 0x09 altgr -guillemotleft 0x09 shift altgr -parenright 0x0a shift -bracketright 0x0a altgr -guillemotright 0x0a shift altgr -equal 0x0b shift -braceright 0x0b altgr -degree 0x0b shift altgr -plus 0x0c -question 0x0c shift -plusminus 0x0c altgr -questiondown 0x0c shift altgr -backslash 0x0d -dead_grave 0x0d shift -dead_acute 0x0d altgr -notsign 0x0d shift altgr -Greek_OMEGA 0x10 shift altgr -lstroke 0x11 altgr -Lstroke 0x11 shift altgr -EuroSign 0x12 altgr -cent 0x12 shift altgr -registered 0x13 altgr -thorn 0x14 altgr -THORN 0x14 shift altgr -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oe 0x18 altgr -OE 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -aring 0x1a -Aring 0x1a shift -dead_diaeresis 0x1a altgr -dead_abovering 0x1a shift altgr -dead_diaeresis 0x1b -dead_circumflex 0x1b shift -asciicircum 0x01b shift -dead_tilde 0x1b altgr -asciitilde 0x1b altgr -dead_caron 0x1b shift altgr -ordfeminine 0x1e altgr -masculine 0x1e shift altgr -ssharp 0x1f altgr -section 0x1f shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -lstroke 0x26 altgr -Lstroke 0x26 shift altgr -oslash 0x27 -Ooblique 0x27 shift -dead_doubleacute 0x27 shift altgr -ae 0x28 -AE 0x28 shift -dead_caron 0x28 shift altgr -bar 0x29 -section 0x29 shift -brokenbar 0x29 altgr -paragraph 0x29 shift altgr -apostrophe 0x2b -asterisk 0x2b shift -multiply 0x2b shift altgr -guillemotleft 0x2c altgr -guillemotright 0x2d altgr -copyright 0x2e altgr -leftdoublequotemark 0x2f altgr -rightdoublequotemark 0x30 altgr -mu 0x32 altgr -masculine 0x32 shift altgr -comma 0x33 -semicolon 0x33 shift -dead_cedilla 0x33 altgr -dead_ogonek 0x33 shift altgr -period 0x34 -colon 0x34 shift -periodcentered 0x34 altgr -dead_abovedot 0x34 shift altgr -minus 0x35 -underscore 0x35 shift -hyphen 0x35 altgr -macron 0x35 shift altgr -nobreakspace 0x39 altgr -onehalf 0x56 altgr -threequarters 0x56 shift altgr diff --git a/qemu/pc-bios/keymaps/pl b/qemu/pc-bios/keymaps/pl deleted file mode 100644 index 09c600d35..000000000 --- a/qemu/pc-bios/keymaps/pl +++ /dev/null @@ -1,122 +0,0 @@ -# generated from XKB map pl -include common -map 0x415 -exclam 0x02 shift -onesuperior 0x02 altgr -exclamdown 0x02 shift altgr -at 0x03 shift -twosuperior 0x03 altgr -oneeighth 0x03 shift altgr -numbersign 0x04 shift -threesuperior 0x04 altgr -sterling 0x04 shift altgr -dollar 0x05 shift -onequarter 0x05 altgr -percent 0x06 shift -onehalf 0x06 altgr -threeeighths 0x06 shift altgr -asciicircum 0x07 shift -threequarters 0x07 altgr -fiveeighths 0x07 shift altgr -ampersand 0x08 shift -braceleft 0x08 altgr -seveneighths 0x08 shift altgr -asterisk 0x09 shift -bracketleft 0x09 altgr -trademark 0x09 shift altgr -parenleft 0x0a shift -bracketright 0x0a altgr -plusminus 0x0a shift altgr -parenright 0x0b shift -braceright 0x0b altgr -degree 0x0b shift altgr -minus 0x0c -underscore 0x0c shift -backslash 0x0c altgr -questiondown 0x0c shift altgr -equal 0x0d -plus 0x0d shift -dead_cedilla 0x0d altgr -dead_ogonek 0x0d shift altgr -Greek_OMEGA 0x10 shift altgr -lstroke 0x11 altgr -Lstroke 0x11 shift altgr -eogonek 0x12 altgr -Eogonek 0x12 shift altgr -paragraph 0x13 altgr -registered 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -leftarrow 0x15 altgr -yen 0x15 shift altgr -EuroSign 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oacute 0x18 altgr -Oacute 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -bracketleft 0x1a -braceleft 0x1a shift -dead_diaeresis 0x1a altgr -dead_abovering 0x1a shift altgr -bracketright 0x1b -braceright 0x1b shift -dead_tilde 0x1b altgr -dead_macron 0x1b shift altgr -aogonek 0x1e altgr -Aogonek 0x1e shift altgr -sacute 0x1f altgr -Sacute 0x1f shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -lstroke 0x26 altgr -Lstroke 0x26 shift altgr -semicolon 0x27 -colon 0x27 shift -dead_acute 0x27 altgr -dead_doubleacute 0x27 shift altgr -apostrophe 0x28 -quotedbl 0x28 shift -dead_circumflex 0x28 altgr -dead_caron 0x28 shift altgr -grave 0x29 -asciitilde 0x29 shift -notsign 0x29 altgr -backslash 0x2b -bar 0x2b shift -dead_grave 0x2b altgr -dead_breve 0x2b shift altgr -zabovedot 0x2c altgr -Zabovedot 0x2c shift altgr -zacute 0x2d altgr -Zacute 0x2d shift altgr -cacute 0x2e altgr -Cacute 0x2e shift altgr -leftdoublequotemark 0x2f altgr -grave 0x2f shift altgr -rightdoublequotemark 0x30 altgr -nacute 0x31 altgr -Nacute 0x31 shift altgr -mu 0x32 altgr -masculine 0x32 shift altgr -comma 0x33 -less 0x33 shift -horizconnector 0x33 altgr -multiply 0x33 shift altgr -period 0x34 -greater 0x34 shift -periodcentered 0x34 altgr -division 0x34 shift altgr -slash 0x35 -question 0x35 shift -dead_belowdot 0x35 altgr -dead_abovedot 0x35 shift altgr diff --git a/qemu/pc-bios/keymaps/pt b/qemu/pc-bios/keymaps/pt deleted file mode 100644 index c6941f651..000000000 --- a/qemu/pc-bios/keymaps/pt +++ /dev/null @@ -1,113 +0,0 @@ -# generated from XKB map pt -include common -map 0x816 -exclam 0x02 shift -onesuperior 0x02 altgr -exclamdown 0x02 shift altgr -quotedbl 0x03 shift -at 0x03 altgr -oneeighth 0x03 shift altgr -numbersign 0x04 shift -sterling 0x04 altgr -dollar 0x05 shift -section 0x05 altgr -percent 0x06 shift -onehalf 0x06 altgr -threeeighths 0x06 shift altgr -ampersand 0x07 shift -threequarters 0x07 altgr -fiveeighths 0x07 shift altgr -slash 0x08 shift -braceleft 0x08 altgr -seveneighths 0x08 shift altgr -parenleft 0x09 shift -bracketleft 0x09 altgr -trademark 0x09 shift altgr -parenright 0x0a shift -bracketright 0x0a altgr -plusminus 0x0a shift altgr -equal 0x0b shift -braceright 0x0b altgr -degree 0x0b shift altgr -apostrophe 0x0c -question 0x0c shift -backslash 0x0c altgr -questiondown 0x0c shift altgr -guillemotleft 0x0d -guillemotright 0x0d shift -dead_cedilla 0x0d altgr -dead_ogonek 0x0d shift altgr -Greek_OMEGA 0x10 shift altgr -lstroke 0x11 altgr -Lstroke 0x11 shift altgr -EuroSign 0x12 altgr -cent 0x12 shift altgr -paragraph 0x13 altgr -registered 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oslash 0x18 altgr -Ooblique 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -plus 0x1a -asterisk 0x1a shift -dead_diaeresis 0x1a altgr -dead_abovering 0x1a shift altgr -dead_acute 0x1b -dead_grave 0x1b shift -dead_tilde 0x1b altgr -dead_macron 0x1b shift altgr -ae 0x1e altgr -AE 0x1e shift altgr -ssharp 0x1f altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -lstroke 0x26 altgr -Lstroke 0x26 shift altgr -ccedilla 0x27 -Ccedilla 0x27 shift -dead_doubleacute 0x27 shift altgr -masculine 0x28 -ordfeminine 0x28 shift -dead_circumflex 0x28 altgr -dead_caron 0x28 shift altgr -backslash 0x29 -bar 0x29 shift -notsign 0x29 altgr -dead_tilde 0x2b -dead_circumflex 0x2b shift -dead_breve 0x2b shift altgr -less 0x56 -greater 0x56 shift -cent 0x2e altgr -copyright 0x2e shift altgr -leftdoublequotemark 0x2f altgr -grave 0x2f shift altgr -rightdoublequotemark 0x30 altgr -mu 0x32 altgr -comma 0x33 -semicolon 0x33 shift -horizconnector 0x33 altgr -multiply 0x33 shift altgr -period 0x34 -colon 0x34 shift -periodcentered 0x34 altgr -division 0x34 shift altgr -minus 0x35 -underscore 0x35 shift -dead_belowdot 0x35 altgr -dead_abovedot 0x35 shift altgr diff --git a/qemu/pc-bios/keymaps/pt-br b/qemu/pc-bios/keymaps/pt-br deleted file mode 100644 index 54bafc5dc..000000000 --- a/qemu/pc-bios/keymaps/pt-br +++ /dev/null @@ -1,69 +0,0 @@ -# generated from XKB map br -include common -map 0x416 -exclam 0x02 shift -onesuperior 0x02 altgr -exclamdown 0x02 shift altgr -at 0x03 shift -twosuperior 0x03 altgr -onehalf 0x03 shift altgr -numbersign 0x04 shift -threesuperior 0x04 altgr -threequarters 0x04 shift altgr -dollar 0x05 shift -sterling 0x05 altgr -onequarter 0x05 shift altgr -percent 0x06 shift -cent 0x06 altgr -dead_diaeresis 0x07 shift -notsign 0x07 altgr -diaeresis 0x07 shift altgr -ampersand 0x08 shift -braceleft 0x08 altgr -asterisk 0x09 shift -bracketleft 0x09 altgr -parenleft 0x0a shift -bracketright 0x0a altgr -parenright 0x0b shift -braceright 0x0b altgr -minus 0x0c -underscore 0x0c shift -backslash 0x0c altgr -equal 0x0d -plus 0x0d shift -section 0x0d altgr -EuroSign 0x12 altgr -registered 0x13 altgr -dead_acute 0x1a -dead_grave 0x1a shift -acute 0x1a altgr -grave 0x1a shift altgr -bracketleft 0x1b -braceleft 0x1b shift -ordfeminine 0x1b altgr -ccedilla 0x27 -Ccedilla 0x27 shift -dead_tilde 0x28 -dead_circumflex 0x28 shift -asciitilde 0x28 altgr -asciicircum 0x28 shift altgr -apostrophe 0x29 -quotedbl 0x29 shift -bracketright 0x2b -braceright 0x2b shift -masculine 0x2b altgr -copyright 0x2e altgr -mu 0x32 altgr -comma 0x33 -less 0x33 shift -period 0x34 -greater 0x34 shift -semicolon 0x35 -colon 0x35 shift -comma 0x53 numlock -backslash 0x56 -bar 0x56 shift -slash 0x73 -question 0x73 shift -degree 0x73 altgr -KP_Decimal 0x34 diff --git a/qemu/pc-bios/keymaps/ru b/qemu/pc-bios/keymaps/ru deleted file mode 100644 index 8f652d5a0..000000000 --- a/qemu/pc-bios/keymaps/ru +++ /dev/null @@ -1,109 +0,0 @@ -# generated from XKB map ru -include common -map 0x419 -exclam 0x02 shift -at 0x03 shift -quotedbl 0x03 shift altgr -numerosign 0x04 shift -dollar 0x05 shift -asterisk 0x05 shift altgr -percent 0x06 shift -colon 0x06 shift altgr -asciicircum 0x07 shift -comma 0x07 shift altgr -ampersand 0x08 shift -period 0x08 shift altgr -asterisk 0x09 shift -semicolon 0x09 shift altgr -parenleft 0x0a shift -parenright 0x0b shift -minus 0x0c -underscore 0x0c shift -equal 0x0d -plus 0x0d shift -Cyrillic_shorti 0x10 altgr -Cyrillic_SHORTI 0x10 shift altgr -Cyrillic_tse 0x11 altgr -Cyrillic_TSE 0x11 shift altgr -Cyrillic_u 0x12 altgr -Cyrillic_U 0x12 shift altgr -Cyrillic_ka 0x13 altgr -Cyrillic_KA 0x13 shift altgr -Cyrillic_ie 0x14 altgr -Cyrillic_IE 0x14 shift altgr -Cyrillic_en 0x15 altgr -Cyrillic_EN 0x15 shift altgr -Cyrillic_ghe 0x16 altgr -Cyrillic_GHE 0x16 shift altgr -Cyrillic_sha 0x17 altgr -Cyrillic_SHA 0x17 shift altgr -Cyrillic_shcha 0x18 altgr -Cyrillic_SHCHA 0x18 shift altgr -Cyrillic_ze 0x19 altgr -Cyrillic_ZE 0x19 shift altgr -bracketleft 0x1a -braceleft 0x1a shift -Cyrillic_ha 0x1a altgr -Cyrillic_HA 0x1a shift altgr -bracketright 0x1b -braceright 0x1b shift -Cyrillic_hardsign 0x1b altgr -Cyrillic_HARDSIGN 0x1b shift altgr -Cyrillic_ef 0x1e altgr -Cyrillic_EF 0x1e shift altgr -Cyrillic_yeru 0x1f altgr -Cyrillic_YERU 0x1f shift altgr -Cyrillic_ve 0x20 altgr -Cyrillic_VE 0x20 shift altgr -Cyrillic_a 0x21 altgr -Cyrillic_A 0x21 shift altgr -Cyrillic_pe 0x22 altgr -Cyrillic_PE 0x22 shift altgr -Cyrillic_er 0x23 altgr -Cyrillic_ER 0x23 shift altgr -Cyrillic_o 0x24 altgr -Cyrillic_O 0x24 shift altgr -Cyrillic_el 0x25 altgr -Cyrillic_EL 0x25 shift altgr -Cyrillic_de 0x26 altgr -Cyrillic_DE 0x26 shift altgr -semicolon 0x27 -colon 0x27 shift -Cyrillic_zhe 0x27 altgr -Cyrillic_ZHE 0x27 shift altgr -apostrophe 0x28 -quotedbl 0x28 shift -Cyrillic_e 0x28 altgr -Cyrillic_E 0x28 shift altgr -grave 0x29 -asciitilde 0x29 shift -Cyrillic_io 0x29 altgr -Cyrillic_IO 0x29 shift altgr -backslash 0x2b -bar 0x2b shift -Cyrillic_ya 0x2c altgr -Cyrillic_YA 0x2c shift altgr -Cyrillic_che 0x2d altgr -Cyrillic_CHE 0x2d shift altgr -Cyrillic_es 0x2e altgr -Cyrillic_ES 0x2e shift altgr -Cyrillic_em 0x2f altgr -Cyrillic_EM 0x2f shift altgr -Cyrillic_i 0x30 altgr -Cyrillic_I 0x30 shift altgr -Cyrillic_te 0x31 altgr -Cyrillic_TE 0x31 shift altgr -Cyrillic_softsign 0x32 altgr -Cyrillic_SOFTSIGN 0x32 shift altgr -comma 0x33 -less 0x33 shift -Cyrillic_be 0x33 altgr -Cyrillic_BE 0x33 shift altgr -period 0x34 -greater 0x34 shift -Cyrillic_yu 0x34 altgr -Cyrillic_YU 0x34 shift altgr -slash 0x35 -question 0x35 shift -slash 0x56 altgr -bar 0x56 shift altgr diff --git a/qemu/pc-bios/keymaps/sl b/qemu/pc-bios/keymaps/sl deleted file mode 100644 index 56835a92c..000000000 --- a/qemu/pc-bios/keymaps/sl +++ /dev/null @@ -1,110 +0,0 @@ -# generated from XKB map sl -include common -map 0x424 -exclam 0x02 shift -asciitilde 0x02 altgr -dead_tilde 0x02 shift altgr -quotedbl 0x03 shift -dead_caron 0x03 altgr -caron 0x03 shift altgr -numbersign 0x04 shift -asciicircum 0x04 altgr -dead_circumflex 0x04 shift altgr -dollar 0x05 shift -dead_breve 0x05 altgr -breve 0x05 shift altgr -percent 0x06 shift -degree 0x06 altgr -dead_abovering 0x06 shift altgr -ampersand 0x07 shift -dead_ogonek 0x07 altgr -ogonek 0x07 shift altgr -slash 0x08 shift -grave 0x08 altgr -dead_grave 0x08 shift altgr -parenleft 0x09 shift -dead_abovedot 0x09 altgr -abovedot 0x09 shift altgr -parenright 0x0a shift -dead_acute 0x0a altgr -equal 0x0b shift -dead_doubleacute 0x0b altgr -doubleacute 0x0b shift altgr -apostrophe 0x0c -question 0x0c shift -dead_diaeresis 0x0c altgr -diaeresis 0x0c shift altgr -plus 0x0d -asterisk 0x0d shift -dead_cedilla 0x0d altgr -cedilla 0x0d shift altgr -backslash 0x10 altgr -Greek_OMEGA 0x10 shift altgr -bar 0x11 altgr -Lstroke 0x11 shift altgr -EuroSign 0x12 altgr -paragraph 0x13 altgr -registered 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -z 0x15 addupper -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -rightarrow 0x17 altgr -idotless 0x17 shift altgr -oslash 0x18 altgr -Ooblique 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -scaron 0x1a -Scaron 0x1a shift -division 0x1a altgr -dstroke 0x1b -Dstroke 0x1b shift -multiply 0x1b altgr -dead_macron 0x1b shift altgr -ae 0x1e altgr -AE 0x1e shift altgr -ssharp 0x1f altgr -section 0x1f shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -bracketleft 0x21 altgr -ordfeminine 0x21 shift altgr -bracketright 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -lstroke 0x25 altgr -Lstroke 0x26 altgr -ccaron 0x27 -Ccaron 0x27 shift -cacute 0x28 -Cacute 0x28 shift -ssharp 0x28 altgr -dead_cedilla 0x29 -notsign 0x29 altgr -zcaron 0x2b -Zcaron 0x2b shift -currency 0x2b altgr -y 0x2c addupper -guillemotleft 0x2c altgr -guillemotright 0x2d altgr -cent 0x2e altgr -copyright 0x2e shift altgr -at 0x2f altgr -braceleft 0x30 altgr -braceright 0x31 altgr -section 0x32 altgr -masculine 0x32 shift altgr -comma 0x33 -semicolon 0x33 shift -horizconnector 0x33 altgr -period 0x34 -colon 0x34 shift -periodcentered 0x34 altgr -minus 0x35 -underscore 0x35 shift -dead_belowdot 0x35 altgr diff --git a/qemu/pc-bios/keymaps/sv b/qemu/pc-bios/keymaps/sv deleted file mode 100644 index 5d9080eff..000000000 --- a/qemu/pc-bios/keymaps/sv +++ /dev/null @@ -1,81 +0,0 @@ -map 0x0000041d -include common - -# -# Top row -# -section 0x29 -onehalf 0x29 shift - -# 1 -exclam 0x2 shift - -# 2 -quotedbl 0x3 shift -at 0x3 altgr - -# 3 -numbersign 0x4 shift -sterling 0x4 altgr -# 4 -currency 0x5 shift -dollar 0x5 altgr -# 5 -percent 0x6 shift -# 6 -ampersand 0x7 shift -# 7 -slash 0x8 shift -braceleft 0x8 altgr -# 8 -parenleft 0x9 shift -bracketleft 0x9 altgr -# 9 -parenright 0xa shift -bracketright 0xa altgr -# 0 -equal 0xb shift -braceright 0xb altgr - -plus 0xc -question 0xc shift -backslash 0xc altgr - -acute 0xd -dead_acute 0xd -grave 0xd shift -dead_grave 0xd shift - -# -# QWERTY first row -# -EuroSign 0x12 altgr -aring 0x1a -Aring 0x1a shift -dead_diaeresis 0x1b -dead_circumflex 0x1b shift -dead_tilde 0x1b altgr - -# -# QWERTY second row -# -odiaeresis 0x27 -Odiaeresis 0x27 shift -adiaeresis 0x28 -Adiaeresis 0x28 shift -apostrophe 0x2b -asterisk 0x2b shift - -# -# QWERTY third row -# -less 0x56 -greater 0x56 shift -bar 0x56 altgr -mu 0x32 altgr -comma 0x33 -semicolon 0x33 shift -period 0x34 -colon 0x34 shift -minus 0x35 -underscore 0x35 shift diff --git a/qemu/pc-bios/keymaps/th b/qemu/pc-bios/keymaps/th deleted file mode 100644 index b65b6da5d..000000000 --- a/qemu/pc-bios/keymaps/th +++ /dev/null @@ -1,131 +0,0 @@ -# generated from XKB map th -include common -map 0x41e -exclam 0x02 shift -Thai_lakkhangyao 0x02 altgr -plus 0x02 shift altgr -at 0x03 shift -slash 0x03 altgr -Thai_leknung 0x03 shift altgr -numbersign 0x04 shift -minus 0x04 altgr -Thai_leksong 0x04 shift altgr -dollar 0x05 shift -Thai_phosamphao 0x05 altgr -Thai_leksam 0x05 shift altgr -percent 0x06 shift -Thai_thothung 0x06 altgr -Thai_leksi 0x06 shift altgr -asciicircum 0x07 shift -Thai_sarau 0x07 altgr -Thai_sarauu 0x07 shift altgr -ampersand 0x08 shift -Thai_saraue 0x08 altgr -Thai_baht 0x08 shift altgr -asterisk 0x09 shift -Thai_khokhwai 0x09 altgr -Thai_lekha 0x09 shift altgr -parenleft 0x0a shift -Thai_totao 0x0a altgr -Thai_lekhok 0x0a shift altgr -parenright 0x0b shift -Thai_chochan 0x0b altgr -Thai_lekchet 0x0b shift altgr -minus 0x0c -underscore 0x0c shift -Thai_khokhai 0x0c altgr -Thai_lekpaet 0x0c shift altgr -equal 0x0d -plus 0x0d shift -Thai_chochang 0x0d altgr -Thai_lekkao 0x0d shift altgr -Thai_maiyamok 0x10 altgr -Thai_leksun 0x10 shift altgr -Thai_saraaimaimalai 0x11 altgr -quotedbl 0x11 shift altgr -Thai_saraam 0x12 altgr -Thai_dochada 0x12 shift altgr -Thai_phophan 0x13 altgr -Thai_thonangmontho 0x13 shift altgr -Thai_saraa 0x14 altgr -Thai_thothong 0x14 shift altgr -Thai_maihanakat 0x15 altgr -Thai_nikhahit 0x15 shift altgr -Thai_saraii 0x16 altgr -Thai_maitri 0x16 shift altgr -Thai_rorua 0x17 altgr -Thai_nonen 0x17 shift altgr -Thai_nonu 0x18 altgr -Thai_paiyannoi 0x18 shift altgr -Thai_yoyak 0x19 altgr -Thai_yoying 0x19 shift altgr -bracketleft 0x1a -braceleft 0x1a shift -Thai_bobaimai 0x1a altgr -Thai_thothan 0x1a shift altgr -bracketright 0x1b -braceright 0x1b shift -Thai_loling 0x1b altgr -comma 0x1b shift altgr -Thai_fofan 0x1e altgr -Thai_ru 0x1e shift altgr -Thai_hohip 0x1f altgr -Thai_khorakhang 0x1f shift altgr -Thai_kokai 0x20 altgr -Thai_topatak 0x20 shift altgr -Thai_dodek 0x21 altgr -Thai_sarao 0x21 shift altgr -Thai_sarae 0x22 altgr -Thai_chochoe 0x22 shift altgr -Thai_maitho 0x23 altgr -Thai_maitaikhu 0x23 shift altgr -Thai_maiek 0x24 altgr -Thai_maichattawa 0x24 shift altgr -Thai_saraaa 0x25 altgr -Thai_sorusi 0x25 shift altgr -Thai_sosua 0x26 altgr -Thai_sosala 0x26 shift altgr -semicolon 0x27 -colon 0x27 shift -Thai_wowaen 0x27 altgr -Thai_soso 0x27 shift altgr -apostrophe 0x28 -quotedbl 0x28 shift -Thai_ngongu 0x28 altgr -period 0x28 shift altgr -grave 0x29 -asciitilde 0x29 shift -underscore 0x29 altgr -percent 0x29 shift altgr -ISO_First_Group 0x2a shift -backslash 0x2b -bar 0x2b shift -Thai_khokhuat 0x2b altgr -Thai_khokhon 0x2b shift altgr -Thai_phophung 0x2c altgr -parenleft 0x2c shift altgr -Thai_popla 0x2d altgr -parenright 0x2d shift altgr -Thai_saraae 0x2e altgr -Thai_choching 0x2e shift altgr -Thai_oang 0x2f altgr -Thai_honokhuk 0x2f shift altgr -Thai_sarai 0x30 altgr -Thai_phinthu 0x30 shift altgr -Thai_sarauee 0x31 altgr -Thai_thanthakhat 0x31 shift altgr -Thai_thothahan 0x32 altgr -question 0x32 shift altgr -comma 0x33 -less 0x33 shift -Thai_moma 0x33 altgr -Thai_thophuthao 0x33 shift altgr -period 0x34 -greater 0x34 shift -Thai_saraaimaimuan 0x34 altgr -Thai_lochula 0x34 shift altgr -slash 0x35 -question 0x35 shift -Thai_fofa 0x35 altgr -Thai_lu 0x35 shift altgr -ISO_Last_Group 0x36 shift diff --git a/qemu/pc-bios/keymaps/tr b/qemu/pc-bios/keymaps/tr deleted file mode 100644 index 5650e1e93..000000000 --- a/qemu/pc-bios/keymaps/tr +++ /dev/null @@ -1,123 +0,0 @@ -# generated from XKB map tr -include common -map 0x41f -exclam 0x02 shift -onesuperior 0x02 altgr -exclamdown 0x02 shift altgr -apostrophe 0x03 shift -at 0x03 altgr -oneeighth 0x03 shift altgr -dead_circumflex 0x04 shift -numbersign 0x04 altgr -sterling 0x04 shift altgr -plus 0x05 shift -dollar 0x05 altgr -percent 0x06 shift -onehalf 0x06 altgr -threeeighths 0x06 shift altgr -ampersand 0x07 shift -asciicircum 0x07 altgr -fiveeighths 0x07 shift altgr -slash 0x08 shift -braceleft 0x08 altgr -seveneighths 0x08 shift altgr -parenleft 0x09 shift -bracketleft 0x09 altgr -trademark 0x09 shift altgr -parenright 0x0a shift -bracketright 0x0a altgr -plusminus 0x0a shift altgr -equal 0x0b shift -braceright 0x0b altgr -degree 0x0b shift altgr -asterisk 0x0c -question 0x0c shift -backslash 0x0c altgr -questiondown 0x0c shift altgr -minus 0x0d -underscore 0x0d shift -dead_cedilla 0x0d altgr -dead_ogonek 0x0d shift altgr -at 0x10 altgr -Greek_OMEGA 0x10 shift altgr -lstroke 0x11 altgr -Lstroke 0x11 shift altgr -EuroSign 0x12 altgr -paragraph 0x13 altgr -registered 0x13 shift altgr -tslash 0x14 altgr -Tslash 0x14 shift altgr -leftarrow 0x15 altgr -yen 0x15 shift altgr -downarrow 0x16 altgr -uparrow 0x16 shift altgr -idotless 0x17 -I 0x17 shift -rightarrow 0x17 altgr -oslash 0x18 altgr -Ooblique 0x18 shift altgr -thorn 0x19 altgr -THORN 0x19 shift altgr -gbreve 0x1a -Gbreve 0x1a shift -dead_diaeresis 0x1a altgr -dead_abovering 0x1a shift altgr -udiaeresis 0x1b -Udiaeresis 0x1b shift -asciitilde 0x1b altgr -dead_macron 0x1b shift altgr -ae 0x1e altgr -AE 0x1e shift altgr -ssharp 0x1f altgr -section 0x1f shift altgr -eth 0x20 altgr -ETH 0x20 shift altgr -dstroke 0x21 altgr -ordfeminine 0x21 shift altgr -eng 0x22 altgr -ENG 0x22 shift altgr -hstroke 0x23 altgr -Hstroke 0x23 shift altgr -kra 0x25 altgr -ampersand 0x25 shift altgr -lstroke 0x26 altgr -Lstroke 0x26 shift altgr -scedilla 0x27 -Scedilla 0x27 shift -dead_acute 0x27 altgr -dead_doubleacute 0x27 shift altgr -i 0x28 -Iabovedot 0x28 shift -dead_circumflex 0x28 altgr -dead_caron 0x28 shift altgr -backslash 0x29 -quotedbl 0x29 shift -asciitilde 0x29 altgr -comma 0x2b -semicolon 0x2b shift -bar 0x2b altgr -dead_breve 0x2b shift altgr -guillemotleft 0x2c altgr -less 0x2c shift altgr -guillemotright 0x2d altgr -greater 0x2d shift altgr -cent 0x2e altgr -copyright 0x2e shift altgr -leftdoublequotemark 0x2f altgr -grave 0x2f shift altgr -rightdoublequotemark 0x30 altgr -apostrophe 0x30 shift altgr -mu 0x32 altgr -masculine 0x32 shift altgr -odiaeresis 0x33 -Odiaeresis 0x33 shift -less 0x33 altgr -multiply 0x33 shift altgr -ccedilla 0x34 -Ccedilla 0x34 shift -greater 0x34 altgr -division 0x34 shift altgr -period 0x35 -colon 0x35 shift -dead_belowdot 0x35 altgr -dead_abovedot 0x35 shift altgr diff --git a/qemu/pc-bios/kvmvapic.bin b/qemu/pc-bios/kvmvapic.bin Binary files differdeleted file mode 100644 index 045f5c288..000000000 --- a/qemu/pc-bios/kvmvapic.bin +++ /dev/null diff --git a/qemu/pc-bios/linuxboot.bin b/qemu/pc-bios/linuxboot.bin Binary files differdeleted file mode 100644 index 923d1796f..000000000 --- a/qemu/pc-bios/linuxboot.bin +++ /dev/null diff --git a/qemu/pc-bios/multiboot.bin b/qemu/pc-bios/multiboot.bin Binary files differdeleted file mode 100644 index e772713c9..000000000 --- a/qemu/pc-bios/multiboot.bin +++ /dev/null diff --git a/qemu/pc-bios/openbios-ppc b/qemu/pc-bios/openbios-ppc Binary files differdeleted file mode 100644 index ff980adb1..000000000 --- a/qemu/pc-bios/openbios-ppc +++ /dev/null diff --git a/qemu/pc-bios/openbios-sparc32 b/qemu/pc-bios/openbios-sparc32 Binary files differdeleted file mode 100644 index e744e898b..000000000 --- a/qemu/pc-bios/openbios-sparc32 +++ /dev/null diff --git a/qemu/pc-bios/openbios-sparc64 b/qemu/pc-bios/openbios-sparc64 Binary files differdeleted file mode 100644 index 4d23be3ed..000000000 --- a/qemu/pc-bios/openbios-sparc64 +++ /dev/null diff --git a/qemu/pc-bios/optionrom/Makefile b/qemu/pc-bios/optionrom/Makefile deleted file mode 100644 index ce4852a4d..000000000 --- a/qemu/pc-bios/optionrom/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -all: build-all -# Dummy command so that make thinks it has done something - @true - -include ../../config-host.mak -include $(SRC_PATH)/rules.mak - -$(call set-vpath, $(SRC_PATH)/pc-bios/optionrom) - -.PHONY : all clean build-all - -CFLAGS := -Wall -Wstrict-prototypes -Werror -fomit-frame-pointer -fno-builtin -CFLAGS += -I$(SRC_PATH) -CFLAGS += $(call cc-option, $(CFLAGS), -fno-stack-protector) -CFLAGS += $(CFLAGS_NOPIE) -QEMU_CFLAGS = $(CFLAGS) - -build-all: multiboot.bin linuxboot.bin kvmvapic.bin - -# suppress auto-removal of intermediate files -.SECONDARY: - -%.img: %.o - $(call quiet-command,$(LD) $(LDFLAGS_NOPIE) -Ttext 0 -e _start -s -o $@ $<," Building $(TARGET_DIR)$@") - -%.raw: %.img - $(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@," Building $(TARGET_DIR)$@") - -%.bin: %.raw - $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/signrom.py $< $@," Signing $(TARGET_DIR)$@") - -clean: - rm -f *.o *.d *.raw *.img *.bin *~ diff --git a/qemu/pc-bios/optionrom/kvmvapic.S b/qemu/pc-bios/optionrom/kvmvapic.S deleted file mode 100644 index aa17a402d..000000000 --- a/qemu/pc-bios/optionrom/kvmvapic.S +++ /dev/null @@ -1,335 +0,0 @@ -# -# Local APIC acceleration for Windows XP and related guests -# -# Copyright 2011 Red Hat, Inc. and/or its affiliates -# -# Author: Avi Kivity <avi@redhat.com> -# -# This work is licensed under the terms of the GNU GPL, version 2, or (at your -# option) any later version. See the COPYING file in the top-level directory. -# - -#include "optionrom.h" - -OPTION_ROM_START - - # clear vapic area: firmware load using rep insb may cause - # stale tpr/isr/irr data to corrupt the vapic area. - push %es - push %cs - pop %es - xor %ax, %ax - mov $vapic_size/2, %cx - lea vapic, %di - cld - rep stosw - pop %es - - # announce presence to the hypervisor - mov $vapic_base, %ax - out %ax, $0x7e - - lret - - .code32 -vapic_size = 2*4096 - -.macro fixup delta=-4 -777: - .text 1 - .long 777b + \delta - vapic_base - .text 0 -.endm - -.macro reenable_vtpr - out %al, $0x7e -.endm - -.text 1 - fixup_start = . -.text 0 - -.align 16 - -vapic_base: - .ascii "kvm aPiC" - - /* relocation data */ - .long vapic_base ; fixup - .long fixup_start ; fixup - .long fixup_end ; fixup - - .long vapic ; fixup - .long vapic_size -vcpu_shift: - .long 0 -real_tpr: - .long 0 - .long up_set_tpr ; fixup - .long up_set_tpr_eax ; fixup - .long up_get_tpr_eax ; fixup - .long up_get_tpr_ecx ; fixup - .long up_get_tpr_edx ; fixup - .long up_get_tpr_ebx ; fixup - .long 0 /* esp. won't work. */ - .long up_get_tpr_ebp ; fixup - .long up_get_tpr_esi ; fixup - .long up_get_tpr_edi ; fixup - .long up_get_tpr_stack ; fixup - .long mp_set_tpr ; fixup - .long mp_set_tpr_eax ; fixup - .long mp_get_tpr_eax ; fixup - .long mp_get_tpr_ecx ; fixup - .long mp_get_tpr_edx ; fixup - .long mp_get_tpr_ebx ; fixup - .long 0 /* esp. won't work. */ - .long mp_get_tpr_ebp ; fixup - .long mp_get_tpr_esi ; fixup - .long mp_get_tpr_edi ; fixup - .long mp_get_tpr_stack ; fixup - -.macro kvm_hypercall - .byte 0x0f, 0x01, 0xc1 -.endm - -kvm_hypercall_vapic_poll_irq = 1 - -pcr_cpu = 0x51 - -.align 64 - -mp_get_tpr_eax: - pushf - cli - reenable_vtpr - push %ecx - - fs/movzbl pcr_cpu, %eax - - mov vcpu_shift, %ecx ; fixup - shl %cl, %eax - testb $1, vapic+4(%eax) ; fixup delta=-5 - jz mp_get_tpr_bad - movzbl vapic(%eax), %eax ; fixup - -mp_get_tpr_out: - pop %ecx - popf - ret - -mp_get_tpr_bad: - mov real_tpr, %eax ; fixup - mov (%eax), %eax - jmp mp_get_tpr_out - -mp_get_tpr_ebx: - mov %eax, %ebx - call mp_get_tpr_eax - xchg %eax, %ebx - ret - -mp_get_tpr_ecx: - mov %eax, %ecx - call mp_get_tpr_eax - xchg %eax, %ecx - ret - -mp_get_tpr_edx: - mov %eax, %edx - call mp_get_tpr_eax - xchg %eax, %edx - ret - -mp_get_tpr_esi: - mov %eax, %esi - call mp_get_tpr_eax - xchg %eax, %esi - ret - -mp_get_tpr_edi: - mov %eax, %edi - call mp_get_tpr_edi - xchg %eax, %edi - ret - -mp_get_tpr_ebp: - mov %eax, %ebp - call mp_get_tpr_eax - xchg %eax, %ebp - ret - -mp_get_tpr_stack: - call mp_get_tpr_eax - xchg %eax, 4(%esp) - ret - -mp_set_tpr_eax: - push %eax - call mp_set_tpr - ret - -mp_set_tpr: - pushf - push %eax - push %ecx - push %edx - push %ebx - cli - reenable_vtpr - -mp_set_tpr_failed: - fs/movzbl pcr_cpu, %edx - - mov vcpu_shift, %ecx ; fixup - shl %cl, %edx - - testb $1, vapic+4(%edx) ; fixup delta=-5 - jz mp_set_tpr_bad - - mov vapic(%edx), %eax ; fixup - - mov %eax, %ebx - mov 24(%esp), %bl - - /* %ebx = new vapic (%bl = tpr, %bh = isr, %b3 = irr) */ - - lock cmpxchg %ebx, vapic(%edx) ; fixup - jnz mp_set_tpr_failed - - /* compute ppr */ - cmp %bh, %bl - jae mp_tpr_is_bigger -mp_isr_is_bigger: - mov %bh, %bl -mp_tpr_is_bigger: - /* %bl = ppr */ - rol $8, %ebx - /* now: %bl = irr, %bh = ppr */ - cmp %bh, %bl - ja mp_set_tpr_poll_irq - -mp_set_tpr_out: - pop %ebx - pop %edx - pop %ecx - pop %eax - popf - ret $4 - -mp_set_tpr_poll_irq: - mov $kvm_hypercall_vapic_poll_irq, %eax - kvm_hypercall - jmp mp_set_tpr_out - -mp_set_tpr_bad: - mov 24(%esp), %ecx - mov real_tpr, %eax ; fixup - mov %ecx, (%eax) - jmp mp_set_tpr_out - -up_get_tpr_eax: - reenable_vtpr - movzbl vapic, %eax ; fixup - ret - -up_get_tpr_ebx: - reenable_vtpr - movzbl vapic, %ebx ; fixup - ret - -up_get_tpr_ecx: - reenable_vtpr - movzbl vapic, %ecx ; fixup - ret - -up_get_tpr_edx: - reenable_vtpr - movzbl vapic, %edx ; fixup - ret - -up_get_tpr_esi: - reenable_vtpr - movzbl vapic, %esi ; fixup - ret - -up_get_tpr_edi: - reenable_vtpr - movzbl vapic, %edi ; fixup - ret - -up_get_tpr_ebp: - reenable_vtpr - movzbl vapic, %ebp ; fixup - ret - -up_get_tpr_stack: - reenable_vtpr - movzbl vapic, %eax ; fixup - xchg %eax, 4(%esp) - ret - -up_set_tpr_eax: - push %eax - call up_set_tpr - ret - -up_set_tpr: - pushf - push %eax - push %ebx - reenable_vtpr - -up_set_tpr_failed: - mov vapic, %eax ; fixup - - mov %eax, %ebx - mov 16(%esp), %bl - - /* %ebx = new vapic (%bl = tpr, %bh = isr, %b3 = irr) */ - - lock cmpxchg %ebx, vapic ; fixup - jnz up_set_tpr_failed - - /* compute ppr */ - cmp %bh, %bl - jae up_tpr_is_bigger -up_isr_is_bigger: - mov %bh, %bl -up_tpr_is_bigger: - /* %bl = ppr */ - rol $8, %ebx - /* now: %bl = irr, %bh = ppr */ - cmp %bh, %bl - ja up_set_tpr_poll_irq - -up_set_tpr_out: - pop %ebx - pop %eax - popf - ret $4 - -up_set_tpr_poll_irq: - mov $kvm_hypercall_vapic_poll_irq, %eax - kvm_hypercall - jmp up_set_tpr_out - -.text 1 - fixup_end = . -.text 0 - -/* - * vapic format: - * per-vcpu records of size 2^vcpu shift. - * byte 0: tpr (r/w) - * byte 1: highest in-service interrupt (isr) (r/o); bits 3:0 are zero - * byte 2: zero (r/o) - * byte 3: highest pending interrupt (irr) (r/o) - */ -.text 2 - -.align 128 - -vapic: -. = . + vapic_size - -OPTION_ROM_END diff --git a/qemu/pc-bios/optionrom/linuxboot.S b/qemu/pc-bios/optionrom/linuxboot.S deleted file mode 100644 index ba821ab92..000000000 --- a/qemu/pc-bios/optionrom/linuxboot.S +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Linux Boot Option ROM - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see <http://www.gnu.org/licenses/>. - * - * Copyright Novell Inc, 2009 - * Authors: Alexander Graf <agraf@suse.de> - * - * Based on code in hw/pc.c. - */ - -#include "optionrom.h" - -#define BOOT_ROM_PRODUCT "Linux loader" - -BOOT_ROM_START - -run_linuxboot: - - cli - cld - - jmp copy_kernel -boot_kernel: - - read_fw FW_CFG_SETUP_ADDR - - mov %eax, %ebx - shr $4, %ebx - - /* All segments contain real_addr */ - mov %bx, %ds - mov %bx, %es - mov %bx, %fs - mov %bx, %gs - mov %bx, %ss - - /* CX = CS we want to jump to */ - add $0x20, %bx - mov %bx, %cx - - /* SP = cmdline_addr-real_addr-16 */ - read_fw FW_CFG_CMDLINE_ADDR - mov %eax, %ebx - read_fw FW_CFG_SETUP_ADDR - sub %eax, %ebx - sub $16, %ebx - mov %ebx, %esp - - /* Build indirect lret descriptor */ - pushw %cx /* CS */ - xor %ax, %ax - pushw %ax /* IP = 0 */ - - /* Clear registers */ - xor %eax, %eax - xor %ebx, %ebx - xor %ecx, %ecx - xor %edx, %edx - xor %edi, %edi - xor %ebp, %ebp - - /* Jump to Linux */ - lret - - -copy_kernel: - /* Read info block in low memory (0x10000 or 0x90000) */ - read_fw FW_CFG_SETUP_ADDR - shr $4, %eax - mov %eax, %es - xor %edi, %edi - read_fw_blob_addr32_edi(FW_CFG_SETUP) - - cmpw $0x203, %es:0x206 // if protocol >= 0x203 - jae 1f // have initrd_max - movl $0x37ffffff, %es:0x22c // else assume 0x37ffffff -1: - - /* Check if using kernel-specified initrd address */ - read_fw FW_CFG_INITRD_ADDR - mov %eax, %edi // (load_kernel wants it in %edi) - read_fw FW_CFG_INITRD_SIZE // find end of initrd - add %edi, %eax - xor %es:0x22c, %eax // if it matches es:0x22c - and $-4096, %eax // (apart from padding for page) - jz load_kernel // then initrd is not at top - // of memory - - /* pc.c placed the initrd at end of memory. Compute a better - * initrd address based on e801 data. - */ - mov $0xe801, %ax - xor %cx, %cx - xor %dx, %dx - int $0x15 - - /* Output could be in AX/BX or CX/DX */ - or %cx, %cx - jnz 1f - or %dx, %dx - jnz 1f - mov %ax, %cx - mov %bx, %dx -1: - - or %dx, %dx - jnz 2f - addw $1024, %cx /* add 1 MB */ - movzwl %cx, %edi - shll $10, %edi /* convert to bytes */ - jmp 3f - -2: - addw $16777216 >> 16, %dx /* add 16 MB */ - movzwl %dx, %edi - shll $16, %edi /* convert to bytes */ - -3: - read_fw FW_CFG_INITRD_SIZE - subl %eax, %edi - andl $-4096, %edi /* EDI = start of initrd */ - movl %edi, %es:0x218 /* put it in the header */ - -load_kernel: - /* We need to load the kernel into memory we can't access in 16 bit - mode, so let's get into 32 bit mode, write the kernel and jump - back again. */ - - /* Reserve space on the stack for our GDT descriptor. */ - mov %esp, %ebp - sub $16, %esp - - /* Now create the GDT descriptor */ - movw $((3 * 8) - 1), -16(%bp) - mov %cs, %eax - movzwl %ax, %eax - shl $4, %eax - addl $gdt, %eax - movl %eax, -14(%bp) - - /* And load the GDT */ - data32 lgdt -16(%bp) - mov %ebp, %esp - - /* Get us to protected mode now */ - mov $1, %eax - mov %eax, %cr0 - - /* So we can set ES to a 32-bit segment */ - mov $0x10, %eax - mov %eax, %es - - /* We're now running in 16-bit CS, but 32-bit ES! */ - - /* Load kernel and initrd */ - read_fw_blob_addr32_edi(FW_CFG_INITRD) - read_fw_blob_addr32(FW_CFG_KERNEL) - read_fw_blob_addr32(FW_CFG_CMDLINE) - - /* And now jump into Linux! */ - mov $0, %eax - mov %eax, %cr0 - - /* ES = CS */ - mov %cs, %ax - mov %ax, %es - - jmp boot_kernel - -/* Variables */ - -.align 4, 0 -gdt: - /* 0x00 */ -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - /* 0x08: code segment (base=0, limit=0xfffff, type=32bit code exec/read, DPL=0, 4k) */ -.byte 0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00 - - /* 0x10: data segment (base=0, limit=0xfffff, type=32bit data read/write, DPL=0, 4k) */ -.byte 0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00 - -BOOT_ROM_END diff --git a/qemu/pc-bios/optionrom/multiboot.S b/qemu/pc-bios/optionrom/multiboot.S deleted file mode 100644 index b7efe4de3..000000000 --- a/qemu/pc-bios/optionrom/multiboot.S +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Multiboot Option ROM - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see <http://www.gnu.org/licenses/>. - * - * Copyright Novell Inc, 2009 - * Authors: Alexander Graf <agraf@suse.de> - */ - -#include "optionrom.h" - -#define BOOT_ROM_PRODUCT "multiboot loader" - -#define MULTIBOOT_MAGIC 0x2badb002 - -#define GS_PROT_JUMP 0 -#define GS_GDT_DESC 6 - - -BOOT_ROM_START - -run_multiboot: - - cli - cld - - mov %cs, %eax - shl $0x4, %eax - - /* set up a long jump descriptor that is PC relative */ - - /* move stack memory to %gs */ - mov %ss, %ecx - shl $0x4, %ecx - mov %esp, %ebx - add %ebx, %ecx - sub $0x20, %ecx - sub $0x30, %esp - shr $0x4, %ecx - mov %cx, %gs - - /* now push the indirect jump descriptor there */ - mov (prot_jump), %ebx - add %eax, %ebx - movl %ebx, %gs:GS_PROT_JUMP - mov $8, %bx - movw %bx, %gs:GS_PROT_JUMP + 4 - - /* fix the gdt descriptor to be PC relative */ - movw (gdt_desc), %bx - movw %bx, %gs:GS_GDT_DESC - movl (gdt_desc+2), %ebx - add %eax, %ebx - movl %ebx, %gs:GS_GDT_DESC + 2 - - xor %eax, %eax - mov %eax, %es - - /* Read the bootinfo struct into RAM */ - read_fw_blob(FW_CFG_INITRD) - - /* FS = bootinfo_struct */ - read_fw FW_CFG_INITRD_ADDR - shr $4, %eax - mov %ax, %fs - - /* Account for the EBDA in the multiboot structure's e801 - * map. - */ - int $0x12 - cwtl - movl %eax, %fs:4 - - /* ES = mmap_addr */ - mov %fs:48, %eax - shr $4, %eax - mov %ax, %es - - /* Initialize multiboot mmap structs using int 0x15(e820) */ - xor %ebx, %ebx - /* Start storing mmap data at %es:0 */ - xor %edi, %edi - -mmap_loop: - /* The multiboot entry size has offset -4, so leave some space */ - add $4, %di - /* entry size (mmap struct) & max buffer size (int15) */ - movl $20, %ecx - /* e820 */ - movl $0x0000e820, %eax - /* 'SMAP' magic */ - movl $0x534d4150, %edx - int $0x15 - -mmap_check_entry: - /* Error or last entry already done? */ - jb mmap_done - -mmap_store_entry: - /* store entry size */ - /* old as(1) doesn't like this insn so emit the bytes instead: - movl %ecx, %es:-4(%edi) - */ - .dc.b 0x26,0x67,0x66,0x89,0x4f,0xfc - - /* %edi += entry_size, store as mbs_mmap_length */ - add %ecx, %edi - movw %di, %fs:0x2c - - /* Continuation value 0 means last entry */ - test %ebx, %ebx - jnz mmap_loop - -mmap_done: - /* Calculate upper_mem field: The amount of memory between 1 MB and - the first upper memory hole. Get it from the mmap. */ - xor %di, %di - mov $0x100000, %edx -upper_mem_entry: - cmp %fs:0x2c, %di - je upper_mem_done - add $4, %di - - /* Skip if type != 1 */ - cmpl $1, %es:16(%di) - jne upper_mem_next - - /* Skip if > 4 GB */ - movl %es:4(%di), %eax - test %eax, %eax - jnz upper_mem_next - - /* Check for contiguous extension (base <= %edx < base + length) */ - movl %es:(%di), %eax - cmp %eax, %edx - jb upper_mem_next - addl %es:8(%di), %eax - cmp %eax, %edx - jae upper_mem_next - - /* If so, update %edx, and restart the search (mmap isn't ordered) */ - mov %eax, %edx - xor %di, %di - jmp upper_mem_entry - -upper_mem_next: - addl %es:-4(%di), %edi - jmp upper_mem_entry - -upper_mem_done: - sub $0x100000, %edx - shr $10, %edx - mov %edx, %fs:0x8 - -real_to_prot: - /* Load the GDT before going into protected mode */ -lgdt: - data32 lgdt %gs:GS_GDT_DESC - - /* get us to protected mode now */ - movl $1, %eax - movl %eax, %cr0 - - /* the LJMP sets CS for us and gets us to 32-bit */ -ljmp: - data32 ljmp *%gs:GS_PROT_JUMP - -prot_mode: -.code32 - - /* initialize all other segments */ - movl $0x10, %eax - movl %eax, %ss - movl %eax, %ds - movl %eax, %es - movl %eax, %fs - movl %eax, %gs - - /* Read the kernel and modules into RAM */ - read_fw_blob(FW_CFG_KERNEL) - - /* Jump off to the kernel */ - read_fw FW_CFG_KERNEL_ENTRY - mov %eax, %ecx - - /* EBX contains a pointer to the bootinfo struct */ - read_fw FW_CFG_INITRD_ADDR - movl %eax, %ebx - - /* EAX has to contain the magic */ - movl $MULTIBOOT_MAGIC, %eax -ljmp2: - jmp *%ecx - -/* Variables */ -.align 4, 0 -prot_jump: .long prot_mode - .short 8 - -.align 4, 0 -gdt: - /* 0x00 */ -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - /* 0x08: code segment (base=0, limit=0xfffff, type=32bit code exec/read, DPL=0, 4k) */ -.byte 0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00 - - /* 0x10: data segment (base=0, limit=0xfffff, type=32bit data read/write, DPL=0, 4k) */ -.byte 0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00 - - /* 0x18: code segment (base=0, limit=0x0ffff, type=16bit code exec/read/conf, DPL=0, 1b) */ -.byte 0xff, 0xff, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00 - - /* 0x20: data segment (base=0, limit=0x0ffff, type=16bit data read/write, DPL=0, 1b) */ -.byte 0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00 - -gdt_desc: -.short (5 * 8) - 1 -.long gdt - -BOOT_ROM_END diff --git a/qemu/pc-bios/optionrom/optionrom.h b/qemu/pc-bios/optionrom/optionrom.h deleted file mode 100644 index 6c4c2c82f..000000000 --- a/qemu/pc-bios/optionrom/optionrom.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Common Option ROM Functions - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see <http://www.gnu.org/licenses/>. - * - * Copyright Novell Inc, 2009 - * Authors: Alexander Graf <agraf@suse.de> - */ - - -#include "../../include/hw/nvram/fw_cfg_keys.h" - -#define BIOS_CFG_IOPORT_CFG 0x510 -#define BIOS_CFG_IOPORT_DATA 0x511 - -/* Break the translation block flow so -d cpu shows us values */ -#define DEBUG_HERE \ - jmp 1f; \ - 1: - -/* - * Read a variable from the fw_cfg device. - * Clobbers: %edx - * Out: %eax - */ -.macro read_fw VAR - mov $\VAR, %ax - mov $BIOS_CFG_IOPORT_CFG, %dx - outw %ax, (%dx) - mov $BIOS_CFG_IOPORT_DATA, %dx - inb (%dx), %al - shl $8, %eax - inb (%dx), %al - shl $8, %eax - inb (%dx), %al - shl $8, %eax - inb (%dx), %al - bswap %eax -.endm - -#define read_fw_blob_pre(var) \ - read_fw var ## _SIZE; \ - mov %eax, %ecx; \ - mov $var ## _DATA, %ax; \ - mov $BIOS_CFG_IOPORT_CFG, %edx; \ - outw %ax, (%dx); \ - mov $BIOS_CFG_IOPORT_DATA, %dx; \ - cld - -/* - * Read a blob from the fw_cfg device. - * Requires _ADDR, _SIZE and _DATA values for the parameter. - * - * Clobbers: %eax, %edx, %es, %ecx, %edi - */ -#define read_fw_blob(var) \ - read_fw var ## _ADDR; \ - mov %eax, %edi; \ - read_fw_blob_pre(var); \ - /* old as(1) doesn't like this insn so emit the bytes instead: \ - rep insb (%dx), %es:(%edi); \ - */ \ - .dc.b 0xf3,0x6c - -/* - * Read a blob from the fw_cfg device in forced addr32 mode. - * Requires _ADDR, _SIZE and _DATA values for the parameter. - * - * Clobbers: %eax, %edx, %es, %ecx, %edi - */ -#define read_fw_blob_addr32(var) \ - read_fw var ## _ADDR; \ - mov %eax, %edi; \ - read_fw_blob_pre(var); \ - /* old as(1) doesn't like this insn so emit the bytes instead: \ - addr32 rep insb (%dx), %es:(%edi); \ - */ \ - .dc.b 0x67,0xf3,0x6c - -/* - * Read a blob from the fw_cfg device in forced addr32 mode, address is in %edi. - * Requires _SIZE and _DATA values for the parameter. - * - * Clobbers: %eax, %edx, %edi, %es, %ecx - */ -#define read_fw_blob_addr32_edi(var) \ - read_fw_blob_pre(var); \ - /* old as(1) doesn't like this insn so emit the bytes instead: \ - addr32 rep insb (%dx), %es:(%edi); \ - */ \ - .dc.b 0x67,0xf3,0x6c - -#define OPTION_ROM_START \ - .code16; \ - .text; \ - .global _start; \ - _start:; \ - .short 0xaa55; \ - .byte (_end - _start) / 512; - -#define BOOT_ROM_START \ - OPTION_ROM_START \ - lret; \ - .org 0x18; \ - .short 0; \ - .short _pnph; \ - _pnph: \ - .ascii "$PnP"; \ - .byte 0x01; \ - .byte ( _pnph_len / 16 ); \ - .short 0x0000; \ - .byte 0x00; \ - .byte 0x00; \ - .long 0x00000000; \ - .short _manufacturer; \ - .short _product; \ - .long 0x00000000; \ - .short 0x0000; \ - .short 0x0000; \ - .short _bev; \ - .short 0x0000; \ - .short 0x0000; \ - .equ _pnph_len, . - _pnph; \ - _bev:; \ - /* DS = CS */ \ - movw %cs, %ax; \ - movw %ax, %ds; - -#define OPTION_ROM_END \ - .byte 0; \ - .align 512, 0; \ - _end: - -#define BOOT_ROM_END \ - _manufacturer:; \ - .asciz "QEMU"; \ - _product:; \ - .asciz BOOT_ROM_PRODUCT; \ - OPTION_ROM_END - diff --git a/qemu/pc-bios/palcode-clipper b/qemu/pc-bios/palcode-clipper Binary files differdeleted file mode 100755 index 9956340cd..000000000 --- a/qemu/pc-bios/palcode-clipper +++ /dev/null diff --git a/qemu/pc-bios/petalogix-ml605.dtb b/qemu/pc-bios/petalogix-ml605.dtb Binary files differdeleted file mode 100644 index fbbd45fda..000000000 --- a/qemu/pc-bios/petalogix-ml605.dtb +++ /dev/null diff --git a/qemu/pc-bios/petalogix-s3adsp1800.dtb b/qemu/pc-bios/petalogix-s3adsp1800.dtb Binary files differdeleted file mode 100644 index 8ac80f2f2..000000000 --- a/qemu/pc-bios/petalogix-s3adsp1800.dtb +++ /dev/null diff --git a/qemu/pc-bios/ppc_rom.bin b/qemu/pc-bios/ppc_rom.bin Binary files differdeleted file mode 100644 index 174a24744..000000000 --- a/qemu/pc-bios/ppc_rom.bin +++ /dev/null diff --git a/qemu/pc-bios/pxe-e1000.rom b/qemu/pc-bios/pxe-e1000.rom Binary files differdeleted file mode 100644 index 2e5f8b28a..000000000 --- a/qemu/pc-bios/pxe-e1000.rom +++ /dev/null diff --git a/qemu/pc-bios/pxe-eepro100.rom b/qemu/pc-bios/pxe-eepro100.rom Binary files differdeleted file mode 100644 index d292e8fec..000000000 --- a/qemu/pc-bios/pxe-eepro100.rom +++ /dev/null diff --git a/qemu/pc-bios/pxe-ne2k_pci.rom b/qemu/pc-bios/pxe-ne2k_pci.rom Binary files differdeleted file mode 100644 index 62010cbc7..000000000 --- a/qemu/pc-bios/pxe-ne2k_pci.rom +++ /dev/null diff --git a/qemu/pc-bios/pxe-pcnet.rom b/qemu/pc-bios/pxe-pcnet.rom Binary files differdeleted file mode 100644 index 512d6d433..000000000 --- a/qemu/pc-bios/pxe-pcnet.rom +++ /dev/null diff --git a/qemu/pc-bios/pxe-rtl8139.rom b/qemu/pc-bios/pxe-rtl8139.rom Binary files differdeleted file mode 100644 index 67c77fbf7..000000000 --- a/qemu/pc-bios/pxe-rtl8139.rom +++ /dev/null diff --git a/qemu/pc-bios/pxe-virtio.rom b/qemu/pc-bios/pxe-virtio.rom Binary files differdeleted file mode 100644 index b1ec90962..000000000 --- a/qemu/pc-bios/pxe-virtio.rom +++ /dev/null diff --git a/qemu/pc-bios/qemu-icon.bmp b/qemu/pc-bios/qemu-icon.bmp Binary files differdeleted file mode 100644 index 72d9a2f56..000000000 --- a/qemu/pc-bios/qemu-icon.bmp +++ /dev/null diff --git a/qemu/pc-bios/qemu-nsis.bmp b/qemu/pc-bios/qemu-nsis.bmp Binary files differdeleted file mode 100644 index ae82cd269..000000000 --- a/qemu/pc-bios/qemu-nsis.bmp +++ /dev/null diff --git a/qemu/pc-bios/qemu-nsis.ico b/qemu/pc-bios/qemu-nsis.ico Binary files differdeleted file mode 100644 index 1d0128cd4..000000000 --- a/qemu/pc-bios/qemu-nsis.ico +++ /dev/null diff --git a/qemu/pc-bios/qemu.rsrc b/qemu/pc-bios/qemu.rsrc deleted file mode 100644 index e3d205b23..000000000 --- a/qemu/pc-bios/qemu.rsrc +++ /dev/null @@ -1,1504 +0,0 @@ -data 'icns' (-16455) { - $"6963 6E73 0000 5DC3 6974 3332 0000 1DB3" /* icns..]√it32...≥ */ - $"0000 0000 FF00 FF00 B000 0F08 1222 3645" /* ....ˇ.ˇ.∞...."6E */ - $"4D56 6063 5A51 473C 2816 0CE8 0019 0416" /* MV`cZQG<(..Ë.... */ - $"3764 94B5 CCDD E7E9 EBEC EDEE ECEB EAE8" /* 7dîµÃ›ÁÈÎÏÌÓÏÎÍË */ - $"E2D4 BEA3 7746 200B E000 0608 2763 A5D0" /* ‚‘æ£wF .‡...'c•– */ - $"E6EE 80F5 8AF6 08F5 F4F0 EAD9 B97C 3B0F" /* ÊÓÄıäˆ.ıÙÍŸπ|;. */ - $"DB00 061C 64AF DAED F0F2 81F1 8BF0 83F1" /* €...dØ⁄ÌÚÅÒãÉÒ */ - $"05EE E3C1 8432 07D5 0007 0635 87CD E8ED" /* .Ó„¡Ñ2.’...5áÕËÌ */ - $"EDEE 97ED 07EE EEED EBDC A551 11D1 0007" /* ÌÓóÌ.ÓÓÌ΋•Q.—.. */ - $"0333 96D9 E6E9 EAE9 9CE8 06E9 E9E8 E1B8" /* .3ñŸÊÈÍÈúË.ÈÈË·∏ */ - $"560E CE00 0628 8CD3 E3E6 E5E4 93E3 80E4" /* V.Œ..(唄ʉì„ĉ */ - $"87E3 06E4 E5E4 DEAE 4A07 CA00 050D 63C8" /* á„.‰Â‰fiÆJ. ...c» */ - $"DFE1 E196 E084 DF86 E004 E1E0 D791 23C8" /* fl··ñ‡Ñfl܇.·‡◊ë#» */ - $"0004 2FA0 D8DC DC84 DA06 D9DA D9D9 DAD9" /* ../†ÿ‹‹Ñ⁄.Ÿ⁄ŸŸ⁄Ÿ */ - $"D987 DA00 D990 DA05 DBDC DBC0 5708 C400" /* Ÿá⁄.Ÿê⁄.€‹€¿W.ƒ. */ - $"1804 54C3 D7D7 D6D6 D7D6 D5D5 D6DF F1DF" /* ..T√◊◊÷÷◊÷’’÷flÒfl */ - $"DADF E5F1 EEDD D5D6 D5D4 81D5 81D6 82D8" /* ⁄flÂÒÓ›’÷’‘Å’Å÷Çÿ */ - $"83D6 80D8 80D6 80D7 04D6 D7D2 8615 C200" /* É÷ÄÿÄ÷Ä◊.÷◊“Ü.¬. */ - $"060E 75CB D4D3 D2D2 80D0 11E0 EAF0 F8FD" /* ..uÀ‘”““Ä–.‡Í¯˝ */ - $"F9F7 FAFB FDFD F7DB CED6 DDD7 D380 D08C" /* ˘˜˙˚˝˝˜€Œ÷›◊”Ä–å */ - $"D286 D104 D2D3 D2A3 29C0 0003 1591 CDCF" /* “Ü—.“”“£)¿...ëÕœ */ - $"80CE 06CC D7DB DEFB FCFD 86FE 0BF5 DBEB" /* ÄŒ.Ã◊€fi˚¸˝Ü˛.ı€Î */ - $"FAF7 F3EB E0D7 D0CD CD86 CE84 CD84 CE03" /* ˙˜Û·◊–ÕÕÜŒÑÕÑŒ. */ - $"CFD0 B739 BE00 0318 96CB CA81 C803 C7DB" /* œ–∑9æ...ñÀ Å».«€ */ - $"FAF9 8AFE 0BFA FCFE FEFD FCFB FAF2 E6D8" /* ˙˘ä˛.˙¸˛˛˝¸˚˙ÚÊÿ */ - $"CD8C C883 CA05 C8C9 CACC BA3F BC00 041B" /* Õå»É .»… Ã∫?º... */ - $"98C7 C5C3 81C4 02C3 C8F1 93FE 09FD FCFA" /* ò«≈√Ń.√»Òì˛∆˝¸˙ */ - $"F3E6 D5CB C3C2 C383 C584 C683 C502 C7B8" /* ÛÊ’À√¬√É≈Ñ∆É≈.«∏ */ - $"42BA 0003 1291 C4C1 84C0 02BC CFFB 96FE" /* B∫...냡ѿ.ºœ˚ñ˛ */ - $"06FC FAF5 E9D5 C2BD 87C0 86BF 02C1 B536" /* .¸˙ıÈ’¬Ωá¿Üø.¡µ6 */ - $"B800 030A 7DC1 BC84 BB03 B9CD D7EE 99FE" /* ∏..¬}¡ºÑª.πÕ◊Óô˛ */ - $"07FC F9EF D4BB BBBE BD82 BC87 BB03 BCC0" /* .¸˘Ô‘ªªæΩǺáª.º¿ */ - $"A825 B600 0304 64BB B981 B880 B704 B5C6" /* ®%∂...dªπÅ∏Ä∑.µ∆ */ - $"F5FA FB9B FE04 FDF9 E6C3 B58F B802 BC97" /* ı˙˚õ˛.˝˘Ê√µè∏.ºó */ - $"15B5 0002 39B2 B582 B480 B201 B5EA A0FE" /* .µ..9≤µÇ¥Ä≤.µÍ†˛ */ - $"04FC F1C9 B1B3 87B2 01B3 B382 B402 B873" /* .¸Ò…±≥á≤.≥≥Ç¥.∏s */ - $"06B3 0002 1899 B385 B002 ADCC FDA2 FE02" /* .≥...ô≥Ö∞.≠Ã˝¢˛. */ - $"F7CB AD8E B002 B1B1 43B2 0002 0671 AE86" /* ˜À≠é∞.±±C≤...qÆÜ */ - $"AC01 ADEC A4FE 02F7 C3A8 81AB 80AA 01AC" /* ¨.≠ϧ˛.˜√®Å´Ä™.¨ */ - $"AB84 AC03 AAAD 9C1C B100 0231 A6A7 80A6" /* ´Ñ¨.™≠ú.±..1¶ßĶ */ - $"82A7 02A4 BEFD 97FE 05DC 9C83 8DAE E085" /* Çß.§æ˝ó˛.‹úÉçÆ‡Ö */ - $"FE06 EEB0 A6A7 A8A6 A685 A800 A781 A602" /* ˛.Ó∞¶ß®¶¶Ö®.ßŶ. */ - $"AD69 04AF 0002 0A7E A681 A281 A302 A2A0" /* ≠i.Ø..¬~¶Å¢Å£.¢† */ - $"E097 FE08 A228 110E 0F14 295A BC83 FE03" /* ‡ó˛.¢(....)ZºÉ˛. */ - $"FDDF A3A1 81A2 80A3 86A2 02A4 A128 AF00" /* ˝fl£°Å¢Ä£Ü¢.§°(Ø. */ - $"013E A286 9E02 9DAE F996 FE02 F228 0181" /* .>¢Üû.ùÆ˘ñ˛.Ú(.Å */ - $"0004 0108 1B72 F582 FE04 FBC3 9A9E 9E82" /* .....rıDz.˚√öûûÇ */ - $"A086 9E03 A0A3 7407 AD00 0209 7C9D 8599" /* †Üû.†£t.≠..∆|ùÖô */ - $"029A 96D4 97FE 01F2 1B85 0002 0B60 F982" /* .öñ‘ó˛.Ú.Ö...`˘Ç */ - $"FE03 EB9E 9898 8899 819A 029B 9C28 AD00" /* ˛.ÎûòòàôÅö.õú(≠. */ - $"012C 9986 9802 93AC F897 FE01 FD72 8600" /* .,ôÜò.쨯ó˛.˝rÜ. */ - $"0109 A882 FE04 FCA6 9497 9780 9885 9781" /* .∆®Ç˛.¸¶îóóÄòÖóÅ */ - $"9801 9D60 AC00 0304 6897 9184 9202 9199" /* ò.ù`¨...hóëÑí.ëô */ - $"E699 FE01 F35B 8600 005D 83FE 01C2 8E8F" /* Êô˛.Û[Ü..]ɲ.¬éè */ - $"9201 8E18 AB00 0317 8B8F 8F83 9003 8F90" /* í.é.´...ãèèÉê.èê */ - $"DBFD 9AFE 02F5 8E1F 8400 0095 83FE 02EE" /* €˝ö˛.ıé.Ñ..ïɲ.Ó */ - $"978D 8590 808E 8090 048E 8E8F 9642 AB00" /* óçÖêÄéÄê.ééèñB´. */ - $"0338 9089 8983 8A02 87AA FC9C FE09 F8E3" /* .8êââÉä.ᙸú˛∆¯„ */ - $"934A 2315 1830 8DF8 84FE 02D9 8F86 828B" /* ìJ#..0ç¯Ñ˛.ŸèÜÇã */ - $"828A 808B 808A 028F 6904 AA00 015D 8C82" /* ÇäÄãÄä.èi.™..]åÇ */ - $"8480 8601 83D3 9EFE 07FD F8F3 EEDF E1F2" /* ÑÄÜ.É”û˛.˝¯ÛÓfl·Ú */ - $"F885 FE04 FCE1 A284 8380 8683 8582 8602" /* ¯Ö˛.¸·¢ÑÉÄÜÉÖÇÜ. */ - $"8781 14A9 0002 0E79 8282 8104 8383 818F" /* áÅ.©...yÇÇÅ.ÉÉÅè */ - $"F498 FE03 FDDE E2F6 83FE 01FD FD88 FE07" /* Ùò˛.˝fi‚ˆÉ˛.˝˝à˛. */ - $"FDF8 D3A3 887E 7F81 8282 8383 0189 2EA9" /* ˝¯”£à~.ÅÇÇÉÉ.â.© */ - $"0002 1E82 7F82 7E03 8080 7BAA 99FE 0BFD" /* ...Ç.Ç~.ÄÄ{™ô˛.˝ */ - $"B46C 5B58 6278 96B7 D4ED FD8A FE08 FCF9" /* ¥l[Xbxñ∑‘Ì˝ä˛.¸˘ */ - $"E5C1 9D84 7A7B 7F83 8003 7F7F 834A A900" /* ¡ùÑz{.ÉÄ...ÉJ©. */ - $"0432 827A 7B7B 8079 037A 7A75 CB9A FE11" /* .2Çz{{Äy.zzuÀö˛. */ - $"FAF5 E8C7 9E72 4B30 2422 2D41 5D7E 9FB6" /* ˙ıË«ûrK0$"-A]~ü∂ */ - $"D2F3 85FE 08FD FBF9 E6C2 967A 7579 817A" /* “ÛÖ˛.˝˚˘Ê¬ñzuyÅz */ - $"047B 797F 5E03 A800 0143 7E80 7781 7602" /* .{y.^.®..C~ÄwÅv. */ - $"757B E99D FE13 FCF9 F6F3 EFD2 A877 4925" /* u{Èù˛.¸˘ˆÛÔ“®wI% */ - $"1109 0B0D 2747 709E C9EB 83FE 07FD FBF7" /* .∆..'Gpû…Îɲ.˝˚˜ */ - $"D8A7 8072 7481 7602 776B 0BA8 0001 4F77" /* ÿßÄrtÅv.wk.®..Ow */ - $"8073 8172 0270 8DFC A2FE 13FC FAF6 F3F1" /* ÄsÅr.p縢˛.¸˙ˆÛÒ */ - $"D5AE 7F51 270D 0609 0C20 3C62 8FBB E181" /* ’Æ.Q'..∆. <b誷Š*/ - $"FE0B FCF9 E9BB 856F 7273 7374 6F0F A800" /* ˛.¸˘ÈªÖorssto.®. */ - $"0156 7281 7080 6F01 69AA A8FE 12FD FAF7" /* .VrÅpÄo.i™®˛.˝˙˜ */ - $"F4F1 D0A0 6937 1809 0508 0B19 3979 C3F1" /* ÙÒ–†i7.∆....9y√Ò */ - $"80FE 08FB EFB2 746D 706F 7017 A700 0206" /* IJ.˚Ô≤tmpop.ß... */ - $"596E 816B 806A 0167 CBAD FE19 FCF9 F6F2" /* YnÅkÄj.gÀ≠˛.¸˘ˆÚ */ - $"E3CC AD7B 4622 0D07 0B21 3F5C 92E1 FEFA" /* „Ã≠{F"...!?\í·˛˙ */ - $"D87D 686B 6D1B A700 0306 586A 6880 6704" /* ÿ}hkm.ß...XjhÄg. */ - $"6666 656E E8B2 FE14 FCFA F7F3 EFD2 AE81" /* ffenË≤˛.¸˙˜ÛÔ“ÆÅ */ - $"5429 0D08 1C81 F8FC E179 646B 1CA7 0003" /* T)...ů¸·ydk.ß.. */ - $"0655 6765 8264 0261 7EFB B7FE 0FFC FAF7" /* .UgeÇd.a~˚∑˛.¸˙˜ */ - $"F4F1 D088 3207 3FDA FDD2 6767 1BA7 0002" /* ÙÒ–à2.?⁄˝“gg.ß.. */ - $"0450 6381 6103 6060 5B9C BDFE 0AFC F8F2" /* .PcÅa.``[úΩ˛¬¸¯Ú */ - $"A527 24B9 FC94 5F18 A800 0148 6082 5E02" /* •'$π¸î_.®..H`Ç^. */ - $"5D58 C4AD FE0D FCE9 CDBA ADA2 A3A7 AFC0" /* ]Xƒ≠˛.¸ÈÕ∫≠¢£ßØ¿ */ - $"D2E6 F4FD 82FE 07FA DD30 31CB D75C 12A8" /* “ÊÙ˝Ç˛.˙›01À◊\.® */ - $"0003 3E5E 5959 8058 0257 62EA ABFE 1CDD" /* ..>^YYÄX.WbÍ´˛.› */ - $"A57D 695C 5958 5757 5857 595F 6873 7E8C" /* •}i\YXWWXWY_hs~å */ - $"98A5 AFAE A07C 5B56 639E 5F0E A800 0330" /* ò•ØƆ|[Vcû_.®..0 */ - $"5955 5580 5402 507C FDA9 FE08 DA8F 5F54" /* YUUÄT.P|˝©˛.⁄è_T */ - $"5354 5455 5580 5681 5581 5480 5507 5454" /* STTUUÄVÅUÅTÄU.TT */ - $"5556 5557 4E07 A800 0122 5680 5203 5151" /* UVUWN.®.."VÄR.QQ */ - $"4C9C A8FE 05E1 955D 5051 5080 5183 5282" /* Lú®˛.·ï]PQPÄQÉRÇ */ - $"5180 5208 5151 5051 5152 5254 3FA9 0000" /* QÄR.QQPQQRRT?©.. */ - $"1581 5003 4F4F 49B4 A6FE 03D4 905D 4D85" /* .ÅP.OOI¥¶˛.‘ê]MÖ */ - $"4F82 5083 4F01 5050 844F 0152 2EA9 0002" /* OÇPÉO.PPÑO.R.©.. */ - $"0A45 4B81 4A01 49CE A3FE 06F2 BB7B 5349" /* ¬EKÅJ.IŒ£˛.Úª{SI */ - $"4A4A 804B 8D4A 824B 814A 014E 1BAA 0001" /* JJÄKçJÇKÅJ.N.™.. */ - $"324A 8047 0246 4EE4 A1FE 06E3 9E65 4944" /* 2JÄG.FN‰°˛.„ûeID */ - $"4647 8248 8547 8348 0147 4783 4880 4701" /* FGÇHÖGÉH.GGÉHÄG. */ - $"440C AA00 011C 4880 4502 4154 F19F FE05" /* D.™...HÄE.ATÒü˛. */ - $"DE8C 5644 4244 8043 8245 8344 8245 8644" /* fiåVDBDÄCÇEÉDÇEÜD */ - $"8145 0147 33AB 0001 0C3F 8041 023F 5EFB" /* ÅE.G3´...?ÄA.?^˚ */ - $"9DFE 02EE 9552 8040 8041 8540 8041 0140" /* ù˛.ÓïRÄ@ÄAÖ@ÄA.@ */ - $"4080 4180 4080 4182 4081 4101 4420 AC00" /* @ÄAÄ@ÄAÇ@ÅA.D ¨. */ - $"052C 403E 3E38 679D FE04 C35D 3C3D 3E82" /* .,@>>8gù˛.√]<=>Ç */ - $"4080 3E80 3F82 4080 3F80 3E8B 3F01 3D0C" /* @Ä>Ä?Ç@Ä?Ä>ã?.=. */ - $"AC00 0513 3D3B 3A34 749C FE02 A743 3880" /* ¨...=;:4tú˛.ßC8Ä */ - $"3A80 3B82 3A80 3982 3B83 3A80 3B87 3A01" /* :Ä;Ç:Ä9Ç;É:Ä;á:. */ - $"3E26 AD00 0504 2E38 3731 789B FE03 9C32" /* >&≠....871xõ˛.ú2 */ - $"3536 8037 8038 8337 0136 3688 3783 3680" /* 56Ä7Ä8É7.66à7É6Ä */ - $"3781 3601 380F AE00 0415 3634 2D77 9AFE" /* 7Å6.8.Æ...64-wö˛ */ - $"02BF 3432 8033 8034 0135 3583 3480 3301" /* .ø42Ä3Ä4.55É4Ä3. */ - $"3434 8335 8B34 0136 25AF 0004 0327 322B" /* 44É5ã4.6%Ø...'2+ */ - $"6F99 FE02 F24B 2C81 3080 3180 329B 3101" /* oô˛.ÚK,Å0Ä1Ä2õ1. */ - $"300D B000 030E 2F28 6099 FE01 9C27 882D" /* 0.∞.../(`ô˛.ú'à- */ - $"802E 882D 822E 872D 0130 1DB2 0003 1B29" /* Ä.à-Ç.á-.0.≤...) */ - $"4AFC 97FE 02F9 4B26 812A 842B 802C 822B" /* J¸ó˛.˘K&Å*Ñ+Ä,Ç+ */ - $"802A 802B 802C 852B 802C 022B 2809 B200" /* Ä*Ä+Ä,Ö+Ä,.+(∆≤. */ - $"0306 2137 E997 FE02 CA28 2681 2784 2880" /* ..!7Èó˛. (&Å'Ñ(Ä */ - $"2997 2800 10B4 0002 0D25 C897 FE02 931D" /* )ó(..¥...%»ó˛.ì. */ - $"2584 248D 2582 2483 2581 2401 2718 B600" /* %Ñ$ç%Ç$É%Å$.'.∂. */ - $"0110 B597 FE01 681B 8521 8422 8023 8B22" /* ..µó˛.h.Ö!Ñ"Ä#ã" */ - $"8023 8022 0223 1C04 B700 00A2 97FE 014A" /* Ä#Ä".#..∑..¢ó˛.J */ - $"1A85 1E84 1F80 2086 1F80 1E82 1F80 2001" /* .Ö.Ñ.Ä Ü.Ä.Ç.Ä . */ - $"1C08 B800 0094 96FE 02FB 3C19 841C 881D" /* ..∏..îñ˛.˚<.Ñ.à. */ - $"801E 861D 801C 811D 011C 09B9 0000 8C96" /* Ä.Ü.Ä.Å...∆π..åñ */ - $"FE02 F434 1688 1994 1A03 191A 190A BA00" /* ˛.Ù4.à.î.....¬∫. */ - $"0085 96FE 02F4 3114 8816 8717 8018 8717" /* .Öñ˛.Ù1.à.á.Ä.á. */ - $"0218 1609 BB00 007C 96FE 02F7 3111 8B14" /* ...∆ª..|ñ˛.˜1.ã. */ - $"8715 8016 8415 0113 07BC 0000 6F97 FE01" /* á.Ä.Ñ....º..oó˛. */ - $"3A0E 9D12 0213 0E04 BD00 004C 97FE 0148" /* :.ù.....Ω..Ló˛.H */ - $"0A8B 0F8F 1000 0BBF 0001 22F8 96FE 0157" /* ¬ã.è...ø.."¯ñ˛.W */ - $"0795 0D83 0E01 0D07 C000 0104 BB96 FE01" /* .ï.É....¿...ªñ˛. */ - $"7504 9A0B 0109 03C2 0000 3A96 FE01 9D03" /* u.ö..∆.¬..:ñ˛.ù. */ - $"9809 0107 04C5 0000 7295 FE01 A500 9706" /* ò∆...≈..rï˛.•.ó. */ - $"0003 C800 0160 F993 FE02 C606 0094 03CC" /* ..»..`˘ì˛.∆..î.à */ - $"0001 47EE 92FE 01EC 15E5 0001 37E9 92FE" /* ..GÓí˛.Ï.Â..7Èí˛ */ - $"0037 E600 0131 E691 FE00 6BE7 0001 32EC" /* .7Ê..1Êë˛.kÁ..2Ï */ - $"90FE 00A6 E800 0139 E68F FE01 E010 E800" /* ê˛.¶Ë..9Êè˛.‡.Ë. */ - $"0141 EC8F FE00 37E9 0001 4BF3 8EFE 007A" /* .AÏè˛.7È..KÛé˛.z */ - $"EA00 0164 F78D FE01 C305 EA00 0181 F98C" /* Í..d˜ç˛.√.Í..Å˘å */ - $"FE01 F423 EA00 0209 9EFB 8CFE 0066 EB00" /* ˛.Ù#Í..∆û˚å˛.fÎ. */ - $"020F B9FD 8BFE 01BA 04EB 0001 1CD5 8BFE" /* ..π˝ã˛.∫.Î...’ã˛ */ - $"01F4 23EC 0001 30E8 8BFE 0067 ED00 014C" /* .Ù#Ï..0Ëã˛.gÌ..L */ - $"F58A FE01 BB04 ED00 016F F989 FE01 F424" /* ıä˛.ª.Ì..o˘â˛.Ù$ */ - $"ED00 0206 A1FC 89FE 0067 EE00 0113 CD89" /* Ì...°¸â˛.gÓ...Õâ */ - $"FE01 BE06 EE00 012E EA88 FE01 F624 EF00" /* ˛.æ.Ó...Íà˛.ˆ$Ô. */ - $"015A F888 FE00 6CEF 0002 038B FB87 FE01" /* .Z¯à˛.lÔ...ã˚á˛. */ - $"C206 EF00 010F BC87 FE01 F828 F000 0125" /* ¬.Ô...ºá˛.¯(..% */ - $"E687 FE00 6DF1 0001 59F9 86FE 01BD 04F0" /* Êá˛.mÒ..Y˘Ü˛.Ω. */ - $"0002 049D FD85 FE01 F320 F100 0117 D786" /* ...ù˝Ö˛.Û Ò...◊Ü */ - $"FE00 5EF2 0001 42F6 85FE 00A9 F300 0182" /* ˛.^Ú..BˆÖ˛.©Û..Ç */ - $"FB84 FE01 E311 F200 010F C585 FE00 35F3" /* ˚Ñ˛.„.Ú...≈Ö˛.5Û */ - $"0001 31F1 84FE 0074 F400 0176 F983 FE01" /* ..1ÒÑ˛.tÙ..v˘É˛. */ - $"B601 F300 010E C383 FE01 E310 F400 0138" /* ∂.Û...√ɲ.„.Ù..8 */ - $"F082 FE01 FB2A F500 0184 FB82 FE00 4FF5" /* Dz.˚*ı..Ñ˚Dz.Oı */ - $"0001 13CD 82FE 007D F600 0145 F481 FE00" /* ...ÕDz.}ˆ..EÙÅ˛. */ - $"A1F6 0002 049A FD80 FE01 BA01 F600 0121" /* °ˆ...ö˝Ä˛.∫.ˆ..! */ - $"E480 FE01 D209 F700 056F FAFE FEE5 11F7" /* ‰Ä˛.“∆˜..o˙˛˛Â.˜ */ - $"0005 0ECA FEFE F41D F800 0447 F5FE FE2C" /* ... ˛˛Ù.¯..Gı˛˛, */ - $"F800 0406 A5FD FE40 F900 0329 E0FE 5BFA" /* ¯...•˝˛@˘..)‡˛[˙ */ - $"0002 3BF7 7EFB 0001 C2A8 FB00 026A CB01" /* ..;˜~˚..¬®˚..jÀ. */ - $"FA00 0223 D210 FA00 0204 9920 FB00 0129" /* ˙..#“.˙...ô ˚..) */ - $"1EFF 00FF 00FF 00FF 00FF 00FF 00FF 00FF" /* .ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ */ - $"00A8 00FF 00FF 00B0 000F 0812 2236 454D" /* .®.ˇ.ˇ.∞...."6EM */ - $"5660 635A 5147 3C28 160C E800 1904 1637" /* V`cZQG<(..Ë....7 */ - $"6494 B5CC DDE7 E9EB ECED EEEC EBEA E8E2" /* dîµÃ›ÁÈÎÏÌÓÏÎÍË‚ */ - $"D4BE A377 4620 0BE0 0006 0827 63A5 D0E6" /* ‘æ£wF .‡...'c•–Ê */ - $"EE80 F58A F608 F5F4 F0EA D9B9 7C3B 0FDB" /* ÓÄıäˆ.ıÙÍŸπ|;.€ */ - $"0006 1C64 AFDA EDF0 F281 F18B F083 F105" /* ...dØ⁄ÌÚÅÒãÉÒ. */ - $"EEE3 C184 3207 D500 0706 3587 CDE8 EDED" /* Ó„¡Ñ2.’...5áÕËÌÌ */ - $"EE97 ED07 EEEE EDEB DCA5 5111 D100 0703" /* ÓóÌ.ÓÓÌ΋•Q.—... */ - $"3396 D9E6 E9EA E99C E806 E9E9 E8E1 B856" /* 3ñŸÊÈÍÈúË.ÈÈË·∏V */ - $"0ECE 0006 288C D3E3 E6E5 E493 E380 E487" /* .Œ..(唄ʉì„ĉá */ - $"E306 E4E5 E4DE AE4A 07CA 0005 0D63 C8DF" /* „.‰Â‰fiÆJ. ...c»fl */ - $"E1E1 96E0 84DF 86E0 04E1 E0D7 9123 C800" /* ··ñ‡Ñfl܇.·‡◊ë#». */ - $"042F A0D8 DCDC 82DA 08DB D9DE DCDE DFDC" /* ./†ÿ‹‹Ç⁄.€Ÿfi‹fifl‹ */ - $"DEDE 87DA 00D9 90DA 05DB DCDB C057 08C4" /* fifiá⁄.Ÿê⁄.€‹€¿W.ƒ */ - $"0004 0454 C3D7 D780 D614 D7DA DBD9 BC82" /* ...T√◊◊Ä÷.◊⁄€ŸºÇ */ - $"BDCA BCA7 8185 C2DA D6D8 D9D8 D6D6 D581" /* Ω ºßÅÖ¬⁄÷ÿŸÿ÷÷’Å */ - $"D682 D883 D680 D880 D680 D704 D6D7 D286" /* ÷ÇÿÉ÷ÄÿÄ÷Ä◊.÷◊“Ü */ - $"15C2 001F 0E75 CBD4 D3D2 D2D4 D6D3 AC8C" /* .¬...uÀ‘”““‘÷”¨å */ - $"7E65 5362 685D 5753 5267 B7D8 C5B1 C2CD" /* ~eSbh]WSRg∑ÿ≈±¬Õ */ - $"D4D7 D5D3 8BD2 86D1 04D2 D3D2 A329 C000" /* ‘◊’”ã“Ü—.“”“£)¿. */ - $"0315 91CD CF80 CE0B D0B5 ABA5 5A54 5352" /* ..ë՜Č.–µ´•ZTSR */ - $"5151 5252 8151 0C66 AA81 5964 6F83 9EB5" /* QQRRÅQ.f™ÅYdoÉûµ */ - $"C9D2 D2CF 85CE 84CD 84CE 03CF D0B7 39BE" /* …““œÖŒÑÕÑŒ.œ–∑9æ */ - $"0003 1896 CBCA 81C8 06CD 9E57 5D50 5151" /* ...ñÀ Å».ÕûW]PQQ */ - $"8552 1151 515A 5551 5152 5456 5E6D 89A6" /* ÖR.QQZUQQRTV^mⶠ*/ - $"C0CD CDCB C988 C883 CA05 C8C9 CACC BA3F" /* ¿ÕÕÀ…à»É .»… Ã∫? */ - $"BC00 041B 98C7 C5C3 82C4 02BD 684F 8A52" /* º...ò«≈√ǃ.ΩhOäR */ - $"0051 8152 0C51 5152 5254 5A67 82A2 BAC6" /* .QÅR.QQRRTZgÇ¢∫∆ */ - $"C8C6 83C5 84C6 83C5 02C7 B842 BA00 0312" /* »∆É≈Ñ∆É≈.«∏B∫... */ - $"91C4 C184 C003 C6A2 5551 9252 0951 5152" /* 냡ѿ.∆¢UQíR∆QQR */ - $"5359 6379 9ABA C387 C086 BF02 C1B5 36B8" /* SYcyö∫√á¿Üø.¡µ6∏ */ - $"0003 0A7D C1BC 84BB 04BF 9E8E 6A50 9552" /* ..¬}¡ºÑª.øûéjPïR */ - $"0A51 5152 5357 6B95 BBBF BEBD 82BC 87BB" /* ¬QQRSWkïªøæΩǺ᪠*/ - $"03BC C0A8 25B6 0003 0464 BBB9 81B8 80B7" /* .º¿®%∂...dªπÅ∏Ä∑ */ - $"05BA A35E 5656 5198 5280 5103 5672 A8BB" /* .∫£^VVQòRÄQ.Vr®ª */ - $"8FB8 02BC 9715 B500 0239 B2B5 82B4 06B2" /* è∏.ºó.µ..9≤µÇ¥.≤ */ - $"B2B3 B16B 5051 9D52 0551 5361 95B8 B387" /* ≤≥±kPQùR.QSaï∏≥á */ - $"B201 B3B3 82B4 02B8 7306 B300 0218 99B3" /* ≤.≥≥Ç¥.∏s.≥...ô≥ */ - $"85B0 03B3 8E51 519F 5204 5150 5A8D B28E" /* Ö∞.≥éQQüR.QPZç≤é */ - $"B002 B1B1 43B2 0002 0671 AE85 AC03 ADAA" /* ∞.±±C≤...qÆÖ¨.≠™ */ - $"654F 9652 0054 8056 0155 5383 5203 5158" /* eOñR.TÄV.USÉR.QX */ - $"92AE 81AB 80AA 01AC AB84 AC03 AAAD 9C1C" /* íÆÅ´Ä™.¨´Ñ¨.™≠ú. */ - $"B100 0231 A6A7 80A6 82A7 01AA 8F97 5208" /* ±..1¶ßĶÇß.™èóR. */ - $"5548 342D 313B 4954 5582 5207 5060 9EA9" /* UH4-1;ITUÇR.P`û© */ - $"A7A8 A6A6 85A8 00A7 81A6 02AD 6904 AF00" /* ß®¶¶Ö®.ßŶ.≠i.Ø. */ - $"020A 7EA6 81A2 82A3 02A4 6C50 9552 0B55" /* .¬~¶Å¢Ç£.§lPïR.U */ - $"3610 0605 0506 1021 3F55 5381 5201 516D" /* 6......!?USÅR.Qm */ - $"83A2 80A3 86A2 02A4 A128 AF00 013E A286" /* ɢģܢ.§°(Ø..>¢Ü */ - $"9E02 A191 5595 5203 534F 1101 8100 0501" /* û.°ëUïR.SO..Å... */ - $"030B 2750 5380 5205 5152 81A1 9E9E 82A0" /* ..'PSÄR.QRÅ°ûûdž */ - $"869E 03A0 A374 07AD 0002 097C 9D85 9903" /* Üû.†£t.≠..∆|ùÖô. */ - $"9A9E 6F50 9552 0253 4F0D 8500 0104 2282" /* öûoPïR.SO.Ö..."Ç */ - $"5204 505F 9899 9888 9981 9A02 9B9C 28AD" /* R.P_òôòàôÅö.õú(≠ */ - $"0001 2C99 8798 0287 5651 9652 0154 2886" /* ..,ôáò.áVQñR.T(Ü */ - $"0002 0339 5581 5201 538A 8097 8098 8597" /* ...9UÅR.SäÄóÄòÖó */ - $"8198 019D 60AC 0003 0468 9791 8492 0393" /* Åò.ù`¨...hóëÑí.ì */ - $"8E60 5098 5201 5021 8600 0121 5681 5202" /* é`PòR.P!Ü..!VÅR. */ - $"5074 968F 9201 8E18 AB00 0317 8B8F 8F84" /* Ptñèí.é.´...ãèèÑ */ - $"9002 8F64 5099 5203 5351 310F 8400 0133" /* ê.èdPôR.SQ1.Ñ..3 */ - $"5581 5202 5159 8786 9080 8E80 9004 8E8E" /* UÅR.QYáÜêÄéÄê.éé */ - $"8F96 42AB 0003 3890 8989 838A 038D 7B51" /* èñB´..8êââÉä.ç{Q */ - $"519B 5209 544A 331C 0F0B 0C14 3051 8352" /* QõR∆TJ3.....0QÉR */ - $"0350 6288 8D82 8B82 8A80 8B80 8A02 8F69" /* .PbàçÇãÇäÄãÄä.èi */ - $"04AA 0001 5D8C 8284 8086 0288 6350 9852" /* .™..]åÇÑÄÜ.àcPòR */ - $"0153 5381 5206 5452 4C49 494F 5385 5207" /* .SSÅR.TRLIIOSÖR. */ - $"515E 7A87 8887 8686 8385 8286 0287 8114" /* Q^záàáÜÜÉÖÇÜ.áÅ. */ - $"A900 020E 7982 8281 8083 017F 5699 5203" /* ©...yÇÇÅÄÉ..VôR. */ - $"494A 5054 8056 0255 5453 8952 0651 5464" /* IJPTÄV.UTSâR.QTd */ - $"7581 8383 8382 8383 0189 2EA9 0002 1E82" /* uÅÉÉÉÇÉÉ.â.©...Ç */ - $"7F82 7E04 8080 816F 5098 520C 533D 2621" /* .Ç~.ÄÄÅoPòR.S=&! */ - $"2123 2A33 3E46 4E51 5580 5602 5554 5383" /* !#*3>FNQUÄV.UTSÉ */ - $"5208 5153 5A66 737D 8080 7F83 8003 7F7F" /* R.QSZfs}ÄÄ.ÉÄ... */ - $"834A A900 0432 827A 7B7B 8079 047A 7A7C" /* ÉJ©..2Çz{{Äy.zz| */ - $"6050 9A52 1551 4B41 3628 1D13 100E 1319" /* `PöR.QKA6(...... */ - $"222C 363E 4550 5556 5654 5380 5208 5151" /* ",6>EPUVVTSÄR.QQ */ - $"5358 6471 797B 7B81 7A04 7B79 7F5E 03A8" /* SXdqy{{Åz.{y.^.® */ - $"0001 437E 8077 8276 0274 5851 9B52 2251" /* ..C~ÄwÇv.tXQõR"Q */ - $"5253 5352 4D44 392A 1B10 0903 0304 101B" /* RSSRMD9*..∆..... */ - $"2836 434E 5356 5655 5352 5151 545D 6874" /* (6CNSVVUSRQQT]ht */ - $"7877 8176 0277 6B0B A800 014F 7780 7381" /* xwÅv.wk.®..OwÄsÅ */ - $"7201 736B A452 1C53 5352 4D47 3A2C 1E10" /* r.sk§R.SSRMG:,.. */ - $"0602 0304 0E17 2332 3F4A 5256 5553 5152" /* ......#2?JRVUSQR */ - $"5662 6F74 8073 0274 6F0F A800 0156 7281" /* VbotÄs.to.®..VrÅ */ - $"7080 6F02 7062 51A8 521D 5353 524E 4536" /* pÄo.pbQ®R.SSRNE6 */ - $"2616 0C05 0202 030B 172B 414F 5456 5553" /* &........+AOTVUS */ - $"5362 6F70 706F 7017 A700 0206 596E 816B" /* Sboppop.ß...YnÅk */ - $"806A 026C 5B51 AD52 1853 5350 4A43 3A2B" /* Äj.l[Q≠R.SSPJC:+ */ - $"1A0F 0802 040E 1922 324B 5652 5969 6C6B" /* ......."2KVRYilk */ - $"6D1B A700 0306 586A 6880 6780 6601 6754" /* m.ß...XjhÄgÄf.gT */ - $"B252 8053 1151 4C46 3A2D 1E11 0603 0D2E" /* ≤RÄS.QLF:-...... */ - $"5153 5564 686B 1CA7 0003 0655 6765 8364" /* QSUdhk.ß...UgeÉd */ - $"0060 B952 8053 0B4F 452F 1402 1849 5558" /* .`πRÄS.OE/...IUX */ - $"6468 1BA7 0002 0450 6381 6103 6060 615C" /* dh.ß...PcÅa.``a\ */ - $"BE52 0954 5039 100E 3D53 5D63 18A8 0001" /* æR∆TP9..=S]c.®.. */ - $"4860 825E 025D 5D56 AF52 0255 5756 8058" /* H`Ç^.]]VØR.UWVÄX */ - $"0357 5555 5384 5207 534B 1F23 5456 5E12" /* .WUUSÑR.SK.#TV^. */ - $"A800 033E 5E59 5980 5801 5958 AC52 0353" /* ®..>^YYÄX.YX¨R.S */ - $"5558 5888 5900 5880 5609 5452 5557 5A59" /* UXXàY.XÄV∆TRUWZY */ - $"5956 560E A800 0330 5955 5580 5401 5554" /* YVV.®..0YUUÄT.UT */ - $"AB52 0254 5555 8054 0155 5580 5680 5585" /* ´R.TUUÄT.UUÄVÄUÖ */ - $"5680 5504 5656 584D 07A8 0001 2256 8052" /* VÄU.VVXM.®.."VÄR */ - $"8051 AD52 8251 8352 8251 8052 8251 0352" /* ÄQ≠RÇQÉRÇQÄRÇQ.R */ - $"5254 3FA9 0000 1581 5080 4F00 51A6 5202" /* RT?©...ÅPÄO.Q¶R. */ - $"5150 4F80 5083 4F82 5083 4F01 5050 844F" /* QPOÄPÉOÇPÉO.PPÑO */ - $"0152 2EA9 0002 0A45 4B82 4A00 50A2 5207" /* .R.©..¬EKÇJ.P¢R. */ - $"5351 4F4E 4A4B 4A4A 804B 8D4A 824B 814A" /* SQONJKJJÄKçJÇKÅJ */ - $"014E 1BAA 0001 324A 8147 0148 51A0 5204" /* .N.™..2JÅG.HQ†R. */ - $"5351 4E4A 4780 4682 4885 4783 4801 4747" /* SQNJGÄFÇHÖGÉH.GG */ - $"8348 8047 0144 0CAA 0001 1C48 8045 0244" /* ÉHÄG.D.™...HÄE.D */ - $"4551 9E52 0653 504B 4543 4344 8043 8245" /* EQûR.SPKECCDÄCÇE */ - $"8344 8245 8644 8145 0147 33AB 0001 0C3F" /* ÉDÇEÜDÅE.G3´...? */ - $"8041 0140 449D 5204 5352 4942 4082 4185" /* ÄA.@DùR.SRIB@ÇAÖ */ - $"4080 4101 4040 8041 8040 8041 8240 8141" /* @ÄA.@@ÄAÄ@ÄAÇ@ÅA */ - $"0144 20AC 0001 2C40 803E 0042 9C52 0553" /* .D ¨..,@Ä>.BúR.S */ - $"4D41 3E3F 3F82 4080 3E80 3F82 4080 3F80" /* MA>??Ç@Ä>Ä?Ç@Ä?Ä */ - $"3E8B 3F01 3D0C AC00 0613 3D3B 3A39 4153" /* >ã?.=.¨...=;:9AS */ - $"9A52 0353 493A 3980 3A80 3B82 3A80 3982" /* öR.SI:9Ä:Ä;Ç:Ä9Ç */ - $"3B83 3A80 3B87 3A01 3E26 AD00 0604 2E38" /* ;É:Ä;á:.>&≠....8 */ - $"3736 4153 9952 0153 4680 3680 3780 3883" /* 76ASôR.SFÄ6Ä7Ä8É */ - $"3701 3636 8837 8336 8037 8136 0138 0FAE" /* 7.66à7É6Ä7Å6.8.Æ */ - $"0005 1536 3433 3F53 9852 0353 4933 3280" /* ...643?SòR.SI32Ä */ - $"3380 3401 3535 8334 8033 0134 3483 358B" /* 3Ä4.55É4Ä3.44É5ã */ - $"3401 3625 AF00 0503 2732 303B 5398 5202" /* 4.6%Ø...'20;SòR. */ - $"5135 2F81 3080 3180 329B 3101 300D B000" /* Q5/Å0Ä1Ä2õ1.0.∞. */ - $"040E 2F2C 3853 9752 0254 412C 882D 802E" /* ../,8SóR.TA,à-Ä. */ - $"882D 822E 872D 0130 1DB2 0003 1B2C 3251" /* à-Ç.á-.0.≤...,2Q */ - $"9752 0251 3129 812A 842B 802C 822B 802A" /* óR.Q1)Å*Ñ+Ä,Ç+Ä* */ - $"802B 802C 852B 802C 022B 2809 B200 0406" /* Ä+Ä,Ö+Ä,.+(∆≤... */ - $"242D 4D53 9552 0153 4983 2784 2880 2997" /* $-MSïR.SIÉ'Ñ(Ä)ó */ - $"2800 10B4 0003 0D26 4853 9552 0354 3D22" /* (..¥...&HSïR.T=" */ - $"2584 248D 2582 2483 2581 2401 2718 B600" /* %Ñ$ç%Ç$É%Å$.'.∂. */ - $"0212 4454 9552 0254 3220 8521 8422 8023" /* ..DTïR.T2 Ö!Ñ"Ä# */ - $"8B22 8023 8022 0223 1C04 B700 0138 5595" /* ã"Ä#Ä".#..∑..8Uï */ - $"5202 532A 1D85 1E84 1F80 2086 1F80 1E82" /* R.S*.Ö.Ñ.Ä Ü.Ä.Ç */ - $"1F80 2001 1C08 B800 0132 5695 5202 5125" /* .Ä ...∏..2VïR.Q% */ - $"1B84 1C88 1D80 1E86 1D80 1C81 1D01 1C09" /* .Ñ.à.Ä.Ü.Ä.Å...∆ */ - $"B900 012F 5695 5201 5021 8919 941A 0319" /* π../VïR.P!â.î... */ - $"1A19 0ABA 0001 2D56 9552 014F 1E89 1687" /* ..¬∫..-VïR.O.â.á */ - $"1780 1887 1702 1816 09BB 0001 2A56 9552" /* .Ä.á....∆ª..*VïR */ - $"0250 1C13 8B14 8715 8016 8415 0113 07BC" /* .P..ã.á.Ä.Ñ....º */ - $"0001 2756 9652 011E 109D 1202 130E 04BD" /* ..'VñR...ù.....Ω */ - $"0001 1C56 9552 0254 210E 8B0F 8F10 000B" /* ...VïR.T!.ã.è... */ - $"BF00 010E 5095 5202 5524 0B95 0D83 0E01" /* ø...PïR.U$.ï.É.. */ - $"0D07 C000 0203 3E55 9452 0256 2B09 9A0B" /* ..¿...>UîR.V+∆ö. */ - $"0109 03C2 0002 1654 5393 5202 5535 0698" /* .∆.¬...TSìR.U5.ò */ - $"0901 0704 C500 0227 5553 9252 0255 3704" /* ∆...≈..'USíR.U7. */ - $"9706 0003 C800 0222 5253 9152 0254 4104" /* ó...».."RSëR.TA. */ - $"9503 CC00 021A 4D54 9052 0253 4D09 E500" /* ï.Ã...MTêR.SM∆Â. */ - $"0216 4D54 9052 0154 15E6 0002 134B 548F" /* ..MTêR.T.Ê...KTè */ - $"5201 5625 E700 0214 4E54 8E52 0155 36E8" /* R.V%Á...NTéR.U6Ë */ - $"0002 154C 538D 5202 5348 08E8 0002 184D" /* ...LSçR.SH.Ë...M */ - $"538D 5201 5415 E900 021C 5053 8C52 0156" /* SçR.T.È...PSåR.V */ - $"2AEA 0001 2353 8C52 0154 3FEB 0001 2D54" /* *Í..#SåR.T?Î..-T */ - $"8C52 0150 0FEA 0002 0434 558B 5201 5623" /* åR.P.Í...4UãR.V# */ - $"EB00 0208 3C54 8A52 0155 3CEC 0002 0D46" /* Î...<TäR.U<Ï...F */ - $"5389 5202 5350 0FEC 0002 134C 5389 5201" /* SâR.SP.Ï...LSâR. */ - $"5624 ED00 011C 5189 5201 553D EE00 0127" /* V$Ì...QâR.U=Ó..' */ - $"5488 5202 5350 0FED 0002 0435 5588 5201" /* TàR.SP.Ì...5UàR. */ - $"5624 EE00 0209 4454 8752 0155 3EEF 0002" /* V$Ó..∆DTáR.U>Ô.. */ - $"134D 5387 5201 5010 EF00 011F 5387 5201" /* .MSáR.P.Ô...SáR. */ - $"5625 F000 012F 5586 5201 553F F000 0207" /* V%../UÜR.U?... */ - $"3E54 8652 0151 10F0 0002 0F4D 5385 5201" /* >TÜR.Q....MSÖR. */ - $"5625 F100 011E 5485 5201 553E F100 0203" /* V%Ò...TÖR.U>Ò... */ - $"3455 8452 0253 500E F100 020B 4654 8452" /* 4UÑR.SP.Ò...FTÑR */ - $"0156 21F2 0001 1951 8452 0155 38F3 0001" /* .V!Ú...QÑR.U8Û.. */ - $"2C55 8352 0253 4908 F200 0208 4054 8352" /* ,UÉR.SI.Ú...@TÉR */ - $"0153 15F3 0001 134F 8352 0156 27F4 0001" /* .S.Û...OÉR.V'Ù.. */ - $"2854 8252 0155 3DF4 0002 0741 5481 5202" /* (TÇR.U=Ù...ATÅR. */ - $"5349 08F4 0001 1550 8252 0151 11F5 0001" /* SI.Ù...PÇR.Q.ı.. */ - $"2C55 8152 0156 1BF5 0002 0944 5480 5201" /* ,UÅR.V.ı..∆DTÄR. */ - $"562A F600 0019 8152 0156 35F7 0005 3456" /* V*ˆ...ÅR.V5˜..4V */ - $"5252 553E F700 060E 4B53 5254 4405 F700" /* RRU>˜...KSRTD.˜. */ - $"0526 5552 5349 08F7 0005 0842 5453 4E0D" /* .&URSI.˜...BTSN. */ - $"F800 0019 8052 0011 F800 0403 3755 5418" /* ¯...ÄR..¯...7UT. */ - $"F900 0310 4A57 20FA 0002 1552 2AFB 0001" /* ˘...JW ˙...R*˚.. */ - $"3E37 FB00 0125 43FB 0002 0E44 07FA 0002" /* >7˚..%C˚...D.˙.. */ - $"0333 0EFB 0001 0F0D FF00 FF00 FF00 FF00" /* .3.˚....ˇ.ˇ.ˇ.ˇ. */ - $"FF00 FF00 FF00 FF00 A800 FF00 FF00 B000" /* ˇ.ˇ.ˇ.ˇ.®.ˇ.ˇ.∞. */ - $"0F08 1222 3645 4D56 6063 5A51 473C 2816" /* ..."6EMV`cZQG<(. */ - $"0CE8 0019 0416 3764 94B5 CCDD E7E9 EBEC" /* .Ë....7dîµÃ›ÁÈÎÏ */ - $"EDEE ECEB EAE8 E2D4 BEA3 7746 200B E000" /* ÌÓÏÎÍË‚‘æ£wF .‡. */ - $"0608 2763 A5D0 E6EE 80F5 8AF6 08F5 F4F0" /* ..'c•–ÊÓÄıäˆ.ıÙ */ - $"EAD9 B97C 3B0F DB00 061C 64AF DAED F0F2" /* ÍŸπ|;.€...dØ⁄ÌÚ */ - $"81F1 8BF0 83F1 05EE E3C1 8432 07D5 0007" /* ÅÒãÉÒ.Ó„¡Ñ2.’.. */ - $"0635 87CD E8ED EDEE 97ED 07EE EEED EBDC" /* .5áÕËÌÌÓóÌ.ÓÓÌ΋ */ - $"A551 11D1 0007 0333 96D9 E6E9 EAE9 9CE8" /* •Q.—...3ñŸÊÈÍÈúË */ - $"06E9 E9E8 E1B8 560E CE00 0628 8CD3 E3E6" /* .ÈÈË·∏V.Œ..(å”„Ê */ - $"E5E4 93E3 80E4 87E3 06E4 E5E4 DEAE 4A07" /* ‰ì„ĉá„.‰Â‰fiÆJ. */ - $"CA00 050D 63C8 DFE1 E196 E084 DF86 E004" /* ...c»fl··ñ‡Ñfl܇. */ - $"E1E0 D791 23C8 0004 2FA0 D8DC DC81 DA06" /* ·‡◊ë#»../†ÿ‹‹Å⁄. */ - $"DBDC D9E0 DEE0 E480 DF87 DA00 D990 DA05" /* €‹Ÿ‡fi‡‰Äflá⁄.Ÿê⁄. */ - $"DBDC DBC0 5708 C400 0404 54C3 D7D7 80D6" /* €‹€¿W.ƒ...T√◊◊Ä÷ */ - $"14D7 DFDF DDA5 45A8 C1A4 7E43 4DB0 DED6" /* .◊flfl›•E®¡§~CM∞fi÷ */ - $"D9DD D9D8 D6D5 81D6 82D8 83D6 80D8 80D6" /* Ÿ›Ÿÿ÷’Å÷ÇÿÉ÷ÄÿÄ÷ */ - $"80D7 04D6 D7D2 8615 C200 1F0E 75CB D4D3" /* Ä◊.÷◊“Ü.¬...uÀ‘” */ - $"D2D2 D6DA D489 563E 1305 131C 130D 0506" /* ““÷⁄‘âV>........ */ - $"1E9F E0BA 94B4 C9D7 DBD7 D38B D286 D104" /* .ü‡∫◊€◊”ã“Ü—. */ - $"D2D3 D2A3 29C0 0003 1591 CDCF 80CE 06D2" /* “”“£)¿...ë՜Č.“ */ - $"9F8E 800F 0805 8500 0D01 1B8B 4311 152B" /* üéÄ...Ö....ãC..+ */ - $"4872 A0C4 D7D7 D185 CE84 CD84 CE03 CFD0" /* Hr†ƒ◊◊—ÖŒÑÕÑŒ.œ– */ - $"B739 BE00 0318 96CB CA81 C803 D176 100E" /* ∑9æ...ñÀ Å».—v.. */ - $"8900 1001 0F06 0000 0206 0C12 2951 86B8" /* â...........)QÜ∏ */ - $"D0D1 CCC9 88C8 83CA 05C8 C9CA CCBA 3FBC" /* –—Ã…à»É .»… Ã∫?º */ - $"0004 1B98 C7C5 C381 C402 C7B6 1D93 0009" /* ...ò«≈√Ń.«∂.ì.∆ */ - $"0207 0F1F 4982 ADC8 CDC7 83C5 84C6 83C5" /* ....IÇ≠»Õ«É≈Ñ∆É≈ */ - $"02C7 B842 BA00 0312 91C4 C184 C001 CB87" /* .«∏B∫...냡ѿ.Àá */ - $"9600 0801 060E 193A 75B5 C7C1 86C0 86BF" /* ñ......:uµ«¡Ü¿Üø */ - $"02C1 B536 B800 030A 7DC1 BC83 BB04 BAC1" /* .¡µ6∏..¬}¡ºÉª.∫¡ */ - $"8160 1F99 0007 040D 266E B9C2 BCBD 82BC" /* Å`.ô....&nπ¬ºΩǺ */ - $"87BB 03BC C0A8 25B6 0003 0464 BBB9 81B8" /* áª.º¿®%∂...dªπÅ∏ */ - $"80B7 04BE 8B0E 0B04 9B00 0402 0C33 96BF" /* Ä∑.æã...õ....3ñø */ - $"8FB8 02BC 9715 B500 0239 B2B5 82B4 04B2" /* è∏.ºó.µ..9≤µÇ¥.≤ */ - $"B2B4 AD25 A000 0404 1677 BAB4 87B2 01B3" /* ≤¥≠%†....w∫¥á≤.≥ */ - $"B382 B402 B873 06B3 0002 1899 B385 B002" /* ≥Ç¥.∏s.≥...ô≥Ö∞. */ - $"B764 02A2 0002 0D68 B78E B002 B1B1 43B2" /* ∑d.¢...h∑é∞.±±C≤ */ - $"0002 0671 AE85 AC02 ADA8 1CA4 0002 0B72" /* ...qÆÖ¨.≠®.§...r */ - $"B381 AB80 AA01 ACAB 84AC 03AA AD9C 1CB1" /* ≥Å´Ä™.¨´Ñ¨.™≠ú.± */ - $"0002 31A6 A780 A682 A702 AE6D 02A5 0006" /* ..1¶ßĶÇß.Æm.•.. */ - $"1692 ACA7 A8A6 A685 A800 A781 A602 AD69" /* .í¨ß®¶¶Ö®.ßŶ.≠i */ - $"04AF 0002 0A7E A681 A282 A301 A629 A600" /* .Ø..¬~¶Å¢Ç£.¶)¶. */ - $"0301 2DA1 A381 A280 A386 A202 A4A1 28AF" /* ..-°£Å¢Ä£Ü¢.§°(Ø */ - $"0001 3EA2 869E 02A3 7E04 A700 0403 55A6" /* ..>¢Üû.£~.ß...U¶ */ - $"9E9E 82A0 869E 03A0 A374 07AD 0002 097C" /* ûûdžÜû.†£t.≠..∆| */ - $"9D85 9902 9AA1 35A9 0003 1594 9B98 8899" /* ùÖô.ö°5©...îõòàô */ - $"819A 029B 9C28 AD00 012C 9986 9802 9D71" /* Åö.õú(≠..,ôÜò.ùq */ - $"05A9 0004 0178 9997 9780 9885 9781 9801" /* .©...xôóóÄòÖóÅò. */ - $"9D60 AC00 0304 6897 9184 9202 9586 18AB" /* ù`¨...hóëÑí.ïÜ.´ */ - $"0001 4599 8F92 018E 18AB 0003 178B 8F8F" /* ..Eôèí.é.´...ãèè */ - $"8490 028E 2501 AB00 020C 7E94 8590 808E" /* Ñê.é%.´...~îÖêÄé */ - $"8090 048E 8E8F 9642 AB00 0338 9089 8983" /* Äê.ééèñB´..8êââÉ */ - $"8A02 8F5D 01AD 0002 2082 9082 8B82 8A80" /* ä.è].≠.. ÇêÇãÇäÄ */ - $"8B80 8A02 8F69 04AA 0001 5D8C 8284 8086" /* ãÄä.èi.™..]åÇÑÄÜ */ - $"018C 24AE 0007 0119 618A 8D87 8686 8385" /* .å$Æ....aäçáÜÜÉÖ */ - $"8286 0287 8114 A900 020E 7982 8281 0483" /* ÇÜ.áÅ.©...yÇÇÅ.É */ - $"8385 7202 AF00 0701 0525 597C 8986 8382" /* ÉÖr.Ø....%Y|âÜÉÇ */ - $"8283 8301 892E A900 021E 827F 827E 0380" /* ÇÉÉ.â.©...Ç.Ç~.Ä */ - $"8085 4AB2 0007 0105 1232 5876 8382 8480" /* ÄÖJ≤.....2XvÉÇÑÄ */ - $"037F 7F83 4AA9 0004 3282 7A7B 7B80 7903" /* ...ÉJ©..2Çz{{Äy. */ - $"7A79 7F24 B500 0702 050F 2E5A 797F 7D81" /* zy.$µ......Zy.}Å */ - $"7A04 7B79 7F5E 03A8 0001 437E 8077 8176" /* z.{y.^.®..C~ÄwÅv */ - $"0277 700B B800 0602 0519 446B 7D79 8176" /* .wp.∏.....Dk}yÅv */ - $"0277 6B0B A800 014F 7780 7381 7201 7656" /* .wk.®..OwÄsÅr.vV */ - $"BB00 0B01 0309 2F60 7975 7373 746F 0FA8" /* ª....∆/`yussto.® */ - $"0001 5672 8170 806F 0174 36BE 0008 0205" /* ..VrÅpÄo.t6æ.... */ - $"336C 7370 6F70 17A7 0002 0659 6E81 6B80" /* 3lspop.ß...YnÅkÄ */ - $"6A01 6F1C C000 0602 155B 6F6B 6D1B A700" /* j.o.¿....[okm.ß. */ - $"0306 586A 6880 6704 6666 6762 07C2 0004" /* ..XjhÄg.ffgb.¬.. */ - $"0C57 6A6B 1CA7 0003 0655 6765 8264 0165" /* .Wjk.ß...UgeÇd.e */ - $"50C4 0003 1562 681B A700 0204 5063 8161" /* Pƒ...bh.ß...PcÅa */ - $"0360 6064 33C4 0003 0139 6718 A800 0148" /* .``d3ƒ...9g.®..H */ - $"6082 5E02 5D60 18AE 000A 0414 1E25 2D2C" /* `Ç^.]`.Æ.¬...%-, */ - $"2A25 1B10 0786 0005 161E 1310 5E12 A800" /* *%...Ü......^.®. */ - $"033E 5E59 5980 5802 5A51 01AB 0006 0B27" /* .>^YYÄX.ZQ.´...' */ - $"404E 585A 5C80 5A12 5959 5751 4940 372E" /* @NXZ\ÄZ.YYWQI@7. */ - $"2820 202A 4158 5B54 2C50 0EA8 0003 3059" /* ( *AX[T,P.®..0Y */ - $"5555 8054 0158 3CAA 0008 0B31 4F57 5655" /* UUÄT.X<™...1OWVU */ - $"5455 5580 5680 5502 5656 5780 5809 5757" /* TUUÄVÄU.VVWÄX∆WW */ - $"5656 5556 5757 4D07 A800 0122 5680 5203" /* VVUVWWM.®.."VÄR. */ - $"5151 5526 A800 0408 2B4B 5452 8151 8352" /* QQU&®...+KTRÅQÉR */ - $"8251 8052 8251 0352 5254 3FA9 0000 1581" /* ÇQÄRÇQ.RRT?©...Å */ - $"5003 4F4F 5118 A600 020B 2A45 8050 834F" /* P.OOQ.¶...*EÄPÉO */ - $"8250 834F 0150 5084 4F01 522E A900 020A" /* ÇPÉO.PPÑO.R.©..¬ */ - $"454B 814A 014C 0DA4 0003 1431 454C 824B" /* EKÅJ.L.§...1ELÇK */ - $"8D4A 824B 814A 014E 1BAA 0001 324A 8047" /* çJÇKÅJ.N.™..2JÄG */ - $"0148 43A2 0006 051E 3947 4847 4682 4885" /* .HC¢....9GHGFÇHÖ */ - $"4783 4801 4747 8348 8047 0144 0CAA 0001" /* GÉH.GGÉHÄG.D.™.. */ - $"1C48 8145 003C A000 0506 233C 4644 4480" /* .HÅE.<†...#<FDDÄ */ - $"4382 4583 4482 4586 4481 4501 4733 AB00" /* CÇEÉDÇEÜDÅE.G3´. */ - $"010C 3F80 4101 4232 9F00 021E 3A43 8241" /* ..?ÄA.B2ü...:CÇA */ - $"8540 8041 0140 4080 4180 4080 4182 4081" /* Ö@ÄA.@@ÄAÄ@ÄAÇ@Å */ - $"4101 4420 AC00 052C 403E 3E40 2C9D 0004" /* A.D ¨..,@>>@,ù.. */ - $"0E2F 3F3E 3F82 4080 3E80 3F82 4080 3F80" /* ./?>?Ç@Ä>Ä?Ç@Ä?Ä */ - $"3E8B 3F01 3D0C AC00 0513 3D3B 3A3D 249C" /* >ã?.=.¨...=;:=$ú */ - $"0005 1436 3B3B 3A3A 803B 823A 8039 823B" /* ...6;;::Ä;Ç:Ä9Ç; */ - $"833A 803B 873A 013E 26AD 0005 042E 3837" /* É:Ä;á:.>&≠....87 */ - $"3920 9B00 0316 3937 3680 3780 3883 3701" /* 9 õ...976Ä7Ä8É7. */ - $"3636 8837 8336 8037 8136 0138 0FAE 0004" /* 66à7É6Ä7Å6.8.Æ.. */ - $"1536 3437 1D9A 0001 0A32 8133 8034 0135" /* .647.ö..¬2Å3Ä4.5 */ - $"3583 3480 3301 3434 8335 8B34 0136 25AF" /* 5É4Ä3.44É5ã4.6%Ø */ - $"0004 0327 3232 1D9A 0001 2732 8130 8031" /* ...'22.ö..'2Å0Ä1 */ - $"8032 9B31 0130 0DB0 0003 0E2F 2F20 9900" /* Ä2õ1.0.∞...// ô. */ - $"0111 2F88 2D80 2E88 2D82 2E87 2D01 301D" /* ../à-Ä.à-Ç.á-.0. */ - $"B200 021B 2D22 9900 0121 2B81 2A84 2B80" /* ≤...-"ô..!+Å*Ñ+Ä */ - $"2C82 2B80 2A80 2B80 2C85 2B80 2C02 2B28" /* ,Ç+Ä*Ä+Ä,Ö+Ä,.+( */ - $"09B2 0002 0624 2498 0000 0583 2784 2880" /* ∆≤...$$ò...É'Ñ(Ä */ - $"2997 2800 10B4 0002 0D26 0497 0001 0E26" /* )ó(..¥...&.ó...& */ - $"8524 8D25 8224 8325 8124 0127 18B6 0001" /* Ö$ç%Ç$É%Å$.'.∂.. */ - $"1408 9700 0114 2385 2184 2280 238B 2280" /* ..ó...#Ö!Ñ"Ä#ã"Ä */ - $"2380 2202 231C 04D2 0001 161F 851E 841F" /* #Ä".#..“....Ö.Ñ. */ - $"8020 861F 801E 821F 8020 011C 08D3 0001" /* Ä Ü.Ä.Ç.Ä ...”.. */ - $"171D 841C 881D 801E 861D 801C 811D 011C" /* ..Ñ.à.Ä.Ü.Ä.Å... */ - $"09D4 0001 151A 8819 941A 0319 1A19 0AD5" /* ∆‘....à.î.....¬’ */ - $"0001 1317 8816 8717 8018 8717 0218 1609" /* ....à.á.Ä.á....∆ */ - $"D600 0111 158B 1487 1580 1684 1501 1307" /* ÷....ã.á.Ä.Ñ.... */ - $"D700 000E 9E12 0213 0E04 D800 010A 108B" /* ◊...û.....ÿ..¬.ã */ - $"0F8F 1000 0BDA 0001 080E 950D 830E 010D" /* .è...⁄....ï.É... */ - $"07DB 0000 049B 0B01 0903 DD00 9909 0107" /* .€...õ..∆.›.ô∆.. */ - $"04DF 0098 0600 03E1 0096 03FF 00FF 00FF" /* .fl.ò...·.ñ.ˇ.ˇ.ˇ */ - $"00FF 00FF 00FF 00FF 00FF 00FF 00FF 00FF" /* .ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ */ - $"00FF 00FF 00FF 00FF 00FF 00FF 00FF 00FF" /* .ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ */ - $"00FF 00FF 00FF 00FF 00FF 00FF 00FF 00FF" /* .ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ */ - $"00FF 00FF 00FF 00FF 00FF 00FF 00FF 00FF" /* .ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ */ - $"00FF 00FF 00FF 00FF 00FF 00FF 00FF 00FF" /* .ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ */ - $"00FF 00FF 00FF 00FF 00FF 00FF 00FF 00FF" /* .ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ.ˇ */ - $"00FF 00FF 00FF 00FF 00BD 0074 386D 6B00" /* .ˇ.ˇ.ˇ.ˇ.Ω.t8mk. */ - $"0040 0800 0000 0000 0000 0000 0000 0000" /* .@.............. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0006 111F 303C 5376" /* ............0<Sv */ - $"8893 9E9F 9388 7653 3C2F 1F11 0600 0000" /* àìûüìàvS</...... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0923 4564 819C AEBE C9CF D8E2" /* ....∆#EdÅúÆæ…œÿ‚ */ - $"E7EA EDEE E9E6 E1D7 CEC8 BBAC 9A81 6344" /* ÁÍÌÓÈÊ·◊Œ»ª¨öÅcD */ - $"2409 0000 0000 0000 0000 0000 0000 0000" /* $∆.............. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0627 5C92 B9D7 E7ED EFF1 F2F2 F4F6 F7F6" /* .'\íπ◊ÁÌÔÒÚÚÙˆ˜ˆ */ - $"F7F7 F6F6 F6F5 F4F2 F0F0 EFED ECEB E9E2" /* ˜˜ˆˆˆıÙÚÔÌÏÎÈ‚ */ - $"D2B6 8F5B 2807 0000 0000 0000 0000 0000" /* “∂è[(........... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0006 3275" /* ..............2u */ - $"B0D7 EBF0 F2F2 F5F7 F9FB FCFD FEFE FEFE" /* ∞◊ÎÚÚı˜˘˚¸˝˛˛˛˛ */ - $"FEFF FFFE FEFE FEFE FDFB F9F6 F4F1 EFED" /* ˛ˇˇ˛˛˛˛˛˝˚˘ˆÙÒÔÌ */ - $"ECEB EAE4 D0AC 7332 0700 0000 0000 0000" /* ÏÎ͉–¨s2........ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0022 6AB0 DDEE" /* ..........."j∞›Ó */ - $"F2F3 F5F7 F9FC FDFE FFFF FFFF FFFF FFFF" /* ÚÛı˜˘¸˝˛ˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FEFE FFFF FFFF FEFD FAF6" /* ˇˇˇˇˇˇ˛˛ˇˇˇˇ˛˝˙ˆ */ - $"F1EF EDEC ECEA E7D6 AB69 2200 0000 0000" /* ÒÔÌÏÏÍÁ÷´i"..... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 043E 94D2 EEF3 F4F5" /* .........>î“ÓÛÙı */ - $"F6F8 FBFD FFFF FEFE FEFE FEFE FEFE FEFE" /* ˆ¯˚˝ˇˇ˛˛˛˛˛˛˛˛˛˛ */ - $"FEFE FEFE FEFE FEFE FEFE FEFE FEFE FEFF" /* ˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛ˇ */ - $"FEFB F6F1 ECEB ECEC EAE4 CA90 3D04 0000" /* ˛˚ˆÒÏÎÏÏ͉ ê=... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 074F A8E1 F3F5 F5F5 F7FA" /* .......O®·Ûııı˜˙ */ - $"FDFE FEFE FEFE FEFE FEFE FEFE FEFE FEFE" /* ˝˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛ */ - $"FEFE FEFE FEFE FEFE FEFE FEFE FEFE FEFE" /* ˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛ */ - $"FEFE FFFD F9F3 EDEA EBEB EBE8 D8A2 4E08" /* ˛˛ˇ˝˘ÛÌÍÎÎÎËÿ¢N. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 054D B0E8 F4F5 F5F4 F7FB FDFE" /* .....M∞ËÙııÙ˜˚˝˛ */ - $"FEFE FEFE FEFE FEFE FEFE FEFE FEFE FEFE" /* ˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛ */ - $"FEFE FEFE FEFE FEFE FEFE FEFE FEFE FEFE" /* ˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛ */ - $"FEFE FEFE FEFE FAF3 ECEA EAEB EAE9 DEA9" /* ˛˛˛˛˛˛˙ÛÏÍÍÎÍÈfi© */ - $"4C06 0000 0000 0000 0000 0000 0000 0000" /* L............... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 003B A8E7 F3F6 F6F4 F7FB FDFE FEFE" /* ...;®ÁÛˆˆÙ˜˚˝˛˛˛ */ - $"FEFE FEFE FEFE FEFE FEFE FEFE FEFE FEFE" /* ˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛ */ - $"FEFE FEFE FEFE FEFE FEFE FEFE FEFE FDFD" /* ˛˛˛˛˛˛˛˛˛˛˛˛˛˛˝˝ */ - $"FDFD FDFD FDFD FDFD F9F2 EBE9 EAEA EAEA" /* ˝˝˝˝˝˝˝˝˘ÚÎÈÍÍÍÍ */ - $"DCA1 3B00 0000 0000 0000 0000 0000 0000" /* ‹°;............. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0020 8DE0 F4F6 F6F5 F6F9 FDFE FEFE FEFE" /* . ç‡Ùˆˆıˆ˘˝˛˛˛˛˛ */ - $"FEFE FEFE FEFE FEFE FEFE FEFE FEFE FEFE" /* ˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛ */ - $"FEFE FEFE FEFE FEFD FDFD FDFD FDFD FDFD" /* ˛˛˛˛˛˛˛˝˝˝˝˝˝˝˝˝ */ - $"FDFD FDFD FDFD FDFD FDFD F7EE E9EA EAE9" /* ˝˝˝˝˝˝˝˝˝˝˜ÓÈÍÍÈ */ - $"EAE9 D589 2000 0000 0000 0000 0000 0000" /* ÍÈ’â ........... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0004" /* ................ */ - $"5CCB F4F6 F6F5 F5F7 FCFE FEFE FEFE FEFE" /* \ÀÙˆˆıı˜¸˛˛˛˛˛˛˛ */ - $"FEFE FEFE FEFE FEFE FEFE FEFE FEFE FEFE" /* ˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛˛ */ - $"FEFD FDFD FDFD FDFD FDFD FDFD FDFD FDFD" /* ˛˝˝˝˝˝˝˝˝˝˝˝˝˝˝˝ */ - $"FDFD FDFD FDFD FDFD FDFD FDFA F3EA EAE9" /* ˝˝˝˝˝˝˝˝˝˝˝˙ÛÍÍÈ */ - $"E9E9 E9E6 C35B 0500 0000 0000 0000 0000" /* ÈÈÈÊ√[.......... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 239F" /* ..............#ü */ - $"EBF5 F6F5 F5F5 F9FE FEFE FEFE FEFE FEFE" /* Îıˆııı˘˛˛˛˛˛˛˛˛˛ */ - $"FEFE FFFE FEFE FEFF FFFE FEFE FDFD FDFD" /* ˛˛ˇ˛˛˛˛ˇˇ˛˛˛˝˝˝˝ */ - $"FDFD FDFD FDFD FDFD FDFD FDFD FDFD FDFD" /* ˝˝˝˝˝˝˝˝˝˝˝˝˝˝˝˝ */ - $"FDFD FDFD FDFD FDFC FCFC FCFC FCF6 ECE9" /* ˝˝˝˝˝˝˝¸¸¸¸¸¸ˆÏÈ */ - $"E9E9 E9E9 E9DE 9923 0000 0000 0000 0000" /* ÈÈÈÈÈfiô#........ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0052 CBF5" /* .............RÀı */ - $"F6F6 F5F5 F6FA FEFE FEFE FEFE FEFE FEFF" /* ˆˆııˆ˙˛˛˛˛˛˛˛˛˛ˇ */ - $"FFFF FFFF FFFF FFFF FFFF FDFD FDFE FDFD" /* ˇˇˇˇˇˇˇˇˇˇ˝˝˝˛˝˝ */ - $"FDFD FDFD FDFD FDFD FDFD FDFD FDFD FDFD" /* ˝˝˝˝˝˝˝˝˝˝˝˝˝˝˝˝ */ - $"FDFD FDFD FCFC FCFC FCFC FCFC FCFD F8EF" /* ˝˝˝˝¸¸¸¸¸¸¸¸¸˝¯Ô */ - $"E9E9 E9E9 E8E9 E7C3 5100 0000 0000 0000" /* ÈÈÈÈËÈÁ√Q....... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 000B 81E6 F5F6" /* ............ÅÊıˆ */ - $"F5F5 F5F6 FBFE FEFE FEFE FEFE FEFE FFFF" /* ıııˆ˚˛˛˛˛˛˛˛˛˛ˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFE FEFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇ˛˛ˇˇˇ */ - $"FEFE FDFD FDFD FDFD FDFD FDFD FDFD FDFC" /* ˛˛˝˝˝˝˝˝˝˝˝˝˝˝˝¸ */ - $"FCFC FCFC FCFC FCFC FCFC FCFC FCFC FCFA" /* ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸˙ */ - $"F0E9 E9E9 E8E8 E9E9 DC7E 0C00 0000 0000" /* ÈÈÈËËÈÈ‹~...... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 20A7 F1F6 F6F5" /* .......... ßÒˆˆı */ - $"F5F5 F6FB FDFD FDFD FDFD FDFE FFFF FFFF" /* ııˆ˚˝˝˝˝˝˝˝˛ˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FEFE FDFD FDFD FDFD FCFC FCFC" /* ˇˇˇˇ˛˛˝˝˝˝˝˝¸¸¸¸ */ - $"FCFC FCFC FCFC FCFC FCFC FCFC FCFB FBFB" /* ¸¸¸¸¸¸¸¸¸¸¸¸¸˚˚˚ */ - $"FAF1 E9E9 E9E8 E8E8 E8E4 A120 0000 0000" /* ˙ÒÈÈÈËËËˉ° .... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0034 C4F5 F5F5 F5F5" /* .........4ƒııııı */ - $"F5F7 FBFD FDFD FDFD FDFD FDFD FFFF FFFF" /* ı˜˚˝˝˝˝˝˝˝˝˝ˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFE FEFD FCFC FCFC FCFC" /* ˇˇˇˇˇˇˇ˛˛˝¸¸¸¸¸¸ */ - $"FCFC FCFC FCFC FCFC FCFC FBFB FBFB FBFB" /* ¸¸¸¸¸¸¸¸¸¸˚˚˚˚˚˚ */ - $"FBFA F1E8 E9E9 E8E8 E8E9 E8BB 3300 0000" /* ˚˙ÒËÈÈËËËÈ˪3... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 49D4 F6F5 F4F5 F5F5" /* ........I‘ˆıÙııı */ - $"F6FB FDFD FDFD FDFD FDFD FDFD FDFF FFFF" /* ˆ˚˝˝˝˝˝˝˝˝˝˝˝ˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FEFD FCFC FCFC" /* ˇˇˇˇˇˇˇˇˇˇ˛˝¸¸¸¸ */ - $"FCFC FCFC FCFC FCFB FBFB FBFB FBFB FBFB" /* ¸¸¸¸¸¸¸˚˚˚˚˚˚˚˚˚ */ - $"FBFB FBEF E8E9 E9E8 E8E7 E8E9 CB47 0000" /* ˚˚˚ÔËÈÈËËÁËÈÀG.. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0055 E0F6 F5F4 F5F5 F5F5" /* .......U‡ˆıÙıııı */ - $"FAFD FDFD FDFD FDFD FDFD FDFE FEFE FFFF" /* ˙˝˝˝˝˝˝˝˝˝˝˛˛˛ˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFD FCFC" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝¸¸ */ - $"FCFC FCFB FBFB FBFB FBFB FBFB FBFB FBFB" /* ¸¸¸˚˚˚˚˚˚˚˚˚˚˚˚˚ */ - $"FBFB FAF9 EEE8 E9E8 E8E7 E7E8 E9D5 5400" /* ˚˚˙˘ÓËÈËËÁÁËÈ’T. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 5EE4 F7F5 F4F4 F5F5 F5F9" /* ......^‰˜ıÙÙııı˘ */ - $"FDFD FDFD FDFD FDFD FDFD FDFF FFFF FFFF" /* ˝˝˝˝˝˝˝˝˝˝˝ˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FEFD" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛˝ */ - $"FCFC FCFB FBFB FBFB FBFB FBFB FBFB FBFA" /* ¸¸¸˚˚˚˚˚˚˚˚˚˚˚˚˙ */ - $"FAFA FAFA F7EC E9E9 E8E8 E7E7 E8E8 D85C" /* ˙˙˙˙˜ÏÈÈËËÁÁËËÿ\ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 005E E6F5 F4F4 F4F4 F5F5 F7FD" /* .....^ÊıÙÙÙÙıı˜˝ */ - $"FDFD FDFD FDFD FDFD FDFD FFFF FFFF FFFF" /* ˝˝˝˝˝˝˝˝˝˝ˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FDFB FBFB FBFB FBFB FBFB FBFB FBFA FAFA" /* ˝˚˚˚˚˚˚˚˚˚˚˚˚˙˙˙ */ - $"FAFA FAFA FBF5 E9E9 E9E8 E8E7 E7E8 E8DC" /* ˙˙˙˙˚ıÈÈÈËËÁÁËË‹ */ - $"5B00 0000 0000 0000 0000 0000 0000 0000" /* [............... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 56E5 F6F3 F4F4 F4F5 F5F6 FCFD" /* ....VˆÛÙÙÙııˆ¸˝ */ - $"FDFD FDFD FDFD FDFD FDFE FFFF FFFF FFFF" /* ˝˝˝˝˝˝˝˝˝˛ˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFD FBFB FBFB FBFB FBFB FBFA FAFA FAFA" /* ˇ˝˚˚˚˚˚˚˚˚˚˙˙˙˙˙ */ - $"FAFA FAFA FAF9 F0E8 E9E8 E8E7 E7E7 E8E8" /* ˙˙˙˙˙˘ËÈËËÁÁÁËË */ - $"DA54 0000 0000 0000 0000 0000 0000 0000" /* ⁄T.............. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0048 E1F6 F3F4 F4F4 F4F5 F5F9 FCFD" /* ...H·ˆÛÙÙÙÙıı˘¸˝ */ - $"FDFD FDFD FDFD FDFD FDFF FFFF FFFF FFFF" /* ˝˝˝˝˝˝˝˝˝ˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FCFB FBFB FBFB FAFA FAFA FAFA FAFA" /* ˇˇ¸˚˚˚˚˚˙˙˙˙˙˙˙˙ */ - $"FAFA FAFA F9F9 F8ED E9E9 E8E8 E7E7 E7E8" /* ˙˙˙˙˘˘¯ÌÈÈËËÁÁÁË */ - $"E8D6 4600 0000 0000 0000 0000 0000 0000" /* Ë÷F............. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 33D6 F7F3 F3F4 F4F4 F4F5 F7FC FCFC" /* ..3÷˜ÛÛÙÙÙÙı˜¸¸¸ */ - $"FCFC FCFD FDFD FDFD FEFF FFFF FFFF FFFF" /* ¸¸¸˝˝˝˝˝˛ˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFB FBFB FAFA FAFA FAFA FAFA FAFA" /* ˇˇˇ˚˚˚˙˙˙˙˙˙˙˙˙˙ */ - $"FAF9 F9F9 F9F9 F9F4 E9E9 E8E8 E8E7 E7E7" /* ˙˘˘˘˘˘˘ÙÈÈËËËÁÁÁ */ - $"E7E8 CD32 0000 0000 0000 0000 0000 0000" /* ÁËÕ2............ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"001F C5F6 F3F3 F3F4 F4F4 F4F5 FBFC FCFC" /* ..≈ˆÛÛÛÙÙÙÙı˚¸¸¸ */ - $"FCFC FDFD FDFD FDFD FEFF FFFF FFFF FFFF" /* ¸¸˝˝˝˝˝˝˛ˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFE FAFA FAFA FAFA FAFA FAFA FAF9" /* ˇˇˇ˛˙˙˙˙˙˙˙˙˙˙˙˘ */ - $"F9F9 F9F9 F9F9 F9F8 EEE8 E9E8 E8E7 E7E7" /* ˘˘˘˘˘˘˘¯ÓËÈËËÁÁÁ */ - $"E7E7 EABD 1F00 0000 0000 0000 0000 0000" /* ÁÁÍΩ............ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0BA9 F7F3 F3F3 F3F4 F4F4 F4F8 FCFC FCFC" /* .©˜ÛÛÛÛÙÙÙÙ¯¸¸¸¸ */ - $"FCFC FCFC FCFC FDFD FFFF FFFF FFFF FFFF" /* ¸¸¸¸¸¸˝˝ˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FCFA FAFA FAFA FAFA FAF9 F9F9" /* ˇˇˇˇ¸˙˙˙˙˙˙˙˙˘˘˘ */ - $"F9F9 F9F9 F9F9 F8F8 F4EA E9E9 E8E8 E7E7" /* ˘˘˘˘˘˘¯¯ÙÍÈÈËËÁÁ */ - $"E7E6 E7EB A20B 0000 0000 0000 0000 0000" /* ÁÊÁ΢........... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"81F4 F3F2 F3F3 F3F4 F4F4 F5FB FCFC FCFC" /* ÅÙÛÚÛÛÛÙÙÙı˚¸¸¸¸ */ - $"FCFC FCFC FCFC FDFE FFFF FFFF FFFF FFFF" /* ¸¸¸¸¸¸˝˛ˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FEFA FAFA FAFA FAF9 F9F9 F9F9" /* ˇˇˇˇ˛˙˙˙˙˙˙˘˘˘˘˘ */ - $"F9F9 F9F9 F8F8 F8F8 F8EE E8E9 E8E8 E7E7" /* ˘˘˘˘¯¯¯¯¯ÓËÈËËÁÁ */ - $"E7E7 E6E7 E87C 0100 0000 0000 0000 0000" /* ÁÁÊÁË|.......... */ - $"0000 0000 0000 0000 0000 0000 0000 0050" /* ...............P */ - $"EBF4 F2F2 F3F3 F3F4 F4F4 F7FC FCFC FCFC" /* ÎÙÚÚÛÛÛÙÙÙ˜¸¸¸¸¸ */ - $"FCFC FCFC FCFD FDFF FFFF FFFF FFFF FFFF" /* ¸¸¸¸¸˝˝ˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFB FAFA FAF9 F9F9 F9F9 F9F9" /* ˇˇˇˇˇ˚˙˙˙˘˘˘˘˘˘˘ */ - $"F9F9 F8F8 F8F8 F8F8 F8F3 E9E9 E9E8 E8E7" /* ˘˘¯¯¯¯¯¯¯ÛÈÈÈËËÁ */ - $"E7E7 E6E6 E9E0 4D00 0000 0000 0000 0000" /* ÁÁÊÊȇM......... */ - $"0000 0000 0000 0000 0000 0000 0000 24D8" /* ..............$ÿ */ - $"F5F2 F2F2 F3F3 F3F4 F4F4 FAFB FBFC FCFC" /* ıÚÚÚÛÛÛÙÙÙ˙˚˚¸¸¸ */ - $"FCFC FCFC FCFD FFFF FFFF FFFF FFFF FFFF" /* ¸¸¸¸¸˝ˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFC FAFA FAF9 F9F9 F9F9 F9F9" /* ˇˇˇˇˇ¸˙˙˙˘˘˘˘˘˘˘ */ - $"F9F9 F8F8 F8F8 F8F8 F7F7 EDE9 E9E8 E8E8" /* ˘˘¯¯¯¯¯¯˜˜ÌÈÈËËË */ - $"E7E7 E7E6 E6E9 CF23 0000 0000 0000 0000" /* ÁÁÁÊÊÈœ#........ */ - $"0000 0000 0000 0000 0000 0000 0005 AAF9" /* ..............™˘ */ - $"F1F2 F2F2 F3F3 F3F4 F4F5 FBFB FBFC FCFC" /* ÒÚÚÚÛÛÛÙÙı˚˚˚¸¸¸ */ - $"FCFC FCFC FCFE FFFF FFFF FFFF FFFF FFFF" /* ¸¸¸¸¸˛ˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFE FBF9 F9F9 F9F9 F9F9 F9F9" /* ˇˇˇˇˇ˛˚˘˘˘˘˘˘˘˘˘ */ - $"F8F8 F8F8 F8F8 F8F8 F7F8 F0E9 E9E9 E8E8" /* ¯¯¯¯¯¯¯¯˜¯ÈÈÈËË */ - $"E8E7 E7E7 E6E6 EDA3 0500 0000 0000 0000" /* ËÁÁÁÊÊÌ£........ */ - $"0000 0000 0000 0000 0000 0000 0060 F6F1" /* .............`ˆÒ */ - $"F1F2 F2F2 F3F3 F3F4 F4F7 FBFB FBFC FCFC" /* ÒÚÚÚÛÛÛÙÙ˜˚˚˚¸¸¸ */ - $"FCFC FCFC FDFF FFFF FFFF FFFF FFFF FFFF" /* ¸¸¸¸˝ˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FEFA F9F9 F9F9 F9F9 F8F8" /* ˇˇˇˇˇˇ˛˙˘˘˘˘˘˘¯¯ */ - $"F8F8 F8F8 F8F8 F7F7 F7F7 F5EA E9E9 E8E8" /* ¯¯¯¯¯¯˜˜˜˜ıÍÈÈËË */ - $"E8E7 E7E7 E6E6 E6EA 5D00 0000 0000 0000" /* ËÁÁÁÊÊÊÍ]....... */ - $"0000 0000 0000 0000 0000 0000 1FD8 F4F1" /* .............ÿÙÒ */ - $"F1F2 F2F2 F3F3 F3F4 F4F9 FBFB FBFB FBFB" /* ÒÚÚÚÛÛÛÙÙ˘˚˚˚˚˚˚ */ - $"FCFC FCFC FEFF FFFF FFFF FFFF FFFF FFFF" /* ¸¸¸¸˛ˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFE FBF9 F9F9 F9F9 F8F8" /* ˇˇˇˇˇˇˇ˛˚˘˘˘˘˘¯¯ */ - $"F8F8 F8F8 F7F7 F7F7 F7F7 F6EC E9E9 E9E8" /* ¯¯¯¯˜˜˜˜˜˜ˆÏÈÈÈË */ - $"E8E8 E7E7 E7E6 E6E9 D01F 0000 0000 0000" /* ËËÁÁÁÊÊÈ–....... */ - $"0000 0000 0000 0000 0000 0000 96F9 F0F1" /* ............ñ˘Ò */ - $"F1F2 F2F2 F3F3 F3F4 F5FA FBFB FBFB FBFB" /* ÒÚÚÚÛÛÛÙı˙˚˚˚˚˚˚ */ - $"FCFC FCFC FFFF FFFF FFFF FFFF FFFF FFFF" /* ¸¸¸¸ˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFD FBF9 F8F8 F8F8" /* ˇˇˇˇˇˇˇˇˇ˝˚˘¯¯¯¯ */ - $"F8F8 F7F8 F7F7 F7F7 F7F7 F7EF E9E9 E9E9" /* ¯¯˜¯˜˜˜˜˜˜˜ÔÈÈÈÈ */ - $"E8E8 E7E7 E7E6 E6E6 ED91 0000 0000 0000" /* ËËÁÁÁÊÊÊÌë...... */ - $"0000 0000 0000 0000 0000 003C ECF1 F0F1" /* ...........<ÏÒÒ */ - $"F1F2 F2F2 F3F3 F3F3 F6FA FBFB FBFB FBFB" /* ÒÚÚÚÛÛÛÛˆ˙˚˚˚˚˚˚ */ - $"FCFC FCFD FFFF FFFF FFFF FFFF FFFF FFFF" /* ¸¸¸˝ˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFE FCFA F8F8" /* ˇˇˇˇˇˇˇˇˇˇˇ˛¸˙¯¯ */ - $"F8F8 F7F7 F7F7 F7F7 F6F6 F6F1 EAE9 E9E9" /* ¯¯˜˜˜˜˜˜ˆˆˆÒÍÈÈÈ */ - $"E8E8 E8E7 E7E7 E6E6 E6E2 3C00 0000 0000" /* ËËËÁÁÁÊÊÊ‚<..... */ - $"0000 0000 0000 0000 0000 06B4 F7F0 F0F1" /* ...........¥˜Ò */ - $"F1F1 F2F2 F2F3 F3F3 F7FA FBFB FBFB FBFB" /* ÒÒÚÚÚÛÛÛ˜˙˚˚˚˚˚˚ */ - $"FBFB FBFE FFFF FFFF FFFF FFFF FFFF FFFF" /* ˚˚˚˛ˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FEFC" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛¸ */ - $"F9F7 F7F7 F7F7 F7F7 F6F6 F6F4 EAEA E9E9" /* ˘˜˜˜˜˜˜˜ˆˆˆÙÍÍÈÈ */ - $"E9E8 E8E8 E7E7 E6E6 E6EB AD07 0000 0000" /* ÈËËËÁÁÊÊÊÎ≠..... */ - $"0000 0000 0000 0000 0000 50F2 F0F0 F0F1" /* ..........PÚÒ */ - $"F1F1 F2F2 F2F3 F3F3 F8FA FAFA FAFB FBFB" /* ÒÒÚÚÚÛÛÛ¯˙˙˙˙˚˚˚ */ - $"FBFB FBFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˚˚˚ˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFD FAF8 F7F7 F6F6 F6F6 F6F5 EBEA E9E9" /* ˇ˝˙¯˜˜ˆˆˆˆˆıÎÍÈÈ */ - $"E9E8 E8E8 E7E7 E7E6 E6E6 E94E 0000 0000" /* ÈËËËÁÁÁÊÊÊÈN.... */ - $"0000 0000 0000 0000 0009 BCF5 F0F0 F0F1" /* .........∆ºıÒ */ - $"F1F1 F2F2 F2F3 F3F3 F8FA FAFA FAFB FBFB" /* ÒÒÚÚÚÛÛÛ¯˙˙˙˙˚˚˚ */ - $"FBFB FCFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˚˚¸ˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFE FBF8 F6F6 F6F6 F6F6 ECEA EAE9" /* ˇˇˇ˛˚¯ˆˆˆˆˆˆÏÍÍÈ */ - $"E9E9 E8E8 E7E7 E7E6 E6E6 EBB6 0900 0000" /* ÈÈËËÁÁÁÊÊÊÎ∂∆... */ - $"0000 0000 0000 0000 0052 F4F0 EFF0 F0F1" /* .........RÙÔÒ */ - $"F1F1 F2F2 F2F3 F3F3 F9FA FAFA FAFA FBFB" /* ÒÒÚÚÚÛÛÛ˘˙˙˙˙˙˚˚ */ - $"FBFB FDFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˚˚˝ˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFE FAF6 F6F6 F5F5 EDEA EAE9" /* ˇˇˇˇˇ˛˙ˆˆˆııÌÍÍÈ */ - $"E9E9 E8E8 E8E7 E7E7 E6E6 E6EA 5100 0000" /* ÈÈËËËÁÁÁÊÊÊÍQ... */ - $"0000 0000 0000 0000 05B6 F5EF EFF0 F0F0" /* .........∂ıÔÔ */ - $"F1F1 F2F2 F2F3 F3F3 F8F9 F9FA FAFA FAFA" /* ÒÒÚÚÚÛÛÛ¯˘˘˙˙˙˙˙ */ - $"FAFB FEFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˙˚˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFD F7F5 F5F5 EEEA EAEA" /* ˇˇˇˇˇˇˇ˝˜ıııÓÍÍÍ */ - $"E9E9 E9E8 E8E7 E7E7 E6E6 E6EB B005 0000" /* ÈÈÈËËÁÁÁÊÊÊÎ∞... */ - $"0000 0000 0000 0000 40EE F0EF EFF0 F0F0" /* ........@ÓÔÔ */ - $"F1F1 F1F2 F2F2 F3F3 F8F9 F9FA FAFA FAFA" /* ÒÒÒÚÚÚÛÛ¯˘˘˙˙˙˙˙ */ - $"FAFB FEFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˙˚˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FEF6 F5F5 EEEA EAEA" /* ˇˇˇˇˇˇˇˇ˛ˆııÓÍÍÍ */ - $"E9E9 E9E8 E8E8 E7E7 E7E6 E6E6 E63E 0000" /* ÈÈÈËËËÁÁÁÊÊÊÊ>.. */ - $"0000 0000 0000 0000 9FF6 EEEF EFF0 F0F0" /* ........üˆÓÔÔ */ - $"F1F1 F1F2 F2F2 F3F3 F8F9 F9FA FAFA FAFA" /* ÒÒÒÚÚÚÛÛ¯˘˘˙˙˙˙˙ */ - $"FAFC FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˙¸ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFD F5F5 EEEB EAEA" /* ˇˇˇˇˇˇˇˇˇ˝ııÓÎÍÍ */ - $"EAE9 E9E9 E8E8 E7E7 E7E6 E6E6 ED9A 0000" /* ÍÈÈÈËËÁÁÁÊÊÊÌö.. */ - $"0000 0000 0000 0021 E1F0 EEEF EFEF F0F0" /* .......!·ÓÔÔÔ */ - $"F0F1 F1F2 F2F2 F3F3 F8F9 F9F9 FAFA FAFA" /* ÒÒÚÚÚÛÛ¯˘˘˘˙˙˙˙ */ - $"FAFD FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˙˝ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF F9F5 EEEB EBEA" /* ˇˇˇˇˇˇˇˇˇˇ˘ıÓÎÎÍ */ - $"EAE9 E9E9 E8E8 E8E7 E7E6 E6E6 E7DA 2100" /* ÍÈÈÈËËËÁÁÊÊÊÁ⁄!. */ - $"0000 0000 0000 0071 F6EF EEEF EFEF F0F0" /* .......qˆÔÓÔÔÔ */ - $"F0F1 F1F1 F2F2 F3F3 F7F9 F9F9 F9F9 F9FA" /* ÒÒÒÚÚÛÛ˜˘˘˘˘˘˘˙ */ - $"FAFD FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˙˝ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFE FDFD FCFB FBFB FBFC FDFE FFFF" /* ˇˇˇ˛˝˝¸˚˚˚˚¸˝˛ˇˇ */ - $"FFFF FFFF FFFF FFFC FBFC FDF4 EDEB EBEA" /* ˇˇˇˇˇˇˇ¸˚¸˝ÙÌÎÎÍ */ - $"EAEA E9E9 E9E8 E8E7 E7E7 E6E6 E6EE 6E00" /* ÍÍÈÈÈËËÁÁÁÊÊÊÓn. */ - $"0000 0000 0000 07C0 F2EE EEEE EFEF F0F0" /* .......¿ÚÓÓÓÔÔ */ - $"F0F1 F1F1 F2F2 F2F3 F7F9 F9F9 F9F9 F9FA" /* ÒÒÒÚÚÚÛ˜˘˘˘˘˘˘˙ */ - $"FAFE FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˙˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FEFC FAF9 F9F9 F9F8 F8F8 F7F8 F7F7 F8F8" /* ˛¸˙˘˘˘˘¯¯¯˜¯˜˜¯¯ */ - $"F9F9 FAFB FBF9 F7F5 F5F5 F9F5 EDEB EBEB" /* ˘˘˙˚˚˘˜ııı˘ıÌÎÎÎ */ - $"EAEA E9E9 E9E8 E8E8 E7E7 E7E6 E6EA BB07" /* ÍÍÈÈÈËËËÁÁÁÊÊͪ. */ - $"0000 0000 0000 34EC EFEE EEEE EFEF F0F0" /* ......4ÏÔÓÓÓÔÔ */ - $"F0F1 F1F1 F2F2 F2F3 F6F9 F9F9 F9F9 F9FA" /* ÒÒÒÚÚÚÛˆ˘˘˘˘˘˘˙ */ - $"FBFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˚ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FEFC" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛¸ */ - $"FAFA F9F9 F9F9 F9F8 F8F8 F7F7 F7F7 F7F7" /* ˙˙˘˘˘˘˘¯¯¯˜˜˜˜˜˜ */ - $"F6F6 F6F5 F5F5 F5F5 F4F4 F4F3 EDEB EBEB" /* ˆˆˆıııııÙÙÙÛÌÎÎÎ */ - $"EAEA EAE9 E9E8 E8E8 E7E7 E7E6 E6E6 E333" /* ÍÍÍÈÈËËËÁÁÁÊÊÊ„3 */ - $"0000 0000 0000 7CF6 EDED EEEE EFEF EFF0" /* ......|ˆÌÌÓÓÔÔÔ */ - $"F0F0 F1F1 F2F2 F2F2 F5F8 F8F8 F8F9 F9F9" /* ÒÒÚÚÚÚı¯¯¯¯˘˘˘ */ - $"FCFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ¸ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FEFC FAFA" /* ˇˇˇˇˇˇˇˇˇˇˇˇ˛¸˙˙ */ - $"FAFA F9F9 F9F8 F8F8 F8F8 F8F7 F7F7 F7F7" /* ˙˙˘˘˘¯¯¯¯¯¯˜˜˜˜˜ */ - $"F6F6 F6F5 F5F5 F5F5 F4F4 F4F2 ECEC EBEB" /* ˆˆˆıııııÙÙÙÚÏÏÎÎ */ - $"EAEA EAE9 E9E9 E8E8 E8E7 E7E6 E6E6 EF7B" /* ÍÍÍÈÈÈËËËÁÁÊÊÊÔ{ */ - $"0000 0000 0006 BFF2 EDED EEEE EEEF EFF0" /* ......øÚÌÌÓÓÓÔÔ */ - $"F0F0 F1F1 F1F2 F2F2 F4F8 F8F8 F8F9 F9F9" /* ÒÒÒÚÚÚÙ¯¯¯¯˘˘˘ */ - $"FDFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FEFC FBFA FAFA" /* ˇˇˇˇˇˇˇˇˇˇ˛¸˚˙˙˙ */ - $"F9F9 F9F9 F9F9 F8F8 F8F8 F8F7 F7F7 F6F6" /* ˘˘˘˘˘˘¯¯¯¯¯˜˜˜ˆˆ */ - $"F6F6 F6F5 F5F5 F5F5 F5F4 F4F1 ECEC EBEB" /* ˆˆˆııııııÙÙÒÏÏÎÎ */ - $"EBEA EAEA E9E9 E8E8 E8E7 E7E7 E6E6 EABA" /* ÎÍÍÍÈÈËËËÁÁÁÊÊÍ∫ */ - $"0600 0000 0029 E6EE EDED EEEE EEEF EFF0" /* .....)ÊÓÌÌÓÓÓÔÔ */ - $"F0F0 F1F1 F1F2 F2F2 F3F7 F7F8 F8F9 F9F9" /* ÒÒÒÚÚÚÛ˜˜¯¯˘˘˘ */ - $"FEFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FEFC FBFB FBFB FAFA" /* ˇˇˇˇˇˇˇˇ˛¸˚˚˚˚˙˙ */ - $"FAF9 F9F9 F9F9 F8F8 F8F7 F7F7 F7F7 F6F6" /* ˙˘˘˘˘˘¯¯¯˜˜˜˜˜ˆˆ */ - $"F6F6 F6F6 F5F5 F4F4 F4F4 F4F0 ECEC ECEB" /* ˆˆˆˆııÙÙÙÙÙÏÏÏÎ */ - $"EBEA EAEA E9E9 E9E8 E8E7 E7E7 E6E6 E7DF" /* ÎÍÍÍÈÈÈËËÁÁÁÊÊÁfl */ - $"2800 0000 0063 F5EC EDED EDEE EEEE EFEF" /* (....cıÏÌÌÌÓÓÓÔÔ */ - $"F0F0 F0F1 F1F1 F2F2 F3F6 F7F8 F8F8 F9F9" /* ÒÒÒÚÚÛˆ˜¯¯¯˘˘ */ - $"FEFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FDFC FCFB FBFB FAFA FAFA" /* ˇˇˇˇˇˇ˝¸¸˚˚˚˙˙˙˙ */ - $"FAF9 F9F9 F9F9 F9F8 F8F7 F7F7 F7F7 F7F6" /* ˙˘˘˘˘˘˘¯¯˜˜˜˜˜˜ˆ */ - $"F6F6 F5F5 F5F5 F5F4 F4F4 F3EF ECEC ECEB" /* ˆˆıııııÙÙÙÛÔÏÏÏÎ */ - $"EBEB EAEA E9E9 E9E8 E8E8 E7E7 E7E6 E6EF" /* ÎÎÍÍÈÈÈËËËÁÁÁÊÊÔ */ - $"6000 0000 009E F4EC EDED EDEE EEEE EFEF" /* `....ûÙÏÌÌÌÓÓÓÔÔ */ - $"F0F0 F0F1 F1F1 F2F2 F2F5 F7F8 F8F8 F8F9" /* ÒÒÒÚÚÚı˜¯¯¯¯˘ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FDFC FCFC FCFB FBFB FAFA FAFA" /* ˇˇˇˇ˝¸¸¸¸˚˚˚˙˙˙˙ */ - $"FAFA F9F9 F8F8 F8F8 F8F8 F7F7 F6F6 F6F6" /* ˙˙˘˘¯¯¯¯¯¯˜˜ˆˆˆˆ */ - $"F6F6 F5F5 F5F4 F4F4 F4F4 F2ED EDEC ECEB" /* ˆˆıııÙÙÙÙÙÚÌÌÏÏÎ */ - $"EBEB EAEA EAE9 E9E9 E8E8 E7E7 E7E6 E6EE" /* ÎÎÍÍÍÈÈÈËËÁÁÁÊÊÓ */ - $"9B00 0000 0BCB F0EC ECED EDEE EEEE EFEF" /* õ....ÀÏÏÌÌÓÓÓÔÔ */ - $"EFF0 F0F0 F1F1 F2F2 F2F4 F7F7 F8F8 F8F9" /* ÔÒÒÚÚÚÙ˜˜¯¯¯˘ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FEFD FCFC FCFC FCFC FBFB FBFA FAFA" /* ˇˇ˛˝¸¸¸¸¸¸˚˚˚˙˙˙ */ - $"FAFA F9F9 F9F8 F8F8 F8F8 F7F7 F7F6 F6F6" /* ˙˙˘˘˘¯¯¯¯¯˜˜˜ˆˆˆ */ - $"F6F6 F5F5 F5F4 F4F4 F4F4 F0ED EDEC ECEC" /* ˆˆıııÙÙÙÙÙÌÌÏÏÏ */ - $"EBEB EAEA EAE9 E9E9 E8E8 E8E7 E7E6 E6EA" /* ÎÎÍÍÍÈÈÈËËËÁÁÊÊÍ */ - $"C50B 0000 2BE6 EDEC ECED EDED EEEE EEEF" /* ≈...+ÊÌÏÏÌÌÌÓÓÓÔ */ - $"EFF0 F0F0 F1F1 F1F2 F2F2 F6F7 F7F7 F7FA" /* ÔÒÒÒÚÚÚˆ˜˜˜˜˙ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFE FDFD FDFC FCFC FCFC FBFB FBFA FAFA" /* ˇ˛˝˝˝¸¸¸¸¸˚˚˚˙˙˙ */ - $"F9F9 F9F9 F9F8 F8F8 F7F7 F7F7 F7F6 F6F6" /* ˘˘˘˘˘¯¯¯˜˜˜˜˜ˆˆˆ */ - $"F5F5 F5F5 F5F4 F4F4 F3F3 F0ED EDED ECEC" /* ıııııÙÙÙÛÛÌÌÌÏÏ */ - $"EBEB EBEA EAEA E9E9 E8E8 E8E7 E7E7 E6E7" /* ÎÎÎÍÍÍÈÈËËËÁÁÁÊÁ */ - $"E129 0000 55F3 EBEC ECEC EDED EEEE EEEF" /* ·)..UÛÎÏÏÏÌÌÓÓÓÔ */ - $"EFF0 F0F0 F1F1 F1F2 F2F2 F4F7 F7F7 F7FA" /* ÔÒÒÒÚÚÚÙ˜˜˜˜˙ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FEFE FDFD FDFC FCFC FBFB FBFB FBFA FAFA" /* ˛˛˝˝˝¸¸¸˚˚˚˚˚˙˙˙ */ - $"F9F9 F9F9 F9F8 F8F8 F7F7 F7F7 F7F7 F6F6" /* ˘˘˘˘˘¯¯¯˜˜˜˜˜˜ˆˆ */ - $"F5F5 F5F4 F4F4 F4F4 F4F1 EEED EDED ECEC" /* ıııÙÙÙÙÙÙÒÓÌÌÌÏÏ */ - $"ECEB EBEA EAEA E9E9 E9E8 E8E7 E7E7 E6E6" /* ÏÎÎÍÍÍÈÈÈËËÁÁÁÊÊ */ - $"EE52 0000 81F5 EBEC ECEC EDED EDEE EEEF" /* ÓR..ÅıÎÏÏÏÌÌÌÓÓÔ */ - $"EFEF F0F0 F0F1 F1F1 F2F2 F3F6 F6F7 F7FA" /* ÔÔÒÒÒÚÚÛˆˆ˜˜˙ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ */ - $"FEFE FEFD FDFC FCFC FBFB FBFB FBFB FAFA" /* ˛˛˛˝˝¸¸¸˚˚˚˚˚˚˙˙ */ - $"F9F9 F9F9 F9F9 F8F8 F7F7 F7F6 F6F6 F6F6" /* ˘˘˘˘˘˘¯¯˜˜˜ˆˆˆˆˆ */ - $"F6F5 F5F4 F4F4 F4F4 F4EF EEED EDED ECEC" /* ˆııÙÙÙÙÙÙÔÓÌÌÌÏÏ */ - $"ECEB EBEB EAEA E9E9 E9E8 E8E8 E7E7 E7E6" /* ÏÎÎÎÍÍÈÈÈËËËÁÁÁÊ */ - $"F07E 0000 A7F3 EBEB ECEC EDED EDEE EEEE" /* ~..ßÛÎÎÏÏÌÌÌÓÓÓ */ - $"EFEF EFF0 F0F1 F1F1 F2F2 F2F4 F6F7 F7FA" /* ÔÔÔÒÒÒÚÚÚÙˆ˜˜˙ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FEFE" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛˛ */ - $"FEFE FEFD FDFD FCFC FCFB FBFB FBFB FAFA" /* ˛˛˛˝˝˝¸¸¸˚˚˚˚˚˙˙ */ - $"FAF9 F9F8 F8F8 F8F8 F8F7 F7F7 F6F6 F5F5" /* ˙˘˘¯¯¯¯¯¯˜˜˜ˆˆıı */ - $"F5F5 F5F5 F4F4 F3F3 F2EE EEEE EDED EDEC" /* ııııÙÙÛÛÚÓÓÓÌÌÌÏ */ - $"ECEB EBEB EAEA EAE9 E9E8 E8E8 E7E7 E7E6" /* ÏÎÎÎÍÍÍÈÈËËËÁÁÁÊ */ - $"EDA4 0007 C6EF EBEB ECEC ECED EDED EEEE" /* ̧..∆ÔÎÎÏÏÏÌÌÌÓÓ */ - $"EFEF EFF0 F0F0 F1F1 F2F2 F2F3 F5F6 F7FA" /* ÔÔÔÒÒÚÚÚÛıˆ˜˙ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFE FEFE" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛˛˛ */ - $"FEFE FEFD FDFD FCFC FCFB FBFB FBFB FAFA" /* ˛˛˛˝˝˝¸¸¸˚˚˚˚˚˙˙ */ - $"FAF9 F9F9 F8F8 F8F8 F8F7 F7F7 F6F6 F6F5" /* ˙˘˘˘¯¯¯¯¯˜˜˜ˆˆˆı */ - $"F5F5 F5F5 F4F4 F4F3 F0EE EEEE EDED EDEC" /* ııııÙÙÙÛÓÓÓÌÌÌÏ */ - $"ECEC EBEB EAEA EAE9 E9E9 E8E8 E7E7 E7E6" /* ÏÏÎÎÍÍÍÈÈÈËËÁÁÁÊ */ - $"EBC3 0716 D9ED EBEB EBEC ECED EDED EEEE" /* Î√..ŸÌÎÎÎÏÏÌÌÌÓÓ */ - $"EEEF EFEF F0F0 F1F1 F1F2 F2F2 F4F6 F6F9" /* ÓÔÔÔÒÒÒÚÚÚÙˆˆ˘ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FEFD FDFD" /* ˇˇˇˇˇˇˇˇˇˇˇˇ˛˝˝˝ */ - $"FDFD FDFD FDFD FCFC FCFB FBFB FAFA FAFA" /* ˝˝˝˝˝˝¸¸¸˚˚˚˙˙˙˙ */ - $"FAF9 F9F9 F8F8 F8F7 F7F7 F7F7 F6F6 F6F5" /* ˙˘˘˘¯¯¯˜˜˜˜˜ˆˆˆı */ - $"F5F5 F4F4 F4F4 F4F2 EFEF EEEE EEED EDEC" /* ııÙÙÙÙÙÚÔÔÓÓÓÌÌÏ */ - $"ECEC EBEB EBEA EAE9 E9E9 E8E8 E8E7 E7E7" /* ÏÏÎÎÎÍÍÈÈÈËËËÁÁÁ */ - $"E8D6 162B E7EB EBEB EBEC ECEC EDED EDEE" /* Ë÷.+ÁÎÎÎÎÏÏÏÌÌÌÓ */ - $"EEEF EFEF F0F0 F0F1 F1F2 F2F2 F3F5 F6F8" /* ÓÔÔÔÒÒÚÚÚÛıˆ¯ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FDFD FDFD" /* ˇˇˇˇˇˇˇˇˇˇˇˇ˝˝˝˝ */ - $"FDFD FDFD FDFD FCFC FCFB FBFB FAFA FAFA" /* ˝˝˝˝˝˝¸¸¸˚˚˚˙˙˙˙ */ - $"FAF9 F9F9 F8F8 F8F7 F7F7 F7F7 F6F6 F6F5" /* ˙˘˘˘¯¯¯˜˜˜˜˜ˆˆˆı */ - $"F5F5 F4F4 F4F3 F3F0 EFEF EEEE EEED EDED" /* ııÙÙÙÛÛÔÔÓÓÓÌÌÌ */ - $"ECEC EBEB EBEA EAEA E9E9 E9E8 E8E7 E7E7" /* ÏÏÎÎÎÍÍÍÈÈÈËËÁÁÁ */ - $"E7E3 2A42 EEEA EAEB EBEB ECEC EDED EDEE" /* Á„*BÓÍÍÎÎÎÏÏÌÌÌÓ */ - $"EEEE EFEF F0F0 F0F1 F1F1 F2F2 F2F3 F5F7" /* ÓÓÔÔÒÒÒÚÚÚÛı˜ */ - $"FEFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FDFD FDFD" /* ˇˇˇˇˇˇˇˇˇˇˇˇ˝˝˝˝ */ - $"FDFD FDFD FDFD FCFC FCFB FBFB FAFA FAF9" /* ˝˝˝˝˝˝¸¸¸˚˚˚˙˙˙˘ */ - $"F9F9 F9F9 F8F8 F8F7 F7F7 F6F6 F6F6 F6F5" /* ˘˘˘˘¯¯¯˜˜˜ˆˆˆˆˆı */ - $"F5F5 F4F4 F4F3 F1F0 EFEF EEEE EEED EDED" /* ııÙÙÙÛÒÔÔÓÓÓÌÌÌ */ - $"ECEC ECEB EBEA EAEA E9E9 E9E8 E8E8 E7E7" /* ÏÏÏÎÎÍÍÍÈÈÈËËËÁÁ */ - $"E7EA 4153 F2EA EAEB EBEB ECEC ECED EDEE" /* ÁÍASÚÍÍÎÎÎÏÏÏÌÌÓ */ - $"EEEE EFEF EFF0 F0F0 F1F1 F1F2 F2F3 F4F5" /* ÓÓÔÔÔÒÒÒÚÚÛÙı */ - $"FDFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFE FDFD FDFD" /* ˇˇˇˇˇˇˇˇˇˇˇ˛˝˝˝˝ */ - $"FDFD FDFD FDFD FCFC FCFB FBFB FAFA FAF9" /* ˝˝˝˝˝˝¸¸¸˚˚˚˙˙˙˘ */ - $"F9F9 F9F9 F9F8 F8F7 F7F7 F6F6 F6F5 F5F5" /* ˘˘˘˘˘¯¯˜˜˜ˆˆˆııı */ - $"F5F5 F5F4 F4F2 F0F0 EFEF EFEE EEEE EDED" /* ıııÙÙÚÔÔÔÓÓÓÌÌ */ - $"ECEC ECEB EBEB EAEA E9E9 E9E8 E8E8 E7E7" /* ÏÏÏÎÎÎÍÍÈÈÈËËËÁÁ */ - $"E7EE 5274 F1EA EAEA EBEB EBEC ECED EDED" /* ÁÓRtÒÍÍÍÎÎÎÏÏÌÌÌ */ - $"EEEE EEEF EFF0 F0F0 F1F1 F1F2 F2F2 F3F4" /* ÓÓÓÔÔÒÒÒÚÚÚÛÙ */ - $"FCFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ¸ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFE FDFD FDFD" /* ˇˇˇˇˇˇˇˇˇˇˇ˛˝˝˝˝ */ - $"FDFD FDFD FDFC FCFC FCFB FBFB FAFA FAF9" /* ˝˝˝˝˝¸¸¸¸˚˚˚˙˙˙˘ */ - $"F9F9 F8F8 F8F8 F8F8 F7F7 F7F6 F6F5 F5F5" /* ˘˘¯¯¯¯¯¯˜˜˜ˆˆııı */ - $"F4F4 F4F4 F3F1 F0F0 EFEF EFEE EEEE EDED" /* ÙÙÙÙÛÒÔÔÔÓÓÓÌÌ */ - $"EDEC ECEB EBEB EAEA EAE9 E9E9 E8E8 E7E7" /* ÌÏÏÎÎÎÍÍÍÈÈÈËËÁÁ */ - $"E7EE 73A7 EEE9 EAEA EBEB EBEC ECEC EDED" /* ÁÓsßÓÈÍÍÎÎÎÏÏÏÌÌ */ - $"EDEE EEEF EFEF F0F0 F0F1 F1F1 F2F2 F3F3" /* ÌÓÓÔÔÔÒÒÒÚÚÛÛ */ - $"FBFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˚ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFE FDFD FDFD" /* ˇˇˇˇˇˇˇˇˇˇˇ˛˝˝˝˝ */ - $"FDFD FDFD FDFC FCFC FCFB FBFB FAFA FAF9" /* ˝˝˝˝˝¸¸¸¸˚˚˚˙˙˙˘ */ - $"F9F9 F8F8 F8F8 F8F8 F7F7 F7F6 F6F6 F5F5" /* ˘˘¯¯¯¯¯¯˜˜˜ˆˆˆıı */ - $"F4F4 F4F3 F1F1 F0F0 F0EF EFEE EEEE EDED" /* ÙÙÙÛÒÒÔÔÓÓÓÌÌ */ - $"EDEC ECEC EBEB EAEA EAE9 E9E9 E8E8 E8E7" /* ÌÏÏÏÎÎÍÍÍÈÈÈËËËÁ */ - $"E7EB A5C2 ECE9 EAEA EAEB EBEC ECEC EDED" /* ÁΕ¬ÏÈÍÍÍÎÎÏÏÏÌÌ */ - $"EDEE EEEE EFEF F0F0 F0F1 F1F1 F2F2 F2F3" /* ÌÓÓÓÔÔÒÒÒÚÚÚÛ */ - $"FBFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˚ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFD FCFC FCFC" /* ˇˇˇˇˇˇˇˇˇˇˇ˝¸¸¸¸ */ - $"FCFC FCFC FCFC FCFC FCFB FBFB FAFA FAF9" /* ¸¸¸¸¸¸¸¸¸˚˚˚˙˙˙˘ */ - $"F9F9 F8F8 F8F7 F7F7 F7F7 F7F6 F6F6 F5F5" /* ˘˘¯¯¯˜˜˜˜˜˜ˆˆˆıı */ - $"F4F4 F4F2 F1F1 F0F0 F0EF EFEF EEEE EDED" /* ÙÙÙÚÒÒÔÔÔÓÓÌÌ */ - $"EDEC ECEC EBEB EBEA EAE9 E9E9 E8E8 E8E7" /* ÌÏÏÏÎÎÎÍÍÈÈÈËËËÁ */ - $"E7E9 BFD1 EBE9 E9EA EAEB EBEB ECEC ECED" /* ÁÈø—ÎÈÈÍÍÎÎÎÏÏÏÌ */ - $"EDED EEEE EFEF EFF0 F0F0 F1F1 F1F2 F2F2" /* ÌÌÓÓÔÔÔÒÒÒÚÚÚ */ - $"FBFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˚ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFC FCFC FCFC" /* ˇˇˇˇˇˇˇˇˇˇˇ¸¸¸¸¸ */ - $"FCFC FCFC FCFC FCFC FBFB FBFB FAFA FAF9" /* ¸¸¸¸¸¸¸¸˚˚˚˚˙˙˙˘ */ - $"F9F9 F8F8 F8F7 F7F7 F6F6 F6F6 F6F6 F5F5" /* ˘˘¯¯¯˜˜˜ˆˆˆˆˆˆıı */ - $"F5F4 F3F2 F1F1 F0F0 F0EF EFEF EEEE EEED" /* ıÙÛÚÒÒÔÔÔÓÓÓÌ */ - $"EDEC ECEC EBEB EBEA EAEA E9E9 E8E8 E8E7" /* ÌÏÏÏÎÎÎÍÍÍÈÈËËËÁ */ - $"E7E9 CEE1 E9E9 E9EA EAEA EBEB EBEC ECED" /* ÁÈŒ·ÈÈÈÍÍÍÎÎÎÏÏÌ */ - $"EDED EEEE EEEF EFEF F0F0 F0F1 F1F2 F2F2" /* ÌÌÓÓÓÔÔÔÒÒÚÚÚ */ - $"FAFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˙ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFC FCFC FCFC" /* ˇˇˇˇˇˇˇˇˇˇˇ¸¸¸¸¸ */ - $"FCFC FCFC FCFC FCFC FBFB FBFB FAFA FAF9" /* ¸¸¸¸¸¸¸¸˚˚˚˚˙˙˙˘ */ - $"F9F9 F8F8 F8F7 F7F7 F6F6 F6F5 F5F5 F5F5" /* ˘˘¯¯¯˜˜˜ˆˆˆııııı */ - $"F5F3 F2F2 F1F1 F1F0 F0EF EFEF EEEE EEED" /* ıÛÚÚÒÒÒÔÔÔÓÓÓÌ */ - $"EDED ECEC EBEB EBEA EAEA E9E9 E9E8 E8E7" /* ÌÌÏÏÎÎÎÍÍÍÈÈÈËËÁ */ - $"E7E7 DFE1 E9E9 E9E9 EAEA EBEB EBEC ECEC" /* ÁÁfl·ÈÈÈÈÍÍÎÎÎÏÏÏ */ - $"EDED EDEE EEEF EFEF F0F0 F0F1 F1F1 F2F1" /* ÌÌÌÓÓÔÔÔÒÒÒÚÒ */ - $"F9FF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˘ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFC FBFB FBFB" /* ˇˇˇˇˇˇˇˇˇˇˇ¸˚˚˚˚ */ - $"FBFB FBFB FBFB FBFB FBFB FBFA FAFA FAF9" /* ˚˚˚˚˚˚˚˚˚˚˚˙˙˙˙˘ */ - $"F9F9 F8F8 F8F7 F7F7 F6F6 F6F5 F5F5 F4F4" /* ˘˘¯¯¯˜˜˜ˆˆˆıııÙÙ */ - $"F3F2 F2F2 F1F1 F1F0 F0F0 EFEF EEEE EEED" /* ÛÚÚÚÒÒÒÔÔÓÓÓÌ */ - $"EDED ECEC ECEB EBEA EAEA E9E9 E9E8 E8E8" /* ÌÌÏÏÏÎÎÍÍÍÈÈÈËËË */ - $"E7E7 E0D0 EAE9 E9E9 EAEA EAEB EBEB ECEC" /* ÁÁ‡–ÍÈÈÈÍÍÍÎÎÎÏÏ */ - $"EDED EDEE EEEE EFEF EFF0 F0F0 F1F1 F2F1" /* ÌÌÌÓÓÓÔÔÔÒÒÚÒ */ - $"F9FF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˘ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFB FAFB FBFB" /* ˇˇˇˇˇˇˇˇˇˇˇ˚˙˚˚˚ */ - $"FBFB FBFB FBFB FAFA FAFA FAFA FAFA FAF9" /* ˚˚˚˚˚˚˙˙˙˙˙˙˙˙˙˘ */ - $"F9F9 F8F8 F8F7 F7F7 F6F6 F6F5 F5F5 F4F3" /* ˘˘¯¯¯˜˜˜ˆˆˆıııÙÛ */ - $"F3F2 F2F2 F1F1 F1F0 F0F0 EFEF EFEE EEED" /* ÛÚÚÚÒÒÒÔÔÔÓÓÌ */ - $"EDED ECEC ECEB EBEB EAEA E9E9 E9E8 E8E8" /* ÌÌÏÏÏÎÎÎÍÍÈÈÈËËË */ - $"E7E8 D2C1 EBE8 E9E9 E9EA EAEB EBEB ECEC" /* ÁË“¡ÎËÈÈÈÍÍÎÎÎÏÏ */ - $"ECED EDED EEEE EFEF EFF0 F0F0 F1F1 F1F1" /* ÏÌÌÌÓÓÔÔÔÒÒÒÒ */ - $"F7FF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ˜ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFB FAFA FAFB" /* ˇˇˇˇˇˇˇˇˇˇˇ˚˙˙˙˚ */ - $"FBFB FBFB FAFA FAFA FAFA FAF9 F9F9 F9F9" /* ˚˚˚˚˙˙˙˙˙˙˙˘˘˘˘˘ */ - $"F9F9 F8F8 F8F7 F7F7 F6F6 F6F6 F5F5 F4F3" /* ˘˘¯¯¯˜˜˜ˆˆˆˆııÙÛ */ - $"F3F2 F2F2 F1F1 F1F0 F0F0 EFEF EFEE EEEE" /* ÛÚÚÚÒÒÒÔÔÔÓÓÓ */ - $"EDED ECEC ECEB EBEB EAEA EAE9 E9E9 E8E8" /* ÌÌÏÏÏÎÎÎÍÍÍÈÈÈËË */ - $"E7EA C2A6 EDE8 E9E9 E9EA EAEA EBEB EBEC" /* Áͬ¶ÌËÈÈÈÍÍÍÎÎÎÏ */ - $"ECED EDED EEEE EEEF EFEF F0F0 F0F1 F1F1" /* ÏÌÌÌÓÓÓÔÔÔÒÒÒ */ - $"F4FF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* Ùˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFC FAFA FAFA" /* ˇˇˇˇˇˇˇˇˇˇˇ¸˙˙˙˙ */ - $"FAFA FAFA FAFA FAFA FAFA F9F9 F9F9 F8F8" /* ˙˙˙˙˙˙˙˙˙˙˘˘˘˘¯¯ */ - $"F8F8 F8F8 F8F7 F7F7 F6F6 F6F6 F4F4 F4F3" /* ¯¯¯¯¯˜˜˜ˆˆˆˆÙÙÙÛ */ - $"F3F3 F2F2 F1F1 F1F0 F0F0 EFEF EFEE EEEE" /* ÛÛÚÚÒÒÒÔÔÔÓÓÓ */ - $"EDED ECEC ECEB EBEB EAEA EAE9 E9E9 E8E8" /* ÌÌÏÏÏÎÎÎÍÍÍÈÈÈËË */ - $"E7EC A073 F0E8 E8E9 E9E9 EAEA EAEB EBEC" /* ÁφsËËÈÈÈÍÍÍÎÎÏ */ - $"ECEC EDED EDEE EEEE EFEF EFF0 F0F1 F1F1" /* ÏÏÌÌÌÓÓÓÔÔÔÒÒÒ */ - $"F2FC FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* Ú¸ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFC FAFA FAFA" /* ˇˇˇˇˇˇˇˇˇˇˇ¸˙˙˙˙ */ - $"FAFA FAFA FAFA FAFA FAF9 F9F9 F9F9 F8F8" /* ˙˙˙˙˙˙˙˙˙˘˘˘˘˘¯¯ */ - $"F8F8 F7F7 F7F6 F6F6 F6F6 F6F5 F4F4 F4F3" /* ¯¯˜˜˜ˆˆˆˆˆˆıÙÙÙÛ */ - $"F3F3 F2F2 F1F1 F1F0 F0F0 EFEF EFEE EEEE" /* ÛÛÚÚÒÒÒÔÔÔÓÓÓ */ - $"EDED EDEC ECEC EBEB EAEA EAE9 E9E9 E8E8" /* ÌÌÌÏÏÏÎÎÍÍÍÈÈÈËË */ - $"E8EF 7752 EFE8 E8E9 E9E9 EAEA EAEB EBEB" /* ËÔwRÔËËÈÈÈÍÍÍÎÎÎ */ - $"ECEC ECED EDED EEEE EFEF EFF0 F0F0 F1F1" /* ÏÏÏÌÌÌÓÓÔÔÔÒÒ */ - $"F1F6 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* Òˆˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFD F9F9 FAFA" /* ˇˇˇˇˇˇˇˇˇˇˇ˝˘˘˙˙ */ - $"FAFA FAFA FAFA FAFA F9F9 F9F9 F9F9 F8F8" /* ˙˙˙˙˙˙˙˙˘˘˘˘˘˘¯¯ */ - $"F8F8 F7F7 F7F6 F6F6 F5F5 F5F5 F4F4 F4F3" /* ¯¯˜˜˜ˆˆˆııııÙÙÙÛ */ - $"F3F3 F2F2 F2F1 F1F1 F0F0 EFEF EFEE EEEE" /* ÛÛÚÚÚÒÒÒÔÔÔÓÓÓ */ - $"EDED EDEC ECEC EBEB EBEA EAE9 E9E9 E8E8" /* ÌÌÌÏÏÏÎÎÎÍÍÈÈÈËË */ - $"E8F0 5641 EBE8 E8E8 E9E9 E9EA EAEA EBEB" /* ËVAÎËËËÈÈÈÍÍÍÎÎ */ - $"EBEC ECED EDED EEEE EEEF EFEF F0F0 F0F1" /* ÎÏÏÌÌÌÓÓÓÔÔÔÒ */ - $"F1F1 F9FF FFFF FFFF FFFF FFFF FFFF FFFF" /* ÒÒ˘ˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFD F9F9 F9F9" /* ˇˇˇˇˇˇˇˇˇˇˇ˝˘˘˘˘ */ - $"F9FA FAFA FAFA F9F9 F9F9 F9F9 F9F8 F8F8" /* ˘˙˙˙˙˙˘˘˘˘˘˘˘¯¯¯ */ - $"F8F7 F7F7 F7F6 F6F6 F5F5 F5F5 F4F4 F4F3" /* ¯˜˜˜˜ˆˆˆııııÙÙÙÛ */ - $"F3F3 F2F2 F2F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÛÚÚÚÒÒÒÔÔÔÓÓ */ - $"EDED EDEC ECEC EBEB EBEA EAEA E9E9 E9E8" /* ÌÌÌÏÏÏÎÎÎÍÍÍÈÈÈË */ - $"E8EC 402A E4E8 E8E8 E9E9 E9EA EAEA EBEB" /* ËÏ@*‰ËËËÈÈÈÍÍÍÎÎ */ - $"EBEC ECEC EDED EDEE EEEE EFEF F0F0 F0F1" /* ÎÏÏÏÌÌÌÓÓÓÔÔÒ */ - $"F1F1 F1F8 FFFF FFFF FFFF FFFF FFFF FFFF" /* ÒÒÒ¯ˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFE F9F9 F9F9" /* ˇˇˇˇˇˇˇˇˇˇˇ˛˘˘˘˘ */ - $"F9F9 F9F9 F9F9 F9F9 F9F9 F9F9 F8F8 F8F8" /* ˘˘˘˘˘˘˘˘˘˘˘˘¯¯¯¯ */ - $"F8F7 F7F7 F7F6 F6F6 F5F5 F5F5 F4F4 F4F3" /* ¯˜˜˜˜ˆˆˆııııÙÙÙÛ */ - $"F3F3 F2F2 F2F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÛÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDEC ECEC EBEB EBEA EAEA E9E9 E9E8" /* ÓÌÌÏÏÏÎÎÎÍÍÍÈÈÈË */ - $"E9E5 2C16 D7E9 E8E8 E8E9 E9E9 EAEA EAEB" /* ÈÂ,.◊ÈËËËÈÈÈÍÍÍÎ */ - $"EBEB ECEC ECED EDEE EEEE EFEF EFF0 F0F0" /* ÎÎÏÏÏÌÌÓÓÓÔÔÔ */ - $"F1F1 F1F1 F6FE FFFF FFFF FFFF FFFF FFFF" /* ÒÒÒÒˆ˛ˇˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF F9F9 F9F9" /* ˇˇˇˇˇˇˇˇˇˇˇˇ˘˘˘˘ */ - $"F9F9 F9F9 F9F9 F9F9 F9F9 F9F8 F8F8 F8F8" /* ˘˘˘˘˘˘˘˘˘˘˘¯¯¯¯¯ */ - $"F8F7 F7F7 F7F6 F6F6 F5F5 F5F5 F4F4 F4F3" /* ¯˜˜˜˜ˆˆˆııııÙÙÙÛ */ - $"F3F3 F2F2 F2F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÛÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDED ECEC EBEB EBEA EAEA E9E9 E9E8" /* ÓÌÌÌÏÏÎÎÎÍÍÍÈÈÈË */ - $"EAD9 1907 C4EC E7E8 E8E8 E9E9 E9EA EAEB" /* ÍŸ..ƒÏÁËËËÈÈÈÍÍÎ */ - $"EBEB ECEC ECED EDED EEEE EEEF EFEF F0F0" /* ÎÎÏÏÏÌÌÌÓÓÓÔÔÔ */ - $"F0F1 F1F1 F2F5 FEFF FFFF FFFF FFFF FFFF" /* ÒÒÒÚı˛ˇˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FAF8 F8F9" /* ˇˇˇˇˇˇˇˇˇˇˇˇ˙¯¯˘ */ - $"F9F9 F9F9 F9F9 F9F9 F9F9 F8F8 F8F8 F8F8" /* ˘˘˘˘˘˘˘˘˘˘¯¯¯¯¯¯ */ - $"F7F7 F7F7 F6F6 F6F6 F5F5 F5F4 F4F4 F4F3" /* ˜˜˜˜ˆˆˆˆıııÙÙÙÙÛ */ - $"F3F3 F2F2 F2F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÛÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDED ECEC ECEB EBEA EAEA E9E9 E9E8" /* ÓÌÌÌÏÏÏÎÎÍÍÍÈÈÈË */ - $"EDC4 0700 A5EE E7E8 E8E8 E9E9 E9EA EAEA" /* ̃..•ÓÁËËËÈÈÈÍÍÍ */ - $"EBEB EBEC ECEC EDED EDEE EEEE EFEF EFF0" /* ÎÎÎÏÏÏÌÌÌÓÓÓÔÔÔ */ - $"F0F0 F1F1 F2F2 F5FE FFFF FFFF FFFF FFFF" /* ÒÒÚÚı˛ˇˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FBF8 F8F8" /* ˇˇˇˇˇˇˇˇˇˇˇˇ˚¯¯¯ */ - $"F8F8 F9F9 F9F9 F9F9 F8F8 F8F8 F8F8 F8F7" /* ¯¯˘˘˘˘˘˘¯¯¯¯¯¯¯˜ */ - $"F7F7 F7F7 F6F6 F6F6 F5F5 F5F4 F4F4 F4F3" /* ˜˜˜˜ˆˆˆˆıııÙÙÙÙÛ */ - $"F3F3 F2F2 F2F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÛÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDED ECEC ECEB EBEA EAEA E9E9 E9E8" /* ÓÌÌÌÏÏÏÎÎÍÍÍÈÈÈË */ - $"EFA9 0000 7EF0 E7E7 E8E8 E8E9 E9E9 EAEA" /* Ô©..~ÁÁËËËÈÈÈÍÍ */ - $"EAEB EBEB ECEC EDED EDEE EEEE EFEF EFF0" /* ÍÎÎÎÏÏÌÌÌÓÓÓÔÔÔ */ - $"F0F0 F1F1 F1F2 F2F5 FEFF FFFF FFFF FFFF" /* ÒÒÒÚÚı˛ˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FDF8 F8F8" /* ˇˇˇˇˇˇˇˇˇˇˇˇ˝¯¯¯ */ - $"F8F8 F8F8 F8F8 F8F8 F8F8 F8F8 F8F8 F7F7" /* ¯¯¯¯¯¯¯¯¯¯¯¯¯¯˜˜ */ - $"F7F7 F7F6 F6F6 F6F6 F5F5 F5F4 F4F4 F4F3" /* ˜˜˜ˆˆˆˆˆıııÙÙÙÙÛ */ - $"F3F3 F2F2 F2F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÛÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDED ECEC ECEB EBEB EAEA EAE9 E9E8" /* ÓÌÌÌÏÏÏÎÎÎÍÍÍÈÈË */ - $"F282 0000 53EE E7E7 E7E8 E8E8 E9E9 EAEA" /* ÚÇ..SÓÁÁÁËËËÈÈÍÍ */ - $"EAEB EBEB ECEC ECED EDED EEEE EEEF EFEF" /* ÍÎÎÎÏÏÏÌÌÌÓÓÓÔÔÔ */ - $"EFF0 F0F1 F1F1 F2F2 F6FF FFFF FFFF FFFF" /* ÔÒÒÒÚÚˆˇˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FEF8 F8F8" /* ˇˇˇˇˇˇˇˇˇˇˇˇ˛¯¯¯ */ - $"F8F8 F8F8 F8F8 F8F8 F8F8 F8F8 F8F7 F7F7" /* ¯¯¯¯¯¯¯¯¯¯¯¯¯˜˜˜ */ - $"F7F7 F7F6 F6F6 F6F5 F5F5 F5F4 F4F4 F3F3" /* ˜˜˜ˆˆˆˆııııÙÙÙÛÛ */ - $"F3F3 F2F2 F2F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÛÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDED ECEC ECEB EBEB EAEA EAE9 E9E9" /* ÓÌÌÌÏÏÏÎÎÎÍÍÍÈÈÈ */ - $"EF53 0000 2AE1 E7E7 E7E8 E8E8 E9E9 E9EA" /* ÔS..*·ÁÁÁËËËÈÈÈÍ */ - $"EAEA EBEB EBEC ECEC EDED EDEE EEEE EFEF" /* ÍÍÎÎÎÏÏÏÌÌÌÓÓÓÔÔ */ - $"EFEF F0F0 F1F1 F1F2 F1F6 FFFF FFFF FFFF" /* ÔÔÒÒÒÚÒˆˇˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFF9 F7F7" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇ˘˜˜ */ - $"F8F8 F8F8 F8F8 F8F8 F8F8 F8F8 F7F7 F7F7" /* ¯¯¯¯¯¯¯¯¯¯¯¯˜˜˜˜ */ - $"F7F7 F6F6 F6F6 F6F5 F5F5 F5F4 F4F4 F3F3" /* ˜˜ˆˆˆˆˆııııÙÙÙÛÛ */ - $"F3F3 F2F2 F2F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÛÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDED ECEC ECEB EBEB EAEA EAE9 E9EA" /* ÓÌÌÌÏÏÏÎÎÎÍÍÍÈÈÍ */ - $"E42B 0000 0BC6 EAE7 E7E7 E8E8 E8E9 E9E9" /* ‰+...∆ÍÁÁÁËËËÈÈÈ */ - $"EAEA EAEB EBEB ECEC ECED EDED EEEE EEEF" /* ÍÍÍÎÎÎÏÏÏÌÌÌÓÓÓÔ */ - $"EFEF F0F0 F0F1 F1F1 F2F2 F7FF FFFF FFFF" /* ÔÔÒÒÒÚÚ˜ˇˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFB F7F7" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇ˚˜˜ */ - $"F7F7 F7F7 F8F8 F8F8 F8F7 F7F7 F7F7 F7F7" /* ˜˜˜˜¯¯¯¯¯˜˜˜˜˜˜˜ */ - $"F7F6 F6F6 F6F6 F5F5 F5F5 F5F4 F4F4 F3F3" /* ˜ˆˆˆˆˆıııııÙÙÙÛÛ */ - $"F3F3 F2F2 F2F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÛÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDED ECEC ECEB EBEB EAEA EAE9 E9EE" /* ÓÌÌÌÏÏÏÎÎÎÍÍÍÈÈÓ */ - $"C90B 0000 009B EEE6 E7E7 E7E8 E8E8 E9E9" /* …....õÓÊÁÁÁËËËÈÈ */ - $"E9EA EAEB EBEB ECEC ECED EDED EEEE EEEF" /* ÈÍÍÎÎÎÏÏÏÌÌÌÓÓÓÔ */ - $"EFEF EFF0 F0F0 F1F1 F1F2 F2F9 FFFF FFFF" /* ÔÔÔÒÒÒÚÚ˘ˇˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFD F7F7" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝˜˜ */ - $"F7F7 F7F7 F7F7 F7F7 F7F7 F7F7 F7F7 F7F7" /* ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ */ - $"F6F6 F6F6 F6F6 F5F5 F5F5 F4F4 F4F4 F3F3" /* ˆˆˆˆˆˆııııÙÙÙÙÛÛ */ - $"F3F2 F2F2 F2F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÚÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDED ECEC ECEB EBEB EAEA EAE9 E9F1" /* ÓÌÌÌÏÏÏÎÎÎÍÍÍÈÈÒ */ - $"9D00 0000 0060 EFE6 E7E7 E7E8 E8E8 E9E9" /* ù....`ÔÊÁÁÁËËËÈÈ */ - $"E9EA EAEA EBEB EBEC ECEC EDED EDEE EEEE" /* ÈÍÍÍÎÎÎÏÏÏÌÌÌÓÓÓ */ - $"EFEF EFEF F0F0 F1F1 F1F1 F2F2 FAFF FFFF" /* ÔÔÔÔÒÒÒÒÚÚ˙ˇˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF F8F7" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ¯˜ */ - $"F7F7 F7F7 F7F7 F7F7 F7F7 F7F7 F7F7 F7F6" /* ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ˆ */ - $"F6F6 F6F6 F6F5 F5F5 F5F5 F4F4 F4F4 F3F3" /* ˆˆˆˆˆıııııÙÙÙÙÛÛ */ - $"F3F2 F2F2 F2F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÚÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDED ECEC ECEB EBEB EAEA EAE9 E9F1" /* ÓÌÌÌÏÏÏÎÎÎÍÍÍÈÈÒ */ - $"6200 0000 0027 DFE7 E6E7 E7E7 E8E8 E8E9" /* b....'flÁÊÁÁÁËËËÈ */ - $"E9E9 EAEA EAEB EBEB ECEC ECED EDED EEEE" /* ÈÈÍÍÍÎÎÎÏÏÏÌÌÌÓÓ */ - $"EEEF EFEF EFF0 F0F1 F1F1 F2F2 F2FB FFFF" /* ÓÔÔÔÔÒÒÒÚÚÚ˚ˇˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FAF6" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˙ˆ */ - $"F6F6 F7F7 F7F7 F7F7 F7F7 F7F7 F7F6 F6F6" /* ˆˆ˜˜˜˜˜˜˜˜˜˜˜ˆˆˆ */ - $"F6F6 F6F6 F6F5 F5F5 F5F4 F4F4 F4F3 F3F3" /* ˆˆˆˆˆııııÙÙÙÙÛÛÛ */ - $"F3F2 F2F2 F2F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÚÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDED EDEC ECEC EBEB EBEA EAEA EAE5" /* ÓÌÌÌÌÏÏÏÎÎÎÍÍÍÍ */ - $"2B00 0000 0005 B9EB E6E6 E7E7 E7E8 E8E9" /* +.....πÎÊÊÁÁÁËËÈ */ - $"E9E9 EAEA EAEB EBEB ECEC ECED EDED EDEE" /* ÈÈÍÍÍÎÎÎÏÏÏÌÌÌÌÓ */ - $"EEEE EFEF EFEF F0F0 F1F1 F1F2 F2F3 FDFF" /* ÓÓÔÔÔÔÒÒÒÚÚÛ˝ˇ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FDF6" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˆ */ - $"F6F6 F6F6 F6F6 F6F7 F7F6 F6F6 F6F6 F6F6" /* ˆˆˆˆˆˆˆ˜˜ˆˆˆˆˆˆˆ */ - $"F6F6 F6F6 F5F5 F5F5 F5F4 F4F4 F4F3 F3F3" /* ˆˆˆˆıııııÙÙÙÙÛÛÛ */ - $"F3F2 F2F2 F1F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÛÚÚÚÒÒÒÒÔÔÔÓÓ */ - $"EEED EDED EDEC ECEC EBEB EBEA EAEA EFBE" /* ÓÌÌÌÌÏÏÏÎÎÎÍÍÍÔæ */ - $"0700 0000 0000 79EF E6E6 E7E7 E7E8 E8E8" /* ......yÔÊÊÁÁÁËËË */ - $"E9E9 E9EA EAEA EBEB EBEC ECEC EDED EDEE" /* ÈÈÈÍÍÍÎÎÎÏÏÏÌÌÌÓ */ - $"EEEE EEEF EFEF F0F0 F0F1 F1F1 F2F2 F4FE" /* ÓÓÓÔÔÔÒÒÒÚÚÙ˛ */ - $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFF7" /* ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˜ */ - $"F6F6 F6F6 F6F6 F6F6 F6F6 F6F6 F6F6 F6F6" /* ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ */ - $"F6F6 F5F5 F5F5 F5F5 F4F4 F4F4 F4F3 F3F3" /* ˆˆııııııÙÙÙÙÙÛÛÛ */ - $"F2F2 F2F2 F1F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÚÚÚÚÒÒÒÒÔÔÔÓÓ */ - $"EEED EDED EDEC ECEC EBEB EBEA EAEA F27B" /* ÓÌÌÌÌÏÏÏÎÎÎÍÍÍÚ{ */ - $"0000 0000 0000 32E3 E6E6 E6E7 E7E7 E8E8" /* ......2„ÊÊÊÁÁÁËË */ - $"E8E9 E9E9 EAEA EAEB EBEB ECEC ECED EDED" /* ËÈÈÈÍÍÍÎÎÎÏÏÏÌÌÌ */ - $"EEEE EEEF EFEF EFF0 F0F0 F1F1 F1F2 F2F5" /* ÓÓÓÔÔÔÔÒÒÒÚÚı */ - $"FEFF FFFF FFFF FFFF FFFF FFFF FFFF FFFA" /* ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˙ */ - $"F5F6 F6F6 F6F6 F6F6 F6F6 F6F6 F6F6 F6F6" /* ıˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ */ - $"F6F5 F5F5 F5F5 F5F5 F4F4 F4F4 F3F3 F3F3" /* ˆıııııııÙÙÙÙÛÛÛÛ */ - $"F2F2 F2F2 F1F1 F1F1 F0F0 F0EF EFEF EEEE" /* ÚÚÚÚÒÒÒÒÔÔÔÓÓ */ - $"EEED EDED EDEC ECEC EBEB EBEA EAEA E836" /* ÓÌÌÌÌÏÏÏÎÎÎÍÍÍË6 */ - $"0000 0000 0000 07BA EAE6 E6E6 E7E7 E7E8" /* .......∫ÍÊÊÊÁÁÁË */ - $"E8E8 E9E9 E9EA EAEA EBEB EBEC ECEC EDED" /* ËËÈÈÈÍÍÍÎÎÎÏÏÏÌÌ */ - $"EDEE EEEE EFEF EFEF F0F0 F0F1 F1F1 F2F2" /* ÌÓÓÓÔÔÔÔÒÒÒÚÚ */ - $"F7FF FFFF FFFF FFFF FFFF FFFF FFFF FFFD" /* ˜ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ */ - $"F5F5 F5F6 F6F6 F6F6 F6F6 F6F6 F6F6 F6F5" /* ıııˆˆˆˆˆˆˆˆˆˆˆˆı */ - $"F5F5 F5F5 F5F5 F5F4 F4F4 F4F4 F3F3 F3F3" /* ıııııııÙÙÙÙÙÛÛÛÛ */ - $"F2F2 F2F2 F1F1 F1F0 F0F0 F0EF EFEF EEEE" /* ÚÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDED EDEC ECEC EBEB EBEA EAF0 B907" /* ÓÌÌÌÌÏÏÏÎÎÎÍÍπ. */ - $"0000 0000 0000 006D EEE6 E6E6 E7E7 E7E8" /* .......mÓÊÊÊÁÁÁË */ - $"E8E8 E9E9 E9EA EAEA EBEB EBEB ECEC ECED" /* ËËÈÈÈÍÍÍÎÎÎÎÏÏÏÌ */ - $"EDED EEEE EEEF EFEF EFF0 F0F0 F1F1 F1F1" /* ÌÌÓÓÓÔÔÔÔÒÒÒÒ */ - $"F2F9 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" /* Ú˘ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"F7F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" /* ˜ııııııııııııııı */ - $"F5F5 F5F5 F5F5 F4F4 F4F4 F4F3 F3F3 F3F2" /* ııııııÙÙÙÙÙÛÛÛÛÚ */ - $"F2F2 F2F2 F1F1 F1F0 F0F0 F0EF EFEF EEEE" /* ÚÚÚÚÒÒÒÔÔÔÓÓ */ - $"EEED EDED EDEC ECEC EBEB EBEA EAF2 6700" /* ÓÌÌÌÌÏÏÏÎÎÎÍÍÚg. */ - $"0000 0000 0000 0020 D9E7 E6E6 E6E7 E7E7" /* ....... ŸÁÊÊÊÁÁÁ */ - $"E8E8 E8E9 E9E9 EAEA EAEB EBEB ECEC ECED" /* ËËËÈÈÈÍÍÍÎÎÎÏÏÏÌ */ - $"EDED EDEE EEEE EFEF EFEF F0F0 F0F1 F1F1" /* ÌÌÌÓÓÓÔÔÔÔÒÒÒ */ - $"F1F2 FBFF FFFF FFFF FFFF FFFF FFFF FFFF" /* ÒÚ˚ˇˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"F9F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" /* ˘ııııııııııııııı */ - $"F5F5 F5F5 F5F4 F4F4 F4F4 F4F3 F3F3 F3F2" /* ıııııÙÙÙÙÙÙÛÛÛÛÚ */ - $"F2F2 F2F1 F1F1 F1F0 F0F0 EFEF EFEF EEEE" /* ÚÚÚÒÒÒÒÔÔÔÔÓÓ */ - $"EEED EDED EDEC ECEC EBEB EBEA EDDB 1E00" /* ÓÌÌÌÌÏÏÏÎÎÎÍÌ€.. */ - $"0000 0000 0000 0000 9AED E5E6 E6E6 E7E7" /* ........öÌÂÊÊÊÁÁ */ - $"E7E8 E8E8 E9E9 E9EA EAEA EBEB EBEC ECEC" /* ÁËËËÈÈÈÍÍÍÎÎÎÏÏÏ */ - $"EDED EDEE EEEE EEEF EFEF EFF0 F0F0 F1F1" /* ÌÌÌÓÓÓÓÔÔÔÔÒÒ */ - $"F1F1 F3FD FFFF FFFF FFFF FFFF FFFF FFFF" /* ÒÒÛ˝ˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FDF4 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5 F5F5" /* ˝Ùıııııııııııııı */ - $"F5F5 F5F4 F4F4 F4F4 F4F4 F3F3 F3F3 F3F2" /* ıııÙÙÙÙÙÙÙÛÛÛÛÛÚ */ - $"F2F2 F2F1 F1F1 F1F0 F0F0 EFEF EFEF EEEE" /* ÚÚÚÒÒÒÒÔÔÔÔÓÓ */ - $"EEED EDED EDEC ECEC EBEB EBEA F299 0000" /* ÓÌÌÌÌÏÏÏÎÎÎÍÚô.. */ - $"0000 0000 0000 0000 3DE6 E5E6 E6E6 E7E7" /* ........=ÊÂÊÊÊÁÁ */ - $"E7E8 E8E8 E8E9 E9E9 EAEA EAEB EBEB ECEC" /* ÁËËËËÈÈÈÍÍÍÎÎÎÏÏ */ - $"ECED EDED EEEE EEEE EFEF EFEF F0F0 F0F1" /* ÏÌÌÌÓÓÓÓÔÔÔÔÒ */ - $"F1F1 F1F5 FFFF FFFF FFFF FFFF FFFF FFFF" /* ÒÒÒıˇˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFF6 F4F4 F4F5 F5F5 F5F5 F5F5 F5F5 F5F5" /* ˇˆÙÙÙııııııııııı */ - $"F5F4 F4F4 F4F4 F4F4 F4F3 F3F3 F3F3 F2F2" /* ıÙÙÙÙÙÙÙÙÛÛÛÛÛÚÚ */ - $"F2F2 F2F1 F1F1 F1F0 F0F0 EFEF EFEF EEEE" /* ÚÚÚÒÒÒÒÔÔÔÔÓÓ */ - $"EEED EDED ECEC ECEC EBEB EBEB EC40 0000" /* ÓÌÌÌÏÏÏÏÎÎÎÎÏ@.. */ - $"0000 0000 0000 0000 04AF EBE5 E6E6 E6E7" /* .........ØÎÂÊÊÊÁ */ - $"E7E7 E8E8 E8E9 E9E9 EAEA EAEB EBEB EBEC" /* ÁÁËËËÈÈÈÍÍÍÎÎÎÎÏ */ - $"ECEC EDED EDEE EEEE EFEF EFEF EFF0 F0F0" /* ÏÏÌÌÌÓÓÓÔÔÔÔÔ */ - $"F1F1 F1F1 F7FF FFFF FFFF FFFF FFFF FFFF" /* ÒÒÒÒ˜ˇˇˇˇˇˇˇˇˇˇˇ */ - $"FFF9 F4F4 F4F4 F4F4 F4F4 F4F4 F4F4 F4F4" /* ˇ˘ÙÙÙÙÙÙÙÙÙÙÙÙÙÙ */ - $"F4F4 F4F4 F4F4 F4F4 F3F3 F3F3 F3F3 F2F2" /* ÙÙÙÙÙÙÙÙÛÛÛÛÛÛÚÚ */ - $"F2F2 F1F1 F1F1 F0F0 F0F0 EFEF EFEF EEEE" /* ÚÚÒÒÒÒÔÔÔÔÓÓ */ - $"EEED EDED ECEC ECEC EBEB EBF1 AF05 0000" /* ÓÌÌÌÏÏÏÏÎÎÎÒØ... */ - $"0000 0000 0000 0000 004F EAE5 E5E6 E6E6" /* .........OÍÂÂÊÊÊ */ - $"E7E7 E7E8 E8E8 E9E9 E9EA EAEA EBEB EBEC" /* ÁÁÁËËËÈÈÈÍÍÍÎÎÎÏ */ - $"ECEC ECED EDED EEEE EEEE EFEF EFEF F0F0" /* ÏÏÏÌÌÌÓÓÓÓÔÔÔÔ */ - $"F0F1 F1F1 F1FA FFFF FFFF FFFF FFFF FFFF" /* ÒÒÒÒ˙ˇˇˇˇˇˇˇˇˇˇ */ - $"FFFD F4F4 F4F4 F4F4 F4F4 F4F4 F4F4 F4F4" /* ˇ˝ÙÙÙÙÙÙÙÙÙÙÙÙÙÙ */ - $"F4F4 F4F4 F4F4 F3F3 F3F3 F3F3 F3F2 F2F2" /* ÙÙÙÙÙÙÛÛÛÛÛÛÛÚÚÚ */ - $"F2F2 F1F1 F1F1 F0F0 F0EF EFEF EFEE EEEE" /* ÚÚÒÒÒÒÔÔÔÔÓÓÓ */ - $"EEED EDED ECEC ECEC EBEB ECEC 4900 0000" /* ÓÌÌÌÏÏÏÏÎÎÏÏI... */ - $"0000 0000 0000 0000 0008 B5EB E5E5 E6E6" /* ..........µÎÂÂÊÊ */ - $"E6E7 E7E7 E8E8 E8E9 E9E9 EAEA EAEB EBEB" /* ÊÁÁÁËËËÈÈÈÍÍÍÎÎÎ */ - $"ECEC ECEC EDED EDEE EEEE EEEF EFEF EFF0" /* ÏÏÏÏÌÌÌÓÓÓÓÔÔÔÔ */ - $"F0F0 F1F1 F1F2 FDFF FFFF FFFF FFFF FFFF" /* ÒÒÒÚ˝ˇˇˇˇˇˇˇˇˇ */ - $"FFFF F5F3 F4F4 F4F4 F4F4 F4F4 F4F4 F4F4" /* ˇˇıÛÙÙÙÙÙÙÙÙÙÙÙÙ */ - $"F4F4 F4F4 F4F3 F3F3 F3F3 F3F3 F2F2 F2F2" /* ÙÙÙÙÙÛÛÛÛÛÛÛÚÚÚÚ */ - $"F2F1 F1F1 F1F1 F0F0 F0EF EFEF EFEE EEEE" /* ÚÒÒÒÒÒÔÔÔÔÓÓÓ */ - $"EEED EDED ECEC ECEC EBEB F1B5 0600 0000" /* ÓÌÌÌÏÏÏÏÎÎÒµ.... */ - $"0000 0000 0000 0000 0000 4CE9 E5E5 E6E6" /* ..........LÈÂÂÊÊ */ - $"E6E7 E7E7 E8E8 E8E8 E9E9 E9EA EAEA EBEB" /* ÊÁÁÁËËËËÈÈÈÍÍÍÎÎ */ - $"EBEC ECEC EDED EDED EEEE EEEE EFEF EFEF" /* ÎÏÏÏÌÌÌÌÓÓÓÓÔÔÔÔ */ - $"EFF0 F0F0 F1F1 F4FE FFFF FFFF FFFF FFFF" /* ÔÒÒÙ˛ˇˇˇˇˇˇˇˇ */ - $"FFFF F9F3 F3F3 F4F4 F4F4 F4F4 F4F4 F4F4" /* ˇˇ˘ÛÛÛÙÙÙÙÙÙÙÙÙÙ */ - $"F4F4 F3F3 F3F3 F3F3 F3F3 F3F2 F2F2 F2F2" /* ÙÙÛÛÛÛÛÛÛÛÛÚÚÚÚÚ */ - $"F1F1 F1F1 F1F0 F0F0 F0EF EFEF EFEE EEEE" /* ÒÒÒÒÒÔÔÔÔÓÓÓ */ - $"EEED EDED ECEC ECEB EBEC EE4D 0000 0000" /* ÓÌÌÌÏÏÏÎÎÏÓM.... */ - $"0000 0000 0000 0000 0000 06AB ECE5 E5E6" /* ...........´ÏÂÂÊ */ - $"E6E6 E7E7 E7E8 E8E8 E9E9 E9E9 EAEA EAEB" /* ÊÊÁÁÁËËËÈÈÈÈÍÍÍÎ */ - $"EBEB ECEC ECEC EDED EDEE EEEE EEEF EFEF" /* ÎÎÏÏÏÏÌÌÌÓÓÓÓÔÔÔ */ - $"EFEF F0F0 F0F1 F0F7 FFFF FFFF FFFF FFFF" /* ÔÔÒ˜ˇˇˇˇˇˇˇˇ */ - $"FFFF FCF3 F3F3 F3F3 F3F3 F3F3 F3F3 F3F3" /* ˇˇ¸ÛÛÛÛÛÛÛÛÛÛÛÛÛ */ - $"F3F3 F3F3 F3F3 F3F3 F3F3 F2F2 F2F2 F2F2" /* ÛÛÛÛÛÛÛÛÛÛÚÚÚÚÚÚ */ - $"F1F1 F1F1 F0F0 F0F0 EFEF EFEF EFEE EEEE" /* ÒÒÒÒÔÔÔÔÔÓÓÓ */ - $"EDED EDED ECEC ECEB EBF1 B007 0000 0000" /* ÌÌÌÌÏÏÏÎÎÒ∞..... */ - $"0000 0000 0000 0000 0000 003A E2E6 E5E5" /* ...........:‚Ê */ - $"E6E6 E6E7 E7E7 E8E8 E8E9 E9E9 EAEA EAEA" /* ÊÊÊÁÁÁËËËÈÈÈÍÍÍÍ */ - $"EBEB EBEC ECEC ECED EDED EEEE EEEE EFEF" /* ÎÎÎÏÏÏÏÌÌÌÓÓÓÓÔÔ */ - $"EFEF EFF0 F0F0 F1F1 FBFF FFFF FFFF FFFF" /* ÔÔÔÒÒ˚ˇˇˇˇˇˇˇ */ - $"FFFF FFF5 F3F3 F3F3 F3F3 F3F3 F3F3 F3F3" /* ˇˇˇıÛÛÛÛÛÛÛÛÛÛÛÛ */ - $"F3F3 F3F3 F3F3 F3F3 F2F2 F2F2 F2F2 F2F1" /* ÛÛÛÛÛÛÛÛÚÚÚÚÚÚÚÒ */ - $"F1F1 F1F1 F0F0 F0F0 EFEF EFEF EEEE EEEE" /* ÒÒÒÒÔÔÔÔÓÓÓÓ */ - $"EDED EDED ECEC ECEB EDE6 3900 0000 0000" /* ÌÌÌÌÏÏÏÎÌÊ9..... */ - $"0000 0000 0000 0000 0000 0000 8EED E5E5" /* ............éÌ */ - $"E5E6 E6E6 E7E7 E7E8 E8E8 E9E9 E9EA EAEA" /* ÂÊÊÊÁÁÁËËËÈÈÈÍÍÍ */ - $"EAEB EBEB ECEC ECEC EDED EDEE EEEE EEEF" /* ÍÎÎÎÏÏÏÏÌÌÌÓÓÓÓÔ */ - $"EFEF EFEF F0F0 F0F0 F3FE FFFF FFFF FFFF" /* ÔÔÔÔÛ˛ˇˇˇˇˇˇ */ - $"FFFF FFF8 F2F3 F3F3 F3F3 F3F3 F3F3 F3F3" /* ˇˇˇ¯ÚÛÛÛÛÛÛÛÛÛÛÛ */ - $"F3F3 F3F3 F3F3 F2F2 F2F2 F2F2 F2F2 F1F1" /* ÛÛÛÛÛÛÚÚÚÚÚÚÚÚÒÒ */ - $"F1F1 F1F0 F0F0 F0EF EFEF EFEF EEEE EEEE" /* ÒÒÒÔÔÔÔÔÓÓÓÓ */ - $"EDED EDED ECEC ECEB F38B 0000 0000 0000" /* ÌÌÌÌÏÏÏÎÛã...... */ - $"0000 0000 0000 0000 0000 0000 1ECF E8E5" /* .............œË */ - $"E5E6 E6E6 E7E7 E7E7 E8E8 E8E9 E9E9 EAEA" /* ÂÊÊÊÁÁÁÁËËËÈÈÈÍÍ */ - $"EAEA EBEB EBEC ECEC EDED EDED EEEE EEEE" /* ÍÍÎÎÎÏÏÏÌÌÌÌÓÓÓÓ */ - $"EFEF EFEF EFEF F0F0 F0F6 FFFF FFFF FFFF" /* ÔÔÔÔÔÔˆˇˇˇˇˇˇ */ - $"FFFF FFFB F2F2 F2F2 F3F3 F3F3 F3F3 F3F3" /* ˇˇˇ˚ÚÚÚÚÛÛÛÛÛÛÛÛ */ - $"F3F3 F3F3 F2F2 F2F2 F2F2 F2F2 F2F1 F1F1" /* ÛÛÛÛÚÚÚÚÚÚÚÚÚÒÒÒ */ - $"F1F1 F1F0 F0F0 F0EF EFEF EFEF EEEE EEEE" /* ÒÒÒÔÔÔÔÔÓÓÓÓ */ - $"EDED EDEC ECEC ECF0 D31C 0000 0000 0000" /* ÌÌÌÏÏÏÏ”....... */ - $"0000 0000 0000 0000 0000 0000 005B E9E5" /* .............[È */ - $"E5E5 E6E6 E6E7 E7E7 E8E8 E8E8 E9E9 E9EA" /* ÂÂÊÊÊÁÁÁËËËËÈÈÈÍ */ - $"EAEA EBEB EBEB ECEC ECEC EDED EDEE EEEE" /* ÍÍÎÎÎÎÏÏÏÏÌÌÌÓÓÓ */ - $"EEEF EFEF EFEF EFF0 F0F0 F9FF FFFF FFFF" /* ÓÔÔÔÔÔÔ˘ˇˇˇˇˇ */ - $"FFFF FFFE F3F2 F2F2 F2F2 F2F2 F2F2 F2F2" /* ˇˇˇ˛ÛÚÚÚÚÚÚÚÚÚÚÚ */ - $"F2F2 F2F2 F2F2 F2F2 F2F2 F2F2 F1F1 F1F1" /* ÚÚÚÚÚÚÚÚÚÚÚÚÒÒÒÒ */ - $"F1F1 F0F0 F0F0 EFEF EFEF EFEE EEEE EEED" /* ÒÒÔÔÔÔÔÓÓÓÓÌ */ - $"EDED EDEC ECEC EDEF 6200 0000 0000 0000" /* ÌÌÌÏÏÏÌÔb....... */ - $"0000 0000 0000 0000 0000 0000 0005 A2EC" /* ..............¢Ï */ - $"E5E5 E5E6 E6E6 E7E7 E7E8 E8E8 E8E9 E9E9" /* ÂÂÂÊÊÊÁÁÁËËËËÈÈÈ */ - $"EAEA EAEB EBEB EBEC ECEC ECED EDED EEEE" /* ÍÍÍÎÎÎÎÏÏÏÏÌÌÌÓÓ */ - $"EEEE EEEF EFEF EFEF F0F0 F1FC FFFF FFFF" /* ÓÓÓÔÔÔÔÔÒ¸ˇˇˇˇ */ - $"FFFF FFFF F5F2 F2F2 F2F2 F2F2 F2F2 F2F2" /* ˇˇˇˇıÚÚÚÚÚÚÚÚÚÚÚ */ - $"F2F2 F2F2 F2F2 F2F2 F2F2 F1F1 F1F1 F1F1" /* ÚÚÚÚÚÚÚÚÚÚÒÒÒÒÒÒ */ - $"F1F0 F0F0 F0F0 EFEF EFEF EFEE EEEE EEED" /* ÒÔÔÔÔÔÓÓÓÓÌ */ - $"EDED EDEC ECED F2A1 0500 0000 0000 0000" /* ÌÌÌÏÏÌÚ°........ */ - $"0000 0000 0000 0000 0000 0000 0000 22CE" /* .............."Œ */ - $"E8E5 E5E5 E6E6 E6E7 E7E7 E8E8 E8E9 E9E9" /* ËÂÂÂÊÊÊÁÁÁËËËÈÈÈ */ - $"E9EA EAEA EBEB EBEB ECEC ECED EDED EDEE" /* ÈÍÍÍÎÎÎÎÏÏÏÌÌÌÌÓ */ - $"EEEE EEEE EFEF EFEF EFEF F0F3 FFFF FFFF" /* ÓÓÓÓÔÔÔÔÔÔÛˇˇˇˇ */ - $"FFFF FFFF F8F1 F2F2 F2F2 F2F2 F2F2 F2F2" /* ˇˇˇˇ¯ÒÚÚÚÚÚÚÚÚÚÚ */ - $"F2F2 F2F2 F2F2 F2F2 F1F1 F1F1 F1F1 F1F1" /* ÚÚÚÚÚÚÚÚÒÒÒÒÒÒÒÒ */ - $"F0F0 F0F0 F0EF EFEF EFEF EEEE EEEE EEED" /* ÔÔÔÔÔÓÓÓÓÓÌ */ - $"EDED ECEC ECEF D01E 0000 0000 0000 0000" /* ÌÌÏÏÏÔ–......... */ - $"0000 0000 0000 0000 0000 0000 0000 004C" /* ...............L */ - $"DFE7 E5E5 E5E6 E6E6 E7E7 E7E7 E8E8 E9E9" /* flÁÂÂÂÊÊÊÁÁÁÁËËÈÈ */ - $"E9E9 EAEA EAEB EBEB EBEC ECEC ECED EDED" /* ÈÈÍÍÍÎÎÎÎÏÏÏÏÌÌÌ */ - $"EDEE EEEE EEEF EFEF EFEF EFEF F8FF FFFF" /* ÌÓÓÓÓÔÔÔÔÔÔÔ¯ˇˇˇ */ - $"FFFF FFFF FCF1 F1F1 F1F1 F2F2 F2F2 F2F2" /* ˇˇˇˇ¸ÒÒÒÒÒÚÚÚÚÚÚ */ - $"F2F2 F2F2 F2F1 F1F1 F1F1 F1F1 F1F1 F1F0" /* ÚÚÚÚÚÒÒÒÒÒÒÒÒÒÒ */ - $"F0F0 F0F0 EFEF EFEF EFEF EEEE EEEE EDED" /* ÔÔÔÔÔÔÓÓÓÓÌÌ */ - $"EDED ECEC EEE6 4900 0000 0000 0000 0000" /* ÌÌÏÏÓÊI......... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"7AE8 E6E5 E5E6 E6E6 E6E7 E7E7 E7E8 E8E9" /* zËÊÂÂÊÊÊÊÁÁÁÁËËÈ */ - $"E9E9 E9EA EAEA EBEB EBEB ECEC ECEC EDED" /* ÈÈÈÍÍÍÎÎÎÎÏÏÏÏÌÌ */ - $"EDED EEEE EEEE EFEF EFEF EFEF F0FC FFFF" /* ÌÌÓÓÓÓÔÔÔÔÔÔ¸ˇˇ */ - $"FFFF FFFF FEF2 F1F1 F1F1 F1F1 F1F1 F1F1" /* ˇˇˇˇ˛ÚÒÒÒÒÒÒÒÒÒÒ */ - $"F1F1 F1F1 F1F1 F1F1 F1F1 F1F1 F1F1 F0F0" /* ÒÒÒÒÒÒÒÒÒÒÒÒÒÒ */ - $"F0F0 F0EF EFEF EFEF EFEE EEEE EEEE EDED" /* ÔÔÔÔÔÔÓÓÓÓÓÌÌ */ - $"EDED ECEC F4A4 0000 0000 0000 0000 0000" /* ÌÌÏÏÙ§.......... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0AA0 E9E6 E5E5 E6E6 E6E7 E7E7 E7E7 E8E8" /* ¬†ÈÊÂÂÊÊÊÁÁÁÁÁËË */ - $"E9E9 E9E9 EAEA EAEB EBEB EBEC ECEC ECED" /* ÈÈÈÈÍÍÍÎÎÎÎÏÏÏÏÌ */ - $"EDED EDEE EEEE EEEE EFEF EFEF EFF3 FFFF" /* ÌÌÌÓÓÓÓÓÔÔÔÔÔÛˇˇ */ - $"FFFF FFFF FFF4 F0F1 F1F1 F1F1 F1F1 F1F1" /* ˇˇˇˇˇÙÒÒÒÒÒÒÒÒÒ */ - $"F1F1 F1F1 F1F1 F1F1 F1F1 F1F1 F0F0 F0F0" /* ÒÒÒÒÒÒÒÒÒÒÒÒ */ - $"F0F0 EFEF EFEF EFEF EFEE EEEE EEED EDED" /* ÔÔÔÔÔÔÔÓÓÓÓÌÌÌ */ - $"EDED ECEC F1C0 0D00 0000 0000 0000 0000" /* ÌÌÏÏÒ¿.......... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"001D BBE9 E6E5 E5E6 E6E6 E7E7 E7E7 E7E8" /* ..ªÈÊÂÂÊÊÊÁÁÁÁÁË */ - $"E8E9 E9E9 E9EA EAEA EBEB EBEB ECEC ECEC" /* ËÈÈÈÈÍÍÍÎÎÎÎÏÏÏÏ */ - $"EDED EDED EDEE EEEE EEEF EFEF EFEF F8FF" /* ÌÌÌÌÌÓÓÓÓÔÔÔÔÔ¯ˇ */ - $"FFFF FFFF FFF6 EFF1 F1F1 F1F1 F1F1 F1F1" /* ˇˇˇˇˇˆÔÒÒÒÒÒÒÒÒÒ */ - $"F1F1 F1F1 F1F1 F1F1 F1F1 F0F0 F0F0 F0F0" /* ÒÒÒÒÒÒÒÒÒÒ */ - $"F0EF EFEF EFEF EFEF EEEE EEEE EEED EDED" /* ÔÔÔÔÔÔÔÓÓÓÓÓÌÌÌ */ - $"EDEC ECEC ECEF 4A00 0000 0000 0000 0000" /* ÌÏÏÏÏÔJ......... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 31CA E8E6 E5E5 E6E6 E6E7 E7E7 E7E8" /* ..1 ËÊÂÂÊÊÊÁÁÁÁË */ - $"E8E8 E9E9 E9E9 EAEA EAEA EBEB EBEC ECEC" /* ËËÈÈÈÈÍÍÍÍÎÎÎÏÏÏ */ - $"ECED EDED EDED EEEE EEEE EEEF EFEF F0FC" /* ÏÌÌÌÌÌÓÓÓÓÓÔÔÔ¸ */ - $"FFFF FFFF FFF8 F0F0 F0F0 F0F1 F1F1 F1F1" /* ˇˇˇˇˇ¯ÒÒÒÒÒ */ - $"F1F1 F1F1 F1F1 F1F0 F0F0 F0F0 F0F0 F0F0" /* ÒÒÒÒÒÒÒ */ - $"EFEF EFEF EFEF EFEE EEEE EEEE EDED EDED" /* ÔÔÔÔÔÔÔÓÓÓÓÓÌÌÌÌ */ - $"EDEC ECEC ECF3 A003 0000 0000 0000 0000" /* ÌÏÏÏÏÛ†......... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0044 D4E8 E5E5 E5E6 E6E6 E7E7 E7E7" /* ...D‘ËÂÂÂÊÊÊÁÁÁÁ */ - $"E8E8 E8E9 E9E9 E9EA EAEA EBEB EBEB ECEC" /* ËËËÈÈÈÈÍÍÍÎÎÎÎÏÏ */ - $"ECEC EDED EDED EDEE EEEE EEEE EFEF EEF4" /* ÏÏÌÌÌÌÌÓÓÓÓÓÔÔÓÙ */ - $"FFFF FFFF FFFA F0F0 F0F0 F0F0 F0F0 F0F0" /* ˇˇˇˇˇ˙ */ - $"F0F0 F0F0 F0F0 F0F0 F0F0 F0F0 F0F0 EFEF" /* ÔÔ */ - $"EFEF EFEF EFEF EEEE EEEE EEEE EDED EDED" /* ÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌ */ - $"ECEC ECEC ECED E026 0000 0000 0000 0000" /* ÏÏÏÏÏ̇&........ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 51D7 E8E5 E5E5 E6E6 E6E7 E7E7" /* ....Q◊ËÂÂÂÊÊÊÁÁÁ */ - $"E7E7 E8E8 E9E9 E9E9 EAEA EAEB EBEB EBEB" /* ÁÁËËÈÈÈÈÍÍÍÎÎÎÎÎ */ - $"ECEC ECEC EDED EDED EDEE EEEE EEEE EFEF" /* ÏÏÏÏÌÌÌÌÌÓÓÓÓÓÔÔ */ - $"FAFF FFFF FFFB F0EF EFF0 F0F0 F0F0 F0F0" /* ˙ˇˇˇˇ˚ÔÔ */ - $"F0F0 F0F0 F0F0 F0F0 F0F0 F0F0 EFEF EFEF" /* ÔÔÔÔ */ - $"EFEF EFEF EFEE EEEE EEEE EEED EDED EDED" /* ÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌ */ - $"ECEC ECEC EBEB F577 0000 0000 0000 0000" /* ÏÏÏÏÎÎıw........ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0059 D9E8 E6E5 E5E6 E6E6 E7E7" /* .....YŸËÊÂÂÊÊÊÁÁ */ - $"E7E7 E7E8 E8E9 E9E9 E9EA EAEA EAEB EBEB" /* ÁÁÁËËÈÈÈÈÍÍÍÍÎÎÎ */ - $"EBEC ECEC ECED EDED EDED EEEE EEEE EEEE" /* ÎÏÏÏÏÌÌÌÌÌÓÓÓÓÓÓ */ - $"F1FF FFFF FFFD F0EF EFEF EFEF EFEF F0F0" /* Òˇˇˇˇ˝ÔÔÔÔÔÔÔ */ - $"F0F0 F0F0 F0F0 F0F0 EFEF EFEF EFEF EFEF" /* ÔÔÔÔÔÔÔÔ */ - $"EFEF EFEF EEEE EEEE EEEE EDED EDED EDEC" /* ÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÏ */ - $"ECEC ECEC EBEB EFC6 0F00 0000 0000 0000" /* ÏÏÏÏÎÎÔ∆........ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 59D6 E7E6 E5E5 E6E6 E6E7" /* ......Y÷ÁÊÂÂÊÊÊÁ */ - $"E7E7 E7E8 E8E8 E9E9 E9E9 EAEA EAEA EBEB" /* ÁÁÁËËËÈÈÈÈÍÍÍÍÎÎ */ - $"EBEB ECEC ECEC ECED EDED EDED EEEE EEEE" /* ÎÎÏÏÏÏÏÌÌÌÌÌÓÓÓÓ */ - $"EDF6 FFFF FFFE F0EF EFEF EFEF EFEF EFEF" /* ̈ˇˇˇ˛ÔÔÔÔÔÔÔÔÔ */ - $"EFEF EFEF EFEF EFEF EFEF EFEF EFEF EFEF" /* ÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔ */ - $"EFEF EFEE EEEE EEEE EEED EDED EDED ECEC" /* ÔÔÔÓÓÓÓÓÓÌÌÌÌÌÏÏ */ - $"ECEC ECEB EBEB EBEF 4C00 0000 0000 0000" /* ÏÏÏÎÎÎÎÔL....... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0051 D2E7 E6E5 E6E6 E6E6" /* .......Q“ÁÊÂÊÊÊÊ */ - $"E7E7 E7E7 E8E8 E8E9 E9E9 E9EA EAEA EAEB" /* ÁÁÁÁËËËÈÈÈÈÍÍÍÍÎ */ - $"EBEB EBEC ECEC ECEC EDED EDED EDEE EEEE" /* ÎÎÎÏÏÏÏÏÌÌÌÌÌÓÓÓ */ - $"EEEF FCFF FFFE F1EF EFEF EFEF EFEF EFEF" /* ÓÔ¸ˇˇ˛ÒÔÔÔÔÔÔÔÔÔ */ - $"EFEF EFEF EFEF EFEF EFEF EFEF EFEF EFEF" /* ÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔ */ - $"EFEF EEEE EEEE EEEE EEED EDED EDED ECEC" /* ÔÔÓÓÓÓÓÓÓÌÌÌÌÌÏÏ */ - $"ECEC ECEB EBEB EBF2 A203 0000 0000 0000" /* ÏÏÏÎÎÎÎÚ¢....... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 45C7 E7E6 E5E6 E6E6" /* ........E«ÁÊÂÊÊÊ */ - $"E6E7 E7E7 E7E7 E8E8 E9E9 E9E9 EAEA EAEA" /* ÊÁÁÁÁÁËËÈÈÈÈÍÍÍÍ */ - $"EBEB EBEB EBEC ECEC ECEC EDED EDED EDED" /* ÎÎÎÎÎÏÏÏÏÏÌÌÌÌÌÌ */ - $"EEED F3FF FFFF F2EE EFEF EFEF EFEF EFEF" /* ÓÌÛˇˇˇÚÓÔÔÔÔÔÔÔÔ */ - $"EFEF EFEF EFEF EFEF EFEF EFEF EFEF EFEF" /* ÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔ */ - $"EEEE EEEE EEEE EEED EDED EDED EDEC ECEC" /* ÓÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏ */ - $"ECEC EBEB EBEB EBEC E127 0000 0000 0000" /* ÏÏÎÎÎÎÎÏ·'...... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0031 B9E6 E6E5 E6E6" /* .........1πÊÊÂÊÊ */ - $"E6E6 E7E7 E7E7 E8E8 E8E9 E9E9 E9EA EAEA" /* ÊÊÁÁÁÁËËËÈÈÈÈÍÍÍ */ - $"EAEA EBEB EBEB ECEC ECEC ECED EDED EDED" /* ÍÍÎÎÎÎÏÏÏÏÏÌÌÌÌÌ */ - $"EDED EEFA FFFF F3ED EEEE EEEF EFEF EFEF" /* ÌÌÓ˙ˇˇÛÌÓÓÓÔÔÔÔÔ */ - $"EFEF EFEF EFEF EFEF EFEF EFEF EFEE EEEE" /* ÔÔÔÔÔÔÔÔÔÔÔÔÔÓÓÓ */ - $"EEEE EEEE EEEE EDED EDED EDED ECEC ECEC" /* ÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏ */ - $"ECEB EBEB EBEB EAEA F379 0000 0000 0000" /* ÏÎÎÎÎÎÍÍÛy...... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 1E9C E3E7 E6E6" /* ...........ú„ÁÊÊ */ - $"E6E6 E6E7 E7E7 E7E7 E8E8 E9E9 E9E9 EAEA" /* ÊÊÊÁÁÁÁÁËËÈÈÈÈÍÍ */ - $"EAEA EAEB EBEB EBEB ECEC ECEC ECED EDED" /* ÍÍÍÎÎÎÎÎÏÏÏÏÏÌÌÌ */ - $"EDED EDF1 FEFF F5ED EEEE EEEE EEEE EEEF" /* ÌÌÌÒ˛ˇıÌÓÓÓÓÓÓÓÔ */ - $"EFEF EFEF EFEF EFEF EFEF EEEE EEEE EEEE" /* ÔÔÔÔÔÔÔÔÔÔÓÓÓÓÓÓ */ - $"EEEE EEEE EEED EDED EDED EDEC ECEC ECEC" /* ÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏ */ - $"ECEB EBEB EBEB EAEA EFC7 0F00 0000 0000" /* ÏÎÎÎÎÎÍÍÔ«...... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 000A 79D8 E6E6" /* ...........¬yÿÊÊ */ - $"E6E6 E6E6 E7E7 E7E7 E7E8 E8E9 E9E9 E9E9" /* ÊÊÊÊÁÁÁÁÁËËÈÈÈÈÈ */ - $"EAEA EAEA EBEB EBEB EBEC ECEC ECEC ECED" /* ÍÍÍÍÎÎÎÎÎÏÏÏÏÏÏÌ */ - $"EDED EDED F2FF F8ED EEEE EEEE EEEE EEEE" /* ÌÌÌÌÚˇ¯ÌÓÓÓÓÓÓÓÓ */ - $"EEEE EEEE EEEE EEEE EEEE EEEE EEEE EEEE" /* ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ */ - $"EEEE EEED EDED EDED EDED ECEC ECEC ECEC" /* ÓÓÓÌÌÌÌÌÌÌÏÏÏÏÏÏ */ - $"EBEB EBEB EBEA EAEA EAEF 4E00 0000 0000" /* ÎÎÎÎÎÍÍÍÍÔN..... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 004D BFE5" /* .............Mø */ - $"E6E7 E6E6 E6E7 E7E7 E7E7 E8E8 E8E9 E9E9" /* ÊÁÊÊÊÁÁÁÁÁËËËÈÈÈ */ - $"E9EA EAEA EAEA EBEB EBEB EBEC ECEC ECEC" /* ÈÍÍÍÍÍÎÎÎÎÎÏÏÏÏÏ */ - $"ECED EDED EDFB F9ED EDEE EEEE EEEE EEEE" /* ÏÌÌÌÌ˚˘ÌÌÓÓÓÓÓÓÓ */ - $"EEEE EEEE EEEE EEEE EEEE EEEE EEEE EEEE" /* ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓ */ - $"EEED EDED EDED EDED EDEC ECEC ECEC ECEB" /* ÓÌÌÌÌÌÌÌÌÏÏÏÏÏÏÎ */ - $"EBEB EBEB EAEA EAEA EAF1 A303 0000 0000" /* ÎÎÎÎÍÍÍÍÍÒ£..... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 2195" /* ..............!ï */ - $"DCE5 E7E6 E6E6 E7E7 E7E7 E7E8 E8E8 E9E9" /* ‹ÂÁÊÊÊÁÁÁÁÁËËËÈÈ */ - $"E9E9 EAEA EAEA EAEB EBEB EBEB ECEC ECEC" /* ÈÈÍÍÍÍÍÎÎÎÎÎÏÏÏÏ */ - $"ECEC ECED ECF7 FCED EDED EDED EEEE EEEE" /* ÏÏÏÌϘ¸ÌÌÌÌÌÓÓÓÓ */ - $"EEEE EEEE EEEE EEEE EEEE EEEE EEEE EEED" /* ÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÌ */ - $"EDED EDED EDED EDED ECEC ECEC ECEC ECEB" /* ÌÌÌÌÌÌÌÌÏÏÏÏÏÏÏÎ */ - $"EBEB EBEB EAEA EAEA E9EB E12A 0000 0000" /* ÎÎÎÎÍÍÍÍÈη*.... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0004" /* ................ */ - $"57BF E3E7 E7E6 E6E7 E7E7 E7E7 E8E8 E8E9" /* Wø„ÁÁÊÊÁÁÁÁÁËËËÈ */ - $"E9E9 E9E9 EAEA EAEA EBEB EBEB EBEB ECEC" /* ÈÈÈÈÍÍÍÍÎÎÎÎÎÎÏÏ */ - $"ECEC ECEC ECEF FDEF EDED EDED EDED EDED" /* ÏÏÏÏÏÔ˝ÔÌÌÌÌÌÌÌÌ */ - $"EDEE EEEE EEEE EEEE EEEE EEED EDED EDED" /* ÌÓÓÓÓÓÓÓÓÓÓÌÌÌÌÌ */ - $"EDEE EEED EDED EDEC ECEC ECEC ECEC EBEB" /* ÌÓÓÌÌÌÌÏÏÏÏÏÏÏÎÎ */ - $"EBEB EBEA EAEA EAEA E9E9 F27A 0100 0000" /* ÎÎÎÍÍÍÍÍÈÈÚz.... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"001E 84D1 E6E7 E7E6 E7E7 E7E7 E7E8 E8E8" /* ..Ñ—ÊÁÁÊÁÁÁÁÁËËË */ - $"E9E9 E9E9 E9EA EAEA EAEA EBEB EBEB EBEB" /* ÈÈÈÈÈÍÍÍÍÍÎÎÎÎÎÎ */ - $"ECEC ECEC ECEC F9EF EDED EDED EDED EDED" /* ÏÏÏÏÏÏ˘ÔÌÌÌÌÌÌÌÌ */ - $"EDED EDED EDED EDED EDED EDED EDED EDEE" /* ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÓ */ - $"EEEB E6ED EDEC ECEC ECEC ECEC ECEB EBEB" /* ÓÎÊÌÌÏÏÏÏÏÏÏÏÎÎÎ */ - $"EBEB EAEA EAEA EAE9 E9E9 EEC8 0F00 0000" /* ÎÎÍÍÍÍÍÈÈÈÓ».... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0038 9DD9 E6E7 E7E7 E7E7 E7E7 E8E8" /* ...8ùŸÊÁÁÁÁÁÁÁËË */ - $"E8E8 E9E9 E9E9 EAEA EAEA EAEA EBEB EBEB" /* ËËÈÈÈÈÍÍÍÍÍÍÎÎÎÎ */ - $"EBEB ECEC ECEB F0EF ECEC EDED EDED EDED" /* ÎÎÏÏÏÎÔÏÏÌÌÌÌÌÌ */ - $"EDED EDED EDED EDED EDED EDED EDEE EEED" /* ÌÌÌÌÌÌÌÌÌÌÌÌÌÓÓÌ */ - $"E09C 71EA EDEC ECEC ECEC ECEB EBEB EBEB" /* ‡úqÍÌÏÏÏÏÏÏÎÎÎÎÎ */ - $"EBEB EAEA EAEA EAE9 E9E9 E9EE 4F00 0000" /* ÎÎÍÍÍÍÍÈÈÈÈÓO... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0548 A5DA E5E7 E8E8 E7E7 E7E7" /* .....H•⁄ÂÁËËÁÁÁÁ */ - $"E8E8 E8E9 E9E9 E9E9 EAEA EAEA EAEB EBEB" /* ËËËÈÈÈÈÈÍÍÍÍÍÎÎÎ */ - $"EBEB EBEB ECEC ECEC ECEC ECEC ECEC EDED" /* ÎÎÎÎÏÏÏÏÏÏÏÏÏÏÌÌ */ - $"EDED EDED EDED EDED EDED EDEE EFEC E2AD" /* ÌÌÌÌÌÌÌÌÌÌÌÓÔÏ‚≠ */ - $"4B04 06C2 F0EC ECEC ECEC EBEB EBEB EBEB" /* K..¬ÏÏÏÏÏÎÎÎÎÎÎ */ - $"EBEA EAEA EAEA E9E9 E9E9 E9F0 A504 0000" /* ÎÍÍÍÍÍÈÈÈÈÈ•... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 074B 9FD5 E4E6 E9E8 E8E7" /* .......Kü’‰ÊÈËËÁ */ - $"E7E8 E8E8 E9E9 E9E9 E9EA EAEA EAEA EAEB" /* ÁËËËÈÈÈÈÈÍÍÍÍÍÍÎ */ - $"EBEB EBEB EBEB ECEC ECEC ECEC ECEC ECEC" /* ÎÎÎÎÎÎÏÏÏÏÏÏÏÏÏÏ */ - $"ECEC ECEC EDED EDED EEEE EDEB DAA3 4F09" /* ÏÏÏÏÌÌÌÌÓÓÌÎ⁄£O∆ */ - $"0000 0072 F4EC ECEC ECEB EBEB EBEB EBEB" /* ...rÙÏÏÏÏÎÎÎÎÎÎÎ */ - $"EAEA EAEA EAE9 E9E9 E9E9 E8EA E12B 0000" /* ÍÍÍÍÍÈÈÈÈÈËÍ·+.. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 033A 8CC6 E0E6 E7E9" /* .........:å∆‡ÊÁÈ */ - $"E8E8 E8E8 E8E8 E9E9 E9E9 E9EA EAEA EAEA" /* ËËËËËËÈÈÈÈÈÍÍÍÍÍ */ - $"EAEB EBEB EBEB EBEB EBEC ECEC ECEC ECEC" /* ÍÎÎÎÎÎÎÎÎÏÏÏÏÏÏÏ */ - $"ECEC ECEC ECED EDED EBE6 CD92 3C04 0000" /* ÏÏÏÏÏÌÌÌÎÊÕí<... */ - $"0000 0023 DFEF ECEB EBEB EBEB EBEB EAEA" /* ...#flÔÏÎÎÎÎÎÎÎÍÍ */ - $"EAEA EAEA E9E9 E9E9 E9E9 E8E8 F17C 0100" /* ÍÍÍÍÈÈÈÈÈÈËËÒ|.. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0020 64A7 D1E2" /* ........... dß—‚ */ - $"E6E7 E9E8 E8E8 E8E9 E9E9 E9E9 E9EA EAEA" /* ÊÁÈËËËËÈÈÈÈÈÈÍÍÍ */ - $"EAEA EAEB EBEB EBEB EBEB EBEC ECEC ECEC" /* ÍÍÍÎÎÎÎÎÎÎÎÏÏÏÏÏ */ - $"ECED EDED EDEB E8D8 AB67 2300 0000 0000" /* ÏÌÌÌÌÎËÿ´g#..... */ - $"0000 0001 9FF3 EBEB EBEB EBEB EBEA EAEA" /* ....üÛÎÎÎÎÎÎÎÍÍÍ */ - $"EAEA EAEA E9E9 E9E9 E9E8 E8E8 EDC9 1000" /* ÍÍÍÍÈÈÈÈÈËËËÌ….. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0006 3070" /* ..............0p */ - $"A8CC DEE5 E8E8 E9E9 E8E9 E9E9 E9E9 EAEA" /* ®ÃfiÂËËÈÈËÈÈÈÈÈÍÍ */ - $"EAEA EAEA EAEB EBEB EBEB EBEB ECEC ECEC" /* ÍÍÍÍÍÎÎÎÎÎÎÎÏÏÏÏ */ - $"EDEB EAE5 D1A9 7136 0700 0000 0000 0000" /* ÌÎÍ—©q6........ */ - $"0000 0000 48ED EBEB EBEB EBEB EAEA EAEA" /* ....HÌÎÎÎÎÎÎÍÍÍÍ */ - $"EAEA EAE9 E9E9 E9E9 E8E8 E8E8 E8ED 5200" /* ÍÍÍÈÈÈÈÈËËËËËÌR. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0625 588B B1CE DCE3 E6E8 E9E9 E9EA EAE9" /* .%X㱌‹„ÊËÈÈÈÍÍÈ */ - $"EAEA EAEA EAEA EAEB ECEB EBEB EAE9 E7E1" /* ÍÍÍÍÍÍÍÎÏÎÎÎÍÈÁ· */ - $"D0B4 8C5C 2805 0000 0000 0000 0000 0000" /* –¥å\(........... */ - $"0000 0000 0DC4 F0EB EBEB EAEA EAEA EAEA" /* .....ƒÎÎÎÍÍÍÍÍÍ */ - $"EAEA E9E9 E9E9 E9E9 E8E8 E8E8 E7EF A704" /* ÍÍÈÈÈÈÈÈËËËËÁÔß. */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0921 4260 7D96 A7B6 C3CA D2DC" /* ....∆!B`}ñß∂√ “‹ */ - $"E1E5 E8E9 E3E0 DCD5 CAC2 B8AB 957C 6043" /* ·ÂËÈ„‡‹’ ¬∏´ï|`C */ - $"2209 0000 0000 0000 0000 0000 0000 0000" /* "∆.............. */ - $"0000 0000 006D F1EB EBEA EAEA EAEA EAEA" /* .....mÒÎÎÍÍÍÍÍÍÍ */ - $"EAE9 E9E9 E9E9 E9E8 E8E8 E8E7 E7E8 E435" /* ÍÈÈÈÈÈÈËËËËÁÁˉ5 */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0000 0000 0006 101E 2E3A 5072" /* .............:Pr */ - $"848F 9B99 8A7B 6E56 392A 1D12 0500 0000" /* Ñèõôä{nV9*...... */ - $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */ - $"0000 0000 0024 A1A1 A0A0 A0A0 A0A0 A09F" /* .....$°°†††††††ü */ - $"9F9F 9F9F 9F9F 9F9F 9F9F 9F9E 9E9E A548" /* üüüüüüüüüüüûûû•H */ - $"0000 00" /* ... */ -}; - diff --git a/qemu/pc-bios/qemu_logo.svg b/qemu/pc-bios/qemu_logo.svg deleted file mode 100644 index 07b5b516e..000000000 --- a/qemu/pc-bios/qemu_logo.svg +++ /dev/null @@ -1,1010 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="351.84259" - height="111.86757" - id="svg2" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="qemu_logo.svg"> - <title - id="title3182">Kew the Angry Emu</title> - <defs - id="defs4"> - <linearGradient - id="linearGradient4686"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4688" /> - <stop - id="stop3956" - offset="0.75" - style="stop-color:#000000;stop-opacity:0.87843138;" /> - <stop - style="stop-color:#ffffff;stop-opacity:0.43921569;" - offset="0.75" - id="stop3958" /> - <stop - id="stop3960" - offset="0.88" - style="stop-color:#181818;stop-opacity:1;" /> - <stop - style="stop-color:#242424;stop-opacity:1;" - offset="0.88" - id="stop3962" /> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="1" - id="stop4690" /> - </linearGradient> - <linearGradient - id="linearGradient4467"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4469" /> - <stop - style="stop-color:#000000;stop-opacity:0.8974359;" - offset="1" - id="stop4471" /> - </linearGradient> - <linearGradient - id="linearGradient4431"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4433" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4435" /> - </linearGradient> - <linearGradient - id="linearGradient4466"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4468" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4470" /> - </linearGradient> - <linearGradient - id="linearGradient4321"> - <stop - style="stop-color:#ff6702;stop-opacity:1;" - offset="0" - id="stop4323" /> - <stop - style="stop-color:#ff9a55;stop-opacity:1;" - offset="1" - id="stop4325" /> - </linearGradient> - <linearGradient - id="linearGradient4283"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4285" /> - <stop - style="stop-color:#000000;stop-opacity:0;" - offset="1" - id="stop4287" /> - </linearGradient> - <linearGradient - id="linearGradient4251"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4253" /> - <stop - style="stop-color:#000000;stop-opacity:0;" - offset="1" - id="stop4255" /> - </linearGradient> - <linearGradient - id="linearGradient4007"> - <stop - style="stop-color:#ff6600;stop-opacity:1;" - offset="0" - id="stop4009" /> - <stop - style="stop-color:#ff9148;stop-opacity:1;" - offset="1" - id="stop4011" /> - </linearGradient> - <linearGradient - id="linearGradient3999"> - <stop - style="stop-color:#fff7f2;stop-opacity:1;" - offset="0" - id="stop4001" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4003" /> - </linearGradient> - <linearGradient - id="linearGradient3890"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop3892" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3894" /> - </linearGradient> - <linearGradient - id="linearGradient3880"> - <stop - style="stop-color:#eb7400;stop-opacity:1;" - offset="0" - id="stop3882" /> - <stop - style="stop-color:#f7b06a;stop-opacity:1;" - offset="1" - id="stop3884" /> - </linearGradient> - <linearGradient - id="linearGradient4011"> - <stop - style="stop-color:#042dc8;stop-opacity:1;" - offset="0" - id="stop4013" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015" /> - </linearGradient> - <linearGradient - id="linearGradient3879"> - <stop - style="stop-color:#ffffff;stop-opacity:0.90598291;" - offset="0" - id="stop3881" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883" /> - </linearGradient> - <linearGradient - id="linearGradient3869"> - <stop - style="stop-color:#c95000;stop-opacity:1;" - offset="0" - id="stop3871" /> - <stop - style="stop-color:#ff9e5e;stop-opacity:1;" - offset="1" - id="stop3873" /> - </linearGradient> - <linearGradient - id="linearGradient3861"> - <stop - style="stop-color:#f06000;stop-opacity:1;" - offset="0" - id="stop3863" /> - <stop - style="stop-color:#ffccaa;stop-opacity:1;" - offset="1" - id="stop3865" /> - </linearGradient> - <linearGradient - id="linearGradient3826"> - <stop - style="stop-color:#ff6600;stop-opacity:1;" - offset="0" - id="stop3828" /> - <stop - style="stop-color:#ff893b;stop-opacity:1;" - offset="1" - id="stop3830" /> - </linearGradient> - <linearGradient - id="linearGradient3879-6"> - <stop - style="stop-color:#ffffff;stop-opacity:0.90598291;" - offset="0" - id="stop3881-4" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-7" /> - </linearGradient> - <linearGradient - id="linearGradient3869-5"> - <stop - style="stop-color:#c95000;stop-opacity:1;" - offset="0" - id="stop3871-9" /> - <stop - style="stop-color:#ff9e5e;stop-opacity:1;" - offset="1" - id="stop3873-4" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3879-4" - id="linearGradient3885-6" - x1="76.025352" - y1="124.8497" - x2="75.874107" - y2="143.03978" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3879-4"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74" /> - </linearGradient> - <linearGradient - id="linearGradient3869-2"> - <stop - style="stop-color:#c95000;stop-opacity:1;" - offset="0" - id="stop3871-99" /> - <stop - style="stop-color:#ff9e5e;stop-opacity:1;" - offset="1" - id="stop3873-6" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4011" - id="radialGradient4017" - cx="66.639" - cy="93.096375" - fx="66.639" - fy="93.096375" - r="11.515625" - gradientTransform="matrix(0.23244854,1.600893,-1.0124495,0.14700695,145.40424,-26.300303)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3879-4-7" - id="linearGradient3885-6-2" - x1="76.025352" - y1="124.8497" - x2="75.874107" - y2="143.03978" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3879-4-7"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-7" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-6" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4011-5" - id="radialGradient4017-7" - cx="66.639" - cy="93.096375" - fx="66.639" - fy="93.096375" - r="11.515625" - gradientTransform="matrix(0.99779178,6.8718773,-4.3459674,0.6310314,452.75975,-225.98471)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4011-5"> - <stop - style="stop-color:#042dc8;stop-opacity:1;" - offset="0" - id="stop4013-1" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015-3" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3879-4-75" - id="linearGradient3885-6-8" - x1="76.025352" - y1="124.8497" - x2="75.874107" - y2="143.03978" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3879-4-75"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-1" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-4" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4011-0" - id="radialGradient4017-5" - cx="66.639" - cy="93.096375" - fx="66.639" - fy="93.096375" - r="11.515625" - gradientTransform="matrix(0.23244854,1.600893,-1.0124495,0.14700695,146.34996,53.681728)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4011-0"> - <stop - style="stop-color:#042dc8;stop-opacity:1;" - offset="0" - id="stop4013-4" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015-0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4011-0" - id="linearGradient4117" - x1="107.03001" - y1="189.72537" - x2="107.18476" - y2="173.47537" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3879-4-7-2" - id="linearGradient3885-6-2-8" - x1="76.025352" - y1="124.8497" - x2="75.874107" - y2="143.03978" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3879-4-7-2"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-7-9" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-6-9" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4011-5-1" - id="radialGradient4017-7-9" - cx="66.639" - cy="93.096375" - fx="66.639" - fy="93.096375" - r="11.515625" - gradientTransform="matrix(0.99779178,6.8718773,-4.3459674,0.6310314,448.94742,-406.99277)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4011-5-1"> - <stop - style="stop-color:#042dc8;stop-opacity:1;" - offset="0" - id="stop4013-1-9" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015-3-8" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3879-4-7-2-7" - id="linearGradient3885-6-2-8-0" - x1="76.025352" - y1="124.8497" - x2="75.874107" - y2="143.03978" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3879-4-7-2-7"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-7-9-3" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-6-9-6" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4011-5-1-5" - id="radialGradient4017-7-9-5" - cx="66.639" - cy="93.096375" - fx="66.639" - fy="93.096375" - r="11.515625" - gradientTransform="matrix(0.55965334,3.8543806,-2.4376181,0.3539404,454.75182,-145.44353)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4011-5-1-5"> - <stop - style="stop-color:#042dc8;stop-opacity:1;" - offset="0" - id="stop4013-1-9-6" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015-3-8-9" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3879-4-7-2-4" - id="linearGradient3885-6-2-8-4" - x1="76.025352" - y1="124.8497" - x2="75.874107" - y2="143.03978" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3879-4-7-2-4"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-7-9-9" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-6-9-3" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4011-5-1-7" - id="radialGradient4017-7-9-7" - cx="66.639" - cy="93.096375" - fx="66.639" - fy="93.096375" - r="11.515625" - gradientTransform="matrix(0.26837158,1.8482981,-1.1689154,0.16972569,466.57614,26.180822)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4011-5-1-7"> - <stop - style="stop-color:#042dc8;stop-opacity:1;" - offset="0" - id="stop4013-1-9-1" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015-3-8-5" /> - </linearGradient> - <linearGradient - id="linearGradient3879-4-7-2-0"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-7-9-7" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-6-9-8" /> - </linearGradient> - <linearGradient - id="linearGradient4011-5-1-55"> - <stop - style="stop-color:#000a30;stop-opacity:1;" - offset="0" - id="stop4013-1-9-8" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015-3-8-3" /> - </linearGradient> - <linearGradient - id="linearGradient3890-9"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop3892-0" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3894-9" /> - </linearGradient> - <linearGradient - id="linearGradient3880-4"> - <stop - style="stop-color:#eb7400;stop-opacity:1;" - offset="0" - id="stop3882-5" /> - <stop - style="stop-color:#f7b06a;stop-opacity:1;" - offset="1" - id="stop3884-1" /> - </linearGradient> - <linearGradient - id="linearGradient3999-7"> - <stop - style="stop-color:#fff7f2;stop-opacity:1;" - offset="0" - id="stop4001-9" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4003-4" /> - </linearGradient> - <linearGradient - id="linearGradient4007-9"> - <stop - style="stop-color:#ff6600;stop-opacity:1;" - offset="0" - id="stop4009-1" /> - <stop - style="stop-color:#ff9148;stop-opacity:1;" - offset="1" - id="stop4011-9" /> - </linearGradient> - <linearGradient - id="linearGradient4007-9-5"> - <stop - style="stop-color:#ff6600;stop-opacity:1;" - offset="0" - id="stop4009-1-9" /> - <stop - style="stop-color:#ff9148;stop-opacity:1;" - offset="1" - id="stop4011-9-5" /> - </linearGradient> - <linearGradient - id="linearGradient3999-7-1"> - <stop - style="stop-color:#fff7f2;stop-opacity:1;" - offset="0" - id="stop4001-9-1" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4003-4-4" /> - </linearGradient> - <linearGradient - id="linearGradient4007-9-5-3"> - <stop - style="stop-color:#ff6600;stop-opacity:1;" - offset="0" - id="stop4009-1-9-3" /> - <stop - style="stop-color:#ff9148;stop-opacity:1;" - offset="1" - id="stop4011-9-5-9" /> - </linearGradient> - <linearGradient - id="linearGradient3999-7-1-4"> - <stop - style="stop-color:#fff7f2;stop-opacity:1;" - offset="0" - id="stop4001-9-1-4" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4003-4-4-4" /> - </linearGradient> - <linearGradient - id="linearGradient3879-4-7-2-3"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-7-9-1" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-6-9-87" /> - </linearGradient> - <linearGradient - id="linearGradient4011-5-1-1"> - <stop - style="stop-color:#fde8a1;stop-opacity:1;" - offset="0" - id="stop4013-1-9-63" /> - <stop - style="stop-color:#2947b9;stop-opacity:1;" - offset="1" - id="stop4015-3-8-8" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4466" - id="linearGradient4472" - x1="161.7561" - y1="540.72662" - x2="161.7561" - y2="579.80206" - gradientUnits="userSpaceOnUse" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4321" - id="radialGradient4474" - cx="130.8242" - cy="575.27838" - fx="130.8242" - fy="575.27838" - r="49.498173" - gradientTransform="matrix(0.95670828,0.96684666,-0.72623533,0.71862001,423.45109,35.05138)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4466-5" - id="linearGradient4472-9" - x1="161.7561" - y1="540.72662" - x2="161.7561" - y2="579.80206" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4466-5"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4468-2" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4470-3" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4321-0" - id="radialGradient4474-6" - cx="130.8242" - cy="575.27838" - fx="130.8242" - fy="575.27838" - r="49.498173" - gradientTransform="matrix(0.95670828,0.96684666,-0.72623533,0.71862001,442.64399,170.9169)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4321-0"> - <stop - style="stop-color:#ff6702;stop-opacity:1;" - offset="0" - id="stop4323-3" /> - <stop - style="stop-color:#ff9a55;stop-opacity:1;" - offset="1" - id="stop4325-1" /> - </linearGradient> - <linearGradient - id="linearGradient4466-5-5"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4468-2-9" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4470-3-4" /> - </linearGradient> - <linearGradient - id="linearGradient4321-0-0"> - <stop - style="stop-color:#ff6702;stop-opacity:1;" - offset="0" - id="stop4323-3-9" /> - <stop - style="stop-color:#ff9a55;stop-opacity:1;" - offset="1" - id="stop4325-1-1" /> - </linearGradient> - <linearGradient - id="linearGradient4466-5-9"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4468-2-7" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4470-3-7" /> - </linearGradient> - <linearGradient - id="linearGradient4321-0-7"> - <stop - style="stop-color:#ff6702;stop-opacity:1;" - offset="0" - id="stop4323-3-3" /> - <stop - style="stop-color:#ff9a55;stop-opacity:1;" - offset="1" - id="stop4325-1-6" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4431" - id="linearGradient4437" - x1="142.81854" - y1="831.52283" - x2="142.81854" - y2="878.90735" - gradientUnits="userSpaceOnUse" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4467" - id="radialGradient4475" - cx="116.51958" - cy="98.282051" - fx="116.51958" - fy="98.282051" - r="55.859375" - gradientTransform="matrix(0.97442557,1.5088911,-0.83559154,0.53961599,79.641615,-130.28522)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4431-3" - id="linearGradient4437-6" - x1="142.81854" - y1="831.52283" - x2="142.81854" - y2="878.90735" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4431-3"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4433-0" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4435-2" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4467-7" - id="radialGradient4475-0" - cx="116.51958" - cy="98.282051" - fx="116.51958" - fy="98.282051" - r="55.859375" - gradientTransform="matrix(0.97442557,1.5088911,-0.83559154,0.53961599,225.10358,63.664066)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4467-7"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4469-4" /> - <stop - style="stop-color:#000000;stop-opacity:0.8974359;" - offset="1" - id="stop4471-7" /> - </linearGradient> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="1.0170184" - inkscape:cx="539.34448" - inkscape:cy="-81.088823" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - showguides="false" - inkscape:guide-bbox="true" - inkscape:window-width="992" - inkscape:window-height="547" - inkscape:window-x="30" - inkscape:window-y="24" - inkscape:window-maximized="0" - fit-margin-top="0" - fit-margin-left="0" - fit-margin-right="0" - fit-margin-bottom="0"> - <sodipodi:guide - orientation="0,1" - position="52.563745,58.089579" - id="guide2989" /> - <sodipodi:guide - orientation="0,1" - position="54.584055,28.037549" - id="guide2991" /> - <sodipodi:guide - orientation="1,0" - position="51.048515,41.169529" - id="guide2993" /> - <sodipodi:guide - orientation="1,0" - position="77.817565,40.916989" - id="guide2995" /> - <sodipodi:guide - orientation="1,0" - position="51.048515,41.169529" - id="guide3017" /> - <inkscape:grid - type="xygrid" - id="grid3019" - empspacing="5" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" - originx="-62.341105px" - originy="-884.63528px" /> - <sodipodi:guide - orientation="1,0" - position="85.658895,8.3647193" - id="guide3021" /> - <sodipodi:guide - orientation="1,0" - position="106.6589,4.3647193" - id="guide3023" /> - <sodipodi:guide - orientation="0,1" - position="90.658895,17.364719" - id="guide3025" /> - <sodipodi:guide - orientation="0,1" - position="90.658895,-6.6352807" - id="guide3027" /> - <sodipodi:guide - orientation="0,1" - position="-0.341105,-14.635281" - id="guide3810" /> - <sodipodi:guide - orientation="0,1" - position="1.658895,-49.635281" - id="guide3814" /> - <sodipodi:guide - orientation="0,1" - position="-17.698248,11.257579" - id="guide3856" /> - <sodipodi:guide - orientation="0,1" - position="6.601806,11.257579" - id="guide3887" /> - <sodipodi:guide - orientation="0,1" - position="24.658283,58.089579" - id="guide4019" /> - <sodipodi:guide - orientation="0,1" - position="106.6589,-6.6352807" - id="guide4481" /> - <sodipodi:guide - orientation="0,1" - position="139.08747,-193.20671" - id="guide4483" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title>Kew the Angry Emu</dc:title> - <dc:creator> - <cc:Agent> - <dc:title>Benoît Canet</dc:title> - </cc:Agent> - </dc:creator> - <dc:rights> - <cc:Agent> - <dc:title>CC BY 3.0</dc:title> - </cc:Agent> - </dc:rights> - <dc:publisher> - <cc:Agent> - <dc:title>QEMU Community</dc:title> - </cc:Agent> - </dc:publisher> - <dc:date>2012-02-15</dc:date> - <cc:license - rdf:resource="http://creativecommons.org/licenses/by/3.0/" /> - <dc:subject> - <rdf:Bag> - <rdf:li>QEMU logo</rdf:li> - <rdf:li>QEMU mascot</rdf:li> - </rdf:Bag> - </dc:subject> - <dc:source>http://lists.gnu.org/archive/html/qemu-devel/2012-02/msg01961.html</dc:source> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/by/3.0/"> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Reproduction" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#Distribution" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Notice" /> - <cc:requires - rdf:resource="http://creativecommons.org/ns#Attribution" /> - <cc:permits - rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> - </cc:License> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(-62.341105,-55.859333)"> - <path - inkscape:connector-curvature="0" - style="fill:url(#radialGradient4475);fill-opacity:1;stroke:none" - d="m 118.2161,55.859333 c -30.850815,0 -55.874995,24.87043 -55.874995,55.562497 0,30.69207 25.02418,55.56249 55.874995,55.56249 10.09496,0 19.54625,-2.6525 27.71875,-7.3125 l 2.90625,7.3125 2.40625,0 20,0 0.125,0 -8.8125,-21.78124 c 7.21537,-9.3622 11.5,-21.07236 11.5,-33.78125 0,-30.692067 -24.99293,-55.562497 -55.84375,-55.562497 z" - id="path3834-7-7-2-5-5-0-5-4" /> - <path - sodipodi:type="arc" - style="fill:url(#linearGradient4437);fill-opacity:1;stroke:none" - id="path3661" - sodipodi:cx="142.5" - sodipodi:cy="856.29077" - sodipodi:rx="35.357143" - sodipodi:ry="24.642857" - d="m 177.85714,856.29077 c 0,13.60988 -15.82993,24.64286 -35.35714,24.64286 -19.52721,0 -35.35714,-11.03298 -35.35714,-24.64286 0,-13.60987 15.82993,-24.64286 35.35714,-24.64286 19.52721,0 35.35714,11.03299 35.35714,24.64286 z" - transform="matrix(1.0465082,0,0,1.2920463,-31.641235,-1016.8612)" /> - <path - sodipodi:type="arc" - style="fill:#000000;fill-opacity:1;stroke:none" - id="path4442" - sodipodi:cx="115.66247" - sodipodi:cy="856.39258" - sodipodi:rx="6.5659914" - sodipodi:ry="6.5659914" - d="m 122.22846,856.39258 c 0,3.6263 -2.9397,6.56599 -6.56599,6.56599 -3.6263,0 -6.56599,-2.93969 -6.56599,-6.56599 0,-3.6263 2.93969,-6.56599 6.56599,-6.56599 3.62629,0 6.56599,2.93969 6.56599,6.56599 z" - transform="translate(7.6700247,-777.60351)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none" - id="rect4444" - width="37.643608" - height="5.5005069" - x="125.01157" - y="65.255234" - transform="matrix(0.98974903,0.14281759,-0.18972639,0.981837,0,0)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none" - id="rect4446" - width="6.5659914" - height="2.9041886" - x="144.92451" - y="89.016899" /> - <path - style="fill:#ff6600;fill-opacity:1" - d="m 103.38797,65.010543 c -0.057,2.18531 -3.865755,0.28296 -4.031245,2.78125 -4.22387,-1.88052 0.32884,2.87188 -0.0937,3.3125 l -0.0312,0 -0.3125,-0.0312 c -0.20386,-0.0728 -0.49977,-0.19904 -0.9375,-0.46875 -2.9499,2.35025 -3.02157,7.23369 -6.0625,9.9375 -1.99467,4.30504 -2.47977,8.98337 -3.9375,13.46875 -0.71796,4.30292 -1.34881,8.597857 -0.28125,12.906247 0.32053,3.50159 -0.68919,8.25865 2.5,10.71875 4.72728,3.88304 8.65575,8.79543 12.624995,13.46875 6.21914,7.65333 11.72948,15.86251 16.59375,24.4375 0.32431,-2.11756 1.10954,4.26459 2.53125,4.6875 -0.49161,-3.19231 -1.13213,-8.26328 -1.4375,-12.1875 -1.5814,-10.2909 -6.65305,-19.64903 -8.5625,-29.84375 -0.0587,-0.43037 -0.12809,-0.87203 -0.1875,-1.3125 l 0,-1.28125 -0.15625,0 c -0.62551,-5.04297 -0.8504,-10.46546 2.8125,-14.40625 3.73968,-3.772097 9.30633,-4.722447 13.8125,-7.343747 1.00194,-0.59119 2.04921,-1.07174 3.125,-1.40625 0.009,-0.003 0.0228,0.003 0.0312,0 3.11701,-0.96341 6.44862,-0.93323 9.6875,-0.40625 0.0479,0.008 0.10841,0.0233 0.15625,0.0312 0.29455,0.0493 0.61389,0.099 0.90625,0.15625 2.37136,0.21133 7.14463,1.13687 8,-0.5 -3.27225,-2.78631 -7.98526,-2.59211 -11.96875,-3.6875 -0.63059,-0.11469 -1.41182,-0.24041 -2.1875,-0.3125 l -3.90625,-0.875 -0.96875,-0.25 0,0.0312 -13.96875,-2.71875 c -0.22212,-0.20226 -0.46434,-0.40933 -0.6875,-0.5625 l 13.625,1.6875 0,-0.0625 c 0.48011,0.10699 0.95576,0.19361 1.4375,0.25 l 0,0.0312 9.625,1.78125 c 1.66103,0.61952 3.4322,1.08374 5.09375,1.1875 2.74263,0.39907 6.22526,4.49092 7.125,4.6875 -0.44096,-4.307 -4.7422,-6.23586 -8.3125,-7.5 -4.1712,-2.02803 -10.4023,-1.95417 -11.0625,-7.5625 -0.1756,-0.39076 -0.34902,-0.78118 -0.5625,-1.15625 l -1.625,-2.15625 0.0625,-0.0312 c -2.21724,-2.61691 -5.34011,-4.52196 -8.65625,-5.25 -3.2914,-1.13611 -6.98773,-2.2671 -10.46875,-2.71875 -1.18132,3.47826 -2.5031,-2.75561 -5.34375,-0.90625 -2.48996,0.29488 -2.14614,0.95256 -4,-0.625 z m 17.90625,10.15625 c 0.90187,-0.0238 1.93277,0.14208 2.96875,0.5 2.76259,0.95447 4.56151,2.96523 4.03125,4.5 -0.53026,1.53477 -3.20616,1.98572 -5.96875,1.03125 -2.76259,-0.95447 -4.5615,-2.93398 -4.03125,-4.46875 0.33141,-0.95923 1.49689,-1.52281 3,-1.5625 z" - id="path3499-9-7" - inkscape:connector-curvature="0" /> - <text - xml:space="preserve" - style="font-size:95.54121399px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" - x="184.89412" - y="166.37402" - id="text4477" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan4479" - x="184.89412" - y="166.37402" - style="fill:#000000;fill-opacity:1">EMU</tspan></text> - </g> -</svg> diff --git a/qemu/pc-bios/qemu_logo_no_text.svg b/qemu/pc-bios/qemu_logo_no_text.svg deleted file mode 100644 index 24ca23a1e..000000000 --- a/qemu/pc-bios/qemu_logo_no_text.svg +++ /dev/null @@ -1,976 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="111.71874" - height="111.12498" - id="svg2" - version="1.1" - inkscape:version="0.48.2 r9819" - sodipodi:docname="qemu_logo_no_text.svg"> - <defs - id="defs4"> - <linearGradient - id="linearGradient4686"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4688" /> - <stop - id="stop3956" - offset="0.75" - style="stop-color:#000000;stop-opacity:0.87843138;" /> - <stop - style="stop-color:#ffffff;stop-opacity:0.43921569;" - offset="0.75" - id="stop3958" /> - <stop - id="stop3960" - offset="0.88" - style="stop-color:#181818;stop-opacity:1;" /> - <stop - style="stop-color:#242424;stop-opacity:1;" - offset="0.88" - id="stop3962" /> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="1" - id="stop4690" /> - </linearGradient> - <linearGradient - id="linearGradient4467"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4469" /> - <stop - style="stop-color:#000000;stop-opacity:0.8974359;" - offset="1" - id="stop4471" /> - </linearGradient> - <linearGradient - id="linearGradient4431"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4433" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4435" /> - </linearGradient> - <linearGradient - id="linearGradient4466"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4468" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4470" /> - </linearGradient> - <linearGradient - id="linearGradient4321"> - <stop - style="stop-color:#ff6702;stop-opacity:1;" - offset="0" - id="stop4323" /> - <stop - style="stop-color:#ff9a55;stop-opacity:1;" - offset="1" - id="stop4325" /> - </linearGradient> - <linearGradient - id="linearGradient4283"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4285" /> - <stop - style="stop-color:#000000;stop-opacity:0;" - offset="1" - id="stop4287" /> - </linearGradient> - <linearGradient - id="linearGradient4251"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4253" /> - <stop - style="stop-color:#000000;stop-opacity:0;" - offset="1" - id="stop4255" /> - </linearGradient> - <linearGradient - id="linearGradient4007"> - <stop - style="stop-color:#ff6600;stop-opacity:1;" - offset="0" - id="stop4009" /> - <stop - style="stop-color:#ff9148;stop-opacity:1;" - offset="1" - id="stop4011" /> - </linearGradient> - <linearGradient - id="linearGradient3999"> - <stop - style="stop-color:#fff7f2;stop-opacity:1;" - offset="0" - id="stop4001" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4003" /> - </linearGradient> - <linearGradient - id="linearGradient3890"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop3892" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3894" /> - </linearGradient> - <linearGradient - id="linearGradient3880"> - <stop - style="stop-color:#eb7400;stop-opacity:1;" - offset="0" - id="stop3882" /> - <stop - style="stop-color:#f7b06a;stop-opacity:1;" - offset="1" - id="stop3884" /> - </linearGradient> - <linearGradient - id="linearGradient4011"> - <stop - style="stop-color:#042dc8;stop-opacity:1;" - offset="0" - id="stop4013" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015" /> - </linearGradient> - <linearGradient - id="linearGradient3879"> - <stop - style="stop-color:#ffffff;stop-opacity:0.90598291;" - offset="0" - id="stop3881" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883" /> - </linearGradient> - <linearGradient - id="linearGradient3869"> - <stop - style="stop-color:#c95000;stop-opacity:1;" - offset="0" - id="stop3871" /> - <stop - style="stop-color:#ff9e5e;stop-opacity:1;" - offset="1" - id="stop3873" /> - </linearGradient> - <linearGradient - id="linearGradient3861"> - <stop - style="stop-color:#f06000;stop-opacity:1;" - offset="0" - id="stop3863" /> - <stop - style="stop-color:#ffccaa;stop-opacity:1;" - offset="1" - id="stop3865" /> - </linearGradient> - <linearGradient - id="linearGradient3826"> - <stop - style="stop-color:#ff6600;stop-opacity:1;" - offset="0" - id="stop3828" /> - <stop - style="stop-color:#ff893b;stop-opacity:1;" - offset="1" - id="stop3830" /> - </linearGradient> - <linearGradient - id="linearGradient3879-6"> - <stop - style="stop-color:#ffffff;stop-opacity:0.90598291;" - offset="0" - id="stop3881-4" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-7" /> - </linearGradient> - <linearGradient - id="linearGradient3869-5"> - <stop - style="stop-color:#c95000;stop-opacity:1;" - offset="0" - id="stop3871-9" /> - <stop - style="stop-color:#ff9e5e;stop-opacity:1;" - offset="1" - id="stop3873-4" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3879-4" - id="linearGradient3885-6" - x1="76.025352" - y1="124.8497" - x2="75.874107" - y2="143.03978" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3879-4"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74" /> - </linearGradient> - <linearGradient - id="linearGradient3869-2"> - <stop - style="stop-color:#c95000;stop-opacity:1;" - offset="0" - id="stop3871-99" /> - <stop - style="stop-color:#ff9e5e;stop-opacity:1;" - offset="1" - id="stop3873-6" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4011" - id="radialGradient4017" - cx="66.639" - cy="93.096375" - fx="66.639" - fy="93.096375" - r="11.515625" - gradientTransform="matrix(0.23244854,1.600893,-1.0124495,0.14700695,145.40424,-26.300303)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3879-4-7" - id="linearGradient3885-6-2" - x1="76.025352" - y1="124.8497" - x2="75.874107" - y2="143.03978" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3879-4-7"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-7" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-6" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4011-5" - id="radialGradient4017-7" - cx="66.639" - cy="93.096375" - fx="66.639" - fy="93.096375" - r="11.515625" - gradientTransform="matrix(0.99779178,6.8718773,-4.3459674,0.6310314,452.75975,-225.98471)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4011-5"> - <stop - style="stop-color:#042dc8;stop-opacity:1;" - offset="0" - id="stop4013-1" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015-3" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3879-4-75" - id="linearGradient3885-6-8" - x1="76.025352" - y1="124.8497" - x2="75.874107" - y2="143.03978" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3879-4-75"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-1" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-4" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4011-0" - id="radialGradient4017-5" - cx="66.639" - cy="93.096375" - fx="66.639" - fy="93.096375" - r="11.515625" - gradientTransform="matrix(0.23244854,1.600893,-1.0124495,0.14700695,146.34996,53.681728)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4011-0"> - <stop - style="stop-color:#042dc8;stop-opacity:1;" - offset="0" - id="stop4013-4" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015-0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4011-0" - id="linearGradient4117" - x1="107.03001" - y1="189.72537" - x2="107.18476" - y2="173.47537" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3879-4-7-2" - id="linearGradient3885-6-2-8" - x1="76.025352" - y1="124.8497" - x2="75.874107" - y2="143.03978" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3879-4-7-2"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-7-9" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-6-9" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4011-5-1" - id="radialGradient4017-7-9" - cx="66.639" - cy="93.096375" - fx="66.639" - fy="93.096375" - r="11.515625" - gradientTransform="matrix(0.99779178,6.8718773,-4.3459674,0.6310314,448.94742,-406.99277)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4011-5-1"> - <stop - style="stop-color:#042dc8;stop-opacity:1;" - offset="0" - id="stop4013-1-9" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015-3-8" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3879-4-7-2-7" - id="linearGradient3885-6-2-8-0" - x1="76.025352" - y1="124.8497" - x2="75.874107" - y2="143.03978" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3879-4-7-2-7"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-7-9-3" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-6-9-6" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4011-5-1-5" - id="radialGradient4017-7-9-5" - cx="66.639" - cy="93.096375" - fx="66.639" - fy="93.096375" - r="11.515625" - gradientTransform="matrix(0.55965334,3.8543806,-2.4376181,0.3539404,454.75182,-145.44353)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4011-5-1-5"> - <stop - style="stop-color:#042dc8;stop-opacity:1;" - offset="0" - id="stop4013-1-9-6" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015-3-8-9" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3879-4-7-2-4" - id="linearGradient3885-6-2-8-4" - x1="76.025352" - y1="124.8497" - x2="75.874107" - y2="143.03978" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient3879-4-7-2-4"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-7-9-9" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-6-9-3" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4011-5-1-7" - id="radialGradient4017-7-9-7" - cx="66.639" - cy="93.096375" - fx="66.639" - fy="93.096375" - r="11.515625" - gradientTransform="matrix(0.26837158,1.8482981,-1.1689154,0.16972569,466.57614,26.180822)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4011-5-1-7"> - <stop - style="stop-color:#042dc8;stop-opacity:1;" - offset="0" - id="stop4013-1-9-1" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015-3-8-5" /> - </linearGradient> - <linearGradient - id="linearGradient3879-4-7-2-0"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-7-9-7" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-6-9-8" /> - </linearGradient> - <linearGradient - id="linearGradient4011-5-1-55"> - <stop - style="stop-color:#000a30;stop-opacity:1;" - offset="0" - id="stop4013-1-9-8" /> - <stop - style="stop-color:#4260d5;stop-opacity:1;" - offset="1" - id="stop4015-3-8-3" /> - </linearGradient> - <linearGradient - id="linearGradient3890-9"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop3892-0" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3894-9" /> - </linearGradient> - <linearGradient - id="linearGradient3880-4"> - <stop - style="stop-color:#eb7400;stop-opacity:1;" - offset="0" - id="stop3882-5" /> - <stop - style="stop-color:#f7b06a;stop-opacity:1;" - offset="1" - id="stop3884-1" /> - </linearGradient> - <linearGradient - id="linearGradient3999-7"> - <stop - style="stop-color:#fff7f2;stop-opacity:1;" - offset="0" - id="stop4001-9" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4003-4" /> - </linearGradient> - <linearGradient - id="linearGradient4007-9"> - <stop - style="stop-color:#ff6600;stop-opacity:1;" - offset="0" - id="stop4009-1" /> - <stop - style="stop-color:#ff9148;stop-opacity:1;" - offset="1" - id="stop4011-9" /> - </linearGradient> - <linearGradient - id="linearGradient4007-9-5"> - <stop - style="stop-color:#ff6600;stop-opacity:1;" - offset="0" - id="stop4009-1-9" /> - <stop - style="stop-color:#ff9148;stop-opacity:1;" - offset="1" - id="stop4011-9-5" /> - </linearGradient> - <linearGradient - id="linearGradient3999-7-1"> - <stop - style="stop-color:#fff7f2;stop-opacity:1;" - offset="0" - id="stop4001-9-1" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4003-4-4" /> - </linearGradient> - <linearGradient - id="linearGradient4007-9-5-3"> - <stop - style="stop-color:#ff6600;stop-opacity:1;" - offset="0" - id="stop4009-1-9-3" /> - <stop - style="stop-color:#ff9148;stop-opacity:1;" - offset="1" - id="stop4011-9-5-9" /> - </linearGradient> - <linearGradient - id="linearGradient3999-7-1-4"> - <stop - style="stop-color:#fff7f2;stop-opacity:1;" - offset="0" - id="stop4001-9-1-4" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4003-4-4-4" /> - </linearGradient> - <linearGradient - id="linearGradient3879-4-7-2-3"> - <stop - style="stop-color:#ffffff;stop-opacity:0.93162394;" - offset="0" - id="stop3881-6-7-9-1" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop3883-74-6-9-87" /> - </linearGradient> - <linearGradient - id="linearGradient4011-5-1-1"> - <stop - style="stop-color:#fde8a1;stop-opacity:1;" - offset="0" - id="stop4013-1-9-63" /> - <stop - style="stop-color:#2947b9;stop-opacity:1;" - offset="1" - id="stop4015-3-8-8" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4466" - id="linearGradient4472" - x1="161.7561" - y1="540.72662" - x2="161.7561" - y2="579.80206" - gradientUnits="userSpaceOnUse" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4321" - id="radialGradient4474" - cx="130.8242" - cy="575.27838" - fx="130.8242" - fy="575.27838" - r="49.498173" - gradientTransform="matrix(0.95670828,0.96684666,-0.72623533,0.71862001,423.45109,35.05138)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4466-5" - id="linearGradient4472-9" - x1="161.7561" - y1="540.72662" - x2="161.7561" - y2="579.80206" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4466-5"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4468-2" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4470-3" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4321-0" - id="radialGradient4474-6" - cx="130.8242" - cy="575.27838" - fx="130.8242" - fy="575.27838" - r="49.498173" - gradientTransform="matrix(0.95670828,0.96684666,-0.72623533,0.71862001,442.64399,170.9169)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4321-0"> - <stop - style="stop-color:#ff6702;stop-opacity:1;" - offset="0" - id="stop4323-3" /> - <stop - style="stop-color:#ff9a55;stop-opacity:1;" - offset="1" - id="stop4325-1" /> - </linearGradient> - <linearGradient - id="linearGradient4466-5-5"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4468-2-9" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4470-3-4" /> - </linearGradient> - <linearGradient - id="linearGradient4321-0-0"> - <stop - style="stop-color:#ff6702;stop-opacity:1;" - offset="0" - id="stop4323-3-9" /> - <stop - style="stop-color:#ff9a55;stop-opacity:1;" - offset="1" - id="stop4325-1-1" /> - </linearGradient> - <linearGradient - id="linearGradient4466-5-9"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4468-2-7" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4470-3-7" /> - </linearGradient> - <linearGradient - id="linearGradient4321-0-7"> - <stop - style="stop-color:#ff6702;stop-opacity:1;" - offset="0" - id="stop4323-3-3" /> - <stop - style="stop-color:#ff9a55;stop-opacity:1;" - offset="1" - id="stop4325-1-6" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4431" - id="linearGradient4437" - x1="142.81854" - y1="831.52283" - x2="142.81854" - y2="878.90735" - gradientUnits="userSpaceOnUse" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4467" - id="radialGradient4475" - cx="116.51958" - cy="98.282051" - fx="116.51958" - fy="98.282051" - r="55.859375" - gradientTransform="matrix(0.97442557,1.5088911,-0.83559154,0.53961599,79.641615,-130.28522)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4431-3" - id="linearGradient4437-6" - x1="142.81854" - y1="831.52283" - x2="142.81854" - y2="878.90735" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4431-3"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop4433-0" /> - <stop - style="stop-color:#ffffff;stop-opacity:0;" - offset="1" - id="stop4435-2" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4467-7" - id="radialGradient4475-0" - cx="116.51958" - cy="98.282051" - fx="116.51958" - fy="98.282051" - r="55.859375" - gradientTransform="matrix(0.97442557,1.5088911,-0.83559154,0.53961599,225.10358,63.664066)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient4467-7"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4469-4" /> - <stop - style="stop-color:#000000;stop-opacity:0.8974359;" - offset="1" - id="stop4471-7" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient4467" - id="radialGradient3262" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.97442557,1.5088911,-0.83559154,0.53961599,59.641615,-150.28522)" - cx="116.51958" - cy="98.282051" - fx="116.51958" - fy="98.282051" - r="55.859375" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4431" - id="linearGradient3264" - gradientUnits="userSpaceOnUse" - x1="142.81854" - y1="831.52283" - x2="142.81854" - y2="878.90735" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="5.6" - inkscape:cx="31.144191" - inkscape:cy="38.335716" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - showguides="false" - inkscape:guide-bbox="true" - inkscape:window-width="1920" - inkscape:window-height="1056" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" - fit-margin-top="0" - fit-margin-right="0" - fit-margin-bottom="0" - fit-margin-left="0"> - <sodipodi:guide - orientation="0,1" - position="72.563745,37.346999" - id="guide2989" /> - <sodipodi:guide - orientation="0,1" - position="74.584055,7.2949693" - id="guide2991" /> - <sodipodi:guide - orientation="1,0" - position="71.048515,20.426949" - id="guide2993" /> - <sodipodi:guide - orientation="1,0" - position="97.817565,20.174409" - id="guide2995" /> - <sodipodi:guide - orientation="1,0" - position="71.048515,20.426949" - id="guide3017" /> - <inkscape:grid - type="xygrid" - id="grid3019" - empspacing="5" - visible="true" - enabled="true" - snapvisiblegridlinesonly="true" /> - <sodipodi:guide - orientation="1,0" - position="105.6589,-12.377861" - id="guide3021" /> - <sodipodi:guide - orientation="1,0" - position="126.6589,-16.377861" - id="guide3023" /> - <sodipodi:guide - orientation="0,1" - position="110.6589,-3.3778607" - id="guide3025" /> - <sodipodi:guide - orientation="0,1" - position="110.6589,-27.377861" - id="guide3027" /> - <sodipodi:guide - orientation="0,1" - position="19.658895,-35.37786" - id="guide3810" /> - <sodipodi:guide - orientation="0,1" - position="21.658895,-70.377861" - id="guide3814" /> - <sodipodi:guide - orientation="0,1" - position="2.301752,-9.4850007" - id="guide3856" /> - <sodipodi:guide - orientation="0,1" - position="26.601806,-9.4850007" - id="guide3887" /> - <sodipodi:guide - orientation="0,1" - position="44.658283,37.346999" - id="guide4019" /> - <sodipodi:guide - orientation="0,1" - position="126.6589,-27.377861" - id="guide4481" /> - <sodipodi:guide - orientation="0,1" - position="159.08747,-213.94929" - id="guide4483" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(-42.341105,-35.859333)"> - <path - inkscape:connector-curvature="0" - style="fill:url(#radialGradient3262);fill-opacity:1;stroke:none" - d="m 98.2161,35.859333 c -30.850815,0 -55.874995,24.87043 -55.874995,55.562497 0,30.69207 25.02418,55.56249 55.874995,55.56249 10.09496,0 19.54625,-2.6525 27.71875,-7.3125 l 2.90625,7.3125 2.40625,0 20,0 0.125,0 -8.8125,-21.78124 c 7.21537,-9.3622 11.5,-21.07236 11.5,-33.78125 0,-30.692067 -24.99293,-55.562497 -55.84375,-55.562497 z" - id="path3834-7-7-2-5-5-0-5-4" /> - <path - sodipodi:type="arc" - style="fill:url(#linearGradient3264);fill-opacity:1;stroke:none" - id="path3661" - sodipodi:cx="142.5" - sodipodi:cy="856.29077" - sodipodi:rx="35.357143" - sodipodi:ry="24.642857" - d="m 177.85714,856.29077 c 0,13.60988 -15.82993,24.64286 -35.35714,24.64286 -19.52721,0 -35.35714,-11.03298 -35.35714,-24.64286 0,-13.60987 15.82993,-24.64286 35.35714,-24.64286 19.52721,0 35.35714,11.03299 35.35714,24.64286 z" - transform="matrix(1.0465082,0,0,1.2920463,-51.641235,-1036.8612)" /> - <path - sodipodi:type="arc" - style="fill:#000000;fill-opacity:1;stroke:none" - id="path4442" - sodipodi:cx="115.66247" - sodipodi:cy="856.39258" - sodipodi:rx="6.5659914" - sodipodi:ry="6.5659914" - d="m 122.22846,856.39258 c 0,3.6263 -2.9397,6.56599 -6.56599,6.56599 -3.6263,0 -6.56599,-2.93969 -6.56599,-6.56599 0,-3.6263 2.93969,-6.56599 6.56599,-6.56599 3.62629,0 6.56599,2.93969 6.56599,6.56599 z" - transform="translate(-12.329975,-797.60351)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none" - id="rect4444" - width="37.643608" - height="5.5005069" - x="101.55376" - y="48.297417" - transform="matrix(0.98974903,0.14281759,-0.18972639,0.981837,0,0)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none" - id="rect4446" - width="6.5659914" - height="2.9041886" - x="124.92451" - y="69.016899" /> - <path - style="fill:#ff6600;fill-opacity:1" - d="m 83.38797,45.010543 c -0.057,2.18531 -3.865755,0.28296 -4.031245,2.78125 -4.22387,-1.88052 0.32884,2.87188 -0.0937,3.3125 l -0.0312,0 -0.3125,-0.0312 c -0.20386,-0.0728 -0.49977,-0.19904 -0.9375,-0.46875 -2.9499,2.35025 -3.02157,7.23369 -6.0625,9.9375 -1.99467,4.30504 -2.47977,8.98337 -3.9375,13.46875 -0.71796,4.30292 -1.34881,8.597857 -0.28125,12.906247 0.32053,3.50159 -0.68919,8.25865 2.5,10.71875 4.72728,3.88304 8.65575,8.79543 12.624995,13.46875 6.21914,7.65333 11.72948,15.86251 16.59375,24.4375 0.32431,-2.11756 1.10954,4.26459 2.53125,4.6875 -0.49161,-3.19231 -1.13213,-8.26328 -1.4375,-12.1875 -1.5814,-10.2909 -6.65305,-19.64903 -8.5625,-29.84375 -0.0587,-0.43037 -0.12809,-0.87203 -0.1875,-1.3125 l 0,-1.28125 -0.15625,0 c -0.62551,-5.04297 -0.8504,-10.46546 2.8125,-14.40625 3.73968,-3.772097 9.30633,-4.722447 13.8125,-7.343747 1.00194,-0.59119 2.04921,-1.07174 3.125,-1.40625 0.009,-0.003 0.0228,0.003 0.0312,0 3.11701,-0.96341 6.44862,-0.93323 9.6875,-0.40625 0.0479,0.008 0.10841,0.0233 0.15625,0.0312 0.29455,0.0493 0.61389,0.099 0.90625,0.15625 2.37136,0.21133 7.14463,1.13687 8,-0.5 -3.27225,-2.78631 -7.98526,-2.59211 -11.96875,-3.6875 -0.63059,-0.11469 -1.41182,-0.24041 -2.1875,-0.3125 l -3.90625,-0.875 -0.96875,-0.25 0,0.0312 -13.96875,-2.71875 c -0.22212,-0.20226 -0.46434,-0.40933 -0.6875,-0.5625 l 13.625,1.6875 0,-0.0625 c 0.48011,0.10699 0.95576,0.19361 1.4375,0.25 l 0,0.0312 9.625,1.78125 c 1.66103,0.61952 3.4322,1.08374 5.09375,1.1875 2.74263,0.39907 6.22526,4.49092 7.125,4.6875 -0.44096,-4.307 -4.7422,-6.23586 -8.3125,-7.5 -4.1712,-2.02803 -10.4023,-1.95417 -11.0625,-7.5625 -0.1756,-0.39076 -0.34902,-0.78118 -0.5625,-1.15625 l -1.625,-2.15625 0.0625,-0.0312 c -2.21724,-2.61691 -5.34011,-4.52196 -8.65625,-5.25 -3.2914,-1.13611 -6.98773,-2.2671 -10.46875,-2.71875 -1.18132,3.47826 -2.5031,-2.75561 -5.34375,-0.90625 -2.48996,0.29488 -2.14614,0.95256 -4,-0.625 z m 17.90625,10.15625 c 0.90187,-0.0238 1.93277,0.14208 2.96875,0.5 2.76259,0.95447 4.56151,2.96523 4.03125,4.5 -0.53026,1.53477 -3.20616,1.98572 -5.96875,1.03125 -2.76259,-0.95447 -4.5615,-2.93398 -4.03125,-4.46875 0.33141,-0.95923 1.49689,-1.52281 3,-1.5625 z" - id="path3499-9-7" - inkscape:connector-curvature="0" /> - </g> -</svg> diff --git a/qemu/pc-bios/s390-ccw.img b/qemu/pc-bios/s390-ccw.img Binary files differdeleted file mode 100644 index d3978ba05..000000000 --- a/qemu/pc-bios/s390-ccw.img +++ /dev/null diff --git a/qemu/pc-bios/s390-ccw/Makefile b/qemu/pc-bios/s390-ccw/Makefile deleted file mode 100644 index 4208cb429..000000000 --- a/qemu/pc-bios/s390-ccw/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -all: build-all -# Dummy command so that make thinks it has done something - @true - -include ../../config-host.mak -include $(SRC_PATH)/rules.mak - -$(call set-vpath, $(SRC_PATH)/pc-bios/s390-ccw) - -.PHONY : all clean build-all - -OBJECTS = start.o main.o bootmap.o sclp-ascii.o virtio.o virtio-scsi.o -CFLAGS += -fPIE -fno-stack-protector -ffreestanding -march=z900 -CFLAGS += -fno-delete-null-pointer-checks -msoft-float -LDFLAGS += -Wl,-pie -nostdlib - -build-all: s390-ccw.img - -s390-ccw.elf: $(OBJECTS) - $(call quiet-command,$(CC) $(LDFLAGS) -o $@ $(OBJECTS)," Building $(TARGET_DIR)$@") - -s390-ccw.img: s390-ccw.elf - $(call quiet-command,strip --strip-unneeded $< -o $@," Stripping $(TARGET_DIR)$@") - -$(OBJECTS): Makefile - -clean: - rm -f *.o *.d *.img *.elf *~ diff --git a/qemu/pc-bios/s390-ccw/bootmap.c b/qemu/pc-bios/s390-ccw/bootmap.c deleted file mode 100644 index 611102e3e..000000000 --- a/qemu/pc-bios/s390-ccw/bootmap.c +++ /dev/null @@ -1,746 +0,0 @@ -/* - * QEMU S390 bootmap interpreter - * - * Copyright (c) 2009 Alexander Graf <agraf@suse.de> - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ - -#include "s390-ccw.h" -#include "bootmap.h" -#include "virtio.h" - -#ifdef DEBUG -/* #define DEBUG_FALLBACK */ -#endif - -#ifdef DEBUG_FALLBACK -#define dputs(txt) \ - do { sclp_print("zipl: " txt); } while (0) -#else -#define dputs(fmt, ...) \ - do { } while (0) -#endif - -/* Scratch space */ -static uint8_t sec[MAX_SECTOR_SIZE*4] __attribute__((__aligned__(PAGE_SIZE))); - -typedef struct ResetInfo { - uint32_t ipl_mask; - uint32_t ipl_addr; - uint32_t ipl_continue; -} ResetInfo; - -static ResetInfo save; - -static void jump_to_IPL_2(void) -{ - ResetInfo *current = 0; - - void (*ipl)(void) = (void *) (uint64_t) current->ipl_continue; - *current = save; - ipl(); /* should not return */ -} - -static void jump_to_IPL_code(uint64_t address) -{ - /* store the subsystem information _after_ the bootmap was loaded */ - write_subsystem_identification(); - /* - * The IPL PSW is at address 0. We also must not overwrite the - * content of non-BIOS memory after we loaded the guest, so we - * save the original content and restore it in jump_to_IPL_2. - */ - ResetInfo *current = 0; - - save = *current; - current->ipl_addr = (uint32_t) (uint64_t) &jump_to_IPL_2; - current->ipl_continue = address & 0x7fffffff; - - debug_print_int("set IPL addr to", current->ipl_continue); - - /* Ensure the guest output starts fresh */ - sclp_print("\n"); - - /* - * HACK ALERT. - * We use the load normal reset to keep r15 unchanged. jump_to_IPL_2 - * can then use r15 as its stack pointer. - */ - asm volatile("lghi 1,1\n\t" - "diag 1,1,0x308\n\t" - : : : "1", "memory"); - panic("\n! IPL returns !\n"); -} - -/*********************************************************************** - * IPL an ECKD DASD (CDL or LDL/CMS format) - */ - -static unsigned char _bprs[8*1024]; /* guessed "max" ECKD sector size */ -static const int max_bprs_entries = sizeof(_bprs) / sizeof(ExtEckdBlockPtr); - -static inline void verify_boot_info(BootInfo *bip) -{ - IPL_assert(magic_match(bip->magic, ZIPL_MAGIC), "No zIPL sig in BootInfo"); - IPL_assert(bip->version == BOOT_INFO_VERSION, "Wrong zIPL version"); - IPL_assert(bip->bp_type == BOOT_INFO_BP_TYPE_IPL, "DASD is not for IPL"); - IPL_assert(bip->dev_type == BOOT_INFO_DEV_TYPE_ECKD, "DASD is not ECKD"); - IPL_assert(bip->flags == BOOT_INFO_FLAGS_ARCH, "Not for this arch"); - IPL_assert(block_size_ok(bip->bp.ipl.bm_ptr.eckd.bptr.size), - "Bad block size in zIPL section of the 1st record."); -} - -static block_number_t eckd_block_num(BootMapPointer *p) -{ - const uint64_t sectors = virtio_get_sectors(); - const uint64_t heads = virtio_get_heads(); - const uint64_t cylinder = p->eckd.cylinder - + ((p->eckd.head & 0xfff0) << 12); - const uint64_t head = p->eckd.head & 0x000f; - const block_number_t block = sectors * heads * cylinder - + sectors * head - + p->eckd.sector - - 1; /* block nr starts with zero */ - return block; -} - -static bool eckd_valid_address(BootMapPointer *p) -{ - const uint64_t head = p->eckd.head & 0x000f; - - if (head >= virtio_get_heads() - || p->eckd.sector > virtio_get_sectors() - || p->eckd.sector <= 0) { - return false; - } - - if (!virtio_guessed_disk_nature() && - eckd_block_num(p) >= virtio_get_blocks()) { - return false; - } - - return true; -} - -static block_number_t load_eckd_segments(block_number_t blk, uint64_t *address) -{ - block_number_t block_nr; - int j, rc; - BootMapPointer *bprs = (void *)_bprs; - bool more_data; - - memset(_bprs, FREE_SPACE_FILLER, sizeof(_bprs)); - read_block(blk, bprs, "BPRS read failed"); - - do { - more_data = false; - for (j = 0;; j++) { - block_nr = eckd_block_num((void *)&(bprs[j].xeckd)); - if (is_null_block_number(block_nr)) { /* end of chunk */ - break; - } - - /* we need the updated blockno for the next indirect entry - * in the chain, but don't want to advance address - */ - if (j == (max_bprs_entries - 1)) { - break; - } - - IPL_assert(block_size_ok(bprs[j].xeckd.bptr.size), - "bad chunk block size"); - IPL_assert(eckd_valid_address(&bprs[j]), "bad chunk ECKD addr"); - - if ((bprs[j].xeckd.bptr.count == 0) && unused_space(&(bprs[j+1]), - sizeof(EckdBlockPtr))) { - /* This is a "continue" pointer. - * This ptr should be the last one in the current - * script section. - * I.e. the next ptr must point to the unused memory area - */ - memset(_bprs, FREE_SPACE_FILLER, sizeof(_bprs)); - read_block(block_nr, bprs, "BPRS continuation read failed"); - more_data = true; - break; - } - - /* Load (count+1) blocks of code at (block_nr) - * to memory (address). - */ - rc = virtio_read_many(block_nr, (void *)(*address), - bprs[j].xeckd.bptr.count+1); - IPL_assert(rc == 0, "code chunk read failed"); - - *address += (bprs[j].xeckd.bptr.count+1) * virtio_get_block_size(); - } - } while (more_data); - return block_nr; -} - -static void run_eckd_boot_script(block_number_t mbr_block_nr) -{ - int i; - block_number_t block_nr; - uint64_t address; - ScsiMbr *scsi_mbr = (void *)sec; - BootMapScript *bms = (void *)sec; - - memset(sec, FREE_SPACE_FILLER, sizeof(sec)); - read_block(mbr_block_nr, sec, "Cannot read MBR"); - - block_nr = eckd_block_num((void *)&(scsi_mbr->blockptr)); - - memset(sec, FREE_SPACE_FILLER, sizeof(sec)); - read_block(block_nr, sec, "Cannot read Boot Map Script"); - - for (i = 0; bms->entry[i].type == BOOT_SCRIPT_LOAD; i++) { - address = bms->entry[i].address.load_address; - block_nr = eckd_block_num(&(bms->entry[i].blkptr)); - - do { - block_nr = load_eckd_segments(block_nr, &address); - } while (block_nr != -1); - } - - IPL_assert(bms->entry[i].type == BOOT_SCRIPT_EXEC, - "Unknown script entry type"); - jump_to_IPL_code(bms->entry[i].address.load_address); /* no return */ -} - -static void ipl_eckd_cdl(void) -{ - XEckdMbr *mbr; - Ipl2 *ipl2 = (void *)sec; - IplVolumeLabel *vlbl = (void *)sec; - block_number_t block_nr; - - /* we have just read the block #0 and recognized it as "IPL1" */ - sclp_print("CDL\n"); - - memset(sec, FREE_SPACE_FILLER, sizeof(sec)); - read_block(1, ipl2, "Cannot read IPL2 record at block 1"); - - mbr = &ipl2->u.x.mbr; - IPL_assert(magic_match(mbr, ZIPL_MAGIC), "No zIPL section in IPL2 record."); - IPL_assert(block_size_ok(mbr->blockptr.xeckd.bptr.size), - "Bad block size in zIPL section of IPL2 record."); - IPL_assert(mbr->dev_type == DEV_TYPE_ECKD, - "Non-ECKD device type in zIPL section of IPL2 record."); - - /* save pointer to Boot Script */ - block_nr = eckd_block_num((void *)&(mbr->blockptr)); - - memset(sec, FREE_SPACE_FILLER, sizeof(sec)); - read_block(2, vlbl, "Cannot read Volume Label at block 2"); - IPL_assert(magic_match(vlbl->key, VOL1_MAGIC), - "Invalid magic of volume label block"); - IPL_assert(magic_match(vlbl->f.key, VOL1_MAGIC), - "Invalid magic of volser block"); - print_volser(vlbl->f.volser); - - run_eckd_boot_script(block_nr); - /* no return */ -} - -static void print_eckd_ldl_msg(ECKD_IPL_mode_t mode) -{ - LDL_VTOC *vlbl = (void *)sec; /* already read, 3rd block */ - char msg[4] = { '?', '.', '\n', '\0' }; - - sclp_print((mode == ECKD_CMS) ? "CMS" : "LDL"); - sclp_print(" version "); - switch (vlbl->LDL_version) { - case LDL1_VERSION: - msg[0] = '1'; - break; - case LDL2_VERSION: - msg[0] = '2'; - break; - default: - msg[0] = vlbl->LDL_version; - msg[0] &= 0x0f; /* convert EBCDIC */ - msg[0] |= 0x30; /* to ASCII (digit) */ - msg[1] = '?'; - break; - } - sclp_print(msg); - print_volser(vlbl->volser); -} - -static void ipl_eckd_ldl(ECKD_IPL_mode_t mode) -{ - block_number_t block_nr; - BootInfo *bip = (void *)(sec + 0x70); /* BootInfo is MBR for LDL */ - - if (mode != ECKD_LDL_UNLABELED) { - print_eckd_ldl_msg(mode); - } - - /* DO NOT read BootMap pointer (only one, xECKD) at block #2 */ - - memset(sec, FREE_SPACE_FILLER, sizeof(sec)); - read_block(0, sec, "Cannot read block 0 to grab boot info."); - if (mode == ECKD_LDL_UNLABELED) { - if (!magic_match(bip->magic, ZIPL_MAGIC)) { - return; /* not applicable layout */ - } - sclp_print("unlabeled LDL.\n"); - } - verify_boot_info(bip); - - block_nr = eckd_block_num((void *)&(bip->bp.ipl.bm_ptr.eckd.bptr)); - run_eckd_boot_script(block_nr); - /* no return */ -} - -static void print_eckd_msg(void) -{ - char msg[] = "Using ECKD scheme (block size *****), "; - char *p = &msg[34], *q = &msg[30]; - int n = virtio_get_block_size(); - - /* Fill in the block size and show up the message */ - if (n > 0 && n <= 99999) { - while (n) { - *p-- = '0' + (n % 10); - n /= 10; - } - while (p >= q) { - *p-- = ' '; - } - } - sclp_print(msg); -} - -static void ipl_eckd(void) -{ - ScsiMbr *mbr = (void *)sec; - LDL_VTOC *vlbl = (void *)sec; - - print_eckd_msg(); - - /* Grab the MBR again */ - memset(sec, FREE_SPACE_FILLER, sizeof(sec)); - read_block(0, mbr, "Cannot read block 0 on DASD"); - - if (magic_match(mbr->magic, IPL1_MAGIC)) { - ipl_eckd_cdl(); /* no return */ - } - - /* LDL/CMS? */ - memset(sec, FREE_SPACE_FILLER, sizeof(sec)); - read_block(2, vlbl, "Cannot read block 2"); - - if (magic_match(vlbl->magic, CMS1_MAGIC)) { - ipl_eckd_ldl(ECKD_CMS); /* no return */ - } - if (magic_match(vlbl->magic, LNX1_MAGIC)) { - ipl_eckd_ldl(ECKD_LDL); /* no return */ - } - - ipl_eckd_ldl(ECKD_LDL_UNLABELED); /* it still may return */ - /* - * Ok, it is not a LDL by any means. - * It still might be a CDL with zero record keys for IPL1 and IPL2 - */ - ipl_eckd_cdl(); -} - -/*********************************************************************** - * IPL a SCSI disk - */ - -static void zipl_load_segment(ComponentEntry *entry) -{ - const int max_entries = (MAX_SECTOR_SIZE / sizeof(ScsiBlockPtr)); - ScsiBlockPtr *bprs = (void *)sec; - const int bprs_size = sizeof(sec); - block_number_t blockno; - uint64_t address; - int i; - char err_msg[] = "zIPL failed to read BPRS at 0xZZZZZZZZZZZZZZZZ"; - char *blk_no = &err_msg[30]; /* where to print blockno in (those ZZs) */ - - blockno = entry->data.blockno; - address = entry->load_address; - - debug_print_int("loading segment at block", blockno); - debug_print_int("addr", address); - - do { - memset(bprs, FREE_SPACE_FILLER, bprs_size); - fill_hex_val(blk_no, &blockno, sizeof(blockno)); - read_block(blockno, bprs, err_msg); - - for (i = 0;; i++) { - uint64_t *cur_desc = (void *)&bprs[i]; - - blockno = bprs[i].blockno; - if (!blockno) { - break; - } - - /* we need the updated blockno for the next indirect entry in the - chain, but don't want to advance address */ - if (i == (max_entries - 1)) { - break; - } - - if (bprs[i].blockct == 0 && unused_space(&bprs[i + 1], - sizeof(ScsiBlockPtr))) { - /* This is a "continue" pointer. - * This ptr is the last one in the current script section. - * I.e. the next ptr must point to the unused memory area. - * The blockno is not zero, so the upper loop must continue - * reading next section of BPRS. - */ - break; - } - address = virtio_load_direct(cur_desc[0], cur_desc[1], 0, - (void *)address); - IPL_assert(address != -1, "zIPL load segment failed"); - } - } while (blockno); -} - -/* Run a zipl program */ -static void zipl_run(ScsiBlockPtr *pte) -{ - ComponentHeader *header; - ComponentEntry *entry; - uint8_t tmp_sec[MAX_SECTOR_SIZE]; - - read_block(pte->blockno, tmp_sec, "Cannot read header"); - header = (ComponentHeader *)tmp_sec; - - IPL_assert(magic_match(tmp_sec, ZIPL_MAGIC), "No zIPL magic in header"); - IPL_assert(header->type == ZIPL_COMP_HEADER_IPL, "Bad header type"); - - dputs("start loading images\n"); - - /* Load image(s) into RAM */ - entry = (ComponentEntry *)(&header[1]); - while (entry->component_type == ZIPL_COMP_ENTRY_LOAD) { - zipl_load_segment(entry); - - entry++; - - IPL_assert((uint8_t *)(&entry[1]) <= (tmp_sec + MAX_SECTOR_SIZE), - "Wrong entry value"); - } - - IPL_assert(entry->component_type == ZIPL_COMP_ENTRY_EXEC, "No EXEC entry"); - - /* should not return */ - jump_to_IPL_code(entry->load_address); -} - -static void ipl_scsi(void) -{ - ScsiMbr *mbr = (void *)sec; - uint8_t *ns, *ns_end; - int program_table_entries = 0; - const int pte_len = sizeof(ScsiBlockPtr); - ScsiBlockPtr *prog_table_entry; - - /* Grab the MBR */ - memset(sec, FREE_SPACE_FILLER, sizeof(sec)); - read_block(0, mbr, "Cannot read block 0"); - - if (!magic_match(mbr->magic, ZIPL_MAGIC)) { - return; - } - - sclp_print("Using SCSI scheme.\n"); - debug_print_int("MBR Version", mbr->version_id); - IPL_check(mbr->version_id == 1, - "Unknown MBR layout version, assuming version 1"); - debug_print_int("program table", mbr->blockptr.blockno); - IPL_assert(mbr->blockptr.blockno, "No Program Table"); - - /* Parse the program table */ - read_block(mbr->blockptr.blockno, sec, - "Error reading Program Table"); - - IPL_assert(magic_match(sec, ZIPL_MAGIC), "No zIPL magic in PT"); - - ns_end = sec + virtio_get_block_size(); - for (ns = (sec + pte_len); (ns + pte_len) < ns_end; ns += pte_len) { - prog_table_entry = (ScsiBlockPtr *)ns; - if (!prog_table_entry->blockno) { - break; - } - - program_table_entries++; - } - - debug_print_int("program table entries", program_table_entries); - - IPL_assert(program_table_entries != 0, "Empty Program Table"); - - /* Run the default entry */ - - prog_table_entry = (ScsiBlockPtr *)(sec + pte_len); - - zipl_run(prog_table_entry); /* no return */ -} - -/*********************************************************************** - * IPL El Torito ISO9660 image or DVD - */ - -static bool is_iso_bc_entry_compatible(IsoBcSection *s) -{ - uint8_t *magic_sec = (uint8_t *)(sec + ISO_SECTOR_SIZE); - - if (s->unused || !s->sector_count) { - return false; - } - read_iso_sector(bswap32(s->load_rba), magic_sec, - "Failed to read image sector 0"); - - /* Checking bytes 8 - 32 for S390 Linux magic */ - return !_memcmp(magic_sec + 8, linux_s390_magic, 24); -} - -/* Location of the current sector of the directory */ -static uint32_t sec_loc[ISO9660_MAX_DIR_DEPTH]; -/* Offset in the current sector of the directory */ -static uint32_t sec_offset[ISO9660_MAX_DIR_DEPTH]; -/* Remained directory space in bytes */ -static uint32_t dir_rem[ISO9660_MAX_DIR_DEPTH]; - -static inline uint32_t iso_get_file_size(uint32_t load_rba) -{ - IsoVolDesc *vd = (IsoVolDesc *)sec; - IsoDirHdr *cur_record = &vd->vd.primary.rootdir; - uint8_t *temp = sec + ISO_SECTOR_SIZE; - int level = 0; - - read_iso_sector(ISO_PRIMARY_VD_SECTOR, sec, - "Failed to read ISO primary descriptor"); - sec_loc[0] = iso_733_to_u32(cur_record->ext_loc); - dir_rem[0] = 0; - sec_offset[0] = 0; - - while (level >= 0) { - IPL_assert(sec_offset[level] <= ISO_SECTOR_SIZE, - "Directory tree structure violation"); - - cur_record = (IsoDirHdr *)(temp + sec_offset[level]); - - if (sec_offset[level] == 0) { - read_iso_sector(sec_loc[level], temp, - "Failed to read ISO directory"); - if (dir_rem[level] == 0) { - /* Skip self and parent records */ - dir_rem[level] = iso_733_to_u32(cur_record->data_len) - - cur_record->dr_len; - sec_offset[level] += cur_record->dr_len; - - cur_record = (IsoDirHdr *)(temp + sec_offset[level]); - dir_rem[level] -= cur_record->dr_len; - sec_offset[level] += cur_record->dr_len; - continue; - } - } - - if (!cur_record->dr_len || sec_offset[level] == ISO_SECTOR_SIZE) { - /* Zero-padding and/or the end of current sector */ - dir_rem[level] -= ISO_SECTOR_SIZE - sec_offset[level]; - sec_offset[level] = 0; - sec_loc[level]++; - } else { - /* The directory record is valid */ - if (load_rba == iso_733_to_u32(cur_record->ext_loc)) { - return iso_733_to_u32(cur_record->data_len); - } - - dir_rem[level] -= cur_record->dr_len; - sec_offset[level] += cur_record->dr_len; - - if (cur_record->file_flags & 0x2) { - /* Subdirectory */ - if (level == ISO9660_MAX_DIR_DEPTH - 1) { - sclp_print("ISO-9660 directory depth limit exceeded\n"); - } else { - level++; - sec_loc[level] = iso_733_to_u32(cur_record->ext_loc); - sec_offset[level] = 0; - dir_rem[level] = 0; - continue; - } - } - } - - if (dir_rem[level] == 0) { - /* Nothing remaining */ - level--; - read_iso_sector(sec_loc[level], temp, - "Failed to read ISO directory"); - } - } - - return 0; -} - -static void load_iso_bc_entry(IsoBcSection *load) -{ - IsoBcSection s = *load; - /* - * According to spec, extent for each file - * is padded and ISO_SECTOR_SIZE bytes aligned - */ - uint32_t blks_to_load = bswap16(s.sector_count) >> ET_SECTOR_SHIFT; - uint32_t real_size = iso_get_file_size(bswap32(s.load_rba)); - - if (real_size) { - /* Round up blocks to load */ - blks_to_load = (real_size + ISO_SECTOR_SIZE - 1) / ISO_SECTOR_SIZE; - sclp_print("ISO boot image size verified\n"); - } else { - sclp_print("ISO boot image size could not be verified\n"); - } - - read_iso_boot_image(bswap32(s.load_rba), - (void *)((uint64_t)bswap16(s.load_segment)), - blks_to_load); - - /* Trying to get PSW at zero address */ - if (*((uint64_t *)0) & IPL_PSW_MASK) { - jump_to_IPL_code((*((uint64_t *)0)) & 0x7fffffff); - } - - /* Try default linux start address */ - jump_to_IPL_code(KERN_IMAGE_START); -} - -static uint32_t find_iso_bc(void) -{ - IsoVolDesc *vd = (IsoVolDesc *)sec; - uint32_t block_num = ISO_PRIMARY_VD_SECTOR; - - if (virtio_read_many(block_num++, sec, 1)) { - /* If primary vd cannot be read, there is no boot catalog */ - return 0; - } - - while (is_iso_vd_valid(vd) && vd->type != VOL_DESC_TERMINATOR) { - if (vd->type == VOL_DESC_TYPE_BOOT) { - IsoVdElTorito *et = &vd->vd.boot; - - if (!_memcmp(&et->el_torito[0], el_torito_magic, 32)) { - return bswap32(et->bc_offset); - } - } - read_iso_sector(block_num++, sec, - "Failed to read ISO volume descriptor"); - } - - return 0; -} - -static IsoBcSection *find_iso_bc_entry(void) -{ - IsoBcEntry *e = (IsoBcEntry *)sec; - uint32_t offset = find_iso_bc(); - int i; - - if (!offset) { - return NULL; - } - - read_iso_sector(offset, sec, "Failed to read El Torito boot catalog"); - - if (!is_iso_bc_valid(e)) { - /* The validation entry is mandatory */ - panic("No valid boot catalog found!\n"); - return NULL; - } - - /* - * Each entry has 32 bytes size, so one sector cannot contain > 64 entries. - * We consider only boot catalogs with no more than 64 entries. - */ - for (i = 1; i < ISO_BC_ENTRY_PER_SECTOR; i++) { - if (e[i].id == ISO_BC_BOOTABLE_SECTION) { - if (is_iso_bc_entry_compatible(&e[i].body.sect)) { - return &e[i].body.sect; - } - } - } - - panic("No suitable boot entry found on ISO-9660 media!\n"); - - return NULL; -} - -static void ipl_iso_el_torito(void) -{ - IsoBcSection *s = find_iso_bc_entry(); - - if (s) { - load_iso_bc_entry(s); - /* no return */ - } -} - -/*********************************************************************** - * Bus specific IPL sequences - */ - -static void zipl_load_vblk(void) -{ - if (virtio_guessed_disk_nature()) { - virtio_assume_iso9660(); - } - ipl_iso_el_torito(); - - if (virtio_guessed_disk_nature()) { - sclp_print("Using guessed DASD geometry.\n"); - virtio_assume_eckd(); - } - ipl_eckd(); -} - -static void zipl_load_vscsi(void) -{ - if (virtio_get_block_size() == VIRTIO_ISO_BLOCK_SIZE) { - /* Is it an ISO image in non-CD drive? */ - ipl_iso_el_torito(); - } - - sclp_print("Using guessed DASD geometry.\n"); - virtio_assume_eckd(); - ipl_eckd(); -} - -/*********************************************************************** - * IPL starts here - */ - -void zipl_load(void) -{ - if (virtio_get_device()->is_cdrom) { - ipl_iso_el_torito(); - panic("\n! Cannot IPL this ISO image !\n"); - } - - ipl_scsi(); - - switch (virtio_get_device_type()) { - case VIRTIO_ID_BLOCK: - zipl_load_vblk(); - break; - case VIRTIO_ID_SCSI: - zipl_load_vscsi(); - break; - default: - panic("\n! Unknown IPL device type !\n"); - } - - panic("\n* this can never happen *\n"); -} diff --git a/qemu/pc-bios/s390-ccw/bootmap.h b/qemu/pc-bios/s390-ccw/bootmap.h deleted file mode 100644 index bea168714..000000000 --- a/qemu/pc-bios/s390-ccw/bootmap.h +++ /dev/null @@ -1,541 +0,0 @@ -/* - * QEMU S390 bootmap interpreter -- declarations - * - * Copyright 2014 IBM Corp. - * Author(s): Eugene (jno) Dvurechenski <jno@linux.vnet.ibm.com> - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ -#ifndef _PC_BIOS_S390_CCW_BOOTMAP_H -#define _PC_BIOS_S390_CCW_BOOTMAP_H - -#include "s390-ccw.h" -#include "virtio.h" - -typedef uint64_t block_number_t; -#define NULL_BLOCK_NR 0xffffffffffffffffULL - -#define FREE_SPACE_FILLER '\xAA' - -typedef struct ScsiBlockPtr { - uint64_t blockno; - uint16_t size; - uint16_t blockct; - uint8_t reserved[4]; -} __attribute__ ((packed)) ScsiBlockPtr; - -typedef struct FbaBlockPtr { - uint32_t blockno; - uint16_t size; - uint16_t blockct; -} __attribute__ ((packed)) FbaBlockPtr; - -typedef struct EckdBlockPtr { - uint16_t cylinder; /* cylinder/head/sector is an address of the block */ - uint16_t head; - uint8_t sector; - uint16_t size; - uint8_t count; /* (size_in_blocks-1); - * it's 0 for TablePtr, ScriptPtr, and SectionPtr */ -} __attribute__ ((packed)) EckdBlockPtr; - -typedef struct ExtEckdBlockPtr { - EckdBlockPtr bptr; - uint8_t reserved[8]; -} __attribute__ ((packed)) ExtEckdBlockPtr; - -typedef union BootMapPointer { - ScsiBlockPtr scsi; - FbaBlockPtr fba; - EckdBlockPtr eckd; - ExtEckdBlockPtr xeckd; -} __attribute__ ((packed)) BootMapPointer; - -typedef struct ComponentEntry { - ScsiBlockPtr data; - uint8_t pad[7]; - uint8_t component_type; - uint64_t load_address; -} __attribute((packed)) ComponentEntry; - -typedef struct ComponentHeader { - uint8_t magic[4]; /* == "zIPL" */ - uint8_t type; /* == ZIPL_COMP_HEADER_* */ - uint8_t reserved[27]; -} __attribute((packed)) ComponentHeader; - -typedef struct ScsiMbr { - uint8_t magic[4]; - uint32_t version_id; - uint8_t reserved[8]; - ScsiBlockPtr blockptr; -} __attribute__ ((packed)) ScsiMbr; - -#define ZIPL_MAGIC "zIPL" -#define IPL1_MAGIC "\xc9\xd7\xd3\xf1" /* == "IPL1" in EBCDIC */ -#define IPL2_MAGIC "\xc9\xd7\xd3\xf2" /* == "IPL2" in EBCDIC */ -#define VOL1_MAGIC "\xe5\xd6\xd3\xf1" /* == "VOL1" in EBCDIC */ -#define LNX1_MAGIC "\xd3\xd5\xe7\xf1" /* == "LNX1" in EBCDIC */ -#define CMS1_MAGIC "\xc3\xd4\xe2\xf1" /* == "CMS1" in EBCDIC */ - -#define LDL1_VERSION '\x40' /* == ' ' in EBCDIC */ -#define LDL2_VERSION '\xf2' /* == '2' in EBCDIC */ - -#define ZIPL_COMP_HEADER_IPL 0x00 -#define ZIPL_COMP_HEADER_DUMP 0x01 - -#define ZIPL_COMP_ENTRY_LOAD 0x02 -#define ZIPL_COMP_ENTRY_EXEC 0x01 - -typedef struct XEckdMbr { - uint8_t magic[4]; /* == "xIPL" */ - uint8_t version; - uint8_t bp_type; - uint8_t dev_type; /* == DEV_TYPE_* */ -#define DEV_TYPE_ECKD 0x00 -#define DEV_TYPE_FBA 0x01 - uint8_t flags; - BootMapPointer blockptr; - uint8_t reserved[8]; -} __attribute__ ((packed)) XEckdMbr; /* see also BootInfo */ - -typedef struct BootMapScriptEntry { - BootMapPointer blkptr; - uint8_t pad[7]; - uint8_t type; /* == BOOT_SCRIPT_* */ -#define BOOT_SCRIPT_EXEC 0x01 -#define BOOT_SCRIPT_LOAD 0x02 - union { - uint64_t load_address; - uint64_t load_psw; - } address; -} __attribute__ ((packed)) BootMapScriptEntry; - -typedef struct BootMapScriptHeader { - uint32_t magic; - uint8_t type; -#define BOOT_SCRIPT_HDR_IPL 0x00 - uint8_t reserved[27]; -} __attribute__ ((packed)) BootMapScriptHeader; - -typedef struct BootMapScript { - BootMapScriptHeader header; - BootMapScriptEntry entry[0]; -} __attribute__ ((packed)) BootMapScript; - -/* - * These aren't real VTOCs, but referred to this way in some docs. - * They are "volume labels" actually. - * - * Some structures looks similar to described above, but left - * separate as there is no indication that they are the same. - * So, the value definitions are left separate too. - */ -typedef struct LDL_VTOC { /* @ rec.3 cyl.0 trk.0 for ECKD */ - char magic[4]; /* "LNX1", EBCDIC */ - char volser[6]; /* volser, EBCDIC */ - uint8_t reserved[69]; /* reserved, 0x40 */ - uint8_t LDL_version; /* 0x40 or 0xF2 */ - uint64_t formatted_blocks; /* if LDL_version >= 0xF2 */ -} __attribute__ ((packed)) LDL_VTOC; - -typedef struct format_date { - uint8_t YY; - uint8_t MM; - uint8_t DD; - uint8_t hh; - uint8_t mm; - uint8_t ss; -} __attribute__ ((packed)) format_date_t; - -typedef struct CMS_VTOC { /* @ rec.3 cyl.0 trk.0 for ECKD */ - /* @ blk.1 (zero based) for FBA */ - char magic[4]; /* 'CMS1', EBCDIC */ - char volser[6]; /* volser, EBCDIC */ - uint16_t version; /* = 0 */ - uint32_t block_size; /* = 512, 1024, 2048, or 4096 */ - uint32_t disk_origin; /* = 4 or 5 */ - uint32_t blocks; /* Number of usable cyls/blocks */ - uint32_t formatted; /* Max number of fmtd cyls/blks */ - uint32_t CMS_blocks; /* disk size in CMS blocks */ - uint32_t CMS_used; /* Number of CMS blocks in use */ - uint32_t FST_size; /* = 64, bytes */ - uint32_t FST_per_CMS_blk; /* */ - format_date_t format_date; /* YYMMDDhhmmss as 6 bytes */ - uint8_t reserved1[2]; /* = 0 */ - uint32_t offset; /* disk offset when reserved */ - uint32_t next_hole; /* block nr */ - uint32_t HBLK_hole_offset; /* >> HBLK data of next hole */ - uint32_t alloc_map_usr_off; /* >> user part of Alloc map */ - uint8_t reserved2[4]; /* = 0 */ - char shared_seg_name[8]; /* */ -} __attribute__ ((packed)) CMS_VTOC; - -/* from zipl/include/boot.h */ -typedef struct BootInfoBpIpl { - union { - ExtEckdBlockPtr eckd; - ScsiBlockPtr linr; - } bm_ptr; - uint8_t unused[16]; -} __attribute__ ((packed)) BootInfoBpIpl; - -typedef struct EckdDumpParam { - uint32_t start_blk; - uint32_t end_blk; - uint16_t blocksize; - uint8_t num_heads; - uint8_t bpt; - char reserved[4]; -} __attribute((packed, may_alias)) EckdDumpParam; - -typedef struct FbaDumpParam { - uint64_t start_blk; - uint64_t blockct; -} __attribute((packed)) FbaDumpParam; - -typedef struct BootInfoBpDump { - union { - EckdDumpParam eckd; - FbaDumpParam fba; - } param; - uint8_t unused[16]; -} __attribute__ ((packed)) BootInfoBpDump; - -typedef struct BootInfo { /* @ 0x70, record #0 */ - unsigned char magic[4]; /* = 'zIPL', ASCII */ - uint8_t version; /* = 1 */ -#define BOOT_INFO_VERSION 1 - uint8_t bp_type; /* = 0 */ -#define BOOT_INFO_BP_TYPE_IPL 0x00 -#define BOOT_INFO_BP_TYPE_DUMP 0x01 - uint8_t dev_type; /* = 0 */ -#define BOOT_INFO_DEV_TYPE_ECKD 0x00 -#define BOOT_INFO_DEV_TYPE_FBA 0x01 - uint8_t flags; /* = 1 */ -#ifdef __s390x__ -#define BOOT_INFO_FLAGS_ARCH 0x01 -#else -#define BOOT_INFO_FLAGS_ARCH 0x00 -#endif - union { - BootInfoBpDump dump; - BootInfoBpIpl ipl; - } bp; -} __attribute__ ((packed)) BootInfo; /* see also XEckdMbr */ - -typedef struct Ipl1 { - unsigned char key[4]; /* == "IPL1" */ - unsigned char data[24]; -} __attribute__((packed)) Ipl1; - -typedef struct Ipl2 { - unsigned char key[4]; /* == "IPL2" */ - union { - unsigned char data[144]; - struct { - unsigned char reserved1[92-4]; - XEckdMbr mbr; - unsigned char reserved2[144-(92-4)-sizeof(XEckdMbr)]; - } x; - } u; -} __attribute__((packed)) Ipl2; - -typedef struct IplVolumeLabel { - unsigned char key[4]; /* == "VOL1" */ - union { - unsigned char data[80]; - struct { - unsigned char key[4]; /* == "VOL1" */ - unsigned char volser[6]; - unsigned char reserved[6]; - } f; - }; -} __attribute__((packed)) IplVolumeLabel; - -typedef enum { - ECKD_NO_IPL, - ECKD_CMS, - ECKD_LDL, - ECKD_LDL_UNLABELED, -} ECKD_IPL_mode_t; - -/* utility code below */ - -static const unsigned char ebc2asc[256] = - /* 0123456789abcdef0123456789abcdef */ - "................................" /* 1F */ - "................................" /* 3F */ - " ...........<(+|&.........!$*);." /* 5F first.chr.here.is.real.space */ - "-/.........,%_>?.........`:#@'=\""/* 7F */ - ".abcdefghi.......jklmnopqr......" /* 9F */ - "..stuvwxyz......................" /* BF */ - ".ABCDEFGHI.......JKLMNOPQR......" /* DF */ - "..STUVWXYZ......0123456789......";/* FF */ - -static inline void ebcdic_to_ascii(const char *src, - char *dst, - unsigned int size) -{ - unsigned int i; - for (i = 0; i < size; i++) { - unsigned c = src[i]; - dst[i] = ebc2asc[c]; - } -} - -static inline void print_volser(const void *volser) -{ - char ascii[8]; - - ebcdic_to_ascii((char *)volser, ascii, 6); - ascii[6] = '\0'; - sclp_print("VOLSER=["); - sclp_print(ascii); - sclp_print("]\n"); -} - -static inline bool unused_space(const void *p, size_t size) -{ - size_t i; - const unsigned char *m = p; - - for (i = 0; i < size; i++) { - if (m[i] != FREE_SPACE_FILLER) { - return false; - } - } - return true; -} - -static inline bool is_null_block_number(block_number_t x) -{ - return x == NULL_BLOCK_NR; -} - -static inline void read_block(block_number_t blockno, - void *buffer, - const char *errmsg) -{ - IPL_assert(virtio_read(blockno, buffer) == 0, errmsg); -} - -static inline bool block_size_ok(uint32_t block_size) -{ - return block_size == virtio_get_block_size(); -} - -static inline bool magic_match(const void *data, const void *magic) -{ - return *((uint32_t *)data) == *((uint32_t *)magic); -} - -static inline int _memcmp(const void *s1, const void *s2, size_t n) -{ - int i; - const uint8_t *p1 = s1, *p2 = s2; - - for (i = 0; i < n; i++) { - if (p1[i] != p2[i]) { - return p1[i] > p2[i] ? 1 : -1; - } - } - - return 0; -} - -/* from include/qemu/bswap.h */ - -/* El Torito is always little-endian */ -static inline uint16_t bswap16(uint16_t x) -{ - return ((x & 0x00ff) << 8) | ((x & 0xff00) >> 8); -} - -static inline uint32_t bswap32(uint32_t x) -{ - return ((x & 0x000000ffU) << 24) | ((x & 0x0000ff00U) << 8) | - ((x & 0x00ff0000U) >> 8) | ((x & 0xff000000U) >> 24); -} - -static inline uint64_t bswap64(uint64_t x) -{ - return ((x & 0x00000000000000ffULL) << 56) | - ((x & 0x000000000000ff00ULL) << 40) | - ((x & 0x0000000000ff0000ULL) << 24) | - ((x & 0x00000000ff000000ULL) << 8) | - ((x & 0x000000ff00000000ULL) >> 8) | - ((x & 0x0000ff0000000000ULL) >> 24) | - ((x & 0x00ff000000000000ULL) >> 40) | - ((x & 0xff00000000000000ULL) >> 56); -} - -static inline uint32_t iso_733_to_u32(uint64_t x) -{ - return (uint32_t)x; -} - -#define ISO_SECTOR_SIZE 2048 -/* El Torito specifies boot image size in 512 byte blocks */ -#define ET_SECTOR_SHIFT 2 -#define KERN_IMAGE_START 0x010000UL -#define PSW_MASK_64 0x0000000100000000ULL -#define PSW_MASK_32 0x0000000080000000ULL -#define IPL_PSW_MASK (PSW_MASK_32 | PSW_MASK_64) - -#define ISO_PRIMARY_VD_SECTOR 16 - -static inline void read_iso_sector(uint32_t block_offset, void *buf, - const char *errmsg) -{ - IPL_assert(virtio_read_many(block_offset, buf, 1) == 0, errmsg); -} - -static inline void read_iso_boot_image(uint32_t block_offset, void *load_addr, - uint32_t blks_to_load) -{ - IPL_assert(virtio_read_many(block_offset, load_addr, blks_to_load) == 0, - "Failed to read boot image!"); -} - -const uint8_t el_torito_magic[] = "EL TORITO SPECIFICATION" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; - -#define ISO9660_MAX_DIR_DEPTH 8 - -typedef struct IsoDirHdr { - uint8_t dr_len; - uint8_t ear_len; - uint64_t ext_loc; - uint64_t data_len; - uint8_t recording_datetime[7]; - uint8_t file_flags; - uint8_t file_unit_size; - uint8_t gap_size; - uint32_t vol_seqnum; - uint8_t fileid_len; -} __attribute__((packed)) IsoDirHdr; - -typedef struct IsoVdElTorito { - uint8_t el_torito[32]; /* must contain el_torito_magic value */ - uint8_t unused0[32]; - uint32_t bc_offset; - uint8_t unused1[1974]; -} __attribute__((packed)) IsoVdElTorito; - -typedef struct IsoVdPrimary { - uint8_t unused1; - uint8_t sys_id[32]; - uint8_t vol_id[32]; - uint8_t unused2[8]; - uint64_t vol_space_size; - uint8_t unused3[32]; - uint32_t vol_set_size; - uint32_t vol_seqnum; - uint32_t log_block_size; - uint64_t path_table_size; - uint32_t l_path_table; - uint32_t opt_l_path_table; - uint32_t m_path_table; - uint32_t opt_m_path_table; - IsoDirHdr rootdir; - uint8_t root_null; - uint8_t reserved2[1858]; -} __attribute__((packed)) IsoVdPrimary; - -typedef struct IsoVolDesc { - uint8_t type; - uint8_t ident[5]; - uint8_t version; - union { - IsoVdElTorito boot; - IsoVdPrimary primary; - } vd; -} __attribute__((packed)) IsoVolDesc; - -const uint8_t vol_desc_magic[] = "CD001"; -#define VOL_DESC_TYPE_BOOT 0 -#define VOL_DESC_TYPE_PRIMARY 1 -#define VOL_DESC_TYPE_SUPPLEMENT 2 -#define VOL_DESC_TYPE_PARTITION 3 -#define VOL_DESC_TERMINATOR 255 - -static inline bool is_iso_vd_valid(IsoVolDesc *vd) -{ - return !_memcmp(&vd->ident[0], vol_desc_magic, 5) && - vd->version == 0x1 && - vd->type <= VOL_DESC_TYPE_PARTITION; -} - -typedef struct IsoBcValid { - uint8_t platform_id; - uint16_t reserved; - uint8_t id[24]; - uint16_t checksum; - uint8_t key[2]; -} __attribute__((packed)) IsoBcValid; - -typedef struct IsoBcSection { - uint8_t boot_type; - uint16_t load_segment; - uint8_t sys_type; - uint8_t unused; - uint16_t sector_count; - uint32_t load_rba; - uint8_t selection[20]; -} __attribute__((packed)) IsoBcSection; - -typedef struct IsoBcHdr { - uint8_t platform_id; - uint16_t sect_num; - uint8_t id[28]; -} __attribute__((packed)) IsoBcHdr; - -/* - * Match two CCWs located after PSW and eight filler bytes. - * From libmagic and arch/s390/kernel/head.S. - */ -const uint8_t linux_s390_magic[] = "\x02\x00\x00\x18\x60\x00\x00\x50\x02\x00" - "\x00\x68\x60\x00\x00\x50\x40\x40\x40\x40" - "\x40\x40\x40\x40"; - -typedef struct IsoBcEntry { - uint8_t id; - union { - IsoBcValid valid; /* id == 0x01 */ - IsoBcSection sect; /* id == 0x88 || id == 0x0 */ - IsoBcHdr hdr; /* id == 0x90 || id == 0x91 */ - } body; -} __attribute__((packed)) IsoBcEntry; - -#define ISO_BC_ENTRY_PER_SECTOR (ISO_SECTOR_SIZE / sizeof(IsoBcEntry)) -#define ISO_BC_HDR_VALIDATION 0x01 -#define ISO_BC_BOOTABLE_SECTION 0x88 -#define ISO_BC_MAGIC_55 0x55 -#define ISO_BC_MAGIC_AA 0xaa -#define ISO_BC_PLATFORM_X86 0x0 -#define ISO_BC_PLATFORM_PPC 0x1 -#define ISO_BC_PLATFORM_MAC 0x2 - -static inline bool is_iso_bc_valid(IsoBcEntry *e) -{ - IsoBcValid *v = &e->body.valid; - - if (e->id != ISO_BC_HDR_VALIDATION) { - return false; - } - - if (v->platform_id != ISO_BC_PLATFORM_X86 && - v->platform_id != ISO_BC_PLATFORM_PPC && - v->platform_id != ISO_BC_PLATFORM_MAC) { - return false; - } - - return v->key[0] == ISO_BC_MAGIC_55 && - v->key[1] == ISO_BC_MAGIC_AA && - v->reserved == 0x0; -} - -#endif /* _PC_BIOS_S390_CCW_BOOTMAP_H */ diff --git a/qemu/pc-bios/s390-ccw/cio.h b/qemu/pc-bios/s390-ccw/cio.h deleted file mode 100644 index f5b4549ea..000000000 --- a/qemu/pc-bios/s390-ccw/cio.h +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Channel IO definitions - * - * Copyright (c) 2013 Alexander Graf <agraf@suse.de> - * - * Inspired by various s390 headers in Linux 3.9. - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ - -#ifndef CIO_H -#define CIO_H - -/* - * path management control word - */ -struct pmcw { - __u32 intparm; /* interruption parameter */ - __u32 qf : 1; /* qdio facility */ - __u32 w : 1; - __u32 isc : 3; /* interruption sublass */ - __u32 res5 : 3; /* reserved zeros */ - __u32 ena : 1; /* enabled */ - __u32 lm : 2; /* limit mode */ - __u32 mme : 2; /* measurement-mode enable */ - __u32 mp : 1; /* multipath mode */ - __u32 tf : 1; /* timing facility */ - __u32 dnv : 1; /* device number valid */ - __u32 dev : 16; /* device number */ - __u8 lpm; /* logical path mask */ - __u8 pnom; /* path not operational mask */ - __u8 lpum; /* last path used mask */ - __u8 pim; /* path installed mask */ - __u16 mbi; /* measurement-block index */ - __u8 pom; /* path operational mask */ - __u8 pam; /* path available mask */ - __u8 chpid[8]; /* CHPID 0-7 (if available) */ - __u32 unused1 : 8; /* reserved zeros */ - __u32 st : 3; /* subchannel type */ - __u32 unused2 : 18; /* reserved zeros */ - __u32 mbfc : 1; /* measurement block format control */ - __u32 xmwme : 1; /* extended measurement word mode enable */ - __u32 csense : 1; /* concurrent sense; can be enabled ...*/ - /* ... per MSCH, however, if facility */ - /* ... is not installed, this results */ - /* ... in an operand exception. */ -} __attribute__ ((packed)); - -/* Target SCHIB configuration. */ -struct schib_config { - __u64 mba; - __u32 intparm; - __u16 mbi; - __u32 isc:3; - __u32 ena:1; - __u32 mme:2; - __u32 mp:1; - __u32 csense:1; - __u32 mbfc:1; -} __attribute__ ((packed)); - -struct scsw { - __u16 flags; - __u16 ctrl; - __u32 cpa; - __u8 dstat; - __u8 cstat; - __u16 count; -} __attribute__ ((packed)); - -#define SCSW_FCTL_CLEAR_FUNC 0x1000 -#define SCSW_FCTL_HALT_FUNC 0x2000 -#define SCSW_FCTL_START_FUNC 0x4000 - -/* - * subchannel information block - */ -struct schib { - struct pmcw pmcw; /* path management control word */ - struct scsw scsw; /* subchannel status word */ - __u64 mba; /* measurement block address */ - __u8 mda[4]; /* model dependent area */ -} __attribute__ ((packed,aligned(4))); - -struct subchannel_id { - __u32 cssid : 8; - __u32 : 4; - __u32 m : 1; - __u32 ssid : 2; - __u32 one : 1; - __u32 sch_no : 16; -} __attribute__ ((packed, aligned(4))); - -struct chsc_header { - __u16 length; - __u16 code; -} __attribute__((packed)); - -struct chsc_area_sda { - struct chsc_header request; - __u8 reserved1:4; - __u8 format:4; - __u8 reserved2; - __u16 operation_code; - __u32 reserved3; - __u32 reserved4; - __u32 operation_data_area[252]; - struct chsc_header response; - __u32 reserved5:4; - __u32 format2:4; - __u32 reserved6:24; -} __attribute__((packed)); - -/* - * TPI info structure - */ -struct tpi_info { - struct subchannel_id schid; - __u32 intparm; /* interruption parameter */ - __u32 adapter_IO : 1; - __u32 reserved2 : 1; - __u32 isc : 3; - __u32 reserved3 : 12; - __u32 int_type : 3; - __u32 reserved4 : 12; -} __attribute__ ((packed)); - -/* channel command word (type 1) */ -struct ccw1 { - __u8 cmd_code; - __u8 flags; - __u16 count; - __u32 cda; -} __attribute__ ((packed)); - -#define CCW_FLAG_DC 0x80 -#define CCW_FLAG_CC 0x40 -#define CCW_FLAG_SLI 0x20 -#define CCW_FLAG_SKIP 0x10 -#define CCW_FLAG_PCI 0x08 -#define CCW_FLAG_IDA 0x04 -#define CCW_FLAG_SUSPEND 0x02 - -#define CCW_CMD_NOOP 0x03 -#define CCW_CMD_BASIC_SENSE 0x04 -#define CCW_CMD_TIC 0x08 -#define CCW_CMD_SENSE_ID 0xe4 - -#define CCW_CMD_SET_VQ 0x13 -#define CCW_CMD_VDEV_RESET 0x33 -#define CCW_CMD_READ_FEAT 0x12 -#define CCW_CMD_WRITE_FEAT 0x11 -#define CCW_CMD_READ_CONF 0x22 -#define CCW_CMD_WRITE_CONF 0x21 -#define CCW_CMD_WRITE_STATUS 0x31 -#define CCW_CMD_SET_IND 0x43 -#define CCW_CMD_SET_CONF_IND 0x53 -#define CCW_CMD_READ_VQ_CONF 0x32 - -/* - * Command-mode operation request block - */ -struct cmd_orb { - __u32 intparm; /* interruption parameter */ - __u32 key:4; /* flags, like key, suspend control, etc. */ - __u32 spnd:1; /* suspend control */ - __u32 res1:1; /* reserved */ - __u32 mod:1; /* modification control */ - __u32 sync:1; /* synchronize control */ - __u32 fmt:1; /* format control */ - __u32 pfch:1; /* prefetch control */ - __u32 isic:1; /* initial-status-interruption control */ - __u32 alcc:1; /* address-limit-checking control */ - __u32 ssic:1; /* suppress-suspended-interr. control */ - __u32 res2:1; /* reserved */ - __u32 c64:1; /* IDAW/QDIO 64 bit control */ - __u32 i2k:1; /* IDAW 2/4kB block size control */ - __u32 lpm:8; /* logical path mask */ - __u32 ils:1; /* incorrect length */ - __u32 zero:6; /* reserved zeros */ - __u32 orbx:1; /* ORB extension control */ - __u32 cpa; /* channel program address */ -} __attribute__ ((packed, aligned(4))); - -struct ciw { - __u8 type; - __u8 command; - __u16 count; -}; - -/* - * sense-id response buffer layout - */ -struct senseid { - /* common part */ - __u8 reserved; /* always 0x'FF' */ - __u16 cu_type; /* control unit type */ - __u8 cu_model; /* control unit model */ - __u16 dev_type; /* device type */ - __u8 dev_model; /* device model */ - __u8 unused; /* padding byte */ - /* extended part */ - struct ciw ciw[62]; -} __attribute__ ((packed, aligned(4))); - -/* interruption response block */ -struct irb { - struct scsw scsw; - __u32 esw[5]; - __u32 ecw[8]; - __u32 emw[8]; -} __attribute__ ((packed, aligned(4))); - -/* - * Some S390 specific IO instructions as inline - */ - -static inline int stsch_err(struct subchannel_id schid, struct schib *addr) -{ - register struct subchannel_id reg1 asm ("1") = schid; - int ccode = -EIO; - - asm volatile( - " stsch 0(%3)\n" - "0: ipm %0\n" - " srl %0,28\n" - "1:\n" - : "+d" (ccode), "=m" (*addr) - : "d" (reg1), "a" (addr) - : "cc"); - return ccode; -} - -static inline int msch(struct subchannel_id schid, struct schib *addr) -{ - register struct subchannel_id reg1 asm ("1") = schid; - int ccode; - - asm volatile( - " msch 0(%2)\n" - " ipm %0\n" - " srl %0,28" - : "=d" (ccode) - : "d" (reg1), "a" (addr), "m" (*addr) - : "cc"); - return ccode; -} - -static inline int msch_err(struct subchannel_id schid, struct schib *addr) -{ - register struct subchannel_id reg1 asm ("1") = schid; - int ccode = -EIO; - - asm volatile( - " msch 0(%2)\n" - "0: ipm %0\n" - " srl %0,28\n" - "1:\n" - : "+d" (ccode) - : "d" (reg1), "a" (addr), "m" (*addr) - : "cc"); - return ccode; -} - -static inline int tsch(struct subchannel_id schid, struct irb *addr) -{ - register struct subchannel_id reg1 asm ("1") = schid; - int ccode; - - asm volatile( - " tsch 0(%3)\n" - " ipm %0\n" - " srl %0,28" - : "=d" (ccode), "=m" (*addr) - : "d" (reg1), "a" (addr) - : "cc"); - return ccode; -} - -static inline int ssch(struct subchannel_id schid, struct cmd_orb *addr) -{ - register struct subchannel_id reg1 asm("1") = schid; - int ccode = -EIO; - - asm volatile( - " ssch 0(%2)\n" - "0: ipm %0\n" - " srl %0,28\n" - "1:\n" - : "+d" (ccode) - : "d" (reg1), "a" (addr), "m" (*addr) - : "cc", "memory"); - return ccode; -} - -static inline int csch(struct subchannel_id schid) -{ - register struct subchannel_id reg1 asm("1") = schid; - int ccode; - - asm volatile( - " csch\n" - " ipm %0\n" - " srl %0,28" - : "=d" (ccode) - : "d" (reg1) - : "cc"); - return ccode; -} - -static inline int tpi(struct tpi_info *addr) -{ - int ccode; - - asm volatile( - " tpi 0(%2)\n" - " ipm %0\n" - " srl %0,28" - : "=d" (ccode), "=m" (*addr) - : "a" (addr) - : "cc"); - return ccode; -} - -static inline int chsc(void *chsc_area) -{ - typedef struct { char _[4096]; } addr_type; - int cc; - - asm volatile( - " .insn rre,0xb25f0000,%2,0\n" - " ipm %0\n" - " srl %0,28\n" - : "=d" (cc), "=m" (*(addr_type *) chsc_area) - : "d" (chsc_area), "m" (*(addr_type *) chsc_area) - : "cc"); - return cc; -} - -#endif /* CIO_H */ diff --git a/qemu/pc-bios/s390-ccw/main.c b/qemu/pc-bios/s390-ccw/main.c deleted file mode 100644 index 1c9e0791a..000000000 --- a/qemu/pc-bios/s390-ccw/main.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * S390 virtio-ccw loading program - * - * Copyright (c) 2013 Alexander Graf <agraf@suse.de> - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ - -#include "s390-ccw.h" -#include "virtio.h" - -char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE))); -uint64_t boot_value; -static SubChannelId blk_schid = { .one = 1 }; - -/* - * Priniciples of Operations (SA22-7832-09) chapter 17 requires that - * a subsystem-identification is at 184-187 and bytes 188-191 are zero - * after list-directed-IPL and ccw-IPL. - */ -void write_subsystem_identification(void) -{ - SubChannelId *schid = (SubChannelId *) 184; - uint32_t *zeroes = (uint32_t *) 188; - - *schid = blk_schid; - *zeroes = 0; -} - - -void panic(const char *string) -{ - sclp_print(string); - disabled_wait(); - while (1) { } -} - -static bool find_dev(Schib *schib, int dev_no) -{ - int i, r; - - for (i = 0; i < 0x10000; i++) { - blk_schid.sch_no = i; - r = stsch_err(blk_schid, schib); - if ((r == 3) || (r == -EIO)) { - break; - } - if (!schib->pmcw.dnv) { - continue; - } - if (!virtio_is_supported(blk_schid)) { - continue; - } - if ((dev_no < 0) || (schib->pmcw.dev == dev_no)) { - return true; - } - } - - return false; -} - -static void virtio_setup(uint64_t dev_info) -{ - Schib schib; - int ssid; - bool found = false; - uint16_t dev_no; - - /* - * We unconditionally enable mss support. In every sane configuration, - * this will succeed; and even if it doesn't, stsch_err() can deal - * with the consequences. - */ - enable_mss_facility(); - - if (dev_info != -1) { - dev_no = dev_info & 0xffff; - debug_print_int("device no. ", dev_no); - blk_schid.ssid = (dev_info >> 16) & 0x3; - debug_print_int("ssid ", blk_schid.ssid); - found = find_dev(&schib, dev_no); - } else { - for (ssid = 0; ssid < 0x3; ssid++) { - blk_schid.ssid = ssid; - found = find_dev(&schib, -1); - if (found) { - break; - } - } - } - - IPL_assert(found, "No virtio device found"); - - virtio_setup_device(blk_schid); - - IPL_assert(virtio_ipl_disk_is_valid(), "No valid IPL device detected"); -} - -int main(void) -{ - sclp_setup(); - debug_print_int("boot reg[7] ", boot_value); - virtio_setup(boot_value); - - zipl_load(); /* no return */ - - panic("Failed to load OS from hard disk\n"); - return 0; /* make compiler happy */ -} diff --git a/qemu/pc-bios/s390-ccw/s390-ccw.h b/qemu/pc-bios/s390-ccw/s390-ccw.h deleted file mode 100644 index 616d96738..000000000 --- a/qemu/pc-bios/s390-ccw/s390-ccw.h +++ /dev/null @@ -1,192 +0,0 @@ -/* - * S390 CCW boot loader - * - * Copyright (c) 2013 Alexander Graf <agraf@suse.de> - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ - -#ifndef S390_CCW_H -#define S390_CCW_H - -/* #define DEBUG */ - -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned int u32; -typedef unsigned long long u64; -typedef unsigned long ulong; -typedef long size_t; -typedef int bool; -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; -typedef unsigned long long uint64_t; -typedef unsigned char __u8; -typedef unsigned short __u16; -typedef unsigned int __u32; -typedef unsigned long long __u64; - -#define true 1 -#define false 0 -#define PAGE_SIZE 4096 - -#ifndef EIO -#define EIO 1 -#endif -#ifndef EBUSY -#define EBUSY 2 -#endif -#ifndef NULL -#define NULL 0 -#endif - -#include "cio.h" - -typedef struct irb Irb; -typedef struct ccw1 Ccw1; -typedef struct cmd_orb CmdOrb; -typedef struct schib Schib; -typedef struct chsc_area_sda ChscAreaSda; -typedef struct senseid SenseId; -typedef struct subchannel_id SubChannelId; - -/* start.s */ -void disabled_wait(void); -void consume_sclp_int(void); - -/* main.c */ -void panic(const char *string); -void write_subsystem_identification(void); -extern char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE))); -extern uint64_t boot_value; - -/* sclp-ascii.c */ -void sclp_print(const char *string); -void sclp_setup(void); - -/* virtio.c */ -unsigned long virtio_load_direct(ulong rec_list1, ulong rec_list2, - ulong subchan_id, void *load_addr); -bool virtio_is_supported(SubChannelId schid); -void virtio_setup_device(SubChannelId schid); -int virtio_read(ulong sector, void *load_addr); -int enable_mss_facility(void); -ulong get_second(void); - -/* bootmap.c */ -void zipl_load(void); - -static inline void *memset(void *s, int c, size_t n) -{ - int i; - unsigned char *p = s; - - for (i = 0; i < n; i++) { - p[i] = c; - } - - return s; -} - -static inline void fill_hex(char *out, unsigned char val) -{ - const char hex[] = "0123456789abcdef"; - - out[0] = hex[(val >> 4) & 0xf]; - out[1] = hex[val & 0xf]; -} - -static inline void fill_hex_val(char *out, void *ptr, unsigned size) -{ - unsigned char *value = ptr; - unsigned int i; - - for (i = 0; i < size; i++) { - fill_hex(&out[i*2], value[i]); - } -} - -static inline void print_int(const char *desc, u64 addr) -{ - char out[] = ": 0xffffffffffffffff\n"; - - fill_hex_val(&out[4], &addr, sizeof(addr)); - - sclp_print(desc); - sclp_print(out); -} - -static inline void debug_print_int(const char *desc, u64 addr) -{ -#ifdef DEBUG - print_int(desc, addr); -#endif -} - -static inline void debug_print_addr(const char *desc, void *p) -{ -#ifdef DEBUG - debug_print_int(desc, (unsigned int)(unsigned long)p); -#endif -} - -/*********************************************** - * Hypercall functions * - ***********************************************/ - -#define KVM_S390_VIRTIO_NOTIFY 0 -#define KVM_S390_VIRTIO_RESET 1 -#define KVM_S390_VIRTIO_SET_STATUS 2 -#define KVM_S390_VIRTIO_CCW_NOTIFY 3 - -static inline void yield(void) -{ - asm volatile ("diag 0,0,0x44" - : : - : "memory", "cc"); -} - -#define MAX_SECTOR_SIZE 4096 - -static inline void sleep(unsigned int seconds) -{ - ulong target = get_second() + seconds; - - while (get_second() < target) { - yield(); - } -} - -static inline void *memcpy(void *s1, const void *s2, size_t n) -{ - uint8_t *p1 = s1; - const uint8_t *p2 = s2; - - while (n--) { - p1[n] = p2[n]; - } - return s1; -} - -static inline void IPL_assert(bool term, const char *message) -{ - if (!term) { - sclp_print("\n! "); - sclp_print(message); - panic(" !\n"); /* no return */ - } -} - -static inline void IPL_check(bool term, const char *message) -{ - if (!term) { - sclp_print("\n! WARNING: "); - sclp_print(message); - sclp_print(" !\n"); - } -} - -#endif /* S390_CCW_H */ diff --git a/qemu/pc-bios/s390-ccw/sclp-ascii.c b/qemu/pc-bios/s390-ccw/sclp-ascii.c deleted file mode 100644 index dc1c3e4f4..000000000 --- a/qemu/pc-bios/s390-ccw/sclp-ascii.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * SCLP ASCII access driver - * - * Copyright (c) 2013 Alexander Graf <agraf@suse.de> - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ - -#include "s390-ccw.h" -#include "sclp.h" - -static char _sccb[PAGE_SIZE] __attribute__((__aligned__(4096))); - -/* Perform service call. Return 0 on success, non-zero otherwise. */ -static int sclp_service_call(unsigned int command, void *sccb) -{ - int cc; - - asm volatile( - " .insn rre,0xb2200000,%1,%2\n" /* servc %1,%2 */ - " ipm %0\n" - " srl %0,28" - : "=&d" (cc) : "d" (command), "a" (__pa(sccb)) - : "cc", "memory"); - consume_sclp_int(); - if (cc == 3) - return -EIO; - if (cc == 2) - return -EBUSY; - return 0; -} - -static void sclp_set_write_mask(void) -{ - WriteEventMask *sccb = (void *)_sccb; - - sccb->h.length = sizeof(WriteEventMask); - sccb->mask_length = sizeof(unsigned int); - sccb->receive_mask = SCLP_EVENT_MASK_MSG_ASCII; - sccb->cp_receive_mask = SCLP_EVENT_MASK_MSG_ASCII; - sccb->send_mask = SCLP_EVENT_MASK_MSG_ASCII; - sccb->cp_send_mask = SCLP_EVENT_MASK_MSG_ASCII; - - sclp_service_call(SCLP_CMD_WRITE_EVENT_MASK, sccb); -} - -void sclp_setup(void) -{ - sclp_set_write_mask(); -} - -static int _strlen(const char *str) -{ - int i; - for (i = 0; *str; i++) - str++; - return i; -} - -static void _memcpy(char *dest, const char *src, int len) -{ - int i; - for (i = 0; i < len; i++) - dest[i] = src[i]; -} - -void sclp_print(const char *str) -{ - int len = _strlen(str); - WriteEventData *sccb = (void *)_sccb; - - sccb->h.length = sizeof(WriteEventData) + len; - sccb->h.function_code = SCLP_FC_NORMAL_WRITE; - sccb->ebh.length = sizeof(EventBufferHeader) + len; - sccb->ebh.type = SCLP_EVENT_ASCII_CONSOLE_DATA; - sccb->ebh.flags = 0; - _memcpy(sccb->data, str, len); - - sclp_service_call(SCLP_CMD_WRITE_EVENT_DATA, sccb); -} diff --git a/qemu/pc-bios/s390-ccw/sclp.h b/qemu/pc-bios/s390-ccw/sclp.h deleted file mode 100644 index 3cbfb7893..000000000 --- a/qemu/pc-bios/s390-ccw/sclp.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * SCLP ASCII access driver - * - * Copyright (c) 2013 Alexander Graf <agraf@suse.de> - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ - -#ifndef SCLP_H -#define SCLP_H - -/* SCLP command codes */ -#define SCLP_CMDW_READ_SCP_INFO 0x00020001 -#define SCLP_CMDW_READ_SCP_INFO_FORCED 0x00120001 -#define SCLP_CMD_READ_EVENT_DATA 0x00770005 -#define SCLP_CMD_WRITE_EVENT_DATA 0x00760005 -#define SCLP_CMD_READ_EVENT_DATA 0x00770005 -#define SCLP_CMD_WRITE_EVENT_DATA 0x00760005 -#define SCLP_CMD_WRITE_EVENT_MASK 0x00780005 - -/* SCLP response codes */ -#define SCLP_RC_NORMAL_READ_COMPLETION 0x0010 -#define SCLP_RC_NORMAL_COMPLETION 0x0020 -#define SCLP_RC_INVALID_SCLP_COMMAND 0x01f0 -#define SCLP_RC_CONTAINED_EQUIPMENT_CHECK 0x0340 -#define SCLP_RC_INSUFFICIENT_SCCB_LENGTH 0x0300 -#define SCLP_RC_INVALID_FUNCTION 0x40f0 -#define SCLP_RC_NO_EVENT_BUFFERS_STORED 0x60f0 -#define SCLP_RC_INVALID_SELECTION_MASK 0x70f0 -#define SCLP_RC_INCONSISTENT_LENGTHS 0x72f0 -#define SCLP_RC_EVENT_BUFFER_SYNTAX_ERROR 0x73f0 -#define SCLP_RC_INVALID_MASK_LENGTH 0x74f0 - -/* Service Call Control Block (SCCB) and its elements */ - -#define SCCB_SIZE 4096 - -#define SCLP_VARIABLE_LENGTH_RESPONSE 0x80 -#define SCLP_EVENT_BUFFER_ACCEPTED 0x80 - -#define SCLP_FC_NORMAL_WRITE 0 - -typedef struct SCCBHeader { - uint16_t length; - uint8_t function_code; - uint8_t control_mask[3]; - uint16_t response_code; -} __attribute__((packed)) SCCBHeader; - -#define SCCB_DATA_LEN (SCCB_SIZE - sizeof(SCCBHeader)) - -typedef struct ReadInfo { - SCCBHeader h; - uint16_t rnmax; - uint8_t rnsize; -} __attribute__((packed)) ReadInfo; - -typedef struct SCCB { - SCCBHeader h; - char data[SCCB_DATA_LEN]; - } __attribute__((packed)) SCCB; - -/* SCLP event types */ -#define SCLP_EVENT_ASCII_CONSOLE_DATA 0x1a -#define SCLP_EVENT_SIGNAL_QUIESCE 0x1d - -/* SCLP event masks */ -#define SCLP_EVENT_MASK_SIGNAL_QUIESCE 0x00000008 -#define SCLP_EVENT_MASK_MSG_ASCII 0x00000040 - -#define SCLP_UNCONDITIONAL_READ 0x00 -#define SCLP_SELECTIVE_READ 0x01 - -typedef struct WriteEventMask { - SCCBHeader h; - uint16_t _reserved; - uint16_t mask_length; - uint32_t cp_receive_mask; - uint32_t cp_send_mask; - uint32_t send_mask; - uint32_t receive_mask; -} __attribute__((packed)) WriteEventMask; - -typedef struct EventBufferHeader { - uint16_t length; - uint8_t type; - uint8_t flags; - uint16_t _reserved; -} __attribute__((packed)) EventBufferHeader; - -typedef struct WriteEventData { - SCCBHeader h; - EventBufferHeader ebh; - char data[0]; -} __attribute__((packed)) WriteEventData; - -typedef struct ReadEventData { - SCCBHeader h; - EventBufferHeader ebh; - uint32_t mask; -} __attribute__((packed)) ReadEventData; - -#define __pa(x) (x) - -#endif /* SCLP_H */ diff --git a/qemu/pc-bios/s390-ccw/scsi.h b/qemu/pc-bios/s390-ccw/scsi.h deleted file mode 100644 index fc830f7e5..000000000 --- a/qemu/pc-bios/s390-ccw/scsi.h +++ /dev/null @@ -1,184 +0,0 @@ -/* - * SCSI definitions for s390 machine loader for qemu - * - * Copyright 2015 IBM Corp. - * Author: Eugene "jno" Dvurechenski <jno@linux.vnet.ibm.com> - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ - -#ifndef SCSI_H -#define SCSI_H - -#include "s390-ccw.h" - -#define SCSI_DEFAULT_CDB_SIZE 32 -#define SCSI_DEFAULT_SENSE_SIZE 96 - -#define CDB_STATUS_GOOD 0 -#define CDB_STATUS_CHECK_CONDITION 0x02U -#define CDB_STATUS_VALID(status) (((status) & ~0x3eU) == 0) - -#define SCSI_SENSE_CODE_MASK 0x7fU -#define SCSI_SENSE_KEY_MASK 0x0fU -#define SCSI_SENSE_KEY_NO_SENSE 0 -#define SCSI_SENSE_KEY_UNIT_ATTENTION 6 - -union ScsiLun { - uint64_t v64; /* numeric shortcut */ - uint8_t v8[8]; /* generic 8 bytes representation */ - uint16_t v16[4]; /* 4-level big-endian LUN as specified by SAM-2 */ -}; -typedef union ScsiLun ScsiLun; - -struct ScsiSense70 { - uint8_t b0; /* b0 & 7f = resp code (0x70 or 0x71) */ - uint8_t b1, b2; /* b2 & 0f = sense key */ - uint8_t u1[1 * 4 + 1 + 1 * 4]; /* b7 = N - 7 */ - uint8_t additional_sense_code; /* b12 */ - uint8_t additional_sense_code_qualifier; /* b13 */ - uint8_t u2[1 + 3 + 0]; /* up to N (<=252) bytes */ -} __attribute__((packed)); -typedef struct ScsiSense70 ScsiSense70; - -/* don't confuse with virtio-scsi response/status fields! */ - -static inline uint8_t scsi_sense_response(const void *p) -{ - return ((const ScsiSense70 *)p)->b0 & SCSI_SENSE_CODE_MASK; -} - -static inline uint8_t scsi_sense_key(const void *p) -{ - return ((const ScsiSense70 *)p)->b2 & SCSI_SENSE_KEY_MASK; -} - -#define SCSI_INQ_RDT_CDROM 0x05 - -struct ScsiInquiryStd { - uint8_t peripheral_qdt; /* b0, use (b0 & 0x1f) to get SCSI_INQ_RDT */ - uint8_t b1; /* Removable Media Bit = b1 & 0x80 */ - uint8_t spc_version; /* b2 */ - uint8_t b3; /* b3 & 0x0f == resp_data_fmt == 2, must! */ - uint8_t u1[1 + 1 + 1 + 1 + 8]; /* b4..b15 unused, b4 = (N - 1) */ - char prod_id[16]; /* "QEMU CD-ROM" is here */ - uint8_t u2[4 /* b32..b35 unused, mandatory */ - + 8 + 12 + 1 + 1 + 8 * 2 + 22 /* b36..95 unused, optional*/ - + 0]; /* b96..bN unused, vendor specific */ - /* byte N */ -} __attribute__((packed)); -typedef struct ScsiInquiryStd ScsiInquiryStd; - -struct ScsiCdbInquiry { - uint8_t command; /* b0, == 0x12 */ - uint8_t b1; /* b1, |= 0x01 (evpd) */ - uint8_t b2; /* b2; if evpd==1 */ - uint16_t alloc_len; /* b3, b4 */ - uint8_t control; /* b5 */ -} __attribute__((packed)); -typedef struct ScsiCdbInquiry ScsiCdbInquiry; - -struct ScsiCdbRead10 { - uint8_t command; /* =0x28 */ - uint8_t b1; - uint32_t lba; - uint8_t b6; - uint16_t xfer_length; - uint8_t control; -} __attribute__((packed)); -typedef struct ScsiCdbRead10 ScsiCdbRead10; - -struct ScsiCdbTestUnitReady { - uint8_t command; /* =0x00 */ - uint8_t b1_b4[4]; - uint8_t control; -} __attribute__((packed)); -typedef struct ScsiCdbTestUnitReady ScsiCdbTestUnitReady; - -struct ScsiCdbReportLuns { - uint8_t command; /* =0xa0 */ - uint8_t b1; - uint8_t select_report; /* =0x02, "all" */ - uint8_t b3_b5[3]; - uint32_t alloc_len; - uint8_t b10; - uint8_t control; -} __attribute__((packed)); -typedef struct ScsiCdbReportLuns ScsiCdbReportLuns; - -struct ScsiLunReport { - uint32_t lun_list_len; - uint32_t b4_b7; - ScsiLun lun[1]; /* space for at least 1 lun must be allocated */ -} __attribute__((packed)); -typedef struct ScsiLunReport ScsiLunReport; - -struct ScsiCdbReadCapacity16 { - uint8_t command; /* =0x9e = "service action in 16" */ - uint8_t service_action; /* 5 bits, =0x10 = "read capacity 16" */ - uint64_t b2_b9; - uint32_t alloc_len; - uint8_t b14; - uint8_t control; -} __attribute__((packed)); -typedef struct ScsiCdbReadCapacity16 ScsiCdbReadCapacity16; - -struct ScsiReadCapacity16Data { - uint64_t ret_lba; /* get it, 0..7 */ - uint32_t lb_len; /* bytes, 8..11 */ - uint8_t u1[2 + 1 * 2 + 16]; /* b12..b31, unused */ -} __attribute__((packed)); -typedef struct ScsiReadCapacity16Data ScsiReadCapacity16Data; - -static inline ScsiLun make_lun(uint16_t channel, uint16_t target, uint32_t lun) -{ - ScsiLun r = { .v64 = 0 }; - - /* See QEMU code to choose the way to handle LUNs. - * - * So, a valid LUN must have (always channel #0): - * lun[0] == 1 - * lun[1] - target, any value - * lun[2] == 0 or (LUN, MSB, 0x40 set, 0x80 clear) - * lun[3] - LUN, LSB, any value - */ - r.v8[0] = 1; - r.v8[1] = target & 0xffU; - r.v8[2] = (lun >> 8) & 0x3fU; - if (r.v8[2]) { - r.v8[2] |= 0x40; - } - r.v8[3] = lun & 0xffU; - - return r; -} - -static inline const char *scsi_cdb_status_msg(uint8_t status) -{ - static char err_msg[] = "STATUS=XX"; - uint8_t v = status & 0x3eU; - - fill_hex_val(err_msg + 7, &v, 1); - return err_msg; -} - -static inline const char *scsi_cdb_asc_msg(const void *s) -{ - static char err_msg[] = "RSPN=XX KEY=XX CODE=XX QLFR=XX"; - const ScsiSense70 *p = s; - uint8_t sr = scsi_sense_response(s); - uint8_t sk = scsi_sense_key(s); - uint8_t ac = p->additional_sense_code; - uint8_t cq = p->additional_sense_code_qualifier; - - fill_hex_val(err_msg + 5, &sr, 1); - fill_hex_val(err_msg + 12, &sk, 1); - fill_hex_val(err_msg + 20, &ac, 1); - fill_hex_val(err_msg + 28, &cq, 1); - - return err_msg; -} - -#endif /* SCSI_H */ diff --git a/qemu/pc-bios/s390-ccw/start.S b/qemu/pc-bios/s390-ccw/start.S deleted file mode 100644 index b6dd8c2fb..000000000 --- a/qemu/pc-bios/s390-ccw/start.S +++ /dev/null @@ -1,65 +0,0 @@ -/* - * First stage boot loader for virtio devices. The compiled output goes - * into the pc-bios directory of qemu. - * - * Copyright (c) 2013 Alexander Graf <agraf@suse.de> - * Copyright 2013 IBM Corp. - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ - - .globl _start -_start: - -larl %r15, stack + 0x8000 /* Set up stack */ -larl %r6, boot_value -stg %r7, 0(%r6) /* save the boot_value before any function calls */ -j main /* And call C */ - -/* - * void disabled_wait(void) - * - * stops the current guest cpu. - */ - .globl disabled_wait -disabled_wait: - larl %r1,disabled_wait_psw - lpswe 0(%r1) - - -/* - * void consume_sclp_int(void) - * - * eats one sclp interrupt - */ - .globl consume_sclp_int -consume_sclp_int: - /* enable service interrupts in cr0 */ - stctg 0,0,0(15) - oi 6(15), 0x2 - lctlg 0,0,0(15) - /* prepare external call handler */ - larl %r1, external_new_code - stg %r1, 0x1b8 - larl %r1, external_new_mask - mvc 0x1b0(8),0(%r1) - /* load enabled wait PSW */ - larl %r1, enabled_wait_psw - lpswe 0(%r1) - -external_new_code: - /* disable service interrupts in cr0 */ - stctg 0,0,0(15) - ni 6(15), 0xfd - lctlg 0,0,0(15) - br 14 - - .align 8 -disabled_wait_psw: - .quad 0x0002000180000000,0x0000000000000000 -enabled_wait_psw: - .quad 0x0302000180000000,0x0000000000000000 -external_new_mask: - .quad 0x0000000180000000 diff --git a/qemu/pc-bios/s390-ccw/virtio-scsi.c b/qemu/pc-bios/s390-ccw/virtio-scsi.c deleted file mode 100644 index 3bb48e917..000000000 --- a/qemu/pc-bios/s390-ccw/virtio-scsi.c +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Virtio-SCSI implementation for s390 machine loader for qemu - * - * Copyright 2015 IBM Corp. - * Author: Eugene "jno" Dvurechenski <jno@linux.vnet.ibm.com> - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ - -#include "s390-ccw.h" -#include "virtio.h" -#include "scsi.h" -#include "virtio-scsi.h" - -static ScsiDevice default_scsi_device; -static VirtioScsiCmdReq req; -static VirtioScsiCmdResp resp; - -static uint8_t scsi_inquiry_std_response[256]; - -static inline void vs_assert(bool term, const char **msgs) -{ - if (!term) { - int i = 0; - - sclp_print("\n! "); - while (msgs[i]) { - sclp_print(msgs[i++]); - } - panic(" !\n"); - } -} - -static void virtio_scsi_verify_response(VirtioScsiCmdResp *resp, - const char *title) -{ - const char *mr[] = { - title, ": response ", virtio_scsi_response_msg(resp), 0 - }; - const char *ms[] = { - title, - CDB_STATUS_VALID(resp->status) ? ": " : ": invalid ", - scsi_cdb_status_msg(resp->status), - resp->status == CDB_STATUS_CHECK_CONDITION ? " " : 0, - resp->sense_len ? scsi_cdb_asc_msg(resp->sense) - : "no sense data", - scsi_sense_response(resp->sense) == 0x70 ? ", sure" : "?", - 0 - }; - - vs_assert(resp->response == VIRTIO_SCSI_S_OK, mr); - vs_assert(resp->status == CDB_STATUS_GOOD, ms); -} - -static void prepare_request(VDev *vdev, const void *cdb, int cdb_size, - void *data, uint32_t data_size) -{ - const ScsiDevice *sdev = vdev->scsi_device; - - memset(&req, 0, sizeof(req)); - req.lun = make_lun(sdev->channel, sdev->target, sdev->lun); - memcpy(&req.cdb, cdb, cdb_size); - - memset(&resp, 0, sizeof(resp)); - resp.status = 0xff; /* set invalid */ - resp.response = 0xff; /* */ - - if (data && data_size) { - memset(data, 0, data_size); - } -} - -static inline void vs_io_assert(bool term, const char *msg) -{ - if (!term) { - virtio_scsi_verify_response(&resp, msg); - } -} - -static void vs_run(const char *title, VirtioCmd *cmd, VDev *vdev, - const void *cdb, int cdb_size, - void *data, uint32_t data_size) -{ - prepare_request(vdev, cdb, cdb_size, data, data_size); - vs_io_assert(virtio_run(vdev, VR_REQUEST, cmd) == 0, title); -} - -/* SCSI protocol implementation routines */ - -static bool scsi_inquiry(VDev *vdev, void *data, uint32_t data_size) -{ - ScsiCdbInquiry cdb = { - .command = 0x12, - .alloc_len = data_size < 65535 ? data_size : 65535, - }; - VirtioCmd inquiry[] = { - { &req, sizeof(req), VRING_DESC_F_NEXT }, - { &resp, sizeof(resp), VRING_DESC_F_WRITE | VRING_DESC_F_NEXT }, - { data, data_size, VRING_DESC_F_WRITE }, - }; - - vs_run("inquiry", inquiry, vdev, &cdb, sizeof(cdb), data, data_size); - - return virtio_scsi_response_ok(&resp); -} - -static bool scsi_test_unit_ready(VDev *vdev) -{ - ScsiCdbTestUnitReady cdb = { - .command = 0x00, - }; - VirtioCmd test_unit_ready[] = { - { &req, sizeof(req), VRING_DESC_F_NEXT }, - { &resp, sizeof(resp), VRING_DESC_F_WRITE }, - }; - - prepare_request(vdev, &cdb, sizeof(cdb), 0, 0); - virtio_run(vdev, VR_REQUEST, test_unit_ready); /* ignore errors here */ - - return virtio_scsi_response_ok(&resp); -} - -static bool scsi_report_luns(VDev *vdev, void *data, uint32_t data_size) -{ - ScsiCdbReportLuns cdb = { - .command = 0xa0, - .select_report = 0x02, /* REPORT ALL */ - .alloc_len = data_size, - }; - VirtioCmd report_luns[] = { - { &req, sizeof(req), VRING_DESC_F_NEXT }, - { &resp, sizeof(resp), VRING_DESC_F_WRITE | VRING_DESC_F_NEXT }, - { data, data_size, VRING_DESC_F_WRITE }, - }; - - vs_run("report luns", report_luns, - vdev, &cdb, sizeof(cdb), data, data_size); - - return virtio_scsi_response_ok(&resp); -} - -static bool scsi_read_10(VDev *vdev, - ulong sector, int sectors, void *data) -{ - int f = vdev->blk_factor; - unsigned int data_size = sectors * virtio_get_block_size() * f; - ScsiCdbRead10 cdb = { - .command = 0x28, - .lba = sector * f, - .xfer_length = sectors * f, - }; - VirtioCmd read_10[] = { - { &req, sizeof(req), VRING_DESC_F_NEXT }, - { &resp, sizeof(resp), VRING_DESC_F_WRITE | VRING_DESC_F_NEXT }, - { data, data_size * f, VRING_DESC_F_WRITE }, - }; - - debug_print_int("read_10 sector", sector); - debug_print_int("read_10 sectors", sectors); - - vs_run("read(10)", read_10, vdev, &cdb, sizeof(cdb), data, data_size); - - return virtio_scsi_response_ok(&resp); -} - -static bool scsi_read_capacity(VDev *vdev, - void *data, uint32_t data_size) -{ - ScsiCdbReadCapacity16 cdb = { - .command = 0x9e, /* SERVICE_ACTION_IN_16 */ - .service_action = 0x10, /* SA_READ_CAPACITY */ - .alloc_len = data_size, - }; - VirtioCmd read_capacity_16[] = { - { &req, sizeof(req), VRING_DESC_F_NEXT }, - { &resp, sizeof(resp), VRING_DESC_F_WRITE | VRING_DESC_F_NEXT }, - { data, data_size, VRING_DESC_F_WRITE }, - }; - - vs_run("read capacity", read_capacity_16, - vdev, &cdb, sizeof(cdb), data, data_size); - - return virtio_scsi_response_ok(&resp); -} - -/* virtio-scsi routines */ - -static void virtio_scsi_locate_device(VDev *vdev) -{ - const uint16_t channel = 0; /* again, it's what QEMU does */ - uint16_t target; - static uint8_t data[16 + 8 * 63]; - ScsiLunReport *r = (void *) data; - ScsiDevice *sdev = vdev->scsi_device; - int i, luns; - - /* QEMU has hardcoded channel #0 in many places. - * If this hardcoded value is ever changed, we'll need to add code for - * vdev->config.scsi.max_channel != 0 here. - */ - debug_print_int("config.scsi.max_channel", vdev->config.scsi.max_channel); - debug_print_int("config.scsi.max_target ", vdev->config.scsi.max_target); - debug_print_int("config.scsi.max_lun ", vdev->config.scsi.max_lun); - - for (target = 0; target <= vdev->config.scsi.max_target; target++) { - sdev->channel = channel; - sdev->target = target; /* sdev->lun will be 0 here */ - if (!scsi_report_luns(vdev, data, sizeof(data))) { - if (resp.response == VIRTIO_SCSI_S_BAD_TARGET) { - continue; - } - print_int("target", target); - virtio_scsi_verify_response(&resp, "SCSI cannot report LUNs"); - } - if (r->lun_list_len == 0) { - print_int("no LUNs for target", target); - continue; - } - luns = r->lun_list_len / 8; - debug_print_int("LUNs reported", luns); - if (luns == 1) { - /* There is no ",lun=#" arg for -device or ",lun=0" given. - * Hence, the only LUN reported. - * Usually, it's 0. - */ - sdev->lun = r->lun[0].v16[0]; /* it's returned this way */ - debug_print_int("Have to use LUN", sdev->lun); - return; /* we have to use this device */ - } - for (i = 0; i < luns; i++) { - if (r->lun[i].v64) { - /* Look for non-zero LUN - we have where to choose from */ - sdev->lun = r->lun[i].v16[0]; - debug_print_int("Will use LUN", sdev->lun); - return; /* we have found a device */ - } - } - } - panic("\n! Cannot locate virtio-scsi device !\n"); -} - -int virtio_scsi_read_many(VDev *vdev, - ulong sector, void *load_addr, int sec_num) -{ - if (!scsi_read_10(vdev, sector, sec_num, load_addr)) { - virtio_scsi_verify_response(&resp, "virtio-scsi:read_many"); - } - - return 0; -} - -static bool virtio_scsi_inquiry_response_is_cdrom(void *data) -{ - const ScsiInquiryStd *response = data; - const int resp_data_fmt = response->b3 & 0x0f; - int i; - - IPL_check(resp_data_fmt == 2, "Wrong INQUIRY response format"); - if (resp_data_fmt != 2) { - return false; /* cannot decode */ - } - - if ((response->peripheral_qdt & 0x1f) == SCSI_INQ_RDT_CDROM) { - return true; - } - - for (i = 0; i < sizeof(response->prod_id); i++) { - if (response->prod_id[i] != QEMU_CDROM_SIGNATURE[i]) { - return false; - } - } - return true; -} - -static void scsi_parse_capacity_report(void *data, - uint64_t *last_lba, uint32_t *lb_len) -{ - ScsiReadCapacity16Data *p = data; - - if (last_lba) { - *last_lba = p->ret_lba; - } - - if (lb_len) { - *lb_len = p->lb_len; - } -} - -void virtio_scsi_setup(VDev *vdev) -{ - int retry_test_unit_ready = 3; - uint8_t data[256]; - uint32_t data_size = sizeof(data); - - vdev->scsi_device = &default_scsi_device; - virtio_scsi_locate_device(vdev); - - /* We have to "ping" the device before it becomes readable */ - while (!scsi_test_unit_ready(vdev)) { - - if (!virtio_scsi_response_ok(&resp)) { - uint8_t code = resp.sense[0] & SCSI_SENSE_CODE_MASK; - uint8_t sense_key = resp.sense[2] & SCSI_SENSE_KEY_MASK; - - IPL_assert(resp.sense_len != 0, "virtio-scsi:setup: no SENSE data"); - - IPL_assert(retry_test_unit_ready && code == 0x70 && - sense_key == SCSI_SENSE_KEY_UNIT_ATTENTION, - "virtio-scsi:setup: cannot retry"); - - /* retry on CHECK_CONDITION/UNIT_ATTENTION as it - * may not designate a real error, but it may be - * a result of device reset, etc. - */ - retry_test_unit_ready--; - sleep(1); - continue; - } - - virtio_scsi_verify_response(&resp, "virtio-scsi:setup"); - } - - /* read and cache SCSI INQUIRY response */ - if (!scsi_inquiry(vdev, scsi_inquiry_std_response, - sizeof(scsi_inquiry_std_response))) { - virtio_scsi_verify_response(&resp, "virtio-scsi:setup:inquiry"); - } - - if (virtio_scsi_inquiry_response_is_cdrom(scsi_inquiry_std_response)) { - sclp_print("SCSI CD-ROM detected.\n"); - vdev->is_cdrom = true; - vdev->scsi_block_size = VIRTIO_ISO_BLOCK_SIZE; - } - - if (!scsi_read_capacity(vdev, data, data_size)) { - virtio_scsi_verify_response(&resp, "virtio-scsi:setup:read_capacity"); - } - scsi_parse_capacity_report(data, &vdev->scsi_last_block, - (uint32_t *) &vdev->scsi_block_size); -} diff --git a/qemu/pc-bios/s390-ccw/virtio-scsi.h b/qemu/pc-bios/s390-ccw/virtio-scsi.h deleted file mode 100644 index f50b38b18..000000000 --- a/qemu/pc-bios/s390-ccw/virtio-scsi.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Virtio-SCSI definitions for s390 machine loader for qemu - * - * Copyright 2015 IBM Corp. - * Author: Eugene "jno" Dvurechenski <jno@linux.vnet.ibm.com> - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ - -#ifndef VIRTIO_SCSI_H -#define VIRTIO_SCSI_H - -#include "s390-ccw.h" -#include "virtio.h" -#include "scsi.h" - -#define VIRTIO_SCSI_CDB_SIZE SCSI_DEFAULT_CDB_SIZE -#define VIRTIO_SCSI_SENSE_SIZE SCSI_DEFAULT_SENSE_SIZE - -/* command-specific response values */ -#define VIRTIO_SCSI_S_OK 0x00 -#define VIRTIO_SCSI_S_BAD_TARGET 0x03 - -#define QEMU_CDROM_SIGNATURE "QEMU CD-ROM " - -enum virtio_scsi_vq_id { - VR_CONTROL = 0, - VR_EVENT = 1, - VR_REQUEST = 2, -}; - -struct VirtioScsiCmdReq { - ScsiLun lun; - uint64_t id; - uint8_t task_attr; /* = 0 = VIRTIO_SCSI_S_SIMPLE */ - uint8_t prio; - uint8_t crn; /* = 0 */ - uint8_t cdb[VIRTIO_SCSI_CDB_SIZE]; -} __attribute__((packed)); -typedef struct VirtioScsiCmdReq VirtioScsiCmdReq; - -struct VirtioScsiCmdResp { - uint32_t sense_len; - uint32_t residual; - uint16_t status_qualifier; - uint8_t status; /* first check for .response */ - uint8_t response; /* then for .status */ - uint8_t sense[VIRTIO_SCSI_SENSE_SIZE]; -} __attribute__((packed)); -typedef struct VirtioScsiCmdResp VirtioScsiCmdResp; - -static inline const char *virtio_scsi_response_msg(const VirtioScsiCmdResp *r) -{ - static char err_msg[] = "VS RESP=XX"; - uint8_t v = r->response; - - fill_hex_val(err_msg + 8, &v, 1); - return err_msg; -} - -static inline bool virtio_scsi_response_ok(const VirtioScsiCmdResp *r) -{ - return r->response == VIRTIO_SCSI_S_OK && r->status == CDB_STATUS_GOOD; -} - -void virtio_scsi_setup(VDev *vdev); -int virtio_scsi_read_many(VDev *vdev, - ulong sector, void *load_addr, int sec_num); - -#endif /* VIRTIO_SCSI_H */ diff --git a/qemu/pc-bios/s390-ccw/virtio.c b/qemu/pc-bios/s390-ccw/virtio.c deleted file mode 100644 index 1d34e8c1a..000000000 --- a/qemu/pc-bios/s390-ccw/virtio.c +++ /dev/null @@ -1,608 +0,0 @@ -/* - * Virtio driver bits - * - * Copyright (c) 2013 Alexander Graf <agraf@suse.de> - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ - -#include "s390-ccw.h" -#include "virtio.h" -#include "virtio-scsi.h" - -#define VRING_WAIT_REPLY_TIMEOUT 3 - -static VRing block[VIRTIO_MAX_VQS]; -static char ring_area[VIRTIO_RING_SIZE * VIRTIO_MAX_VQS] - __attribute__((__aligned__(PAGE_SIZE))); - -static char chsc_page[PAGE_SIZE] __attribute__((__aligned__(PAGE_SIZE))); - -static VDev vdev = { - .nr_vqs = 1, - .vrings = block, - .cmd_vr_idx = 0, - .ring_area = ring_area, - .wait_reply_timeout = VRING_WAIT_REPLY_TIMEOUT, - .schid = { .one = 1 }, - .scsi_block_size = VIRTIO_SCSI_BLOCK_SIZE, - .blk_factor = 1, -}; - -VDev *virtio_get_device(void) -{ - return &vdev; -} - -VirtioDevType virtio_get_device_type(void) -{ - return vdev.senseid.cu_model; -} - -/* virtio spec v1.0 para 4.3.3.2 */ -static long kvm_hypercall(unsigned long nr, unsigned long param1, - unsigned long param2, unsigned long param3) -{ - register ulong r_nr asm("1") = nr; - register ulong r_param1 asm("2") = param1; - register ulong r_param2 asm("3") = param2; - register ulong r_param3 asm("4") = param3; - register long retval asm("2"); - - asm volatile ("diag 2,4,0x500" - : "=d" (retval) - : "d" (r_nr), "0" (r_param1), "r"(r_param2), "d"(r_param3) - : "memory", "cc"); - - return retval; -} - -static long virtio_notify(SubChannelId schid, int vq_idx, long cookie) -{ - return kvm_hypercall(KVM_S390_VIRTIO_CCW_NOTIFY, *(u32 *)&schid, - vq_idx, cookie); -} - -/*********************************************** - * Virtio functions * - ***********************************************/ - -static int drain_irqs(SubChannelId schid) -{ - Irb irb = {}; - int r = 0; - - while (1) { - /* FIXME: make use of TPI, for that enable subchannel and isc */ - if (tsch(schid, &irb)) { - /* Might want to differentiate error codes later on. */ - if (irb.scsw.cstat) { - r = -EIO; - } else if (irb.scsw.dstat != 0xc) { - r = -EIO; - } - return r; - } - } -} - -static int run_ccw(VDev *vdev, int cmd, void *ptr, int len) -{ - Ccw1 ccw = {}; - CmdOrb orb = {}; - Schib schib; - int r; - - /* start command processing */ - stsch_err(vdev->schid, &schib); - schib.scsw.ctrl = SCSW_FCTL_START_FUNC; - msch(vdev->schid, &schib); - - /* start subchannel command */ - orb.fmt = 1; - orb.cpa = (u32)(long)&ccw; - orb.lpm = 0x80; - - ccw.cmd_code = cmd; - ccw.cda = (long)ptr; - ccw.count = len; - - r = ssch(vdev->schid, &orb); - /* - * XXX Wait until device is done processing the CCW. For now we can - * assume that a simple tsch will have finished the CCW processing, - * but the architecture allows for asynchronous operation - */ - if (!r) { - r = drain_irqs(vdev->schid); - } - return r; -} - -static void vring_init(VRing *vr, VqInfo *info) -{ - void *p = (void *) info->queue; - - debug_print_addr("init p", p); - vr->id = info->index; - vr->num = info->num; - vr->desc = p; - vr->avail = p + info->num * sizeof(VRingDesc); - vr->used = (void *)(((unsigned long)&vr->avail->ring[info->num] - + info->align - 1) & ~(info->align - 1)); - - /* Zero out all relevant field */ - vr->avail->flags = 0; - vr->avail->idx = 0; - - /* We're running with interrupts off anyways, so don't bother */ - vr->used->flags = VRING_USED_F_NO_NOTIFY; - vr->used->idx = 0; - vr->used_idx = 0; - vr->next_idx = 0; - vr->cookie = 0; - - debug_print_addr("init vr", vr); -} - -static bool vring_notify(VRing *vr) -{ - vr->cookie = virtio_notify(vr->schid, vr->id, vr->cookie); - return vr->cookie >= 0; -} - -static void vring_send_buf(VRing *vr, void *p, int len, int flags) -{ - /* For follow-up chains we need to keep the first entry point */ - if (!(flags & VRING_HIDDEN_IS_CHAIN)) { - vr->avail->ring[vr->avail->idx % vr->num] = vr->next_idx; - } - - vr->desc[vr->next_idx].addr = (ulong)p; - vr->desc[vr->next_idx].len = len; - vr->desc[vr->next_idx].flags = flags & ~VRING_HIDDEN_IS_CHAIN; - vr->desc[vr->next_idx].next = vr->next_idx; - vr->desc[vr->next_idx].next++; - vr->next_idx++; - - /* Chains only have a single ID */ - if (!(flags & VRING_DESC_F_NEXT)) { - vr->avail->idx++; - } -} - -static u64 get_clock(void) -{ - u64 r; - - asm volatile("stck %0" : "=Q" (r) : : "cc"); - return r; -} - -ulong get_second(void) -{ - return (get_clock() >> 12) / 1000000; -} - -static int vr_poll(VRing *vr) -{ - if (vr->used->idx == vr->used_idx) { - vring_notify(vr); - yield(); - return 0; - } - - vr->used_idx = vr->used->idx; - vr->next_idx = 0; - vr->desc[0].len = 0; - vr->desc[0].flags = 0; - return 1; /* vr has been updated */ -} - -/* - * Wait for the host to reply. - * - * timeout is in seconds if > 0. - * - * Returns 0 on success, 1 on timeout. - */ -static int vring_wait_reply(void) -{ - ulong target_second = get_second() + vdev.wait_reply_timeout; - - /* Wait for any queue to be updated by the host */ - do { - int i, r = 0; - - for (i = 0; i < vdev.nr_vqs; i++) { - r += vr_poll(&vdev.vrings[i]); - } - yield(); - if (r) { - return 0; - } - } while (!vdev.wait_reply_timeout || (get_second() < target_second)); - - return 1; -} - -int virtio_run(VDev *vdev, int vqid, VirtioCmd *cmd) -{ - VRing *vr = &vdev->vrings[vqid]; - int i = 0; - - do { - vring_send_buf(vr, cmd[i].data, cmd[i].size, - cmd[i].flags | (i ? VRING_HIDDEN_IS_CHAIN : 0)); - } while (cmd[i++].flags & VRING_DESC_F_NEXT); - - vring_wait_reply(); - if (drain_irqs(vr->schid)) { - return -1; - } - return 0; -} - -/*********************************************** - * Virtio block * - ***********************************************/ - -static int virtio_blk_read_many(VDev *vdev, - ulong sector, void *load_addr, int sec_num) -{ - VirtioBlkOuthdr out_hdr; - u8 status; - VRing *vr = &vdev->vrings[vdev->cmd_vr_idx]; - - /* Tell the host we want to read */ - out_hdr.type = VIRTIO_BLK_T_IN; - out_hdr.ioprio = 99; - out_hdr.sector = virtio_sector_adjust(sector); - - vring_send_buf(vr, &out_hdr, sizeof(out_hdr), VRING_DESC_F_NEXT); - - /* This is where we want to receive data */ - vring_send_buf(vr, load_addr, virtio_get_block_size() * sec_num, - VRING_DESC_F_WRITE | VRING_HIDDEN_IS_CHAIN | - VRING_DESC_F_NEXT); - - /* status field */ - vring_send_buf(vr, &status, sizeof(u8), - VRING_DESC_F_WRITE | VRING_HIDDEN_IS_CHAIN); - - /* Now we can tell the host to read */ - vring_wait_reply(); - - if (drain_irqs(vr->schid)) { - /* Well, whatever status is supposed to contain... */ - status = 1; - } - return status; -} - -int virtio_read_many(ulong sector, void *load_addr, int sec_num) -{ - switch (vdev.senseid.cu_model) { - case VIRTIO_ID_BLOCK: - return virtio_blk_read_many(&vdev, sector, load_addr, sec_num); - case VIRTIO_ID_SCSI: - return virtio_scsi_read_many(&vdev, sector, load_addr, sec_num); - } - panic("\n! No readable IPL device !\n"); - return -1; -} - -unsigned long virtio_load_direct(ulong rec_list1, ulong rec_list2, - ulong subchan_id, void *load_addr) -{ - u8 status; - int sec = rec_list1; - int sec_num = ((rec_list2 >> 32) & 0xffff) + 1; - int sec_len = rec_list2 >> 48; - ulong addr = (ulong)load_addr; - - if (sec_len != virtio_get_block_size()) { - return -1; - } - - sclp_print("."); - status = virtio_read_many(sec, (void *)addr, sec_num); - if (status) { - panic("I/O Error"); - } - addr += sec_num * virtio_get_block_size(); - - return addr; -} - -int virtio_read(ulong sector, void *load_addr) -{ - return virtio_read_many(sector, load_addr, 1); -} - -/* - * Other supported value pairs, if any, would need to be added here. - * Note: head count is always 15. - */ -static inline u8 virtio_eckd_sectors_for_block_size(int size) -{ - switch (size) { - case 512: - return 49; - case 1024: - return 33; - case 2048: - return 21; - case 4096: - return 12; - } - return 0; -} - -VirtioGDN virtio_guessed_disk_nature(void) -{ - return vdev.guessed_disk_nature; -} - -void virtio_assume_scsi(void) -{ - switch (vdev.senseid.cu_model) { - case VIRTIO_ID_BLOCK: - vdev.guessed_disk_nature = VIRTIO_GDN_SCSI; - vdev.config.blk.blk_size = VIRTIO_SCSI_BLOCK_SIZE; - vdev.config.blk.physical_block_exp = 0; - vdev.blk_factor = 1; - break; - case VIRTIO_ID_SCSI: - vdev.scsi_block_size = VIRTIO_SCSI_BLOCK_SIZE; - break; - } -} - -void virtio_assume_iso9660(void) -{ - switch (vdev.senseid.cu_model) { - case VIRTIO_ID_BLOCK: - vdev.guessed_disk_nature = VIRTIO_GDN_SCSI; - vdev.config.blk.blk_size = VIRTIO_ISO_BLOCK_SIZE; - vdev.config.blk.physical_block_exp = 0; - vdev.blk_factor = VIRTIO_ISO_BLOCK_SIZE / VIRTIO_SECTOR_SIZE; - break; - case VIRTIO_ID_SCSI: - vdev.scsi_block_size = VIRTIO_ISO_BLOCK_SIZE; - break; - } -} - -void virtio_assume_eckd(void) -{ - vdev.guessed_disk_nature = VIRTIO_GDN_DASD; - vdev.blk_factor = 1; - vdev.config.blk.physical_block_exp = 0; - switch (vdev.senseid.cu_model) { - case VIRTIO_ID_BLOCK: - vdev.config.blk.blk_size = 4096; - break; - case VIRTIO_ID_SCSI: - vdev.config.blk.blk_size = vdev.scsi_block_size; - break; - } - vdev.config.blk.geometry.heads = 15; - vdev.config.blk.geometry.sectors = - virtio_eckd_sectors_for_block_size(vdev.config.blk.blk_size); -} - -bool virtio_disk_is_scsi(void) -{ - if (vdev.guessed_disk_nature == VIRTIO_GDN_SCSI) { - return true; - } - switch (vdev.senseid.cu_model) { - case VIRTIO_ID_BLOCK: - return (vdev.config.blk.geometry.heads == 255) - && (vdev.config.blk.geometry.sectors == 63) - && (virtio_get_block_size() == VIRTIO_SCSI_BLOCK_SIZE); - case VIRTIO_ID_SCSI: - return true; - } - return false; -} - -bool virtio_disk_is_eckd(void) -{ - const int block_size = virtio_get_block_size(); - - if (vdev.guessed_disk_nature == VIRTIO_GDN_DASD) { - return true; - } - switch (vdev.senseid.cu_model) { - case VIRTIO_ID_BLOCK: - return (vdev.config.blk.geometry.heads == 15) - && (vdev.config.blk.geometry.sectors == - virtio_eckd_sectors_for_block_size(block_size)); - case VIRTIO_ID_SCSI: - return false; - } - return false; -} - -bool virtio_ipl_disk_is_valid(void) -{ - return virtio_disk_is_scsi() || virtio_disk_is_eckd(); -} - -int virtio_get_block_size(void) -{ - switch (vdev.senseid.cu_model) { - case VIRTIO_ID_BLOCK: - return vdev.config.blk.blk_size << vdev.config.blk.physical_block_exp; - case VIRTIO_ID_SCSI: - return vdev.scsi_block_size; - } - return 0; -} - -uint8_t virtio_get_heads(void) -{ - switch (vdev.senseid.cu_model) { - case VIRTIO_ID_BLOCK: - return vdev.config.blk.geometry.heads; - case VIRTIO_ID_SCSI: - return vdev.guessed_disk_nature == VIRTIO_GDN_DASD - ? vdev.config.blk.geometry.heads : 255; - } - return 0; -} - -uint8_t virtio_get_sectors(void) -{ - switch (vdev.senseid.cu_model) { - case VIRTIO_ID_BLOCK: - return vdev.config.blk.geometry.sectors; - case VIRTIO_ID_SCSI: - return vdev.guessed_disk_nature == VIRTIO_GDN_DASD - ? vdev.config.blk.geometry.sectors : 63; - } - return 0; -} - -uint64_t virtio_get_blocks(void) -{ - const uint64_t factor = virtio_get_block_size() / VIRTIO_SECTOR_SIZE; - switch (vdev.senseid.cu_model) { - case VIRTIO_ID_BLOCK: - return vdev.config.blk.capacity / factor; - case VIRTIO_ID_SCSI: - return vdev.scsi_last_block / factor; - } - return 0; -} - -static void virtio_setup_ccw(VDev *vdev) -{ - int i, cfg_size = 0; - unsigned char status = VIRTIO_CONFIG_S_DRIVER_OK; - - IPL_assert(virtio_is_supported(vdev->schid), "PE"); - /* device ID has been established now */ - - vdev->config.blk.blk_size = 0; /* mark "illegal" - setup started... */ - vdev->guessed_disk_nature = VIRTIO_GDN_NONE; - - run_ccw(vdev, CCW_CMD_VDEV_RESET, NULL, 0); - - switch (vdev->senseid.cu_model) { - case VIRTIO_ID_BLOCK: - vdev->nr_vqs = 1; - vdev->cmd_vr_idx = 0; - cfg_size = sizeof(vdev->config.blk); - break; - case VIRTIO_ID_SCSI: - vdev->nr_vqs = 3; - vdev->cmd_vr_idx = VR_REQUEST; - cfg_size = sizeof(vdev->config.scsi); - break; - default: - panic("Unsupported virtio device\n"); - } - IPL_assert(run_ccw(vdev, CCW_CMD_READ_CONF, &vdev->config, cfg_size) == 0, - "Could not get block device configuration"); - - /* - * Skipping CCW_CMD_READ_FEAT. We're not doing anything fancy, and - * we'll just stop dead anyway if anything does not work like we - * expect it. - */ - - for (i = 0; i < vdev->nr_vqs; i++) { - VqInfo info = { - .queue = (unsigned long long) ring_area + (i * VIRTIO_RING_SIZE), - .align = KVM_S390_VIRTIO_RING_ALIGN, - .index = i, - .num = 0, - }; - VqConfig config = { - .index = i, - .num = 0, - }; - - IPL_assert( - run_ccw(vdev, CCW_CMD_READ_VQ_CONF, &config, sizeof(config)) == 0, - "Could not get block device VQ configuration"); - info.num = config.num; - vring_init(&vdev->vrings[i], &info); - vdev->vrings[i].schid = vdev->schid; - IPL_assert(run_ccw(vdev, CCW_CMD_SET_VQ, &info, sizeof(info)) == 0, - "Cannot set VQ info"); - } - IPL_assert( - run_ccw(vdev, CCW_CMD_WRITE_STATUS, &status, sizeof(status)) == 0, - "Could not write status to host"); -} - -void virtio_setup_device(SubChannelId schid) -{ - vdev.schid = schid; - virtio_setup_ccw(&vdev); - - switch (vdev.senseid.cu_model) { - case VIRTIO_ID_BLOCK: - sclp_print("Using virtio-blk.\n"); - if (!virtio_ipl_disk_is_valid()) { - /* make sure all getters but blocksize return 0 for - * invalid IPL disk - */ - memset(&vdev.config.blk, 0, sizeof(vdev.config.blk)); - virtio_assume_scsi(); - } - break; - case VIRTIO_ID_SCSI: - IPL_assert(vdev.config.scsi.sense_size == VIRTIO_SCSI_SENSE_SIZE, - "Config: sense size mismatch"); - IPL_assert(vdev.config.scsi.cdb_size == VIRTIO_SCSI_CDB_SIZE, - "Config: CDB size mismatch"); - - sclp_print("Using virtio-scsi.\n"); - virtio_scsi_setup(&vdev); - break; - default: - panic("\n! No IPL device available !\n"); - } -} - -bool virtio_is_supported(SubChannelId schid) -{ - vdev.schid = schid; - memset(&vdev.senseid, 0, sizeof(vdev.senseid)); - /* run sense id command */ - if (run_ccw(&vdev, CCW_CMD_SENSE_ID, &vdev.senseid, sizeof(vdev.senseid))) { - return false; - } - if (vdev.senseid.cu_type == 0x3832) { - switch (vdev.senseid.cu_model) { - case VIRTIO_ID_BLOCK: - case VIRTIO_ID_SCSI: - return true; - } - } - return false; -} - -int enable_mss_facility(void) -{ - int ret; - ChscAreaSda *sda_area = (ChscAreaSda *) chsc_page; - - memset(sda_area, 0, PAGE_SIZE); - sda_area->request.length = 0x0400; - sda_area->request.code = 0x0031; - sda_area->operation_code = 0x2; - - ret = chsc(sda_area); - if ((ret == 0) && (sda_area->response.code == 0x0001)) { - return 0; - } - return -EIO; -} diff --git a/qemu/pc-bios/s390-ccw/virtio.h b/qemu/pc-bios/s390-ccw/virtio.h deleted file mode 100644 index 3c6e91510..000000000 --- a/qemu/pc-bios/s390-ccw/virtio.h +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Virtio driver bits - * - * Copyright (c) 2013 Alexander Graf <agraf@suse.de> - * - * This work is licensed under the terms of the GNU GPL, version 2 or (at - * your option) any later version. See the COPYING file in the top-level - * directory. - */ - -#ifndef VIRTIO_H -#define VIRTIO_H - -#include "s390-ccw.h" - -/* Status byte for guest to report progress, and synchronize features. */ -/* We have seen device and processed generic fields (VIRTIO_CONFIG_F_VIRTIO) */ -#define VIRTIO_CONFIG_S_ACKNOWLEDGE 1 -/* We have found a driver for the device. */ -#define VIRTIO_CONFIG_S_DRIVER 2 -/* Driver has used its parts of the config, and is happy */ -#define VIRTIO_CONFIG_S_DRIVER_OK 4 -/* We've given up on this device. */ -#define VIRTIO_CONFIG_S_FAILED 0x80 - -enum VirtioDevType { - VIRTIO_ID_NET = 1, - VIRTIO_ID_BLOCK = 2, - VIRTIO_ID_CONSOLE = 3, - VIRTIO_ID_BALLOON = 5, - VIRTIO_ID_SCSI = 8, -}; -typedef enum VirtioDevType VirtioDevType; - -struct VirtioDevHeader { - VirtioDevType type:8; - uint8_t num_vq; - uint8_t feature_len; - uint8_t config_len; - uint8_t status; - uint8_t vqconfig[]; -} __attribute__((packed)); -typedef struct VirtioDevHeader VirtioDevHeader; - -struct VirtioVqConfig { - uint64_t token; - uint64_t address; - uint16_t num; - uint8_t pad[6]; -} __attribute__((packed)); -typedef struct VirtioVqConfig VirtioVqConfig; - -struct VqInfo { - uint64_t queue; - uint32_t align; - uint16_t index; - uint16_t num; -} __attribute__((packed)); -typedef struct VqInfo VqInfo; - -struct VqConfig { - uint16_t index; - uint16_t num; -} __attribute__((packed)); -typedef struct VqConfig VqConfig; - -struct VirtioDev { - VirtioDevHeader *header; - VirtioVqConfig *vqconfig; - char *host_features; - char *guest_features; - char *config; -}; -typedef struct VirtioDev VirtioDev; - -#define VIRTIO_RING_SIZE (PAGE_SIZE * 8) -#define VIRTIO_MAX_VQS 3 -#define KVM_S390_VIRTIO_RING_ALIGN 4096 - -#define VRING_USED_F_NO_NOTIFY 1 - -/* This marks a buffer as continuing via the next field. */ -#define VRING_DESC_F_NEXT 1 -/* This marks a buffer as write-only (otherwise read-only). */ -#define VRING_DESC_F_WRITE 2 -/* This means the buffer contains a list of buffer descriptors. */ -#define VRING_DESC_F_INDIRECT 4 - -/* Internal flag to mark follow-up segments as such */ -#define VRING_HIDDEN_IS_CHAIN 256 - -/* Virtio ring descriptors: 16 bytes. These can chain together via "next". */ -struct VRingDesc { - /* Address (guest-physical). */ - uint64_t addr; - /* Length. */ - uint32_t len; - /* The flags as indicated above. */ - uint16_t flags; - /* We chain unused descriptors via this, too */ - uint16_t next; -} __attribute__((packed)); -typedef struct VRingDesc VRingDesc; - -struct VRingAvail { - uint16_t flags; - uint16_t idx; - uint16_t ring[]; -} __attribute__((packed)); -typedef struct VRingAvail VRingAvail; - -/* uint32_t is used here for ids for padding reasons. */ -struct VRingUsedElem { - /* Index of start of used descriptor chain. */ - uint32_t id; - /* Total length of the descriptor chain which was used (written to) */ - uint32_t len; -} __attribute__((packed)); -typedef struct VRingUsedElem VRingUsedElem; - -struct VRingUsed { - uint16_t flags; - uint16_t idx; - VRingUsedElem ring[]; -} __attribute__((packed)); -typedef struct VRingUsed VRingUsed; - -struct VRing { - unsigned int num; - int next_idx; - int used_idx; - VRingDesc *desc; - VRingAvail *avail; - VRingUsed *used; - SubChannelId schid; - long cookie; - int id; -}; -typedef struct VRing VRing; - - -/*********************************************** - * Virtio block * - ***********************************************/ - -/* - * Command types - * - * Usage is a bit tricky as some bits are used as flags and some are not. - * - * Rules: - * VIRTIO_BLK_T_OUT may be combined with VIRTIO_BLK_T_SCSI_CMD or - * VIRTIO_BLK_T_BARRIER. VIRTIO_BLK_T_FLUSH is a command of its own - * and may not be combined with any of the other flags. - */ - -/* These two define direction. */ -#define VIRTIO_BLK_T_IN 0 -#define VIRTIO_BLK_T_OUT 1 - -/* This bit says it's a scsi command, not an actual read or write. */ -#define VIRTIO_BLK_T_SCSI_CMD 2 - -/* Cache flush command */ -#define VIRTIO_BLK_T_FLUSH 4 - -/* Barrier before this op. */ -#define VIRTIO_BLK_T_BARRIER 0x80000000 - -/* This is the first element of the read scatter-gather list. */ -struct VirtioBlkOuthdr { - /* VIRTIO_BLK_T* */ - uint32_t type; - /* io priority. */ - uint32_t ioprio; - /* Sector (ie. 512 byte offset) */ - uint64_t sector; -}; -typedef struct VirtioBlkOuthdr VirtioBlkOuthdr; - -struct VirtioBlkConfig { - uint64_t capacity; /* in 512-byte sectors */ - uint32_t size_max; /* max segment size (if VIRTIO_BLK_F_SIZE_MAX) */ - uint32_t seg_max; /* max number of segments (if VIRTIO_BLK_F_SEG_MAX) */ - - struct VirtioBlkGeometry { - uint16_t cylinders; - uint8_t heads; - uint8_t sectors; - } geometry; /* (if VIRTIO_BLK_F_GEOMETRY) */ - - uint32_t blk_size; /* block size of device (if VIRTIO_BLK_F_BLK_SIZE) */ - - /* the next 4 entries are guarded by VIRTIO_BLK_F_TOPOLOGY */ - uint8_t physical_block_exp; /* exponent for physical blk per logical blk */ - uint8_t alignment_offset; /* alignment offset in logical blocks */ - uint16_t min_io_size; /* min I/O size without performance penalty - in logical blocks */ - uint32_t opt_io_size; /* optimal sustained I/O size in logical blks */ - - uint8_t wce; /* writeback mode (if VIRTIO_BLK_F_CONFIG_WCE) */ -} __attribute__((packed)); -typedef struct VirtioBlkConfig VirtioBlkConfig; - -enum guessed_disk_nature_type { - VIRTIO_GDN_NONE = 0, - VIRTIO_GDN_DASD = 1, - VIRTIO_GDN_CDROM = 2, - VIRTIO_GDN_SCSI = 3, -}; -typedef enum guessed_disk_nature_type VirtioGDN; - -VirtioGDN virtio_guessed_disk_nature(void); -void virtio_assume_scsi(void); -void virtio_assume_eckd(void); -void virtio_assume_iso9660(void); - -extern bool virtio_disk_is_scsi(void); -extern bool virtio_disk_is_eckd(void); -extern bool virtio_ipl_disk_is_valid(void); -extern int virtio_get_block_size(void); -extern uint8_t virtio_get_heads(void); -extern uint8_t virtio_get_sectors(void); -extern uint64_t virtio_get_blocks(void); -extern int virtio_read_many(ulong sector, void *load_addr, int sec_num); - -#define VIRTIO_SECTOR_SIZE 512 -#define VIRTIO_ISO_BLOCK_SIZE 2048 -#define VIRTIO_SCSI_BLOCK_SIZE 512 - -static inline ulong virtio_sector_adjust(ulong sector) -{ - return sector * (virtio_get_block_size() / VIRTIO_SECTOR_SIZE); -} - -struct VirtioScsiConfig { - uint32_t num_queues; - uint32_t seg_max; - uint32_t max_sectors; - uint32_t cmd_per_lun; - uint32_t event_info_size; - uint32_t sense_size; - uint32_t cdb_size; - uint16_t max_channel; - uint16_t max_target; - uint32_t max_lun; -} __attribute__((packed)); -typedef struct VirtioScsiConfig VirtioScsiConfig; - -struct ScsiDevice { - uint16_t channel; /* Always 0 in QEMU */ - uint16_t target; /* will be scanned over */ - uint32_t lun; /* will be reported */ -}; -typedef struct ScsiDevice ScsiDevice; - -struct VDev { - int nr_vqs; - VRing *vrings; - int cmd_vr_idx; - void *ring_area; - long wait_reply_timeout; - VirtioGDN guessed_disk_nature; - SubChannelId schid; - SenseId senseid; - union { - VirtioBlkConfig blk; - VirtioScsiConfig scsi; - } config; - ScsiDevice *scsi_device; - bool is_cdrom; - int scsi_block_size; - int blk_factor; - uint64_t scsi_last_block; - uint32_t scsi_dev_cyls; - uint8_t scsi_dev_heads; -}; -typedef struct VDev VDev; - -VDev *virtio_get_device(void); -VirtioDevType virtio_get_device_type(void); - -struct VirtioCmd { - void *data; - int size; - int flags; -}; -typedef struct VirtioCmd VirtioCmd; - -int virtio_run(VDev *vdev, int vqid, VirtioCmd *cmd); - -#endif /* VIRTIO_H */ diff --git a/qemu/pc-bios/sgabios.bin b/qemu/pc-bios/sgabios.bin Binary files differdeleted file mode 100644 index c3da4c3d0..000000000 --- a/qemu/pc-bios/sgabios.bin +++ /dev/null diff --git a/qemu/pc-bios/slof.bin b/qemu/pc-bios/slof.bin Binary files differdeleted file mode 100644 index f2384939e..000000000 --- a/qemu/pc-bios/slof.bin +++ /dev/null diff --git a/qemu/pc-bios/spapr-rtas.bin b/qemu/pc-bios/spapr-rtas.bin Binary files differdeleted file mode 100644 index fc24c8ed8..000000000 --- a/qemu/pc-bios/spapr-rtas.bin +++ /dev/null diff --git a/qemu/pc-bios/spapr-rtas/Makefile b/qemu/pc-bios/spapr-rtas/Makefile deleted file mode 100644 index dc8b23e3c..000000000 --- a/qemu/pc-bios/spapr-rtas/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -all: build-all -# Dummy command so that make thinks it has done something - @true - -include ../../config-host.mak -include $(SRC_PATH)/rules.mak - -$(call set-vpath, $(SRC_PATH)/pc-bios/spapr-rtas) - -.PHONY : all clean build-all - -#CFLAGS += -I$(SRC_PATH) -#QEMU_CFLAGS = $(CFLAGS) - -build-all: spapr-rtas.bin - -%.img: %.o - $(call quiet-command,$(CC) -nostdlib -o $@ $<," Building $(TARGET_DIR)$@") - -%.bin: %.img - $(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@," Building $(TARGET_DIR)$@") - -clean: - rm -f *.o *.d *.img *.bin *~ diff --git a/qemu/pc-bios/spapr-rtas/spapr-rtas.S b/qemu/pc-bios/spapr-rtas/spapr-rtas.S deleted file mode 100644 index 903bec215..000000000 --- a/qemu/pc-bios/spapr-rtas/spapr-rtas.S +++ /dev/null @@ -1,37 +0,0 @@ -/* - * QEMU PowerPC pSeries Logical Partition (aka sPAPR) hardware System Emulator - * - * Trivial in-partition RTAS implementation, based on a hypercall - * - * Copyright (c) 2010,2011 David Gibson, IBM Corporation. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ - -#define KVMPPC_HCALL_BASE 0xf000 -#define KVMPPC_H_RTAS (KVMPPC_HCALL_BASE + 0x0) - -.globl _start -_start: - mr 4,3 - lis 3,KVMPPC_H_RTAS@h - ori 3,3,KVMPPC_H_RTAS@l - sc 1 - blr diff --git a/qemu/pc-bios/u-boot.e500 b/qemu/pc-bios/u-boot.e500 Binary files differdeleted file mode 100755 index 6e547de6f..000000000 --- a/qemu/pc-bios/u-boot.e500 +++ /dev/null diff --git a/qemu/pc-bios/vgabios-cirrus.bin b/qemu/pc-bios/vgabios-cirrus.bin Binary files differdeleted file mode 100644 index 3f4bb30fe..000000000 --- a/qemu/pc-bios/vgabios-cirrus.bin +++ /dev/null diff --git a/qemu/pc-bios/vgabios-qxl.bin b/qemu/pc-bios/vgabios-qxl.bin Binary files differdeleted file mode 100644 index 38d31b6b5..000000000 --- a/qemu/pc-bios/vgabios-qxl.bin +++ /dev/null diff --git a/qemu/pc-bios/vgabios-stdvga.bin b/qemu/pc-bios/vgabios-stdvga.bin Binary files differdeleted file mode 100644 index e469c107a..000000000 --- a/qemu/pc-bios/vgabios-stdvga.bin +++ /dev/null diff --git a/qemu/pc-bios/vgabios-virtio.bin b/qemu/pc-bios/vgabios-virtio.bin Binary files differdeleted file mode 100644 index d42b02873..000000000 --- a/qemu/pc-bios/vgabios-virtio.bin +++ /dev/null diff --git a/qemu/pc-bios/vgabios-vmware.bin b/qemu/pc-bios/vgabios-vmware.bin Binary files differdeleted file mode 100644 index 26bc0b704..000000000 --- a/qemu/pc-bios/vgabios-vmware.bin +++ /dev/null diff --git a/qemu/pc-bios/vgabios.bin b/qemu/pc-bios/vgabios.bin Binary files differdeleted file mode 100644 index 2d1a7c6c9..000000000 --- a/qemu/pc-bios/vgabios.bin +++ /dev/null |