From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 10.25.77.65 with SMTP id a62csp1103146lfb; Mon, 23 Jan 2017 01:49:29 -0800 (PST) X-Received: by 10.55.212.22 with SMTP id l22mr22812368qki.48.1485164969157; Mon, 23 Jan 2017 01:49:29 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 1si10431482qkg.94.2017.01.23.01.49.28 for (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 23 Jan 2017 01:49:29 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org Received: from localhost ([::1]:40399 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVbFe-0006kQ-Ge for alex.bennee@linaro.org; Mon, 23 Jan 2017 04:49:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37910) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVbF7-0006Qu-U5 for qemu-arm@nongnu.org; Mon, 23 Jan 2017 04:48:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVbF4-0003rj-RH for qemu-arm@nongnu.org; Mon, 23 Jan 2017 04:48:53 -0500 Received: from mx1.redhat.com ([209.132.183.28]:38978) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cVbF4-0003rM-JR; Mon, 23 Jan 2017 04:48:50 -0500 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1E1A961BB3; Mon, 23 Jan 2017 09:48:49 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-117-93.ams2.redhat.com [10.36.117.93]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id v0N9miVh004347 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Mon, 23 Jan 2017 04:48:46 -0500 Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 555AD1138648; Mon, 23 Jan 2017 10:48:43 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Date: Mon, 23 Jan 2017 10:48:40 +0100 Message-Id: <1485164923-17736-4-git-send-email-armbru@redhat.com> In-Reply-To: <1485164923-17736-1-git-send-email-armbru@redhat.com> References: <1485164923-17736-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 23 Jan 2017 09:48:50 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-arm] [PATCH 3/6] hw: Default -drive to if=none instead of ide when ide cannot work X-BeenThere: qemu-arm@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, Peter Maydell , Stefano Stabellini , Jia Liu , qemu-block@nongnu.org, Mark Cave-Ayland , Anthony Green , Magnus Damm , Laurent Vivier , Fabien Chouteau , Alexander Graf , Max Filippov , Michael Walle , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Bastian Koppelmann , Anthony Perard , Guan Xuetao , xen-devel@lists.xensource.com, Artyom Tarasenko Errors-To: qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org Sender: "Qemu-arm" X-TUID: bWuzCErBot9w Block backends defined with -drive if=ide are meant to be picked up by machine initialization code: a suitable frontend gets created and wired up automatically. if=ide drives not picked up that way can still be used with -device as if they had if=none, but that's unclean and best avoided. Unused ones produce an "Orphaned drive without device" warning. -drive parameter "if" is optional, and the default depends on the machine type. If a machine type doesn't specify a default, the default is "ide". Many machine types implicitly default to if=ide that way, even though they don't actually have an IDE controller. This makes no sense. Change the implicit default to if=none. Affected machines: * all targets: none * aarch64/arm: akita ast2500 canon cheetah collie connex imx25 integratorcp kzm lm3s6965evb lm3s811evb mainstone musicpal n800 n810 netduino2 nuri palmetto realview romulus sabrelite smdkc210 sx1 sx1 verdex z2 * cris: axis-dev88 * i386/x86_64: xenpv * lm32: lm32-evr lm32-uclinux milkymist * m68k: an5206 dummy mcf5208evb * microblaze/microblazeel: petalogix-ml605 petalogix-s3adsp1800 * mips/mips64/mips64el/mipsel: mipssim * moxie: moxiesim * or32: or32-sim * ppc/ppc64/ppcemb: bamboo ref405ep taihu virtex-ml507 * ppc/ppc64: mpc8544ds ppce500 * sh4/sh4eb: shix * sparc: leon3_generic * sparc64: niagara * tricore: tricore_testboard * unicore32: puv3 * xtensa/xtensaeb: kc705 lx200 lx60 ml605 sim None of these machines have an IDE controller, let alone code to honor if=ide. Cc: Peter Maydell Cc: qemu-arm@nongnu.org Cc: Edgar E. Iglesias Cc: Stefano Stabellini Cc: Anthony Perard Cc: xen-devel@lists.xensource.com Cc: Michael Walle Cc: Laurent Vivier Cc: Anthony Green Cc: Jia Liu Cc: Alexander Graf Cc: qemu-ppc@nongnu.org Cc: Magnus Damm Cc: Fabien Chouteau Cc: Mark Cave-Ayland Cc: Artyom Tarasenko Cc: Bastian Koppelmann Cc: Guan Xuetao Cc: Max Filippov Signed-off-by: Markus Armbruster --- include/sysemu/blockdev.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/include/sysemu/blockdev.h b/include/sysemu/blockdev.h index 16432f3..351a039 100644 --- a/include/sysemu/blockdev.h +++ b/include/sysemu/blockdev.h @@ -19,12 +19,11 @@ void blockdev_auto_del(BlockBackend *blk); typedef enum { IF_DEFAULT = -1, /* for use with drive_add() only */ /* - * IF_IDE must be zero, because we want MachineClass member - * block_default_type to default-initialize to IF_IDE + * IF_NONE must be zero, because we want MachineClass member + * block_default_type to default-initialize to IF_NONE */ - IF_IDE = 0, - IF_NONE, - IF_SCSI, IF_FLOPPY, IF_PFLASH, IF_MTD, IF_SD, IF_VIRTIO, IF_XEN, + IF_NONE = 0, + IF_IDE, IF_SCSI, IF_FLOPPY, IF_PFLASH, IF_MTD, IF_SD, IF_VIRTIO, IF_XEN, IF_COUNT } BlockInterfaceType; -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38013) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cVbFF-0006aA-UF for qemu-devel@nongnu.org; Mon, 23 Jan 2017 04:49:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cVbFE-0003uZ-Kd for qemu-devel@nongnu.org; Mon, 23 Jan 2017 04:49:01 -0500 From: Markus Armbruster Date: Mon, 23 Jan 2017 10:48:40 +0100 Message-Id: <1485164923-17736-4-git-send-email-armbru@redhat.com> In-Reply-To: <1485164923-17736-1-git-send-email-armbru@redhat.com> References: <1485164923-17736-1-git-send-email-armbru@redhat.com> Subject: [Qemu-devel] [PATCH 3/6] hw: Default -drive to if=none instead of ide when ide cannot work List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, qemu-block@nongnu.org, Peter Maydell , qemu-arm@nongnu.org, "Edgar E . Iglesias" , Stefano Stabellini , Anthony Perard , xen-devel@lists.xensource.com, Michael Walle , Laurent Vivier , Anthony Green , Jia Liu , Alexander Graf , qemu-ppc@nongnu.org, Magnus Damm , Fabien Chouteau , Mark Cave-Ayland , Artyom Tarasenko , Bastian Koppelmann , Guan Xuetao , Max Filippov Block backends defined with -drive if=ide are meant to be picked up by machine initialization code: a suitable frontend gets created and wired up automatically. if=ide drives not picked up that way can still be used with -device as if they had if=none, but that's unclean and best avoided. Unused ones produce an "Orphaned drive without device" warning. -drive parameter "if" is optional, and the default depends on the machine type. If a machine type doesn't specify a default, the default is "ide". Many machine types implicitly default to if=ide that way, even though they don't actually have an IDE controller. This makes no sense. Change the implicit default to if=none. Affected machines: * all targets: none * aarch64/arm: akita ast2500 canon cheetah collie connex imx25 integratorcp kzm lm3s6965evb lm3s811evb mainstone musicpal n800 n810 netduino2 nuri palmetto realview romulus sabrelite smdkc210 sx1 sx1 verdex z2 * cris: axis-dev88 * i386/x86_64: xenpv * lm32: lm32-evr lm32-uclinux milkymist * m68k: an5206 dummy mcf5208evb * microblaze/microblazeel: petalogix-ml605 petalogix-s3adsp1800 * mips/mips64/mips64el/mipsel: mipssim * moxie: moxiesim * or32: or32-sim * ppc/ppc64/ppcemb: bamboo ref405ep taihu virtex-ml507 * ppc/ppc64: mpc8544ds ppce500 * sh4/sh4eb: shix * sparc: leon3_generic * sparc64: niagara * tricore: tricore_testboard * unicore32: puv3 * xtensa/xtensaeb: kc705 lx200 lx60 ml605 sim None of these machines have an IDE controller, let alone code to honor if=ide. Cc: Peter Maydell Cc: qemu-arm@nongnu.org Cc: Edgar E. Iglesias Cc: Stefano Stabellini Cc: Anthony Perard Cc: xen-devel@lists.xensource.com Cc: Michael Walle Cc: Laurent Vivier Cc: Anthony Green Cc: Jia Liu Cc: Alexander Graf Cc: qemu-ppc@nongnu.org Cc: Magnus Damm Cc: Fabien Chouteau Cc: Mark Cave-Ayland Cc: Artyom Tarasenko Cc: Bastian Koppelmann Cc: Guan Xuetao Cc: Max Filippov Signed-off-by: Markus Armbruster --- include/sysemu/blockdev.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/include/sysemu/blockdev.h b/include/sysemu/blockdev.h index 16432f3..351a039 100644 --- a/include/sysemu/blockdev.h +++ b/include/sysemu/blockdev.h @@ -19,12 +19,11 @@ void blockdev_auto_del(BlockBackend *blk); typedef enum { IF_DEFAULT = -1, /* for use with drive_add() only */ /* - * IF_IDE must be zero, because we want MachineClass member - * block_default_type to default-initialize to IF_IDE + * IF_NONE must be zero, because we want MachineClass member + * block_default_type to default-initialize to IF_NONE */ - IF_IDE = 0, - IF_NONE, - IF_SCSI, IF_FLOPPY, IF_PFLASH, IF_MTD, IF_SD, IF_VIRTIO, IF_XEN, + IF_NONE = 0, + IF_IDE, IF_SCSI, IF_FLOPPY, IF_PFLASH, IF_MTD, IF_SD, IF_VIRTIO, IF_XEN, IF_COUNT } BlockInterfaceType; -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Markus Armbruster Subject: [PATCH 3/6] hw: Default -drive to if=none instead of ide when ide cannot work Date: Mon, 23 Jan 2017 10:48:40 +0100 Message-ID: <1485164923-17736-4-git-send-email-armbru@redhat.com> References: <1485164923-17736-1-git-send-email-armbru@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1485164923-17736-1-git-send-email-armbru@redhat.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, Peter Maydell , Stefano Stabellini , Jia Liu , qemu-block@nongnu.org, Mark Cave-Ayland , Anthony Green , Magnus Damm , Laurent Vivier , Fabien Chouteau , Alexander Graf , Max Filippov , Michael Walle , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Bastian Koppelmann , Anthony Perard , "Edgar E . Iglesias" , Guan Xuetao , xen-devel@lists.xensource.com, Artyom Tarasenko List-Id: xen-devel@lists.xenproject.org QmxvY2sgYmFja2VuZHMgZGVmaW5lZCB3aXRoIC1kcml2ZSBpZj1pZGUgYXJlIG1lYW50IHRvIGJl IHBpY2tlZCB1cCBieQptYWNoaW5lIGluaXRpYWxpemF0aW9uIGNvZGU6IGEgc3VpdGFibGUgZnJv bnRlbmQgZ2V0cyBjcmVhdGVkIGFuZAp3aXJlZCB1cCBhdXRvbWF0aWNhbGx5LgoKaWY9aWRlIGRy aXZlcyBub3QgcGlja2VkIHVwIHRoYXQgd2F5IGNhbiBzdGlsbCBiZSB1c2VkIHdpdGggLWRldmlj ZSBhcwppZiB0aGV5IGhhZCBpZj1ub25lLCBidXQgdGhhdCdzIHVuY2xlYW4gYW5kIGJlc3QgYXZv aWRlZC4gIFVudXNlZCBvbmVzCnByb2R1Y2UgYW4gIk9ycGhhbmVkIGRyaXZlIHdpdGhvdXQgZGV2 aWNlIiB3YXJuaW5nLgoKLWRyaXZlIHBhcmFtZXRlciAiaWYiIGlzIG9wdGlvbmFsLCBhbmQgdGhl IGRlZmF1bHQgZGVwZW5kcyBvbiB0aGUKbWFjaGluZSB0eXBlLiAgSWYgYSBtYWNoaW5lIHR5cGUg ZG9lc24ndCBzcGVjaWZ5IGEgZGVmYXVsdCwgdGhlCmRlZmF1bHQgaXMgImlkZSIuCgpNYW55IG1h Y2hpbmUgdHlwZXMgaW1wbGljaXRseSBkZWZhdWx0IHRvIGlmPWlkZSB0aGF0IHdheSwgZXZlbiB0 aG91Z2gKdGhleSBkb24ndCBhY3R1YWxseSBoYXZlIGFuIElERSBjb250cm9sbGVyLiAgVGhpcyBt YWtlcyBubyBzZW5zZS4KCkNoYW5nZSB0aGUgaW1wbGljaXQgZGVmYXVsdCB0byBpZj1ub25lLiAg QWZmZWN0ZWQgbWFjaGluZXM6CgoqIGFsbCB0YXJnZXRzOiBub25lCiogYWFyY2g2NC9hcm06IGFr aXRhIGFzdDI1MDAgY2Fub24gY2hlZXRhaCBjb2xsaWUgY29ubmV4IGlteDI1CiAgaW50ZWdyYXRv cmNwIGt6bSBsbTNzNjk2NWV2YiBsbTNzODExZXZiIG1haW5zdG9uZSBtdXNpY3BhbCBuODAwIG44 MTAKICBuZXRkdWlubzIgbnVyaSBwYWxtZXR0byByZWFsdmlldyByb211bHVzIHNhYnJlbGl0ZSBz bWRrYzIxMCBzeDEgc3gxCiAgdmVyZGV4IHoyCiogY3JpczogYXhpcy1kZXY4OAoqIGkzODYveDg2 XzY0OiB4ZW5wdgoqIGxtMzI6IGxtMzItZXZyIGxtMzItdWNsaW51eCBtaWxreW1pc3QKKiBtNjhr OiBhbjUyMDYgZHVtbXkgbWNmNTIwOGV2YgoqIG1pY3JvYmxhemUvbWljcm9ibGF6ZWVsOiBwZXRh bG9naXgtbWw2MDUgcGV0YWxvZ2l4LXMzYWRzcDE4MDAKKiBtaXBzL21pcHM2NC9taXBzNjRlbC9t aXBzZWw6IG1pcHNzaW0KKiBtb3hpZTogbW94aWVzaW0KKiBvcjMyOiBvcjMyLXNpbQoqIHBwYy9w cGM2NC9wcGNlbWI6IGJhbWJvbyByZWY0MDVlcCB0YWlodSB2aXJ0ZXgtbWw1MDcKKiBwcGMvcHBj NjQ6IG1wYzg1NDRkcyBwcGNlNTAwCiogc2g0L3NoNGViOiBzaGl4Ciogc3BhcmM6IGxlb24zX2dl bmVyaWMKKiBzcGFyYzY0OiBuaWFnYXJhCiogdHJpY29yZTogdHJpY29yZV90ZXN0Ym9hcmQKKiB1 bmljb3JlMzI6IHB1djMKKiB4dGVuc2EveHRlbnNhZWI6IGtjNzA1IGx4MjAwIGx4NjAgbWw2MDUg c2ltCgpOb25lIG9mIHRoZXNlIG1hY2hpbmVzIGhhdmUgYW4gSURFIGNvbnRyb2xsZXIsIGxldCBh bG9uZSBjb2RlIHRvCmhvbm9yIGlmPWlkZS4KCkNjOiBQZXRlciBNYXlkZWxsIDxwZXRlci5tYXlk ZWxsQGxpbmFyby5vcmc+CkNjOiBxZW11LWFybUBub25nbnUub3JnCkNjOiBFZGdhciBFLiBJZ2xl c2lhcyA8ZWRnYXIuaWdsZXNpYXNAZ21haWwuY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxz c3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogQW50aG9ueSBQZXJhcmQgPGFudGhvbnkucGVyYXJk QGNpdHJpeC5jb20+CkNjOiB4ZW4tZGV2ZWxAbGlzdHMueGVuc291cmNlLmNvbQpDYzogTWljaGFl bCBXYWxsZSA8bWljaGFlbEB3YWxsZS5jYz4KQ2M6IExhdXJlbnQgVml2aWVyIDxsYXVyZW50QHZp dmllci5ldT4KQ2M6IEFudGhvbnkgR3JlZW4gPGdyZWVuQG1veGllbG9naWMuY29tPgpDYzogSmlh IExpdSA8cHJvbGpjQGdtYWlsLmNvbT4KQ2M6IEFsZXhhbmRlciBHcmFmIDxhZ3JhZkBzdXNlLmRl PgpDYzogcWVtdS1wcGNAbm9uZ251Lm9yZwpDYzogTWFnbnVzIERhbW0gPG1hZ251cy5kYW1tQGdt YWlsLmNvbT4KQ2M6IEZhYmllbiBDaG91dGVhdSA8Y2hvdXRlYXVAYWRhY29yZS5jb20+CkNjOiBN YXJrIENhdmUtQXlsYW5kIDxtYXJrLmNhdmUtYXlsYW5kQGlsYW5kZS5jby51az4KQ2M6IEFydHlv bSBUYXJhc2Vua28gPGF0YXI0cWVtdUBnbWFpbC5jb20+CkNjOiBCYXN0aWFuIEtvcHBlbG1hbm4g PGtiYXN0aWFuQG1haWwudW5pLXBhZGVyYm9ybi5kZT4KQ2M6IEd1YW4gWHVldGFvIDxneHRAbXBy Yy5wa3UuZWR1LmNuPgpDYzogTWF4IEZpbGlwcG92IDxqY212YmtiY0BnbWFpbC5jb20+ClNpZ25l ZC1vZmYtYnk6IE1hcmt1cyBBcm1icnVzdGVyIDxhcm1icnVAcmVkaGF0LmNvbT4KLS0tCiBpbmNs dWRlL3N5c2VtdS9ibG9ja2Rldi5oIHwgOSArKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGlu c2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zeXNlbXUv YmxvY2tkZXYuaCBiL2luY2x1ZGUvc3lzZW11L2Jsb2NrZGV2LmgKaW5kZXggMTY0MzJmMy4uMzUx YTAzOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zeXNlbXUvYmxvY2tkZXYuaAorKysgYi9pbmNsdWRl L3N5c2VtdS9ibG9ja2Rldi5oCkBAIC0xOSwxMiArMTksMTEgQEAgdm9pZCBibG9ja2Rldl9hdXRv X2RlbChCbG9ja0JhY2tlbmQgKmJsayk7CiB0eXBlZGVmIGVudW0gewogICAgIElGX0RFRkFVTFQg PSAtMSwgICAgICAgICAgICAvKiBmb3IgdXNlIHdpdGggZHJpdmVfYWRkKCkgb25seSAqLwogICAg IC8qCi0gICAgICogSUZfSURFIG11c3QgYmUgemVybywgYmVjYXVzZSB3ZSB3YW50IE1hY2hpbmVD bGFzcyBtZW1iZXIKLSAgICAgKiBibG9ja19kZWZhdWx0X3R5cGUgdG8gZGVmYXVsdC1pbml0aWFs aXplIHRvIElGX0lERQorICAgICAqIElGX05PTkUgbXVzdCBiZSB6ZXJvLCBiZWNhdXNlIHdlIHdh bnQgTWFjaGluZUNsYXNzIG1lbWJlcgorICAgICAqIGJsb2NrX2RlZmF1bHRfdHlwZSB0byBkZWZh dWx0LWluaXRpYWxpemUgdG8gSUZfTk9ORQogICAgICAqLwotICAgIElGX0lERSA9IDAsCi0gICAg SUZfTk9ORSwKLSAgICBJRl9TQ1NJLCBJRl9GTE9QUFksIElGX1BGTEFTSCwgSUZfTVRELCBJRl9T RCwgSUZfVklSVElPLCBJRl9YRU4sCisgICAgSUZfTk9ORSA9IDAsCisgICAgSUZfSURFLCBJRl9T Q1NJLCBJRl9GTE9QUFksIElGX1BGTEFTSCwgSUZfTVRELCBJRl9TRCwgSUZfVklSVElPLCBJRl9Y RU4sCiAgICAgSUZfQ09VTlQKIH0gQmxvY2tJbnRlcmZhY2VUeXBlOwogCi0tIAoyLjcuNAoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=