Re: [Numpy-discussion] Re: Better compatibility of the Python scientific/data stack with fast Python interpreters

PIERRE AUGIER <[email protected]> Wed, 30 Apr 2025 14:08:36 +0200 (CEST)
Newsgroups gmane.comp.python.hpy,gmane.comp.python.numeric.general,gmane.comp.python.pypy
Message-ID <1219370444.318043.1746014916960.JavaMail.zimbra@univ-grenoble-alpes.fr>
DQotLS0tLSBNYWlsIG9yaWdpbmFsIC0tLS0tDQo+IERlOiAiUmFsZiBHb21tZXJzIHZpYSBOdW1Q
eS1EaXNjdXNzaW9uIiA8bnVtcHktZGlzY3Vzc2lvbkBweXRob24ub3JnPg0KPiDDgDogIkRpc2N1
c3Npb24gb2YgTnVtZXJpY2FsIFB5dGhvbiIgPG51bXB5LWRpc2N1c3Npb25AcHl0aG9uLm9yZz4N
Cj4gQ2M6ICJocHktZGV2IiA8aHB5LWRldkBweXRob24ub3JnPiwgInB5cHktZGV2IiA8cHlweS1k
ZXZAcHl0aG9uLm9yZz4sICJyYWxmIGdvbW1lcnMiIDxyYWxmLmdvbW1lcnNAZ21haWwuY29tPg0K
PiBFbnZvecOpOiBNZXJjcmVkaSAzMCBBdnJpbCAyMDI1IDA3OjMyOjQ0DQo+IE9iamV0OiBbTnVt
cHktZGlzY3Vzc2lvbl0gUmU6IEJldHRlciBjb21wYXRpYmlsaXR5IG9mIHRoZSBQeXRob24gc2Np
ZW50aWZpYy9kYXRhIHN0YWNrIHdpdGggZmFzdCBQeXRob24gaW50ZXJwcmV0ZXJzDQoNCj4gT24g
VHVlLCBBcHIgMjksIDIwMjUgYXQgMTE6MjQgQU0gUElFUlJFIEFVR0lFUiA8IFsNCj4gbWFpbHRv
OnBpZXJyZS5hdWdpZXJAdW5pdi1ncmVub2JsZS1hbHBlcy5mciB8DQo+IHBpZXJyZS5hdWdpZXJA
dW5pdi1ncmVub2JsZS1hbHBlcy5mciBdID4gd3JvdGU6DQo+IA0KPiANCj4gRGVhciBOdW1weSBj
b21tdW5pdHkgbWVtYmVycyBhbmQgTnVtcHkgZGV2ZWxvcGVycywNCj4gDQo+IFRoaXMgZW1haWwg
aXMgdG8gZ2V0IHRoZSBwb2ludHMgb2YgdmlldyBvZiB0aGUgTnVtcHkgY29tbXVuaXR5IG1lbWJl
cnMgYW5kDQo+IGRldmVsb3BlcnMgYWJvdXQgYSBzdWJqZWN0IHRoYXQgSSBmaW5kIHZlcnkgaW1w
b3J0YW50LiBJJ20gZ29pbmcgdG8gaW50cm9kdWNlDQo+IGl0IGp1c3QgaW4gZmV3IGxpbmVzIHNv
IEkgd3JpdGUgZmV3IHN0YXRlbWVudHMgd2l0aG91dCBiYWNraW5nIHRoZW0gd2l0aCBwcm9wZXIN
Cj4gYXJndW1lbnRzIGFuZCB3aXRob3V0IGdpdmluZyBsaW5rcyBhbmQgd29yZCBkZWZpbml0aW9u
cy4gSSBhc3N1bWUgdGhhdCBtb3N0DQo+IHBlb3BsZSByZWdpc3RlcmVkIHRvIHRoZSBudW1weS1k
aXNjdXNzaW9uIGxpc3QgYXJlIGF0IGxlYXN0IGZhbWlsaWFyIHRvIHRoZQ0KPiBzdWJqZWN0Lg0K
PiANCj4gVGhhbmtzIGZvciB0aGlua2luZyBhYm91dCB0aGlzIFBpZXJyZS4NCj4gDQoNClRoYW5r
cyBSYWxmIGZvciB5b3VyIGFuc3dlci4gRXZlbiBpZiBpdCBpcyBub3QgdmVyeSBwb3NpdGl2ZSwg
aXQgaXQgVkVSWSBpbnRlcmVzdGluZyENCg0KPiBJIHRoaW5rIGdldHRpbmcgcHJvcGVyIGNvbXBh
dGliaWxpdHkgb2YgdGhlIFB5dGhvbiBzY2llbnRpZmljL2RhdGEgc3RhY2sgd2l0aA0KPiBmYXN0
IFB5dGhvbiBpbnRlcnByZXRlcnMgaXMgdmVyeSBpbXBvcnRhbnQgZm9yIHRoZSBsb25nLXRlcm0g
ZnV0dXJlIG9mIFB5dGhvbg0KPiBmb3Igc2NpZW5jZSBhbmQgZGF0YS4NCj4gDQo+IEknbSBub3Qg
c3VyZSBpdCBpcywgaXQgd291bGRuJ3QgcmFuayBoaWdoIG9uIG15IHdpc2ggbGlzdC4gUHlQeSBp
cyBuZWFyaW5nIGl0cw0KPiBlbmQtb2YtbGlmZSwgYW5kIEdyYWFsUHkgaXMgcmVhbGx5IG9ubHkg
Zm9yIEphdmEgZGV2cyBpdCBzZWVtcyAtIEkndmUgbmV2ZXINCj4gc2VlbiBpdCBpbiB0aGUgcmVh
bCB3b3JsZC4gDQoNCi0gUHlQeSBhbmQgR3JhYWxQeSBhcmUgbm90IHVzZWQgYSBsb3QgYmVjYXVz
ZSB0aGUgUHl0aG9uIGVjb3N5c3RlbSBpcyBoaWdobHkgaW5jb21wYXRpYmxlIHdpdGggdGhlbSBz
aW5jZSBpdCBpcyBiYXNlZCBvbiB0aGUgQ1B5dGhvbiBDIEFQSSwgd2hpY2ggYXNzdW1lcyBpbiBw
YXJ0aWN1bGFyIHJlZmVyZW5jZSBjb3VudGluZy4gVGhpcyBpcyByZWFsbHkgYSBjaGlja2VuIGFu
ZCBlZ2cgcHJvYmxlbS4gV2l0aCBhIGJldHRlciBlY29zeXN0ZW0sIHdlIGNhbiBhbnRpY2lwYXRl
IGEgc3Ryb25nIGluY3JlYXNlIG9mIFB5UHkgYW5kIEdyYWFsUHkgdXNhZ2UuDQoNCi0gSSdtIG5v
dCBhd2FyZSB0aGF0IFB5UHkgaXMgbmVhcmluZyBpdHMgZW5kLW9mLWxpZmUuIEl0IHdvdWxkIHJl
YWxseSBiZSBhIHNoYW1lIGZvciBQeXRob24gdG8gbG9zZSB0aGlzIHByb2plY3QuDQoNCi0gR3Jh
YWxQeSBpcyBub3QgYXQgYWxsIG9ubHkgZm9yIEphdmEgZGV2cy4gSXQgY2FuIGJlIHVzZWQgYnkg
ZXZlcnkgUHl0aG9uIHVzZXJzLiBJdCBpcyBqdXN0IGEgeW91bmcgcHJvamVjdCBhbmQgaXRzIG1h
aW4gaXNzdWUgZm9yIHVzYWJpbGl0eSBpcyB0aGUgbGFjayBvZiBzcGVjaWZpYyB3aGVlbHMuIE51
bXB5IGltcGxlbWVudGVkIHdpdGggSFB5IHdvdWxkIGZpeCB0aGF0LiBIb3dldmVyLCBKYXZhIGRl
dnMgY2FuIGFsc28gYmUgUHl0aG9uIGFuZCBOdW1weSB1c2VycyBhbmQgZ2V0dGluZyBOdW1weSBm
dWxseSBjb21wYXRpYmxlIHdpdGggR3JhYWxQeSB3b3VsZCBiZSB2ZXJ5IGdvb2QgZm9yIGFwcGxp
Y2F0aW9ucyB1c2luZyBKYXZhIGFuZCBQeXRob24uDQoNCj4gV2l0aCBDUHl0aG9uIHBlcmZvcm1h
bmNlIGJlaW5nIHdvcmtlZCBoYXJkIG9uLCB0aGUgcGVyZm9ybWFuY2UgZ2FwIGlzIHNocmlua2lu
ZyBldmVyeSB5ZWFyLg0KDQpJIGRvbid0IHRoaW5rIHRoZSB3b3JkICJzaHJpbmtpbmciIGlzIHZl
cnkgYWRhcHRlZCA6LSkgISBFdmVuIG9uIHB5cGVyZm9ybWFuY2UgKHdoaWNoIGlzIGEgc2V0IG9m
IGJlbmNobWFya3MgZGVzaWduZWQgZm9yIENQeXRob24gZGV2ZWxvcG1lbnQpLCBQeVB5IGFuZCBH
cmFhbFB5IGFyZSBzdGlsbCB0eXBpY2FsbHkgNCB0byA1IHRpbWVzIGZhc3RlciB0aGFuIENQeXRo
b24uIEZvciBwdXJlIFB5dGhvbiBDUFUgYm91bmRlZCBjYXNlcywgaXQgaXMgbW9yZSBvZiB0aGUg
b3JkZXIgb2YgMjAgdGltZXMgZmFzdGVyLCB3aGljaCBpcyB0eXBpY2FsbHkgY29tcGFyYWJsZSB3
aXRoIHdoYXQgb25lIGdldHMgd2l0aCBOb2RlSlMuDQoNClVuZm9ydHVuYXRlbHksIHRoZSBGYXN0
ZXIgQ1B5dGhvbiBwcm9qZWN0IGlzIGdldHRpbmcgc2xvd2x5IGFuZCBoYXMgYSB2ZXJ5IGhhcmQg
dGltZSB0byBnZXQgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLiBPbmUgY2Fu
IGhhdmUgYSBsb29rIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0ZXItY3B5dGhvbi9iZW5jaG1h
cmtpbmctcHVibGljLiBJdCB3b3VsZCBiZSBhIGdyZWF0IGFjaGlldmVtZW50IGlmIENQeXRob24g
My4xNCB3aXRoIGl0cyBKSVQgY2FuIGJlIDEuNSBmYXN0ZXIgdGhhbiBDUHl0aG9uIDMuMTAgKG1l
YXN1cmVkIHdpdGggcHlwZXJmb3JtYW5jZSwgYWdhaW4gY29tcGFyZWQgdG8gdHlwaWNhbGx5IDQg
dG8gNSB0aW1lcyBmYXN0ZXIgd2l0aCBQeVB5IGFuZCBHcmFhbFB5KS4NCg0KVGhlIGNvbnN0cmFp
bnMgb24gQ1B5dGhvbiAoaW4gcGFydGljdWxhciByZWxhdGVkIHRvIHRoZSBDUHl0aG9uIEMgQVBJ
KSBhcmUgc28gc3Ryb25nIHRoYXQgZm9yIG1vc3QgY2FzZXMgdGhlIEZhc3RlciBDUHl0aG9uIHBy
b2plY3Qgd29uJ3QgYmUgYWJsZSB0byByZWFjaCB3aGF0IGNhbiBiZSBvYnRhaW5lZCB3aXRoIGZh
c3QgUHl0aG9uIGltcGxlbWVudGF0aW9ucyB1c2luZyBhZHZhbmNlZCBtZXRob2RzIGFuZCBhbGdv
cml0aG1zLiBBcyBsb25nIGFzIHRoZSBDUHl0aG9uIEMgQVBJIGFzc3VtZXMgcmVmZXJlbmNlIGNv
dW50aW5nIChhbmQgb3RoZXIgaW1wbGVtZW50YXRpb24gZGV0YWlscyBiYWQgZm9yIHBlcmZvcm1h
bmNlKSwgQ1B5dGhvbiBwZXJmb3JtYW5jZSBjYW5ub3QgcmVhY2hlZCB3aGF0IGNhbiBiZSBvYnRh
aW5lZCB3aXRoIFB5UHksIEdyYWFsUHkgb3IgTm9kZUpTLg0KDQpJZiBDUHl0aG9uIGNoYW5nZXMg
dG9vIG11Y2ggaXRzIGludGVybmFscywgaXQgd291bGQgbmVlZCBhbiBlbXVsYXRpb24gbGF5ZXIg
bGlrZSBQeVB5J3MgY3B5ZXh0LCBhbmQgdGhlbiBleHRlbnNpb25zIHdvdWxkIGJlY29tZSBzbG93
ZXIsIHdoaWNoIGlzIG9mIGNvdXJzZSBub3QgYWNjZXB0YWJsZS4NCg0KPiBNb3JlIGltcG9ydGFu
dGx5LCBub25lIG9mIHRoZXNlIGVmZm9ydHMgKGluY2x1ZGluZyB0aGUgImZhc3RlciBDUHl0aG9u
Ig0KPiBwcm9qZWN0KSwgc2VlbSBjcml0aWNhbCB0byBudW1lcmljYWwvc2NpZW50aWZpYyB1c2Vy
cy4gV2UncmUgc3RpbGwgdGFsa2luZw0KPiBhYm91dCBwdXJlIFB5dGhvbiBjb2RlIHRoYXQgZ2V0
cyBtYXliZSB1cCB0byA1eCBmYXN0ZXIsIHdoaWxlIHRoZSBnYWlucyBmcm9tDQo+IGRvaW5nIHRo
aW5ncyBpbiBjb21waWxlZCBsYW5ndWFnZXMgYXJlIGEgbG90IGhpZ2hlci4gDQoNCkZvciBudW1l
cmljYWwga2VybmVscywgc3BlY2lhbGl6ZWQgc3RhdGljIGxhbmd1YWdlcyBhcmUgY2xlYXJseSBu
ZWVkZWQsIGJ1dCBmb3IgZ2xvYmFsIG9yZ2FuaXNhdGlvbiBhbmQgb3JjaGVzdHJhdGlvbiwgUHlQ
eSBhbmQgR3JhYWxQeSBhcmUgcmVhbGx5IHZlcnkgZWZmaWNpZW50IChJIGd1ZXNzIGluIG1vc3Qg
Y2FzZXMgZWZmaWNpZW50IGVub3VnaCkuDQoNCkZvciBwdXJlIFB5dGhvbiBjb2RlIGFuZCBjb21w
YXJlZCB0byBDUHl0aG9uLCB0aGUgZmFjdG9yIGlzIG5vdCA1eCBidXQgbW9yZSAxMHggb3IgMjB4
Lg0KDQo+IFNvIHRoZSBiZW5lZml0cyBhcmUgbW9yZQ0KPiBpbXBvcnRhbnQgZm9yIHNtYWxsIHBh
Y2thZ2VzIGlmIGl0IG1vdmVzIHRoZSB0aHJlc2hvbGQgYXQgd2hpY2ggaXQgYmVjb21lcw0KPiBu
ZWNlc3NhcnkgZm9yIHRoZW0gdG8gd3JpdGUgemVybyBleHRlbnNpb24gbW9kdWxlcy4gRm9yIGNv
cmUgbGlicmFyaWVzIGxpa2UNCj4gTnVtUHksIHB1cmUgUHl0aG9uIHBlcmZvcm1hbmNlIGlzbid0
IHN1cGVyIGNyaXRpY2FsLg0KDQpGb3IgbGlicmFyaWVzIGxpa2UgTnVtUHksIGl0IGlzIG5vdC4g
QnV0IGZvciB1c2VycyBvZiB0aGVzZSBsaWJyYXJpZXMsIGl0IGlzLiBPciBhdCBsZWFzdCBnZXR0
aW5nIHRoZSBwb3NzaWJpbGl0eSB0byB1c2UgZmFzdCBQeXRob24gKHR5cGljYWxseSBhcyBmYXN0
IGFzIEphdmFzY3JpcHQpIHdvdWxkIGNoYW5nZSB3aGF0IHdlIGNhbiBkbyB3aXRoIFB5dGhvbiBh
bmQgd2hhdCBjYW4gYmUgY29kZWQgaW4gUHl0aG9uLg0KDQpGb3IgZXhhbXBsZSwgY3VycmVudGx5
LCBpdCBpcyBub3QgZG9hYmxlIHRvIHVzZSBhIGxvdCBvZiBzbWFsbCBQeXRob24gb2JqZWN0cyBp
biBwZXJmb3JtYW5jZSBjcml0aWNhbCBjb2RlIHNvIG5pY2UgT09QIFB5dGhvbiBjYW5ub3QgYmUg
dXNlZC4gV2l0aCBhbHRlcm5hdGl2ZSBmYXN0IFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMgbW9yZSB1
c2FibGUgd2l0aCBhbiBlY29zeXN0ZW0gdXNpbmcgSFB5IGFuZCB1bml2ZXJzYWwgd2hlZWxzLCBp
dCB3b3VsZCBiZWNvbWUgcG9zc2libGUuDQoNCkkgcmVtZW1iZXIgZHVyaW5nIGEgUHl0aG9uIHRy
YWluaW5nIGEgcGVyc29uIChpdCB3YXMgYSBnb29kIEMrKyBkZXZlbG9wZXIpIHRyeWluZyB0byB3
cml0ZSBzb21ldGhpbmcgZG9pbmcgcmF5IHRyYWNpbmcgd2l0aCBPT1AgYW5kIE51bXB5LiBJdCB3
YXMgc3VwZXIgc2xvdyB3aXRoIENQeXRob24gc28gSSB0b2xkIGhpbSB0byB0cnkgaW4gcHVyZSBQ
eXRob24gd2l0aCBQeVB5IChpdCB3YXMganVzdCBhIGdhbWUgdG8gbGVhcm4gc28gd2h5IG5vdCku
IEhlIHNvb24gZ290IGEgcHJvdG90eXBlIGFuZCB3YXMgcXVpdGUgaW1wcmVzc2VkIHdpdGggdGhl
IHNwZWVkLiBUaGVuIHRoZXJlIHdhcyBzb21ldGhpbmcgZWxzZSBpbiB0aGUgY29kZSB0aGF0IHdh
cyBjb252ZW5pZW50IHRvIGJlIGRvbmUgd2l0aCBOdW1weSBhbmQgdGhlbiwgcGZmLCBhbGwgdGhl
IGdvb2QgcGVyZm9ybWFuY2UgZGlzYXBwZWFyZWQgYmVjYXVzZSB0aGUgTnVtcHkgY2FsbHMgd2hl
cmUgc3VwZXIgc2xvdyAoZ29pbmcgdGhyb3VnaCBjcHlleHQpIGFuZCB0aGUgcmVzdCBvZiB0aGUg
Y29kZSB3YXMgdGhlbiB1c2luZyBzb21lIE51bXB5IG51bWJlcnMuIFRoaXMgd2FzIHZlcnkgZnJ1
c3RyYXRpbmcuDQoNCldlIGFsc28gc2VlIHByb2plY3RzIHVzaW5nIGEgbG90IFB5dGhvbiAod2l0
aCBsb3Qgb2Ygc21hbGwgb2JqZWN0cykgdGhhdCBhcmUgc28gc2xvdyBjb21wYXJlZCB0byBjb21w
YXJhYmxlIGFsdGVybmF0aXZlcyAoZm9yIGV4YW1wbGUgUGVsaWNhbiBjb21wYXJlZCB0byBIdWdv
IGluIEdvOyBteXN0LXBhcnNlciBjb21wYXJlZCB0byBteXN0bWQgaW4gSmF2YVNjcmlwdDsgSSBh
bHNvIHRoaW5rIGFib3V0IFNwaGlueCBhbmQgaXRzIHNvIGxvbmcgYnVpbGRzLCAuLi4pLiBJdCB3
b3VsZCBjaGFuZ2UgdGhlIGxpZmUgb2YgUHl0aG9uIHVzZXJzIGlmIGl0IHdvdWxkIGJlIGVhc3kg
dG8gdXNlIGZhc3QgaW1wbGVtZW50YXRpb25zIHdpdGggcGVyZm9ybWFuY2Ugc2ltaWxhciB0byBO
b2RlSlMuDQoNCk1vcmVvdmVyLCBpZiBib3hpbmcvdW5ib3hpbmcgY2FuIGJlIGF2b2lkZWQgYmV0
d2VlbiBQeXRob24gSklUcyBhbmQgbmF0aXZlIGNvZGUgKHdoaWNoIHNob3VsZCBiZSBkb2FibGUg
d2l0aCBIUHkpLCBOdW1weSBjYWxscyB3b3VsZCBiZSBzaWduaWZpY2FudGx5IGZhc3Rlci4gV2l0
aCBHcmFhbCBWTSBpdCBjb3VsZCBldmVuIGJlIG1vcmUgc3BlY3RhY3VsYXIgYmVjYXVzZSBpdCBj
b3VsZCBiZSBwb3NzaWJsZSB0aGF0IHRoZSBzYW1lIEpJVCBjb21waWxlcyB0b2dldGhlciBQeXRo
b24gYW5kIG5hdGl2ZSBjb2RlIHdpdGhvdXQgYmFycmllcnMgYWNyb3NzIHRoZSBsYW5ndWFnZSBi
b3VuZGFyaWVzLg0KDQo+IFdoZW4gdGhpbmtpbmcgYWJvdXQgb3ZlcmFsbCBwZXJmb3JtYW5jZSBp
bXByb3ZlbWVudHMsIEknZCBzYXkgdGhhdCB0aGUgdHdvIG1vc3QNCj4gcHJvbWlzaW5nIGxhcmdl
IGRldmVsb3BtZW50cyBhcmU6ICgxKSBtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBhY2NlbGVyYXRv
cg0KPiBsaWJyYXJpZXMgKFB5VG9yY2gsIEN1UHkgZXQgYWwuKSwgYW5kICgyKSBmcmVlLXRocmVh
ZGVkIENQeXRob24gZm9yIGVuYWJsaW5nDQo+IFB5dGhvbi1sZXZlbCB0aHJlYWRpbmcuDQoNCkdv
b2QgYW5kIHVzYWJsZSBzdWItaW50ZXJwcmV0ZXJzIHdvdWxkIGFsc28gYmUgZ3JlYXQgYW5kIEkg
dGhpbmsgdGhpcyBpcyBoaWdobHkgY291cGxlZCB3aXRoIE51bXB5LUhQeS4NCiANCj4gWy4uLl0N
Cj4gDQo+IE1vcmVvdmVyLCB1bmZvcnR1bmF0ZWx5LCBIUHkgZG9lcyBub3QgY3VycmVudGx5IHJl
Y2VpdmUgYXMgbXVjaCBjYXJlIGFzIGl0DQo+IHNob3VsZC4NCj4gDQo+IA0KPiANCj4gSXQgc2Vl
bXMgdG8gbWUgdGhhdCB0aGUgcHJvamVjdCBvZiBmaXhpbmcgdGhlIHJvb3RzIG9mIHRoZSBQeXRo
b24gZWNvc3lzdGVtIGhhcw0KPiB0byBiZSByZWxhdW5jaGVkLiBJIHRoaW5rIHRoYXQgdGhlIGR5
bmFtaWNzIGhhcyB0byBjb21lIGZyb20gdGhlIFB5dGhvbg0KPiBzY2llbnRpZmljL2RhdGEgY29t
bXVuaXR5IGFuZCBpbiBwYXJ0aWN1bGFyIE51bXB5LiBJdCBpcyB1bmZvcnR1bmF0ZWx5IG91dHNp
ZGUNCj4gb2YgdGhlIEMgQVBJIHdvcmtpbmcgZ3JvdXAncyBzY29wZSAoc2VlIFsNCj4gaHR0cHM6
Ly9kaXNjdXNzLnB5dGhvbi5vcmcvdC9jLWFwaS13b3JraW5nLWdyb3VwLWFuZC1wbGFuLXRvLWdl
dC1hLXB5dGhvbi1jLWFwaS1jb21wYXRpYmxlLXdpdGgtYWx0ZXJuYXRpdmUtcHl0aG9uLWltcGxl
bWVudGF0aW9ucy84OTQ3Nw0KPiB8DQo+IGh0dHBzOi8vZGlzY3Vzcy5weXRob24ub3JnL3QvYy1h
cGktd29ya2luZy1ncm91cC1hbmQtcGxhbi10by1nZXQtYS1weXRob24tYy1hcGktY29tcGF0aWJs
ZS13aXRoLWFsdGVybmF0aXZlLXB5dGhvbi1pbXBsZW1lbnRhdGlvbnMvODk0NzcNCj4gXSApLg0K
PiANCj4gSXQgc2VlbXMgdG8gbWUgdGhhdCBpdCBpcyBuZWNlc3NhcnkgKGFuZCBwb3NzaWJsZSkg
dG8gZ2V0IHNvbWUgZm91bmRpbmcgZm9yIHN1Y2gNCj4gYW4gaW1wYWN0ZnVsIHByb2plY3Qgc28g
dGhhdCB3ZSBjYW4gZ2V0IHBlb3BsZSB3b3JraW5nIG9uIGl0Lg0KPiANCj4gSSdkIGxpa2UgdG8g
d3JpdGUgYSBsb25nIGFuZCBzZXJpb3VzIHRleHQgb24gdGhpcyBzdWJqZWN0LCBhbmQgSSBmaXJz
dCB0cnkgdG8NCj4gZ2V0IHRoZSBwb2ludHMgb2YgdmlldyBvZiB0aGUgZGlmZmVyZW50IHBlb3Bs
ZSBhbmQgcHJvamVjdHMgaW52b2x2ZWQuDQo+IA0KPiBJIGd1ZXNzIEkgc2hvdWxkIHdyaXRlIGV4
cGxpY2l0IHF1ZXN0aW9uczoNCj4gDQo+IC0gV2hhdCBkbyB5b3UgdGhpbmsgYWJvdXQgdGhlIHBy
b2plY3Qgb2YgZml4aW5nIHRoZSBQeXRob24gc2NpZW50aWZpYy9kYXRhIHN0YWNrDQo+IHNvIHRo
YXQgaXQgYmVjb21lcyBuYXRpdmVseSBjb21wYXRpYmxlIChoZW5jZSBmYXN0IGFuZCBjb252ZW5p
ZW50LCB3aXRoIGVhc3kNCj4gaW5zdGFsbGF0aW9ucykgd2l0aCBhbHRlcm5hdGl2ZSBhbmQgZmFz
dCBQeXRob24gaW50ZXJwcmV0ZXJzPw0KPiAtIERvIHlvdSBoYXZlIHBvaW50cyBvZiB2aWV3IG9u
IGhvdyB0aGlzIHNob3VsZCBiZSBkb25lLCB0ZWNobmljYWxseSAoSFB5PywNCj4gc29tZXRoaW5n
IGVsc2U/KSBhbmQgb24gb3RoZXIgYXNwZWN0cyAoY29tbXVuaXR5LCBORVA/LCBmb3VuZGluZywg
Li4uKS4NCj4gLSBBbnl0aGluZyBlbHNlIGludGVyZXN0aW5nIG9uIHRoaXMgc3ViamVjdD8NCj4g
DQo+IEhhdmluZyBIUHkgb3Igc29tZXRoaW5nIGxpa2UgaXQgd2lsbCBiZSB2ZXJ5IG5pY2UgYW5k
IGxlYWQgdG8gbG9uZy10ZXJtDQo+IGJlbmVmaXRzLiBUaGUgcHJvYmxlbSB3aXRoIEhQeSBzZWVt
cyB0byBiZSBtb3JlIGEgc29jaWFsIG9uZSBhdCB0aGlzIHBvaW50OiBpZg0KPiBDUHl0aG9uIGNv
cmUgZGV2cyBkb24ndCB3YW50IHRvIGFkb3B0IGl0IGJ1dCBkbyB0aGVpciBvd24gIm1ha2UgdGhl
IEMgQVBJIG1vcmUNCj4gb3BhcXVlIiBzdHJhdGVneSwgdGhlbiBtb3JlIGVmZm9ydCBvbiBIUHkg
aXNuJ3QgZ29pbmcgdG8gaGVscC4gSWYgeW91J3JlIGdvaW5nDQo+IHRvIGRpZyBpbnRvIHRoaXMg
bW9yZSwgSSBzdWdnZXN0IHRyeWluZyB0byBnZXQgYSB2ZXJ5IGdvb2Qgc2Vuc2Ugb2Ygd2hhdCB0
aGUNCj4gQ1B5dGhvbiBjb3JlIGRldiB0ZWFtLCBhbmQgaW4gcGFydGljdWxhciBpdHMgQyBBUEkg
V29ya2dyb3VwLCBpcw0KPiB0aGlua2luZy9wbGFubmluZy4gVGhhdCB3aWxsIGluZm9ybSB3aGV0
aGVyIHRoZSByaWdodCBzdHJhdGVneSBpcyB0byBoZWxwIHRoZWlyDQo+IGVmZm9ydHMgYWxvbmcs
IG9yIHdvcmsgb24gSFB5Lg0KDQpUaGlzIGlzIHZlcnkgaW50ZXJlc3RpbmcgdGhhdCB5b3Ugd3Jp
dGUgdGhhdCEgVGhpcyBpcyBleGFjdGx5IHdoYXQgSSB0cmllZCB0byB1bmRlcnN0YW5kIHdpdGgg
bXkgcXVlc3Rpb25zIGluIGh0dHBzOi8vZGlzY3Vzcy5weXRob24ub3JnL3QvYy1hcGktd29ya2lu
Zy1ncm91cC1hbmQtcGxhbi10by1nZXQtYS1weXRob24tYy1hcGktY29tcGF0aWJsZS13aXRoLWFs
dGVybmF0aXZlLXB5dGhvbi1pbXBsZW1lbnRhdGlvbnMvODk0NzcNCg0KSSB0aGluayB0aGF0IHRo
ZSBkaXNjdXNzaW9uIHdhcyB2ZXJ5IGluZm9ybWF0aXZlLiBJdCBpcyBpbiBwYXJ0aWN1bGFyIGlu
dGVyZXN0aW5nIHRvIHNlZSB0aGF0IHRoZSBDIEFQSSB3b3JraW5nIGdyb3VwIGlzIG9ubHkgZm9j
dXNlZCAoaSkgb24gdGhlICJoaXN0b3JpY2FsIiBDUHl0aG9uIEMgQVBJIChIUHkgaXMgY29uc2lk
ZXJlZCBhcyBhbiBleHRlcm5hbCBwcm9qZWN0KSBhbmQgKGlpKSBvbiBzbG93IGFuZCBncmFkdWFs
IGV2b2x1dGlvbiBvZiB0aGlzIEMgQVBJICh0byBnbyBhdCB0aGUgcGFjZSBvZiB0aGUgc2xvd2Vz
dCBwcm9qZWN0cyB1c2luZyB0aGUgQ1B5dGhvbiBDIEFQSSkuIFNvbWUgQ1B5dGhvbiBjb3JlIGRl
dnMgd29yayBpbiB0aGUgZGlyZWN0aW9uIG9mICJtYWtpbmcgdGhlIEMgQVBJIG1vcmUgb3BhcXVl
IiwgYnV0IGltcG9ydGFudCAicmV2b2x1dGlvbmFyeSIgY2hhbmdlcyAobGlrZSBwcm92aWRpbmcg
YW4gQVBJIG5vdCBhc3N1bWluZyByZWZlcmVuY2UgY291bnRpbmcpIGhhdmUganVzdCBiZWVuIGRp
c2N1c3NlZCAoaHR0cHM6Ly9naXRodWIuY29tL2NhcGktd29ya2dyb3VwL2FwaS1yZXZvbHV0aW9u
L2lzc3VlcykgYW5kIGl0IHNlZW1zIHRoYXQgdGhlcmUgYXJlIG5vdCB5ZXQgcHJhY3RpY2FsIHBs
YW5zIGZvciB0aGVtIChmb3IgZXhhbXBsZSBodHRwczovL2dpdGh1Yi5jb20vbWFya3NoYW5ub24v
TmV3LUMtQVBJLWZvci1QeXRob24vIGlzIHN0b3BwZWQpLiBNb3Jlb3ZlciwgdGhlcmUgYXJlIG5v
IHRpbWUgc2NoZWR1bGUgYW5kIHRoZXJlIGNhbm5vdCBiZSBhbnkgdGltZSBzY2hlZHVsZSBzaW5j
ZSB0aGUgcGFjZSBkZXBlbmRzIG9uIGFsbCBDUHl0aG9uIEMgQVBJIHVzZXJzLg0KDQpJbiBwcmFj
dGljZSwgdG8gZ2V0IGluIGEgcmVhc29uYWJsZSB0aW1lIChub3QgMTIgeWVhcnMpIHRoZSBzY2ll
bnRpZmljL2RhdGEgUHl0aG9uIHN0YWNrIG5hdGl2ZWx5IGNvbXBhdGlibGUgd2l0aCBhZHZhbmNl
ZCBtZXRob2RzIHVzZWQgaW4gZHluYW1pYyBsYW5ndWFnZSBpbnRlcnByZXRlcnMsIG9uZSBuZWVk
cyAoaSkgdG8gaW52ZXN0IG9uIEhQeSBhbmQgKGlpKSB0byBwb3J0IE51bXB5IHRvIHNvbWV0aGlu
ZyBlbHNlIHRoYW4gdGhlIENQeXRob24gQyBBUEkgKGl0IGNhbiBiZSBIUHkgYnV0IGl0IGNvdWxk
IGFsc28gYmUgQ3l0aG9uIG9yIG1heWJlIG90aGVyIHRoaW5ncykuDQoNCkFsc28sIGl0IHNlZW1z
IHRoYXQgdGhlIEMgQVBJIHdvcmtpbmcgZ3JvdXAgZG9lcyBub3QgY2FyZSBhYm91dCB0aGUgcHJp
bmNpcGxlIG9mIHRoZSBIUHkgdW5pdmVyc2FsIHdoZWVscyAoY29tcGF0aWJsZSBhY3Jvc3MgUHl0
aG9uIHZlcnNpb25zIGFuZCBpbXBsZW1lbnRhdGlvbnMpLiBUbyBoYXZlIHNvbWV0aGluZyBsaWtl
IHRoYXQsIHdlIG5lZWQgSFB5Lg0KDQpJdCBzZWVtcyB0byBtZSB0aGF0IGEgc3RyYXRlZ3kgYmFz
ZWQgb24gSFB5IHdvdWxkIGdpdmUgcHJhY3RpY2FsIGJlbmVmaWNlcyBmb3IgdXNlcnMgaW4gYSBt
dWNoIHNob3J0ZXIgdGltZSAodHlwaWNhbGx5IGZldyB5ZWFycykgdGhhbiBqdXN0IHdhaXRpbmcg
Zm9yIENQeXRob24gQyBBUEkgZXZvbHV0aW9uLg0KDQpMZXQncyByZWNhbGwgdGhhdCBOdW1weSAx
IGhhcyBhbHJlYWR5IGJlZW4gcG9ydGVkIGluIEhQeSAobGlrZSBNYXRwbG90bGliIGJ5IHRoZSB3
YXkpLiBJIHRodXMgYWdyZWUgd2l0aCANCg0KPiBUaGUgcHJvYmxlbSB3aXRoIEhQeSBzZWVtcyB0
byBiZSBtb3JlIGEgc29jaWFsIG9uZSBhdCB0aGlzIHBvaW50DQoNCkNoZWVycywNClBpZXJyZQ0K
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaHB5LWRldiBt
YWlsaW5nIGxpc3QgLS0gaHB5LWRldkBweXRob24ub3JnClRvIHVuc3Vic2NyaWJlIHNlbmQgYW4g
ZW1haWwgdG8gaHB5LWRldi1sZWF2ZUBweXRob24ub3JnCmh0dHBzOi8vbWFpbC5weXRob24ub3Jn
L21haWxtYW4zL2xpc3RzL2hweS1kZXYucHl0aG9uLm9yZy8KTWVtYmVyIGFkZHJlc3M6IGdjcGgt
aHB5LWRldkBtLmdtYW5lLW14Lm9yZwo=