From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 325 invoked by alias); 23 Apr 2002 02:28:24 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 313 invoked from network); 23 Apr 2002 02:28:22 -0000 Received: from unknown (HELO pasiphae01.frii.com) (216.17.128.33) by sources.redhat.com with SMTP; 23 Apr 2002 02:28:22 -0000 Received: from deimos.frii.net (deimos.frii.com [216.17.128.2]) by pasiphae01.frii.com (8.12.2/8.12.2) with ESMTP id g3N2SLx5040214 for ; Mon, 22 Apr 2002 20:28:21 -0600 (MDT) Received: from ari-co11-233.rasserver.net (ari-co11-233.rasserver.net [204.32.196.233]) by deimos.frii.net (8.12.3/8.12.3) with ESMTP id g3N2S3Xs006859 for ; Mon, 22 Apr 2002 20:28:04 -0600 (MDT) Date: Mon, 22 Apr 2002 19:28:00 -0000 From: "Theodore A. Roth" X-X-Sender: troth@bozoland.mynet To: gdb-patches@sources.redhat.com Subject: [PATCH] Add support for AVR Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-193043426-1019529175=:11463" X-SW-Source: 2002-04/txt/msg00820.txt.bz2 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. --8323328-193043426-1019529175=:11463 Content-Type: TEXT/PLAIN; charset=US-ASCII Content-length: 247 Hi, This patch adds support for Atmel AVR microcontrollers. I've heard no complaints from the AVR community using this patch, so I guess it's ready to go in. I don't have commit access, someone else is going to have to handle that. Ted Roth --8323328-193043426-1019529175=:11463 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="gdb-avr.diff" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="gdb-avr.diff" Content-length: 66901 CSogTWFrZWZpbGUuaW46IEFkZCBzdXBwb3J0IGZvciBBVlIgdGFyZ2V0Lg0K CSogY29uZmlndXJlLnRndDogQWRkIHN1cHBvcnQgZm9yIEFWUiB0YXJnZXQu DQoJKiBhdnItdGRlcC5jOiBOZXcgZmlsZQ0KCSogY29uZmlnL2F2ci9hdnIu bXQ6IE5ldyBmaWxlLg0KDQpkaWZmIC11cnBOIC0tZXhjbHVkZT1DVlMgc3Jj LW9yaWcvZ2RiL01ha2VmaWxlLmluIHNyYy9nZGIvTWFrZWZpbGUuaW4NCi0t LSBzcmMtb3JpZy9nZGIvTWFrZWZpbGUuaW4JTW9uIEFwciAyMiAxMzo0MTo1 NSAyMDAyDQorKysgc3JjL2dkYi9NYWtlZmlsZS5pbglNb24gQXByIDIyIDE5 OjU1OjM3IDIwMDINCkBAIC0xMTc4LDYgKzExNzgsNyBAQCBBTExERVBGSUxF UyA9IDI5ay1zaGFyZS91ZGkvdWRpcDJzb2MuYyAyDQogCWFscGhhZmJzZC10 ZGVwLmMgXA0KIAlhcm0tbGludXgtbmF0LmMgYXJtLWxpbnV4LXRkZXAuYyBh cm0tdGRlcC5jIFwNCiAJYXJtbmJzZC1uYXQuYyBhcm1uYnNkLXRkZXAuYyBc DQorCWF2ci10ZGVwLmMgXA0KIAljb2ZmLXNvbGliLmMgXA0KIAljb3JlLXNv bDIuYyBjb3JlLXJlZ3NldC5jIGNvcmUtYW91dC5jIGNvcmVsb3cuYyBcDQog CWRjYWNoZS5jIGRlbHRhNjgtbmF0LmMgZHB4Mi1uYXQuYyBkc3RyZWFkLmMg ZXhlYy5jIGZvcmstY2hpbGQuYyBcDQpAQCAtMTI3Miw2ICsxMjczLDkgQEAg YXJtbmJzZC1uYXQubzogYXJtbmJzZC1uYXQuYyAkKGRlZnNfaCkgYQ0KIA0K IGFybW5ic2QtdGRlcC5vOiBhcm1uYnNkLXRkZXAuYyAkKGRlZnNfaCkgYXJt LXRkZXAuaA0KIA0KK2F2ci10ZGVwLm86IGF2ci10ZGVwLmMgJChkZWZzX2gp ICQoZ2RiY21kX2gpICQoZ2RiY29yZV9oKSAkKGluZmVyaW9yX2gpIFwNCisJ JChzeW1maWxlX2gpICQocmVnY2FjaGVfaCkgJChhcmNoX3V0aWxzX2gpDQor DQogYmNhY2hlLm86IGJjYWNoZS5jICQoYmNhY2hlX2gpICQoZGVmc19oKQ0K IA0KIGJsb2NrZnJhbWUubzogYmxvY2tmcmFtZS5jICQoZGVmc19oKSAkKGdk YmNvcmVfaCkgJChpbmZlcmlvcl9oKSBcDQpkaWZmIC11cnBOIC0tZXhjbHVk ZT1DVlMgc3JjLW9yaWcvZ2RiL2F2ci10ZGVwLmMgc3JjL2dkYi9hdnItdGRl cC5jDQotLS0gc3JjLW9yaWcvZ2RiL2F2ci10ZGVwLmMJV2VkIERlYyAzMSAx NzowMDowMCAxOTY5DQorKysgc3JjL2dkYi9hdnItdGRlcC5jCU1vbiBBcHIg MjIgMTk6NTY6MDEgMjAwMg0KQEAgLTAsMCArMSwxMzY5IEBADQorLyogVGFy Z2V0LWRlcGVuZGVudCBjb2RlIGZvciBBdG1lbCBBVlIsIGZvciBHREIuDQor ICAgQ29weXJpZ2h0IDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIw MDEsIDIwMDINCisgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4N CisNCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuDQorDQorICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkNCisgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQ0KKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQorICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisNCisgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwNCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUNCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLg0KKw0KKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQor ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUNCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsDQorICAgQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuICAqLw0KKw0KKy8qIENvbnRyaWJ1dGVkIGJ5IFRoZW9k b3JlIEEuIFJvdGgsIHRyb3RoQHZlcmluZXQuY29tICovDQorDQorLyogUG9y dGlvbnMgb2YgdGhpcyBmaWxlIHdlcmUgdGFrZW4gZnJvbSB0aGUgb3JpZ2lu YWwgZ2RiLTQuMTggcGF0Y2ggZGV2ZWxvcGVkDQorICAgYnkgRGVuaXMgQ2hl cnR5a292LCBkZW5pc2NAb3ZlcnRhLnJ1ICovDQorDQorI2luY2x1ZGUgImRl ZnMuaCINCisjaW5jbHVkZSAiZ2RiY21kLmgiDQorI2luY2x1ZGUgImdkYmNv cmUuaCINCisjaW5jbHVkZSAiaW5mZXJpb3IuaCINCisjaW5jbHVkZSAic3lt ZmlsZS5oIg0KKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiDQorI2luY2x1ZGUg InJlZ2NhY2hlLmgiDQorDQorLyogQVZSIEJhY2tncm91bmQ6DQorDQorICAg KEFWUiBtaWNyb3MgYXJlIHB1cmUgSGFydmFyZCBBcmNoaXRlY3R1cmUgcHJv Y2Vzc29ycy4pDQorDQorICAgVGhlIEFWUiBmYW1pbHkgb2YgbWljcm9jb250 cm9sbGVycyBoYXZlIHRocmVlIGRpc3RpbmN0bHkgZGlmZmVyZW50IG1lbW9y eQ0KKyAgIHNwYWNlczogZmxhc2gsIHNyYW0gYW5kIGVlcHJvbS4gVGhlIGZs YXNoIGlzIDE2IGJpdHMgd2lkZSBhbmQgaXMgdXNlZCBmb3INCisgICB0aGUg bW9zdCBwYXJ0IHRvIHN0b3JlIHByb2dyYW0gaW5zdHJ1Y3Rpb25zLiBUaGUg c3JhbSBpcyA4IGJpdHMgd2lkZSBhbmQgaXMNCisgICB1c2VkIGZvciB0aGUg c3RhY2sgYW5kIHRoZSBoZWFwLiBTb21lIGRldmljZXMgbGFjayBzcmFtIGFu ZCBzb21lIGNhbiBoYXZlDQorICAgYW4gYWRkaXRpb25hbCBleHRlcm5hbCBz cmFtIGFkZGVkIG9uIGFzIGEgcGVyaXBoZXJhbC4NCisNCisgICBUaGUgZWVw cm9tIGlzIDggYml0cyB3aWRlIGFuZCBpcyB1c2VkIHRvIHN0b3JlIGRhdGEg d2hlbiB0aGUgZGV2aWNlIGlzDQorICAgcG93ZXJlZCBkb3duLiBFZXByb20g aXMgbm90IGRpcmVjdGx5IGFjY2Vzc2libGUsIGl0IGNhbiBvbmx5IGJlIGFj Y2Vzc2VkDQorICAgdmlhIGlvLXJlZ2lzdGVycyB1c2luZyBhIHNwZWNpYWwg YWxnb3JpdGhtLiBBY2Nlc3NpbmcgZWVwcm9tIHZpYSBnZGIncw0KKyAgIHJl bW90ZSBzZXJpYWwgcHJvdG9jb2wgKCdtJyBvciAnTScgcGFja2V0cykgbG9v a3MgZGlmZmljdWx0IHRvIGRvIGFuZCBpcw0KKyAgIG5vdCBpbmNsdWRlZCBh dCB0aGlzIHRpbWUuDQorDQorICAgW1RoZSBlZXByb20gY291bGQgYmUgcmVh ZCBtYW51YWxseSB2aWEgYGB4L2IgPGVhZGRyICsgQVZSX0VNRU1fU1RBUlQ+ Jycgb3INCisgICB3cml0dGVuIHVzaW5nIGBgc2V0IHt1bnNpZ25lZCBjaGFy fTxlYWRkciArIEFWUl9FTUVNX1NUQVJUPicnLiAgRm9yIHRoaXMgdG8NCisg ICB3b3JrLCB0aGUgcmVtb3RlIHRhcmdldCBtdXN0IGJlIGFibGUgdG8gaGFu ZGxlIGVlcHJvbSBhY2Nlc3NlcyBhbmQgcGVyZm9ybQ0KKyAgIHRoZSBhZGRy ZXNzIHRyYW5zbGF0aW9uLl0NCisNCisgICBBbGwgdGhyZWUgbWVtb3J5IHNw YWNlcyBoYXZlIHBoeXNpY2FsIGFkZHJlc3NlcyBiZWdpbm5pbmcgYXQgMHgw LiBJbg0KKyAgIGFkZGl0aW9uLCB0aGUgZmxhc2ggaXMgYWRkcmVzc2VkIGJ5 IGdjYy9iaW51dGlscy9nZGIgd2l0aCByZXNwZWN0IHRvIDggYml0DQorICAg Ynl0ZXMgaW5zdGVhZCBvZiB0aGUgMTYgYml0IHdpZGUgd29yZHMgdXNlZCBi eSB0aGUgcmVhbCBkZXZpY2UgZm9yIHRoZQ0KKyAgIFByb2dyYW0gQ291bnRl ci4NCisNCisgICBJbiBvcmRlciBmb3IgcmVtb3RlIHRhcmdldHMgdG8gd29y ayBjb3JyZWN0bHksIGV4dHJhIGJpdHMgbXVzdCBiZSBhZGRlZCB0bw0KKyAg IGFkZHJlc3NlcyBiZWZvcmUgdGhleSBhcmUgc2VuZCB0byB0aGUgdGFyZ2V0 IG9yIHJlY2VpdmVkIGZyb20gdGhlIHRhcmdldA0KKyAgIHZpYSB0aGUgcmVt b3RlIHNlcmlhbCBwcm90b2NvbC4gVGhlIGV4dHJhIGJpdHMgYXJlIHRoZSBN U0JzIGFuZCBhcmUgdXNlZCB0bw0KKyAgIGRlY29kZSB3aGljaCBtZW1vcnkg c3BhY2UgdGhlIGFkZHJlc3MgaXMgcmVmZXJyaW5nIHRvLiAqLw0KKw0KKyN1 bmRlZiBYTUFMTE9DDQorI2RlZmluZSBYTUFMTE9DKFRZUEUpICgoVFlQRSop IHhtYWxsb2MgKHNpemVvZiAoVFlQRSkpKQ0KKw0KKyN1bmRlZiBFWFRSQUNU X0lOU04NCisjZGVmaW5lIEVYVFJBQ1RfSU5TTihhZGRyKSBleHRyYWN0X3Vu c2lnbmVkX2ludGVnZXIoYWRkciwyKQ0KKw0KKy8qIENvbnN0YW50czogcHJl Zml4ZWQgd2l0aCBBVlJfIHRvIGF2b2lkIG5hbWUgc3BhY2UgY2xhc2hlcyAq Lw0KKw0KK2VudW0NCisgIHsNCisgICAgQVZSX1JFR19XICAgICAgICAgPSAy NCwNCisgICAgQVZSX1JFR19YICAgICAgICAgPSAyNiwNCisgICAgQVZSX1JF R19ZICAgICAgICAgPSAyOCwNCisgICAgQVZSX0ZQX1JFR05VTSAgICAgPSAy OCwNCisgICAgQVZSX1JFR19aICAgICAgICAgPSAzMCwNCisgICAgICAgICAg ICAgICAgICAgIA0KKyAgICBBVlJfU1JFR19SRUdOVU0gICA9IDMyLA0KKyAg ICBBVlJfU1BfUkVHTlVNICAgICA9IDMzLA0KKyAgICBBVlJfUENfUkVHTlVN ICAgICA9IDM0LA0KKw0KKyAgICBBVlJfTlVNX1JFR1MgICAgICA9IDMyICsg MSAvKlNSRUcqLyArIDEgLypTUCovICsgMSAvKlBDKi8sDQorICAgIEFWUl9O VU1fUkVHX0JZVEVTID0gMzIgKyAxIC8qU1JFRyovICsgMiAvKlNQKi8gKyA0 IC8qUEMqLywNCisNCisgICAgQVZSX1BDX1JFR19JTkRFWCAgPSAzNSwgICAg ICAgLyogaW5kZXggaW50byBhcnJheSBvZiByZWdpc3RlcnMgKi8NCisNCisg ICAgQVZSX01BWF9QUk9MT0dVRV9TSVpFID0gNTYsICAgLyogYnl0ZXMgKi8N CisNCisgICAgLyogQ291bnQgb2YgcHVzaGVkIHJlZ2lzdGVycy4gRnJvbSBy MiB0byByMTcgKGluY2x1c2l2ZWx5KSwgcjI4LCByMjkgKi8NCisgICAgQVZS X01BWF9QVVNIRVMgICAgPSAxOCwNCisNCisgICAgLyogTnVtYmVyIG9mIHRo ZSBsYXN0IHB1c2hlZCByZWdpc3Rlci4gcjE3IGZvciBjdXJyZW50IGF2ci1n Y2MgKi8NCisgICAgQVZSX0xBU1RfUFVTSEVEX1JFR05VTSA9IDE3LA0KKw0K KyAgICAvKiBGSVhNRTogVFJvdGgvMjAwMi0wMS0/PzogQ2FuIHdlIHNoaWZ0 IGFsbCB0aGVzZSBtZW1vcnkgbWFza3MgbGVmdCA4DQorICAgICAgIGJpdHM/ IERvIHRoZXNlIGhhdmUgdG8gbWF0Y2ggdGhlIGJmZCB2bWEgdmFsdWVzPy4g SXQgc3VyZSB3b3VsZCBtYWtlDQorICAgICAgIHRoaW5ncyBlYXNpZXIgaW4g dGhlIGZ1dHVyZSBpZiB0aGV5IGRpZG4ndCBuZWVkIHRvIG1hdGNoLg0KKw0K KyAgICAgICBOb3RlOiBJIGNob3NlIHRoZXNlIHZhbHVlcyBzbyBhcyB0byBi ZSBjb25zaXN0ZW50IHdpdGggYmZkIHZtYQ0KKyAgICAgICBhZGRyZXNzZXMu DQorDQorICAgICAgIFRSb3RoLzIwMDItMDQtMDg6IFRoZXJlIGlzIGFscmVh ZHkgYSBjb25mbGljdCB3aXRoIHZlcnkgbGFyZ2UgcHJvZ3JhbXMNCisgICAg ICAgaW4gdGhlIG1lZ2ExMjguIFRoZSBtZWdhMTI4IGhhcyAxMjhLIGluc3Ry dWN0aW9uIGJ5dGVzICg2NEsgd29yZHMpLA0KKyAgICAgICB0aHVzIHRoZSBN b3N0IFNpZ25pZmljYW50IEJpdCBpcyAweDEwMDAwIHdoaWNoIGdldHMgbWFz a2VkIG9mZiBteQ0KKyAgICAgICBBVlJfTUVNX01BU0suDQorDQorICAgICAg IFRoZSBwcm9ibGVtIG1hbmlmZXN0cyBpdHNlbGYgd2hlbiB0cnlpbmcgdG8g c2V0IGEgYnJlYWtwb2ludCBpbiBhDQorICAgICAgIGZ1bmN0aW9uIHdoaWNo IHJlc2lkZXMgaW4gdGhlIHVwcGVyIGhhbGYgb2YgdGhlIGluc3RydWN0aW9u IHNwYWNlIGFuZA0KKyAgICAgICB0aHVzIHJlcXVpcmVzIGEgMTctYml0IGFk ZHJlc3MuDQorDQorICAgICAgIEZvciBub3csIEkndmUganVzdCByZW1vdmVk IHRoZSBFRVBST00gbWFzayBhbmQgY2hhbmdlZCBBVlJfTUVNX01BU0sNCisg ICAgICAgZnJvbSAweDAwZmYwMDAwIHRvIDB4MDBmMDAwMDAuIEVlcHJvbSBp cyBub3QgYWNjZXNzaWJsZSBmcm9tIGdkYiB5ZXQsDQorICAgICAgIGJ1dCBj b3VsZCBiZSBmb3Igc29tZSByZW1vdGUgdGFyZ2V0cyBieSBqdXN0IGFkZGlu ZyB0aGUgY29ycmVjdCBvZmZzZXQNCisgICAgICAgdG8gdGhlIGFkZHJlc3Mg YW5kIGxldHRpbmcgdGhlIHJlbW90ZSB0YXJnZXQgaGFuZGxlIHRoZSBsb3ct bGV2ZWwNCisgICAgICAgZGV0YWlscyBvZiBhY3R1YWxseSBhY2Nlc3Npbmcg dGhlIGVlcHJvbS4gKi8NCisNCisgICAgQVZSX0lNRU1fU1RBUlQgICAgPSAw eDAwMDAwMDAwLCAvKiBJTlNOIG1lbW9yeSAqLw0KKyAgICBBVlJfU01FTV9T VEFSVCAgICA9IDB4MDA4MDAwMDAsIC8qIFNSQU0gbWVtb3J5ICovDQorI2lm IDENCisgICAgLyogTm8gZWVwcm9tIG1hc2sgZGVmaW5lZCAqLw0KKyAgICBB VlJfTUVNX01BU0sgICAgICA9IDB4MDBmMDAwMDAsIC8qIG1hc2sgdG8gZGV0 ZXJtaW5lIG1lbW9yeSBzcGFjZSAqLw0KKyNlbHNlDQorICAgIEFWUl9FTUVN X1NUQVJUICAgID0gMHgwMDgxMDAwMCwgLyogRUVQUk9NIG1lbW9yeSAqLw0K KyAgICBBVlJfTUVNX01BU0sgICAgICA9IDB4MDBmZjAwMDAsIC8qIG1hc2sg dG8gZGV0ZXJtaW5lIG1lbW9yeSBzcGFjZSAqLw0KKyNlbmRpZg0KKyAgfTsN CisNCisvKiBBbnkgZnVuY3Rpb24gd2l0aCBhIGZyYW1lIGxvb2tzIGxpa2Ug dGhpcw0KKyAgIC4uLi4uLi4gICAgPC1TUCBQT0lOVFMgSEVSRQ0KKyAgIExP Q0FMUzEgICAgPC1GUCBQT0lOVFMgSEVSRQ0KKyAgIExPQ0FMUzANCisgICBT QVZFRCBGUA0KKyAgIFNBVkVEIFIzDQorICAgU0FWRUQgUjINCisgICBSRVQg UEMNCisgICBGSVJTVCBBUkcNCisgICBTRUNPTkQgQVJHICovDQorDQorc3Ry dWN0IGZyYW1lX2V4dHJhX2luZm8NCisgIHsNCisgICAgQ09SRV9BRERSIHJl dHVybl9wYzsNCisgICAgQ09SRV9BRERSIGFyZ3NfcG9pbnRlcjsNCisgICAg aW50IGxvY2Fsc19zaXplOw0KKyAgICBpbnQgZnJhbWVyZWc7DQorICAgIGlu dCBmcmFtZXNpemU7DQorICAgIGludCBpc19tYWluOw0KKyAgfTsNCisNCitz dHJ1Y3QgZ2RiYXJjaF90ZGVwDQorICB7DQorICAgIC8qIEZJWE1FOiBUUm90 aDogaXMgdGhlcmUgYW55dGhpbmcgdG8gcHV0IGhlcmU/ICovDQorICAgIGlu dCBmb287DQorICB9Ow0KKw0KKy8qIExvb2t1cCB0aGUgbmFtZSBvZiBhIHJl Z2lzdGVyIGdpdmVuIGl0J3MgbnVtYmVyLiAqLw0KKw0KK3N0YXRpYyBjaGFy ICoNCithdnJfcmVnaXN0ZXJfbmFtZSAoaW50IHJlZ251bSkNCit7DQorICBz dGF0aWMgY2hhciAqcmVnaXN0ZXJfbmFtZXNbXSA9DQorICB7DQorICAgICJy MCIsICAicjEiLCAgInIyIiwgICJyMyIsICAicjQiLCAgInI1IiwgICJyNiIs ICAicjciLA0KKyAgICAicjgiLCAgInI5IiwgICJyMTAiLCAicjExIiwgInIx MiIsICJyMTMiLCAicjE0IiwgInIxNSIsDQorICAgICJyMTYiLCAicjE3Iiwg InIxOCIsICJyMTkiLCAicjIwIiwgInIyMSIsICJyMjIiLCAicjIzIiwNCisg ICAgInIyNCIsICJyMjUiLCAicjI2IiwgInIyNyIsICJyMjgiLCAicjI5Iiwg InIzMCIsICJyMzEiLA0KKyAgICAiU1JFRyIsICJTUCIsICJQQyINCisgIH07 DQorICBpZiAocmVnbnVtIDwgMCkNCisgICAgcmV0dXJuIE5VTEw7DQorICBp ZiAocmVnbnVtID49IChzaXplb2YgKHJlZ2lzdGVyX25hbWVzKSAvIHNpemVv ZiAoKnJlZ2lzdGVyX25hbWVzKSkpDQorICAgIHJldHVybiBOVUxMOw0KKyAg cmV0dXJuIHJlZ2lzdGVyX25hbWVzW3JlZ251bV07DQorfQ0KKw0KKy8qIElu ZGV4IHdpdGhpbiBgcmVnaXN0ZXJzJyBvZiB0aGUgZmlyc3QgYnl0ZSBvZiB0 aGUgc3BhY2UgZm9yDQorICAgcmVnaXN0ZXIgUkVHTlVNLiAgKi8NCisNCitz dGF0aWMgaW50DQorYXZyX3JlZ2lzdGVyX2J5dGUgKGludCByZWdudW0pDQor ew0KKyAgaWYgKHJlZ251bSA8IEFWUl9QQ19SRUdOVU0pDQorICAgIHJldHVy biByZWdudW07DQorICBlbHNlDQorICAgIHJldHVybiBBVlJfUENfUkVHX0lO REVYOw0KK30NCisNCisvKiBOdW1iZXIgb2YgYnl0ZXMgb2Ygc3RvcmFnZSBp biB0aGUgYWN0dWFsIG1hY2hpbmUgcmVwcmVzZW50YXRpb24gZm9yDQorICAg cmVnaXN0ZXIgUkVHTlVNLiAgKi8NCisNCitzdGF0aWMgaW50DQorYXZyX3Jl Z2lzdGVyX3Jhd19zaXplIChpbnQgcmVnbnVtKQ0KK3sNCisgIHN3aXRjaCAo cmVnbnVtKQ0KKyAgICB7DQorICAgIGNhc2UgQVZSX1BDX1JFR05VTToNCisg ICAgICByZXR1cm4gNDsNCisgICAgY2FzZSBBVlJfU1BfUkVHTlVNOg0KKyAg ICBjYXNlIEFWUl9GUF9SRUdOVU06DQorICAgICAgcmV0dXJuIDI7DQorICAg IGRlZmF1bHQ6DQorICAgICAgcmV0dXJuIDE7DQorICAgIH0NCit9DQorDQor LyogTnVtYmVyIG9mIGJ5dGVzIG9mIHN0b3JhZ2UgaW4gdGhlIHByb2dyYW0n cyByZXByZXNlbnRhdGlvbg0KKyAgIGZvciByZWdpc3RlciBOLiAgKi8NCisN CitzdGF0aWMgaW50DQorYXZyX3JlZ2lzdGVyX3ZpcnR1YWxfc2l6ZSAoaW50 IHJlZ251bSkNCit7DQorICByZXR1cm4gVFlQRV9MRU5HVEggKFJFR0lTVEVS X1ZJUlRVQUxfVFlQRSAocmVnbnVtKSk7DQorfQ0KKw0KKy8qIFJldHVybiB0 aGUgR0RCIHR5cGUgb2JqZWN0IGZvciB0aGUgInN0YW5kYXJkIiBkYXRhIHR5 cGUNCisgICBvZiBkYXRhIGluIHJlZ2lzdGVyIE4uICAqLw0KKw0KK3N0YXRp YyBzdHJ1Y3QgdHlwZSAqDQorYXZyX3JlZ2lzdGVyX3ZpcnR1YWxfdHlwZSAo aW50IHJlZ251bSkNCit7DQorICBzd2l0Y2ggKHJlZ251bSkNCisgICAgew0K KyAgICBjYXNlIEFWUl9QQ19SRUdOVU06DQorICAgICAgcmV0dXJuIGJ1aWx0 aW5fdHlwZV91bnNpZ25lZF9sb25nOw0KKyAgICBjYXNlIEFWUl9TUF9SRUdO VU06DQorICAgICAgcmV0dXJuIGJ1aWx0aW5fdHlwZV91bnNpZ25lZF9zaG9y dDsNCisgICAgZGVmYXVsdDoNCisgICAgICByZXR1cm4gYnVpbHRpbl90eXBl X3Vuc2lnbmVkX2NoYXI7DQorICAgIH0NCit9DQorDQorLyogSW5zdHJ1Y3Rp b24gYWRkcmVzcyBjaGVja3MgYW5kIGNvbnZlcnRpb25zLiAqLw0KKw0KK3N0 YXRpYyBDT1JFX0FERFINCithdnJfbWFrZV9pYWRkciAoQ09SRV9BRERSIHgp DQorew0KKyAgcmV0dXJuICgoeCkgfCBBVlJfSU1FTV9TVEFSVCk7DQorfQ0K Kw0KK3N0YXRpYyBpbnQNCithdnJfaWFkZHJfcCAoQ09SRV9BRERSIHgpDQor ew0KKyAgcmV0dXJuICgoKHgpICYgQVZSX01FTV9NQVNLKSA9PSBBVlJfSU1F TV9TVEFSVCk7DQorfQ0KKw0KKy8qIEZJWE1FOiBUUm90aDogUmVhbGx5IG5l ZWQgdG8gdXNlIGEgbGFyZ2VyIG1hc2sgZm9yIGluc3RydWN0aW9ucy4gU29t ZQ0KKyAgIGRldmljZXMgYXJlIGFscmVhZHkgdXAgdG8gMTI4S0J5dGVzIG9m IGZsYXNoIHNwYWNlLg0KKw0KKyAgIFRSb3RoLzIwMDItMDQtODogU2VlIGNv bW1lbnQgYWJvdmUgd2hlcmUgQVZSX0lNRU1fU1RBUlQgaXMgZGVmaW5lZC4g Ki8NCisNCitzdGF0aWMgQ09SRV9BRERSDQorYXZyX2NvbnZlcnRfaWFkZHJf dG9fcmF3IChDT1JFX0FERFIgeCkNCit7DQorICByZXR1cm4gKCh4KSAmIDB4 ZmZmZmZmZmYpOw0KK30NCisNCisvKiBTUkFNIGFkZHJlc3MgY2hlY2tzIGFu ZCBjb252ZXJ0aW9ucy4gKi8NCisNCitzdGF0aWMgQ09SRV9BRERSDQorYXZy X21ha2Vfc2FkZHIgKENPUkVfQUREUiB4KQ0KK3sNCisgIHJldHVybiAoKHgp IHwgQVZSX1NNRU1fU1RBUlQpOw0KK30NCisNCitzdGF0aWMgaW50DQorYXZy X3NhZGRyX3AgKENPUkVfQUREUiB4KQ0KK3sNCisgIHJldHVybiAoKCh4KSAm IEFWUl9NRU1fTUFTSykgPT0gQVZSX1NNRU1fU1RBUlQpOw0KK30NCisNCitz dGF0aWMgQ09SRV9BRERSDQorYXZyX2NvbnZlcnRfc2FkZHJfdG9fcmF3IChD T1JFX0FERFIgeCkNCit7DQorICByZXR1cm4gKCh4KSAmIDB4ZmZmZmZmZmYp Ow0KK30NCisNCisvKiBFRVBST00gYWRkcmVzcyBjaGVja3MgYW5kIGNvbnZl cnRpb25zLiBJIGRvbid0IGtub3cgaWYgdGhlc2Ugd2lsbCBldmVyDQorICAg YWN0dWFsbHkgYmUgdXNlZCwgYnV0IEkndmUgYWRkZWQgdGhlbSBqdXN0IHRo ZSBzYW1lLiBUUm90aCAqLw0KKw0KKy8qIFRSb3RoLzIwMDItMDQtMDg6IENv bW1lbnRlZCBvdXQgZm9yIG5vdyB0byBhbGxvdyBmaXggZm9yIHByb2JsZW0g d2l0aCBsYXJnZQ0KKyAgIHByb2dyYW1zIGluIHRoZSBtZWdhMTI4LiAqLw0K Kw0KKy8qICBzdGF0aWMgQ09SRV9BRERSICovDQorLyogIGF2cl9tYWtlX2Vh ZGRyIChDT1JFX0FERFIgeCkgKi8NCisvKiAgeyAqLw0KKy8qICAgIHJldHVy biAoKHgpIHwgQVZSX0VNRU1fU1RBUlQpOyAqLw0KKy8qICB9ICovDQorDQor LyogIHN0YXRpYyBpbnQgKi8NCisvKiAgYXZyX2VhZGRyX3AgKENPUkVfQURE UiB4KSAqLw0KKy8qICB7ICovDQorLyogICAgcmV0dXJuICgoKHgpICYgQVZS X01FTV9NQVNLKSA9PSBBVlJfRU1FTV9TVEFSVCk7ICovDQorLyogIH0gKi8N CisNCisvKiAgc3RhdGljIENPUkVfQUREUiAqLw0KKy8qICBhdnJfY29udmVy dF9lYWRkcl90b19yYXcgKENPUkVfQUREUiB4KSAqLw0KKy8qICB7ICovDQor LyogICAgcmV0dXJuICgoeCkgJiAweGZmZmZmZmZmKTsgKi8NCisvKiAgfSAq Lw0KKw0KKy8qIENvbnZlcnQgZnJvbSBhZGRyZXNzIHRvIHBvaW50ZXIgYW5k IHZpY2UtdmVyc2EuICovDQorDQorc3RhdGljIHZvaWQNCithdnJfYWRkcmVz c190b19wb2ludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqYnVmLCBD T1JFX0FERFIgYWRkcikNCit7DQorICAvKiBJcyBpdCBhIGNvZGUgYWRkcmVz cz8gICovDQorICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKSkgPT0gVFlQRV9DT0RFX0ZVTkMNCisgICAgICB8fCBUWVBFX0NPREUg KFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSA9PSBUWVBFX0NPREVfTUVUSE9E KQ0KKyAgICB7DQorICAgICAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAoYnVm LCBUWVBFX0xFTkdUSCAodHlwZSksIA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGF2cl9jb252ZXJ0X2lhZGRyX3RvX3JhdyAoYWRkcikpOw0K KyAgICB9DQorICBlbHNlDQorICAgIHsNCisgICAgICAvKiBTdHJpcCBvZmYg YW55IHVwcGVyIHNlZ21lbnQgYml0cy4gICovDQorICAgICAgc3RvcmVfdW5z aWduZWRfaW50ZWdlciAoYnVmLCBUWVBFX0xFTkdUSCAodHlwZSksIA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cl9jb252ZXJ0X3NhZGRy X3RvX3JhdyAoYWRkcikpOw0KKyAgICB9DQorfQ0KKw0KK3N0YXRpYyBDT1JF X0FERFINCithdnJfcG9pbnRlcl90b19hZGRyZXNzIChzdHJ1Y3QgdHlwZSAq dHlwZSwgdm9pZCAqYnVmKQ0KK3sNCisgIENPUkVfQUREUiBhZGRyID0gZXh0 cmFjdF9hZGRyZXNzIChidWYsIFRZUEVfTEVOR1RIICh0eXBlKSk7DQorDQor ICBpZiAoIFRZUEVfQ09ERV9TUEFDRSAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpICkNCisgICAgew0KKyAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGVyciwgIkNPREVfU1BBQ0UgLS0tLT4+IHB0ci0+YWRkcjogMHglbHhc biIsIGFkZHIpOw0KKyAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGVyciwgIisrKyBJZiB5b3Ugc2VlIHRoaXMsIHBsZWFzZSBzZW5kIG1lIGFu IGVtYWlsIDx0cm90aEB2ZXJpbmV0LmNvbT5cbiIpOw0KKyAgICB9DQorDQor ICAvKiBJcyBpdCBhIGNvZGUgYWRkcmVzcz8gICovDQorICBpZiAoVFlQRV9D T0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPT0gVFlQRV9DT0RFX0ZV TkMNCisgICAgICB8fCBUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpKSA9PSBUWVBFX0NPREVfTUVUSE9EDQorICAgICAgfHwgVFlQRV9DT0RF X1NQQUNFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkNCisgICAgICApDQor ICAgIHJldHVybiBhdnJfbWFrZV9pYWRkciAoYWRkcik7DQorICBlbHNlDQor ICAgIHJldHVybiBhdnJfbWFrZV9zYWRkciAoYWRkcik7DQorfQ0KKw0KK3N0 YXRpYyBDT1JFX0FERFINCithdnJfcmVhZF9wYyAocHRpZF90IHB0aWQpDQor ew0KKyAgcHRpZF90IHNhdmVfcHRpZDsNCisgIENPUkVfQUREUiBwYzsNCisg IENPUkVfQUREUiByZXR2YWw7DQorDQorICBzYXZlX3B0aWQgPSBpbmZlcmlv cl9wdGlkOw0KKyAgaW5mZXJpb3JfcHRpZCA9IHB0aWQ7DQorICBwYyA9IChp bnQpIHJlYWRfcmVnaXN0ZXIgKEFWUl9QQ19SRUdOVU0pOw0KKyAgaW5mZXJp b3JfcHRpZCA9IHNhdmVfcHRpZDsNCisgIHJldHZhbCA9IGF2cl9tYWtlX2lh ZGRyIChwYyk7DQorICByZXR1cm4gcmV0dmFsOw0KK30NCisNCitzdGF0aWMg dm9pZA0KK2F2cl93cml0ZV9wYyAoQ09SRV9BRERSIHZhbCwgcHRpZF90IHB0 aWQpDQorew0KKyAgcHRpZF90IHNhdmVfcHRpZDsNCisNCisgIHNhdmVfcHRp ZCA9IGluZmVyaW9yX3B0aWQ7DQorICBpbmZlcmlvcl9wdGlkID0gcHRpZDsN CisgIHdyaXRlX3JlZ2lzdGVyIChBVlJfUENfUkVHTlVNLCBhdnJfY29udmVy dF9pYWRkcl90b19yYXcgKHZhbCkpOw0KKyAgaW5mZXJpb3JfcHRpZCA9IHNh dmVfcHRpZDsNCit9DQorDQorc3RhdGljIENPUkVfQUREUg0KK2F2cl9yZWFk X3NwICh2b2lkKQ0KK3sNCisgIHJldHVybiAoYXZyX21ha2Vfc2FkZHIgKHJl YWRfcmVnaXN0ZXIgKEFWUl9TUF9SRUdOVU0pKSk7DQorfQ0KKw0KK3N0YXRp YyB2b2lkDQorYXZyX3dyaXRlX3NwIChDT1JFX0FERFIgdmFsKQ0KK3sNCisg IHdyaXRlX3JlZ2lzdGVyIChBVlJfU1BfUkVHTlVNLCBhdnJfY29udmVydF9z YWRkcl90b19yYXcgKHZhbCkpOw0KK30NCisNCitzdGF0aWMgQ09SRV9BRERS DQorYXZyX3JlYWRfZnAgKHZvaWQpDQorew0KKyAgcmV0dXJuIChhdnJfbWFr ZV9zYWRkciAocmVhZF9yZWdpc3RlciAoQVZSX0ZQX1JFR05VTSkpKTsNCit9 DQorDQorLyogVHJhbnNsYXRlIGEgR0RCIHZpcnR1YWwgQUREUi9MRU4gaW50 byBhIGZvcm1hdCB0aGUgcmVtb3RlIHRhcmdldA0KKyAgIHVuZGVyc3RhbmRz LiAgUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUgdHJhbnNm ZXJlZA0KKyAgIHN0YXJ0aW5nIGF0IFRBUkdfQUREUi4gIFJldHVybiBaRVJP IGlmIG5vIGJ5dGVzIGNhbiBiZSB0cmFuc2ZlcmVkDQorICAgKHNlZ21lbnRh dGlvbiBmYXVsdCkuDQorDQorICAgVFJvdGgvMjAwMi0wNC0wODogQ291bGQg dGhpcyBiZSB1c2VkIHRvIGNoZWNrIGZvciBkZXJlZmVyZW5jaW5nIGFuIGlu dmFsaWQNCisgICBwb2ludGVyPyAqLw0KKw0KK3N0YXRpYyB2b2lkDQorYXZy X3JlbW90ZV90cmFuc2xhdGVfeGZlcl9hZGRyZXNzIChDT1JFX0FERFIgbWVt YWRkciwgaW50IG5yX2J5dGVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ09SRV9BRERSICp0YXJnX2FkZHIsIGludCAqdGFyZ19s ZW4pDQorew0KKyAgbG9uZyBvdXRfYWRkcjsNCisgIGxvbmcgb3V0X2xlbjsN CisNCisgIC8qIEZJWE1FOiBUUm90aDogRG8gbm90aGluZyBmb3Igbm93LiBX aWxsIG5lZWQgdG8gZXhhbWluZSBtZW1hZGRyIGF0IHRoaXMNCisgICAgIHBv aW50IGFuZCBzZWUgaWYgdGhlIGhpZ2ggYml0IGFyZSBzZXQgd2l0aCB0aGUg bWFza3MgdGhhdCB3ZSB3YW50LiAqLw0KKw0KKyAgKnRhcmdfYWRkciA9IG1l bWFkZHI7DQorICAqdGFyZ19sZW4gPSBucl9ieXRlczsNCit9DQorDQorLyog RnVuY3Rpb24gcG9pbnRlcnMgb2J0YWluZWQgZnJvbSB0aGUgdGFyZ2V0IGFy ZSBoYWxmIG9mIHdoYXQgZ2RiIGV4cGVjdHMgc28NCisgICBtdWx0aXBseSBi eSAyLiAqLw0KKw0KK3N0YXRpYyBDT1JFX0FERFINCithdnJfY29udmVydF9m cm9tX2Z1bmNfcHRyX2FkZHIgKENPUkVfQUREUiBhZGRyKQ0KK3sNCisgIHJl dHVybiBhZGRyICogMjsNCit9DQorDQorLyogYXZyX3NjYW5fcHJvbG9ndWUg aXMgYWxzbyB1c2VkIGFzIHRoZSBmcmFtZV9pbml0X3NhdmVkX3JlZ3MoKS4N CisNCisgICBQdXQgaGVyZSB0aGUgY29kZSB0byBzdG9yZSwgaW50byBmaS0+ c2F2ZWRfcmVncywgdGhlIGFkZHJlc3NlcyBvZg0KKyAgIHRoZSBzYXZlZCBy ZWdpc3RlcnMgb2YgZnJhbWUgZGVzY3JpYmVkIGJ5IEZSQU1FX0lORk8uICBU aGlzDQorICAgaW5jbHVkZXMgc3BlY2lhbCByZWdpc3RlcnMgc3VjaCBhcyBw YyBhbmQgZnAgc2F2ZWQgaW4gc3BlY2lhbCB3YXlzDQorICAgaW4gdGhlIHN0 YWNrIGZyYW1lLiAgc3AgaXMgZXZlbiBtb3JlIHNwZWNpYWw6IHRoZSBhZGRy ZXNzIHdlIHJldHVybg0KKyAgIGZvciBpdCBJUyB0aGUgc3AgZm9yIHRoZSBu ZXh0IGZyYW1lLiAqLw0KKw0KKy8qIEZ1bmN0aW9uOiBhdnJfc2Nhbl9wcm9s b2d1ZSAoaGVscGVyIGZ1bmN0aW9uIGZvciBhdnJfaW5pdF9leHRyYV9mcmFt ZV9pbmZvKQ0KKyAgIFRoaXMgZnVuY3Rpb24gZGVjb2RlcyBhIEFWUiBmdW5j dGlvbiBwcm9sb2d1ZSB0byBkZXRlcm1pbmU6DQorICAgICAxKSB0aGUgc2l6 ZSBvZiB0aGUgc3RhY2sgZnJhbWUNCisgICAgIDIpIHdoaWNoIHJlZ2lzdGVy cyBhcmUgc2F2ZWQgb24gaXQNCisgICAgIDMpIHRoZSBvZmZzZXRzIG9mIHNh dmVkIHJlZ3MNCisgICBUaGlzIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiB0 aGUgImV4dHJhX2luZm8iIGZpZWxkIG9mIHRoZSBmcmFtZV9pbmZvLg0KKw0K KyAgIEEgdHlwaWNhbCBBVlIgZnVuY3Rpb24gcHJvbG9ndWUgbWlnaHQgbG9v ayBsaWtlIHRoaXM6DQorICAgICAgICBwdXNoIHJYWA0KKyAgICAgICAgcHVz aCByMjgNCisgICAgICAgIHB1c2ggcjI5DQorICAgICAgICBpbiByMjgsX19T UF9MX18NCisgICAgICAgIGluIHIyOSxfX1NQX0hfXw0KKyAgICAgICAgc2Jp dyByMjgsPExPQ0FMU19TSVpFPg0KKyAgICAgICAgaW4gX190bXBfcmVnX18s X19TUkVHX18NCisgICAgICAgIGNsaQ0KKyAgICAgICAgb3V0IF9fU1BfTF9f LHIyOA0KKyAgICAgICAgb3V0IF9fU1JFR19fLF9fdG1wX3JlZ19fDQorICAg ICAgICBvdXQgX19TUF9IX18scjI5DQorDQorICBBIGAtbWNhbGwtcHJvbG9n dWVzJyBwcm9sb2d1ZSBsb29rIGxpa2UgdGhpczoNCisgICAgICAgIGxkaSBy MjYsPExPQ0FMU19TSVpFPg0KKyAgICAgICAgbGRpIHIyNyw8TE9DQUxTX1NJ WkU+LzI2NQ0KKyAgICAgICAgbGRpIHIzMCxwbV9sbzgoLkxfZm9vX2JvZHkp DQorICAgICAgICBsZGkgcjMxLHBtX2hpOCguTF9mb29fYm9keSkNCisgICAg ICAgIHJqbXAgX19wcm9sb2d1ZV9zYXZlc19fK1JSUg0KKyAgLkxfZm9vX2Jv ZHk6ICAqLw0KKw0KK3N0YXRpYyB2b2lkDQorYXZyX3NjYW5fcHJvbG9ndWUg KHN0cnVjdCBmcmFtZV9pbmZvICpmaSkNCit7DQorICBDT1JFX0FERFIgcHJv bG9ndWVfc3RhcnQ7DQorICBDT1JFX0FERFIgcHJvbG9ndWVfZW5kOw0KKyAg aW50ICAgICAgIGk7DQorICB1bnNpZ25lZCAgc2hvcnQgaW5zbjsNCisgIGlu dCAgICAgICByZWdubzsNCisgIGludCAgICAgICBzY2FuX3N0YWdlPTA7DQor ICBjaGFyICAgICAgKm5hbWU7DQorICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wg Km1zeW1ib2w7DQorICBpbnQgICAgICAgcHJvbG9ndWVfbGVuOw0KKyAgdW5z aWduZWQgY2hhciBwcm9sb2d1ZVtBVlJfTUFYX1BST0xPR1VFX1NJWkVdOw0K KyAgaW50IHZwYyA9IDA7DQorDQorICBmaS0+ZXh0cmFfaW5mby0+ZnJhbWVy ZWcgPSBBVlJfU1BfUkVHTlVNOw0KKyAgDQorICBpZiAoZmluZF9wY19wYXJ0 aWFsX2Z1bmN0aW9uIChmaS0+cGMsICZuYW1lLCAmcHJvbG9ndWVfc3RhcnQs ICZwcm9sb2d1ZV9lbmQpKQ0KKyAgICB7DQorICAgICAgc3RydWN0IHN5bXRh Yl9hbmRfbGluZSBzYWwgPSBmaW5kX3BjX2xpbmUgKHByb2xvZ3VlX3N0YXJ0 LCAwKTsNCisNCisgICAgICBpZiAoc2FsLmxpbmUgPT0gMCkgICAgICAgICAg ICAgICAgLyogbm8gbGluZSBpbmZvLCB1c2UgY3VycmVudCBQQyAqLw0KKyAg ICAgICAgcHJvbG9ndWVfZW5kID0gZmktPnBjOw0KKyAgICAgIGVsc2UgaWYg KHNhbC5lbmQgPCBwcm9sb2d1ZV9lbmQpICAvKiBuZXh0IGxpbmUgYmVnaW5z IGFmdGVyIGZuIGVuZCAqLw0KKyAgICAgICAgcHJvbG9ndWVfZW5kID0gc2Fs LmVuZDsgICAgICAgICAvKiAocHJvYmFibHkgbWVhbnMgbm8gcHJvbG9ndWUp ICAqLw0KKyAgICB9DQorICBlbHNlDQorICAgIC8qIFdlJ3JlIGluIHRoZSBi b29uZG9ja3M6IGFsbG93IGZvciAqLw0KKyAgICAvKiAxOSBwdXNoZXMsIGFu IGFkZCwgYW5kICJtdiBmcCxzcCIgKi8NCisgICAgcHJvbG9ndWVfZW5kID0g cHJvbG9ndWVfc3RhcnQgKyBBVlJfTUFYX1BST0xPR1VFX1NJWkU7IA0KKw0K KyAgcHJvbG9ndWVfZW5kID0gbWluIChwcm9sb2d1ZV9lbmQsIGZpLT5wYyk7 DQorDQorICAvKiBTZWFyY2ggdGhlIHByb2xvZ3VlIGxvb2tpbmcgZm9yIGlu c3RydWN0aW9ucyB0aGF0IHNldCB1cCB0aGUNCisgICAgIGZyYW1lIHBvaW50 ZXIsIGFkanVzdCB0aGUgc3RhY2sgcG9pbnRlciwgYW5kIHNhdmUgcmVnaXN0 ZXJzLiAgKi8NCisNCisgIGZpLT5leHRyYV9pbmZvLT5mcmFtZXNpemUgPSAw Ow0KKyAgcHJvbG9ndWVfbGVuID0gcHJvbG9ndWVfZW5kIC0gcHJvbG9ndWVf c3RhcnQ7DQorICByZWFkX21lbW9yeSAocHJvbG9ndWVfc3RhcnQsIHByb2xv Z3VlLCBwcm9sb2d1ZV9sZW4pOw0KKw0KKyAgLyogU2Nhbm5pbmcgbWFpbigp J3MgcHJvbG9ndWUNCisgICAgIGxkaSByMjgsbG84KDxSQU1fQUREUj4gLSA8 TE9DQUxTX1NJWkU+KQ0KKyAgICAgbGRpIHIyOSxoaTgoPFJBTV9BRERSPiAt IDxMT0NBTFNfU0laRT4pDQorICAgICBvdXQgX19TUF9IX18scjI5DQorICAg ICBvdXQgX19TUF9MX18scjI4ICovDQorDQorICBpZiAobmFtZSAmJiBzdHJj bXAgKCJtYWluIiwgbmFtZSkgPT0gMCAmJiBwcm9sb2d1ZV9sZW4gPT0gOCkN CisgICAgew0KKyAgICAgIENPUkVfQUREUiBsb2NhbHM7DQorICAgICAgdW5z aWduZWQgY2hhciBpbWdbXSA9DQorICAgICAgew0KKyAgICAgICAgMHhkZSww eGJmLCAgICAgICAgICAgICAgLyogb3V0IF9fU1BfSF9fLHIyOSAqLw0KKyAg ICAgICAgMHhjZCwweGJmICAgICAgICAgICAgICAgLyogb3V0IF9fU1BfTF9f LHIyOCAqLw0KKyAgICAgIH07DQorDQorICAgICAgZmktPmV4dHJhX2luZm8t PmZyYW1lcmVnID0gQVZSX0ZQX1JFR05VTTsNCisgICAgICBpbnNuID0gRVhU UkFDVF9JTlNOICgmcHJvbG9ndWVbdnBjXSk7DQorICAgICAgLyogbGRpIHIy OCxsbzgoPFJBTV9BRERSPiAtIDxMT0NBTFNfU0laRT4pICovDQorICAgICAg aWYgKChpbnNuICYgMHhmMGYwKSA9PSAweGUwYzApIA0KKyAgICAgICAgew0K KyAgICAgICAgICBsb2NhbHMgPSAoaW5zbiAmIDB4ZikgfCAoKGluc24gJiAw eDBmMDApID4+IDQpOw0KKyAgICAgICAgICBpbnNuID0gRVhUUkFDVF9JTlNO ICgmcHJvbG9ndWVbdnBjKzJdKTsNCisgICAgICAgICAgLyogbGRpIHIyOSxo aTgoPFJBTV9BRERSPiAtIDxMT0NBTFNfU0laRT4pICovDQorICAgICAgICAg IGlmICgoaW5zbiAmIDB4ZjBmMCkgPT0gMHhlMGQwKSAgDQorICAgICAgICAg ICAgew0KKyAgICAgICAgICAgICAgbG9jYWxzIHw9ICgoaW5zbiAmIDB4Zikg fCAoKGluc24gJiAweDBmMDApID4+IDQpKSA8PCA4Ow0KKyAgICAgICAgICAg ICAgaWYgKG1lbWNtcCAocHJvbG9ndWUgKyB2cGMgKyA0LCBpbWcsIHNpemVv ZiAoaW1nKSkgPT0gMCkNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAg ICAgICAgICAgIGZpLT5mcmFtZSA9IGxvY2FsczsNCisNCisgICAgICAgICAg ICAgICAgICAvKiBUUm90aDogRG9lcyAtMSBtZWFuIHdlJ3JlIGluIG1haW4/ ICovDQorICAgICAgICAgICAgICAgICAgZmktPmV4dHJhX2luZm8tPmlzX21h aW4gPSAxOw0KKyAgICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAg ICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAg fQ0KKyAgICAgIA0KKyAgLyogU2Nhbm5pbmcgYC1tY2FsbC1wcm9sb2d1ZXMn IHByb2xvZ3VlDQorICAgICBGSVhNRTogbWVnYSBwcm9sb2d1ZSBoYXZlIGEg MTIgYnl0ZXMgbG9uZyAqLw0KKw0KKyAgd2hpbGUgKHByb2xvZ3VlX2xlbiA8 PSAxMikgICAgLyogSSdtIHVzZSB3aGlsZSB0byBhdm9pdCBtYW55IGdvdG8n cyAqLw0KKyAgICB7DQorICAgICAgaW50IGxvY19zaXplOw0KKyAgICAgIGlu dCBib2R5X2FkZHI7DQorICAgICAgdW5zaWduZWQgbnVtX3B1c2hlczsNCisg ICAgICANCisgICAgICBpbnNuID0gRVhUUkFDVF9JTlNOICgmcHJvbG9ndWVb dnBjXSk7DQorICAgICAgLyogbGRpIHIyNiw8TE9DQUxTX1NJWkU+ICovDQor ICAgICAgaWYgKChpbnNuICYgMHhmMGYwKSAhPSAweGUwYTApIA0KKyAgICAg ICAgYnJlYWs7DQorICAgICAgbG9jX3NpemUgPSAoaW5zbiAmIDB4ZikgfCAo KGluc24gJiAweDBmMDApID4+IDQpOw0KKyAgICAgIA0KKyAgICAgIGluc24g PSBFWFRSQUNUX0lOU04gKCZwcm9sb2d1ZVt2cGMgKyAyXSk7DQorICAgICAg LyogbGRpIHIyNyw8TE9DQUxTX1NJWkU+IC8gMjU2ICovDQorICAgICAgaWYg KChpbnNuICYgMHhmMGYwKSAhPSAweGUwYjApDQorICAgICAgICBicmVhazsN CisgICAgICBsb2Nfc2l6ZSB8PSAoKGluc24gJiAweGYpIHwgKChpbnNuICYg MHgwZjAwKSA+PiA0KSkgPDwgODsNCisgICAgICANCisgICAgICBpbnNuID0g RVhUUkFDVF9JTlNOICgmcHJvbG9ndWVbdnBjICsgNF0pOw0KKyAgICAgIC8q IGxkaSByMzAscG1fbG84KC5MX2Zvb19ib2R5KSAqLw0KKyAgICAgIGlmICgo aW5zbiAmIDB4ZjBmMCkgIT0gMHhlMGUwKQ0KKyAgICAgICAgYnJlYWs7DQor ICAgICAgYm9keV9hZGRyID0gKGluc24gJiAweGYpIHwgKChpbnNuICYgMHgw ZjAwKSA+PiA0KTsNCisNCisgICAgICBpbnNuID0gRVhUUkFDVF9JTlNOICgm cHJvbG9ndWVbdnBjICsgNl0pOw0KKyAgICAgIC8qIGxkaSByMzEscG1faGk4 KC5MX2Zvb19ib2R5KSAqLw0KKyAgICAgIGlmICgoaW5zbiAmIDB4ZjBmMCkg IT0gMHhlMGYwKQ0KKyAgICAgICAgYnJlYWs7DQorICAgICAgYm9keV9hZGRy IHw9ICgoaW5zbiAmIDB4ZikgfCAoKGluc24gJiAweDBmMDApID4+IDQpKSA8 PCA4Ow0KKw0KKyAgICAgIGlmIChib2R5X2FkZHIgIT0gKHByb2xvZ3VlX3N0 YXJ0ICsgMTApIC8gMikNCisgICAgICAgIGJyZWFrOw0KKw0KKyAgICAgIG1z eW1ib2wgPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKCJfX3Byb2xvZ3VlX3Nh dmVzX18iLCBOVUxMLCBOVUxMKTsNCisgICAgICBpZiAoIW1zeW1ib2wpDQor ICAgICAgICBicmVhazsNCisNCisgICAgICAvKiBGSVhNRTogcHJvbG9ndWUg Zm9yIG1lZ2EgaGF2ZSBhIEpNUCBpbnN0ZWFkIG9mIFJKTVAgKi8NCisgICAg ICBpbnNuID0gRVhUUkFDVF9JTlNOICgmcHJvbG9ndWVbdnBjICsgOF0pOw0K KyAgICAgIC8qIHJqbXAgX19wcm9sb2d1ZV9zYXZlc19fK1JSUiAqLw0KKyAg ICAgIGlmICgoaW5zbiAmIDB4ZjAwMCkgIT0gMHhjMDAwKQ0KKyAgICAgICAg YnJlYWs7DQorICAgICAgDQorICAgICAgLyogRXh0cmFjdCBQQyByZWxhdGl2 ZSBvZmZzZXQgZnJvbSBSSk1QICovDQorICAgICAgaSA9IChpbnNuICYgMHhm ZmYpIHwgKGluc24gJiAweDgwMCA/ICgtMSBeIDB4ZmZmKSA6IDApOw0KKyAg ICAgIC8qIENvbnZlcnQgb2Zmc2V0IHRvIGJ5dGUgYWRkcmVzc2FibGUgbW9k ZSAqLw0KKyAgICAgIGkgKj0gMjsNCisgICAgICAvKiBEZXN0aW5hdGlvbiBh ZGRyZXNzICovDQorICAgICAgaSArPSB2cGMgKyBwcm9sb2d1ZV9zdGFydCAr IDEwOw0KKyAgICAgIC8qIFJlc292bGUgb2Zmc2V0IChpbiB3b3JkcykgZnJv bSBfX3Byb2xvZ3VlX3NhdmVzX18gc3ltYm9sLg0KKyAgICAgICAgIFdoaWNo IGlzIGEgcHVzaGVzIGNvdW50IGluIGAtbWNhbGwtcHJvbG9ndWVzJyBtb2Rl ICovDQorICAgICAgbnVtX3B1c2hlcyA9IEFWUl9NQVhfUFVTSEVTIC0gKGkg LSBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCkpIC8gMjsNCisNCisg ICAgICBpZiAobnVtX3B1c2hlcyA+IEFWUl9NQVhfUFVTSEVTKQ0KKyAgICAg ICAgbnVtX3B1c2hlcyA9IDA7DQorICAgICAgICANCisgICAgICBpZiAobnVt X3B1c2hlcykNCisgICAgICAgIHsNCisgICAgICAgICAgaW50IGZyb207DQor ICAgICAgICAgIGZpLT5zYXZlZF9yZWdzW0FWUl9GUF9SRUdOVU0rMV0gPSBu dW1fcHVzaGVzOw0KKyAgICAgICAgICBpZiAobnVtX3B1c2hlcyA+PSAyKQ0K KyAgICAgICAgICAgIGZpLT5zYXZlZF9yZWdzW0FWUl9GUF9SRUdOVU1dID0g bnVtX3B1c2hlcyAtIDE7DQorICAgICAgICAgIGkgPSAwOw0KKyAgICAgICAg ICBmb3IgKGZyb20gPSBBVlJfTEFTVF9QVVNIRURfUkVHTlVNICsgMSAtIChu dW1fcHVzaGVzIC0gMik7DQorICAgICAgICAgICAgICAgZnJvbSA8PSBBVlJf TEFTVF9QVVNIRURfUkVHTlVNOyArK2Zyb20pDQorICAgICAgICAgICAgZmkt PnNhdmVkX3JlZ3NbZnJvbV0gPSArK2k7DQorICAgICAgICB9DQorICAgICAg ZmktPmV4dHJhX2luZm8tPmxvY2Fsc19zaXplID0gbG9jX3NpemU7DQorICAg ICAgZmktPmV4dHJhX2luZm8tPmZyYW1lc2l6ZSA9IGxvY19zaXplICsgbnVt X3B1c2hlczsNCisgICAgICBmaS0+ZXh0cmFfaW5mby0+ZnJhbWVyZWcgPSBB VlJfRlBfUkVHTlVNOw0KKyAgICAgIHJldHVybjsNCisgICAgfQ0KKw0KKyAg LyogU2NhbiBpbnRlcnJ1cHQgb3Igc2lnbmFsIGZ1bmN0aW9uICovDQorDQor ICBpZiAocHJvbG9ndWVfbGVuID49IDEyKQ0KKyAgICB7DQorICAgICAgdW5z aWduZWQgY2hhciBpbWdbXSA9DQorICAgICAgew0KKyAgICAgICAgMHg3OCww eDk0LCAgICAgICAgICAgICAgLyogc2VpICovDQorICAgICAgICAweDFmLDB4 OTIsICAgICAgICAgICAgICAvKiBwdXNoIHIxICovDQorICAgICAgICAweDBm LDB4OTIsICAgICAgICAgICAgICAvKiBwdXNoIHIwICovDQorICAgICAgICAw eDBmLDB4YjYsICAgICAgICAgICAgICAvKiBpbiByMCwweDNmIFNSRUcgKi8N CisgICAgICAgIDB4MGYsMHg5MiwgICAgICAgICAgICAgIC8qIHB1c2ggcjAg Ki8NCisgICAgICAgIDB4MTEsMHgyNCAgICAgICAgICAgICAgIC8qIGNsciBy MSAqLw0KKyAgICAgIH07DQorICAgICAgaWYgKG1lbWNtcCAocHJvbG9ndWUs IGltZywgc2l6ZW9mIChpbWcpKSA9PSAwKQ0KKyAgICAgICAgew0KKyAgICAg ICAgICB2cGMgKz0gc2l6ZW9mIChpbWcpOw0KKyAgICAgICAgICBmaS0+c2F2 ZWRfcmVnc1swXSA9IDI7DQorICAgICAgICAgIGZpLT5zYXZlZF9yZWdzWzFd ID0gMTsNCisgICAgICAgICAgZmktPmV4dHJhX2luZm8tPmZyYW1lc2l6ZSAr PSAzOw0KKyAgICAgICAgfQ0KKyAgICAgIGVsc2UgaWYgKG1lbWNtcCAoaW1n ICsgMSwgcHJvbG9ndWUsIHNpemVvZiAoaW1nKSAtIDEpID09IDApDQorICAg ICAgICB7DQorICAgICAgICAgIHZwYyArPSBzaXplb2YgKGltZykgLSAxOw0K KyAgICAgICAgICBmaS0+c2F2ZWRfcmVnc1swXSA9IDI7DQorICAgICAgICAg IGZpLT5zYXZlZF9yZWdzWzFdID0gMTsNCisgICAgICAgICAgZmktPmV4dHJh X2luZm8tPmZyYW1lc2l6ZSArPSAzOw0KKyAgICAgICAgfQ0KKyAgICB9DQor DQorICAvKiBGaXJzdCBzdGFnZSBvZiB0aGUgcHJvbG9ndWUgc2Nhbm5pbmcu DQorICAgICBTY2FuIHB1c2hlcyAqLw0KKw0KKyAgZm9yICg7IHZwYyA8PSBw cm9sb2d1ZV9sZW47IHZwYyArPSAyKQ0KKyAgICB7DQorICAgICAgaW5zbiA9 IEVYVFJBQ1RfSU5TTiAoJnByb2xvZ3VlW3ZwY10pOw0KKyAgICAgIGlmICgo aW5zbiAmIDB4ZmUwZikgPT0gMHg5MjBmKSAgICAgICAgICAgIC8qIHB1c2gg clhYICovDQorICAgICAgICB7DQorICAgICAgICAgIC8qIEJpdHMgNC05IGNv bnRhaW4gYSBtYXNrIGZvciByZWdpc3RlcnMgUjAtUjMyLiAqLw0KKyAgICAg ICAgICByZWdubyA9IChpbnNuICYgMHgxZjApID4+IDQ7DQorICAgICAgICAg ICsrZmktPmV4dHJhX2luZm8tPmZyYW1lc2l6ZTsNCisgICAgICAgICAgZmkt PnNhdmVkX3JlZ3NbcmVnbm9dID0gZmktPmV4dHJhX2luZm8tPmZyYW1lc2l6 ZTsNCisgICAgICAgICAgc2Nhbl9zdGFnZSA9IDE7DQorICAgICAgICB9DQor ICAgICAgZWxzZQ0KKyAgICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgIC8q IFNlY29uZCBzdGFnZSBvZiB0aGUgcHJvbG9ndWUgc2Nhbm5pbmcuDQorICAg ICBTY2FuOg0KKyAgICAgaW4gcjI4LF9fU1BfTF9fDQorICAgICBpbiByMjks X19TUF9IX18gKi8NCisNCisgIGlmIChzY2FuX3N0YWdlID09IDEgJiYgdnBj ICsgNCA8PSBwcm9sb2d1ZV9sZW4pDQorICAgIHsNCisgICAgICB1bnNpZ25l ZCBjaGFyIGltZ1tdID0NCisgICAgICB7DQorICAgICAgICAweGNkLDB4Yjcs ICAgICAgICAgICAgICAvKiBpbiByMjgsX19TUF9MX18gKi8NCisgICAgICAg IDB4ZGUsMHhiNyAgICAgICAgICAgICAgIC8qIGluIHIyOSxfX1NQX0hfXyAq Lw0KKyAgICAgIH07DQorICAgICAgdW5zaWduZWQgc2hvcnQgaW5zbjE7DQor ICAgICAgDQorICAgICAgaWYgKG1lbWNtcCAocHJvbG9ndWUgKyB2cGMsIGlt Zywgc2l6ZW9mIChpbWcpKSA9PSAwKQ0KKyAgICAgICAgew0KKyAgICAgICAg ICB2cGMgKz0gNDsNCisgICAgICAgICAgZmktPmV4dHJhX2luZm8tPmZyYW1l cmVnID0gQVZSX0ZQX1JFR05VTTsNCisgICAgICAgICAgc2Nhbl9zdGFnZSA9 IDI7DQorICAgICAgICB9DQorICAgIH0NCisNCisgIC8qIFRoaXJkIHN0YWdl IG9mIHRoZSBwcm9sb2d1ZSBzY2FubmluZy4gKFJlYWxseSB0d28gc3RhZ2Vz KQ0KKyAgICAgU2NhbiBmb3I6DQorICAgICBzYml3IHIyOCxYWCBvciBzdWJp IHIyOCxsbzgoWFgpDQorICAgICBzYmNpIHIyOSxoaTgoWFgpDQorICAgICBp biBfX3RtcF9yZWdfXyxfX1NSRUdfXw0KKyAgICAgY2xpDQorICAgICBvdXQg X19TUF9MX18scjI4DQorICAgICBvdXQgX19TUkVHX18sX190bXBfcmVnX18N CisgICAgIG91dCBfX1NQX0hfXyxyMjkgKi8NCisNCisgIGlmIChzY2FuX3N0 YWdlID09IDIgJiYgdnBjICsgMTIgPD0gcHJvbG9ndWVfbGVuKQ0KKyAgICB7 DQorICAgICAgaW50IGxvY2Fsc19zaXplID0gMDsNCisgICAgICB1bnNpZ25l ZCBjaGFyIGltZ1tdID0NCisgICAgICB7DQorICAgICAgICAweDBmLDB4YjYs ICAgICAgICAgICAgICAvKiBpbiByMCwweDNmICovDQorICAgICAgICAweGY4 LDB4OTQsICAgICAgICAgICAgICAvKiBjbGkgKi8NCisgICAgICAgIDB4Y2Qs MHhiZiwgICAgICAgICAgICAgIC8qIG91dCAweDNkLHIyOCA7IFNQTCAqLw0K KyAgICAgICAgMHgwZiwweGJlLCAgICAgICAgICAgICAgLyogb3V0IDB4M2Ys cjAgIDsgU1JFRyovDQorICAgICAgICAweGRlLDB4YmYgICAgICAgICAgICAg ICAvKiBvdXQgMHgzZSxyMjkgOyBTUEggKi8NCisgICAgICB9Ow0KKyAgICAg IHVuc2lnbmVkIGNoYXIgaW1nX3NpZ1tdID0NCisgICAgICB7DQorICAgICAg ICAweGNkLDB4YmYsICAgICAgICAgICAgICAvKiBvdXQgMHgzZCxyMjggOyBT UEwgKi8NCisgICAgICAgIDB4ZGUsMHhiZiAgICAgICAgICAgICAgIC8qIG91 dCAweDNlLHIyOSA7IFNQSCAqLw0KKyAgICAgIH07DQorICAgICAgdW5zaWdu ZWQgY2hhciBpbWdfaW50W10gPQ0KKyAgICAgIHsNCisgICAgICAgIDB4Zjgs MHg5NCwgICAgICAgICAgICAgIC8qIGNsaSAqLw0KKyAgICAgICAgMHhjZCww eGJmLCAgICAgICAgICAgICAgLyogb3V0IDB4M2QscjI4IDsgU1BMICovDQor ICAgICAgICAweDc4LDB4OTQsICAgICAgICAgICAgICAvKiBzZWkgKi8NCisg ICAgICAgIDB4ZGUsMHhiZiAgICAgICAgICAgICAgIC8qIG91dCAweDNlLHIy OSA7IFNQSCAqLw0KKyAgICAgIH07DQorICAgICAgICANCisgICAgICBpbnNu ID0gRVhUUkFDVF9JTlNOICgmcHJvbG9ndWVbdnBjXSk7DQorICAgICAgdnBj ICs9IDI7DQorICAgICAgaWYgKChpbnNuICYgMHhmZjMwKSA9PSAweDk3MjAp IC8qIHNiaXcgcjI4LFhYWCAqLw0KKyAgICAgICAgbG9jYWxzX3NpemUgPSAo aW5zbiAmIDB4ZikgfCAoKGluc24gJiAweGMwKSA+PiAyKTsNCisgICAgICBl bHNlIGlmICgoaW5zbiAmIDB4ZjBmMCkgPT0gMHg1MGMwKSAvKiBzdWJpIHIy OCxsbzgoWFgpICovDQorICAgICAgICB7DQorICAgICAgICAgIGxvY2Fsc19z aXplID0gKGluc24gJiAweGYpIHwgKChpbnNuICYgMHhmMDApID4+IDQpOw0K KyAgICAgICAgICBpbnNuID0gRVhUUkFDVF9JTlNOICgmcHJvbG9ndWVbdnBj XSk7DQorICAgICAgICAgIHZwYyArPSAyOw0KKyAgICAgICAgICBsb2NhbHNf c2l6ZSArPSAoKGluc24gJiAweGYpIHwgKChpbnNuICYgMHhmMDApID4+IDQp IDw8IDgpOw0KKyAgICAgICAgfQ0KKyAgICAgIGVsc2UNCisgICAgICAgIHJl dHVybjsNCisgICAgICBmaS0+ZXh0cmFfaW5mby0+bG9jYWxzX3NpemUgPSBs b2NhbHNfc2l6ZTsNCisgICAgICBmaS0+ZXh0cmFfaW5mby0+ZnJhbWVzaXpl ICs9IGxvY2Fsc19zaXplOw0KKyAgICB9DQorfQ0KKw0KKy8qIFRoaXMgZnVu Y3Rpb24gYWN0dWFsbHkgZmlndXJlcyBvdXQgdGhlIGZyYW1lIGFkZHJlc3Mg Zm9yIGEgZ2l2ZW4gcGMgYW5kDQorICAgc3AuICBUaGlzIGlzIHRyaWNreSAg YmVjYXVzZSB3ZSBzb21ldGltZXMgZG9uJ3QgdXNlIGFuIGV4cGxpY2l0DQor ICAgZnJhbWUgcG9pbnRlciwgYW5kIHRoZSBwcmV2aW91cyBzdGFjayBwb2lu dGVyIGlzbid0IG5lY2Vzc2FyaWx5IHJlY29yZGVkDQorICAgb24gdGhlIHN0 YWNrLiAgVGhlIG9ubHkgcmVsaWFibGUgd2F5IHRvIGdldCB0aGlzIGluZm8g aXMgdG8NCisgICBleGFtaW5lIHRoZSBwcm9sb2d1ZS4gICovDQorDQorc3Rh dGljIHZvaWQNCithdnJfaW5pdF9leHRyYV9mcmFtZV9pbmZvIChpbnQgZnJv bWxlYWYsIHN0cnVjdCBmcmFtZV9pbmZvICpmaSkNCit7DQorICBpbnQgcmVn Ow0KKw0KKyAgaWYgKGZpLT5uZXh0KQ0KKyAgICBmaS0+cGMgPSBGUkFNRV9T QVZFRF9QQyAoZmktPm5leHQpOw0KKw0KKyAgZmktPmV4dHJhX2luZm8gPSAo c3RydWN0IGZyYW1lX2V4dHJhX2luZm8gKikNCisgICAgZnJhbWVfb2JzdGFj a19hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZnJhbWVfZXh0cmFfaW5mbykpOw0K KyAgZnJhbWVfc2F2ZWRfcmVnc196YWxsb2MgKGZpKTsNCisNCisgIGZpLT5l eHRyYV9pbmZvLT5yZXR1cm5fcGMgPSAwOw0KKyAgZmktPmV4dHJhX2luZm8t PmFyZ3NfcG9pbnRlciA9IDA7DQorICBmaS0+ZXh0cmFfaW5mby0+bG9jYWxz X3NpemUgPSAwOw0KKyAgZmktPmV4dHJhX2luZm8tPmZyYW1lcmVnID0gMDsN CisgIGZpLT5leHRyYV9pbmZvLT5mcmFtZXNpemUgPSAwOw0KKyAgZmktPmV4 dHJhX2luZm8tPmlzX21haW4gPSAwOw0KKyAgDQorICBhdnJfc2Nhbl9wcm9s b2d1ZSAoZmkpOw0KKw0KKyAgaWYgKFBDX0lOX0NBTExfRFVNTVkgKGZpLT5w YywgZmktPmZyYW1lLCBmaS0+ZnJhbWUpKQ0KKyAgICB7DQorICAgICAgLyog V2UgbmVlZCB0byBzZXR1cCBmaS0+ZnJhbWUgaGVyZSBiZWNhdXNlIHJ1bl9z dGFja19kdW1teSBnZXRzIGl0IHdyb25nDQorICAgICAgICAgYnkgYXNzdW1p bmcgaXQncyBhbHdheXMgRlAuICAqLw0KKyAgICAgIGZpLT5mcmFtZSA9IGdl bmVyaWNfcmVhZF9yZWdpc3Rlcl9kdW1teSAoZmktPnBjLCBmaS0+ZnJhbWUs DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmaS0+ZnJhbWUpOw0KKyAgICB9DQorICBlbHNlIGlmICghZmktPm5l eHQpICAgICAgICAgICAgICAgICAgIC8qIHRoaXMgaXMgdGhlIGlubmVybW9z dCBmcmFtZT8gKi8NCisgICAgZmktPmZyYW1lID0gcmVhZF9yZWdpc3RlciAo ZmktPmV4dHJhX2luZm8tPmZyYW1lcmVnKTsNCisgIGVsc2UgaWYgKGZpLT5l eHRyYV9pbmZvLT5pc19tYWluICE9IDEpIC8qIG5vdCB0aGUgaW5uZXJtb3N0 IGZyYW1lLCBub3QgYG1haW4nICovDQorICAgIC8qIElmIHdlIGhhdmUgYW4g bmV4dCBmcmFtZSwgIHRoZSBjYWxsZWUgc2F2ZWQgaXQuICovDQorICAgIHsN CisgICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqIG5leHRfZmkgPSBmaS0+bmV4 dDsNCisgICAgICBpZiAoZmktPmV4dHJhX2luZm8tPmZyYW1lcmVnID09IEFW Ul9TUF9SRUdOVU0pDQorICAgICAgICBmaS0+ZnJhbWUgPSBuZXh0X2ZpLT5m cmFtZSArIDIgLyogcmV0IGFkZHIgKi8gKyBuZXh0X2ZpLT5leHRyYV9pbmZv LT5mcmFtZXNpemU7DQorICAgICAgLyogRklYTUU6IEkgZG9uJ3QgYW5hbHlz ZSB2YV9hcmdzIGZ1bmN0aW9ucyAgKi8NCisgICAgICBlbHNlDQorICAgICAg ICB7DQorICAgICAgICAgIENPUkVfQUREUiBmcCA9IDA7DQorICAgICAgICAg IENPUkVfQUREUiBmcDEgPSAwOw0KKyAgICAgICAgICB1bnNpZ25lZCBpbnQg ZnBfbG93LCBmcF9oaWdoOw0KKw0KKyAgICAgICAgICAvKiBTY2FuIGFsbCBm cmFtZXMgKi8NCisgICAgICAgICAgZm9yICg7IG5leHRfZmk7IG5leHRfZmkg PSBuZXh0X2ZpLT5uZXh0KQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAg ICAgIC8qIGxvb2sgZm9yIHNhdmVkIEFWUl9GUF9SRUdOVU0gKi8NCisgICAg ICAgICAgICAgIGlmIChuZXh0X2ZpLT5zYXZlZF9yZWdzW0FWUl9GUF9SRUdO VU1dICYmICFmcCkNCisgICAgICAgICAgICAgICAgZnAgPSBuZXh0X2ZpLT5z YXZlZF9yZWdzW0FWUl9GUF9SRUdOVU1dOw0KKyAgICAgICAgICAgICAgLyog bG9vayBmb3Igc2F2ZWQgQVZSX0ZQX1JFR05VTSArIDEgKi8NCisgICAgICAg ICAgICAgIGlmIChuZXh0X2ZpLT5zYXZlZF9yZWdzW0FWUl9GUF9SRUdOVU0g KyAxXSAmJiAhZnAxKQ0KKyAgICAgICAgICAgICAgICBmcDEgPSBuZXh0X2Zp LT5zYXZlZF9yZWdzW0FWUl9GUF9SRUdOVU0gKyAxXTsNCisgICAgICAgICAg ICB9DQorICAgICAgICAgIGZwX2xvdyA9IChmcCA/IHJlYWRfbWVtb3J5X3Vu c2lnbmVkX2ludGVnZXIgKGF2cl9tYWtlX3NhZGRyIChmcCksIDEpDQorICAg ICAgICAgICAgICAgICAgICA6IHJlYWRfcmVnaXN0ZXIgKEFWUl9GUF9SRUdO VU0pKSAmIDB4ZmY7DQorICAgICAgICAgIGZwX2hpZ2ggPSAoZnAxID8gcmVh ZF9tZW1vcnlfdW5zaWduZWRfaW50ZWdlciAoYXZyX21ha2Vfc2FkZHIgKGZw MSksIDEpDQorICAgICAgICAgICAgICAgICAgICA6IHJlYWRfcmVnaXN0ZXIg KEFWUl9GUF9SRUdOVU0gKyAxKSkgJiAweGZmOw0KKyAgICAgICAgICBmaS0+ ZnJhbWUgPSBmcF9sb3cgfCAoZnBfaGlnaCA8PCA4KTsNCisgICAgICAgIH0N CisgICAgfQ0KKw0KKyAgLyogVFJvdGg6IERvIHdlIHdhbnQgdG8gZG8gdGhp cyBpZiB3ZSBhcmUgaW4gbWFpbj8gSSBkb24ndCB0aGluayB3ZSBzaG91bGQN CisgICAgIHNpbmNlIHJldHVybl9wYyBtYWtlcyBubyBzZW5zZSB3aGVuIHdl IGFyZSBpbiBtYWluLiAqLw0KKw0KKyAgaWYgKChmaS0+cGMpICYmIChmaS0+ ZXh0cmFfaW5mby0+aXNfbWFpbiA9PSAwKSkgLyogV2UgYXJlIG5vdCBpbiBD QUxMX0RVTU1ZICovDQorICAgIHsNCisgICAgICBDT1JFX0FERFIgYWRkcjsN CisgICAgICBpbnQgaTsNCisgICAgDQorICAgICAgYWRkciA9IGZpLT5mcmFt ZSArIGZpLT5leHRyYV9pbmZvLT5mcmFtZXNpemUgKyAxOw0KKyAgICAgIA0K KyAgICAgIC8qIFJldHVybiBhZGRyZXNzIGluIHN0YWNrIGluIGRpZmZlcmVu dCBlbmRpYW5uZXNzICovDQorDQorICAgICAgZmktPmV4dHJhX2luZm8tPnJl dHVybl9wYyA9DQorICAgICAgICAgIHJlYWRfbWVtb3J5X3Vuc2lnbmVkX2lu dGVnZXIgKGF2cl9tYWtlX3NhZGRyIChhZGRyKSwgMSkgPDwgODsNCisgICAg ICBmaS0+ZXh0cmFfaW5mby0+cmV0dXJuX3BjIHw9DQorICAgICAgICAgIHJl YWRfbWVtb3J5X3Vuc2lnbmVkX2ludGVnZXIgKGF2cl9tYWtlX3NhZGRyIChh ZGRyICsgMSksIDEpOw0KKyAgICANCisgICAgICAvKiBUaGlzIHJldHVybiBh ZGRyZXNzIGluIHdvcmRzLA0KKyAgICAgICAgIG11c3QgYmUgY29udmVydGVk IHRvIHRoZSBieXRlcyBhZGRyZXNzICovDQorICAgICAgZmktPmV4dHJhX2lu Zm8tPnJldHVybl9wYyAqPSAyOw0KKw0KKyAgICAgIC8qIFJlc29sdmUgYSBw dXNoZWQgcmVnaXN0ZXJzIGFkZHJlc3NlcyAqLw0KKyAgICAgIGZvciAoaSA9 IDA7IGkgPCBOVU1fUkVHUzsgaSsrKQ0KKyAgICAgICAgew0KKyAgICAgICAg ICBpZiAoZmktPnNhdmVkX3JlZ3NbaV0pDQorICAgICAgICAgICAgZmktPnNh dmVkX3JlZ3NbaV0gPSBhZGRyIC0gZmktPnNhdmVkX3JlZ3NbaV07DQorICAg ICAgICB9DQorICAgIH0NCit9DQorDQorLyogUmVzdG9yZSB0aGUgbWFjaGlu ZSB0byB0aGUgc3RhdGUgaXQgaGFkIGJlZm9yZSB0aGUgY3VycmVudCBmcmFt ZSB3YXMNCisgICBjcmVhdGVkLiAgVXN1YWxseSB1c2VkIGVpdGhlciBieSB0 aGUgIlJFVFVSTiIgY29tbWFuZCwgb3IgYnkNCisgICBjYWxsX2Z1bmN0aW9u X2J5X2hhbmQgYWZ0ZXIgdGhlIGR1bW15X2ZyYW1lIGlzIGZpbmlzaGVkLiAq Lw0KKw0KK3N0YXRpYyB2b2lkDQorYXZyX3BvcF9mcmFtZSAodm9pZCkNCit7 DQorICB1bnNpZ25lZCByZWdudW07DQorICBDT1JFX0FERFIgc2FkZHI7DQor ICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBnZXRfY3VycmVudF9mcmFt ZSAoKTsNCisNCisgIGlmIChQQ19JTl9DQUxMX0RVTU1ZKGZyYW1lLT5wYywg ZnJhbWUtPmZyYW1lLCBmcmFtZS0+ZnJhbWUpKQ0KKyAgICB7DQorICAgICAg Z2VuZXJpY19wb3BfZHVtbXlfZnJhbWUoKTsNCisgICAgfQ0KKyAgZWxzZQ0K KyAgICB7DQorICAgICAgLyogVFJvdGg6IFdoeSBvbmx5IGxvb3Agb3ZlciA4 IHJlZ2lzdGVycz8gKi8NCisNCisgICAgICBmb3IgKHJlZ251bSA9IDA7IHJl Z251bSA8IDg7IHJlZ251bSsrKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAv KiBEb24ndCBmb3JnZXQgQVZSX1NQX1JFR05VTSBpbiBhIGZyYW1lX3NhdmVk X3JlZ3Mgc3RydWN0IGlzIHRoZQ0KKyAgICAgICAgICAgICBhY3R1YWwgdmFs dWUgd2Ugd2FudCwgbm90IHRoZSBhZGRyZXNzIG9mIHRoZSB2YWx1ZSB3ZSB3 YW50LiAgKi8NCisgICAgICAgICAgaWYgKGZyYW1lLT5zYXZlZF9yZWdzW3Jl Z251bV0gJiYgcmVnbnVtICE9IEFWUl9TUF9SRUdOVU0pDQorICAgICAgICAg ICAgew0KKyAgICAgICAgICAgICAgc2FkZHIgPSBhdnJfbWFrZV9zYWRkciAo ZnJhbWUtPnNhdmVkX3JlZ3NbcmVnbnVtXSk7DQorICAgICAgICAgICAgICB3 cml0ZV9yZWdpc3RlciAocmVnbnVtLCByZWFkX21lbW9yeV91bnNpZ25lZF9p bnRlZ2VyIChzYWRkciwgMSkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAg ICAgZWxzZSBpZiAoZnJhbWUtPnNhdmVkX3JlZ3NbcmVnbnVtXSAmJiByZWdu dW0gPT0gQVZSX1NQX1JFR05VTSkNCisgICAgICAgICAgICB3cml0ZV9yZWdp c3RlciAocmVnbnVtLCBmcmFtZS0+ZnJhbWUgKyAyKTsNCisgICAgICAgIH0N CisNCisgICAgICAvKiBEb24ndCBmb3JnZXQgdGhlIHVwZGF0ZSB0aGUgUEMg dG9vISAgKi8NCisgICAgICB3cml0ZV9wYyAoZnJhbWUtPmV4dHJhX2luZm8t PnJldHVybl9wYyk7DQorICAgIH0NCisgIGZsdXNoX2NhY2hlZF9mcmFtZXMg KCk7DQorfQ0KKw0KKy8qIFJldHVybiB0aGUgc2F2ZWQgUEMgZnJvbSB0aGlz IGZyYW1lLiAqLw0KKw0KK3N0YXRpYyBDT1JFX0FERFINCithdnJfZnJhbWVf c2F2ZWRfcGMgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkNCit7DQorICBp ZiAoUENfSU5fQ0FMTF9EVU1NWShmcmFtZS0+cGMsIGZyYW1lLT5mcmFtZSwg ZnJhbWUtPmZyYW1lKSkNCisgICAgcmV0dXJuIGdlbmVyaWNfcmVhZF9yZWdp c3Rlcl9kdW1teSAoZnJhbWUtPnBjLCBmcmFtZS0+ZnJhbWUsIEFWUl9QQ19S RUdOVU0pOw0KKyAgZWxzZQ0KKyAgICByZXR1cm4gZnJhbWUtPmV4dHJhX2lu Zm8tPnJldHVybl9wYzsNCit9DQorDQorc3RhdGljIENPUkVfQUREUg0KK2F2 cl9zYXZlZF9wY19hZnRlcl9jYWxsIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUpDQorew0KKyAgdW5zaWduZWQgY2hhciBtMSwgbTI7DQorICB1bnNpZ25l ZCBpbnQgc3AgPSByZWFkX3JlZ2lzdGVyIChBVlJfU1BfUkVHTlVNKTsNCisg IG0xID0gcmVhZF9tZW1vcnlfdW5zaWduZWRfaW50ZWdlciAoYXZyX21ha2Vf c2FkZHIgKHNwICsgMSksIDEpOw0KKyAgbTIgPSByZWFkX21lbW9yeV91bnNp Z25lZF9pbnRlZ2VyIChhdnJfbWFrZV9zYWRkciAoc3AgKyAyKSwgMSk7DQor ICByZXR1cm4gKG0yIHwgKG0xIDw8IDgpKSAqIDI7DQorfQ0KKw0KKy8qIEZp Z3VyZSBvdXQgd2hlcmUgaW4gUkVHQlVGIHRoZSBjYWxsZWQgZnVuY3Rpb24g aGFzIGxlZnQgaXRzIHJldHVybiB2YWx1ZS4NCisgICBDb3B5IHRoYXQgaW50 byBWQUxCVUYuICovDQorDQorc3RhdGljIHZvaWQNCithdnJfZXh0cmFjdF9y ZXR1cm5fdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlLCBjaGFyICpyZWdidWYs IGNoYXIgKnZhbGJ1ZikNCit7DQorICBpbnQgd29yZHNpemUsIGxlbjsNCisN CisgIHdvcmRzaXplID0gMjsNCisNCisgIGxlbiA9IFRZUEVfTEVOR1RIKHR5 cGUpOw0KKw0KKyAgc3dpdGNoIChsZW4pIHsNCisgIGNhc2UgMTogICAgICAg LyogKGNoYXIpICovDQorICBjYXNlIDI6ICAgICAgIC8qIChzaG9ydCksIChp bnQpICovDQorICAgIG1lbWNweSAodmFsYnVmLCAgIHJlZ2J1ZiArIFJFR0lT VEVSX0JZVEUoMjQpLCAyKTsNCisgICAgYnJlYWs7DQorICBjYXNlIDQ6ICAg ICAgIC8qIChsb25nKSwgKGZsb2F0KSAqLw0KKyAgICBtZW1jcHkgKHZhbGJ1 ZiwgICByZWdidWYgKyBSRUdJU1RFUl9CWVRFKDIyKSwgNCk7DQorICAgIGJy ZWFrOw0KKyAgY2FzZSA4OiAgICAgICAvKiAoZG91YmxlKSAoZG9lc24ndCBz ZWVtIHRvIGhhcHBlbiwgd2hpY2ggaXMgZ29vZCwNCisgICAgICAgICAgICAg ICAgICAgYmVjYXVzZSB0aGlzIGFsbW9zdCBjZXJ0YWlubHkgaXNuJ3Qgcmln aHQuICAqLw0KKyAgICBlcnJvciAoIkkgZG9uJ3Qga25vdyBob3cgYSBkb3Vi bGUgaXMgcmV0dXJuZWQuIik7DQorICAgIGJyZWFrOw0KKyAgfQ0KK30NCisN CisvKiBSZXR1cm5zIHRoZSByZXR1cm4gYWRkcmVzcyBmb3IgYSBkdW1teS4g Ki8NCisNCitzdGF0aWMgQ09SRV9BRERSDQorYXZyX2NhbGxfZHVtbXlfYWRk cmVzcyAodm9pZCkNCit7DQorICByZXR1cm4gZW50cnlfcG9pbnRfYWRkcmVz cyAoKTsNCit9DQorDQorLyogUGxhY2UgdGhlIGFwcHJvcHJpYXRlIHZhbHVl IGluIHRoZSBhcHByb3ByaWF0ZSByZWdpc3RlcnMuDQorICAgUHJpbWFyaWx5 IHVzZWQgYnkgdGhlIFJFVFVSTiBjb21tYW5kLiAgKi8NCisNCitzdGF0aWMg dm9pZA0KK2F2cl9zdG9yZV9yZXR1cm5fdmFsdWUgKHN0cnVjdCB0eXBlICp0 eXBlLCBjaGFyICp2YWxidWYpDQorew0KKyAgaW50IHdvcmRzaXplLCBsZW4s IHJlZ3ZhbDsNCisgIA0KKyAgd29yZHNpemUgPSAyOw0KKw0KKyAgbGVuID0g VFlQRV9MRU5HVEgodHlwZSk7DQorICBzd2l0Y2ggKGxlbikgew0KKyAgY2Fz ZSAxOiAgICAgICAvKiBjaGFyICovDQorICBjYXNlIDI6ICAgICAgIC8qIHNo b3J0LCBpbnQgKi8NCisgICAgcmVndmFsID0gZXh0cmFjdF9hZGRyZXNzKHZh bGJ1ZiwgbGVuKTsNCisgICAgd3JpdGVfcmVnaXN0ZXIgKDAsIHJlZ3ZhbCk7 DQorICAgIGJyZWFrOw0KKyAgY2FzZSA0OiAgICAgICAvKiBsb25nLCBmbG9h dCAqLw0KKyAgICByZWd2YWwgPSBleHRyYWN0X2FkZHJlc3ModmFsYnVmLCBs ZW4pOw0KKyAgICB3cml0ZV9yZWdpc3RlciAoMCwgcmVndmFsID4+IDE2KTsN CisgICAgd3JpdGVfcmVnaXN0ZXIgKDEsIHJlZ3ZhbCAmIDB4ZmZmZik7DQor ICAgIGJyZWFrOw0KKyAgY2FzZSA4OiAgICAgICAvKiBwcmVzdW1lYWJseSBk b3VibGUsIGJ1dCBkb2Vzbid0IHNlZW0gdG8gaGFwcGVuICovDQorICAgIGVy cm9yICgiSSBkb24ndCBrbm93IGhvdyB0byByZXR1cm4gYSBkb3VibGUuIik7 DQorICAgIGJyZWFrOw0KKyAgfQ0KK30NCisNCisvKiBTZXR1cCB0aGUgcmV0 dXJuIGFkZHJlc3MgZm9yIGEgZHVtbXkgZnJhbWUsIGFzIGNhbGxlZCBieQ0K KyAgIGNhbGxfZnVuY3Rpb25fYnlfaGFuZC4gIE9ubHkgbmVjZXNzYXJ5IHdo ZW4geW91IGFyZSB1c2luZyBhbiBlbXB0eQ0KKyAgIENBTExfRFVNTVkuICov DQorDQorc3RhdGljIENPUkVfQUREUg0KK2F2cl9wdXNoX3JldHVybl9hZGRy ZXNzIChDT1JFX0FERFIgcGMsIENPUkVfQUREUiBzcCkNCit7DQorICB1bnNp Z25lZCBjaGFyIGJ1ZlsyXTsNCisgIGludCB3b3Jkc2l6ZSA9IDI7DQorICBz dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7DQorICBDT1JFX0FERFIg bW9uX2JyazsNCisNCisgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVy ciwgImF2cl9wdXNoX3JldHVybl9hZGRyZXNzKCkgd2FzIGNhbGxlZFxuIik7 DQorDQorICBidWZbMF0gPSAwOw0KKyAgYnVmWzFdID0gMDsNCisgIHNwIC09 IHdvcmRzaXplOw0KKyAgd3JpdGVfbWVtb3J5IChzcCArIDEsIGJ1ZiwgMik7 DQorDQorI2lmIDANCisgIC8qIEZJWE1FOiBUUm90aC8yMDAyLTAyLTE4OiBU aGlzIHNob3VsZCBwcm9iYWJseSBiZSByZW1vdmVkIHNpbmNlIGl0J3MgYQ0K KyAgICAgbGVmdC1vdmVyIGZyb20gRGVuaXMnIG9yaWdpbmFsIHBhdGNoIHdo aWNoIHVzZWQgYXZyLW1vbiBmb3IgdGhlIHRhcmdldA0KKyAgICAgaW5zdGVh ZCBvZiB0aGUgZ2VuZXJpYyByZW1vdGUgdGFyZ2V0LiAqLw0KKyAgaWYgKChz dHJjbXAgKHRhcmdldF9zaG9ydG5hbWUsICJhdnItbW9uIikgPT0gMCkNCisg ICAgICAmJiAobXN5bWJvbCA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoImdk Yl9icmVhayIsIE5VTEwsIE5VTEwpKSkNCisgICAgew0KKyAgICAgIG1vbl9i cmsgPSBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCk7DQorICAgICAg c3RvcmVfdW5zaWduZWRfaW50ZWdlciAoYnVmLCB3b3Jkc2l6ZSwgbW9uX2Jy ayAvIDIpOw0KKyAgICAgIHNwIC09IHdvcmRzaXplOw0KKyAgICAgIHdyaXRl X21lbW9yeSAoc3AgKyAxLCBidWYgKyAxLCAxKTsNCisgICAgICB3cml0ZV9t ZW1vcnkgKHNwICsgMiwgYnVmLCAxKTsNCisgICAgfQ0KKyNlbmRpZg0KKyAg cmV0dXJuIHNwOw0KK30NCisNCitzdGF0aWMgQ09SRV9BRERSDQorYXZyX3Nr aXBfcHJvbG9ndWUgKENPUkVfQUREUiBwYykNCit7DQorICBDT1JFX0FERFIg ZnVuY19hZGRyLCBmdW5jX2VuZDsNCisgIHN0cnVjdCBzeW10YWJfYW5kX2xp bmUgc2FsOw0KKw0KKyAgLyogU2VlIHdoYXQgdGhlIHN5bWJvbCB0YWJsZSBz YXlzICovDQorDQorICBpZiAoZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChw YywgTlVMTCwgJmZ1bmNfYWRkciwgJmZ1bmNfZW5kKSkNCisgICAgew0KKyAg ICAgIHNhbCA9IGZpbmRfcGNfbGluZSAoZnVuY19hZGRyLCAwKTsNCisNCisg ICAgICBpZiAoc2FsLmxpbmUgIT0gMCAmJiBzYWwuZW5kIDwgZnVuY19lbmQp IA0KKyAgICAgICAgcmV0dXJuIHNhbC5lbmQ7DQorICAgIH0NCisNCisvKiBF aXRoZXIgd2UgZGlkbid0IGZpbmQgdGhlIHN0YXJ0IG9mIHRoaXMgZnVuY3Rp b24gKG5vdGhpbmcgd2UgY2FuIGRvKSwNCisgICBvciB0aGVyZSdzIG5vIGxp bmUgaW5mbywgb3IgdGhlIGxpbmUgYWZ0ZXIgdGhlIHByb2xvZ3VlIGlzIGFm dGVyDQorICAgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24gKHRoZXJlIHByb2Jh Ymx5IGlzbid0IGEgcHJvbG9ndWUpLiAqLw0KKw0KKyAgcmV0dXJuIHBjOw0K K30NCisNCitzdGF0aWMgQ09SRV9BRERSDQorYXZyX2ZyYW1lX2FkZHJlc3Mg KHN0cnVjdCBmcmFtZV9pbmZvICpmaSkNCit7DQorICByZXR1cm4gYXZyX21h a2Vfc2FkZHIgKGZpLT5mcmFtZSk7DQorfQ0KKw0KKy8qIEdpdmVuIGEgR0RC IGZyYW1lLCBkZXRlcm1pbmUgdGhlIGFkZHJlc3Mgb2YgdGhlIGNhbGxpbmcg ZnVuY3Rpb24ncyBmcmFtZS4NCisgICBUaGlzIHdpbGwgYmUgdXNlZCB0byBj cmVhdGUgYSBuZXcgR0RCIGZyYW1lIHN0cnVjdCwgYW5kIHRoZW4NCisgICBJ TklUX0VYVFJBX0ZSQU1FX0lORk8gYW5kIElOSVRfRlJBTUVfUEMgd2lsbCBi ZSBjYWxsZWQgZm9yIHRoZSBuZXcgZnJhbWUuDQorDQorICAgRm9yIHVzLCB0 aGUgZnJhbWUgYWRkcmVzcyBpcyBpdHMgc3RhY2sgcG9pbnRlciB2YWx1ZSwg c28gd2UgbG9vayB1cA0KKyAgIHRoZSBmdW5jdGlvbiBwcm9sb2d1ZSB0byBk ZXRlcm1pbmUgdGhlIGNhbGxlcidzIHNwIHZhbHVlLCBhbmQgcmV0dXJuIGl0 LiAgKi8NCisNCitzdGF0aWMgQ09SRV9BRERSDQorYXZyX2ZyYW1lX2NoYWlu IChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpDQorew0KKyAgaWYgKFBDX0lO X0NBTExfRFVNTVkgKGZyYW1lLT5wYywgZnJhbWUtPmZyYW1lLCBmcmFtZS0+ ZnJhbWUpKQ0KKyAgICB7DQorICAgICAgLyogaW5pdGlhbGl6ZSB0aGUgcmV0 dXJuX3BjIG5vdyAqLw0KKyAgICAgIGZyYW1lLT5leHRyYV9pbmZvLT5yZXR1 cm5fcGMgPSBnZW5lcmljX3JlYWRfcmVnaXN0ZXJfZHVtbXkgKGZyYW1lLT5w YywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZnJhbWUsIA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEFWUl9QQ19SRUdOVU0pOw0KKyAgICAgIHJl dHVybiBmcmFtZS0+ZnJhbWU7DQorICAgIH0NCisgIHJldHVybiAoZnJhbWUt PmV4dHJhX2luZm8tPmlzX21haW4gPyAwDQorICAgICAgICAgIDogZnJhbWUt PmZyYW1lICsgZnJhbWUtPmV4dHJhX2luZm8tPmZyYW1lc2l6ZSArIDIgLyog cmV0IGFkZHIgKi8pOw0KK30NCisNCisvKiBTdG9yZSB0aGUgYWRkcmVzcyBv ZiB0aGUgcGxhY2UgaW4gd2hpY2ggdG8gY29weSB0aGUgc3RydWN0dXJlIHRo ZQ0KKyAgIHN1YnJvdXRpbmUgd2lsbCByZXR1cm4uICBUaGlzIGlzIGNhbGxl ZCBmcm9tIGNhbGxfZnVuY3Rpb24uIA0KKw0KKyAgIFdlIHN0b3JlIHN0cnVj dHMgdGhyb3VnaCBhIHBvaW50ZXIgcGFzc2VkIGluIHRoZSBmaXJzdCBBcmd1 bWVudA0KKyAgIHJlZ2lzdGVyLiAqLw0KKw0KK3N0YXRpYyB2b2lkDQorYXZy X3N0b3JlX3N0cnVjdF9yZXR1cm4gKENPUkVfQUREUiBhZGRyLCBDT1JFX0FE RFIgc3ApDQorew0KKyAgd3JpdGVfcmVnaXN0ZXIgKDAsIGFkZHIpOw0KK30N CisNCisvKiBFeHRyYWN0IGZyb20gYW4gYXJyYXkgUkVHQlVGIGNvbnRhaW5p bmcgdGhlIChyYXcpIHJlZ2lzdGVyIHN0YXRlDQorICAgdGhlIGFkZHJlc3Mg aW4gd2hpY2ggYSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGl0cyBzdHJ1Y3R1 cmUgdmFsdWUsDQorICAgYXMgYSBDT1JFX0FERFIgKG9yIGFuIGV4cHJlc3Np b24gdGhhdCBjYW4gYmUgdXNlZCBhcyBvbmUpLiAqLw0KKw0KK3N0YXRpYyBD T1JFX0FERFINCithdnJfZXh0cmFjdF9zdHJ1Y3RfdmFsdWVfYWRkcmVzcyAo Y2hhciAqcmVnYnVmKQ0KK3sNCisgIHJldHVybiAoZXh0cmFjdF9hZGRyZXNz ICgocmVnYnVmKSArIFJFR0lTVEVSX0JZVEUgKDApLA0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJFR0lTVEVSX1JBV19TSVpFICgwKSkNCisgICAg ICAgICAgfCBBVlJfU01FTV9TVEFSVCk7DQorfQ0KKw0KKy8qIFNldHVwIHRo ZSBmdW5jdGlvbiBhcmd1bWVudHMgZm9yIGNhbGxpbmcgYSBmdW5jdGlvbiBp biB0aGUgaW5mZXJpb3IuDQorDQorICAgT24gdGhlIEFWUiBhcmNoaXRlY3R1 cmUsIHRoZXJlIGFyZSAxOCByZWdpc3RlcnMgKFIyNSB0byBSOCkgd2hpY2gg YXJlDQorICAgZGVkaWNhdGVkIGZvciBwYXNzaW5nIGZ1bmN0aW9uIGFyZ3Vt ZW50cy4gIFVwIHRvIHRoZSBmaXJzdCAxOCBhcmd1bWVudHMNCisgICAoZGVw ZW5kaW5nIG9uIHNpemUpIG1heSBnbyBpbnRvIHRoZXNlIHJlZ2lzdGVycy4g IFRoZSByZXN0IGdvIG9uIHRoZSBzdGFjay4NCisNCisgICBBcmd1bWVudHMg dGhhdCBhcmUgbGFyZ2VyIHRoYW4gV09SRFNJWkUgYnl0ZXMgd2lsbCBiZSBz cGxpdCBiZXR3ZWVuIHR3byBvcg0KKyAgIG1vcmUgcmVnaXN0ZXJzIGFzIGF2 YWlsYWJsZSwgYnV0IHdpbGwgTk9UIGJlIHNwbGl0IGJldHdlZW4gYSByZWdp c3RlciBhbmQNCisgICB0aGUgc3RhY2suDQorDQorICAgQW4gZXhjZXB0aW9u YWwgY2FzZSBleGlzdHMgZm9yIHN0cnVjdCBhcmd1bWVudHMgKGFuZCBwb3Nz aWJseSBvdGhlcg0KKyAgIGFnZ3JlZ2F0ZXMgc3VjaCBhcyBhcnJheXMpIC0t IGlmIHRoZSBzaXplIGlzIGxhcmdlciB0aGFuIFdPUkRTSVpFIGJ5dGVzIGJ1 dA0KKyAgIG5vdCBhIG11bHRpcGxlIG9mIFdPUkRTSVpFIGJ5dGVzLiAgSW4g dGhpcyBjYXNlIHRoZSBhcmd1bWVudCBpcyBuZXZlciBzcGxpdA0KKyAgIGJl dHdlZW4gdGhlIHJlZ2lzdGVycyBhbmQgdGhlIHN0YWNrLCBidXQgaW5zdGVh ZCBpcyBjb3BpZWQgaW4gaXRzIGVudGlyZXR5DQorICAgb250byB0aGUgc3Rh Y2ssIEFORCBhbHNvIGNvcGllZCBpbnRvIGFzIG1hbnkgcmVnaXN0ZXJzIGFz IHRoZXJlIGlzIHJvb20NCisgICBmb3IuICBJbiBvdGhlciB3b3Jkcywgc3Bh Y2UgaW4gcmVnaXN0ZXJzIHBlcm1pdHRpbmcsIHR3byBjb3BpZXMgb2YgdGhl IHNhbWUNCisgICBhcmd1bWVudCBhcmUgcGFzc2VkIGluLiAgQXMgZmFyIGFz IEkgY2FuIHRlbGwsIG9ubHkgdGhlIG9uZSBvbiB0aGUgc3RhY2sgaXMNCisg ICB1c2VkLCBhbHRob3VnaCB0aGF0IG1heSBiZSBhIGZ1bmN0aW9uIG9mIHRo ZSBsZXZlbCBvZiBjb21waWxlcg0KKyAgIG9wdGltaXphdGlvbi4gIEkgc3Vz cGVjdCB0aGlzIGlzIGEgY29tcGlsZXIgYnVnLiAgQXJndW1lbnRzIG9mIHRo ZXNlIG9kZA0KKyAgIHNpemVzIGFyZSBsZWZ0LWp1c3RpZmllZCB3aXRoaW4g dGhlIHdvcmQgKGFzIG9wcG9zZWQgdG8gYXJndW1lbnRzIHNtYWxsZXINCisg ICB0aGFuIFdPUkRTSVpFIGJ5dGVzLCB3aGljaCBhcmUgcmlnaHQtanVzdGlm aWVkKS4NCisgDQorICAgSWYgdGhlIGZ1bmN0aW9uIGlzIHRvIHJldHVybiBh biBhZ2dyZWdhdGUgdHlwZSBzdWNoIGFzIGEgc3RydWN0LCB0aGUgY2FsbGVy DQorICAgbXVzdCBhbGxvY2F0ZSBzcGFjZSBpbnRvIHdoaWNoIHRoZSBjYWxs ZWUgd2lsbCBjb3B5IHRoZSByZXR1cm4gdmFsdWUuICBJbg0KKyAgIHRoaXMg Y2FzZSwgYSBwb2ludGVyIHRvIHRoZSByZXR1cm4gdmFsdWUgbG9jYXRpb24g aXMgcGFzc2VkIGludG8gdGhlIGNhbGxlZQ0KKyAgIGluIHJlZ2lzdGVyIFIw LCB3aGljaCBkaXNwbGFjZXMgb25lIG9mIHRoZSBvdGhlciBhcmd1bWVudHMg cGFzc2VkIGluIHZpYQ0KKyAgIHJlZ2lzdGVycyBSMCB0byBSMi4gKi8NCisN CitzdGF0aWMgQ09SRV9BRERSDQorYXZyX3B1c2hfYXJndW1lbnRzIChpbnQg bmFyZ3MsIHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIENPUkVfQUREUiBzcCwNCisg ICAgICAgICAgICAgICAgICAgIGludCBzdHJ1Y3RfcmV0dXJuLCBDT1JFX0FE RFIgc3RydWN0X2FkZHIpDQorew0KKyAgaW50IHN0YWNrX2FsbG9jLCBzdGFj a19vZmZzZXQ7DQorICBpbnQgd29yZHNpemU7DQorICBpbnQgYXJncmVnOw0K KyAgaW50IGFyZ251bTsNCisgIHN0cnVjdCB0eXBlICp0eXBlOw0KKyAgQ09S RV9BRERSIHJlZ3ZhbDsNCisgIGNoYXIgKnZhbDsNCisgIGNoYXIgdmFsYnVm WzRdOw0KKyAgaW50IGxlbjsNCisNCisgIHdvcmRzaXplICAgID0gMTsNCisj aWYgMA0KKyAgLyogTm93IG1ha2Ugc3VyZSB0aGVyZSdzIHNwYWNlIG9uIHRo ZSBzdGFjayAqLw0KKyAgZm9yIChhcmdudW0gPSAwLCBzdGFja19hbGxvYyA9 IDA7IA0KKyAgICAgICBhcmdudW0gPCBuYXJnczsgYXJnbnVtKyspDQorICAg IHN0YWNrX2FsbG9jICs9IFRZUEVfTEVOR1RIKFZBTFVFX1RZUEUoYXJnc1th cmdudW1dKSk7DQorICBzcCAtPSBzdGFja19hbGxvYzsgICAgLyogbWFrZSBy b29tIG9uIHN0YWNrIGZvciBhcmdzICovDQorICAvKiB3ZSBtYXkgb3Zlci1h bGxvY2F0ZSBhIGxpdHRsZSBoZXJlLCBidXQgdGhhdCB3b24ndCBodXJ0IGFu eXRoaW5nICovDQorI2VuZGlmDQorICBhcmdyZWcgPSAyNTsNCisgIGlmIChz dHJ1Y3RfcmV0dXJuKSAgICAvKiAic3RydWN0IHJldHVybiIgcG9pbnRlciB0 YWtlcyB1cCBvbmUgYXJncmVnICovDQorICAgIHsNCisgICAgICB3cml0ZV9y ZWdpc3RlciAoLS1hcmdyZWcsIHN0cnVjdF9hZGRyKTsNCisgICAgfQ0KKw0K KyAgLyogTm93IGxvYWQgYXMgbWFueSBhcyBwb3NzaWJsZSBvZiB0aGUgZmly c3QgYXJndW1lbnRzIGludG8gcmVnaXN0ZXJzLCBhbmQNCisgICAgIHB1c2gg dGhlIHJlc3Qgb250byB0aGUgc3RhY2suICBUaGVyZSBhcmUgM04gYnl0ZXMg aW4gdGhyZWUgcmVnaXN0ZXJzDQorICAgICBhdmFpbGFibGUuICBMb29wIHRo cnUgYXJncyBmcm9tIGZpcnN0IHRvIGxhc3QuICAqLw0KKw0KKyAgZm9yIChh cmdudW0gPSAwLCBzdGFja19vZmZzZXQgPSAwOyBhcmdudW0gPCBuYXJnczsg YXJnbnVtKyspDQorICAgIHsNCisgICAgICB0eXBlID0gVkFMVUVfVFlQRSAo YXJnc1thcmdudW1dKTsNCisgICAgICBsZW4gPSBUWVBFX0xFTkdUSCAodHlw ZSk7DQorICAgICAgdmFsID0gKGNoYXIgKikgVkFMVUVfQ09OVEVOVFMgKGFy Z3NbYXJnbnVtXSk7DQorDQorICAgICAgLyogTk9URSBXRUxMISEhISEgIFRo aXMgaXMgbm90IGFuICJlbHNlIGlmIiBjbGF1c2UhISEgIFRoYXQncyBiZWNh dXNlDQorICAgICAgICAgc29tZSAqJl4lJCB0aGluZ3MgZ2V0IHBhc3NlZCBv biB0aGUgc3RhY2sgQU5EIGluIHRoZSByZWdpc3RlcnMhICAqLw0KKyAgICAg IHdoaWxlIChsZW4gPiAwKQ0KKyAgICAgICAgeyAvKiB0aGVyZSdzIHJvb20g aW4gcmVnaXN0ZXJzICovDQorICAgICAgICAgIGxlbiAtPSB3b3Jkc2l6ZTsN CisgICAgICAgICAgcmVndmFsID0gZXh0cmFjdF9hZGRyZXNzICh2YWwgKyBs ZW4sIHdvcmRzaXplKTsNCisgICAgICAgICAgd3JpdGVfcmVnaXN0ZXIgKGFy Z3JlZy0tLCByZWd2YWwpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorICByZXR1 cm4gc3A7DQorfQ0KKw0KKy8qIEluaXRpYWxpemUgdGhlIGdkYmFyY2ggc3Ry dWN0dXJlIGZvciB0aGUgQVZSJ3MuICovDQorDQorc3RhdGljIHN0cnVjdCBn ZGJhcmNoICoNCithdnJfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9p bmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcyl7DQorICAv KiBGSVhNRTogVFJvdGgvMjAwMi0wMi0xODogSSBoYXZlIG5vIGlkZWEgaWYg YXZyX2NhbGxfZHVtbXlfd29yZHNbXSBzaG91bGQNCisgICAgIGJlIGJpZ2dl ciBvciBub3QuIEluaXRpYWwgdGVzdGluZyBzZWVtcyB0byBzaG93IHRoYXQg YGNhbGwgbXlfZnVuYygpYA0KKyAgICAgd29ya3MgYW5kIGJhY2t0cmFjZSBm cm9tIGEgYnJlYWtwb2ludCB3aXRoaW4gdGhlIGNhbGwgbG9va3MgY29ycmVj dC4NCisgICAgIEFkbWl0dGVkbHksIEkgaGF2ZW4ndCB0ZXN0ZWQgd2l0aCBt b3JlIHRoYW4gYSB2ZXJ5IHNpbXBsZSBwcm9ncmFtLiAqLw0KKyAgc3RhdGlj IExPTkdFU1QgYXZyX2NhbGxfZHVtbXlfd29yZHNbXSA9IHswfTsNCisNCisg IHN0cnVjdCBnZGJhcmNoICAgICAgICAgICAgICAgICAgICpnZGJhcmNoOw0K KyAgc3RydWN0IGdkYmFyY2hfdGRlcCAgICAgICAgICAgICAgKnRkZXA7DQor DQorICAvKiBGaW5kIGEgY2FuZGlkYXRlIGFtb25nIHRoZSBsaXN0IG9mIHBy ZS1kZWNsYXJlZCBhcmNoaXRlY3R1cmVzLiAqLw0KKyAgYXJjaGVzID0gZ2Ri YXJjaF9saXN0X2xvb2t1cF9ieV9pbmZvIChhcmNoZXMsICZpbmZvKTsNCisg IGlmIChhcmNoZXMgIT0gTlVMTCkNCisgICAgcmV0dXJuIGFyY2hlcy0+Z2Ri YXJjaDsNCisNCisgIC8qIE5vbmUgZm91bmQsIGNyZWF0ZSBhIG5ldyBhcmNo aXRlY3R1cmUgZnJvbSB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQuICovDQor ICB0ZGVwID0gWE1BTExPQyAoc3RydWN0IGdkYmFyY2hfdGRlcCk7DQorICBn ZGJhcmNoID0gZ2RiYXJjaF9hbGxvYyAoJmluZm8sIHRkZXApOw0KKw0KKyAg LyogSWYgd2UgZXZlciBuZWVkIHRvIGRpZmZlcmVudGlhdGUgdGhlIGRldmlj ZSB0eXBlcywgZG8gaXQgaGVyZS4gKi8NCisgIHN3aXRjaCAoaW5mby5iZmRf YXJjaF9pbmZvLT5tYWNoKQ0KKyAgICB7DQorICAgIGNhc2UgYmZkX21hY2hf YXZyMToNCisgICAgY2FzZSBiZmRfbWFjaF9hdnIyOg0KKyAgICBjYXNlIGJm ZF9tYWNoX2F2cjM6DQorICAgIGNhc2UgYmZkX21hY2hfYXZyNDoNCisgICAg Y2FzZSBiZmRfbWFjaF9hdnI1Og0KKyAgICAgIGJyZWFrOw0KKyAgICB9DQor DQorICBzZXRfZ2RiYXJjaF9zaG9ydF9iaXQgKGdkYmFyY2gsIDIgKiBUQVJH RVRfQ0hBUl9CSVQpOw0KKyAgc2V0X2dkYmFyY2hfaW50X2JpdCAoZ2RiYXJj aCwgMiAqIFRBUkdFVF9DSEFSX0JJVCk7DQorICBzZXRfZ2RiYXJjaF9sb25n X2JpdCAoZ2RiYXJjaCwgNCAqIFRBUkdFVF9DSEFSX0JJVCk7DQorICBzZXRf Z2RiYXJjaF9sb25nX2xvbmdfYml0IChnZGJhcmNoLCA4ICogVEFSR0VUX0NI QVJfQklUKTsNCisgIHNldF9nZGJhcmNoX3B0cl9iaXQgKGdkYmFyY2gsIDIg KiBUQVJHRVRfQ0hBUl9CSVQpOw0KKyAgc2V0X2dkYmFyY2hfYWRkcl9iaXQg KGdkYmFyY2gsIDMyKTsNCisgIHNldF9nZGJhcmNoX2JmZF92bWFfYml0IChn ZGJhcmNoLCAzMik7IC8qIEZJWE1FOiBUUm90aC8yMDAyLTAyLTE4OiBJcyB0 aGlzIG5lZWRlZD8gKi8NCisNCisgIHNldF9nZGJhcmNoX2Zsb2F0X2JpdCAo Z2RiYXJjaCwgNCAqIFRBUkdFVF9DSEFSX0JJVCk7DQorICBzZXRfZ2RiYXJj aF9kb3VibGVfYml0IChnZGJhcmNoLCA0ICogVEFSR0VUX0NIQVJfQklUKTsN CisgIHNldF9nZGJhcmNoX2xvbmdfZG91YmxlX2JpdCAoZ2RiYXJjaCwgNCAq IFRBUkdFVF9DSEFSX0JJVCk7DQorDQorICBzZXRfZ2RiYXJjaF9mbG9hdF9m b3JtYXQgKGdkYmFyY2gsICZmbG9hdGZvcm1hdF9pZWVlX3NpbmdsZV9saXR0 bGUpOw0KKyAgc2V0X2dkYmFyY2hfZG91YmxlX2Zvcm1hdCAoZ2RiYXJjaCwg JmZsb2F0Zm9ybWF0X2llZWVfc2luZ2xlX2xpdHRsZSk7DQorICBzZXRfZ2Ri YXJjaF9sb25nX2RvdWJsZV9mb3JtYXQgKGdkYmFyY2gsICZmbG9hdGZvcm1h dF9pZWVlX3NpbmdsZV9saXR0bGUpOw0KKw0KKyAgc2V0X2dkYmFyY2hfcmVh ZF9wYyAoZ2RiYXJjaCwgYXZyX3JlYWRfcGMpOw0KKyAgc2V0X2dkYmFyY2hf d3JpdGVfcGMgKGdkYmFyY2gsIGF2cl93cml0ZV9wYyk7DQorICBzZXRfZ2Ri YXJjaF9yZWFkX2ZwIChnZGJhcmNoLCBhdnJfcmVhZF9mcCk7DQorICBzZXRf Z2RiYXJjaF9yZWFkX3NwIChnZGJhcmNoLCBhdnJfcmVhZF9zcCk7DQorICBz ZXRfZ2RiYXJjaF93cml0ZV9zcCAoZ2RiYXJjaCwgYXZyX3dyaXRlX3NwKTsN CisNCisgIHNldF9nZGJhcmNoX251bV9yZWdzIChnZGJhcmNoLCBBVlJfTlVN X1JFR1MpOw0KKw0KKyAgc2V0X2dkYmFyY2hfc3BfcmVnbnVtIChnZGJhcmNo LCBBVlJfU1BfUkVHTlVNKTsNCisgIHNldF9nZGJhcmNoX2ZwX3JlZ251bSAo Z2RiYXJjaCwgQVZSX0ZQX1JFR05VTSk7DQorICBzZXRfZ2RiYXJjaF9wY19y ZWdudW0gKGdkYmFyY2gsIEFWUl9QQ19SRUdOVU0pOw0KKw0KKyAgc2V0X2dk YmFyY2hfcmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwgYXZyX3JlZ2lzdGVyX25h bWUpOw0KKyAgc2V0X2dkYmFyY2hfcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwg MSk7DQorICBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9ieXRlcyAoZ2RiYXJjaCwg QVZSX05VTV9SRUdfQllURVMpOw0KKyAgc2V0X2dkYmFyY2hfcmVnaXN0ZXJf Ynl0ZSAoZ2RiYXJjaCwgYXZyX3JlZ2lzdGVyX2J5dGUpOw0KKyAgc2V0X2dk YmFyY2hfcmVnaXN0ZXJfcmF3X3NpemUgKGdkYmFyY2gsIGF2cl9yZWdpc3Rl cl9yYXdfc2l6ZSk7DQorICBzZXRfZ2RiYXJjaF9tYXhfcmVnaXN0ZXJfcmF3 X3NpemUgKGdkYmFyY2gsIDQpOw0KKyAgc2V0X2dkYmFyY2hfcmVnaXN0ZXJf dmlydHVhbF9zaXplIChnZGJhcmNoLCBhdnJfcmVnaXN0ZXJfdmlydHVhbF9z aXplKTsNCisgIHNldF9nZGJhcmNoX21heF9yZWdpc3Rlcl92aXJ0dWFsX3Np emUgKGdkYmFyY2gsIDQpOw0KKyAgc2V0X2dkYmFyY2hfcmVnaXN0ZXJfdmly dHVhbF90eXBlIChnZGJhcmNoLCBhdnJfcmVnaXN0ZXJfdmlydHVhbF90eXBl KTsNCisNCisgIC8qIFdlIG1pZ2h0IG5lZWQgdG8gZGVmaW5lIG91ciBvd24g aGVyZSBvciBkZWZpbmUgRlJBTUVfSU5JVF9TQVZFRF9SRUdTICovDQorICBz ZXRfZ2RiYXJjaF9nZXRfc2F2ZWRfcmVnaXN0ZXIgKGdkYmFyY2gsIGdlbmVy aWNfZ2V0X3NhdmVkX3JlZ2lzdGVyKTsNCisNCisgIHNldF9nZGJhcmNoX3By aW50X2luc24gKGdkYmFyY2gsIHByaW50X2luc25fYXZyKTsNCisNCisgIHNl dF9nZGJhcmNoX3VzZV9nZW5lcmljX2R1bW15X2ZyYW1lcyAoZ2RiYXJjaCwg MSk7DQorICBzZXRfZ2RiYXJjaF9jYWxsX2R1bW15X2xvY2F0aW9uIChnZGJh cmNoLCBBVF9FTlRSWV9QT0lOVCk7DQorICBzZXRfZ2RiYXJjaF9jYWxsX2R1 bW15X2FkZHJlc3MgKGdkYmFyY2gsIGF2cl9jYWxsX2R1bW15X2FkZHJlc3Mp Ow0KKyAgc2V0X2dkYmFyY2hfY2FsbF9kdW1teV9zdGFydF9vZmZzZXQgKGdk YmFyY2gsIDApOw0KKyAgc2V0X2dkYmFyY2hfY2FsbF9kdW1teV9icmVha3Bv aW50X29mZnNldF9wIChnZGJhcmNoLCAxKTsNCisgIHNldF9nZGJhcmNoX2Nh bGxfZHVtbXlfYnJlYWtwb2ludF9vZmZzZXQgKGdkYmFyY2gsIDApOw0KKyAg c2V0X2dkYmFyY2hfY2FsbF9kdW1teV9sZW5ndGggKGdkYmFyY2gsIDApOw0K KyAgc2V0X2dkYmFyY2hfcGNfaW5fY2FsbF9kdW1teSAoZ2RiYXJjaCwgZ2Vu ZXJpY19wY19pbl9jYWxsX2R1bW15KTsNCisgIHNldF9nZGJhcmNoX2NhbGxf ZHVtbXlfcCAoZ2RiYXJjaCwgMSk7DQorICBzZXRfZ2RiYXJjaF9jYWxsX2R1 bW15X3dvcmRzIChnZGJhcmNoLCBhdnJfY2FsbF9kdW1teV93b3Jkcyk7DQor ICBzZXRfZ2RiYXJjaF9jYWxsX2R1bW15X3N0YWNrX2FkanVzdF9wIChnZGJh cmNoLCAwKTsNCisgIHNldF9nZGJhcmNoX2ZpeF9jYWxsX2R1bW15IChnZGJh cmNoLCBnZW5lcmljX2ZpeF9jYWxsX2R1bW15KTsNCisNCisvKiAgICBzZXRf Z2RiYXJjaF9iZWxpZXZlX3BjY19wcm9tb3Rpb24gKGdkYmFyY2gsIDEpOyAv LyBUUm90aDogc2hvdWxkIHRoaXMgYmUgc2V0PyAqLw0KKw0KKyAgc2V0X2dk YmFyY2hfYWRkcmVzc190b19wb2ludGVyIChnZGJhcmNoLCBhdnJfYWRkcmVz c190b19wb2ludGVyKTsNCisgIHNldF9nZGJhcmNoX3BvaW50ZXJfdG9fYWRk cmVzcyAoZ2RiYXJjaCwgYXZyX3BvaW50ZXJfdG9fYWRkcmVzcyk7DQorICBz ZXRfZ2RiYXJjaF9leHRyYWN0X3JldHVybl92YWx1ZSAoZ2RiYXJjaCwgYXZy X2V4dHJhY3RfcmV0dXJuX3ZhbHVlKTsNCisgIHNldF9nZGJhcmNoX3B1c2hf YXJndW1lbnRzIChnZGJhcmNoLCBhdnJfcHVzaF9hcmd1bWVudHMpOw0KKyAg c2V0X2dkYmFyY2hfcHVzaF9kdW1teV9mcmFtZSAoZ2RiYXJjaCwgZ2VuZXJp Y19wdXNoX2R1bW15X2ZyYW1lKTsNCisvKiAgICBzZXRfZ2RiYXJjaF9wdXNo X3JldHVybl9hZGRyZXNzIChnZGJhcmNoLCBhdnJfcHVzaF9yZXR1cm5fYWRk cmVzcyk7ICovDQorICBzZXRfZ2RiYXJjaF9wb3BfZnJhbWUgKGdkYmFyY2gs IGF2cl9wb3BfZnJhbWUpOw0KKw0KKyAgc2V0X2dkYmFyY2hfc3RvcmVfcmV0 dXJuX3ZhbHVlIChnZGJhcmNoLCBhdnJfc3RvcmVfcmV0dXJuX3ZhbHVlKTsN CisNCisgIHNldF9nZGJhcmNoX3VzZV9zdHJ1Y3RfY29udmVudGlvbiAoZ2Ri YXJjaCwgZ2VuZXJpY191c2Vfc3RydWN0X2NvbnZlbnRpb24pOw0KKyAgc2V0 X2dkYmFyY2hfc3RvcmVfc3RydWN0X3JldHVybiAoZ2RiYXJjaCwgYXZyX3N0 b3JlX3N0cnVjdF9yZXR1cm4pOw0KKyAgc2V0X2dkYmFyY2hfZXh0cmFjdF9z dHJ1Y3RfdmFsdWVfYWRkcmVzcyAoZ2RiYXJjaCwgYXZyX2V4dHJhY3Rfc3Ry dWN0X3ZhbHVlX2FkZHJlc3MpOw0KKw0KKyAgc2V0X2dkYmFyY2hfZnJhbWVf aW5pdF9zYXZlZF9yZWdzIChnZGJhcmNoLCBhdnJfc2Nhbl9wcm9sb2d1ZSk7 DQorICBzZXRfZ2RiYXJjaF9pbml0X2V4dHJhX2ZyYW1lX2luZm8gKGdkYmFy Y2gsIGF2cl9pbml0X2V4dHJhX2ZyYW1lX2luZm8pOw0KKyAgc2V0X2dkYmFy Y2hfc2tpcF9wcm9sb2d1ZSAoZ2RiYXJjaCwgYXZyX3NraXBfcHJvbG9ndWUp Ow0KKy8qICAgIHNldF9nZGJhcmNoX3Byb2xvZ3VlX2ZyYW1lbGVzc19wIChn ZGJhcmNoLCBhdnJfcHJvbG9ndWVfZnJhbWVsZXNzX3ApOyAqLw0KKyAgc2V0 X2dkYmFyY2hfaW5uZXJfdGhhbiAoZ2RiYXJjaCwgY29yZV9hZGRyX2xlc3N0 aGFuKTsNCisNCisgIHNldF9nZGJhcmNoX2RlY3JfcGNfYWZ0ZXJfYnJlYWsg KGdkYmFyY2gsIDApOw0KKw0KKyAgc2V0X2dkYmFyY2hfZnVuY3Rpb25fc3Rh cnRfb2Zmc2V0IChnZGJhcmNoLCAwKTsNCisgIHNldF9nZGJhcmNoX3JlbW90 ZV90cmFuc2xhdGVfeGZlcl9hZGRyZXNzIChnZGJhcmNoLCBhdnJfcmVtb3Rl X3RyYW5zbGF0ZV94ZmVyX2FkZHJlc3MpOw0KKyAgc2V0X2dkYmFyY2hfZnJh bWVfYXJnc19za2lwIChnZGJhcmNoLCAwKTsNCisgIHNldF9nZGJhcmNoX2Zy YW1lbGVzc19mdW5jdGlvbl9pbnZvY2F0aW9uIChnZGJhcmNoLCBmcmFtZWxl c3NfbG9va19mb3JfcHJvbG9ndWUpOyAvKiA/Pz8gKi8NCisgIHNldF9nZGJh cmNoX2ZyYW1lX2NoYWluIChnZGJhcmNoLCBhdnJfZnJhbWVfY2hhaW4pOw0K KyAgc2V0X2dkYmFyY2hfZnJhbWVfY2hhaW5fdmFsaWQgKGdkYmFyY2gsIGdl bmVyaWNfZnVuY19mcmFtZV9jaGFpbl92YWxpZCk7DQorICBzZXRfZ2RiYXJj aF9mcmFtZV9zYXZlZF9wYyAoZ2RiYXJjaCwgYXZyX2ZyYW1lX3NhdmVkX3Bj KTsNCisgIHNldF9nZGJhcmNoX2ZyYW1lX2FyZ3NfYWRkcmVzcyAoZ2RiYXJj aCwgYXZyX2ZyYW1lX2FkZHJlc3MpOw0KKyAgc2V0X2dkYmFyY2hfZnJhbWVf bG9jYWxzX2FkZHJlc3MgKGdkYmFyY2gsIGF2cl9mcmFtZV9hZGRyZXNzKTsN CisgIHNldF9nZGJhcmNoX3NhdmVkX3BjX2FmdGVyX2NhbGwgKGdkYmFyY2gs IGF2cl9zYXZlZF9wY19hZnRlcl9jYWxsKTsNCisgIHNldF9nZGJhcmNoX2Zy YW1lX251bV9hcmdzIChnZGJhcmNoLCBmcmFtZV9udW1fYXJnc191bmtub3du KTsNCisNCisgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9h ZGRyIChnZGJhcmNoLCBhdnJfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIp Ow0KKw0KKyAgcmV0dXJuIGdkYmFyY2g7DQorfQ0KKw0KKy8qIFNlbmQgYSBx dWVyeSByZXF1ZXN0IHRvIHRoZSBhdnIgcmVtb3RlIHRhcmdldCBhc2tpbmcg Zm9yIHZhbHVlcyBvZiB0aGUgaW8NCisgICByZWdpc3RlcnMuIElmIGFyZ3Mg cGFyYW1ldGVyIGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB1c2VyIGhhcyByZXF1 ZXN0ZWQgaW5mbw0KKyAgIG9uIGEgc3BlY2lmaWMgaW8gcmVnaXN0ZXIgW1Ro aXMgc3RpbGwgbmVlZHMgaW1wbGVtZW50ZWQgYW5kIGlzIGlnbm9yZWQgZm9y DQorICAgbm93XS4gVGhlIHF1ZXJ5IHN0cmluZyBzaG91bGQgYmUgb25lIG9m IHRoZXNlIGZvcm1zOg0KKw0KKyAgICJSYXZyLmlvX3JlZyIgLT4gcmVwbHkg aXMgIk5OIiBudW1iZXIgb2YgaW8gcmVnaXN0ZXJzDQorDQorICAgIlJhdnIu aW9fcmVnOmFkZHIsbGVuIiB3aGVyZSBhZGRyIGlzIGZpcnN0IHJlZ2lzdGVy IGFuZCBsZW4gaXMgbnVtYmVyIG9mDQorICAgcmVnaXN0ZXJzIHRvIGJlIHJl YWQuIFRoZSByZXBseSBzaG91bGQgYmUgIjxOQU1FPixWVjsiIGZvciBlYWNo IGlvIHJlZ2lzdGVyDQorICAgd2hlcmUsIDxOQU1FPiBpcyBhIHN0cmluZywg YW5kIFZWIGlzIHRoZSBoZXggdmFsdWUgb2YgdGhlIHJlZ2lzdGVyLg0KKw0K KyAgIEFsbCBpbyByZWdpc3RlcnMgYXJlIDgtYml0LiAqLw0KKw0KK3N0YXRp YyB2b2lkDQorYXZyX2lvX3JlZ19yZWFkX2NvbW1hbmQgKGNoYXIgKmFyZ3Ms IGludCBmcm9tX3R0eSkNCit7DQorICBpbnQgICAgICAgICAgIGJ1ZnNpeiA9 IDA7DQorICBjaGFyICAgICAgICAgIGJ1Zls0MDBdOw0KKyAgY2hhciAgICAg ICAgICBxdWVyeVs0MDBdOw0KKyAgY2hhciAgICAgICAgICpwOw0KKyAgdW5z aWduZWQgaW50ICBucmVnID0gMDsNCisgIHVuc2lnbmVkIGludCAgdmFsOw0K KyAgaW50ICAgICAgICAgICBpLCBqLCBrLCBzdGVwOw0KKw0KKy8qICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgIkRFQlVHOiBhdnJfaW9f cmVnX3JlYWRfY29tbWFuZCAoXCIlc1wiLCAlZClcbiIsICovDQorLyogICAg ICAgICAgICAgYXJncywgZnJvbV90dHkpOyAqLw0KKw0KKyAgaWYgKCEgY3Vy cmVudF90YXJnZXQudG9fcXVlcnkpDQorICAgIHsNCisgICAgICBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRlcnIsICJFUlI6IGluZm8gaW9fcmVnaXN0 ZXJzIE5PVCBzdXBwb3J0ZWQgYnkgY3VycmVudCB0YXJnZXRcbiIpOw0KKyAg ICAgIHJldHVybjsNCisgICAgfQ0KKw0KKyAgLyogSnVzdCBnZXQgdGhlIG1h eGltdW0gYnVmZmVyIHNpemUuICovDQorICB0YXJnZXRfcXVlcnkgKChpbnQp ICdSJywgMCwgMCwgJmJ1ZnNpeik7DQorICBpZiAoYnVmc2l6ID4gc2l6ZW9m KGJ1ZikpDQorICAgIGJ1ZnNpeiA9IHNpemVvZihidWYpOw0KKw0KKyAgLyog RmluZCBvdXQgaG93IG1hbnkgaW8gcmVnaXN0ZXJzIHRoZSB0YXJnZXQgaGFz LiAqLw0KKyAgc3RyY3B5IChxdWVyeSwgImF2ci5pb19yZWciKTsNCisgIHRh cmdldF9xdWVyeSggKGludCkgJ1InLCBxdWVyeSwgYnVmLCAmYnVmc2l6ICk7 DQorDQorICBpZiAoc3RybmNtcCAoYnVmLCAiIiwgYnVmc2l6KSA9PSAwKQ0K KyAgICB7DQorICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkZXJy LCAiaW5mbyBpb19yZWdpc3RlcnMgTk9UIHN1cHBvcnRlZCBieSB0YXJnZXRc biIpOw0KKyAgICAgIHJldHVybjsNCisgICAgfQ0KKw0KKyAgaWYgKCBzc2Nh bmYgKGJ1ZiwgIiV4IiwgJm5yZWcpICE9IDEgKQ0KKyAgICB7DQorICAgICAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkZXJyLCAiRXJyb3IgZmV0Y2hp bmcgbnVtYmVyIG9mIGlvIHJlZ2lzdGVyc1xuIik7DQorICAgICAgcmV0dXJu Ow0KKyAgICB9DQorDQorICByZWluaXRpYWxpemVfbW9yZV9maWx0ZXIoKTsN CisNCisgIHByaW50Zl91bmZpbHRlcmVkICgiVGFyZ2V0IGhhcyAldSBpbyBy ZWdpc3RlcnM6XG5cbiIsIG5yZWcpOw0KKw0KKyAgLyogb25seSBmZXRjaCB1 cCB0byA4IHJlZ2lzdGVycyBhdCBhIHRpbWUgdG8ga2VlcCB0aGUgYnVmZmVy IHNtYWxsICovDQorICBzdGVwID0gODsNCisNCisgIGZvciAoaT0wOyBpPG5y ZWc7IGkrPXN0ZXApDQorICAgIHsNCisgICAgICBqID0gc3RlcCAtIChucmVn ICUgc3RlcCk7ICAgICAvKiBob3cgbWFueSByZWdpc3RlcnMgdGhpcyByb3Vu ZD8gKi8NCisNCisgICAgICBzbnByaW50ZiAocXVlcnksIHNpemVvZihxdWVy eSktMSwgImF2ci5pb19yZWc6JXgsJXgiLCBpLCBqKTsNCisgICAgICB0YXJn ZXRfcXVlcnkgKChpbnQpICdSJywgcXVlcnksIGJ1ZiwgJmJ1ZnNpeik7DQor DQorICAgICAgcCA9IGJ1ZjsNCisgICAgICBmb3IgKGs9aTsgazwoaStqKTsg aysrKQ0KKyAgICAgICAgew0KKyAgICAgICAgICBpZiAoc3NjYW5mIChwLCAi JVteLF0sJXg7IiwgcXVlcnksICZ2YWwpID09IDIpDQorICAgICAgICAgICAg ew0KKyAgICAgICAgICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiWyUwMnhdICUt MTVzIDogJTAyeFxuIiwgaywgcXVlcnksIHZhbCk7DQorICAgICAgICAgICAg ICB3aGlsZSAoKCpwICE9ICc7JykgJiYgKCpwICE9ICdcMCcpKQ0KKyAgICAg ICAgICAgICAgICBwKys7DQorICAgICAgICAgICAgICBwKys7IC8qIHNraXAg b3ZlciAnOycgKi8NCisgICAgICAgICAgICAgIGlmICgqcCA9PSAnXDAnKQ0K KyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAg ICAgICB9DQorICAgIH0NCit9DQorDQordm9pZA0KK19pbml0aWFsaXplX2F2 cl90ZGVwICh2b2lkKQ0KK3sNCisgIHJlZ2lzdGVyX2dkYmFyY2hfaW5pdCAo YmZkX2FyY2hfYXZyLCBhdnJfZ2RiYXJjaF9pbml0KTsNCisNCisgIC8qIEFk ZCBhIG5ldyBjb21tYW5kIHRvIGFsbG93IHRoZSB1c2VyIHRvIHF1ZXJ5IHRo ZSBhdnIgcmVtb3RlIHRhcmdldCBmb3INCisgICAgIHRoZSB2YWx1ZXMgb2Yg dGhlIGlvIHNwYWNlIHJlZ2lzdGVycyBpbiBhIHNhbmVyIHdheSB0aGFuIGp1 c3QgdXNpbmcNCisgICAgIGB4L05OTmIgQUREUmAuICovDQorDQorICAvKiBG SVhNRTogVFJvdGgvMjAwMi0wMi0xODogVGhpcyBzaG91bGQgcHJvYmFibHkg YmUgY2hhbmdlZCB0byAnaW5mbyBhdnINCisgICAgIGlvX3JlZ2lzdGVycycg dG8gc2lnbmlmeSBpdCBpcyBub3QgYXZhaWxhYmxlIG9uIG90aGVyIHBsYXRm b3Jtcy4gKi8NCisNCisgIGFkZF9jbWQgKCJpb19yZWdpc3RlcnMiLCBjbGFz c19pbmZvLCBhdnJfaW9fcmVnX3JlYWRfY29tbWFuZCwNCisgICAgICAgICAg ICJxdWVyeSByZW1vdGUgYXZyIHRhcmdldCBmb3IgaW8gc3BhY2UgcmVnaXN0 ZXIgdmFsdWVzIiwNCisgICAgICAgICAgICZpbmZvbGlzdCk7DQorfQ0KZGlm ZiAtdXJwTiAtLWV4Y2x1ZGU9Q1ZTIHNyYy1vcmlnL2dkYi9jb25maWcvYXZy L2F2ci5tdCBzcmMvZ2RiL2NvbmZpZy9hdnIvYXZyLm10DQotLS0gc3JjLW9y aWcvZ2RiL2NvbmZpZy9hdnIvYXZyLm10CVdlZCBEZWMgMzEgMTc6MDA6MDAg MTk2OQ0KKysrIHNyYy9nZGIvY29uZmlnL2F2ci9hdnIubXQJU2F0IEZlYiAx NiAxMToxMTowNSAyMDAyDQpAQCAtMCwwICsxLDEyIEBADQorIyBUYXJnZXQ6 IEFWUg0KK1RERVBGSUxFUz0gYXZyLXRkZXAubw0KKw0KKyMNCisjIFRoZXJl IGlzIG5vIHNpbXVsYXRvciBwcm92aWRlZCB3aXRoIGdkYiAoeWV0KS4NCisj DQorIyBTZWUgPGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL3Byb2plY3RzL3Np bXVsYXZyLz4gZm9yIHRoZSBzaW11bGF0b3INCisjIHVzZWQgZHVyaW5nIGRl dmVsb3BtZW50IG9mIGF2ciBzdXBwb3J0IGZvciBnZGIuDQorIw0KKyMgU2lt dWxhdG9yOiBBVlINCisjU0lNX09CUyA9IHJlbW90ZS1zaW0ubw0KKyNTSU0g PSAuLi9zaW0vYXZyL2xpYnNpbS5hDQpkaWZmIC11cnBOIC0tZXhjbHVkZT1D VlMgc3JjLW9yaWcvZ2RiL2NvbmZpZ3VyZS50Z3Qgc3JjL2dkYi9jb25maWd1 cmUudGd0DQotLS0gc3JjLW9yaWcvZ2RiL2NvbmZpZ3VyZS50Z3QJVHVlIEFw ciAgOSAxNDoxMDo0MyAyMDAyDQorKysgc3JjL2dkYi9jb25maWd1cmUudGd0 CU1vbiBBcHIgMjIgMTc6MzU6NTIgMjAwMg0KQEAgLTE0LDYgKzE0LDcgQEAg Y2FzZSAiJHt0YXJnZXRfY3B1fSIgaW4NCiANCiBhbHBoYSopCQkJZ2RiX3Rh cmdldF9jcHU9YWxwaGEgOzsNCiBhcm0qKQkJCWdkYl90YXJnZXRfY3B1PWFy bSA7Ow0KK2F2ciopCQkJZ2RiX3RhcmdldF9jcHU9YXZyIDs7DQogaHBwYSop CQkJZ2RiX3RhcmdldF9jcHU9cGEgOzsNCiBpWzM0NTZdODYqKQkJZ2RiX3Rh cmdldF9jcHU9aTM4NiA7Ow0KIG02OGhjMTEqfG02ODExKikJZ2RiX3Rhcmdl dF9jcHU9bTY4aGMxMSA7Ow0KQEAgLTY1LDYgKzY2LDEwIEBAIHhzY2FsZS0q LSopCQlnZGJfdGFyZ2V0PWVtYmVkDQogICAgICAgICAgICAgICAgICAgICAg ICAgY29uZmlnZGlycz0iJGNvbmZpZ2RpcnMgcmRpLXNoYXJlIg0KICAgICAg ICAgICAgICAgICAgICAgICAgIDs7DQogDQorYXZyLSotKikJCWdkYl90YXJn ZXQ9YXZyDQorCQkJZ2RiX211bHRpX2FyY2g9eWVzDQorCQkJOzsNCisNCiBj cmlzKikgICAgICAgICAgICAgICAgICBnZGJfdGFyZ2V0PWNyaXMgOzsNCiAN CiBkMTB2LSotKikJCWdkYl90YXJnZXQ9ZDEwdiA7Ow0K --8323328-193043426-1019529175=:11463--