From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.groups.io with SMTP id smtpd.web10.11403.1623154388095847461 for ; Tue, 08 Jun 2021 05:13:08 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Tp8txbgI; spf=pass (domain: redhat.com, ip: 170.10.133.124, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1623154387; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jg5+slsABkMxS/nSRIJ/JQrmlUSf1HD6srJZF4Vb+sE=; b=Tp8txbgIVPkJy32NRPCtvfz7c2MpvBx3sKODXy2UEV2KFHMedjR1s/f8FPxNXuPJDtF92A bQ3eXh5dy2k6fPyq1Nj7n36V4lhSOt26DQdHLWuv8Odax59bjvg8Qxu6Zt+UCo011GbVfS mZL8eOY+ILUWeXXX2ymerAFTARw1n0w= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-240-a_2uocLcONqwVF9F83sqFg-1; Tue, 08 Jun 2021 08:13:04 -0400 X-MC-Unique: a_2uocLcONqwVF9F83sqFg-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9D22D106BAA8; Tue, 8 Jun 2021 12:13:03 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-113-27.ams2.redhat.com [10.36.113.27]) by smtp.corp.redhat.com (Postfix) with ESMTP id 39CA5620DE; Tue, 8 Jun 2021 12:13:02 +0000 (UTC) From: "Laszlo Ersek" To: edk2-devel-groups-io Cc: Jiaxin Wu , Maciej Rabeda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Siyuan Fu Subject: [PUBLIC edk2 PATCH v2 01/10] NetworkPkg/IScsiDxe: wrap IScsiCHAP source files to 80 characters Date: Tue, 8 Jun 2021 14:12:50 +0200 Message-Id: <20210608121259.32451-2-lersek@redhat.com> In-Reply-To: <20210608121259.32451-1-lersek@redhat.com> References: <20210608121259.32451-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lersek@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 V29ya2luZyB3aXRoIG92ZXJsb25nIGxpbmVzIGlzIGRpZmZpY3VsdCBmb3IgbWU7IHJld3JhcCB0 aGUgQ0hBUC1yZWxhdGVkCnNvdXJjZSBmaWxlcyBpbiBJU2NzaUR4ZSB0byA4MCBjaGFyYWN0ZXJz IHdpZHRoLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMuCgpDYzogSmlheGluIFd1IDxqaWF4aW4ud3VA aW50ZWwuY29tPgpDYzogTWFjaWVqIFJhYmVkYSA8bWFjaWVqLnJhYmVkYUBsaW51eC5pbnRlbC5j b20+CkNjOiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8cGhpbG1kQHJlZGhhdC5jb20+CkNjOiBT aXl1YW4gRnUgPHNpeXVhbi5mdUBpbnRlbC5jb20+ClJlZjogaHR0cHM6Ly9idWd6aWxsYS50aWFu b2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU2ClNpZ25lZC1vZmYtYnk6IExhc3psbyBFcnNl ayA8bGVyc2VrQHJlZGhhdC5jb20+ClJldmlld2VkLWJ5OiBNYWNpZWogUmFiZWRhIDxtYWNpZWou cmFiZWRhQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFBoaWxpcHBlIE1hdGhpZXUtRGF1 ZMOpIDxwaGlsbWRAcmVkaGF0LmNvbT4KLS0tCiBOZXR3b3JrUGtnL0lTY3NpRHhlL0lTY3NpQ0hB UC5oIHwgIDMgKy0KIE5ldHdvcmtQa2cvSVNjc2lEeGUvSVNjc2lDSEFQLmMgfCA5MCArKysrKysr KysrKysrKystLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCAyMiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9OZXR3b3JrUGtnL0lTY3NpRHhlL0lTY3NpQ0hBUC5oIGIv TmV0d29ya1BrZy9JU2NzaUR4ZS9JU2NzaUNIQVAuaAppbmRleCAxNDBiYmEwZGNkNzYuLjVlNTlm YjY3OGJkNyAxMDA2NDQKLS0tIGEvTmV0d29ya1BrZy9JU2NzaUR4ZS9JU2NzaUNIQVAuaAorKysg Yi9OZXR3b3JrUGtnL0lTY3NpRHhlL0lTY3NpQ0hBUC5oCkBAIC03MiwzMSArNzIsMzIgQEAgdHlw ZWRlZiBzdHJ1Y3QgX0lTQ1NJX0NIQVBfQVVUSF9EQVRBIHsKIA0KICAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICBUaGUgTG9naW4gUmVzcG9uc2UgcGFzc2VkIHRoZSBDSEFQIHZhbGlkYXRp b24uDQogICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTIEZhaWxlZCB0byBhbGxvY2F0ZSBt ZW1vcnkuDQogICBAcmV0dmFsIEVGSV9QUk9UT0NPTF9FUlJPUiAgIFNvbWUga2luZCBvZiBwcm90 b2NvbCBlcnJvciBvY2N1cnJlZC4NCiAgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgT3Ro ZXIgZXJyb3JzIGFzIGluZGljYXRlZC4NCiANCiAqKi8NCiBFRklfU1RBVFVTDQogSVNjc2lDSEFQ T25Sc3BSZWNlaXZlZCAoDQogICBJTiBJU0NTSV9DT05ORUNUSU9OICAqQ29ubg0KICAgKTsNCiAv KioNCiAgIFRoaXMgZnVuY3Rpb24gZmlsbHMgdGhlIENIQVAgYXV0aGVudGljYXRpb24gaW5mb3Jt YXRpb24gaW50byB0aGUgbG9naW4gUERVDQogICBkdXJpbmcgdGhlIHNlY3VyaXR5IG5lZ290aWF0 aW9uIHN0YWdlIGluIHRoZSBpU0NTSSBjb25uZWN0aW9uIGxvZ2luLg0KIA0KICAgQHBhcmFtW2lu XSAgICAgICBDb25uICAgICAgICBUaGUgaVNDU0kgY29ubmVjdGlvbi4NCiAgIEBwYXJhbVtpbiwg b3V0XSAgUGR1ICAgICAgICAgVGhlIFBEVSB0byBzZW5kIG91dC4NCiANCiAgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIEFsbCBjaGVjayBwYXNzZWQgYW5kIHRoZSBwaGFzZS1yZWxhdGVk IENIQVANCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uIGlu Zm8gaXMgZmlsbGVkIGludG8gdGhlIGlTQ1NJIFBEVS4NCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGF1dGhlbnRpY2F0aW9uIGluZm8gaXMgZmlsbGVkIGludG8gdGhlIGlTQ1NJDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRFUuDQogICBAcmV0dmFsIEVGSV9PVVRf T0ZfUkVTT1VSQ0VTICBGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5Lg0KICAgQHJldHZhbCBFRklf UFJPVE9DT0xfRVJST1IgICAgU29tZSBraW5kIG9mIHByb3RvY29sIGVycm9yIG9jY3VycmVkLg0K IA0KICoqLw0KIEVGSV9TVEFUVVMNCiBJU2NzaUNIQVBUb1NlbmRSZXEgKA0KICAgSU4gICAgICBJ U0NTSV9DT05ORUNUSU9OICAqQ29ubiwNCiAgIElOIE9VVCAgTkVUX0JVRiAgICAgICAgICAgKlBk dQ0KICAgKTsNCiANCiAjZW5kaWYNCmRpZmYgLS1naXQgYS9OZXR3b3JrUGtnL0lTY3NpRHhlL0lT Y3NpQ0hBUC5jIGIvTmV0d29ya1BrZy9JU2NzaUR4ZS9JU2NzaUNIQVAuYwppbmRleCAzNTVjNmYx MjlmNjguLmNiYmM1NmFlNWI0MyAxMDA2NDQKLS0tIGEvTmV0d29ya1BrZy9JU2NzaUR4ZS9JU2Nz aUNIQVAuYworKysgYi9OZXR3b3JrUGtnL0lTY3NpRHhlL0lTY3NpQ0hBUC5jCkBAIC0xLDQyICsx LDQ1IEBACiAvKiogQGZpbGUNCi0gIFRoaXMgZmlsZSBpcyBmb3IgQ2hhbGxlbmdlLUhhbmRzaGFr ZSBBdXRoZW50aWNhdGlvbiBQcm90b2NvbCAoQ0hBUCkgQ29uZmlndXJhdGlvbi4NCisgIFRoaXMg ZmlsZSBpcyBmb3IgQ2hhbGxlbmdlLUhhbmRzaGFrZSBBdXRoZW50aWNhdGlvbiBQcm90b2NvbCAo Q0hBUCkNCisgIENvbmZpZ3VyYXRpb24uDQogDQogQ29weXJpZ2h0IChjKSAyMDA0IC0gMjAxOCwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQogDQogKiovDQogDQogI2luY2x1ZGUg IklTY3NpSW1wbC5oIg0KIA0KIC8qKg0KICAgSW5pdGlhdG9yIGNhbGN1bGF0ZXMgaXRzIG93biBl eHBlY3RlZCBoYXNoIHZhbHVlLg0KIA0KICAgQHBhcmFtW2luXSAgIENoYXBJZGVudGlmaWVyICAg ICBpU0NTSSBDSEFQIGlkZW50aWZpZXIgc2VudCBieSBhdXRoZW50aWNhdG9yLg0KICAgQHBhcmFt W2luXSAgIENoYXBTZWNyZXQgICAgICAgICBpU0NTSSBDSEFQIHNlY3JldCBvZiB0aGUgYXV0aGVu dGljYXRvci4NCiAgIEBwYXJhbVtpbl0gICBTZWNyZXRMZW5ndGggICAgICAgVGhlIGxlbmd0aCBv ZiBpU0NTSSBDSEFQIHNlY3JldC4NCiAgIEBwYXJhbVtpbl0gICBDaGFwQ2hhbGxlbmdlICAgICAg VGhlIGNoYWxsZW5nZSBtZXNzYWdlIHNlbnQgYnkgYXV0aGVudGljYXRvci4NCiAgIEBwYXJhbVtp bl0gICBDaGFsbGVuZ2VMZW5ndGggICAgVGhlIGxlbmd0aCBvZiBpU0NTSSBDSEFQIGNoYWxsZW5n ZSBtZXNzYWdlLg0KICAgQHBhcmFtW291dF0gIENoYXBSZXNwb25zZSAgICAgICBUaGUgY2FsY3Vs YXRpb24gb2YgdGhlIGV4cGVjdGVkIGhhc2ggdmFsdWUuDQogDQotICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICAgIFRoZSBleHBlY3RlZCBoYXNoIHZhbHVlIHdhcyBjYWxjdWxhdGVkbHkg c3VjY2Vzc2Z1bGx5Lg0KLSAgQHJldHZhbCBFRklfUFJPVE9DT0xfRVJST1IgICAgICBUaGUgbGVu Z3RoIG9mIHRoZSBzZWNyZXQgc2hvdWxkIGJlIGF0IGxlYXN0IHRoZQ0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsZW5ndGggb2YgdGhlIGhhc2ggdmFsdWUgZm9yIHRoZSBoYXNo aW5nIGFsZ29yaXRobSBjaG9zZW4uDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAg IFRoZSBleHBlY3RlZCBoYXNoIHZhbHVlIHdhcyBjYWxjdWxhdGVkbHkNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5Lg0KKyAgQHJldHZhbCBFRklfUFJPVE9D T0xfRVJST1IgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBzZWNyZXQgc2hvdWxkIGJlIGF0IGxlYXN0 DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsZW5ndGggb2YgdGhlIGhh c2ggdmFsdWUgZm9yIHRoZSBoYXNoaW5nDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFsZ29yaXRobSBjaG9zZW4uDQogICBAcmV0dmFsIEVGSV9QUk9UT0NPTF9FUlJPUiAgICAg IE1ENSBoYXNoIG9wZXJhdGlvbiBmYWlsLg0KICAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNF UyAgICBGYWlsIHRvIGFsbG9jYXRlIHJlc291cmNlIHRvIGNvbXBsZXRlIE1ENS4NCiANCiAqKi8N CiBFRklfU1RBVFVTDQogSVNjc2lDSEFQQ2FsY3VsYXRlUmVzcG9uc2UgKA0KICAgSU4gIFVJTlQz MiAgQ2hhcElkZW50aWZpZXIsDQogICBJTiAgQ0hBUjggICAqQ2hhcFNlY3JldCwNCiAgIElOICBV SU5UMzIgIFNlY3JldExlbmd0aCwNCiAgIElOICBVSU5UOCAgICpDaGFwQ2hhbGxlbmdlLA0KICAg SU4gIFVJTlQzMiAgQ2hhbGxlbmdlTGVuZ3RoLA0KICAgT1VUIFVJTlQ4ICAgKkNoYXBSZXNwb25z ZQ0KICAgKQ0KIHsNCiAgIFVJTlROICAgICAgIE1kNUNvbnRleHRTaXplOw0KICAgVk9JRCAgICAg ICAgKk1kNUN0eDsNCiAgIENIQVI4ICAgICAgIElkQnl0ZVsxXTsNCiAgIEVGSV9TVEFUVVMgIFN0 YXR1czsNCiANCkBAIC03OCw0MCArODEsNDIgQEAgSVNjc2lDSEFQQ2FsY3VsYXRlUmVzcG9uc2Ug KAogICAgIGdvdG8gRXhpdDsNCiAgIH0NCiANCiAgIGlmIChNZDVGaW5hbCAoTWQ1Q3R4LCBDaGFw UmVzcG9uc2UpKSB7DQogICAgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KICAgfQ0KIA0KIEV4aXQ6 DQogICBGcmVlUG9vbCAoTWQ1Q3R4KTsNCiAgIHJldHVybiBTdGF0dXM7DQogfQ0KIA0KIC8qKg0K ICAgVGhlIGluaXRpYXRvciBjaGVja3MgdGhlIENIQVAgcmVzcG9uc2UgcmVwbGllZCBieSB0YXJn ZXQgYWdhaW5zdCBpdHMgb3duDQogICBjYWxjdWxhdGlvbiBvZiB0aGUgZXhwZWN0ZWQgaGFzaCB2 YWx1ZS4NCiANCiAgIEBwYXJhbVtpbl0gICBBdXRoRGF0YSAgICAgICAgICAgICBpU0NTSSBDSEFQ IGF1dGhlbnRpY2F0aW9uIGRhdGEuDQogICBAcGFyYW1baW5dICAgVGFyZ2V0UmVzcG9uc2UgICAg ICAgVGhlIHJlc3BvbnNlIGZyb20gdGFyZ2V0Lg0KIA0KLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgICAgIFRoZSByZXNwb25zZSBmcm9tIHRhcmdldCBwYXNzZWQgYXV0aGVudGljYXRp b24uDQotICBAcmV0dmFsIEVGSV9TRUNVUklUWV9WSU9MQVRJT04gICAgVGhlIHJlc3BvbnNlIGZy b20gdGFyZ2V0IHdhcyBub3QgZXhwZWN0ZWQgdmFsdWUuDQorICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgICAgICAgICAgVGhlIHJlc3BvbnNlIGZyb20gdGFyZ2V0IHBhc3NlZA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uLg0KKyAgQHJldHZhbCBF RklfU0VDVVJJVFlfVklPTEFUSU9OICAgIFRoZSByZXNwb25zZSBmcm9tIHRhcmdldCB3YXMgbm90 IGV4cGVjdGVkDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuDQog ICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgICAgICAgICAgT3RoZXIgZXJyb3JzIGFzIGluZGlj YXRlZC4NCiANCiAqKi8NCiBFRklfU1RBVFVTDQogSVNjc2lDSEFQQXV0aFRhcmdldCAoDQogICBJ TiAgSVNDU0lfQ0hBUF9BVVRIX0RBVEEgICpBdXRoRGF0YSwNCiAgIElOICBVSU5UOCAgICAgICAg ICAgICAgICAgKlRhcmdldFJlc3BvbnNlDQogICApDQogew0KICAgRUZJX1NUQVRVUyAgU3RhdHVz Ow0KICAgVUlOVDMyICAgICAgU2VjcmV0U2l6ZTsNCiAgIFVJTlQ4ICAgICAgIFZlcmlmeVJzcFtJ U0NTSV9DSEFQX1JTUF9MRU5dOw0KIA0KICAgU3RhdHVzICAgICAgPSBFRklfU1VDQ0VTUzsNCiAN CiAgIFNlY3JldFNpemUgID0gKFVJTlQzMikgQXNjaWlTdHJMZW4gKEF1dGhEYXRhLT5BdXRoQ29u ZmlnLT5SZXZlcnNlQ0hBUFNlY3JldCk7DQogICBTdGF0dXMgPSBJU2NzaUNIQVBDYWxjdWxhdGVS ZXNwb25zZSAoDQogICAgICAgICAgICAgIEF1dGhEYXRhLT5PdXRJZGVudGlmaWVyLA0KICAgICAg ICAgICAgICBBdXRoRGF0YS0+QXV0aENvbmZpZy0+UmV2ZXJzZUNIQVBTZWNyZXQsDQpAQCAtMTc3 LDE4NyArMTgyLDIxMSBAQCBJU2NzaUNIQVBPblJzcFJlY2VpdmVkICgKICAgLy8NCiAgIE5ldGJ1 ZlF1ZUNvcHkgKCZDb25uLT5Sc3BRdWUsIDAsIExlbiwgRGF0YSk7DQogDQogICAvLw0KICAgLy8g QnVpbGQgdGhlIGtleS12YWx1ZSBsaXN0IGZyb20gdGhlIGRhdGEgc2VnbWVudCBvZiB0aGUgTG9n aW4gUmVzcG9uc2UuDQogICAvLw0KICAgS2V5VmFsdWVMaXN0ID0gSVNjc2lCdWlsZEtleVZhbHVl TGlzdCAoKENIQVI4ICopIERhdGEsIExlbik7DQogICBpZiAoS2V5VmFsdWVMaXN0ID09IE5VTEwp IHsNCiAgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQogICAgIGdvdG8gT05fRVhJ VDsNCiAgIH0NCiANCiAgIFN0YXR1cyA9IEVGSV9QUk9UT0NPTF9FUlJPUjsNCiANCiAgIHN3aXRj aCAoQ29ubi0+QXV0aFN0ZXApIHsNCiAgIGNhc2UgSVNDU0lfQVVUSF9JTklUSUFMOg0KICAgICAv Lw0KICAgICAvLyBUaGUgZmlyc3QgTG9naW4gUmVzcG9uc2UuDQogICAgIC8vDQotICAgIFZhbHVl ID0gSVNjc2lHZXRWYWx1ZUJ5S2V5RnJvbUxpc3QgKEtleVZhbHVlTGlzdCwgSVNDU0lfS0VZX1RB UkdFVF9QT1JUQUxfR1JPVVBfVEFHKTsNCisgICAgVmFsdWUgPSBJU2NzaUdldFZhbHVlQnlLZXlG cm9tTGlzdCAoDQorICAgICAgICAgICAgICBLZXlWYWx1ZUxpc3QsDQorICAgICAgICAgICAgICBJ U0NTSV9LRVlfVEFSR0VUX1BPUlRBTF9HUk9VUF9UQUcNCisgICAgICAgICAgICAgICk7DQogICAg IGlmIChWYWx1ZSA9PSBOVUxMKSB7DQogICAgICAgZ290byBPTl9FWElUOw0KICAgICB9DQogDQog ICAgIFJlc3VsdCA9IElTY3NpTmV0TnRvaSAoVmFsdWUpOw0KICAgICBpZiAoUmVzdWx0ID4gMHhG RkZGKSB7DQogICAgICAgZ290byBPTl9FWElUOw0KICAgICB9DQogDQogICAgIFNlc3Npb24tPlRh cmdldFBvcnRhbEdyb3VwVGFnID0gKFVJTlQxNikgUmVzdWx0Ow0KIA0KLSAgICBWYWx1ZSAgICAg ICAgICAgICAgICAgICAgICAgICA9IElTY3NpR2V0VmFsdWVCeUtleUZyb21MaXN0IChLZXlWYWx1 ZUxpc3QsIElTQ1NJX0tFWV9BVVRIX01FVEhPRCk7DQorICAgIFZhbHVlICAgICAgICAgICAgICAg ICAgICAgICAgID0gSVNjc2lHZXRWYWx1ZUJ5S2V5RnJvbUxpc3QgKA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgS2V5VmFsdWVMaXN0LA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSVNDU0lfS0VZX0FVVEhfTUVUSE9EDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICBpZiAoVmFsdWUgPT0gTlVMTCkgew0K ICAgICAgIGdvdG8gT05fRVhJVDsNCiAgICAgfQ0KICAgICAvLw0KLSAgICAvLyBJbml0aWF0b3Ig bWFuZGF0ZXMgQ0hBUCBhdXRoZW50aWNhdGlvbiBidXQgdGFyZ2V0IHJlcGxpZXMgd2l0aG91dCAi Q0hBUCIsIG9yDQotICAgIC8vIGluaXRpYXRvciBzdWdnZXRzICJOb25lIiBidXQgdGFyZ2V0IHJl cGxpZXMgd2l0aCBzb21lIGtpbmQgb2YgYXV0aCBtZXRob2QuDQorICAgIC8vIEluaXRpYXRvciBt YW5kYXRlcyBDSEFQIGF1dGhlbnRpY2F0aW9uIGJ1dCB0YXJnZXQgcmVwbGllcyB3aXRob3V0DQor ICAgIC8vICJDSEFQIiwgb3IgaW5pdGlhdG9yIHN1Z2dldHMgIk5vbmUiIGJ1dCB0YXJnZXQgcmVw bGllcyB3aXRoIHNvbWUga2luZCBvZg0KKyAgICAvLyBhdXRoIG1ldGhvZC4NCiAgICAgLy8NCiAg ICAgaWYgKFNlc3Npb24tPkF1dGhUeXBlID09IElTQ1NJX0FVVEhfVFlQRV9OT05FKSB7DQogICAg ICAgaWYgKEFzY2lpU3RyQ21wIChWYWx1ZSwgSVNDU0lfS0VZX1ZBTFVFX05PTkUpICE9IDApIHsN CiAgICAgICAgIGdvdG8gT05fRVhJVDsNCiAgICAgICB9DQogICAgIH0gZWxzZSBpZiAoU2Vzc2lv bi0+QXV0aFR5cGUgPT0gSVNDU0lfQVVUSF9UWVBFX0NIQVApIHsNCiAgICAgICBpZiAoQXNjaWlT dHJDbXAgKFZhbHVlLCBJU0NTSV9BVVRIX01FVEhPRF9DSEFQKSAhPSAwKSB7DQogICAgICAgICBn b3RvIE9OX0VYSVQ7DQogICAgICAgfQ0KICAgICB9IGVsc2Ugew0KICAgICAgIGdvdG8gT05fRVhJ VDsNCiAgICAgfQ0KIA0KICAgICAvLw0KICAgICAvLyBUcmFuc2l0IHRvIENIQVAgc3RlcCBvbmUu DQogICAgIC8vDQogICAgIENvbm4tPkF1dGhTdGVwICA9IElTQ1NJX0NIQVBfU1RFUF9PTkU7DQog ICAgIFN0YXR1cyAgICAgICAgICA9IEVGSV9TVUNDRVNTOw0KICAgICBicmVhazsNCiANCiAgIGNh c2UgSVNDU0lfQ0hBUF9TVEVQX1RXTzoNCiAgICAgLy8NCiAgICAgLy8gVGhlIFRhcmdldCByZXBs aWVzIHdpdGggQ0hBUF9BPTxBPiBDSEFQX0k9PEk+IENIQVBfQz08Qz4NCiAgICAgLy8NCi0gICAg VmFsdWUgPSBJU2NzaUdldFZhbHVlQnlLZXlGcm9tTGlzdCAoS2V5VmFsdWVMaXN0LCBJU0NTSV9L RVlfQ0hBUF9BTEdPUklUSE0pOw0KKyAgICBWYWx1ZSA9IElTY3NpR2V0VmFsdWVCeUtleUZyb21M aXN0ICgNCisgICAgICAgICAgICAgIEtleVZhbHVlTGlzdCwNCisgICAgICAgICAgICAgIElTQ1NJ X0tFWV9DSEFQX0FMR09SSVRITQ0KKyAgICAgICAgICAgICAgKTsNCiAgICAgaWYgKFZhbHVlID09 IE5VTEwpIHsNCiAgICAgICBnb3RvIE9OX0VYSVQ7DQogICAgIH0NCiANCiAgICAgQWxnb3JpdGht ID0gSVNjc2lOZXROdG9pIChWYWx1ZSk7DQogICAgIGlmIChBbGdvcml0aG0gIT0gSVNDU0lfQ0hB UF9BTEdPUklUSE1fTUQ1KSB7DQogICAgICAgLy8NCiAgICAgICAvLyBVbnN1cHBvcnRlZCBhbGdv cml0aG0gaXMgY2hvc2VuIGJ5IHRhcmdldC4NCiAgICAgICAvLw0KICAgICAgIGdvdG8gT05fRVhJ VDsNCiAgICAgfQ0KIA0KLSAgICBJZGVudGlmaWVyID0gSVNjc2lHZXRWYWx1ZUJ5S2V5RnJvbUxp c3QgKEtleVZhbHVlTGlzdCwgSVNDU0lfS0VZX0NIQVBfSURFTlRJRklFUik7DQorICAgIElkZW50 aWZpZXIgPSBJU2NzaUdldFZhbHVlQnlLZXlGcm9tTGlzdCAoDQorICAgICAgICAgICAgICAgICAg IEtleVZhbHVlTGlzdCwNCisgICAgICAgICAgICAgICAgICAgSVNDU0lfS0VZX0NIQVBfSURFTlRJ RklFUg0KKyAgICAgICAgICAgICAgICAgICApOw0KICAgICBpZiAoSWRlbnRpZmllciA9PSBOVUxM KSB7DQogICAgICAgZ290byBPTl9FWElUOw0KICAgICB9DQogDQotICAgIENoYWxsZW5nZSA9IElT Y3NpR2V0VmFsdWVCeUtleUZyb21MaXN0IChLZXlWYWx1ZUxpc3QsIElTQ1NJX0tFWV9DSEFQX0NI QUxMRU5HRSk7DQorICAgIENoYWxsZW5nZSA9IElTY3NpR2V0VmFsdWVCeUtleUZyb21MaXN0ICgN CisgICAgICAgICAgICAgICAgICBLZXlWYWx1ZUxpc3QsDQorICAgICAgICAgICAgICAgICAgSVND U0lfS0VZX0NIQVBfQ0hBTExFTkdFDQorICAgICAgICAgICAgICAgICAgKTsNCiAgICAgaWYgKENo YWxsZW5nZSA9PSBOVUxMKSB7DQogICAgICAgZ290byBPTl9FWElUOw0KICAgICB9DQogICAgIC8v DQogICAgIC8vIFByb2Nlc3MgdGhlIENIQVAgaWRlbnRpZmllciBhbmQgQ0hBUCBDaGFsbGVuZ2Ug ZnJvbSBUYXJnZXQuDQogICAgIC8vIENhbGN1bGF0ZSBSZXNwb25zZSB2YWx1ZS4NCiAgICAgLy8N CiAgICAgUmVzdWx0ID0gSVNjc2lOZXROdG9pIChJZGVudGlmaWVyKTsNCiAgICAgaWYgKFJlc3Vs dCA+IDB4RkYpIHsNCiAgICAgICBnb3RvIE9OX0VYSVQ7DQogICAgIH0NCiANCiAgICAgQXV0aERh dGEtPkluSWRlbnRpZmllciAgICAgID0gKFVJTlQzMikgUmVzdWx0Ow0KICAgICBBdXRoRGF0YS0+ SW5DaGFsbGVuZ2VMZW5ndGggPSBJU0NTSV9DSEFQX0FVVEhfTUFYX0xFTjsNCi0gICAgSVNjc2lI ZXhUb0JpbiAoKFVJTlQ4ICopIEF1dGhEYXRhLT5JbkNoYWxsZW5nZSwgJkF1dGhEYXRhLT5JbkNo YWxsZW5nZUxlbmd0aCwgQ2hhbGxlbmdlKTsNCisgICAgSVNjc2lIZXhUb0JpbiAoDQorICAgICAg KFVJTlQ4ICopIEF1dGhEYXRhLT5JbkNoYWxsZW5nZSwNCisgICAgICAmQXV0aERhdGEtPkluQ2hh bGxlbmdlTGVuZ3RoLA0KKyAgICAgIENoYWxsZW5nZQ0KKyAgICAgICk7DQogICAgIFN0YXR1cyA9 IElTY3NpQ0hBUENhbGN1bGF0ZVJlc3BvbnNlICgNCiAgICAgICAgICAgICAgICBBdXRoRGF0YS0+ SW5JZGVudGlmaWVyLA0KICAgICAgICAgICAgICAgIEF1dGhEYXRhLT5BdXRoQ29uZmlnLT5DSEFQ U2VjcmV0LA0KICAgICAgICAgICAgICAgIChVSU5UMzIpIEFzY2lpU3RyTGVuIChBdXRoRGF0YS0+ QXV0aENvbmZpZy0+Q0hBUFNlY3JldCksDQogICAgICAgICAgICAgICAgQXV0aERhdGEtPkluQ2hh bGxlbmdlLA0KICAgICAgICAgICAgICAgIEF1dGhEYXRhLT5JbkNoYWxsZW5nZUxlbmd0aCwNCiAg ICAgICAgICAgICAgICBBdXRoRGF0YS0+Q0hBUFJlc3BvbnNlDQogICAgICAgICAgICAgICAgKTsN CiANCiAgICAgLy8NCiAgICAgLy8gVHJhbnNpdCB0byBuZXh0IHN0ZXAuDQogICAgIC8vDQogICAg IENvbm4tPkF1dGhTdGVwID0gSVNDU0lfQ0hBUF9TVEVQX1RIUkVFOw0KICAgICBicmVhazsNCiAN CiAgIGNhc2UgSVNDU0lfQ0hBUF9TVEVQX1RIUkVFOg0KICAgICAvLw0KICAgICAvLyBPbmUgd2F5 IENIQVAgYXV0aGVudGljYXRpb24gYW5kIHRoZSB0YXJnZXQgd291bGQgbGlrZSB0bw0KICAgICAv LyBhdXRoZW50aWNhdGUgdXMuDQogICAgIC8vDQogICAgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0K ICAgICBicmVhazsNCiANCiAgIGNhc2UgSVNDU0lfQ0hBUF9TVEVQX0ZPVVI6DQogICAgIEFTU0VS VCAoQXV0aERhdGEtPkF1dGhDb25maWctPkNIQVBUeXBlID09IElTQ1NJX0NIQVBfTVVUVUFMKTsN CiAgICAgLy8NCiAgICAgLy8gVGhlIGZvcnRoIHN0ZXAsIENIQVBfTj08Tj4gQ0hBUF9SPTxSPiBp cyByZWNlaXZlZCBmcm9tIFRhcmdldC4NCiAgICAgLy8NCiAgICAgTmFtZSA9IElTY3NpR2V0VmFs dWVCeUtleUZyb21MaXN0IChLZXlWYWx1ZUxpc3QsIElTQ1NJX0tFWV9DSEFQX05BTUUpOw0KICAg ICBpZiAoTmFtZSA9PSBOVUxMKSB7DQogICAgICAgZ290byBPTl9FWElUOw0KICAgICB9DQogDQot ICAgIFJlc3BvbnNlID0gSVNjc2lHZXRWYWx1ZUJ5S2V5RnJvbUxpc3QgKEtleVZhbHVlTGlzdCwg SVNDU0lfS0VZX0NIQVBfUkVTUE9OU0UpOw0KKyAgICBSZXNwb25zZSA9IElTY3NpR2V0VmFsdWVC eUtleUZyb21MaXN0ICgNCisgICAgICAgICAgICAgICAgIEtleVZhbHVlTGlzdCwNCisgICAgICAg ICAgICAgICAgIElTQ1NJX0tFWV9DSEFQX1JFU1BPTlNFDQorICAgICAgICAgICAgICAgICApOw0K ICAgICBpZiAoUmVzcG9uc2UgPT0gTlVMTCkgew0KICAgICAgIGdvdG8gT05fRVhJVDsNCiAgICAg fQ0KIA0KICAgICBSc3BMZW4gPSBJU0NTSV9DSEFQX1JTUF9MRU47DQogICAgIElTY3NpSGV4VG9C aW4gKFRhcmdldFJzcCwgJlJzcExlbiwgUmVzcG9uc2UpOw0KIA0KICAgICAvLw0KICAgICAvLyBD aGVjayB0aGUgQ0hBUCBOYW1lIGFuZCBSZXNwb25zZSByZXBsaWVkIGJ5IFRhcmdldC4NCiAgICAg Ly8NCiAgICAgU3RhdHVzID0gSVNjc2lDSEFQQXV0aFRhcmdldCAoQXV0aERhdGEsIFRhcmdldFJz cCk7DQogICAgIGJyZWFrOw0KIA0KICAgZGVmYXVsdDoNCiAgICAgYnJlYWs7DQogICB9DQogDQog T05fRVhJVDoNCiANCiAgIGlmIChLZXlWYWx1ZUxpc3QgIT0gTlVMTCkgew0KICAgICBJU2NzaUZy ZWVLZXlWYWx1ZUxpc3QgKEtleVZhbHVlTGlzdCk7DQogICB9DQogDQogICBGcmVlUG9vbCAoRGF0 YSk7DQogDQogICByZXR1cm4gU3RhdHVzOw0KIH0NCiANCiANCiAvKioNCiAgIFRoaXMgZnVuY3Rp b24gZmlsbHMgdGhlIENIQVAgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gaW50byB0aGUgbG9n aW4gUERVDQogICBkdXJpbmcgdGhlIHNlY3VyaXR5IG5lZ290aWF0aW9uIHN0YWdlIGluIHRoZSBp U0NTSSBjb25uZWN0aW9uIGxvZ2luLg0KIA0KICAgQHBhcmFtW2luXSAgICAgICBDb25uICAgICAg ICBUaGUgaVNDU0kgY29ubmVjdGlvbi4NCiAgIEBwYXJhbVtpbiwgb3V0XSAgUGR1ICAgICAgICAg VGhlIFBEVSB0byBzZW5kIG91dC4NCiANCiAgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg IEFsbCBjaGVjayBwYXNzZWQgYW5kIHRoZSBwaGFzZS1yZWxhdGVkIENIQVANCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uIGluZm8gaXMgZmlsbGVkIGludG8g dGhlIGlTQ1NJIFBEVS4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhlbnRp Y2F0aW9uIGluZm8gaXMgZmlsbGVkIGludG8gdGhlIGlTQ1NJDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQRFUuDQogICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBGYWls ZWQgdG8gYWxsb2NhdGUgbWVtb3J5Lg0KICAgQHJldHZhbCBFRklfUFJPVE9DT0xfRVJST1IgICAg U29tZSBraW5kIG9mIHByb3RvY29sIGVycm9yIG9jY3VycmVkLg0KIA0KICoqLw0KIEVGSV9TVEFU VVMNCiBJU2NzaUNIQVBUb1NlbmRSZXEgKA0KICAgSU4gICAgICBJU0NTSV9DT05ORUNUSU9OICAq Q29ubiwNCiAgIElOIE9VVCAgTkVUX0JVRiAgICAgICAgICAgKlBkdQ0KICAgKQ0KIHsNCiAgIEVG SV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBJU0NTSV9TRVNTSU9OICAgICAg ICAgICAgICAgKlNlc3Npb247DQogICBJU0NTSV9MT0dJTl9SRVFVRVNUICAgICAgICAgKkxvZ2lu UmVxOw0KICAgSVNDU0lfQ0hBUF9BVVRIX0RBVEEgICAgICAgICpBdXRoRGF0YTsNCiAgIENIQVI4 ICAgICAgICAgICAgICAgICAgICAgICAqVmFsdWU7DQogICBDSEFSOCAgICAgICAgICAgICAgICAg ICAgICAgVmFsdWVTdHJbMjU2XTsNCiAgIENIQVI4ICAgICAgICAgICAgICAgICAgICAgICAqUmVz cG9uc2U7DQogICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgUnNwTGVuOw0KICAgQ0hBUjgg ICAgICAgICAgICAgICAgICAgICAgICpDaGFsbGVuZ2U7DQpAQCAtMzc2LDk1ICs0MDUsMTE0IEBA IElTY3NpQ0hBUFRvU2VuZFJlcSAoCiAgIFJzcExlbiAgICAgID0gMiAqIElTQ1NJX0NIQVBfUlNQ X0xFTiArIDM7DQogICBSZXNwb25zZSAgICA9IEFsbG9jYXRlWmVyb1Bvb2wgKFJzcExlbik7DQog ICBpZiAoUmVzcG9uc2UgPT0gTlVMTCkgew0KICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJD RVM7DQogICB9DQogDQogICBDaGFsbGVuZ2VMZW4gID0gMiAqIElTQ1NJX0NIQVBfUlNQX0xFTiAr IDM7DQogICBDaGFsbGVuZ2UgICAgID0gQWxsb2NhdGVaZXJvUG9vbCAoQ2hhbGxlbmdlTGVuKTsN CiAgIGlmIChDaGFsbGVuZ2UgPT0gTlVMTCkgew0KICAgICBGcmVlUG9vbCAoUmVzcG9uc2UpOw0K ICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQogICB9DQogDQogICBzd2l0Y2ggKENv bm4tPkF1dGhTdGVwKSB7DQogICBjYXNlIElTQ1NJX0FVVEhfSU5JVElBTDoNCiAgICAgLy8NCiAg ICAgLy8gSXQncyB0aGUgaW5pdGlhbCBMb2dpbiBSZXF1ZXN0LiBGaWxsIGluIHRoZSBrZXk9dmFs dWUgcGFpcnMgbWFuZGF0b3J5DQogICAgIC8vIGZvciB0aGUgaW5pdGlhbCBMb2dpbiBSZXF1ZXN0 Lg0KICAgICAvLw0KLSAgICBJU2NzaUFkZEtleVZhbHVlUGFpciAoUGR1LCBJU0NTSV9LRVlfSU5J VElBVE9SX05BTUUsIG1Qcml2YXRlLT5Jbml0aWF0b3JOYW1lKTsNCisgICAgSVNjc2lBZGRLZXlW YWx1ZVBhaXIgKA0KKyAgICAgIFBkdSwNCisgICAgICBJU0NTSV9LRVlfSU5JVElBVE9SX05BTUUs DQorICAgICAgbVByaXZhdGUtPkluaXRpYXRvck5hbWUNCisgICAgICApOw0KICAgICBJU2NzaUFk ZEtleVZhbHVlUGFpciAoUGR1LCBJU0NTSV9LRVlfU0VTU0lPTl9UWVBFLCAiTm9ybWFsIik7DQog ICAgIElTY3NpQWRkS2V5VmFsdWVQYWlyICgNCiAgICAgICBQZHUsDQogICAgICAgSVNDU0lfS0VZ X1RBUkdFVF9OQU1FLA0KICAgICAgIFNlc3Npb24tPkNvbmZpZ0RhdGEtPlNlc3Npb25Db25maWdE YXRhLlRhcmdldE5hbWUNCiAgICAgICApOw0KIA0KICAgICBpZiAoU2Vzc2lvbi0+QXV0aFR5cGUg PT0gSVNDU0lfQVVUSF9UWVBFX05PTkUpIHsNCiAgICAgICBWYWx1ZSA9IElTQ1NJX0tFWV9WQUxV RV9OT05FOw0KICAgICAgIElTQ1NJX1NFVF9GTEFHIChMb2dpblJlcSwgSVNDU0lfTE9HSU5fUkVR X1BEVV9GTEFHX1RSQU5TSVQpOw0KICAgICB9IGVsc2Ugew0KICAgICAgIFZhbHVlID0gSVNDU0lf QVVUSF9NRVRIT0RfQ0hBUDsNCiAgICAgfQ0KIA0KICAgICBJU2NzaUFkZEtleVZhbHVlUGFpciAo UGR1LCBJU0NTSV9LRVlfQVVUSF9NRVRIT0QsIFZhbHVlKTsNCiANCiAgICAgYnJlYWs7DQogDQog ICBjYXNlIElTQ1NJX0NIQVBfU1RFUF9PTkU6DQogICAgIC8vDQotICAgIC8vIEZpcnN0IHN0ZXAs IHNlbmQgdGhlIExvZ2luIFJlcXVlc3Qgd2l0aCBDSEFQX0E9PEExLEEyLi4uPiBrZXktdmFsdWUg cGFpci4NCisgICAgLy8gRmlyc3Qgc3RlcCwgc2VuZCB0aGUgTG9naW4gUmVxdWVzdCB3aXRoIENI QVBfQT08QTEsQTIuLi4+IGtleS12YWx1ZQ0KKyAgICAvLyBwYWlyLg0KICAgICAvLw0KICAgICBB c2NpaVNQcmludCAoVmFsdWVTdHIsIHNpemVvZiAoVmFsdWVTdHIpLCAiJWQiLCBJU0NTSV9DSEFQ X0FMR09SSVRITV9NRDUpOw0KICAgICBJU2NzaUFkZEtleVZhbHVlUGFpciAoUGR1LCBJU0NTSV9L RVlfQ0hBUF9BTEdPUklUSE0sIFZhbHVlU3RyKTsNCiANCiAgICAgQ29ubi0+QXV0aFN0ZXAgPSBJ U0NTSV9DSEFQX1NURVBfVFdPOw0KICAgICBicmVhazsNCiANCiAgIGNhc2UgSVNDU0lfQ0hBUF9T VEVQX1RIUkVFOg0KICAgICAvLw0KICAgICAvLyBUaGlyZCBzdGVwLCBzZW5kIHRoZSBMb2dpbiBS ZXF1ZXN0IHdpdGggQ0hBUF9OPTxOPiBDSEFQX1I9PFI+IG9yDQogICAgIC8vIENIQVBfTj08Tj4g Q0hBUF9SPTxSPiBDSEFQX0k9PEk+IENIQVBfQz08Qz4gaWYgdGFyZ2V0IGF1dGhlbnRpY2F0aW9u IGlzDQogICAgIC8vIHJlcXVpcmVkIHRvby4NCiAgICAgLy8NCiAgICAgLy8gQ0hBUF9OPTxOPg0K ICAgICAvLw0KLSAgICBJU2NzaUFkZEtleVZhbHVlUGFpciAoUGR1LCBJU0NTSV9LRVlfQ0hBUF9O QU1FLCAoQ0hBUjggKikgJkF1dGhEYXRhLT5BdXRoQ29uZmlnLT5DSEFQTmFtZSk7DQorICAgIElT Y3NpQWRkS2V5VmFsdWVQYWlyICgNCisgICAgICBQZHUsDQorICAgICAgSVNDU0lfS0VZX0NIQVBf TkFNRSwNCisgICAgICAoQ0hBUjggKikgJkF1dGhEYXRhLT5BdXRoQ29uZmlnLT5DSEFQTmFtZQ0K KyAgICAgICk7DQogICAgIC8vDQogICAgIC8vIENIQVBfUj08Uj4NCiAgICAgLy8NCi0gICAgSVNj c2lCaW5Ub0hleCAoKFVJTlQ4ICopIEF1dGhEYXRhLT5DSEFQUmVzcG9uc2UsIElTQ1NJX0NIQVBf UlNQX0xFTiwgUmVzcG9uc2UsICZSc3BMZW4pOw0KKyAgICBJU2NzaUJpblRvSGV4ICgNCisgICAg ICAoVUlOVDggKikgQXV0aERhdGEtPkNIQVBSZXNwb25zZSwNCisgICAgICBJU0NTSV9DSEFQX1JT UF9MRU4sDQorICAgICAgUmVzcG9uc2UsDQorICAgICAgJlJzcExlbg0KKyAgICAgICk7DQogICAg IElTY3NpQWRkS2V5VmFsdWVQYWlyIChQZHUsIElTQ1NJX0tFWV9DSEFQX1JFU1BPTlNFLCBSZXNw b25zZSk7DQogDQogICAgIGlmIChBdXRoRGF0YS0+QXV0aENvbmZpZy0+Q0hBUFR5cGUgPT0gSVND U0lfQ0hBUF9NVVRVQUwpIHsNCiAgICAgICAvLw0KICAgICAgIC8vIENIQVBfST08ST4NCiAgICAg ICAvLw0KICAgICAgIElTY3NpR2VuUmFuZG9tICgoVUlOVDggKikgJkF1dGhEYXRhLT5PdXRJZGVu dGlmaWVyLCAxKTsNCiAgICAgICBBc2NpaVNQcmludCAoVmFsdWVTdHIsIHNpemVvZiAoVmFsdWVT dHIpLCAiJWQiLCBBdXRoRGF0YS0+T3V0SWRlbnRpZmllcik7DQogICAgICAgSVNjc2lBZGRLZXlW YWx1ZVBhaXIgKFBkdSwgSVNDU0lfS0VZX0NIQVBfSURFTlRJRklFUiwgVmFsdWVTdHIpOw0KICAg ICAgIC8vDQogICAgICAgLy8gQ0hBUF9DPTxDPg0KICAgICAgIC8vDQogICAgICAgSVNjc2lHZW5S YW5kb20gKChVSU5UOCAqKSBBdXRoRGF0YS0+T3V0Q2hhbGxlbmdlLCBJU0NTSV9DSEFQX1JTUF9M RU4pOw0KICAgICAgIEF1dGhEYXRhLT5PdXRDaGFsbGVuZ2VMZW5ndGggPSBJU0NTSV9DSEFQX1JT UF9MRU47DQotICAgICAgSVNjc2lCaW5Ub0hleCAoKFVJTlQ4ICopIEF1dGhEYXRhLT5PdXRDaGFs bGVuZ2UsIElTQ1NJX0NIQVBfUlNQX0xFTiwgQ2hhbGxlbmdlLCAmQ2hhbGxlbmdlTGVuKTsNCisg ICAgICBJU2NzaUJpblRvSGV4ICgNCisgICAgICAgIChVSU5UOCAqKSBBdXRoRGF0YS0+T3V0Q2hh bGxlbmdlLA0KKyAgICAgICAgSVNDU0lfQ0hBUF9SU1BfTEVOLA0KKyAgICAgICAgQ2hhbGxlbmdl LA0KKyAgICAgICAgJkNoYWxsZW5nZUxlbg0KKyAgICAgICAgKTsNCiAgICAgICBJU2NzaUFkZEtl eVZhbHVlUGFpciAoUGR1LCBJU0NTSV9LRVlfQ0hBUF9DSEFMTEVOR0UsIENoYWxsZW5nZSk7DQog DQogICAgICAgQ29ubi0+QXV0aFN0ZXAgPSBJU0NTSV9DSEFQX1NURVBfRk9VUjsNCiAgICAgfQ0K ICAgICAvLw0KICAgICAvLyBTZXQgdGhlIHN0YWdlIHRyYW5zaXRpb24gZmxhZy4NCiAgICAgLy8N CiAgICAgSVNDU0lfU0VUX0ZMQUcgKExvZ2luUmVxLCBJU0NTSV9MT0dJTl9SRVFfUERVX0ZMQUdf VFJBTlNJVCk7DQogICAgIGJyZWFrOw0KIA0KICAgZGVmYXVsdDoNCiAgICAgU3RhdHVzID0gRUZJ X1BST1RPQ09MX0VSUk9SOw0KICAgICBicmVhazsNCiAgIH0NCiANCiAgIEZyZWVQb29sIChSZXNw b25zZSk7DQogICBGcmVlUG9vbCAoQ2hhbGxlbmdlKTsNCiANCiAgIHJldHVybiBTdGF0dXM7DQot LSAKMi4xOS4xLjMuZzMwMjQ3YWE1ZDIwMQoKCg==