Return-path: Received: from mail-qk0-f180.google.com ([209.85.220.180]:37128 "EHLO mail-qk0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750995AbdGXTsC (ORCPT ); Mon, 24 Jul 2017 15:48:02 -0400 Received: by mail-qk0-f180.google.com with SMTP id q130so16741947qka.4 for ; Mon, 24 Jul 2017 12:48:01 -0700 (PDT) Subject: Re: PATCH v3 brcmfmac driver cleanup To: Ian Molton , linux-wireless@vger.kernel.org Cc: franky.lin@broadcom.com, hante.meuleman@broadcom.com References: <20170719190822.10857-1-ian@mnementh.co.uk> From: Arend van Spriel Message-ID: (sfid-20170724_214811_603649_7E340A88) Date: Mon, 24 Jul 2017 21:47:56 +0200 MIME-Version: 1.0 In-Reply-To: <20170719190822.10857-1-ian@mnementh.co.uk> Content-Type: multipart/mixed; boundary="------------BBF16E507860FC167A88B674" Sender: linux-wireless-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------BBF16E507860FC167A88B674 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 19-07-17 21:07, Ian Molton wrote: > Hi all, > > Please find the 3rd revision of my cleanup patchset for brcmfmac. > > I've done some further cleanup and it now handles SDIO the ay the MMC subsystem > was designed to. > > I've also taken the liberty of greatly reducing the amount of indirection > used thoughout the SDIO code, which I think has improved readability quite a > lot. > > Hope this finds you all well. After only one week of vacation there was quite some catching up to do. So I decided to get an easy start and run 'checkpatch.pl --strict' over the series. Attached the output of that. Might be stuff that was already wrong before. I did only a quick check on patch 1/34 and it is really introduced by that patch. So can you please check the output. FWIW, I tend to ignore the warning about block comments, ie.: /* * bla */ is fine by me. At least I prefer it over: /* bla */ Regards, Arend --------------BBF16E507860FC167A88B674 Content-Type: text/plain; charset=UTF-8; name="cleanup-checkpatch.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="cleanup-checkpatch.txt" YnJhbmNoOiBmbWFjLW1vbHRvbi1wYXRjaGVzCmNoZWNraW5nIHBhdGNoOiBhNmQ4MGVlIGJy Y21mbWFjOiBGaXggcGFyYW1ldGVyIG9yZGVyIGluIGJyY21mX3NkaW9kX2YwX3dyaXRlYigp CldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMyNDogRklMRTogZHJpdmVycy9u ZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjIzMzoK K3N0YXRpYyBpbmxpbmUgaW50IGJyY21mX3NkaW9kX2YwX3dyaXRlYihzdHJ1Y3Qgc2Rpb19m dW5jICpmdW5jLCB1OCBieXRlLCB1aW50IHJlZ2FkZHIpCgpXQVJOSU5HOiBsaW5lIG92ZXIg ODAgY2hhcmFjdGVycwojMzQ6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29t L2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzoyNzE6CisJCQkJcmV0ID0gYnJjbWZfc2Rp b2RfZjBfd3JpdGViKGZ1bmMsICoodTggKilkYXRhLCBhZGRyKTsKCnRvdGFsOiAwIGVycm9y cywgMiB3YXJuaW5ncywgMCBjaGVja3MsIDE4IGxpbmVzIGNoZWNrZWQKCk5PVEU6IEZvciBz b21lIG9mIHRoZSByZXBvcnRlZCBkZWZlY3RzLCBjaGVja3BhdGNoIG1heSBiZSBhYmxlIHRv CiAgICAgIG1lY2hhbmljYWxseSBjb252ZXJ0IHRvIHRoZSB0eXBpY2FsIHN0eWxlIHVzaW5n IC0tZml4IG9yIC0tZml4LWlucGxhY2UuCgpZb3VyIHBhdGNoIGhhcyBzdHlsZSBwcm9ibGVt cywgcGxlYXNlIHJldmlldy4KCk5PVEU6IElmIGFueSBvZiB0aGUgZXJyb3JzIGFyZSBmYWxz ZSBwb3NpdGl2ZXMsIHBsZWFzZSByZXBvcnQKICAgICAgdGhlbSB0byB0aGUgbWFpbnRhaW5l ciwgc2VlIENIRUNLUEFUQ0ggaW4gTUFJTlRBSU5FUlMuCmNoZWNraW5nIHBhdGNoOiBmODZl MzkyIGJyY21mbWFjOiBSZWdpc3RlciBzaXplcyBvbiBoYXJkd2FyZSBhcmUgbm90IGRlcGVu ZGVudCBvbiBjb21waWxlciB0eXBlcwp0b3RhbDogMCBlcnJvcnMsIDAgd2FybmluZ3MsIDAg Y2hlY2tzLCA3OSBsaW5lcyBjaGVja2VkCgpZb3VyIHBhdGNoIGhhcyBubyBvYnZpb3VzIHN0 eWxlIHByb2JsZW1zIGFuZCBpcyByZWFkeSBmb3Igc3VibWlzc2lvbi4KY2hlY2tpbmcgcGF0 Y2g6IDcwMGJkNzYgYnJjbWZtYWM6IFNwbGl0IGJyY21mX3NkaW9kX3JlZ3J3X2hlbHBlcigp IHVwLgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMy ODogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21m bWFjL2JjbXNkaC5jOjMwNDoKK3N0YXRpYyBpbnQgYnJjbWZfc2Rpb2RfcmVnX3dyaXRlKHN0 cnVjdCBicmNtZl9zZGlvX2RldiAqc2Rpb2RldiwgdTMyIGFkZHIsCisJCQkJICAgdTggcmVn c3osIHZvaWQgKmRhdGEpCgpDSEVDSzogYnJhY2VzIHt9IHNob3VsZCBiZSB1c2VkIG9uIGFs bCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiM0ODogRklMRTogZHJpdmVycy9uZXQvd2lyZWxl c3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjMzNToKKwlpZiAocmV0 ID09IC1FTk9NRURJVU0pClsuLi5dCisJZWxzZSBpZiAocmV0ICE9IDApIHsKWy4uLl0KCldB Uk5JTkc6IG5ldHdvcmtpbmcgYmxvY2sgY29tbWVudHMgZG9uJ3QgdXNlIGFuIGVtcHR5IC8q IGxpbmUsIHVzZSAvKiBDb21tZW50Li4uCiM1MjogRklMRTogZHJpdmVycy9uZXQvd2lyZWxl c3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjMzOToKKwkJLyoKKwkJ ICogU2xlZXBDU1IgcmVnaXN0ZXIgYWNjZXNzIGNhbiBmYWlsIHdoZW4KCkNIRUNLOiBBbGln bm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzY4OiBGSUxFOiBkcml2ZXJz L25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6MzU1 Ogorc3RhdGljIGludCBicmNtZl9zZGlvZF9yZWdfcmVhZChzdHJ1Y3QgYnJjbWZfc2Rpb19k ZXYgKnNkaW9kZXYsIHUzMiBhZGRyLAorCQkJCSAgIHU4IHJlZ3N6LCB2b2lkICpkYXRhKQoK V0FSTklORzogbmV0d29ya2luZyBibG9jayBjb21tZW50cyBkb24ndCB1c2UgYW4gZW1wdHkg LyogbGluZSwgdXNlIC8qIENvbW1lbnQuLi4KIzc4OiBGSUxFOiBkcml2ZXJzL25ldC93aXJl bGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6MzY1OgorCS8qCisJ ICogZmlndXJlIG91dCBob3cgdG8gcmVhZCB0aGUgcmVnaXN0ZXIgYmFzZWQgb24gYWRkcmVz cyByYW5nZQoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNp cwojMTI4OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEv YnJjbWZtYWMvYmNtc2RoLmM6NDIyOgorCQlicmNtZl9zZGlvZF9yZWd3YihzZGlvZGV2LCBT QlNESU9fRlVOQzFfU0JBRERSTE9XICsgaSwgYWRkcltpXSwKKwkJCQkJJmVycik7Cgp0b3Rh bDogMCBlcnJvcnMsIDIgd2FybmluZ3MsIDQgY2hlY2tzLCAxNTEgbGluZXMgY2hlY2tlZAoK Tk9URTogRm9yIHNvbWUgb2YgdGhlIHJlcG9ydGVkIGRlZmVjdHMsIGNoZWNrcGF0Y2ggbWF5 IGJlIGFibGUgdG8KICAgICAgbWVjaGFuaWNhbGx5IGNvbnZlcnQgdG8gdGhlIHR5cGljYWwg c3R5bGUgdXNpbmcgLS1maXggb3IgLS1maXgtaW5wbGFjZS4KCllvdXIgcGF0Y2ggaGFzIHN0 eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3LgoKTk9URTogSWYgYW55IG9mIHRoZSBlcnJv cnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgcGxlYXNlIHJlcG9ydAogICAgICB0aGVtIHRvIHRo ZSBtYWludGFpbmVyLCBzZWUgQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KY2hlY2tpbmcg cGF0Y2g6IGNjMTRhYjkgYnJjbWZtYWM6IENsZWFuIHVwIGJyY21mX3NkaW9kX3NldF9zYmFk ZHJfd2luZG93KCkKRVJST1I6IHNwYWNlIHByb2hpYml0ZWQgYWZ0ZXIgdGhhdCBvcGVuIHBh cmVudGhlc2lzICcoJwojMzk6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29t L2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzo0MTg6CisJZm9yICggaSA9IDAgOyBpIDwg MyAmJiAhZXJyIDsgaSsrLCBhZGRyID4+PSA4ICkKCkVSUk9SOiBzcGFjZSBwcm9oaWJpdGVk IGJlZm9yZSB0aGF0IGNsb3NlIHBhcmVudGhlc2lzICcpJwojMzk6IEZJTEU6IGRyaXZlcnMv bmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzo0MTg6 CisJZm9yICggaSA9IDAgOyBpIDwgMyAmJiAhZXJyIDsgaSsrLCBhZGRyID4+PSA4ICkKCldB Uk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiM0MDogRklMRTogZHJpdmVycy9uZXQv d2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjQxOToKKwkJ YnJjbWZfc2Rpb2RfcmVnd2Ioc2Rpb2RldiwgU0JTRElPX0ZVTkMxX1NCQUREUkxPVyArIGks IGFkZHIgJiAweGZmLAoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJl bnRoZXNpcwojNDE6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204 MDIxMS9icmNtZm1hYy9iY21zZGguYzo0MjA6CisJCWJyY21mX3NkaW9kX3JlZ3diKHNkaW9k ZXYsIFNCU0RJT19GVU5DMV9TQkFERFJMT1cgKyBpLCBhZGRyICYgMHhmZiwKIAkJCQkJJmVy cik7Cgp0b3RhbDogMiBlcnJvcnMsIDEgd2FybmluZ3MsIDEgY2hlY2tzLCAzNiBsaW5lcyBj aGVja2VkCgpOT1RFOiBGb3Igc29tZSBvZiB0aGUgcmVwb3J0ZWQgZGVmZWN0cywgY2hlY2tw YXRjaCBtYXkgYmUgYWJsZSB0bwogICAgICBtZWNoYW5pY2FsbHkgY29udmVydCB0byB0aGUg dHlwaWNhbCBzdHlsZSB1c2luZyAtLWZpeCBvciAtLWZpeC1pbnBsYWNlLgoKWW91ciBwYXRj aCBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcuCgpOT1RFOiBJZiBhbnkgb2Yg dGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBwbGVhc2UgcmVwb3J0CiAgICAgIHRo ZW0gdG8gdGhlIG1haW50YWluZXIsIHNlZSBDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgpj aGVja2luZyBwYXRjaDogNmRjYjgxYSBicmNtZm1hYzogUmVtb3ZlIGRlYWQgSU8gY29kZQp0 b3RhbDogMCBlcnJvcnMsIDAgd2FybmluZ3MsIDAgY2hlY2tzLCA2NiBsaW5lcyBjaGVja2Vk CgpZb3VyIHBhdGNoIGhhcyBubyBvYnZpb3VzIHN0eWxlIHByb2JsZW1zIGFuZCBpcyByZWFk eSBmb3Igc3VibWlzc2lvbi4KY2hlY2tpbmcgcGF0Y2g6IDA4MjRmNjMgYnJjbWZtYWM6IFJl bW92ZSBiYW5kYWlkIGZvciBTbGVlcENTUgp0b3RhbDogMCBlcnJvcnMsIDAgd2FybmluZ3Ms IDAgY2hlY2tzLCAzOCBsaW5lcyBjaGVja2VkCgpZb3VyIHBhdGNoIGhhcyBubyBvYnZpb3Vz IHN0eWxlIHByb2JsZW1zIGFuZCBpcyByZWFkeSBmb3Igc3VibWlzc2lvbi4KY2hlY2tpbmcg cGF0Y2g6IGU0NGMxOWM0IGJyY21mbWFjOiBSZW1vdmUgYnJjbWZfc2Rpb2RfcmVxdWVzdF9k YXRhKCkKRVJST1I6IHNwYWNlIHByb2hpYml0ZWQgYWZ0ZXIgdGhhdCBvcGVuIHBhcmVudGhl c2lzICcoJwojMzc6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204 MDIxMS9icmNtZm1hYy9iY21zZGguYzoyNDQ6CisJZm9yICggaSA9IDAgOyBpIDwgMyAmJiAh ZXJyIDsgaSsrLCBhZGRyID4+PSA4ICkKCkVSUk9SOiBzcGFjZSBwcm9oaWJpdGVkIGJlZm9y ZSB0aGF0IGNsb3NlIHBhcmVudGhlc2lzICcpJwojMzc6IEZJTEU6IGRyaXZlcnMvbmV0L3dp cmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzoyNDQ6CisJZm9y ICggaSA9IDAgOyBpIDwgMyAmJiAhZXJyIDsgaSsrLCBhZGRyID4+PSA4ICkKCldBUk5JTkc6 IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMzODogRklMRTogZHJpdmVycy9uZXQvd2lyZWxl c3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjI0NToKKwkJYnJjbWZf c2Rpb2RfcmVnd2Ioc2Rpb2RldiwgU0JTRElPX0ZVTkMxX1NCQUREUkxPVyArIGksIGFkZHIg JiAweGZmLAoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNp cwojMzk6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9i cmNtZm1hYy9iY21zZGguYzoyNDY6CisJCWJyY21mX3NkaW9kX3JlZ3diKHNkaW9kZXYsIFNC U0RJT19GVU5DMV9TQkFERFJMT1cgKyBpLCBhZGRyICYgMHhmZiwKKwkJCQkJJmVycik7CgpX QVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwojMTU4OiBGSUxFOiBkcml2ZXJzL25l dC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6MzA1Ogor CQlyZXQgPSBicmNtZl9zZGlvZF9mMF93cml0ZWIoc2Rpb2Rldi0+ZnVuY1swXSwgKih1OCAq KWRhdGEsIGFkZHIpOwoKRVJST1I6IGVsc2Ugc2hvdWxkIGZvbGxvdyBjbG9zZSBicmFjZSAn fScKIzE2MDogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjEx L2JyY21mbWFjL2JjbXNkaC5jOjMwNzoKKwl9CisJZWxzZSB7CgpDSEVDSzogVW5iYWxhbmNl ZCBicmFjZXMgYXJvdW5kIGVsc2Ugc3RhdGVtZW50CiMxNjA6IEZJTEU6IGRyaXZlcnMvbmV0 L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzozMDc6CisJ ZWxzZSB7CgpFUlJPUjogc3dpdGNoIGFuZCBjYXNlIHNob3VsZCBiZSBhdCB0aGUgc2FtZSBp bmRlbnQKIzE2MTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgw MjExL2JyY21mbWFjL2JjbXNkaC5jOjMwODoKKwkJc3dpdGNoIChyZWdzeikgeworCQkJY2Fz ZSAxOgpbLi4uXQorCQkJY2FzZSA0OgpbLi4uXQorCQkJZGVmYXVsdDoKCldBUk5JTkc6IGxp bmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMxNjM6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNz L2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzozMTA6CisJCQkJc2Rpb193 cml0ZWIoc2Rpb2Rldi0+ZnVuY1sxXSwgKih1OCAqKWRhdGEsIGFkZHIsICZyZXQpOwoKV0FS TklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzE3MjogRklMRTogZHJpdmVycy9uZXQv d2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjMxNzoKKwkJ CQlzZGlvX3dyaXRlbChzZGlvZGV2LT5mdW5jWzFdLCAqKHUzMiAqKWRhdGEsIGFkZHIsICZy ZXQpOwoKV0FSTklORzogQXZvaWQgY3Jhc2hpbmcgdGhlIGtlcm5lbCAtIHRyeSB1c2luZyBX QVJOX09OICYgcmVjb3ZlcnkgY29kZSByYXRoZXIgdGhhbiBCVUcoKSBvciBCVUdfT04oKQoj MTc1OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJj bWZtYWMvYmNtc2RoLmM6MzIwOgorCQkJCUJVRygpOwoKRVJST1I6IGVsc2Ugc2hvdWxkIGZv bGxvdyBjbG9zZSBicmFjZSAnfScKIzI2MTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3Mv YnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjM0NzoKIAl9CisJZWxzZSB7 CgpDSEVDSzogVW5iYWxhbmNlZCBicmFjZXMgYXJvdW5kIGVsc2Ugc3RhdGVtZW50CiMyNjE6 IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1h Yy9iY21zZGguYzozNDc6CisJZWxzZSB7CgpFUlJPUjogc3dpdGNoIGFuZCBjYXNlIHNob3Vs ZCBiZSBhdCB0aGUgc2FtZSBpbmRlbnQKIzI2MjogRklMRTogZHJpdmVycy9uZXQvd2lyZWxl c3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjM0ODoKKwkJc3dpdGNo IChyZWdzeikgeworCQkJY2FzZSAxOgpbLi4uXQorCQkJY2FzZSA0OgpbLi4uXQorCQkJZGVm YXVsdDoKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMyNjQ6IEZJTEU6IGRy aXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGgu YzozNTA6CisJCQkJKih1OCAqKWRhdGEgPSBzZGlvX3JlYWRiKHNkaW9kZXYtPmZ1bmNbMV0s IGFkZHIsICZyZXQpOwoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzI3Mzog RklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFj L2JjbXNkaC5jOjM1NzoKKwkJCQkqKHUzMiAqKWRhdGEgPSBzZGlvX3JlYWRsKHNkaW9kZXYt PmZ1bmNbMV0sIGFkZHIsICZyZXQpOwoKV0FSTklORzogQXZvaWQgY3Jhc2hpbmcgdGhlIGtl cm5lbCAtIHRyeSB1c2luZyBXQVJOX09OICYgcmVjb3ZlcnkgY29kZSByYXRoZXIgdGhhbiBC VUcoKSBvciBCVUdfT04oKQojMjc2OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9h ZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6MzYwOgorCQkJCUJVRygpOwoKdG90 YWw6IDYgZXJyb3JzLCA4IHdhcm5pbmdzLCAzIGNoZWNrcywgMzE3IGxpbmVzIGNoZWNrZWQK Ck5PVEU6IEZvciBzb21lIG9mIHRoZSByZXBvcnRlZCBkZWZlY3RzLCBjaGVja3BhdGNoIG1h eSBiZSBhYmxlIHRvCiAgICAgIG1lY2hhbmljYWxseSBjb252ZXJ0IHRvIHRoZSB0eXBpY2Fs IHN0eWxlIHVzaW5nIC0tZml4IG9yIC0tZml4LWlucGxhY2UuCgpZb3VyIHBhdGNoIGhhcyBz dHlsZSBwcm9ibGVtcywgcGxlYXNlIHJldmlldy4KCk5PVEU6IElmIGFueSBvZiB0aGUgZXJy b3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHBsZWFzZSByZXBvcnQKICAgICAgdGhlbSB0byB0 aGUgbWFpbnRhaW5lciwgc2VlIENIRUNLUEFUQ0ggaW4gTUFJTlRBSU5FUlMuCmNoZWNraW5n IHBhdGNoOiAzOWU1YmY0NiBicmNtZm1hYzogRml4IHVuaW5pdGlhbGlzZWQgdmFyaWFibGUK dG90YWw6IDAgZXJyb3JzLCAwIHdhcm5pbmdzLCAwIGNoZWNrcywgOCBsaW5lcyBjaGVja2Vk CgpZb3VyIHBhdGNoIGhhcyBubyBvYnZpb3VzIHN0eWxlIHByb2JsZW1zIGFuZCBpcyByZWFk eSBmb3Igc3VibWlzc2lvbi4KY2hlY2tpbmcgcGF0Y2g6IDQ5M2U2YjggYnJjbWZtYWM6IFJl bW92ZSBub2lzeSBkZWJ1Z2dpbmcuCnRvdGFsOiAwIGVycm9ycywgMCB3YXJuaW5ncywgMCBj aGVja3MsIDMyIGxpbmVzIGNoZWNrZWQKCllvdXIgcGF0Y2ggaGFzIG5vIG9idmlvdXMgc3R5 bGUgcHJvYmxlbXMgYW5kIGlzIHJlYWR5IGZvciBzdWJtaXNzaW9uLgpjaGVja2luZyBwYXRj aDogNTQ5NmM5OSBicmNtZm1hYzogUmVuYW1lIGJjbWVycm9yIHRvIGVycgpDSEVDSzogQWxp Z25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM0MzogRklMRTogZHJpdmVy cy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjc5 MDoKKwkJZXJyID0gYnJjbWZfc2Rpb2RfYnVmZnJ3KHNkaW9kZXYsIFNESU9fRlVOQ18xLCB3 cml0ZSwKIAkJCQkJICAgICAgc2RhZGRyLCBwa3QpOwoKdG90YWw6IDAgZXJyb3JzLCAwIHdh cm5pbmdzLCAxIGNoZWNrcywgMzcgbGluZXMgY2hlY2tlZAoKTk9URTogRm9yIHNvbWUgb2Yg dGhlIHJlcG9ydGVkIGRlZmVjdHMsIGNoZWNrcGF0Y2ggbWF5IGJlIGFibGUgdG8KICAgICAg bWVjaGFuaWNhbGx5IGNvbnZlcnQgdG8gdGhlIHR5cGljYWwgc3R5bGUgdXNpbmcgLS1maXgg b3IgLS1maXgtaW5wbGFjZS4KCllvdXIgcGF0Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVh c2UgcmV2aWV3LgoKTk9URTogSWYgYW55IG9mIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0 aXZlcywgcGxlYXNlIHJlcG9ydAogICAgICB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBzZWUg Q0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KY2hlY2tpbmcgcGF0Y2g6IGQ5MDBiODcgYnJj bWZtYWM6IFNwbGl0IGJyY21mX3NkaW9kX2J1ZmZydyBmdW5jdGlvbiB1cC4KQ0hFQ0s6IEFs aWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojMjU6IEZJTEU6IGRyaXZl cnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzo0 MTk6CitzdGF0aWMgaW50IGJyY21mX3NkaW9kX2J1ZmZfcmVhZChzdHJ1Y3QgYnJjbWZfc2Rp b19kZXYgKnNkaW9kZXYsIHVpbnQgZm4sCisJCQkJdTMyIGFkZHIsIHN0cnVjdCBza19idWZm ICpwa3QpCgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lz CiM0MTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2Jy Y21mbWFjL2JjbXNkaC5jOjQzMDoKKwkJZXJyID0gc2Rpb19tZW1jcHlfZnJvbWlvKHNkaW9k ZXYtPmZ1bmNbZm5dLAorCQkJCSgodTggKikocGt0LT5kYXRhKSksIGFkZHIsIHJlcV9zeik7 CgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM0Nzog RklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFj L2JjbXNkaC5jOjQzNDoKKwkJZXJyID0gc2Rpb19yZWFkc2Ioc2Rpb2Rldi0+ZnVuY1tmbl0s CisJCQkJKCh1OCAqKShwa3QtPmRhdGEpKSwgYWRkciwgcmVxX3N6KTsKCkNIRUNLOiBBbGln bm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzU2OiBGSUxFOiBkcml2ZXJz L25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6NDQz Ogorc3RhdGljIGludCBicmNtZl9zZGlvZF9idWZmX3dyaXRlKHN0cnVjdCBicmNtZl9zZGlv X2RldiAqc2Rpb2RldiwgdWludCBmbiwKKwkJCQl1MzIgYWRkciwgc3RydWN0IHNrX2J1ZmYg KnBrdCkKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMK Izg5OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJj bWZtYWMvYmNtc2RoLmM6Njg4OgorCQllcnIgPSBicmNtZl9zZGlvZF9idWZmX3JlYWQoc2Rp b2RldiwgU0RJT19GVU5DXzIsIGFkZHIsCiAJCQkJCSBwa3RxLT5uZXh0KTsKCkNIRUNLOiBB bGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzk2OiBGSUxFOiBkcml2 ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6 Njk0OgorCQllcnIgPSBicmNtZl9zZGlvZF9idWZmX3JlYWQoc2Rpb2RldiwgU0RJT19GVU5D XzIsIGFkZHIsCiAJCQkJCSBnbG9tX3NrYik7CgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBt YXRjaCBvcGVuIHBhcmVudGhlc2lzCiMxMjY6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNz L2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzo3NTQ6CisJCQllcnIgPSBi cmNtZl9zZGlvZF9idWZmX3dyaXRlKHNkaW9kZXYsIFNESU9fRlVOQ18yLAogCQkJCQkJIGFk ZHIsIHNrYik7CgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhl c2lzCiMxNDA6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIx MS9icmNtZm1hYy9iY21zZGguYzo4MTA6CisJCQllcnIgPSBicmNtZl9zZGlvZF9idWZmX3dy aXRlKHNkaW9kZXYsIFNESU9fRlVOQ18xLAorCQkJCQkJICAgICAgc2RhZGRyLCBwa3QpOwoK RVJST1I6IGVsc2Ugc2hvdWxkIGZvbGxvdyBjbG9zZSBicmFjZSAnfScKIzE0MjogRklMRTog ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNk aC5jOjgxMjoKKwkJfQorCQllbHNlIHsKCkNIRUNLOiBVbmJhbGFuY2VkIGJyYWNlcyBhcm91 bmQgZWxzZSBzdGF0ZW1lbnQKIzE0MjogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJv YWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjgxMjoKKwkJZWxzZSB7CgpDSEVD SzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMxNDQ6IEZJTEU6 IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21z ZGguYzo4MTQ6CisJCQllcnIgPSBicmNtZl9zZGlvZF9idWZmX3JlYWQoc2Rpb2RldiwgU0RJ T19GVU5DXzEsCisJCQkJCQkgICAgICBzZGFkZHIsIHBrdCk7Cgp0b3RhbDogMSBlcnJvcnMs IDAgd2FybmluZ3MsIDEwIGNoZWNrcywgMTI0IGxpbmVzIGNoZWNrZWQKCk5PVEU6IEZvciBz b21lIG9mIHRoZSByZXBvcnRlZCBkZWZlY3RzLCBjaGVja3BhdGNoIG1heSBiZSBhYmxlIHRv CiAgICAgIG1lY2hhbmljYWxseSBjb252ZXJ0IHRvIHRoZSB0eXBpY2FsIHN0eWxlIHVzaW5n IC0tZml4IG9yIC0tZml4LWlucGxhY2UuCgpZb3VyIHBhdGNoIGhhcyBzdHlsZSBwcm9ibGVt cywgcGxlYXNlIHJldmlldy4KCk5PVEU6IElmIGFueSBvZiB0aGUgZXJyb3JzIGFyZSBmYWxz ZSBwb3NpdGl2ZXMsIHBsZWFzZSByZXBvcnQKICAgICAgdGhlbSB0byB0aGUgbWFpbnRhaW5l ciwgc2VlIENIRUNLUEFUQ0ggaW4gTUFJTlRBSU5FUlMuCmNoZWNraW5nIHBhdGNoOiAyMWI0 M2QyIGJyY21mbWFjOiBSZXBsYWNlIG9sZCBJTyBmdW5jdGlvbnMgd2l0aCBzaW1wbGVyIG9u ZXMuCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiM0MTogRklMRTogZHJpdmVy cy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjE0 NDoKKwkJCWJyY21mX3NkaW9kX3dyaXRlYihzZGlvZGV2LCBTQlNESU9fR1BJT19TRUxFQ1Qs IDB4ZiwgJnJldCk7CgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwojNTk6IEZJ TEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9i Y21zZGguYzoxNTg6CisJCWJyY21mX3NkaW9kX2Z1bmMwX3diKHNkaW9kZXYsIFNESU9fQ0ND Ul9CUkNNX1NFUElOVCwgZGF0YSwgJnJldCk7CgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hh cmFjdGVycwojNzk6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204 MDIxMS9icmNtZm1hYy9iY21zZGguYzoyNDM6CisJCWJyY21mX3NkaW9kX3dyaXRlYihzZGlv ZGV2LCBTQlNESU9fRlVOQzFfU0JBRERSTE9XICsgaSwgYWRkciAmIDB4ZmYsCgpDSEVDSzog QWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM4MDogRklMRTogZHJp dmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5j OjI0NDoKKwkJYnJjbWZfc2Rpb2Rfd3JpdGViKHNkaW9kZXYsIFNCU0RJT19GVU5DMV9TQkFE RFJMT1cgKyBpLCBhZGRyICYgMHhmZiwKIAkJCQkJJmVycik7CgpDSEVDSzogQWxpZ25tZW50 IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMyMzA6IEZJTEU6IGRyaXZlcnMvbmV0 L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzoyODY6Cit2 b2lkIGJyY21mX3NkaW9kX3dyaXRlbChzdHJ1Y3QgYnJjbWZfc2Rpb19kZXYgKnNkaW9kZXYs IHUzMiBhZGRyLAogCQkgICAgICB1MzIgZGF0YSwgaW50ICpyZXQpCgpXQVJOSU5HOiBsaW5l IG92ZXIgODAgY2hhcmFjdGVycwojMjkxOiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9i cm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjcyMzoKKwkJcmRfdmFsID0gYnJj bWZfc2Rpb2RfcmVhZGIoYnVzLT5zZGlvZGV2LCBTQlNESU9fRlVOQzFfU0xFRVBDU1IsICZl cnIpOwoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzMwMTogRklMRTogZHJp dmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzo3 MzM6CisJCWJyY21mX3NkaW9kX3dyaXRlYihidXMtPnNkaW9kZXYsIFNCU0RJT19GVU5DMV9T TEVFUENTUiwgd3JfdmFsLCAmZXJyKTsKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0 ZXJzCiMzMTE6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIx MS9icmNtZm1hYy9zZGlvLmM6NzY5OgorCQlicmNtZl9zZGlvZF93cml0ZWIoYnVzLT5zZGlv ZGV2LCBTQlNESU9fRlVOQzFfQ0hJUENMS0NTUiwgY2xrcmVxLCAmZXJyKTsKCldBUk5JTkc6 IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMzMjA6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVs ZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6Nzc2OgorCQljbGtjdGwg PSBicmNtZl9zZGlvZF9yZWFkYihidXMtPnNkaW9kZXYsIFNCU0RJT19GVU5DMV9DSElQQ0xL Q1NSLCAmZXJyKTsKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMzMzA6IEZJ TEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9z ZGlvLmM6Nzg1OgorCQkJZGV2Y3RsID0gYnJjbWZfc2Rpb2RfcmVhZGIoYnVzLT5zZGlvZGV2 LCBTQlNESU9fREVWSUNFX0NUTCwKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9w ZW4gcGFyZW50aGVzaXMKIzMzMTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRj b20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzo3ODY6CisJCQlkZXZjdGwgPSBicmNtZl9z ZGlvZF9yZWFkYihidXMtPnNkaW9kZXYsIFNCU0RJT19ERVZJQ0VfQ1RMLAorCQkJCQkJCSZl cnIpOwoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzM0MTogRklMRTogZHJp dmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzo3 OTQ6CisJCQlicmNtZl9zZGlvZF93cml0ZWIoYnVzLT5zZGlvZGV2LCBTQlNESU9fREVWSUNF X0NUTCwgZGV2Y3RsLAoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJl bnRoZXNpcwojMzQyOiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNt ODAyMTEvYnJjbWZtYWMvc2Rpby5jOjc5NToKKwkJCWJyY21mX3NkaW9kX3dyaXRlYihidXMt PnNkaW9kZXYsIFNCU0RJT19ERVZJQ0VfQ1RMLCBkZXZjdGwsCisJCQkJCQkmZXJyKTsKCldB Uk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMzNTE6IEZJTEU6IGRyaXZlcnMvbmV0 L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6ODAyOgorCQkJ ZGV2Y3RsID0gYnJjbWZfc2Rpb2RfcmVhZGIoYnVzLT5zZGlvZGV2LCBTQlNESU9fREVWSUNF X0NUTCwKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMK IzM1MjogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2Jy Y21mbWFjL3NkaW8uYzo4MDM6CisJCQlkZXZjdGwgPSBicmNtZl9zZGlvZF9yZWFkYihidXMt PnNkaW9kZXYsIFNCU0RJT19ERVZJQ0VfQ1RMLAorCQkJCQkJCSZlcnIpOwoKV0FSTklORzog bGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzM1NjogRklMRTogZHJpdmVycy9uZXQvd2lyZWxl c3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzo4MDU6CisJCQlicmNtZl9z ZGlvZF93cml0ZWIoYnVzLT5zZGlvZGV2LCBTQlNESU9fREVWSUNFX0NUTCwgZGV2Y3RsLAoK Q0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojMzU3OiBG SUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMv c2Rpby5jOjgwNjoKKwkJCWJyY21mX3NkaW9kX3dyaXRlYihidXMtPnNkaW9kZXYsIFNCU0RJ T19ERVZJQ0VfQ1RMLCBkZXZjdGwsCisJCQkJCQkmZXJyKTsKCldBUk5JTkc6IGxpbmUgb3Zl ciA4MCBjaGFyYWN0ZXJzCiMzNzU6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2Fk Y29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6ODQ3OgorCQkJZGV2Y3RsID0gYnJjbWZf c2Rpb2RfcmVhZGIoYnVzLT5zZGlvZGV2LCBTQlNESU9fREVWSUNFX0NUTCwKCkNIRUNLOiBB bGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzM3NjogRklMRTogZHJp dmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzo4 NDg6CisJCQlkZXZjdGwgPSBicmNtZl9zZGlvZF9yZWFkYihidXMtPnNkaW9kZXYsIFNCU0RJ T19ERVZJQ0VfQ1RMLAorCQkJCQkJCSZlcnIpOwoKV0FSTklORzogbGluZSBvdmVyIDgwIGNo YXJhY3RlcnMKIzM4MDogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJj bTgwMjExL2JyY21mbWFjL3NkaW8uYzo4NTA6CisJCQlicmNtZl9zZGlvZF93cml0ZWIoYnVz LT5zZGlvZGV2LCBTQlNESU9fREVWSUNFX0NUTCwgZGV2Y3RsLAoKQ0hFQ0s6IEFsaWdubWVu dCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojMzgxOiBGSUxFOiBkcml2ZXJzL25l dC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjg1MToKKwkJ CWJyY21mX3NkaW9kX3dyaXRlYihidXMtPnNkaW9kZXYsIFNCU0RJT19ERVZJQ0VfQ1RMLCBk ZXZjdGwsCisJCQkJCQkmZXJyKTsKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJz CiMzODc6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9i cmNtZm1hYy9zZGlvLmM6ODU1OgorCQlicmNtZl9zZGlvZF93cml0ZWIoYnVzLT5zZGlvZGV2 LCBTQlNESU9fRlVOQzFfQ0hJUENMS0NTUiwgY2xrcmVxLCAmZXJyKTsKCkNIRUNLOiBBbGln bm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzQwMzogRklMRTogZHJpdmVy cy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzo5NTE6 CisJCQkJYnJjbWZfc2Rpb2Rfd3JpdGViKGJ1cy0+c2Rpb2RldiwKIAkJCQkJCSAgU0JTRElP X0ZVTkMxX0NISVBDTEtDU1IsCgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwoj NDEyOiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJj bWZtYWMvc2Rpby5jOjExNjc6CisJYnJjbWZfc2Rpb2Rfd3JpdGViKGJ1cy0+c2Rpb2Rldiwg U0JTRElPX0ZVTkMxX0ZSQU1FQ1RSTCwgU0ZDX1JGX1RFUk0sICZlcnIpOwoKV0FSTklORzog bGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzQyMTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxl c3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzoxMTcyOgorCQloaSA9IGJy Y21mX3NkaW9kX3JlYWRiKGJ1cy0+c2Rpb2RldiwgU0JTRElPX0ZVTkMxX1JGUkFNRUJDSEks ICZlcnIpOwoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzQyMjogRklMRTog ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8u YzoxMTczOgorCQlsbyA9IGJyY21mX3NkaW9kX3JlYWRiKGJ1cy0+c2Rpb2RldiwgU0JTRElP X0ZVTkMxX1JGUkFNRUJDTE8sICZlcnIpOwoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0 Y2ggb3BlbiBwYXJlbnRoZXNpcwojNDUyOiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9i cm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjI0MzU6CisJCQlicmNtZl9zZGlv ZF93cml0ZWIoc2Rpb2RldiwgU0JTRElPX0ZVTkMxX0NISVBDTEtDU1IsCiAJCQkJCSAgKHNh dmVjbGsgfCBTQlNESU9fRk9SQ0VfSFQpLCAmZXJyKTsKCldBUk5JTkc6IGxpbmUgb3ZlciA4 MCBjaGFyYWN0ZXJzCiM0Nzk6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29t L2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6MjUzMDoKKwkJZGV2Y3RsID0gYnJjbWZfc2Rp b2RfcmVhZGIoYnVzLT5zZGlvZGV2LCBTQlNESU9fREVWSUNFX0NUTCwgJmVycik7CgpXQVJO SU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwojNDg1OiBGSUxFOiBkcml2ZXJzL25ldC93 aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjI1MzQ6CisJCWNs a2N0bCA9IGJyY21mX3NkaW9kX3JlYWRiKGJ1cy0+c2Rpb2RldiwgU0JTRElPX0ZVTkMxX0NI SVBDTEtDU1IsICZlcnIpOwoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzQ5 MzogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21m bWFjL3NkaW8uYzoyNTQwOgorCQkJZGV2Y3RsID0gYnJjbWZfc2Rpb2RfcmVhZGIoYnVzLT5z ZGlvZGV2LCBTQlNESU9fREVWSUNFX0NUTCwKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1h dGNoIG9wZW4gcGFyZW50aGVzaXMKIzQ5NDogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3Mv YnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzoyNTQxOgorCQkJZGV2Y3RsID0g YnJjbWZfc2Rpb2RfcmVhZGIoYnVzLT5zZGlvZGV2LCBTQlNESU9fREVWSUNFX0NUTCwKKwkJ CQkJCQkmZXJyKTsKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiM0OTg6IEZJ TEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9z ZGlvLmM6MjU0MzoKKwkJCWJyY21mX3NkaW9kX3dyaXRlYihidXMtPnNkaW9kZXYsIFNCU0RJ T19ERVZJQ0VfQ1RMLCBkZXZjdGwsCgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBv cGVuIHBhcmVudGhlc2lzCiM0OTk6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2Fk Y29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6MjU0NDoKKwkJCWJyY21mX3NkaW9kX3dy aXRlYihidXMtPnNkaW9kZXYsIFNCU0RJT19ERVZJQ0VfQ1RMLCBkZXZjdGwsCisJCQkJCQkm ZXJyKTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMK IzUyNTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2Jy Y21mbWFjL3NkaW8uYzozMzQ1OgorCWJyY21mX3NkaW9kX2Z1bmMwX3diKGJ1cy0+c2Rpb2Rl diwgU0RJT19DQ0NSX0JSQ01fQ0FSRENBUCwKIAkJCSAgKFNESU9fQ0NDUl9CUkNNX0NBUkRD QVBfQ01EMTRfU1VQUE9SVCB8CgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwoj NTM0OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJj bWZtYWMvc2Rpby5jOjMzNTM6CisJYnJjbWZfc2Rpb2Rfd3JpdGViKGJ1cy0+c2Rpb2Rldiwg U0JTRElPX0ZVTkMxX0NISVBDTEtDU1IsIFNCU0RJT19GT1JDRV9IVCwKCkNIRUNLOiBBbGln bm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzUzNTogRklMRTogZHJpdmVy cy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzozMzU0 OgorCWJyY21mX3NkaW9kX3dyaXRlYihidXMtPnNkaW9kZXYsIFNCU0RJT19GVU5DMV9DSElQ Q0xLQ1NSLCBTQlNESU9fRk9SQ0VfSFQsCisJCQkJJmVycik7CgpXQVJOSU5HOiBsaW5lIG92 ZXIgODAgY2hhcmFjdGVycwojNTU0OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9h ZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjMzODY6CisJCWJyY21mX3NkaW9kX3dy aXRlYihidXMtPnNkaW9kZXYsIFNCU0RJT19GVU5DMV9TTEVFUENTUiwgdmFsLCAmZXJyKTsK CkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzU2NDog RklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFj L3NkaW8uYzozNTQ4OgorCQkJCWRldnBlbmQgPSBicmNtZl9zZGlvZF9mdW5jMF9yYihidXMt PnNkaW9kZXYsCiAJCQkJCQkJICAgIFNESU9fQ0NDUl9JTlR4LAoKV0FSTklORzogbGluZSBv dmVyIDgwIGNoYXJhY3RlcnMKIzYwODogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJv YWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzozNzIzOgorCVNQSU5XQUlUKCgoY2xr dmFsID0gYnJjbWZfc2Rpb2RfcmVhZGIoc2Rpb2RldiwgU0JTRElPX0ZVTkMxX0NISVBDTEtD U1IsIE5VTEwpKSwKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50 aGVzaXMKIzYwOTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgw MjExL2JyY21mbWFjL3NkaW8uYzozNzI0OgorCVNQSU5XQUlUKCgoY2xrdmFsID0gYnJjbWZf c2Rpb2RfcmVhZGIoc2Rpb2RldiwgU0JTRElPX0ZVTkMxX0NISVBDTEtDU1IsIE5VTEwpKSwK IAkJCSFTQlNESU9fQUxQQVYoY2xrdmFsKSksCgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hh cmFjdGVycwojNjY3OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNt ODAyMTEvYnJjbWZtYWMvc2Rpby5jOjM4MTM6CisJYnJjbWZfc2Rpb2Rfd3JpdGViKHNkaW9k ZXYsIFNCU0RJT19GVU5DMV9DSElQQ0xLQ1NSLCBCUkNNRl9JTklUX0NMS0NUTDEsICZlcnIp OwoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzY3MTogRklMRTogZHJpdmVy cy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzozODE1 OgorCQljbGtjdGwgPSBicmNtZl9zZGlvZF9yZWFkYihzZGlvZGV2LCBTQlNESU9fRlVOQzFf Q0hJUENMS0NTUiwgJmVycik7CgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVu IHBhcmVudGhlc2lzCiM3MTQ6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29t L2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6NDAxNzoKKwkJYnJjbWZfc2Rpb2Rfd3JpdGVi KHNkaW9kZXYsIFNCU0RJT19GVU5DMV9DSElQQ0xLQ1NSLAogCQkJCSAgKHNhdmVjbGsgfCBT QlNESU9fRk9SQ0VfSFQpLCAmZXJyKTsKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0 ZXJzCiM3MzI6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIx MS9icmNtZm1hYy9zZGlvLmM6NDA1MDoKKwkJYnJjbWZfc2Rpb2Rfd3JpdGViKHNkaW9kZXYs IFNCU0RJT19GVU5DMV9DSElQQ0xLQ1NSLCBzYXZlY2xrLCAmZXJyKTsKCldBUk5JTkc6IGxp bmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiM3OTM6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNz L2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmg6MzExOgordm9pZCBicmNtZl9z ZGlvZF93cml0ZWwoc3RydWN0IGJyY21mX3NkaW9fZGV2ICpzZGlvZGV2LCB1MzIgYWRkciwg dTMyIGRhdGEsIGludCAqcmV0KTsKCnRvdGFsOiAwIGVycm9ycywgMjggd2FybmluZ3MsIDE3 IGNoZWNrcywgNzE4IGxpbmVzIGNoZWNrZWQKCk5PVEU6IEZvciBzb21lIG9mIHRoZSByZXBv cnRlZCBkZWZlY3RzLCBjaGVja3BhdGNoIG1heSBiZSBhYmxlIHRvCiAgICAgIG1lY2hhbmlj YWxseSBjb252ZXJ0IHRvIHRoZSB0eXBpY2FsIHN0eWxlIHVzaW5nIC0tZml4IG9yIC0tZml4 LWlucGxhY2UuCgpZb3VyIHBhdGNoIGhhcyBzdHlsZSBwcm9ibGVtcywgcGxlYXNlIHJldmll dy4KCk5PVEU6IElmIGFueSBvZiB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHBs ZWFzZSByZXBvcnQKICAgICAgdGhlbSB0byB0aGUgbWFpbnRhaW5lciwgc2VlIENIRUNLUEFU Q0ggaW4gTUFJTlRBSU5FUlMuCmNoZWNraW5nIHBhdGNoOiA3NDk1NDZjIGJyY21mbWFjOiBU aWR5IHJlZ2lzdGVyIGRlZmluaXRpb25zIGEgbGl0dGxlCnRvdGFsOiAwIGVycm9ycywgMCB3 YXJuaW5ncywgMCBjaGVja3MsIDIzIGxpbmVzIGNoZWNrZWQKCllvdXIgcGF0Y2ggaGFzIG5v IG9idmlvdXMgc3R5bGUgcHJvYmxlbXMgYW5kIGlzIHJlYWR5IGZvciBzdWJtaXNzaW9uLgpj aGVja2luZyBwYXRjaDogNzVlMGVhZiBicmNtZm1hYzogUmVtb3ZlIGJyY21mX3NkaW9kX2Fk ZHJwcmVwKCkKRVJST1I6IHNwYWNlcyByZXF1aXJlZCBhcm91bmQgdGhhdCAnPj49JyAoY3R4 OlZ4VikKIzU3OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAy MTEvYnJjbWZtYWMvYmNtc2RoLmM6MjQyOgorCWZvciAoaSA9IDAgOyBpIDwgMyAmJiAhZXJy IDsgaSsrLCB2Pj49OCkKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K CldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiM1ODogRklMRTogZHJpdmVycy9u ZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjI0MzoK KwkJYnJjbWZfc2Rpb2Rfd3JpdGViKHNkaW9kZXYsIFNCU0RJT19GVU5DMV9TQkFERFJMT1cg KyBpLCB2ICYgMHhmZiwgJmVycik7CgpFUlJPUjogc3BhY2UgcmVxdWlyZWQgYmVmb3JlIHRo ZSBvcGVuIHBhcmVudGhlc2lzICcoJwojNjA6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNz L2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzoyNDU6CisJaWYoIWVycikK CnRvdGFsOiAyIGVycm9ycywgMSB3YXJuaW5ncywgMCBjaGVja3MsIDE1NyBsaW5lcyBjaGVj a2VkCgpOT1RFOiBGb3Igc29tZSBvZiB0aGUgcmVwb3J0ZWQgZGVmZWN0cywgY2hlY2twYXRj aCBtYXkgYmUgYWJsZSB0bwogICAgICBtZWNoYW5pY2FsbHkgY29udmVydCB0byB0aGUgdHlw aWNhbCBzdHlsZSB1c2luZyAtLWZpeCBvciAtLWZpeC1pbnBsYWNlLgoKWW91ciBwYXRjaCBo YXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcuCgpOT1RFOiBJZiBhbnkgb2YgdGhl IGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBwbGVhc2UgcmVwb3J0CiAgICAgIHRoZW0g dG8gdGhlIG1haW50YWluZXIsIHNlZSBDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgpjaGVj a2luZyBwYXRjaDogNmNiNjNiZiBicmNtZmFtYzogcmVtb3ZlIHVubmVjZXNzYXJ5IGNhbGwg dG8gYnJjbWZfc2Rpb2Rfc2V0X2JhY2twbGFuZV93aW5kb3coKQp0b3RhbDogMCBlcnJvcnMs IDAgd2FybmluZ3MsIDAgY2hlY2tzLCAxMSBsaW5lcyBjaGVja2VkCgpZb3VyIHBhdGNoIGhh cyBubyBvYnZpb3VzIHN0eWxlIHByb2JsZW1zIGFuZCBpcyByZWFkeSBmb3Igc3VibWlzc2lv bi4KY2hlY2tpbmcgcGF0Y2g6IGE3NTNhNjggYnJjbWZtYWM6IENsZWFudXAgb2Zmc2V0b2Yo KQp0b3RhbDogMCBlcnJvcnMsIDAgd2FybmluZ3MsIDAgY2hlY2tzLCAxMDQgbGluZXMgY2hl Y2tlZAoKWW91ciBwYXRjaCBoYXMgbm8gb2J2aW91cyBzdHlsZSBwcm9ibGVtcyBhbmQgaXMg cmVhZHkgZm9yIHN1Ym1pc3Npb24uCmNoZWNraW5nIHBhdGNoOiAxODRjNWJmIGJyY21mbWFj OiBSZW1vdmUgdW51c2VkIG1hY3JvLgp0b3RhbDogMCBlcnJvcnMsIDAgd2FybmluZ3MsIDAg Y2hlY2tzLCA4IGxpbmVzIGNoZWNrZWQKCllvdXIgcGF0Y2ggaGFzIG5vIG9idmlvdXMgc3R5 bGUgcHJvYmxlbXMgYW5kIGlzIHJlYWR5IGZvciBzdWJtaXNzaW9uLgpjaGVja2luZyBwYXRj aDogNmE4OWRkZCBicmNtZm1hYzogUmVuYW1lIFNPQ19BSSB0byBTT0NfQVhJCkVSUk9SOiBz d2l0Y2ggYW5kIGNhc2Ugc2hvdWxkIGJlIGF0IHRoZSBzYW1lIGluZGVudAojMzQ6IEZJTEU6 IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jaGlw LmM6OTMwOgorCXN3aXRjaChzb2NpdHlwZSkgeworCQljYXNlIFNPQ0lfU0I6CgpFUlJPUjog c3BhY2UgcmVxdWlyZWQgYmVmb3JlIHRoZSBvcGVuIHBhcmVudGhlc2lzICcoJwojMzQ6IEZJ TEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9j aGlwLmM6OTMwOgorCXN3aXRjaChzb2NpdHlwZSkgewoKdG90YWw6IDIgZXJyb3JzLCAwIHdh cm5pbmdzLCAwIGNoZWNrcywgMzQgbGluZXMgY2hlY2tlZAoKTk9URTogRm9yIHNvbWUgb2Yg dGhlIHJlcG9ydGVkIGRlZmVjdHMsIGNoZWNrcGF0Y2ggbWF5IGJlIGFibGUgdG8KICAgICAg bWVjaGFuaWNhbGx5IGNvbnZlcnQgdG8gdGhlIHR5cGljYWwgc3R5bGUgdXNpbmcgLS1maXgg b3IgLS1maXgtaW5wbGFjZS4KCllvdXIgcGF0Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVh c2UgcmV2aWV3LgoKTk9URTogSWYgYW55IG9mIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0 aXZlcywgcGxlYXNlIHJlcG9ydAogICAgICB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBzZWUg Q0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KY2hlY2tpbmcgcGF0Y2g6IGVhOGQyMGQgYnJj bWZtYWM6IEdldCByaWQgb2YgY2hpcF9wcml2IGFuZCBjb3JlX3ByaXYgc3RydWN0cwpXQVJO SU5HOiBwcmludGsoKSBzaG91bGQgaW5jbHVkZSBLRVJOXyBmYWNpbGl0eSBsZXZlbAojNDY0 OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZt YWMvY2hpcC5jOjkwMDoKKwlwcmludGsoImZvdW5kICVzIGNoaXA6IEJDTSVzLCByZXY9JWRc biIsCgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM0 NjU6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNt Zm1hYy9jaGlwLmM6OTAxOgorCXByaW50aygiZm91bmQgJXMgY2hpcDogQkNNJXMsIHJldj0l ZFxuIiwKKwkJICBzb2NpdHlwZSA9PSBTT0NJX1NCID8gIlNCIiA6ICJBWEkiLCBjaS0+bmFt ZSwKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzkz NDogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21m bWFjL2NoaXAuaDo1MToKKwl2b2lkICgqcmVzZXRjb3JlKShzdHJ1Y3QgYnJjbWZfY29yZSAq Y29yZSwgdTMyIHByZXJlc2V0LCB1MzIgcmVzZXQsCisJCQkJdTMyIHBvc3RyZXNldCk7Cgp0 b3RhbDogMCBlcnJvcnMsIDEgd2FybmluZ3MsIDIgY2hlY2tzLCA5MTAgbGluZXMgY2hlY2tl ZAoKTk9URTogRm9yIHNvbWUgb2YgdGhlIHJlcG9ydGVkIGRlZmVjdHMsIGNoZWNrcGF0Y2gg bWF5IGJlIGFibGUgdG8KICAgICAgbWVjaGFuaWNhbGx5IGNvbnZlcnQgdG8gdGhlIHR5cGlj YWwgc3R5bGUgdXNpbmcgLS1maXggb3IgLS1maXgtaW5wbGFjZS4KCllvdXIgcGF0Y2ggaGFz IHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3LgoKTk9URTogSWYgYW55IG9mIHRoZSBl cnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgcGxlYXNlIHJlcG9ydAogICAgICB0aGVtIHRv IHRoZSBtYWludGFpbmVyLCBzZWUgQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KY2hlY2tp bmcgcGF0Y2g6IGQ2YTMyOWIgYnJjbWZtYWM6IFdoaXRlc3BhY2UgcGF0Y2gKQ0hFQ0s6IEJs YW5rIGxpbmVzIGFyZW4ndCBuZWNlc3NhcnkgYWZ0ZXIgYW4gb3BlbiBicmFjZSAneycKIzE1 OTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21m bWFjL2NoaXAuYzo0NTk6CiAJICAgICAgIEJDTUFfUkVTRVRfQ1RMX1JFU0VUKSB7CisKCnRv dGFsOiAwIGVycm9ycywgMCB3YXJuaW5ncywgMSBjaGVja3MsIDIyMSBsaW5lcyBjaGVja2Vk CgpOT1RFOiBGb3Igc29tZSBvZiB0aGUgcmVwb3J0ZWQgZGVmZWN0cywgY2hlY2twYXRjaCBt YXkgYmUgYWJsZSB0bwogICAgICBtZWNoYW5pY2FsbHkgY29udmVydCB0byB0aGUgdHlwaWNh bCBzdHlsZSB1c2luZyAtLWZpeCBvciAtLWZpeC1pbnBsYWNlLgoKWW91ciBwYXRjaCBoYXMg c3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcuCgpOT1RFOiBJZiBhbnkgb2YgdGhlIGVy cm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBwbGVhc2UgcmVwb3J0CiAgICAgIHRoZW0gdG8g dGhlIG1haW50YWluZXIsIHNlZSBDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgpjaGVja2lu ZyBwYXRjaDogMjI0YTBlMyBicmNtZm1hYzogU2ltcGxpZnkgY2hpcCBwcm9iZSByb3V0aW5l CkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzQyOiBG SUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMv Y2hpcC5jOjQ3NToKK3N0YXRpYyBzdHJ1Y3QgYnJjbWZfY29yZSAqX19icmNtZl9jaGlwX2Fk ZF9jb3JlKHN0cnVjdCBicmNtZl9jaGlwICpjaSwKIAkJCQkJICAgICAgdTE2IGNvcmVpZCwg dTMyIGJhc2UsCgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhl c2lzCiM1OTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjEx L2JyY21mbWFjL2NoaXAuYzo0OTU6CitzdGF0aWMgc3RydWN0IGJyY21mX2NvcmUgKmJyY21m X2NoaXBfYWRkX3NiX2NvcmUoc3RydWN0IGJyY21mX2NoaXAgKmNpLAorCQkJCQkgICAgICB1 MTYgY29yZWlkLCB1MzIgYmFzZSwKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9w ZW4gcGFyZW50aGVzaXMKIzc5OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNv bS9icmNtODAyMTEvYnJjbWZtYWMvY2hpcC5jOjUxNToKK3N0YXRpYyBzdHJ1Y3QgYnJjbWZf Y29yZSAqYnJjbWZfY2hpcF9hZGRfYXhpX2NvcmUoc3RydWN0IGJyY21mX2NoaXAgKmNpLAor CQkJCQkgICAgICB1MTYgY29yZWlkLCB1MzIgYmFzZSwKCkNIRUNLOiBQbGVhc2UgZG9uJ3Qg dXNlIG11bHRpcGxlIGJsYW5rIGxpbmVzCiM5MjogRklMRTogZHJpdmVycy9uZXQvd2lyZWxl c3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NoaXAuYzo1Mjg6CisKKwoKV0FSTklO RzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzEwNzogRklMRTogZHJpdmVycy9uZXQvd2ly ZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NoaXAuYzo5Mjk6CisJCQlyZXR1 cm4gLUVOT01FTTsgLy9GSVhNRSAtIGFuZCBjbGVhbnVwIHRoZSBhbGxvY2F0ZWQgY29yZXM/ CgpFUlJPUjogc3BhY2UgcHJvaGliaXRlZCBiZWZvcmUgdGhhdCAnLCcgKGN0eDpXeFcpCiMx MjU6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNt Zm1hYy9jaGlwLmM6OTQ2OgorCXsgMCAsIDB9LAogCSAgICBeCgpDSEVDSzogQWxpZ25tZW50 IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMxMjk6IEZJTEU6IGRyaXZlcnMvbmV0 L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jaGlwLmM6OTUwOgorc3Rh dGljIGludCBicmNtZl9jaGlwX2FkZF9zdGF0aWMoc3RydWN0IGJyY21mX2NoaXAgKmNpLAor CQkJCXN0cnVjdCBicmNtZl9jaGlwX2Rlc2MgKmRlc2MpCgpFUlJPUjogc3BhY2UgcHJvaGli aXRlZCBiZWZvcmUgdGhhdCBjbG9zZSBwYXJlbnRoZXNpcyAnKScKIzEzMTogRklMRTogZHJp dmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NoaXAuYzo5 NTI6CisJZm9yICggOyBkZXNjLT5pZCA7IGRlc2MrKyApCgpDSEVDSzogUGxlYXNlIGRvbid0 IHVzZSBtdWx0aXBsZSBibGFuayBsaW5lcwojMTM5OiBGSUxFOiBkcml2ZXJzL25ldC93aXJl bGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2hpcC5jOjk2MDoKKworCgpFUlJP Ujogc3dpdGNoIGFuZCBjYXNlIHNob3VsZCBiZSBhdCB0aGUgc2FtZSBpbmRlbnQKIzE2ODog RklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFj L2NoaXAuYzo5ODg6CisJCXN3aXRjaChjaS0+Y2hpcCkgeworCQkJY2FzZSBCUkNNX0NDXzQz MjlfQ0hJUF9JRDoKWy4uLl0KKwkJCWRlZmF1bHQ6CgpFUlJPUjogc3BhY2UgcmVxdWlyZWQg YmVmb3JlIHRoZSBvcGVuIHBhcmVudGhlc2lzICcoJwojMTY4OiBGSUxFOiBkcml2ZXJzL25l dC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2hpcC5jOjk4ODoKKwkJ c3dpdGNoKGNpLT5jaGlwKSB7CgpFUlJPUjogc3BhY2UgcmVxdWlyZWQgYmVmb3JlIHRoZSBv cGVuIHBhcmVudGhlc2lzICcoJwojMTc3OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9i cm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2hpcC5jOjk5NzoKKwkJaWYoIXJldCkKCnRv dGFsOiA1IGVycm9ycywgMSB3YXJuaW5ncywgNiBjaGVja3MsIDIwMSBsaW5lcyBjaGVja2Vk CgpOT1RFOiBGb3Igc29tZSBvZiB0aGUgcmVwb3J0ZWQgZGVmZWN0cywgY2hlY2twYXRjaCBt YXkgYmUgYWJsZSB0bwogICAgICBtZWNoYW5pY2FsbHkgY29udmVydCB0byB0aGUgdHlwaWNh bCBzdHlsZSB1c2luZyAtLWZpeCBvciAtLWZpeC1pbnBsYWNlLgoKWW91ciBwYXRjaCBoYXMg c3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcuCgpOT1RFOiBJZiBhbnkgb2YgdGhlIGVy cm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBwbGVhc2UgcmVwb3J0CiAgICAgIHRoZW0gdG8g dGhlIG1haW50YWluZXIsIHNlZSBDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgpjaGVja2lu ZyBwYXRjaDogYjYzNGJkMCBicmNtZm1hYzogUmVuYW1lIGF4aSBmdW5jdGlvbnMgZm9yIGNs YXJpdHkuCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMK IzMzOiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJj bWZtYWMvY2hpcC5jOjM0NDoKK3N0YXRpYyB2b2lkIGJyY21mX2NoaXBfYXhpX2NvcmVkaXNh YmxlKHN0cnVjdCBicmNtZl9jb3JlICpjb3JlLAogCQkJCSAgICAgIHUzMiBwcmVyZXNldCwg dTMyIHJlc2V0KQoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRo ZXNpcwojNDI6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIx MS9icmNtZm1hYy9jaGlwLmM6NDM2Ogorc3RhdGljIHZvaWQgYnJjbWZfY2hpcF9heGlfcmVz ZXRjb3JlKHN0cnVjdCBicmNtZl9jb3JlICpjb3JlLCB1MzIgcHJlcmVzZXQsCiAJCQkJICAg IHUzMiByZXNldCwgdTMyIHBvc3RyZXNldCkKCnRvdGFsOiAwIGVycm9ycywgMCB3YXJuaW5n cywgMiBjaGVja3MsIDQ0IGxpbmVzIGNoZWNrZWQKCk5PVEU6IEZvciBzb21lIG9mIHRoZSBy ZXBvcnRlZCBkZWZlY3RzLCBjaGVja3BhdGNoIG1heSBiZSBhYmxlIHRvCiAgICAgIG1lY2hh bmljYWxseSBjb252ZXJ0IHRvIHRoZSB0eXBpY2FsIHN0eWxlIHVzaW5nIC0tZml4IG9yIC0t Zml4LWlucGxhY2UuCgpZb3VyIHBhdGNoIGhhcyBzdHlsZSBwcm9ibGVtcywgcGxlYXNlIHJl dmlldy4KCk5PVEU6IElmIGFueSBvZiB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMs IHBsZWFzZSByZXBvcnQKICAgICAgdGhlbSB0byB0aGUgbWFpbnRhaW5lciwgc2VlIENIRUNL UEFUQ0ggaW4gTUFJTlRBSU5FUlMuCmNoZWNraW5nIHBhdGNoOiBmODkyZGNmIGJyY21mbWFj OiBIVUdFIGNsZWFudXAgb2YgSU8gYWNjZXNzIGZ1bmN0aW9ucy4KV0FSTklORzogQ29tcGFy aXNvbnMgc2hvdWxkIHBsYWNlIHRoZSBjb25zdGFudCBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0 aGUgdGVzdAojMTAxOiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNt ODAyMTEvYnJjbWZtYWMvY2hpcC5jOjI3MjoKKwlyZXR1cm4gU1NCX1RNU0xPV19DTE9DSyA9 PSB2YWw7CgpFUlJPUjogc3BhY2UgcmVxdWlyZWQgYmVmb3JlIHRoZSBvcGVuIHBhcmVudGhl c2lzICcoJwojMTE1OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNt ODAyMTEvYnJjbWZtYWMvY2hpcC5jOjI4MjoKKwlpZigodmFsICYgQkNNQV9JT0NUTF9GR0Mp IHx8ICEodmFsICYgQkNNQV9JT0NUTF9DTEspKQoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQg bWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojMTMyOiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVz cy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2hpcC5jOjI5NToKK3N0YXRpYyB2b2lk IGJyY21mX2NoaXBfc2JfY29yZV9kaXNhYmxlKHN0cnVjdCBicmNtZl9jb3JlICpjb3JlLAog CQkJCSAgICAgIHUzMiBwcmVyZXNldCwgdTMyIHJlc2V0KQoKV0FSTklORzogbmV0d29ya2lu ZyBibG9jayBjb21tZW50cyBkb24ndCB1c2UgYW4gZW1wdHkgLyogbGluZSwgdXNlIC8qIENv bW1lbnQuLi4KIzE2MzogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJj bTgwMjExL2JyY21mbWFjL2NoaXAuYzozMTQ6CisJLyoKKwkgKiBTZXQgdGFyZ2V0IHJlamVj dCBhbmQgc3BpbiB1bnRpbCBidXN5IGlzIGNsZWFyCgpFUlJPUjogdGhhdCBvcGVuIGJyYWNl IHsgc2hvdWxkIGJlIG9uIHRoZSBwcmV2aW91cyBsaW5lCiMyMDA6IEZJTEU6IGRyaXZlcnMv bmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jaGlwLmM6MzMwOgor CWlmICh2YWwgJiBTU0JfSURMT1dfSU5JVElBVE9SKQorCXsKCkNIRUNLOiBBbGlnbm1lbnQg c2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzIwODogRklMRTogZHJpdmVycy9uZXQv d2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NoaXAuYzozMzU6CisJCWJy Y21mX3NldF9iaXRzX3Bvc3QoY2ksIENPUkVfU0IoYmFzZSwgc2JpbXN0YXRlKSwKKwkJCQlT U0JfSU1TVEFURV9SRUpFQ1QpOwoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3Bl biBwYXJlbnRoZXNpcwojMjI3OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNv bS9icmNtODAyMTEvYnJjbWZtYWMvY2hpcC5jOjM0OToKKwlicmNtZl93cml0ZWxwKGNpLCBD T1JFX1NCKGJhc2UsIHNidG1zdGF0ZWxvdyksCisJCQlTU0JfVE1TTE9XX0ZHQyB8IFNTQl9U TVNMT1dfQ0xPQ0sgfAoKQ0hFQ0s6IHVzbGVlcF9yYW5nZSBpcyBwcmVmZXJyZWQgb3ZlciB1 ZGVsYXk7IHNlZSBEb2N1bWVudGF0aW9uL3RpbWVycy90aW1lcnMtaG93dG8udHh0CiMyMzM6 IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1h Yy9jaGlwLmM6MzUyOgorCXVkZWxheSgxMCk7CgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBt YXRjaCBvcGVuIHBhcmVudGhlc2lzCiMyNDY6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNz L2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jaGlwLmM6MzYwOgorCQlicmNtZl9jbGVh cl9iaXRzKGNpLCBDT1JFX1NCKGJhc2UsIHNiaW1zdGF0ZSksCisJCQkJU1NCX0lNU1RBVEVf UkVKRUNUKTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVz aXMKIzI1MzogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjEx L2JyY21mbWFjL2NoaXAuYzozNjU6CisJYnJjbWZfd3JpdGVsKGNpLCBDT1JFX1NCKGJhc2Us IHNidG1zdGF0ZWxvdyksCisJCQkgU1NCX1RNU0xPV19SRUpFQ1QgfCBTU0JfVE1TTE9XX1JF U0VUKTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMK IzI2MDogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2Jy Y21mbWFjL2NoaXAuYzozNzE6CitzdGF0aWMgdm9pZCBicmNtZl9jaGlwX2F4aV9jb3JlX2Rp c2FibGUoc3RydWN0IGJyY21mX2NvcmUgKmNvcmUsCiAJCQkJICAgICAgdTMyIHByZXJlc2V0 LCB1MzIgcmVzZXQpCgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVu dGhlc2lzCiMyNzk6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204 MDIxMS9icmNtZm1hYy9jaGlwLmM6Mzg0OgorCWJyY21mX3dyaXRlbHAoY2ksIGNvcmUtPndy YXBiYXNlICsgQkNNQV9JT0NUTCwKIAkJCSBwcmVyZXNldCB8IEJDTUFfSU9DVExfRkdDIHwg QkNNQV9JT0NUTF9DTEspOwoKV0FSTklORzogbmV0d29ya2luZyBibG9jayBjb21tZW50cyBk b24ndCB1c2UgYW4gZW1wdHkgLyogbGluZSwgdXNlIC8qIENvbW1lbnQuLi4KIzI5NDogRklM RTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2No aXAuYzozOTI6CisJLyoKKwkgKiBXYWl0IHRpbGwgcmVzZXQgaXMgMQoKQ0hFQ0s6IEFsaWdu bWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojMzA0OiBGSUxFOiBkcml2ZXJz L25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2hpcC5jOjQwMDoK KwlicmNtZl93cml0ZWxwKGNpLCBjb3JlLT53cmFwYmFzZSArIEJDTUFfSU9DVEwsCiAJCQkg cmVzZXQgfCBCQ01BX0lPQ1RMX0ZHQyB8IEJDTUFfSU9DVExfQ0xLKTsKCkNIRUNLOiBBbGln bm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzMxMTogRklMRTogZHJpdmVy cy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NoaXAuYzo0MDQ6 CitzdGF0aWMgdm9pZCBicmNtZl9jaGlwX3NiX3Jlc2V0X2NvcmUoc3RydWN0IGJyY21mX2Nv cmUgKmNvcmUsIHUzMiBwcmVyZXNldCwKIAkJCQkgICAgdTMyIHJlc2V0LCB1MzIgcG9zdHJl c2V0KQoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwoj MzMyOiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJj bWZtYWMvY2hpcC5jOjQyMjoKKwlicmNtZl93cml0ZWxwKGNpLCBDT1JFX1NCKGJhc2UsIHNi dG1zdGF0ZWxvdyksCiAJCQkgU1NCX1RNU0xPV19GR0MgfCBTU0JfVE1TTE9XX0NMT0NLIHwK CkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzM2NDog RklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFj L2NoaXAuYzo0NDI6CisJYnJjbWZfd3JpdGVscChjaSwgQ09SRV9TQihiYXNlLCBzYnRtc3Rh dGVsb3cpLAogCQkJIFNTQl9UTVNMT1dfRkdDIHwgU1NCX1RNU0xPV19DTE9DSyk7CgpDSEVD SzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMzODM6IEZJTEU6 IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jaGlw LmM6NDUzOgorc3RhdGljIHZvaWQgYnJjbWZfY2hpcF9heGlfcmVzZXRfY29yZShzdHJ1Y3Qg YnJjbWZfY29yZSAqY29yZSwgdTMyIHByZXJlc2V0LAogCQkJCSAgICB1MzIgcmVzZXQsIHUz MiBwb3N0cmVzZXQpCgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVu dGhlc2lzCiM0Mjc6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204 MDIxMS9icmNtZm1hYy9jaGlwLmM6NDcxOgorCWJyY21mX3dyaXRlbHAoY2ksIGNvcmUtPndy YXBiYXNlICsgQkNNQV9JT0NUTCwKKwkJCXBvc3RyZXNldCB8IEJDTUFfSU9DVExfQ0xLKTsK CkVSUk9SOiB0cmFpbGluZyB3aGl0ZXNwYWNlCiM2MTc6IEZJTEU6IGRyaXZlcnMvbmV0L3dp cmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jaGlwLmM6OTc1OgorXklzbnBy aW50ZihjaS0+bmFtZSwgc2l6ZW9mKGNpLT5uYW1lKSwgJAoKQ0hFQ0s6IEFsaWdubWVudCBz aG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojNjE4OiBGSUxFOiBkcml2ZXJzL25ldC93 aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2hpcC5jOjk3NjoKKwlzbnBy aW50ZihjaS0+bmFtZSwgc2l6ZW9mKGNpLT5uYW1lKSwgCisJCShjaS0+Y2hpcCA+IDB4YTAw MCB8fCBjaS0+Y2hpcCA8IDB4NDAwMCkgPyAiJWQiIDogIiV4IiwKCkVSUk9SOiBzd2l0Y2gg YW5kIGNhc2Ugc2hvdWxkIGJlIGF0IHRoZSBzYW1lIGluZGVudAojNjI2OiBGSUxFOiBkcml2 ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2hpcC5jOjk4 MToKIAlzd2l0Y2goc29jaXR5cGUpIHsKWy4uLl0KKwkJY2FzZSBTT0NJX0FYSToKWy4uLl0K KwkJZGVmYXVsdDoKCkVSUk9SOiBzd2l0Y2ggYW5kIGNhc2Ugc2hvdWxkIGJlIGF0IHRoZSBz YW1lIGluZGVudAojNjM3OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9i cmNtODAyMTEvYnJjbWZtYWMvY2hpcC5jOjk4NDoKKwkJCXN3aXRjaChjaS0+Y2hpcCkgewor CQkJCWNhc2UgQlJDTV9DQ180MzI5X0NISVBfSUQ6ClsuLi5dCisJCQkJZGVmYXVsdDoKCkVS Uk9SOiBzcGFjZSByZXF1aXJlZCBiZWZvcmUgdGhlIG9wZW4gcGFyZW50aGVzaXMgJygnCiM2 Mzc6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNt Zm1hYy9jaGlwLmM6OTg0OgorCQkJc3dpdGNoKGNpLT5jaGlwKSB7CgpXQVJOSU5HOiBsaW5l IG92ZXIgODAgY2hhcmFjdGVycwojNjM5OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9i cm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2hpcC5jOjk4NjoKKwkJCQkJcmV0ID0gYnJj bWZfY2hpcF9hZGRfc3RhdGljKGNpLCBicmNtZl80MzI5KTsKCkVSUk9SOiBzcGFjZSByZXF1 aXJlZCBiZWZvcmUgdGhlIG9wZW4gcGFyZW50aGVzaXMgJygnCiM2NDg6IEZJTEU6IGRyaXZl cnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jaGlwLmM6OTkz OgorCQkJaWYoIXJldCkKCldBUk5JTkc6IHByaW50aygpIHNob3VsZCBpbmNsdWRlIEtFUk5f IGZhY2lsaXR5IGxldmVsCiM3MDg6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2Fk Y29tL2JyY204MDIxMS9icmNtZm1hYy9jaGlwLmM6MTAzNDoKKwlwcmludGsoIkZvdW5kIEJD TSVzLCAlcyBiYWNrcGxhbmUsIHJldj0lZFxuIiwgY2ktPm5hbWUsCgpDSEVDSzogQWxpZ25t ZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM3MDk6IEZJTEU6IGRyaXZlcnMv bmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jaGlwLmM6MTAzNToK KwlwcmludGsoIkZvdW5kIEJDTSVzLCAlcyBiYWNrcGxhbmUsIHJldj0lZFxuIiwgY2ktPm5h bWUsCisJCSAgc29jaXR5cGUgPT0gU09DSV9TQiA/ICJTQiIgOiAiQVhJIiwKCldBUk5JTkc6 IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiM3NDc6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVs ZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jaGlwLmM6MTA5MDoKKwkJdmFsID0g YnJjbWZfcmVhZGwoY2hpcCwJQ09SRV9DQ19SRUcocG11LT5iYXNlLCBwbXVjYXBhYmlsaXRp ZXMpKTsKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiM4MjE6IEZJTEU6IGRy aXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jaGlwLmM6 MTM5NjoKKwkJcmVnID0gYnJjbWZfcmVhZGwoY2ksIENPUkVfQ0NfUkVHKHBtdS0+YmFzZSwg cG11Y2FwYWJpbGl0aWVzX2V4dCkpOwoKdG90YWw6IDcgZXJyb3JzLCA3IHdhcm5pbmdzLCAx NiBjaGVja3MsIDc5MCBsaW5lcyBjaGVja2VkCgpOT1RFOiBGb3Igc29tZSBvZiB0aGUgcmVw b3J0ZWQgZGVmZWN0cywgY2hlY2twYXRjaCBtYXkgYmUgYWJsZSB0bwogICAgICBtZWNoYW5p Y2FsbHkgY29udmVydCB0byB0aGUgdHlwaWNhbCBzdHlsZSB1c2luZyAtLWZpeCBvciAtLWZp eC1pbnBsYWNlLgoKTk9URTogV2hpdGVzcGFjZSBlcnJvcnMgZGV0ZWN0ZWQuCiAgICAgIFlv dSBtYXkgd2lzaCB0byB1c2Ugc2NyaXB0cy9jbGVhbnBhdGNoIG9yIHNjcmlwdHMvY2xlYW5m aWxlCgpZb3VyIHBhdGNoIGhhcyBzdHlsZSBwcm9ibGVtcywgcGxlYXNlIHJldmlldy4KCk5P VEU6IElmIGFueSBvZiB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHBsZWFzZSBy ZXBvcnQKICAgICAgdGhlbSB0byB0aGUgbWFpbnRhaW5lciwgc2VlIENIRUNLUEFUQ0ggaW4g TUFJTlRBSU5FUlMuCmNoZWNraW5nIHBhdGNoOiA0ZDg0Y2QwIGJyY21mbWFjOiBSZW5hbWUg Y2hpcC5jdHggLT4gY2hpcC5idXNfcHJpdgp0b3RhbDogMCBlcnJvcnMsIDAgd2FybmluZ3Ms IDAgY2hlY2tzLCAxMDkgbGluZXMgY2hlY2tlZAoKWW91ciBwYXRjaCBoYXMgbm8gb2J2aW91 cyBzdHlsZSBwcm9ibGVtcyBhbmQgaXMgcmVhZHkgZm9yIHN1Ym1pc3Npb24uCmNoZWNraW5n IHBhdGNoOiBhZDI2ZmUyIGJyY21mbWFjOiBSZW1vdmUgcmVwZWF0ZWQgY2FsbHMgdG8gYnJj bWZfY2hpcF9nZXRfY29yZSgpCnRvdGFsOiAwIGVycm9ycywgMCB3YXJuaW5ncywgMCBjaGVj a3MsIDk2IGxpbmVzIGNoZWNrZWQKCllvdXIgcGF0Y2ggaGFzIG5vIG9idmlvdXMgc3R5bGUg cHJvYmxlbXMgYW5kIGlzIHJlYWR5IGZvciBzdWJtaXNzaW9uLgpjaGVja2luZyBwYXRjaDog MDZmYmFjYSBicmNtZm1hYzogR2VuZXJhbCBjbGVhbmluZyB1cC4gd2hpdGVzcGFjZSBhbmQg Y29tbWVudHMgZml4LgpDSEVDSzogQmxhbmsgbGluZXMgYXJlbid0IG5lY2Vzc2FyeSBhZnRl ciBhbiBvcGVuIGJyYWNlICd7JwojNTg6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jy b2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6Mzc2NToKKwkJYWRkciA9PSBDT1JF X0NDX1JFRyhTSV9FTlVNX0JBU0UsIGNoaXBpZCkpIHsKKwoKdG90YWw6IDAgZXJyb3JzLCAw IHdhcm5pbmdzLCAxIGNoZWNrcywgNjAgbGluZXMgY2hlY2tlZAoKTk9URTogRm9yIHNvbWUg b2YgdGhlIHJlcG9ydGVkIGRlZmVjdHMsIGNoZWNrcGF0Y2ggbWF5IGJlIGFibGUgdG8KICAg ICAgbWVjaGFuaWNhbGx5IGNvbnZlcnQgdG8gdGhlIHR5cGljYWwgc3R5bGUgdXNpbmcgLS1m aXggb3IgLS1maXgtaW5wbGFjZS4KCllvdXIgcGF0Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBw bGVhc2UgcmV2aWV3LgoKTk9URTogSWYgYW55IG9mIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBv c2l0aXZlcywgcGxlYXNlIHJlcG9ydAogICAgICB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBz ZWUgQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KY2hlY2tpbmcgcGF0Y2g6IDBiM2YzZmIg YnJjbWZtYWM6IFJlbW92ZSB7cix3fV9zZHJlZzMyCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxk IG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzY4OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVz cy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjEwNjU6CisJCWJyY21mX3Nk aW9kX3dyaXRlbChzZGlvZCwgY29yZS0+YmFzZSArIF9fc2RfcmVnKHRvc2JtYWlsYm94KSwK KwkJCQkJU01CX0lOVF9BQ0ssICZyZXQpOwoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0 Y2ggb3BlbiBwYXJlbnRoZXNpcwojOTA6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jy b2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6MTE3NjoKKwkJYnJjbWZfc2Rpb2Rf d3JpdGVsKHNkaW9kLCBjb3JlLT5iYXNlICsgX19zZF9yZWcodG9zYm1haWxib3gpLAorCQkJ CQlTTUJfTkFLLCAmZXJyKTsKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMx MDg6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNt Zm1hYy9zZGlvLmM6MjMwMjoKKwkJCQkJCQlfX3NkX3JlZyhpbnRzdGF0dXMpLCAmcmV0KTsK CldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMxMzQ6IEZJTEU6IGRyaXZlcnMv bmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6MjQwOToK KwkJYnJjbWZfc2Rpb2Rfd3JpdGVsKHNkaW9kZXYsIGNvcmUtPmJhc2UgKyBfX3NkX3JlZyho b3N0aW50bWFzayksIDAsIE5VTEwpOwoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2gg b3BlbiBwYXJlbnRoZXNpcwojMTQ1OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9h ZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjI0MzA6CisJCWJyY21mX3NkaW9kX3dy aXRlbChzZGlvZGV2LCBjb3JlLT5iYXNlICsgX19zZF9yZWcoaW50c3RhdHVzKSwKKwkJCQkJ bG9jYWxfaG9zdGludG1hc2ssIE5VTEwpOwoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0 Y2ggb3BlbiBwYXJlbnRoZXNpcwojMTY0OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9i cm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjI1NTI6CisJCWJyY21mX3NkaW9k X3dyaXRlbChzZGlvZCwgY29yZS0+YmFzZSArIF9fc2RfcmVnKGludHN0YXR1cyksCisJCQkJ ICAgICAgIElfSE1CX0ZDX0NIQU5HRSwgJmVycik7CgpXQVJOSU5HOiBsaW5lIG92ZXIgODAg Y2hhcmFjdGVycwojMTY2OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9i cmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjI1NTQ6CisJCW5ld3N0YXR1cyA9IGJyY21mX3Nk aW9kX3JlYWRsKHNkaW9kLCBjb3JlLT5iYXNlICsgX19zZF9yZWcoaW50c3RhdHVzKSwKCkNI RUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzE2NzogRklM RTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Nk aW8uYzoyNTU1OgorCQluZXdzdGF0dXMgPSBicmNtZl9zZGlvZF9yZWFkbChzZGlvZCwgY29y ZS0+YmFzZSArIF9fc2RfcmVnKGludHN0YXR1cyksCisJCQkJCQkmZXJyKTsKCldBUk5JTkc6 IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMyMDk6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVs ZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6NDAyMjoKKwkJCQlTRFBD TV9QUk9UX1ZFUlNJT04gPDwgU01CX0RBVEFfVkVSU0lPTl9TSElGVCwgTlVMTCk7CgpDSEVD SzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMyMDk6IEZJTEU6 IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlv LmM6NDAyMjoKKwlicmNtZl9zZGlvZF93cml0ZWwoc2Rpb2QsIGNvcmUtPmJhc2UgKyBfX3Nk X3JlZyh0b3NibWFpbGJveGRhdGEpLAorCQkJCVNEUENNX1BST1RfVkVSU0lPTiA8PCBTTUJf REFUQV9WRVJTSU9OX1NISUZULCBOVUxMKTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1h dGNoIG9wZW4gcGFyZW50aGVzaXMKIzIyMDogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3Mv YnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzo0MDM0OgorCQlicmNtZl9zZGlv ZF93cml0ZWwoc2Rpb2QsIGNvcmUtPmJhc2UgKyBfX3NkX3JlZyhob3N0aW50bWFzayksCisJ CQkgICAgICAgYnVzLT5ob3N0aW50bWFzaywgTlVMTCk7Cgp0b3RhbDogMCBlcnJvcnMsIDQg d2FybmluZ3MsIDcgY2hlY2tzLCAxOTIgbGluZXMgY2hlY2tlZAoKTk9URTogRm9yIHNvbWUg b2YgdGhlIHJlcG9ydGVkIGRlZmVjdHMsIGNoZWNrcGF0Y2ggbWF5IGJlIGFibGUgdG8KICAg ICAgbWVjaGFuaWNhbGx5IGNvbnZlcnQgdG8gdGhlIHR5cGljYWwgc3R5bGUgdXNpbmcgLS1m aXggb3IgLS1maXgtaW5wbGFjZS4KCllvdXIgcGF0Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBw bGVhc2UgcmV2aWV3LgoKTk9URTogSWYgYW55IG9mIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBv c2l0aXZlcywgcGxlYXNlIHJlcG9ydAogICAgICB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBz ZWUgQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KY2hlY2tpbmcgcGF0Y2g6IDQ1NmM2OGIg YnJjbWZtYWM6IFJlbmFtZSBidXNjb3JlLT5jb3JlIGZvciBjb25zaXN0ZW5jeQpXQVJOSU5H OiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwojMzA6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVs ZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6MjQ3MzoKKwl2YWwgPSBi cmNtZl9zZGlvZF9yZWFkbChidXMtPnNkaW9kZXYsIGNvcmUtPmJhc2UgKyBfX3NkX3JlZyhp bnRzdGF0dXMpLCAmcmV0KTsKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMz OTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21m bWFjL3NkaW8uYzoyNDgzOgorCQlicmNtZl9zZGlvZF93cml0ZWwoYnVzLT5zZGlvZGV2LCBj b3JlLT5iYXNlICsgX19zZF9yZWcoaW50c3RhdHVzKSwKCkNIRUNLOiBBbGlnbm1lbnQgc2hv dWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzQwOiBGSUxFOiBkcml2ZXJzL25ldC93aXJl bGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjI0ODQ6CisJCWJyY21m X3NkaW9kX3dyaXRlbChidXMtPnNkaW9kZXYsIGNvcmUtPmJhc2UgKyBfX3NkX3JlZyhpbnRz dGF0dXMpLAorCQkJCQl2YWwsICZyZXQpOwoKdG90YWw6IDAgZXJyb3JzLCAyIHdhcm5pbmdz LCAxIGNoZWNrcywgMjUgbGluZXMgY2hlY2tlZAoKTk9URTogRm9yIHNvbWUgb2YgdGhlIHJl cG9ydGVkIGRlZmVjdHMsIGNoZWNrcGF0Y2ggbWF5IGJlIGFibGUgdG8KICAgICAgbWVjaGFu aWNhbGx5IGNvbnZlcnQgdG8gdGhlIHR5cGljYWwgc3R5bGUgdXNpbmcgLS1maXggb3IgLS1m aXgtaW5wbGFjZS4KCllvdXIgcGF0Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2 aWV3LgoKTk9URTogSWYgYW55IG9mIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywg cGxlYXNlIHJlcG9ydAogICAgICB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBzZWUgQ0hFQ0tQ QVRDSCBpbiBNQUlOVEFJTkVSUy4KY2hlY2tpbmcgcGF0Y2g6IDNiM2Q5ZTUgYnJjbWZtYWM6 IHN0YWJpbGlzZSB0aGUgdmFsdWUgb2YgLT5zYndhZCBpbiB1c2UgZm9yIHNvbWUgeGZlciBy b3V0aW5lcy4KV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzY2OiBGSUxFOiBk cml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5j OjM4MjQ6CisJLyogUGljayB1cCB0aGUgQ0hJUENPTU1PTiBjb3JlIGluZm8gc3RydWN0LCB1 c2VkIGZvciBidWxrIElPIGluIGJjbXNkaC5jICovCgp0b3RhbDogMCBlcnJvcnMsIDEgd2Fy bmluZ3MsIDAgY2hlY2tzLCA1MCBsaW5lcyBjaGVja2VkCgpOT1RFOiBGb3Igc29tZSBvZiB0 aGUgcmVwb3J0ZWQgZGVmZWN0cywgY2hlY2twYXRjaCBtYXkgYmUgYWJsZSB0bwogICAgICBt ZWNoYW5pY2FsbHkgY29udmVydCB0byB0aGUgdHlwaWNhbCBzdHlsZSB1c2luZyAtLWZpeCBv ciAtLWZpeC1pbnBsYWNlLgoKWW91ciBwYXRjaCBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFz ZSByZXZpZXcuCgpOT1RFOiBJZiBhbnkgb2YgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRp dmVzLCBwbGVhc2UgcmVwb3J0CiAgICAgIHRoZW0gdG8gdGhlIG1haW50YWluZXIsIHNlZSBD SEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgpjaGVja2luZyBwYXRjaDogYzhjODNlYyBicmNt Zm1hYzogQ29ycmVjdGx5IGhhbmRsZSBhY2Nlc3NlcyB0byBTRElPIGZ1bmMwCnRvdGFsOiAw IGVycm9ycywgMCB3YXJuaW5ncywgMCBjaGVja3MsIDIyIGxpbmVzIGNoZWNrZWQKCllvdXIg cGF0Y2ggaGFzIG5vIG9idmlvdXMgc3R5bGUgcHJvYmxlbXMgYW5kIGlzIHJlYWR5IGZvciBz dWJtaXNzaW9uLgpjaGVja2luZyBwYXRjaDogNjIzZGNiZSBicmNtZm1hYzogUmVtb3ZlIGZ1 bmMwIGZyb20gZnVuY3Rpb24gYXJyYXkKV0FSTklORzogJ2RvZXNudCcgbWF5IGJlIG1pc3Nw ZWxsZWQgLSBwZXJoYXBzICdkb2Vzbid0Jz8KIzY6IApMaW51eCBkb2VzbnQgcGFzcyB5b3Ug ZnVuYzAgYXMgYSBmdW5jdGlvbiB3aGVuIHByb2JpbmcgLSBpbnN0ZWFkCgpDSEVDSzogQWxp Z25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM1OTogRklMRTogZHJpdmVy cy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzozNzU1 OgorCWlmICgoc2Rpb2Rldi0+ZnVuY1sxXS0+ZGV2aWNlID09IFNESU9fREVWSUNFX0lEX0JS T0FEQ09NXzQzMzVfNDMzOSB8fAorCQlzZGlvZGV2LT5mdW5jWzFdLT5kZXZpY2UgPT0gU0RJ T19ERVZJQ0VfSURfQlJPQURDT01fNDMzOSkgJiYKCnRvdGFsOiAwIGVycm9ycywgMSB3YXJu aW5ncywgMSBjaGVja3MsIDcyIGxpbmVzIGNoZWNrZWQKCk5PVEU6IEZvciBzb21lIG9mIHRo ZSByZXBvcnRlZCBkZWZlY3RzLCBjaGVja3BhdGNoIG1heSBiZSBhYmxlIHRvCiAgICAgIG1l Y2hhbmljYWxseSBjb252ZXJ0IHRvIHRoZSB0eXBpY2FsIHN0eWxlIHVzaW5nIC0tZml4IG9y IC0tZml4LWlucGxhY2UuCgpZb3VyIHBhdGNoIGhhcyBzdHlsZSBwcm9ibGVtcywgcGxlYXNl IHJldmlldy4KCk5PVEU6IElmIGFueSBvZiB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2 ZXMsIHBsZWFzZSByZXBvcnQKICAgICAgdGhlbSB0byB0aGUgbWFpbnRhaW5lciwgc2VlIENI RUNLUEFUQ0ggaW4gTUFJTlRBSU5FUlMuCmNoZWNraW5nIHBhdGNoOiA5MGE4ZmI2IGJyY21m bWFjOiBSZXBsYWNlIGZ1bmN0aW9uIGluZGV4IHdpdGggZnVuY3Rpb24gcG9pbnRlcgpXQVJO SU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwojMjY6IEZJTEU6IGRyaXZlcnMvbmV0L3dp cmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzoxNTE6CisJCWRh dGEgfD0gU0RJT19DQ0NSX0lFTl9GVU5DMSB8IFNESU9fQ0NDUl9JRU5fRlVOQzIgfCBTRElP X0NDQ1JfSUVOX0JJVDA7CgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBh cmVudGhlc2lzCiMzNjogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJj bTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjI5NDoKK3N0YXRpYyBpbnQgYnJjbWZfc2Rpb2Rf YnVmZl9yZWFkKHN0cnVjdCBicmNtZl9zZGlvX2RldiAqc2Rpb2RldiwKKwkJCQlzdHJ1Y3Qg c2Rpb19mdW5jICpmdW5jLAoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBw YXJlbnRoZXNpcwojNDk6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2Jy Y204MDIxMS9icmNtZm1hYy9iY21zZGguYzozMDY6CisJCWVyciA9IHNkaW9fbWVtY3B5X2Zy b21pbyhmdW5jLCAoKHU4ICopKHBrdC0+ZGF0YSkpLCBhZGRyLAorCQkJCQkJcmVxX3N6KTsK CkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzY0OiBG SUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMv YmNtc2RoLmM6MzE4Ogorc3RhdGljIGludCBicmNtZl9zZGlvZF9idWZmX3dyaXRlKHN0cnVj dCBicmNtZl9zZGlvX2RldiAqc2Rpb2RldiwKKwkJCQlzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5j LAoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojOTU6 IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1h Yy9iY21zZGguYzozNDk6CitzdGF0aWMgaW50IGJyY21mX3NkaW9kX3NnbGlzdF9ydyhzdHJ1 Y3QgYnJjbWZfc2Rpb19kZXYgKnNkaW9kZXYsCisJCQkJCXN0cnVjdCBzZGlvX2Z1bmMgKmZ1 bmMsCgpDSEVDSzogc3BhY2VzIHByZWZlcnJlZCBhcm91bmQgdGhhdCAnPDwnIChjdHg6VnhW KQojMTI4OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEv YnJjbWZtYWMvYmNtc2RoLmM6NDE0OgorCW1tY19jbWQuYXJnIHw9IChmdW5jLT5udW0gPT0g MSkgPyAxPDwyNiA6IDA7CiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMxNjI6 IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1h Yy9iY21zZGguYzo1NzA6CisJCWVyciA9IGJyY21mX3NkaW9kX2J1ZmZfcmVhZChzZGlvZGV2 LCBzZGlvZGV2LT5mdW5jWzJdLCBhZGRyLAogCQkJCQkgcGt0cS0+bmV4dCk7CgpDSEVDSzog QWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMxNjk6IEZJTEU6IGRy aXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGgu Yzo1NzY6CisJCWVyciA9IGJyY21mX3NkaW9kX2J1ZmZfcmVhZChzZGlvZGV2LCBzZGlvZGV2 LT5mdW5jWzJdLCBhZGRyLAogCQkJCQkgZ2xvbV9za2IpOwoKV0FSTklORzogbGluZSBvdmVy IDgwIGNoYXJhY3RlcnMKIzE3NzogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRj b20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjU4NToKKwkJZXJyID0gYnJjbWZfc2Rp b2Rfc2dsaXN0X3J3KHNkaW9kZXYsIHNkaW9kZXYtPmZ1bmNbMl0sIGZhbHNlLCBhZGRyLAoK V0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzE4NjogRklMRTogZHJpdmVycy9u ZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjYxNzoK KwkJZXJyID0gYnJjbWZfc2Rpb2RfYnVmZl93cml0ZShzZGlvZGV2LCBzZGlvZGV2LT5mdW5j WzJdLCBhZGRyLCBteXBrdCk7CgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVu IHBhcmVudGhlc2lzCiMxOTY6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29t L2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzo2NDQ6CisJCQllcnIgPSBicmNtZl9zZGlv ZF9idWZmX3dyaXRlKHNkaW9kZXYsIHNkaW9kZXYtPmZ1bmNbMl0sCiAJCQkJCQkgYWRkciwg c2tiKTsKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMyMDI6IEZJTEU6IGRy aXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGgu Yzo2NDk6CisJCWVyciA9IGJyY21mX3NkaW9kX3NnbGlzdF9ydyhzZGlvZGV2LCBzZGlvZGV2 LT5mdW5jWzJdLCB0cnVlLCBhZGRyLAoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2gg b3BlbiBwYXJlbnRoZXNpcwojMjEyOiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9h ZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6NzAwOgorCQkJZXJyID0gYnJjbWZf c2Rpb2RfYnVmZl93cml0ZShzZGlvZGV2LCBzZGlvZGV2LT5mdW5jWzFdLAogCQkJCQkJICAg ICAgc2RhZGRyLCBwa3QpOwoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBw YXJlbnRoZXNpcwojMjE3OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9i cmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6NzA0OgorCQkJZXJyID0gYnJjbWZfc2Rpb2Rf YnVmZl9yZWFkKHNkaW9kZXYsIHNkaW9kZXYtPmZ1bmNbMV0sCiAJCQkJCQkgICAgICBzZGFk ZHIsIHBrdCk7CgpDSEVDSzogUHJlZmVyIHVzaW5nIHRoZSBCSVQgbWFjcm8KIzM0NDogRklM RTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Nk aW8uaDo0ODoKKyNkZWZpbmUgU0RJT19DQ0NSX0lFTl9CSVQwCQkoMSA8PCAwKQoKQ0hFQ0s6 IFByZWZlciB1c2luZyB0aGUgQklUIG1hY3JvCiMzNDU6IEZJTEU6IGRyaXZlcnMvbmV0L3dp cmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmg6NDk6CisjZGVmaW5l IFNESU9fQ0NDUl9JRU5fRlVOQzEJCSgxIDw8IDEpCgpDSEVDSzogUHJlZmVyIHVzaW5nIHRo ZSBCSVQgbWFjcm8KIzM0NjogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20v YnJjbTgwMjExL2JyY21mbWFjL3NkaW8uaDo1MDoKKyNkZWZpbmUgU0RJT19DQ0NSX0lFTl9G VU5DMgkJKDEgPDwgMikKCnRvdGFsOiAwIGVycm9ycywgNCB3YXJuaW5ncywgMTMgY2hlY2tz LCAzMDIgbGluZXMgY2hlY2tlZAoKTk9URTogRm9yIHNvbWUgb2YgdGhlIHJlcG9ydGVkIGRl ZmVjdHMsIGNoZWNrcGF0Y2ggbWF5IGJlIGFibGUgdG8KICAgICAgbWVjaGFuaWNhbGx5IGNv bnZlcnQgdG8gdGhlIHR5cGljYWwgc3R5bGUgdXNpbmcgLS1maXggb3IgLS1maXgtaW5wbGFj ZS4KCllvdXIgcGF0Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3LgoKTk9U RTogSWYgYW55IG9mIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgcGxlYXNlIHJl cG9ydAogICAgICB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBzZWUgQ0hFQ0tQQVRDSCBpbiBN QUlOVEFJTkVSUy4KY2hlY2tpbmcgcGF0Y2g6IDQ1ZDAzNzMgYnJjbWZtYWM6IFJlbW92ZSBh cnJheSBvZiBmdW5jdGlvbnMKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBw YXJlbnRoZXNpcwojMTI0OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9i cmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6NTcwOgorCQllcnIgPSBicmNtZl9zZGlvZF9i dWZmX3JlYWQoc2Rpb2Rldiwgc2Rpb2Rldi0+ZnVuYzIsIGFkZHIsCiAJCQkJCSBwa3RxLT5u ZXh0KTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMK IzEzMTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2Jy Y21mbWFjL2JjbXNkaC5jOjU3NjoKKwkJZXJyID0gYnJjbWZfc2Rpb2RfYnVmZl9yZWFkKHNk aW9kZXYsIHNkaW9kZXYtPmZ1bmMyLCBhZGRyLAogCQkJCQkgZ2xvbV9za2IpOwoKV0FSTklO RzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzEzOTogRklMRTogZHJpdmVycy9uZXQvd2ly ZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjU4NToKKwkJZXJy ID0gYnJjbWZfc2Rpb2Rfc2dsaXN0X3J3KHNkaW9kZXYsIHNkaW9kZXYtPmZ1bmMyLCBmYWxz ZSwgYWRkciwKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMxNDg6IEZJTEU6 IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21z ZGguYzo2MTc6CisJCWVyciA9IGJyY21mX3NkaW9kX2J1ZmZfd3JpdGUoc2Rpb2Rldiwgc2Rp b2Rldi0+ZnVuYzIsIGFkZHIsIG15cGt0KTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1h dGNoIG9wZW4gcGFyZW50aGVzaXMKIzE1ODogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3Mv YnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjY0NDoKKwkJCWVyciA9IGJy Y21mX3NkaW9kX2J1ZmZfd3JpdGUoc2Rpb2Rldiwgc2Rpb2Rldi0+ZnVuYzIsCiAJCQkJCQkg YWRkciwgc2tiKTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50 aGVzaXMKIzE4MzogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgw MjExL2JyY21mbWFjL2JjbXNkaC5jOjcwMDoKKwkJCWVyciA9IGJyY21mX3NkaW9kX2J1ZmZf d3JpdGUoc2Rpb2Rldiwgc2Rpb2Rldi0+ZnVuYzEsCiAJCQkJCQkgICAgICBzZGFkZHIsIHBr dCk7CgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiMx ODg6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNt Zm1hYy9iY21zZGguYzo3MDQ6CisJCQllcnIgPSBicmNtZl9zZGlvZF9idWZmX3JlYWQoc2Rp b2Rldiwgc2Rpb2Rldi0+ZnVuYzEsCiAJCQkJCQkgICAgICBzZGFkZHIsIHBrdCk7CgpDSEVD SzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM4MzA6IEZJTEU6 IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlv LmM6Mzc1NToKKwlpZiAoKHNkaW9kZXYtPmZ1bmMxLT5kZXZpY2UgPT0gU0RJT19ERVZJQ0Vf SURfQlJPQURDT01fNDMzNV80MzM5IHx8CisJCXNkaW9kZXYtPmZ1bmMxLT5kZXZpY2UgPT0g U0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMzOSkgJiYKCnRvdGFsOiAwIGVycm9ycywgMiB3 YXJuaW5ncywgNiBjaGVja3MsIDkzNSBsaW5lcyBjaGVja2VkCgpOT1RFOiBGb3Igc29tZSBv ZiB0aGUgcmVwb3J0ZWQgZGVmZWN0cywgY2hlY2twYXRjaCBtYXkgYmUgYWJsZSB0bwogICAg ICBtZWNoYW5pY2FsbHkgY29udmVydCB0byB0aGUgdHlwaWNhbCBzdHlsZSB1c2luZyAtLWZp eCBvciAtLWZpeC1pbnBsYWNlLgoKWW91ciBwYXRjaCBoYXMgc3R5bGUgcHJvYmxlbXMsIHBs ZWFzZSByZXZpZXcuCgpOT1RFOiBJZiBhbnkgb2YgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9z aXRpdmVzLCBwbGVhc2UgcmVwb3J0CiAgICAgIHRoZW0gdG8gdGhlIG1haW50YWluZXIsIHNl ZSBDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgpjaGVja2luZyBwYXRjaDogYWQxNjE2YyBi cmNtZm1hYzogUmVkdWNlIHRoZSBub2lzZSBmcm9tIHJlcGVhdGVkbHkgZGVyZWZlcmVuY2lu ZyBjb21tb24gcG9pbnRlcnMKV0FSTklORzogVXNlIGEgc2luZ2xlIHNwYWNlIGFmdGVyIFRv OgojMTM6IAp0bzoKCkVSUk9SOiBVbnJlY29nbml6ZWQgZW1haWwgYWRkcmVzczogJycKIzEz OiAKdG86CgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwojMjcwOiBGSUxFOiBk cml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2Ro LmM6NzA1OgorCQkJZXJyID0gYnJjbWZfc2Rpb2RfYnVmZl93cml0ZShzZGlvZGV2LCBmdW5j MSwgc2RhZGRyLCBwa3QpOwoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzI3 NTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21m bWFjL2JjbXNkaC5jOjcwODoKKwkJCWVyciA9IGJyY21mX3NkaW9kX2J1ZmZfcmVhZChzZGlv ZGV2LCBmdW5jMSwgc2RhZGRyLCBwa3QpOwoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJh Y3RlcnMKIzQ4NjogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgw MjExL2JyY21mbWFjL3NkaW8uYzo3MDE6CisJCXJkX3ZhbCA9IGJyY21mX3NkaW9kX3JlYWRi KHNkaW9kZXYsIFNCU0RJT19GVU5DMV9TTEVFUENTUiwgJmVycik7CgpXQVJOSU5HOiBsaW5l IG92ZXIgODAgY2hhcmFjdGVycwojNDk1OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9i cm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjcxMToKKwkJYnJjbWZfc2Rpb2Rf d3JpdGViKHNkaW9kZXYsIFNCU0RJT19GVU5DMV9TTEVFUENTUiwgd3JfdmFsLCAmZXJyKTsK CldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiM1MTI6IEZJTEU6IGRyaXZlcnMv bmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6NzQ4Ogor CQlicmNtZl9zZGlvZF93cml0ZWIoc2Rpb2RldiwgU0JTRElPX0ZVTkMxX0NISVBDTEtDU1Is IGNsa3JlcSwgJmVycik7CgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwojNTIw OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZt YWMvc2Rpby5jOjc1NToKKwkJY2xrY3RsID0gYnJjbWZfc2Rpb2RfcmVhZGIoc2Rpb2Rldiwg U0JTRElPX0ZVTkMxX0NISVBDTEtDU1IsICZlcnIpOwoKQ0hFQ0s6IEFsaWdubWVudCBzaG91 bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojNTMwOiBGSUxFOiBkcml2ZXJzL25ldC93aXJl bGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjc2NToKKwkJCWRldmN0 bCA9IGJyY21mX3NkaW9kX3JlYWRiKHNkaW9kZXYsIFNCU0RJT19ERVZJQ0VfQ1RMLAogCQkJ CQkJCSZlcnIpOwoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRo ZXNpcwojNTM5OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAy MTEvYnJjbWZtYWMvc2Rpby5jOjc3NDoKKwkJCWJyY21mX3NkaW9kX3dyaXRlYihzZGlvZGV2 LCBTQlNESU9fREVWSUNFX0NUTCwgZGV2Y3RsLAogCQkJCQkJJmVycik7CgpDSEVDSzogQWxp Z25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM1NDg6IEZJTEU6IGRyaXZl cnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6Nzgy OgorCQkJZGV2Y3RsID0gYnJjbWZfc2Rpb2RfcmVhZGIoc2Rpb2RldiwgU0JTRElPX0RFVklD RV9DVEwsCiAJCQkJCQkJJmVycik7CgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBv cGVuIHBhcmVudGhlc2lzCiM1NTI6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2Fk Y29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6Nzg1OgorCQkJYnJjbWZfc2Rpb2Rfd3Jp dGViKHNkaW9kZXYsIFNCU0RJT19ERVZJQ0VfQ1RMLCBkZXZjdGwsCiAJCQkJCQkmZXJyKTsK CkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzU3MDog RklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFj L3NkaW8uYzo4Mjc6CisJCQlkZXZjdGwgPSBicmNtZl9zZGlvZF9yZWFkYihzZGlvZGV2LCBT QlNESU9fREVWSUNFX0NUTCwKIAkJCQkJCQkmZXJyKTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hv dWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzU3NDogRklMRTogZHJpdmVycy9uZXQvd2ly ZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzo4MzA6CisJCQlicmNt Zl9zZGlvZF93cml0ZWIoc2Rpb2RldiwgU0JTRElPX0RFVklDRV9DVEwsIGRldmN0bCwKIAkJ CQkJCSZlcnIpOwoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzU3OTogRklM RTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Nk aW8uYzo4MzQ6CisJCWJyY21mX3NkaW9kX3dyaXRlYihzZGlvZGV2LCBTQlNESU9fRlVOQzFf Q0hJUENMS0NTUiwgY2xrcmVxLCAmZXJyKTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1h dGNoIG9wZW4gcGFyZW50aGVzaXMKIzYwMzogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3Mv YnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzo5MzE6CisJCQkJYnJjbWZfc2Rp b2Rfd3JpdGViKHNkaW9kZXYsCiAJCQkJCQkgIFNCU0RJT19GVU5DMV9DSElQQ0xLQ1NSLAoK Q0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojNjc2OiBG SUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMv c2Rpby5jOjEwNzA6CisJCWJyY21mX3NkaW9kX3dyaXRlbChzZGlvZGV2LCBjb3JlLT5iYXNl ICsgX19zZF9yZWcodG9zYm1haWxib3gpLAogCQkJCQlTTUJfSU5UX0FDSywgJnJldCk7CgpD SEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhlc2lzCiM3MTU6IEZJ TEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9z ZGlvLmM6MTE4MjoKKwkJYnJjbWZfc2Rpb2Rfd3JpdGVsKHNkaW9kZXYsIGNvcmUtPmJhc2Ug KyBfX3NkX3JlZyh0b3NibWFpbGJveCksCiAJCQkJCVNNQl9OQUssICZlcnIpOwoKV0FSTklO RzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzEwMTA6IEZJTEU6IGRyaXZlcnMvbmV0L3dp cmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6MjQ4OToKKwl2YWwg PSBicmNtZl9zZGlvZF9yZWFkbChzZGlvZGV2LCBjb3JlLT5iYXNlICsgX19zZF9yZWcoaW50 c3RhdHVzKSwgJnJldCk7CgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwojMTAy OTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21m bWFjL3NkaW8uYzoyNTAxOgorCWJyY21mX3NkaW9kX3dyaXRlbChzZGlvZGV2LCBjb3JlLT5i YXNlICsgX19zZF9yZWcoaW50c3RhdHVzKSwgdmFsLCAmcmV0KTsKCldBUk5JTkc6IGxpbmUg b3ZlciA4MCBjaGFyYWN0ZXJzCiMxMDY1OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9i cm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjI1MzQ6CisJCWNsa2N0bCA9IGJy Y21mX3NkaW9kX3JlYWRiKHNkaW9kZXYsIFNCU0RJT19GVU5DMV9DSElQQ0xLQ1NSLCAmZXJy KTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzEw NzM6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNt Zm1hYy9zZGlvLmM6MjU0MToKKwkJCWRldmN0bCA9IGJyY21mX3NkaW9kX3JlYWRiKHNkaW9k ZXYsIFNCU0RJT19ERVZJQ0VfQ1RMLAogCQkJCQkJCSZlcnIpOwoKQ0hFQ0s6IEFsaWdubWVu dCBzaG91bGQgbWF0Y2ggb3BlbiBwYXJlbnRoZXNpcwojMTA3NzogRklMRTogZHJpdmVycy9u ZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzoyNTQ0Ogor CQkJYnJjbWZfc2Rpb2Rfd3JpdGViKHNkaW9kZXYsIFNCU0RJT19ERVZJQ0VfQ1RMLCBkZXZj dGwsCiAJCQkJCQkmZXJyKTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4g cGFyZW50aGVzaXMKIzEwODY6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29t L2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6MjU2ODoKKwkJYnJjbWZfc2Rpb2Rfd3JpdGVs KHNkaW9kZXYsIGNvcmUtPmJhc2UgKyBfX3NkX3JlZyhpbnRzdGF0dXMpLAogCQkJCSAgICAg ICBJX0hNQl9GQ19DSEFOR0UsICZlcnIpOwoKQ0hFQ0s6IEFsaWdubWVudCBzaG91bGQgbWF0 Y2ggb3BlbiBwYXJlbnRoZXNpcwojMTA5MTogRklMRTogZHJpdmVycy9uZXQvd2lyZWxlc3Mv YnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzoyNTcxOgorCQluZXdzdGF0dXMg PSBicmNtZl9zZGlvZF9yZWFkbChzZGlvZGV2LAorCQkJCQljb3JlLT5iYXNlICsgX19zZF9y ZWcoaW50c3RhdHVzKSwKCldBUk5JTkc6IGxpbmUgb3ZlciA4MCBjaGFyYWN0ZXJzCiMxMjA5 OiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZt YWMvc2Rpby5jOjI5MTI6CisJcnYgPSBicmNtZl9zZGlvZF9yYW1ydyhzZGlvZGV2LCBmYWxz ZSwgYWRkciwgKHU4ICopJnNoX3ZhbCwgc2l6ZW9mKHUzMikpOwoKV0FSTklORzogbGluZSBv dmVyIDgwIGNoYXJhY3RlcnMKIzEyMTc6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jy b2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6MjkxODoKKwlydiA9IGJyY21mX3Nk aW9kX3JhbXJ3KHNkaW9kZXYsIGZhbHNlLCBhZGRyLCAodTggKikmc2hfdmFsLCBzaXplb2Yo dTMyKSk7CgpXQVJOSU5HOiBsaW5lIG92ZXIgODAgY2hhcmFjdGVycwojMTIyNTogRklMRTog ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8u YzoyOTI0OgorCXJ2ID0gYnJjbWZfc2Rpb2RfcmFtcncoc2Rpb2RldiwgZmFsc2UsIGFkZHIs ICh1OCAqKSZzaF92YWwsIHNpemVvZih1MzIpKTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxk IG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzEzNjM6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVs ZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6MzM1NDoKKwlicmNtZl9z ZGlvZF9mdW5jMF93YihzZGlvZGV2LCBTRElPX0NDQ1JfQlJDTV9DQVJEQ0FQLAogCQkJICAo U0RJT19DQ0NSX0JSQ01fQ0FSRENBUF9DTUQxNF9TVVBQT1JUIHwKCkNIRUNLOiBBbGlnbm1l bnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzEzNzI6IEZJTEU6IGRyaXZlcnMv bmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6MzM2MzoK KwlicmNtZl9zZGlvZF93cml0ZWIoc2Rpb2RldiwgU0JTRElPX0ZVTkMxX0NISVBDTEtDU1Is IFNCU0RJT19GT1JDRV9IVCwKIAkJCQkmZXJyKTsKCkNIRUNLOiBBbGlnbm1lbnQgc2hvdWxk IG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzE0NDc6IEZJTEU6IGRyaXZlcnMvbmV0L3dpcmVs ZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6MzU2NDoKKwkJCQlkZXZw ZW5kID0gYnJjbWZfc2Rpb2RfZnVuYzBfcmIoc2Rpb2RldiwKIAkJCQkJCQkgICAgU0RJT19D Q0NSX0lOVHgsCgpDSEVDSzogQWxpZ25tZW50IHNob3VsZCBtYXRjaCBvcGVuIHBhcmVudGhl c2lzCiMxNTgyOiBGSUxFOiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAy MTEvYnJjbWZtYWMvc2Rpby5jOjQwNTk6CisJYnJjbWZfc2Rpb2Rfd3JpdGVsKHNkaW9kZXYs IGNvcmUtPmJhc2UgKyBfX3NkX3JlZyh0b3NibWFpbGJveGRhdGEpLAogCQkJCVNEUENNX1BS T1RfVkVSU0lPTiA8PCBTTUJfREFUQV9WRVJTSU9OX1NISUZULCBOVUxMKTsKCkNIRUNLOiBB bGlnbm1lbnQgc2hvdWxkIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMKIzE1OTU6IEZJTEU6IGRy aXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6 NDA3MToKKwkJYnJjbWZfc2Rpb2Rfd3JpdGVsKHNkaW9kZXYsIGNvcmUtPmJhc2UgKyBfX3Nk X3JlZyhob3N0aW50bWFzayksCiAJCQkgICAgICAgYnVzLT5ob3N0aW50bWFzaywgTlVMTCk7 Cgp0b3RhbDogMSBlcnJvcnMsIDE0IHdhcm5pbmdzLCAxOCBjaGVja3MsIDE2MDIgbGluZXMg Y2hlY2tlZAoKTk9URTogRm9yIHNvbWUgb2YgdGhlIHJlcG9ydGVkIGRlZmVjdHMsIGNoZWNr cGF0Y2ggbWF5IGJlIGFibGUgdG8KICAgICAgbWVjaGFuaWNhbGx5IGNvbnZlcnQgdG8gdGhl IHR5cGljYWwgc3R5bGUgdXNpbmcgLS1maXggb3IgLS1maXgtaW5wbGFjZS4KCllvdXIgcGF0 Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3LgoKTk9URTogSWYgYW55IG9m IHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgcGxlYXNlIHJlcG9ydAogICAgICB0 aGVtIHRvIHRoZSBtYWludGFpbmVyLCBzZWUgQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4K RG9uZSEK --------------BBF16E507860FC167A88B674--