From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=none (p=none dis=none) header.from=gibson.dropbear.id.au Authentication-Results: passt.top; dkim=pass (2048-bit key; secure) header.d=gibson.dropbear.id.au header.i=@gibson.dropbear.id.au header.a=rsa-sha256 header.s=202608 header.b=gOEeCRfy; dkim-atps=neutral Received: from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3]) by passt.top (Postfix) with ESMTPS id 9CA6A5A0262 for ; Sat, 15 Aug 2026 15:31:22 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202608; t=1786800674; bh=01BG9HbycBh/wzMBYS3jiDaZIvnJYF1pweU+lPAMFDM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=gOEeCRfybvh0RCZ05h+RR2ulgdmlJMkMkhf+yaM0PDuUWIlGKq3DoKpfswocD510F L8K0AoshNh5WsZLaSUnzQ0h88hj6Eo4xcv8RL4p554cTG1MpEFZ9IifxB0Lj9TJPEi lPEIcvC8VU6Chw/UUaklwDHnN3692cLx+35iTQoYAtDVvrQOgiZe0vIyv98rOB0LE7 JE+ZL80H3wFHuukz5QXJjvzNCRZdyaOGRmpwCFvHBdddb1Fk6zUTgDNvgAMqEqQBPS SWkg+H+n4fttSCJ4riwLtc+xKfhKYBsz7Qv0hBs5uFeGfZSN02mLWs5I8QUq2ZK60l XN4bntyzE7hxA== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4hMg3Q0Rvwz4wHr; Sat, 15 Aug 2026 23:31:14 +1000 (AEST) Date: Sat, 15 Aug 2026 23:31:08 +1000 From: David Gibson To: Stefano Brivio Subject: Re: [PATCH v2] feat: Pass open files to child in pasta mode Message-ID: References: <20260731132601.422518-1-rlawrence@tamu.edu> <20260806235422.5d6d8fd3@elisabeth> <20260814234318.1696362b@elisabeth> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: base64 In-Reply-To: <20260814234318.1696362b@elisabeth> Message-ID-Hash: FZTZYP3A57V7ZDKZ27OOAYMJIE5BL2AR X-Message-ID-Hash: FZTZYP3A57V7ZDKZ27OOAYMJIE5BL2AR X-MailFrom: dgibson@gandalf.ozlabs.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: "Lawrence, Richard E" , "passt-dev@passt.top" X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: T24gRnJpLCBBdWcgMTQsIDIwMjYgYXQgMTE6NDM6MTlQTSArMDIwMCwgU3RlZmFubyBCcml2aW8g d3JvdGU6DQo+IEhpIFJpY2hhcmQsDQo+IA0KPiBPbiBGcmksIDE0IEF1ZyAyMDI2IDE4OjEyOjU2 ICswMDAwDQo+ICJMYXdyZW5jZSwgUmljaGFyZCBFIiA8cmxhd3JlbmNlQHRhbXUuZWR1PiB3cm90 ZToNCj4gDQo+ID4gSG93ZHkgU3RlZmFubywgRGF2aWQsDQo+ID4gDQo+ID4gSSBkb24ndCB1bmRl cnN0YW5kIHRoZSBwbGFuLiBBcmUgeW91IHdhaXRpbmcgb24gbWU/IEFtIEkgd2FpdGluZyBvbiB5 b3U/DQo+ID4gDQo+ID4gSSBjb3VsZCBpbXBsZW1lbnQgYW55IG9mIHRoZXNlIGlkZWFzLCBidXQg SSBkb24ndCB3aXNoIHRvIGltcGxlbWVudCAqKmFsbCoqIG9mIHRoZW0uIENhbiB3ZSByZWFjaCBh IGNvbnNlbnN1cz8NCj4gDQo+IFNvcnJ5IGZvciB0aGUgY29uZnVzaW9uIGFuZCB0aGUgbGFjayBv ZiB1cGRhdGVzLiBEYXZpZCBtZW50aW9uZW4sIGluDQo+IHRoZSBsYXRlc3Qgd2Vla2x5IGNhbGwg KHNlZSBhbHNvIGh0dHBzOi8vcGFkLnBhc3N0LnRvcC9wL3dlZWtseSksIHRoYXQNCj4gaGUgcGxh bnMgdG8gbG9vayBpbnRvIGEgd2F5IHRvIGF2b2lkIGNsb3NpbmcgZmlsZXMgd2Ugb3BlbiBhbHRv Z2V0aGVyLA0KPiBidXQgaW4gYSBtb3JlIGxpZ2h0d2VpZ2h0IHdheSB0aGFuIHRoZSBhcHByb2Fj aGVzIEkgd2FzIHN1Z2dlc3RpbmcsIHRoYXQNCj4gaXMsIGhlIHdhbnRlZCB0byBsb29rIGludG8g d2hldGhlciB3ZSBjYW4gcmVzaHVmZmxlIHRoZSBvcmRlciBvZiBzb21lDQo+IGluaXRpYWwgb3Bl cmF0aW9ucyBpbnN0ZWFkLg0KDQpSaWdodCwgc29ycnkgZm9yIHRoZSBsYWNrIG9mIHVwZGF0ZXMu ICBJIGtpbmQgb2YgaGF2ZSBhIGJ1bmNoIGdvaW5nIG9uDQpyaWdodCBub3cuDQoNCkkgc3RhcnRl ZCBsb29raW5nIGludG8gdGhpcy4gIEkgc3RpbGwgdGhpbmsgaXQncyBwb3NzaWJsZSwgYnV0IGl0 J3MNCnRyaWNraWVyIHRoYW4gSSBpbml0aWlhbGx5IHRob3VnaHQuICBUaGVuLCBpbiB0aGUgcHJv Y2VzcyBvZiBmaWd1cmluZw0Kb3V0IGhvdyB0byByZW9yZ2FuaXNlIHRoaW5ncywgSSBkaXNjb3Zl cmVkIHNvbWUgcG90ZW50aWFsbHkgbmFzdHkNCnByZWV4aXN0aW5nIGJ1Z3MuICBTbywgSSB3YXMg ZGl2ZXJ0ZWQgaW50byB3b3JraW5nIG91dCB0byBmaXggdGhvc2UuDQouLi4gYW5kIHRoYXQncyB3 aGVyZSBJJ3ZlIGdvdCBzbyBmYXIuDQoNCkkndmUgc3RpbGwgZ290IGEgYnVuY2ggZ29pbmcgb24s IHNvIEknbSBub3Qgc3VyZSB3aGVuLCBvciBpZiwgSSdsbA0KZmluaXNoIHRoaXMuICBJJ2xsIHBy b2JhYmx5IGhhYmUgYSBiZXR0ZXIgaWRlYSBpbiBhIHdlZWsuDQoNCj4gSWYgdGhhdCB3b3JrcyBv dXQsIHRoZW4gd2Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIGp1c3QgdGhlIGNvbW1hbmQgbGluZQ0K PiBwYXJ0IG9mIHlvdXIgcGF0Y2guIElmIG5vdCwgSSBndWVzcyBpdCBtaWdodCBtYWtlIHNlbnNl IHRvICphbHNvKiBsb29rDQo+IGludG8gdGhlIGFwcHJvYWNoZXMgSSBzdWdnZXN0ZWQgKGFueSBj b21tZW50cyBmcm9tIHlvdXIgc2lkZT8pIGFuZCByZWFjaA0KPiBhIGNvbmNsdXNpb24uIEJ1dCBt YXliZSB3ZSBkb24ndCBoYXZlIHRvIGdvIHRoZXJlIGF0IGFsbC4NCj4gDQo+IC0tIA0KPiBTdGVm YW5vDQo+IA0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gRnJvbTog U3RlZmFubyBCcml2aW8gPHNicml2aW9AcmVkaGF0LmNvbT4NCj4gPiBTZW50OiBUaHVyc2RheSwg QXVndXN0IDYsIDIwMjYgNDo1NCBQTQ0KPiA+IFRvOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNv bi5kcm9wYmVhci5pZC5hdT4NCj4gPiBDYzogTGF3cmVuY2UsIFJpY2hhcmQgRSA8cmxhd3JlbmNl QHRhbXUuZWR1PjsgcGFzc3QtZGV2QHBhc3N0LnRvcCA8cGFzc3QtZGV2QHBhc3N0LnRvcD4NCj4g PiBTdWJqZWN0OiBSZTogW1BBVENIIHYyXSBmZWF0OiBQYXNzIG9wZW4gZmlsZXMgdG8gY2hpbGQg aW4gcGFzdGEgbW9kZQ0KPiA+IA0KPiA+IEEgY291cGxlIG9mIGlkZWFzLCByaWdvcm91c2x5IG5v dCB0ZXN0ZWQ6IE9uIFRodSwgNiBBdWcgMjAyNiAxMzrigIoyMDrigIoyNyArMTAwMCBEYXZpZCBH aWJzb24gPGRhdmlkQOKAimdpYnNvbi7igIpkcm9wYmVhci7igIppZC7igIphdT4gd3JvdGU6ID4g T24gTW9uLCBBdWcgMDMsIDIwMjYgYXQgMDg64oCKMzQ64oCKMTlQTSArMDAwMCwgTGF3cmVuY2Us IFJpY2hhcmQgRSB3cm90ZTogPiA+IEhvd2R5IERhdmlkLCA+ID4gPg0KPiA+IFpqUWNtUVJZRnBm cHRCYW5uZXJTdGFydA0KPiA+IFRoaXMgTWVzc2FnZSBJcyBGcm9tIGFuIEV4dGVybmFsIFNlbmRl cg0KPiA+IFRoaXMgbWVzc2FnZSBjYW1lIGZyb20gb3V0c2lkZSB5b3VyIG9yZ2FuaXphdGlvbi4N Cj4gPiANCj4gPiBaalFjbVFSWUZwZnB0QmFubmVyRW5kDQo+ID4gDQo+ID4gQSBjb3VwbGUgb2Yg aWRlYXMsIHJpZ29yb3VzbHkgbm90IHRlc3RlZDoNCj4gPiANCj4gPiBPbiBUaHUsIDYgQXVnIDIw MjYgMTM6MjA6MjcgKzEwMDANCj4gPiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVh ci5pZC5hdT4gd3JvdGU6DQo+ID4gDQo+ID4gPiBPbiBNb24sIEF1ZyAwMywgMjAyNiBhdCAwODoz NDoxOVBNICswMDAwLCBMYXdyZW5jZSwgUmljaGFyZCBFIHdyb3RlOiAgDQo+ID4gPiA+IEhvd2R5 IERhdmlkLA0KPiA+ID4gPg0KPiA+ID4gPiBXaHkgZW51bWVyYXRlIGluaGVyaXRlZCBmZHM/DQo+ ID4gPiA+IOKAguKAguKAguKAgldlbGwsIEkgZmlyc3QgdHJpZWQgdXNpbmcgY2xvc2VfcmFuZ2Uo KSBmcm9tIHRoZSB0YXAgZmQgdXAgdG8NCj4gPiA+ID4gbWF4LCBhcyB5b3Ugc3VnZ2VzdGVkLCBh bmQgSSBmb3VuZCB0aGF0IGl0IHdhcyBjbG9zaW5nIGZpbGUNCj4gPiA+ID4gZGVzY3JpcHRvcnMg dGhhdCBwYXNzdCBoYWQgaXRzZWxmIG9wZW5lZCAobGlrZSB0aGUgbG9nIGZpbGUpLCB3aGljaA0K PiA+ID4gPiBpcyBvYnZpb3VzbHkgbm90IGNvcnJlY3QuICANCj4gPiA+DQo+ID4gPiBPaC4gIFJp Z2h0LiAgT2YgY291cnNlLiAgQmVjYXVzZSB0aGlzIGhhcyBtb3ZlZCBsYXRlciwgd2UndmUgbm93 DQo+ID4gPiBvcGVuZWQgYSBidW5jaCBvZiBzdHVmZiBiZWZvcmUgaXQgcnVucywgbWVhbmluZyB0 aGF0IGNsb3NpbmcNCj4gPiA+IGV2ZXJ5dGhpbmcgbm8gbG9uZ2VyIHdvcmtzLg0KPiA+ID4gIA0K PiA+ID4gPiDigILigILigILigIJJIGNvbnNpZGVyZWQgZW51bWVyYXRpbmcgYWxsIHRoZSBwb3Nz aWJsZSBmaWxlIGRlc2NyaXB0b3JzIHRoYXQNCj4gPiA+ID4gcGFzc3QgKm1pZ2h0KiBoYXZlIG9w ZW5lZCwgYW5kIHBhc3MgdGhlbSB0byBpc29sYXRlX2ZkcyBhcw0KPiA+ID4gPiBmZHNfdG9fa2Vl cDogaXQgdHVybnMgb3V0IHRoYXQgdGhlcmUgYXJlIGFyb3VuZCAxMCBvciBzbyBmaWxlDQo+ID4g PiA+IGRlc2NyaXB0b3JzIHRoYXQgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuIG9wZW5lZCBiZWZv cmUgdGhlIGNhbGwgdG8NCj4gPiA+ID4gaXNvbGF0ZV9mZHMuIEkgZGVjaWRlZCBJIGRpZG4ndCBs aWtlIHRoYXQgc3RyYXRlZ3ksIGJlY2F1c2UgaXQgd291bGQNCj4gPiA+ID4gY3JlYXRlIGEgbWFp bnRlbmFuY2UgYnVyZGVuOiAgDQo+ID4gPg0KPiA+ID4gUmlnaHQsIHRoYXQgZG9lc24ndCBzZWVt IHByYWN0aWNhbC4gIA0KPiA+IA0KPiA+IC4uLm1heWJlIHdlIGNvdWxkIG1ha2UgaXQgc2xpZ2h0 bHkgbW9yZSBwcmFjdGljYWwgYnksIGVpdGhlcjoNCj4gPiANCj4gPiAxLiBrZWVwaW5nIGFsbCB0 aGUgZmlsZXMgd2Ugb3BlbiBmb3IgY29uZmlndXJhdGlvbiAvIGxvZ2dpbmcgLyBjb250cm9sDQo+ ID4gICAgcGF0aCBwdXJwb3NlcyAoaXQncyBub3QgbWFueSBhbmQgdGhleSBhcmUgY2xlYXJseSBk b2N1bWVudGVkIGluDQo+ID4gICAgc3RydWN0IGN0eCwgdW5sZXNzIEkgbWlzc2VkIHNvbWUpIGlu IGEgc2VwYXJhdGUgc3RydWN0IGxpdmluZyBpbnNpZGUNCj4gPiAgICBjdHgsIG1heWJlIGV2ZW4g YXMgYW4gYXJyYXkgaW5kZXhlZCBieSBhbiBlbnVtLg0KPiA+IA0KPiA+ICAgIEF0IHRoYXQgcG9p bnQsIGl0IHdvdWxkIGJlIGNsZWFyIHdoYXQgdGhvc2UgZmlsZXMgYXJlLCBhbmQgaWYNCj4gPiAg ICBzb21lYm9keSBmb3JnZXRzIHRvIHVzZSB0aGF0IHN0cnVjdCBvciBhcnJheSBpbiB0aGUgZnV0 dXJlLCB0aGV5J2xsDQo+ID4gICAgc2VlIHRoZWlyIGNoYW5nZSBwcmVzdW1hYmx5IG5vdCB3b3Jr aW5nIGF0IGFsbCBhcyB3ZSdsbCBjbG9zZQ0KPiA+ICAgIHdoYXRldmVyIG5ldyBmaWxlIGRlc2Ny aXB0b3IgcmlnaHQgYXdheS4gU28gSSdtIG5vdCB0aGF0IHdvcnJpZWQgYnkNCj4gPiAgICB0aGUg bWFpbnRlbmFuY2UgYnVyZGVuIGJlY2F1c2UgaXQgbG9va3MgcmF0aGVyIGZvb2wtcHJvb2YgKHRo aXMgaXMNCj4gPiAgICByZWdhcmRsZXNzIG9mIHRoZSBzZXBhcmF0ZSBzdHJ1Y3QgLyBhcnJheSBJ J20gcHJvcG9zaW5nKQ0KPiA+IA0KPiA+IDIuIGludHJvZHVjaW5nIGEgbWFuZGF0b3J5IChvciBv cHRpb25hbCkgd3JhcHBlciBhcm91bmQgb3BlbigpLCB3aGljaA0KPiA+ICAgIHdvdWxkIG9wZW4g YSBmaWxlIGFuZCBzdG9yZSBpdHMgZGVzY3JpcHRvciBudW1iZXIgaW4gYW4gYXJyYXksIGFsb25n DQo+ID4gICAgd2l0aCBhIHdyYXBwZXIgZm9yIGNsb3NlKCkgd2hpY2ggd291bGQgY2hlY2sgdGhh dCBhcnJheSBhbmQgZHJvcCB0aGUNCj4gPiAgICBpdGVtIGlmIGl0J3MgcHJlc2VudA0KPiA+IA0K PiA+IE90aGVyd2lzZToNCj4gPiANCj4gPiA+ID4gZXZlcnkgdGltZSBzb21lb25lIHRpbmtlcnMg d2l0aCBhIGZpbGUNCj4gPiA+ID4gZGVzY3JpcHRvciBvciByZW9yZGVycyB0aGUgc3RhcnR1cCBz ZXF1ZW5jZSwgdGhleSB3b3VsZCBoYXZlIHRvDQo+ID4gPiA+IHJlbWVtYmVyIHRvIGFsc28gY2hl Y2sgdGhlIGxpc3Qgb2YgZmlsZSBkZXNjcmlwdG9ycyB0byBrZWVwLiBBbmQgaW4NCj4gPiA+ID4g cGFydGljdWxhciwgc29tZSBvZiB0aGUgZmlsZSBkZXNjcmlwdG9ycyBhcmUgbm9uLWludHVpdGl2 ZS4gTWF5YmUNCj4gPiA+ID4gbm90IGV2ZXJ5b25lIHJlYWxpemVzIHRoYXQgYSBzb2NrZXQgY291 bnRzIGEgZmlsZSBkZXNjcmlwdG9yLiBXaGF0DQo+ID4gPiA+IGlmIHRoZXJlJ3MgYSBidWcgaW4g c29tZW9uZSdzIG5ldyBmZWF0dXJlIHdoZXJlIHNvY2tldHMgYXJlIGp1c3QNCj4gPiA+ID4gZGlz YXBwZWFyaW5nIHdpdGhvdXQgYSB0cmFjZT8gSSB3b3VsZCBoYXRlIHRvIHdhc3RlIHNvbWVvbmUn cyB0aW1lDQo+ID4gPiA+IGNoYXNpbmcgYSBzdWJ0bGUgYnVnIGxpa2UgdGhhdC4gU28sIEkgZGVj aWRlZCB0aGF0IGVudW1lcmF0aW5nDQo+ID4gPiA+IGZkc190b19jbG9zZSBhdCBydW50aW1lIHRp bWUgd291bGQgYmUgbGVzcyBvZiBhIG1haW50ZW5hbmNlIGJ1cmRlbg0KPiA+ID4gPiB0aGFuIGVu dW1lcmF0aW5nIGZkc190b19rZWVwIGluIGNvZGUuICANCj4gPiA+DQo+ID4gPiAgDQo+ID4gPiA+ IOKAguKAguKAguKAgkkgYWxzbyBjb25zaWRlcmVkIHJlb3JkZXJpbmcgdGhlIHN0YXJ0dXAgc28g dGhhdCBmb3JraW5nIGhhcHBlbnMNCj4gPiA+ID4gYmVmb3JlIG9wZW5pbmcgYW55IGZpbGVzLCBz byBpc29sYXRlIGZkcyBjYW4gcnVuIHdpdGggb25seSB0aGUgdGFwDQo+ID4gPiA+IGZkIGFzIGl0 cyBleGNsdXNpb24gbGlzdCwgYnV0IEkgZGlkbid0IHNlZSBob3cgdG8gbWFrZSB0aGF0IGNoYW5n ZQ0KPiA+ID4gPiB3aXRob3V0IHNpZ25pZmljYW50IHJlZmFjdG9yaW5nLiBJdCBtaWdodCBlbmQg dXAgYmVpbmcgbmVjZXNzYXJ5LA0KPiA+ID4gPiBidXQgSSBjYW4ndCBtYWtlIHRoYXQgZGVjaXNp b24gb24gbXkgb3duLiBJIGRvbid0IHVuZGVyc3RhbmQgdGhlDQo+ID4gPiA+IGNvZGUgd2VsbCBl bm91Z2guIEludGVyZXN0ZWQgaW4gdGFsa2luZyB0aGF0IHRocm91Z2g/ICANCj4gPiA+DQo+ID4g PiBGYWlyIGVub3VnaC4gIE15IGJlc3QgZ3Vlc3MgaXMgdGhhdCB0aGlzIHdvdWxkIGJlIHRoZSBi ZXN0IGFwcHJvYWNoLA0KPiA+ID4gYnV0IGFzIHlvdSBzYXkgaXQgbmVlZHMgcHJldHR5IGluIGRl cHRoIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUuDQo+ID4gPiBBbmQsIGFzIHlvdSd2ZSBzZWVu IEkndmUgbm93IGd1ZXNzZWQgd3Jvbmcgc2V2ZXJhbCB0aW1lcyBhYm91dCB0aGUNCj4gPiA+IGJl c3Qgd2F5IHRvIGFwcHJvYWNoIHRoaW5ncy4NCj4gPiA+DQo+ID4gPiBMZXQgbWUgaGF2ZSBhIGxv b2sgaW50byB0aGlzIGFuZCBzZWUgaWYgSSBjYW4gY29tZSB1cCB3aXRoIHNvbWV0aGluZw0KPiA+ ID4gdGhhdCBhY3R1YWxseSB3b3Jrcy4gIA0KPiA+IA0KPiA+IC4uLmlmIHRoaXMgaXMgYmVjb21p bmcgdG9vIGNvbXBsaWNhdGVkLCBJIHdvdWxkIGFsbW9zdCBzdWdnZXN0IGFkZGluZyBhDQo+ID4g Y29tbWFuZCBsaW5lIG9wdGlvbiB0byBrZWVwIGFsbCBmaWxlcyBvcGVuICpvbmx5KiBpbiB0aGUg Y2FzZSB3aGVyZQ0KPiA+IHBhc3RhIHNwYXducyBhIGNvbW1hbmQuIEknbSBub3QgZW50aHVzaWFz dGljIGFib3V0IGl0LCBidXQgZ2l2ZW4gdGhlDQo+ID4gY29tcGxleGl0eSB3ZSByaXNrIGludHJv ZHVjaW5nIG90aGVyd2lzZSwgSSB3b3VsZG4ndCBmaW5kIGl0IG91dHJhZ2VvdXMNCj4gPiBlaXRo ZXIuDQo+ID4gDQo+ID4gPiA+IEkgZG9uJ3QgdW5kZXJzdGFuZCB5b3VyIGNvbW1lbnQgYWJvdXQg Y29uZl90YXBfZmQgYmVjb21pbmcNCj4gPiA+ID4gc3RhdGljLiBNeSBpbXBsZW1lbnRhdGlvbiBw YXJzZXMgLUYgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgb3RoZXINCj4gPiA+ID4gYXJndW1lbnRz IChub3QgZWFybHkgYW55bW9yZSkuIERpZCB5b3UgbWVhbiB0aGF0IHlvdSB3b3VsZCBpbmxpbmUN Cj4gPiA+ID4gdGhlIHN0cmluZyB0byBpbnQgY29udmVyc2lvbiBpbiBjb25mKCk/IFRoYXQgc2Vl bXMgcmVhc29uYWJsZS4gSQ0KPiA+ID4gPiBqdXN0IGZlbHQgdGhhdCBjb25mX3RhcF9mZCB3YXMg b3ZlcmFsbCB0b28gY29tcGxleCB0byBpbmxpbmUgaW4gaXRzDQo+ID4gPiA+IGN1cnJlbnQgZm9y bS4gIA0KPiA+ID4NCj4gPiA+IEkganVzdCBtZWFudCB0aGF0IHNpbmNlIGl0IGlzIG5vdyBvbmx5 IHVzZWQgaW4gY29uZi5jLCBpdCBjYW4gYmVjb21lDQo+ID4gPiBsb2NhbCB0byB0aGF0IG1vZHVs ZSwgYSBzdGF0aWMgZnVuY3Rpb24gaW4gQyB0ZXJtaW5vbG9neS4NCj4gPiA+ICANCj4gPiA+ID4g V2hpbGUgcmVsb2NhdGluZyB0YXAgZmQgdG8gMysgY291bGQgZWFzaWx5IGhhcHBlbiBsYXRlciwg SSBzdGlsbA0KPiA+ID4gPiBkb24ndCB0aGluayBpdCBzaG91bGQgaGFwcGVuIGR1cmluZyBpc29s YXRpb24sIGJlY2F1c2UgaXQgYWN0dWFsbHkNCj4gPiA+ID4gY29uY2VwdHVhbGx5IGhhcyBub3Ro aW5nIHRvIGRvIHdpdGggaXNvbGF0aW9uLiBJdCdzIGFib3V0IGF2b2lkaW5nIGENCj4gPiA+ID4g Y29ybmVyIGNhc2UgdGhhdCB3b3VsZCBjYXVzZSB0YXAgZGV2aWNlIGNoYXR0ZXIgYWNjaWRlbnRh bGx5IGJlaW5nDQo+ID4gPiA+IHByaW50ZWQgdG8gc3RkIGVyciBvciBzb21ldGhpbmcgbGlrZSB0 aGF0LiBJc29sYXRpb24gc2hvdWxkIGJlDQo+ID4gPiA+IGZvY3VzZWQgb24gY2xvc2luZyB1bnVz ZWQgZmRzLCBub3Qgb24gbWFuYWdpbmcgZmRzIHRoYXQgYXJlIGluDQo+ID4gPiA+IHVzZS4gUGVy aGFwcyB3ZSBjb3VsZCByZWxvY2F0ZSB0aGUgdGFwIGZkIHRvIDMrIGluIG1haW4sIGFyb3VuZCB0 aGUNCj4gPiA+ID4gc2FtZSB0aW1lIHRoYXQgd2UgYXJlIHBvcHVsYXRpbmcgMOKAlDIsIGZvciBj bGFyaXR5IChzaW5jZSB0aG9zZSB0d28NCj4gPiA+ID4gc3RlcHMgbmVlZCB0byBjb29yZGluYXRl KS4NCj4gPiA+ID4NCj4gPiA+ID4gSSB3YXMgbm90IGF3YXJlIHRoYXQgZHluYW1pYyBtZW1vcnkg d291bGQgYmUgb2ZmIHRoZSB0YWJsZS4gTXkgbWFpbg0KPiA+ID4gPiByZWFzb24gZm9yIGRvaW5n IGl0IHRoYXQgd2F5IGlzIGJlY2F1c2UgSSBkaWRuJ3Qgd2FudCBhIHZlcnkgbGFyZ2UNCj4gPiA+ ID4gYXJyYXkgKG1heCBmZHMpIHRvIGJlIGFsd2F5cyBpbiBtZW1vcnkgZXZlbiB0aG91Z2ggbW9z dCBvZiB0aGUgdGltZQ0KPiA+ID4gPiBpdCB3b3VsZCBiZSB1bnVzZWQuIEkgd2lsbCBoYXZlIHRv IHJlLXRoaW5rIHRoZSBzdHJhdGVneS4gTWF5YmUNCj4gPiA+ID4gdGhlcmUgaXMgYW5vdGhlciB3 YXkgdG8gYXZvaWQgYSBsYXJnZSB1bnVzZWQgYXJyYXkuICANCj4gPiA+DQo+ID4gPiBUaGF0IGFy cmF5IGlzbid0IHBhcnRpY3VsYXJseSBsYXJnZSBjb21wYXJlZCB0byBtYW55IG90aGVycyB3ZSBh bHJlYWR5DQo+ID4gPiBoYXZlLiAgQW5kIGV2ZW4gdGhvc2UgYXJlIHVzdWFsbHkgb25seSBhIHNt YWxsIGZyYWN0aW9uIG9mIG91ciB0b3RhbA0KPiA+ID4gZWZmZWN0aXZlIG1lbW9yeSB1c2FnZSAt IG1vc3Qgb2YgdGhhdCBjb21lcyBpbiB0aGUgZm9ybSBvZiBrZXJuZWwNCj4gPiA+IG1lbW9yeSBm b3Igc29ja2V0cyBhbmQgYnVmZmVycy4gIEluIHByaW5jaXBsZSB3ZSBjb3VsZCBhbHNvIHVzZQ0K PiA+ID4gTUFEVl9ET05UTkVFRCB0byBkaXNjYXJkIHRoZSBhbGxvY2F0ZWQgbWVtb3J5IG9uY2Ug d2UncmUgZG9uZSB3aXRoIGl0Lg0KPiA+ID4gIA0KPiA+ID4gPiBUaGFuayB5b3UgZm9yIHBvaW50 aW5nIG91dCB0aGUgZmxhdyBpbiBteSBsb2dpYyByZWdhcmRpbmcgdGhlIG1heA0KPiA+ID4gPiBv cGVuIGZpbGVzIGxpbWl0LiBJIHdpbGwgaGF2ZSB0byB0aGluayBoYXJkZXIgYWJvdXQgYSBjb3Jy ZWN0IHdheSB0bw0KPiA+ID4gPiBjbG9zZSBmZHMuDQo+ID4gPiA+DQo+ID4gPiA+IEkgZG8gbm90 IGJlbGlldmUgdGhhdCBteSBwYXRjaCBkaXNhYmxlcyB5b3VyIGZlYXR1cmUgb2YgcG9wdWxhdGlu Zw0KPiA+ID4gPiBmZHMgMOKAlDIgd2l0aCBkZXZudWxsLiBUaGF0IGhhcHBlbnMgaW4gbWFpbiwg bm90IGluIGlzb2xhdGUgZmRzLiBNeQ0KPiA+ID4gPiBpbXBsZW1lbnRhdGlvbiBvZiBlbnVtZXJh dGluZyB0aGUgaW5oZXJpdGVkIGZkcyBleGNsdWRlcyAw4oCUMi4gIA0KPiA+ID4NCj4gPiA+IFlv dSdyZSByaWdodCwgc29ycnkuICBJIGdvdCBtdWRkbGVkIGJlY2F1c2UgaXQgd2FzIGluc2lkZQ0K PiA+ID4gaXNvbGF0ZV9mZHMoKSBpbiBhIGJ1bmNoIG9mIGRyYWZ0IHZlcnNpb25zIG9mIG15IHBh dGNoZXMgKEkgZXZlbnR1YWxseQ0KPiA+ID4gcmVhbGlzZWQgdGhhdCB3b3VsZG4ndCBxdWl0ZSB3 b3JrKS4NCj4gPiA+ICANCj4gPiA+ID4NCj4gPiA+ID4gSSBob3BlIHRvIGhlYXIgZnJvbSB5b3Ug YWdhaW4gc29vbg0KPiA+ID4gPiBSaWNoYXJkDQo+ID4gPiA+DQo+ID4gPiA+IFBTLiBJbiBjYXNl IGFueW9uZSBlbHNlIHdobydzIHJlYWRpbmcgYWxvbmcgaGFzIGNvbmNlcm5zIGFib3V0IHRoZQ0K PiA+ID4gPiBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaGl0IGNhdXNlZCBieSBhYmFuZG9uaW5nIGNs b3NlX3JhbmdlKCksIEkgaGF2ZQ0KPiA+ID4gPiBhbiBhcmd1bWVudCBwcmVwYXJlZCB0byBleHBs YWluIHdoeSB0aGF0IGlzIG5vdCBhIHNlcmlvdXMgY29uY2Vybi4gIA0KPiA+ID4NCj4gPiA+IFNv LCBmd2l3LCB0aGUgY29uY2VybiBpc24ndCB0aGUgY29zdCBvZiBjbG9zZSgpIG9uIHRoZSBhY3R1 YWxseSBvcGVuDQo+ID4gPiBmaWxlcyAtIGFzIGEgb25lIHRpbWUgY29zZSB0aGF0IHdpbGwgZ2Vu ZXJhbGx5IGJlIHRyaXZpYWwuICBUaGUgY29uZXJuDQo+ID4gPiBpcyBkaXNjb3ZlcmluZyB0aGUg b3BlbiBmZHM6IDJeMzEgY2xvc2UoKXMgb3Igb3RoZXIgc3lzY2FsbHMgdG8NCj4gPiA+IGRpc2Nv dmVyIGlmIHRoZXJlJ3MgYW4gZmQgdGhlcmUgX3dvdWxkXyBiZSB0b28gbXVjaC4gIFVzaW5nDQo+ ID4gPiAvcHJvYy9zZWxmL2ZkIGlzIGFuIGludGVyZXN0aW5nIGFwcHJvYWNoLiAgSXQncyBub3Qg cG9ydGFibGUsIGJ1dCB0aGVuDQo+ID4gPiBuZWl0aGVyIGlzIGNsb3NlX3JhbmdlKCkgKGFsdGhv dWdoIEZyZWVCU0QgZG9lcyBoYXZlIGNsb3NlX3JhbmdlKCkNCj4gPiA+IGFwcGFyZW50bHkpLiAg V29ya2luZyBvdXQgaG93IHRvIHNpemUgdGhpbmdzIGlzIHRoZSB0cmlja3kgYml0IHdpdGgNCj4g PiA+IHRoZSAvcHJvYy9zZWxmL2ZkIGFwcHJvYWNoLCB0aG91Z2guDQo+ID4gPg0KPiA+ID4gWy4u Ll0gIA0KPiA+IA0KPiA+IC0tDQo+ID4gU3RlZmFubw0KPiA+IA0KPiA+IA0KPiANCg0KLS0gDQpE YXZpZCBHaWJzb24gKGhlIG9yIHRoZXkpCXwgSSdsbCBoYXZlIG15IG11c2ljIGJhcm9xdWUsIGFu ZCBteSBjb2RlDQpkYXZpZCBBVCBnaWJzb24uZHJvcGJlYXIuaWQuYXUJfCBtaW5pbWFsaXN0LCB0 aGFuayB5b3UsIG5vdCB0aGUgb3RoZXIgd2F5DQoJCQkJfCBhcm91bmQuDQpodHRwOi8vd3d3Lm96 bGFicy5vcmcvfmRnaWJzb24NCg==