From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from 1cust143.tnt1.lax7.da.uu.net ([67.193.227.143] helo=toccata.grg.afb.net) by speech.braille.uwo.ca with esmtp (Exim 3.34 #1 (Debian)) id 16nj3S-0002mr-00 for ; Wed, 20 Mar 2002 11:35:15 -0500 Received: from localhost (janina@localhost) by toccata.grg.afb.net (8.11.6/8.11.6) with ESMTP id g2KErFA03105 for ; Wed, 20 Mar 2002 09:53:15 -0500 X-Authentication-Warning: toccata.grg.afb.net: janina owned process doing -bs Date: Wed, 20 Mar 2002 09:53:14 -0500 (EST) From: Janina Sajka X-X-Sender: janina@toccata.grg.afb.net To: speakup@braille.uwo.ca Subject: Re: Needing to find a basic How-To. In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463784950-383957362-1016635994=:2455" Sender: speakup-admin@braille.uwo.ca Errors-To: speakup-admin@braille.uwo.ca X-BeenThere: speakup@braille.uwo.ca X-Mailman-Version: 2.0.8 Precedence: bulk Reply-To: speakup@braille.uwo.ca List-Help: List-Post: List-Subscribe: , List-Id: Speakup is a screen review system for Linux. List-Unsubscribe: , List-Archive: 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. ---1463784950-383957362-1016635994=:2455 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi,Anna: There's a HOWTO file expressly written for people who have DOS and Windows backgrounds. If that's you, that's a great place to start. Just look for the word DOS in the index of HOWTO files. The Red Hat Getting Started manual is also a great resource for beginners. It's very well written, and it gives keyboard commands as well as mouse clicks, so don't worry if you start hearing about clicking a mouse. The keyboard help will follow shortly. Let me point out that all of these are probably already on your hard drive. Do: locate HOWTO and you'll see your screen fill up with all the different HOWTO files you have. The reason to do it this way is that, on the very left of the screen, it will tell you exactly where these HOWTO files are. Do a locate like this: locate rhl-gsg to see if the compressed file is on your hard disk. If it is, do tar xzpf rhl-gsg and the rest of the file name, which you can get by tapping on the tab key. This last thing, tapping on the tab key, is a very very useful trick to learn. It's called command completion, and it will save you both typing effort and frustration. PS: You should have this file on your Red Hat Documentation CD ROM, if you got CDROM's. You can also find it on the Red Hat web site all decompressed and ready to read online. Goto: http://www.redhat.com/docs/manuals/linux/RHL-7.2-Manual/getting-started-guide/ Last, but very definitely not least, you can read all of these using lynx on your new computer,but only if you make certain changes in the lynx configuration file that turn it into a friendly tool for blind users. I humbly offer my lynx.cfg file to help you do that. You might want to save it to /etc/lynx.cfg. That way,it will just always be used whenever you launch lynx. If you want to play it safe, first copy your existing lynx to another name, so it won't be written over like this: cp /etc/lynx.cfg /etc/lynx.cfg.bk You need to be root to do this. On Wed, 20 Mar 2002, Anna Schneider wrote: > > I need a basic How-To or faq of some sort. Something that defines various > Linux terms and tells me what to do the first time I turn the machine on. > My computer arrived today and I've been procrastinating doing more > research on what to do with a Linux system and now I can procrastinate no > longer. > > I just wandered around the Linux documentation project, and I found lots > of How-Tos on lots of things, and I wrote a list of the ones I will visit > soon, but I just want a beginner one right now. Does such a thing exist > on the web in text because I can't access it any other way right now? > > Thanks. > > Anna > > > _______________________________________________ > Speakup mailing list > Speakup@braille.uwo.ca > http://speech.braille.uwo.ca/mailman/listinfo/speakup > -- Janina Sajka, Director Technology Research and Development Governmental Relations Group American Foundation for the Blind (AFB) Email: janina@afb.net Phone: (202) 408-8175 Chair, Accessibility SIG Open Electronic Book Forum (OEBF) http://www.openebook.org ---1463784950-383957362-1016635994=:2455 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="lynx.cfg" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="lynx.cfg" IyBseW54LmNmZyBmaWxlLg0KIyBUaGUgZGVmYXVsdCBwbGFjZW1lbnQgZm9y IHRoaXMgZmlsZSBpcyAvdXNyL2xvY2FsL2xpYi9seW54LmNmZyAoVW5peCkN CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgTHlu eF9EaXI6bHlueC5jZmcgKFZNUykNCiMNCiMNCiMgRGVmaW5pdGlvbiBwYWly cyBhcmUgb2YgdGhlIGZvcm0gIFZBUklBQkxFOkRFRklOSVRJT04NCiMgTk8g c3BhY2VzIGFyZSBhbGxvd2VkIGJldHdlZW4gdGhlIHBhaXIgaXRlbXMuDQoj DQojICBJZiB5b3UgZG8gbm90IGhhdmUgd3JpdGUgYWNjZXNzIHRvIC91c3Iv bG9jYWwvbGliIHlvdSBtYXkgY2hhbmdlDQojICB0aGUgZGVmYXVsdCBsb2Nh dGlvbiBvZiB0aGlzIGZpbGUgaW4gdGhlIHVzZXJkZWZzLmggZmlsZSBhbmQg cmVjb21waWxlLA0KIyAgb3Igc3BlY2lmeSBpdHMgbG9jYXRpb24gb24gdGhl IGNvbW1hbmQgbGluZSB3aXRoIHRoZSAiLWNmZyINCiMgIGNvbW1hbmQgbGlu ZSBvcHRpb24uDQojDQojIEl0ZW1zIG1heSBiZSBjb21tZW50ZWQgb3V0IGJ5 IHB1dHRpbmcgYSAnIycgYXMgdGhlIEZJUlNUIGNoYXIgb2YgdGhlIGxpbmUN CiMgKEFueSBsaW5lIGJlZ2lubmluZyB3aXRoIHB1bmN0dWF0aW9uIGlzIGln bm9yZWQpLiAgTGVhZGluZyBibGFua3Mgb24gZWFjaA0KIyBsaW5lIGFyZSBp Z25vcmVkOyB0cmFpbGluZyBibGFua3MgbWF5IGJlIHNpZ25pZmljYW50IGRl cGVuZGluZyBvbiB0aGUgb3B0aW9uLg0KDQojIEFuIEhUTUwnaXplZCBkZXNj cmlwdGlvbiBvZiBhbGwgc2V0dGluZ3MgKGJhc2VkIG9uIGNvbW1lbnRzIGlu IHRoaXMgZmlsZSwNCiMgd2l0aCBhbHBoYWJldGljYWwgdGFibGUgb2Ygc2V0 dGluZ3MgYW5kIHdpdGggdGFibGUgb2Ygc2V0dGluZ3MgYnkgY2F0ZWdvcnkp DQojIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmhpcHBvLnJ1L35odnYv bHlueGNmZ190b2MuaHRtbA0KIw0KIyMjIFRoZSBjb252ZXJzaW9uIGlzIGRv bmUgdmlhIHRoZSBzY3JpcHRzL2NmZzJodG1sLnBsIHNjcmlwdC4NCiMjIyBT ZXZlcmFsIGRpcmVjdGl2ZXMgYmVnaW5uaW5nIHdpdGggJy4nIGFyZSB1c2Vk IGZvciB0aGlzIHB1cnBvc2UuDQoNCg0KLmgxIEF1eGlsaWFyeSBGYWNpbGl0 aWVzDQojIFRoZXNlIHNldHRpbmdzIGNvbnRyb2wgdGhlIGF1eGlsaWFyeSBu YXZpZ2F0aW5nIGZhY2lsaXRpZXMgb2YgbHlueCwgZS5nLiwNCiMganVtcGZp bGVzLCBib29rbWFya3MsIGRlZmF1bHQgVVJMcy4NCg0KDQouaDIgSU5DTFVE RQ0KIyBTdGFydGluZyB3aXRoIEx5bnggMi44LjEsIHRoZSBseW54LmNmZyBm aWxlIGhhcyBhIGNydWRlICJpbmNsdWRlIg0KIyBmYWNpbGl0eS4gIFRoaXMg bWVhbnMgdGhhdCB5b3UgY2FuIHRha2UgYWR2YW50YWdlIG9mIHRoZSBnbG9i YWwgbHlueC5jZmcNCiMgd2hpbGUgYWxzbyBzdXBwbHlpbmcgeW91ciBvd24g dHdlYWtzLg0KIw0KIyBZb3UgY2FuIHVzZSBhIGNvbW1hbmQtbGluZSBhcmd1 bWVudCAoLWNmZyAvd2hlcmUvaXMvbHlueC5jZmcpIG9yIGFuDQojIGVudmly b25tZW50IHZhcmlhYmxlIChMWU5YX0NGRz0vd2hlcmUvaXMvbHlueC5jZmcp Lg0KIyBGb3IgaW5zdGFuY2UsIHB1dCBpbiB5b3VyIC5wcm9maWxlIG9yIC5s b2dpbjoNCiMNCiMgICBMWU5YX0NGRz1+L2x5bnguY2ZnOyBleHBvcnQgTFlO WF9DRkcgICAjIGluIC5wcm9maWxlIGZvciBzaC9rc2gvYmFzaC9ldGMuDQoj ICAgc2V0ZW52IExZTlhfQ0ZHIH4vbHlueC5jZmcgICAgICAgICAgICAgIyBp biAubG9naW4gZm9yIFt0XWNzaA0KIw0KIyBUaGVuIGluIH4vbHlueC5jZmc6 DQojDQojICAgSU5DTFVERTovdXNyL2xvY2FsL2xpYi9seW54LmNmZw0KIyAg ICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4gb3Igd2hhdGV2ZXIg aXMgYXBwcm9wcmlhdGUgb24geW91ciBzeXN0ZW0NCiMgYW5kIG5vdyB5b3Vy IG93biB0d2Vha3MuDQojDQojIFN0YXJ0aW5nIHdpdGggTHlueCAyLjguMiwg dGhlIElOQ0xVREUgZmFjaWxpdHkgaXMgeWV0IG1vcmUgcG93ZXJmdWwuICBZ b3UgY2FuDQojIHN1cHByZXNzIGFsbCBidXQgc3BlY2lmaWMgc2V0dGluZ3Mg dGhhdCB3aWxsIGJlIHJlYWQgZnJvbSBpbmNsdWRlZCBmaWxlcy4NCiMgVGhp cyBhbGxvd3Mgc3lzYWRtaW5zIHRvIHByb3ZpZGUgdXNlcnMgdGhlIGFiaWxp dHkgdG8gY3VzdG9taXplIGx5bnggd2l0aA0KIyBvcHRpb25zIHRoYXQgbm9y bWFsbHkgZG8gbm90IGFmZmVjdCBzZWN1cml0eSwgc3VjaCBhcyBDT0xPUiwg VklFV0VSLCBLRVlNQVAuDQojDQojIFRoZSBzeW50YXggaXMNCiMNCiMgICBJ TkNMVURFOmZpbGVuYW1lIGZvciA8c3BhY2Utc2VwYXJhdGVkLWxpc3Qtb2Yt YWxsb3dlZC1zZXR0aW5ncz4NCiMNCiMgc2FtcGxlOg0KLmV4DQojSU5DTFVE RTp+L2x5bnguY2ZnIGZvciBDT0xPUiBWSUVXRVIgS0VZTUFQDQojIG9ubHkg b25lIHNwYWNlIGNoYXJhY3RlciBzaG91bGQgc3Vycm91bmQgdGhlIHdvcmQg J2ZvcicuICBPbiBVbml4IHN5c3RlbXMgJzonDQojIGlzIGFsc28gYWNjZXB0 ZWQgYXMgc2VwYXJhdG9yLiAgSW4gdGhhdCBjYXNlLCB0aGUgZXhhbXBsZSBj YW4gYmUgd3JpdHRlbiBhcw0KLmV4DQojSU5DTFVERTp+L2x5bnguY2ZnOkNP TE9SIFZJRVdFUiBLRVlNQVANCiMgSW4gdGhlIGV4YW1wbGUsIG9ubHkgdGhl IHNldHRpbmdzIENPTE9SLCBWSUVXRVIgYW5kIEtFWU1BUCBhcmUgYWNjZXB0 ZWQgYnkNCiMgbHlueC4gIE90aGVyIHNldHRpbmdzIGFyZSBpZ25vcmVkLiAg Tm90ZTogIElOQ0xVREUgaXMgYWxzbyB0cmVhdGVkIGFzIGENCiMgc2V0dGlu Zywgc28gdG8gYWxsb3cgYW4gaW5jbHVkZWQgZmlsZSB0byBpbmNsdWRlIG90 aGVyIGZpbGVzLCBwdXQgSU5DTFVERSBpbg0KIyB0aGUgbGlzdCBvZiBhbGxv d2VkIHNldHRpbmdzLg0KIw0KIyBJZiB5b3UgYWxsb3cgYW4gaW5jbHVkZWQg ZmlsZSB0byBpbmNsdWRlIG90aGVyIGZpbGVzLCBhbmQgaWYgYSBsaXN0IG9m DQojIGFsbG93ZWQgc2V0dGluZ3MgaXMgc3BlY2lmaWVkIGZvciB0aGF0IGZp bGUgd2l0aCB0aGUgSU5DTFVERSBjb21tYW5kLCBuZXN0ZWQNCiMgZmlsZXMg YXJlIG9ubHkgYWxsb3dlZCB0byBpbmNsdWRlIHRoZSBsaXN0IG9mIHNldHRp bmdzIHRoYXQgaXMgdGhlIHNldCBBTkQgb2YNCiMgc2V0dGluZ3MgYWxsb3dl ZCBmb3IgdGhlIGluY2x1ZGVkIGZpbGUgYW5kIHNldHRpbmdzIGFsbG93ZWQg YnkgbmVzdGVkIElOQ0xVREUNCiMgY29tbWFuZHMuICBJbiBzaG9ydCwgdGhl cmUgaXMgbm8gc2VjdXJpdHkgaG9sZSBpbnRyb2R1Y2VkIGJ5IGluY2x1ZGlu ZyBhDQojIHVzZXItZGVmaW5lZCBjb25maWd1cmF0aW9uIGZpbGUgaWYgdGhl IG9yaWdpbmFsIGxpc3Qgb2YgYWxsb3dlZCBzZXR0aW5ncyBpcw0KIyBzZWN1 cmUuDQoNCg0KLmgyIFNUQVJURklMRQ0KIyBTVEFSVEZJTEUgaXMgdGhlIGRl ZmF1bHQgc3RhcnRpbmcgVVJMIGlmIG5vbmUgaXMgc3BlY2lmaWVkDQojICAg b24gdGhlIGNvbW1hbmQgbGluZSBvciB2aWEgYSBXV1dfSE9NRSBlbnZpcm9u bWVudCB2YXJpYWJsZTsNCiMgICBMeW54IHdpbGwgcmVmdXNlIHRvIHN0YXJ0 IHdpdGhvdXQgYSBzdGFydGluZyBVUkwgb2Ygc29tZSBraW5kLg0KIyBTVEFS VEZJTEUgY2FuIGJlIHJlbW90ZSwgZS5nLiBodHRwOi8vd3d3LnczLm9yZy9k ZWZhdWx0Lmh0bWwgLA0KIyAgICAgICAgICAgICAgICBvciBsb2NhbCwgZS5n LiBmaWxlOi8vbG9jYWxob3N0L1BBVEhfVE8vRklMRU5BTUUgLA0KIyAgICAg ICAgICAgd2hlcmUgUEFUSF9UTyBpcyByZXBsYWNlZCB3aXRoIHRoZSBjb21w bGV0ZSBwYXRoIHRvIEZJTEVOQU1FDQojICAgICAgICAgICB1c2luZyBVbml4 IHNoZWxsIHN5bnRheCBhbmQgaW5jbHVkaW5nIHRoZSBkZXZpY2Ugb24gVk1T Lg0KIw0KIyBOb3JtYWxseSB3ZSBleHBlY3QgeW91IHdpbGwgY29ubmVjdCB0 byBhIHJlbW90ZSBzaXRlLCBlLmcuLCB0aGUgTHlueCBzdGFydGluZw0KIyBz aXRlOg0KU1RBUlRGSUxFOmZpbGU6L3Vzci9zaGFyZS9kb2MvSFRNTC9pbmRl eC5odG1sDQojDQojIEFzIGFuIGFsdGVybmF0aXZlLCB5b3UgbWF5IHdhbnQg dG8gdXNlIGEgbG9jYWwgVVJMLiAgQSBnb29kIGNob2ljZSBmb3IgdGhpcyBp cw0KIyB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5Og0KLmV4DQojU1RBUlRG SUxFOmZpbGU6Ly9sb2NhbGhvc3Qvfi8NCiMNCiMgWW91ciBjaG9pY2Ugb2Yg U1RBUlRGSUxFIHNob3VsZCByZWZsZWN0IHlvdXIgc2l0ZSdzIG5lZWRzLCBh bmQgYmUgYSBVUkwgdGhhdA0KIyB5b3UgY2FuIGNvbm5lY3QgdG8gcmVsaWFi bHkuICBPdGhlcndpc2UgdXNlcnMgd2lsbCBiZWNvbWUgY29uZnVzZWQgYW5k IHRoaW5rDQojIHRoYXQgdGhleSBjYW5ub3QgcnVuIEx5bnguDQoNCg0KLmgy IEhFTFBGSUxFDQojIEhFTFBGSUxFIG11c3QgYmUgZGVmaW5lZCBhcyBhIFVS TCBhbmQgbXVzdCBoYXZlIGENCiMgY29tcGxldGUgcGF0aCBpZiBsb2NhbDoN CiMgZmlsZTovL2xvY2FsaG9zdC9QQVRIX1RPL2x5bnhfaGVscC9seW54X2hl bHBfbWFpbi5odG1sDQojICAgUmVwbGFjZSBQQVRIX1RPIHdpdGggdGhlIHBh dGggdG8gdGhlIGx5bnhfaGVscCBzdWJkaXJlY3RvcnkNCiMgICBmb3IgdGhp cyBkaXN0cmlidXRpb24gKHVzZSBTSEVMTCBzeW50YXggaW5jbHVkaW5nIHRo ZSBkZXZpY2UNCiMgICBvbiBWTVMgc3lzdGVtcykuDQojIFRoZSBkZWZhdWx0 IEhFTFBGSUxFIGlzOg0KIyBodHRwOi8vd3d3LnRyaWxsLWhvbWUuY29tL2x5 bngvbHlueF9oZWxwL2x5bnhfaGVscF9tYWluLmh0bWwNCiMgICBUaGlzIHNo b3VsZCBiZSBjaGFuZ2VkIHRvIHRoZSBsb2NhbCBwYXRoLg0KIw0KI0hFTFBG SUxFOmh0dHA6Ly93d3cudHJpbGwtaG9tZS5jb20vbHlueC9seW54X2hlbHAv bHlueF9oZWxwX21haW4uaHRtbA0KLmV4DQpIRUxQRklMRTpmaWxlOi8vbG9j YWxob3N0L3Vzci9zaGFyZS9kb2MvbHlueC0yLjguNC9seW54X2hlbHAvbHlu eF9oZWxwX21haW4uaHRtbA0KDQoNCg0KLmgyIERFRkFVTFRfSU5ERVhfRklM RQ0KIyBERUZBVUxUX0lOREVYX0ZJTEUgaXMgdGhlIGRlZmF1bHQgZmlsZSBy ZXRyaWV2ZWQgd2hlbiB0aGUNCiMgdXNlciBwcmVzc2VzIHRoZSAnSScga2V5 IHdoZW4gdmlld2luZyBhbnkgZG9jdW1lbnQuDQojIEFuIGluZGV4IHRvIHlv dXIgQ1dJUyBjYW4gYmUgcGxhY2VkIGhlcmUgb3IgYSBkb2N1bWVudCBjb250 YWluaW5nDQojIHBvaW50ZXJzIHRvIGxvdHMgb2YgaW50ZXJlc3RpbmcgcGxh Y2VzIG9uIHRoZSB3ZWIuDQojDQpERUZBVUxUX0lOREVYX0ZJTEU6aHR0cDov L3d3dy5nb29nbGUuY29tLw0KDQoNCi5oMSBJbnRlcmFjdGlvbg0KDQouaDIg R09UT0JVRkZFUg0KIyBTZXQgR09UT0JVRkZFUiB0byBUUlVFIGlmIHlvdSB3 YW50IHRvIGhhdmUgdGhlIHByZXZpb3VzIGdvdG8gVVJMLA0KIyBpZiBhbnks IG9mZmVyZWQgZm9yIHJldXNlIG9yIGVkaXRpbmcgd2hlbiB1c2luZyB0aGUg J2cnb3RvIGNvbW1hbmQuDQojIFRoZSBkZWZhdWx0IGlzIGRlZmluZWQgaW4g dXNlcmRlZnMuaC4gIElmIGxlZnQgRkFMU0UsIHRoZSBjaXJjdWxhcg0KIyBi dWZmZXIgb2YgcHJldmlvdXNseSBlbnRlcmVkIGdvdG8gVVJMcyBjYW4gc3Rp bGwgYmUgaW52b2tlZCB2aWEgdGhlDQojIFVwLUFycm93IG9yIERvd24tQXJy b3cga2V5cyBhZnRlciBlbnRlcmluZyB0aGUgJ2cnb3RvIGNvbW1hbmQuDQoj DQojR09UT0JVRkZFUjpGQUxTRQ0KDQoNCi5oMiBKVU1QX1BST01QVA0KIyBK VU1QX1BST01QVCBpcyB0aGUgZGVmYXVsdCBzdGF0dXNsaW5lIHByb21wdCBm b3Igc2VsZWN0aW5nIGEganVtcHMgZmlsZQ0KIyBzaG9ydGN1dC4gIChzZWUg YmVsb3cpLg0KIyBZb3UgY2FuIGNoYW5nZSB0aGUgcHJvbXB0IGhlcmUgZnJv bSB0aGF0IGRlZmluZWQgaW4gdXNlcmRlZnMuaC4gIEFueQ0KIyB0cmFpbGlu ZyB3aGl0ZSBzcGFjZSB3aWxsIGJlIHRyaW1tZWQsIGFuZCBhIHNpbmdsZSBz cGFjZSBpcyBhZGRlZCBieSBMeW54DQojIGZvbGxvd2luZyB0aGUgbGFzdCBu b24td2hpdGUgY2hhcmFjdGVyLiAgWW91IG11c3Qgc2V0IHRoZSBkZWZhdWx0 IHByb21wdA0KIyBiZWZvcmUgc2V0dGluZyB0aGUgZGVmYXVsdCBqdW1wcyBm aWxlIChiZWxvdykuICBJZiBhIGRlZmF1bHQganVtcHMgZmlsZQ0KIyB3YXMg c2V0IHZpYSB1c2VyZGVmcy5oLCBhbmQgeW91IGNoYW5nZSB0aGUgcHJvbXB0 IGhlcmUsIHlvdSBtdXN0IHNldCB0aGUNCiMgZGVmYXVsdCBqdW1wcyBmaWxl IGFnYWluIChiZWxvdykgZm9yIHRoZSBjaGFuZ2UgdG8gYmUgaW1wbGVtZW50 ZWQuDQojDQojSlVNUF9QUk9NUFQ6SnVtcCB0byAodXNlICc/JyBmb3IgbGlz dCk6DQoNCg0KLmgxIEF1eGlsaWFyeSBGYWNpbGl0aWVzDQoNCi5oMiBKVU1Q RklMRQ0KIyBKVU1QRklMRSBpcyB0aGUgbG9jYWwgZmlsZSBjaGVja2VkIGZv ciBzaG9ydC1jdXQgbmFtZXMgZm9yIFVSTHMNCiMgd2hlbiB0aGUgdXNlciBw cmVzc2VzIHRoZSAnaicgKEpVTVApIGtleS4gIFRoZSB1c2VyIHdpbGwgYmUg cHJvbXB0ZWQNCiMgdG8gZW50ZXIgYSBzaG9ydC1jdXQgbmFtZSBmb3IgYW4g VVJMLCB3aGljaCBMeW54IHdpbGwgdGhlbiBmb2xsb3cNCiMgaW4gYSBzaW1p bGFyIG1hbm5lciB0byAnZydvdG87IGFsdGVybmF0aXZlbHksIHMvaGUgY2Fu IGVudGVyICc/Jw0KIyB0byB2aWV3IHRoZSBmdWxsIEpVTVBGSUxFIGxpc3Qg b2Ygc2hvcnQtY3V0cyB3aXRoIGFzc29jaWF0ZWQgVVJMcy4NCiMgVGhlcmUg aXMgYW4gZXhhbXBsZSBqdW1wcyBmaWxlIGluIHRoZSBzYW1wbGVzIHN1YmRp cmVjdG9yeS4NCiMgSWYgbm90IGRlZmluZWQgaGVyZSBvciBpbiB1c2VyZGVm cy5oLCB0aGUgSlVNUCBjb21tYW5kIHdpbGwgaW52b2tlDQojIHRoZSBOT19K VU1QRklMRSBzdGF0dXNsaW5lIG1lc3NhZ2UgKHNlZSAgTFlNZXNzYWdlc19l bi5oICkuDQojDQojIFRvIGFsbG93ICc/JyB0byB3b3JrLCBpbmNsdWRlIGlu IHRoZSBKVU1QRklMRQ0KIyBhIHNob3J0LWN1dCB0byB0aGUgSlVNUEZJTEUg aXRzZWxmLCBlLmcuDQojIDxkdD4/PGRkPjxhIGhyZWY9ImZpbGU6Ly9sb2Nh bGhvc3QvcGF0aC9qdW1wcy5odG1sIj5UaGlzIFNob3J0Y3V0IExpc3Q8L2E+ DQojDQojIE9uIFZNUywgdXNlIFVuaXggU0hFTEwgc3ludGF4IChpbmNsdWRp bmcgYSBsZWFkIHNsYXNoKSB0byBkZWZpbmUgaXQuDQojDQojIEFsdGVybmF0 ZSBqdW1wcyBmaWxlcyBjYW4gYmUgZGVmaW5lZCBhbmQgbWFwcGVkIHRvIGtl eXMgaGVyZS4gIElmIHRoZQ0KIyBrZXlzIGhhdmUgYWxyZWFkeSBiZWVuIG1h cHBlZCwgdGhlbiB0aG9zZSBtYXBwaW5ncyB3aWxsIGJlIHJlcGxhY2VkLA0K IyBidXQgeW91IHNob3VsZCBsZWF2ZSBhdCBsZWFzdCBvbmUga2V5IG1hcHBl ZCB0byB0aGUgZGVmYXVsdCBqdW1wcw0KIyBmaWxlLiAgWW91IG9wdGlvbmFs bHkgbWF5IGluY2x1ZGUgYSBzdGF0dXNsaW5lIHByb21wdCBzdHJpbmcgZm9y IHRoZQ0KIyBtYXBwaW5nLiAgWW91IG11c3QgbWFwIHVwcGVyIGFuZCBsb3dl cmNhc2Uga2V5cyBzZXBhcmF0ZWx5IChiZXdhcmUgb2YNCiMgbWFwcGluZ3Mg dG8ga2V5cyB3aGljaCB0aGUgdXNlciBjYW4gZnVydGhlciByZW1hcCB2aWEg dGhlICdvJ3B0aW9ucw0KIyBtZW51KS4gIFRoZSBmb3JtYXQgaXM6DQojDQoj CUpVTVBGSUxFOnBhdGg6a2V5Wzpwcm9tcHRdDQojDQojIHdoZXJlIHBhdGgg c2hvdWxkIGJlZ2luIHdpdGggYSAnLycgKGkuZS4sIG5vdCBpbmNsdWRlIGZp bGU6Ly9sb2NhbGhvc3QpLg0KIyBBbnkgd2hpdGUgc3BhY2UgZm9sbG93aW5n IGEgcHJvbXB0IHN0cmluZyB3aWxsIGJlIHRyaW1tZWQsIGFuZCBhIHNpbmds ZQ0KIyBzcGFjZSB3aWxsIGJlIGFkZGVkIGJ5IEx5bnguDQojDQojIEluIHRo ZSBmb2xsb3dpbmcgbGluZSwgaW5jbHVkZSB0aGUgYWN0dWFsIGZ1bGwgbG9j YWwgcGF0aCB0byBKVU1QRklMRSwNCiMgYnV0IGRvIG5vdCBpbmNsdWRlICdm aWxlOi8vbG9jYWxob3N0JyBpbiB0aGUgbGluZS4NCiNKVU1QRklMRTovRlVM TF9MT0NBTF9QQVRIL2p1bXBzLmh0bWwNCi5leA0KI0pVTVBGSUxFOi9MeW54 X0Rpci9pcHMuaHRtbDppOklQIG9yIEludGVyZXN0IGdyb3VwICg/IGZvciBs aXN0KToNCg0KDQouaDIgSlVNUEJVRkZFUg0KIyBTZXQgSlVNUEJVRkZFUiB0 byBUUlVFIGlmIHlvdSB3YW50IHRvIGhhdmUgdGhlIHByZXZpb3VzIGp1bXAg dGFyZ2V0LA0KIyBpZiBhbnksIG9mZmVyZWQgZm9yIHJldXNlIG9yIGVkaXRp bmcgd2hlbiB1c2luZyB0aGUgJ0ondW1wIGNvbW1hbmQuDQojIFRoZSBkZWZh dWx0IGlzIGRlZmluZWQgaW4gdXNlcmRlZnMuaC4gIElmIGxlZnQgRkFMU0Us IHRoZSBjaXJjdWxhcg0KIyBidWZmZXIgb2YgcHJldmlvdXNseSBlbnRlcmVk IHRhcmdldHMgKHNob3J0Y3V0cykgY2FuIHN0aWxsIGJlIGludm9rZWQNCiMg dmlhIHRoZSBVcC1BcnJvdyBvciBEb3duLUFycm93IGtleXMgYWZ0ZXIgZW50 ZXJpbmcgdGhlICdKJ3VtcCBjb21tYW5kLg0KIyBJZiBtdWx0aXBsZSBqdW1w cyBmaWxlcyBhcmUgaW5zdGFsbGVkLCB0aGUgcmVjYWxscyBvZiBzaG9ydGN1 dHMgd2lsbA0KIyBiZSBzcGVjaWZpYyB0byBlYWNoIGZpbGUuICBJZiBMeW54 IHdhcyBidWlsdCB3aXRoIFBFUk1JVF9HT1RPX0ZST01fSlVNUA0KIyBkZWZp bmVkLCBhbnkgcmFuZG9tIFVSTHMgdXNlZCBpbnN0ZWFkIG9mIHNob3J0Y3V0 cyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUNCiMgZ290byBVUkwgYnVmZmVyLCBu b3QgaW4gdGhlIHNob3J0Y3V0cyBidWZmZXIocyksIGFuZCB0aGUgc2luZ2xl IGNoYXJhY3Rlcg0KIyAnOicgY2FuIGJlIHVzZWQgYXMgYSB0YXJnZXQgdG8g aW52b2tlIHRoZSBnb3RvIFVSTCBidWZmZXIgKGFzIGlmICdnJ290bw0KIyBm b2xsb3dlZCBieSBVcC1BcnJvdyBoYWQgYmVlbiBlbnRlcmVkKS4NCiMNCiNK VU1QQlVGRkVSOkZBTFNFDQoNCg0KLmgxIEludGVybmFsIEJlaGF2aW9yDQoN Ci5oMiBTQVZFX1NQQUNFDQojIElmIFNBVkVfU1BBQ0UgaXMgZGVmaW5lZCwg aXQgd2lsbCBiZSB1c2VkIGFzIGEgcGF0aCBwcmVmaXggZm9yIHRoZQ0KIyBz dWdnZXN0ZWQgZmlsZW5hbWUgaW4gIlNhdmUgdG8gRGlzayIgb3BlcmF0aW9u cyBmcm9tIHRoZSAncCdyaW50IG9yDQojICdkJ293bmxvYWQgbWVudXMuICBP biBWTVMsIHlvdSBjYW4gdXNlIGVpdGhlciBWTVMgKGUuZy4sICJTWVMkTE9H SU46IikNCiMgb3IgVW5peCBzeW50YXggKGluY2x1ZGluZyAnficgZm9yIHRo ZSBIT01FIGRpcmVjdG9yeSkuICBPbiBVbml4LCB5b3UNCiMgbXVzdCB1c2Ug VW5peCBzeW50YXguICBJZiB0aGUgc3ltYm9sIGlzIG5vdCBkZWZpbmVkLCBv ciBpcyB6ZXJvLWxlbmd0aA0KIyAoIiIpLCBubyBwcmVmaXggd2lsbCBiZSB1 c2VkLCBhbmQgb25seSBhIGZpbGVuYW1lIGZvciBzYXZpbmcgaW4gdGhlDQoj IGN1cnJlbnQgZGVmYXVsdCBkaXJlY3Rvcnkgd2lsbCBiZSBzdWdnZXN0ZWQu DQojIFRoaXMgZGVmaW5pdGlvbiB3aWxsIGJlIG92ZXJyaWRkZW4gaWYgYSAi TFlOWF9TQVZFX1NQQUNFIiBlbnZpcm9ubWVudA0KIyB2YXJpYWJsZSBoYXMg YmVlbiBzZXQgb24gVW5peCwgb3IgbG9naWNhbCBoYXMgYmVlbiBkZWZpbmVk IG9uIFZNUy4NCiMNCiNTQVZFX1NQQUNFOn4vZm9vLw0KDQoNCi5oMiBSRVVT RV9URU1QRklMRVMNCiMgTHlueCB1c2VzIHRlbXBvcmFyeSBmaWxlcyBmb3Ig KGFtb25nIG90aGVyIHB1cnBvc2VzKSB0aGUgY29udGVudCBvZg0KIyB2YXJp b3VzIHVzZXIgaW50ZXJmYWNlIHBhZ2VzLiAgUkVVU0VfVEVNUEZJTEVTIGNo YW5nZXMgdGhlIGJlaGF2aW9yDQojIGZvciBzb21lIG9mIHRoZXNlIHRlbXAg ZmlsZXMsIGFtb25nIHRoZW0gcGFnZXMgc2hvd24gZm9yIEhJU1RPUlksDQoj IFZMSU5LUywgT1BUSU9OUywgSU5GTywgUFJJTlQsIERPV05MT0FEIGNvbW1h bmRzLg0KIyBJZiBzZXQgdG8gVFJVRSwgdGhlIHNhbWUgZmlsZSBjYW4gYmUg dXNlZCBtdWx0aXBsZSB0aW1lcyBmb3IgdGhlIHNhbWUNCiMgcHVycG9zZS4g IElmIHNldCB0byBGQUxTRSwgYSBuZXcgZmlsZW5hbWUgaXMgZ2VuZXJhdGVk IGVhY2ggdGltZSBiZWZvcmUNCiMgcmV3cml0aW5nIHN1Y2ggYSBwYWdlLiAg V2l0aCBUUlVFLCByZXBlYXRlZCBpbnZvY2F0aW9uIG9mIHRoZXNlIGNvbW1h bmRzDQojIGlzIGxlc3MgbGlrZWx5IHRvIHB1c2ggcHJldmlvdXMgZG9jdW1l bnRzIG91dCBvZiB0aGUgY2FjaGUgb2YgcmVuZGVyZWQNCiMgdGV4dHMgKHNl ZSBhbHNvIERFRkFVTFRfQ0FDSEVfU0laRSkuICBUaGlzIGlzIGVzcGVjaWFs bHkgdXNlZnVsIHdpdGgNCiMgaW50ZXJtaXR0ZW50IChkaWFsdXApIG5ldHdv cmsgY29ubmVjdGlvbnMsIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvDQojIGNv bnRpbnVlIGJyb3dzaW5nIHRocm91Z2ggdGhlIGNhY2hlZCBkb2N1bWVudHMg YWZ0ZXIgZGlzY29ubmVjdGluZy4NCiMgV2l0aCB0aGUgZGVmYXVsdCBzZXR0 aW5nIG9mIEZBTFNFLCB0aGVyZSBjYW4gYmUgbW9yZSB0aGFuIG9uZSBpbmNh cm5hdGlvbg0KIyBvZiBlLmcuIHRoZSBWTElOS1MgcGFnZSBjYWNoZWQgaW4g bWVtb3J5IChidXQgc3RpbGwgb25seSB0aGUgbW9zdCByZWNlbnRseQ0KIyBn ZW5lcmF0ZWQgb25lIGlzIGtlcHQgYXMgYSBmaWxlKSwgcmVzdWx0aW5nIGlu IHNvbWV0aW1lcyBsZXNzIHN1cnByaXNpbmcNCiMgYmVoYXZpb3VyIHdoZW4g cmV0dXJuaW5nIHRvIHN1Y2ggYSBwYWdlIHZpYSBISVNUT1JZIG9yIFBSRVZf RE9DIGZ1bmN0aW9ucw0KIyAobW9zdCB1c2VycyB3aWxsIG5vdCBlbmNvdW50 ZXIgYW5kIG5vdGljZSB0aGlzIGRpZmZlcmVuY2UpLg0KIw0KI1JFVVNFX1RF TVBGSUxFUzpGQUxTRQ0KDQoNCi5oMiBMWU5YX0hPU1RfTkFNRQ0KIyBJZiBM WU5YX0hPU1RfTkFNRSBpcyBkZWZpbmVkIGhlcmUgb3IgaW4gdXNlcmRlZnMu aCwgaXQgd2lsbCBiZQ0KIyB0cmVhdGVkIGFzIGFuIGFsaWFzIGZvciB0aGUg bG9jYWwgaG9zdCBuYW1lIGluIGNoZWNrcyBmb3IgVVJMcyBvbg0KIyB0aGUg bG9jYWwgaG9zdCAoZS5nLiwgd2hlbiB0aGUgLWxvY2FsaG9zdCBzd2l0Y2gg aXMgc2V0KSwgYW5kIHRoaXMNCiMgaG9zdCBuYW1lLCAibG9jYWxob3N0Iiwg YW5kIEhUSG9zdE5hbWUgKHRoZSBmdWxseSBxdWFsaWZpZWQgZG9tYWluDQoj IG5hbWUgb2YgdGhlIHN5c3RlbSBvbiB3aGljaCBMeW54IGlzIHJ1bm5pbmcp IHdpbGwgYWxsIGJlIHBhc3NlZCBhcw0KIyBsb2NhbC4gIEEgZGlmZmVyZW50 IGRlZmluaXRpb24gaGVyZSB3aWxsIG92ZXJyaWRlIHRoYXQgaW4gdXNlcmRl ZnMuaC4NCiMNCiNMWU5YX0hPU1RfTkFNRTp3d3cuY2MudWthbnMuZWR1DQoN Cg0KLmgyIExPQ0FMSE9TVF9BTElBUw0KIyBsb2NhbGhvc3QgYWxpYXNlcw0K IyBBbnkgTE9DQUxIT1NUX0FMSUFTIGRlZmluaXRpb25zIGFsc28gd2lsbCBi ZSBhY2NlcHRlZCBhcyBsb2NhbCB3aGVuDQojIHRoZSAtbG9jYWxob3N0IHN3 aXRjaCBpcyBzZXQuICBUaGVzZSBuZWVkIG5vdCBhY3R1YWxseSBiZSBsb2Nh bCwgaS5lLiwNCiMgaW4gY29udHJhc3QgdG8gTFlOWF9IT1NUX05BTUUsIHlv dSBjYW4gZGVmaW5lIHRoZW0gdG8gdHJ1c3RlZCBob3N0cyBhdA0KIyBvdGhl ciBJbnRlcm5ldCBzaXRlcy4NCiMNCi5leCAyDQojTE9DQUxIT1NUX0FMSUFT OmdvcGhlci5zZXJ2ZXIuZG9tYWluDQojTE9DQUxIT1NUX0FMSUFTOm5ld3Mu c2VydmVyLmRvbWFpbg0KDQoNCi5oMiBMT0NBTF9ET01BSU4NCiMgTE9DQUxf RE9NQUlOIGlzIHVzZWQgZm9yIGEgdGFpbCBtYXRjaCB3aXRoIHRoZSB1dF9o b3N0IGVsZW1lbnQgb2YNCiMgdGhlIHV0bXAgb3IgdXRtcHggc3RydWN0dXJl IG9uIHN5c3RlbXMgd2l0aCB1dG1wIGNhcGFiaWxpdGllcywgdG8NCiMgZGV0 ZXJtaW5lIGlmIGEgdXNlciBpcyBsb2NhbCB0byB5b3VyIGNhbXB1cyBvciBv cmdhbml6YXRpb24gd2hlbg0KIyBoYW5kbGluZyAtcmVzdHJpY3Rpb25zPWlu c2lkZV9mb28gb3Igb3V0c2lkZV9mb28gc2V0dGluZ3MgZm9yIGZ0cCwNCiMg bmV3cywgdGVsbmV0L3RuMzI3MCBhbmQgcmxvZ2luIFVSTHMuICBBbiAiaW5z aWRlIiB1c2VyIGlzIGFzc3VtZWQNCiMgaWYgeW91ciBzeXN0ZW0gZG9lcyBu b3QgaGF2ZSB1dG1wIGNhcGFiaWxpdGllcy4gIENIQU5HRSBUSElTIGhlcmUN CiMgaWYgaXQgd2FzIG5vdCBjaGFuZ2VkIGluIHVzZXJkZWZzLmggYXQgY29t cGlsYXRpb24gdGltZS4NCiMNCiNMT0NBTF9ET01BSU46dWthbnMuZWR1DQoN Cg0KLmgxIENoYXJhY3RlciBzZXRzDQoNCi5oMiBDSEFSQUNURVJfU0VUDQoj IENIQVJBQ1RFUl9TRVQgZGVmaW5lcyB0aGUgZGlzcGxheSBjaGFyYWN0ZXIg c2V0LCBpLmUuLCBhc3N1bWVkIHRvIGJlDQojIGluc3RhbGxlZCBvbiB0aGUg dXNlcidzIHRlcm1pbmFsLiAgSXQgZGV0ZXJtaW5lcyB3aGljaCBjaGFyYWN0 ZXJzIG9yIHN0cmluZ3MNCiMgd2lsbCBiZSB1c2VkIHRvIHJlcHJlc2VudCA4 LWJpdCBjaGFyYWN0ZXIgZW50aXRpZXMgd2l0aGluIEhUTUwuICBOZXcNCiMg Y2hhcmFjdGVyIHNldHMgbWF5IGJlIGRlZmluZWQgYXMgZXhwbGFpbmVkIGlu IHRoZSBSRUFETUUgZmlsZXMgb2YgdGhlDQojIHNyYy9jaHJ0cmFucyBkaXJl Y3RvcnkgaW4gdGhlIEx5bnggc291cmNlIGNvZGUgZGlzdHJpYnV0aW9uLiAg Rm9yIEFzaWFuIChDSkspDQojIGNoYXJhY3RlciBzZXRzLCBpdCBhbHNvIGRl dGVybWluZXMgaG93IEthbmppIGNvZGUgd2lsbCBiZSBoYW5kbGVkLiAgVGhl DQojIGRlZmF1bHQgaXMgZGVmaW5lZCBpbiB1c2VyZGVmcy5oIGFuZCBjYW4g YmUgY2hhbmdlZCBoZXJlIG9yIHZpYSB0aGUNCiMgJ28ncHRpb25zIG1lbnUu ICBUaGUgJ28ncHRpb25zIG1lbnUgc2V0dGluZyB3aWxsIGJlIHN0b3JlZCBp biB0aGUgdXNlcidzIFJDDQojIGZpbGUgd2hlbmV2ZXIgdGhvc2Ugc2V0dGlu Z3MgYXJlIHNhdmVkLCBhbmQgdGhlcmVhZnRlciB3aWxsIGJlIHVzZWQgYXMg dGhlDQojIGRlZmF1bHQuICBGb3IgTHlueCBhICJjaGFyYWN0ZXIgc2V0IiBo YXMgdHdvIG5hbWVzOiAgYSBNSU1FIG5hbWUgKGZvcg0KIyByZWNvZ25pemlu ZyBwcm9wZXJseSBsYWJlbGVkIGNoYXJzZXQgcGFyYW1ldGVycyBpbiBIVFRQ IGhlYWRlcnMgZXRjLiksIGFuZCBhDQojIGh1bWFuLXJlYWRhYmxlIHN0cmlu ZyBmb3IgdGhlICdPJ3B0aW9ucyBNZW51IChzbyB5b3UgbWF5IGZpbmQgaW5m byBhYm91dA0KIyBsYW5ndWFnZSBvciBncm91cCBvZiBsYW5ndWFnZXMgYmVz aWRlcyBNSU1FIG5hbWUpLiAgTm90IGFsbCAnaHVtYW4tcmVhZGFibGUnDQoj IG5hbWVzIGNvcnJlc3BvbmQgdG8gZXhhY3RseSBvbmUgdmFsaWQgTUlNRSBj aGFyc2V0IChleGFtcGxlIGlzICJDaGluZXNlIik7DQojIGluIHRoYXQgY2Fz ZSBhbiBhcHByb3ByaWF0ZSB2YWxpZCAoYW5kIG1vcmUgc3BlY2lmaWMpIE1J TUUgbmFtZSBzaG91bGQgYmUNCiMgdXNlZCB3aGVyZSByZXF1aXJlZC4gIFdl bGwta25vd24gc3lub255bXMgYXJlIGFsc28gcHJvY2Vzc2VkIGluIHRoZSBj b2RlLg0KIw0KIyBSYXcgKENKSykgbW9kZQ0KIw0KIyBMeW54IG5vcm1hbGx5 IHRyYW5zbGF0ZXMgY2hhcmFjdGVycyBmcm9tIGEgZG9jdW1lbnQncyBjaGFy c2V0IHRvIGRpc3BsYXkNCiMgY2hhcnNldCwgdXNpbmcgQVNTVU1FX0NIQVJT RVQgdmFsdWUgKHNlZSBiZWxvdykgaWYgdGhlIGRvY3VtZW50J3MgY2hhcnNl dA0KIyBpcyBub3Qgc3BlY2lmaWVkIGV4cGxpY2l0bHkuICBSYXcgKENKSykg bW9kZSBpcyBPRkYgZm9yIHRoaXMgY2FzZS4NCiMgV2hlbiB0aGUgZG9jdW1l bnQgY2hhcnNldCBpcyBzcGVjaWZpZWQgZXhwbGljaXRseSwgdGhhdCBjaGFy c2V0DQojIG92ZXJyaWRlcyBhbnkgYXNzdW1wdGlvbiBsaWtlIEFTU1VNRV9D SEFSU0VUIG9yIHJhdyAoQ0pLKSBtb2RlLg0KIw0KIyBGb3IgdGhlIEFzaWFu IChDSkspIGRpc3BsYXkgY2hhcmFjdGVyIHNldHMsIHRoZSBjb3JyZXNwb25k aW5nIGNoYXJzZXQgaXMNCiMgYXNzdW1lZCBpbiBkb2N1bWVudHMsIGkuZS4s IHJhdyAoQ0pLKSBtb2RlIGlzIE9OIGJ5IGRlZmF1bHQuICBJbiByYXcgQ0pL DQojIG1vZGUsIDgtYml0IGNoYXJhY3RlcnMgYXJlIG5vdCByZXZlcnNlIHRy YW5zbGF0ZWQgaW4gcmVsYXRpb24gdG8gdGhlIGVudGl0eQ0KIyBjb252ZXJz aW9uIGFycmF5cywgaS5lLiwgdGhleSBhcmUgYXNzdW1lZCB0byBiZSBhcHBy b3ByaWF0ZSBmb3IgdGhlIGRpc3BsYXkNCiMgY2hhcmFjdGVyIHNldC4gIFRo ZSBtb2RlIHNob3VsZCBiZSB0b2dnbGVkIE9GRiB3aGVuIGFuIEFzaWFuIChD SkspIGRpc3BsYXkNCiMgY2hhcmFjdGVyIHNldCBpcyBzZWxlY3RlZCBidXQg dGhlIGRvY3VtZW50IGlzIG5vdCBDSksgYW5kIGl0cyBjaGFyc2V0IG5vdA0K IyBzcGVjaWZpZWQgZXhwbGljaXRseS4NCiMNCiMgUmF3IChDSkspIG1vZGUg bWF5IGJlIHRvZ2dsZWQgYnkgdXNlciB2aWEgJ0AnIChMWUtfUkFXX1RPR0dM RSkga2V5LA0KIyB0aGUgLXJhdyBjb21tYW5kIGxpbmUgc3dpdGNoIG9yIGZy b20gdGhlICdvJ3B0aW9ucyBtZW51Lg0KIw0KIyBSYXcgKENKSykgbW9kZSBl ZmZlY3RpdmVseSBjaGFuZ2VzIHRoZSBjaGFyc2V0IGFzc3VtcHRpb24gYWJv dXQgdW5sYWJlbGVkDQojIGRvY3VtZW50cy4gIFlvdSBjYW4gdG9nZ2xlIHJh dyBtb2RlIE9OIGlmIHlvdSBiZWxpZXZlIHRoZSBkb2N1bWVudCBoYXMgYQ0K IyBjaGFyc2V0IHdoaWNoIGRvZXMgY29ycmVzcG9uZCB0byB5b3VyIERpc3Bs YXkgQ2hhcmFjdGVyIFNldC4gIE9uIHRoZSBvdGhlcg0KIyBoYW5kLCBpZiB5 b3Ugc2V0IEFTU1VNRV9DSEFSU0VUIHRoZSBzYW1lIGFzIERpc3BsYXkgQ2hh cmFjdGVyIFNldCB5b3UgZ2V0IHJhdw0KIyBtb2RlIE9OIGJ5IGRlZmF1bHQg KGJ1dCB5b3UgZ2V0IGFzc3VtZV9jaGFyc2V0PWlzby04ODU5LTEgaWYgeW91 IHRyeSByYXcgbW9kZQ0KIyBPRkYgYWZ0ZXIgaXQpLg0KIw0KIyBOb3RlIHRo YXQgInJhdyIgZG9lcyBub3QgbWVhbiB0aGF0IGV2ZXJ5IGJ5dGUgd2lsbCBi ZSBwYXNzZWQgdG8gdGhlIHNjcmVlbi4NCiMgSFRNTCBjaGFyYWN0ZXIgZW50 aXRpZXMgbWF5IGdldCBleHBhbmRlZCBhbmQgdHJhbnNsYXRlZCwgaW5hcHBy b3ByaWF0ZQ0KIyBjb250cm9sIGNoYXJhY3RlcnMgZmlsdGVyZWQgb3V0LCBl dGMuICBUaGVyZSBpcyBhICJUcmFuc3BhcmVudCIgcHNldWRvDQojIGNoYXJh Y3RlciBzZXQgZm9yIG1vcmUgInJhd25lc3MiLg0KIw0KIyBTaW5jZSBMeW54 IG5vdyBzdXBwb3J0cyBhIHdpZGUgcmFuZ2Ugb2YgcGxhdGZvcm1zIGl0IG1h eSBiZSB1c2VmdWwgdG8gbm90ZQ0KIyB0aGUgY3BYWFggY29kZXBhZ2VzIHVz ZWQgYnkgSUJNIFBDIGNvbXBhdGlibGUgY29tcHV0ZXJzLCBhbmQgd2luZG93 cy14eHh4DQojIHVzZWQgYnkgbmF0aXZlIE1TLVdpbmRvd3MgYXBwcy4gIFdl IGFsc28gbm90ZSB0aGF0IGNwWFhYIHBhZ2VzIHJhcmVseSBhcmUNCiMgZm91 bmQgb24gSW50ZXJuZXQsIGJ1dCBhcmUgbW9zdGx5IGZvciBsb2NhbCBuZWVk cyBvbiBET1MuDQojDQojIFJlY29nbml6ZWQgY2hhcmFjdGVyIHNldHMgaW5j bHVkZToNCiMNCi5uZg0KIyAgICBzdHJpbmcgZm9yICdPJ3B0aW9ucyBNZW51 ICAgICAgICAgIE1JTUUgbmFtZQ0KIyAgICA9PT09PT09PT09PT09PT09PT09 PT09PT09PT0gICAgICAgID09PT09PT09PQ0KIyAgICA3IGJpdCBhcHByb3hp bWF0aW9ucyAoVVMtQVNDSUkpICAgIHVzLWFzY2lpDQojICAgIFdlc3Rlcm4g KElTTy04ODU5LTEpICAgICAgICAgICAgICAgaXNvLTg4NTktMQ0KIyAgICBX ZXN0ZXJuIChJU08tODg1OS0xNSkgICAgICAgICAgICAgIGlzby04ODU5LTE1 DQojICAgIFdlc3Rlcm4gKGNwODUwKSAgICAgICAgICAgICAgICAgICAgY3A4 NTANCiMgICAgV2VzdGVybiAod2luZG93cy0xMjUyKSAgICAgICAgICAgICB3 aW5kb3dzLTEyNTINCiMgICAgSUJNIFBDIFVTIGNvZGVwYWdlIChjcDQzNykg ICAgICAgICBjcDQzNw0KIyAgICBERUMgTXVsdGluYXRpb25hbCAgICAgICAg ICAgICAgICAgIGRlYy1tY3MNCiMgICAgTWFjaW50b3NoICg4IGJpdCkgICAg ICAgICAgICAgICAgICBtYWNpbnRvc2gNCiMgICAgTmVYVCBjaGFyYWN0ZXIg c2V0ICAgICAgICAgICAgICAgICBuZXh0DQojICAgIEhQIFJvbWFuOCAgICAg ICAgICAgICAgICAgICAgICAgICAgaHAtcm9tYW44DQojICAgIENoaW5lc2Ug ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXVjLWNuDQojICAgIEphcGFu ZXNlIChFVUMtSlApICAgICAgICAgICAgICAgICAgZXVjLWpwDQojICAgIEph cGFuZXNlIChTaGlmdF9KSVMpICAgICAgICAgICAgICAgc2hpZnRfamlzDQoj ICAgIEtvcmVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXVjLWty DQojICAgIFRhaXBlaSAoQmlnNSkgICAgICAgICAgICAgICAgICAgICAgYmln NQ0KIyAgICBWaWV0bmFtZXNlIChWSVNDSUkpICAgICAgICAgICAgICAgIHZp c2NpaQ0KIyAgICBFYXN0ZXJuIEV1cm9wZWFuIChJU08tODg1OS0yKSAgICAg IGlzby04ODU5LTINCiMgICAgRWFzdGVybiBFdXJvcGVhbiAoY3A4NTIpICAg ICAgICAgICBjcDg1Mg0KIyAgICBFYXN0ZXJuIEV1cm9wZWFuICh3aW5kb3dz LTEyNTApICAgIHdpbmRvd3MtMTI1MA0KIyAgICBMYXRpbiAzIChJU08tODg1 OS0zKSAgICAgICAgICAgICAgIGlzby04ODU5LTMNCiMgICAgTGF0aW4gNCAo SVNPLTg4NTktNCkgICAgICAgICAgICAgICBpc28tODg1OS00DQojICAgIEJh bHRpYyBSaW0gKGNwNzc1KSAgICAgICAgICAgICAgICAgY3A3NzUNCiMgICAg QmFsdGljIFJpbSAod2luZG93cy0xMjU3KSAgICAgICAgICB3aW5kb3dzLTEy NTcNCiMgICAgQ3lyaWxsaWMgKElTTy04ODU5LTUpICAgICAgICAgICAgICBp c28tODg1OS01DQojICAgIEN5cmlsbGljIChjcDg2NikgICAgICAgICAgICAg ICAgICAgY3A4NjYNCiMgICAgQ3lyaWxsaWMgKHdpbmRvd3MtMTI1MSkgICAg ICAgICAgICB3aW5kb3dzLTEyNTENCiMgICAgQ3lyaWxsaWMgKEtPSTgtUikg ICAgICAgICAgICAgICAgICBrb2k4LXINCiMgICAgQXJhYmljIChJU08tODg1 OS02KSAgICAgICAgICAgICAgICBpc28tODg1OS02DQojICAgIEFyYWJpYyAo Y3A4NjQpICAgICAgICAgICAgICAgICAgICAgY3A4NjQNCiMgICAgQXJhYmlj ICh3aW5kb3dzLTEyNTYpICAgICAgICAgICAgICB3aW5kb3dzLTEyNTYNCiMg ICAgR3JlZWsgKElTTy04ODU5LTcpICAgICAgICAgICAgICAgICBpc28tODg1 OS03DQojICAgIEdyZWVrIChjcDczNykgICAgICAgICAgICAgICAgICAgICAg Y3A3MzcNCiMgICAgR3JlZWsyIChjcDg2OSkgICAgICAgICAgICAgICAgICAg ICBjcDg2OQ0KIyAgICBHcmVlayAod2luZG93cy0xMjUzKSAgICAgICAgICAg ICAgIHdpbmRvd3MtMTI1Mw0KIyAgICBIZWJyZXcgKElTTy04ODU5LTgpICAg ICAgICAgICAgICAgIGlzby04ODU5LTgNCiMgICAgSGVicmV3IChjcDg2Mikg ICAgICAgICAgICAgICAgICAgICBjcDg2Mg0KIyAgICBIZWJyZXcgKHdpbmRv d3MtMTI1NSkgICAgICAgICAgICAgIHdpbmRvd3MtMTI1NQ0KIyAgICBUdXJr aXNoIChJU08tODg1OS05KSAgICAgICAgICAgICAgIGlzby04ODU5LTkNCiMg ICAgSVNPLTg4NTktMTAgICAgICAgICAgICAgICAgICAgICAgICBpc28tODg1 OS0xMA0KIyAgICBVa3JhaW5pYW4gQ3lyaWxsaWMgKGNwODY2dSkgICAgICAg IGNwODY2dQ0KIyAgICBVa3JhaW5pYW4gQ3lyaWxsaWMgKEtPSTgtVSkgICAg ICAgIGtvaTgtdQ0KIyAgICBVTklDT0RFIChVVEYtOCkgICAgICAgICAgICAg ICAgICAgIHV0Zi04DQojICAgIFJGQyAxMzQ1IHcvbyBJbnRybyAgICAgICAg ICAgICAgICAgbW5lbW9uaWMrYXNjaWkrMA0KIyAgICBSRkMgMTM0NSBNbmVt b25pYyAgICAgICAgICAgICAgICAgIG1uZW1vbmljDQojICAgIFRyYW5zcGFy ZW50ICAgICAgICAgICAgICAgICAgICAgICAgeC10cmFuc3BhcmVudA0KLmZp DQojDQojIFRoZSB2YWx1ZSBzaG91bGQgYmUgdGhlIE1JTUUgbmFtZSBvZiBh IGNoYXJhY3RlciBzZXQgcmVjb2duaXplZCBieQ0KIyBMeW54IChjYXNlIGlu c2Vuc2l0aXZlKS4NCiMgRmluZCBSRkMgMTM0NSBhdCBodHRwOi8vd3d3Lmlj cy51Y2kuZWR1L3B1Yi9pZXRmL3VyaS9yZmMxMzQ1LnR4dCAuDQojDQojQ0hB UkFDVEVSX1NFVDppc28tODg1OS0xDQoNCg0KLmgyIEFTU1VNRV9DSEFSU0VU DQojIEFTU1VNRV9DSEFSU0VUIGNoYW5nZXMgdGhlIGhhbmRsaW5nIG9mIGRv Y3VtZW50cyB3aGljaCBkbyBub3QNCiMgZXhwbGljaXRseSBzcGVjaWZ5IGEg Y2hhcnNldC4gIE5vcm1hbGx5IEx5bnggYXNzdW1lcyB0aGF0IDgtYml0DQoj IGNoYXJhY3RlcnMgaW4gdGhvc2UgZG9jdW1lbnRzIGFyZSBlbmNvZGVkIGFj Y29yZGluZyB0byBpc28tODg1OS0xDQojICh0aGUgb2ZmaWNpYWwgZGVmYXVs dCBmb3IgdGhlIEhUVFAgcHJvdG9jb2wpLiAgV2hlbiBBU1NVTUVfQ0hBUlNF VA0KIyBpcyBkZWZpbmVkIGhlcmUgb3IgYnkgYW4gLWFzc3VtZV9jaGFyc2V0 IGNvbW1hbmQgbGluZSBmbGFnIGlzIGluIGVmZmVjdCwNCiMgTHlueCB3aWxs IHRyZWF0IGRvY3VtZW50cyBhcyBpZiB0aGV5IHdlcmUgZW5jb2RlZCBhY2Nv cmRpbmdseS4NCiMgU2VlIGFib3ZlIG9uIGhvdyB0aGlzIGludGVyYWN0cyB3 aXRoICJyYXcgbW9kZSIgYW5kIHRoZSBEaXNwbGF5DQojIENoYXJhY3RlciBT ZXQuDQojIEFTU1VNRV9DSEFSU0VUIGNhbiBhbHNvIGJlIGNoYW5nZWQgdmlh IHRoZSAnbydwdGlvbnMgbWVudSBidXQgd2lsbA0KIyBub3QgYmUgc2F2ZWQg YXMgcGVybWFuZW50IHZhbHVlIGluIHVzZXIncyAubHlueHJjIGZpbGUgdG8g YXZvaWQgbW9yZSBjaGFvcy4NCiMNCiNBU1NVTUVfQ0hBUlNFVDppc28tODg1 OS0xDQoNCg0KLmgyIEFTU1VNRURfRE9DX0NIQVJTRVRfQ0hPSUNFDQouaDIg RElTUExBWV9DSEFSU0VUX0NIT0lDRQ0KIyBJdCBpcyBwb3NzaWJsZSB0byBy ZWR1Y2UgdGhlIG51bWJlciBvZiBjaGFyc2V0IGNob2ljZXMgaW4gdGhlICdP J3B0aW9ucyBtZW51DQojIGZvciAiZGlzcGxheSBjaGFyc2V0IiBhbmQgImFz c3VtZWQgZG9jdW1lbnQgY2hhcnNldCIgZmllbGRzIHZpYQ0KIyBESVNQTEFZ X0NIQVJTRVRfQ0hPSUNFIGFuZCBBU1NVTUVEX0RPQ19DSEFSU0VUX0NIT0lD RSBzZXR0aW5ncyBjb3JyZXNwb25kaW5nbHkuDQojIEVhY2ggb2YgdGhlc2Ug c2V0dGluZ3MgY2FuIGJlIHVzZWQgc2V2ZXJhbCB0aW1lcyB0byBkZWZpbmUg dGhlIHNldCBvZiBwb3NzaWJsZQ0KIyBjaG9pY2VzIGZvciBjb3JyZXNwb25k aW5nIGZpZWxkLiBUaGUgc3ludGF4IGZvciB0aGUgdmFsdWVzIGlzDQojDQoj CXN0cmluZyB8IHByZWZpeCogfCAqDQojDQojIHdoZXJlDQojDQojCSdzdHJp bmcnIGlzIGVpdGhlciB0aGUgTUlNRSBuYW1lIG9mIGNoYXJzZXQgb3IgaXQn cyBmdWxsIG5hbWUgKGxpc3RlZA0KIwkJZWl0aGVyIGluIHRoZSBsZWZ0IG9y IGluIHRoZSByaWdodCBjb2x1bW4gb2YgdGFibGUgb2YNCiMJCXJlY29nbml6 ZWQgY2hhcnNldHMpLCBjYXNlLWluc2Vuc2l0aXZlIC0gZS5nLiAgJ0tvaTgt Uicgb3INCiMJCSdDeXJpbGxpYyAoS09JOC1SKScgKGJvdGggd2l0aG91dCBx dW90ZXMpLA0KIw0KIwkncHJlZml4JyBpcyBhbnkgc3RyaW5nLCBhbmQgc3Vj aCB2YWx1ZSB3aWxsIHNlbGVjdCBhbGwgY2hhcnNldHMgaGF2aW5nDQojCQl0 aGUgbmFtZSB3aXRoIHByZWZpeCBtYXRjaGluZyBnaXZlbiAoY2FzZSBpbnNl bnNpdGl2ZSksIGkuZS4sDQojCQlmb3IgdGhlIGNoYXJzZXRzIGxpc3RlZCBp biB0aGUgdGFibGUgb2YgcmVjb2duaXplZCBjaGFyc2V0cywNCiMNCi5leA0K IyBBU1NVTUVEX0RPQ19DSEFSU0VUX0NIT0lDRTpjeXJpbGxpYyoNCiMJCXdp bGwgYmUgZXF1YWwgdG8gc3BlY2lmeWluZw0KLmV4IDQNCiMgQVNTVU1FRF9E T0NfQ0hBUlNFVF9DSE9JQ0U6Y3A4NjYNCiMgQVNTVU1FRF9ET0NfQ0hBUlNF VF9DSE9JQ0U6d2luZG93cy0xMjUxDQojIEFTU1VNRURfRE9DX0NIQVJTRVRf Q0hPSUNFOmtvaTgtcg0KIyBBU1NVTUVEX0RPQ19DSEFSU0VUX0NIT0lDRTpp c28tODg1OS01DQojCQlvciBsaW5lcyB3aXRoIGZ1bGwgbmFtZXMgb2YgY2hh cnNldHMuDQojDQojCWxpdGVyYWwgc3RyaW5nICcqJyAod2l0aG91dCBxdW90 ZXMpIHdpbGwgZW5hYmxlIGFsbCBjaGFyc2V0IGNob2ljZXMNCiMJCWluIGNv cnJlc3BvbmRpbmcgZmllbGQuICBUaGlzIGlzIHVzZWZ1bCBmb3Igb3ZlcnJp ZGluZyBzaXRlDQojCQlkZWZhdWx0cyBpbiBwcml2YXRlIHBpZWNlcyBvZiBs eW54LmNmZyBpbmNsdWRlZCB2aWEgSU5DTFVERQ0KIwkJZGlyZWN0aXZlLg0K Iw0KIyBEZWZhdWx0IHZhbHVlcyBmb3IgYm90aCBzZXR0aW5ncyBhcmUgJyon LCBidXQgYW55IG9jY3VycmVuY2Ugb2Ygc2V0dGluZ3MNCiMgd2l0aCB2YWx1 ZXMgdGhhdCBkZW5vdGUgYW55IGNoYXJzZXRzIHdpbGwgbWFrZSBvbmx5IGxp c3RlZCBjaG9pY2VzIGF2YWlsYWJsZQ0KIyBmb3IgY29ycmVzcG9uZGluZyBm aWVsZC4NCiNBU1NVTUVEX0RPQ19DSEFSU0VUX0NIT0lDRToqDQojRElTUExB WV9DSEFSU0VUX0NIT0lDRToqDQoNCg0KLmgyIEFTU1VNRV9MT0NBTF9DSEFS U0VUDQojIEFTU1VNRV9MT0NBTF9DSEFSU0VUIGlzIGxpa2UgQVNTVU1FX0NI QVJTRVQgYnV0IG9ubHkgYXBwbGllcyB0byBsb2NhbA0KIyBmaWxlcy4gIElm IG5vIHNldHRpbmcgaXMgZ2l2ZW4gaGVyZSBvciBieSBhbiAtYXNzdW1lX2xv Y2FsX2NoYXJzZXQNCiMgY29tbWFuZCBsaW5lIG9wdGlvbiwgdGhlIHZhbHVl IGZvciBBU1NVTUVfQ0hBUlNFVCBvciAtYXNzdW1lX2NoYXJzZXQNCiMgaXMg dXNlZC4gIEl0IHdvcmtzIGZvciBib3RoIHRleHQvcGxhaW4gYW5kIHRleHQv aHRtbCBmaWxlcy4NCiMgVGhpcyBvcHRpb24gd2lsbCBpZ25vcmUgInJhdyBt b2RlIiB0b2dnbGluZyB3aGVuIGxvY2FsIGZpbGVzIGFyZSB2aWV3ZWQNCiMg KGl0IGlzICJzdHJvbmdlciIgdGhhbiAiYXNzdW1lX2NoYXJzZXQiIG9yIHRo ZSBlZmZlY3RpdmUgY2hhbmdlDQojIG9mIHRoZSBjaGFyc2V0IGFzc3VtcHRp b24gY2F1c2VkIGJ5IGNoYW5naW5nICJyYXcgbW9kZSIpLA0KIyBzbyBvbmx5 IHVzZSB3aGVuIG5lY2Vzc2FyeS4NCiMNCiNBU1NVTUVfTE9DQUxfQ0hBUlNF VDppc28tODg1OS0xDQoNCg0KLmgyIFBSRVBFTkRfQ0hBUlNFVF9UT19TT1VS Q0UNCiMgUFJFUEVORF9DSEFSU0VUX1RPX1NPVVJDRTpUUlVFIHRlbGxzIEx5 bnggdG8gcHJlcGVuZCBhIE1FVEEgQ0hBUlNFVCBsaW5lDQojIHRvIHRleHQv aHRtbCBzb3VyY2UgZmlsZXMgd2hlbiB0aGV5IGFyZSByZXRyaWV2ZWQgZm9y ICdkJ293bmxvYWRpbmcNCiMgb3IgcGFzc2VkIHRvICdwJ3JpbnQgZnVuY3Rp b25zLCBzbyBIVFRQIGhlYWRlcnMgd2lsbCBub3QgYmUgbG9zdC4NCiMgVGhp cyBpcyBuZWNlc3NhcnkgZm9yIHJlc29sdmluZyBjaGFyc2V0IGZvciBsb2Nh bCBodG1sIGZpbGVzLA0KIyB3aGlsZSB0aGUgYXNzdW1lX2xvY2FsX2NoYXJz ZXQgaXMganVzdCBhbiBhc3N1bXB0aW9uLg0KIyBGb3IgdGhlICdkJ293bmxv YWQgb3B0aW9uLCBhIE1FVEEgQ0hBUlNFVCB3aWxsIGJlIGFkZGVkIG9ubHkg aWYgdGhlIEhUVFANCiMgY2hhcnNldCBpcyBwcmVzZW50LiAgVGhlIGNvbXBp bGF0aW9uIGRlZmF1bHQgaXMgVFJVRS4NCiMgSXQgaXMgZ2VuZXJhbGx5IGRl c2lyYWJsZSB0byBoYXZlIGNoYXJzZXQgaW5mb3JtYXRpb24gZm9yIGV2ZXJ5 IGxvY2FsDQojIGh0bWwgZmlsZSwgYnV0IE1FVEEgQ0hBUlNFVCBzdHJpbmcg cG90ZW50aWFsbHkgY291bGQgY2F1c2UNCiMgY29tcGF0aWJpbGl0eSBwcm9i bGVtcyB3aXRoIG90aGVyIGJyb3dzZXJzLCBzZWUgYWxzbyBQUkVQRU5EX0JB U0VfVE9fU09VUkNFLg0KIyBOb3RlIHRoYXQgdGhlIHByZXBlbmRpbmcgaXMg bm90IGRvbmUgZm9yIC1zb3VyY2UgZHVtcHMuDQojDQojUFJFUEVORF9DSEFS U0VUX1RPX1NPVVJDRTpUUlVFDQoNCg0KLmgyIE5DUl9JTl9CT09LTUFSS1MN CiMgTkNSX0lOX0JPT0tNQVJLUzpUUlVFIGFsbG93cyB5b3UgdG8gc2F2ZSA4 LWJpdCBjaGFyYWN0ZXJzIGluIGJvb2ttYXJrIHRpdGxlcw0KIyBpbiB0aGUg dW5pY29kZSBmb3JtYXQgKE5DUikuICBUaGlzIG1heSBiZSB1c2VmdWwgaWYg eW91IG5lZWQgdG8gc3dpdGNoDQojIGRpc3BsYXkgY2hhcnNldHMgZnJlcXVl bnRseS4gIFRoaXMgaXMgdGhlIGNhc2Ugd2hlbiB5b3UgdXNlIEx5bnggb24g ZGlmZmVyZW50DQojIHBsYXRmb3JtcywgZS5nLiwgb24gVU5JWCBhbmQgZnJv bSBhIHJlbW90ZSBQQywgYW5kIHdhbnQgdG8ga2VlcCB0aGUgYm9va21hcmtz DQojIGZpbGUgcGVyc2lzdGVudC4NCiMgQW5vdGhlciBhc3BlY3QgaXMgY29t cGF0aWJpbGl0eTogIE5DUiBpcyBwYXJ0IG9mIEkxOE4gYW5kIEhUTUw0LjAN CiMgc3BlY2lmaWNhdGlvbnMgc3VwcG9ydGVkIHN0YXJ0aW5nIHdpdGggTHlu eCAyLjcuMiwgTmV0c2NhcGUgNC4wIGFuZCBNU0lFIDQuMC4NCiMgT2xkZXIg YnJvd3NlciB2ZXJzaW9ucyB3aWxsIGZhaWwgc28ga2VlcCBOQ1JfSU5fQk9P S01BUktTOkZBTFNFIGlmIHlvdQ0KIyBwbGFuIHRvIHVzZSB0aGVtLg0KIw0K I05DUl9JTl9CT09LTUFSS1M6RkFMU0UNCg0KDQouaDIgRk9SQ0VfOEJJVF9U T1VQUEVSDQojIEZPUkNFXzhCSVRfVE9VUFBFUiBvdmVycmlkZXMgbG9jYWxl IHNldHRpbmdzIGFuZCB1c2VzIGludGVybmFsIDgtYml0DQojIGNhc2UtY29u dmVyc2lvbiBtZWNoYW5pc20gZm9yIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNo ZXMgaW4gbm9uLUFTQ0lJIGRpc3BsYXkNCiMgY2hhcmFjdGVyIHNldHMuICBJ dCBpcyBGQUxTRSBieSBkZWZhdWx0IGFuZCBzaG91bGQgbm90IGJlIGNoYW5n ZWQgdW5sZXNzDQojIHlvdSBlbmNvdW50ZXIgcHJvYmxlbXMgd2l0aCBjYXNl LWluc2Vuc2l0aXZlIHNlYXJjaGVzLg0KIw0KI0ZPUkNFXzhCSVRfVE9VUFBF UjpGQUxTRQ0KDQoNCi5oMiBPVVRHT0lOR19NQUlMX0NIQVJTRVQNCiMgV2hp bGUgTHlueCBzdXBwb3J0cyBkaWZmZXJlbnQgcGxhdGZvcm1zIGFuZCBkaXNw bGF5IGNoYXJhY3RlciBzZXRzDQojIHdlIG5lZWQgdG8gbGltaXQgdGhlIGNo YXJzZXQgaW4gb3V0Z29pbmcgbWFpbCB0byByZWR1Y2UNCiMgdHJvdWJsZSBm b3IgcmVtb3RlIHJlY2lwaWVudHMgd2hvIG1heSBub3QgcmVjb2duaXplIG91 ciBjaGFyc2V0Lg0KIyBZb3UgbWF5IHRyeSBVUy1BU0NJSSBhcyB0aGUgc2Fm ZXN0IHZhbHVlICg3IGJpdCksIGFueSBvdGhlciBNSU1FIG5hbWUsDQojIG9y IGxlYXZlIHRoaXMgZmllbGQgYmxhbmsgKGRlZmF1bHQpIHRvIHVzZSB0aGUg ZGlzcGxheSBjaGFyYWN0ZXIgc2V0Lg0KIyBDaGFyc2V0IHRyYW5zbGF0aW9u cyBjdXJyZW50bHkgYXJlIGltcGxlbWVudGVkIGZvciBtYWlsICJzdWJqZWN0 cz0gIiBvbmx5Lg0KIw0KI09VVEdPSU5HX01BSUxfQ0hBUlNFVDoNCg0KDQou aDIgQVNTVU1FX1VOUkVDX0NIQVJTRVQNCiMgSWYgTHlueCBlbmNvdW50ZXJz IGEgY2hhcnNldCBwYXJhbWV0ZXIgaXQgZG9lc24ndCByZWNvZ25pemUsIGl0 IHdpbGwNCiMgcmVwbGFjZSB0aGUgdmFsdWUgZ2l2ZW4gYnkgQVNTVU1FX1VO UkVDX0NIQVJTRVQgKG9yIGEgY29ycmVzcG9uZGluZw0KIyAtYXNzdW1lX3Vu cmVjX2NoYXJzZXQgY29tbWFuZCBsaW5lIG9wdGlvbikgZm9yIGl0LiAgVGhp cyBjYW4gYmUgdXNlZA0KIyB0byBkZWFsIHdpdGggY2hhcnNldHMgdW5rbm93 biB0byBMeW54LCBpZiB0aGV5IGFyZSAic3VmZmljaWVudGx5DQojIHNpbWls YXIiIHRvIG9uZSB0aGF0IEx5bnggZG9lcyBrbm93IGFib3V0LCBieSBmb3Jj aW5nIHRoZSBzYW1lDQojIHRyZWF0bWVudC4gIFRoZXJlIGlzIG5vIGRlZmF1 bHQsIGFuZCB5b3UgcHJvYmFibHkgc2hvdWxkIGxlYXZlIHRoaXMNCiMgdW5k ZWZpbmVkIHVubGVzcyBuZWNlc3NhcnkuDQojDQojQVNTVU1FX1VOUkVDX0NI QVJTRVQ6aXNvLTg4NTktMQ0KDQouaDIgUFJFRkVSUkVEX0xBTkdVQUdFDQoj IFBSRUZFUlJFRF9MQU5HVUFHRSBpcyB0aGUgbGFuZ3VhZ2UgaW4gTUlNRSBu b3RhdGlvbiAoZS5nLiwgImVuIiwNCiMgImZyIikgd2hpY2ggd2lsbCBiZSBp bmRpY2F0ZWQgYnkgTHlueCBpbiBpdHMgQWNjZXB0LUxhbmd1YWdlIGhlYWRl cnMNCiMgYXMgdGhlIHByZWZlcnJlZCBsYW5ndWFnZS4gIElmIGF2YWlsYWJs ZSwgdGhlIGRvY3VtZW50IHdpbGwgYmUNCiMgdHJhbnNtaXR0ZWQgaW4gdGhh dCBsYW5ndWFnZS4gIFVzZXJzIGNhbiBvdmVycmlkZSB0aGlzIHNldHRpbmcg dmlhDQojIHRoZSAnbydwdGlvbnMgbWVudSBhbmQgc2F2ZSB0aGF0IHByZWZl cmVuY2UgaW4gdGhlaXIgUkMgZmlsZS4NCiMgVGhpcyBtYXkgYmUgYSBjb21t YS1zZXBhcmF0ZWQgbGlzdCBvZiBsYW5ndWFnZXMgaW4gZGVjcmVhc2luZyBw cmVmZXJlbmNlLg0KIw0KI1BSRUZFUlJFRF9MQU5HVUFHRTplbg0KDQoNCi5o MiBQUkVGRVJSRURfQ0hBUlNFVA0KIyBQUkVGRVJSRURfQ0hBUlNFVCBzcGVj aWZpZXMgdGhlIGNoYXJhY3RlciBzZXQgaW4gTUlNRSBub3RhdGlvbiAoZS5n LiwNCiMgIklTTy04ODU5LTIiLCAiSVNPLTg4NTktNSIpIHdoaWNoIEx5bngg d2lsbCBpbmRpY2F0ZSB5b3UgcHJlZmVyIGluDQojIHJlcXVlc3RzIHRvIGh0 dHAgc2VydmVycyB1c2luZyBhbiBBY2NlcHQtQ2hhcnNldHMgaGVhZGVyLiAg VXNlcnMgY2FuDQojIGNoYW5nZSBpdCB2aWEgdGhlICdvJ3B0aW9ucyBtZW51 IGFuZCBzYXZlIHRoYXQgcHJlZmVyZW5jZSBpbiB0aGVpciBSQyBmaWxlLg0K IyBUaGUgdmFsdWUgc2hvdWxkIE5PVCBpbmNsdWRlICJJU08tODg1OS0xIiBv ciAiVVMtQVNDSUkiLA0KIyBzaW5jZSB0aG9zZSB2YWx1ZXMgYXJlIGFsd2F5 cyBhc3N1bWVkIGJ5IGRlZmF1bHQuDQojIElmIGEgZmlsZSBpbiB0aGF0IGNo YXJhY3RlciBzZXQgaXMgYXZhaWxhYmxlLCB0aGUgc2VydmVyIHdpbGwgc2Vu ZCBpdC4NCiMgSWYgbm8gQWNjZXB0LUNoYXJzZXQgaGVhZGVyIGlzIHByZXNl bnQsIHRoZSBkZWZhdWx0IGlzIHRoYXQgYW55DQojIGNoYXJhY3RlciBzZXQg aXMgYWNjZXB0YWJsZS4gIElmIGFuIEFjY2VwdC1DaGFyc2V0IGhlYWRlciBp cyBwcmVzZW50LA0KIyBhbmQgaWYgdGhlIHNlcnZlciBjYW5ub3Qgc2VuZCBh IHJlc3BvbnNlIHdoaWNoIGlzIGFjY2VwdGFibGUNCiMgYWNjb3JkaW5nIHRv IHRoZSBBY2NlcHQtQ2hhcnNldCBoZWFkZXIsIHRoZW4gdGhlIHNlcnZlciBT SE9VTEQgc2VuZA0KIyBhbiBlcnJvciByZXNwb25zZSB3aXRoIHRoZSA0MDYg KG5vdCBhY2NlcHRhYmxlKSBzdGF0dXMgY29kZSwgdGhvdWdoDQojIHRoZSBz ZW5kaW5nIG9mIGFuIHVuYWNjZXB0YWJsZSByZXNwb25zZSBpcyBhbHNvIGFs bG93ZWQuICBTZWUgUkZDIDIwNjgNCiMgKGh0dHA6Ly93d3cuaWNzLnVjaS5l ZHUvcHViL2lldGYvdXJpL3JmYzIwNjgudHh0KS4NCiMNCiNQUkVGRVJSRURf Q0hBUlNFVDoNCg0KDQouaDEgSW50ZXJhY3Rpb24NCg0KLmgyIFVSTF9ET01B SU5fUFJFRklYRVMNCi5oMiBVUkxfRE9NQUlOX1NVRkZJWEVTDQojIFVSTF9E T01BSU5fUFJFRklYRVMgYW5kIFVSTF9ET01BSU5fU1VGRklYRVMgYXJlIHN0 cmluZ3Mgd2hpY2ggd2lsbCBiZQ0KIyBwcmVwZW5kZWQgKHRvZ2V0aGVyIHdp dGggYSBzY2hlbWU6Ly8pIGFuZCBhcHBlbmRlZCB0byB0aGUgZmlyc3QgZWxl bWVudA0KIyBvZiBjb21tYW5kIGxpbmUgb3IgJ2cnb3RvIGFyZ3VtZW50cyB3 aGljaCBhcmUgbm90IGNvbXBsZXRlIFVSTHMgYW5kDQojIGNhbm5vdCBiZSBv cGVuZWQgYXMgYSBsb2NhbCBmaWxlIChmaWxlOi8vbG9jYWxob3N0L3N0cmlu ZykuICBCb3RoDQojIGNhbiBiZSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMuICBF YWNoIHByZWZpeCBtdXN0IGVuZCB3aXRoIGEgZG90LCBlYWNoDQojIHN1ZmZp eCBtdXN0IGJlZ2luIHdpdGggYSBkb3QsIGFuZCBlaXRoZXIgbWF5IGNvbnRh aW4gb3RoZXIgZG90cyAoZS5nLiwNCiMgLmNvbS5qcCkuICBUaGUgZGVmYXVs dCBsaXN0cyBhcmUgZGVmaW5lZCBpbiB1c2VyZGVmcy5oIGFuZCBjYW4gYmUN CiMgcmVwbGFjZWQgaGVyZS4gIEVhY2ggcHJlZml4IHdpbGwgYmUgdXNlZCB3 aXRoIGVhY2ggc3VmZml4LCBpbiBvcmRlciwNCiMgdW50aWwgYSB2YWxpZCBJ bnRlcm5ldCBob3N0IGlzIGNyZWF0ZWQsIGJhc2VkIG9uIGEgc3VjY2Vzc2Z1 bCBETlMNCiMgbG9va3VwIChlLmcuLCBmb28gd2lsbCBiZSB0ZXN0ZWQgYXMg d3d3LmZvby5jb20gYW5kIHRoZW4gd3d3LmZvby5lZHUNCiMgZXRjLikuICBU aGUgZmlyc3QgZWxlbWVudCBjYW4gaW5jbHVkZSBhIDpwb3J0IGFuZC9vciAv cGF0aCB3aGljaCB3aWxsDQojIGJlIHJlc3RvcmVkIHdpdGggdGhlIGV4cGFu ZGVkIGhvc3QgKGUuZy4sIHdmYnI6ODAwMi9kaXIvbHlueCB3aWxsDQojIGJl Y29tZSBodHRwOi8vd3d3LndmYnIuZWR1OjgwMDIvZGlyL2x5bngpLiAgVGhl IHByZWZpeGVzIHdpbGwgbm90IGJlDQojIHVzZWQgaWYgdGhlIGZpcnN0IGVs ZW1lbnQgZW5kcyBpbiBhIGRvdCAob3IgaGFzIGEgZG90IGJlZm9yZSB0aGUN CiMgOnBvcnQgb3IgL3BhdGgpLCBhbmQgc2ltaWxhcmx5IHRoZSBzdWZmaXhl cyB3aWxsIG5vdCBiZSB1c2VkIGlmIHRoZQ0KIyB0aGUgZmlyc3QgZWxlbWVu dCBiZWdpbnMgd2l0aCBhIGRvdCAoZS5nLiwgLm55dS5lZHUgd2lsbCBiZWNv bWUNCiMgaHR0cDovL3d3dy5ueXUuZWR1IHdpdGhvdXQgdGVzdGluZyB3d3cu bnl1LmNvbSkuICBMeW54IHdpbGwgdHJ5IHRvDQojIGd1ZXNzIHRoZSBzY2hl bWUgYmFzZWQgb24gdGhlIGZpcnN0IGZpZWxkIG9mIHRoZSBleHBhbmRlZCBo b3N0IG5hbWUsDQojIGFuZCB1c2UgImh0dHA6Ly8iIGFzIHRoZSBkZWZhdWx0 IChlLmcuLCBnb3BoZXIud2Zici5lZHUgb3IgZ29waGVyLndmYnIuDQojIHdp bGwgYmUgbWFkZSBnb3BoZXI6Ly9nb3BoZXIud2Zici5lZHUpLg0KIw0KI1VS TF9ET01BSU5fUFJFRklYRVM6d3d3Lg0KI1VSTF9ET01BSU5fU1VGRklYRVM6 LmNvbSwuZWR1LC5uZXQsLm9yZw0KDQoNCi5oMiBGT1JNU19PUFRJT05TDQoj IFRvZ2dsZSB3aGV0aGVyIHRoZSBPcHRpb25zIE1lbnUgaXMga2V5LWJhc2Vk IG9yIGZvcm0tYmFzZWQ7DQojIHRoZSBrZXktYmFzZWQgdmVyc2lvbiBpcyBh dmFpbGFibGUgb25seSBpZiBzcGVjaWZpZWQgYXQgY29tcGlsZSB0aW1lLg0K Rk9STVNfT1BUSU9OUzpGQUxTRQ0KDQoNCi5oMiBQQVJUSUFMDQojIERpc3Bs YXkgcGFydGlhbCBwYWdlcyB3aGlsZSBkb3dubG9hZGluZw0KI1BBUlRJQUw6 VFJVRQ0KDQoNCi5oMiBQQVJUSUFMX1RIUkVTDQojIFNldCB0aGUgdGhyZXNo b2xkICMgb2YgbGluZXMgTHlueCBtdXN0IHJlbmRlciBiZWZvcmUgaXQNCiMg cmVkcmF3cyB0aGUgc2NyZWVuIGluIFBBUlRJQUwgbW9kZS4gIEFueXRoaW5n IDwgMCBpbXBsaWVzDQojIHVzZSBvZiB0aGUgc2NyZWVuIHNpemUuDQojUEFS VElBTF9USFJFUzotMQ0KDQoNCi5oMiBTSE9XX0tCX1JBVEUNCiMgV2hpbGUg Z2V0dGluZyBsYXJnZSBmaWxlcywgTHlueCBzaG93cyB0aGUgYXBwcm94aW1h dGUgcmF0ZSBvZiB0cmFuc2Zlci4NCiMgU2V0IHRoaXMgdG8gY2hhbmdlIHRo ZSB1bml0cyBzaG93bjoNCiMgVFJVRSBvciBLQiBmb3IgS0Ivc2VjLg0KIyBG QUxTRSBvciBCWVRFUyBmb3IgYnl0ZXMvc2VjLg0KIyBLQixFVEEgdG8gc2hv dyBLQi9zZWMgd2l0aCBlc3RpbWF0ZWQgY29tcGxldGlvbiB0aW1lLg0KIyBC WVRFUyxFVEEgdG8gc2hvdyBCWVRFUy9zZWMgd2l0aCBlc3RpbWF0ZWQgY29t cGxldGlvbiB0aW1lLg0KIyBOT05FIHRvIGRpc2FibGUgdGhlIGRpc3BsYXkg b2YgdHJhbnNmZXIgcmF0ZSBhbHRvZ2V0aGVyLg0KU0hPV19LQl9SQVRFOktC LEVUQQ0KDQoNCi5oMSBUaW1lb3V0cw0KDQouaDIgSU5GT1NFQ1MNCi5oMiBN RVNTQUdFU0VDUw0KLmgyIEFMRVJUU0VDUw0KIyBUaGUgZm9sbG93aW5nIHRo cmVlIGRlZmluaXRpb25zIHNldCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgZm9y DQojIHBhdXNlcyBmb2xsb3dpbmcgc3RhdHVzbGluZSBtZXNzYWdlcyB0aGF0 IHdvdWxkIG90aGVyd2lzZSBiZQ0KIyByZXBsYWNlZCBpbW1lZGlhdGVseSwg YW5kIGFyZSBtb3JlIGltcG9ydGFudCB0aGFuIHRoZSB1bnBhdXNlZA0KIyBw cm9ncmVzcyBtZXNzYWdlcy4gIFRob3NlIHNldCBieSBJTkZPU0VDUyBhcmUg YWxzbyBiYXNpY2FsbHkNCiMgcHJvZ3Jlc3MgbWVzc2FnZXMgKGUuZy4sIHRo YXQgYSBwcm9tcHRlZCBpbnB1dCBoYXMgYmVlbiBjYW5jZWxlZCkNCiMgYW5k IHNob3VsZCBoYXZlIHRoZSBzaG9ydGVzdCBwYXVzZS4gIFRob3NlIHNldCBi eSBNRVNTQUdFU0VDUyBhcmUNCiMgaW5mb3JtYXRpb25hbCAoZS5nLiwgdGhh dCBhIGZ1bmN0aW9uIGlzIGRpc2FibGVkKSBhbmQgc2hvdWxkIGhhdmUNCiMg YSBwYXVzZSBvZiBpbnRlcm1lZGlhdGUgZHVyYXRpb24uICBUaG9zZSBzZXQg YnkgQUxFUlRTRUNTIHR5cGljYWxseQ0KIyByZXBvcnQgYSBzZXJpb3VzIHBy b2JsZW0gYW5kIHNob3VsZCBiZSBwYXVzZWQgbG9uZyBlbm91Z2ggdG8gcmVh ZA0KIyB3aGVuZXZlciB0aGV5IGFwcGVhciAodHlwaWNhbGx5IHVuZXhwZWN0 ZWRseSkuICBUaGUgZGVmYXVsdCB2YWx1ZXMNCiMgYXJlIGRlZmluZWQgaW4g dXNlcmRlZnMuaCwgYW5kIGNhbiBiZSBtb2RpZmllZCBoZXJlIHNob3VsZCBs b25nZXINCiMgcGF1c2VzIGJlIGRlc2lyZWQgZm9yIGJyYWlsbGUtYmFzZWQg YWNjZXNzIHRvIEx5bnguDQojDQojSU5GT1NFQ1M6MQ0KTUVTU0FHRVNFQ1M6 MQ0KQUxFUlRTRUNTOjENCg0KDQouaDEgQXBwZWFyYW5jZQ0KIyBUaGVzZSBz ZXR0aW5ncyBjYXRlZ29yeSBjb250cm9sIHRoZSBhcHBlYXJhbmNlIG9mIEx5 bngncyBzY3JlZW4gYW5kIHRoZSB3YXkNCiMgTHlueCByZW5kZXJzIHNvbWUg dGFncy4NCg0KLmgyIFVTRV9TRUxFQ1RfUE9QVVBTDQojIElmIFVTRV9TRUxF Q1RfUE9QVVBTIGlzIHNldCBGQUxTRSwgTHlueCB3aWxsIHByZXNlbnQgYSB2 ZXJ0aWNhbCBsaXN0IG9mDQojIHJhZGlvIGJ1dHRvbnMgZm9yIHRoZSBPUFRJ T05zIGluIFNFTEVDVCBibG9ja3Mgd2hpY2ggbGFjayB0aGUgTVVMVElQTEUN CiMgYXR0cmlidXRlLCBpbnN0ZWFkIG9mIHVzaW5nIGEgcG9wdXAgbWVudS4g IE5vdGUgdGhhdCBpZiB0aGUgTVVMVElQTEUNCiMgYXR0cmlidXRlIGlzIHBy ZXNlbnQgaW4gdGhlIFNFTEVDVCBzdGFydCB0YWcsIEx5bnggYWx3YXlzIHdp bGwgY3JlYXRlIGENCiMgdmVydGljYWwgbGlzdCBvZiBjaGVja2JveGVzIGZv ciB0aGUgT1BUSU9Ocy4NCiMgVGhlIGRlZmF1bHQgZGVmaW5lZCBoZXJlIG9y IGluIHVzZXJkZWZzLmggY2FuIGJlIGNoYW5nZWQgdmlhIHRoZSAnbydwdGlv bnMNCiMgbWVudSBhbmQgc2F2ZWQgaW4gdGhlIFJDIGZpbGUsIGFuZCBhbHdh eXMgY2FuIGJlIHRvZ2dsZWQgdmlhIHRoZSAtcG9wdXANCiMgY29tbWFuZCBs aW5lIHN3aXRjaC4NCiMNCiNVU0VfU0VMRUNUX1BPUFVQUzpUUlVFDQoNCg0K LmgyIFNIT1dfQ1VSU09SDQojIFNIT1dfQ1VSU09SIGNvbnRyb2xzIHdoZXRo ZXIgb3Igbm90IHRoZSBjdXJzb3IgaXMgaGlkZGVuIG9yIGFwcGVhcnMNCiMg b3ZlciB0aGUgY3VycmVudCBsaW5rIGluIGRvY3VtZW50cyBvciB0aGUgY3Vy cmVudCBvcHRpb24gaW4gcG9wdXBzLg0KIyBTaG93aW5nIHRoZSBjdXJzb3Ig aXMgaGFuZHkgaWYgeW91IGFyZSBhIHNpZ2h0ZWQgdXNlciB3aXRoIGEgcG9v cg0KIyB0ZXJtaW5hbCB0aGF0IGNhbid0IGRvIGJvbGQgYW5kIHJldmVyc2Ug dmlkZW8gYXQgdGhlIHNhbWUgdGltZSBvcg0KIyBhdCBhbGwuICBJdCBhbHNv IGNhbiBiZSB1c2VmdWwgdG8gYmxpbmQgdXNlcnMsIGFzIGFuIGFsdGVybmF0 aXZlDQojIG9yIHN1cHBsZW1lbnQgdG8gc2V0dGluZyBMSU5LU19BTkRfRklF TERTX0FSRV9OVU1CRVJFRCBvcg0KIyBMSU5LU19BUkVfTlVNQkVSRUQuDQoj IFRoZSBkZWZhdWx0IGRlZmluZWQgaGVyZSBvciBpbiB1c2VyZGVmcy5oIGNh biBiZSBjaGFuZ2VkIHZpYSB0aGUNCiMgJ28ncHRpb25zIG1lbnUgYW5kIHNh dmVkIGluIHRoZSBSQyBmaWxlLCBhbmQgYWx3YXlzIGNhbiBiZSB0b2dnbGVk DQojIHZpYSB0aGUgLXNob3dfY3Vyc29yIGNvbW1hbmQgbGluZSBzd2l0Y2gu DQojDQpTSE9XX0NVUlNPUjpUUlVFDQoNCg0KLmgyIEJPTERfSEVBREVSUw0K IyBJZiBCT0xEX0hFQURFUlMgaXMgc2V0IHRvIFRSVUUgdGhlIEhUX0JPTEQg ZGVmYXVsdCBzdHlsZSB3aWxsIGJlIGFjdGVkDQojIHVwb24gZm9yIDxIMT4g dGhyb3VnaCA8SDY+IGhlYWRlcnMuICBUaGUgY29tcGlsYXRpb24gZGVmYXVs dCBpcyBGQUxTRQ0KIyAob25seSB0aGUgaW5kZW50YXRpb24gc3R5bGVzIGFy ZSBhY3RlZCB1cG9uLCBidXQgc2VlIEJPTERfSDEsIGJlbG93KS4NCiMgT24g VW5peCwgY29tcGlsYXRpb24gd2l0aCAtRFVOREVSTElORV9MSU5LUyBhbHNv IHdpbGwgYXBwbHkgdG8gdGhlDQojIEhUX0JPTEQgc3R5bGUgZm9yIGhlYWRl cnMgd2hlbiBCT0xEX0hFQURFUlMgaXMgVFJVRS4NCiMNCiNCT0xEX0hFQURF UlM6RkFMU0UNCg0KDQouaDIgQk9MRF9IMQ0KIyBJZiBCT0xEX0gxIGlzIHNl dCB0byBUUlVFIHRoZSBIVF9CT0xEIGRlZmF1bHQgc3R5bGUgd2lsbCBiZSBh Y3RlZA0KIyB1cG9uIGZvciA8SDE+IGhlYWRlcnMgZXZlbiBpZiBCT0xEX0hF QURFUlMgaXMgRkFMU0UuICBUaGUgY29tcGlsYXRpb24NCiMgZGVmYXVsdCBp cyBGQUxTRS4gIE9uIFVuaXgsIGNvbXBpbGF0aW9uIHdpdGggLURVTkRFUkxJ TkVfTElOS1MgYWxzbw0KIyB3aWxsIGFwcGx5IHRvIHRoZSBIVF9CT0xEIHN0 eWxlIGZvciBoZWFkZXJzIHdoZW4gQk9MRF9IMSBpcyBUUlVFLg0KIw0KI0JP TERfSDE6RkFMU0UNCg0KDQouaDIgQk9MRF9OQU1FX0FOQ0hPUlMNCiMgSWYg Qk9MRF9OQU1FX0FOQ0hPUlMgaXMgc2V0IHRvIFRSVUUgdGhlIGNvbnRlbnQg b2YgYW5jaG9ycyB3aXRob3V0DQojIGFuIEhSRUYgYXR0cmlidXRlLCAoaS5l LiwgYW5jaG9ycyB3aXRoIGEgTkFNRSBvciBJRCBhdHRyaWJ1dGUpIHdpbGwN CiMgaGF2ZSB0aGUgSFRfQk9MRCBkZWZhdWx0IHN0eWxlLiAgVGhlIGNvbXBp bGF0aW9uIGRlZmF1bHQgaXMgRkFMU0UuDQojIE9uIFVuaXgsIGNvbXBpbGF0 aW9uIHdpdGggLURVTkRFUkxJTkVfTElOS1MgYWxzbyB3aWxsIGFwcGx5IHRv IHRoZQ0KIyBIVF9CT0xEIHN0eWxlIGZvciBOQU1FIChJRCkgYW5jaG9ycyB3 aGVuIEJPTERfTkFNRV9BTkNIT1JTIGlzIFRSVUUuDQojDQojQk9MRF9OQU1F X0FOQ0hPUlM6RkFMU0UNCg0KDQouaDEgSW50ZXJuYWwgQmVoYXZpb3INCg0K LmgyIERFRkFVTFRfQ0FDSEVfU0laRQ0KLmgyIERFRkFVTFRfVklSVFVBTF9N RU1PUllfU0laRQ0KIyBUaGUgREVGQVVMVF9DQUNIRV9TSVpFIHNwZWNpZmll cyB0aGUgbnVtYmVyIG9mIFdXVyBkb2N1bWVudHMgdG8gYmUNCiMgY2FjaGVk IGluIG1lbW9yeSBhdCBvbmUgdGltZS4NCiMNCiMgVGhpcyBzby1jYWxsZWQg Y2FjaGUgc2l6ZSAoYWN0dWFsbHksIG51bWJlcikgaXMgZGVmaW5lZCBpbiB1 c2VyZGVmcy5oIGFuZA0KIyBtYXkgYmUgbW9kaWZpZWQgaGVyZSBhbmQvb3Ig d2l0aCB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50IC1jYWNoZT1OVU1CRVIN CiMgVGhlIG1pbmltdW0gYWxsb3dlZCB2YWx1ZSBpcyAyLCBmb3IgdGhlIGN1 cnJlbnQgZG9jdW1lbnQgYW5kIGF0IGxlYXN0IG9uZQ0KIyB0byBmZXRjaCwg YW5kIHRoZXJlIGlzIG5vIGFic29sdXRlIG1heGltdW0gbnVtYmVyIG9mIGNh Y2hlZCBkb2N1bWVudHMuDQojIE9uIFVuaXgsIGFuZCBWTVMgbm90IGNvbXBp bGVkIHdpdGggVkFYQywgd2hlbmV2ZXIgdGhlIG51bWJlciBpcyBleGNlZWRl ZA0KIyB0aGUgbGVhc3QgcmVjZW50bHkgZGlzcGxheWVkIGRvY3VtZW50IHdp bGwgYmUgcmVtb3ZlZCBmcm9tIG1lbW9yeS4NCiMNCiMgT24gVk1TIGNvbXBp bGVkIHdpdGggVkFYQywgdGhlIERFRkFVTFRfVklSVFVBTF9NRU1PUllfU0la RSBzcGVjaWZpZXMgdGhlDQojIGFtb3VudCAoYnl0ZXMpIG9mIHZpcnR1YWwg bWVtb3J5IHRoYXQgY2FuIGJlIGFsbG9jYXRlZCBhbmQgbm90IHlldCBiZSBm cmVlZA0KIyBiZWZvcmUgcHJldmlvdXMgZG9jdW1lbnRzIGFyZSByZW1vdmVk IGZyb20gbWVtb3J5LiAgSWYgdGhlIHZhbHVlcyBmb3IgYm90aA0KIyB0aGUg REVGQVVMVF9DQUNIRV9TSVpFIGFuZCBERUZBVUxUX1ZJUlRVQUxfTUVNT1JZ X1NJWkUgYXJlIGV4Y2VlZGVkLCB0aGVuDQojIHRoZSBsZWFzdCByZWNlbnRs eSBkaXNwbGF5ZWQgZG9jdW1lbnRzIHdpbGwgYmUgZnJlZWQgdW50aWwgb25l IG9yIHRoZSBvdGhlcg0KIyB2YWx1ZSBpcyBubyBsb25nZXIgZXhjZWVkZWQu ICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBkZWZpbmVkIGluIHVzZXJkZWZzLmgu DQojDQojIFRoZSBVbml4IGFuZCBWTVMgKGJ1dCBub3QgVkFYQykgaW1wbGVt ZW50YXRpb25zIHVzZSB0aGUgQyBsaWJyYXJ5IG1hbGxvYydzDQojIGFuZCBj YWxsb2MncyBmb3IgbWVtb3J5IGFsbG9jYXRpb24sIGJ1dCBwcm9jZWR1cmVz IGZvciB0YWtpbmcgdGhlIGFjdHVhbA0KIyBhbW91bnQgb2YgY2FjaGUgaW50 byBhY2NvdW50IHN0aWxsIG5lZWQgdG8gYmUgZGV2ZWxvcGVkLiAgVGhleSB1 c2Ugb25seQ0KIyB0aGUgREVGQVVMVF9DQUNIRV9TSVpFIHZhbHVlLCBhbmQg dGhhdCBzcGVjaWZpZXMgdGhlIGFic29sdXRlIG1heGltdW0NCiMgbnVtYmVy IG9mIGRvY3VtZW50cyB0byBjYWNoZSAocmF0aGVyIHRoYW4gdGhlIG1heGlt dW0gbnVtYmVyIG9ubHkgaWYNCiMgREVGQVVMVF9WSVJUVUFMX01FTU9SWV9T SVpFIGhhcyBiZWVuIGV4Y2VlZGVkLCBhcyB3aXRoIFZBWEMvVkFYKS4NCiMN CkRFRkFVTFRfQ0FDSEVfU0laRToxMDANCkRFRkFVTFRfVklSVFVBTF9NRU1P UllfU0laRTo0MDk2MDAwDQoNCg0KLmgyIFNPVVJDRV9DQUNIRQ0KIyBTT1VS Q0VfQ0FDSEUgc2V0cyB0aGUgc291cmNlIGNhY2hpbmcgYmVoYXZpb3IgZm9y IEx5bng6DQojIEZJTEUgY2F1c2VzIEx5bnggdG8ga2VlcCBhIHRlbXBvcmFy eSBmaWxlIGZvciBlYWNoIGNhY2hlZCBkb2N1bWVudA0KIyAgIGNvbnRhaW5p bmcgdGhlIEhUTUwgc291cmNlIG9mIHRoZSBkb2N1bWVudCwgd2hpY2ggaXQg dXNlcyB0byByZWdlbmVyYXRlDQojICAgdGhlIGRvY3VtZW50IHdoZW4gY2Vy dGFpbiBzZXR0aW5ncyBhcmUgY2hhbmdlZCAoZm9yIGluc3RhbmNlLA0KIyAg IGhpc3RvcmljYWwgdnMuIG1pbmltYWwgdnMuIHZhbGlkIGNvbW1lbnQgcGFy c2luZykgaW5zdGVhZCBvZiByZWxvYWRpbmcNCiMgICB0aGUgc291cmNlIGZy b20gdGhlIG5ldHdvcmsuDQojIE1FTU9SWSBpcyBsaWtlIEZJTEUsIGV4Y2Vw dCB0aGUgZG9jdW1lbnQgc291cmNlIGlzIGtlcHQgaW4gbWVtb3J5LiAgWW91 DQojICAgbWF5IHdpc2ggdG8gYWRqdXN0IERFRkFVTFRfQ0FDSEVfU0laRSBh bmQgREVGQVVMVF9WSVJUVUFMX01FTU9SWV9TSVpFDQojICAgYWNjb3JkaW5n bHkuDQojIE5PTkUgaXMgdGhlIGRlZmF1bHQ7IHRoZSBkb2N1bWVudCBzb3Vy Y2UgaXMgbm90IGNhY2hlZCwgYW5kIGlzIHJlbG9hZGVkDQojICAgZnJvbSB0 aGUgbmV0d29yayB3aGVuIG5lZWRlZC4NCiMNClNPVVJDRV9DQUNIRTpNRU1P UlkNCg0KDQouaDIgU09VUkNFX0NBQ0hFX0ZPUl9BQk9SVEVEDQojIFRoaXMg c2V0dGluZyBjb250cm9scyB3aGF0IHdpbGwgaGFwcGVuIHdpdGggY2FjaGVk IHNvdXJjZSBmb3IgdGhlIGRvY3VtZW50DQojIGJlaW5nIGZldGNoZWQgZnJv bSB0aGUgbmV0IGlmIGZldGNoaW5nIHdhcyBhYm9ydGVkIChlaXRoZXIgdXNl ciBwcmVzc2VkDQojICd6JyBvciBuZXR3b3JrIHdlbnQgZG93bikuIElmIHNl dCB0byBLRUVQLCB0aGUgc291cmNlIGZldGNoZWQgc28gZmFyIHdpbGwNCiMg YmUgcHJlc2VydmVkIChhbmQgdXNlZCBhcyBjYWNoZSksIGlmIHNldCB0byBE Uk9QIGx5bnggd2lsbCBkcm9wIHRoZQ0KIyBzb3VyY2UgY2FjaGUgZm9yIHRo YXQgZG9jdW1lbnQgKGkuZS4gb25seSBjb21wbGV0ZWx5IGRvd25sb2FkZWQg ZG9jdW1lbnRzDQojIHdpbGwgYmUgY2FjaGVkIGluIHRoYXQgY2FzZSkuDQoj U09VUkNFX0NBQ0hFX0ZPUl9BQk9SVEVEOkRST1ANCg0KLmgyIEFMV0FZU19S RVNVQk1JVF9QT1NUUw0KIyBJZiBBTFdBWVNfUkVTVUJNSVRfUE9TVFMgaXMg c2V0IFRSVUUsIEx5bnggYWx3YXlzIHdpbGwgcmVzdWJtaXQgZm9ybXMNCiMg d2l0aCBtZXRob2QgUE9TVCwgZHVtcGluZyBhbnkgY2FjaGUgZnJvbSBhIHBy ZXZpb3VzIHN1Ym1pc3Npb24gb2YgdGhlDQojIGZvcm0sIGluY2x1ZGluZyB3 aGVuIHRoZSBkb2N1bWVudCByZXR1cm5lZCBieSB0aGF0IGZvcm0gaXMgc291 Z2h0IHdpdGgNCiMgdGhlIFBSRVZfRE9DIGNvbW1hbmQgb3IgdmlhIHRoZSBo aXN0b3J5IGxpc3QuICBMeW54IGFsd2F5cyByZXN1Ym1pdHMNCiMgZm9ybXMg d2l0aCBtZXRob2QgUE9TVCB3aGVuIGEgc3VibWl0IGJ1dHRvbiBvciBhIHN1 Ym1pdHRpbmcgdGV4dCBpbnB1dA0KIyBpcyBhY3RpdmF0ZWQsIGJ1dCBub3Jt YWxseSByZXRyaWV2ZXMgdGhlIHByZXZpb3VzbHkgcmV0dXJuZWQgZG9jdW1l bnQNCiMgaWYgaXQgaGFkIGxpbmtzIHdoaWNoIHlvdSBhY3RpdmF0ZWQsIGFu ZCB0aGVuIGdvIGJhY2sgd2l0aCB0aGUgUFJFVl9ET0MNCiMgY29tbWFuZCBv ciB2aWEgdGhlIGhpc3RvcnkgbGlzdC4NCiMNCiMgVGhlIGRlZmF1bHQgZGVm aW5lZCBoZXJlIG9yIGluIHVzZXJkZWZzLmggY2FuIGJlIHRvZ2dsZWQgdmlh DQojIHRoZSAtcmVzdWJtaXRfZm9ybXMgY29tbWFuZCBsaW5lIHN3aXRjaC4N CiMNCiNBTFdBWVNfUkVTVUJNSVRfUE9TVFM6RkFMU0UNCg0KDQouaDEgSFRN TCBQYXJzaW5nDQoNCi5oMiBOT19JU01BUF9JRl9VU0VNQVANCiMgSWYgTk9f SVNNQVBfSUZfVVNFTUFQIGlzIHNldCBUUlVFLCBMeW54IHdpbGwgbm90IGlu Y2x1ZGUgYSBsaW5rIHRvIHRoZQ0KIyBzZXJ2ZXItc2lkZSBpbWFnZSBtYXAg aWYgYm90aCBhIHNlcnZlci1zaWRlIGFuZCBjbGllbnQtc2lkZSBtYXAgZm9y IHRoZQ0KIyBzYW1lIGltYWdlIGlzIGluZGljYXRlZCBpbiB0aGUgSFRNTCBt YXJrdXAuICBUaGUgY29tcGlsYXRpb24gZGVmYXVsdCBpcw0KIyBGQUxTRSwg c3VjaCB0aGF0IGEgbGluayB3aXRoICJbSVNNQVBdIiBhcyB0aGUgbGluayBu YW1lLCBmb2xsb3dlZCBieSBhDQojIGh5cGhlbiwgd2lsbCBiZSBwcmVwZW5k ZWQgdG8gdGhlIEFMVCBzdHJpbmcgb3IgIltVU0VNQVBdIiBwc2V1ZG8tQUxU IGZvcg0KIyBhY2Nlc3NpbmcgTHlueCdzIHRleHQtYmFzZWQgcmVuZGl0aW9u IG9mIHRoZSBjbGllbnQtc2lkZSBtYXAgKGJhc2VkIG9uDQojIHRoZSBjb250 ZW50IG9mIHRoZSBhc3NvY2lhdGVkIE1BUCBlbGVtZW50KS4gIElmIHRoZSAi W0lTTUFQXSIgbGluayBpcw0KIyBhY3RpdmF0ZWQsIEx5bnggd2lsbCBzZW5k IGEgMCwwIGNvb3JkaW5hdGUgcGFpciB0byB0aGUgc2VydmVyLCB3aGljaA0K IyBMeW54LWZyaWVuZGx5IHNpdGVzIGNhbiBtYXAgdG8gYSBmb3ItdGV4dC1j bGllbnQgZG9jdW1lbnQsIGhvbW9sb2dvdXMNCiMgdG8gd2hhdCBpcyBpbnRl bmRlZCBmb3IgdGhlIGNvbnRlbnQgb2YgYSBGSUcgZWxlbWVudC4NCiMNCiMg VGhlIGNvbXBpbGF0aW9uIGRlZmF1bHQsIG9yIGRlZmF1bHQgZGVmaW5lZCBo ZXJlLCBjYW4gYmUgdG9nZ2xlZCB2aWENCiMgdGhlICItaXNtYXAiIGNvbW1h bmQgbGluZSBzd2l0Y2guDQojDQojTk9fSVNNQVBfSUZfVVNFTUFQOkZBTFNF DQoNCg0KLmgyIFNFRUtfRlJBR19NQVBfSU5fQ1VSDQojIElmIFNFRUtfRlJB R19NQVBfSU5fQ1VSIGlzIHNldCBGQUxTRSwgdGhlbiBVU0VNQVAgYXR0cmli dXRlIHZhbHVlcw0KIyAoaW4gSU1HIG9yIE9CSkVDVCB0YWdzKSBjb25zaXN0 aW5nIG9mIG9ubHkgYSBmcmFnbWVudCAoVVNFTUFQPSIjZm9vIikNCiMgd2ls bCBiZSByZXNvbHZlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgZG9j dW1lbnQncyBiYXNlLCB3aGljaA0KIyBtaWdodCBub3QgYmUgdGhlIHNhbWUg YXMgdGhlIGN1cnJlbnQgZG9jdW1lbnQncyBVUkwuDQojIFRoZSBjb21waWxh dGlvbiBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgY3VycmVudCBkb2N1bWVudCdz IFVSTCBpbiBhbGwNCiMgY2FzZXMgKGkuZS4sIGFzc3VtZSB0aGUgTUFQIGlz IHByZXNlbnQgYmVsb3csIGlmIGl0IHdhc24ndCBwcmVzZW50DQojIGFib3Zl IHRoZSBwb2ludCBpbiB0aGUgSFRNTCBzdHJlYW0gd2hlcmUgdGhlIFVTRU1B UCBhdHRyaWJ1dGUgd2FzDQojIGRldGVjdGVkKS4gIEx5bngncyBwcmVzZW50 ICJzaW5nbGUgcGFzcyIgcmVuZGVyaW5nIGVuZ2luZSBwcmVjbHVkZXMNCiMg Y2hlY2tpbmcgYmVsb3cgYmVmb3JlIG1ha2luZyB0aGUgZGVjaXNpb24gb24g aG93IHRvIHJlc29sdmUgYSBVU0VNQVANCiMgcmVmZXJlbmNlIGNvbnNpc3Rp bmcgc29sZWx5IG9mIGEgZnJhZ21lbnQuDQojDQojU0VFS19GUkFHX01BUF9J Tl9DVVI6VFJVRQ0KDQoNCi5oMiBTRUVLX0ZSQUdfQVJFQV9JTl9DVVINCiMg SWYgU0VFS19GUkFHX0FSRUFfSU5fQ1VSIGlzIHNldCBGQUxTRSwgdGhlbiBI UkVGIGF0dHJpYnV0ZSB2YWx1ZXMNCiMgaW4gQVJFQSB0YWdzIGNvbnNpc3Rp bmcgb2Ygb25seSBhIGZyYWdtZW50IChIUkVGPSIjZm9vIikgd2lsbCBiZQ0K IyByZXNvbHZlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgZG9jdW1l bnQncyBiYXNlLCB3aGljaCBtaWdodA0KIyBub3QgYmUgdGhlIHNhbWUgYXMg dGhlIGN1cnJlbnQgZG9jdW1lbnQncyBVUkwuICBUaGUgY29tcGlsYXRpb24N CiMgZGVmYXVsdCBpcyB0byB1c2UgdGhlIGN1cnJlbnQgZG9jdW1lbnQncyBV UkwsIGFzIGlzIGRvbmUgZm9yIHRoZQ0KIyBIUkVGIGF0dHJpYnV0ZSB2YWx1 ZXMgb2YgQW5jaG9ycyBhbmQgTElOS3MgdGhhdCBjb25zaXN0IHNvbGVseSBv Zg0KIyBhIGZyYWdtZW50Lg0KIw0KI1NFRUtfRlJBR19BUkVBX0lOX0NVUjpU UlVFDQoNCg0KLmgxIENHSSBzY3JpcHRzDQojIFRoZXNlIHNldHRpbmdzIGNv bnRyb2wgTHlueCdzIGFiaWxpdHkgdG8gZXhlY3V0ZSB2YXJpb3VzIHR5cGVz IG9mIHNjcmlwdHMuDQoNCi5oMiBMT0NBTF9FWEVDVVRJT05fTElOS1NfQUxX QVlTX09ODQouaDIgTE9DQUxfRVhFQ1VUSU9OX0xJTktTX09OX0JVVF9OT1Rf UkVNT1RFDQojIExvY2FsIGV4ZWN1dGlvbiBsaW5rcyBhbmQgc2NyaXB0cyBh cmUgYnkgZGVmYXVsdCBjb21wbGV0ZWx5IGRpc2FibGVkLA0KIyB1bmxlc3Mg YSBjaGFuZ2UgaXMgbWFkZSB0byB0aGUgdXNlcmRlZnMuaCBmaWxlIHRvIGVu YWJsZSB0aGVtIG9yDQojIHRoZSBjb25maWd1cmUgc2NyaXB0IGlzIHVzZWQg d2l0aCB0aGUgY29ycmVzcG9uZGluZyBvcHRpb25zDQojICgtLWVuYWJsZS1l eGVjLWxpbmtzIGFuZCAtLWVuYWJsZS1leGVjLXNjcmlwdHMpLg0KIyBTZWUg dGhlIEx5bnggc291cmNlIGNvZGUgZGlzdHJpYnV0aW9uIGFuZCB0aGUgdXNl cmRlZnMuaA0KIyBmaWxlIGZvciBtb3JlIGRldGFpbCBvbiBlbmFibGluZyBl eGVjdXRpb24gbGlua3MgYW5kIHNjcmlwdHMuDQojDQojIElmIHlvdSBoYXZl IGVuYWJsZWQgZXhlY3V0aW9uIGxpbmtzIG9yIHNjcmlwdHMgdGhlIGZvbGxv d2luZw0KIyB0d28gdmFyaWFibGVzIGNvbnRyb2wgTHlueCdzIGFjdGlvbiB3 aGVuIGFuIGV4ZWN1dGlvbiBsaW5rDQojIG9yIHNjcmlwdCBpcyBlbmNvdW50 ZXJlZC4NCiMNCiMgSWYgTE9DQUxfRVhFQ1VUSU9OX0xJTktTX0FMV0FZU19P TiBpcyBzZXQgdG8gVFJVRSBhbnkgZXhlY3V0aW9uDQojIGxpbmsgb3Igc2Ny aXB0IHdpbGwgYmUgZXhlY3V0ZWQgbm8gbWF0dGVyIHdoZXJlIGl0IGNhbWUg ZnJvbS4NCiMgVGhpcyBpcyBFWFRSRU1FTFkgZGFuZ2Vyb3VzLiAgU2luY2Ug THlueCBjYW4gYWNjZXNzIGZpbGVzIGZyb20NCiMgYW55d2hlcmUgaW4gdGhl IHdvcmxkLCB5b3UgbWF5IGVuY291bnRlciBsaW5rcyBvciBzY3JpcHRzIHRo YXQNCiMgd2lsbCBjYXVzZSBkYW1hZ2Ugb3IgY29tcHJvbWlzZSB0aGUgc2Vj dXJpdHkgb2YgeW91ciBzeXN0ZW0uDQojDQojIElmIExPQ0FMX0VYRUNVVElP Tl9MSU5LU19PTl9CVVRfTk9UX1JFTU9URSBpcyBzZXQgdG8gVFJVRSBvbmx5 DQojIGxpbmtzIG9yIHNjcmlwdHMgdGhhdCByZXNpZGUgb24gdGhlIGxvY2Fs IG1hY2hpbmUgYW5kIGFyZQ0KIyByZWZlcmVuY2VkIHdpdGggYSBVUkwgYmVn aW5uaW5nIHdpdGggImZpbGU6Ly9sb2NhbGhvc3QvIiBvciBtZWV0DQojIFRS VVNURURfRVhFQyBvciBBTFdBWVNfVFJVU1RFRF9FWEVDIHJ1bGVzIChzZWUg YmVsb3cpIHdpbGwgYmUNCiMgZXhlY3V0ZWQuICBUaGlzIGlzIG11Y2ggbGVz cyBkYW5nZXJvdXMgdGhhbiBlbmFibGluZyBhbGwgZXhlY3V0aW9uDQojIGxp bmtzLCBidXQgY2FuIHN0aWxsIGJlIGRhbmdlcm91cy4NCiMNCiNMT0NBTF9F WEVDVVRJT05fTElOS1NfQUxXQVlTX09OOkZBTFNFDQpMT0NBTF9FWEVDVVRJ T05fTElOS1NfT05fQlVUX05PVF9SRU1PVEU6VFJVRQ0KDQoNCi5oMiBUUlVT VEVEX0VYRUMNCiMgSWYgTE9DQUxfRVhFQ1VUSU9OX0xJTktfT05fQlVUX05P VF9SRU1PVEUgaXMgVFJVRSwgYW5kIG5vIFRSVVNURURfRVhFQw0KIyBydWxl IGlzIGRlZmluZWQsIGl0IGRlZmF1bHRzIHRvICJmaWxlOi8vbG9jYWxob3N0 LyIgYW5kIGFueSBseW54ZXhlYw0KIyBvciBseW54cHJvZyBjb21tYW5kIHdp bGwgYmUgcGVybWl0dGVkIGlmIGl0IHdhcyByZWZlcmVuY2VkIGZyb20gd2l0 aGluDQojIGEgZG9jdW1lbnQgd2hvc2UgVVJMIGJlZ2lucyB3aXRoIHRoYXQg c3RyaW5nLiAgSWYgeW91IHdpc2ggdG8gcmVzdHJpY3QgdGhlDQojIHJlZmVy ZW5jaW5nIFVSTHMgZnVydGhlciwgeW91IGNhbiBleHRlbmQgdGhlIHN0cmlu ZyB0byBpbmNsdWRlIGEgdHJ1c3RlZA0KIyBwYXRoLiAgWW91IGFsc28gY2Fu IHNwZWNpZnkgYSB0cnVzdGVkIGRpcmVjdG9yeSBmb3IgaHR0cCBVUkxzLCB3 aGljaCB3aWxsDQojIHRoZW4gYmUgdHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUg bG9jYWwgcmF0aGVyIHRoYW4gcmVtb3RlLiAgRm9yIGV4YW1wbGU6DQojDQoj CVRSVVNURURfRVhFQzpmaWxlOi8vbG9jYWxob3N0L3RydXN0ZWQvDQojCVRS VVNURURfRVhFQzpodHRwOi8vd3d3LndmYnIuZWR1L3RydXN0ZWQvDQojDQoj IElmIHlvdSBhbHNvIHdpc2ggdG8gcmVzdHJpY3QgdGhlIGNvbW1hbmRzIHdo aWNoIGNhbiBiZSBleGVjdXRlZCwgY3JlYXRlDQojIGEgc2VyaWVzIG9mIHJ1 bGVzIHdpdGggdGhlIHBhdGggKFVuaXgpIG9yIGNvbW1hbmQgbmFtZSAoVk1T KSBmb2xsb3dpbmcNCiMgdGhlIHN0cmluZywgc2VwYXJhdGVkIGJ5IGEgdGFi LiAgRm9yIGV4YW1wbGU6DQojDQojIFVuaXg6DQojID09PT0NCiMJVFJVU1RF RF9FWEVDOmZpbGU6Ly9sb2NhbGhvc3QvPHRhYj4vYmluL2NwDQojCVRSVVNU RURfRVhFQzpmaWxlOi8vbG9jYWxob3N0Lzx0YWI+L2Jpbi9ybQ0KIyBWTVM6 DQojID09PQ0KIwlUUlVTVEVEX0VYRUM6ZmlsZTovL2xvY2FsaG9zdC88dGFi PmNvcHkNCiMJVFJVU1RFRF9FWEVDOmZpbGU6Ly9sb2NhbGhvc3QvPHRhYj5k ZWxldGUNCiMNCiMgT25jZSB5b3Ugc3BlY2lmeSBhIFRSVVNURURfRVhFQyBy ZWZlcmVuY2luZyBzdHJpbmcsIHRoZSBkZWZhdWx0IGlzDQojIHJlcGxhY2Vk LCBhbmQgYWxsIHRoZSByZWZlcmVuY2luZyBzdHJpbmdzIHlvdSBkZXNpcmUg bXVzdCBiZSBzcGVjaWZpZWQNCiMgYXMgYSBzZXJpZXMuICBTaW1pbGFybHks IGlmIHlvdSBhc3NvY2lhdGUgYSBjb21tYW5kIHdpdGggdGhlIHJlZmVyZW5j aW5nDQojIHN0cmluZywgeW91IG11c3Qgc3BlY2lmeSBhbGwgb2YgdGhlIGFs bG93YWJsZSBjb21tYW5kcyBhcyBhIHNlcmllcyBvZg0KIyBUUlVTVEVEX0VY RUMgcnVsZXMgZm9yIHRoYXQgc3RyaW5nLiAgSWYgeW91IHNwZWNpZnkgQUxX QVlTX1RSVVNURURfRVhFQw0KIyBydWxlcyBiZWxvdywgeW91IG5lZWQgbm90 IHJlcGVhdCB0aGVtIGFzIFRSVVNURURfRVhFQyBydWxlcy4NCiMNCiMgSWYg RVhFQ19MSU5LUyBhbmQgSlVNUEZJTEUgaGF2ZSBiZWVuIGRlZmluZWQsIGFu eSBseW54ZXhlYyBvciBseW54cHJvZw0KIyBVUkxzIGluIHRoYXQgZmlsZSB3 aWxsIGJlIHBlcm1pdHRlZCwgcmVnYXJkbGVzcyBvZiBvdGhlciBzZXR0aW5n cy4gIElmDQojIHlvdSBhbHNvIHNldCBMT0NBTF9FWEVDVVRJT05fTElOS1Nf T05fQlVUX05PVF9SRU1PVEU6VFJVRSBhbmQgYSBzaW5nbGUNCiMgVFJVU1RF RF9FWEVDIHJ1bGUgdGhhdCB3aWxsIGFsd2F5cyBmYWlsIChlLmcuLCAibm9u ZSIpLCB0aGVuICpPTkxZKiB0aGUNCiMgbHlueGV4ZWMgb3IgbHlueHByb2cg VVJMcyBpbiBKVU1QRklMRSAoYW5kIGFueSBBTFdBWVNfVFJVU1RFRF9FWEVD IHJ1bGVzLA0KIyBzZWUgYmVsb3cpIHdpbGwgYmUgYWxsb3dlZC4gIE5vdGUs IGhvd2V2ZXIsIHRoYXQgaWYgTHlueCB3YXMgY29tcGlsZWQgd2l0aA0KIyBD QU5fQU5PTllNT1VTX0pVTVAgc2V0IHRvIEZBTFNFIChkZWZhdWx0IGlzIFRS VUUpLCBvciAtcmVzdHJpY3Rpb25zPWp1bXANCiMgaXMgaW5jbHVkZWQgd2l0 aCB0aGUgLWFub255bW91cyBzd2l0Y2ggYXQgcnVuIHRpbWUsIHRoZW4gdXNl cnMgb2YgYW4NCiMgYW5vbnltb3VzIGFjY291bnQgd2lsbCBub3QgYmUgYWJs ZSB0byBhY2Nlc3MgdGhlIGp1bXBzIGZpbGUgb3IgZW50ZXINCiMgJ2ondW1w IHNob3J0Y3V0cywgYW5kIHRoaXMgc2VsZWN0aXZlIGV4ZWN1dGlvbiBmZWF0 dXJlIHdpbGwgYmUgb3ZlcnJpZGRlbg0KIyBhcyB3ZWxsIChpLmUuLCB0aGV5 IHdpbGwgb25seSBiZSBhYmxlIHRvIGFjY2VzcyBseW54ZXhlYyBvciBseW54 cHJvZw0KIyBVUkxzIHdoaWNoIG1lZXQgYW55IEFMV0FZU19UUlVTVEVEX0VY RUMgcnVsZXMpLg0KIw0KI1RSVVNURURfRVhFQzpub25lDQoNCg0KLmgyIEFM V0FZU19UUlVTVEVEX0VYRUMNCiMgSWYgRVhFQ19MSU5LUyB3YXMgZGVmaW5l ZCwgYW55IGx5bnhleGVjIG9yIGx5bnhwcm9nIFVSTCBjYW4gYmUgbWFkZQ0K IyBhbHdheXMgZW5hYmxlZCBieSBhbiBBTFdBWVNfVFJVU1RFRF9FWEVDIHJ1 bGUgZm9yIGl0LiAgVGhpcyBpcyB1c2VmdWwgZm9yDQojIGFub255bW91cyBh Y2NvdW50cyBpbiB3aGljaCB5b3UgaGF2ZSBkaXNhYmxlZCBleGVjdXRpb24g bGlua3MgZ2VuZXJhbGx5LA0KIyBhbmQgbWF5IGFsc28gaGF2ZSBkaXNhYmxl ZCBqdW1wcyBmaWxlIGxpbmtzLCBidXQgc3RpbGwgd2FudCB0byBhbGxvdw0K IyBleGVjdXRpb24gb2YgcGFydGljdWxhciB1dGlsaXR5IHNjcmlwdHMgb3Ig cHJvZ3JhbXMuICBUaGUgZm9ybWF0IGlzDQojIGxpa2UgdGhhdCBmb3IgVFJV U1RFRF9FWEVDLiAgRm9yIGV4YW1wbGU6DQojDQojIFVuaXg6DQojID09PT0N CiMgICBBTFdBWVNfVFJVU1RFRF9FWEVDOmZpbGU6Ly9sb2NhbGhvc3QvPHRh Yj4vdXNyL2xvY2FsL2tpbmV0aWMvYmluL3VzZXJ0aW1lDQojICAgQUxXQVlT X1RSVVNURURfRVhFQzpodHRwOi8vd3d3Lm1vcmUubmV0Lzx0YWI+L3Vzci9s b2NhbC9raW5ldGljL2Jpbi93aG8uc2gNCiMgVk1TOg0KIyA9PT0NCiMgICBB TFdBWVNfVFJVU1RFRF9FWEVDOmZpbGU6Ly9sb2NhbGhvc3QvPHRhYj51c2Vy dGltZQ0KIyAgIEFMV0FZU19UUlVTVEVEX0VYRUM6aHR0cDovL3d3dy5tb3Jl Lm5ldC88dGFiPnNob3cgdXNlcnMNCiMNCiMgVGhlIGRlZmF1bHQgQUxXQVlT X1RSVVNURURfRVhFQyBydWxlIGlzICJub25lIi4NCiMNCiNBTFdBWVNfVFJV U1RFRF9FWEVDOm5vbmUNCg0KDQouaDIgVFJVU1RFRF9MWU5YQ0dJDQojIFVu aXg6DQojID09PT09DQojIFRSVVNURURfTFlOWENHSSBydWxlcyBkZWZpbmUg dGhlIHBlcm1pdHRlZCBzb3VyY2VzIGFuZC9vciBwYXRocyBmb3INCiMgbHlu eGNnaSBsaW5rcyAoaWYgTFlOWENHSV9MSU5LUyBpcyBkZWZpbmVkIGluIHVz ZXJkZWZzLmgpLiAgVGhlIGZvcm1hdA0KIyBpcyB0aGUgc2FtZSBhcyBmb3Ig VFJVU1RFRF9FWEVDIHJ1bGVzIChzZWUgYWJvdmUpLCBidXQgbm8gZGVmYXVs dHMgYXJlDQojIGRlZmluZWQsIGkuZS4sIGlmIG5vIFRSVVNURURfTFlOWENH SSBydWxlcyBhcmUgZGVmaW5lZCBoZXJlLCBhbnkgc291cmNlDQojIGFuZCBw YXRoIGZvciBseW54Y2dpIGxpbmtzIHdpbGwgYmUgcGVybWl0dGVkLiAgRXhh bXBsZSBydWxlczoNCiMNCiMJVFJVU1RFRF9MWU5YQ0dJOmZpbGU6Ly9sb2Nh bGhvc3QvDQojIAlUUlVTVEVEX0xZTlhDR0k6PHRhYj4vdXNyL2xvY2FsL2V0 Yy9odHRwZC9jZ2ktYmluLw0KIyAJVFJVU1RFRF9MWU5YQ0dJOmZpbGU6Ly9s b2NhbGhvc3QvPHRhYj4vdXNyL2xvY2FsL3d3dy9jZ2ktYmluLw0KIw0KIyBW TVM6DQojID09PT0NCiMgRG8gbm90IGRlZmluZSB0aGlzLg0KIw0KI1RSVVNU RURfTFlOWENHSTpub25lDQoNCg0KLmgyIExZTlhDR0lfRU5WSVJPTk1FTlQN CiMgVW5peDoNCiMgPT09PT0NCiMgTFlOWENHSV9FTlZJUk9OTUVOVCBhZGRz IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQNCiMgZW52aXJv bm1lbnQgdmFyaWFibGUgdG8gdGhlIGxpc3Qgb2YgZW52aXJvbm1lbnQgdmFy aWFibGVzIHBhc3NlZCBvbiB0byB0aGUNCiMgbHlueGNnaSBzY3JpcHQuICBV c2VmdWwgdmFyaWFibGVzIGFyZSBIT01FLCBVU0VSLCBldGMuLi4gIElmIHBy b3hpZXMNCiMgYXJlIGluIHVzZSwgYW5kIHRoZSBzY3JpcHQgaW52b2tlcyBh bm90aGVyIGNvcHkgb2YgbHlueCAob3IgYSBwcm9ncmFtIGxpa2UNCiMgd2dl dCkgaW4gYSBzdWJzaWRpYXJ5IHJvbGUsIGl0IGNhbiBiZSB1c2VmdWwgdG8g YWRkIGh0dHBfcHJveHkgYW5kIG90aGVyDQojICpfcHJveHkgdmFyaWFibGVz Lg0KIw0KIyBWTVM6DQojID09PT0NCiMgRG8gbm90IGRlZmluZSB0aGlzLg0K Iw0KI0xZTlhDR0lfRU5WSVJPTk1FTlQ6DQoNCg0KLmgyIExZTlhDR0lfRE9D VU1FTlRfUk9PVA0KIyBVbml4Og0KIyA9PT09PQ0KIyBMWU5YQ0dJX0RPQ1VN RU5UX1JPT1QgaXMgdGhlIHZhbHVlIG9mIERPQ1VNRU5UX1JPT1QgdGhhdCB3 aWxsIGJlIHBhc3NlZA0KIyB0byBseW54Y2dpIHNjcmlwdHMuICBJZiBzZXQg YW5kIHRoZSBVUkwgaGFzIFBBVEhfSU5GTyBkYXRhLCB0aGVuDQojIFBBVEhf VFJBTlNMQVRFRCB3aWxsIGFsc28gYmUgZ2VuZXJhdGVkLiAgRXhhbXBsZXM6 DQojCUxZTlhDR0lfRE9DVU1FTlRfUk9PVDovdXNyL2xvY2FsL2V0Yy9odHRw ZC9odGRvY3MNCiMJTFlOWENHSV9ET0NVTUVOVF9ST09UOi9kYXRhL2h0ZG9j cy8NCiMNCiMgVk1TOg0KIyA9PT09DQojIERvIG5vdCBkZWZpbmUgdGhpcy4N CiMNCiNMWU5YQ0dJX0RPQ1VNRU5UX1JPT1Q6DQoNCg0KLmgxIENvb2tpZXMN Cg0KLmgyIEZPUkNFX1NTTF9DT09LSUVTX1NFQ1VSRQ0KIyBJZiBGT1JDRV9T U0xfQ09PS0lFU19TRUNVUkUgaXMgc2V0IHRvIFRSVUUsIHRoZW4gU1NMIGVu Y3J5cHRlZCBjb29raWVzDQojIHJlY2VpdmVkIGZyb20gaHR0cHMgc2VydmVy cyBuZXZlciB3aWxsIGJlIHNlbnQgdW5lbmNyeXB0ZWQgdG8gaHR0cA0KIyBz ZXJ2ZXJzLiAgVGhlIGNvbXBpbGF0aW9uIGRlZmF1bHQgaXMgdG8gaW1wb3Nl IHRoaXMgYmxvY2sgb25seSBpZiB0aGUNCiMgaHR0cHMgc2VydmVyIGluY2x1 ZGVkIGEgc2VjdXJlIGF0dHJpYnV0ZSBmb3IgdGhlIGNvb2tpZS4gIFRoZSBu b3JtYWwNCiMgZGVmYXVsdCBvciB0aGF0IGRlZmluZWQgaGVyZSBjYW4gYmUg dG9nZ2xlZCB2aWEgdGhlIC1mb3JjZV9zZWN1cmUNCiMgY29tbWFuZCBsaW5l IHN3aXRjaC4NCiMNCkZPUkNFX1NTTF9DT09LSUVTX1NFQ1VSRTpUUlVFDQoN Cg0KLmgxIEludGVybmFsIEJlaGF2aW9yDQoNCi5oMiBNQUlMX1NZU1RFTV9F UlJPUl9MT0dHSU5HDQojICBNQUlMX1NZU1RFTV9FUlJPUl9MT0dHSU5HIHdp bGwgc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIG93bmVyIG9mDQojICB0aGUgaW5m b3JtYXRpb24sIG9yIEFMRVJUTUFJTCBpZiB0aGVyZSBpcyBubyBvd25lciwg ZXZlcnkgdGltZQ0KIyAgdGhhdCBhIGRvY3VtZW50IGNhbm5vdCBiZSBhY2Nl c3NlZCENCiMNCiMgIE5PVEU6ICBUaGlzIGNhbiBnZW5lcmF0ZSBBIExPVCBv ZiBtYWlsLCBiZSB3YXJuZWQuDQojDQojTUFJTF9TWVNURU1fRVJST1JfTE9H R0lORzpGQUxTRQ0KDQoNCi5oMiBDSEVDS01BSUwNCiMgSWYgQ0hFQ0tNQUlM IGlzIHNldCB0byBUUlVFLCB0aGUgdXNlciB3aWxsIGJlIGluZm9ybWVkICh2 aWEgYSBzdGF0dXNsaW5lDQojIG1lc3NhZ2UpIGFib3V0IHRoZSBleGlzdGVu Y2Ugb2YgYW55IHVucmVhZCBtYWlsIGF0IHN0YXJ0dXAgb2YgTHlueCwgYW5k DQojIHdpbGwgZ2V0IHN0YXR1c2xpbmUgbWVzc2FnZXMgaWYgc3Vic2VxdWVu dCBuZXcgbWFpbCBhcnJpdmVzLiAgSWYgYSBqdW1wcw0KIyBmaWxlIHdpdGgg YSBseW54cHJvZyBVUkwgZm9yIGludm9raW5nIG1haWwgaXMgYXZhaWxhYmxl LCBvciB5b3VyIGh0bWwNCiMgcGFnZXMgaW5jbHVkZSBhbiBtYWlsIGxhdW5j aCBmaWxlIFVSTCwgdGhlIHVzZXIgdGhlcmVieSBjYW4gYWNjZXNzIG1haWwN CiMgYW5kIHJlYWQgdGhlIG1lc3NhZ2VzLiAgVGhlIGNoZWNrcyBhbmQgc3Rh dHVzbGluZSByZXBvcnRzIHdpbGwgbm90IGJlDQojIHBlcmZvcm1lZCBpZiBM eW54IGhhcyBiZWVuIGludm9rZWQgd2l0aCB0aGUgLXJlc3RyaWN0aW9ucz1t YWlsIHN3aXRjaC4NCiMNCiMgVk1TIFVTRVJTICEhIQ0KIyA9PT09PT09PT09 PT09DQojIE5ldyBtYWlsIGlzIG5vcm1hbGx5IGJyb2FkY2FzdCBhcyBpdCBh cnJpdmVzLCB2aWEgInVuc29saWNpdGVkIHNjcmVlbg0KIyBicm9hZGNhc3Rz Iiwgd2hpY2ggY2FuIGJlICJ3aXBlZCIgZnJvbSB0aGUgTHlueCBkaXNwbGF5 IHZpYSB0aGUgQ3RybC1XDQojIGNvbW1hbmQuICBZb3UgbWF5IHByZWZlciB0 byBkaXNhYmxlIHRoZSBicm9hZGNhc3RzIGFuZCB1c2UgQ0hFQ0tNQUlMDQoj IGluc3RlYWQgKGUuZy4sIGluIGEgcHVibGljIGFjY291bnQgd2hpY2ggd2ls bCBiZSB1c2VkIGJ5IHBlb3BsZSB3aG8NCiMgYXJlIGlnbm9yYW50IGFib3V0 IFZNUykuDQojDQojQ0hFQ0tNQUlMOkZBTFNFDQoNCg0KLmgxIE5ld3MtZ3Jv dXBzDQoNCi5oMiBOTlRQU0VSVkVSDQojIFRvIGVuYWJsZSBuZXdzIHJlYWRp bmcgYWJpbGl0eSB2aWEgTHlueCwgdGhlIGVudmlyb25tZW50IHZhcmlhYmxl IE5OVFBTRVJWRVINCiMgbXVzdCBiZSBzZXQgc28gdGhhdCBpdCBwb2ludHMg dG8geW91ciBzaXRlJ3MgTk5UUCBzZXJ2ZXINCiMgKHNlZSBMeW54IFVzZXJz IEd1aWRlIG9uIGVudmlyb25tZW50IHZhcmlhYmxlcykuDQojIEx5bnggcmVz cGVjdHMgUkZDIDE3MzggKGh0dHA6Ly93d3cuaWNzLnVjaS5lZHUvcHViL2ll dGYvdXJpL3JmYzE3MzgudHh0KQ0KIyBhbmQgZG9lcyBub3QgYWNjZXB0IGEg aG9zdCBmaWVsZCBpbiBuZXdzIFVSTHMgKHVzZSBubnRwOiBpbnN0ZWFkIG9m IG5ld3M6IGZvcg0KIyB0aGUgc2NoZW1lIGlmIHlvdSB3aXNoIHRvIHNwZWNp ZnkgYW4gTk5UUCBob3N0IGluIGEgVVJMLCBhcyBleHBsYWluZWQgaW4gdGhl DQojIFJGQykuICBJZiB5b3UgaGF2ZSBub3Qgc2V0IHRoZSB2YXJpYWJsZSBl eHRlcm5hbGx5LCB5b3UgY2FuIHNldCBpdCBhdCBydW4NCiMgdGltZSB2aWEg dGhpcyBjb25maWd1cmF0aW9uIGZpbGUuICBJdCB3aWxsIG5vdCBvdmVycmlk ZSBhbiBleHRlcm5hbCBzZXR0aW5nLg0KIyBOb3RlIHRoYXQgb24gVk1TIGl0 IGlzIHNldCBhcyBhIHByb2Nlc3MgbG9naWNhbCByYXRoZXIgdGhhbiBzeW1i b2wsIGFuZCB3aWxsDQojIG91dGxpdmUgdGhlIEx5bnggaW1hZ2UuDQojIFRo ZSBuZXdzIHJlYWRpbmcgZmFjaWxpdHkgaW4gTHlueCBpcyBxdWl0ZSBsaW1p dGVkLiAgTHlueCBkb2VzIG5vdCBwcm92aWRlIGENCiMgZnVsbCBmZWF0dXJl ZCBuZXdzIHJlYWRlciB3aXRoIGVsYWJvcmF0ZSBlcnJvciBjaGVja2luZyBh bmQgc2FmZXR5IGZlYXR1cmVzLg0KIw0KI05OVFBTRVJWRVI6bmV3cy5zZXJ2 ZXIuZG9tDQoNCg0KLmgyIExJU1RfTkVXU19OVU1CRVJTDQojIElmIExJU1Rf TkVXU19OVU1CRVJTIGlzIHNldCBUUlVFLCBMeW54IHdpbGwgdXNlIGFuIG9y ZGVyZWQgbGlzdCBhbmQgaW5jbHVkZQ0KIyB0aGUgbnVtYmVycyBvZiBhcnRp Y2xlcyBpbiBuZXdzIGxpc3RpbmdzLCBpbnN0ZWFkIG9mIHVzaW5nIGFuIHVu b3JkZXJlZA0KIyBsaXN0LiAgVGhlIGRlZmF1bHQgaXMgZGVmaW5lZCBpbiB1 c2VyZGVmcy5oLCBhbmQgY2FuIGJlIG92ZXJyaWRkZW4gaGVyZS4NCiMNCkxJ U1RfTkVXU19OVU1CRVJTOlRSVUUNCg0KDQouaDIgTElTVF9ORVdTX0RBVEVT DQojIElmIExJU1RfTkVXU19EQVRFUyBpcyBzZXQgVFJVRSwgTHlueCB3aWxs IGluY2x1ZGUgdGhlIGRhdGVzIG9mIGFydGljbGVzIGluDQojIG5ld3MgbGlz dGluZ3MuICBUaGUgZGF0ZXMgYWx3YXlzIGFyZSBpbmNsdWRlZCBpbiB0aGUg YXJ0aWNsZXMsIHRoZW1zZWx2ZXMuDQojIFRoZSBkZWZhdWx0IGlzIGRlZmlu ZWQgaW4gdXNlcmRlZnMuaCwgYW5kIGNhbiBiZSBvdmVycmlkZGVuIGhlcmUu DQojDQojTElTVF9ORVdTX0RBVEVTOkZBTFNFDQoNCg0KLmgyIE5FV1NfQ0hV TktfU0laRQ0KLmgyIE5FV1NfTUFYX0NIVU5LDQojIE5FV1NfQ0hVTktfU0la RSBhbmQgTkVXU19NQVhfQ0hVTksgcmVndWxhdGUgdGhlIGNodW5raW5nIG9m IG5ld3MgYXJ0aWNsZQ0KIyBsaXN0aW5ncyB3aXRoIGluY2x1c2lvbiBvZiBs aW5rcyBmb3IgbGlzdGluZyBlYXJsaWVyIGFuZC9vciBsYXRlciBhcnRpY2xl cy4NCiMgVGhlIGRlZmF1bHRzIGFyZSBkZWZpbmVkIGluIEhUTmV3cy5jIGFz IDMwIGFuZCA0MCwgcmVzcGVjdGl2ZWx5LiAgSWYgdGhlDQojIG5ld3MgZ3Jv dXAgY29udGFpbnMgbW9yZSB0aGFuIE5FV1NfTUFYX0NIVU5LIGFydGljbGVz LCB0aGV5IHdpbGwgYmUgbGlzdGVkDQojIGluIE5FV1NfQ0hVTktfU0laRSBj aHVua3MuICBZb3UgY2FuIGNoYW5nZSB0aGUgZGVmYXVsdHMgaGVyZSwgYW5k L29yIG9uDQojIHRoZSBjb21tYW5kIGxpbmUgdmlhIC1uZXdzY2h1bmtzaXpl PU5VTUJFUiBhbmQvb3IgLW5ld3NtYXhjaHVuaz1OVU1CRVINCiMgc3dpdGNo ZXMuICBOb3RlIHRoYXQgaWYgdGhlIGNodW5rIHNpemUgaXMgaW5jcmVhc2Vk LCBoZXJlIG9yIG9uIHRoZSBjb21tYW5kDQojIGxpbmUsIHRvIGEgdmFsdWUg Z3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG1heGltdW0sIHRoZSBtYXhpbXVt IHdpbGwgYmUNCiMgaW5jcmVhc2VkIHRvIHRoYXQgbnVtYmVyLiAgQ29udmVy c2VseSwgaWYgdGhlIG1heGltdW0gaXMgc2V0IHRvIGEgbnVtYmVyDQojIGxl c3MgdGhhbiB0aGUgY3VycmVudCBjaHVuayBzaXplLCB0aGUgY2h1bmsgc2l6 ZSB3aWxsIGJlIHJlZHVjZWQgdG8gdGhhdA0KIyBudW1iZXIuICBUaHVzLCB5 b3UgbmVlZCB1c2Ugb25seSBvbmUgb2YgdGhlIHR3byBzd2l0Y2hlcyBvbiB0 aGUgY29tbWFuZA0KIyBsaW5lLCBiYXNlZCBvbiB0aGUgZGlyZWN0aW9uIG9m IGludGVuZGVkIGNoYW5nZSByZWxhdGl2ZSB0byB0aGUgY29tcGlsYXRpb24N CiMgb3IgY29uZmlndXJhdGlvbiBkZWZhdWx0cy4gIFRoZSBjb21waWxhdGlv biBkZWZhdWx0cyBlbnN1cmUgdGhhdCB0aGVyZSB3aWxsDQojIGJlIGF0IGxl YXN0IDEwIGVhcmxpZXIgYXJ0aWNsZXMgYmVmb3JlIGJvdGhlcmluZyB0byBj aHVuayBhbmQgY3JlYXRlIGEgbGluaw0KIyBmb3IgZWFybGllciBhcnRpY2xl cy4NCiMNCiNORVdTX0NIVU5LX1NJWkU6MzANCiNORVdTX01BWF9DSFVOSzo0 MA0KDQoNCi5oMiBORVdTX1BPU1RJTkcNCiMgU2V0IE5FV1NfUE9TVElORyB0 byBGQUxTRSBpZiB5b3UgZG8gbm90IHdhbnQgdG8gc3VwcG9ydCBwb3N0aW5n IHRvDQojIG5ld3MgZ3JvdXBzIHZpYSBMeW54LiAgSWYgbGVmdCBUUlVFLCBM eW54IHdpbGwgdXNlIGl0cyBuZXdzIGdhdGV3YXkgdG8NCiMgcG9zdCBuZXcg bWVzc2FnZXMgb3IgZm9sbG93dXBzIHRvIG5ld3MgZ3JvdXBzLCB1c2luZyB0 aGUgVVJMIHNjaGVtZXMNCiMgZGVzY3JpYmVkIGluIHRoZSAiU3VwcG9ydGVk IFVSTHMiIHNlY3Rpb24gb2YgdGhlIG9ubGluZSAnaCdlbHAuICBUaGUNCiMg cG9zdHMgd2lsbCBiZSBhdHRlbXB0ZWQgdmlhIHRoZSBubnRwIHNlcnZlciBz cGVjaWZpZWQgaW4gdGhlIFVSTCwgb3INCiMgaWYgbm9uZSB3YXMgc3BlY2lm aWVkLCB2aWEgdGhlIE5OVFBTRVJWRVIgY29uZmlndXJhdGlvbiBvciBlbnZp cm9ubWVudA0KIyB2YXJpYWJsZS4gIExpbmtzIHdpdGggdGhlc2UgVVJMcyBm b3IgcG9zdGluZyBvciBzZW5kaW5nIGZvbGxvd3VwcyBhcmUNCiMgY3JlYXRl ZCBieSB0aGUgbmV3cyBnYXRld2F5IHdoZW4gcmVhZGluZyBncm91cCBsaXN0 aW5ncyBvciBhcnRpY2xlcw0KIyBmcm9tIG5udHAgc2VydmVycyBpZiB0aGUg c2VydmVyIGluZGljYXRlcyB0aGF0IGl0IHBlcm1pdHMgcG9zdGluZy4NCiMg VGhlIGNvbXBpbGF0aW9uIGRlZmF1bHQgc2V0IGluIHVzZXJkZWZzLmggY2Fu IGJlIGNoYW5nZWQgaGVyZS4gIElmDQojIHRoZSBkZWZhdWx0IGlzIFRSVUUs IHBvc3RpbmcgY2FuIHN0aWxsIGJlIGRpc2FsbG93ZWQgdmlhIHRoZQ0KIyAt cmVzdHJpY3Rpb25zIGNvbW1hbmQgbGluZSBzd2l0Y2guDQojIFRoZSBwb3N0 aW5nIGZhY2lsaXR5IGluIEx5bnggaXMgcXVpdGUgbGltaXRlZC4gIEx5bngg ZG9lcyBub3QgcHJvdmlkZSBhDQojIGZ1bGwgZmVhdHVyZWQgbmV3cyBwb3N0 ZXIgd2l0aCBlbGFib3JhdGUgZXJyb3IgY2hlY2tpbmcgYW5kIHNhZmV0eSBm ZWF0dXJlcy4NCiMNCiNORVdTX1BPU1RJTkc6VFJVRQ0KDQoNCi5oMiBMWU5Y X1NJR19GSUxFDQojIExZTlhfU0lHX0ZJTEUgZGVmaW5lcyB0aGUgbmFtZSBv ZiBhIGZpbGUgY29udGFpbmluZyBhIHNpZ25hdHVyZSB3aGljaA0KIyBjYW4g YmUgYXBwZW5kZWQgdG8gZW1haWwgbWVzc2FnZXMgYW5kIG5ld3MgcG9zdGlu Z3Mgb3IgZm9sbG93dXBzLiAgVGhlDQojIHVzZXIgd2lsbCBiZSBwcm9tcHRl ZCB3aGV0aGVyIHRvIGFwcGVuZCBpdC4gIEl0IGlzIHNvdWdodCBpbiB0aGUg aG9tZQ0KIyBkaXJlY3RvcnkuICBJZiBpdCBpcyBpbiBhIHN1YmRpcmVjdG9y eSwgYmVnaW4gaXQgd2l0aCBhIGRvdC1zbGFzaA0KIyAoZS5nLiwgLi9seW54 Ly5seW54c2lnKS4gIFRoZSBkZWZpbml0aW9uIGlzIHNldCBpbiB1c2VyZGVm cy5oIGFuZCBjYW4NCiMgYmUgY2hhbmdlZCBoZXJlLg0KIw0KTFlOWF9TSUdf RklMRTouL21haWwvLnNpZ25hdHVyZQ0KDQoNCi5oMSBJbnRlcmFjdGlvbg0K IyBUaGVzZSBzZXR0aW5ncyBjb250cm9sIGludGVyYWN0aW9uIG9mIHRoZSB1 c2VyIHdpdGggbHlueC4NCg0KLmgyIFNDUk9MTEJBUg0KIyBJZiBTQ1JPTExC QVIgaXMgc2V0IFRSVUUsIEx5bnggd2lsbCBzaG93IHNjcm9sbGJhciBvbiB3 aW5kb3dzLiAgV2l0aCBtb3VzZQ0KIyBlbmFibGVkLCB0aGUgc2Nyb2xsYmFy IHN0cmlwIG91dHNpZGUgdGhlIGJhciBpcyBjbGlja2FibGUsIGFuZCBzY3Jv bGxzIHRoZQ0KIyB3aW5kb3cgYnkgcGFnZXMuICBUaGUgYXBwZWFyYW5jZSBv ZiB0aGUgc2Nyb2xsYmFyIGNhbiBiZSBjaGFuZ2VkIGZyb20NCiMgTFlOWF9M U1MgZmlsZTogIGRlZmluZSBhdHRyaWJ1dGVzIHNjcm9sbC5iYXIsIHNjcm9s bC5iYWNrIChmb3IgdGhlIGJhciwgYW5kDQojIGZvciB0aGUgc3RyaXAgYWxv bmcgd2hpY2ggdGhlIHNjcm9sbGJhciBtb3ZlcykuDQojU0NST0xMQkFSOkZB TFNFDQoNCg0KLmgyIFNDUk9MTEJBUl9BUlJPVw0KIyBJZiBTQ1JPTExCQVJf QVJST1cgaXMgc2V0IFRSVUUsIEx5bngncyBzY3JvbGxiYXIgd2lsbCBoYXZl IGFycm93cyBhdCB0aGUNCiMgZW5kcy4gIFdpdGggbW91c2UgZW5hYmxlZCwg dGhlIGFycm93cyBhcmUgY2xpY2thYmxlLCBhbmQgc2Nyb2xsIHRoZSB3aW5k b3cgYnkNCiMgMiBsaW5lcy4gIFRoZSBhcHBlYXJhbmNlIG9mIHRoZSBzY3Jv bGxiYXIgYXJyb3dzIGNhbiBiZSBjaGFuZ2VkIGZyb20gTFlOWF9MU1MNCiMg ZmlsZTogIGRlZmluZSBhdHRyaWJ1dGVzIHNjcm9sbC5hcnJvdywgc2Nyb2xs Lm5vYXJyb3cgKGZvciBlbmFibGVkLWFycm93cywNCiMgYW5kIGRpc2FibGVk IGFycm93cykuICBBbiBhcnJvdyBpcyAiZGlzYWJsZWQiIGlmIHRoZSBiYXIg aXMgYXQgdGhpcyBlbmQgb2YNCiMgdGhlIHN0cmlwLg0KU0NST0xMQkFSX0FS Uk9XOkZBTFNFDQoNCg0KLmgyIFVTRV9NT1VTRQ0KIyBJZiBVU0VfTU9VU0Ug aXMgc2V0IFRSVUUsIEx5bnggKHdoZW4gY29uZmlndXJlZCB3aXRoIG5jdXJz ZXMsIFBEY3Vyc2VzIG9yDQojIHNsYW5nKSB3aWxsIGFsbG93IHRoZSB1c2Vy IHRvIGNsaWNrIHdpdGggYnV0dG9uLTEgb24gbGlua3MgdG8gc2VsZWN0IHRo ZW0uIA0KIyBPdGhlciBtb3VzZS11c2FibGUgb3BlcmF0aW9ucyBpbmNsdWRl OiAgY2xpY2tpbmcgb24gdGhlIHRvcCBvciBib3R0b20gb2YgYQ0KIyBwYWdl IHRvIG1ha2UgaXQgc2Nyb2xsIHVwIG9yIGRvd24sIGNsaWNraW5nIG9uIHRo ZSBsZWZ0IGVkZ2UgdG8gcG9wIHRoZQ0KIyBoaXN0b3J5IHN0YWNrLCB0byBt b3ZlIHRvIGEgdGV4dCBlbnRyeSBmaWVsZCwgb3IgbWFuaXB1bGF0ZSBhIHBv cHVwIG1lbnUuDQojDQojIG5jdXJzZXMgYW5kIHNsYW5nIGhhdmUgYnVpbHQt aW4gc3VwcG9ydCBmb3IgdGhlIHh0ZXJtIG1vdXNlIHByb3RvY29sLiAgSW4N CiMgYWRkaXRpb24sIG5jdXJzZXMgY2FuIGJlIGxpbmtlZCB3aXRoIHRoZSBn cG0gbW91c2UgbGlicmFyeSwgdG8gYXV0b21hdGljYWxseQ0KIyBwcm92aWRl IHN1cHBvcnQgZm9yIHRoaXMgaW50ZXJmYWNlIGluIGFwcGxpY2F0aW9ucyBz dWNoIGFzIEx5bnguICAoUGxlYXNlDQojIHJlYWQgdGhlIG5jdXJzZXMgZmFx IHRvIHdvcmsgYXJvdW5kIGJyb2tlbiBncG0gY29uZmlndXJhdGlvbnMgcGFj a2FnZWQgYnkNCiMgc29tZSBkaXN0cmlidXRvcnMpLiAgUERDdXJzZXMgaW1w bGVtZW50cyBtb3VzZSBzdXBwb3J0IGZvciB3aW4zMiBjb25zb2xlDQojIHdp bmRvd3MsIGFzIGRvZXMgc2xhbmcuDQpVU0VfTU9VU0U6RkFMU0UNCg0KDQou aDEgSFRNTCBQYXJzaW5nDQojIFRoZXNlIHNldHRpbmdzIGNvbnRyb2wgdGhl IHdheSBMeW54IHBhcnNlcyBpbnZhbGlkIEhUTUwNCiMgYW5kIGhvdyBpdCBt YXkgcmVzb2x2ZSBzdWNoIGlzc3Vlcy4NCg0KLmgyIENPTExBUFNFX0JSX1RB R1MNCiMgSWYgQ09MTEFQU0VfQlJfVEFHUyBpcyBzZXQgRkFMU0UsIEx5bngg d2lsbCBub3QgY29sbGFwc2Ugc2VyaWFsIEJSIHRhZ3MuDQojIElmIHNldCBU UlVFLCB0d28gb3IgbW9yZSBjb25jdXJyZW50IEJScyB3aWxsIGJlIGNvbGxh cHNlZCBpbnRvIGEgc2luZ2xlDQojIGxpbmUgYnJlYWsuICBOb3RlIHRoYXQg dGhlIHZhbGlkIHdheSB0byBpbnNlcnQgZXh0cmEgYmxhbmsgbGluZXMgaW4g SFRNTA0KIyBpcyB2aWEgYSBQUkUgYmxvY2sgd2l0aCBvbmx5IG5ld2xpbmVz IGluIHRoZSBibG9jay4NCiMNCiNDT0xMQVBTRV9CUl9UQUdTOlRSVUUNCg0K DQouaDIgVEFHU09VUA0KIyBJZiBUQUdTT1VQIGlzIHNldCwgTHlueCB1c2Vz IHRoZSAiVGFnIFNvdXAgRFREIiByYXRoZXIgdGhhbiAiU29ydGFTR01MIi4N CiMgVGhlIHR3byBhcHByb2FjaGVzIGRpZmZlciBieSB0aGUgc3R5bGUgb2Yg ZXJyb3IgZGV0ZWN0aW9uIGFuZCByZWNvdmVyeS4NCiMgVGFnIFNvdXAgRFRE IGFsbG93cyBmb3IgaW1wcm9wZXJseSBuZXN0ZWQgdGFnczsgU29ydGFTR01M IGlzIHN0cmljdGVyLg0KI1RBR1NPVVA6RkFMU0UNCg0KDQouaDEgQ29va2ll cw0KDQouaDIgU0VUX0NPT0tJRVMNCiMgSWYgU0VUX0NPT0tJRVMgaXMgc2V0 IEZBTFNFLCBMeW54IHdpbGwgaWdub3JlIFNldC1Db29raWUgaGVhZGVycw0K IyBpbiBodHRwIHNlcnZlciByZXBsaWVzLiAgTm90ZSB0aGF0IGlmIGEgQ09P S0lFX0ZJTEUgaXMgaW4gdXNlIChzZWUNCiMgYmVsb3cpIHRoYXQgY29udGFp bnMgY29va2llcyBhdCBzdGFydHVwLCBMeW54IHdpbGwgc3RpbGwgc2VuZCB0 aG9zZQ0KIyBwZXJzaXN0ZW50IGNvb2tpZXMgaW4gcmVxdWVzdHMgYXMgYXBw cm9wcmlhdGUuICBTZXR0aW5nIFNFVF9DT09LSUVTDQojIHRvIEZBTFNFIGp1 c3QgcHJldmVudHMgYWNjZXB0aW5nIGFueSBuZXcgY29va2llcyBmcm9tIHNl cnZlcnMuICBUbw0KIyBwcmV2ZW50IGFsbCBjb29raWUgcHJvY2Vzc2luZyAo c2VuZGluZyAqYW5kKiByZWNlaXZpbmcpIGluIGEgc2Vzc2lvbiwNCiMgbWFr ZSBzdXJlIHRoYXQgUEVSU0lTVEVOVF9DT09LSUVTIGlzIG5vdCBUUlVFIG9y IHRoYXQgQ09PS0lFX0ZJTEUgZG9lcw0KIyBub3QgcG9pbnQgdG8gYSBmaWxl IHdpdGggY29va2llcywgaW4gYWRkaXRpb24gdG8gc2V0dGluZyBTRVRfQ09P S0lFUw0KIyB0byBGQUxTRS4NCiMgVGhlIGRlZmF1bHQgaXMgZGVmaW5lZCBp biB1c2VyZGVmcy5oLCBhbmQgY2FuIGJlIG92ZXJyaWRkZW4gaGVyZSwNCiMg YW5kL29yIHRvZ2dsZWQgdmlhIHRoZSAtY29va2llcyBjb21tYW5kIGxpbmUg c3dpdGNoLg0KIw0KI1NFVF9DT09LSUVTOlRSVUUNCg0KDQouaDIgQUNDRVBU X0FMTF9DT09LSUVTDQojIElmIEFDQ0VQVF9BTExfQ09PS0lFUyBpcyBzZXQg VFJVRSwgTHlueCB3aWxsIGFjY2VwdCBjb29raWVzIGZyb20gYWxsDQojIGRv bWFpbnMgd2l0aCBubyB1c2VyIGludGVyYWN0aW9uLiAgVGhpcyBpcyBlcXVp dmFsZW50IHRvIGF1dG9tYXRpY2FsbHkNCiMgcmVwbHlpbmcgdG8gYWxsIGNv b2tpZSAnQWxsb3c/JyBwcm9tcHRzIHdpdGggJ0EnbHdheXMuICBOb3RlIHRo YXQgaXQNCiMgZG9lcyBub3QgcHJlZW1wdCB2YWxpZGl0eSBjaGVja2luZywg d2hpY2ggaGFzIHRvIGJlIGNvbnRyb2xsZWQgc2VwYXJhdGVseQ0KIyAoc2Vl IGJlbG93KS4NCiMgVGhlIGRlZmF1bHQgaXMgZGVmaW5lZCBpbiB1c2VyZGVm cy5oIGFuZCBjYW4gYmUgb3ZlcnJpZGRlbiBoZXJlLCBvcg0KIyBpbiB0aGUg Lmx5bnhyYyBmaWxlIHZpYSBhbiBvKHB0aW9ucykgc2NyZWVuIHNldHRpbmcu ICBJdCBtYXkgYWxzbyBiZQ0KIyB0b2dnbGVkIHZpYSB0aGUgLWFjY2VwdF9h bGxfY29va2llcyBjb21tYW5kIGxpbmUgc3dpdGNoLg0KIw0KI0FDQ0VQVF9B TExfQ09PS0lFUzpGQUxTRQ0KDQoNCi5oMiBDT09LSUVfQUNDRVBUX0RPTUFJ TlMNCi5oMiBDT09LSUVfUkVKRUNUX0RPTUFJTlMNCiMgQ09PS0lFX0FDQ0VQ VF9ET01BSU5TIGFuZCBDT09LSUVfUkVKRUNUX0RPTUFJTlMgYXJlIGNvbW1h LWRlbGltaXRlZCBsaXN0cw0KIyBvZiBkb21haW5zIGZyb20gd2hpY2ggTHlu eCBzaG91bGQgYXV0b21hdGljYWxseSBhY2NlcHQgb3IgcmVqZWN0IGNvb2tp ZXMNCiMgd2l0aG91dCBhc2tpbmcgZm9yIGNvbmZpcm1hdGlvbi4gIElmIHRo ZSBzYW1lIGRvbWFpbiBpcyBzcGVjaWZpZWQgaW4gYm90aA0KIyBsaXN0cywg cmVqZWN0aW9uIHdpbGwgdGFrZSBwcmVjZWRlbmNlLg0KIyBOb3RlIHRoYXQg aW4gb3JkZXIgdG8gbWF0Y2ggY29va2llcywgZG9tYWlucyBoYXZlIHRvIGJl IHNwZWxsZWQgb3V0IGV4YWN0bHkNCiMgaW4gdGhlIGZvcm0gaW4gd2hpY2gg dGhleSB3b3VsZCBhcHBlYXIgb24gdGhlIENvb2tpZSBKYXIgcGFnZSAoY2Fz ZSBpcw0KIyBpbnNpZ25pZmljYW50KS4gIFRoZXkgYXJlIG5vdCB3aWxkY2Fy ZHMuICBEb21haW5zIHRoYXQgYXBwbHkgdG8gbW9yZSB0aGFuDQojIG9uZSBo b3N0IGhhdmUgYSBsZWFkaW5nICcuJywgYnV0IGhhdmUgdG8gbWF0Y2ggKnRo ZSBjb29raWUncyogZG9tYWluDQojIGV4YWN0bHkuDQojDQojQ09PS0lFX0FD Q0VQVF9ET01BSU5TOg0KI0NPT0tJRV9SRUpFQ1RfRE9NQUlOUzoNCg0KDQou aDIgQ09PS0lFX0xPT1NFX0lOVkFMSURfRE9NQUlOUw0KLmgyIENPT0tJRV9T VFJJQ1RfSU5WQUxJRF9ET01BSU5TDQouaDIgQ09PS0lFX1FVRVJZX0lOVkFM SURfRE9NQUlOUw0KIyBDT09LSUVfTE9PU0VfSU5WQUxJRF9ET01BSU5TLCBD T09LSUVfU1RSSUNUX0lOVkFMSURfRE9NQUlOUywgYW5kDQojIENPT0tJRV9R VUVSWV9JTlZBTElEX0RPTUFJTlMgYXJlIGNvbW1hLWRlbGltaXRlZCBsaXN0 cyBvZiBkb21haW5zLg0KIyBUaGV5IGNvbnRyb2wgdGhlIGRlZ3JlZSBvZiB2 YWxpZGl0eSBjaGVja2luZyB0aGF0IGlzIGFwcGxpZWQgdG8gY29va2llcw0K IyBmb3IgdGhlIHNwZWNpZmllZCBkb21haW5zLg0KIyBOb3RlIHRoYXQgaW4g b3JkZXIgdG8gbWF0Y2ggY29va2llcywgZG9tYWlucyBoYXZlIHRvIGJlIHNw ZWxsZWQgb3V0IGV4YWN0bHkNCiMgaW4gdGhlIGZvcm0gaW4gd2hpY2ggdGhl eSB3b3VsZCBhcHBlYXIgb24gdGhlIENvb2tpZSBKYXIgcGFnZSAoY2FzZSBp cw0KIyBpbnNpZ25pZmljYW50KS4gIFRoZXkgYXJlIG5vdCB3aWxkY2FyZHMu ICBEb21haW5zIHRoYXQgYXBwbHkgdG8gbW9yZSB0aGFuDQojIG9uZSBob3N0 IGhhdmUgYSBsZWFkaW5nICcuJywgYnV0IGhhdmUgdG8gbWF0Y2ggKnRoZSBj b29raWUncyogZG9tYWluDQojIGV4YWN0bHkuDQojIElmIGEgZG9tYWluIGlz IHNldCB0byBzdHJpY3QgY2hlY2tpbmcsIHN0cmljdCBjb25mb3JtYW5jZSB0 byBSRkMyMTA5IHdpbGwNCiMgYmUgYXBwbGllZC4gIEEgZG9tYWluIHdpdGgg bG9vc2UgY2hlY2tpbmcgd2lsbCBiZSBhbGxvd2VkIHRvIHNldCBjb29raWVz DQojIHdpdGggYW4gaW52YWxpZCBwYXRoIG9yIGRvbWFpbiBhdHRyaWJ1dGUu ICBBbGwgZG9tYWlucyB3aWxsIGRlZmF1bHQgdG8NCiMgYXNraW5nIHRoZSB1 c2VyIGZvciBjb25maXJtYXRpb24gaW4gY2FzZSBvZiBhbiBpbnZhbGlkIHBh dGggb3IgZG9tYWluLg0KIyBDb29raWUgdmFsaWRpdHkgY2hlY2tpbmcgdGFr ZXMgcGxhY2UgYXMgYSBzZXBhcmF0ZSBzdGVwIGJlZm9yZSB0aGUNCiMgZmlu YWwgZGVjaXNpb24gdG8gYWNjZXB0IG9yIHJlamVjdCAoc2VlIHByZXZpb3Vz IG9wdGlvbnMpLCB0aGVyZWZvcmUNCiMgYSBjb29raWUgdGhhdCBwYXNzZXMg dmFsaWRpdHkgY2hlY2tpbmcgbWF5IHN0aWxsIGJlIGF1dG9tYXRpY2FsbHkN CiMgcmVqZWN0ZWQgb3IgY2F1c2UgYW5vdGhlciBwcm9tcHQuDQojDQojQ09P S0lFX0xPT1NFX0lOVkFMSURfRE9NQUlOUzoNCiNDT09LSUVfU1RSSUNUX0lO VkFMSURfRE9NQUlOUzoNCiNDT09LSUVfUVVFUllfSU5WQUxJRF9ET01BSU5T Og0KDQoNCi5oMiBQRVJTSVNURU5UX0NPT0tJRVMNCiMgUEVSU0lTVEVOVF9D T09LSUVTIGluZGljYXRlcyB0aGF0IGNvb2tpZXMgc2hvdWxkIGJlIHJlYWQg YXQgc3RhcnR1cCBmcm9tDQojIHRoZSBDT09LSUVfRklMRSwgYW5kIHNhdmVk IGF0IGV4aXQgZm9yIHN0b3JhZ2UgYmV0d2VlbiBMeW54IHNlc3Npb25zLg0K IyBJdCBpcyBub3QgdXNlZCBpZiBMeW54IHdhcyBjb21waWxlZCB3aXRob3V0 IEVYUF9QRVJTSVNURU5UX0NPT0tJRVMuDQojIFRoZSBkZWZhdWx0IGlzIEZB TFNFLCBzbyB0aGF0IHRoZSBmZWF0dXJlIG5lZWRzIHRvIGJlIGVuYWJsZWQg aGVyZQ0KIyBleHBsaWNpdGx5IGlmIHlvdSB3YW50IGl0Lg0KIw0KI1BFUlNJ U1RFTlRfQ09PS0lFUzpGQUxTRQ0KDQoNCi5oMiBDT09LSUVfRklMRQ0KIyBD T09LSUVfRklMRSBpcyB0aGUgZGVmYXVsdCBmaWxlIGZyb20gd2hpY2ggcGVy c2lzdGVudCBjb29raWVzIGFyZSByZWFkDQojIGF0IHN0YXJ0dXAgKGlmIHRo ZSBmaWxlIGV4aXN0cyksIGlmIEx5bnggd2FzIGNvbXBpbGVkIHdpdGgNCiMg RVhQX1BFUlNJU1RFTlRfQ09PS0lFUyBhbmQgdGhlIFBFUlNJU1RFTlRfQ09P S0lFUyBvcHRpb24gaXMgZW5hYmxlZC4NCiMgVGhlIGNvb2tpZSBmaWxlIGNh biBhbHNvIGJlIHNwZWNpZmllZCBpbiAubHlueHJjIG9yIG9uIHRoZSBjb21t YW5kIGxpbmUuDQojDQojQ09PS0lFX0ZJTEU6fi8ubHlueF9jb29raWVzDQoN Cg0KLmgyIENPT0tJRV9TQVZFX0ZJTEUNCiMgQ09PS0lFX1NBVkVfRklMRSBp cyB0aGUgZGVmYXVsdCBmaWxlIGluIHdoaWNoIHBlcnNpc3RlbnQgY29va2ll cyBhcmUNCiMgc3RvcmVkIGF0IGV4aXQsIGlmIEx5bnggd2FzIGNvbXBpbGVk IHdpdGggRVhQX1BFUlNJU1RFTlRfQ09PS0lFUyBhbmQgdGhlDQojIFBFUlNJ U1RFTlRfQ09PS0lFUyBvcHRpb24gaXMgZW5hYmxlZC4gIFRoZSBjb29raWUg c2F2ZSBmaWxlIGNhbiBhbHNvIGJlDQojIHNwZWNpZmllZCBvbiB0aGUgY29t bWFuZCBsaW5lLg0KIw0KIyBXaXRoIGFuIGludGVyYWN0aXZlIEx5bnggc2Vz c2lvbiwgQ09PS0lFX1NBVkVfRklMRSB3aWxsIGRlZmF1bHQgdG8NCiMgQ09P S0lFX0ZJTEUgaWYgaXQgaXMgbm90IHNldC4gIFdpdGggYSBub24taW50ZXJh Y3RpdmUgTHlueCBzZXNzaW9uIChlLmcuLA0KIyAtZHVtcCksIGNvb2tpZXMg d2lsbCBvbmx5IGJlIHNhdmVkIHRvIGZpbGUgaWYgQ09PS0lFX1NBVkVfRklM RSBpcyBzZXQuDQojDQojQ09PS0lFX1NBVkVfRklMRTp+Ly5seW54X2Nvb2tp ZXMNCg0KDQouaDEgTWFpbC1yZWxhdGVkDQoNCi5oMiBTWVNURU1fTUFJTA0K LmgyIFNZU1RFTV9NQUlMX0ZMQUdTDQojIFZNUzoNCiMgPT09DQojIFRoZSBt YWlsIGNvbW1hbmQgYW5kIHF1YWxpZmllcnMgYXJlIGRlZmluZWQgaW4gdXNl cmRlZnMuaC4gIEx5bngNCiMgd2lsbCBzcGF3biBhIHN1YnByb2Nlc3MgdG8g c2VuZCByZXBsaWVzIGFuZCBlcnJvciBtZXNzYWdlcy4gIFRoZQ0KIyBjb21t YW5kLCBhbmQgcXVhbGlmaWVycyAoaWYgYW55KSwgY2FuIGJlIHJlLWRlZmlu ZWQgaGVyZS4gIElmDQojIHlvdSB1c2UgUE1ERiB0aGVuIGhlYWRlcnMgd2ls bCB3ZSBwYXNzZWQgdmlhIGEgaGVhZGVyIGZpbGUuDQojIElmIHlvdSB1c2Ug ImdlbmVyaWMiIFZNUyBNQUlMLCB0aGUgc3ViamVjdCB3aWxsIGJlIHBhc3Nl ZCBvbiB0aGUNCiMgY29tbWFuZCBsaW5lIHZpYSBhIC9zdWJqZWN0PSJTVUJK RUNUIiBxdWFsaWZpZXIsIGFuZCBpbmNsdXNpb24NCiMgb2Ygb3RoZXIgcmVs ZXZhbnQgaGVhZGVycyBtYXkgbm90IGJlIHBvc3NpYmxlLg0KIyBJZiB5b3Vy IG1haWxlciB1c2VzIGFub3RoZXIgc3ludGF4LCBzb21lIGhhY2tpbmcgb2Yg dGhlIG1haWxmb3JtKCkNCiMgbWFpbG1zZygpIGFuZCByZXBseV9ieV9tYWls KCkgZnVuY3Rpb25zIGluIExZTWFpbC5jLCBhbmQgc2VuZF9maWxlX3RvX21h aWwoKQ0KIyBmdW5jdGlvbiBpbiBMWVByaW50LmMsIG1heSBiZSByZXF1aXJl ZC4NCiMNCi5leCAyDQojU1lTVEVNX01BSUw6UE1ERiBTRU5EDQojU1lTVEVN X01BSUxfRkxBR1M6L2hlYWRlcnMNCiMNCi5leCAyDQojU1lTVEVNX01BSUw6 TUFJTA0KI1NZU1RFTV9NQUlMX0ZMQUdTOg0KIw0KIyBVbml4Og0KIz09PT09 PQ0KIyBUaGUgbWFpbCBwYXRoIGFuZCBmbGFncyBub3JtYWxseSBhcmUgZGVm aW5lZCBmb3Igc2VuZG1haWwgKG9yIHN1Ym1pdA0KIyB3aXRoIE1NREYpIGlu IHVzZXJkZWZzLmguICBZb3UgY2FuIGNoYW5nZSB0aGVtIGhlcmUsIGJ1dCBz aG91bGQgZmlyc3QNCiMgcmVhZCB0aGUgemlsbGlvbnMgb2YgQ0VSVCBhZHZp c29yaWVzIGFib3V0IHNlY3VyaXR5IHByb2JsZW1zIHdpdGggVW5peA0KIyBt YWlsZXJzLg0KIw0KLmV4IDINCiNTWVNURU1fTUFJTDovdXNyL21tZGYvYmlu L3N1Ym1pdA0KI1NZU1RFTV9NQUlMX0ZMQUdTOi1tbHJ1eHRvLGNjXCoNCiMN Ci5leCAyDQojU1lTVEVNX01BSUw6L3Vzci9zYmluL3NlbmRtYWlsDQojU1lT VEVNX01BSUxfRkxBR1M6LXQgLW9pDQojDQouZXggMg0KI1NZU1RFTV9NQUlM Oi91c3IvbGliL3NlbmRtYWlsDQojU1lTVEVNX01BSUxfRkxBR1M6LXQgLW9p DQoNCiMgV2luMzI6DQojPT09PT09PQ0KIyBQbGVhc2UgcmVhZCBzZW5kbWFp bC50eHQgaW4gdGhlIExZTlhfVzMyLlpJUCBkaXN0cmlidXRpb24NCiMNCiNT WVNURU1fTUFJTDpzZW5kbWFpbCAtZiBtZUBteS5ob3N0IC1oIG15Lmhvc3Qg LXIgbXkuc210cC5tYWlsZXIgLW0gU01UUA0KDQoNCi5oMiBNQUlMX0FEUlMN CiMgVk1TIE9OTFk6DQojID09PT09PT09DQojIE1BSUxfQURSUyBpcyBkZWZp bmVkIGluIHVzZXJkZWZzLmggYW5kIG5vcm1hbGx5IGlzIHN0cnVjdHVyZWQg Zm9yIFBNREYncw0KIyBJTiUiSU5URVJORVRfQUREUkVTUyIgc2NoZW1lLiAg VGhlICVzIGlzIHJlcGxhY2VkIHdpdGggdGhlIGFkZHJlc3MgZ2l2ZW4NCiMg YnkgdGhlIHVzZXIuICBJZiB5b3UgYXJlIHVzaW5nIGEgZGlmZmVyZW50IElu dGVybmV0IG1haWwgdHJhbnNwb3J0LCBjaGFuZ2UNCiMgdGhlIElOIGFwcHJv cHJpYXRlbHkgKGUuZy4sIHRvIFNNVFAsIE1YLCBvciBXSU5TKS4NCiMNCiNN QUlMX0FEUlM6IklOJSUiIiVzIiIiDQoNCg0KLmgyIFVTRV9GSVhFRF9SRUNP UkRTDQojIFZNUyBPTkxZOg0KIyA9PT09PT09PQ0KIyBJZiBVU0VfRklYRURf UkVDT1JEUyBpcyBzZXQgdG8gVFJVRSBoZXJlIG9yIGluIHVzZXJkZWZzLmgs IEx5bnggd2lsbA0KIyBjb252ZXJ0ICdkJ293bmxvYWRlZCBiaW5hcnkgZmls ZXMgdG8gRklYRUQgNTEyIHJlY29yZCBmb3JtYXQgYmVmb3JlIHNhdmluZw0K IyB0aGVtIHRvIGRpc2sgb3IgYWN0aW5nIG9uIGEgRE9XTkxPQURFUiBvcHRp b24uICBJZiBzZXQgdG8gRkFMU0UsIHRoZQ0KIyBoZWFkZXJzIG9mIHN1Y2gg ZmlsZXMgd2lsbCBpbmRpY2F0ZSB0aGF0IHRoZXkgYXJlIFN0cmVhbV9MRiB3 aXRoIEltcGxpZWQNCiMgQ2FycmlhZ2UgQ29udHJvbCwgd2hpY2ggaXMgaW5j b3JyZWN0LCBhbmQgY2FuIGNhdXNlIGRvd25sb2FkaW5nIHNvZnR3YXJlDQoj IHRvIGdldCBjb25mdXNlZCBhbmQgdW5oYXBweS4gIElmIHlvdSBkbyBzZXQg aXQgRkFMU0UsIHlvdSBjYW4gdXNlIHRoZQ0KIyBGSVhFRDUxMi5DT00gY29t bWFuZCBmaWxlLCB3aGljaCBpcyBpbmNsdWRlZCBpbiB0aGlzIGRpc3RyaWJ1 dGlvbiwgdG8gZG8NCiMgdGhlIGNvbnZlcnNpb24gZXh0ZXJuYWxseS4NCiMN CiNVU0VfRklYRURfUkVDT1JEUzpUUlVFDQoNCg0KLmgxIEtleWJvYXJkIElu cHV0DQojIFRoZXNlIHNldHRpbmdzIGNvbnRyb2wgdGhlIHdheSBMeW54IGlu dGVycHJldHMgdXNlciBpbnB1dC4NCg0KDQouaDIgVklfS0VZU19BTFdBWVNf T04NCi5oMiBFTUFDU19LRVlTX0FMV0FZU19PTg0KIyBWaSBvciBFbWFjcyBt b3ZlbWVudCBrZXlzLCBpLmUuIGZhbWlsaWFyIGhqa2wgb3IgXk5eUF5GXkIg Lg0KIyBUaGVzZSBhcmUgZGVmYXVsdHMsIHdoaWNoIGNhbiBiZSBjaGFuZ2Vk IGluIHRoZSBPcHRpb25zIE1lbnUgb3IgLmx5bnhyYyAuDQojVklfS0VZU19B TFdBWVNfT046RkFMU0UNCkVNQUNTX0tFWVNfQUxXQVlTX09OOlRSVUUNCg0K DQouaDIgREVGQVVMVF9LRVlQQURfTU9ERQ0KIyBERUZBVUxUX0tFWVBBRF9N T0RFIG1heSBiZSBzZXQgdG8gTlVNQkVSU19BU19BUlJPV1MNCiMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9yIExJTktTX0FSRV9OVU1CRVJF RA0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgTElOS1Nf QU5EX0ZJRUxEU19BUkVfTlVNQkVSRUQNCiMgdG8gc3BlY2lmeSB3aGV0aGVy IG51bWJlcnMgKGUuZy4gWzEwXSkgYXBwZWFyIGJlZm9yZSBhbGwgbGlua3Ms DQojIGFsbG93aW5nIGltbWVkaWF0ZSBhY2Nlc3MgYnkgZW50ZXJpbmcgdGhl IG51bWJlciBvbiB0aGUga2V5Ym9hcmQsDQojIG9yIG51bWJlcnMgb24gdGhl IG51bWVyaWMga2V5LXBhZCB3b3JrIGxpa2UgYXJyb3dzOw0KIyB0aGUgM3Jk IG9wdGlvbiBjYXVzZXMgZm9ybSBmaWVsZHMgYWxzbyB0byBiZSBwcmVjZWRl ZCBieSBudW1iZXJzLg0KIyBUaGUgZmlyc3QgdHdvIG9wdGlvbnMgKGJ1dCBu b3QgdGhlIGxhc3QpIGNhbiBiZSBjaGFuZ2VkIGluIGx5bnguY2ZnDQojIGFu ZCBhbGwgdGhyZWUgY2FuIGJlIGNoYW5nZWQgdmlhIHRoZSBPcHRpb25zIE1l bnUuDQojDQpERUZBVUxUX0tFWVBBRF9NT0RFOkxJTktTX0FORF9GSUVMRFNf QVJFX05VTUJFUkVEDQoNCg0KLmgyIERFRkFVTFRfS0VZUEFEX01PREVfSVNf TlVNQkVSU19BU19BUlJPV1MNCiMgT2Jzb2xldGUgZm9ybSBvZiBERUZBVUxU X0tFWVBBRF9NT0RFLA0KIyBudW1iZXJzIHdvcmsgbGlrZSBhcnJvd3Mgb3Ig bnVtYmVyZWQgbGlua3MuDQojIFNldCB0byBUUlVFLCBpbmRpY2F0ZXMgbnVt YmVycyBhY3QgYXMgYXJyb3dzLA0KIyBhbmQgc2V0IHRvIEZBTFNFIGluZGlj YXRlcyBudW1iZXJzIHJlZmVyIHRvIG51bWJlcmVkIGxpbmtzIG9uIHRoZSBw YWdlLg0KIyBMSU5LU19BTkRfRklFTERTX0FSRV9OVU1CRVJFRCBjYW5ub3Qg YmUgc2V0IGJ5IHRoaXMgb3B0aW9uIGJlY2F1c2UNCiMgaXQgYWxsb3dzIG9u bHkgdHdvIHZhbHVlcyAodHJ1ZSBhbmQgZmFsc2UpLg0KIw0KI0RFRkFVTFRf S0VZUEFEX01PREVfSVNfTlVNQkVSU19BU19BUlJPV1M6VFJVRQ0KDQoNCi5o MiBDQVNFX1NFTlNJVElWRV9BTFdBWVNfT04NCiMgVGhlIGRlZmF1bHQgc2Vh cmNoIHR5cGUuDQojIFRoaXMgaXMgYSBkZWZhdWx0IHRoYXQgY2FuIGJlIG92 ZXJyaWRkZW4gYnkgdGhlIHVzZXIhDQojDQojQ0FTRV9TRU5TSVRJVkVfQUxX QVlTX09OOkZBTFNFDQoNCg0KLmgxIEF1eGlsaWFyeSBGYWNpbGl0aWVzDQoN Ci5oMiBERUZBVUxUX0JPT0tNQVJLX0ZJTEUNCiMgREVGQVVMVF9CT09LTUFS S19GSUxFIGlzIHRoZSBmaWxlbmFtZSB1c2VkIGZvciBzdG9yaW5nIHBlcnNv bmFsIGJvb2ttYXJrcy4NCiMgSXQgd2lsbCBiZSBwcmVwZW5kZWQgYnkgdGhl IHVzZXIncyBob21lIGRpcmVjdG9yeS4NCiMgTk9URSB0aGF0IGEgZmlsZSBl bmRpbmcgaW4gLmh0bWwgb3Igb3RoZXIgc3VmZml4IG1hcHBlZCB0byB0ZXh0 L2h0bWwNCiMgc2hvdWxkIGJlIHVzZWQgdG8gZW5zdXJlIGl0cyB0cmVhdG1l bnQgYXMgSFRNTC4gIFRoZSBidWlsdC1pbiBkZWZhdWx0DQojIGlzIGx5bnhf Ym9va21hcmtzLmh0bWwuICBPbiBib3RoIFVuaXggYW5kIFZNUywgaWYgYSBz dWJkaXJlY3Rvcnkgb2ZmIG9mDQojIHRoZSBIT01FIGRpcmVjdG9yeSBpcyBk ZXNpcmVkLCB0aGUgcGF0aCBzaG91bGQgYmVnaW4gd2l0aCAiLi8iIChlLmcu LA0KIyAuL0JNL2x5bnhfYm9va21hcmtzLmh0bWwpLCBidXQgdGhlIHN1YmRp cmVjdG9yeSBtdXN0IGFscmVhZHkgZXhpc3QuDQojIEx5bnggd2lsbCBjcmVh dGUgdGhlIGJvb2ttYXJrIGZpbGUsIGlmIGl0IGRvZXMgbm90IGFscmVhZHkg ZXhpc3QsIG9uDQojIHRoZSBmaXJzdCBBRERfQk9PS01BUksgYXR0ZW1wdCBp ZiB0aGUgSE9NRSBkaXJlY3RvcnkgaXMgaW5kaWNhdGVkDQojIChpLmUuLCBp ZiB0aGUgZGVmaW5pdGlvbiBpcyBqdXN0IGZpbGVuYW1lLmh0bWwgd2l0aG91 dCBhbnkgc2xhc2hlcyksDQojIGJ1dCByZXF1aXJlcyBhIHByZS1leGlzdGlu ZyBzdWJkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBmaWxlIHRoZXJlLg0KIyBU aGUgdXNlciBjYW4gcmUtZGVmaW5lIHRoZSBkZWZhdWx0IGJvb2ttYXJrIGZp bGUsIGFzIHdlbGwgYXMgYSBzZXQNCiMgb2Ygc3ViLWJvb2ttYXJrIGZpbGVz IGlmIG11bHRpcGxlIGJvb2ttYXJrIGZpbGUgc3VwcG9ydCBpcyBlbmFibGVk DQojIChzZWUgYmVsb3cpLCB2aWEgdGhlICdvJ3B0aW9ucyBtZW51LCBhbmQg Y2FuIHNhdmUgdGhvc2UgZGVmaW5pdGlvbnMNCiMgaW4gdGhlIC5seW54cmMg ZmlsZS4NCiMNCiNERUZBVUxUX0JPT0tNQVJLX0ZJTEU6bHlueF9ib29rbWFy a3MuaHRtbA0KDQoNCi5oMiBNVUxUSV9CT09LTUFSS19TVVBQT1JUDQojIElm IE1VTFRJX0JPT0tNQVJLX1NVUFBPUlQgaXMgc2V0IFRSVUUsIGFuZCBCTE9D S19NVUxUSV9CT09LTUFSS1MgKHNlZQ0KIyBiZWxvdykgaXMgRkFMU0UsIGFu ZCBzdWItYm9va21hcmtzIGV4aXN0LCBhbGwgYm9va21hcmsgb3BlcmF0aW9u cyB3aWxsDQojIGZpcnN0IHByb21wdCB0aGUgdXNlciB0byBzZWxlY3QgYW4g YWN0aXZlIHN1Yi1ib29rbWFyayBmaWxlIG9yIHRoZQ0KIyBkZWZhdWx0IGJv b2ttYXJrIGZpbGUuICBGQUxTRSBpcyB0aGUgZGVmYXVsdCBzbyB0aGF0IG9u ZSAodGhlIGRlZmF1bHQpDQojIGJvb2ttYXJrIGZpbGUgd2lsbCBiZSBhdmFp bGFibGUgaW5pdGlhbGx5LiAgVGhlIGRlZmluaXRpb24gaGVyZSB3aWxsDQoj IG92ZXJyaWRlIHRoYXQgaW4gdXNlcmRlZnMuaC4gIFRoZSB1c2VyIGNhbiB0 dXJuIG9uIG11bHRpcGxlIGJvb2ttYXJrDQojIHN1cHBvcnQgdmlhIHRoZSAn bydwdGlvbnMgbWVudSwgYW5kIGNhbiBzYXZlIHRoYXQgY2hvaWNlIGFzIHRo ZSBzdGFydHVwDQojIGRlZmF1bHQgdmlhIHRoZSAubHlueHJjIGZpbGUuICBX aGVuIG9uLCB0aGUgc2V0dGluZyBjYW4gYmUgU1RBTkRBUkQgb3INCiMgQURW QU5DRUQuICBJZiBTVVBQT1JUIGlzIHNldCB0byB0aGUgbGF0dGVyLCBhbmQg dGhlIHVzZXIgbW9kZSBhbHNvIGlzDQojIEFEVkFOQ0VELCB0aGUgVklFV19C T09LTUFSSyBjb21tYW5kIHdpbGwgaW52b2tlIGEgc3RhdHVzbGluZSBwcm9t cHQgYXQNCiMgd2hpY2ggdGhlIHVzZXIgY2FuIGVudGVyIHRoZSBsZXR0ZXIg dG9rZW4gKEEgLSBaKSBvZiB0aGUgZGVzaXJlZCBib29rbWFyaywNCiMgb3Ig Jz0nIHRvIGdldCBhIG1lbnUgb2YgYXZhaWxhYmxlIGJvb2ttYXJrIGZpbGVz LiAgVGhlIG1lbnUgYWx3YXlzIGlzDQojIHByZXNlbnRlZCBpbiBOT1ZJQ0Ug b3IgSU5URVJNRURJQVRFIG1vZGUsIG9yIGlmIHRoZSBTVVBQT1JUIGlzIHNl dCB0bw0KIyBTVEFOREFSRC4gIE5vIHByb21wdGluZyBvciBtZW51IGRpc3Bs YXkgb2NjdXJzIGlmIG9ubHkgb25lICh0aGUgc3RhcnR1cA0KIyBkZWZhdWx0 KSBib29rbWFyayBmaWxlIGhhcyBiZWVuIGRlZmluZWQgKGRlZmluZSBhZGRp dGlvbmFsIG9uZXMgdmlhIHRoZQ0KIyAnbydwdGlvbnMgbWVudSkuICBUaGUg c3RhcnR1cCBkZWZhdWx0LCBob3dldmVyIHNldCwgY2FuIGJlIG92ZXJyaWRk ZW4gb24NCiMgdGhlIGNvbW1hbmQgbGluZSB2aWEgdGhlIC1yZXN0cmljdGlv bnM9bXVsdGlib29rIG9yIHRoZSAtYW5vbnltb3VzIG9yDQojIC12YWxpZGF0 ZSBzd2l0Y2hlcy4NCiMNCiNNVUxUSV9CT09LTUFSS19TVVBQT1JUOkZBTFNF DQoNCg0KLmgyIEJMT0NLX01VTFRJX0JPT0tNQVJLUw0KIyBJZiBCTE9DS19N VUxUSV9CT09LTUFSS1MgaXMgc2V0IFRSVUUsIG11bHRpcGxlIGJvb2ttYXJr IHN1cHBvcnQgd2lsbA0KIyBiZSBmb3JjZWQgb2ZmLCBhbmQgY2Fubm90IHRv IHRvZ2dsZWQgb24gdmlhIHRoZSAnbydwdGlvbnMgbWVudS4gIFRoZQ0KIyBj b21waWxhdGlvbiBzZXR0aW5nIGlzIG5vcm1hbGx5IEZBTFNFLCBhbmQgY2Fu IGJlIG92ZXJyaWRkZW4gaGVyZS4NCiMgSXQgY2FuIGFsc28gYmUgc2V0IHZp YSB0aGUgLXJlc3RyaWN0aW9ucz1tdWx0aWJvb2sgb3IgdGhlIC1hbm9ueW1v dXMNCiMgb3IgLXZhbGlkYXRlIGNvbW1hbmQgbGluZSBzd2l0Y2hlcy4NCiMN CiNCTE9DS19NVUxUSV9CT09LTUFSS1M6RkFMU0UNCg0KDQouaDEgSW50ZXJh Y3Rpb24NCg0KLmgyIERFRkFVTFRfVVNFUl9NT0RFDQojIERFRkFVTFRfVVNF Ul9NT0RFIHNldHMgdGhlIGRlZmF1bHQgdXNlciBtb2RlIGZvciBMeW54IHVz ZXJzLg0KIyBOT1ZJQ0Ugc2hvd3MgYSB0aHJlZSBsaW5lIGhlbHAgbWVzc2Fn ZSBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uDQojIElOVEVSTUVESUFU RSBzaG93cyBub3JtYWwgYW1vdW50IG9mIGhlbHAgKG9uZSBsaW5lKS4NCiMg QURWQU5DRUQgaGVscCBpcyByZXBsYWNlZCBieSB0aGUgVVJMIG9mIHRoZSBj dXJyZW50IGxpbmsuDQojDQpERUZBVUxUX1VTRVJfTU9ERTpJTlRFUk1FRElB VEUNCg0KDQouaDEgRXh0ZXJuYWwgUHJvZ3JhbXMNCg0KLmgyIERFRkFVTFRf RURJVE9SDQojIElmIERFRkFVTFRfRURJVE9SIGlzIGRlZmluZWQsIHVzZXJz IG1heSBlZGl0IGxvY2FsIGRvY3VtZW50cyB3aXRoIGl0DQojICYgaXQgd2ls bCBhbHNvIGJlIHVzZWQgZm9yIHNlbmRpbmcgbWFpbCBtZXNzYWdlcy4NCiMg SWYgbm8gZWRpdG9yIGlzIGRlZmluZWQgaGVyZSBvciBieSB0aGUgdXNlciwN CiMgdGhlIHVzZXIgd2lsbCBub3QgYmUgYWJsZSB0byBlZGl0IGxvY2FsIGRv Y3VtZW50cw0KIyBhbmQgYSBwcmltaXRpdmUgbGluZS1vcmllbnRlZCBtYWls LWlucHV0IG1vZGUgd2lsbCBiZSB1c2VkLg0KIw0KIyBGb3Igc3lzYWRtaW5z OiBkbyBub3QgZGVmaW5lIGEgZGVmYXVsdCBlZGl0b3INCiMgdW5sZXNzIHlv dSBrbm93IEVWRVJZIHVzZXIgd2lsbCBrbm93IGhvdyB0byB1c2UgaXQ7DQoj IHVzZXJzIGNhbiBlYXNpbHkgZGVmaW5lIHRoZWlyIG93biBlZGl0b3IgaW4g dGhlIE9wdGlvbnMgTWVudS4NCiMNCiNERUZBVUxUX0VESVRPUjoNCg0KDQou aDIgU1lTVEVNX0VESVRPUg0KIyBTWVNURU1fRURJVE9SIGJlaGF2ZXMgdGhl IHNhbWUgYXMgREVGQVVMVF9FRElUT1IsDQojIGV4Y2VwdCB0aGF0IGl0IGNh bid0IGJlIGNoYW5nZWQgYnkgdXNlcnMuDQojDQpTWVNURU1fRURJVE9SOi91 c3IvYmluL3BpY28NCg0KDQouaDEgUHJveHkNCg0KLmgyIEhUVFBfUFJPWFkN Ci5oMiBIVFRQU19QUk9YWQ0KLmgyIEZUUF9QUk9YWQ0KLmgyIEdPUEhFUl9Q Uk9YWQ0KLmgyIE5FV1NQT1NUX1BST1hZDQouaDIgTkVXU1JFUExZX1BST1hZ DQouaDIgTkVXU19QUk9YWQ0KLmgyIE5OVFBfUFJPWFkNCi5oMiBTTkVXU1BP U1RfUFJPWFkNCi5oMiBTTkVXU1JFUExZX1BST1hZDQouaDIgU05FV1NfUFJP WFkNCi5oMiBXQUlTX1BST1hZDQouaDIgRklOR0VSX1BST1hZDQouaDIgQ1NP X1BST1hZDQojIEx5bnggdmVyc2lvbiAyLjIgYW5kIGJleW9uZCBzdXBwb3J0 cyB0aGUgdXNlIG9mIHByb3h5IHNlcnZlcnMgdGhhdCBjYW4gYWN0IGFzDQoj IGZpcmV3YWxsIGdhdGV3YXlzIGFuZCBjYWNoaW5nIHNlcnZlcnMuICBUaGV5 IGFyZSBwcmVmZXJhYmxlIHRvIHRoZSBvbGRlcg0KIyBnYXRld2F5IHNlcnZl cnMuICBFYWNoIHByb3RvY29sIHVzZWQgYnkgTHlueCBjYW4gYmUgbWFwcGVk IHNlcGFyYXRlbHkgdXNpbmcNCiMgUFJPVE9DT0xfcHJveHkgZW52aXJvbm1l bnQgdmFyaWFibGVzIChzZWUgTHlueCBVc2VycyBHdWlkZSkuICBJZiB5b3Ug aGF2ZSBub3Qgc2V0DQojIHRoZW0gZXh0ZXJuYWxseSwgeW91IGNhbiBzZXQg dGhlbSBhdCBydW4gdGltZSB2aWEgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUu DQojIFRoZXkgd2lsbCBub3Qgb3ZlcnJpZGUgZXh0ZXJuYWwgc2V0dGluZ3Mu ICBUaGUgbm9fcHJveHkgdmFyaWFibGUgY2FuIGJlIHVzZWQNCiMgdG8gaW5o aWJpdCBwcm94eWluZyB0byBzZWxlY3RlZCByZWdpb25zIG9mIHRoZSBXZWIg KHNlZSBiZWxvdykuICBOb3RlIHRoYXQgb24NCiMgVk1TIHRoZXNlIHByb3h5 IHZhcmlhYmxlcyBhcmUgc2V0IGFzIHByb2Nlc3MgbG9naWNhbHMgcmF0aGVy IHRoYW4gc3ltYm9scywgdG8NCiMgcHJlc2VydmUgbG93ZXJjYXNpbmcsIGFu ZCB3aWxsIG91dGxpdmUgdGhlIEx5bnggaW1hZ2UuDQojDQouZXggMTUNCiNo dHRwX3Byb3h5Omh0dHA6Ly9zb21lLnNlcnZlci5kb206cG9ydC8NCiNodHRw c19wcm94eTpodHRwOi8vc29tZS5zZXJ2ZXIuZG9tOnBvcnQvDQojZnRwX3By b3h5Omh0dHA6Ly9zb21lLnNlcnZlci5kb206cG9ydC8NCiNnb3BoZXJfcHJv eHk6aHR0cDovL3NvbWUuc2VydmVyLmRvbTpwb3J0Lw0KI25ld3NfcHJveHk6 aHR0cDovL3NvbWUuc2VydmVyLmRvbTpwb3J0Lw0KI25ld3Nwb3N0X3Byb3h5 Omh0dHA6Ly9zb21lLnNlcnZlci5kb206cG9ydC8NCiNuZXdzcmVwbHlfcHJv eHk6aHR0cDovL3NvbWUuc2VydmVyLmRvbTpwb3J0Lw0KI3NuZXdzX3Byb3h5 Omh0dHA6Ly9zb21lLnNlcnZlci5kb206cG9ydC8NCiNzbmV3c3Bvc3RfcHJv eHk6aHR0cDovL3NvbWUuc2VydmVyLmRvbTpwb3J0Lw0KI3NuZXdzcmVwbHlf cHJveHk6aHR0cDovL3NvbWUuc2VydmVyLmRvbTpwb3J0Lw0KI25udHBfcHJv eHk6aHR0cDovL3NvbWUuc2VydmVyLmRvbTpwb3J0Lw0KI3dhaXNfcHJveHk6 aHR0cDovL3NvbWUuc2VydmVyLmRvbTpwb3J0Lw0KI2Zpbmdlcl9wcm94eTpo dHRwOi8vc29tZS5zZXJ2ZXIuZG9tOnBvcnQvDQojY3NvX3Byb3h5Omh0dHA6 Ly9zb21lLnNlcnZlci5kb206cG9ydC8NCiNub19wcm94eTpob3N0LmRvbWFp bi5kb20NCg0KDQouaDIgTk9fUFJPWFkNCiMgVGhlIG5vX3Byb3h5IHZhcmlh YmxlIGNhbiBiZSBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHN0cmluZ3Mg ZGVmaW5pbmcNCiMgbm8tcHJveHkgem9uZXMgaW4gdGhlIEROUyBkb21haW4g bmFtZSBzcGFjZS4gIElmIGEgdGFpbCBzdWJzdHJpbmcgb2YgdGhlDQojIGRv bWFpbi1wYXRoIGZvciBhIGhvc3QgbWF0Y2hlcyBvbmUgb2YgdGhlc2Ugc3Ry aW5ncywgdHJhbnNhY3Rpb25zIHdpdGggdGhhdA0KIyBub2RlIHdpbGwgbm90 IGJlIHByb3hpZWQuDQouZXgNCiNub19wcm94eTpkb21haW4ucGF0aDEscGF0 aDINCiMNCiMgQSBzaW5nbGUgYXN0ZXJpc2sgYXMgYW4gZW50cnkgd2lsbCBv dmVycmlkZSBhbGwgcHJveHkgdmFyaWFibGVzIGFuZCBubw0KIyB0cmFuc2Fj dGlvbnMgd2lsbCBiZSBwcm94aWVkLg0KLmV4DQojbm9fcHJveHk6Kg0KIyBU aGlzIGlzIHRoZSBvbmx5IGFsbG93ZWQgdXNlIG9mICogaW4gbm9fcHJveHku DQojDQojIFdhcm5pbmc6ICBOb3RlIHRoYXQgc2V0dGluZyAnaWwnIGFzIGFu IGVudHJ5IGluIHRoaXMgbGlzdCB3aWxsIGJsb2NrIHByb3h5aW5nDQojIGZv ciB0aGUgLm1pbCBkb21haW4gYXMgd2VsbCBhcyB0aGUgLmlsIGRvbWFpbi4g IElmIHRoZSBlbnRyeSBpcyAnLmlsJyB0aGlzDQojIHdpbGwgbm90IGhhcHBl bi4NCg0KDQouaDEgRXh0ZXJuYWwgUHJvZ3JhbXMNCg0KLmgyIFBSSU5URVIN Ci5oMiBET1dOTE9BREVSDQouaDIgVVBMT0FERVINCiMgUFJJTlRFUiwgRE9X TkxPQURFUiAmIFVQTE9BREVSIERFRklOSVRJT05TOg0KIyBMeW54IGhhcyA0 IHByZS1kZWZpbmVkIHByaW50IG9wdGlvbnMgJiAxIHByZS1kZWZpbmVkIGRv d25sb2FkIG9wdGlvbiwNCiMgd2hpY2ggYXJlIGNhbGxlZCB1cCBvbi1zY3Jl ZW4gd2hlbiBgcCcgb3IgYGQnIGFyZSBlbnRlcmVkOw0KIyBhbnkgbnVtYmVy IG9mIG9wdGlvbnMgY2FuIGJlIGFkZGVkIGJ5IHRoZSB1c2VyLCBhcyBleHBs YWluZWQgYmVsb3cuDQojIFVwbG9hZGVycyBjYW4gYmUgZGVmaW5lZCBvbmx5 IGZvciBVTklYIHdpdGggRElSRURfU1VQUE9SVDoNCiMgc2VlIHRoZSBNYWtl ZmlsZSBpbiB0aGUgdG9wIGRpcmVjdG9yeSAmIHRoZSBoZWFkZXIgb2Ygc3Jj L0xZVXBsb2FkLmMgLg0KIw0KIyBGb3IgYHAnIHByZS1kZWZpbmVkIG9wdGlv bnMgYXJlOiBgU2F2ZSB0byBsb2NhbCBmaWxlJywgYEUtbWFpbCB0aGUgZmls ZScsDQojIGBQcmludCB0byBzY3JlZW4nIGFuZCBgUHJpbnQgdG8gbG9jYWwg cHJpbnRlciBhdHRhY2hlZCB0byB2dDEwMCcuDQojIGBQcmludCB0byBzY3Jl ZW4nIGFsbG93cyBmaWxlIHRyYW5zZmVycyBpbiB0aGUgYWJzZW5jZSBvZiBh bHRlcm5hdGl2ZXMNCiMgYW5kIGlzIG9mdGVuIHRoZSBvbmx5IG9wdGlvbiBh bGxvd2VkIGhlcmUgZm9yIGFub255bW91cyB1c2VyczsNCiMgdGhlIDNyZCAm IDR0aCBvcHRpb25zIGFyZSBub3QgcHJlLWRlZmluZWQgZm9yIERPUy9XSU5E T1dTIHZlcnNpb25zIG9mIEx5bnguDQojIEZvciBgZCcgdGhlIHByZS1kZWZp bmVkIG9wdGlvbiBpczogYERvd25sb2FkIHRvIGxvY2FsIGZpbGUnLg0KIw0K IyBUbyBkZWZpbmUgeW91ciBvd24gcHJpbnQgb3IgZG93bmxvYWQgb3B0aW9u IHVzZSB0aGUgZm9sbG93aW5nIGZvcm1hdHM6DQojDQojIFBSSU5URVI6PG5h bWU+Ojxjb21tYW5kPjo8b3B0aW9uPjo8bGluZXMvcGFnZT4NCiMNCiMgRE9X TkxPQURFUjo8bmFtZT46PGNvbW1hbmQ+OjxvcHRpb24+DQojDQojIDxuYW1l PiAgICAgICBpcyB3aGF0IHlvdSB3aWxsIHNlZSBvbiB0aGUgcHJpbnQvZG93 bmxvYWQgc2NyZWVuLg0KIw0KIyA8Y29tbWFuZD4gICAgaXMgdGhlIGNvbW1h bmQgeW91ciBzeXN0ZW0gd2lsbCBleGVjdXRlOg0KIyAgICAgICAgICAgICAg dGhlIDFzdCAlcyBpbiB0aGUgY29tbWFuZCB3aWxsIGJlIHJlcGxhY2VkDQoj ICAgICAgICAgICAgICBieSB0aGUgdGVtcG9yYXJ5IGZpbGVuYW1lIHVzZWQg YnkgTHlueDsNCiMgICAgICAgICAgICAgIGEgMm5kICVzIHdpbGwgYmUgcmVw bGFjZWQgYnkgYSBmaWxlbmFtZSBvZiB5b3VyIGNob2ljZSwNCiMgICAgICAg ICAgICAgIGZvciB3aGljaCBMeW54IHdpbGwgcHJvbXB0LCBvZmZlcmluZyBh IHN1Z2dlc3Rpb24uDQojICAgICAgICAgICAgICBPbiBVbml4LCB3aGljaCBo YXMgcGlwZXMsIHlvdSBtYXkgdXNlIGEgJ3wnIGFzIHRoZSBmaXJzdA0KIyAg ICAgICAgICAgICAgY2hhcmFjdGVyIG9mIHRoZSBjb21tYW5kLCBhbmQgTHlu eCB3aWxsIG9wZW4gYSBwaXBlIHRvDQojICAgICAgICAgICAgICB0aGUgY29t bWFuZC4NCiMgICAgICAgICAgICAgIElmIHRoZSBjb21tYW5kIGZvcm1hdCBv ZiB5b3VyIHByaW50ZXIvZG93bmxvYWRlciByZXF1aXJlcw0KIyAgICAgICAg ICAgICAgYSBkaWZmZXJlbnQgbGF5b3V0LCB5b3Ugd2lsbCBuZWVkIHRvIHVz ZSBhIHNjcmlwdA0KIyAgICAgICAgICAgICAgKHNlZSB0aGUgbGFzdCAyIGRv d25sb2FkIGV4YW1wbGVzIGJlbG93KS4NCiMNCiMgPG9wdGlvbj4gICAgIFRS VUUgOiB0aGUgcHJpbnRlci9kb3dubG9hZGVyIHdpbGwgYWx3YXlzIGJlIEVO QUJMRUQsDQojICAgICAgICAgICAgICBleGNlcHQgdGhhdCBkb3dubG9hZGlu ZyBpcyBkaXNhYmxlZCB3aGVuIC12YWxpZGF0ZSBpcyB1c2VkOw0KIyAgICAg ICAgICAgICAgRkFMU0UgOiBib3RoIHdpbGwgYmUgRElTQUJMRUQgZm9yIGFu b255bW91cyB1c2Vycw0KIyAgICAgICAgICAgICAgYW5kIHByaW50aW5nIHdp bGwgYmUgZGlzYWJsZWQgd2hlbiAtbm9wcmludCBpcyB1c2VkLg0KIw0KIyA8 bGluZXMvcGFnZT4gKHByaW50ZXJzOiBvcHRpb25hbCkgdGhlIG51bWJlciBv ZiBsaW5lcy9wYWdlIChkZWZhdWx0IDY2KToNCiMgICAgICAgICAgICAgIHVz ZWQgdG8gY29tcHV0ZSB0aGUgYXBwcm94aW1hdGUgb3V0cHV0IHNpemUNCiMg ICAgICAgICAgICAgIGFuZCBwcm9tcHQgaWYgdGhlIGRvY3VtZW50IGlzID4g NCBwcmludGVyIHBhZ2VzOw0KIyAgICAgICAgICAgICAgaXQgdXNlcyBjdXJy ZW50IHNjcmVlbiBsZW5ndGggZm9yIHRoZSBjb21wdXRhdGlvbg0KIyAgICAg ICAgICAgICAgd2hlbiBgUHJpbnQgdG8gc2NyZWVuJyBpcyBzZWxlY3RlZC4N CiMNCiMgWW91IG11c3QgcHV0IHRoZSB3aG9sZSBkZWZpbml0aW9uIG9uIG9u ZSBsaW5lOw0KIyBpZiB5b3UgdXNlIGEgY29sb24sIHByZWNlZGUgaXQgd2l0 aCBhIGJhY2tzbGFzaC4NCiMNCiMgYFByaW50ZXInIGNhbiBiZSBhbnkgZmls ZS1oYW5kbGluZyBwcm9ncmFtIHlvdSBmaW5kIHVzZWZ1bCwNCiMgZXZlbiBp ZiBpdCBkb2VzIG5vdCBwaHlzaWNhbGx5IHByaW50IGFueXRoaW5nLg0KIw0K IyBVc3VhbGx5LCBkb3duL3VwLWxvYWRpbmcgaW52b2x2ZXMgdGhlIHVzZSBv ZiAoZS5nLikgQ2tlcm1pdCBvciBaTW9kZW0NCiMgdG8gdHJhbnNmZXIgZmls ZXMgdG8gYSB1c2VyJ3MgbG9jYWwgbWFjaGluZSBvdmVyIGEgc2VyaWFsIGxp bmssDQojIGJ1dCBkb3dubG9hZCBvcHRpb25zIGRvIG5vdCBoYXZlIHRvIGJl IGRvd25sb2FkLXByb3RvY29sIHByb2dyYW1zLg0KIw0KIyBQcmludGVyIGV4 YW1wbGVzOg0KLmV4IDMNCiNQUklOVEVSOkNvbXB1dGVyIENlbnRlciBwcmlu dGVyOmxwciAtUGNjcHJ0ICVzOkZBTFNFDQojUFJJTlRFUjpPZmZpY2UgcHJp bnRlcjpscHIgLVBPZmZwcnQgJXM6VFJVRQ0KI1BSSU5URVI6Vk1TIHByaW50 ZXI6cHJpbnQgL3F1ZXVlPWNjJHByaW50ICVzOkZBTFNFOjU4DQojIElmIHlv dSBoYXZlIGEgdmVyeSBidXN5IFZNUyBwcmludCBxdWV1ZQ0KIyBhbmQgTHlu eCBkZWxldGVzIHRoZSB0ZW1wb3JhcnkgZmlsZXMgYmVmb3JlIHRoZXkgaGF2 ZSBiZWVuIHF1ZXVlZCwNCiMgdXNlIHRoZSBWTVNQcmludC5jb20gaW5jbHVk ZWQgaW4gdGhlIGRpc3RyaWJ1dGlvbjoNCi5leA0KI1BSSU5URVI6QnVzeSBW TVMgcHJpbnRlcjpATHlueF9EaXJcOlZNU1ByaW50IHN5cyRwcmludCAlczpG QUxTRTo1OA0KIyBUbyBzcGVjaWZ5IGEgcHJpbnQgb3B0aW9uIGF0IHJ1bi10 aW1lOg0KIyBOQkIgaWYgeW91IGhhdmUgQU5PTllNT1VTIHVzZXJzLCBETyBO T1QgYWxsb3cgdGhpcyBvcHRpb24hDQouZXgNCiNQUklOVEVSOlNwZWNpZnkg YXQgcnVuLXRpbWU6ZWNobyAtbiAiRW50ZXIgYSBwcmludCBjb21tYW5kXDog IjsgcmVhZCB3b3JkOyBzaCAtYyAiJHdvcmQgJXMiOkZBTFNFDQojIFRvIHBh c3MgdG8gYSBzb3BoaXN0aWNhdGVkIGZpbGUgdmlld2VyOiAtayBzdXBwcmVz c2VzIGludm9jYXRpb24NCiMgb2YgaGV4IGRpc3BsYXkgbW9kZSBpZiA4LWJp dCBvciBjb250cm9sIGNoYXJhY3RlcnMgYXJlIHByZXNlbnQ7DQojICtzIGlu dm9rZXMgc2VjdXJlIG1vZGUgKHNlZSBmdHA6Ly9zcGFjZS5taXQuZWR1L3B1 Yi9kYXZpcy9tb3N0KToNCi5leA0KI1BSSU5URVI6VXNlIE1vc3QgdG8gdmll dzptb3N0IC1rICtzICVzOlRSVUU6MjMNCiMNCiMgRG93bmxvYWRlciBleGFt cGxlczoNCiMgaW4gS2VybWl0LCAtcyAlcyBpcyB0aGUgZmlsZW5hbWUgc2Vu dCwgLWEgJXMgdGhlIGZpbGVuYW1lIG9uIGFycml2YWwNCiMgKGlmIHRoZXkg YXJlIGdpdmVuIGluIHJldmVyc2Ugb3JkZXIgaGVyZSwgdGhlIGNvbW1hbmQg d2lsbCBmYWlsKToNCi5leA0KI0RPV05MT0FERVI6VXNlIEtlcm1pdCB0byBk b3dubG9hZCB0byB0aGUgdGVybWluYWw6a2VybWl0IC1pIC1zICVzIC1hICVz OlRSVUUNCiMgTkIgZG9uJ3QgdXNlIC1rIHdpdGggTW9zdCwgc28gdGhhdCBi aW5hcmllcyB3aWxsIGludm9rZSBoZXhhZGVjaW1hbCBtb2RlOg0KLmV4DQoj RE9XTkxPQURFUjpVc2UgTW9zdCB0byB2aWV3Om1vc3QgK3MgJXM6VFJVRQ0K IyBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZ2l2ZXMgd3JvbmcgZmlsZW5hbWVz DQojIChgc3onIGRvZXNuJ3Qgc3VwcG9ydCBhIHN1Z2dlc3RlZCBmaWxlbmFt ZSBwYXJhbWV0ZXIpOg0KLmV4DQojRE9XTkxPQURFUjpVc2UgWm1vZGVtIHRv IGRvd25sb2FkIHRvIHRoZSBsb2NhbCB0ZXJtaW5hbDpzeiAlczpUUlVFDQoj IFRoZSBmb2xsb3dpbmcgZXhhbXBsZSByZXR1cm5zIGNvcnJlY3QgZmlsZW5h bWVzDQojIGJ5IHVzaW5nIGEgc2NyaXB0IHRvIG1ha2UgYSBzdWJkaXJlY3Rv cnkgaW4gL3RtcCwNCiMgYnV0IG1heSBjb25mbGljdCB3aXRoIHZlcnkgc3Ry b25nIHNlY3VyaXR5IG9yIHBlcm1pc3Npb25zIHJlc3RyaWN0aW9uczoNCi5l eA0KI0RPV05MT0FERVI6VXNlIFptb2RlbSB0byBkb3dubG9hZCB0byB0aGUg bG9jYWwgdGVybWluYWw6c2V0ICVzICVzO3RkPS90bXAvTHN6JCQ7bWtkaXIg JHRkO2xuIC1zICQxICR0ZC8iJDIiO3N6ICR0ZC8iJDIiO3JtIC1yICR0ZDpU UlVFDQouZXggMg0KI1VQTE9BREVSOlVzZSBLZXJtaXQgdG8gdXBsb2FkIGZy b20geW91ciBjb21wdXRlcjoga2VybWl0IC1pIC1yIC1hICVzOlRSVUUNCiNV UExPQURFUjpVc2UgWm1vZGVtIHRvIHVwbG9hZCBmcm9tIHlvdXIgY29tcHV0 ZXI6IHJ6ICVzOlRSVUUNCiMNCiMgTm90ZSBmb3IgT1MvMzkwOiAvKiBTLzM5 MCAtLSBnaWwgLS0gMTQ2NCAqLw0KIyBUaGUgZm9sbG93aW5nIGlzIHN0cm9u Z2x5IHJlY29tbWVuZGVkIHRvIHVuZG8gQVNDSUktPkVCQ0RJQyBjb252ZXJz aW9uLg0KLmV4DQojRE9XTkxPQURFUjpTYXZlIE9TLzM5MCBiaW5hcnkgZmls ZTogaWNvbnYgLWYgSUJNLTEwNDcgLXQgSVNPODg1OS0xICVzID4lczpGQUxT RQ0KDQojIEFkZGVkIGJ5IFJlZCBIYXQ6IA0KRE9XTkxPQURFUjpWaWV3IHdp dGggbGVzczpsZXNzICVzOlRSVUUgDQoNCg0KLmgxIEludGVyYWN0aW9uDQoN Ci5oMiBOT19ET1RfRklMRVMNCiMgSWYgTk9fRE9UX0ZJTEVTIGlzIFRSVUUg KG5vcm1hbCBkZWZhdWx0IHZpYSB1c2VyZGVmcy5oKSwgdGhlIHVzZXIgd2ls bCBub3QNCiMgYmUgYWxsb3dlZCB0byBzcGVjaWZ5IGZpbGVzIGJlZ2lubmlu ZyB3aXRoIGEgZG90IGluIHJlcGx5IHRvIG91dHB1dCBmaWxlbmFtZQ0KIyBw cm9tcHRzLCBhbmQgZmlsZXMgYmVnaW5uaW5nIHdpdGggYSBkb3QgKGUuZy4s IGZpbGU6Ly9sb2NhbGhvc3QvcGF0aC8ubHlueHJjKQ0KIyB3aWxsIG5vdCBi ZSBpbmNsdWRlZCBpbiB0aGUgZGlyZWN0b3J5IGJyb3dzZXIncyBsaXN0aW5n cy4gIElmIHNldCBGQUxTRSwgeW91DQojIGNhbiBmb3JjZSBpdCB0byBiZSB0 cmVhdGVkIGFzIFRSVUUgdmlhIC1yZXN0cmljdGlvbnM9ZG90ZmlsZXMuICBJ ZiBzZXQgRkFMU0UNCiMgYW5kIG5vdCBmb3JjZWQgVFJVRSwgdGhlIHVzZXIg Y2FuIHJlZ3VsYXRlIGl0IHZpYSB0aGUgJ28ncHRpb25zIG1lbnUgKGFuZA0K IyBtYXkgc2F2ZSB0aGUgcHJlZmVyZW5jZSBpbiB0aGUgUkMgZmlsZSkuDQoj DQpOT19ET1RfRklMRVM6RkFMU0UNCg0KDQouaDEgSW50ZXJuYWwgQmVoYXZp b3INCg0KLmgyIE5PX0ZST01fSEVBREVSDQojIElmIE5PX0ZST01fSEVBREVS IGlzIHNldCBGQUxTRSwgRnJvbSBoZWFkZXJzIHdpbGwgYmUgc2VudCBpbiB0 cmFuc21pc3Npb25zDQojIHRvIGh0dHAgb3IgaHR0cHMgc2VydmVycyBpZiB0 aGUgcGVyc29uYWxfbWFpbF9hZGRyZXNzIGhhcyBiZWVuIGRlZmluZWQgdmlh DQojIHRoZSAnbydwdGlvbnMgbWVudS4gIFRoZSBjb21waWxhdGlvbiBkZWZh dWx0IGlzIFRSVUUgKG5vIEZyb20gaGVhZGVyIGlzDQojIHNlbnQpIGFuZCB0 aGUgZGVmYXVsdCBjYW4gYmUgY2hhbmdlZCBoZXJlLiAgVGhlIGRlZmF1bHQg Y2FuIGJlIHRvZ2dsZWQgYXQNCiMgcnVuIHRpbWUgdmlhIHRoZSAtZnJvbSBz d2l0Y2guICBOb3RlIHRoYXQgdHJhbnNtaXNzaW9ucyBvZiBGcm9tIGhlYWRl cnMNCiMgaGF2ZSBiZWNvbWUgd2lkZWx5IGNvbnNpZGVyZWQgdG8gY3JlYXRl IGFuIGludmFzaW9uIG9mIHByaXZhY3kgcmlzay4NCiMNCiNOT19GUk9NX0hF QURFUjpUUlVFDQoNCg0KLmgyIE5PX1JFRkVSRVJfSEVBREVSDQojIElmIE5P X1JFRkVSRVJfSEVBREVSIGlzIFRSVUUsIFJlZmVyZXIgaGVhZGVycyBuZXZl ciB3aWxsIGJlIHNlbnQgaW4NCiMgdHJhbnNtaXNzaW9ucyB0byBzZXJ2ZXJz LiAgTHlueCBub3JtYWxseSBzZW5kcyB0aGUgVVJMIG9mIHRoZSBkb2N1bWVu dA0KIyBmcm9tIHdoaWNoIHRoZSBsaW5rIHdhcyBkZXJpdmVkLCBidXQgbm90 IGZvciBzdGFydGZpbGUgVVJMcywgJ2cnb3RvDQojIFVSTHMsICdqJ3VtcCBz aG9ydGN1dHMsIGJvb2ttYXJrIGZpbGUgbGlua3MsIGhpc3RvcnkgbGlzdCBs aW5rcywgb3INCiMgVVJMcyB0aGF0IGluY2x1ZGUgdGhlIGNvbnRlbnQgZnJv bSBmb3JtIHN1Ym1pc3Npb25zIHdpdGggbWV0aG9kIEdFVC4NCiMgSWYgbGVm dCBGQUxTRSBoZXJlLCBpdCBjYW4gYmUgc2V0IFRSVUUgYXQgcnVuIHRpbWUg dmlhIHRoZSAtbm9yZWZlcmVyDQojIHN3aXRjaC4NCiMNCk5PX1JFRkVSRVJf SEVBREVSOlRSVUUNCg0KDQouaDEgSW50ZXJuYWwgQmVoYXZpb3INCg0KLmgy IE5PX0ZJTEVfUkVGRVJFUg0KIyBJZiBOT19GSUxFX1JFRkVSRVIgaXMgVFJV RSwgUmVmZXJlciBoZWFkZXJzIG5ldmVyIHdpbGwgYmUgc2VudCBpbg0KIyB0 cmFuc21pc3Npb25zIHRvIHNlcnZlcnMgZm9yIGxpbmtzIG9yIGFjdGlvbnMg ZGVyaXZlZCBmcm9tIGRvY3VtZW50cw0KIyBvciBmb3JtcyB3aXRoIGZpbGUg VVJMcy4gIFRoaXMgZW5zdXJlcyB0aGF0IHBhdGhzIGFzc29jaWF0ZWQgd2l0 aA0KIyB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0gYXJlIG5ldmVyIGluZGljYXRl ZCB0byBzZXJ2ZXJzLCBldmVuIGlmDQojIE5PX1JFRkVSRVJfSEVBREVSIGlz IEZBTFNFLiAgSWYgc2V0IHRvIEZBTFNFIGhlcmUsIGl0IGNhbiBzdGlsbCBi ZQ0KIyBzZXQgVFJVRSBhdCBydW4gdGltZSB2aWEgdGhlIC1ub2ZpbGVyZWZl cmVyIHN3aXRjaC4NCiMNCiNOT19GSUxFX1JFRkVSRVI6VFJVRQ0KDQoNCi5o MiBSRUZFUkVSX1dJVEhfUVVFUlkNCiMgUkVGRVJFUl9XSVRIX1FVRVJZIGNv bnRyb2xzIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBVUkwgaW4gYSBSZWZlcmVy DQojIGhlYWRlciB0byBiZSBzZW50IHdvdWxkIGNvbnRhaW4gYSBxdWVyeSBw YXJ0IGluIHRoZSBmb3JtIG9mIGEgJz8nDQojIGNoYXJhY3RlciBmb2xsb3dl ZCBieSBvbmUgb3IgbW9yZSBhdHRyaWJ1dGU9dmFsdWUgcGFpcnMuICBRdWVy eSBwYXJ0cw0KIyBvZnRlbiBjb250YWluIHNlbnNpdGl2ZSBvciBwZXJzb25h bCBpbmZvcm1hdGlvbiByZXN1bHRpbmcgZnJvbSBmaWxsaW5nDQojIG91dCBm b3Jtcywgb3Igb3RoZXIgaW5mbyB0aGF0IGFsbG93cyB0cmFja2luZyBvZiBh IHVzZXIncyBicm93c2luZyBwYXRoDQojIHRocm91Z2ggYSBzaXRlLCBhbiB0 aHVzIHNob3VsZCBub3QgYmUgcHV0IGluIGEgUmVmZXJlciBoZWFkZXIgKHdo aWNoIG1heQ0KIyBnZXQgc2VudCB0byBhbiB1bnJlbGF0ZWQgdGhpcmQtcGFy dHkgc2l0ZSkuICBPbiB0aGUgb3RoZXIgaGFuZCwgc29tZQ0KIyBzaXRlcyAo aW1wcm9wZXJseSkgcmVseSBvbiBicm93c2VycyBzZW5kaW5nIFJlZmVyZXIg aGVhZGVycywgZXZlbiB3aGVuDQojIHRoZSB1c2VyIGlzIGNvbWluZyBmcm9t IGEgcGFnZSB3aG9zZSBVUkwgaGFzIGEgcXVlcnkgcGFydC4NCiMNCiMgSWYg UkVGRVJFUl9XSVRIX1FVRVJZIGlzIFNFTkQsIGZ1bGwgUmVmZXJlciBoZWFk ZXJzIHdpbGwgYmUgc2VudA0KIyBpbmNsdWRpbmcgdGhlIHF1ZXJ5IHBhcnQg KHVubGVzcyBzZW5kaW5nIG9mIFJlZmVyZXIgaXMgZGlzYWJsZWQgaW4NCiMg Z2VuZXJhbCwgc2VlIE5PX1JFRkVSRVJfSEVBREVSIGFib3ZlKS4gIElmIFJF RkVSRVJfV0lUSF9RVUVSWSBpcw0KIyBQQVJUSUFMLCB0aGUgUmVmZXJlciBo ZWFkZXIgd2lsbCBjb250YWluIGEgcGFydGlhbCBVUkwsIHdpdGggdGhlIHF1 ZXJ5DQojIHBhcnQgc3RyaXBwZWQgb2ZmLiAgVGhpcyBpcyBub3Qgc3RyaWN0 bHkgY29ycmVjdCwgYnV0IHNob3VsZCBzYXRpc2Z5DQojIHRob3NlIHNpdGVz IHRoYXQgY2hlY2sgb25seSB3aGV0aGVyIHRoZSB1c2VyIGFycml2ZWQgYXQg YSBwYWdlIGZyb20gYW4NCiMgIm91dHNpZGUiIGxpbmsuICBJZiBSRUZFUkVS X1dJVEhfUVVFUlkgaXMgc2V0IHRvIERST1AgKG9yIGFueXRoaW5nIGVsc2UN CiMgdW5yZWNvZ25pemVkKSwgdGhlIGRlZmF1bHQsIG5vIFJlZmVyZXIgaGVh ZGVyIGlzIHNlbnQgYXQgYWxsIGluIHRoaXMNCiMgc2l0dWF0aW9uLg0KIw0K I1JFRkVSRVJfV0lUSF9RVUVSWTpEUk9QDQoNCg0KLmgxIEFwcGVhcmFuY2UN Cg0KLmgyIFZFUkJPU0VfSU1BR0VTDQojIFZFUkJPU0VfSU1BR0VTIGNvbnRy b2xzIHdoZXRoZXIgTHlueCByZXBsYWNlcyBbTElOS10sIFtJTkxJTkVdIGFu ZCBbSU1BR0VdDQojIChmb3IgaW1hZ2VzIHdpdGhvdXQgQUxUKSB3aXRoIGZp bGVuYW1lcyBvZiB0aGVzZSBpbWFnZXMuDQojIFRoaXMgY2FuIGJlIHVzZWZ1 bCBpbiBkZXRlcm1pbmluZyB3aGF0IGltYWdlcyBhcmUgaW1wb3J0YW50DQoj IGFuZCB3aGljaCBhcmUgbWVyZSBkZWNvcmF0aW9ucywgZS5nLiBidXR0b24u Z2lmLCBsaW5lLmdpZiwNCiMgcHJvdmlkZWQgdGhlIGF1dGhvciB1c2VzIG1l YW5pbmdmdWwgbmFtZXMuDQojDQojIFRoZSBkZWZpbml0aW9uIGhlcmUgd2ls bCBvdmVycmlkZSB0aGUgc2V0dGluZyBpbiB1c2VyZGVmcy5oLg0KIw0KI1ZF UkJPU0VfSU1BR0VTOlRSVUUNCg0KDQouaDIgTUFLRV9MSU5LU19GT1JfQUxM X0lNQUdFUw0KIyBJZiBNQUtFX0xJTktTX0ZPUl9BTExfSU1BR0VTIGlzIFRS VUUsIGFsbCBpbWFnZXMgd2lsbCBiZSBnaXZlbiBsaW5rcw0KIyB3aGljaCBj YW4gYmUgQUNUSVZBVEVkLiAgRm9yIGlubGluZXMsIHRoZSBBTFQgb3IgcHNl dWRvLUFMVCAoIltJTkxJTkVdIikNCiMgc3RyaW5ncyB3aWxsIGJlIGxpbmtz IGZvciB0aGUgcmVzb2x2ZWQgU1JDIHJhdGhlciB0aGFuIGp1c3QgdGV4dC4N CiMgRm9yIElTTUFQIG9yIG90aGVyIGdyYXBoaWMgbGlua3MsIEFMVCBvciBw c2V1ZG8tQUxUICgiW0lTTUFQXSIgb3IgIltMSU5LXSIpDQojIHdpbGwgaGF2 ZSAnLScgYW5kIGEgbGluayBsYWJlbGVkICJbSU1BR0VdIiBmb3IgdGhlIHJl c29sdmVkIFNSQyBhcHBlbmRlZC4NCiMgU2VlIGFsc28gVkVSQk9TRV9JTUFH RVMgZmxhZy4NCiMNCiMgVGhlIGRlZmluaXRpb24gaGVyZSB3aWxsIG92ZXJy aWRlIHRoYXQgaW4gdXNlcmRlZnMuaA0KIyBhbmQgY2FuIGJlIHRvZ2dsZWQg dmlhIGFuICItaW1hZ2VfbGlua3MiIGNvbW1hbmQtbGluZSBzd2l0Y2guDQoj IFRoZSB1c2VyIGNhbiBhbHNvIHVzZSB0aGUgTFlLX0lNQUdFX1RPR0dMRSBr ZXkgKGRlZmF1bHQgYConKQ0KIyBvciBgU2hvdyBJbWFnZXMnIGluIHRoZSBG b3JtLWJhc2VkIE9wdGlvbnMgTWVudS4NCiMNCiNNQUtFX0xJTktTX0ZPUl9B TExfSU1BR0VTOkZBTFNFDQoNCi5oMiBNQUtFX1BTRVVET19BTFRTX0ZPUl9J TkxJTkVTDQojIElmIE1BS0VfUFNFVURPX0FMVFNfRk9SX0lOTElORVMgaXMg RkFMU0UsIGlubGluZSBpbWFnZXMgd2hpY2ggZG9uJ3Qgc3BlY2lmeQ0KIyBh biBBTFQgc3RyaW5nIHdpbGwgbm90IGhhdmUgIltJTkxJTkVdIiBpbnNlcnRl ZCBhcyBhIHBzZXVkby1BTFQsDQojIGkuZS4gdGhleSdsbCBiZSB0cmVhdGVk IGFzIGhhdmluZyBBTFQ9IiIuDQojIE90aGVyd2lzZSAoaWYgVFJVRSksIHBz ZXVkby1BTFRzIHdpbGwgYmUgY3JlYXRlZCBmb3IgaW5saW5lcywNCiMgc28g dGhhdCB0aGV5IGNhbiBiZSB1c2VkIGFzIGxpbmtzIHRvIHRoZSBTUkNzLg0K IyBTZWUgYWxzbyBWRVJCT1NFX0lNQUdFUyBmbGFnLg0KIw0KIyBUaGUgZGVm aW5pdGlvbiBoZXJlIHdpbGwgb3ZlcnJpZGUgdGhhdCBpbiB1c2VyZGVmcy5o DQojIGFuZCBjYW4gYmUgdG9nZ2xlZCB2aWEgYSAiLXBzZXVkb19pbmxpbmVz IiBjb21tYW5kLWxpbmUgc3dpdGNoLg0KIyBUaGUgdXNlciBjYW4gYWxzbyB1 c2UgdGhlIExZS19JTkxJTkVfVE9HR0xFIGtleSAoZGVmYXVsdCBgWycpDQoj IG9yIGBTaG93IEltYWdlcycgaW4gdGhlIEZvcm0tYmFzZWQgT3B0aW9ucyBN ZW51Lg0KIw0KTUFLRV9QU0VVRE9fQUxUU19GT1JfSU5MSU5FUzpGQUxTRQ0K DQoNCi5oMiBTVUJTVElUVVRFX1VOREVSU0NPUkVTDQojIElmIFNVQlNUSVRV VEVfVU5ERVJTQ09SRVMgaXMgVFJVRSwgdGhlIF91bmRlcmxpbmVfIGZvcm1h dCB3aWxsIGJlIHVzZWQNCiMgZm9yIGVtcGhhc2lzIHRhZ3MgaW4gZHVtcHMu DQojDQojIFRoZSBkZWZhdWx0IGRlZmluZWQgaGVyZSB3aWxsIG92ZXJyaWRl IHRoYXQgaW4gdXNlcmRlZnMuaCwgYW5kIHRoZSB1c2VyDQojIGNhbiB0b2dn bGUgdGhlIGRlZmF1bHQgdmlhIGEgIi11bmRlcnNjb3JlIiBjb21tYW5kIGxp bmUgc3dpdGNoLg0KIw0KI1NVQlNUSVRVVEVfVU5ERVJTQ09SRVM6RkFMU0UN Cg0KDQouaDEgSW50ZXJhY3Rpb24NCg0KLmgyIFFVSVRfREVGQVVMVF9ZRVMN CiMgSWYgUVVJVF9ERUZBVUxUX1lFUyBpcyBUUlVFIHRoZW4gd2hlbiB0aGUg UVVJVCBjb21tYW5kIGlzIGVudGVyZWQsIGFueQ0KIyByZXNwb25zZSBvdGhl ciB0aGFuIG4gb3IgTiB3aWxsIGNvbmZpcm0uICBJdCBzaG91bGQgYmUgRkFM U0UgaWYgeW91DQojIHByZWZlciB0aGUgbW9yZSBjb25zZXJ2YXRpdmUgYWN0 aW9uIG9mIHJlcXVpcmluZyBhbiBleHBsaWNpdCBZIG9yIHkgdG8NCiMgY29u ZmlybS4gIFRoZSBkZWZhdWx0IGRlZmluZWQgaGVyZSB3aWxsIG92ZXJyaWRl IHRoYXQgaW4gdXNlcmRlZnMuaC4NCiMNCiNRVUlUX0RFRkFVTFRfWUVTOlRS VUUNCg0KDQouaDEgSFRNTCBQYXJzaW5nDQoNCi5oMiBISVNUT1JJQ0FMX0NP TU1FTlRTDQojIElmIEhJU1RPUklDQUxfQ09NTUVOVFMgaXMgVFJVRSwgTHlu eCB3aWxsIHJldmVydCB0byB0aGUgIkhpc3RvcmljYWwiDQojIGJlaGF2aW9y IG9mIHRyZWF0aW5nIGFueSAnPicgYXMgYSB0ZXJtaW5hdG9yIGZvciBjb21t ZW50cywgaW5zdGVhZCBvZg0KIyBzZWVraW5nIGEgdmFsaWQgJy0tPicgdGVy bWluYXRvciAobm90ZSB0aGF0IHdoaXRlIHNwYWNlIGNhbiBiZSBwcmVzZW50 DQojIGJldHdlZW4gdGhlICctLScgYW5kICc+JyBpbiB2YWxpZCB0ZXJtaW5h dG9ycykuICBUaGUgY29tcGlsYXRpb24gZGVmYXVsdA0KIyBpcyBGQUxTRS4N CiMNCiMgVGhlIGNvbXBpbGF0aW9uIGRlZmF1bHQsIG9yIGRlZmF1bHQgZGVm aW5lZCBoZXJlLCBjYW4gYmUgdG9nZ2xlZCB2aWEgYQ0KIyAiLWhpc3Rvcmlj YWwiIGNvbW1hbmQgbGluZSBzd2l0Y2gsIGFuZCB2aWEgdGhlIExZS19ISVNU T1JJQ0FMIGNvbW1hbmQga2V5Lg0KIw0KI0hJU1RPUklDQUxfQ09NTUVOVFM6 RkFMU0UNCg0KDQouaDIgTUlOSU1BTF9DT01NRU5UUw0KIyBJZiBNSU5JTUFM X0NPTU1FTlRTIGlzIFRSVUUsIEx5bnggd2lsbCBub3QgdXNlIFZhbGlkIGNv bW1lbnQgcGFyc2luZw0KIyBvZiAnLS0nIHBhaXJzIGFzIHNlcmlhbCBjb21t ZW50cyB3aXRoaW4gYW4gb3ZlcmFsbCBjb21tZW50IGVsZW1lbnQsDQojIGFu ZCBpbnN0ZWFkIHdpbGwgc2VlayBvbmx5IGEgJy0tPicgdGVybWluYXRvciBm b3IgdGhlIG92ZXJhbGwgY29tbWVudA0KIyBlbGVtZW50LiAgVGhpcyBlbXVs YXRlcyB0aGUgTmV0c2NhcGUgdjIuMCBjb21tZW50IHBhcnNpbmcgYnVnLCBh bmQNCiMgd2lsbCBoZWxwIEx5bnggY29wZSB3aXRoIHRoZSB1c2Ugb2YgZGFz aGVzIGFzICJkZWNvcmF0aW9ucyIsIHdoaWNoDQojIGNvbnNlcXVlbnRseSBo YXMgYmVjb21lIGNvbW1vbiBpbiBzby1jYWxsZWQgIkVuaGFuY2VkIGZvciBO ZXRzY2FwZSINCiMgcGFnZXMuICBOb3RlIHRoYXQgc2V0dGluZyBIaXN0b3Jp Y2FsIGNvbW1lbnRzIG9uIHdpbGwgb3ZlcnJpZGUgdGhlDQojIE1pbmltYWwg b3IgVmFsaWQgc2V0dGluZy4NCiMNCiMgVGhlIGNvbXBpbGF0aW9uIGRlZmF1 bHQgZm9yIE1JTklNQUxfQ09NTUVOVFMgaXMgRkFMU0UsIGJ1dCB3ZSdsbA0K IyBzZXQgaXQgVFJVRSBoZXJlLCB1bnRpbCBOZXRzY2FwZSBnZXRzIGl0cyBj b21tZW50IHBhcnNpbmcgcmlnaHQsDQojIGFuZCAiZGVjb3JhdGl2ZSIgZGFz aGVzIGNlYXNlIHRvIGJlIHNvIGNvbW1vbi4NCiMNCiMgVGhlIGNvbXBpbGF0 aW9uIGRlZmF1bHQsIG9yIGRlZmF1bHQgZGVmaW5lZCBoZXJlLCBjYW4gYmUg dG9nZ2xlZCB2aWEgYQ0KIyAiLW1pbmltYWwiIGNvbW1hbmQgbGluZSBzd2l0 Y2gsIGFuZCB2aWEgdGhlIExZS19NSU5JTUFMIGNvbW1hbmQga2V5Lg0KIw0K TUlOSU1BTF9DT01NRU5UUzpUUlVFDQoNCg0KLmgyIFNPRlRfRFFVT1RFUw0K IyBJZiBTT0ZUX0RRVU9URVMgaXMgVFJVRSwgTHlueCB3aWxsIGVtdWxhdGUg dGhlIGludmFsaWQgYmVoYXZpb3Igb2YNCiMgdHJlYXRpbmcgJz4nIGFzIGEg Y28tdGVybWluYXRvciBvZiBhIGRvdWJsZS1xdW90ZWQgYXR0cmlidXRlIHZh bHVlDQojIGFuZCB0aGUgdGFnIHdoaWNoIGNvbnRhaW5zIGl0LCBhcyB3YXMg ZG9uZSBpbiBvbGQgdmVyc2lvbnMgb2YgTmV0c2NhcGUNCiMgYW5kIE1vc2Fp Yy4gIFRoZSBjb21waWxhdGlvbiBkZWZhdWx0IGlzIEZBTFNFLg0KIw0KIyBU aGUgY29tcGlsYXRpb24gZGVmYXVsdCwgb3IgZGVmYXVsdCBkZWZpbmVkIGhl cmUsIGNhbiBiZSB0b2dnbGVkIHZpYQ0KIyBhICItc29mdF9kcXVvdGVzIiBj b21tYW5kIGxpbmUgc3dpdGNoLg0KIw0KI1NPRlRfRFFVT1RFUzpGQUxTRQ0K DQoNCi5oMiBTVFJJUF9ET1RET1RfVVJMUw0KIyBJZiBTVFJJUF9ET1RET1Rf VVJMUyBpcyBUUlVFLCBMeW54IGVtdWxhdGVzIHRoZSBpbnZhbGlkIGJlaGF2 aW9yIG9mIG1hbnkNCiMgYnJvd3NlcnMgdG8gc3RyaXAgYSBsZWFkaW5nICIu Li8iIHNlZ21lbnQgZnJvbSByZWxhdGl2ZSBVUkxzIGluIEhUTUwNCiMgZG9j dW1lbnRzIHdpdGggYSBodHRwIG9yIGh0dHBzIGJhc2UgVVJMLCBpZiB0aGlz IHdvdWxkIG90aGVyd2lzZSBsZWFkIHRvDQojIGFuIGFic29sdXRlIFVSTHMg d2l0aCB0aG9zZSBjaGFyYWN0ZXJzIHN0aWxsIGluIGl0LiAgU3VjaCBVUkxz IGFyZSBub3JtYWxseQ0KIyBlcnJvbmVvdXMgYW5kIG5vdCB3aGF0IGlzIGlu dGVuZGVkIGJ5IHBhZ2UgYXV0aG9ycy4gIEx5bnggd2lsbCBpc3N1ZQ0KIyBh IHdhcm5pbmcgbWVzc2FnZSB3aGVuIHRoaXMgb2NjdXJzLg0KIw0KIyBJZiBT VFJJUF9ET1RET1RfVVJMUyBpcyBGQUxTRSwgTHlueCB3aWxsIHVzZSB0aG9z ZSBVUkxzIGZvciByZXF1ZXN0cw0KIyB3aXRob3V0IHRha2luZyBhbnkgc3Bl Y2lhbCBhY3Rpb25zIG9yIGlzc3VpbmcgV2FybmluZ3MsIGluIG1vc3QgY2Fz ZXMNCiMgdGhpcyB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvciByZXNwb25zZSBm cm9tIHRoZSBzZXJ2ZXIuDQojDQojIE5vdGUgdGhhdCBMeW54IG5ldmVyIHRy aWVzIHRvIGZpeCBzaW1pbGFyIFVSTHMgZm9yIHByb3RvY29scyBvdGhlciB0 aGFuDQojIGh0dHAgYW5kIGh0dHBzLCBzaW5jZSB0aGV5IGFyZSBsZXNzIGNv bW1vbiBhbmQgbWF5IGFjdHVhbGx5IGJlIHZhbGlkIGluDQojIHNvbWUgY2Fz ZXMuDQojDQojU1RSSVBfRE9URE9UX1VSTFM6VFJVRQ0KDQoNCi5oMSBBcHBl YXJhbmNlDQoNCi5oMiBFTkFCTEVfU0NST0xMQkFDSw0KIyBJZiBFTkFCTEVf U0NST0xMQkFDSyBpcyBUUlVFLCBMeW54IHdpbGwgY2xlYXIgdGhlIGVudGly ZSBzY3JlZW4gYmVmb3JlDQojIGRpc3BsYXlpbmcgZWFjaCBuZXcgc2NyZWVu ZnVsIG9mIHRleHQuICBUaG91Z2ggbGVzcyBlZmZpY2llbnQgZm9yIG5vcm1h bA0KIyB1c2UsIHRoaXMgYWxsb3dzIHByb2dyYW1zIHRoYXQgbWFpbnRhaW4g YSBidWZmZXIgb2YgcHJldmlvdXNseS1kaXNwbGF5ZWQNCiMgdGV4dCB0byBy ZWNvZ25pemUgdGhlIGNvbnRpbnVpdHkgb2Ygd2hhdCBoYXMgYmVlbiBkaXNw bGF5ZWQsIHNvIHRoYXQNCiMgcHJldmlvdXMgc2NyZWVuZnVscyBjYW4gYmUg cmV2aWV3ZWQgYnkgd2hhdGV2ZXIgbWV0aG9kIHRoZSBwcm9ncmFtIHVzZXMN CiMgdG8gc2Nyb2xsIGJhY2sgdGhyb3VnaCBwcmV2aW91cyB0ZXh0LiAgRm9y IGV4YW1wbGUsIHRoZSBQQyBjb21tIHByb2dyYW0NCiMgUU1vZGVtIGhhcyBh IGtleSB0aGF0IGNhbiBiZSBwcmVzc2VkIHRvIHNjcm9sbCBiYWNrOyBpZiBF TkFCTEVfU0NST0xMQkFDSw0KIyBpcyBUUlVFLCBwcmVzc2luZyB0aGUgc2Ny b2xsYmFjayBrZXkgd2lsbCBhY2Nlc3MgcHJldmlvdXMgc2NyZWVuZnVscyB3 aGljaA0KIyB3aWxsIGhhdmUgYmVlbiBzdG9yZWQgb24gdGhlIGxvY2FsIFBD IGFuZCB3aWxsIHRoZXJlZm9yZSBiZSBkaXNwbGF5ZWQNCiMgaW5zdGFudGFu ZW91c2x5LCBpbnN0ZWFkIG9mIG5lZWRpbmcgdG8gYmUgcmV0cmFuc21pdHRl ZCBieSBMeW54IGF0IHRoZQ0KIyBzcGVlZCBvZiB0aGUgY29tbSBjb25uZWN0 aW9uIChidXQgTHlueCB3aWxsIG5vdCBrbm93IGFib3V0IHRoZSBjaGFuZ2Us DQojIHNvIHlvdSBtdXN0IHJlc3RvcmUgdGhlIGxhc3Qgc2NyZWVuIGJlZm9y ZSByZXN1bWluZyB3aXRoIEx5bnggY29tbWFuZHMpLg0KIw0KIyBUaGUgY29t cGlsYXRpb24gZGVmYXVsdCBpcyBGQUxTRSAoaWYgUkVWRVJTRV9DTEVBUl9T Q1JFRU5fUFJPQkxFTSB3YXMgbm90DQojIGRlZmluZWQgaW4gdGhlIFVuaXgg TWFrZWZpbGUgdG8gaW52b2tlIHRoaXMgYmVoYXZpb3IgYXMgYSB3b3JrYXJv dW5kIGZvcg0KIyBzb21lIHBvb3IgY3Vyc2VzIGltcGxlbWVudGF0aW9ucyku DQojDQojIFRoZSBkZWZhdWx0IGNvbXBpbGF0aW9uIG9yIGNvbmZpZ3VyYXRp b24gc2V0dGluZyBjYW4gYmUgdG9nZ2xlZCB2aWEgYW4NCiMgIi1lbmFibGVf c2Nyb2xsYmFjayIgY29tbWFuZCBsaW5lIHN3aXRjaC4NCiMNCkVOQUJMRV9T Q1JPTExCQUNLOlRSVUUNCg0KDQouaDIgU0NBTl9GT1JfQlVSSUVEX05FV1Nf UkVGUw0KIyBJZiBTQ0FOX0ZPUl9CVVJJRURfTkVXU19SRUZTIGlzIHNldCB0 byBUUlVFLCBMeW54IHdpbGwgc2NhbiB0aGUgYm9kaWVzDQojIG9mIG5ld3Mg YXJ0aWNsZXMgZm9yIGJ1cmllZCBhcnRpY2xlIGFuZCBVUkwgcmVmZXJlbmNl cyBhbmQgY29udmVydCB0aGVtDQojIHRvIGxpbmtzLiAgVGhlIGNvbXBpbGF0 aW9uIGRlZmF1bHQgaXMgVFJVRSwgYnV0IHNvbWUgZW1haWwgYWRkcmVzc2Vz DQojIGVuY2xvc2VkIGluIGFuZ2xlIGJyYWNrZXRzICgiPHVzZXJAYWRkcmVz cz4iKSBtaWdodCBiZSBjb252ZXJ0ZWQgdG8gZmFsc2UNCiMgbmV3cyBsaW5r cywgYW5kIHV1ZW5jb2RlZCBtZXNzYWdlcyBtaWdodCBiZSBjb3JydXB0ZWQu ICBUaGUgY29udmVyc2lvbiBpcw0KIyBub3QgZG9uZSB3aGVuIHRoZSBkaXNw bGF5IGlzIHRvZ2dsZWQgdG8gc291cmNlIG9yIHdoZW4gJ2Qnb3dubG9hZGlu Zywgc28NCiMgdXVlbmNvZGVkIGFydGljbGVzIGNhbiBiZSBzYXZlZCBpbnRh Y3QgcmVnYXJkbGVzcyBvZiB0aGVzZSBzZXR0aW5ncy4NCiMNCiMgVGhlIGRl ZmF1bHQgc2V0dGluZyBjYW4gYmUgdG9nZ2xlZCB2aWEgYSAiLWJ1cmllZF9u ZXdzIiBjb21tYW5kIGxpbmUNCiMgc3dpdGNoLg0KIw0KI1NDQU5fRk9SX0JV UklFRF9ORVdTX1JFRlM6VFJVRQ0KDQoNCi5oMiBQUkVQRU5EX0JBU0VfVE9f U09VUkNFDQojIElmIFBSRVBFTkRfQkFTRV9UT19TT1VSQ0UgaXMgc2V0IHRv IEZBTFNFLCBMeW54IHdpbGwgbm90IHByZXBlbmQgYQ0KIyBSZXF1ZXN0IFVS TCBjb21tZW50IGFuZCBCQVNFIGVsZW1lbnQgdG8gdGV4dC9odG1sIHNvdXJj ZSBmaWxlcyB3aGVuDQojIHRoZXkgYXJlIHJldHJpZXZlZCBmb3IgJ2Qnb3du bG9hZGluZyBvciBwYXNzZWQgdG8gJ3AncmludCBmdW5jdGlvbnMuDQojIFRo ZSBjb21waWxhdGlvbiBkZWZhdWx0IGlzIFRSVUUuICBOb3RlIHRoYXQgdGhp cyBwcmVwZW5kaW5nIGlzIG5vdA0KIyBkb25lIGZvciAtc291cmNlIGR1bXBz LCB1bmxlc3MgdGhlIC1iYXNlIHN3aXRjaCBhbHNvIHdhcyBpbmNsdWRlZCBv bg0KIyB0aGUgY29tbWFuZCBsaW5lLCBhbmQgdGhlIGxhdHRlciBzd2l0Y2gg b3ZlcnJpZGVzIHRoZSBzZXR0aW5nIG9mIHRoZQ0KIyBQUkVQRU5EX0JBU0Vf VE9fU09VUkNFIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuDQojDQojUFJFUEVO RF9CQVNFX1RPX1NPVVJDRTpUUlVFDQoNCg0KIyBNSU1FIHR5cGVzIGFuZCB2 aWV3ZXJzIQ0KIw0KIyBmaWxlIGV4dGVuc2lvbnMgbWF5IGJlIGFzc2lnbmVk IHRvIE1JTUUgdHlwZXMgdXNpbmcNCiMgdGhlIFNVRkZJWDogZGVmaW5pdGlv bi4NCiMNCiMgTk9URTogSXQgaXMgbm9ybWFsbHkgcHJlZmVyYWJsZSB0byBk ZWZpbmUgbmV3IGV4dGVuc2lvbiBtYXBwaW5ncyBpbg0KIyAgICAgICBFWFRF TlNJT05fTUFQIGZpbGVzIChzZWUgYmVsb3cpIGluc3RlYWQgb2YgaGVyZTog IERlZmluaXRpb25zDQojICAgICAgIGhlcmUgYXJlIG92ZXJyaWRkZW4gYnkg dGhvc2UgaW4gRVhURU5TSU9OX01BUCBmaWxlcyBhbmQgZXZlbiBieQ0KIyAg ICAgICBzb21lIGJ1aWx0LWluIGRlZmF1bHRzIGluIHNyYy9IVEluaXQuYy4g IE9uIHRoZSBvdGhlciBoYW5kLA0KIyAgICAgICBkZWZpbml0aW9ucyBoZXJl IGFsbG93IHNvbWUgbW9yZSBmaWVsZHMgdGhhdCBhcmUgbm90IHBvc3NpYmxl DQojICAgICAgIGluIHRob3NlIGZpbGVzLg0KIw0KIyAgICAgICBFeHRlbnNp b24gbWFwcGluZ3MgaGF2ZSBhbiBlZmZlY3QgbW9zdGx5IGZvciBmdHAgYW5k IGxvY2FsIGZpbGVzLA0KIyAgICAgICB0aGV5IGFyZSBOT1QgdXNlZCB0byBk ZXRlcm1pbmUgdGhlIHR5cGUgb2YgY29udGVudCBmb3IgVVJMcyB3aXRoDQoj ICAgICAgIHRoZSBodHRwIHByb3RvY29sLiAgVGhpcyBpcyBiZWNhdXNlIEhU VFAgc2VydmVycyBhbHJlYWR5IHNwZWNpZnkNCiMgICAgICAgdGhlIE1JTUUg dHlwZSBpbiB0aGUgQ29udGVudC1UeXBlIGhlYWRlci4gIFtJdCBtYXkgc3Rp bGwgYmUNCiMgICAgICAgbmVjZXNzYXJ5IHRvIHNldCB1cCBhbiBhcHByb3By aWF0ZSBzdWZmaXggZm9yIHNvbWUgTUlNRSB0eXBlcywNCiMgICAgICAgZXZl biBpZiB0aGV5IGFyZSBhY2Nlc3NlZCBvbmx5IHZpYSB0aGUgSFRUUCBwcm90 b2NvbCwgaWYgdGhlIHZpZXdlcg0KIyAgICAgICAoc2VlIGJlbG93KSBmb3Ig dGhvc2UgTUlNRSB0eXBlcyByZXF1aXJlcyBhIGNlcnRhaW4gc3VmZml4IGZv ciB0aGUNCiMgICAgICAgdGVtcG9yYXJ5IGZpbGUgcGFzc2VkIHRvIGl0Ll0N Cg0KDQouaDEgRXh0ZXJuYWwgUHJvZ3JhbXMNCg0KLmgyIEdMT0JBTF9FWFRF TlNJT05fTUFQDQouaDIgUEVSU09OQUxfRVhURU5TSU9OX01BUA0KIyBUaGUg Z2xvYmFsIGFuZCBwZXJzb25hbCBFWFRFTlNJT05fTUFQIGZpbGVzIGFsbG93 IHlvdSB0byBhc3NpZ24gZXh0ZW5zaW9ucw0KIyB0byBNSU1FIHR5cGVzIHdo aWNoIHdpbGwgb3ZlcnJpZGUgYW55IG9mIHRoZSBzdWZmaXggbWFwcyBpbiB0 aGlzIChseW54LmNmZykNCiMgY29uZmlndXJhdGlvbiBmaWxlLCBvciBpbiBz cmMvSFRJbml0LmMuICBTZWUgdGhlIGV4YW1wbGUgbWltZS50eXBlcyBmaWxl DQojIGluIHRoZSBzYW1wbGVzIHN1YmRpcmVjdG9yeS4NCiMNCiMgVW5peDoN CiMgPT09PQ0KI0dMT0JBTF9FWFRFTlNJT05fTUFQOi91c3IvbG9jYWwvbGli L21vc2FpYy9taW1lLnR5cGVzDQojIFZNUzoNCiMgPT09DQojR0xPQkFMX0VY VEVOU0lPTl9NQVA6THlueF9EaXI6bWltZS50eXBlcw0KIw0KIwlVbml4IChz b3VnaHQgaW4gdXNlcidzIGhvbWUgZGlyZWN0b3J5KToNCiNQRVJTT05BTF9F WFRFTlNJT05fTUFQOi5taW1lLnR5cGVzDQojCVZNUyAoc291Z2h0IGluIHVz ZXIncyBzeXMkbG9naW4gZGlyZWN0b3J5KToNCiNQRVJTT05BTF9FWFRFTlNJ T05fTUFQOm1pbWUudHlwZXMNCg0KDQouaDIgU1VGRklYX09SREVSDQojIFdp dGggU1VGRklYX09SREVSIHRoZSBwcmVjZWRlbmNlIG9mIHN1ZmZpeCBtYXBw aW5ncyBjYW4gYmUgY2hhbmdlZC4NCiMgVHdvIGtpbmRzIG9mIHNldHRpbmdz IGFyZSByZWNvZ25pemVkOg0KIw0KIyAgICBQUkVDRURFTkNFX09USEVSIG9y IFBSRUNFREVOQ0VfSEVSRQ0KIyAgICAgIFN1ZmZpeCBtYXBwaW5ncyBjYW4g Y29tZSBmcm9tIGZvdXIgc291cmNlczogKDEpIFNVRkZJWCBydWxlcw0KIyAg ICAgIGdpdmVuIGhlcmUgLSBzZWUgYmVsb3csICgyKSBidWlsdGluIGRlZmF1 bHRzIChIVEluaXQuYyksIGFuZCB0aGUNCiMgICAgICAoMykgR0xPQkFMX0VY VEVOU0lPTl9NQVAgYW5kICg0KSBQRVJTT05BTF9FWFRFTlNJT05fTUFQIGZp bGVzLg0KIyAgICAgIFRoZSBvcmRlciBvZiBwcmVjZWRlbmNlIGlzIG5vcm1h bGx5IGFzIGxpc3RlZDogKDEpIGhhcyB0aGUNCiMgICAgICAqbG93ZXN0Kiwg KDQpIGhhcyB0aGUgKmhpZ2hlc3QqIHByZWNlZGVuY2UgaWYgdGhlcmUgYXJl IGNvbmZsaWN0cy4NCiMgICAgICBJbiBvdGhlciB3b3JkcywgU1VGRklYIG1h cHBpbmdzIGhlcmUgYXJlIG92ZXJyaWRkZW4gYnkgY29uZmxpY3RpbmcNCiMg ICAgICBvbmVzIGVsc2V3aGVyZS4gIFRoaXMgZGVmYXVsdCBvcmRlcmluZyBp cyBjYWxsZWQgUFJFQ0VERU5DRV9PVEhFUi4NCiMgICAgICBXaXRoIFBSRUNF REVOQ0VfSEVSRSwgdGhlIG9yZGVyIGJlY29tZXMgKDIpICgzKSAoNCkgKDEp LCBpLmUuDQojICAgICAgbWFwcGluZ3MgaGVyZSBvdmVycmlkZSBvdGhlcnMg bWFkZSBlbHNld2hlcmUuDQojDQojICAgIE5PX0JVSUxUSU4NCiMgICAgICBU aGlzIGRpc2FibGVzIGFsbCBidWlsdGluIGRlZmF1bHQgcnVsZXMuICBJbiBv dGhlciB3b3JkcywgKDIpIGluIHRoZQ0KIyAgICAgIGxpc3QgYWJvdmUgaXMg c2tpcHBlZC4gIFNvbWUgcmVjb2duaXRpb24gZm9yIGNvbXByZXNzZWQgZmls ZXMgKCIuZ3oiLA0KIyAgICAgICIuWiIpIGlzIHN0aWxsIGhhcmR3aXJlZC4g ICBBIG1hcHBpbmcgZm9yIHNvbWUgYmFzaWMgdHlwZXMsIGF0IGxlYXN0DQoj ICAgICAgZm9yIHRleHQvaHRtbCBpcyBwcm9iYWJseSBuZWNlc3NhcnkgdG8g Z2V0IGEgdXNhYmxlIGNvbmZpZ3VyYXRpb24sDQojICAgICAgaXQgY2FuIGJl IGdpdmVuIGluIGEgU1VGRklYIHJ1bGUgYmVsb3cgb3IgYW4gZXh0ZW5zaW9u IG1hcCBmaWxlLg0KIyBCb3RoIGtpbmRzIG9mIHNldHRpbmdzIGNhbiBiZSBj b21iaW5lZCwgc2VwYXJhdGVkIGJ5IGNvbW1hIGFzIGluDQojICAgICAgICBT VUZGSVhfT1JERVI6UFJFQ0VERU5DRV9IRVJFLE5PX0JVSUxUSU4NCiMgTm90 ZTogVXNpbmcgUFJFQ0VERU5DRV9IRVJFIGhhcyBvbmx5IGFuIGVmZmVjdCBv biBTVUZGSVggcnVsZXMgdGhhdCBmb2xsb3cuDQojIE1vcmVvdmVyLCBpZiBH TE9CQUxfRVhURU5TSU9OX01BUCBvciBQRVJTT05BTF9FWFRFTlNJT05fTUFQ IGRpcmVjdGl2ZXMNCiMgYXJlIHVzZWQsIHRoZXkgc2hvdWxkIGNvbWUgKmJl Zm9yZSogYSBTVUZGSVhfT1JERVI6UFJFQ0VERU5DRV9IRVJFLg0KIw0KI1NV RkZJWF9PUkRFUjpQUkVDRURFTkNFX09USEVSDQoNCg0KLmgyIFNVRkZJWA0K IyBUaGUgU1VGRklYIGRlZmluaXRpb24gdGFrZXMgdGhlIGZvcm0gb2Y6DQoj DQojICAgIFNVRkZJWDo8ZmlsZSBleHRlbnNpb24+OjxtaW1lIHR5cGU+Ojxl bmNvZGluZz46PHF1YWxpdHk+OjxkZXNjcmlwdGlvbj4NCiMNCiMgQWxsIGZp ZWxkcyBhZnRlciA8bWltZSB0eXBlPiBhcmUgb3B0aW9uYWwgKGluY2x1ZGlu ZyB0aGUgc2VwYXJhdG9ycw0KIyBpZiBubyBtb3JlIGZpZWxkcyBmb2xsb3cp Lg0KIw0KIyAgICAgPGZpbGUgZXh0ZW5zaW9uPiB0cmFpbGluZyBlbmQgb2Yg ZmlsZSBuYW1lLiAgVGhpcyBuZWVkIG5vdCBzdHJpY3RseQ0KIyAgICAgICAg ICAgICAgICAgICAgICBiZSBhIGZpbGUgZXh0ZW5zaW9uIGFzIHVuZGVyc3Rv b2QgYnkgdGhlIE9TLCBhIGRvdA0KIyAgICAgICAgICAgICAgICAgICAgICBo YXMgdG8gYmUgZ2l2ZW4gZXhwbGljaXRseSBpZiBpdCBpcyBpbmRlbnRlZCwg Zm9yDQojICAgICAgICAgICAgICAgICAgICAgIHNvbWUgdXNlcyBvbmUgY291 bGQgZXZlbiBtYXRjaCBmdWxsIGZpbGVuYW1lcyBoZXJlLg0KIyAgICAgICAg ICAgICAgICAgICAgICBJbiBhZGRpdGlvbiwgdHdvIGZvcm1zIGFyZSBzcGVj aWFsOiAiKi4qIiBhbmQgIioiDQojICAgICAgICAgICAgICAgICAgICAgIHJl ZmVyIHRvIHRoZSBkZWZhdWx0cyBmb3Igb3RoZXJ3aXNlIHVubWF0Y2hlZCBm aWxlcw0KIyAgICAgICAgICAgICAgICAgICAgICAodGhlIGZpcnN0IGZvciBm aWxlbmFtZXMgd2l0aCBhIGRvdCBzb21ld2hlcmUgaW4NCiMgICAgICAgICAg ICAgICAgICAgICAgdGhlIG5hbWUsIHRoZSBzZWNvbmQgd2l0aG91dCksIHRo ZXNlIGFyZSBjdXJyZW50bHkNCiMgICAgICAgICAgICAgICAgICAgICAgbWFw cGVkIHRvIHRleHQvcGxhaW4gaW4gdGhlIChIVEluaXQuYykgYnVpbHRpbiBj b2RlLg0KIw0KIyAgICAgPG1pbWUgdHlwZT4gYSBNSU1FIGNvbnRlbnQgdHlw ZS4gIEl0IGNhbiBhbHNvIGNvbnRhaW4gYSBjaGFyc2V0DQojICAgICAgICAg ICAgICAgICBwYXJhbWV0ZXIsIHNlZSBleGFtcGxlIGJlbG93LiAgVGhpcyBz aG91bGQgYmUgZ2l2ZW4gaW4NCiMgICAgICAgICAgICAgICAgIGFsbCBsb3dl cmNhc2UsIHVzZSA8ZGVzY3JpcHRpb24+IGZvciBtb3JlIGZhbmN5IGxhYmVs cy4NCiMgICAgICAgICAgICAgICAgIEl0IGNhbiBiZSBsZWZ0IGVtcHR5IGlm IGFuIEhUVFAgc3R5bGUgZW5jb2RpbmcgaXMgZ2l2ZW4uDQojDQojIEZpZWxk cyBpbiBhZGRpdGlvbiB0byB0aGUgdXN1YWwgb25lcyBhcmUNCiMNCiMgICAg IDxlbmNvZGluZz4gIGVpdGhlciBhIG1haWwgc3R5bGUgdHJpdmlhbCBlbmNv ZGluZyAoN2JpdCwgOGJpdCwgYmluYXJ5KQ0KIyAgICAgICAgICAgICAgICAg d2hpY2ggY291bGQgYmUgdXNlZCBvbiBzb21lIHN5c3RlbXMgdG8gZGV0ZXJt aW5lIGhvdyB0bw0KIyAgICAgICAgICAgICAgICAgb3BlbiBsb2NhbCBmaWxl cyAoY3VycmVudGx5IGl0IGlzbid0KSwgYW5kIGlzIHVzZWQgdG8NCiMgICAg ICAgICAgICAgICAgIGRldGVybWluZSB0cmFuc2ZlciBtb2RlIGZvciBzb21l IEZUUCBVUkxzOyBvciBhIEhUVFAgc3R5bGUNCiMgICAgICAgICAgICAgICAg IGNvbnRlbnQgZW5jb2RpbmcgKGd6aXAgKGVxdWl2YWxlbnQgdG8geC1nemlw KSwgY29tcHJlc3MpDQojDQojICAgICA8cXVhbGl0eT4gYSBmbG9hdGluZyBw b2ludCBxdWFsaXR5IGZhY3RvciwgdXN1YWxseSBiZXR3ZWVuIDAuMCBhbmQg MS4wDQojICAgICAgICAgICAgICAgY3VycmVudGx5IHVudXNlZCBpbiBtb3N0 IHNpdHVhdGlvbnMuDQojDQojICAgICA8ZGVzY3JpcHRpb24+IHRleHQgdGhh dCBjYW4gYXBwZWFyIGluIEZUUCBkaXJlY3RvcnkgbGlzdGluZ3MsIGFuZCBp bg0KIyAgICAgICAgICAgICAgICAgICBsb2NhbCBkaXJlY3RvcnkgbGlzdGlu Z3MgKHNlZSBMSVNUX0ZPUk1BVCwgY29kZSAldCkNCiMNCiMgRm9yIGluc3Rh bmNlIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbiBtYXBzIHRoZQ0KIyBleHRl bnNpb24gIi5naWYiIHRvIHRoZSBtaW1lIHR5cGUgImltYWdlL2dpZiINCi5l eA0KIyAgICBTVUZGSVg6LmdpZjppbWFnZS9naWYNCiMNCiMgVGhlIGZvbGxv d2luZyBjYW4gYmUgdXNlZCBpZiB5b3UgaGF2ZSBhIGNvbnZlbnRpb24gdG8g bGFiZWwNCiMgSFRNTCBmaWxlcyBpbiBzb21lIGNoYXJhY3RlciBzZXQgdGhh dCBkaWZmZXJzIGZyb20geW91ciBsb2NhbA0KIyBkZWZhdWx0IChzZWUgYWxz byBBU1NVTUVfTE9DQUxfQ0hBUlNFVCkgd2l0aCBhIGRpZmZlcmVudA0KIyBl eHRlbnNpb24sIGhlcmUgIi5odG1sLXU4Ii4gIEl0IGFsc28gZGVtb25zdHJh dGVzIHVzZSBvZiB0aGUNCiMgZGVzY3JpcHRpb24gZmllbGQsIG5vdGUgZXh0 cmEgc2VwYXJhdG9ycyBmb3Igb21pdHRlZCBmaWVsZHM6DQouZXgNCiMgICAg U1VGRklYOi5odG1sLXU4OnRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Ojo6VVRG LTggSFRNTA0KIw0KIyBUaGUgZm9sbG93aW5nIHNob3dzIGhvdyBhIHN1ZmZp eCBjYW4gaW5kaWNhdGUgYSBjb21iaW5hdGlvbg0KIyBvZiBNSU1FIHR5cGUg YW5kIGNvbXByZXNzaW9uIG1ldGhvZC4gKFRoZSBlbmRpbmcgIi5wcy5neiIg c2hvdWxkDQojIGFscmVhZHkgYmUgcmVjb2duaXplZCBieSBkZWZhdWx0OyB0 aGUgZm9ybSBiZWxvdyBjb3VsZCBiZSB1c2VkIG9uDQojIHN5c3RlbXMgdGhh dCBkb24ndCBhbGxvdyBtb3JlIHRoYW4gb25lIGRvdCBpbiBmaWxlbmFtZXMu KQ0KLmV4DQojICAgIFNVRkZJWDoucHNfZ3o6YXBwbGljYXRpb24vcG9zdHNj cmlwdDpnemlwOjpnemlwJ2QgUG9zdHNjcmlwdA0KIw0KIyBUaGUgZm9sbG93 aW5nIGlzIG1lYW50IHRvIG1hdGNoIGEgZnVsbCBmaWxlbmFtZSAoYnV0IGNh biBtYXRjaA0KIyBhbnkgZmlsZSBlbmRpbmcgaW4gImNvcmUiLCBzbyBiZSBj YXJlZnVsKToNCi5leA0KIyAgICBTVUZGSVg6Y29yZTphcHBsaWNhdGlvbi94 LWNvcmUtZmlsZQ0KIw0KIyBmaWxlIHN1ZmZpeGVzIGFyZSBjYXNlIElOc2Vu c2l0aXZlIQ0KIw0KIyBUaGUgc3VmZml4IGRlZmluaXRpb25zIGxpc3RlZCBo ZXJlIGluIHRoZSBkZWZhdWx0IGx5bnguY2ZnIGZpbGUgYXJlDQojIHNpbWls YXIgdG8gdGhvc2Ugbm9ybWFsbHkgZXN0YWJsaXNoZWQgdmlhIHNyYy9IVElu aXQuYy4gIFlvdSBjYW4gY2hhbmdlDQojIHRoZSBkZWZhdWx0cyBieSBlZGl0 aW5nIHRoYXQgZmlsZSBvciBkaXNhYmxlIHRoZW0sIG9yIHZpYSB0aGUgZ2xv YmFsIG9yDQojIHBlcnNvbmFsIG1pbWUudHlwZXMgZmlsZXMgYXQgcnVuIHRp bWUgKGV4Y2VwdCBmb3IgdGhlIGFkZGl0aW9uYWwgZmllbGRzKS4NCiMgQXNz aWdubWVudHMgbWFkZSBoZXJlIGFyZSBvdmVycmlkZGVuIGJ5IGVudHJpZXMg aW4gdGhvc2UgZmlsZXMNCiMgdW5sZXNzIHByZWNlZGVkIHdpdGggYSBTVUZG SVhfT1JERVI6UFJFQ0VERU5DRV9IRVJFLg0KIw0KLmV4IDI5DQojU1VGRklY Oi5wczphcHBsaWNhdGlvbi9wb3N0c2NyaXB0DQojU1VGRklYOi5lcHM6YXBw bGljYXRpb24vcG9zdHNjcmlwdA0KI1NVRkZJWDouYWk6YXBwbGljYXRpb24v cG9zdHNjcmlwdA0KI1NVRkZJWDoucnRmOmFwcGxpY2F0aW9uL3J0Zg0KI1NV RkZJWDouc25kOmF1ZGlvL2Jhc2ljDQojU1VGRklYOi5naWY6aW1hZ2UvZ2lm DQojU1VGRklYOi5yZ2I6aW1hZ2UveC1yZ2INCiNTVUZGSVg6LnBuZzppbWFn ZS9wbmcNCiNTVUZGSVg6LnhibTppbWFnZS94LXhiaXRtYXANCiNTVUZGSVg6 LnRpZmY6aW1hZ2UvdGlmZg0KI1NVRkZJWDouanBnOmltYWdlL2pwZWcNCiNT VUZGSVg6LmpwZWc6aW1hZ2UvanBlZw0KI1NVRkZJWDoubXBnOnZpZGVvL21w ZWcNCiNTVUZGSVg6Lm1wZWc6dmlkZW8vbXBlZw0KI1NVRkZJWDoubW92OnZp ZGVvL3F1aWNrdGltZQ0KI1NVRkZJWDouaHF4OmFwcGxpY2F0aW9uL21hYy1i aW5oZXg0MA0KI1NVRkZJWDouYmluOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVh bQ0KI1NVRkZJWDouZXhlOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KI1NV RkZJWDoudGFyOmFwcGxpY2F0aW9uL3gtdGFyDQojU1VGRklYOi50Z3o6YXBw bGljYXRpb24veC10YXI6Z3ppcA0KI1NVRkZJWDouWjo6Y29tcHJlc3MNCiNT VUZGSVg6Lmd6OjpnemlwDQojU1VGRklYOi5iejI6YXBwbGljYXRpb24veC1i emlwMg0KI1NVRkZJWDouemlwOmFwcGxpY2F0aW9uL3ppcA0KI1NVRkZJWDou bHpoOmFwcGxpY2F0aW9uL3gtbHpoDQojU1VGRklYOi5saGE6YXBwbGljYXRp b24veC1saGENCiNTVUZGSVg6LmRtczphcHBsaWNhdGlvbi94LWRtcw0KI1NV RkZJWDouaHRtbDp0ZXh0L2h0bWwNCiNTVUZGSVg6LnR4dDp0ZXh0L3BsYWlu DQoNCg0KLmgyIFhMT0FESU1BR0VfQ09NTUFORA0KIyBWTVM6DQojID09PT0N CiMgWExPQURJTUFHRV9DT01NQU5EIHdpbGwgYmUgdXNlZCBhcyBhIGRlZmF1 bHQgaW4gc3JjL0hUSW5pdC5jDQojIGZvciB2aWV3aW5nIGltYWdlIGNvbnRl bnQgdHlwZXMgd2hlbiB0aGUgREVDVyRESVNQTEFZIGxvZ2ljYWwNCiMgaXMg c2V0LiAgTWFrZSBpdCB0aGUgZm9yZWlnbiBjb21tYW5kIGZvciB5b3VyIHN5 c3RlbSdzIFggaW1hZ2UNCiMgdmlld2VyIChjb21tb25seSwgInh2IikuICBJ dCBjYW4gYmUgYW55dGhpbmcgdGhhdCB3aWxsIGhhbmRsZSBHSUYsDQojIFRJ RkYgYW5kIG90aGVyIHBvcHVsYXIgaW1hZ2UgZm9ybWF0cy4gIEZyZWV3YXJl IHBvcnRzIG9mIHh2IGZvcg0KIyBWTVMgYXJlIGF2YWlsYWJsZSBpbiB0aGUg ZnRwOi8vZnRwLndrdS5lZHUvdm1zL3Vuc3VwcG9ydGVkIGFuZA0KIyBodHRw Oi8vd3d3Lm9wZW52bXMuZGlnaXRhbC5jb20vY2QvWFYzMTBBLyBzdWJkaXJl Y3Rvcmllcy4gIFlvdQ0KIyBtdXN0IGFsc28gaGF2ZSBhICIlcyIgZm9yIHRo ZSBmaWxlbmFtZS4gIFRoZSBkZWZhdWx0IGlzIGRlZmluZWQNCiMgaW4gdXNl cmRlZnMuaCBhbmQgY2FuIGJlIG92ZXJyaWRkZW4gaGVyZSwgb3IgdmlhIHRo ZSBnbG9iYWwgb3INCiMgcGVyc29uYWwgbWFpbGNhcCBmaWxlcyAoc2VlIGJl bG93KS4NCiMNCiMgTWFrZSB0aGlzIGVtcHR5IChidXQgbm8gY29tbWVudGVk IG91dCkgaWYgeW91IGRvbid0IGhhdmUgc3VjaCBhDQojIHZpZXdlciBvciBk b24ndCB3YW50IHRvIGRpc2FibGUgdGhlIGJ1aWx0LWluIGRlZmF1bHQgdmll d2VyDQojIG1hcHBpbmdzIGZvciBpbWFnZSB0eXBlcy4NCiMNClhMT0FESU1B R0VfQ09NTUFORDp4diAlcw0KDQojIFVuaXg6DQojID09PT09DQojIFhMT0FE SU1BR0VfQ09NTUFORCB3aWxsIGJlIHVzZWQgYXMgYSBkZWZhdWx0IGluIHNy Yy9IVEluaXQuYyBmb3INCiMgdmlld2luZyBpbWFnZSBjb250ZW50IHR5cGVz IHdoZW4gdGhlIERJU1BMQVkgZW52aXJvbm1lbnQgdmFyaWFibGUNCiMgaXMg c2V0LiAgTWFrZSBpdCB0aGUgZnVsbCBwYXRoIGFuZCBuYW1lIG9mIHRoZSB4 bGkgKGFsc28ga25vdyBhcw0KIyB4bG9hZGltYWdlIG9yIHh2aWV3KSBjb21t YW5kLCBvciBvdGhlciBpbWFnZSB2aWV3ZXIuICBJdCBjYW4gYmUNCiMgYW55 dGhpbmcgdGhhdCB3aWxsIGhhbmRsZSBHSUYsIFRJRkYgYW5kIG90aGVyIHBv cHVsYXIgaW1hZ2UgZm9ybWF0cw0KIyAoeGxpIGRvZXMpLiAgVGhlIGZyZWV3 YXJlIGRpc3RyaWJ1dGlvbiBvZiB4bGkgaXMgYXZhaWxhYmxlIGluIHRoZQ0K IyBmdHA6Ly9mdHAueC5vcmcvY29udHJpYiBzdWJkaXJlY3RvcnkuICBUaGUg c2hhcmV3YXJlLCB4diwgYWxzbyBpcw0KIyBzdWl0YWJsZS4gIFlvdSBtdXN0 IGFsc28gaGF2ZSBhICIlcyIgZm9yIHRoZSBmaWxlbmFtZTsgIiYiIGZvcg0K IyBiYWNrZ3JvdW5kIGlzIG9wdGlvbmFsLiAgVGhlIGRlZmF1bHQgaXMgZGVm aW5lZCBpbiB1c2VyZGVmcy5oIGFuZCBjYW4gYmUNCiMgb3ZlcnJpZGRlbiBo ZXJlLCBvciB2aWEgdGhlIGdsb2JhbCBvciBwZXJzb25hbCBtYWlsY2FwIGZp bGVzIChzZWUgYmVsb3cpLg0KIyBNYWtlIHRoaXMgZW1wdHkgKGJ1dCBub3Qg Y29tbWVudGVkIG91dCkgaWYgeW91IGRvbid0IGhhdmUgc3VjaCBhDQojIHZp ZXdlciBvciBkb24ndCB3YW50IHRvIGRpc2FibGUgdGhlIGJ1aWx0LWluIGRl ZmF1bHQgdmlld2VyDQojIG1hcHBpbmdzIGZvciBpbWFnZSB0eXBlcy4NCiMg Tm90ZSB0aGF0IG9wZW4gaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBmb3IgTmVY VCwgaW5zdGVhZCBvZiB0aGUNCiMgWExPQURJTUFHRV9DT01NQU5EIGRlZmlu aXRpb24uDQojIElmIHlvdSB1c2UgeGxpLCB5b3UgbWF5IHdhbnQgdG8gYWRk IHRoZSAtcXVpZXQgZmxhZy4NCiMNCiNYTE9BRElNQUdFX0NPTU1BTkQ6eGxp ICVzICYNCg0KLmgyIFZJRVdFUg0KIyBNSU1FIHR5cGVzIG1heSBiZSBhc3Np Z25lZCB0byBleHRlcm5hbCB2aWV3ZXJzIHVzaW5nDQojIHRoZSBWSUVXRVIg ZGVmaW5pdGlvbi4NCiMNCiMgTk9URTogaWYgeW91IGRvIG5vdCBkZWZpbmUg YSB2aWV3ZXIgdG8gYSBuZXcgTUlNRSB0eXBlDQojICAgICAgIHRoYXQgeW91 IGFzc2lnbmVkIGFib3ZlIHRoZW4gaXQgd2lsbCBiZSBzYXZlZCB0bw0KIyAg ICAgICBkaXNrIGJ5IGRlZmF1bHQuDQojICAgICAgIEl0IGlzIG5vcm1hbGx5 IHByZWZlcmFibGUgdG8gZGVmaW5lIG5ldyB2aWV3ZXJzIGluDQojICAgICAg IE1BSUxDQVAgZmlsZXMgKHNlZSBiZWxvdykgaW5zdGVhZCBvZiBoZXJlOiAg RGVmaW5pdGlvbnMNCiMgICAgICAgaGVyZSBhcmUgb3ZlcnJpZGRlbiBieSB0 aG9zZSBpbiBNQUlMQ0FQIGZpbGVzIGFuZCBldmVuDQojICAgICAgIGJ5IHNv bWUgYnVpbHQtaW4gZGVmYXVsdHMgaW4gc3JjL0hUSW5pdC5jLg0KIw0KIyBU aGUgVklFV0VSIGRlZmluaXRpb24gdGFrZXMgdGhlIGZvcm0gb2Y6DQojICAg IFZJRVdFUjo8bWltZSB0eXBlPjo8dmlld2VyIGNvbW1hbmQ+WzplbnZpcm9u bWVudF0NCiMgICAgICB3aGVyZSAtbWltZSB0eXBlIGlzIHRoZSBNSU1FIGNv bnRlbnQgdHlwZSBvZiB0aGUgZmlsZQ0KIwkgICAgIC12aWV3ZXIgY29tbWFu ZCBpcyBhIHN5c3RlbSBjb21tYW5kIHRoYXQgY2FuIGJlDQojICAgICAgICAg ICAgIHVzZWQgdG8gZGlzcGxheSB0aGUgZmlsZSB3aGVyZSAlcyBpcyByZXBs YWNlZA0KIyAgICAgICAgICAgICB3aXRoaW4gdGhlIGNvbW1hbmQgd2l0aCB0 aGUgcGh5c2ljYWwgZmlsZW5hbWUNCiMgICAgICAgICAgICAgKGUuZy4sICJn aG9zdHZpZXcgJXMiIGJlY29tZXMgImdob3N0dmlldyAvdG1wL3RlbXBwc2Zp bGUiKQ0KIyAgICAgICAgICAgIC1lbnZpcm9ubWVudCBpcyBvcHRpb25hbC4g IFRoZSBvbmx5IHZhbGlkIGtleXdvcmRzDQojICAgICAgICAgICAgIGFyZSBj dXJyZW50bHkgWFdJTkRPV1MgYW5kIE5PTl9YV0lORE9XUy4gIElmIHRoZSBY V0lORE9XUw0KIyAgICAgICAgICAgICBlbnZpcm9ubWVudCBpcyBzcGVjaWZp ZWQgdGhlbiB0aGUgdmlld2VyIHdpbGwgb25seSBiZQ0KIyAgICAgICAgICAg ICBkZWZpbmVkIHdoZW4gdGhlIHVzZXIgaGFzIHRoZSBlbnZpcm9ubWVudCB2 YXJpYWJsZSBESVNQTEFZDQojICAgICAgICAgICAgIChERUNXJERJU1BMQVkg b24gVk1TKSBkZWZpbmVkLiAgSWYgdGhlIE5PTl9YV0lORE9XUyBlbnZpcm9u bWVudA0KIyAgICAgICAgICAgICBpcyBzcGVjaWZpZWQgdGhlIHNwZWNpZmll ZCB2aWV3ZXIgd2lsbCBvbmx5IGJlIGRlZmluZWQgd2hlbiB0aGUNCiMgICAg ICAgICAgICAgdXNlciBET0VTIE5PVCBoYXZlIHRoZSBlbnZpcm9ubWVudCB2 YXJpYWJsZSBESVNQTEFZIGRlZmluZWQuDQojICBleGFtcGxlczoNCiMJCVZJ RVdFUjppbWFnZS9naWY6eGxpICVzOlhXSU5ET1dTDQojICAgICAgICAgICAg ICAgVklFV0VSOmltYWdlL2dpZjphc2NpaS12aWV3ICVzOk5PTl9YV0lORE9X Uw0KIyAgICAgICAgICAgICAgIFZJRVdFUjphcHBsaWNhdGlvbi9zdGFydC1l bG06ZWxtDQojDQojIFlvdSBtdXN0IHB1dCB0aGUgd2hvbGUgZGVmaW5pdGlv biBvbiBvbmUgbGluZS4NCiMNCiMgSWYgeW91IG11c3QgdXNlIGEgY29sb24g aW4gdGhlIHZpZXdlciBjb21tYW5kLCBwcmVjZWRlIGl0IHdpdGggYSBiYWNr c2xhc2ghDQojDQojIFRoZSBNSU1FX3R5cGU6dmlld2VyOlhXSU5ET1dTIGRl ZmluaXRpb25zIGxpc3RlZCBoZXJlIGluIHRoZSBseW54LmNmZw0KIyBmaWxl IGFyZSBhbW9uZyB0aG9zZSBlc3RhYmxpc2hlZCB2aWEgc3JjL0hUSW5pdC5j LiAgRm9yIHRoZSBpbWFnZSB0eXBlcywNCiMgSFRJbml0LmMgdXNlcyB0aGUg WExPQURJTUFHRV9DT01NQU5EIGRlZmluaXRpb24gaW4gdXNlcmRlZnMuaCBv ciBhYm92ZQ0KIyAob3BlbiBpcyB1c2VkIGZvciBOZVhUKS4gIFlvdSBjYW4g Y2hhbmdlIGFueSBvZiB0aGVzZSBkZWZhdWx0cyB2aWEgdGhlDQojIGdsb2Jh bCBvciBwZXJzb25hbCBtYWlsY2FwIGZpbGVzLiAgQXNzaWdubWVudHMgbWFk ZSBoZXJlIHdpbGwgYmUgb3ZlcnJpZGRlbg0KIyBieSBlbnRyaWVzIGluIHRo b3NlIGZpbGVzLg0KIw0KLmV4IDcNCiNWSUVXRVI6YXBwbGljYXRpb24vcG9z dHNjcmlwdDpnaG9zdHZpZXcgJXMmOlhXSU5ET1dTDQojVklFV0VSOmltYWdl L2dpZjp4bGkgJXMmOlhXSU5ET1dTDQojVklFV0VSOmltYWdlL3gteGJtOnhs aSAlcyY6WFdJTkRPV1MNCiNWSUVXRVI6aW1hZ2UvcG5nOnhsaSAlcyY6WFdJ TkRPV1MNCiNWSUVXRVI6aW1hZ2UvdGlmZjp4bGkgJXMmOlhXSU5ET1dTDQoj VklFV0VSOmltYWdlL2pwZWc6eGxpICVzJjpYV0lORE9XUw0KI1ZJRVdFUjp2 aWRlby9tcGVnOm1wZWdfcGxheSAlcyAmOlhXSU5ET1dTDQoNCg0KLmgyIEdM T0JBTF9NQUlMQ0FQDQouaDIgUEVSU09OQUxfTUFJTENBUA0KIyBUaGUgZ2xv YmFsIGFuZCBwZXJzb25hbCBNQUlMQ0FQIGZpbGVzIGFsbG93IHlvdSB0byBz cGVjaWZ5IGV4dGVybmFsDQojIHZpZXdlcnMgdG8gYmUgc3Bhd25lZCB3aGVu IEx5bnggZW5jb3VudGVycyBkaWZmZXJlbnQgTUlNRSB0eXBlcywgd2hpY2gN CiMgd2lsbCBvdmVycmlkZSBhbnkgb2YgdGhlIHN1ZmZpeCBtYXBzIGluIHRo aXMgKGx5bnguY2ZnKSBjb25maWd1cmF0aW9uDQojIGZpbGUsIG9yIGluIHNy Yy9IVEluaXQuYy4gIFNlZSBodHRwOi8vd3d3LmludGVybmljLm5ldC9yZmMv cmZjMTUyNC50eHQNCiMgYW5kIHRoZSBleGFtcGxlIG1haWxjYXAgZmlsZSBp biB0aGUgc2FtcGxlcyBzdWJkaXJlY3RvcnkuDQojDQojIFVuaXg6DQojID09 PT0NCiNHTE9CQUxfTUFJTENBUDovdXNyL2xvY2FsL2xpYi9tb3NhaWMvbWFp bGNhcA0KIyBWTVM6DQojID09PQ0KI0dMT0JBTF9NQUlMQ0FQOkx5bnhfRGly Om1haWxjYXANCiMNCiMgCVNvdWdodCBpbiB1c2VyJ3MgaG9tZSAoVW5peCkg b3Igc3lzJGxvZ2luIChWTVMpIGRpcmVjdG9yeS4NCiNQRVJTT05BTF9NQUlM Q0FQOi5tYWlsY2FwDQoNCg0KLmgxIEtleWJvYXJkIElucHV0DQoNCi5oMiBL RVlCT0FSRF9MQVlPVVQNCiMgSWYgeW91ciB0ZXJtaW5hbCAob3IgdGVybWlu YWwgZW11bGF0b3IsIG9yIG9wZXJhdGluZyBzeXN0ZW0pIGRvZXMgbm90DQoj IHN1cHBvcnQgOC1iaXQgaW5wdXQgKGF0IGFsbCBvciBpbiBlYXN5IHdheSks IHlvdSBjYW4gdXNlIEx5bnggdG8NCiMgZ2VuZXJhdGUgOC1iaXQgY2hhcmFj dGVycyBmcm9tIDctYml0IG9uZXMgb3V0cHV0IGJ5IHRlcm1pbmFsLg0KIw0K IyBDdXJyZW50bHkgYXZhaWxhYmxlIGtleWJvYXJkIGxheW91dHM6DQojCVJP VDEzJ2Qga2V5Ym9hcmQgbGF5b3V0DQojCUpDVUtFTiBDeXJpbGxpYywgZm9y IEFUIDEwMS1rZXkga2JkDQojCVlBV0VSVFkgQ3lyaWxsaWMsIGZvciBERUMg TEsyMDEga2JkDQojDQojIFRoaXMgZmVhdHVyZSBpcyBpZmRlZidkIHdpdGgg RVhQX0tFWUJPQVJEX0xBWU9VVC4NCiNLRVlCT0FSRF9MQVlPVVQ6SkNVS0VO IEN5cmlsbGljLCBmb3IgQVQgMTAxLWtleSBrYmQNCg0KDQouaDIgS0VZTUFQ DQojIEtleSByZW1hcHBpbmcgZGVmaW5pdGlvbnMhDQojDQojIFlvdSBtYXkg cmVkZWZpbmUgdGhlIGtleW1hcHBpbmcgb2YgYW55IGZ1bmN0aW9uIGluIEx5 bnggYnkNCiMgdXNpbmcgdGhlIEtFWU1BUCBvcHRpb24uICBUaGUgYmFzaWMg Zm9ybSBvZiBLRVlNQVAgaXM6DQojICBLRVlNQVA6PEtFWVNUUk9LRT46PExZ TlggRlVOQ1RJT04+DQojIChTZWUgYmVsb3cgZm9yIGFuIGV4dGVuZGVkIGZv cm1hdC4pDQojDQojIFlvdSBtdXN0IG1hcCB1cHBlciBhbmQgbG93ZXJjYXNl IGtleXMgc2VwYXJhdGVseS4NCiMNCiMgQSByZXByZXNlbnRhdGl2ZSBsaXN0 IG9mIGZ1bmN0aW9ucyBtYXBwZWQgdG8gdGhlaXIgZGVmYXVsdCBrZXlzIGlz DQojIHByb3ZpZGVkIGJlbG93LiAgQWxsIG9mIHRoZSBtYXBwaW5ncyBhcmUg Y29tbWVudGVkIG91dCBieSBkZWZhdWx0DQojIHNpbmNlIHRoZXkganVzdCBy ZXBlYXQgdGhlIGRlZmF1bHQgbWFwcGluZ3MsIGV4Y2VwdCBmb3IgVE9HR0xF X0hFTFANCiMgKHNlZSBiZWxvdykuICBTZWUgTFlLZXltYXAuYyBmb3IgdGhl IGNvbXBsZXRlIGtleSBtYXBwaW5nLiAgVXNlIHRoZQ0KIyAnSydleW1hcCBj b21tYW5kIHdoZW4gcnVubmluZyBMeW54IGZvciBhIGxpc3Qgb2YgdGhlIF9j dXJyZW50XyBrZXltYXBwaW5ncy4NCiMNCiMgKEhvd2V2ZXIsIGluIGNvbnRy YXN0IHRvIHRoZSBvdXRwdXQgb2YgJ0snIGNvbW1hbmQsDQojICdIJ2VscCAo bHlueF9oZWxwLyouaHRtbCBhbmQgbHlueF9oZWxwL2tleXN0cm9rZXMvKi5o dG1sIGZpbGVzKSBzaG93cw0KIyB0aGUgZGVmYXVsdCBtYXBwaW5nIHVubGVz cyB5b3UgY2hhbmdlIHRoYXQgZmlsZXMgbWFudWFsbHksDQojIHNvIHlvdSBh cmUgcmVzcG9uc2libGUgZm9yIHBvc3NpYmxlIGRldmlhdGlvbnMNCiMgd2hl biB5b3UgYXJlIGNoYW5naW5nIGFueSBLRVlNQVAgYmVsb3cpLg0KLm5mDQoj DQojIEtleXN0cm9rZXMgZm9yIHNwZWNpYWwga2V5cyBhcmUgcmVwcmVzZW50 ZWQgYnkgdGhlIGZvbGxvd2luZyBjb2RlczoNCiMgICAgICAgICBVcCBBcnJv dzogMHgxMDANCiMgICAgICAgRG93biBBcnJvdzogMHgxMDENCiMgICAgICBS aWdodCBBcnJvdzogMHgxMDINCiMgICAgICAgTGVmdCBBcnJvdzogMHgxMDMN CiMgICAgICAgIFBhZ2UgRG93bjogMHgxMDQNCiMgICAgICAgICAgUGFnZSBV cDogMHgxMDUNCiMgICAgICBLZXlwYWQgSG9tZTogMHgxMDYgKHNlZSBhbHNv IDB4MTBBKQ0KIyAgICAgICBLZXlwYWQgRW5kOiAweDEwNyAoc2VlIGFsc28g MHgxMEIpDQojICAgRnVuY3Rpb24ga2V5IDE6IDB4MTA4DQojIHZ0MTAwICAg SGVscCBLZXk6IDB4MTA4DQojIHZ0MTAwICAgICBEbyBLZXk6IDB4MTA5DQoj IHZ0MTAwICAgRmluZCBLZXk6IDB4MTBBIChUaGUga2V5IHdpdGggbGFiZWwg IkhvbWUiIG1heSBiZSB0cmVhdGVkIGFzIEZpbmQpDQojIHZ0MTAwIFNlbGVj dCBLZXk6IDB4MTBCIChUaGUga2V5IHdpdGggbGFiZWwgIkVuZCIgbWF5IGJl IHRyZWF0ZWQgYXMgU2VsZWN0KQ0KIyAgICAgICBJbnNlcnQgS2V5OiAweDEw Qw0KIyBSZW1vdmUgKERlbCkgS2V5OiAweDEwRA0KIyAgICAgIGlnbm9yZWQg a2V5ICAweDEwRSAocmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZSwgRE9fTk9U SElORykNCiMgQmFjayAoU2hpZnQpIFRhYjogMHgxMEYNCiMgICAgcmVzZXJ2 ZWQgY29kZSAgMHgxMUQgKHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2Ugd2l0 aCAtdXNlX21vdXNlKQ0KIyAgICByZXNlcnZlZCBjb2RlICAweDI5MCAocmVz ZXJ2ZWQgZm9yIGludGVybmFsIHVzZSB3aXRoIC11c2VfbW91c2UpDQojDQou ZmkNCiMgT3RoZXIgY29kZXMgbm90IGxpc3RlZCBhYm92ZSBtYXkgYmUgYXZh aWxhYmxlIGZvciBhZGRpdGlvbmFsIGtleXMsDQojIGRlcGVuZGluZyBvbiBv cGVyYXRpbmcgc3lzdGVtIGFuZCBsaWJyYXJpZXMgdXNlZCB0byBjb21waWxl IEx5bnguDQojIE9uIHNvbWUgc3lzdGVtcywgaWYgY29tcGlsZWQgd2l0aCBy ZWNlbnQgdmVyc2lvbnMgb2Ygc2xhbmcgb3IgbmN1cnNlcw0KIyAoaWYgbWFj cm8gVVNFX0tFWU1BUFMgd2FzIGluIGVmZmVjdCBkdXJpbmcgY29tcGlsYXRp b24pLCBhbiBhZGRpdGlvbmFsDQojIGxldmVsIG9mIGtleSBtYXBwaW5nIGlz IHN1cHBvcnRlZCB2aWEgYW4gZXh0ZXJuYWwgIi5seW54LWtleW1hcHMiIGZp bGUuDQojIFRoaXMgZmlsZSwgaWYgZm91bmQgaW4gdGhlIGhvbWUgZGlyZWN0 b3J5IGF0IHN0YXJ0dXAsIHdpbGwgYWx3YXlzIGJlDQojIHVzZWQgdW5kZXIg dGhvc2UgY29uZGl0aW9uczsgc2VlIGx5bngta2V5bWFwcyBkaXN0cmlidXRl ZCBpbiB0aGUgc2FtcGxlcw0KIyBzdWJkaXJlY3RvcnkgZm9yIGZ1cnRoZXIg ZXhwbGFuYXRpb24uICBOb3RlIHRoYXQgbWFwcGluZyB2aWENCiMgLmx5bngt a2V5bWFwcywgaWYgYXBwbGljYWJsZSwgaXMgYSBzdGVwIHRoYXQgbG9naWNh bGx5IGNvbWVzIGJlZm9yZSB0aGUNCiMgbWFwcGluZ3MgZG9uZSBoZXJlOiBL RVlNQVAgbWFwcyB0aGUgcmVzdWx0IG9mIHRoYXQgc3RlcCAod2hpY2ggc3Rp bGwNCiMgcmVwcmVzZW50cyBhIGtleSkgdG8gYSBmdW5jdGlvbiAod2hpY2gg cmVwcmVzZW50cyBhbiBhY3Rpb24gdGhhdCBMeW54DQojIHNob3VsZCBwZXJm b3JtKS4NCiMNCi5uZg0KI0tFWU1BUDoweDVDOlNPVVJDRQkJIyBUb2dnbGUg c291cmNlIHZpZXdpbmcgbW9kZSAoc2hvdyBIVE1MIHNvdXJjZSkNCiNLRVlN QVA6XlI6UkVMT0FECQkjIFJlbG9hZCB0aGUgY3VycmVudCBkb2N1bWVudCBh bmQgcmVkaXNwbGF5DQojS0VZTUFQOnE6UVVJVAkJCSMgQXNrIHRoZSB1c2Vy IHRvIHF1aXQNCiNLRVlNQVA6UTpBQk9SVAkJCSMgUXVpdCB3aXRob3V0IHZl cmlmaWNhdGlvbg0KI0tFWU1BUDoweDIwOk5FWFRfUEFHRQkJIyBNb3ZlIGRv d24gdG8gbmV4dCBwYWdlDQojS0VZTUFQOi06UFJFVl9QQUdFCQkjIE1vdmUg dXAgdG8gcHJldmlvdXMgcGFnZQ0KI0tFWU1BUDpeUDpVUF9UV08JCSMgTW92 ZSBkaXNwbGF5IHVwIHR3byBsaW5lcw0KI0tFWU1BUDoweDEwQzpVUF9UV08J CSMgRnVuY3Rpb24ga2V5IEluc2VydCAtIE1vdmUgZGlzcGxheSB1cCB0d28g bGluZXMNCiNLRVlNQVA6Xk46RE9XTl9UV08JCSMgTW92ZSBkaXNwbGF5IGRv d24gdHdvIGxpbmVzDQojS0VZTUFQOjB4MTBEOkRPV05fVFdPCQkjIEZ1bmN0 aW9uIGtleSBSZW1vdmUgLSBNb3ZlIGRpc3BsYXkgZG93biB0d28gbGluZXMN CiNLRVlNQVA6KDpVUF9IQUxGCQkjIE1vdmUgZGlzcGxheSB1cCBoYWxmIGEg cGFnZQ0KI0tFWU1BUDopOkRPV05fSEFMRgkJIyBNb3ZlIGRpc3BsYXkgZG93 biBoYWxmIGEgcGFnZQ0KI0tFWU1BUDpeVzpSRUZSRVNICQkjIFJlZnJlc2gg dGhlIHNjcmVlbg0KI0tFWU1BUDpeQTpIT01FCQkJIyBHbyB0byB0b3Agb2Yg Y3VycmVudCBkb2N1bWVudA0KI0tFWU1BUDoweDEwNjpIT01FCQkjIEtleXBh ZCBIb21lIC0gR28gdG8gdG9wIG9mIGN1cnJlbnQgZG9jdW1lbnQNCiNLRVlN QVA6MHgxMEE6SE9NRQkJIyBGdW5jdGlvbiBrZXkgRmluZCAtIEdvIHRvIHRv cCBvZiBjdXJyZW50IGRvY3VtZW50DQojS0VZTUFQOl5FOkVORAkJCSMgR28g dG8gYm90dG9tIG9mIGN1cnJlbnQgZG9jdW1lbnQNCiNLRVlNQVA6MHgxMDc6 RU5ECQkjIEtleXBhZCBFbmQgLSBHbyB0byBib3R0b20gb2YgY3VycmVudCBk b2N1bWVudA0KI0tFWU1BUDoweDEwQjpFTkQJCSMgRnVuY3Rpb24ga2V5IFNl bGVjdCAtIEdvIHRvIGJvdHRvbSBvZiBjdXJyZW50IGRvY3VtZW50DQojS0VZ TUFQOjB4MTAwOlBSRVZfTElOSwkJIyBNb3ZlIHRvIHRoZSBwcmV2aW91cyBs aW5rIG9yIHBhZ2UNCiNLRVlNQVA6MHgxMDE6TkVYVF9MSU5LCQkjIE1vdmUg dG8gdGhlIG5leHQgbGluayBvciBwYWdlDQojS0VZTUFQOjB4MTBGOkZBU1RC QUNLV19MSU5LIAkjIEJhY2sgVGFiIC0gTW92ZSB0byBwcmV2aW91cyBsaW5r IG9yIHRleHQgYXJlYQ0KI0tFWU1BUDpeSTpGQVNURk9SV19MSU5LCSMgVGFi IGtleSAtIE1vdmUgYWx3YXlzIHRvIG5leHQgbGluayBvciB0ZXh0IGFyZWEN CiNLRVlNQVA6XjpGSVJTVF9MSU5LCQkjIE1vdmUgdG8gdGhlIGZpcnN0IGxp bmsgb24gbGluZQ0KI0tFWU1BUDokOkxBU1RfTElOSwkJIyBNb3ZlIHRvIHRo ZSBsYXN0IGxpbmsgb24gbGluZQ0KI0tFWU1BUDo8OlVQX0xJTksJCSMgTW92 ZSB0byB0aGUgbGluayBhYm92ZQ0KI0tFWU1BUDo+OkRPV05fTElOSwkJIyBN b3ZlIHRvIHRoZSBsaW5rIGJlbG93DQojS0VZTUFQOjB4N0Y6SElTVE9SWQkJ IyBTaG93IHRoZSBoaXN0b3J5IGxpc3QNCiNLRVlNQVA6MHgwODpISVNUT1JZ CQkjIFNob3cgdGhlIGhpc3RvcnkgbGlzdA0KI0tFWU1BUDoweDEwMzpQUkVW X0RPQwkJIyBSZXR1cm4gdG8gdGhlIHByZXZpb3VzIGRvY3VtZW50IGluIGhp c3Rvcnkgc3RhY2sNCiNLRVlNQVA6MHgxMDI6QUNUSVZBVEUJCSMgU2VsZWN0 IHRoZSBjdXJyZW50IGxpbmsNCiNLRVlNQVA6MHgxMDk6QUNUSVZBVEUJCSMg RnVuY3Rpb24ga2V5IERvIC0gU2VsZWN0IHRoZSBjdXJyZW50IGxpbmsNCiNL RVlNQVA6ZzpHT1RPCQkJIyBHb3RvIGEgcmFuZG9tIFVSTA0KI0tFWU1BUDpH OkVDR09UTwkJIyBFZGl0IHRoZSBjdXJyZW50IGRvY3VtZW50J3MgVVJMIGFu ZCBnbyB0byBpdA0KI0tFWU1BUDpIOkhFTFAJCQkjIFNob3cgZGVmYXVsdCBo ZWxwIHNjcmVlbg0KI0tFWU1BUDoweDEwODpEV0lNSEVMUAkJIyBGdW5jdGlv biBrZXkgSGVscCAtIFNob3cgYSBoZWxwIHNjcmVlbg0KI0tFWU1BUDppOklO REVYCQkJIyBTaG93IGRlZmF1bHQgaW5kZXgNCiMqKiogRWRpdCBGT1JNX0xJ TktfKiBtZXNzYWdlcyBpbiBMWU1lc3NhZ2VzX2VuLmggaWYgeW91IGNoYW5n ZSBOT0NBQ0hFICoqKg0KI0tFWU1BUDp4Ok5PQ0FDSEUJCSMgRm9yY2Ugc3Vi bWlzc2lvbiBvZiBmb3JtIG9yIGxpbmsgd2l0aCBuby1jYWNoZQ0KIyoqKiBE byBub3QgY2hhbmdlIElOVEVSUlVQVCBmcm9tICd6JyAmICdaJyAqKioNCiNL RVlNQVA6ejpJTlRFUlJVUFQJCSMgSW50ZXJydXB0IG5ldHdvcmsgdHJhbnNt aXNzaW9uDQojS0VZTUFQOm06TUFJTl9NRU5VCQkjIFJldHVybiB0byB0aGUg bWFpbiBtZW51DQojS0VZTUFQOm86T1BUSU9OUwkJIyBTaG93IHRoZSBvcHRp b25zIG1lbnUNCiNLRVlNQVA6aTpJTkRFWF9TRUFSQ0gJCSMgU2VhcmNoIGEg c2VydmVyIGJhc2VkIGluZGV4DQojS0VZTUFQOi86V0hFUkVJUwkJIyBGaW5k IGEgc3RyaW5nIHdpdGhpbiB0aGUgY3VycmVudCBkb2N1bWVudA0KI0tFWU1B UDpuOk5FWFQJCQkjIEZpbmQgbmV4dCBvY2N1cnJlbmNlIG9mIHN0cmluZyB3 aXRoaW4gZG9jdW1lbnQNCiNLRVlNQVA6YzpDT01NRU5UCQkjIENvbW1lbnQg dG8gdGhlIGF1dGhvciBvZiB0aGUgY3VycmVudCBkb2N1bWVudA0KI0tFWU1B UDpDOkNIRElSCQkJIyBDaGFuZ2UgY3VycmVudCBkaXJlY3RvcnkNCiNLRVlN QVA6ZTpFRElUCQkJIyBFZGl0IGN1cnJlbnQgZG9jdW1lbnQgb3IgZm9ybSdz IHRleHRhcmVhIChjYWxsOiBeVmUpDQojS0VZTUFQOkU6RUxHT1RPCQkjIEVk aXQgdGhlIGN1cnJlbnQgbGluaydzIFVSTCBvciBBQ1RJT04gYW5kIGdvIHRv IGl0DQojS0VZTUFQOj06SU5GTwkJCSMgU2hvdyBpbmZvIGFib3V0IGN1cnJl bnQgZG9jdW1lbnQNCiNLRVlNQVA6cDpQUklOVAkJCSMgU2hvdyBwcmludCBv cHRpb25zDQojS0VZTUFQOmE6QUREX0JPT0tNQVJLCQkjIEFkZCBjdXJyZW50 IGRvY3VtZW50IHRvIGJvb2ttYXJrIGxpc3QNCiNLRVlNQVA6djpWSUVXX0JP T0tNQVJLCQkjIFZpZXcgdGhlIGJvb2ttYXJrIGxpc3QNCiNLRVlNQVA6VjpW TElOS1MJCSMgTGlzdCBsaW5rcyB2aXNpdGVkIGR1cmluZyB0aGUgY3VycmVu dCBMeW54IHNlc3Npb24NCiNLRVlNQVA6ITpTSEVMTAkJCSMgU3Bhd24gZGVm YXVsdCBzaGVsbA0KI0tFWU1BUDpkOkRPV05MT0FECQkjIERvd25sb2FkIGN1 cnJlbnQgbGluaw0KI0tFWU1BUDpqOkpVTVAJCQkjIEp1bXAgdG8gYSBwcmVk ZWZpbmVkIHRhcmdldA0KI0tFWU1BUDprOktFWU1BUAkJIyBEaXNwbGF5IHRo ZSBjdXJyZW50IGtleSBtYXANCiNLRVlNQVA6bDpMSVNUCQkJIyBMaXN0IHRo ZSByZWZlcmVuY2VzIChsaW5rcykgaW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQN CiNLRVlNQVA6IzpUT09MQkFSCQkjIEdvIHRvIHRoZSBUb29sYmFyIG9yIEJh bm5lciBpbiB0aGUgY3VycmVudCBkb2N1bWVudA0KI0tFWU1BUDpeVDpUUkFD RV9UT0dHTEUJCSMgVG9nZ2xlIGRldGFpbGVkIHRyYWNpbmcgZm9yIGRlYnVn Z2luZw0KI0tFWU1BUDo7OlRSQUNFX0xPRwkJIyBWaWV3IHRyYWNlIGxvZyBp ZiBhdmFpbGFibGUgZm9yIHRoZSBjdXJyZW50IHNlc3Npb24NCiNLRVlNQVA6 KjpJTUFHRV9UT0dHTEUJCSMgVG9nZ2xlIGluY2x1c2lvbiBvZiBsaW5rcyBm b3IgYWxsIGltYWdlcw0KI0tFWU1BUDpbOklOTElORV9UT0dHTEUJCSMgVG9n Z2xlIHBzZXVkby1BTFRzIGZvciBpbmxpbmVzIHdpdGggbm8gQUxUIHN0cmlu Zw0KI0tFWU1BUDpdOkhFQUQJCQkjIFNlbmQgYSBIRUFEIHJlcXVlc3QgZm9y IGN1cnJlbnQgZG9jdW1lbnQgb3IgbGluaw0KIyoqKiBNdXN0IGJlIGNvbXBp bGVkIHdpdGggVVNFX0VYVEVSTkFMUyB0byBlbmFibGUgRVhURVJOICoqKg0K I0tFWU1BUDouOkVYVEVSTgkJIyBSdW4gZXh0ZXJuYWwgcHJvZ3JhbSB3aXRo IHVybA0KIyoqKiBFc2NhcGluZyBmcm9tIHRleHQgaW5wdXQgZmllbGRzIHdp dGggXlYgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGlzOiAqKioNCiNLRVlNQVA6 XlY6U1dJVENIX0RURAkJIyBUb2dnbGUgYmV0d2VlbiBTb3J0YVNHTUwgYW5k IFRhZ1NvdXAgSFRNTCBwYXJzaW5nDQojS0VZTUFQOjB4MDA6RE9fTk9USElO RwkJIyBEb2VzIG5vdGhpbmcgKGlnbm9yZSB0aGlzIGtleSkNCiNLRVlNQVA6 MHgxMEU6RE9fTk9USElORwkjIERvZXMgbm90aGluZyAoaWdub3JlIHRoaXMg a2V5KQ0KIw0KLmZpDQojIEluIGFkZGl0aW9uIHRvIHRoZSBiaW5kaW5ncyBh dmFpbGFibGUgYnkgZGVmYXVsdCwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMN CiMgYXJlIG5vdCBkaXJlY3RseSBtYXBwZWQgdG8gYW55IGtleXMgYnkgZGVm YXVsdCwgYWx0aG91Z2ggc29tZSBvZiB0aGVtIG1heQ0KIyBiZSBtYXBwZWQg aW4gc3BlY2lmaWMgbGluZS1lZGl0b3IgYmluZGluZ3MgKGVmZmVjdGl2ZSB3 aGlsZSBpbiB0ZXh0IGlucHV0DQojIGZpZWxkcyk6DQoubmYNCiMNCiNLRVlN QVA6Pz8/OlJJR0hUX0xJTksJCSMgTW92ZSB0byB0aGUgbGluayB0byB0aGUg cmlnaHQNCiNLRVlNQVA6Pz8/OkxFRlRfTElOSwkJIyBNb3ZlIHRvIHRoZSBs aW5rIHRvIHRoZSBsZWZ0DQojS0VZTUFQOj8/PzpMUE9TX1BSRVZfTElOSwkj IExpa2UgUFJFVl9MSU5LLCBsYXN0IGNvbHVtbiBwb3MgaWYgZm9ybSBpbnB1 dA0KI0tFWU1BUDo/Pz86TFBPU19ORVhUX0xJTksJIyBMaWtlIE5FWFRfTElO SywgbGFzdCBjb2x1bW4gcG9zIGlmIGZvcm0gaW5wdXQNCiMqKiogT25seSB1 c2VmdWwgaW4gZm9ybSB0ZXh0IGZpZWxkcyAsIG5lZWQgUEFTUyBvciBwcmVm aXhpbmcgd2l0aCBeVjogKioqDQojS0VZTUFQOj8/PzpEV0lNSEVMUAkJIyBE aXNwbGF5IGhlbHAgcGFnZSB0aGF0IG1heSBkZXBlbmQgb24gY29udGV4dA0K I0tFWU1BUDo/Pz86RFdJTUVESVQJCSMgVXNlIGV4dGVybmFsIGVkaXRvciBm b3IgY29udGV4dC1kZXBlbmRlbnQgcHVycG9zZQ0KIyoqKiBPbmx5IHVzZWZ1 bCBpbiBhIGZvcm0gdGV4dGFyZWEsIG5lZWQgUEFTUyBvciBwcmVmaXhpbmcg d2l0aCBeVjogKioqDQojS0VZTUFQOj8/PzpFRElUVEVYVEFSRUEJIyB1c2Ug ZXh0ZXJuYWwgZWRpdG9yIHRvIGVkaXQgYSBmb3JtIHRleHRhcmVhDQojS0VZ TUFQOj8/PzpHUk9XVEVYVEFSRUEJIyBBZGQgc29tZSBibGFuayBsaW5lcyB0 byBib3R0b20gb2YgdGV4dGFyZWENCiNLRVlNQVA6Pz8/OklOU0VSVEZJTEUJ CSMgSW5zZXJ0IGZpbGUgaW50byBhIHRleHRhcmVhIChqdXN0IGFib3ZlIGN1 cnNvcikNCiMqKiogT25seSB1c2VmdWwgd2l0aCBkaXJlZCBzdXBwb3J0IGFu ZCBPS19JTlNUQUxMOiAqKioNCiNLRVlNQVA6Pz8/OklOU1RBTEwJCSMgaW5z dGFsbCAoaS5lLiBjb3B5KSBsb2NhbCBmaWxlcyB0byBuZXcgbG9jYXRpb24N Ci5maQ0KIw0KIyBJZiBUT0dHTEVfSEVMUCBpcyBtYXBwZWQsIGluIG5vdmlj ZSBtb2RlIHRoZSBzZWNvbmQgaGVscCBtZW51IGxpbmUNCiMgY2FuIGJlIHRv Z2dsZWQgYW1vbmcgTk9WSUNFX0xJTkVfVFdPX0EsIF9CLCBhbmQgX0MsIGFz IGRlZmluZWQgaW4NCiMgTFlNZXNzYWdlc19lbi5oICBPdGhlcndpc2UsIGl0 IHdpbGwgYmUgTk9WSUNFX0xJTkVfVFdPLg0KIw0KI0tFWU1BUDpPOlRPR0dM RV9IRUxQCQkjIFNob3cgb3RoZXIgY29tbWFuZHMgaW4gdGhlIG5vdmljZSBo ZWxwIG1lbnUNCiMNCiMgS0VZTUFQIGxpbmVzIGNhbiBoYXZlIG9uZSBvciB0 d28gYWRkaXRpb25hbCBmaWVsZHMuICBUaGUgZXh0ZW5kZWQgZm9ybWF0IGlz DQojICBLRVlNQVA6PEtFWVNUUk9LRT46WzxNQUlOIExZTlggRlVOQ1RJT04+ XTo8T1RIRVIgQklORElORz5bOjxTRUxFQ1Q+XQ0KIw0KIyBJZiB0aGUgYWRk aXRpb25hbCBmaWVsZCBPVEhFUiBCSU5ESU5HIHNwZWNpZmllcyBESVJFRCwg dGhlbiB0aGUgZnVuY3Rpb24gaXMNCiMgbWFwcGVkIGluIHRoZSBvdmVycmlk ZSB0YWJsZSB1c2VkIG9ubHkgaW4gRElSRUQgbW9kZS4gIFRoaXMgaXMgb25s eSB2YWxpZA0KIyBpZiBseW54IHdhcyBjb21waWxlZCB3aXRoIGRpcmVkIHN1 cHBvcnQgYW5kIE9LX09WRVJSSURFIGRlZmluZWQuICBBDQojIE1BSU4gTFlO WCBGVU5DVElPTiBtdXN0IGJlIGdpdmVuIChpdCBzaG91bGQgb2YgY291cnNl IGJlIG9uZSB0aGF0IG1ha2VzDQojIHNlbnNlIGluIERpcmVkIG1vZGUpLCBh bmQgU0VMRUNUIGlzIG1lYW5pbmdsZXNzLiAgRGVmYXVsdCBidWlsdC1pbiBv dmVycmlkZQ0KIyBtYXBwaW5ncyBhcmUNCiMNCiNLRVlNQVA6XlU6UFJFVl9E T0M6RElSRUQJIyBSZXR1cm4gdG8gdGhlIHByZXZpb3VzIGRvY3VtZW50DQoj S0VZTUFQOi46VEFHX0xJTks6RElSRUQJIyBUYWcgYSBmaWxlIG9yIGRpcmVj dG9yeSBmb3IgbGF0ZXIgYWN0aW9uDQojS0VZTUFQOmM6Q1JFQVRFOkRJUkVE CQkjIENyZWF0ZSBhIG5ldyBmaWxlIG9yIGRpcmVjdG9yeQ0KI0tFWU1BUDpD OkNIRElSOkRJUkVECQkjIGNoYW5nZSBjdXJyZW50IGRpcmVjdG9yeQ0KI0tF WU1BUDpmOkRJUkVEX01FTlU6RElSRUQJIyBEaXNwbGF5IGEgbWVudSBvZiBm aWxlIG9wZXJhdGlvbnMNCiNLRVlNQVA6bTpNT0RJRlk6RElSRUQJCSMgTW9k aWZ5IG5hbWUgb3IgbG9jYXRpb24gb2YgYSBmaWxlIG9yIGRpcmVjdG9yeQ0K I0tFWU1BUDpyOlJFTU9WRTpESVJFRAkJIyBSZW1vdmUgZmlsZXMgb3IgZGly ZWN0b3JpZXMNCiNLRVlNQVA6dDpUQUdfTElOSzpESVJFRAkjIFRhZyBhIGZp bGUgb3IgZGlyZWN0b3J5IGZvciBsYXRlciBhY3Rpb24NCiNLRVlNQVA6dTpV UExPQUQ6RElSRUQJCSMgU2hvdyBtZW51IG9mICJVcGxvYWQgT3B0aW9ucyIN CiMNCiMgSWYgdGhlIE9USEVSIEJJTkRJTkcgZmllbGQgZG9lcyBub3Qgc3Bl Y2lmeSBESVJFRCwgdGhlbiBpdCBpcyB0YWtlbiBhcyBhDQojIGxpbmUtZWRp dG9yIGFjdGlvbi4gIEl0IGlzIHBvc3NpYmxlIHRvIGtlZXAgdGhlIE1BSU4g TFlOWCBGVU5DVElPTiBmaWVsZA0KIyBlbXB0eSBpbiB0aGF0IGNhc2UsIGZv ciBjaGFuZ2luZyBvbmx5IHRoZSBsaW5lLWVkaXRpbmcgYmVoYXZpb3IuDQoj IElmIGFsdGVybmF0aXZlIGxpbmUgZWRpdCBzdHlsZXMgYXJlIGNvbXBpbGVk IGluLCBhbmQgbW9kaWZ5aW5nIGEga2V5J3MNCiMgbGluZS1lZGl0b3IgYmlu ZGluZyBvbiBhIHBlciBzdHlsZSBiYXNpcyBpcyBwb3NzaWJsZSwgdGhlbiBT RUxFQ1QgY2FuIGJlDQojIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBzdHlsZXMg YXJlIGFmZmVjdGVkLiAgQnkgZGVmYXVsdCwgb3IgaWYgU0VMRUNUIGlzDQoj IDAsIGFsbCBsaW5lIGVkaXQgc3R5bGVzIGFyZSBhZmZlY3RlZC4gIElmIFNF TEVDVCBpcyBhIHBvc2l0aXZlIGludGVnZXINCiMgbnVtYmVyLCBvbmx5IHRo ZSBiaW5kaW5nIGZvciB0aGUgbnVtYmVyZWQgc3R5bGUgaXMgY2hhbmdlZCAo bnVtYmVyaW5nDQojIGlzIGluIHRoZSBvcmRlciBpbiB3aGljaCBzdHlsZXMg YXJlIHNob3duIGluIHRoZSBPcHRpb25zIE1lbnUsIHN0YXJ0aW5nDQojIHdp dGggMSBmb3IgdGhlIERlZmF1bHQgc3R5bGUpLiAgSWYgU0VMRUNUIGlzIG5l Z2F0aXZlICgtbiksIGFsbCBzdHlsZXMNCiMgZXhjZXB0IG4gYXJlIGFmZmVj dGVkLg0KLm5mDQojDQojICBOT1AJCSMgRG8gTm90aGluZw0KIyAgQUJPUlQJ IyBJbnB1dCBjYW5jZWxsZWQNCiMNCiMgIEJPTAkJIyBHbyB0byBiZWdpbiBv ZiBsaW5lDQojICBFT0wJCSMgR28gdG8gZW5kICAgb2YgbGluZQ0KIyAgRk9S VwkJIyBDdXJzb3IgZm9yd2FyZHMNCiMgIEJBQ0sJCSMgQ3Vyc29yIGJhY2t3 YXJkcw0KIyAgRk9SV1cJIyBXb3JkIGZvcndhcmQNCiMgIEJBQ0tXCSMgV29y ZCBiYWNrDQojDQojICBERUxOCQkjIERlbGV0ZSBuZXh0L2N1cnIgY2hhcg0K IyAgREVMUAkJIyBEZWxldGUgcHJldiAgICAgIGNoYXINCiMgIERFTE5XCSMg RGVsZXRlIG5leHQgd29yZA0KIyAgREVMUFcJIyBEZWxldGUgcHJldiB3b3Jk DQojICBERUxCTAkjIERlbGV0ZSBiYWNrIHRvIEJPTA0KIyAgREVMRUwJIyBE ZWxldGUgdGhydSBFT0wNCiMgIEVSQVNFCSMgRXJhc2UgdGhlIGxpbmUNCiMg IExPV0VSCSMgTG93ZXIgY2FzZSB0aGUgbGluZQ0KIyAgVVBQRVIJIyBVcHBl ciBjYXNlIHRoZSBsaW5lDQojDQojICBMS0NNRAkjIEluIGZpZWxkczogSW52 b2tlIGtleSBjb21tYW5kIHByb21wdCAoZGVmYXVsdCBmb3IgXlYpDQojICBQ QVNTCQkjIEluIGZpZWxkczogaGFuZGxlIGFzIG5vbi1saW5lZWRpdCBrZXk7 IGluIHByb21wdHM6IGlnbm9yZQ0KIw0KLmZpDQojIE1vZGlmeSBmb2xsb3dp bmcga2V5IChwcmVmaXhpbmcgb25seSB3b3JrcyB3aXRoaW4gbGluZS1lZGl0 aW5nLCBlZGl0IGFjdGlvbnMNCiMgb2Ygc29tZSByZXN1bHRpbmcgcHJlZml4 ZWQga2V5cyBhcmUgYnVpbHQtaW4sIHNlZSBMaW5lIEVkaXRvciBoZWxwIHBh Z2VzKQ0KIyAgU0VUTTEJIyBTZXQgbW9kaWZpZXIgMSBmbGFnIChkZWZhdWx0 IGZvciBeWCAtIGtleSBwcmVmaXgpDQojICBTRVRNMgkjIFNldCBtb2RpZmll ciAyIGZsYWcgKGFub3RoZXIga2V5IHByZWZpeCAtIHNhbWUgZWZmZWN0KQ0K Iw0KIyBNYXkgbm90IGFsd2F5cyBiZSBjb21waWxlZCBpbjoNCi5uZg0KIw0K IyAgVFBPUwkJIyBUcmFuc3Bvc2UgY2hhcmFjdGVycw0KIyAgU0VUTUFSSwkj IGVtYWNzLWxpa2Ugc2V0LW1hcmstY29tbWFuZA0KIyAgWFBNQVJLCSMgZW1h Y3MtbGlrZSBleGNoYW5nZS1wb2ludC1hbmQtbWFyaw0KIyAgS0lMTFJFRwkj IGVtYWNzLWxpa2Uga2lsbC1yZWdpb24NCiMgIFlBTksJCSMgZW1hY3MtbGlr ZSB5YW5rDQojICBTV01BUAkjIFN3aXRjaCBpbnB1dCBrZXltYXANCiMgIFBB U1RFCSMgQ2xpcEJvYXJkIHRvIEx5bnggLSBXaW5kb3dzIEV4dGVuc2lvbg0K Iw0KLmZpDQojIE1heSB3b3JrIGRpZmZlcmVudGx5IGZyb20gZXhwZWN0ZWQg aWYgbm90IGJvdW5kIHRvIHRoZWlyIGV4cGVjdGVkIGtleXM6DQoubmYNCiMN CiMgIENIQVIJCSMgSW5zZXJ0IHByaW50YWJsZSBjaGFyIChkZWZhdWx0IGZv ciBhbGwgQVNDSUkgcHJpbnRhYmxlKQ0KIyAgRU5URVIJIyBJbnB1dCBjb21w bGV0ZSwgcmV0dXJuIGNoYXIvbHlueGtleWNvZGUgKGZvciBSRVRVUk4vRU5U RVIpDQojICBUQUIJCSMgSW5wdXQgY29tcGxldGUsIHJldHVybiBUQUIgKGZv ciBBU0NJSSBUQUIgY2hhciBeSSkNCiMNCi5maQ0KIyBJbnRlcm5hbCB1c2Us IHByb2JhYmx5IG5vdCB1c2VmdWwgZm9yIGJpbmRpbmcsIGxpc3RlZCBmb3Ig Y29tcGxldGVuZXNzOg0KLm5mDQojDQojICBVTk1PRAkjIEZhbGwgYmFjayB0 byBuby1tb2RpZmllciBjb21tYW5kDQojICBBSVgJCSMgSGV4IDk3DQojICBD MUNIQVIJIyBJbnNlcnQgQzEgY2hhciBpZiBwcmludGFibGUNCiMNCi5maQ0K IyBJZiBPVEhFUiBCSU5ESU5HIHNwZWNpZmllcyBQQVNTLCB0aGVuIGlmIHRo ZSBrZXkgaXMgcHJlc3NlZCBpbiBhIHRleHQgaW5wdXQNCiMgZmllbGQgaXQg aXMgcGFzc2VkIGJ5IHRoZSBidWlsdC1pbiBsaW5lLWVkaXRvciB0byBub3Jt YWwgS0VZTUFQIGhhbmRsaW5nLA0KIyBpLmUuIHRoaXMgZmxhZyBhY3RzIGxp a2UgYW4gaW1wbGllZCBeViBlc2NhcGUgKGFsd2F5cyBvdmVycmlkZXMgbGlu ZS1lZGl0b3INCiMgYmVoYXZpb3Igb2YgdGhlIGtleSkuICBGb3IgZXhhbXBs ZSwNCiNLRVlNQVA6MHgxMEM6VVBfVFdPOlBBU1MgIyBGdW5jdGlvbiBrZXkg SW5zZXJ0IC0gTW92ZSBkaXNwbGF5IHVwIHR3byBsaW5lcw0KIw0KIyBPdGhl ciBleGFtcGxlcyAocmVwZWF0aW5nIGJ1aWx0LWluIGJpbmRpbmdzKQ0KI0tF WU1BUDpeVjo6TEtDTUQJIyBzZXQgKG9ubHkpIGxpbmUtZWRpdCBhY3Rpb24g Zm9yIF5WDQojS0VZTUFQOl5WOlNXSVRDSF9EVEQ6TEtDTUQgIyBzZXQgbWFp biBseW54YWN0aW9uIGFuZCBsaW5lLWVkaXQgYWN0aW9uIGZvciBeVg0KI0tF WU1BUDpeVTo6RVJBU0U6MQkjIHNldCBsaW5lLWVkaXQgYmluZGluZyBmb3Ig XlUsIGZvciBkZWZhdWx0IHN0eWxlDQojS0VZTUFQOl5bOjpTRVRNMjozCSMg dXNlIGVzY2FwZSBrZXkgYXMgbW9kaWZpZXIgLSB3b3JrcyBvbmx5IHNvbWV0 aW1lcw0KDQoNCi5oMSBFeHRlcm5hbCBQcm9ncmFtcw0KIyBUaGVzZSBzZXR0 aW5ncyBjb250cm9sIHRoZSBhYmlsaXR5IG9mIEx5bnggdG8gaW52b2tlIHZh cmlvdXMgcHJvZ3JhbXMgZm9yDQojIHRoZSB1c2VyLg0KDQouaDIgQ1NXSU5H X1BBVEgNCiMgVk1TIE9OTFk6DQojPT09PT09PT09PQ0KIyBPbiBWTVMsIENT d2luZyAoYW4gWFRyZWUgZW11bGF0aW9uIGZvciBWVHh4eCB0ZXJtaW5hbHMp IGlzIGludGVuZGVkIGZvcg0KIyB1c2UgYXMgdGhlIERpcmVjdG9yeS9GaWxl IE1hbmFnZXIgKHNvdXJjZXMsIG9iamVjdHMsIG9yIGV4ZWN1dGFibGVzIGFy ZQ0KIyBhdmFpbGFibGUgZnJvbSBmdHA6Ly9uYXJuaWEubWVtc3QuZWR1Lyku ICBDU1dJTkdfUEFUSCBzaG91bGQgYmUgZGVmaW5lZA0KIyBoZXJlIG9yIGlu IHVzZXJkZWZzLmggdG8geW91ciBmb3JlaWduIGNvbW1hbmQgZm9yIENTd2lu Zywgd2l0aCBhbnkNCiMgcmVndWxhdG9yeSBzd2l0Y2hlcyB5b3Ugd2FudCBp bmNsdWRlZC4gIElmIG5vdCBkZWZpbmVkLCBvciBkZWZpbmVkIGFzDQojIGEg emVyby1sZW5ndGggc3RyaW5nICgiIikgb3IgIm5vbmUiIChjYXNlLWluc2Vu c2l0aXZlKSwgdGhlIHN1cHBvcnQNCiMgd2lsbCBiZSBkaXNhYmxlZC4gIEl0 IHdpbGwgYWxzbyBiZSBkaXNhYmxlZCBpZiB0aGUgLW5vYnJvd3NlIG9yDQoj IC1zZWxlY3RpdmUgc3dpdGNoZXMgYXJlIHVzZWQsIG9yIGlmIHRoZSBmaWxl X3VybCByZXN0cmljdGlvbiBpcyBzZXQuDQojDQojIFdoZW4gZW5hYmxlZCwg dGhlIERJUkVEX01FTlUgY29tbWFuZCAobm9ybWFsbHkgJ2YnIG9yICdGJykg d2lsbCBpbnZva2UNCiMgQ1N3aW5nLCBub3JtYWxseSB3aXRoIHRoZSBjdXJy ZW50IGRlZmF1bHQgZGlyZWN0b3J5IGFzIGFuIGFyZ3VtZW50IHRvDQojIHBv c2l0aW9uIHRoZSB1c2VyIG9uIHRoYXQgbm9kZSBvZiB0aGUgZGlyZWN0b3J5 IHRyZWUuICBIb3dldmVyLCBpZiB0aGUNCiMgY3VycmVudCBkb2N1bWVudCBp cyBhIGxvY2FsIGRpcmVjdG9yeSBsaXN0aW5nLCBvciBhIGxvY2FsIGZpbGUg YW5kIG5vdA0KIyBvbmUgb2YgdGhlIHRlbXBvcmFyeSBtZW51IG9yIGxpc3Qg ZmlsZXMsIHRoZSBhc3NvY2lhdGVkIGRpcmVjdG9yeSB3aWxsDQojIGJlIHBh c3NlZCBhcyBhbiBhcmd1bWVudCwgdG8gcG9zaXRpb24gdGhlIHVzZXIgb24g dGhhdCBub2RlIG9mIHRoZSB0cmVlLg0KIw0KI0NTV0lOR19QQVRIOnN3aW5n DQoNCg0KLmgxIEludGVybmFsIEJlaGF2aW9yDQoNCi5oMiBBVVRPX1VOQ0FD SEVfRElSTElTVFMNCiMgQVVUT19VTkNBQ0hFX0RJUkxJU1RTIGRldGVybWlu ZXMgd2hlbiBsb2NhbCBmaWxlIGRpcmVjdG9yeSBsaXN0aW5ncyBhcmUNCiMg YXV0b21hdGljYWxseSByZWdlbmVyYXRlZCAoYnkgcmUtcmVhZGluZyB0aGUg YWN0dWFsIGRpcmVjdG9yeSBmcm9tIGRpc2spLiANCiMgU2V0IHRoZSB2YWx1 ZSB0byAwIHRvIGF2b2lkIGF1dG9tYXRpYyByZWdlbmVyYXRpb24gaW4gbW9z dCBjYXNlcy4gIFRoaXMgaXMNCiMgdXNlZnVsIGZvciBicm93c2luZyBsYXJn ZSBkaXJlY3RvcmllcyB0aGF0IHRha2Ugc29tZSB0aW1lIHRvIHJlYWQgYW5k IGZvcm1hdC4gDQojIEFuIHVwZGF0ZSBjYW4gc3RpbGwgYWx3YXlzIGJlIGZv cmNlZCB3aXRoIHRoZSBSRUxPQUQga2V5LCBhbmQgc3BlY2lmaWMgRElSRUQN CiMgYWN0aW9ucyBtYXkgY2F1c2UgYSByZWZyZXNoIGFueXdheS4gIFNldCB0 aGUgdmFsdWUgdG8gMSB0byBmb3JjZSByZWdlbmVyYXRpb24NCiMgYWZ0ZXIg Y29tbWFuZHMgdGhhdCB1c3VhbGx5IGNoYW5nZSB0aGUgZGlyZWN0b3J5IG9y IHNvbWUgZmlsZXMgYW5kIHdvdWxkIG1ha2UNCiMgdGhlIGRpc3BsYXllZCBp bmZvIHN0YWxlLCBsaWtlIEVESVQgYW5kIFJFTU9WRS4gIFNldCBpdCB0byAy ICh0aGUgZGVmYXVsdCkgb3INCiMgZ3JlYXRlciB0byBmb3JjZSByZWdlbmVy YXRpb24gZXZlbiBhZnRlciBsZWF2aW5nIHRoZSBkaXNwbGF5ZWQgZGlyZWN0 b3J5DQojIGxpc3RpbmcgYnkgc29tZSBhY3Rpb24gdGhhdCB1c3VhbGx5IGNh dXNlcyBubyBjaGFuZ2UsIGxpa2UgR09UTyBvciBlbnRlcmluZyBhDQojIGZp bGUgd2l0aCB0aGUgQUNUSVZBVEUga2V5LiAgVGhpcyBvcHRpb24gaXMgb25s eSBob25vcmVkIGluIERJUkVEIG1vZGUgKGkuZS4gDQojIHdoZW4gbHlueCBp cyBjb21waWxlZCB3aXRoIERJUkVEX1NVUFBPUlQgYW5kIGl0IGlzIG5vdCBk aXNhYmxlZCB3aXRoIGENCiMgLXJlc3RyaWN0aW9uKS4gIExvY2FsIGRpcmVj dG9yaWVzIGRpc3BsYXllZCB3aXRob3V0IERJUkVEIG5vcm1hbGx5IGFjdCBh cyBpZg0KIyBBVVRPX1VOQ0FDSEVfRElSTElTVFM6MCB3YXMgaW4gZWZmZWN0 Lg0KIw0KI0FVVE9fVU5DQUNIRV9ESVJMSVNUUzoyDQoNCg0KLmgxIEFwcGVh cmFuY2UNCg0KLmgyIExJU1RfRk9STUFUDQojIFVuaXggT05MWToNCiM9PT09 PT09PT09PQ0KIyBMSVNUX0ZPUk1BVCBkZWZpbmVzIHRoZSBkaXNwbGF5IGZv ciBsb2NhbCBmaWxlcyB3aGVuIEx5bnggaGFzIGJlZW4NCiMgY29tcGlsZWQg d2l0aCBMT05HX0xJU1QgZGVmaW5lZCBpbiB0aGUgTWFrZWZpbGUuICBUaGUg ZGVmYXVsdCBpcyBzZXQNCiMgaW4gdXNlcmRlZnMuaCwgbm9ybWFsbHkgdG8g ImxzIC1sIiBmb3JtYXQsIGFuZCBjYW4gYmUgY2hhbmdlZCBoZXJlDQojIGJ5 IHVuY29tbWVudGluZyB0aGUgaW5kaWNhdGVkIGxpbmVzLCBvciBhZGRpbmcg YSBkZWZpbml0aW9uIHdpdGggYQ0KIyBtb2RpZmllZCBwYXJhbWV0ZXIgbGlz dC4NCiMNCiMgVGhlIHBlcmNlbnQgaXRlbXMgaW4gdGhlIGxpc3QgYXJlIGlu dGVycHJldGVkIGFzIGZvbGxvd3M6DQoubmYNCiMNCiMJJXAJVW5peC1zdHls ZSBwZXJtaXNzaW9uIGJpdHMNCiMJJWwJbGluayBjb3VudA0KIwklbwlvd25l ciBvZiBmaWxlDQojCSVnCWdyb3VwIG9mIGZpbGUNCiMJJWQJZGF0ZSBvZiBs YXN0IG1vZGlmaWNhdGlvbg0KIwklYQlhbmNob3IgcG9pbnRpbmcgdG8gZmls ZSBvciBkaXJlY3RvcnkNCiMJJUEJYXMgYWJvdmUgYnV0IGRvbid0IHNob3cg c3ltYm9saWMgbGlua3MNCiMJJXQJdHlwZSBvZiBmaWxlIChkZXNjcmlwdGlv biBkZXJpdmVkIGZyb20gTUlNRSB0eXBlKQ0KIwklVAlNSU1FIHR5cGUgYXMg a25vd24gYnkgTHlueCAoZnJvbSBtaW1lLnR5cGVzIG9yIGRlZmF1bHQpDQoj CSVrCXNpemUgb2YgZmlsZSBpbiBLaWxvYnl0ZXMNCiMJJUsJYXMgYWJvdmUg YnV0IG9taXQgc2l6ZSBmb3IgZGlyZWN0b3JpZXMNCiMJJXMJc2l6ZSBvZiBm aWxlIGluIGJ5dGVzDQojDQouZmkNCiMgQW55dGhpbmcgYmV0d2VlbiB0aGUg cGVyY2VudCBhbmQgdGhlIGxldHRlciBpcyBwYXNzZWQgb24gdG8gc3ByaW50 Zi4NCiMgQSBkb3VibGUgcGVyY2VudCB5aWVsZHMgYSBsaXRlcmFsIHBlcmNl bnQgb24gb3V0cHV0LiAgT3RoZXIgY2hhcmFjdGVycw0KIyBhcmUgcGFzc2Vk IHRocm91Z2ggbGl0ZXJhbGx5Lg0KIw0KIyBJZiB5b3Ugd2FudCBvbmx5IHRo ZSBmaWxlbmFtZToNCiMNCi5leA0KI0xJU1RfRk9STUFUOiAgICAlYQ0KIw0K IyBJZiB5b3Ugd2FudCBhIGJyaWVmIG91dHB1dDoNCiMNCi5leA0KI0xJU1Rf Rk9STUFUOiAgICU0SyAlLTEyLjEyZCAlYQ0KIw0KIyBJZiB5b3Ugd2FudCB0 aGUgVW5peCAibHMgLWwiIGZvcm1hdDoNCiMNCi5leA0KI0xJU1RfRk9STUFU OiVhICAgICU0bCAlLTguOG8gJS04LjhnICU3cyAlLTEyLjEyZCAlcA0KDQoN Ci5oMSBFeHRlcm5hbCBQcm9ncmFtcw0KDQouaDIgRElSRURfTUVOVQ0KIyBV bml4IE9OTFk6DQojPT09PT09PT09PT0NCiMgRElSRURfTUVOVSBpdGVtcyBh cmUgdXNlZCB0byBjb21wb3NlIHRoZSBGKXVsbCBtZW51IGxpc3QgaW4gRElS RUQgbW9kZQ0KIyBUaGUgYmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgY29uZmln dXJhdGlvbiBnaXZlbiBoZXJlIGlzIG11Y2ggdGhlIHNhbWUNCiMgYXMgaXQg d2FzIHdoZW4gdGhpcyBtZW51IHdhcyBoYXJkLWNvZGVkIGJ1dCB0aGVzZSBp dGVtcyBjYW4gbm93IGJlIGFkanVzdGVkDQojIHRvIHN1aXQgbG9jYWwgbmVl ZHMuICBJbiBwYXJ0aWN1bGFyLCBtYW55IG9mIHRoZSBMWU5YRElSRUQgYWN0 aW9ucyBjYW4gYmUNCiMgcmVwbGFjZWQgd2l0aCBseW54ZXhlYywgbHlueHBy b2cgYW5kIGx5bnhjZ2kgc2NyaXB0IHJlZmVyZW5jZXMuDQojDQojIE5PVEUg dGhhdCBkZWZpbmluZyBldmVuIG9uZSBESVJFRF9NRU5VIGxpbmUgb3ZlcnJp ZGVzIGFsbCB0aGUgYnVpbHQtaW4NCiMgZGVmaW5pdGlvbnMsIHNvIGEgY29t cGxldGUgc2V0IG11c3QgdGhlbiBiZSBkZWZpbmVkIGhlcmUuDQojDQojIEVh Y2ggbGluZSBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nIGZpZWxkczoNCi5u Zg0KIw0KIwlESVJFRF9NRU5VOnR5cGU6c3VmZml4OmxpbmsgdGV4dDpleHRy YSB0ZXh0OmFjdGlvbg0KIw0KIwl0eXBlOiBUQUc6ICAgbGlzdCBvbmx5IHdo ZW4gb25lIG9yIG1vcmUgZmlsZXMgYXJlIHRhZ2dlZA0KIwkgICAgICBGSUxF OiAgbGlzdCBvbmx5IHdoZW4gdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlzIGEg cmVndWxhciBmaWxlDQojCSAgICAgIERJUjogICBsaXN0IG9ubHkgd2hlbiB0 aGUgY3VycmVudCBzZWxlY3Rpb24gaXMgYSBkaXJlY3RvcnkNCiMJICAgICAg TElOSzogIGxpc3Qgb25seSB3aGVuIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBp cyBhIHN5bWJvbGljIGxpbmsNCiMNCiMJc3VmZml4OiAgbGlzdCBvbmx5IGlm IHRoZSBjdXJyZW50IHNlbGVjdGlvbiBlbmRzIGluIHRoaXMgcGF0dGVybg0K Iw0KIwlsaW5rIHRleHQ6ICB0aGUgZGlzcGxheWVkIHRleHQgb2YgdGhlIGxp bmsNCiMNCiMJZXh0cmEgdGV4dDogIHRoZSB0ZXh0IGRpc3BsYXllZCBmb2xs b3dpbmcgdGhlIGxpbmsNCiMNCiMJYWN0aW9uOiAgdGhlIFVSTCB0byBiZSBm b2xsb3dlZCB1cG9uIHNlbGVjdGlvbg0KIw0KIwlsaW5rIHRleHQgYW5kIGFj dGlvbiBhcmUgc2Nhbm5lZCBmb3IgJSBzZXF1ZW5jZXMgdGhhdCBhcmUgZXhw YW5kZWQNCiMJYXQgZGlzcGxheSB0aW1lIGFzIGZvbGxvd3M6DQojDQojCQkl cCAgcGF0aCBvZiBjdXJyZW50IHNlbGVjdGlvbg0KIwkJJWYgIGZpbGVuYW1l IChsYXN0IGNvbXBvbmVudCkgb2YgY3VycmVudCBzZWxlY3Rpb24NCiMJCSV0 ICB0YWdnZWQgbGlzdCAoZnVsbCBwYXRocykNCiMJCSVsICBsaXN0IG9mIHRh Z2dlZCBmaWxlIG5hbWVzDQojCQklZCAgdGhlIGN1cnJlbnQgZGlyZWN0b3J5 DQojDQouZmkNCiNESVJFRF9NRU5VOjo6TmV3IEZpbGU6KGluIGN1cnJlbnQg ZGlyZWN0b3J5KTpMWU5YRElSRUQ6Ly9ORVdfRklMRSVkDQojRElSRURfTUVO VTo6Ok5ldyBEaXJlY3Rvcnk6KGluIGN1cnJlbnQgZGlyZWN0b3J5KTpMWU5Y RElSRUQ6Ly9ORVdfRk9MREVSJWQNCg0KIyBGb2xsb3dpbmcgZGVwZW5kcyBv biBPS19JTlNUQUxMDQojRElSRURfTUVOVTpGSUxFOjpJbnN0YWxsOnNlbGVj dGVkIGZpbGUgdG8gbmV3IGxvY2F0aW9uOkxZTlhESVJFRDovL0lOU1RBTExf U1JDJXANCiNESVJFRF9NRU5VOkRJUjo6SW5zdGFsbDpzZWxlY3RlZCBkaXJl Y3RvcnkgdG8gbmV3IGxvY2F0aW9uOkxZTlhESVJFRDovL0lOU1RBTExfU1JD JXANCg0KI0RJUkVEX01FTlU6RklMRTo6TW9kaWZ5IEZpbGUgTmFtZToob2Yg Y3VycmVudCBzZWxlY3Rpb24pOkxZTlhESVJFRDovL01PRElGWV9OQU1FJXAN CiNESVJFRF9NRU5VOkRJUjo6TW9kaWZ5IERpcmVjdG9yeSBOYW1lOihvZiBj dXJyZW50IHNlbGVjdGlvbik6TFlOWERJUkVEOi8vTU9ESUZZX05BTUUlcA0K I0RJUkVEX01FTlU6TElOSzo6TW9kaWZ5IE5hbWU6KG9mIHNlbGVjdGVkIHN5 bWJvbGljIGxpbmspOkxZTlhESVJFRDovL01PRElGWV9OQU1FJXANCg0KIyBG b2xsb3dpbmcgZGVwZW5kcyBvbiBPS19QRVJNSVQNCiNESVJFRF9NRU5VOkZJ TEU6Ok1vZGlmeSBGaWxlIFBlcm1pc3Npb25zOihvZiBjdXJyZW50IHNlbGVj dGlvbik6TFlOWERJUkVEOi8vUEVSTUlUX1NSQyVwDQojRElSRURfTUVOVTpE SVI6Ok1vZGlmeSBEaXJlY3RvcnkgUGVybWlzc2lvbnM6KG9mIGN1cnJlbnQg c2VsZWN0aW9uKTpMWU5YRElSRUQ6Ly9QRVJNSVRfU1JDJXANCg0KI0RJUkVE X01FTlU6RklMRTo6Q2hhbmdlIExvY2F0aW9uOihvZiBzZWxlY3RlZCBmaWxl KTpMWU5YRElSRUQ6Ly9NT0RJRllfTE9DQVRJT04lcA0KI0RJUkVEX01FTlU6 RElSOjpDaGFuZ2UgTG9jYXRpb246KG9mIHNlbGVjdGVkIGRpcmVjdG9yeSk6 TFlOWERJUkVEOi8vTU9ESUZZX0xPQ0FUSU9OJXANCiNESVJFRF9NRU5VOkxJ Tks6OkNoYW5nZSBMb2NhdGlvbjoob2Ygc2VsZWN0ZWQgc3ltYm9saWMgbGlu ayk6TFlOWERJUkVEOi8vTU9ESUZZX0xPQ0FUSU9OJXANCiNESVJFRF9NRU5V OkZJTEU6OlJlbW92ZSBGaWxlOihjdXJyZW50IHNlbGVjdGlvbik6TFlOWERJ UkVEOi8vUkVNT1ZFX1NJTkdMRSVwDQojRElSRURfTUVOVTpESVI6OlJlbW92 ZSBEaXJlY3Rvcnk6KGN1cnJlbnQgc2VsZWN0aW9uKTpMWU5YRElSRUQ6Ly9S RU1PVkVfU0lOR0xFJXANCiNESVJFRF9NRU5VOkxJTks6OlJlbW92ZSBTeW1i b2xpYyBMaW5rOihjdXJyZW50IHNlbGVjdGlvbik6TFlOWERJUkVEOi8vUkVN T1ZFX1NJTkdMRSVwDQoNCiMgRm9sbG93aW5nIGRlcGVuZHMgb24gT0tfVVVE RUNPREUgYW5kICFBUkNISVZFX09OTFkNCiNESVJFRF9NRU5VOkZJTEU6OlVV RGVjb2RlOihjdXJyZW50IHNlbGVjdGlvbik6TFlOWERJUkVEOi8vVVVERUNP REUlcA0KDQojIEZvbGxvd2luZyBkZXBlbmRzIG9uIE9LX1RBUiBhbmQgIUFS Q0hJVkVfT05MWQ0KI0RJUkVEX01FTlU6RklMRToudGFyLlo6RXhwYW5kOihj dXJyZW50IHNlbGVjdGlvbik6TFlOWERJUkVEOi8vVU5UQVJfWiVwDQoNCiMg Rm9sbG93aW5nIGRlcGVuZCBvbiBPS19UQVIgYW5kIE9LX0daSVAgYW5kICFB UkNISVZFX09OTFkNCiNESVJFRF9NRU5VOkZJTEU6LnRhci5nejpFeHBhbmQ6 KGN1cnJlbnQgc2VsZWN0aW9uKTpMWU5YRElSRUQ6Ly9VTlRBUl9HWiVwDQoj RElSRURfTUVOVTpGSUxFOi50Z3o6RXhwYW5kOihjdXJyZW50IHNlbGVjdGlv bik6TFlOWERJUkVEOi8vVU5UQVJfR1olcA0KDQojIEZvbGxvd2luZyBkZXBl bmRzIG9uICFBUkNISVZFX09OTFkNCiNESVJFRF9NRU5VOkZJTEU6Llo6VW5j b21wcmVzczooY3VycmVudCBzZWxlY3Rpb24pOkxZTlhESVJFRDovL0RFQ09N UFJFU1MlcA0KDQojIEZvbGxvd2luZyBkZXBlbmRzIG9uIE9LX0daSVAgYW5k ICFBUkNISVZFX09OTFkNCiNESVJFRF9NRU5VOkZJTEU6Lmd6OlVuY29tcHJl c3M6KGN1cnJlbnQgc2VsZWN0aW9uKTpMWU5YRElSRUQ6Ly9VTkdaSVAlcA0K DQojIEZvbGxvd2luZyBkZXBlbmRzIG9uIE9LX1pJUCBhbmQgIUFSQ0hJVkVf T05MWQ0KI0RJUkVEX01FTlU6RklMRTouemlwOlVuY29tcHJlc3M6KGN1cnJl bnQgc2VsZWN0aW9uKTpMWU5YRElSRUQ6Ly9VTlpJUCVwDQoNCiMgRm9sbG93 aW5nIGRlcGVuZHMgb24gT0tfVEFSIGFuZCAhQVJDSElWRV9PTkxZDQojRElS RURfTUVOVTpGSUxFOi50YXI6VW5UYXI6KGN1cnJlbnQgc2VsZWN0aW9uKTpM WU5YRElSRUQ6Ly9VTlRBUiVwDQoNCiMgRm9sbG93aW5nIGRlcGVuZHMgb24g T0tfVEFSDQojRElSRURfTUVOVTpESVI6OlRhcjooY3VycmVudCBzZWxlY3Rp b24pOkxZTlhESVJFRDovL1RBUiVwDQoNCiMgRm9sbG93aW5nIGRlcGVuZHMg b24gT0tfVEFSIGFuZCBPS19HWklQDQojRElSRURfTUVOVTpESVI6OlRhciBh bmQgY29tcHJlc3M6KHVzaW5nIEdOVSBnemlwKTpMWU5YRElSRUQ6Ly9UQVJf R1olcA0KDQojIEZvbGxvd2luZyBkZXBlbmRzIG9uIE9LX1pJUA0KI0RJUkVE X01FTlU6RElSOjpQYWNrYWdlIGFuZCBjb21wcmVzczoodXNpbmcgemlwKTpM WU5YRElSRUQ6Ly9aSVAlcA0KDQojRElSRURfTUVOVTpGSUxFOjpDb21wcmVz czoodXNpbmcgVW5peCBjb21wcmVzcyk6TFlOWERJUkVEOi8vQ09NUFJFU1Ml cA0KDQojIEZvbGxvd2luZyBkZXBlbmRzIG9uIE9LX0daSVANCiNESVJFRF9N RU5VOkZJTEU6OkNvbXByZXNzOih1c2luZyBnemlwKTpMWU5YRElSRUQ6Ly9H WklQJXANCg0KIyBGb2xsb3dpbmcgZGVwZW5kcyBvbiBPS19aSVANCiNESVJF RF9NRU5VOkZJTEU6OkNvbXByZXNzOih1c2luZyB6aXApOkxZTlhESVJFRDov L1pJUCVwDQoNCiNESVJFRF9NRU5VOlRBRzo6TW92ZSBhbGwgdGFnZ2VkIGl0 ZW1zIHRvIGFub3RoZXIgbG9jYXRpb24uOjpMWU5YRElSRUQ6Ly9NT1ZFX1RB R0dFRCVkDQoNCiMgRm9sbG93aW5nIGRlcGVuZHMgb24gT0tfSU5TVEFMTA0K I0RJUkVEX01FTlU6VEFHOjpJbnN0YWxsIHRhZ2dlZCBmaWxlcyBpbnRvIGFu b3RoZXIgZGlyZWN0b3J5Ljo6TFlOWERJUkVEOi8vSU5TVEFMTF9TUkMlMDAN Cg0KI0RJUkVEX01FTlU6VEFHOjpSZW1vdmUgYWxsIHRhZ2dlZCBmaWxlcyBh bmQgZGlyZWN0b3JpZXMuOjpMWU5YRElSRUQ6Ly9SRU1PVkVfVEFHR0VEDQoj RElSRURfTUVOVTpUQUc6OlVudGFnIGFsbCB0YWdnZWQgaXRlbXMuOjpMWU5Y RElSRUQ6Ly9DTEVBUl9UQUdHRUQNCg0KDQouaDEgSW50ZXJuYWwgQmVoYXZp b3INCg0KLmgyIE5PTlJFU1RBUlRJTkdfU0lHV0lOQ0gNCiMgU29tZSBzeXN0 ZW1zIG9ubHk6DQojPT09PT09PT09PT09PT09PT09PQ0KIyBMeW54IHRyaWVz IHRvIGRldGVjdCB3aW5kb3cgc2l6ZSBjaGFuZ2VzIHdpdGggYSBzaWduYWwg aGFuZGxlciBmb3INCiMgU0lHV0lOQ0ggaWYgc3VwcG9ydGVkLiAgSWYgTk9O UkVTVEFSVElOR19TSUdXSU5DSCBpcyBzZXQgdG8gVFJVRSwNCiMgYW5kIHRo ZSBzaWdhY3Rpb24gaW50ZXJmYWNlIGlzIGF2YWlsYWJsZSBvbiB0aGUgc3lz dGVtLCB0aGUgaGFuZGxlcg0KIyBpcyBpbnN0YWxsZWQgYXMgJ25vbi1yZXN0 YXJ0aW5nJy4gIE9uIHNvbWUgc3lzdGVtcyAoZGVwZW5kaW5nIG9uIHRoZQ0K IyBsaWJyYXJ5IHVzZWQgZm9yIGhhbmRsaW5nIGtleWJvYXJkIGlucHV0LCBl LmcuIG5jdXJzZXMpLCB0aGlzIGFsbG93cw0KIyBtb3JlIGltbWVkaWF0ZSBu b3RpZmljYXRpb24gb2Ygd2luZG93IHNpemUgY2hhbmdlIGV2ZW50cy4gIElm IHRoZSB2YWx1ZQ0KIyBpcyBzZXQgdG8gRkFMU0UsIHRoZSBzaWduYWwoKSBp bnRlcmZhY2UgaXMgdXNlZDsgdGhpcyBub3JtYWxseSBtYWtlcw0KIyB0aGUg aGFuZGxlciAncmVzdGFydGluZycsIHdpdGggdGhlIGVmZmVjdCB0aGF0IGx5 bnggY2FuIHJlYWN0IHRvIHNpemUNCiMgY2hhbmdlcyBvbmx5IGFmdGVyIHNv bWUga2V5IGlzIHByZXNzZWQuICBUaGUgdmFsdWUgY2FuIGFsc28gYmUgc2V0 IHRvDQojIFhXSU5ET1dTOyB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gVFJVRSB3 aGVuIHRoZSB1c2VyIGhhcyB0aGUgZW52aXJvbm1lbnQNCiMgdmFyaWFibGUg RElTUExBWSBkZWZpbmVkICphdCBwcm9ncmFtIHN0YXJ0KiwgYW5kIGVxdWl2 YWxlbnQgdG8gRkFMU0UNCiMgb3RoZXJ3aXNlLiAgVGhlIG5vbi1yZXN0YXJ0 aW5nIGJlaGF2aW9yIGNhbiBhbHNvIGJlIGNoYW5nZWQgdG8gVFJVRQ0KIyBv ciBGQUxTRSB3aXRoIHRoZSAtbm9ucmVzdGFydGluZ19zaWd3aW5jaCBzd2l0 Y2gsIHdoaWNoIG92ZXJyaWRlcyB0aGUNCiMgdmFsdWUgaW4gdGhpcyBmaWxl Lg0KIw0KIyBOb3RlIHRoYXQgTHlueCBuZXZlciByZS1wYXJzZXMgZG9jdW1l bnQgdGV4dCBwdXJlbHkgYXMgYSByZXN1bHQgb2YgYQ0KIyB3aW5kb3cgc2l6 ZSBjaGFuZ2UsIHNvIHRleHQgbGluZXMgbWF5IGFwcGVhciB0cnVuY2F0ZWQg YWZ0ZXIgbmFycm93aW5nDQojIHRoZSB3aW5kb3csIHVudGlsIHRoZSBkb2N1 bWVudCBpcyByZWxvYWRlZCB3aXRoIF5SIG9yIGEgc2ltaWxhciBrZXkNCiMg b3IgdW50aWwgYSBkaWZmZXJlbnQgdGV4dCBpcyBsb2FkZWQuDQojDQojIFRo ZSBkZWZhdWx0IGlzIEZBTFNFIHNpbmNlIHRoZXJlIGlzIGEgcG9zc2liaWxp dHkgdGhhdCBub24tcmVzdGFydGluZw0KIyBpbnRlcnJ1cHRzIG1heSBiZSBt aXMtaW50ZXJwcmV0ZWQgYXMgZmF0YWwgaW5wdXQgZXJyb3JzIGluIHNvbWUN CiMgY29uZmlndXJhdGlvbnMgKGxlYWRpbmcgdG8gYW4gYWJydXB0IHByb2dy YW0gZXhpdCksIGFuZCBzaW5jZSB0aGlzDQojIG9wdGlvbiBpcyB1c2VmdWwg bW9zdGx5IG9ubHkgZm9yIHVzZXJzIHJ1bm5pbmcgTHlueCB1bmRlciB4dGVy bSBvciBhDQojIHNpbWlsYXIgWCB0ZXJtaW5hbCBlbXVsYXRvci4gIE9uIHN5 c3RlbXMgd2hlcmUgdGhlIHByZWNvbmRpdGlvbnMgZG9uJ3QNCiMgYXBwbHkg dGhpcyBvcHRpb24gaXMgaWdub3JlZC4NCiMNCiNOT05SRVNUQVJUSU5HX1NJ R1dJTkNIOkZBTFNFDQoNCg0KLmgyIE5PX0ZPUkNFRF9DT1JFX0RVTVANCiMg VW5peCBPTkxZOg0KIz09PT09PT09PT09DQojIElmIE5PX0ZPUkNFRF9DT1JF X0RVTVAgaXMgc2V0IHRvIFRSVUUsIEx5bnggd2lsbCBub3QgZm9yY2UNCiMg Y29yZSBkdW1wcyB2aWEgYWJvcnQoKSBjYWxscyBvbiBmYXRhbCBlcnJvcnMg b3IgYXNzZXJ0KCkNCiMgY2FsbHMgdG8gY2hlY2sgcG90ZW50aWFsbHkgZmF0 YWwgZXJyb3JzLiAgVGhlIGNvbXBpbGF0aW9uDQojIGRlZmF1bHQgbm9ybWFs bHkgaXMgRkFMU0UsIGFuZCBjYW4gYmUgY2hhbmdlZCBoZXJlLiAgVGhlDQoj IGNvbXBpbGF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gZGVmYXVsdCBjYW4gYmUg dG9nZ2xlZCB2aWENCiMgdGhlIC1jb3JlIGNvbW1hbmQgbGluZSBzd2l0Y2gu DQojIE5vdGUgdGhhdCB0aGlzIHNldHRpbmcgY2Fubm90IGJlIHVzZWQgdG8g cHJldmVudCBjb3JlIGR1bXBzDQojIHdpdGggY2VydGFpbnR5LiAgSWYgdGhp cyBpcyBpbXBvcnRhbnQsIG1lYW5zIHByb3ZpZGVkIGJ5IHRoZQ0KIyBvcGVy YXRpbmcgc3lzdGVtIG9yIGtlcm5lbCBzaG91bGQgYmUgdXNlZC4NCiMNCiNO T19GT1JDRURfQ09SRV9EVU1QOkZBTFNFDQoNCg0KLmgxIEFwcGVhcmFuY2UN Cg0KLmgyIENPTE9SDQojIENPTE9SUyAob25seSBhdmFpbGFibGUgaWYgY29t cGlsZWQgd2l0aCBTVnI0IGN1cnNlcyBvciBzbGFuZykNCiMNCiMgVGhlIGxp bmUgbXVzdCBiZSBvZiB0aGUgZm9ybToNCiMNCiMgQ09MT1I6SW50ZWdlcjpG b3JlZ3JvdW5kOkJhY2tncm91bmQNCi5uZg0KIw0KIyBUaGUgSW50ZWdlciB2 YWx1ZSBpcyBpbnRlcnByZXRlZCBhcyBmb2xsb3dzOg0KIyAgIDAgLSBub3Jt YWwgICAgICAgICAgICAgICAgICAgICAgLSBub3JtYWwgdGV4dA0KIyAgIDEg LSBib2xkICAgICAgICAgICAgICAgICAgICAgICAgLSBoeXBlcmxpbmtzLCBz ZWUgYWxzbyBCT0xEXyogb3B0aW9ucyBhYm92ZQ0KIyAgIDIgLSByZXZlcnNl ICAgICAgICAgICAgICAgICAgICAgLSBzdGF0dXNsaW5lDQojICAgMyAtIGJv bGQgKyByZXZlcnNlICAgICAgICAgICAgICAobm90IHVzZWQpDQojICAgNCAt IHVuZGVybGluZSAgICAgICAgICAgICAgICAgICAtIHRleHQgZW1waGFzaXMg KEVNLCBJLCBCIHRhZ3MgZXRjLikNCiMgICA1IC0gYm9sZCArIHVuZGVybGlu ZSAgICAgICAgICAgIC0gaHlwZXJsaW5rcyB3aXRoaW4gdGV4dCBlbXBoYXNp cw0KIyAgIDYgLSByZXZlcnNlICsgdW5kZXJsaW5lICAgICAgICAgLSBjdXJy ZW50bHkgc2VsZWN0ZWQgaHlwZXJsaW5rDQojICAgNyAtIHJldmVyc2UgKyB1 bmRlcmxpbmUgKyBib2xkICAtIFdIRVJFSVMgc2VhcmNoIGhpdHMNCiMNCiMg RWFjaCBGb3JlZ3JvdW5kIGFuZCBCYWNrZ3JvdW5kIHZhbHVlIG11c3QgYmUg b25lIG9mOg0KIyAgIGJsYWNrICAgICAgICAgcmVkICAgICAgICAgICAgZ3Jl ZW4gICAgICAgICBicm93bg0KIyAgIGJsdWUgICAgICAgICAgbWFnZW50YSAg ICAgICAgY3lhbiAgICAgICAgICBsaWdodGdyYXkNCiMgICBncmF5ICAgICAg ICAgIGJyaWdodHJlZCAgICAgIGJyaWdodGdyZWVuICAgeWVsbG93DQojICAg YnJpZ2h0Ymx1ZSAgICBicmlnaHRtYWdlbnRhICBicmlnaHRjeWFuICAgIHdo aXRlDQojDQouZmkNCiMgb3IgKGlmIHlvdSBoYXZlIGNvbmZpZ3VyZWQgdXNp bmcgLS1lbmFibGUtZGVmYXVsdC1jb2xvcnMgd2l0aCBuY3Vyc2VzIG9yDQoj IHNsYW5nKSwgImRlZmF1bHQiIG1heSBiZSB1c2VkIGZvciBmb3JlZ3JvdW5k IGFuZCBiYWNrZ3JvdW5kLg0KIw0KIyBVbmNvbW1lbnQgYW5kIGNoYW5nZSBh bnkgb2YgdGhlIGNvbXBpbGF0aW9uIGRlZmF1bHRzLg0KIw0KI0NPTE9SOjA6 YmxhY2s6d2hpdGUNCiNDT0xPUjoxOmJsdWU6d2hpdGUNCiNDT0xPUjoyOnll bGxvdzpibHVlDQojQ09MT1I6MzpncmVlbjp3aGl0ZQ0KI0NPTE9SOjQ6bWFn ZW50YTp3aGl0ZQ0KI0NPTE9SOjU6Ymx1ZTp3aGl0ZQ0KI0NPTE9SOjY6cmVk OndoaXRlDQojQ09MT1I6NzptYWdlbnRhOmN5YW4NCg0KDQouaDIgQVNTVU1F RF9DT0xPUg0KIyBJZiBidWlsdCB3aXRoIGEgbGlicmFyeSB0aGF0IHJlY29n bml6ZXMgZGVmYXVsdCBjb2xvcnMsIGluaXRpYWxpemVzIGl0DQojIHRvIGFz c3VtZSB0aGUgY29ycmVzcG9uZGluZyBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3Jv dW5kIGNvbG9ycy4gIERlZmF1bHQNCiMgY29sb3JzIGFyZSB0aG9zZSB0aGF0 IHRoZSB0ZXJtaW5hbCAoZW11bGF0b3IpIGl0c2VsZiBpcyBpbml0aWFsaXpl ZCB0by4NCiMgRm9yIGluc3RhbmNlLCB5b3UgbWlnaHQgaGF2ZSBhbiB4dGVy bSBydW5uaW5nIHdpdGggYmxhY2sgdGV4dCBvbiBhIHdoaXRlDQojIGJhY2tn cm91bmQsIGFuZCB3YW50IGx5bnggdG8gZGlzcGxheSBjb2xvcmVkIHRleHQg b24gdGhlIHdoaXRlIGJhY2tncm91bmQsDQojIGJ1dCBsZWF2ZSB0aGUgcG9z c2liaWxpdHkgb2YgdXNpbmcgdGhlIHNhbWUgY29uZmlndXJhdGlvbiB0byBk cmF3IGNvbG9yZWQNCiMgdGV4dCBvbiBhIGRpZmZlcmVudCB4dGVybSwgdGhp cyB0aW1lIHVzaW5nIGl0cyBiYWNrZ3JvdW5kIHNldCB0byBibGFjay4NCiMN CiMgVGhlIGZpcnN0IHZhbHVlIGdpdmVuIGlzIHRoZSBmb3JlZ3JvdW5kLCB0 aGUgc2Vjb25kIGlzIHRoZSBiYWNrZ3JvdW5kLg0KQVNTVU1FRF9DT0xPUjpk ZWZhdWx0OmRlZmF1bHQNCg0KDQouaDEgRXh0ZXJuYWwgUHJvZ3JhbXMNCg0K LmgyIEVYVEVSTkFMDQojIEV4dGVybmFsIGFwcGxpY2F0aW9uIHN1cHBvcnQu ICBUaGlzIGZlYXR1cmUgYWxsb3dzIEx5bnggdG8gcGFzcyBhIGdpdmVuDQoj IFVSTCB0byBhbiBleHRlcm5hbCBwcm9ncmFtLiAgSXQgd2FzIHdyaXR0ZW4g Zm9yIHRocmVlIHJlYXNvbnMuDQojDQojIDEpIFRvIG92ZXJjb21lIHRoZSBk ZWZpY2llbmN5CW9mIEx5bnhfMzg2IG5vdCBzdXBwb3J0aW5nIGZ0cCBhbmQg bmV3cy4NCiMgICAgRXh0ZXJuYWwgcHJvZ3JhbXMgY2FuIGJlIHVzZWQgaW5z dGVhZCBieSBwYXNzaW5nIHRoZSBVUkwuDQojDQojIDIpIFRvIGFsbG93IGZv ciBiYWNrZ3JvdW5kCXRyYW5zZmVycyBpbiBtdWx0aXRhc2tpbmcgc3lzdGVt cy4NCiMgICAgSSB1c2Ugd2dldCBmb3IgaHR0cCBhbmQgZnRwIHRyYW5zZmVy cyB2aWEgdGhlIGV4dGVybmFsIGNvbW1hbmQuDQojDQojIDMpIFRvIGFsbG93 IGZvciBuZXcgVVJMcyB0byBiZSB1c2VkIHRocm91Z2ggTHlueC4NCiMJICBV UkxzIGNhbiBiZSBtYWRlIHVwIHN1Y2ggYXMgbXltYWlsOiB0byBzcGF3biBk ZXNpcmVkIGFwcGxpY2F0aW9ucw0KIwkgIHZpYSB0aGUgZXh0ZXJuYWwgY29t bWFuZC4NCiMNCiMgUmVzdHJpY3Rpb25zIGNhbiBiZSBpbXBvc2VkIHVzaW5n IC1yZXN0cmljdGlvbnM9ZXh0ZXJuYWxzIGF0IHRoZSBMeW54IGNvbW1hbmQN CiMgbGluZS4gIFRoaXMgd2lsbCBkaXNhbGxvdyBhbGwgRVhURVJOQUwgbGlu ZXMgaW4gbHlueC5jZmcgdGhhdCBoYXZlIEZBTFNFIGluDQojIHRoZSAzcmQg ZmllbGQgKG5vdCBjb3VudGluZyB0aGUgbmFtZSBvZiB0aGUgc2V0dGluZyku ICBUUlVFIGxpbmVzIHdpbGwgc3RpbGwNCiMgZnVuY3Rpb24uDQojDQojIFRo ZSBseW54LmNmZyBsaW5lIGlzIGFzIGZvbGxvd3M6DQojDQojIEVYVEVSTkFM Ojx1cmw+Ojxjb21tYW5kPiAlczo8bm9yZXN0cmljdGlvbj46PGFsbG93X2Zv cl9hY3RpdmF0ZT4NCiMNCiMgPHVybD4gQW55IGdpdmVuIFVSTC4gIFRoaXMg Y2FuIGJlIG5vcm1hbCBvbmVzIGxpa2UgZnRwIG9yIGh0dHAgb3IgaXQNCiMg Y2FuIGJlIG9uZSBtYWRlIHVwIGxpa2UgbXltYWlsLg0KIw0KIyA8Y29tbWFu ZD4gVGhlIGNvbW1hbmQgdG8gcnVuIHdpdGggJXMgYmVpbmcgdGhlIFVSTCB0 aGF0IHdpbGwgYmUgcGFzc2VkLg0KIyBJbiBMaW51eCBJIHVzZSAid2dldCAt cSAlcyAmIiAobm8gcXVvdGVzKSB0byBzcGF3biBhIGNvcHkgb2Ygd2dldCBm b3INCiMgZG93bmxvYWRpbmcgaHR0cCBhbmQgZnRwIGZpbGVzIGluIHRoZSBi YWNrZ3JvdW5kLiAgSW4gV2luOTUgSSB1c2UNCiMgInN0YXJ0IG5jZnRwICVz IiB0byBzcGF3biBuY2Z0cCBpbiBhIG5ldyB3aW5kb3cuDQojDQojIDxub3Jl c3RyaWN0aW9uPiBUaGlzIGNvbXBsZW1lbnRzIHRoZSAtcmVzdHJpY3Rpb25z PWV4dGVybmFscyBmZWF0dXJlIHRvIGFsbG93DQojIGZvciBjZXJ0YWluIGV4 dGVybmFscyB0byBiZSBlbmFibGVkIHdoaWxlIHJlc3RyaWN0aW5nIG90aGVy cy4gIFRSVUUgbWVhbnMNCiMgYSBjb21tYW5kIHdpbGwgc3RpbGwgZnVuY3Rp b24gd2hpbGUgTHlueCBpcyByZXN0cmljdGVkLiAgV0INCiMNCiMgPGFsbG93 X2Zvcl9hY3RpdmF0ZT4gU2V0dGluZyB0aGlzIHRvIFRSVUUgYWxsb3dzIHRo ZSB1c2Ugb2YgdGhpcyBjb21tYW5kIG5vdA0KIyBvbmx5IHdoZW4gRVhURVJO IGtleSBpcyBwcmVzc2VkLCBidXQgYWxzbyB3aGVuIEFDVElWQVRFIGNvbW1h bmQgaXMgaW52b2tlZA0KIyAoaS5lIGFjdGl2YXRpbmcgdGhlIGxpbmsgd2l0 aCB0aGUgZ2l2ZW4gcHJlZml4IHdpbGwgYmUgZXF1aXZhbGVudCB0bw0KIyBw cmVzc2luZyBFWFRFUk4ga2V5IG9uIGl0KS4gIElmIHRoaXMgY29tcG9uZW50 IG9mIHRoZSBsaW5lIGlzIGFic2VudCwgdGhlbg0KIyBGQUxTRSBpcyBhc3N1 bWVkLg0KIyANCiMgRm9yIGludm9raW5nIHRoZSBjb21tYW5kIHVzZSB0aGUg RVhURVJOIGtleS4gIEJ5IGRlZmF1bHQgaXQgaXMgbWFwcGVkDQojIHRvICcu JyAoaWYgdGhlIGZlYXR1cmUgaXMgZW5hYmxlZCksIHNlZSB0aGUgS0VZTUFQ IHNlY3Rpb24gYWJvdmUuDQojDQpFWFRFUk5BTDpmdHA6d2dldCAlcyAmOlRS VUUNCg0KDQouaDEgSW50ZXJuYWwgQmVoYXZpb3INCg0KLmgyIFJVTEUNCi5o MiBSVUxFU0ZJTEUNCiMgQ0VSTi1zdHlsZSBydWxlcywgRVhQRVJJTUVOVEFM ICAtICBVUkwtc3BlY2lmaWMgcnVsZXMNCiMNCiMgQSBDRVJOLXN0eWxlIHJ1 bGVzIGZpbGUgY2FuIGJlIGdpdmVuIHdpdGggUlVMRVNGSUxFLiAgVXNlIHRo ZSBzeXN0ZW0ncw0KIyBuYXRpdmUgZm9ybWF0IGZvciBmaWxlbmFtZXMsIG9u IFVuaXggJ34nIGlzIGFsc28gcmVjb2duaXplZC4gIElmIGEgZmlsZW5hbWUN CiMgaXMgZ2l2ZW4sIHRoZSBmaWxlIG11c3QgZXhpc3QuDQojDQojIFNpbmds ZSBDRVJOLXN0eWxlIHJ1bGVzIGNhbiBiZSBzcGVjaWZpZWQgd2l0aCBSVUxF Uy4NCiMNCiMgQm90aCBvcHRpb25zIGNhbiBiZSByZXBlYXRlZCwgcnVsZXMg YWNjdW11bGF0ZSBpbiB0aGUgb3JkZXINCiMgZ2l2ZW4sIHRoZXkgd2lsbCBi ZSBhcHBsaWVkIGluIGZpcnN0LXRvLWxhc3Qgb3JkZXIuICBTZWUgY2VybnJ1 bGVzLnR4dA0KIyBpbiB0aGUgc2FtcGxlcyBzdWJkaXJlY3RvcnkgZm9yIGZ1 cnRoZXIgZXhwbGFuYXRpb24uDQojDQojIEV4YW1wbGVzOg0KLmV4IDUNCiMJ UlVMRVNGSUxFOi9ldGMvbHlueC9jZXJucnVsZXMNCiMJUlVMRTpGYWlsCWdv cGhlcjoqCQkgICAgICMgcmVqZWN0IGJ5IHNjaGVtZQ0KIwlSVUxFOlBhc3MJ ZmluZ2VyOi8vKkBsb2NhbGhvc3QvCSAgICAgIyBhbGxvdyB0aGlzLA0KIwlS VUxFOkZhaWwJZmluZ2VyOioJCSAgICAgIyBidXQgbm90IG90aGVycw0KIwlS VUxFOlJlZGlyZWN0CWh0dHA6Ly9vbGQuc2VydmVyLyoJaHR0cDovL25ldy5z ZXJ2ZXIvKg0KDQoNCi5oMSBBcHBlYXJhbmNlDQoNCi5oMiBQUkVUVFlTUkMN CiMgRW5hYmxlIHByZXR0eSBzb3VyY2Ugdmlldw0KI1BSRVRUWVNSQzpGQUxT RQ0KDQouaDIgUFJFVFRZU1JDX1NQRUMNCiMgUHJldHR5IHNvdXJjZSB2aWV3 IHNldHRpbmdzLiBUaGVzZSBzZXR0aW5ncyBhcmUgaW4gZWZmZWN0IHdoZW4g LXByZXR0eXNyYw0KIyBpcyBzcGVjaWZpZWQuDQojIFRoZSBmb2xsb3dpbmcg bGV4aWNhbCBlbGVtZW50cyAobGV4ZW1lcykgYXJlIHJlY29nbml6ZWQ6DQoj IGNvbW1lbnQsIHRhZywgYXR0cmlidXRlLCBhdHRyaWJ1dGUgdmFsdWUsIGdl bmVyYWxpemVkIGFuZ2xlIGJyYWNrZXRzICgNCiMgJzwnICc+JyAnPC8nICks IGVudGl0eSwgaHlwZXJsaW5rIGRlc3RpbmF0aW9uLCBlbnRpcmUgZmlsZSwg YmFkIHNlcXVlbmNlLA0KIyBiYWQgdGFnLCBiYWQgYXR0cmlidXRlLCBzZ21s IHNwZWNpYWwuDQojICBUaGUgZm9sbG93aW5nIGdyb3VwIG9mIG9wdGlvbiB0 ZWxscyB3aGljaCBzdHlsZXMgd2lsbCBzdXJyb3VuZCBlYWNoDQojIGxleGVt ZS4gVGhlIHN5bnRheCBvZiBvcHRpb24gaW4gdGhpcyBncm91cCBpczoNCiNQ UkVUVFlTUkNfU1BFQzo8TEVYRU1FTkFNRT46PFRBR1NQRUM+OjxUQUdTUEVD Pg0KIyBUaGUgZmlyc3QgPFRBR1NQRUM+IHNwZWNpZmllcyB3aGF0IHRhZ3Mg d2lsbCBwcmVjZWRlIGxleGVtZXMgb2YgdGhhdCBjbGFzcw0KIyBpbiB0aGUg aW50ZXJuYWwgaHRtbCBtYXJrdXAuIFRoZSBzZWNvbmQgLSB3aGF0IHdpbGwg YmUgcGxhY2VkIChpbnRlcm5hbGx5KQ0KIyBhZnRlciBpdC4NCiMgVEFHU1BF QyBoYXMgdGhlIGZvbGxvd2luZyBzeW50YXg6DQojIDxUQUdTUEVDPjo9IFsg KDxUQUdPUEVOPiB8IDxUQUdDTE9TRT4pIDxTUEFDRT4rIF0qDQojIDxUQUdP UEVOPjo9IHRhZ25hbWVbLmNsYXNzbmFtZV0NCiMgPFRBR0NMT1NFPjo9ICF0 YWduYW1lDQojDQojIFRoZSBmb2xsb3dpbmcgdGFibGUgZ2l2ZXMgY29ycmVz cG9uZGVuY2UgYmV0d2VlbiBsZXhlbWUgYW5kIGxleGVtZSBuYW1lDQoubmYN CiMgTGV4ZW1lICAgICAgICAgICAgICAgICAgIExFWEVNRU5BTUUgIEZVUlRI RVIgRVhQTEFOQVRJT04NCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIGNvbW1lbnQgICAg ICAgICAgICAgICAgICBDT01NDQojIHRhZyAgICAgICAgICAgICAgICAgICAg ICBUQUcgICAgICAgICByZWNvZ25pemVkIHRhZyBuYW1lIG9ubHkNCiMgYXR0 cmlidXRlICAgICAgICAgICAgICAgIEFUVFJJQg0KIyBhdHRyaWJ1dGUgdmFs dWUgICAgICAgICAgQVRUUlZBTA0KIyBnZW5lcmFsaXplZCBicmFja2V0cyAg ICAgQUJSQUNLRVQgICAgPCAgPiAgPC8NCiMgZW50aXR5ICAgICAgICAgICAg ICAgICAgIEVOVElUWQ0KIyBoeXBlcmxpbmsgZGVzdGluYXRpb24gICAgSFJF Rg0KIyBlbnRpcmUgZmlsZSAgICAgICAgICAgICAgRU5USVJFDQojIGJhZCBz ZXF1ZW5jZSAgICAgICAgICAgICBCQURTRVEgICAgICBiYWQgZW50aXR5IG9y IGludmFsaWQgY29uc3RydWN0IGF0IHRleHQNCiMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxldmVsLg0KIyBiYWQgdGFnICAgICAg ICAgICAgICAgICAgQkFEVEFHICAgICAgVW5yZWNvZ25pemVkIGNvbnN0cnVj dCBpbiBnZW5lcmFsaXplZA0KIyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnJhY2tldHMuDQojIGJhZCBhdHRyaWJ1dGUgICAgICAg ICAgICBCQURBVFRSICAgICBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHVu a25vd24gdG8gbHlueA0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb2YgdGhlIHRhZyBrbm93biB0byBseW54LiAoaS5lLiwNCiMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0 ZXMgb2YgdW5rbm93biB0YWdzIHdpbGwgaGF2ZQ0KIyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwIG9mICBBVFRSSUIpDQoj IHNnbWwgc3BlY2lhbCAgICAgICAgICAgICBTR01MU1BFQ0lBTCBkb2N0eXBl LCBzZ21sZWx0LCBzZ21sZWxlLA0KIyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2dtbGF0dGxpc3QsIG1hcmtlZCBzZWN0aW9uLCBp ZGVudGlmaWVyDQouZmkNCiMNCiMgTm90ZXM6DQojDQojIDEpIFRoZSBtYXJr dXAgZm9yIEhUTUxfRU5USVJFIHdpbGwgYmUgZW1pdHRlZCBvbmx5IG9uY2Ug LSBpdCB3aWxsIHN1cnJvdW5kDQojICAgIGVudGlyZSBmaWxlIHNvdXJjZS4N CiMNCiMgMikgVGhlIHRhZ25hbWVzIHNwZWNpZmllZCBieSBUQUdTUEVDIHNo b3VsZCBiZSB2YWxpZCBodG1sIHRhZyBuYW1lcy4NCiMNCiMgMykgSWYgdGhl IHRhZy9jbGFzcyBjb21iaW5hdGlvbiBnaXZlbiBieSBUQUdPUEVOIGlzIG5v dCBhc3NpZ25lZCBhIGNvbG9yDQojICAgIHN0eWxlIGluIGxzcyBmaWxlIChm b3IgbHlueCBjb21waWxlZCB3aXRoIGxzcyBzdXBwb3J0KSwgdGhhdCB0YWcv Y2xhc3MNCiMgICAgY29tYmluYXRpb24gd2lsbCBiZSBlbWl0dGVkIGFueXdh eSBkdXJpbmcgaW50ZXJuYWwgaHRtbCBtYXJrdXAuIFN1Y2gNCiMgICAgY29t YmluYXRpb25zIHdpbGwgYmUgYWxzbyByZXBvcnRlZCB0byB0aGUgdHJhY2Ug bG9nLg0KIw0KIyA0KSBMZXhlbWUgJ3RhZycgbWVhbnMgdGFnIG5hbWUgb25s eQ0KIw0KIyA1KSBBbmdsZSBicmFja2V0cyBvZiBodG1sIHNwZWNpYWxzIHdv bid0IGJlIHN1cnJvdW5kZWQgYnkgbWFya3VwIGZvciBBQlJBQ0tFVA0KIw0K LmV4DQojIFBSRVRUWVNSQ19TUEVDOkNPTU06QiBJOiFJICFCDQojICAgICAg ICAgICBIVE1MIGNvbW1lbnRzIHdpbGwgYmUgc3Vycm91bmRlZCBieSA8Yj48 aT4gYW5kIDwvaT48L2I+IGluIHRoZQ0KIyAgICAgICAgICAgaW50ZXJuYWwg aHRtbCBtYXJrdXANCi5leA0KIyBQUkVUVFlTUkNfU1BFQzpBVFRSVkFMOiBz cGFuLmF0dHJ2YWwgOiAhc3Bhbg0KIyAgICAgICAgICAgVmFsdWVzIG9mIHRo ZSBhdHRyaWJ1dGVzIHdpbGwgYmUgc3Vycm91bmRlZCBieSB0aGUNCiMgICAg ICAgICAgIDxTUEFOIGNsYXNzPWF0dHJ2YWw+IDwvU1BBTj4NCi5leA0KIyBQ UkVUVFlTUkNfU1BFQzpIUkVGOjoNCiMgICAgICAgICAgIE5vIHNwZWNpYWwg aHRtbCBtYXJrdXAgd2lsbCBzdXJyb3VuZCBoeXBlcmxpbmsgZGVzdGluYXRp b25zICgNCiMgICAgICAgICAgIHRoaXMgbWVhbnMgdGhhdCBvbmx5IGRlZmF1 bHQgY29sb3Igc3R5bGUgZm9yIGhyZWZzIHdpbGwgYmUgYXBwbGllZA0KIyAg ICAgICAgICAgdG8gdGhlbSkNCiMNCiMgRm9yIGx5bnggY29tcGlsZWQgd2l0 aCBsc3Mgc3VwcG9ydCwgdGhlIGZvbGxvd2luZyBzZXR0aW5ncyBhcmUgdGhl IGRlZmF1bHQ6DQojUFJFVFRZU1JDX1NQRUM6Q09NTTpzcGFuLmh0bWxzcmNf Y29tbWVudDohc3Bhbg0KI1BSRVRUWVNSQ19TUEVDOlRBRzpzcGFuLmh0bWxz cmNfdGFnOiFzcGFuDQojUFJFVFRZU1JDX1NQRUM6QVRUUklCOnNwYW4uaHRt bHNyY19hdHRyaWI6IXNwYW4NCiNQUkVUVFlTUkNfU1BFQzpBVFRSVkFMOnNw YW4uaHRtbHNyY19hdHRydmFsOiFzcGFuDQojUFJFVFRZU1JDX1NQRUM6QUJS QUNLRVQ6c3Bhbi5odG1sc3JjX2FicmFja2V0OiFzcGFuDQojUFJFVFRZU1JD X1NQRUM6RU5USVRZOnNwYW4uaHRtbHNyY19lbnRpdHk6IXNwYW4NCiNQUkVU VFlTUkNfU1BFQzpIUkVGOnNwYW4uaHRtbHNyY19ocmVmOiFzcGFuDQojUFJF VFRZU1JDX1NQRUM6RU5USVJFOnNwYW4uaHRtbHNyY19lbnRpcmU6IXNwYW4N CiNQUkVUVFlTUkNfU1BFQzpCQURTRVE6c3Bhbi5odG1sc3JjX2JhZHNlcToh c3Bhbg0KI1BSRVRUWVNSQ19TUEVDOkJBRFRBRzpzcGFuLmh0bWxzcmNfYmFk dGFnOiFzcGFuDQojUFJFVFRZU1JDX1NQRUM6QkFEQVRUUjpzcGFuLmh0bWxz cmNfYmFkYXR0cjohc3Bhbg0KI1BSRVRUWVNSQ19TUEVDOlNHTUxTUEVDSUFM OnNwYW4uaHRtbHNyY19zZ21sc3BlY2lhbDohc3Bhbg0KIyB0aGUgc3R5bGVz IGNvcnJlc3BvbmRpbmcgdG8gdGhlbSBhcmUgcHJlc2VudCBpbiBzYW1wbGUg LmxzcyBmaWxlLg0KIyBGb3IgbHlueCBjb21waWxlZCB3aXRob3V0IGxzcyBz dXBwb3J0LCB0aGUgZm9sbG93aW5nIHNldHRpbmdzIGFyZSB0aGUgZGVmYXVs dDoNCiNQUkVUVFlTUkNfU1BFQzpDT01NOmI6IWINCiNQUkVUVFlTUkNfU1BF QzpUQUc6YjohYg0KI1BSRVRUWVNSQ19TUEVDOkFUVFJJQjpiOiFiDQojUFJF VFRZU1JDX1NQRUM6QVRUUlZBTDo6DQojUFJFVFRZU1JDX1NQRUM6QUJSQUNL RVQ6YjohYg0KI1BSRVRUWVNSQ19TUEVDOkVOVElUWTpiOiFiDQojUFJFVFRZ U1JDX1NQRUM6SFJFRjo6DQojUFJFVFRZU1JDX1NQRUM6RU5USVJFOjoNCiNQ UkVUVFlTUkNfU1BFQzpCQURTRVE6YjohYg0KI1BSRVRUWVNSQ19TUEVDOkJB RFRBRzo6DQojUFJFVFRZU1JDX1NQRUM6QkFEQVRUUjo6DQojUFJFVFRZU1JD X1NQRUM6U0dNTFNQRUNJQUw6YjohYg0KDQoNCi5oMiBIVE1MU1JDX0FUVFJO QU1FX1hGT1JNDQouaDIgSFRNTFNSQ19UQUdOQU1FX1hGT1JNDQojIE9wdGlv bnMgSFRNTFNSQ19UQUdOQU1FX1hGT1JNIGFuZCBIVE1MU1JDX0FUVFJOQU1F X1hGT1JNIGNvbnRyb2wgdGhlIHdheSB0aGUNCiMgbmFtZXMgb2YgdGFncyBh bmQgbmFtZXMgb2YgYXR0cmlidXRlcyBhcmUgdHJhbnNmb3JtZWQgY29ycmVz cG9uZGluZ2x5Lg0KIyBQb3NzaWJsZSB2YWx1ZXM6IDAgLSBsb3dlcmNhc2Us IDEgLSBsZWF2ZSBhcyBpcywgMiAtIHVwcGVyY2FzZS4NCiNIVE1MU1JDX1RB R05BTUVfWEZPUk06Mg0KI0hUTUxTUkNfQVRUUk5BTUVfWEZPUk06Mg0KDQoN Ci5oMiBQUkVUVFlTUkNfVklFV19OT19BTkNIT1JfTlVNQkVSSU5HDQojIFBS RVRUWVNSQ19WSUVXX05PX0FOQ0hPUl9OVU1CRVJJTkcgLSBwcmV0dHkgc291 cmNlIHZpZXcgc2V0dGluZw0KIyBJZiAia2V5cGFkIG1vZGUiIGluICdPJ3B0 aW9ucyBzY3JlZW4gaXMgIkxpbmtzIGFyZSBudW1iZXJlZCIgb3INCiMgIkxp bmtzIGFuZCBmb3JtIGZpZWxkcyBhcmUgbnVtYmVyZWQiLCBhbmQgUFJFVFRZ U1JDX1ZJRVdfTk9fQU5DSE9SX05VTUJFUklORyBpcw0KIyBUUlVFLCB0aGVu IGxpbmtzIHdvbid0IGJlIG51bWJlcmVkIGluIHBzcmMgdmlldyBhbmQgd2ls bCBiZSBudW1iZXJlZA0KIyBvdGhlcndpc2UuIFNldCB0aGlzIHNldHRpbmcg dG8gVFJVRSBpZiB5b3UgcHJlZmVyIG51bWJlcmVkIGxpbmtzLCBidXQgd2lz aA0KIyB0byBnZXQgdmFsaWQgSFRNTCBzb3VyY2Ugd2hlbiBwcmludGluZyBv ciBtYWlsaW5nIHdoZW4gaW4gcHNyYyB2aWV3Lg0KIyBEZWZhdWx0IGlzIEZB TFNFLg0KI1BSRVRUWVNSQ19WSUVXX05PX0FOQ0hPUl9OVU1CRVJJTkc6RkFM U0UNCg0KDQouaDEgSFRNTCBQYXJzaW5nDQoNCi5oMiBGT1JDRV9FTVBUWV9I UkVGTEVTU19BDQojIEZPUkNFX0VNUFRZX0hSRUZMRVNTX0EgLSBIVE1MIHBh cnNpbmcNCiMgVGhpcyBvcHRpb24gbWlycm9ycyBjb21tYW5kLWxpbmUgb3B0 aW9uIHdpdGggdGhlIHNhbWUgbmFtZS4gIERlZmF1bHQgaXMNCiMgRkFMU0Uu ICBJZiB0cnVlLCB0aGVuIGFueSAnQScgZWxlbWVudCB3aXRob3V0IEhSRUYg d2lsbCBiZSBjbG9zZWQNCiMgaW1tZWRpYXRlbHkuICBUaGlzIGlzIHVzZWZ1 bCB3aGVuIHZpZXdpbmcgZG9jdW1lbnRhdGlvbiBwcm9kdWNlZCBieSBicm9r ZW4NCiMgdHJhbnNsYXRvciB0aGF0IGRvZXNuJ3QgZW1pdCBiYWxhbmNlZCBB IGVsZW1lbnRzLiAgSWYgbHlueCB3YXMgY29tcGlsZWQgd2l0aA0KIyBjb2xv ciBzdHlsZXMsIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gVFJVRSB3aWxsIG1h a2UgbHlueCBzY3JlZW4gbXVjaCBtb3JlDQojIHJlYXNvbmFibGUgKG90aGVy d2lzZSBhbGwgdGV4dCB3aWxsIHByb2JhYmx5IGhhdmUgY29sb3IgY29ycmVz cG9uZGluZyB0byB0aGUNCiMgQSBlbGVtZW50KS4NCiMNCiNGT1JDRV9FTVBU WV9IUkVGTEVTU19BOkZBTFNFDQoNCi5oMiBISURERU5fTElOS19NQVJLRVIN CiMgSElEREVOX0xJTktfTUFSS0VSIC0gSFRNTCBwYXJzaW5nDQojIFRoaXMg b3B0aW9uIGRlZmluZXMgdGhlIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCBh cyB0aXRsZSBvZiBoaWRkZW4gbGluayAoYQ0KIyBsaW5rIHRoYXQgb3RoZXJ3 aXNlIHdpbGwgaGF2ZSBubyBsYWJlbCBhc3NvY2lhdGVkIHdpdGggaXQpLiAg VXNpbmcgYW4gZW1wdHkNCiMgc3RyaW5nIGFzIHRoZSB2YWx1ZSB3aWxsIGNh dXNlIGx5bnggdG8gYmVoYXZlIGluIHRoZSBvbGQgd2F5IC0gaGlkZGVuIGxp bmtzDQojIHdpbGwgYmUgaGFuZGxlZCBhY2NvcmRpbmcgdG8gb3RoZXIgc2V0 dGluZ3MgKG1vc3RseSB0aGUgcGFyYW1ldGVyIG9mDQojIC0taGlkZGVubGlu a3MgY29tbWFuZC1saW5lIHN3aXRjaCkuICBJZiB0aGUgdmFsdWUgaXMgbm9u LWVtcHR5IHN0cmluZywgaGlkZGVuDQojIGxpbmsgYmVjb21lcyBub24taGlk ZGVuIHNvIGl0IHdvbid0IGJlIGhhbmRsZWQgYXMgaGlkZGVuIGxpbmssIGUu Zy4sIGxpc3RlZA0KIyBhbW9uZyBoaWRkZW4gbGlua3Mgb24gJ2wnaXN0aW5n IHBhZ2UuDQojDQpISURERU5fTElOS19NQVJLRVI6aGlkZGVuLWxpbmsNCg0K LmgxIEFwcGVhcmFuY2UNCg0KLmgyIEpVU1RJRlkNCiMgSlVTVElGWSAtIEFw cGVhcmFuY2UNCiMgVGhpcyBvcHRpb24gbWlycm9ycyBjb21tYW5kLWxpbmUg b3B0aW9uIHdpdGggc2FtZSBuYW1lLiAgRGVmYXVsdCBpcyBUUlVFLiAgSWYN CiMgdHJ1ZSwgbW9zdCBvZiB0ZXh0IChleGNlcHQgaGVhZGVycyBhbmQgbGlr ZSB0aGlzKSB3aWxsIGJlIGp1c3RpZmllZC4gIFRoaXMNCiMgaGFzIG5vIGlu Zmx1ZW5jZSBvbiBDSksgdGV4dCByZW5kZXJpbmcuDQojDQojIFRoaXMgb3B0 aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGlmIEx5bnggd2FzIGNvbXBpbGVkIHdp dGggRVhQX0pVU1RJRllfRUxUUy4NCiMNCiNKVVNUSUZZOlRSVUUNCg0KLmgy IEpVU1RJRllfTUFYX1ZPSURfUEVSQ0VOVCANCiMgSlVTVElGWV9NQVhfVk9J RF9QRVJDRU5UIC0gQXBwZWFyYW5jZQ0KIyBUaGlzIG9wdGlvbiBjb250cm9s cyB0aGUgbWF4aW11bSBhbGxvd2VkIHZhbHVlIGZvciByYXRpbyAoaW4gcGVy Y2VudHMpIG9mDQojICd0aGUgbnVtYmVyIG9mIHNwYWNlcyB0byBzcHJlYWQg YWNyb3NzIHRoZSBsaW5lIHRvIGp1c3RpZnkgaXQnIHRvDQojICdtYXggbGlu ZSBzaXplIGZvciBjdXJyZW50IHN0eWxlIGFuZCBuZXN0aW5nJyB3aGVuIGp1 c3RpZmljYXRpb24gaXMgYWxsb3dlZC4NCiMgV2hlbiB0aGF0IHJhdGlvIGV4 Y2VlZHMgdGhlIHZhbHVlIHNwZWNpZmllZCwgdGhhdCBwYXJ0aWN1bGFyIGxp bmUgd29uJ3QgYmUNCiMganVzdGlmaWVkLiBJLmUuIHRoZSB2YWx1ZSAyOCBm b3IgdGhpcyBzZXR0aW5nIHdpbGwgbWVhbiBtYXhpbXVtIHZhbHVlIGZvcg0K IyB0aGF0IHJhdGlvIGlzIDAuMjguDQojDQojSlVTVElGWV9NQVhfVk9JRF9Q RVJDRU5UOjM1DQoNCg0KLmgxIEludGVyYWN0aW9uDQoNCi5oMiBURVhURklF TERTX05FRURfQUNUSVZBVElPTg0KIyBJZiBURVhURklFTERTX05FRURfQUNU SVZBVElPTiBpcyBzZXQgdG8gVFJVRSwgYW5kIGx5bnggd2FzIGNvbXBpbGVk IHdpdGgNCiMgVEVYVEZJRUxEU19NQVlfTkVFRF9BQ1RJVkFUSU9OIGRlZmlu ZWQsIHRoZW4gdGV4dCBpbnB1dCBmb3JtIGZpZWxkcyBuZWVkDQojIHRvIGJl IGFjdGl2YXRlZCAoYnkgcHJlc3NpbmcgdGhlIEVudGVyIGtleSBvciBzaW1p bGFyKSBiZWZvcmUgdGhlIHVzZXINCiMgY2FuIGVudGVyIG9yIG1vZGlmeSBp bnB1dC4gIEJ5IGRlZmF1bHQsIGlucHV0IGZpZWxkcyBiZWNvbWUgYXV0b21h dGljYWxseQ0KIyBhY3RpdmF0ZWQgd2hlbiBzZWxlY3RlZC4gIFJlcXVpcmlu ZyBleHBsaWNpdCBhY3RpdmF0aW9uIGNhbiBiZSBkZXNpcmVkIGZvcg0KIyB1 c2VycyB3aG8gdXNlIGFscGhhbnVtZXJpYyBrZXlzIGZvciBuYXZpZ2F0aW9u IChvciBvdGhlciBrZXlzIHRoYXQgaGF2ZQ0KIyBzcGVjaWFsIG1lYW5pbmcg aW4gdGhlIGxpbmUgZWRpdG9yIC0gJyAnLCAnYicsIElOUywgREVMLCBldGMp LCBhbmQgZG9uJ3QNCiMgd2FudCB0byAnZ2V0IHN0dWNrJyBpbiBmb3JtIGZp ZWxkcy4gIEluc3RlYWQgb2Ygc2V0dGluZyB0aGUgb3B0aW9uIGhlcmUsDQoj IGV4cGxpY2l0IGFjdGl2YXRpb24gY2FuIGFsc28gYmUgcmVxdWVzdGVkIHdp dGggdGhlIC10bmEgY29tbWFuZCBsaW5lDQojIG9wdGlvbi4NCiMNCiNURVhU RklFTERTX05FRURfQUNUSVZBVElPTjpGQUxTRQ0KDQouaDIgTEVGVEFSUk9X X0lOX1RFWFRGSUVMRF9QUk9NUFQNCiMgTEVGVEFSUk9XX0lOX1RFWFRGSUVM RF9QUk9NUFQNCiMgVGhpcyBvcHRpb24gY29udHJvbHMgd2hhdCBoYXBwZW5z IHdoZW4gYSBMZWZ0IEFycm93IGtleSBpcyBwcmVzc2VkIHdoaWxlDQojIGlu IHRoZSBmaXJzdCBwb3NpdGlvbiBvZiBhbiBhY3RpdmUgdGV4dCBpbnB1dCBm aWVsZC4gIEJ5IGRlZmF1bHQsIEx5bngNCiMgYXNrcyBmb3IgY29uZmlybWF0 aW9uICgiRG8geW91IHdhbnQgdG8gZ28gYmFjayB0byB0aGUgcHJldmlvdXMg ZG9jdW1lbnQ/IikNCiMgb25seSBpZiB0aGUgY29udGVudHMgb2YgdGhlIGZp ZWxkcyBoYXZlIGJlZW4gY2hhbmdlZCBzaW5jZSBlbnRlcmluZyBpdC4NCiMg SWYgc2V0IHRvIFRSVUUsIHRoZSBjb25maXJtYXRpb24gcHJvbXB0IGlzIGFs d2F5cyBpc3N1ZWQuDQojDQojTEVGVEFSUk9XX0lOX1RFWFRGSUVMRF9QUk9N UFQ6RkFMU0UNCg0KDQouaDEgVGltZW91dHMNCg0KLmgyIENPTk5FQ1RfVElN RU9VVA0KIyBTcGVjaWZpZXMgKGluIHNlY29uZHMpIGNvbm5lY3QgdGltZW91 dC4gTm90IGF2YWlsYWJsZSB1bmRlciBET1MgKHVzZQ0KIyBzb2NrZGVsYXkg cGFyYW1ldGVyIG9mIHdhdHRjcCkuIERlZmF1bHQgdmFsdWUgaXMgcmF0aGVy IGh1Z2UuDQojQ09OTkVDVF9USU1FT1VUOjE4MDAwDQoNCg0KLmgxIEludGVy bmFsIEJlaGF2aW9yDQojIFRoZXNlIHNldHRpbmdzIGNvbnRyb2wgaW50ZXJu YWwgbHlueCBiZWhhdmlvciAtIHRoZSB3YXkgaXQgaW50ZXJhY3RzIHdpdGgg dGhlDQojIG9wZXJhdGluZyBzeXN0ZW0gYW5kIEludGVybmV0LiAgTW9kaWZ5 aW5nIHRoZXNlIHNldHRpbmdzIHdpbGwgbm90IGNoYW5nZQ0KIyB0aGUgcmVu ZGl0aW9uIG9mIGRvY3VtZW50cyB0aGF0IHlvdSBicm93c2Ugd2l0aCBseW54 LCBidXQgY2FuIGNoYW5nZSB2YXJpb3VzDQojIGRlbGF5cyBhbmQgcmVzb3Vy Y2UgdXRpbGl6YXRpb24uDQoNCi5oMiBGVFBfUEFTU0lWRQ0KIyBTZXQgRlRQ X1BBU1NJVkUgdG8gVFJVRSBpZiB5b3Ugd2FudCB0byB1c2UgcGFzc2l2ZSBt b2RlIGZ0cCB0cmFuc2ZlcnMuDQojIFlvdSBtaWdodCBoYXZlIHRvIGRvIHRo aXMgaWYgeW91J3JlIGJlaGluZCBhIHJlc3RyaWN0aXZlIGZpcmV3YWxsLg0K I0ZUUF9QQVNTSVZFOkZBTFNFDQo= ---1463784950-383957362-1016635994=:2455--