From owner-sc22wg5+sc22wg5-dom8=www.open-std.org@open-std.org Fri Mar 29 16:58:30 2013 Return-Path: X-Original-To: sc22wg5-dom8 Delivered-To: sc22wg5-dom8@www.open-std.org Received: by www.open-std.org (Postfix, from userid 521) id 94154356C98; Fri, 29 Mar 2013 16:58:30 +0100 (CET) Delivered-To: sc22wg5@open-std.org Received: from ppsw-41.csi.cam.ac.uk (ppsw-41.csi.cam.ac.uk [131.111.8.141]) by www.open-std.org (Postfix) with ESMTP id C4A66356618 for ; Fri, 29 Mar 2013 16:58:28 +0100 (CET) X-Cam-AntiVirus: no malware found X-Cam-SpamDetails: not scanned X-Cam-ScannerInfo: http://www.ucs.cam.ac.uk/email/scanner/ Received: from hermes-1.csi.cam.ac.uk ([131.111.8.51]:32841) by ppsw-41.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.156]:25) with esmtpa (EXTERNAL:nmm1) id 1ULbhE-0000p2-Qq (Exim 4.72) (return-path ); Fri, 29 Mar 2013 15:58:28 +0000 Received: from prayer by hermes-1.csi.cam.ac.uk (hermes.cam.ac.uk) with local (PRAYER:nmm1) id 1ULbhE-0000vX-9O (Exim 4.72) (return-path ); Fri, 29 Mar 2013 15:58:28 +0000 Received: from [87.112.179.244] by webmail.hermes.cam.ac.uk with HTTP (Prayer-1.3.5); 29 Mar 2013 15:58:28 +0000 Date: 29 Mar 2013 15:58:28 +0000 From: "N.M. Maclaren" To: John Reid , WG5 Subject: Re: WG5 ballot on first draft TS 18508, Additional Parallel Features in Fortran (Update) Message-ID: In-Reply-To: <20130329104945.2C28A356BB3@www.open-std.org> References: <20130329104945.2C28A356BB3@www.open-std.org> X-Mailer: Prayer v1.3.5 Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="-1870869256-1804289383-1364572708=:495" Sender: owner-sc22wg5@open-std.org Precedence: bulk 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. ---1870869256-1804289383-1364572708=:495 Content-Type: text/plain; format=flowed; charset=ISO-8859-1 To avoid me forgetting, here is an updated version of my response, which I would like to replace my previous one. It has only two changes: I have updated slightly in the light of the discussions on image failure. I have made some important changes where I may have got the theory of data consistency wrong, and to provide references to models that may well answer our requirements. Those are important, but may be ignored except by people considering those aspects. I am still continuing discussions on the latter, and hope to produce something for consideration (NOT as part of this vote) shortly. Regards, Nick Maclaren. ---1870869256-1804289383-1364572708=:495 Content-Type: text/plain; name=Additional_coarray.txt Content-Disposition: attachment; filename=Additional_coarray.txt Content-Description: Additional_coarray.txt Content-Transfer-Encoding: BASE64 UGxlYXNlIGFuc3dlciB0aGUgZm9sbG93aW5nIHF1ZXN0aW9uICJJcyBOMTk2 NyByZWFkeSBmb3IgZm9yd2FyZGluZyB0bwpTQzIyIGFzIHRoZSBEVFM/IiBp biBvbmUgb2YgdGhlc2Ugd2F5cy4KCiAgICAzKSBObywgZm9yIHRoZSBmb2xs b3dpbmcgcmVhc29ucy4KCgoKSSBoYXZlIG5vdCBoYWQgdGltZSB0byBjcm9z cy1jaGVjayBvbiBhbGwgb2YgdGhlIGRldGFpbHMgb2YgTjE5NjcKYWdhaW5z dCBGb3J0cmFuIDIwMDgsIHNvIHRoZXNlIGFyZSBub3QgbmVjZXNzYXJpbHkg YWxsIG9mIG15IG9iamVjdGlvbnMuCgpBdCB0aGUgZW5kIG9mIG15IHJlYXNv bnMsIEkgYXBwZW5kIHNvbWUgcHJvcG9zYWxzIGZvciBpbXByb3ZlbWVudCwg YnV0CnRoZSBsYXJnZXN0IG9uZSBpcyBhIHJvdWdoIGRyYWZ0LgoKCgpSRUFT T05TIEZPUiBWT1RJTkcgTk8KLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tLS0t LS0tLS0tLS0tLS0tLS0tLQoKR2VuZXJpYwotLS0tLS0tCgogICAgMS4xKSBU aGUgd29yZGluZyByZWZlcnMgdG8gY2FzZXMgd2hlbiB0aGUgZXhlY3V0aW9u IG9mIGEgc3RhdGVtZW50CmlzIG5vdCBzdWNjZXNzZnVsLCBidXQgRm9ydHJh biAyMDA4IHJlZmVycyB0byBlcnJvciBjb25kaXRpb25zLiAgVGhpcyBpcwpj b25mdXNpbmcsIGF0IGJlc3QsIGFuZCB0aGV5IHNob3VsZCB1c2UgY29tcGF0 aWJsZSB0ZXJtaW5vbG9neS4gIEl0IGlzCm1vcmUgc2VyaW91cyB3aGVuIG9u ZSBjb25zaWRlcnMgbm9kZSBmYWlsdXJlLgoKICAgIDEuMikgVGhhdCBpcyBu b3QgdGhlIG9ubHkgYXNwZWN0IGluIHdoaWNoIHRoZSBkZXRhaWxzIGRpZmZl ci4KVGhlIHdvcmRpbmcgYW5kIG90aGVyIGRldGFpbHMgbmVlZCBhIHN5c3Rl bWF0aWMgY2hlY2sgYW5kIGltcHJvdmVtZW50LgoKICAgIDEuMykgSSBhbSBk aXN0aW5jdGx5IHVuaGFwcHkgYWJvdXQgdGhlIG51bWJlciBvZiBwbGFjZXMg d2hlcmUKc2VtYW50aWNzIGFyZSBkZWZpbmVkIGZvciBlcnJvciBjb25kaXRp b25zIHRoYXQgYXJlIGNhdXNlZCBieQppbmZyYXN0cnVjdHVyZSBmYWlsdXJl LCB3aGljaCBpcyBub3QgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBGb3J0cmFu CnN0YW5kYXJkJ3MgcHJldmlvdXMgcHJhY3RpY2UuICBTVEFUX0ZBSUxFRF9J TUFHRSBpcyBtZW50aW9uZWQgbGF0ZXIsIGJ1dAp0aGlzIGlzIGFsc28gZG9u ZSBmb3IgZXZlbnRzLgoKICAgIDEuNCkgVGhlIGN1cnJlbnQgZG9taW5hdGlu ZyBzdGFuZGFyZCBmb3IgcGFyYWxsZWwgcHJvY2Vzc2luZyBpcyBNUEksCmFu ZCBpdHMgYmFzaWMgbW9kZWwgaGFzIHByb3ZlbiB0byBiZSBzb2xpZCBvdmVy IG1hbnkgeWVhcnMuICBUaGlzIFRTCnByb3ZpZGVzIG1hbnkgY29tcGFyYWJs ZSBmYWNpbGl0aWVzLCBidXQgZG9lcyBub3Qgc2VlbSB0byBoYXZlIGluY2x1 ZGVkCnRoZSBjb21wYXJhYmxlIGNvbnN0cmFpbnRzIG5lZWRlZCBmb3IgY29y cmVjdG5lc3MgYW5kIGltcGxlbWVudGFiaWxpdHkuClRoaXMgYXBwbGllcyBw YXJ0aWN1bGFybHkgdG8gdGVhbXMsIGJ1dCBhbHNvIHRvIGNvbGxlY3RpdmVz LgoKClRlYW1zCi0tLS0tCgpJIGhhdmUgc2VyaW91cyBkaWZmaWN1bHR5IGV2 ZW4gdW5kZXJzdGFuZGluZyB0aGUgYmFzaWMgbW9kZWwsIGFuZCBpdAphcHBl YXJzIHRvIG1ha2UgbGl0dGxlIHNlbnNlLiAgRk9STSBTVUJURUFNIGlzIHNw ZWNpZmllZCB0byBiZSBhbgpvcmRpbmFyeSBzdGF0ZW1lbnQgY3JlYXRpbmcg YSB2YXJpYWJsZSwgYW5kIGFsbCBzeW5jaHJvbmlzYXRpb24gaXMgaW4KQ0hB TkdFIFRFQU0sIHVzaW5nIGEgdmFyaWFibGUgZGVmaW5lZCBieSBhIHByZXZp b3VzIEZPUk0gU1VCVFJFQU0Kc3RhdGVtZW50LiAgQWxsIG9mIHRoZSBkZXNj cmlwdGlvbnMgb2Ygd2hpY2ggdGVhbSBpcyBiZWluZyByZWZlcnJlZCB0bwph cmUgaW4gdGVybXMgb2YgYSB2YXJpYWJsZSwgYW5kIG5vdCBhIHZhbHVlLiAg VGhlIGZvbGxvd2luZyBhcmUgYSBmZXcgb2YKdGhlIGlzc3VlcyB0aGlzIGNh dXNlcy4KCiAgICAyLjEpIFdoYXQgaGFwcGVucyBpZiBvbmx5IHNvbWUgaW1h Z2VzIGluIHRoZSBjdXJyZW50IHRlYW0gaGF2ZQpjYWxsZWQgRk9STSBTVUJU RUFNPyAgSG93IGRvZXMgQ0hBTkdFIFRFQU0ga25vdyB3aGljaCBvdGhlciBp bWFnZXMgdG8Kd2FpdCBvbj8KCiAgICAyLjIpIEluIHRoZSBmb2xsb3dpbmcs IGRvIGFsZiBhbmQgYmVydCBpbmRpY2F0ZSB0aGUgc2FtZSBzdWJ0ZWFtPwpB bmQgaXMgaXQgYWxsb3dlZCB0byBjcmVhdGUgdHdvIGRpZmZlcmVudCB0ZWFt cyBhdCB0aGUgc2FtZSBsZXZlbCwgYXMgaW4KYmVydCBhbmQgY29saW4/ICBB bmQgaG93IGRvIG90aGVyIGltYWdlcyBrbm93IHdoaWNoIG9mIHRoZXNlIEZP Uk0KU1VCVEVBTSBzdGF0ZW1lbnRzIG1hdGNoZXMgdGhlIEZPUk0gU1VCVEVB TSBzdGF0ZW1lbnQgb24gdGhlaXIgaW1hZ2U/CgogICAgVEVBTV9UWVBFIGFs ZiwgYmVydCwgY29saW4sIGRhdmUKICAgIEZPUk0gU1VCVEVBTSAoMTMsIGFs ZikKICAgIEZPUk0gU1VCVEVBTSAoMTMsIGJlcnQpCiAgICBGT1JNIFNVQlRF QU0gKDY2NiwgY29saW4pCgogICAgMi4zKSBGb3J0cmFuIGRlZmluZXMgaW50 cmluc2ljIGFzc2lnbm1lbnQgZm9yIGRlcml2ZWQgdHlwZXM7IGV2ZW4gaWYK dGhhdCB3ZXJlIGxvY2tlZCBvdXQsIHNldmVyYWwgYXJndW1lbnQgcGFzc2lu ZyBtZWNoYW5pc21zIGltcGx5IGltcGxpY2l0CmNvcHlpbmcuICBUaGUgbmVh cmVzdCB0aGF0IEZvcnRyYW4gaGFzIHRvIHRoZSBjb25jZXB0IG9mIHR3byB2 YXJpYWJsZXMKYmVpbmcgdGhlIHNhbWUgaXMgYXNzb2NpYXRpb24uICBJdCBp cyBub3Qgd2l0aGluIHRoZSByZW1pdCBvZiB0aGlzIFRTIHRvCmFkZCBhIG1h am9yIG5ldywgZnVuZGFtZW50YWwgc2VtYW50aWMgY29uY2VwdHMgdG8gRm9y dHJhbiwgc3VjaCBhcwp1bmFzc29jaWF0YWJsZSBvYmplY3RzLiAgRm9yIGV4 YW1wbGUsIGluOgoKICAgIFRFQU1fVFlQRSBhbGYsIGJlcnQKICAgIEZPUk0g U1VCVEVBTSAoMTMsIGFsZikKICAgIGJlcnQgPSBhbGYKICAgIEZPUk0gU1VC VEVBTSAoNDIsIGJlcnQpCgpvcjoKCiAgICBURUFNX1RZUEUgYWxmCiAgICBG T1JNIFNVQlRFQU0gKDEzLCBhbGYpCiAgICBDQUxMIHVnaChhbGYpCgogICAg U1VCUk9VVElORSB1Z2ggKFRFQU1fVFlQRSBhcmcpCiAgICAgICAgRk9STSBT VUJURUFNICg0MiwgYXJnKQogICAgRU5EIFNVQlJPVVRJTkUgdWdoCgogICAg Mi40KSBUaGUgZm9sbG93aW5nIGlzIGFsbG93ZWQgYnkgdGhlIHNwZWNpZmlj YXRpb24sIGJ1dCBpdCBtYWtlcyBubwpzZW5zZS4gIFNwZWNpZnlpbmcgc3lu Y2hyb25pc2F0aW9uIGJ5IGhvdyBvZnRlbiBDSEFOR0UgVEVBTSBpcyBjYWxs ZWQKZG9lc24ndCB3b3JrIGlmIGl0cyBhcmd1bWVudCBtYXkgYmUgdmFyaWFi bGUgYW5kIHRoZXJlIGFyZSBubyBmdXJ0aGVyCmNvbnN0cmFpbnRzLgoKICAg IFRFQU1fVFlQRSBhcnJheShOVU1fSU1BR0VTKCkpCiAgICAvLyBTZXQgdXAg c29tZWhvdwogICAgUkVBTCA6OiBqdW5rCiAgICBDQUxMIFJBTkRPTV9OVU1C RVIoanVuaykKICAgIENIQU5HRSBURUFNIChhcnJheShqdW5rKlRISVNfSU1B R0UoKSsxKSkKICAgICAgICAuLi4KICAgIEVORCBURUFNCgogICAgMi41KSBB bGxvd2luZyBzdWJ0ZWFtIHZhcmlhYmxlcyBpbiBDSEFOR0UgVEVBTSB3aXRo IG5vIGZ1cnRoZXIKY29uc3RyYWludHMgYWxsb3dzIG5vbi1oaWVyYXJjaGlj YWwgdGVhbSB1c2FnZSwgd2hpY2ggd2FzIG5vdCB0aGUgaW50ZW50Cm9mIE4x OTMwIFQzLgoKICAgIFRFQU1fVFlQRSBhbGYsIGJlcnQsIGNvbGluCiAgICBG T1JNIFNVQlRFQU0gKDEzLCBhbGYpCiAgICBDSEFOR0UgVEVBTSAoYWxmKQog ICAgICAgIEZPUk0gU1VCVEVBTSAoNDIsIGJlcnQpCiAgICBFTkQgVEVBTQog ICAgRk9STSBTVUJURUFNICg2NjYsIGNvbGluKQogICAgQ0hBTkdFIFRFQU0g KGNvbGluKQogICAgICAgIENIQU5HRSBURUFNIChiZXJ0KQogICAgICAgICAg ICAuLi4KICAgICAgICBFTkQgVEVBTQogICAgRU5EIFRFQU0KICAgCiAgICAy LjYpIFRoZSBpc3N1ZSBkZXNjcmliZWQgaW4gMi40IGFsc28gYWxsb3dzIFNZ TkMgVEVBTSB0byBzeW5jaHJvbmlzZQp0ZWFtcyB3aGljaCBhcmUgbm90IHRo ZSBjdXJyZW50IHRlYW0gb3Igb25lIG9mIGl0cyBkZXNjZW5kYW50cy4gIFRo aXMKaXMsIGF0IGJlc3QsIGEgcmVjaXBlIGZvciBkZWFkbG9jay4gIEV2ZW4g YWxsb3dpbmcgaXQgb24gYW5jZXN0b3JzCmludHJvZHVjZXMgYSBjb25mbGlj dCB3aXRoIE4xOTMwIFQxIGFuZCBUMi4gIEFsc28sIEkgY2Fubm90IHNlZSB0 aGF0IHRoZQpzdGF0ZW1lbnQgaXMgcmVxdWlyZWQgYnkgTjE5MzAsIG9yIGFj dHVhbGx5IG5lY2Vzc2FyeS4gIEl0IGNhbiBiZSBkb25lCmJ5IHRlbXBvcmFy aWx5IGNoYW5naW5nIHRlYW0gYW5kIGNhbGxpbmcgU1lOQyBBTEwuCgpUaGVy ZSBhcmUgb3RoZXIgcHJvYmxlbXMsIHRvbywgc3VjaCBhczoKCiAgICAyLjcp IEluIHRoZSBzcGVjaWZpY2F0aW9uIG9mIENIQU5HRSBURUFNLCB0aGUgY3Vy cmVudCB0ZWFtIHdoZW4gdGhlCkNIQU5HRSBURUFNIHdhcyBleGVjdXRlZCBp cyBub3QgbmVjZXNzYXJpbHkgdGhlIHBhcmVudCBvZiB0aGUgdGVhbSB0aGF0 CmlzIGJlaW5nIGNoYW5nZWQgdG8sIHNvIHNwZWNpZnlpbmcgc3luY2hyb25p c2F0aW9uIG9mIHRoZSBwYXJlbnQgdGVhbSBpcwppbmNvcnJlY3QuCgogICAg Mi44KSBJIGhhdmUgdHJpZWQgdG8gY29udmluY2UgbXlzZWxmIHRoYXQgY29y cmVjdCBwcm9ncmFtcyB3aWxsIG5vdApkZWFkbG9jaywgYW5kIEkgaGF2ZSB0 cmllZCB0byBjb252aW5jZSBteXNlbGYgdGhhdCBjb3JyZWN0IHByb2dyYW1z IGNhbgpkZWFkbG9jaywgYW5kIGhhdmUgZmFpbGVkIHdpdGggYm90aC4gIFRo ZSBkZXNpZ24gaXMganVzdCB0b28gY29tcGxpY2F0ZWQKdG8gYmUgc3VyZSBp dCBpcyBjb3JyZWN0LgoKICAgIDIuOSkgVGhlIGRlc2lnbiB2ZXJ5IGR1Ymlv dXNseSBtZWV0cyB0aGUgcmVxdWlyZW1lbnQgTjE5MzAgVDIsCmJlY2F1c2Ug YW4gaW1hZ2UgYmVsb25ncyB0byBhbGwgb2YgdGhlIHRlYW1zIHRoYXQgaXQg aGFzIGZvcm1lZCBhbmQgY2FuCnVzZSB0aGVtLCB3aGljaCBpcyB0aGUgY2F1 c2Ugb2YgdGhlIFNZTkMgVEVBTSBwcm9ibGVtcy4KCiAgICAyLjEwKSBUaGVy ZSBhcmUgc29tZSB2ZXJ5IG5hc3R5IGlzc3VlcyB0byBkbyB3aXRoIHJlc291 cmNlIGxlYWthZ2UKaWYgdGhlc2UgZmFjaWxpdGllcyBhcmUgdXNlZCBpbiBh IGxpYnJhcnkuICBGT1JNIFNVQlRFQU1TIGNyZWF0ZXMgYQpoYW5kbGUgdG8g c29tZXRoaW5nIG9yIG90aGVyLCBidXQgdGhlcmUgaXMgbm8gd2F5IHRvIHJl bGVhc2UgdGhhdApoYW5kbGUuICBUaGlzIHdvdWxkIGJlIGVhc2lseSBzb2x1 YmxlIG9ubHkgaWYgaXRzIGZ1bmN0aW9uIHdlcmUgc3Vic3VtZWQKaW50byBD SEFOR0UgVEVBTS4KCiAgICAyLjExKSBJdCBoYXMgb21pdHRlZCB0aGUgcXVh bGlmaWNhdGlvbiBpbiBMT0NLIGFuZCBVTkxPQ0sgdGhhdApzZW1hbnRpY3Mg YXJlIGRlZmluZWQgb25seSBmb3Igc3VjY2Vzc2Z1bCBleGVjdXRpb24gb2Yg dGhlIHN0YXRlbWVudHMuClRoaXMgaXMgYSB2YXJpYW50IG9mIHJlYXNvbiAx LjEuCgoKQ29uY2x1c2lvbjogdGhlIGNvbnN0cmFpbnRzIG9uIHRlYW0gYWN0 aW9ucyBhbmQgdGhlIHNlbWFudGljcyBvZiB0ZWFtcwpuZWVkIGEgY29tcGxl dGUgcmV0aGluay4KCgoKQ29sbGVjdGl2ZXMKLS0tLS0tLS0tLS0KCiAgICAz LjEpIENPX1JFRFVDRSByZXF1aXJlcyBjb21tdXRhdGl2aXR5IGJ1dCBub3Qg YXNzb2NpYXRpdml0eSBvZgpPUEVSQVRPUiwgd2hpY2ggbWFrZXMgbm8gc2Vu c2UuICBNUEkgcmVxdWlyZXMgYXNzb2NpYXRpdml0eSBidXQgbm90CmNvbW11 dGF0aXZpdHksIHdoaWNoIGF0IGxlYXN0IG1ha2VzIHNlbnNlLiAgSXQgc2hv dWxkIHJlcXVpcmUgYm90aC4KCiAgICAzLjIpIEFsc28sIGl0IGRvZXMgbm90 IHNwZWNpZnkgYW55dGhpbmcgYWJvdXQgdGhlIGNvbnNpc3RlbmN5IG9mCk9Q RVJBVE9SLCB3aGljaCBpcyBhIHJlY2lwZSBmb3IgcHJvYmxlbXMuICBJIGhh dmUgc2VyaW91cyBkaWZmaWN1bHR5IGluCnVuZGVyc3RhbmRpbmcgdGhlIGNv bWJpbmF0aW9uIG9mIEM3MzAsIEMxMjE4LCBDMTIyMCwgQzEyMzQgYW5kIDEy LjQuMy42CnBhcmFncmFwaCA3LCBidXQgY2FuIGJlbGlldmUgdGhhdCB0aGUg cmVxdWlyZW1lbnQgZm9yIGFuIGVsZW1lbnRhbApmdW5jdGlvbiBtZWFucyB0 aGF0IGl0IG11c3QgYmUgdGhlIHNhbWUgZnVuY3Rpb24uICBIb3dldmVyLCB0 aGF0IGlzIG5vdAplbm91Z2ggKHNlbWFudGljYWxseSkgYmVjYXVzZSBvZiBn bG9iYWwgb3IgcGFyZW50IHNjb3BlIHZhcmlhYmxlcyBhbmQKVEhJU19JTUFH RSgpLiAgVGhpcyBzaG91bGQgYmUgaW1wcm92ZWQuCgogICAgMy4zKSBUaGUg c3BlY2lmaWNhdGlvbiBvZiB0aGUgb3JkZXJpbmcgb2YgY29sbGVjdGl2ZSBz dWJyb3V0aW5lcwptYWtlcyBzZW5zZSBhbmQgaXMgd2hhdCB3ZSBhZ3JlZWQs IGJ1dCByZW1haW5zIGNvbmZ1c2luZy4gIEEgTk9URSBzaG91bGQKYmUgYWRk ZWQgdG8gY2xhcmlmeSBvdXIgaW50ZW50LgoKICAgIDMuNCkgVGhlcmUgaXMg YSBwb3RlbnRpYWxseSBzZXJpb3VzIGludGVyYWN0aW9uIGJldHdlZW4gY29s bGVjdGl2ZXMKYW5kIGF0b21pY3MsIGFzIGZhciBhcyBjb25zaXN0ZW5jeSBn b2VzLCBiZWNhdXNlIGJvdGggY2FuIGJlIHVzZWQgdG8KcGFzcyBpbmZvcm1h dGlvbiBiZXR3ZWVuIHVub3JkZXJlZCBzZWdtZW50cy4gIFNlZSBEYXRhIENv bnNpc3RlbmN5CmJlbG93LgoKCgpFdmVudHMKLS0tLS0tCgogICAgNC4xKSBJ IGFtIGJhZmZsZWQgYnkgdGhlIHJlZmVyZW5jZSB0byBJTlRFTlQoSU5PVVQp IGluIEM2MDIgYW5kCkM2MDMuICBJbiBwYXJ0aWN1bGFyLCBib3RoIEVWRU5U IFBPU1QgYW5kIEVWRU5UIFdBSVQgbmVjZXNzYXJpbHkgYm90aApyZWFkIGFu ZCB3cml0ZSB0aGUgdmFyaWFibGUsIHNvIGl0IHNlZW1zIGJpemFycmUgdG8g bG9jayBvdXQgdGhlIG9ubHkKY2FzZSB0aGF0IG1ha2VzIHNlbWFudGljIHNl bnNlLiAgTmVpdGhlciBvZiB0aG9zZSBzdGF0ZW1lbnRzIG1ha2UgYW55CnJl ZmVyZW5jZSB0byB3aGV0aGVyIHRoZWlyIGV2ZW50LXZhcmlhYmxlIG1heSBi ZSBJTlRFTlQoSU4pLCBJTlRFTlQoT1VUKQpvciBQUk9URUNURUQsIG5vbmUg b2Ygd2hpY2ggbWFrZSBzZW1hbnRpYyBzZW5zZS4gIFRoZSBvbmx5IHRoaW5n IHRoYXQgSQphbSBhc3N1bWUgaXMgdGhhdCB0aGUgc2Vuc2Ugb2YgdGhlIGNv bmRpdGlvbiBoYXMgZ290IGludmVydGVkLiAgVGhpcwpuZWVkcyBmaXhpbmcu CgogICAgNC4yKSBQYWdlIDE0ICg2LjQgRVZFTlQgV0FJVCkgbGluZXMgNy0x MSBhcmUgc3VyZWx5IGVycm9uZW91cyBpbiB0aGUKY2FzZSB3aGVyZSB0aGUg RVZFTlQgUE9TVCBmYWlscywgYW5kIHByb2JhYmx5IHdoZW4gdGhlIEVWRU5U IFdBSVQgZG9lcy4KVGhpcyBtYXR0ZXIgaXMgbm90IGFzIHNpbXBsZSBhcyBp dCBhcHBlYXJzIHRvIGJlLCBiZWNhdXNlIGl0IGhhcyBhCnNpZ25pZmljYW50 IGltcGFjdCBvbiBwZXJtaXR0ZWQgc2VyaWFsIG9wdGltaXNhdGlvbnMuICBT ZWUgRGF0YQpDb25zaXN0ZW5jeSBiZWxvdy4KCiAgICA0LjMpIFRoZSB3b3Jk ICdsYXRlcicgaXMgdGhvcm91Z2hseSBpbGwtZGVmaW5lZCBpbiBhIHBhcmFs bGVsCmNvbnRleHQsIGVzcGVjaWFsbHkgd2hlbiBpdCBpcyBhcHBsaWVkIHRv IGdlbmVyYWwgc2VtYXBob3Jlcy4gIEluCnBhcnRpY3VsYXIsIGl0IGJlZ3Mg dGhlIHF1ZXN0aW9uIG9mIHdoaWNoIG9uZSBvZiBzZXZlcmFsIHBvc3NpYmxl IHVzZXMKb2YgRVZFTlQgUE9TVCBkb2VzIHRoZSBFVkVOVCBXQUlUIHN5bmNo cm9uaXNlIHdpdGg/ICBBcyB0aGUKc3BlY2lmaWNhdGlvbiBzdGFuZHMsIHRo aXMgbWVhbnMgdGhhdCB0aGV5IG11c3QgTk9UIGJlIGltYWdlIGNvbnRyb2wK c3RhdGVtZW50cywgYmVjYXVzZSB0aGF0IHdvdWxkIGludHJvZHVjZSBhIGxv Z2ljYWxseSByZWN1cnNpdmUKZGVmaW5pdGlvbiBpbnRvIHRoZSBzdGFuZGFy ZC4gIEkuZS4gdGhlIHNlcXVlbmNlIG9mIHRoZWlyIGV4ZWN1dGlvbgpjb250 cm9scyB0aGUgb3JkZXJpbmcsIGJ1dCB0aGUgb3JkZXJpbmcgY29udHJvbHMg dGhlIHNlcXVlbmNlIG9mIHRoZWlyCmV4ZWN1dGlvbiEKClRoaXMgbmVlZHMg c3BlY2lmeWluZyBwcm9wZXJseSwgYW5kIHdvdWxkIGJlIHZhc3RseSBzaW1w bGlmaWVkIGlmIGV2ZW50cwp3ZXJlIGNoYW5nZWQgZnJvbSBiZWluZyBnZW5l cmFsIHNlbWFwaG9yZXMgdG8gYmVpbmcgYmluYXJ5IG9uZXMsIHRob3VnaAp0 aGF0IHdvdWxkIGNvbmZsaWN0IHdpdGggTjE5MzAuICBTZWUgRGF0YSBDb25z aXN0ZW5jeSBiZWxvdy4KCiAgICA0LjQpIFRoZXJlIGlzIG5vdGhpbmcgc2Fp ZCBhYm91dCBnbG9iYWwgY29uc2lzdGVuY3ksIHdoaWNoIGlzCndlbGwta25v d24gdG8gYmUgYSBwb3RlbnRpYWwgcHJvYmxlbSB3aXRoIHN1Y2ggYWN0aW9u cyAoYXMgd2l0aAphdG9taWNzKS4gIEluIHBhcnRpY3VsYXIsIGl0IG1pZ2h0 IHNlZW0gb2J2aW91cyB0byBhc3N1bWUgc2VxdWVudGlhbApjb25zaXN0ZW5j eSwgYnV0IHRoYXQgZG9lcyBOT1QgaW1tZWRpYXRlbHkgZm9sbG93LiAgV2hh dGV2ZXIgbW9kZWwgaXMKY2hvc2VuIG5lZWRzIHNwZWNpZnlpbmcuICBTZWUg RGF0YSBDb25zaXN0ZW5jeSBiZWxvdy4KCk9idmlvdXNseSwgdGhhdCBjaG9p Y2UgaGFzIGEgbWFqb3IgaW1wYWN0IG9uIHRoZSBFVkVOVF9RVUVSWSBpbnRy aW5zaWMsCmVzcGVjaWFsbHkgYXMgaXQgaXMgZGVmaW5lZCBvbmx5IHdoZW4g aXQgaXMgb3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gYWxsCkVWRU5UIFBPU1Qg YW5kIEVWRU5UIFdBSVQgc3RhdGVtZW50cy4KCgoKQXRvbWljIEludHJpbnNp Y3MKLS0tLS0tLS0tLS0tLS0tLS0KClRoZXJlIGFyZSBhdCBsZWFzdCB0d28g c3RydWN0dXJhbCBwcm9ibGVtcyB3aXRoIHRoZXNlLgoKICAgIDUuMSkgVGhl IGZpcnN0IGlzIHRoYXQgdGhlaXIgQVRPTSBhcmd1bWVudCBpcyBub3QgcmVx dWlyZWQgdG8gYmUgYQpjb2FycmF5LCB1bmxpa2UgQVRPTUlDX0RFRklORSBh bmQgQVRPTUlDX1JFRiwgd2hpY2ggaXMgdW5kZWZpbmVkIGlmIGFuCmF0b21p YyBjb2FycmF5IG9iamVjdCBpcyBhbiBhY3R1YWwgYXJndW1lbnQgdG8gYSBw cm9jZWR1cmUgd2hpY2ggZG9lcwpub3QgZGVmaW5lIGl0IGFzIGEgY29hcnJh eSBidXQgdGhlbiBjYWxscyB0aGVzZSBwcm9jZWR1cmVzLiAgVGhhdCBuZWVk cwpmaXhpbmcuCgogICAgNS4yKSBUaGUgc2Vjb25kIGlzIHRoYXQgdGhlc2Ug ZXh0ZW5zaW9ucyBhcmUgdHJ1bHkgYmFmZmxpbmcgaW4gdGhlCmNvbnRleHQg b2YgRm9ydHJhbiAyMDA4IDEzLjEgcGFyYWdyYXBoIDMgYW5kIE5vdGUgMTMu MS4gIEkgYW0gbm90IHN1cmUKd2hhdCB0byBkbywgYnV0IHN1cHBvcnRpbmcg dGhlIGZldGNoLWFuZC1vcGVyYXRlIHBhcmFkaWdtIG1lYW5zIHRoYXQgdGhl Cmdsb2JhbCBkYXRhIGNvbnNpc3RlbmN5IHByb2JsZW0gc2ltcGx5IGhhcyB0 byBiZSBhZGRyZXNzZWQuICBUaGVyZSBhcmUKc2V2ZXJhbCBvcHRpb25zLCBi dXQgYWxsIGhhdmUgZXh0cmVtZWx5IHVub2J2aW91cyBhbmQgc2VyaW91cwpj b25zZXF1ZW5jZXMuICBTZWUgRGF0YSBDb25zaXN0ZW5jeSBiZWxvdy4KCgpE YXRhIENvbnNpc3RlbmN5Ci0tLS0tLS0tLS0tLS0tLS0KCiAgICA2LjEpIFRo aXMgaXMgbm90IGEgc2ltcGxlIG1hdHRlciwgYW5kIFdHNSB3aWxsIGJlIG1h a2luZyBhIHNlcmlvdXMKbWlzdGFrZSBpZiBpdCBwcm9jZWVkcyB0byBhZGQg ZmFjaWxpdGllcyBvZiB0aGUgbmF0dXJlIHByb3Bvc2VkIGluIHRoZQpUUyB3 aXRob3V0IHB1dHRpbmcgc29tZSBzZXJpb3VzIHRob3VnaHQgaW50byB0aGUg ZGF0YSBjb25zaXN0ZW5jeSBtb2RlbC4KSW4gRm9ydHJhbiAyMDA4LCB3ZSBl dmFkZWQgdGhpcyBieSBzZWxlY3RpbmcgYSBzaW1wbGUgYW5kIGV4dHJlbWVs eQpwcm9zY3JpcHRpdmUgbW9kZWwgZm9yIFNZTkMgSU1BR0VTIGFuZCBraWNr aW5nIHRoZSBjb25zaXN0ZW5jeSBvZgphdG9taWNzIGludG8gdGhlIGxvbmcg Z3Jhc3MuICBUaGlzIGlzIG5vIGxvbmdlciB2aWFibGUsIGZvciB0aHJlZQpy ZWFzb25zOgoKICAgIDEpIFVwb24gZG9pbmcgYSBiaXQgbW9yZSByZXNlYXJj aCwgSSByZWFsaXNlIHRoYXQgSSBtYXkgaGF2ZSBiZWVuCndyb25nIGluIGJl bGlldmluZyB0aGF0IGFsbCBEQUdzIGNhbiBiZSBzZXJpYWxpc2VkLCB0aG91 Z2ggSSBoYXZlIHNvIGZhcgpiZWVuIHVuYWJsZSB0byB3b3JrIG91dCBvciB0 cmFjayBkb3duIGFuIGV4YW1wbGUgb2YgYSBEQUcgdGhhdCBjYW5ub3QKYmUu ICBJdCB0dXJucyBvdXQgdGhhdCB0aGlzIGlzIGEgY3VycmVudGx5IGFjdGl2 ZSBhcmVhIGluIGNvbXB1dGVyCnNjaWVuY2UsIGFuZCBpcyBrbm93biAoYXQg bGVhc3QgYnkgc29tZSBwZW9wbGUpIGFzIERBRyBjb25zaXN0ZW5jeS4KRm9y dHJhbidzIG1vZGVsIGlzIHdoYXQgdGhlIGZvbGxvd2luZyBwYXBlcnMgZGVm aW5lIGFzIHRoZSBXVyBtb2RlbDsKRm9ydHJhbiBpcyBub3QgZml4YXRlZCBh Ym91dCBkZXRlcm1pbmlzbSwgdW5saWtlIG1vc3QgbW9kZXJuIGNvbXB1dGVy CnNjaWVuY2UuICBTZWUsIGZvciBleGFtcGxlOgoKICAgIGh0dHA6Ly9zdXBl cnRlY2guY3NhaWwubWl0LmVkdS9wYXBlcnMvZnJpZ28tbXMtdGhlc2lzLnBk ZgogICAgaHR0cDovL3d3dy5mZnR3Lm9yZy9+YXRoZW5hL3BhcGVycy9pcHBz OTYucHMuZ3oKICAgIGh0dHA6Ly93d3cuZmZ0dy5vcmcvfmF0aGVuYS9wYXBl cnMvc3BhYTk4LW1lbW9yeS5wcy5negogICAgaHR0cDovL3d3dy5mZnR3Lm9y Zy9+YXRoZW5hL3BhcGVycy9zcGFhOTYucHMuZ3oKIApNeSBjb25jZXJuIGlz IHRoYXQgZXZlbnRzIG1heSBiZSB0aGUgc3RyYXcgdGhhdCBicmVha3MgdGhl IGNhbWVsJ3MKYmFjaywgYW5kIHdlIG1heSBoYXZlIHN0ZXBwZWQgb3ZlciB0 aGUgYm91bmRhcnkgaW50byBhbiBpbmNvbnNpc3RlbnQKbW9kZWwuICBVbmZv cnR1bmF0ZWx5LCBJIGFtIG5vdCBhbiBleHBlcnQgaW4gdGhpcyBhcmVhLCB0 aG91Z2ggSQprbm93IGVub3VnaCB0byBrbm93IHRoYXQgYXBwYXJlbnRseSBv YnZpb3VzIHRydXRocyBhcmUgb2Z0ZW4gZmFsc2UuCgogICAgMikgRm9ydHJh biBldmVudHMgYXJlIGdlbmVyYWwgc2VtYXBob3Jlcy4gIFdoaWxlIHRoZXNl IGFyZQp3ZWxsLXN0dWRpZWQsIHRoZXkgYXJlIG5vd2FkYXlzIHVzdWFsbHkg YXZvaWRlZCBpbiBmYXZvdXIgb2Ygb3RoZXIKbWVjaGFuaXNtcy4gIEhvd2V2 ZXIsIEkgaGF2ZSBzbyBmYXIgYmVlbiB1bmFibGUgdG8gZmluZCBhbnkgcHJl Y2lzZQpkZXNjcmlwdGlvbiBvZiB0aGUgb3JkZXJpbmcgc2VtYW50aWNzIGZv ciBnZW5lcmFsIHNlbWFwaG9yZXMsIG9yCmNvbnZpbmNlIG15c2VsZiB0aGF0 IEkgdW5kZXJzdGFuZCB0aGF0IGFzcGVjdC4gIERpamtzdHJhIGhpbXNlbGYK cG9pbnRlZCBvdXQgdGhhdCB0aGV5IGFyZSBubyBtb3JlIHBvd2VyZnVsIHRo YW4gYmluYXJ5IHNlbWFwaG9yZXMuClNlZSA0LjIgaW46CgogICAgaHR0cDov L3d3dy5jcy51dGV4YXMuZWR1L3VzZXJzL0VXRC90cmFuc2NyaXB0aW9ucy9F V0QwMXh4L0VXRDEyMy5odG1sCgpXb3JzZSwgdGhlIGN1cnJlbnQgc3BlY2lm aWNhdGlvbiBkZWZpbmVzIGJlaGF2aW91ciBpZiB0aGV5IGFyZQp1bnN1Y2Nl c3NmdWwsIGFuZCBJIGhhdmUgYWJzb2x1dGVseSBubyBpZGVhIHdoYXQgaW1w bGljYXRpb25zIHRoYXQgbWlnaHQKaGF2ZS4KCkluIHBhcnRpY3VsYXIsIGV2 ZW50cyBhZmZlY3Qgc2VnbWVudCBvcmRlcmluZyBhbmQsIGlmIHdlIGRvIG5v dCBzcGVjaWZ5CmFueXRoaW5nLCB0aGF0IGlzIGdvaW5nIHRvIGJyZWFrIHRo ZSBwcm9wZXJ0aWVzIG9mIHRoZSBkYXRhIGNvbnNpc3RlbmN5Cm1vZGVsIHRo YXQgd2UgYWdyZWVkIChhZnRlciBtdWNoIGRpc2N1c3Npb24hKSBpbiBGb3J0 cmFuIDIwMDguICBFaXRoZXIKd2UgbmVlZCB0byBzaW1wbGlmeSB0aGVtIHZl cnkgY29uc2lkZXJhYmx5IChwcm9iYWJseSB0byBiaW5hcnksCnVuY29uZGl0 aW9uYWwgc2VtYXBob3JlcyksIG9yIHdlIG5lZWQgdG8gY2FsbCBpbiBzb21l IHNwZWNpYWxpc3QKZXhwZXJ0aXNlLCBvciBib3RoLiAgSSBjYW5ub3QgY29u dmluY2UgbXlzZWxmIHRoYXQgdGhlIGN1cnJlbnQKc3BlY2lmaWNhdGlvbiBp cyBjb25zaXN0ZW50LgoKICAgIDMpIEkgcmVhbGx5IGNhbid0IHNlZSBhbnkg d2F5IHRvIG1ha2Ugc2Vuc2Ugb2YgdGhlc2UgYXRvbWljcyBleGNlcHQKYnkg ZW5mb3JjaW5nIGNvbnNpc3RlbmN5LiAgSW4gcGFydGljdWxhciwgaXQgaXMg Tk9UIGF1dG9tYXRpYyB0aGF0Cm9wZXJhdGlvbnMgb24gZXZlbiBhIHNpbmds ZSBhdG9taWMgdmFyaWFibGUgYXJlIHNlcXVlbnRpYWxseSBjb25zaXN0ZW50 LAp3aGljaCB3YXMgdGhlIHRvcGljIG9mIHN1Y2ggZGViYXRlIGluIEZvcnRy YW4gMjAwOC4gIEhvd2V2ZXIsIHRoaW5raW5nCmFib3V0IHdoYXQgdmFyaW91 cyBmb3JtcyBvZiByZWxheGVkIGNvbnNpc3RlbmN5IG1pZ2h0IG1lYW4gd2l0 aCB0aGUKZmV0Y2gtYW5kLW9wZXJhdGUgaW50cmluc2ljcyBtYWtlcyBteSBo ZWFkIGh1cnQuICBIb3dldmVyLCByZWNlbnRseSwKSSBoYXZlIGZvdW5kIHNv bWUgbGVhZHMuCgpUaGVyZSBpcyBhbHNvIHRoZSBwb2ludCB0aGF0IHRoZSBz aW1wbGUsIGluY29uc2lzdGVudCBhdG9taWNzIHRoYXQgd2UKZGVmaW5lZCBp biBGb3J0cmFuIDIwMDggYXJlIGV4dHJlbWVseSB1c2VmdWwgb24gc3lzdGVt cyB0aGF0IGhhdmUgbm8KaGFyZHdhcmUgb3Igb3BlcmF0aW5nIHN5c3RlbSBz dXBwb3J0IGZvciBnbG9iYWwgY29uc2lzdGVuY3ksIGJlY2F1c2UKdGhleSBj YW4gb2Z0ZW4gYmUgaW1wbGVtZW50ZWQgZWZmaWNpZW50bHksIHdoZXJlYXMg Y29uc2lzdGVudCBhdG9taWNzCm5lZWQgdG8gYmUgZW11bGF0ZWQgYnkgdXNp bmcgbG9ja3Mgb3IgZXF1aXZhbGVudC4gIFRoZXJlIGFyZSBhbHNvIGEgbG90 Cm9mIHVzZXMgZm9yIGF0b21pY3MgdGhhdCBkbyBub3QgcmVxdWlyZSBhbnkg cGFydGljdWxhciBjb25zaXN0ZW5jeS4KCiAgICA2LjIpIFdoZW4gaXQgY29t ZXMgdG8gY29uc2lzdGVuY3ksIHRoZXJlIGlzIG5vIGxvZ2ljYWwgZGlmZmVy ZW5jZQpiZXR3ZWVuIGEgUEdBUyBtb2RlbCBhbmQgc2hhcmVkIG1lbW9yeSwg YW5kIG9uZSBvZiB0aGUgZmV3IGdvb2QgZGVzaWducwpJIGhhdmUgc2VlbiBp cyB0aGUgQysrIG1lbW9yeSBtb2RlbC4gIEZvciBhIGNsZWFyIGFuZCBmYWly bHkgc2ltcGxlCmRlc2NyaXB0aW9uIG9mIHRoZSBpc3N1ZXMsIHNlZSBzZWN0 aW9ucyAxIHRvIDMgb2Y6CgogICAgaHR0cDovL3d3dy5ocGwuaHAuY29tL3Rl Y2hyZXBvcnRzLzIwMDgvSFBMLTIwMDgtNTYuaHRtbAogaW46CiAgICBodHRw Oi8vd3d3LmhwbC5ocC5jb20vcGVyc29uYWwvSGFuc19Cb2VobS9wdWJzLmh0 bWwKCkV2aWRlbmNlIG9mIHRoZSBtb2RlbCdzIGNvbnNpc3RlbmN5IGlzIGlu OgoKICAgIGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35wZXMyMC9jcHAvcG9w bDA4NWFwLXNld2VsbC5wZGYKIGluOgogICAgaHR0cDovL3d3dy5jbC5jYW0u YWMudWsvfnBlczIwLwoKUmVncmV0dGFibHksIEkgY2Fubm90IGNsYWltIHRv IGJlIGVub3VnaCBvZiBhbiBleHBlcnQgdG8gZ3VhcmFudGVlIHRvCnZhbGlk YXRlIHN1Y2ggYSBkZXNpZ24gZm9yIEZvcnRyYW4sIHRob3VnaCBJIGFtIGVu b3VnaCBvZiBvbmUgdG8gc3BvdApvYnZpb3VzIGZsYXdzLgoKVGhlcmUgaXMg dGhlIHF1ZXN0aW9uIG9mIHdoZXRoZXIgdGhlIGF0b21pY3Mgc2hvdWxkIGFs c28gc3luY2hyb25pc2UKb3RoZXIgZGF0YSB1c2VzLiAgSSBiZWxpZXZlIHRo YXQgb3VyIGFzc3VtcHRpb24gaXMgdGhhdCB0aGV5IHNob3VsZCBOT1QKbmVj ZXNzYXJpbHkgZG8gc28sIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgZGlmZmVy ZW5jZSBmcm9tIHRoZSBDKysgbW9kZWwuClRoaXMgaXMgdGhlIHBvaW50IGF0 IHdoaWNoIEkgZ2V0IG91dCBvZiBteSBkZXB0aC4gIEkgYW0gYWxtb3N0IGNl cnRhaW4KdGhhdCB0aGUgRm9ydHJhbiBkZXNpZ24gbWFrZXMgc2Vuc2UsIGJ1 dCBwYXJhbGxlbCBzZW1hbnRpY3MgaXMgc28KZGVjZXB0aXZlIHRoYXQgSSBh bSBjaGFyeSBvZiBhc3N1bWluZyBJIGFtIHJpZ2h0LgoKICAgIDYuMykgV2hp bGUgSSBiZWxpZXZlIHRoYXQgdGhlIHRpbWUgaGFzIGNvbWUgdG8gZG8gaXQg cHJvcGVybHksIEkKYWNjZXB0IHRoZSBhcmd1bWVudCB0aGF0IHRoaXMgd291 bGQgZGVyYWlsIHRoZSBzY2hlZHVsZS4gIEhvd2V2ZXIsIEkKYmVsaWV2ZSB0 aGF0IGl0IGlzIGVzc2VudGlhbCB0aGF0IHdlIChhKSBpbnRlZ3JhdGUgZXZl bnRzIHdpdGggdGhlIGJhc2ljCkRBRyBjb25zaXN0ZW50IHNlZ21lbnQgbW9k ZWwsIChiKSBkZWNpZGUgYW5kIGRlZmluZSBzb21ldGhpbmcgYWJvdXQKYXRv bWljcyBhbmQgKGMpIHRyeSB0byBhdm9pZCB0YWtpbmcgZGVjaXNpb25zIHRo YXQgd2lsbCBwcmV2ZW50IGEgcHJvcGVyCnNvbHV0aW9uIGxhdGVyLgoKICAg IDYuNCkgQXJpc2luZyBmcm9tIHRoaXMsIEkgYmVsaWV2ZSB0aGF0IHRoZSBl YXNpZXN0IHNvbHV0aW9uIHRvIHRoZQpldmVudCBwcm9ibGVtIGlzIHRvIHNp bXBsaWZ5IHRoZW0gdG8gYmUgYmluYXJ5IHNlbWFwaG9yZXMgYW5kIGV4cGxp Y2l0bHkKcmVxdWlyZSBhbGwgaW1hZ2UgY29udHJvbCBzdGF0ZW1lbnRzIHRv IGJlIERBRyBjb25zaXN0ZW50LiAgVGhpcyBsYXN0IGlzCm5vdCBhIGNoYW5n ZSwgYnV0IG1lcmVseSBhIG1vcmUgZXhwbGljaXQgc3RhdGVtZW50IG9mIHdo YXQgdGhlIHN0YW5kYXJkCmN1cnJlbnRseSBzYXlzLgoKSSBhbSBhIGJpdCBu ZXJ2b3VzIGFib3V0IGV2ZW4gYWxsb3dpbmcgRVZFTlQgUE9TVCBvbiBhbiBh bHJlYWR5IHBvc3RlZApldmVudCB2YXJpYWJsZSB0byByZXR1cm4gYW4gaW5k aWNhdGlvbiBvZiB0aGUgZmFjdCwgYnV0IHN1c3BlY3QgdGhhdCBpdAp3aWxs IGJlIHNvIG9mdGVuIGRlbWFuZGVkIHRoYXQgaXQgaXMgdW5hdm9pZGFibGUs IGFuZCBpdCBkb2VzIG5vdCBzZWVtCnRvIGFkZCBhbnkgcHJvYmxlbXMgdGhh dCBoYXZlIG5vdCBhbHJlYWR5IGJlZW4gaW50cm9kdWNlZCBieSB0aGUKQUNR VUlSRURfTE9DSz0gc3BlY2lmaWVyIGluIHRoZSBMT0NLIHN0YXRlbWVudC4K CiAgICA2LjUpIEkgcHJldmlvdXNseSBiZWxpZXZlZCB0aGF0IHRoZSBzaW1w bGVzdCBzb2x1dGlvbiB0byB0aGUgYXRvbWljcwpwcm9ibGVtIGlzIHRvIGV4 cGxpY2l0bHkgZGVmaW5lIHNlcXVlbnRpYWwgY29uc2lzdGVuY3kgb24gYSBz aW5nbGUKYXRvbWljIHZhcmlhYmxlIGZvciB0aGUgbmV3IGF0b21pY3MsIGFu ZCB0byBleHBsaWNpdGx5IHN0YXRlIHRoYXQgdGhlCnNlcXVlbmNlIGZvciB0 d28gdmFyaWFibGVzIG5lZWQgbm90IGJlIGNvbnNpc3RlbnQuICBIb3dldmVy LCBzaW5jZSB0aGVuCkkgaGF2ZSB0aG91Z2h0IG9mIHJlYWxpc3RpYyBleGFt cGxlcyB3aGVyZSB0aGF0IHdpbGwgbm90IHdvcmssIGFuZCBNYXJrCkJhdHR5 IGhhcyBwb2ludGVkIG91dCBvdGhlcnMgdG8gbWUuICBIZSBoYXMsIGhvd2V2 ZXIsIHN1Z2dlc3RlZCBhbgphbHRlcm5hdGl2ZSBtb2RlbCB0aGF0IG1pZ2h0 IHdvcmssIHdoaWNoIGhlIHJlZmVycyB0byBhcyB0aGUKcmVsZWFzZS9hY3F1 aXJlIG1vZGVsLiAgSSBhbSBjb250aW51aW5nIG15IGRpc2N1c3Npb25zIHdp dGggaGltLgoKVGhpcyBsZWF2ZXMgQVRPTUlDX0RFRklORSBhbmQgQVRPTUlD X1JFRiBhcyBhbm9tYWxpZXMsIGFuZCBJIGJlbGlldmUKdGhhdCB3ZSBzaG91 bGQgcHJvdmlkZSBhbHRlcm5hdGl2ZSBzdG9yZSBhbmQgZmV0Y2ggYXRvbWlj cyB0aGF0IGFyZQpjb25zaXN0ZW50IHdpdGggdGhlIG5ldyBvbmVzLCBhbmQg bGVhdmUgQVRPTUlDX0RFRklORSBhbmQgQVRPTUlDX1JFRiBhcwpwcm9jZXNz b3ItZGVwZW5kZW50LiAgQWx0ZXJuYXRpdmVseSwgd2UgY291bGQgdXNlIHRo b3NlIG5hbWVzIGZvciB0aGUKY29uc2lzdGVudCB2ZXJzaW9ucywgYW5kIGFk ZCBuZXcgbmFtZXMgZm9yIHRoZSByZWxheGVkIG9uZXMuCgoKCkltYWdlIEZh aWx1cmUKLS0tLS0tLS0tLS0tLQoKICAgIDcuMSkgVGhpcyBpcyBub3QgYSBt aW5vciBhZGRpdGlvbi4gIE5vIGxhbmd1YWdlIGhhcyBldmVyIG1hbmFnZWQg dG8Kc3RhbmRhcmRpc2UgcmVjb3Zlcnkgb2YgYW4gYXBwbGljYXRpb24gZnJv bSBnZW5lcmFsIHN5c3RlbS1nZW5lcmF0ZWQKZXJyb3JzIG9yIGluZnJhc3Ry dWN0dXJlIGZhaWx1cmUsIGFuZCBldmVuIFBPU0lYIGRvZXMgbm90IGF0dGVt cHQgaXQuClRoZXJlIGFyZSBmdW5kYW1lbnRhbCByZWFzb25zIHdoeSB0aGlz IHNob3VsZCBub3QgYmUgYXR0ZW1wdGVkIGluIGEKcG9ydGFibGUgbGFuZ3Vh Z2UuCgpGb3J0cmFuIGhhcyBub3Qgc28gZmFyIGRlZmluZWQgYW55IHJlY292 ZXJ5IGZhY2lsaXRpZXMgZnJvbSBldmVuIHRoZQpzaW1wbGVzdCBjYXNlcyBv ZiBJL08gZXJyb3JzIChlLmcuIGVycm9uZW91cyBkYXRhIGluIGZvcm1hdHRl ZCBpbnB1dCksCndoaWNoIGhhdmUgYmVlbiBzdXBwb3J0ZWQgYnkgbWFueSBs YW5ndWFnZXMgZm9yIHRoZSBwYXN0IDQwIHllYXJzLgpJbWFnZSBmYWlsdXJl IGlzIHNpZ25pZmljYW50bHkgaGFyZGVyIHRvIHJlY292ZXIgZnJvbSB0aGFu IGV2ZW4Kc3lzdGVtLWdlbmVyYXRlZCBJL08gZXJyb3JzIHN1Y2ggYXMgYSBk aXNrIGZhaWx1cmUuICBGdXJ0aGVybW9yZSwgSS9PCmVycm9yIHJlY292ZXJ5 IGlzIHJlcXVpcmVkIGJ5IGEgdmFzdGx5IGxhcmdlciBudW1iZXIgb2YgcHJv Z3JhbXMgdGhhbgpldmVuIHVzZSBjb2FycmF5cywgbGV0IGFsb25lIHRob3Nl IHRoYXQgd2FudCB0aGlzIGZhY2lsaXR5LgoKRm9ydHJhbiBoYXMgbm90IGRl ZmluZWQgYW55IGZvcm0gb2YgdGhlIG5vdy1jb252ZW50aW9uYWwgZXhjZXB0 aW9uCmhhbmRsaW5nLCBiZWNhdXNlIG9mIGRpZmZpY3VsdGllcyBpbiBpbnRl Z3JhdGluZyBpdCB3aXRoIHRoZSBleGlzdGluZwpsYW5ndWFnZS4gIEV2ZW4g QWRhIGhhcyBub3QgYXR0ZW1wdGVkIHRvIGRlZmluZSByZWNvdmVyeSBmcm9t CnN5c3RlbS1nZW5lcmF0ZWQgZXJyb3JzLCBsZXQgYWxvbmUgaW5mcmFzdHJ1 Y3R1cmUgZmFpbHVyZS4gIEMncyBzaWduYWwKZmFjaWxpdHkgcGVybWl0cyB0 aGlzIHNvcnQgb2YgZmFpbHVyZSB0cmFwcGluZywgYnV0IGlzIG1lcmVseSBh CnN0YW5kYXJkaXNlZCBzeW50YXggdG8gZW50aXJlbHkgdW5kZWZpbmVkIChz aWMpIHNlbWFudGljcyBhbmQKaW1wbGVtZW50YXRpb25zIHRoYXQgc2ltcGx5 IGNyYXNoIGV4aXN0IGFuZCBhcmUgY29uZm9ybWluZy4KCldoZW4gYW4gaW1h Z2UgZmFpbHMsIGl0IHdpbGwgdXN1YWxseSBiZSB3aGlsZSBpdCBpcyBhY3Rp dmUsIHdoaWNoIGF0IHRoZQp2ZXJ5IGxlYXN0IG1lYW5zIHRoYXQgYW55IGRh dGEgaXQgbWlnaHQgaGF2ZSBkZWZpbmVkIGluIGl0cyBhY3RpdmUKc2VnbWVu dCAoaW5jbHVkaW5nIGNvYXJyYXkgZGF0YSBvbiBvdGhlciBpbWFnZXMpIGJl Y29tZXMgdW5kZWZpbmVkLiAgQW55Cm90aGVyIGltYWdlcyB0aGF0IG1heSBo YXZlIGJlZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaW1hZ2Ugd2hlbiBpdApm YWlsZWQgKHdoZXRoZXIgdmlhIGNvYXJyYXkgZGF0YSB0aGF0IGl0IG93bnMs IGNvbGxlY3RpdmVzLCBldmVudHMgb3IKb3RoZXIpIGFsc28gcmVhY2ggYW4g dW5kZWZpbmVkIHN0YXRlLiAgQmVjYXVzZSBGb3J0cmFuIHBlcm1pdHMgdGhl CmJ1ZmZlcmluZyBvZiBmaWxlIG9wZXJhdGlvbnMgb3ZlciBpbWFnZSBjb250 cm9sIHN0YXRlbWVudHMsIHRoZSBvdXRwdXQKYW5kIGVycm9yIHVuaXRzLCBh bmQgYW55IHNoYXJlZCBmaWxlcyBhbHNvIGJlY29tZSB1bmRlZmluZWQsIGV2 ZW4gaWYKdGhleSB3ZXJlIG5vdCBiZWluZyBhY2Nlc3NlZCBhdCB0aGUgdGlt ZSBvciBldmVuIHVzZWQgaW4gdGhlIGltYWdlIHRoYXQKZmFpbGVkLgoKTGFz dGx5LCB0aGVyZSBpcyBub3RoaW5nIHN0b3BwaW5nIHByb2Nlc3NvcnMgZnJv bSBwcm92aWRpbmcgdGhpcwpmYWNpbGl0eSBhcyBhbiBleHRlbnNpb24sIGFu ZCB0aGF0IHdvdWxkIGJlIGEgZmFyIGJldHRlciB3YXkgdG8gZG8gaXQsCmF0 IGxlYXN0IHVudGlsIHN1Y2ggdGltZSBhcyBpdCB0aGlzIGlzIHNob3duIHRv IGJlIGZlYXNpYmxlIGluIGF0CmxlYXN0IG1vc3QgcHJvY2Vzc29ycy4KClRo aXMgZmVhdHVyZSBzaG91bGQgYmUgcmVtb3ZlZC4KCgoKUFJPUE9TQUxTCi0t LS0tLS0tLQotLS0tLS0tLS0KClRoaXMgaXMgbWFpbmx5IGluIHRoZSBmb3Jt IG9mIGNoYW5nZXMgdG8gdGhlIG1haW4gYm9keSBvZiBOMTk2NywKZXhjbHVk aW5nIHRoZSBlZGl0b3JpYWwgY2hhbmdlcywgYnV0IHRoZSB0ZWFtcyBwcm9w b3NhbCBpcyBtdWNoCmxvb3Nlci4KCgpHZW5lcmljCi0tLS0tLS0KCkEuMSkg VGhyb3VnaG91dCB0aGUgZG9jdW1lbnQsIHRoZSB3b3JkaW5nIHNob3VsZCBi ZSBjaGFuZ2VkIHRvIGJlIHRoZQpzYW1lIGFzIGluIEZvcnRyYW4gMjAwOCwg YW5kIGFueSBtaXNzaW5nIGNvbnN0cmFpbnRzLCByZXN0cmljdGlvbnMgYW5k CnNpbWlsYXIgd29yZGluZyBhZGRlZC4KCgpJbWFnZSBGYWlsdXJlCi0tLS0t LS0tLS0tLS0KCkIuMSkgVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCwgYXMgc2hv dWxkIGFsbCByZWZlcmVuY2VzIHRvIGl0LiAgSWYgaXQgaXMKdG8gYmUgcHJl c2VudmVkLCBpdCBpcyBjcml0aWNhbCB0aGF0IGl0IHNwZWxscyBvdXQgZXhh Y3RseSB3aGF0IGEKcHJvY2Vzc29yIG11c3QgZG8sIGFuZCBleGFjdGx5IHdo YXQgYSBwcm9ncmFtbWVyIG1heSBhc3N1bWUsIHdoZW4gU1RBVApGQUlMRUQg SU1BR0UgaXMgcmV0dXJuZWQuICBUaGlzIG1heSB3ZWxsIGJlICJub3RoaW5n IiBhbmQgIm5vdGhpbmciLCBidXQKaXQgbXVzdCBiZSBpbiBub3JtYXRpdmUg dGV4dC4KCgpDb2xsZWN0aXZlcwotLS0tLS0tLS0tLQoKQy4xKSBPbiBwYWdl IDE5LCBsaW5lcyAyOCBhbmQgMjgsICJtYXRoZW1hdGljYWxseSBjb21tdXRh dGl2ZSBvcGVyYXRpb24uCklmIHRoZSBvcGVyYXRpb24gaW1wbGVtZW50ZWQg YnkgT1BFUkFUT1IgaXMgbm90IGFzc29jaWF0aXZlLCB0aGUKY29tcHV0ZWQg dmFsdWUgb2YgdGhlIHJlZHVjdGlvbiBpcyBwcm9jZXNzb3IgZGVwZW5kZW50 IiBzaG91bGQgYmUKcmVwbGFjZWQgYnkgIm1hdGhlbWF0aWNhbGx5IGFzc29j aWF0aXZlIGFuZCBjb21tdXRhdGl2ZSBvcGVyYXRpb24iLgoKQy4yKSBPbiBw YWdlIDE5LCBsaW5lIDM2LCB0aGUgZm9sbG93aW5nIHNob3VsZCBiZSBhZGRl ZDoKCiAgICBJZiB0aGUgc2FtZSBwYWlyIG9mIHZhbHVlcyBpcyBwYXNzZWQg YXMgYXJndW1lbnRzIHRvIE9QRVJBVE9SIG9uIHR3bwogICAgaW1hZ2VzLCB0 aGUgcmVzdWx0cyBzaGFsbCBiZSBlcXVpdmFsZW50LiAgSWYgU09VUkNFIGlz IG51bWVyaWMsCiAgICBlcXVpdmFsZW50IG1lYW5zIG1hdGhlbWF0aWNhbGx5 IGVxdWl2YWxlbnQgW0ZvcnRyYW4gMjAwOCA3LjEuNS4yLjRdOwogICAgb3Ro ZXJ3aXNlLCBpdHMgbWVhbmluZyBpcyBwcm9jZXNzb3ItZGVwZW5kZW50LgoK Qy4zKSBPbiBwYWdlIDE1LCBhZnRlciBsaW5lIDE2LCB0aGUgZm9sbG93aW5n IHNob3VsZCBiZSBhZGRlZDoKCiAgICBOT1RFCiAgICBDYWxscyB0byBjb2xs ZWN0aXZlIHN1YnJvdXRpbmVzIGFyZSBub3QgaW1hZ2UgY29udHJvbCBzdGF0 ZW1lbnRzCiAgICBhbmQgZG8gbm90IHBlcmZvcm0gYW55IHN5bmNocm9uaXNh dGlvbiwgdG8gYWxsb3cgbWF4aW11bSBzY29wZQogICAgZm9yIG9wdGltaXNh dGlvbi4gIElmIHN5bmNocm9uaXNhdGlvbiBpcyBuZWVkZWQsIHByb2dyYW1z IG11c3QKICAgIGNhbGwgU1lOQyBBTEwgZXhwbGljaXRseS4KCkMuNCkgSXQg aXMgY3JpdGljYWwgdGhhdCB3ZSBzYXkgc29tZXRoaW5nIGluIG5vcm1hdGl2 ZSBjb2RlIGFib3V0IHRoZQpjb25zaXN0ZW5jeSB0aGV5IHJlcXVpcmUsIHRv IHByZXZlbnQgb3B0aW1pc2F0aW9uIGNyZWF0aW5nIGNhdXNhbCBsb29wcy4K CgpFdmVudHMKLS0tLS0tCgpJIGFtIHByb3Bvc2luZyBhIGxlc3NlciBmYWNp bGl0eSB0aGFuIHRoZSBvbmUgYWdyZWVkIGluIE4xOTMwLCB0byBhdm9pZAp0 aGUgc3luY2hyb25pc2F0aW9uIGRlZmluaXRpb24gcHJvYmxlbXMgSSBtZW50 aW9uIGFib3ZlLgoKRC4xKSBPbiBwYWdlIDEzLCBsaW5lcyAxMCB0byAxMyBz aG91bGQgYmUgcmVwbGFjZWQgYnk6CgogICAgQSBzY2FsYXIgdmFyaWFibGUg b2YgdHlwZSBFVkVOVCBUWVBFIG9yIExPQ0FMIEVWRU5UIFRZUEUgaXMgYW4g ZXZlbnQKICAgIHZhcmlhYmxlLiAgQW4gZXZlbnQgdmFyaWFibGUgaW5jbHVk ZXMgYSBib29sZWFuIHN0YXRlIG9mIHdoZXRoZXIgYW4KICAgIGV2ZW50IGhh cyBiZWVuIHBvc3RlZC4gIFRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBzdGF0 ZSBvZiBhbiBldmVudAogICAgdmFyaWFibGUgaXMgdGhhdCBubyBldmVudCBo YXMgYmVlbiBwb3N0ZWQuCgpELjIpIE9uIHBhZ2UgMTMsIGxpbmVzIDIwIGFu ZCAyMyAoQzYwMiBhbmQgQzYwMyksICJ3aGVyZSIgc2hvdWxkIGJlCnJlcGxh Y2VkIGJ5ICJ1bmxlc3MiLgoKRC4zKSBPbiBwYWdlIDEzLCBsaW5lIDI3IHNo b3VsZCBiZSByZXBsYWNlZCBieToKCiAgICBSNjAxICBldmVudC1wb3N0LXN0 bXQgIGlzICBFVkVOVCBQT1NUKCBldmVudC12YXJpYWJsZQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgW1BPU1RFRD1ldmVudC1wb3N0ZWQtdmFy aWFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jLXN0 YXQtbGlzdF0gKQoKQWZ0ZXIgbGluZSAyOCwgdGhlIGZvbGxvd2luZyBzaG91 bGQgYmUgYWRkZWQ6CgogICAgUjYweCAgZXZlbnQtcG9zdGVkLXZhcmlhYmxl ICAgaXMgICBzY2FsYXItbG9naWNhbC12YXJpYWJsZQoKTGluZSAzMSBzaG91 bGQgYmUgcmVwbGFjZWQgYnk6CgogICAgVGhlIEVWRU5UIFBPU1Qgc3RhdGVt ZW50IGlzIGFuIGltYWdlIGNvbnRyb2wgc3RhdGVtZW50LgoKICAgIElmIHRo ZSBzdGF0ZSBvZiB0aGUgZXZlbnQgdmFyaWFibGUgaXMgbm90IHBvc3RlZCwg c3VjY2Vzc2Z1bAogICAgZXhlY3V0aW9uIG9mIGFuIEVWRU5UIFBPU1Qgc3Rh dGVtZW50IGNhdXNlcyBpdHMgc3RhdGUgdG8gYmUgc2V0IHRvCiAgICBwb3N0 ZWQuICBJZiBhIFBPU1RFRD0gc3BlY2lmaWVyIGlzIHByZXNlbnQsIGl0IGFs c28gY2F1c2VzIHRoZQogICAgc2NhbGFyIGxvZ2ljYWwgdmFyaWFibGUgdG8g YmVjb21lIGRlZmluZWQgd2l0aCB0aGUgdmFsdWUgdHJ1ZS4KCiAgICBJZiB0 aGUgc3RhdGUgb2YgdGhlIGV2ZW50IHZhcmlhYmxlIGlzIHBvc3RlZCwgc3Vj Y2Vzc2Z1bAogICAgZXhlY3V0aW9uIG9mIGFuIEVWRU5UIFBPU1Qgc3RhdGVt ZW50IHdpdGhvdXQgYSBQT1NURUQ9IHNwZWNpZmllcgogICAgY2F1c2VzIHRo ZSBleGVjdXRpbmcgaW1hZ2UgdG8gd2FpdCB1bnRpbCBpdCBpcyBub3QgcG9z dGVkLCBhbmQgdGhlbgogICAgY2F1c2VzIGl0cyBzdGF0ZSB0byBiZSBzZXQg dG8gbm90IHBvc3RlZC4KCltbWyBUaGlzIGlzIG5vdCBxdWl0ZSB0aGUgd29y ZGluZyB1c2VkIGluIExPQ0ssIGJ1dCB0aGlzIHNpdHVhdGlvbiBpcwphIGJp dCBtb3JlIGNvbXBsaWNhdGVkLiBdXV0KCiAgICBJZiB0aGUgc3RhdGUgb2Yg dGhlIGV2ZW50IHZhcmlhYmxlIGlzIHBvc3RlZCwgc3VjY2Vzc2Z1bAogICAg ZXhlY3V0aW9uIG9mIGFuIEVWRU5UIFBPU1Qgc3RhdGVtZW50IHdpdGggYSBQ T1NURUQ9IHNwZWNpZmllciBkb2VzCiAgICBub3QgY2hhbmdlIGl0cyBzdGF0 ZSBhbmQgY2F1c2VzIHRoZSBzY2FsYXIgbG9naWNhbCB2YXJpYWJsZSB0bwog ICAgYmVjb21lIGRlZmluZWQgd2l0aCB0aGUgdmFsdWUgZmFsc2UuCgpELjQp IE9uIHBhZ2UgMTQsIGxpbmVzIDUgdG8gNiBzaG91bGQgYmUgcmVwbGFjZWQg Ynk6CgogICAgVGhlIEVWRU5UIFdBSVQgc3RhdGVtZW50IGlzIGFuIGltYWdl IGNvbnRyb2wgc3RhdGVtZW50LgoKICAgIElmIHRoZSBzdGF0ZSBvZiB0aGUg ZXZlbnQgdmFyaWFibGUgaXMgbm90IHBvc3RlZCwgc3VjY2Vzc2Z1bAogICAg ZXhlY3V0aW9uIG9mIGFuIEVWRU5UIFdBSVQgc3RhdGVtZW50IGNhdXNlcyB0 aGUgZXhlY3V0aW5nIGltYWdlCiAgICB0byB3YWl0IHVudGlsIGl0IGlzIHNl dCB0byBwb3N0ZWQsIGFuZCB0aGVuIGNhdXNlcyBpdHMgc3RhdGUgdG8KICAg IGJlIHNldCB0byBub3QgcG9zdGVkLgoKICAgIElmIHRoZSBzdGF0ZSBvZiB0 aGUgZXZlbnQgdmFyaWFibGUgaXMgcG9zdGVkLCBzdWNjZXNzZnVsIGV4ZWN1 dGlvbgogICAgb2YgYW4gRVZFTlQgV0FJVCBzdGF0ZW1lbnQgY2F1c2VzIGNh dXNlcyBpdHMgc3RhdGUgdG8gYmUgc2V0IHRvIG5vdAogICAgcG9zdGVkLgoK RC41KSBJbiBGb3J0cmFuIDIwMDgsIG9uIHBhZ2UgMTg5LCBhZnRlciBwYXJh Z3JhcGggMiwgdGhlIGZvbGxvd2luZwpzaG91bGQgYmUgYWRkZWQ6CgogICAg RHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtLCBhIHByb2Nlc3Nv ciBzaGFsbCBlbnN1cmUgdGhhdAogICAgYWxsIHVzZXMgb2YgaW1hZ2UgY29u dHJvbCBzdGF0ZW1lbnRzIGFyZSBjb25zaXN0ZW50IHdpdGggdGhlbXNlbHZl cwogICAgYW5kIHdpdGggdGhlIHByb2dyYW0gZXhlY3V0aW9uIG9yZGVyIG9u IGVhY2ggaW1hZ2UuICBbW1sgVGhpcyBpcwogICAgbm90IHN1ZmZpY2llbnQs IHVuZm9ydHVuYXRlbHkgLSBzZWUgYmVsb3cuIF1dXQoKICAgIE5PVEUKICAg IFN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIGEgTE9DSyBzdGF0ZW1lbnQgd2l0 aCBhbiBBQ1FVSVJFX0xPQ0s9CiAgICBzcGVjaWZpZXIgb3IgYW4gRVZFTlQg UE9TVCBzdGF0ZW1lbnQgd2l0aCBhIFBPU1RFRD0gc3BlY2lmaWVyIHRoYXQK ICAgIHNldCB0aGUgc2NhbGFyIGxvZ2ljYWwgdmFyaWFibGUgdG8gZmFsc2Ug aGF2ZSB0aGUgc2VtYW50aWNzIG9mIGEKICAgIFNZTkMgTUVNT1JZIHN0YXRl bWVudC4KCltbWyBVbmZvcnR1bmF0ZWx5LCB0aGUgZXhwbGljaXQgcmVxdWly ZW1lbnQgZm9yIGNvbnNpc3RlbmN5IGlzCm5lY2Vzc2FyeS4gIEF0IGJlc3Qs IHBhcmFsbGVsIHRpbWUgaGFzIGFsbCBvZiB0aGUgZXZlbnQgb3JkZXJpbmcK cHJvYmxlbXMgb2Ygc3BlY2lhbCByZWxhdGl2aXR5IC0gYW5kIHdoZW4gb25l IGFsbG93cyBvcHRpbWlzYXRpb24sIGFzIGlzCmNyaXRpY2FsIGZvciB0aGUg bGFyZ2VyIHN5c3RlbXMsIGl0J3MgbmVhcmx5IGFzIGJhZCBhcyBnZW5lcmFs CnJlbGF0aXZpdHksIGluY2x1ZGluZyB0aGUgQ2F1Y2h5IHByb2JsZW0uICBB bmQsIHllcywgSSBkbyBtZWFuIGFwcGFyZW50CnRpbWUgd2FycHMuICBXZSBz d2VwdCB0aGUgcHJvYmxlbSB1bmRlciB0aGUgY2FycGV0IGluIEZvcnRyYW4g MjAwOCwKYmVjYXVzZSB0aGUgb25seSB3YXkgdGhhdCBwcm9ibGVtcyBjb3Vs ZCBiZSBjYXVzZWQgd2FzIGJ5IGRpcmVjdCB1c2Ugb2YKU1lOQyBNRU1PUlkg b3IgYnkgYXJjYW5lIHVzZXMgb2YgbG9ja3MsIGJ1dCB1bmZvcnR1bmF0ZWx5 IHdlIGNhbiBkbyBzbwpubyBsb25nZXIuCgpBbHNvLCB0aG91Z2ggaXQgaXMg bm90IHNwZWxsZWQgb3V0IGhlcmUsIHdlIG5lZWQgdG8gc3BlY2lmeSB3aGF0 IHdlCm1lYW4gYnkgY29uc2lzdGVudC4gXV1dCgpELjYpIE9uIHBhZ2UgMTQs IGxpbmVzIDcgdG8gMTEgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5OgoKICAgIER1 cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCB0aGUgc3RhdGUg b2YgYSBldmVudCB2YXJpYWJsZQogICAgaXMgY2hhbmdlZCBieSB0aGUgZXhl Y3V0aW9uIG9mIEVWRU5UIFBPU1QgYW5kIEVWRU5UIFdBSVQgc3RhdGVtZW50 cwogICAgaW4gYSBzZXF1ZW50aWFsbHkgY29uc2lzdGVudCBvcmRlciBbRm9y dHJhbiAyMDA4IDguNS4yXS4gIElmIHRoZQogICAgc3RhdGUgb2YgYSBldmVu dCB2YXJpYWJsZSBpcyBzZXQgdG8gcG9zdGVkIHRocm91Z2ggdGhlIGV4ZWN1 dGlvbiBvZgogICAgYW4gRVZFTlQgUE9TVCBzdGF0ZW1lbnQgb24gaW1hZ2Ug TSBhbmQgaXMgc3Vic2VxdWVudGx5IGluIHRoYXQgb3JkZXIKICAgIHNldCB0 byBub3QgcG9zdGVkIHRocm91Z2ggdGhlIGV4ZWN1dGlvbiBvZiBhbiBFVkVO VCBXQUlUIHN0YXRlbWVudAogICAgb24gaW1hZ2UgVCwgdGhlIHNlZ21lbnRz IHByZWNlZGluZyB0aGUgRVZFTlQgUE9TVCBzdGF0ZW1lbnQgb24KICAgIGlt YWdlIE0gcHJlY2VkZSB0aGUgc2VnbWVudHMgZm9sbG93aW5nIHRoZSBFVkVO VCBXQUlUIHN0YXRlbWVudCBvbgogICAgaW1hZ2UgVC4KCiAgICBOT1RFCiAg ICBXaGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4gdHdvIGltYWdlcyB1c2luZyBF VkVOVCBQT1NUIGFuZCBFVkVOVCBXQUlUCiAgICBzdGF0ZW1lbnRzIG9uIHRo ZSBzYW1lIGV2ZW50IHZhcmlhYmxlLCBwcm9ncmFtcyBzaG91bGQgcmVnYXJk IHRoZQogICAgcHJlY2lzZSBleGVjdXRpb24gb3JkZXIgYXMgYmVpbmcgdW5w cmVkaWN0YWJsZS4KCkQuNykgT24gcGFnZSAyMSwgYWZ0ZXIgbGluZSAyLCB0 aGUgZm9sbG93aW5nIHNob3VsZCBiZSBhZGRlZDoKCiAgICBOT1RFCiAgICBB IHVzZSBvZiBFVkVOVF9RVUVSWSBpcyBkZWZpbmVkIG9ubHkgaWYgaXRzIHNl Z21lbnQgaXMgb3JkZXJlZAogICAgYWdhaW5zdCBhbGwgdXNlcyBvZiBFVkVO VCBQT1NUIGFuZCBFVkVOVCBRVUVSWSBvbiBpdHMgZXZlbnQgdmFyaWFibGUK ICAgIGFyZ3VtZW50LCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIHRvIHRyYWNr IHRoZSBwcm9ncmVzcyBvZiBvdGhlcgogICAgaW1hZ2VzLgoKCkF0b21pY3MK LS0tLS0tLQoKRS4xKSBUaGUgQVRPTSBhcmd1bWVudCBzaG91bGQgYmUgcmVx dWlyZWQgdG8gYmUgYSBjb2FycmF5LgoKRS4yKSBUaGUgd29yZGluZyBzaG91 bGQgYmUgYWRhcHRlZCBmcm9tIHRoYXQgaW4gRm9ydHJhbiAyMDA4LgoKRS4z KSBPbiBwYWdlIDE1LCBsaW5lcyAzMDQsIHRoZSBwcm9jZWR1cmUgbmFtZXMg QVRPTUlDX1NFVCBhbmQKQVRPTUlDX1ZBTFVFIHNob3VsZCBiZSBhZGRlZC4K CkUuNCkgU29tZXdoZXJlIG9uIHBhZ2UgMTUsIHRoZSBmb2xsb3dpbmcgc2hv dWxkIGJlIGFkZGVkOgoKICAgIEEgcHJvY2Vzc29yIHNoYWxsIGVuc3VyZSB0 aGF0IGFsbCB1c2VzIG9mIEFUT01JQ19BREQsIEFUT01JQ19BTkQsCiAgICBB VE9NSUNfQ0FTLCBBVE9NSUNfT1IsIEFUT01JQ19TRVQsIEFUT01JQ19WQUxV RSBhbmQgQVRPTUlDX1hPUiBvbiBhCiAgICBzaW5nbGUgYXRvbWljIHZhcmlh YmxlIGFyZSBjb25zaXN0ZW50LCBhbmQgYXJlICBjb25zaXN0ZW50IHdpdGgg dGhlCiAgICBwcm9ncmFtIGV4ZWN1dGlvbiBvcmRlciBvbiBlYWNoIGltYWdl IGFuZCB3aXRoIHNlZ21lbnQgb3JkZXIKICAgIFs4LjUuMl0uICBbW1sgVGhp cyBpcyBub3Qgc3VmZmljaWVudCwgdW5mb3J0dW5hdGVseSAtIHNlZSBiZWxv dy4gXV1dCgogICAgTk9URQogICAgUHJvZ3JhbW1lcnMgc2hvdWxkIG5vdCBh c3N1bWUgdGhhdCB0aGUgYXBwYXJlbnQgc2VxdWVuY2VzIG9mCiAgICBhY3Rp b25zIG9uIHR3byBkaWZmZXJlbnQgYXRvbWljIHZhcmlhYmxlcyBhcmUgY29t cGF0aWJsZSwgbm9yCiAgICB0aGF0IGFueSB1c2VzIG9mIEFUT01JQ19ERUZJ TkUgb3IgQVRPTUlDX1JFRiBhcmUgY29uc2lzdGVudAogICAgd2l0aCB1c2Vz IG9mIHRoZSBvdGhlciBhdG9taWMgcHJvY2VkdXJlcywgbm90IGV2ZW4gb24g dGhlIHNhbWUKICAgIHZhcmlhYmxlLiAgQWxzbywgdXNpbmcgY2hhbmdlcyBp biB0aGUgdmFsdWUgb2YgYXRvbWljIHZhcmlhYmxlcwogICAgdG9nZXRoZXIg d2l0aCB0aGUgU1lOQyBNRU1PUlkgc3RhdGVtZW50IHdpbGwgbm90IGNyZWF0 ZSBhCiAgICB3ZWxsLWRlZmluZWQgc2VnbWVudCBvcmRlcmluZywgdGhvdWdo IGl0IG1heSBhcHBlYXIgdG8uCgpbW1sgTXkgcmVtYXJrcyB1bmRlciBELjUg YXJlIGVxdWFsbHkgcmVsZXZhbnQgaGVyZS4gIFdlIG5lZWQgdG8gc3BlY2lm eQp3aGF0IHdlIG1lYW4gYnkgY29uc2lzdGVudCBpbiB0aGlzIGNvbnRleHQg YXMgd2VsbC4gXV1dCgpFLjUpIE9uIHBhZ2UgMTcsIGFmdGVyIGxpbmUgMTMs IGRlZmluaXRpb25zIG9mIEFUT01JQ19TRVQgYW5kCkFUT01JQ19WQUxVRSBz aG91bGQgYmUgYWRkZWQuICBUaGVzZSBhcmUgZXNzZW50aWFsbHkgcmVwbGlj YXRpb25zCm9mIEFUT01JQ19ERUZJTkUgYW5kIEFUT01JQ19SRUYgd2l0aCB0 aGUgc2VtYW50aWMgZGlmZmVyZW5jZQpkZXNjcmliZWQgYWJvdmUuCgoKVEVB TVMKLS0tLS0KClRoaXMgaXMgdmVyeSBtdWNoIGEgcm91Z2ggZHJhZnQuICBJ IGhhdmUgZm9sbG93aW5nIE4xOTY3IGFzIGNsb3NlbHkgYXMKcG9zc2libGUs IGFuZCBpdCBpcyBsYXJnZWx5IGluIHRoZSBmb3JtIG9mIGRpZmZlcmVuY2Vz IGZyb20gdGhlIGN1cnJlbnQKc3BlY2lmaWNhdGlvbi4KCk11Y2ggb2YgdGhl IHN5bnRheCBpcyB0aGUgc2FtZSwgYnV0IEkgcHJvcG9zaW5nIGNoYW5naW5n IHRoZSBjb25zdHJhaW50cwphbmQgc2VtYW50aWNzIHF1aXRlIGRyYXN0aWNh bGx5IGluIG9yZGVyIHRvIHNvbHZlIHRoZSBwcm9ibGVtcyBJIGFuZApzb21l IG90aGVyIHBlb3BsZSByYWlzZWQuICBJdCBtb2RlbHMgaXRzZWxmIG9uIHRo ZSBwcm92ZW4gZGVzaWduIG9mIE1QSQooYW5kIGVzcGVjaWFsbHkgY29tbXVu aWNhdG9ycyBhbmQgTVBJX1NwbGl0KS4KClVubGlrZSBpbiBOMTk2NywgdGhl IHBhcmVudCB0ZWFtIG9mIGEgc3VidGVhbSBpcyB0aGUgY3VycmVudCB0ZWFt IGF0IHRoZQp0aW1lIHRoZSBDSEFOR0UgVEVBTSBzdGF0ZW1lbnQgdGhhdCBj cmVhdGVkIGl0IHdhcyBleGVjdXRlZCwgYW5kIG5vdCB0aGUKRk9STV9TVUJU RUFNUyBpbnRyaW5zaWMuICBUaGUgRk9STV9TVUJURUFNUyBpbnRyaW5zaWMg aXMgYSBjb2xsZWN0aXZlCnRoYXQgcmV0dXJucyBhIGhhbmRsZSB0aGF0IGRl c2NyaWJlcyBhIHRlYW0sIGFuZCBpcyBub3RoaW5nIG1vcmUuCgpUaGUgb25s eSBhY3Rpb25zIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBvbiBhbnkgdGVhbSBv dGhlciB0aGFuIHRoZQpjdXJyZW50IG9uZSBhcmUgdG8gcmV0dXJuIHRvIHRo ZSBwYXJlbnQgYnkgZXhlY3V0aW5nIGFuIEVORCBURUFNCnN0YXRlbWVudCwg dG8gY2hhbmdlIHRvIGEgZGVzY2VuZGVudCBieSBleGVjdXRpbmcgYSBDSEFO R0UgVEVBTQpzdGF0ZW1lbnQsIGFuZCB0byBjYWxsIGlucXVpcnkgZnVuY3Rp b25zIChOMTkzMCBUNikgb24gYSBsb2NhbCBvYmplY3QsCndoaWNoIGNhbiBi ZSBndWFyYW50ZWVkIG5vdCB0byBjYXVzZSBzeW5jaHJvbmlzYXRpb24gcHJv YmxlbXMuCgpJIGhhdmUgbm90IHByb3ZpZGVkIGEgY29sbGVjdGl2ZSB0byBy ZWxlYXNlIGEgc3VidGVhbSBjcmVhdGVkIGJ5CkZPUk1fU1VCVEVBTVMsIGFz IEkgY2FuJ3Qgc2VlIGhvdyB0byBzcGVjaWZ5IGl0IGF0IGFsbCBjb25jaXNl bHkuICBUaGlzCmlzIHNvbWV0aGluZyB0aGF0IG5lZWRzIGRpc2N1c3Npbmcu ICBUaGVyZSBhcmUgbWFueSBwb3NzaWJpbGl0aWVzLCBidXQKYWxsIG9mIHRo ZSBvbmVzIEkgY2FuIHNlZSBpbnZvbHZlIGRyYXN0aWMgY2hhbmdlcyB0byBO MTk2NydzIG1vZGVsLApvciB3b3VsZCBiZSBzaW1wbHkgZG9jdW1lbnRhdGlu ZyB0aGF0IGEgcHJvZ3JhbSBjYW4gdXNlIEZvcnRyYW4ncwpzY29waW5nIHJ1 bGVzIGFuZCBERUFMTE9DQVRFIHRvIHJlbGVhc2UgcmVzb3VyY2VzLgoKVGhl IFRFQU1fTk9ORSBjb25zdGFudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgog ICAgVGhlIHZhbHVlIG9mIHRoZSBURUFNX1RZUEUgY29uc3RhbnQgVEVBTV9O T05FIHNoYWxsIGluZGljYXRlIGEKICAgIGNvbmNlcHR1YWwgdGVhbSBjb250 YWluaW5nIG5vIGltYWdlcy4KClRoZSBDSEFOR0UgVEVBTSBjb25zdHJ1Y3QK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhlIG9ubHkgc3ludGFjdGlj IGNoYW5nZSBpczoKCiAgICBSNTAyIGNoYW5nZS10ZWFtLXN0bXQgaXMgW3Rl YW0tY29uc3RydWN0LW5hbWU6XSBDSEFOR0UgVEVBTSAoCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN1YnRlYW0gWywgc3luYy1zdGF0LWxp c3RdICkKClRoaXMgaGFzIGV4dHJhIHJlc3RyaWN0aW9uczoKCiAgICBUaGUg c3VidGVhbSBzaGFsbCBiZSBvZiB0eXBlIFRFQU1fVFlQRSwgc2hhbGwgaGF2 ZSBiZWVuIHNldCB1cCBieQogICAgdGhlIEZPUk1fU1VCVEVBTVMgaW50cmlu c2ljLCBzaGFsbCBub3QgYmUgVEVBTV9OT05FIGFuZCBzaGFsbCBiZSBhCiAg ICBkZXNjZW5kZW50IG9mIHRoZSBjdXJyZW50IHRlYW0uCgogICAgSW4gbWF0 Y2hpbmcgQ0hBTkdFIFRFQU0gc3RhdGVtZW50cywgYWxsIHZhbHVlcyBvZiBz dWJ0ZWFtIHNoYWxsCiAgICBkZXNjcmliZSB0aGUgc2FtZSB0ZWFtLiAgW1tb IFRoaXMgbmVlZHMgcGhyYXNpbmcgcHJvcGVybHkuIF1dXQoKICAgIFRoZSBz eW5jaHJvbmlzYXRpb24gYXQgYm90aCB0aGUgQ0hBTkdFIFRFQU0gYW5kIEVO RCBURUFNIHN0YXRlbWVudHMKICAgIGlzIGJldHdlZW4gYWxsIGltYWdlcyBv ZiB0aGUgdGVhbSByZXByZXNlbnRlZCBieSB0aGUgdmFsdWUgb2YgdGhlCiAg ICBzdWJ0ZWFtIHZhcmlhYmxlLiAgW1tbIFRoaXMgbmVlZHMgcGhyYXNpbmcg cHJvcGVybHkuIF1dXQoKTm90ZSB0aGF0IHRoZSB0aGUgY3VycmVudCB0ZWFt IG9yIGFueSBwYXJlbnQgdGVhbSBhcmUgbm90IGludm9sdmVkLgpUaGlzIHBy b3ZpZGVzIGEgY29uc2lkZXJhYmxlIHBlcmZvcm1hbmNlIGVuaGFuY2VtZW50 IGluIHRoZSBjYXNlIHdoZXJlIGEKc3Vic2V0IG9mIHRoZSB0ZWFtcyBuZWVk cyB0byBjYWxsIGEgY29sbGVjdGl2ZSB3aXRob3V0IGludGVyYWN0aW5nIHdp dGgKdGhlIHJlc3Qgb2YgdGhlIGN1cnJlbnQgdGVhbS4KClRoZSBGT1JNX1NV QlRFQU1TIGludHJpbnNpYwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ClRoaXMgaXMgbm93IGEgY29sbGVjdGl2ZSBzdWJyb3V0aW5lIGFuZCBub3Qg YSBzdGF0ZW1lbnQsIHdpdGggYQpzcGVjaWZpY2F0aW9uIGxpa2U6CgogICAg Rk9STV9TVUJURUFNUyAoIElNQUdFLUlEICwgUkVTVUxUICkKCiAgICBEZXNj cmlwdGlvbi4gQ3JlYXRlIHZhbHVlcyBmb3Igc3VidGVhbXMuCgogICAgQ2xh c3MuIENvbGxlY3RpdmUgc3Vicm91dGluZS4KCiAgICBBcmd1bWVudHMuCgog ICAgSU1BR0UtSUQgc2hhbGwgYmUgc2NhbGFyIGFuZCBvZiB0eXBlIGludGVn ZXIgYW5kIHNoYWxsIGJlCiAgICBub24tbmVnYXRpdmUuICBUd28gaW1hZ2Vz IHdpbGwgYmUgaW4gdGhlIHNhbWUgc3VidGVhbSBpZiBhbmQgb25seSBpZgog ICAgSU1BR0UtSUQgaXMgdGhlIHNhbWUgb24gdGhvc2UgaW1hZ2VzLCBleGNl cHQgdGhhdCBJTUFHRS1JRCBtYXkgYmUKICAgIHplcm8sIHdoaWNoIGluZGlj YXRlcyB0aGF0IHRoZSBpbnZva2luZyBpbWFnZSBpcyBub3QgaW52b2x2ZWQg aW4gYW55CiAgICBzdWJ0ZWFtLgoKICAgIFJFU1VMVCBzaGFsbCBiZSBzY2Fs YXIgYW5kIG9mIHR5cGUgVEVBTV9UWVBFLiAgSXQgaXMgYW4gSU5URU5UKE9V VCkKICAgIGFyZ3VtZW50LgoKICAgIElmIElNQUdFX0lEIGlzIHplcm8sIFJF U1VMVCBiZWNvbWVzIGRlZmluZWQgd2l0aCB0aGUgdmFsdWUKICAgIFRFQU1f Tk9ORS4gIE90aGVyd2lzZSwgUkVTVUxUIGJlY29tZXMgZGVmaW5lZCB3aXRo IGEgdmFsdWUgdGhhdAogICAgaWRlbnRpZmllcyB0aGUgc3VidGVhbSB0aGF0 IGluY2x1ZGVzIHRoZSBjYWxsaW5nIGltYWdlLgogCkkgaGF2ZSBvbWl0dGVk IFNUQVQgYW5kIEVSUk1TRywgYXMgSSBkb24ndCBzZWUgd2hhdCB1c2UgdGhl eSBhcmUuICBUaGV5CmNvdWxkIGJlIHJlc3RvcmVkLCBhcyBmb3IgQUxMT0NB VEUuCgpUaGUgU1lOQyBURUFNIHN0YXRlbWVudAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQoKVGhpcyBpcyByZW1vdmVkLCBvbiB0aGUgZ3JvdW5kcyB0aGF0 IGl0IGlzIGFsbW9zdCBpbXBvc3NpYmxlIHRvCnNwZWNpZnkgY29uc3RyYWlu dHMgb24gaXRzIHVzZSB0aGF0IG1ha2UgaXQgaW1wbGVtZW50YWJsZSBhbmQg Z2l2ZSBpdAp3ZWxsLWRlZmluZWQgc2VtYW50aWNzLiAgVGhlIG9ubHkgdXNl IHRoYXQgaXMgZGVmaW5hYmxlIGlzIHRoYXQgb2YKdXNpbmcgaXQgZm9yIGEg ZGVzY2VuZGVudCB0ZWFtLCB3aGVyZSBpdCB3b3VsZCBzaW1wbHkgYmUgc3lu dGFjdGljCnN1Z2FyIGZvcjoKCiAgICBDSEFOR0UgVEVBTSAodGVhbSkKICAg ICAgICBTWU5DIEFMTAogICAgRU5EIFRFQU0KClRoZSBTVUJURUFNX0lEIGlu dHJpbnNpYwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgaXMgcmVt b3ZlZC4KClRoZSBOVU1fSU1BR0VTIGFuZCBUSElTX0lNQUdFIGludHJpbnNp YwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAg ICBUaGUgZGVzY3JpcHRpb25zIG9mIHRoZSBpbnRyaW5zaWMgZnVuY3Rpb25z IE5VTV9JTUFHRVMoKSBhbmQKICAgIFRISVNfSU1BR0UoKSBpbiBJU08vSUVD IDE1MzktMToyMDEwIGFyZSBjaGFuZ2VkIGJ5IGFkZGluZyBvcHRpb25hbAog ICAgYXJndW1lbnRzIERJU1RBTkNFIGFuZCBURUFNIGFuZCBhIG1vZGlmaWVk IHJlc3VsdCBpZiBlaXRoZXIgaXMgcHJlc2VudC4KCiAgICBUaGUgRElTVEFO Q0UgYXJndW1lbnQgc2hhbGwgYmUgYSBzY2FsYXIgaW50ZWdlci4gIEl0IHNo YWxsIGJlCiAgICBub25uZWdhdGl2ZS4KCiAgICBUaGUgVEVBTSBhcmd1bWVu dCBzaGFsbCBiZSBhIHNjYWxhciBvZiB0eXBlIFRFQU1fVFlQRSwgYW5kIHNo YWxsCiAgICBoYXZlIGEgdmFsdWUgdGhhdCB3YXMgcmV0dXJuZWQgYnkgdGhl IEZPUk1fU1VCVEVBTVMgaW50cmluc2ljLgogICAgSWYgRElTVEFOQ0UgaXMg cHJlc2VudCwgVEVBTSBzaGFsbCBub3QgYmUgcHJlc2VudC4KCiAgICBJZiBu ZWl0aGVyIGFyZ3VtZW50IGlzIG5vdCBwcmVzZW50LCB0aGUgcmVzdWx0IHZh bHVlIGlzIHRoZSBpbWFnZQogICAgaW5kZXggb2YgdGhlIGludm9raW5nIGlt YWdlIGluIHRoZSBjdXJyZW50IHRlYW0uCgogICAgSWYgRElTVEFOQ0UgaXMg cHJlc2VudCB3aXRoIGEgdmFsdWUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRo ZSB0ZWFtCiAgICBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHRlYW0g YW5kIHRoZSBpbml0aWFsIHRlYW0sIHRoZSByZXN1bHQKICAgIGhhcyB0aGUg dmFsdWUgb2YgdGhlIGltYWdlIGluZGV4IGluIHRoZSB0ZWFtIG9mIHdoaWNo IHRoZSBpbnZva2luZwogICAgaW1hZ2Ugd2FzIGxhc3QgYSBtZW1iZXIgd2l0 aCBhIHRlYW0gZGlzdGFuY2Ugb2YgRElTVEFOQ0UgZnJvbSB0aGUKICAgIGN1 cnJlbnQgdGVhbTsgb3RoZXJ3aXNlLCB0aGUgcmVzdWx0IGhhcyB0aGUgdmFs dWUgLTEuCgogICAgSWYgVEVBTSBpcyBwcmVzZW50IGFuZCB0aGUgaW52b2tp bmcgaW1hZ2UgaXMgYSBtZW1iZXIgb2YgdGhhdCB0ZWFtLAogICAgdGhlIHJl c3VsdCBoYXMgdGhlIHZhbHVlIG9mIHRoZSBpbWFnZSBpbmRleCBvZiB0aGUg aW52b2tpbmcgaW1hZ2UgaW4KICAgIHRoYXQgdGVhbTsgb3RoZXJ3aXNlLCB0 aGUgcmVzdWx0IGhhcyB0aGUgdmFsdWUgLTEuCgpbW1sgUmV0dXJuaW5nIC0x IGlzIGNsZWFuZXIgdGhhbiBjaG9vc2luZyBzb21lIHJhbmRvbSB0ZWFtLCB3 aGV0aGVyCm9yIG5vdCB0aGF0IGlzIHRoZSBjdXJyZW50IG9uZS4gXV1dCg== ---1870869256-1804289383-1364572708=:495--