[Python-Dev] PEP 0211: Linear Algebra Operators

Greg Wilson gvwilson@nevex.com
Fri, 11 Aug 2000 09:39:38 -0400 (EDT)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--168427786-36668808-966001178=:13482
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi, everyone.  Please find attached the latest version of PEP-0211,
"Adding New Linear Algebra Operators to Python".  As I don't have write
access to the CVS repository, I'd be grateful if someone could check this
in for me.  Please send comments directly to me (gvwilson@nevex.com); I'll
summarize, update the PEP, and re-post.

Thanks,
Greg

--168427786-36668808-966001178=:13482
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="pep-0211.txt"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.10.10008110939380.13482@akbar.nevex.com>
Content-Description: 
Content-Disposition: attachment; filename="pep-0211.txt"

UEVQOiAyMTENClRpdGxlOiBBZGRpbmcgTmV3IExpbmVhciBBbGdlYnJhIE9w
ZXJhdG9ycyB0byBQeXRob24NClZlcnNpb246ICRSZXZpc2lvbiQNCk93bmVy
OiBndndpbHNvbkBuZXZleC5jb20gKEdyZWcgV2lsc29uKQ0KUHl0aG9uLVZl
cnNpb246IDIuMQ0KQ3JlYXRlZDogMTUtSnVsLTIwMDANClN0YXR1czogRHJh
ZnQNClBvc3QtSGlzdG9yeToNCg0KDQpJbnRyb2R1Y3Rpb24NCg0KICAgIFRo
aXMgUEVQIGRlc2NyaWJlcyBhIHByb3Bvc2FsIHRvIGFkZCBsaW5lYXIgYWxn
ZWJyYSBvcGVyYXRvcnMgdG8NCiAgICBQeXRob24gMi4wLiAgSXQgZGlzY3Vz
c2VzIHdoeSBzdWNoIG9wZXJhdG9ycyBhcmUgZGVzaXJhYmxlLCBhbmQNCiAg
ICBhbHRlcm5hdGl2ZXMgdGhhdCBoYXZlIGJlZW4gY29uc2lkZXJlZCBhbmQg
ZGlzY2FyZGVkLiAgVGhpcyBQRVANCiAgICBzdW1tYXJpemVzIGRpc2N1c3Np
b25zIGhlbGQgaW4gbWFpbGluZyBsaXN0IGZvcnVtcywgYW5kIHByb3ZpZGVz
DQogICAgVVJMcyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiwgd2hlcmUgYXBw
cm9wcmlhdGUuICBUaGUgQ1ZTIHJldmlzaW9uDQogICAgaGlzdG9yeSBvZiB0
aGlzIGZpbGUgY29udGFpbnMgdGhlIGRlZmluaXRpdmUgaGlzdG9yaWNhbCBy
ZWNvcmQuDQoNCg0KUHJvcG9zYWwNCg0KICAgIEFkZCBhIHNpbmdsZSBuZXcg
aW5maXggYmluYXJ5IG9wZXJhdG9yICdAJyAoImFjcm9zcyIpLCBhbmQNCiAg
ICBjb3JyZXNwb25kaW5nIHNwZWNpYWwgbWV0aG9kcyAiX19hY3Jvc3NfXygp
IiBhbmQgIl9fcmFjcm9zc19fKCkiLg0KICAgIFRoaXMgb3BlcmF0b3Igd2ls
bCBwZXJmb3JtIG1hdGhlbWF0aWNhbCBtYXRyaXggbXVsdGlwbGljYXRpb24g
b24NCiAgICBOdW1QeSBhcnJheXMsIGFuZCBnZW5lcmF0ZSBjcm9zcy1wcm9k
dWN0cyB3aGVuIGFwcGxpZWQgdG8gYnVpbHQtaW4NCiAgICBzZXF1ZW5jZSB0
eXBlcy4gIE5vIGV4aXN0aW5nIG9wZXJhdG9yIGRlZmluaXRpb25zIHdpbGwg
YmUgY2hhbmdlZC4NCg0KDQpCYWNrZ3JvdW5kDQoNCiAgICBDb21wdXRlcnMg
d2VyZSBpbnZlbnRlZCB0byBkbyBhcml0aG1ldGljLCBhcyB3YXMgdGhlIGZp
cnN0DQogICAgaGlnaC1sZXZlbCBwcm9ncmFtbWluZyBsYW5ndWFnZSwgRm9y
dHJhbi4gIFdoaWxlIEZvcnRyYW4gd2FzIGENCiAgICBncmVhdCBhZHZhbmNl
IG9uIGl0cyBtYWNoaW5lLWxldmVsIHByZWRlY2Vzc29ycywgdGhlcmUgd2Fz
IHN0aWxsIGENCiAgICB2ZXJ5IGxhcmdlIGdhcCBiZXR3ZWVuIGl0cyBzeW50
YXggYW5kIHRoZSBub3RhdGlvbiB1c2VkIGJ5DQogICAgbWF0aGVtYXRpY2lh
bnMuICBUaGUgbW9zdCBpbmZsdWVudGlhbCBlZmZvcnQgdG8gY2xvc2UgdGhp
cyBnYXAgd2FzDQogICAgQVBMIFsxXToNCg0KICAgICAgICBUaGUgbGFuZ3Vh
Z2UgW0FQTF0gd2FzIGludmVudGVkIGJ5IEtlbm5ldGggRS4gSXZlcnNvbiB3
aGlsZSBhdA0KICAgICAgICBIYXJ2YXJkIFVuaXZlcnNpdHkuIFRoZSBsYW5n
dWFnZSwgb3JpZ2luYWxseSB0aXRsZWQgIkl2ZXJzb24NCiAgICAgICAgTm90
YXRpb24iLCB3YXMgZGVzaWduZWQgdG8gb3ZlcmNvbWUgdGhlIGluaGVyZW50
IGFtYmlndWl0aWVzDQogICAgICAgIGFuZCBwb2ludHMgb2YgY29uZnVzaW9u
IGZvdW5kIHdoZW4gZGVhbGluZyB3aXRoIHN0YW5kYXJkDQogICAgICAgIG1h
dGhlbWF0aWNhbCBub3RhdGlvbi4gSXQgd2FzIGxhdGVyIGRlc2NyaWJlZCBp
biAxOTYyIGluIGENCiAgICAgICAgYm9vayBzaW1wbHkgdGl0bGVkICJBIFBy
b2dyYW1taW5nIExhbmd1YWdlIiAoaGVuY2UgQVBMKS4NCiAgICAgICAgVG93
YXJkcyB0aGUgZW5kIG9mIHRoZSBzaXh0aWVzLCBsYXJnZWx5IHRocm91Z2gg
dGhlIGVmZm9ydHMgb2YNCiAgICAgICAgSUJNLCB0aGUgY29tcHV0ZXIgY29t
bXVuaXR5IGdhaW5lZCBpdHMgZmlyc3QgZXhwb3N1cmUgdG8NCiAgICAgICAg
QVBMLiBJdmVyc29uIHJlY2VpdmVkIHRoZSBUdXJpbmcgQXdhcmQgaW4gMTk4
MCBmb3IgdGhpcyB3b3JrLg0KDQogICAgQVBMJ3Mgb3BlcmF0b3JzIHN1cHBv
cnRlZCBib3RoIGZhbWlsaWFyIGFsZ2VicmFpYyBvcGVyYXRpb25zLCBzdWNo
DQogICAgYXMgdmVjdG9yIGRvdCBwcm9kdWN0IGFuZCBtYXRyaXggbXVsdGlw
bGljYXRpb24sIGFuZCBhIHdpZGUgcmFuZ2UNCiAgICBvZiBzdHJ1Y3R1cmFs
IG9wZXJhdGlvbnMsIHN1Y2ggYXMgc3RpdGNoaW5nIHZlY3RvcnMgdG9nZXRo
ZXIgdG8NCiAgICBjcmVhdGUgYXJyYXlzLiAgSXRzIG5vdGF0aW9uIHdhcyBl
eGNlcHRpb25hbGx5IGNyeXB0aWM6IG1hbnkgb2YNCiAgICBpdHMgc3ltYm9s
cyBkaWQgbm90IGV4aXN0IG9uIHN0YW5kYXJkIGtleWJvYXJkcywgYW5kIGV4
cHJlc3Npb25zDQogICAgaGFkIHRvIGJlIHJlYWQgcmlnaHQgdG8gbGVmdC4N
Cg0KICAgIE1vc3Qgc3Vic2VxdWVudCB3b3JrIG9uIG51bWVyaWNhbCBsYW5n
dWFnZXMsIHN1Y2ggYXMgRm9ydHJhbi05MCwNCiAgICBNQVRMQUIsIGFuZCBN
YXRoZW1hdGljYSwgaGFzIHRyaWVkIHRvIHByb3ZpZGUgdGhlIHBvd2VyIG9m
IEFQTA0KICAgIHdpdGhvdXQgdGhlIG9ic2N1cml0eS4gIFB5dGhvbidzIE51
bVB5IFsyXSBoYXMgbW9zdCBvZiB0aGUNCiAgICBmZWF0dXJlcyB0aGF0IHVz
ZXJzIG9mIHN1Y2ggbGFuZ3VhZ2VzIGV4cGVjdCwgYnV0IHRoZXNlIGFyZQ0K
ICAgIHByb3ZpZGVkIHRocm91Z2ggbmFtZWQgZnVuY3Rpb25zIGFuZCBtZXRo
b2RzLCByYXRoZXIgdGhhbg0KICAgIG92ZXJsb2FkZWQgb3BlcmF0b3JzLiAg
VGhpcyBtYWtlcyBOdW1QeSBjbHVtc2llciB0aGFuIGl0cw0KICAgIGNvbXBl
dGl0b3JzLg0KDQogICAgT25lIHdheSB0byBtYWtlIE51bVB5IG1vcmUgY29t
cGV0aXRpdmUgaXMgdG8gcHJvdmlkZSBncmVhdGVyDQogICAgc3ludGFjdGlj
IHN1cHBvcnQgaW4gUHl0aG9uIGl0c2VsZiBmb3IgbGluZWFyIGFsZ2VicmEu
ICBUaGlzDQogICAgcHJvcG9zYWwgdGhlcmVmb3JlIGV4YW1pbmVzIHRoZSBy
ZXF1aXJlbWVudHMgdGhhdCBuZXcgbGluZWFyDQogICAgYWxnZWJyYSBvcGVy
YXRvcnMgaW4gUHl0aG9uIG11c3Qgc2F0aXNmeSwgYW5kIHByb3Bvc2VzIGEg
c3ludGF4DQogICAgYW5kIHNlbWFudGljcyBmb3IgdGhvc2Ugb3BlcmF0b3Jz
Lg0KDQoNClJlcXVpcmVtZW50cw0KDQogICAgVGhlIG1vc3QgaW1wb3J0YW50
IHJlcXVpcmVtZW50IGlzIHRoYXQgdGhlcmUgYmUgbWluaW1hbCBpbXBhY3Qg
b24NCiAgICB0aGUgZXhpc3RpbmcgZGVmaW5pdGlvbiBvZiBQeXRob24uICBU
aGUgcHJvcG9zYWwgbXVzdCBub3QgYnJlYWsNCiAgICBleGlzdGluZyBwcm9n
cmFtcywgZXhjZXB0IHBvc3NpYmx5IHRob3NlIHRoYXQgdXNlIE51bVB5Lg0K
DQogICAgVGhlIHNlY29uZCBtb3N0IGltcG9ydGFudCByZXF1aXJlbWVudCBp
cyB0byBiZSBhYmxlIHRvIGRvIGJvdGgNCiAgICBlbGVtZW50d2lzZSBhbmQg
bWF0aGVtYXRpY2FsIG1hdHJpeCBtdWx0aXBsaWNhdGlvbiB1c2luZyBpbmZp
eA0KICAgIG5vdGF0aW9uLiAgVGhlIG5pbmUgY2FzZXMgdGhhdCBtdXN0IGJl
IGhhbmRsZWQgYXJlOg0KDQogICAgICAgIHw1IDZ8ICogICA5ICAgPSB8NDUg
NTR8ICAgICAgTVM6IG1hdHJpeC1zY2FsYXIgbXVsdGlwbGljYXRpb24NCiAg
ICAgICAgfDcgOHwgICAgICAgICAgIHw2MyA3MnwNCg0KICAgICAgICAgIDkg
ICAqIHw1IDZ8ID0gfDQ1IDU0fCAgICAgIFNNOiBzY2FsYXItbWF0cml4IG11
bHRpcGxpY2F0aW9uDQogICAgICAgICAgICAgICAgfDcgOHwgICB8NjMgNzJ8
DQoNCiAgICAgICAgfDIgM3wgKiB8NCA1fCA9IHw4IDE1fCAgICAgICBWRTog
dmVjdG9yIGVsZW1lbnR3aXNlIG11bHRpcGxpY2F0aW9uDQoNCg0KICAgICAg
ICB8MiAzfCAqICB8NHwgID0gICAyMyAgICAgICAgIFZEOiB2ZWN0b3IgZG90
IHByb2R1Y3QNCiAgICAgICAgICAgICAgICAgfDV8DQoNCiAgICAgICAgIHwy
fCAgKiB8NCA1fCA9IHwgOCAxMHwgICAgICBWTzogdmVjdG9yIG91dGVyIHBy
b2R1Y3QNCiAgICAgICAgIHwzfCAgICAgICAgICAgIHwxMiAxNXwNCg0KICAg
ICAgICB8MSAyfCAqIHw1IDZ8ID0gfCA1IDEyfCAgICAgIE1FOiBtYXRyaXgg
ZWxlbWVudHdpc2UgbXVsdGlwbGljYXRpb24NCiAgICAgICAgfDMgNHwgICB8
NyA4fCAgIHwyMSAzMnwNCg0KICAgICAgICB8MSAyfCAqIHw1IDZ8ID0gfDE5
IDIyfCAgICAgIE1NOiBtYXRoZW1hdGljYWwgbWF0cml4IG11bHRpcGxpY2F0
aW9uDQogICAgICAgIHwzIDR8ICAgfDcgOHwgICB8NDMgNTB8DQoNCiAgICAg
ICAgfDEgMnwgKiB8NSA2fCA9IHwxOSAyMnwgICAgICBWTTogdmVjdG9yLW1h
dHJpeCBtdWx0aXBsaWNhdGlvbg0KICAgICAgICAgICAgICAgIHw3IDh8DQoN
CiAgICAgICAgfDUgNnwgKiAgfDF8ICA9ICAgfDE3fCAgICAgICBNVjogbWF0
cml4LXZlY3RvciBtdWx0aXBsaWNhdGlvbg0KICAgICAgICB8NyA4fCAgICB8
MnwgICAgICB8MjN8DQoNCiAgICBOb3RlIHRoYXQgMS1kaW1lbnNpb25hbCB2
ZWN0b3JzIGFyZSB0cmVhdGVkIGFzIHJvd3MgaW4gVk0sIGFzDQogICAgY29s
dW1ucyBpbiBNViwgYW5kIGFzIGJvdGggaW4gVkQgYW5kIFZPLiAgQm90aCBh
cmUgc3BlY2lhbCBjYXNlcw0KICAgIG9mIDItZGltZW5zaW9uYWwgbWF0cmlj
ZXMgKE54MSBhbmQgMXhOIHJlc3BlY3RpdmVseSkuICBJdCBtYXkNCiAgICB0
aGVyZWZvcmUgYmUgcmVhc29uYWJsZSB0byBkZWZpbmUgdGhlIG5ldyBvcGVy
YXRvciBvbmx5IGZvcg0KICAgIDItZGltZW5zaW9uYWwgYXJyYXlzLCBhbmQg
cHJvdmlkZSBhbiBlYXN5IChhbmQgZWZmaWNpZW50KSB3YXkgZm9yDQogICAg
dXNlcnMgdG8gY29udmVydCAxLWRpbWVuc2lvbmFsIHN0cnVjdHVyZXMgdG8g
Mi1kaW1lbnNpb25hbC4NCiAgICBCZWhhdmlvciBvZiBhIG5ldyBtdWx0aXBs
aWNhdGlvbiBvcGVyYXRvciBmb3IgYnVpbHQtaW4gdHlwZXMgbWF5DQogICAg
dGhlbjoNCg0KICAgIChhKSBiZSBhIHBhcnNpbmcgZXJyb3IgKHBvc3NpYmxl
IG9ubHkgaWYgYSBjb25zdGFudCBpcyBvbmUgb2YgdGhlDQogICAgICAgIGFy
Z3VtZW50cywgc2luY2UgbmFtZXMgYXJlIHVudHlwZWQgaW4gUHl0aG9uKTsN
Cg0KICAgIChiKSBnZW5lcmF0ZSBhIHJ1bnRpbWUgZXJyb3I7IG9yDQoNCiAg
ICAoYykgYmUgZGVyaXZlZCBieSBwbGF1c2libGUgZXh0ZW5zaW9uIGZyb20g
aXRzIGJlaGF2aW9yIGluIHRoZQ0KICAgICAgICB0d28tZGltZW5zaW9uYWwg
Y2FzZS4NCg0KICAgIFRoaXJkLCBzeW50YWN0aWMgc3VwcG9ydCBzaG91bGQg
YmUgY29uc2lkZXJlZCBmb3IgdGhyZWUgb3RoZXINCiAgICBvcGVyYXRpb25z
Og0KDQogICAgICAgICAgICAgICAgICAgICAgICAgVA0KICAgIChhKSB0cmFu
c3Bvc2l0aW9uOiAgQSAgID0+IEFbaiwgaV0gZm9yIEFbaSwgal0NCg0KICAg
ICAgICAgICAgICAgICAgICAgICAgIC0xDQogICAgKGIpIGludmVyc2U6ICAg
ICAgICBBICAgPT4gQScgc3VjaCB0aGF0IEEnICogQSA9IEkgKHRoZSBpZGVu
dGl0eSBtYXRyaXgpDQoNCiAgICAoYykgc29sdXRpb246ICAgICAgIEEvYiA9
PiB4ICBzdWNoIHRoYXQgQSAqIHggPSBiDQogICAgICAgICAgICAgICAgICAg
ICAgICBBXGIgPT4geCAgc3VjaCB0aGF0IHggKiBBID0gYg0KDQogICAgV2l0
aCByZWdhcmQgdG8gKGMpLCBpdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB0aGUg
dHdvIHN5bnRheGVzIHVzZWQNCiAgICB3ZXJlIGludmVudGVkIGJ5IHByb2dy
YW1tZXJzLCBub3QgbWF0aGVtYXRpY2lhbnMuICBNYXRoZW1hdGljaWFucw0K
ICAgIGRvIG5vdCBoYXZlIGEgc3RhbmRhcmQsIHdpZGVseS11c2VkIG5vdGF0
aW9uIGZvciBtYXRyaXggc29sdXRpb24uDQoNCiAgICBJdCBpcyBhbHNvIHdv
cnRoIG5vdGluZyB0aGF0IGRvemVucyBvZiBtYXRyaXggaW52ZXJzaW9uIGFu
ZA0KICAgIHNvbHV0aW9uIGFsZ29yaXRobXMgYXJlIHdpZGVseSB1c2VkLiAg
TUFUTEFCIGFuZCBpdHMga2luIGJpbmQNCiAgICB0aGVpciBpbnZlcnNpb24g
YW5kL29yIHNvbHV0aW9uIG9wZXJhdG9ycyB0byBvbmUgd2hpY2ggaXMNCiAg
ICByZWFzb25hYmx5IHJvYnVzdCBpbiBtb3N0IGNhc2VzLCBhbmQgcmVxdWly
ZSB1c2VycyB0byBjYWxsDQogICAgZnVuY3Rpb25zIG9yIG1ldGhvZHMgdG8g
YWNjZXNzIG90aGVycy4NCg0KICAgIEZvdXJ0aCwgY29uZnVzaW9uIGJldHdl
ZW4gUHl0aG9uJ3Mgbm90YXRpb24gYW5kIHRob3NlIG9mIE1BVExBQg0KICAg
IGFuZCBGb3J0cmFuLTkwIHNob3VsZCBiZSBhdm9pZGVkLiAgSW4gcGFydGlj
dWxhciwgbWF0aGVtYXRpY2FsDQogICAgbWF0cml4IG11bHRpcGxpY2F0aW9u
IChjYXNlIE1NKSBzaG91bGQgbm90IGJlIHJlcHJlc2VudGVkIGFzICcuKics
DQogICAgc2luY2U6DQoNCiAgICAoYSkgTUFUTEFCIHVzZXMgcHJlZml4LScu
JyBmb3JtcyB0byBtZWFuICdlbGVtZW50d2lzZScsIGFuZCByYXcNCiAgICAg
ICAgZm9ybXMgdG8gbWVhbiAibWF0aGVtYXRpY2FsIiBbNF07IGFuZA0KDQog
ICAgKGIpIGV2ZW4gaWYgdGhlIFB5dGhvbiBwYXJzZXIgY2FuIGJlIHRhdWdo
dCBob3cgdG8gaGFuZGxlIGRvdHRlZA0KICAgICAgICBmb3JtcywgJzEuKkEn
IHdpbGwgc3RpbGwgYmUgdmlzdWFsbHkgYW1iaWd1b3VzIFs0XS4NCg0KICAg
IE9uZSBhbnRpLXJlcXVpcmVtZW50IGlzIHRoYXQgbmV3IG9wZXJhdG9ycyBh
cmUgbm90IG5lZWRlZCBmb3INCiAgICBhZGRpdGlvbiwgc3VidHJhY3Rpb24s
IGJpdHdpc2Ugb3BlcmF0aW9ucywgYW5kIHNvIG9uLCBzaW5jZQ0KICAgIG1h
dGhlbWF0aWNpYW5zIGFscmVhZHkgdHJlYXQgdGhlbSBlbGVtZW50d2lzZS4N
Cg0KDQpQcm9wb3NhbDoNCg0KICAgIFRoZSBtZWFuaW5ncyBvZiBhbGwgZXhp
c3Rpbmcgb3BlcmF0b3JzIHdpbGwgYmUgdW5jaGFuZ2VkLiAgSW4NCiAgICBw
YXJ0aWN1bGFyLCAnQSpCJyB3aWxsIGNvbnRpbnVlIHRvIGJlIGludGVycHJl
dGVkIGVsZW1lbnR3aXNlLg0KICAgIFRoaXMgdGFrZXMgY2FyZSBvZiB0aGUg
Y2FzZXMgTVMsIFNNLCBWRSwgYW5kIE1FLCBhbmQgZW5zdXJlcw0KICAgIG1p
bmltYWwgaW1wYWN0IG9uIGV4aXN0aW5nIHByb2dyYW1zLg0KDQogICAgQSBu
ZXcgb3BlcmF0b3IgJ0AnIChwcm9ub3VuY2VkICJhY3Jvc3MiKSB3aWxsIGJl
IGFkZGVkIHRvIFB5dGhvbiwNCiAgICBhbG9uZyB3aXRoIHR3byBzcGVjaWFs
IG1ldGhvZHMsICJfX2Fjcm9zc19fKCkiIGFuZA0KICAgICJfX3JhY3Jvc3Nf
XygpIiwgd2l0aCB0aGUgdXN1YWwgc2VtYW50aWNzLg0KDQogICAgTnVtUHkg
d2lsbCBvdmVybG9hZCAiQCIgdG8gcGVyZm9ybSBtYXRoZW1hdGljYWwgbXVs
dGlwbGljYXRpb24gb2YNCiAgICBhcnJheXMgd2hlcmUgc2hhcGVzIHBlcm1p
dCwgYW5kIHRvIHRocm93IGFuIGV4Y2VwdGlvbiBvdGhlcndpc2UuDQogICAg
VGhlIG1hdHJpeCBjbGFzcydzIGltcGxlbWVudGF0aW9uIG9mICJAIiB3aWxs
IHRyZWF0IGJ1aWx0LWluDQogICAgc2VxdWVuY2UgdHlwZXMgYXMgaWYgdGhl
eSB3ZXJlIGNvbHVtbiB2ZWN0b3JzLiAgVGhpcyB0YWtlcyBjYXJlIG9mDQog
ICAgdGhlIGNhc2VzIE1NIGFuZCBNVi4NCg0KICAgIEFuIGF0dHJpYnV0ZSAi
VCIgd2lsbCBiZSBhZGRlZCB0byB0aGUgTnVtUHkgYXJyYXkgdHlwZSwgc3Vj
aCB0aGF0DQogICAgIm0uVCIgaXM6DQoNCiAgICAoYSkgdGhlIHRyYW5zcG9z
ZSBvZiAibSIgZm9yIGEgMi1kaW1lbnNpb25hbCBhcnJheQ0KDQogICAgKGIp
IHRoZSAxeE4gbWF0cml4IHRyYW5zcG9zZSBvZiAibSIgaWYgIm0iIGlzIGEg
MS1kaW1lbnNpb25hbA0KICAgICAgICBhcnJheTsgb3INCg0KICAgIChjKSBh
IHJ1bnRpbWUgZXJyb3IgZm9yIGFuIGFycmF5IHdpdGggcmFuayA+PSAzLg0K
DQogICAgVGhpcyBhdHRyaWJ1dGUgd2lsbCBhbGlhcyB0aGUgbWVtb3J5IG9m
IHRoZSBiYXNlIG9iamVjdC4gIE51bVB5J3MNCiAgICAidHJhbnNwb3NlKCki
IGZ1bmN0aW9uIHdpbGwgYmUgZXh0ZW5kZWQgdG8gdHVybiBidWlsdC1pbiBz
ZXF1ZW5jZQ0KICAgIHR5cGVzIGludG8gcm93IHZlY3RvcnMuICBUaGlzIHRh
a2VzIGNhcmUgb2YgdGhlIFZNLCBWRCwgYW5kIFZPDQogICAgY2FzZXMuICBX
ZSBwcm9wb3NlIGFuIGF0dHJpYnV0ZSBiZWNhdXNlOg0KDQogICAgKGEpIHRo
ZSByZXN1bHRpbmcgbm90YXRpb24gaXMgc2ltaWxhciB0byB0aGUgJ3N1cGVy
c2NyaXB0IFQnIChhdA0KICAgICAgICBsZWFzdCwgYXMgc2ltaWxhciBhcyBB
U0NJSSBhbGxvd3MpLCBhbmQNCg0KICAgIChiKSBpdCBzaWduYWxzIHRoYXQg
dGhlIHRyYW5zcG9zaXRpb24gYWxpYXNlcyB0aGUgb3JpZ2luYWwgb2JqZWN0
Lg0KDQogICAgTm8gbmV3IG9wZXJhdG9ycyB3aWxsIGJlIGRlZmluZWQgdG8g
bWVhbiAic29sdmUgYSBzZXQgb2YgbGluZWFyDQogICAgZXF1YXRpb25zIiwg
b3IgImludmVydCBhIG1hdHJpeCIuICBJbnN0ZWFkLCBOdW1QeSB3aWxsIGRl
ZmluZSBhDQogICAgdmFsdWUgImludiIsIHdoaWNoIHdpbGwgYmUgcmVjb2du
aXplZCBieSB0aGUgZXhwb25lbnRpYXRpb24NCiAgICBvcGVyYXRvciwgc3Vj
aCB0aGF0ICJBICoqIGludiIgaXMgdGhlIGludmVyc2Ugb2YgIkEiLiAgVGhp
cyBpcw0KICAgIHNpbWlsYXIgaW4gc3Bpcml0IHRvIE51bVB5J3MgZXhpc3Rp
bmcgIm5ld2F4aXMiIHZhbHVlLg0KDQogICAgKE9wdGlvbmFsKSBXaGVuIGFw
cGxpZWQgdG8gc2VxdWVuY2VzLCB0aGUgb3BlcmF0b3Igd2lsbCByZXR1cm4g
YQ0KICAgIGxpc3Qgb2YgdHVwbGVzIGNvbnRhaW5pbmcgdGhlIGNyb3NzLXBy
b2R1Y3Qgb2YgdGhlaXIgZWxlbWVudHMgaW4NCiAgICBsZWZ0LXRvLXJpZ2h0
IG9yZGVyOg0KDQogICAgPj4+IFsxLCAyXSBAICgzLCA0KQ0KICAgIFsoMSwg
MyksICgxLCA0KSwgKDIsIDMpLCAoMiwgNCldDQoNCiAgICA+Pj4gWzEsIDJd
IEAgKDMsIDQpIEAgKDUsIDYpDQogICAgWygxLCAzLCA1KSwgKDEsIDMsIDYp
LCANCiAgICAgKDEsIDQsIDUpLCAoMSwgNCwgNiksDQogICAgICgyLCAzLCA1
KSwgKDIsIDMsIDYpLA0KICAgICAoMiwgNCwgNSksICgyLCA0LCA2KV0NCg0K
ICAgIFRoaXMgd2lsbCByZXF1aXJlIHRoZSBzYW1lIGtpbmQgb2Ygc3BlY2lh
bCBzdXBwb3J0IGZyb20gdGhlIHBhcnNlcg0KICAgIGFzIGNoYWluZWQgY29t
cGFyaXNvbnMgKHN1Y2ggYXMgImE8YjxjPD1kIikuICBIb3dldmVyLCBpdCB3
b3VsZA0KICAgIHBlcm1pdCB0aGUgZm9sbG93aW5nOg0KDQogICAgPj4+IGZv
ciAoaSwgaikgaW4gWzEsIDJdIEAgWzMsIDRdOg0KICAgID4+PiAgICAgcHJp
bnQgaSwgag0KICAgIDEgMw0KICAgIDEgNA0KICAgIDIgMw0KICAgIDIgNA0K
DQogICAgYXMgYSBzaG9ydC1oYW5kIGZvciB0aGUgY29tbW9uIG5lc3RlZCBs
b29wIGlkaW9tOg0KDQogICAgPj4+IGZvciBpIGluIFsxLCAyXToNCiAgICA+
Pj4gICAgZm9yIGogaW4gWzMsIDRdOg0KICAgID4+PiAgICAgICAgcHJpbnQg
aSwgag0KDQogICAgUmVzcG9uc2UgdG8gdGhlICdsb2Nrc3RlcCBsb29wJyBx
dWVzdGlvbm5haXJlIFs1XSBpbmRpY2F0ZWQgdGhhdA0KICAgIG5ld2NvbWVy
cyB3b3VsZCBiZSBjb21mb3J0YWJsZSB3aXRoIHRoaXMgKHNvIGNvbWZvcnRh
YmxlLCBpbiBmYWN0LA0KICAgIHRoYXQgbW9zdCBvZiB0aGVtIGludGVycHJl
dGVkIG1vc3QgbXVsdGktbG9vcCAnemlwJyBzeW50YXhlcyBbNl0NCiAgICBh
cyBpbXBsZW1lbnRpbmcgc2luZ2xlLXN0YWdlIG5lc3RpbmcpLg0KDQoNCkFs
dGVybmF0aXZlczoNCg0KICAgIDAxLiBEb24ndCBhZGQgbmV3IG9wZXJhdG9y
cyAtLS0gc3RpY2sgdG8gZnVuY3Rpb25zIGFuZCBtZXRob2RzLg0KDQogICAg
UHl0aG9uIGlzIG5vdCBwcmltYXJpbHkgYSBudW1lcmljYWwgbGFuZ3VhZ2Uu
ICBJdCBpcyBub3Qgd29ydGgNCiAgICBjb21wbGV4aWZ5aW5nIHRoZSBsYW5n
dWFnZSBmb3IgdGhpcyBzcGVjaWFsIGNhc2UgLS0tIE51bVB5J3MNCiAgICBz
dWNjZXNzIGlzIHByb29mIHRoYXQgdXNlcnMgY2FuIGFuZCB3aWxsIHVzZSBm
dW5jdGlvbnMgYW5kIG1ldGhvZHMNCiAgICBmb3IgbGluZWFyIGFsZ2VicmEu
DQoNCiAgICBPbiB0aGUgcG9zaXRpdmUgc2lkZSwgdGhpcyBtYWludGFpbnMg
UHl0aG9uJ3Mgc2ltcGxpY2l0eS4gIEl0cw0KICAgIHdlYWtuZXNzIGlzIHRo
YXQgc3VwcG9ydCBmb3IgcmVhbCBtYXRyaXggbXVsdGlwbGljYXRpb24gKGFu
ZCwgdG8gYQ0KICAgIGxlc3NlciBleHRlbnQsIG90aGVyIGxpbmVhciBhbGdl
YnJhIG9wZXJhdGlvbnMpIGlzIGZyZXF1ZW50bHkNCiAgICByZXF1ZXN0ZWQs
IGFzIGZ1bmN0aW9uYWwgZm9ybXMgYXJlIGN1bWJlcnNvbWUgZm9yIGxlbmd0
aHkNCiAgICBmb3JtdWxhcywgYW5kIGRvIG5vdCByZXNwZWN0IHRoZSBvcGVy
YXRvciBwcmVjZWRlbmNlIHJ1bGVzIG9mDQogICAgY29udmVudGlvbmFsIG1h
dGhlbWF0aWNzLiAgSW4gYWRkaXRpb24sIHRoZSBtZXRob2QgZm9ybSBpcw0K
ICAgIGFzeW1tZXRyaWMgaW4gaXRzIG9wZXJhbmRzLg0KDQogICAgMDIuIElu
dHJvZHVjZSBwcmVmaXhlZCBmb3JtcyBvZiBleGlzdGluZyBvcGVyYXRvcnMs
IHN1Y2ggYXMgIkAqIg0KICAgICAgICBvciAifioiLCBvciB1c2VkIGJveGVk
IGZvcm1zLCBzdWNoIGFzICJbKl0iIG9yICIlKiUiLg0KDQogICAgVGhlcmUg
YXJlIChhdCBsZWFzdCkgdGhyZWUgb2JqZWN0aW9ucyB0byB0aGlzLiAgRmly
c3QsIGVpdGhlciBmb3JtDQogICAgc2VlbXMgdG8gaW1wbHkgdGhhdCBhbGwg
b3BlcmF0b3JzIGV4aXN0IGluIGJvdGggZm9ybXMuICBUaGlzIGlzDQogICAg
bW9yZSBuZXcgZW50aXRpZXMgdGhhbiB0aGUgcHJvYmxlbSBtZXJpdHMsIGFu
ZCB3b3VsZCByZXF1aXJlIHRoZQ0KICAgIGFkZGl0aW9uIG9mIG1hbnkgbmV3
IG92ZXJsb2FkYWJsZSBtZXRob2RzLCBzdWNoIGFzIF9fYXRfbXVsX18uDQoN
CiAgICBTZWNvbmQsIHdoaWxlIGl0IGlzIGNlcnRhaW5seSBwb3NzaWJsZSB0
byBpbnZlbnQgc2VtYW50aWNzIGZvcg0KICAgIHRoZXNlIG5ldyBvcGVyYXRv
cnMgZm9yIGJ1aWx0LWluIHR5cGVzLCB0aGlzIHdvdWxkIGJlIGEgY2FzZSBv
Zg0KICAgIHRoZSB0YWlsIHdhZ2dpbmcgdGhlIGRvZywgaS5lLiBvZiBsZXR0
aW5nIHRoZSBleGlzdGVuY2Ugb2YgYQ0KICAgIGZlYXR1cmUgImNyZWF0ZSIg
YSBuZWVkIGZvciBpdC4NCg0KICAgIEZpbmFsbHksIHRoZSBib3hlZCBmb3Jt
cyBtYWtlIGh1bWFuIHBhcnNpbmcgbW9yZSBjb21wbGV4LCBlLmcuOg0KDQog
ICAgICAgIEFbKl0gPSBCICAgIHZzLiAgICBBWzpdID0gQg0KDQogICAgMDMu
IChGcm9tIE1vc2hlIFphZGthIFs3XSwgYW5kIGFsc28gY29uc2lkZXJlZCBi
eSBIdWFpeXUgWmhvdSBbOF0NCiAgICAgICAgaW4gaGlzIHByb3Bvc2FsIFs5
XSkgUmV0YWluIHRoZSBleGlzdGluZyBtZWFuaW5nIG9mIGFsbA0KICAgICAg
ICBvcGVyYXRvcnMsIGJ1dCBjcmVhdGUgYSBiZWhhdmlvcmFsIGFjY2Vzc29y
IGZvciBhcnJheXMsIHN1Y2gNCiAgICAgICAgdGhhdDoNCg0KICAgICAgICAg
ICAgQSAqIEINCg0KICAgICAgICBpcyBlbGVtZW50d2lzZSBtdWx0aXBsaWNh
dGlvbiAoTUUpLCBidXQ6DQoNCiAgICAgICAgICAgIEEubSgpICogQi5tKCkN
Cg0KICAgICAgICBpcyBtYXRoZW1hdGljYWwgbXVsdGlwbGljYXRpb24gKE1N
KS4gIFRoZSBtZXRob2QgIkEubSgpIiB3b3VsZA0KICAgICAgICByZXR1cm4g
YW4gb2JqZWN0IHRoYXQgYWxpYXNlZCBBJ3MgbWVtb3J5IChmb3IgZWZmaWNp
ZW5jeSksIGJ1dA0KICAgICAgICB3aGljaCBoYWQgYSBkaWZmZXJlbnQgaW1w
bGVtZW50YXRpb24gb2YgX19tdWxfXygpLg0KDQogICAgVGhlIGFkdmFudGFn
ZSBvZiB0aGlzIG1ldGhvZCBpcyB0aGF0IGl0IGhhcyBubyBlZmZlY3Qgb24g
dGhlDQogICAgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uOiBj
aGFuZ2VzIGFyZSBsb2NhbGl6ZWQgaW4gdGhlDQogICAgTnVtZXJpYyBtb2R1
bGUuICBUaGUgZGlzYWR2YW50YWdlcyBhcmU6DQoNCiAgICAoYSkgVGhlIHNl
bWFudGljcyBvZiAiQS5tKCkgKiBCIiwgIkEgKyBCLm0oKSIsIGFuZCBzbyBv
biB3b3VsZA0KICAgICAgICBoYXZlIHRvIGJlIGRlZmluZWQsIGFuZCB0aGVy
ZSBpcyBubyAib2J2aW91cyIgY2hvaWNlIGZvciB0aGVtLg0KDQogICAgKGIp
IEFsaWFzaW5nIG9iamVjdHMgdG8gdHJpZ2dlciBkaWZmZXJlbnQgb3BlcmF0
b3IgYmVoYXZpb3IgZmVlbHMNCiAgICAgICAgbGVzcyBQeXRob25pYyB0aGFu
IGVpdGhlciBjYWxsaW5nIG1ldGhvZHMgKGFzIGluIHRoZSBleGlzdGluZw0K
ICAgICAgICBOdW1lcmljIG1vZHVsZSkgb3IgdXNpbmcgYSBkaWZmZXJlbnQg
b3BlcmF0b3IuICBUaGlzIFBFUCBpcw0KICAgICAgICBwcmltYXJpbHkgYWJv
dXQgbG9vayBhbmQgZmVlbCwgYW5kIGFib3V0IG1ha2luZyBQeXRob24gbW9y
ZQ0KICAgICAgICBhdHRyYWN0aXZlIHRvIHBlb3BsZSB3aG8gYXJlIG5vdCBh
bHJlYWR5IHVzaW5nIGl0Lg0KDQogICAgMDQuIChGcm9tIGEgcHJvcG9zYWwg
WzldIGJ5IEh1YWl5dSBaaG91IFs4XSkgSW50cm9kdWNlIGEgImRlbGF5ZWQN
CiAgICAgICAgaW52ZXJzZSIgYXR0cmlidXRlLCBzaW1pbGFyIHRvIHRoZSAi
dHJhbnNwb3NlIiBhdHRyaWJ1dGUNCiAgICAgICAgYWR2b2NhdGVkIGluIHRo
ZSB0aGlyZCBwYXJ0IG9mIHRoaXMgcHJvcG9zYWwuICBUaGUgZXhwcmVzc2lv
bg0KICAgICAgICAiYS5JIiB3b3VsZCBiZSBhIGRlbGF5ZWQgaGFuZGxlIG9u
IHRoZSBpbnZlcnNlIG9mIHRoZSBtYXRyaXgNCiAgICAgICAgImEiLCB3aGlj
aCB3b3VsZCBiZSBldmFsdWF0ZWQgaW4gY29udGV4dCBhcyByZXF1aXJlZC4g
IEZvcg0KICAgICAgICBleGFtcGxlLCAiYS5JICogYiIgYW5kICJiICogYS5J
IiB3b3VsZCBzb2x2ZSBzZXRzIG9mIGxpbmVhcg0KICAgICAgICBlcXVhdGlv
bnMsIHdpdGhvdXQgYWN0dWFsbHkgY2FsY3VsYXRpbmcgdGhlIGludmVyc2Uu
DQoNCiAgICBUaGUgbWFpbiBkcmF3YmFjayBvZiB0aGlzIHByb3Bvc2FsIGl0
IGlzIHJlbGlhbmNlIG9uIGxhenkNCiAgICBldmFsdWF0aW9uLCBhbmQgZXZl
biBtb3JlIG9uICJzbWFydCIgbGF6eSBldmFsdWF0aW9uIChpLmUuIHRoZQ0K
ICAgIG9wZXJhdGlvbiBwZXJmb3JtZWQgZGVwZW5kcyBvbiB0aGUgY29udGV4
dCBpbiB3aGljaCB0aGUgZXZhbHVhdGlvbg0KICAgIGlzIGRvbmUpLiAgVGhl
IEJERkwgaGFzIHNvIGZhciByZXNpc3RlZCBpbnRyb2R1Y2luZyBMRSBpbnRv
DQogICAgUHl0aG9uLg0KDQoNClJlbGF0ZWQgUHJvcG9zYWxzDQoNCiAgICAw
MjAzIDogIEF1Z21lbnRlZCBBc3NpZ25tZW50cw0KDQogICAgICAgICAgICBJ
ZiBuZXcgb3BlcmF0b3JzIGZvciBsaW5lYXIgYWxnZWJyYSBhcmUgaW50cm9k
dWNlZCwgaXQgbWF5DQogICAgICAgICAgICBtYWtlIHNlbnNlIHRvIGludHJv
ZHVjZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmb3JtcyBmb3INCiAgICAgICAg
ICAgIHRoZW0uDQoNCiAgICAwMjA3IDogIFJpY2ggQ29tcGFyaXNvbnMNCg0K
ICAgICAgICAgICAgSXQgbWF5IGJlY29tZSBwb3NzaWJsZSB0byBvdmVybG9h
ZCBjb21wYXJpc29uIG9wZXJhdG9ycw0KICAgICAgICAgICAgc3VjaCBhcyAn
PCcgc28gdGhhdCBhbiBleHByZXNzaW9uIHN1Y2ggYXMgJ0EgPCBCJyByZXR1
cm5zDQogICAgICAgICAgICBhbiBhcnJheSwgcmF0aGVyIHRoYW4gYSBzY2Fs
YXIgdmFsdWUuDQoNCiAgICAwMjA5IDogIEFkZGluZyBNdWx0aWRpbWVuc2lv
bmFsIEFycmF5cw0KDQogICAgICAgICAgICBNdWx0aWRpbWVuc2lvbmFsIGFy
cmF5cyBhcmUgY3VycmVudGx5IGFuIGV4dGVuc2lvbiB0bw0KICAgICAgICAg
ICAgUHl0aG9uLCByYXRoZXIgdGhhbiBhIGJ1aWx0LWluIHR5cGUuDQoNCg0K
QWNrbm93bGVkZ21lbnRzOg0KDQogICAgSSBhbSBncmF0ZWZ1bCB0byBIdWFp
eXUgWmh1IFs4XSBmb3IgaW5pdGlhdGluZyB0aGlzIGRpc2N1c3Npb24sDQog
ICAgYW5kIGZvciBzb21lIG9mIHRoZSBpZGVhcyBhbmQgdGVybWlub2xvZ3kg
aW5jbHVkZWQgYmVsb3cuDQoNCg0KUmVmZXJlbmNlczoNCg0KICAgIFsxXSBo
dHRwOi8vd3d3LmFjbS5vcmcvc2lnYXBsL3doeWFwbC5odG0NCiAgICBbMl0g
aHR0cDovL251bXB5LnNvdXJjZWZvcmdlLm5ldA0KICAgIFszXSBQRVAtMDIw
My50eHQgIkF1Z21lbnRlZCBBc3NpZ25tZW50cyIuDQogICAgWzRdIGh0dHA6
Ly9iZXZvLmNoZS53aXNjLmVkdS9vY3RhdmUvZG9jL29jdGF2ZV85Lmh0bWwj
U0VDNjkNCiAgICBbNV0gaHR0cDovL3d3dy5weXRob24ub3JnL3BpcGVybWFp
bC9weXRob24tZGV2LzIwMDAtSnVseS8wMTMxMzkuaHRtbA0KICAgIFs2XSBQ
RVAtMDIwMS50eHQgIkxvY2tzdGVwIEl0ZXJhdGlvbiINCiAgICBbN10gTW9z
aGUgWmFka2EgaXMgJ21vc2hlekBtYXRoLmh1amkuYWMuaWwnLg0KICAgIFs4
XSBIdWFpeXUgWmh1IGlzICdoemh1QHVzZXJzLnNvdXJjZWZvcmdlLm5ldCcN
CiAgICBbOV0gaHR0cDovL3d3dy5weXRob24ub3JnL3BpcGVybWFpbC9weXRo
b24tbGlzdC8yMDAwLUF1Z3VzdC8xMTI1MjkuaHRtbA0KDQoMDQpMb2NhbCBW
YXJpYWJsZXM6DQptb2RlOiBpbmRlbnRlZC10ZXh0DQppbmRlbnQtdGFicy1t
b2RlOiBuaWwNCkVuZDoNCg==
--168427786-36668808-966001178=:13482--