From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:42602) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RFTur-0001VG-1B for qemu-devel@nongnu.org; Sun, 16 Oct 2011 12:50:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RFTun-0004UX-SR for qemu-devel@nongnu.org; Sun, 16 Oct 2011 12:50:24 -0400 Received: from mail-gx0-f173.google.com ([209.85.161.173]:60057) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RFTun-0004UT-NX for qemu-devel@nongnu.org; Sun, 16 Oct 2011 12:50:21 -0400 Received: by ggnr5 with SMTP id r5so2919055ggn.4 for ; Sun, 16 Oct 2011 09:50:21 -0700 (PDT) MIME-Version: 1.0 From: Blue Swirl Date: Sun, 16 Oct 2011 16:50:01 +0000 Message-ID: Content-Type: multipart/mixed; boundary=f46d0444ec6b310a8404af6d4979 Subject: [Qemu-devel] [PATCH v2 2/4] vga: make Cirrus ISA device optional List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel --f46d0444ec6b310a8404af6d4979 Content-Type: text/plain; charset=UTF-8 Signed-off-by: Blue Swirl --- Makefile.target | 13 +++------- default-configs/alpha-softmmu.mak | 2 + default-configs/arm-softmmu.mak | 1 + default-configs/i386-softmmu.mak | 2 + default-configs/mips-softmmu.mak | 2 + default-configs/mips64-softmmu.mak | 2 + default-configs/mips64el-softmmu.mak | 2 + default-configs/mipsel-softmmu.mak | 2 + default-configs/ppc-softmmu.mak | 1 + default-configs/ppc64-softmmu.mak | 1 + default-configs/ppcemb-softmmu.mak | 1 + default-configs/sparc64-softmmu.mak | 2 + default-configs/x86_64-softmmu.mak | 2 + hw/cirrus_vga.c | 40 ++++++++++++++++++++++++--------- hw/pc.c | 2 +- hw/pc.h | 14 +++++++++++- 16 files changed, 67 insertions(+), 22 deletions(-) diff --git a/Makefile.target b/Makefile.target index 417f23e..b948acf 100644 --- a/Makefile.target +++ b/Makefile.target @@ -194,6 +194,8 @@ obj-$(CONFIG_REALLY_VIRTFS) += 9pfs/virtio-9p-device.o obj-$(CONFIG_KVM) += kvm.o kvm-all.o obj-$(CONFIG_NO_KVM) += kvm-stub.o obj-y += memory.o +obj-$(CONFIG_VGA) += vga.o +obj-$(CONFIG_VGA_CIRRUS) += cirrus_vga.o LIBS+=-lz QEMU_CFLAGS += $(VNC_TLS_CFLAGS) @@ -218,9 +220,8 @@ endif obj-$(CONFIG_IVSHMEM) += ivshmem.o # Hardware support -obj-i386-y += vga.o obj-i386-y += mc146818rtc.o pc.o -obj-i386-y += cirrus_vga.o sga.o apic.o ioapic.o piix_pci.o +obj-i386-y += sga.o apic.o ioapic.o piix_pci.o obj-i386-y += vmport.o obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o obj-i386-y += debugcon.o multiboot.o @@ -230,7 +231,6 @@ obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o # shared objects obj-ppc-y = ppc.o ppc_booke.o -obj-ppc-y += vga.o # PREP target obj-ppc-y += mc146818rtc.o obj-ppc-y += ppc_prep.o @@ -283,10 +283,8 @@ obj-lm32-y += framebuffer.o obj-mips-y = mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o obj-mips-y += mips_addr.o mips_timer.o mips_int.o -obj-mips-y += vga.o obj-mips-y += jazz_led.o obj-mips-y += gt64xxx.o mc146818rtc.o -obj-mips-y += cirrus_vga.o obj-mips-$(CONFIG_FULONG) += bonito.o vt82c686.o mips_fulong2e.o obj-microblaze-y = petalogix_s3adsp1800_mmu.o @@ -316,9 +314,7 @@ obj-cris-y += etraxfs_ser.o ifeq ($(TARGET_ARCH), sparc64) obj-sparc-y = sun4u.o apb_pci.o -obj-sparc-y += vga.o obj-sparc-y += mc146818rtc.o -obj-sparc-y += cirrus_vga.o else obj-sparc-y = sun4m.o lance.o tcx.o sun4m_iommu.o slavio_intctl.o obj-sparc-y += slavio_timer.o slavio_misc.o sparc32_dma.o @@ -344,7 +340,7 @@ obj-arm-y += omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o \ obj-arm-y += omap2.o omap_dss.o soc_dma.o omap_gptimer.o omap_synctimer.o \ omap_gpmc.o omap_sdrc.o omap_spi.o omap_tap.o omap_l4.o obj-arm-y += omap_sx1.o palm.o tsc210x.o -obj-arm-y += nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o +obj-arm-y += nseries.o blizzard.o onenand.o cbus.o tusb6010.o usb-musb.o obj-arm-y += mst_fpga.o mainstone.o obj-arm-y += z2.o obj-arm-y += musicpal.o bitbang_i2c.o marvell_88w8618_audio.o @@ -366,7 +362,6 @@ obj-m68k-y += m68k-semi.o dummy_m68k.o obj-s390x-y = s390-virtio-bus.o s390-virtio.o obj-alpha-y = mc146818rtc.o -obj-alpha-y += vga.o cirrus_vga.o obj-alpha-y += alpha_pci.o alpha_dp264.o alpha_typhoon.o obj-xtensa-y += xtensa_pic.o diff --git a/default-configs/alpha-softmmu.mak b/default-configs/alpha-softmmu.mak index bd1dd95..501dd41 100644 --- a/default-configs/alpha-softmmu.mak +++ b/default-configs/alpha-softmmu.mak @@ -4,7 +4,9 @@ include pci.mak CONFIG_SERIAL=y CONFIG_I8254=y CONFIG_PCKBD=y +CONFIG_VGA=y CONFIG_VGA_PCI=y +CONFIG_VGA_CIRRUS=y CONFIG_IDE_CORE=y CONFIG_IDE_QDEV=y CONFIG_VMWARE_VGA=y diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak index 8d1174f..e542b4f 100644 --- a/default-configs/arm-softmmu.mak +++ b/default-configs/arm-softmmu.mak @@ -2,6 +2,7 @@ include pci.mak CONFIG_GDBSTUB_XML=y +CONFIG_VGA=y CONFIG_ISA_MMIO=y CONFIG_NAND=y CONFIG_ECC=y diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index e67ebb3..662348e 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -1,8 +1,10 @@ # Default configuration for i386-softmmu include pci.mak +CONFIG_VGA=y CONFIG_VGA_PCI=y CONFIG_VGA_ISA=y +CONFIG_VGA_CIRRUS=y CONFIG_VMWARE_VGA=y CONFIG_VMMOUSE=y CONFIG_SERIAL=y diff --git a/default-configs/mips-softmmu.mak b/default-configs/mips-softmmu.mak index 94a3486..308d04a 100644 --- a/default-configs/mips-softmmu.mak +++ b/default-configs/mips-softmmu.mak @@ -3,9 +3,11 @@ include pci.mak CONFIG_ISA_MMIO=y CONFIG_ESP=y +CONFIG_VGA=y CONFIG_VGA_PCI=y CONFIG_VGA_ISA=y CONFIG_VGA_ISA_MM=y +CONFIG_VGA_CIRRUS=y CONFIG_VMWARE_VGA=y CONFIG_SERIAL=y CONFIG_PARALLEL=y diff --git a/default-configs/mips64-softmmu.mak b/default-configs/mips64-softmmu.mak index b5d3108..f1b92da 100644 --- a/default-configs/mips64-softmmu.mak +++ b/default-configs/mips64-softmmu.mak @@ -3,9 +3,11 @@ include pci.mak CONFIG_ISA_MMIO=y CONFIG_ESP=y +CONFIG_VGA=y CONFIG_VGA_PCI=y CONFIG_VGA_ISA=y CONFIG_VGA_ISA_MM=y +CONFIG_VGA_CIRRUS=y CONFIG_VMWARE_VGA=y CONFIG_SERIAL=y CONFIG_PARALLEL=y diff --git a/default-configs/mips64el-softmmu.mak b/default-configs/mips64el-softmmu.mak index 2831f44..567396c 100644 --- a/default-configs/mips64el-softmmu.mak +++ b/default-configs/mips64el-softmmu.mak @@ -3,9 +3,11 @@ include pci.mak CONFIG_ISA_MMIO=y CONFIG_ESP=y +CONFIG_VGA=y CONFIG_VGA_PCI=y CONFIG_VGA_ISA=y CONFIG_VGA_ISA_MM=y +CONFIG_VGA_CIRRUS=y CONFIG_VMWARE_VGA=y CONFIG_SERIAL=y CONFIG_PARALLEL=y diff --git a/default-configs/mipsel-softmmu.mak b/default-configs/mipsel-softmmu.mak index 14c949d..a8e421b 100644 --- a/default-configs/mipsel-softmmu.mak +++ b/default-configs/mipsel-softmmu.mak @@ -3,9 +3,11 @@ include pci.mak CONFIG_ISA_MMIO=y CONFIG_ESP=y +CONFIG_VGA=y CONFIG_VGA_PCI=y CONFIG_VGA_ISA=y CONFIG_VGA_ISA_MM=y +CONFIG_VGA_CIRRUS=y CONFIG_VMWARE_VGA=y CONFIG_SERIAL=y CONFIG_PARALLEL=y diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index c85cdce..3277291 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -5,6 +5,7 @@ CONFIG_GDBSTUB_XML=y CONFIG_ISA_MMIO=y CONFIG_ESCC=y CONFIG_M48T59=y +CONFIG_VGA=y CONFIG_VGA_PCI=y CONFIG_SERIAL=y CONFIG_I8254=y diff --git a/default-configs/ppc64-softmmu.mak b/default-configs/ppc64-softmmu.mak index 8874115..f490368 100644 --- a/default-configs/ppc64-softmmu.mak +++ b/default-configs/ppc64-softmmu.mak @@ -5,6 +5,7 @@ CONFIG_GDBSTUB_XML=y CONFIG_ISA_MMIO=y CONFIG_ESCC=y CONFIG_M48T59=y +CONFIG_VGA=y CONFIG_VGA_PCI=y CONFIG_SERIAL=y CONFIG_I8254=y diff --git a/default-configs/ppcemb-softmmu.mak b/default-configs/ppcemb-softmmu.mak index 5db7205..829f462 100644 --- a/default-configs/ppcemb-softmmu.mak +++ b/default-configs/ppcemb-softmmu.mak @@ -5,6 +5,7 @@ CONFIG_GDBSTUB_XML=y CONFIG_ISA_MMIO=y CONFIG_ESCC=y CONFIG_M48T59=y +CONFIG_VGA=y CONFIG_VGA_PCI=y CONFIG_SERIAL=y CONFIG_I8254=y diff --git a/default-configs/sparc64-softmmu.mak b/default-configs/sparc64-softmmu.mak index d8f17e7..c9a36c1 100644 --- a/default-configs/sparc64-softmmu.mak +++ b/default-configs/sparc64-softmmu.mak @@ -4,7 +4,9 @@ include pci.mak CONFIG_ISA_MMIO=y CONFIG_M48T59=y CONFIG_PTIMER=y +CONFIG_VGA=y CONFIG_VGA_PCI=y +CONFIG_VGA_CIRRUS=y CONFIG_SERIAL=y CONFIG_PARALLEL=y CONFIG_PCKBD=y diff --git a/default-configs/x86_64-softmmu.mak b/default-configs/x86_64-softmmu.mak index b75757e..b445be2 100644 --- a/default-configs/x86_64-softmmu.mak +++ b/default-configs/x86_64-softmmu.mak @@ -1,8 +1,10 @@ # Default configuration for x86_64-softmmu include pci.mak +CONFIG_VGA=y CONFIG_VGA_PCI=y CONFIG_VGA_ISA=y +CONFIG_VGA_CIRRUS=y CONFIG_VMWARE_VGA=y CONFIG_VMMOUSE=y CONFIG_SERIAL=y diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c index a11444c..aa8a0e6 100644 --- a/hw/cirrus_vga.c +++ b/hw/cirrus_vga.c @@ -250,6 +250,11 @@ typedef struct PCICirrusVGAState { CirrusVGAState cirrus_vga; } PCICirrusVGAState; +typedef struct ISACirrusVGAState { + ISADevice dev; + CirrusVGAState cirrus_vga; +} ISACirrusVGAState; + static uint8_t rop_to_index[256]; /*************************************** @@ -2899,21 +2904,34 @@ static void cirrus_init_common(CirrusVGAState * s, int device_id, int is_pci, * ***************************************/ -void isa_cirrus_vga_init(MemoryRegion *system_memory) +static int vga_initfn(ISADevice *dev) { - CirrusVGAState *s; - - s = g_malloc0(sizeof(CirrusVGAState)); - - vga_common_init(&s->vga, VGA_RAM_SIZE); - cirrus_init_common(s, CIRRUS_ID_CLGD5430, 0, system_memory); - s->vga.ds = graphic_console_init(s->vga.update, s->vga.invalidate, - s->vga.screen_dump, s->vga.text_update, - &s->vga); - vmstate_register(NULL, 0, &vmstate_cirrus_vga, s); + ISACirrusVGAState *d = DO_UPCAST(ISACirrusVGAState, dev, dev); + VGACommonState *s = &d->cirrus_vga.vga; + + vga_common_init(s, VGA_RAM_SIZE); + cirrus_init_common(&d->cirrus_vga, CIRRUS_ID_CLGD5430, 0, + isa_address_space(dev)); + s->ds = graphic_console_init(s->update, s->invalidate, + s->screen_dump, s->text_update, + s); rom_add_vga(VGABIOS_CIRRUS_FILENAME); /* XXX ISA-LFB support */ + return 0; +} + +static ISADeviceInfo isa_cirrus_vga_info = { + .qdev.name = "isa-cirrus-vga", + .qdev.size = sizeof(ISACirrusVGAState), + .qdev.vmsd = &vmstate_cirrus_vga, + .init = vga_initfn, +}; + +static void isa_cirrus_vga_register(void) +{ + isa_qdev_register(&isa_cirrus_vga_info); } +device_init(isa_cirrus_vga_register) /*************************************** * diff --git a/hw/pc.c b/hw/pc.c index 8454344..0799c68 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -1080,7 +1080,7 @@ void pc_vga_init(PCIBus *pci_bus) pci_vga_init(pci_bus); } } else { - isa_cirrus_vga_init(get_system_memory()); + isa_cirrus_vga_init(); } } else if (vmsvga_enabled) { if (pci_bus) { diff --git a/hw/pc.h b/hw/pc.h index 40d6edb..0a160a2 100644 --- a/hw/pc.h +++ b/hw/pc.h @@ -245,7 +245,19 @@ static inline bool pci_cirrus_vga_init(PCIBus *bus) return true; } -void isa_cirrus_vga_init(MemoryRegion *address_space); +static inline int isa_cirrus_vga_init(void) +{ + ISADevice *dev; + + dev = isa_try_create("isa-cirrus-vga"); + if (!dev) { + fprintf(stderr, "Warning: isa-cirrus-vga not available\n"); + return 0; + } + qdev_init_nofail(&dev->qdev); + return 1; +} + /* ne2000.c */ static inline bool isa_ne2000_init(int base, int irq, NICInfo *nd) -- 1.6.2.4 --f46d0444ec6b310a8404af6d4979 Content-Type: text/x-diff; charset=US-ASCII; name="0002-vga-make-Cirrus-ISA-device-optional.patch" Content-Disposition: attachment; filename="0002-vga-make-Cirrus-ISA-device-optional.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gtu9tazv0 RnJvbSBkZmEwNzVlOWRjN2M1NzkzMmQzNmFiMzFjYTgxYWIzYzI2MDI5NjdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlkOiA8ZGZhMDc1ZTlkYzdjNTc5MzJkMzZhYjMxY2E4MWFi M2MyNjAyOTY3Yy4xMzE4NzgzNzM3LmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNvbT4KSW4tUmVwbHkt VG86IDxiMjNmODdjNDJjZTdhNmE1MDc4ZWJiOTY5YmRiMGRkODA0NmY5NTc4LjEzMTg3ODM3Mzcu Z2l0LmJsYXV3aXJiZWxAZ21haWwuY29tPgpSZWZlcmVuY2VzOiA8YjIzZjg3YzQyY2U3YTZhNTA3 OGViYjk2OWJkYjBkZDgwNDZmOTU3OC4xMzE4NzgzNzM3LmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNv bT4KRnJvbTogQmx1ZSBTd2lybCA8YmxhdXdpcmJlbEBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMSBP Y3QgMjAxMSAxNjozMzo0MyArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMi80XSB2Z2E6IG1ha2UgQ2ly cnVzIElTQSBkZXZpY2Ugb3B0aW9uYWwKClNpZ25lZC1vZmYtYnk6IEJsdWUgU3dpcmwgPGJsYXV3 aXJiZWxAZ21haWwuY29tPgotLS0KIE1ha2VmaWxlLnRhcmdldCAgICAgICAgICAgICAgICAgICAg ICB8ICAgMTMgKysrLS0tLS0tLQogZGVmYXVsdC1jb25maWdzL2FscGhhLXNvZnRtbXUubWFrICAg IHwgICAgMiArCiBkZWZhdWx0LWNvbmZpZ3MvYXJtLXNvZnRtbXUubWFrICAgICAgfCAgICAxICsK IGRlZmF1bHQtY29uZmlncy9pMzg2LXNvZnRtbXUubWFrICAgICB8ICAgIDIgKwogZGVmYXVsdC1j b25maWdzL21pcHMtc29mdG1tdS5tYWsgICAgIHwgICAgMiArCiBkZWZhdWx0LWNvbmZpZ3MvbWlw czY0LXNvZnRtbXUubWFrICAgfCAgICAyICsKIGRlZmF1bHQtY29uZmlncy9taXBzNjRlbC1zb2Z0 bW11Lm1hayB8ICAgIDIgKwogZGVmYXVsdC1jb25maWdzL21pcHNlbC1zb2Z0bW11Lm1hayAgIHwg ICAgMiArCiBkZWZhdWx0LWNvbmZpZ3MvcHBjLXNvZnRtbXUubWFrICAgICAgfCAgICAxICsKIGRl ZmF1bHQtY29uZmlncy9wcGM2NC1zb2Z0bW11Lm1hayAgICB8ICAgIDEgKwogZGVmYXVsdC1jb25m aWdzL3BwY2VtYi1zb2Z0bW11Lm1hayAgIHwgICAgMSArCiBkZWZhdWx0LWNvbmZpZ3Mvc3BhcmM2 NC1zb2Z0bW11Lm1hayAgfCAgICAyICsKIGRlZmF1bHQtY29uZmlncy94ODZfNjQtc29mdG1tdS5t YWsgICB8ICAgIDIgKwogaHcvY2lycnVzX3ZnYS5jICAgICAgICAgICAgICAgICAgICAgIHwgICA0 MCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIGh3L3BjLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIGh3L3BjLmggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMTQgKysrKysrKysrKystCiAxNiBmaWxlcyBjaGFuZ2VkLCA2NyBpbnNlcnRp b25zKCspLCAyMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9NYWtlZmlsZS50YXJnZXQgYi9N YWtlZmlsZS50YXJnZXQKaW5kZXggNDE3ZjIzZS4uYjk0OGFjZiAxMDA2NDQKLS0tIGEvTWFrZWZp bGUudGFyZ2V0CisrKyBiL01ha2VmaWxlLnRhcmdldApAQCAtMTk0LDYgKzE5NCw4IEBAIG9iai0k KENPTkZJR19SRUFMTFlfVklSVEZTKSArPSA5cGZzL3ZpcnRpby05cC1kZXZpY2Uubwogb2JqLSQo Q09ORklHX0tWTSkgKz0ga3ZtLm8ga3ZtLWFsbC5vCiBvYmotJChDT05GSUdfTk9fS1ZNKSArPSBr dm0tc3R1Yi5vCiBvYmoteSArPSBtZW1vcnkubworb2JqLSQoQ09ORklHX1ZHQSkgKz0gdmdhLm8K K29iai0kKENPTkZJR19WR0FfQ0lSUlVTKSArPSBjaXJydXNfdmdhLm8KIExJQlMrPS1segogCiBR RU1VX0NGTEFHUyArPSAkKFZOQ19UTFNfQ0ZMQUdTKQpAQCAtMjE4LDkgKzIyMCw4IEBAIGVuZGlm CiBvYmotJChDT05GSUdfSVZTSE1FTSkgKz0gaXZzaG1lbS5vCiAKICMgSGFyZHdhcmUgc3VwcG9y dAotb2JqLWkzODYteSArPSB2Z2Eubwogb2JqLWkzODYteSArPSBtYzE0NjgxOHJ0Yy5vIHBjLm8K LW9iai1pMzg2LXkgKz0gY2lycnVzX3ZnYS5vIHNnYS5vIGFwaWMubyBpb2FwaWMubyBwaWl4X3Bj aS5vCitvYmotaTM4Ni15ICs9IHNnYS5vIGFwaWMubyBpb2FwaWMubyBwaWl4X3BjaS5vCiBvYmot aTM4Ni15ICs9IHZtcG9ydC5vCiBvYmotaTM4Ni15ICs9IGRldmljZS1ob3RwbHVnLm8gcGNpLWhv dHBsdWcubyBzbWJpb3MubyB3ZHRfaWI3MDAubwogb2JqLWkzODYteSArPSBkZWJ1Z2Nvbi5vIG11 bHRpYm9vdC5vCkBAIC0yMzAsNyArMjMxLDYgQEAgb2JqLWkzODYtJChDT05GSUdfU1BJQ0UpICs9 IHF4bC5vIHF4bC1sb2dnZXIubyBxeGwtcmVuZGVyLm8KIAogIyBzaGFyZWQgb2JqZWN0cwogb2Jq LXBwYy15ID0gcHBjLm8gcHBjX2Jvb2tlLm8KLW9iai1wcGMteSArPSB2Z2EubwogIyBQUkVQIHRh cmdldAogb2JqLXBwYy15ICs9IG1jMTQ2ODE4cnRjLm8KIG9iai1wcGMteSArPSBwcGNfcHJlcC5v CkBAIC0yODMsMTAgKzI4Myw4IEBAIG9iai1sbTMyLXkgKz0gZnJhbWVidWZmZXIubwogCiBvYmot bWlwcy15ID0gbWlwc19yNGsubyBtaXBzX2phenoubyBtaXBzX21hbHRhLm8gbWlwc19taXBzc2lt Lm8KIG9iai1taXBzLXkgKz0gbWlwc19hZGRyLm8gbWlwc190aW1lci5vIG1pcHNfaW50Lm8KLW9i ai1taXBzLXkgKz0gdmdhLm8KIG9iai1taXBzLXkgKz0gamF6el9sZWQubwogb2JqLW1pcHMteSAr PSBndDY0eHh4Lm8gbWMxNDY4MThydGMubwotb2JqLW1pcHMteSArPSBjaXJydXNfdmdhLm8KIG9i ai1taXBzLSQoQ09ORklHX0ZVTE9ORykgKz0gYm9uaXRvLm8gdnQ4MmM2ODYubyBtaXBzX2Z1bG9u ZzJlLm8KIAogb2JqLW1pY3JvYmxhemUteSA9IHBldGFsb2dpeF9zM2Fkc3AxODAwX21tdS5vCkBA IC0zMTYsOSArMzE0LDcgQEAgb2JqLWNyaXMteSArPSBldHJheGZzX3Nlci5vCiAKIGlmZXEgKCQo VEFSR0VUX0FSQ0gpLCBzcGFyYzY0KQogb2JqLXNwYXJjLXkgPSBzdW40dS5vIGFwYl9wY2kubwot b2JqLXNwYXJjLXkgKz0gdmdhLm8KIG9iai1zcGFyYy15ICs9IG1jMTQ2ODE4cnRjLm8KLW9iai1z cGFyYy15ICs9IGNpcnJ1c192Z2EubwogZWxzZQogb2JqLXNwYXJjLXkgPSBzdW40bS5vIGxhbmNl Lm8gdGN4Lm8gc3VuNG1faW9tbXUubyBzbGF2aW9faW50Y3RsLm8KIG9iai1zcGFyYy15ICs9IHNs YXZpb190aW1lci5vIHNsYXZpb19taXNjLm8gc3BhcmMzMl9kbWEubwpAQCAtMzQ0LDcgKzM0MCw3 IEBAIG9iai1hcm0teSArPSBvbWFwMS5vIG9tYXBfbGNkYy5vIG9tYXBfZG1hLm8gb21hcF9jbGsu byBvbWFwX21tYy5vIG9tYXBfaTJjLm8gXAogb2JqLWFybS15ICs9IG9tYXAyLm8gb21hcF9kc3Mu byBzb2NfZG1hLm8gb21hcF9ncHRpbWVyLm8gb21hcF9zeW5jdGltZXIubyBcCiAJCW9tYXBfZ3Bt Yy5vIG9tYXBfc2RyYy5vIG9tYXBfc3BpLm8gb21hcF90YXAubyBvbWFwX2w0Lm8KIG9iai1hcm0t eSArPSBvbWFwX3N4MS5vIHBhbG0ubyB0c2MyMTB4Lm8KLW9iai1hcm0teSArPSBuc2VyaWVzLm8g YmxpenphcmQubyBvbmVuYW5kLm8gdmdhLm8gY2J1cy5vIHR1c2I2MDEwLm8gdXNiLW11c2Iubwor b2JqLWFybS15ICs9IG5zZXJpZXMubyBibGl6emFyZC5vIG9uZW5hbmQubyBjYnVzLm8gdHVzYjYw MTAubyB1c2ItbXVzYi5vCiBvYmotYXJtLXkgKz0gbXN0X2ZwZ2EubyBtYWluc3RvbmUubwogb2Jq LWFybS15ICs9IHoyLm8KIG9iai1hcm0teSArPSBtdXNpY3BhbC5vIGJpdGJhbmdfaTJjLm8gbWFy dmVsbF84OHc4NjE4X2F1ZGlvLm8KQEAgLTM2Niw3ICszNjIsNiBAQCBvYmotbTY4ay15ICs9IG02 OGstc2VtaS5vIGR1bW15X202OGsubwogb2JqLXMzOTB4LXkgPSBzMzkwLXZpcnRpby1idXMubyBz MzkwLXZpcnRpby5vCiAKIG9iai1hbHBoYS15ID0gbWMxNDY4MThydGMubwotb2JqLWFscGhhLXkg Kz0gdmdhLm8gY2lycnVzX3ZnYS5vCiBvYmotYWxwaGEteSArPSBhbHBoYV9wY2kubyBhbHBoYV9k cDI2NC5vIGFscGhhX3R5cGhvb24ubwogCiBvYmoteHRlbnNhLXkgKz0geHRlbnNhX3BpYy5vCmRp ZmYgLS1naXQgYS9kZWZhdWx0LWNvbmZpZ3MvYWxwaGEtc29mdG1tdS5tYWsgYi9kZWZhdWx0LWNv bmZpZ3MvYWxwaGEtc29mdG1tdS5tYWsKaW5kZXggYmQxZGQ5NS4uNTAxZGQ0MSAxMDA2NDQKLS0t IGEvZGVmYXVsdC1jb25maWdzL2FscGhhLXNvZnRtbXUubWFrCisrKyBiL2RlZmF1bHQtY29uZmln cy9hbHBoYS1zb2Z0bW11Lm1hawpAQCAtNCw3ICs0LDkgQEAgaW5jbHVkZSBwY2kubWFrCiBDT05G SUdfU0VSSUFMPXkKIENPTkZJR19JODI1ND15CiBDT05GSUdfUENLQkQ9eQorQ09ORklHX1ZHQT15 CiBDT05GSUdfVkdBX1BDST15CitDT05GSUdfVkdBX0NJUlJVUz15CiBDT05GSUdfSURFX0NPUkU9 eQogQ09ORklHX0lERV9RREVWPXkKIENPTkZJR19WTVdBUkVfVkdBPXkKZGlmZiAtLWdpdCBhL2Rl ZmF1bHQtY29uZmlncy9hcm0tc29mdG1tdS5tYWsgYi9kZWZhdWx0LWNvbmZpZ3MvYXJtLXNvZnRt bXUubWFrCmluZGV4IDhkMTE3NGYxLi5lNTQyYjRmIDEwMDY0NAotLS0gYS9kZWZhdWx0LWNvbmZp Z3MvYXJtLXNvZnRtbXUubWFrCisrKyBiL2RlZmF1bHQtY29uZmlncy9hcm0tc29mdG1tdS5tYWsK QEAgLTIsNiArMiw3IEBACiAKIGluY2x1ZGUgcGNpLm1hawogQ09ORklHX0dEQlNUVUJfWE1MPXkK K0NPTkZJR19WR0E9eQogQ09ORklHX0lTQV9NTUlPPXkKIENPTkZJR19OQU5EPXkKIENPTkZJR19F Q0M9eQpkaWZmIC0tZ2l0IGEvZGVmYXVsdC1jb25maWdzL2kzODYtc29mdG1tdS5tYWsgYi9kZWZh dWx0LWNvbmZpZ3MvaTM4Ni1zb2Z0bW11Lm1hawppbmRleCBlNjdlYmIzLi42NjIzNDhlIDEwMDY0 NAotLS0gYS9kZWZhdWx0LWNvbmZpZ3MvaTM4Ni1zb2Z0bW11Lm1haworKysgYi9kZWZhdWx0LWNv bmZpZ3MvaTM4Ni1zb2Z0bW11Lm1hawpAQCAtMSw4ICsxLDEwIEBACiAjIERlZmF1bHQgY29uZmln dXJhdGlvbiBmb3IgaTM4Ni1zb2Z0bW11CiAKIGluY2x1ZGUgcGNpLm1haworQ09ORklHX1ZHQT15 CiBDT05GSUdfVkdBX1BDST15CiBDT05GSUdfVkdBX0lTQT15CitDT05GSUdfVkdBX0NJUlJVUz15 CiBDT05GSUdfVk1XQVJFX1ZHQT15CiBDT05GSUdfVk1NT1VTRT15CiBDT05GSUdfU0VSSUFMPXkK ZGlmZiAtLWdpdCBhL2RlZmF1bHQtY29uZmlncy9taXBzLXNvZnRtbXUubWFrIGIvZGVmYXVsdC1j b25maWdzL21pcHMtc29mdG1tdS5tYWsKaW5kZXggOTRhMzQ4Ni4uMzA4ZDA0YSAxMDA2NDQKLS0t IGEvZGVmYXVsdC1jb25maWdzL21pcHMtc29mdG1tdS5tYWsKKysrIGIvZGVmYXVsdC1jb25maWdz L21pcHMtc29mdG1tdS5tYWsKQEAgLTMsOSArMywxMSBAQAogaW5jbHVkZSBwY2kubWFrCiBDT05G SUdfSVNBX01NSU89eQogQ09ORklHX0VTUD15CitDT05GSUdfVkdBPXkKIENPTkZJR19WR0FfUENJ PXkKIENPTkZJR19WR0FfSVNBPXkKIENPTkZJR19WR0FfSVNBX01NPXkKK0NPTkZJR19WR0FfQ0lS UlVTPXkKIENPTkZJR19WTVdBUkVfVkdBPXkKIENPTkZJR19TRVJJQUw9eQogQ09ORklHX1BBUkFM TEVMPXkKZGlmZiAtLWdpdCBhL2RlZmF1bHQtY29uZmlncy9taXBzNjQtc29mdG1tdS5tYWsgYi9k ZWZhdWx0LWNvbmZpZ3MvbWlwczY0LXNvZnRtbXUubWFrCmluZGV4IGI1ZDMxMDguLmYxYjkyZGEg MTAwNjQ0Ci0tLSBhL2RlZmF1bHQtY29uZmlncy9taXBzNjQtc29mdG1tdS5tYWsKKysrIGIvZGVm YXVsdC1jb25maWdzL21pcHM2NC1zb2Z0bW11Lm1hawpAQCAtMyw5ICszLDExIEBACiBpbmNsdWRl IHBjaS5tYWsKIENPTkZJR19JU0FfTU1JTz15CiBDT05GSUdfRVNQPXkKK0NPTkZJR19WR0E9eQog Q09ORklHX1ZHQV9QQ0k9eQogQ09ORklHX1ZHQV9JU0E9eQogQ09ORklHX1ZHQV9JU0FfTU09eQor Q09ORklHX1ZHQV9DSVJSVVM9eQogQ09ORklHX1ZNV0FSRV9WR0E9eQogQ09ORklHX1NFUklBTD15 CiBDT05GSUdfUEFSQUxMRUw9eQpkaWZmIC0tZ2l0IGEvZGVmYXVsdC1jb25maWdzL21pcHM2NGVs LXNvZnRtbXUubWFrIGIvZGVmYXVsdC1jb25maWdzL21pcHM2NGVsLXNvZnRtbXUubWFrCmluZGV4 IDI4MzFmNDQuLjU2NzM5NmMgMTAwNjQ0Ci0tLSBhL2RlZmF1bHQtY29uZmlncy9taXBzNjRlbC1z b2Z0bW11Lm1haworKysgYi9kZWZhdWx0LWNvbmZpZ3MvbWlwczY0ZWwtc29mdG1tdS5tYWsKQEAg LTMsOSArMywxMSBAQAogaW5jbHVkZSBwY2kubWFrCiBDT05GSUdfSVNBX01NSU89eQogQ09ORklH X0VTUD15CitDT05GSUdfVkdBPXkKIENPTkZJR19WR0FfUENJPXkKIENPTkZJR19WR0FfSVNBPXkK IENPTkZJR19WR0FfSVNBX01NPXkKK0NPTkZJR19WR0FfQ0lSUlVTPXkKIENPTkZJR19WTVdBUkVf VkdBPXkKIENPTkZJR19TRVJJQUw9eQogQ09ORklHX1BBUkFMTEVMPXkKZGlmZiAtLWdpdCBhL2Rl ZmF1bHQtY29uZmlncy9taXBzZWwtc29mdG1tdS5tYWsgYi9kZWZhdWx0LWNvbmZpZ3MvbWlwc2Vs LXNvZnRtbXUubWFrCmluZGV4IDE0Yzk0OWQuLmE4ZTQyMWIgMTAwNjQ0Ci0tLSBhL2RlZmF1bHQt Y29uZmlncy9taXBzZWwtc29mdG1tdS5tYWsKKysrIGIvZGVmYXVsdC1jb25maWdzL21pcHNlbC1z b2Z0bW11Lm1hawpAQCAtMyw5ICszLDExIEBACiBpbmNsdWRlIHBjaS5tYWsKIENPTkZJR19JU0Ff TU1JTz15CiBDT05GSUdfRVNQPXkKK0NPTkZJR19WR0E9eQogQ09ORklHX1ZHQV9QQ0k9eQogQ09O RklHX1ZHQV9JU0E9eQogQ09ORklHX1ZHQV9JU0FfTU09eQorQ09ORklHX1ZHQV9DSVJSVVM9eQog Q09ORklHX1ZNV0FSRV9WR0E9eQogQ09ORklHX1NFUklBTD15CiBDT05GSUdfUEFSQUxMRUw9eQpk aWZmIC0tZ2l0IGEvZGVmYXVsdC1jb25maWdzL3BwYy1zb2Z0bW11Lm1hayBiL2RlZmF1bHQtY29u Zmlncy9wcGMtc29mdG1tdS5tYWsKaW5kZXggYzg1Y2RjZS4uMzI3NzI5MSAxMDA2NDQKLS0tIGEv ZGVmYXVsdC1jb25maWdzL3BwYy1zb2Z0bW11Lm1haworKysgYi9kZWZhdWx0LWNvbmZpZ3MvcHBj LXNvZnRtbXUubWFrCkBAIC01LDYgKzUsNyBAQCBDT05GSUdfR0RCU1RVQl9YTUw9eQogQ09ORklH X0lTQV9NTUlPPXkKIENPTkZJR19FU0NDPXkKIENPTkZJR19NNDhUNTk9eQorQ09ORklHX1ZHQT15 CiBDT05GSUdfVkdBX1BDST15CiBDT05GSUdfU0VSSUFMPXkKIENPTkZJR19JODI1ND15CmRpZmYg LS1naXQgYS9kZWZhdWx0LWNvbmZpZ3MvcHBjNjQtc29mdG1tdS5tYWsgYi9kZWZhdWx0LWNvbmZp Z3MvcHBjNjQtc29mdG1tdS5tYWsKaW5kZXggODg3NDExNS4uZjQ5MDM2OCAxMDA2NDQKLS0tIGEv ZGVmYXVsdC1jb25maWdzL3BwYzY0LXNvZnRtbXUubWFrCisrKyBiL2RlZmF1bHQtY29uZmlncy9w cGM2NC1zb2Z0bW11Lm1hawpAQCAtNSw2ICs1LDcgQEAgQ09ORklHX0dEQlNUVUJfWE1MPXkKIENP TkZJR19JU0FfTU1JTz15CiBDT05GSUdfRVNDQz15CiBDT05GSUdfTTQ4VDU5PXkKK0NPTkZJR19W R0E9eQogQ09ORklHX1ZHQV9QQ0k9eQogQ09ORklHX1NFUklBTD15CiBDT05GSUdfSTgyNTQ9eQpk aWZmIC0tZ2l0IGEvZGVmYXVsdC1jb25maWdzL3BwY2VtYi1zb2Z0bW11Lm1hayBiL2RlZmF1bHQt Y29uZmlncy9wcGNlbWItc29mdG1tdS5tYWsKaW5kZXggNWRiNzIwNS4uODI5ZjQ2MiAxMDA2NDQK LS0tIGEvZGVmYXVsdC1jb25maWdzL3BwY2VtYi1zb2Z0bW11Lm1haworKysgYi9kZWZhdWx0LWNv bmZpZ3MvcHBjZW1iLXNvZnRtbXUubWFrCkBAIC01LDYgKzUsNyBAQCBDT05GSUdfR0RCU1RVQl9Y TUw9eQogQ09ORklHX0lTQV9NTUlPPXkKIENPTkZJR19FU0NDPXkKIENPTkZJR19NNDhUNTk9eQor Q09ORklHX1ZHQT15CiBDT05GSUdfVkdBX1BDST15CiBDT05GSUdfU0VSSUFMPXkKIENPTkZJR19J ODI1ND15CmRpZmYgLS1naXQgYS9kZWZhdWx0LWNvbmZpZ3Mvc3BhcmM2NC1zb2Z0bW11Lm1hayBi L2RlZmF1bHQtY29uZmlncy9zcGFyYzY0LXNvZnRtbXUubWFrCmluZGV4IGQ4ZjE3ZTcuLmM5YTM2 YzEgMTAwNjQ0Ci0tLSBhL2RlZmF1bHQtY29uZmlncy9zcGFyYzY0LXNvZnRtbXUubWFrCisrKyBi L2RlZmF1bHQtY29uZmlncy9zcGFyYzY0LXNvZnRtbXUubWFrCkBAIC00LDcgKzQsOSBAQCBpbmNs dWRlIHBjaS5tYWsKIENPTkZJR19JU0FfTU1JTz15CiBDT05GSUdfTTQ4VDU5PXkKIENPTkZJR19Q VElNRVI9eQorQ09ORklHX1ZHQT15CiBDT05GSUdfVkdBX1BDST15CitDT05GSUdfVkdBX0NJUlJV Uz15CiBDT05GSUdfU0VSSUFMPXkKIENPTkZJR19QQVJBTExFTD15CiBDT05GSUdfUENLQkQ9eQpk aWZmIC0tZ2l0IGEvZGVmYXVsdC1jb25maWdzL3g4Nl82NC1zb2Z0bW11Lm1hayBiL2RlZmF1bHQt Y29uZmlncy94ODZfNjQtc29mdG1tdS5tYWsKaW5kZXggYjc1NzU3ZS4uYjQ0NWJlMiAxMDA2NDQK LS0tIGEvZGVmYXVsdC1jb25maWdzL3g4Nl82NC1zb2Z0bW11Lm1haworKysgYi9kZWZhdWx0LWNv bmZpZ3MveDg2XzY0LXNvZnRtbXUubWFrCkBAIC0xLDggKzEsMTAgQEAKICMgRGVmYXVsdCBjb25m aWd1cmF0aW9uIGZvciB4ODZfNjQtc29mdG1tdQogCiBpbmNsdWRlIHBjaS5tYWsKK0NPTkZJR19W R0E9eQogQ09ORklHX1ZHQV9QQ0k9eQogQ09ORklHX1ZHQV9JU0E9eQorQ09ORklHX1ZHQV9DSVJS VVM9eQogQ09ORklHX1ZNV0FSRV9WR0E9eQogQ09ORklHX1ZNTU9VU0U9eQogQ09ORklHX1NFUklB TD15CmRpZmYgLS1naXQgYS9ody9jaXJydXNfdmdhLmMgYi9ody9jaXJydXNfdmdhLmMKaW5kZXgg YTExNDQ0Yy4uYWE4YTBlNiAxMDA2NDQKLS0tIGEvaHcvY2lycnVzX3ZnYS5jCisrKyBiL2h3L2Np cnJ1c192Z2EuYwpAQCAtMjUwLDYgKzI1MCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBQQ0lDaXJydXNW R0FTdGF0ZSB7CiAgICAgQ2lycnVzVkdBU3RhdGUgY2lycnVzX3ZnYTsKIH0gUENJQ2lycnVzVkdB U3RhdGU7CiAKK3R5cGVkZWYgc3RydWN0IElTQUNpcnJ1c1ZHQVN0YXRlIHsKKyAgICBJU0FEZXZp Y2UgZGV2OworICAgIENpcnJ1c1ZHQVN0YXRlIGNpcnJ1c192Z2E7Cit9IElTQUNpcnJ1c1ZHQVN0 YXRlOworCiBzdGF0aWMgdWludDhfdCByb3BfdG9faW5kZXhbMjU2XTsKIAogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMjg5OSwyMSArMjkwNCwzNCBAQCBzdGF0 aWMgdm9pZCBjaXJydXNfaW5pdF9jb21tb24oQ2lycnVzVkdBU3RhdGUgKiBzLCBpbnQgZGV2aWNl X2lkLCBpbnQgaXNfcGNpLAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCiAKLXZvaWQgaXNhX2NpcnJ1c192Z2FfaW5pdChNZW1vcnlSZWdpb24gKnN5c3RlbV9t ZW1vcnkpCitzdGF0aWMgaW50IHZnYV9pbml0Zm4oSVNBRGV2aWNlICpkZXYpCiB7Ci0gICAgQ2ly cnVzVkdBU3RhdGUgKnM7Ci0KLSAgICBzID0gZ19tYWxsb2MwKHNpemVvZihDaXJydXNWR0FTdGF0 ZSkpOwotCi0gICAgdmdhX2NvbW1vbl9pbml0KCZzLT52Z2EsIFZHQV9SQU1fU0laRSk7Ci0gICAg Y2lycnVzX2luaXRfY29tbW9uKHMsIENJUlJVU19JRF9DTEdENTQzMCwgMCwgc3lzdGVtX21lbW9y eSk7Ci0gICAgcy0+dmdhLmRzID0gZ3JhcGhpY19jb25zb2xlX2luaXQocy0+dmdhLnVwZGF0ZSwg cy0+dmdhLmludmFsaWRhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cy0+dmdhLnNjcmVlbl9kdW1wLCBzLT52Z2EudGV4dF91cGRhdGUsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnMtPnZnYSk7Ci0gICAgdm1zdGF0ZV9yZWdpc3RlcihOVUxM LCAwLCAmdm1zdGF0ZV9jaXJydXNfdmdhLCBzKTsKKyAgICBJU0FDaXJydXNWR0FTdGF0ZSAqZCA9 IERPX1VQQ0FTVChJU0FDaXJydXNWR0FTdGF0ZSwgZGV2LCBkZXYpOworICAgIFZHQUNvbW1vblN0 YXRlICpzID0gJmQtPmNpcnJ1c192Z2EudmdhOworCisgICAgdmdhX2NvbW1vbl9pbml0KHMsIFZH QV9SQU1fU0laRSk7CisgICAgY2lycnVzX2luaXRfY29tbW9uKCZkLT5jaXJydXNfdmdhLCBDSVJS VVNfSURfQ0xHRDU0MzAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgIGlzYV9hZGRyZXNzX3Nw YWNlKGRldikpOworICAgIHMtPmRzID0gZ3JhcGhpY19jb25zb2xlX2luaXQocy0+dXBkYXRlLCBz LT5pbnZhbGlkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+c2NyZWVu X2R1bXAsIHMtPnRleHRfdXBkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cyk7CiAgICAgcm9tX2FkZF92Z2EoVkdBQklPU19DSVJSVVNfRklMRU5BTUUpOwogICAgIC8qIFhY WCBJU0EtTEZCIHN1cHBvcnQgKi8KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIElTQURldmlj ZUluZm8gaXNhX2NpcnJ1c192Z2FfaW5mbyA9IHsKKyAgICAucWRldi5uYW1lICAgICA9ICJpc2Et Y2lycnVzLXZnYSIsCisgICAgLnFkZXYuc2l6ZSAgICAgPSBzaXplb2YoSVNBQ2lycnVzVkdBU3Rh dGUpLAorICAgIC5xZGV2LnZtc2QgICAgID0gJnZtc3RhdGVfY2lycnVzX3ZnYSwKKyAgICAuaW5p dCAgICAgICAgICA9IHZnYV9pbml0Zm4sCit9OworCitzdGF0aWMgdm9pZCBpc2FfY2lycnVzX3Zn YV9yZWdpc3Rlcih2b2lkKQoreworICAgIGlzYV9xZGV2X3JlZ2lzdGVyKCZpc2FfY2lycnVzX3Zn YV9pbmZvKTsKIH0KK2RldmljZV9pbml0KGlzYV9jaXJydXNfdmdhX3JlZ2lzdGVyKQogCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpkaWZmIC0tZ2l0IGEvaHcv cGMuYyBiL2h3L3BjLmMKaW5kZXggODQ1NDM0NC4uMDc5OWM2OCAxMDA2NDQKLS0tIGEvaHcvcGMu YworKysgYi9ody9wYy5jCkBAIC0xMDgwLDcgKzEwODAsNyBAQCB2b2lkIHBjX3ZnYV9pbml0KFBD SUJ1cyAqcGNpX2J1cykKICAgICAgICAgICAgICAgICBwY2lfdmdhX2luaXQocGNpX2J1cyk7CiAg ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpc2FfY2lycnVzX3Zn YV9pbml0KGdldF9zeXN0ZW1fbWVtb3J5KCkpOworICAgICAgICAgICAgaXNhX2NpcnJ1c192Z2Ff aW5pdCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICh2bXN2Z2FfZW5hYmxlZCkgewogICAg ICAgICBpZiAocGNpX2J1cykgewpkaWZmIC0tZ2l0IGEvaHcvcGMuaCBiL2h3L3BjLmgKaW5kZXgg NDBkNmVkYi4uMGExNjBhMiAxMDA2NDQKLS0tIGEvaHcvcGMuaAorKysgYi9ody9wYy5oCkBAIC0y NDUsNyArMjQ1LDE5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwY2lfY2lycnVzX3ZnYV9pbml0KFBD SUJ1cyAqYnVzKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGlzYV9jaXJydXNfdmdhX2lu aXQoTWVtb3J5UmVnaW9uICphZGRyZXNzX3NwYWNlKTsKK3N0YXRpYyBpbmxpbmUgaW50IGlzYV9j aXJydXNfdmdhX2luaXQodm9pZCkKK3sKKyAgICBJU0FEZXZpY2UgKmRldjsKKworICAgIGRldiA9 IGlzYV90cnlfY3JlYXRlKCJpc2EtY2lycnVzLXZnYSIpOworICAgIGlmICghZGV2KSB7CisgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiV2FybmluZzogaXNhLWNpcnJ1cy12Z2Egbm90IGF2YWlsYWJs ZVxuIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBxZGV2X2luaXRfbm9mYWlsKCZk ZXYtPnFkZXYpOworICAgIHJldHVybiAxOworfQorCiAKIC8qIG5lMjAwMC5jICovCiBzdGF0aWMg aW5saW5lIGJvb2wgaXNhX25lMjAwMF9pbml0KGludCBiYXNlLCBpbnQgaXJxLCBOSUNJbmZvICpu ZCkKLS0gCjEuNy4yLjUKCg== --f46d0444ec6b310a8404af6d4979--