From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54910) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e0SEH-0002r3-Gz for qemu-devel@nongnu.org; Fri, 06 Oct 2017 08:59:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e0SEE-0001VI-E0 for qemu-devel@nongnu.org; Fri, 06 Oct 2017 08:59:49 -0400 Received: from smtp.citrix.com ([66.165.176.89]:28312) by eggs.gnu.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.71) (envelope-from ) id 1e0SEE-0001Uv-5J for qemu-devel@nongnu.org; Fri, 06 Oct 2017 08:59:46 -0400 References: <1507133891-26013-1-git-send-email-ian.jackson@eu.citrix.com> From: Ross Lagerwall Message-ID: <892cb484-361b-f1c1-c294-6b5d7b5e92fb@citrix.com> Date: Fri, 6 Oct 2017 13:58:18 +0100 MIME-Version: 1.0 In-Reply-To: <1507133891-26013-1-git-send-email-ian.jackson@eu.citrix.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 0/*] xen: xen-domid-restrict improvements List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Ian Jackson , qemu-devel@nongnu.org Cc: Anthony PERARD , xen-devel@lists.xenproject.org, Juergen Gross , Stefano Stabellini On 10/04/2017 05:18 PM, Ian Jackson wrote: > (Resending this because 1. I got the CC for xen-devel wrong; 2. I got > the subject wrong: there are actually 8 patches; 3. I mangled > Anthony's name in theheaders. Sorry for the noise.) > > I have been working on trying to get qemu, when running as a Xen > device model, to _actually_ not have power equivalent to root. > > I think I have achieved this, with some limitations (which will be > discussed in my series against xen.git. > > However, there are changes to qemu needed. In particular > > * The -xen-domid-restrict option does not work properly right now. > It only restricts a small subset of the descriptors qemu has open. > I am introducing a new library call in the Xen libraries for this, > xentoolcore_restrict_all. > Hi Ian, I'm testing your QEMU and Xen patch series and found that after being restricted, QEMU fails to setup up the VGA memory properly which causes a complete stall with stdvga. With cirrus it mostly works although it seems to have reduced performance. I think it happens when the VM sets up the BAR some time after xen_restrict() has been called. The failure comes from QEMU calling xc_domain_add_to_physmap() which calls do_memory_op() and finally xencall2(). But the underlying xencall fd has been replaced with /dev/null. Here is some debug output, all of which occurs after the call to xentoolcore_restrict_all() has completed. 00:02.0 is the VGA device. pci_update_mappings_add d=0x7fee0b154000 00:03.0 1,0xf0000000+0x1000000 pci_update_mappings_add d=0x7fee0b1de000 00:02.0 0,0xf1000000+0x800000 xen_client_set_memory 0xf1000000 size 0x800000, log_dirty 1 xen: mapping vram to f1000000 - f1800000 xen: add_to_physmap MFN 80000 to PFN f1000 failed: 25 (errno: 25) pci_update_mappings_add d=0x7fee0b154000 00:03.0 0,0xc000+0x100 pci_update_mappings_add d=0x7fee0b1a4000 00:04.0 0,0xc100+0x100 pci_update_mappings_add d=0x7fee0b1a4000 00:04.0 1,0xf1800000+0x100 pci_update_mappings_add d=0x7fee0b006e00 00:01.2 4,0xc200+0x20 pci_update_mappings_add d=0x7fee0b65c000 00:01.1 4,0xc220+0x10 pci_update_mappings_add d=0x7fee0b65c000 00:01.1 4,0xc220+0x10 pci_update_mappings_add d=0x7fee0b65c000 00:01.1 4,0xc220+0x10 pci_update_mappings_add d=0x7fee0b65c000 00:01.1 4,0xc220+0x10 pci_update_mappings_add d=0x7fee0b65c000 00:01.1 4,0xc220+0x10 pci_update_mappings_add d=0x7fee0b65c000 00:01.1 4,0xc220+0x10 pci_update_mappings_add d=0x7fee0b65c000 00:01.1 4,0xc220+0x10 pci_update_mappings_add d=0x7fee0b65c000 00:01.1 4,0xc220+0x10 pci_update_mappings_add d=0x7fee0b006e00 00:01.2 4,0xc200+0x20 pci_update_mappings_add d=0x7fee0b006e00 00:01.2 4,0xc200+0x20 pci_update_mappings_add d=0x7fee0b006e00 00:01.2 4,0xc200+0x20 pci_update_mappings_add d=0x7fee0b006e00 00:01.2 4,0xc200+0x20 pci_update_mappings_add d=0x7fee0b006e00 00:01.2 4,0xc200+0x20 pci_update_mappings_add d=0x7fee0b006e00 00:01.2 4,0xc200+0x20 pci_update_mappings_add d=0x7fee0b006e00 00:01.2 4,0xc200+0x20 pci_update_mappings_add d=0x7fee0b1de000 00:02.0 0,0xf1000000+0x800000 xen_client_set_memory 0xf1000000 size 0x800000, log_dirty 1 pci_update_mappings_add d=0x7fee0b1de000 00:02.0 0,0xf1000000+0x800000 xen_client_set_memory 0xf1000000 size 0x800000, log_dirty 1 pci_update_mappings_add d=0x7fee0b1de000 00:02.0 0,0xf1000000+0x800000 xen_client_set_memory 0xf1000000 size 0x800000, log_dirty 1 pci_update_mappings_add d=0x7fee0b1de000 00:02.0 0,0xf1000000+0x800000 xen_client_set_memory 0xf1000000 size 0x800000, log_dirty 1 pci_update_mappings_add d=0x7fee0b1de000 00:02.0 0,0xf1000000+0x800000 xen_client_set_memory 0xf1000000 size 0x800000, log_dirty 1 pci_update_mappings_add d=0x7fee0b1de000 00:02.0 0,0xf1000000+0x800000 xen_client_set_memory 0xf1000000 size 0x800000, log_dirty 1 pci_update_mappings_add d=0x7fee0b1de000 00:02.0 0,0xf1000000+0x800000 xen_client_set_memory 0xf1000000 size 0x800000, log_dirty 1 pci_update_mappings_add d=0x7fee0b154000 00:03.0 0,0xc000+0x100 pci_update_mappings_add d=0x7fee0b154000 00:03.0 1,0xf0000000+0x1000000 pci_update_mappings_add d=0x7fee0b154000 00:03.0 0,0xc000+0x100 pci_update_mappings_add d=0x7fee0b154000 00:03.0 1,0xf0000000+0x1000000 pci_update_mappings_add d=0x7fee0b154000 00:03.0 0,0xc000+0x100 pci_update_mappings_add d=0x7fee0b154000 00:03.0 1,0xf0000000+0x1000000 pci_update_mappings_add d=0x7fee0b154000 00:03.0 0,0xc000+0x100 pci_update_mappings_add d=0x7fee0b154000 00:03.0 1,0xf0000000+0x1000000 pci_update_mappings_add d=0x7fee0b154000 00:03.0 0,0xc000+0x100 pci_update_mappings_add d=0x7fee0b154000 00:03.0 1,0xf0000000+0x1000000 pci_update_mappings_add d=0x7fee0b154000 00:03.0 0,0xc000+0x100 pci_update_mappings_add d=0x7fee0b154000 00:03.0 1,0xf0000000+0x1000000 pci_update_mappings_add d=0x7fee0b154000 00:03.0 0,0xc000+0x100 pci_update_mappings_add d=0x7fee0b154000 00:03.0 1,0xf0000000+0x1000000 Apart from this issue, I was able to boot up and shut down a VM, using -xen-domid-restrict, -chroot, and -runasid. There is a caveat when using -xen-domid-restrict and -chroot at the same time. The restriction happens after chrooting, so the chroot directory has to contain a valid /dev/null. This is a bit annoying and prevents the chroot being on a "nodev" mount. Regards, -- Ross Lagerwall From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ross Lagerwall Subject: Re: [PATCH v2 0/*] xen: xen-domid-restrict improvements Date: Fri, 6 Oct 2017 13:58:18 +0100 Message-ID: <892cb484-361b-f1c1-c294-6b5d7b5e92fb@citrix.com> References: <1507133891-26013-1-git-send-email-ian.jackson@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e0SEH-0002Mj-6J for xen-devel@lists.xenproject.org; Fri, 06 Oct 2017 12:59:49 +0000 In-Reply-To: <1507133891-26013-1-git-send-email-ian.jackson@eu.citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Ian Jackson , qemu-devel@nongnu.org Cc: Anthony PERARD , xen-devel@lists.xenproject.org, Stefano Stabellini , Juergen Gross List-Id: xen-devel@lists.xenproject.org T24gMTAvMDQvMjAxNyAwNToxOCBQTSwgSWFuIEphY2tzb24gd3JvdGU6Cj4gKFJlc2VuZGluZyB0 aGlzIGJlY2F1c2UgMS4gSSBnb3QgdGhlIENDIGZvciB4ZW4tZGV2ZWwgd3Jvbmc7IDIuIEkgZ290 Cj4gdGhlIHN1YmplY3Qgd3Jvbmc6IHRoZXJlIGFyZSBhY3R1YWxseSA4IHBhdGNoZXM7IDMuIEkg bWFuZ2xlZAo+IEFudGhvbnkncyBuYW1lIGluIHRoZWhlYWRlcnMuICBTb3JyeSBmb3IgdGhlIG5v aXNlLikKPiAKPiBJIGhhdmUgYmVlbiB3b3JraW5nIG9uIHRyeWluZyB0byBnZXQgcWVtdSwgd2hl biBydW5uaW5nIGFzIGEgWGVuCj4gZGV2aWNlIG1vZGVsLCB0byBfYWN0dWFsbHlfIG5vdCBoYXZl IHBvd2VyIGVxdWl2YWxlbnQgdG8gcm9vdC4KPiAKPiBJIHRoaW5rIEkgaGF2ZSBhY2hpZXZlZCB0 aGlzLCB3aXRoIHNvbWUgbGltaXRhdGlvbnMgKHdoaWNoIHdpbGwgYmUKPiBkaXNjdXNzZWQgaW4g bXkgc2VyaWVzIGFnYWluc3QgeGVuLmdpdC4KPiAKPiBIb3dldmVyLCB0aGVyZSBhcmUgY2hhbmdl cyB0byBxZW11IG5lZWRlZC4gIEluIHBhcnRpY3VsYXIKPiAKPiAgICogVGhlIC14ZW4tZG9taWQt cmVzdHJpY3Qgb3B0aW9uIGRvZXMgbm90IHdvcmsgcHJvcGVybHkgcmlnaHQgbm93Lgo+ICAgICBJ dCBvbmx5IHJlc3RyaWN0cyBhIHNtYWxsIHN1YnNldCBvZiB0aGUgZGVzY3JpcHRvcnMgcWVtdSBo YXMgb3Blbi4KPiAgICAgSSBhbSBpbnRyb2R1Y2luZyBhIG5ldyBsaWJyYXJ5IGNhbGwgaW4gdGhl IFhlbiBsaWJyYXJpZXMgZm9yIHRoaXMsCj4gICAgIHhlbnRvb2xjb3JlX3Jlc3RyaWN0X2FsbC4K PiAKCkhpIElhbiwKCkknbSB0ZXN0aW5nIHlvdXIgUUVNVSBhbmQgWGVuIHBhdGNoIHNlcmllcyBh bmQgZm91bmQgdGhhdCBhZnRlciBiZWluZyAKcmVzdHJpY3RlZCwgUUVNVSBmYWlscyB0byBzZXR1 cCB1cCB0aGUgVkdBIG1lbW9yeSBwcm9wZXJseSB3aGljaCBjYXVzZXMgCmEgY29tcGxldGUgc3Rh bGwgd2l0aCBzdGR2Z2EuIFdpdGggY2lycnVzIGl0IG1vc3RseSB3b3JrcyBhbHRob3VnaCBpdCAK c2VlbXMgdG8gaGF2ZSByZWR1Y2VkIHBlcmZvcm1hbmNlLgoKSSB0aGluayBpdCBoYXBwZW5zIHdo ZW4gdGhlIFZNIHNldHMgdXAgdGhlIEJBUiBzb21lIHRpbWUgYWZ0ZXIgCnhlbl9yZXN0cmljdCgp IGhhcyBiZWVuIGNhbGxlZC4gVGhlIGZhaWx1cmUgY29tZXMgZnJvbSBRRU1VIGNhbGxpbmcgCnhj X2RvbWFpbl9hZGRfdG9fcGh5c21hcCgpIHdoaWNoIGNhbGxzIGRvX21lbW9yeV9vcCgpIGFuZCBm aW5hbGx5IAp4ZW5jYWxsMigpLiBCdXQgdGhlIHVuZGVybHlpbmcgeGVuY2FsbCBmZCBoYXMgYmVl biByZXBsYWNlZCB3aXRoIC9kZXYvbnVsbC4KCkhlcmUgaXMgc29tZSBkZWJ1ZyBvdXRwdXQsIGFs bCBvZiB3aGljaCBvY2N1cnMgYWZ0ZXIgdGhlIGNhbGwgdG8KeGVudG9vbGNvcmVfcmVzdHJpY3Rf YWxsKCkgaGFzIGNvbXBsZXRlZC4gMDA6MDIuMCBpcyB0aGUgVkdBIGRldmljZS4KCnBjaV91cGRh dGVfbWFwcGluZ3NfYWRkIGQ9MHg3ZmVlMGIxNTQwMDAgMDA6MDMuMCAxLDB4ZjAwMDAwMDArMHgx MDAwMDAwCnBjaV91cGRhdGVfbWFwcGluZ3NfYWRkIGQ9MHg3ZmVlMGIxZGUwMDAgMDA6MDIuMCAw LDB4ZjEwMDAwMDArMHg4MDAwMDAKeGVuX2NsaWVudF9zZXRfbWVtb3J5IDB4ZjEwMDAwMDAgc2l6 ZSAweDgwMDAwMCwgbG9nX2RpcnR5IDEKeGVuOiBtYXBwaW5nIHZyYW0gdG8gZjEwMDAwMDAgLSBm MTgwMDAwMAp4ZW46IGFkZF90b19waHlzbWFwIE1GTiA4MDAwMCB0byBQRk4gZjEwMDAgZmFpbGVk OiAyNSAoZXJybm86IDI1KQpwY2lfdXBkYXRlX21hcHBpbmdzX2FkZCBkPTB4N2ZlZTBiMTU0MDAw IDAwOjAzLjAgMCwweGMwMDArMHgxMDAKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUw YjFhNDAwMCAwMDowNC4wIDAsMHhjMTAwKzB4MTAwCnBjaV91cGRhdGVfbWFwcGluZ3NfYWRkIGQ9 MHg3ZmVlMGIxYTQwMDAgMDA6MDQuMCAxLDB4ZjE4MDAwMDArMHgxMDAKcGNpX3VwZGF0ZV9tYXBw aW5nc19hZGQgZD0weDdmZWUwYjAwNmUwMCAwMDowMS4yIDQsMHhjMjAwKzB4MjAKcGNpX3VwZGF0 ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjY1YzAwMCAwMDowMS4xIDQsMHhjMjIwKzB4MTAKcGNp X3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjY1YzAwMCAwMDowMS4xIDQsMHhjMjIwKzB4 MTAKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjY1YzAwMCAwMDowMS4xIDQsMHhj MjIwKzB4MTAKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjY1YzAwMCAwMDowMS4x IDQsMHhjMjIwKzB4MTAKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjY1YzAwMCAw MDowMS4xIDQsMHhjMjIwKzB4MTAKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjY1 YzAwMCAwMDowMS4xIDQsMHhjMjIwKzB4MTAKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdm ZWUwYjY1YzAwMCAwMDowMS4xIDQsMHhjMjIwKzB4MTAKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQg ZD0weDdmZWUwYjY1YzAwMCAwMDowMS4xIDQsMHhjMjIwKzB4MTAKcGNpX3VwZGF0ZV9tYXBwaW5n c19hZGQgZD0weDdmZWUwYjAwNmUwMCAwMDowMS4yIDQsMHhjMjAwKzB4MjAKcGNpX3VwZGF0ZV9t YXBwaW5nc19hZGQgZD0weDdmZWUwYjAwNmUwMCAwMDowMS4yIDQsMHhjMjAwKzB4MjAKcGNpX3Vw ZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjAwNmUwMCAwMDowMS4yIDQsMHhjMjAwKzB4MjAK cGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjAwNmUwMCAwMDowMS4yIDQsMHhjMjAw KzB4MjAKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjAwNmUwMCAwMDowMS4yIDQs MHhjMjAwKzB4MjAKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjAwNmUwMCAwMDow MS4yIDQsMHhjMjAwKzB4MjAKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjAwNmUw MCAwMDowMS4yIDQsMHhjMjAwKzB4MjAKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUw YjFkZTAwMCAwMDowMi4wIDAsMHhmMTAwMDAwMCsweDgwMDAwMAp4ZW5fY2xpZW50X3NldF9tZW1v cnkgMHhmMTAwMDAwMCBzaXplIDB4ODAwMDAwLCBsb2dfZGlydHkgMQpwY2lfdXBkYXRlX21hcHBp bmdzX2FkZCBkPTB4N2ZlZTBiMWRlMDAwIDAwOjAyLjAgMCwweGYxMDAwMDAwKzB4ODAwMDAwCnhl bl9jbGllbnRfc2V0X21lbW9yeSAweGYxMDAwMDAwIHNpemUgMHg4MDAwMDAsIGxvZ19kaXJ0eSAx CnBjaV91cGRhdGVfbWFwcGluZ3NfYWRkIGQ9MHg3ZmVlMGIxZGUwMDAgMDA6MDIuMCAwLDB4ZjEw MDAwMDArMHg4MDAwMDAKeGVuX2NsaWVudF9zZXRfbWVtb3J5IDB4ZjEwMDAwMDAgc2l6ZSAweDgw MDAwMCwgbG9nX2RpcnR5IDEKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjFkZTAw MCAwMDowMi4wIDAsMHhmMTAwMDAwMCsweDgwMDAwMAp4ZW5fY2xpZW50X3NldF9tZW1vcnkgMHhm MTAwMDAwMCBzaXplIDB4ODAwMDAwLCBsb2dfZGlydHkgMQpwY2lfdXBkYXRlX21hcHBpbmdzX2Fk ZCBkPTB4N2ZlZTBiMWRlMDAwIDAwOjAyLjAgMCwweGYxMDAwMDAwKzB4ODAwMDAwCnhlbl9jbGll bnRfc2V0X21lbW9yeSAweGYxMDAwMDAwIHNpemUgMHg4MDAwMDAsIGxvZ19kaXJ0eSAxCnBjaV91 cGRhdGVfbWFwcGluZ3NfYWRkIGQ9MHg3ZmVlMGIxZGUwMDAgMDA6MDIuMCAwLDB4ZjEwMDAwMDAr MHg4MDAwMDAKeGVuX2NsaWVudF9zZXRfbWVtb3J5IDB4ZjEwMDAwMDAgc2l6ZSAweDgwMDAwMCwg bG9nX2RpcnR5IDEKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjFkZTAwMCAwMDow Mi4wIDAsMHhmMTAwMDAwMCsweDgwMDAwMAp4ZW5fY2xpZW50X3NldF9tZW1vcnkgMHhmMTAwMDAw MCBzaXplIDB4ODAwMDAwLCBsb2dfZGlydHkgMQpwY2lfdXBkYXRlX21hcHBpbmdzX2FkZCBkPTB4 N2ZlZTBiMTU0MDAwIDAwOjAzLjAgMCwweGMwMDArMHgxMDAKcGNpX3VwZGF0ZV9tYXBwaW5nc19h ZGQgZD0weDdmZWUwYjE1NDAwMCAwMDowMy4wIDEsMHhmMDAwMDAwMCsweDEwMDAwMDAKcGNpX3Vw ZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjE1NDAwMCAwMDowMy4wIDAsMHhjMDAwKzB4MTAw CnBjaV91cGRhdGVfbWFwcGluZ3NfYWRkIGQ9MHg3ZmVlMGIxNTQwMDAgMDA6MDMuMCAxLDB4ZjAw MDAwMDArMHgxMDAwMDAwCnBjaV91cGRhdGVfbWFwcGluZ3NfYWRkIGQ9MHg3ZmVlMGIxNTQwMDAg MDA6MDMuMCAwLDB4YzAwMCsweDEwMApwY2lfdXBkYXRlX21hcHBpbmdzX2FkZCBkPTB4N2ZlZTBi MTU0MDAwIDAwOjAzLjAgMSwweGYwMDAwMDAwKzB4MTAwMDAwMApwY2lfdXBkYXRlX21hcHBpbmdz X2FkZCBkPTB4N2ZlZTBiMTU0MDAwIDAwOjAzLjAgMCwweGMwMDArMHgxMDAKcGNpX3VwZGF0ZV9t YXBwaW5nc19hZGQgZD0weDdmZWUwYjE1NDAwMCAwMDowMy4wIDEsMHhmMDAwMDAwMCsweDEwMDAw MDAKcGNpX3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjE1NDAwMCAwMDowMy4wIDAsMHhj MDAwKzB4MTAwCnBjaV91cGRhdGVfbWFwcGluZ3NfYWRkIGQ9MHg3ZmVlMGIxNTQwMDAgMDA6MDMu MCAxLDB4ZjAwMDAwMDArMHgxMDAwMDAwCnBjaV91cGRhdGVfbWFwcGluZ3NfYWRkIGQ9MHg3ZmVl MGIxNTQwMDAgMDA6MDMuMCAwLDB4YzAwMCsweDEwMApwY2lfdXBkYXRlX21hcHBpbmdzX2FkZCBk PTB4N2ZlZTBiMTU0MDAwIDAwOjAzLjAgMSwweGYwMDAwMDAwKzB4MTAwMDAwMApwY2lfdXBkYXRl X21hcHBpbmdzX2FkZCBkPTB4N2ZlZTBiMTU0MDAwIDAwOjAzLjAgMCwweGMwMDArMHgxMDAKcGNp X3VwZGF0ZV9tYXBwaW5nc19hZGQgZD0weDdmZWUwYjE1NDAwMCAwMDowMy4wIDEsMHhmMDAwMDAw MCsweDEwMDAwMDAKCkFwYXJ0IGZyb20gdGhpcyBpc3N1ZSwgSSB3YXMgYWJsZSB0byBib290IHVw IGFuZCBzaHV0IGRvd24gYSBWTSwgdXNpbmcgCi14ZW4tZG9taWQtcmVzdHJpY3QsIC1jaHJvb3Qs IGFuZCAtcnVuYXNpZC4KClRoZXJlIGlzIGEgY2F2ZWF0IHdoZW4gdXNpbmcgLXhlbi1kb21pZC1y ZXN0cmljdCBhbmQgLWNocm9vdCBhdCB0aGUgc2FtZSAKdGltZS4gVGhlIHJlc3RyaWN0aW9uIGhh cHBlbnMgYWZ0ZXIgY2hyb290aW5nLCBzbyB0aGUgY2hyb290IGRpcmVjdG9yeSAKaGFzIHRvIGNv bnRhaW4gYSB2YWxpZCAvZGV2L251bGwuIFRoaXMgaXMgYSBiaXQgYW5ub3lpbmcgYW5kIHByZXZl bnRzIAp0aGUgY2hyb290IGJlaW5nIG9uIGEgIm5vZGV2IiBtb3VudC4KClJlZ2FyZHMsCi0tIApS b3NzIExhZ2Vyd2FsbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==