From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keith Packard Subject: [PATCH 7/8] dri: add __DRIimageLoaderExtension and __DRIimageDriverExtension Date: Mon, 4 Nov 2013 18:23:27 -0800 Message-ID: <1383618208-21310-8-git-send-email-keithp@keithp.com> References: <1383618208-21310-1-git-send-email-keithp@keithp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from keithp.com (home.keithp.com [63.227.221.253]) by gabe.freedesktop.org (Postfix) with ESMTP id 79178EF52A for ; Mon, 4 Nov 2013 18:23:52 -0800 (PST) In-Reply-To: <1383618208-21310-1-git-send-email-keithp@keithp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org To: mesa3d-dev@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhlc2UgcHJvdmlkZSBhbiBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUgbG9h ZGVyIHRvIGFsbG9jYXRlCmNvbG9yIGJ1ZmZlcnMgdGhyb3VnaCB0aGUgRFJJaW1hZ2UgZXh0ZW5z aW9uIGludGVyZmFjZSByYXRoZXIgdGhhbiB0aHJvdWdoIGEKbG9hZGVyLXNwZWNpZmljIGV4dGVu c2lvbiAoYXMgaXMgdXNlZCBieSBEUkkyLCBmb3IgaW5zdGFuY2UpLgoKVGhlIGRyaXZlciB1c2Vz IHRoZSBsb2FkZXIgJ2dldEJ1ZmZlcnMnIGludGVyZmFjZSB0byBhbGxvY2F0ZSBjb2xvciBidWZm ZXJzLgoKVGhlIGxvYWRlciB1c2VzIHRoZSBjcmVhdGVOZXdTY3JlZW4yLCBjcmVhdGVOZXdEcmF3 YWJsZSwgY3JlYXRlTmV3Q29udGV4dCwKZ2V0QVBJTWFzayBhbmQgY3JlYXRlQ29udGV4dEF0dHJp YnMgQVBJUyAobW9zdGx5IHNoYXJlZCB3aXRoIERSSTIpLgoKVGhpcyBpbnRlcmZhY2Ugd2lsbCB3 b3JrIHdpdGggdGhlIERSSTMgbG9hZGVyLCBhbmQgc2hvdWxkIGFsc28gd29yayB3aXRoIEdCTQph bmQgb3RoZXIgbG9hZGVycyBzbyB0aGF0IGRyaXZlcnMgbmVlZCBub3QgYmUgY3VzdG9taXplZCBm b3IgZWFjaCBuZXcgbG9hZGVyCmludGVyZmFjZSwgYXMgbG9uZyBhcyB0aGV5IHByb3ZpZGUgdGhp cyBpbWFnZSBpbnRlcmZhY2UuCgpTaWduZWQtb2ZmLWJ5OiBLZWl0aCBQYWNrYXJkIDxrZWl0aHBA a2VpdGhwLmNvbT4KLS0tCiBpbmNsdWRlL0dML2ludGVybmFsL2RyaV9pbnRlcmZhY2UuaCAgICAg ICAgICAgfCAxMTIgKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL21lc2EvZHJpdmVycy9k cmkvY29tbW9uL2RyaV91dGlsLmMgICAgICAgIHwgMTEzICsrKysrKysrKysrKysrKysrKysrKysr KysKIHNyYy9tZXNhL2RyaXZlcnMvZHJpL2NvbW1vbi9kcmlfdXRpbC5oICAgICAgICB8ICAgNiAr Kwogc3JjL21lc2EvZHJpdmVycy9kcmkvaTkxNS9pbnRlbF9jb250ZXh0LmMgICAgIHwgMTExICsr KysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9tZXNhL2RyaXZlcnMvZHJpL2k5MTUvaW50ZWxf bWlwbWFwX3RyZWUuYyB8ICAzMyArKysrKysrKwogc3JjL21lc2EvZHJpdmVycy9kcmkvaTkxNS9p bnRlbF9taXBtYXBfdHJlZS5oIHwgICA4ICsrCiBzcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTE1L2lu dGVsX3NjcmVlbi5jICAgICAgfCAgIDEgKwogc3JjL21lc2EvZHJpdmVycy9kcmkvaTk2NS9icndf Y29udGV4dC5jICAgICAgIHwgMTE0ICsrKysrKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvbWVz YS9kcml2ZXJzL2RyaS9pOTY1L2Jyd19jb250ZXh0LmggICAgICAgfCAgMTYgKystLQogc3JjL21l c2EvZHJpdmVycy9kcmkvaTk2NS9pbnRlbF9taXBtYXBfdHJlZS5jIHwgIDYxICsrKysrKysrKysr KysrCiBzcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTY1L2ludGVsX21pcG1hcF90cmVlLmggfCAgIDgg KysKIHNyYy9tZXNhL2RyaXZlcnMvZHJpL2k5NjUvaW50ZWxfc2NyZWVuLmMgICAgICB8ICAgNSAr LQogMTIgZmlsZXMgY2hhbmdlZCwgNTY4IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvR0wvaW50ZXJuYWwvZHJpX2ludGVyZmFjZS5oIGIvaW5jbHVk ZS9HTC9pbnRlcm5hbC9kcmlfaW50ZXJmYWNlLmgKaW5kZXggOTA3YWVjYS4uOGZjMWZhNiAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9HTC9pbnRlcm5hbC9kcmlfaW50ZXJmYWNlLmgKKysrIGIvaW5jbHVk ZS9HTC9pbnRlcm5hbC9kcmlfaW50ZXJmYWNlLmgKQEAgLTg2LDYgKzg2LDEwIEBAIHR5cGVkZWYg c3RydWN0IF9fRFJJZHJpMkxvYWRlckV4dGVuc2lvblJlYwlfX0RSSWRyaTJMb2FkZXJFeHRlbnNp b247CiB0eXBlZGVmIHN0cnVjdCBfX0RSSTJmbHVzaEV4dGVuc2lvblJlYwlfX0RSSTJmbHVzaEV4 dGVuc2lvbjsKIHR5cGVkZWYgc3RydWN0IF9fRFJJMnRocm90dGxlRXh0ZW5zaW9uUmVjCV9fRFJJ MnRocm90dGxlRXh0ZW5zaW9uOwogCisKK3R5cGVkZWYgc3RydWN0IF9fRFJJaW1hZ2VMb2FkZXJF eHRlbnNpb25SZWMgICAgIF9fRFJJaW1hZ2VMb2FkZXJFeHRlbnNpb247Cit0eXBlZGVmIHN0cnVj dCBfX0RSSWltYWdlRHJpdmVyRXh0ZW5zaW9uUmVjICAgICBfX0RSSWltYWdlRHJpdmVyRXh0ZW5z aW9uOworCiAvKkB9Ki8KIAogCkBAIC0xMjg4LDQgKzEyOTIsMTEyIEBAIHR5cGVkZWYgc3RydWN0 IF9fRFJJRHJpdmVyVnRhYmxlRXh0ZW5zaW9uUmVjIHsKICAgICBjb25zdCBzdHJ1Y3QgX19Ecml2 ZXJBUElSZWMgKnZ0YWJsZTsKIH0gX19EUklEcml2ZXJWdGFibGVFeHRlbnNpb247CiAKKy8qKgor ICogSW1hZ2UgTG9hZGVyIGV4dGVuc2lvbi4gRHJpdmVycyB1c2UgdGhpcyB0byBhbGxvY2F0ZSBj b2xvciBidWZmZXJzCisgKi8KKworI2RlZmluZSBfX0RSSV9EUklWRVJfRVhURU5TSU9OUyAiX19k cmlEcml2ZXJFeHRlbnNpb25zIgorCitlbnVtIF9fRFJJaW1hZ2VCdWZmZXJNYXNrIHsKKyAgIF9f RFJJX0lNQUdFX0JVRkZFUl9CQUNLID0gKDEgPDwgMCksCisgICBfX0RSSV9JTUFHRV9CVUZGRVJf RlJPTlQgPSAoMSA8PCAxKQorfTsKKworc3RydWN0IF9fRFJJaW1hZ2VMaXN0IHsKKyAgIF9fRFJJ aW1hZ2UgKmJhY2s7CisgICBfX0RSSWltYWdlICpmcm9udDsKK307CisKKyNkZWZpbmUgX19EUklf SU1BR0VfTE9BREVSICJEUklfSU1BR0VfTE9BREVSIgorI2RlZmluZSBfX0RSSV9JTUFHRV9MT0FE RVJfVkVSU0lPTiAxCisKK3N0cnVjdCBfX0RSSWltYWdlTG9hZGVyRXh0ZW5zaW9uUmVjIHsKKyAg ICBfX0RSSWV4dGVuc2lvbiBiYXNlOworCisgICAvKioKKyAgICAqIEFsbG9jYXRlIGNvbG9yIGJ1 ZmZlcnMuCisgICAgKgorICAgICogXHBhcmFtIGRyaURyYXdhYmxlCisgICAgKiBccGFyYW0gd2lk dGggICAgICAgICAgICAgIFdpZHRoIG9mIGFsbG9jYXRlZCBidWZmZXJzCisgICAgKiBccGFyYW0g aGVpZ2h0ICAgICAgICAgICAgIEhlaWdodCBvZiBhbGxvY2F0ZWQgYnVmZmVycworICAgICogXHBh cmFtIGZvcm1hdCAgICAgICAgICAgICBvbmUgb2YgX19EUklfSU1BR0VfRk9STUFUXyoKKyAgICAq IFxwYXJhbSBzdGFtcCAgICAgICAgICAgICAgQWRkcmVzcyBvZiB2YXJpYWJsZSB0byBiZSB1cGRh dGVkIHdoZW4KKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QnVmZmVycyBtdXN0 IGJlIGNhbGxlZCBhZ2FpbgorICAgICogXHBhcmFtIGxvYWRlclByaXZhdGUgICAgICBUaGUgbG9h ZGVyUHJpdmF0ZSBmb3IgZHJpRHJhd2FibGUKKyAgICAqIFxwYXJhbSBidWZmZXJfbWFzayAgICAg ICAgU2V0IG9mIGJ1ZmZlcnMgdG8gYWxsb2NhdGUKKyAgICAqIFxwYXJhbSBidWZmZXJzICAgICAg ICAgICAgUmV0dXJuZWQgYnVmZmVycworICAgICovCisgICBpbnQgKCpnZXRCdWZmZXJzKShfX0RS SWRyYXdhYmxlICpkcmlEcmF3YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCAqd2lkdGgs IGludCAqaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZvcm1hdCwK KyAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGFtcCwKKyAgICAgICAgICAgICAgICAg ICAgIHZvaWQgKmxvYWRlclByaXZhdGUsCisgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBi dWZmZXJfbWFzaywKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfX0RSSWltYWdlTGlzdCAq YnVmZmVycyk7CisKKyAgICAvKioKKyAgICAgKiBGbHVzaCBwZW5kaW5nIGZyb250LWJ1ZmZlciBy ZW5kZXJpbmcKKyAgICAgKgorICAgICAqIEFueSByZW5kZXJpbmcgdGhhdCBoYXMgYmVlbiBwZXJm b3JtZWQgdG8gdGhlCisgICAgICogZmFrZSBmcm9udCB3aWxsIGJlIGZsdXNoZWQgdG8gdGhlIGZy b250CisgICAgICoKKyAgICAgKiBccGFyYW0gZHJpRHJhd2FibGUgICAgRHJhd2FibGUgd2hvc2Ug ZnJvbnQtYnVmZmVyIGlzIHRvIGJlIGZsdXNoZWQKKyAgICAgKiBccGFyYW0gbG9hZGVyUHJpdmF0 ZSAgTG9hZGVyJ3MgcHJpdmF0ZSBkYXRhIHRoYXQgd2FzIHByZXZpb3VzbHkgcGFzc2VkCisgICAg ICogICAgICAgICAgICAgICAgICAgICAgIGludG8gX19EUklkcmkyRXh0ZW5zaW9uUmVjOjpjcmVh dGVOZXdEcmF3YWJsZQorICAgICAqLworICAgIHZvaWQgKCpmbHVzaEZyb250QnVmZmVyKShfX0RS SWRyYXdhYmxlICpkcmlEcmF3YWJsZSwgdm9pZCAqbG9hZGVyUHJpdmF0ZSk7Cit9OworCisvKioK KyAqIERSSSBleHRlbnNpb24uCisgKi8KKworLy9zdHJ1Y3QgZ2xfY29udGV4dDsKKy8vc3RydWN0 IGRkX2Z1bmN0aW9uX3RhYmxlOworCit0eXBlZGVmIF9fRFJJc2NyZWVuICoKKygqX19EUkljcmVh dGVOZXdTY3JlZW4yKShpbnQgc2NyZWVuLCBpbnQgZmQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgX19EUklleHRlbnNpb24gKipleHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IF9fRFJJZXh0ZW5zaW9uICoqZHJpdmVyX2V4dGVuc2lvbnMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgX19EUkljb25maWcgKioqZHJpdmVyX2NvbmZpZ3MsCisg ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqbG9hZGVyUHJpdmF0ZSk7CisKK3R5cGVkZWYg X19EUklkcmF3YWJsZSAqCisoKl9fRFJJY3JlYXRlTmV3RHJhd2FibGUpKF9fRFJJc2NyZWVuICpz Y3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fRFJJY29uZmlnICpjb25m aWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmxvYWRlclByaXZhdGUpOworCit0 eXBlZGVmIF9fRFJJY29udGV4dCAqCisoKl9fRFJJY3JlYXRlTmV3Q29udGV4dCkoX19EUklzY3Jl ZW4gKnNjcmVlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfX0RSSWNvbmZpZyAq Y29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgIF9fRFJJY29udGV4dCAqc2hhcmVkLAor ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmxvYWRlclByaXZhdGUpOworCit0eXBlZGVm IF9fRFJJY29udGV4dCAqCisoKl9fRFJJY3JlYXRlQ29udGV4dEF0dHJpYnMpKF9fRFJJc2NyZWVu ICpzY3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhcGksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fRFJJY29uZmlnICpjb25maWcsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF9fRFJJY29udGV4dCAqc2hhcmVkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1fYXR0cmlicywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKmF0dHJpYnMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkICplcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dm9pZCAqbG9hZGVyUHJpdmF0ZSk7CisKK3R5cGVkZWYgdW5zaWduZWQgaW50CisoKl9fRFJJZ2V0 QVBJTWFzaykoX19EUklzY3JlZW4gKnNjcmVlbik7CisKKyNkZWZpbmUgX19EUklfSU1BR0VfRFJJ VkVSICAgICAgICAgICAiRFJJX0lNQUdFX0RSSVZFUiIKKyNkZWZpbmUgX19EUklfSU1BR0VfRFJJ VkVSX1ZFUlNJT04gICAxCisKK3N0cnVjdCBfX0RSSWltYWdlRHJpdmVyRXh0ZW5zaW9uUmVjIHsK KyAgIF9fRFJJZXh0ZW5zaW9uICAgICAgICAgICAgICAgYmFzZTsKKworICAgLyogQ29tbW9uIERS SSBmdW5jdGlvbnMsIHNoYXJlZCB3aXRoIERSSTIgKi8KKyAgIF9fRFJJY3JlYXRlTmV3U2NyZWVu MiAgICAgICAgY3JlYXRlTmV3U2NyZWVuMjsKKyAgIF9fRFJJY3JlYXRlTmV3RHJhd2FibGUgICAg ICAgY3JlYXRlTmV3RHJhd2FibGU7CisgICBfX0RSSWNyZWF0ZU5ld0NvbnRleHQgICAgICAgIGNy ZWF0ZU5ld0NvbnRleHQ7CisgICBfX0RSSWNyZWF0ZUNvbnRleHRBdHRyaWJzICAgIGNyZWF0ZUNv bnRleHRBdHRyaWJzOworICAgX19EUklnZXRBUElNYXNrICAgICAgICAgICAgICBnZXRBUElNYXNr OworfTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvbWVzYS9kcml2ZXJzL2RyaS9jb21tb24v ZHJpX3V0aWwuYyBiL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2NvbW1vbi9kcmlfdXRpbC5jCmluZGV4 IDc2YzhhZTUuLmQ4Y2I3ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2NvbW1v bi9kcmlfdXRpbC5jCisrKyBiL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2NvbW1vbi9kcmlfdXRpbC5j CkBAIC04NTQsMyArODU0LDExNiBAQCBkcmlJbWFnZUZvcm1hdFRvR0xGb3JtYXQodWludDMyX3Qg aW1hZ2VfZm9ybWF0KQogICAgICAgcmV0dXJuIE1FU0FfRk9STUFUX05PTkU7CiAgICB9CiB9CisK Ky8qCisgKiBDb3B5cmlnaHQgwqkgMjAxMyBLZWl0aCBQYWNrYXJkCisgKgorICogUGVybWlzc2lv biB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcyBzb2Z0d2Fy ZSBhbmQgaXRzCisgKiBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3Jh bnRlZCB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdAorICogdGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodAor ICogbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5n IGRvY3VtZW50YXRpb24sIGFuZAorICogdGhhdCB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhv bGRlcnMgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IKKyAqIHB1YmxpY2l0eSBwZXJ0YWlu aW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywKKyAq IHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIFRoZSBjb3B5cmlnaHQgaG9sZGVycyBtYWtlIG5v IHJlcHJlc2VudGF0aW9ucworICogYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdh cmUgZm9yIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzCisgKiBpcyIgd2l0aG91dCBl eHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisgKgorICogVEhFIENPUFlSSUdIVCBIT0xERVJT IERJU0NMQUlNIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsCisg KiBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E IEZJVE5FU1MsIElOIE5PCisgKiBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN QUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNF LAorICogREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg TkVHTElHRU5DRSBPUiBPVEhFUgorICogVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRQorICogT0YgVEhJUyBT T0ZUV0FSRS4KKyAqLworCitQVUJMSUMgY29uc3QgY2hhciBfX2ltYWdlQ29uZmlnT3B0aW9uc1td ID0KKyAgIERSSV9DT05GX0JFR0lOCisgICAgICBEUklfQ09ORl9TRUNUSU9OX1BFUkZPUk1BTkNF CisgICAgICAgICBEUklfQ09ORl9WQkxBTktfTU9ERShEUklfQ09ORl9WQkxBTktfREVGX0lOVEVS VkFMXzEpCisgICAgICBEUklfQ09ORl9TRUNUSU9OX0VORAorICAgRFJJX0NPTkZfRU5EOworCitz dGF0aWMgdm9pZAorc2V0dXBfaW1hZ2VfbG9hZGVyX2V4dGVuc2lvbnMoX19EUklzY3JlZW4gKnBz cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fRFJJZXh0ZW5zaW9uICpj b25zdCpleHRlbnNpb25zKQoreworICAgIGludCBpOworCisgICAgZm9yIChpID0gMDsgZXh0ZW5z aW9uc1tpXTsgaSsrKSB7CisgICAgICAgIGlmIChzdHJjbXAoZXh0ZW5zaW9uc1tpXS0+bmFtZSwg X19EUklfSU1BR0VfTE9BREVSKSA9PSAwKQorICAgICAgICAgICBwc3AtPmltYWdlLmxvYWRlciA9 IChfX0RSSWltYWdlTG9hZGVyRXh0ZW5zaW9uICopIGV4dGVuc2lvbnNbaV07CisgICAgfQorfQor CitzdGF0aWMgX19EUklzY3JlZW4gKgoraW1hZ2VfY3JlYXRlX25ld19zY3JlZW5fMihpbnQgc2Ny biwgaW50IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfX0RSSWV4dGVuc2lv biAqKmV4dGVuc2lvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fRFJJZXh0 ZW5zaW9uICoqZHJpdmVyX2V4dGVuc2lvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IF9fRFJJY29uZmlnICoqKmRyaXZlcl9jb25maWdzLCB2b2lkICpkYXRhKQoreworICAgIHN0 YXRpYyBjb25zdCBfX0RSSWV4dGVuc2lvbiAqZW1wdHlFeHRlbnNpb25MaXN0W10gPSB7IE5VTEwg fTsKKyAgICBfX0RSSXNjcmVlbiAqcHNwOworICAgIGRybVZlcnNpb25QdHIgdmVyc2lvbjsKKwor ICAgIHBzcCA9IGNhbGxvYygxLCBzaXplb2YoKnBzcCkpOworICAgIGlmICghcHNwKQorCXJldHVy biBOVUxMOworCisgICAgLyogQnkgZGVmYXVsdCwgdXNlIHRoZSBnbG9iYWwgZHJpRHJpdmVyQVBJ IHN5bWJvbCAobm9uLW1lZ2Fkcml2ZXJzKS4gKi8KKyAgICBwc3AtPmRyaXZlciA9IGdsb2JhbERy aXZlckFQSTsKKworICAgIC8qIElmIHRoZSBkcml2ZXIgZXhwb3NlcyBpdHMgdnRhYmxlIHRocm91 Z2ggaXRzIGV4dGVuc2lvbnMgbGlzdAorICAgICAqIChtZWdhZHJpdmVycyksIHVzZSB0aGF0IGlu c3RlYWQuCisgICAgICovCisgICAgaWYgKGRyaXZlcl9leHRlbnNpb25zKSB7CisgICAgICAgZm9y IChpbnQgaSA9IDA7IGRyaXZlcl9leHRlbnNpb25zW2ldOyBpKyspIHsKKyAgICAgICAgICBpZiAo c3RyY21wKGRyaXZlcl9leHRlbnNpb25zW2ldLT5uYW1lLCBfX0RSSV9EUklWRVJfVlRBQkxFKSA9 PSAwKSB7CisgICAgICAgICAgICAgcHNwLT5kcml2ZXIgPQorICAgICAgICAgICAgICAgICgoX19E UklEcml2ZXJWdGFibGVFeHRlbnNpb24gKilkcml2ZXJfZXh0ZW5zaW9uc1tpXSktPnZ0YWJsZTsK KyAgICAgICAgICB9CisgICAgICAgfQorICAgIH0KKworICAgIHNldHVwTG9hZGVyRXh0ZW5zaW9u cyhwc3AsIGV4dGVuc2lvbnMpOworICAgIHNldHVwX2ltYWdlX2xvYWRlcl9leHRlbnNpb25zKHBz cCwgZXh0ZW5zaW9ucyk7CisKKyAgICB2ZXJzaW9uID0gZHJtR2V0VmVyc2lvbihmZCk7CisgICAg aWYgKHZlcnNpb24pIHsKKwlwc3AtPmRybV92ZXJzaW9uLm1ham9yID0gdmVyc2lvbi0+dmVyc2lv bl9tYWpvcjsKKwlwc3AtPmRybV92ZXJzaW9uLm1pbm9yID0gdmVyc2lvbi0+dmVyc2lvbl9taW5v cjsKKwlwc3AtPmRybV92ZXJzaW9uLnBhdGNoID0gdmVyc2lvbi0+dmVyc2lvbl9wYXRjaGxldmVs OworCWRybUZyZWVWZXJzaW9uKHZlcnNpb24pOworICAgIH0KKworICAgIHBzcC0+bG9hZGVyUHJp dmF0ZSA9IGRhdGE7CisKKyAgICBwc3AtPmV4dGVuc2lvbnMgPSBlbXB0eUV4dGVuc2lvbkxpc3Q7 CisgICAgcHNwLT5mZCA9IGZkOworICAgIHBzcC0+bXlOdW0gPSBzY3JuOworCisgICAgcHNwLT5h cGlfbWFzayA9ICgxIDw8IF9fRFJJX0FQSV9PUEVOR0wpOworCisgICAgKmRyaXZlcl9jb25maWdz ID0gcHNwLT5kcml2ZXItPkluaXRTY3JlZW4ocHNwKTsKKyAgICBpZiAoKmRyaXZlcl9jb25maWdz ID09IE5VTEwpIHsKKwlmcmVlKHBzcCk7CisJcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZHJp UGFyc2VPcHRpb25JbmZvKCZwc3AtPm9wdGlvbkluZm8sIF9faW1hZ2VDb25maWdPcHRpb25zKTsK KyAgICBkcmlQYXJzZUNvbmZpZ0ZpbGVzKCZwc3AtPm9wdGlvbkNhY2hlLCAmcHNwLT5vcHRpb25J bmZvLCBwc3AtPm15TnVtLCAiaW1hZ2UiKTsKKworICAgIHJldHVybiBwc3A7Cit9CisKKworLyoq IEltYWdlIGRyaXZlciBpbnRlcmZhY2UgKi8KK2NvbnN0IF9fRFJJaW1hZ2VEcml2ZXJFeHRlbnNp b24gZHJpSW1hZ2VEcml2ZXJFeHRlbnNpb24gPSB7CisgICAgLmJhc2UgPSB7IF9fRFJJX0lNQUdF X0RSSVZFUiwgX19EUklfSU1BR0VfRFJJVkVSX1ZFUlNJT04gfSwKKworICAgIC5jcmVhdGVOZXdT Y3JlZW4yICAgICAgICAgICA9IGltYWdlX2NyZWF0ZV9uZXdfc2NyZWVuXzIsCisgICAgLmNyZWF0 ZU5ld0RyYXdhYmxlICAgICAgICAgID0gZHJpQ3JlYXRlTmV3RHJhd2FibGUsCisgICAgLmNyZWF0 ZU5ld0NvbnRleHQgICAgICAgICAgID0gZHJpQ3JlYXRlTmV3Q29udGV4dCwKKyAgICAuZ2V0QVBJ TWFzayAgICAgICAgICAgICAgICAgPSBkcmlHZXRBUElNYXNrLAorICAgIC5jcmVhdGVDb250ZXh0 QXR0cmlicyAgICAgICA9IGRyaUNyZWF0ZUNvbnRleHRBdHRyaWJzLAorfTsKZGlmZiAtLWdpdCBh L3NyYy9tZXNhL2RyaXZlcnMvZHJpL2NvbW1vbi9kcmlfdXRpbC5oIGIvc3JjL21lc2EvZHJpdmVy cy9kcmkvY29tbW9uL2RyaV91dGlsLmgKaW5kZXggZmQ0MDc2OS4uNmY1Y2Q4NyAxMDA2NDQKLS0t IGEvc3JjL21lc2EvZHJpdmVycy9kcmkvY29tbW9uL2RyaV91dGlsLmgKKysrIGIvc3JjL21lc2Ev ZHJpdmVycy9kcmkvY29tbW9uL2RyaV91dGlsLmgKQEAgLTE3NCw2ICsxNzQsMTAgQEAgc3RydWN0 IF9fRFJJc2NyZWVuUmVjIHsKIAlfX0RSSXVzZUludmFsaWRhdGVFeHRlbnNpb24gKnVzZUludmFs aWRhdGU7CiAgICAgfSBkcmkyOwogCisgICAgc3RydWN0IHsKKyAgICAgICAgX19EUklpbWFnZUxv YWRlckV4dGVuc2lvbiAqbG9hZGVyOworICAgIH0gaW1hZ2U7CisKICAgICBkcmlPcHRpb25DYWNo ZSBvcHRpb25JbmZvOwogICAgIGRyaU9wdGlvbkNhY2hlIG9wdGlvbkNhY2hlOwogCkBAIC0yODMs NCArMjg3LDYgQEAgZHJpMkludmFsaWRhdGVEcmF3YWJsZShfX0RSSWRyYXdhYmxlICpkcmF3YWJs ZSk7CiBleHRlcm4gdm9pZAogZHJpVXBkYXRlRnJhbWVidWZmZXJTaXplKHN0cnVjdCBnbF9jb250 ZXh0ICpjdHgsIGNvbnN0IF9fRFJJZHJhd2FibGUgKmRQcml2KTsKIAorZXh0ZXJuIGNvbnN0IF9f RFJJaW1hZ2VEcml2ZXJFeHRlbnNpb24gZHJpSW1hZ2VEcml2ZXJFeHRlbnNpb247CisKICNlbmRp ZiAvKiBfRFJJX1VUSUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2k5 MTUvaW50ZWxfY29udGV4dC5jIGIvc3JjL21lc2EvZHJpdmVycy9kcmkvaTkxNS9pbnRlbF9jb250 ZXh0LmMKaW5kZXggMTc5OGJjNy4uOGQzNjlmZiAxMDA2NDQKLS0tIGEvc3JjL21lc2EvZHJpdmVy cy9kcmkvaTkxNS9pbnRlbF9jb250ZXh0LmMKKysrIGIvc3JjL21lc2EvZHJpdmVycy9kcmkvaTkx NS9pbnRlbF9jb250ZXh0LmMKQEAgLTkxLDYgKzkxLDggQEAgaW50ZWxHZXRTdHJpbmcoc3RydWN0 IGdsX2NvbnRleHQgKiBjdHgsIEdMZW51bSBuYW1lKQogICAgfQogfQogCisjZGVmaW5lIGZsdXNo RnJvbnQoc2NyZWVuKSAgICAgICgoc2NyZWVuKS0+aW1hZ2UubG9hZGVyID8gKHNjcmVlbiktPmlt YWdlLmxvYWRlci0+Zmx1c2hGcm9udEJ1ZmZlciA6IChzY3JlZW4pLT5kcmkyLmxvYWRlci0+Zmx1 c2hGcm9udEJ1ZmZlcikKKwogc3RhdGljIHZvaWQKIGludGVsX2ZsdXNoX2Zyb250KHN0cnVjdCBn bF9jb250ZXh0ICpjdHgpCiB7CkBAIC0xMDAsMTEgKzEwMiwxMCBAQCBpbnRlbF9mbHVzaF9mcm9u dChzdHJ1Y3QgZ2xfY29udGV4dCAqY3R4KQogICAgIF9fRFJJc2NyZWVuICpjb25zdCBzY3JlZW4g PSBpbnRlbC0+aW50ZWxTY3JlZW4tPmRyaVNjcm5Qcml2OwogCiAgICAgaWYgKGludGVsLT5mcm9u dF9idWZmZXJfZGlydHkgJiYgX21lc2FfaXNfd2luc3lzX2ZibyhjdHgtPkRyYXdCdWZmZXIpKSB7 Ci0gICAgICBpZiAoc2NyZWVuLT5kcmkyLmxvYWRlci0+Zmx1c2hGcm9udEJ1ZmZlciAhPSBOVUxM ICYmCisgICAgICBpZiAoZmx1c2hGcm9udChzY3JlZW4pICYmIAogICAgICAgICAgIGRyaURyYXdh YmxlICYmCiAgICAgICAgICAgZHJpRHJhd2FibGUtPmxvYWRlclByaXZhdGUpIHsKLSAgICAgICAg IHNjcmVlbi0+ZHJpMi5sb2FkZXItPmZsdXNoRnJvbnRCdWZmZXIoZHJpRHJhd2FibGUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaURyYXdhYmxlLT5s b2FkZXJQcml2YXRlKTsKKyAgICAgICAgIGZsdXNoRnJvbnQoc2NyZWVuKShkcmlEcmF3YWJsZSwg ZHJpRHJhd2FibGUtPmxvYWRlclByaXZhdGUpOwogCiAJIC8qIFdlIHNldCB0aGUgZGlydHkgYml0 IGluIGludGVsX3ByZXBhcmVfcmVuZGVyKCkgaWYgd2UncmUKIAkgICogZnJvbnQgYnVmZmVyIHJl bmRlcmluZyBvbmNlIHdlIGdldCB0aGVyZS4KQEAgLTExNCw2ICsxMTUsOSBAQCBpbnRlbF9mbHVz aF9mcm9udChzdHJ1Y3QgZ2xfY29udGV4dCAqY3R4KQogICAgfQogfQogCitzdGF0aWMgdm9pZAor aW50ZWxfdXBkYXRlX2ltYWdlX2J1ZmZlcnMoc3RydWN0IGludGVsX2NvbnRleHQgKmludGVsLCBf X0RSSWRyYXdhYmxlICpkcmF3YWJsZSk7CisKIHN0YXRpYyB1bnNpZ25lZAogaW50ZWxfYml0c19w ZXJfcGl4ZWwoY29uc3Qgc3RydWN0IGludGVsX3JlbmRlcmJ1ZmZlciAqcmIpCiB7CkBAIC0xOTQs NyArMTk4LDEwIEBAIGludGVsX3VwZGF0ZV9yZW5kZXJidWZmZXJzKF9fRFJJY29udGV4dCAqY29u dGV4dCwgX19EUklkcmF3YWJsZSAqZHJhd2FibGUpCiAgICBpZiAodW5saWtlbHkoSU5URUxfREVC VUcgJiBERUJVR19EUkkpKQogICAgICAgZnByaW50ZihzdGRlcnIsICJlbnRlciAlcywgZHJhd2Fi bGUgJXBcbiIsIF9fZnVuY19fLCBkcmF3YWJsZSk7CiAKLSAgIGludGVsX3VwZGF0ZV9kcmkyX2J1 ZmZlcnMoaW50ZWwsIGRyYXdhYmxlKTsKKyAgIGlmIChzY3JlZW4tPmltYWdlLmxvYWRlcikKKyAg ICAgIGludGVsX3VwZGF0ZV9pbWFnZV9idWZmZXJzKGludGVsLCBkcmF3YWJsZSk7CisgICBlbHNl CisgICAgICBpbnRlbF91cGRhdGVfZHJpMl9idWZmZXJzKGludGVsLCBkcmF3YWJsZSk7CiAKICAg IGRyaVVwZGF0ZUZyYW1lYnVmZmVyU2l6ZSgmaW50ZWwtPmN0eCwgZHJhd2FibGUpOwogfQpAQCAt Nzg3LDMgKzc5NCw5OSBAQCBpbnRlbF9wcm9jZXNzX2RyaTJfYnVmZmVyKHN0cnVjdCBpbnRlbF9j b250ZXh0ICppbnRlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZWdpb24pOwogICAgaW50ZWxfcmVnaW9uX3JlbGVhc2UoJnJlZ2lvbik7CiB9CisK Ky8qKgorICogXGJyaWVmIFF1ZXJ5IERSSSBJbWFnZSBsb2FkZXIgdG8gb2J0YWluIGEgRFJJZHJh d2FibGUncyBidWZmZXJzLgorICoKKyAqIFRvIGRldGVybWluZSB3aGljaCBEUkkgYnVmZmVycyB0 byByZXF1ZXN0LCBleGFtaW5lIHRoZSByZW5kZXJidWZmZXJzCisgKiBhdHRhY2hlZCB0byB0aGUg ZHJhd2FibGUncyBmcmFtZWJ1ZmZlci4gVGhlbiByZXF1ZXN0IHRoZSBidWZmZXJzIHdpdGgKKyAq IGRyaTMKKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBmcm9tIGludGVsX3VwZGF0ZV9yZW5kZXJidWZm ZXJzKCkuCisgKgorICogXHBhcmFtIGRyYXdhYmxlICAgICAgRHJhd2FibGUgd2hvc2UgYnVmZmVy cyBhcmUgcXVlcmllZC4KKyAqIFxwYXJhbSBidWZmZXJzICAgICAgIFtvdXRdIExpc3Qgb2YgYnVm ZmVycyByZXR1cm5lZCBieSBEUkkyIHF1ZXJ5LgorICogXHBhcmFtIGJ1ZmZlcl9jb3VudCAgW291 dF0gTnVtYmVyIG9mIGJ1ZmZlcnMgcmV0dXJuZWQuCisgKgorICogXHNlZSBpbnRlbF91cGRhdGVf cmVuZGVyYnVmZmVycygpCisgKi8KKworc3RhdGljIHZvaWQKK2ludGVsX3VwZGF0ZV9pbWFnZV9i dWZmZXIoc3RydWN0IGludGVsX2NvbnRleHQgKmludGVsLAorICAgICAgICAgICAgICAgICAgICAg ICAgICBfX0RSSWRyYXdhYmxlICpkcmF3YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGludGVsX3JlbmRlcmJ1ZmZlciAqcmIsCisgICAgICAgICAgICAgICAgICAgICAgICAg IF9fRFJJaW1hZ2UgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBfX0RS SWltYWdlQnVmZmVyTWFzayBidWZmZXJfdHlwZSkKK3sKKyAgIHN0cnVjdCBpbnRlbF9yZWdpb24g KnJlZ2lvbiA9IGJ1ZmZlci0+cmVnaW9uOworCisgICBpZiAoIXJiIHx8ICFyZWdpb24pCisgICAg ICByZXR1cm47CisKKyAgIHVuc2lnbmVkIG51bV9zYW1wbGVzID0gcmItPkJhc2UuQmFzZS5OdW1T YW1wbGVzOworCisgICBpZiAocmItPm10ICYmCisgICAgICAgcmItPm10LT5yZWdpb24gJiYKKyAg ICAgICByYi0+bXQtPnJlZ2lvbiA9PSByZWdpb24pCisgICAgICByZXR1cm47CisKKyAgIGludGVs X21pcHRyZWVfcmVsZWFzZSgmcmItPm10KTsKKyAgIHJiLT5tdCA9IGludGVsX21pcHRyZWVfY3Jl YXRlX2Zvcl9pbWFnZV9idWZmZXIoaW50ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbF9yYl9mb3JtYXQocmIpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fc2FtcGxlcywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9u KTsKK30KKworCitzdGF0aWMgdm9pZAoraW50ZWxfdXBkYXRlX2ltYWdlX2J1ZmZlcnMoc3RydWN0 IGludGVsX2NvbnRleHQgKmludGVsLCBfX0RSSWRyYXdhYmxlICpkcmF3YWJsZSkKK3sKKyAgIHN0 cnVjdCBnbF9mcmFtZWJ1ZmZlciAqZmIgPSBkcmF3YWJsZS0+ZHJpdmVyUHJpdmF0ZTsKKyAgIF9f RFJJc2NyZWVuICpzY3JlZW4gPSBpbnRlbC0+aW50ZWxTY3JlZW4tPmRyaVNjcm5Qcml2OworICAg c3RydWN0IGludGVsX3JlbmRlcmJ1ZmZlciAqZnJvbnRfcmI7CisgICBzdHJ1Y3QgaW50ZWxfcmVu ZGVyYnVmZmVyICpiYWNrX3JiOworICAgc3RydWN0IF9fRFJJaW1hZ2VMaXN0IGltYWdlczsKKyAg IHVuc2lnbmVkIGludCBmb3JtYXQ7CisgICB1aW50MzJfdCBidWZmZXJfbWFzayA9IDA7CisKKyAg IGZyb250X3JiID0gaW50ZWxfZ2V0X3JlbmRlcmJ1ZmZlcihmYiwgQlVGRkVSX0ZST05UX0xFRlQp OworICAgYmFja19yYiA9IGludGVsX2dldF9yZW5kZXJidWZmZXIoZmIsIEJVRkZFUl9CQUNLX0xF RlQpOworCisgICBpZiAoYmFja19yYikKKyAgICAgIGZvcm1hdCA9IGludGVsX3JiX2Zvcm1hdChi YWNrX3JiKTsKKyAgIGVsc2UgaWYgKGZyb250X3JiKQorICAgICAgZm9ybWF0ID0gaW50ZWxfcmJf Zm9ybWF0KGZyb250X3JiKTsKKyAgIGVsc2UKKyAgICAgIHJldHVybjsKKworICAgaWYgKChpbnRl bC0+aXNfZnJvbnRfYnVmZmVyX3JlbmRlcmluZyB8fCBpbnRlbC0+aXNfZnJvbnRfYnVmZmVyX3Jl YWRpbmcgfHwgIWJhY2tfcmIpICYmIGZyb250X3JiKQorICAgICAgYnVmZmVyX21hc2sgfD0gX19E UklfSU1BR0VfQlVGRkVSX0ZST05UOworCisgICBpZiAoYmFja19yYikKKyAgICAgIGJ1ZmZlcl9t YXNrIHw9IF9fRFJJX0lNQUdFX0JVRkZFUl9CQUNLOworCisgICAoKnNjcmVlbi0+aW1hZ2UubG9h ZGVyLT5nZXRCdWZmZXJzKSAoZHJhd2FibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmRyYXdhYmxlLT53LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZkcmF3YWJsZS0+aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkcmlHTEZvcm1hdFRvSW1hZ2VGb3JtYXQoZm9ybWF0KSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmZHJhd2FibGUtPmRyaTIuc3RhbXAsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd2FibGUtPmxvYWRlclByaXZhdGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX21hc2ssCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmltYWdlcyk7CisKKyAgIGlm IChpbWFnZXMuZnJvbnQpIHsKKyAgICAgIGFzc2VydChmcm9udF9yYik7CisgICAgICBpbnRlbF91 cGRhdGVfaW1hZ2VfYnVmZmVyKGludGVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkcmF3YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbnRfcmIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcy5mcm9udCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgX19EUklfSU1BR0VfQlVGRkVSX0ZST05UKTsKKyAgIH0KKyAg IGlmIChpbWFnZXMuYmFjaykKKyAgICAgIGludGVsX3VwZGF0ZV9pbWFnZV9idWZmZXIoaW50ZWws CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdhYmxlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBiYWNrX3JiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbWFnZXMuYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19EUklf SU1BR0VfQlVGRkVSX0JBQ0spOworfQpkaWZmIC0tZ2l0IGEvc3JjL21lc2EvZHJpdmVycy9kcmkv aTkxNS9pbnRlbF9taXBtYXBfdHJlZS5jIGIvc3JjL21lc2EvZHJpdmVycy9kcmkvaTkxNS9pbnRl bF9taXBtYXBfdHJlZS5jCmluZGV4IDg0MzJiNmQuLjY2YTdhOTIgMTAwNjQ0Ci0tLSBhL3NyYy9t ZXNhL2RyaXZlcnMvZHJpL2k5MTUvaW50ZWxfbWlwbWFwX3RyZWUuYworKysgYi9zcmMvbWVzYS9k cml2ZXJzL2RyaS9pOTE1L2ludGVsX21pcG1hcF90cmVlLmMKQEAgLTMyMiw2ICszMjIsMzkgQEAg aW50ZWxfbWlwdHJlZV9jcmVhdGVfZm9yX2RyaTJfYnVmZmVyKHN0cnVjdCBpbnRlbF9jb250ZXh0 ICppbnRlbCwKICAgIHJldHVybiBtdDsKIH0KIAorLyoqCisgKiBGb3IgYSBzaW5nbGVzYW1wbGUg aW1hZ2UgYnVmZmVyLCB0aGlzIHNpbXBseSB3cmFwcyB0aGUgZ2l2ZW4gcmVnaW9uIHdpdGggYSBt aXB0cmVlLgorICoKKyAqIEZvciBhIG11bHRpc2FtcGxlIGltYWdlIGJ1ZmZlciwgdGhpcyB3cmFw cyB0aGUgZ2l2ZW4gcmVnaW9uIHdpdGgKKyAqIGEgc2luZ2xlc2FtcGxlIG1pcHRyZWUsIHRoZW4g Y3JlYXRlcyBhIG11bHRpc2FtcGxlIG1pcHRyZWUgaW50byB3aGljaCB0aGUKKyAqIHNpbmdsZXNh bXBsZSBtaXB0cmVlIGlzIGVtYmVkZGVkIGFzIGEgY2hpbGQuCisgKi8KK3N0cnVjdCBpbnRlbF9t aXBtYXBfdHJlZSoKK2ludGVsX21pcHRyZWVfY3JlYXRlX2Zvcl9pbWFnZV9idWZmZXIoc3RydWN0 IGludGVsX2NvbnRleHQgKmludGVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbnVtIF9fRFJJaW1hZ2VCdWZmZXJNYXNrIGJ1ZmZlcl90eXBlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9mb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBudW1fc2FtcGxlcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGludGVsX3JlZ2lvbiAqcmVnaW9u KQoreworICAgc3RydWN0IGludGVsX21pcG1hcF90cmVlICptdCA9IE5VTEw7CisKKyAgIC8qIE9u bHkgdGhlIGZyb250IGFuZCBiYWNrIGJ1ZmZlcnMsIHdoaWNoIGFyZSBjb2xvciBidWZmZXJzLCBh cmUgYWxsb2NhdGVkCisgICAgKiB0aHJvdWdoIHRoZSBpbWFnZSBsb2FkZXIuCisgICAgKi8KKyAg IGFzc2VydChfbWVzYV9nZXRfZm9ybWF0X2Jhc2VfZm9ybWF0KGZvcm1hdCkgPT0gR0xfUkdCIHx8 CisgICAgICAgICAgX21lc2FfZ2V0X2Zvcm1hdF9iYXNlX2Zvcm1hdChmb3JtYXQpID09IEdMX1JH QkEpOworCisgICBtdCA9IGludGVsX21pcHRyZWVfY3JlYXRlX2Zvcl9ibyhpbnRlbCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+Ym8sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9u LT53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+aGVp Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLT5waXRjaCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+dGlsaW5nKTsKKyAg IHJldHVybiBtdDsKK30KKwogc3RydWN0IGludGVsX21pcG1hcF90cmVlKgogaW50ZWxfbWlwdHJl ZV9jcmVhdGVfZm9yX3JlbmRlcmJ1ZmZlcihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqaW50ZWwsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2Zvcm1hdCBmb3JtYXQsCmRp ZmYgLS1naXQgYS9zcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTE1L2ludGVsX21pcG1hcF90cmVlLmgg Yi9zcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTE1L2ludGVsX21pcG1hcF90cmVlLmgKaW5kZXggMTE0 MmFmNi4uMzVjYWQ2ZCAxMDA2NDQKLS0tIGEvc3JjL21lc2EvZHJpdmVycy9kcmkvaTkxNS9pbnRl bF9taXBtYXBfdHJlZS5oCisrKyBiL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2k5MTUvaW50ZWxfbWlw bWFwX3RyZWUuaApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiaW50ZWxfc2NyZWVuLmgi CiAjaW5jbHVkZSAiaW50ZWxfcmVnaW9ucy5oIgorI2luY2x1ZGUgIkdML2ludGVybmFsL2RyaV9p bnRlcmZhY2UuaCIKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTI1OCw2 ICsyNTksMTMgQEAgaW50ZWxfbWlwdHJlZV9jcmVhdGVfZm9yX2RyaTJfYnVmZmVyKHN0cnVjdCBp bnRlbF9jb250ZXh0ICppbnRlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnbF9mb3JtYXQgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBpbnRlbF9yZWdpb24gKnJlZ2lvbik7CiAKK3N0cnVjdCBpbnRlbF9taXBtYXBfdHJl ZSoKK2ludGVsX21pcHRyZWVfY3JlYXRlX2Zvcl9pbWFnZV9idWZmZXIoc3RydWN0IGludGVsX2Nv bnRleHQgKmludGVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVt IF9fRFJJaW1hZ2VCdWZmZXJNYXNrIGJ1ZmZlcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnbF9mb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCBudW1fc2FtcGxlcywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGludGVsX3JlZ2lvbiAqcmVnaW9uKTsKKwogLyoq CiAgKiBDcmVhdGUgYSBtaXB0cmVlIGFwcHJvcHJpYXRlIGFzIHRoZSBzdG9yYWdlIGZvciBhIG5v bi10ZXh0dXJlIHJlbmRlcmJ1ZmZlci4KICAqIFRoZSBtaXB0cmVlIGhhcyB0aGUgZm9sbG93aW5n IHByb3BlcnRpZXM6CmRpZmYgLS1naXQgYS9zcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTE1L2ludGVs X3NjcmVlbi5jIGIvc3JjL21lc2EvZHJpdmVycy9kcmkvaTkxNS9pbnRlbF9zY3JlZW4uYwppbmRl eCAxMjExM2M3Li4zOGJhZGVjIDEwMDY0NAotLS0gYS9zcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTE1 L2ludGVsX3NjcmVlbi5jCisrKyBiL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2k5MTUvaW50ZWxfc2Ny ZWVuLmMKQEAgLTExNjYsNiArMTE2Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgX19EUklEcml2 ZXJWdGFibGVFeHRlbnNpb25SZWMgaTkxNV92dGFibGUgPSB7CiAvKiBUaGlzIGlzIHRoZSB0YWJs ZSBvZiBleHRlbnNpb25zIHRoYXQgdGhlIGxvYWRlciB3aWxsIGRsc3ltKCkgZm9yLiAqLwogc3Rh dGljIGNvbnN0IF9fRFJJZXh0ZW5zaW9uICppOTE1X2RyaXZlcl9leHRlbnNpb25zW10gPSB7CiAg ICAgJmRyaUNvcmVFeHRlbnNpb24uYmFzZSwKKyAgICAmZHJpSW1hZ2VEcml2ZXJFeHRlbnNpb24u YmFzZSwKICAgICAmZHJpRFJJMkV4dGVuc2lvbi5iYXNlLAogICAgICZpOTE1X3Z0YWJsZS5iYXNl LAogICAgICZpOTE1X2NvbmZpZ19vcHRpb25zLmJhc2UsCmRpZmYgLS1naXQgYS9zcmMvbWVzYS9k cml2ZXJzL2RyaS9pOTY1L2Jyd19jb250ZXh0LmMgYi9zcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTY1 L2Jyd19jb250ZXh0LmMKaW5kZXggMjU1N2QxMC4uZjNiZjY3ZiAxMDA2NDQKLS0tIGEvc3JjL21l c2EvZHJpdmVycy9kcmkvaTk2NS9icndfY29udGV4dC5jCisrKyBiL3NyYy9tZXNhL2RyaXZlcnMv ZHJpL2k5NjUvYnJ3X2NvbnRleHQuYwpAQCAtMTUxLDYgKzE1MSw4IEBAIGludGVsSW52YWxpZGF0 ZVN0YXRlKHN0cnVjdCBnbF9jb250ZXh0ICogY3R4LCBHTHVpbnQgbmV3X3N0YXRlKQogICAgYnJ3 LT5OZXdHTFN0YXRlIHw9IG5ld19zdGF0ZTsKIH0KIAorI2RlZmluZSBmbHVzaEZyb250KHNjcmVl bikgICAgICAoKHNjcmVlbiktPmltYWdlLmxvYWRlciA/IChzY3JlZW4pLT5pbWFnZS5sb2FkZXIt PmZsdXNoRnJvbnRCdWZmZXIgOiAoc2NyZWVuKS0+ZHJpMi5sb2FkZXItPmZsdXNoRnJvbnRCdWZm ZXIpCisKIHN0YXRpYyB2b2lkCiBpbnRlbF9mbHVzaF9mcm9udChzdHJ1Y3QgZ2xfY29udGV4dCAq Y3R4KQogewpAQCAtMTYwLDggKzE2Miw3IEBAIGludGVsX2ZsdXNoX2Zyb250KHN0cnVjdCBnbF9j b250ZXh0ICpjdHgpCiAgICBfX0RSSXNjcmVlbiAqY29uc3Qgc2NyZWVuID0gYnJ3LT5pbnRlbFNj cmVlbi0+ZHJpU2NyblByaXY7CiAKICAgIGlmIChicnctPmZyb250X2J1ZmZlcl9kaXJ0eSAmJiBf bWVzYV9pc193aW5zeXNfZmJvKGN0eC0+RHJhd0J1ZmZlcikpIHsKLSAgICAgIGlmIChzY3JlZW4t PmRyaTIubG9hZGVyLT5mbHVzaEZyb250QnVmZmVyICE9IE5VTEwgJiYKLSAgICAgICAgICBkcmlE cmF3YWJsZSAmJgorICAgICAgaWYgKGZsdXNoRnJvbnQoc2NyZWVuKSAmJiBkcmlEcmF3YWJsZSAm JgogICAgICAgICAgIGRyaURyYXdhYmxlLT5sb2FkZXJQcml2YXRlKSB7CiAKICAgICAgICAgIC8q IFJlc29sdmUgYmVmb3JlIGZsdXNoaW5nIEZBS0VfRlJPTlRfTEVGVCB0byBGUk9OVF9MRUZULgpA QCAtMTc0LDggKzE3NSw3IEBAIGludGVsX2ZsdXNoX2Zyb250KHN0cnVjdCBnbF9jb250ZXh0ICpj dHgpCiAgICAgICAgICBpbnRlbF9yZXNvbHZlX2Zvcl9kcmkyX2ZsdXNoKGJydywgZHJpRHJhd2Fi bGUpOwogICAgICAgICAgaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2goYnJ3KTsKIAotICAgICAgICAg c2NyZWVuLT5kcmkyLmxvYWRlci0+Zmx1c2hGcm9udEJ1ZmZlcihkcmlEcmF3YWJsZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpRHJhd2FibGUtPmxv YWRlclByaXZhdGUpOworICAgICAgICAgZmx1c2hGcm9udChzY3JlZW4pKGRyaURyYXdhYmxlLCBk cmlEcmF3YWJsZS0+bG9hZGVyUHJpdmF0ZSk7CiAKICAgICAgICAgIC8qIFdlIHNldCB0aGUgZGly dHkgYml0IGluIGludGVsX3ByZXBhcmVfcmVuZGVyKCkgaWYgd2UncmUKICAgICAgICAgICAqIGZy b250IGJ1ZmZlciByZW5kZXJpbmcgb25jZSB3ZSBnZXQgdGhlcmUuCkBAIC01NDksNyArNTQ5LDcg QEAgYnJ3X3Byb2Nlc3NfZHJpY29uZl9vcHRpb25zKHN0cnVjdCBicndfY29udGV4dCAqYnJ3KQog ICAgICAgZHJpUXVlcnlPcHRpb25iKG9wdGlvbnMsICJkaXNhYmxlX2dsc2xfbGluZV9jb250aW51 YXRpb25zIik7CiB9CiAKLWJvb2wKK0dMYm9vbGVhbgogYnJ3Q3JlYXRlQ29udGV4dChnbF9hcGkg YXBpLAogCSAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jb25maWcgKm1lc2FWaXMsCiAJCSBfX0RS SWNvbnRleHQgKmRyaUNvbnRleHRQcml2LApAQCAtOTc5LDYgKzk3OSw5IEBAIGludGVsX3Byb2Nl c3NfZHJpMl9idWZmZXIoc3RydWN0IGJyd19jb250ZXh0ICpicncsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZmZlcl9uYW1lKTsKIAogc3RhdGljIHZvaWQKK2ludGVs X3VwZGF0ZV9pbWFnZV9idWZmZXJzKHN0cnVjdCBicndfY29udGV4dCAqYnJ3LCBfX0RSSWRyYXdh YmxlICpkcmF3YWJsZSk7CisKK3N0YXRpYyB2b2lkCiBpbnRlbF91cGRhdGVfZHJpMl9idWZmZXJz KHN0cnVjdCBicndfY29udGV4dCAqYnJ3LCBfX0RSSWRyYXdhYmxlICpkcmF3YWJsZSkKIHsKICAg IHN0cnVjdCBnbF9mcmFtZWJ1ZmZlciAqZmIgPSBkcmF3YWJsZS0+ZHJpdmVyUHJpdmF0ZTsKQEAg LTEwMzgsNiArMTA0MSw3IEBAIHZvaWQKIGludGVsX3VwZGF0ZV9yZW5kZXJidWZmZXJzKF9fRFJJ Y29udGV4dCAqY29udGV4dCwgX19EUklkcmF3YWJsZSAqZHJhd2FibGUpCiB7CiAgICBzdHJ1Y3Qg YnJ3X2NvbnRleHQgKmJydyA9IGNvbnRleHQtPmRyaXZlclByaXZhdGU7CisgICBfX0RSSXNjcmVl biAqc2NyZWVuID0gYnJ3LT5pbnRlbFNjcmVlbi0+ZHJpU2NyblByaXY7CiAKICAgIC8qIFNldCB0 aGlzIHVwIGZyb250LCBzbyB0aGF0IGluIGNhc2Ugb3VyIGJ1ZmZlcnMgZ2V0IGludmFsaWRhdGVk CiAgICAgKiB3aGlsZSB3ZSdyZSBnZXR0aW5nIG5ldyBidWZmZXJzLCB3ZSBkb24ndCBjbG9iYmVy IHRoZSBzdGFtcCBhbmQKQEAgLTEwNDcsNyArMTA1MSwxMCBAQCBpbnRlbF91cGRhdGVfcmVuZGVy YnVmZmVycyhfX0RSSWNvbnRleHQgKmNvbnRleHQsIF9fRFJJZHJhd2FibGUgKmRyYXdhYmxlKQog ICAgaWYgKHVubGlrZWx5KElOVEVMX0RFQlVHICYgREVCVUdfRFJJKSkKICAgICAgIGZwcmludGYo c3RkZXJyLCAiZW50ZXIgJXMsIGRyYXdhYmxlICVwXG4iLCBfX2Z1bmNfXywgZHJhd2FibGUpOwog Ci0gICBpbnRlbF91cGRhdGVfZHJpMl9idWZmZXJzKGJydywgZHJhd2FibGUpOworICAgaWYgKHNj cmVlbi0+aW1hZ2UubG9hZGVyKQorICAgICAgaW50ZWxfdXBkYXRlX2ltYWdlX2J1ZmZlcnMoYnJ3 LCBkcmF3YWJsZSk7CisgICBlbHNlCisgICAgICBpbnRlbF91cGRhdGVfZHJpMl9idWZmZXJzKGJy dywgZHJhd2FibGUpOwogCiAgICBkcmlVcGRhdGVGcmFtZWJ1ZmZlclNpemUoJmJydy0+Y3R4LCBk cmF3YWJsZSk7CiB9CkBAIC0xMjUzLDMgKzEyNjAsOTggQEAgaW50ZWxfcHJvY2Vzc19kcmkyX2J1 ZmZlcihzdHJ1Y3QgYnJ3X2NvbnRleHQgKmJydywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZWdpb24pOwogICAgaW50ZWxfcmVnaW9uX3JlbGVhc2Uo JnJlZ2lvbik7CiB9CisKKy8qKgorICogXGJyaWVmIFF1ZXJ5IERSSSBpbWFnZSBsb2FkZXIgdG8g b2J0YWluIGEgRFJJZHJhd2FibGUncyBidWZmZXJzLgorICoKKyAqIFRvIGRldGVybWluZSB3aGlj aCBEUkkgYnVmZmVycyB0byByZXF1ZXN0LCBleGFtaW5lIHRoZSByZW5kZXJidWZmZXJzCisgKiBh dHRhY2hlZCB0byB0aGUgZHJhd2FibGUncyBmcmFtZWJ1ZmZlci4gVGhlbiByZXF1ZXN0IHRoZSBi dWZmZXJzIGZyb20KKyAqIHRoZSBpbWFnZSBsb2FkZXIKKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBm cm9tIGludGVsX3VwZGF0ZV9yZW5kZXJidWZmZXJzKCkuCisgKgorICogXHBhcmFtIGRyYXdhYmxl ICAgICAgRHJhd2FibGUgd2hvc2UgYnVmZmVycyBhcmUgcXVlcmllZC4KKyAqIFxwYXJhbSBidWZm ZXJzICAgICAgIFtvdXRdIExpc3Qgb2YgYnVmZmVycyByZXR1cm5lZCBieSBEUkkyIHF1ZXJ5Lgor ICogXHBhcmFtIGJ1ZmZlcl9jb3VudCAgW291dF0gTnVtYmVyIG9mIGJ1ZmZlcnMgcmV0dXJuZWQu CisgKgorICogXHNlZSBpbnRlbF91cGRhdGVfcmVuZGVyYnVmZmVycygpCisgKi8KKworc3RhdGlj IHZvaWQKK2ludGVsX3VwZGF0ZV9pbWFnZV9idWZmZXIoc3RydWN0IGJyd19jb250ZXh0ICppbnRl bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19EUklkcmF3YWJsZSAqZHJhd2FibGUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9yZW5kZXJidWZmZXIgKnJiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICBfX0RSSWltYWdlICpidWZmZXIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgIGVudW0gX19EUklpbWFnZUJ1ZmZlck1hc2sgYnVmZmVyX3R5cGUpCit7 CisgICBzdHJ1Y3QgaW50ZWxfcmVnaW9uICpyZWdpb24gPSBidWZmZXItPnJlZ2lvbjsKKworICAg aWYgKCFyYiB8fCAhcmVnaW9uKQorICAgICAgcmV0dXJuOworCisgICB1bnNpZ25lZCBudW1fc2Ft cGxlcyA9IHJiLT5CYXNlLkJhc2UuTnVtU2FtcGxlczsKKworICAgaWYgKHJiLT5tdCAmJgorICAg ICAgIHJiLT5tdC0+cmVnaW9uICYmCisgICAgICAgcmItPm10LT5yZWdpb24gPT0gcmVnaW9uKQor ICAgICAgcmV0dXJuOworCisgICBpbnRlbF9taXB0cmVlX3JlbGVhc2UoJnJiLT5tdCk7CisgICBy Yi0+bXQgPSBpbnRlbF9taXB0cmVlX2NyZWF0ZV9mb3JfaW1hZ2VfYnVmZmVyKGludGVsLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHlw ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 ZWxfcmJfZm9ybWF0KHJiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbnVtX3NhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlZ2lvbik7Cit9CisKK3N0YXRpYyB2b2lkCitpbnRlbF91cGRh dGVfaW1hZ2VfYnVmZmVycyhzdHJ1Y3QgYnJ3X2NvbnRleHQgKmJydywgX19EUklkcmF3YWJsZSAq ZHJhd2FibGUpCit7CisgICBzdHJ1Y3QgZ2xfZnJhbWVidWZmZXIgKmZiID0gZHJhd2FibGUtPmRy aXZlclByaXZhdGU7CisgICBfX0RSSXNjcmVlbiAqc2NyZWVuID0gYnJ3LT5pbnRlbFNjcmVlbi0+ ZHJpU2NyblByaXY7CisgICBzdHJ1Y3QgaW50ZWxfcmVuZGVyYnVmZmVyICpmcm9udF9yYjsKKyAg IHN0cnVjdCBpbnRlbF9yZW5kZXJidWZmZXIgKmJhY2tfcmI7CisgICBzdHJ1Y3QgX19EUklpbWFn ZUxpc3QgaW1hZ2VzOworICAgdW5zaWduZWQgaW50IGZvcm1hdDsKKyAgIHVpbnQzMl90IGJ1ZmZl cl9tYXNrID0gMDsKKworICAgZnJvbnRfcmIgPSBpbnRlbF9nZXRfcmVuZGVyYnVmZmVyKGZiLCBC VUZGRVJfRlJPTlRfTEVGVCk7CisgICBiYWNrX3JiID0gaW50ZWxfZ2V0X3JlbmRlcmJ1ZmZlcihm YiwgQlVGRkVSX0JBQ0tfTEVGVCk7CisKKyAgIGlmIChiYWNrX3JiKQorICAgICAgZm9ybWF0ID0g aW50ZWxfcmJfZm9ybWF0KGJhY2tfcmIpOworICAgZWxzZSBpZiAoZnJvbnRfcmIpCisgICAgICBm b3JtYXQgPSBpbnRlbF9yYl9mb3JtYXQoZnJvbnRfcmIpOworICAgZWxzZQorICAgICAgcmV0dXJu OworCisgICBpZiAoKGJydy0+aXNfZnJvbnRfYnVmZmVyX3JlbmRlcmluZyB8fCBicnctPmlzX2Zy b250X2J1ZmZlcl9yZWFkaW5nIHx8ICFiYWNrX3JiKSAmJiBmcm9udF9yYikKKyAgICAgIGJ1ZmZl cl9tYXNrIHw9IF9fRFJJX0lNQUdFX0JVRkZFUl9GUk9OVDsKKworICAgaWYgKGJhY2tfcmIpCisg ICAgICBidWZmZXJfbWFzayB8PSBfX0RSSV9JTUFHRV9CVUZGRVJfQkFDSzsKKworICAgKCpzY3Jl ZW4tPmltYWdlLmxvYWRlci0+Z2V0QnVmZmVycykgKGRyYXdhYmxlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZkcmF3YWJsZS0+dywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmZHJhd2FibGUtPmgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZHJpR0xGb3JtYXRUb0ltYWdlRm9ybWF0KGZvcm1hdCksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRyYXdhYmxlLT5kcmkyLnN0 YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdhYmxlLT5s b2FkZXJQcml2YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1 ZmZlcl9tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbWFn ZXMpOworCisgICBpZiAoaW1hZ2VzLmZyb250KSB7CisgICAgICBhc3NlcnQoZnJvbnRfcmIpOwor ICAgICAgaW50ZWxfdXBkYXRlX2ltYWdlX2J1ZmZlcihicncsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRyYXdhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm cm9udF9yYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLmZyb250LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0RSSV9JTUFHRV9CVUZGRVJfRlJPTlQp OworICAgfQorICAgaWYgKGltYWdlcy5iYWNrKQorICAgICAgaW50ZWxfdXBkYXRlX2ltYWdlX2J1 ZmZlcihicncsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdhYmxlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrX3JiLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbWFnZXMuYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX19EUklfSU1BR0VfQlVGRkVSX0JBQ0spOworfQpkaWZmIC0tZ2l0IGEvc3JjL21lc2EvZHJp dmVycy9kcmkvaTk2NS9icndfY29udGV4dC5oIGIvc3JjL21lc2EvZHJpdmVycy9kcmkvaTk2NS9i cndfY29udGV4dC5oCmluZGV4IGJlYzRkNmIuLjFlY2JmYjcgMTAwNjQ0Ci0tLSBhL3NyYy9tZXNh L2RyaXZlcnMvZHJpL2k5NjUvYnJ3X2NvbnRleHQuaAorKysgYi9zcmMvbWVzYS9kcml2ZXJzL2Ry aS9pOTY1L2Jyd19jb250ZXh0LmgKQEAgLTE0NzcsMTQgKzE0NzcsMTQgQEAgdm9pZCBpbnRlbF9w cmVwYXJlX3JlbmRlcihzdHJ1Y3QgYnJ3X2NvbnRleHQgKmJydyk7CiB2b2lkIGludGVsX3Jlc29s dmVfZm9yX2RyaTJfZmx1c2goc3RydWN0IGJyd19jb250ZXh0ICpicncsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgX19EUklkcmF3YWJsZSAqZHJhd2FibGUpOwogCi1ib29sIGJy d0NyZWF0ZUNvbnRleHQoZ2xfYXBpIGFwaSwKLQkJICAgICAgY29uc3Qgc3RydWN0IGdsX2NvbmZp ZyAqbWVzYVZpcywKLQkJICAgICAgX19EUkljb250ZXh0ICpkcmlDb250ZXh0UHJpdiwKLSAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYWpvcl92ZXJzaW9uLAotICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIG1pbm9yX3ZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgKmVycm9yLAotCQkg ICAgICB2b2lkICpzaGFyZWRDb250ZXh0UHJpdmF0ZSk7CitHTGJvb2xlYW4gYnJ3Q3JlYXRlQ29u dGV4dChnbF9hcGkgYXBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IGdsX2NvbmZpZyAqbWVzYVZpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRFJJY29u dGV4dCAqZHJpQ29udGV4dFByaXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBtYWpvcl92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWlu b3JfdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgKmVycm9yLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqc2hhcmVkQ29udGV4dFByaXZhdGUpOwogCiAvKj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KICAqIGJyd19taXNjX3N0YXRlLmMKZGlmZiAtLWdpdCBhL3NyYy9tZXNhL2RyaXZlcnMv ZHJpL2k5NjUvaW50ZWxfbWlwbWFwX3RyZWUuYyBiL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2k5NjUv aW50ZWxfbWlwbWFwX3RyZWUuYwppbmRleCAyZjVlMDRmLi4wOGRiZTg4IDEwMDY0NAotLS0gYS9z cmMvbWVzYS9kcml2ZXJzL2RyaS9pOTY1L2ludGVsX21pcG1hcF90cmVlLmMKKysrIGIvc3JjL21l c2EvZHJpdmVycy9kcmkvaTk2NS9pbnRlbF9taXBtYXBfdHJlZS5jCkBAIC03MjUsNiArNzI1LDY3 IEBAIGludGVsX21pcHRyZWVfY3JlYXRlX2Zvcl9kcmkyX2J1ZmZlcihzdHJ1Y3QgYnJ3X2NvbnRl eHQgKmJydywKICAgIHJldHVybiBtdWx0aXNhbXBsZV9tdDsKIH0KIAorLyoqCisgKiBGb3IgYSBz aW5nbGVzYW1wbGUgaW1hZ2UgYnVmZmVyLCB0aGlzIHNpbXBseSB3cmFwcyB0aGUgZ2l2ZW4gcmVn aW9uIHdpdGggYSBtaXB0cmVlLgorICoKKyAqIEZvciBhIG11bHRpc2FtcGxlIGltYWdlIGJ1ZmZl ciwgdGhpcyB3cmFwcyB0aGUgZ2l2ZW4gcmVnaW9uIHdpdGgKKyAqIGEgc2luZ2xlc2FtcGxlIG1p cHRyZWUsIHRoZW4gY3JlYXRlcyBhIG11bHRpc2FtcGxlIG1pcHRyZWUgaW50byB3aGljaCB0aGUK KyAqIHNpbmdsZXNhbXBsZSBtaXB0cmVlIGlzIGVtYmVkZGVkIGFzIGEgY2hpbGQuCisgKi8KK3N0 cnVjdCBpbnRlbF9taXBtYXBfdHJlZSoKK2ludGVsX21pcHRyZWVfY3JlYXRlX2Zvcl9pbWFnZV9i dWZmZXIoc3RydWN0IGJyd19jb250ZXh0ICppbnRlbCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZW51bSBfX0RSSWltYWdlQnVmZmVyTWFzayBidWZmZXJfdHlwZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZm9ybWF0IGZvcm1hdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnVtX3NhbXBsZXMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9yZWdp b24gKnJlZ2lvbikKK3sKKyAgIHN0cnVjdCBpbnRlbF9taXBtYXBfdHJlZSAqc2luZ2xlc2FtcGxl X210ID0gTlVMTDsKKyAgIHN0cnVjdCBpbnRlbF9taXBtYXBfdHJlZSAqbXVsdGlzYW1wbGVfbXQg PSBOVUxMOworCisgICAvKiBPbmx5IHRoZSBmcm9udCBhbmQgYmFjayBidWZmZXJzLCB3aGljaCBh cmUgY29sb3IgYnVmZmVycywgYXJlIGFsbG9jYXRlZAorICAgICogdGhyb3VnaCB0aGUgaW1hZ2Ug bG9hZGVyLgorICAgICovCisgICBhc3NlcnQoX21lc2FfZ2V0X2Zvcm1hdF9iYXNlX2Zvcm1hdChm b3JtYXQpID09IEdMX1JHQiB8fAorICAgICAgICAgIF9tZXNhX2dldF9mb3JtYXRfYmFzZV9mb3Jt YXQoZm9ybWF0KSA9PSBHTF9SR0JBKTsKKworICAgc2luZ2xlc2FtcGxlX210ID0gaW50ZWxfbWlw dHJlZV9jcmVhdGVfZm9yX2JvKGludGVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+Ym8sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLT53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tPmhlaWdodCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tPnBpdGNoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+dGls aW5nKTsKKyAgIGlmICghc2luZ2xlc2FtcGxlX210KQorICAgICAgcmV0dXJuIE5VTEw7CisKKyAg IGludGVsX3JlZ2lvbl9yZWZlcmVuY2UoJnNpbmdsZXNhbXBsZV9tdC0+cmVnaW9uLCByZWdpb24p OworCisgICBpZiAobnVtX3NhbXBsZXMgPT0gMCkKKyAgICAgIHJldHVybiBzaW5nbGVzYW1wbGVf bXQ7CisKKyAgIG11bHRpc2FtcGxlX210ID0gaW50ZWxfbWlwdHJlZV9jcmVhdGVfZm9yX3JlbmRl cmJ1ZmZlcihpbnRlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLT53aWR0aCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tPmhlaWdo dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBudW1fc2FtcGxlcyk7CisgICBpZiAoIW11bHRpc2FtcGxlX210KSB7CisgICAgICBpbnRl bF9taXB0cmVlX3JlbGVhc2UoJnNpbmdsZXNhbXBsZV9tdCk7CisgICAgICByZXR1cm4gTlVMTDsK KyAgIH0KKworICAgbXVsdGlzYW1wbGVfbXQtPnNpbmdsZXNhbXBsZV9tdCA9IHNpbmdsZXNhbXBs ZV9tdDsKKyAgIG11bHRpc2FtcGxlX210LT5uZWVkX2Rvd25zYW1wbGUgPSBmYWxzZTsKKworICAg aW50ZWxfcmVnaW9uX3JlZmVyZW5jZSgmbXVsdGlzYW1wbGVfbXQtPnJlZ2lvbiwgcmVnaW9uKTsK KworICAgaWYgKGludGVsLT5pc19mcm9udF9idWZmZXJfcmVuZGVyaW5nICYmIGJ1ZmZlcl90eXBl ID09IF9fRFJJX0lNQUdFX0JVRkZFUl9GUk9OVCkgeworICAgICAgaW50ZWxfbWlwdHJlZV91cHNh bXBsZShpbnRlbCwgbXVsdGlzYW1wbGVfbXQpOworICAgfQorCisgICByZXR1cm4gbXVsdGlzYW1w bGVfbXQ7Cit9CisKIHN0cnVjdCBpbnRlbF9taXBtYXBfdHJlZSoKIGludGVsX21pcHRyZWVfY3Jl YXRlX2Zvcl9yZW5kZXJidWZmZXIoc3RydWN0IGJyd19jb250ZXh0ICpicncsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2Zvcm1hdCBmb3JtYXQsCmRpZmYgLS1naXQg YS9zcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTY1L2ludGVsX21pcG1hcF90cmVlLmggYi9zcmMvbWVz YS9kcml2ZXJzL2RyaS9pOTY1L2ludGVsX21pcG1hcF90cmVlLmgKaW5kZXggZDcxODEyNS4uODc3 N2E4YyAxMDA2NDQKLS0tIGEvc3JjL21lc2EvZHJpdmVycy9kcmkvaTk2NS9pbnRlbF9taXBtYXBf dHJlZS5oCisrKyBiL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2k5NjUvaW50ZWxfbWlwbWFwX3RyZWUu aApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiaW50ZWxfcmVnaW9ucy5oIgogI2luY2x1 ZGUgImludGVsX3Jlc29sdmVfbWFwLmgiCisjaW5jbHVkZSA8R0wvaW50ZXJuYWwvZHJpX2ludGVy ZmFjZS5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtNTI5LDYgKzUz MCwxMyBAQCBpbnRlbF9taXB0cmVlX2NyZWF0ZV9mb3JfZHJpMl9idWZmZXIoc3RydWN0IGJyd19j b250ZXh0ICpicncsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgbnVtX3NhbXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGludGVsX3JlZ2lvbiAqcmVnaW9uKTsKIAorc3RydWN0IGludGVsX21pcG1hcF90cmVlKgor aW50ZWxfbWlwdHJlZV9jcmVhdGVfZm9yX2ltYWdlX2J1ZmZlcihzdHJ1Y3QgYnJ3X2NvbnRleHQg KmludGVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gX19EUklp bWFnZUJ1ZmZlck1hc2sgYnVmZmVyX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ2xfZm9ybWF0IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCBudW1fc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfcmVnaW9uICpyZWdpb24pOworCiAvKioKICAqIENyZWF0 ZSBhIG1pcHRyZWUgYXBwcm9wcmlhdGUgYXMgdGhlIHN0b3JhZ2UgZm9yIGEgbm9uLXRleHR1cmUg cmVuZGVyYnVmZmVyLgogICogVGhlIG1pcHRyZWUgaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGll czoKZGlmZiAtLWdpdCBhL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2k5NjUvaW50ZWxfc2NyZWVuLmMg Yi9zcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTY1L2ludGVsX3NjcmVlbi5jCmluZGV4IGY5MzM5YzEu Ljc1NzE5MjEgMTAwNjQ0Ci0tLSBhL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2k5NjUvaW50ZWxfc2Ny ZWVuLmMKKysrIGIvc3JjL21lc2EvZHJpdmVycy9kcmkvaTk2NS9pbnRlbF9zY3JlZW4uYwpAQCAt MTE3Niw3ICsxMTc2LDggQEAgX19EUkljb25maWcgKippbnRlbEluaXRTY3JlZW4yKF9fRFJJc2Ny ZWVuICpwc3ApCiB7CiAgICBzdHJ1Y3QgaW50ZWxfc2NyZWVuICppbnRlbFNjcmVlbjsKIAotICAg aWYgKHBzcC0+ZHJpMi5sb2FkZXItPmJhc2UudmVyc2lvbiA8PSAyIHx8CisgICBpZiAocHNwLT5p bWFnZS5sb2FkZXIpIHsKKyAgIH0gZWxzZSBpZiAocHNwLT5kcmkyLmxvYWRlci0+YmFzZS52ZXJz aW9uIDw9IDIgfHwKICAgICAgICBwc3AtPmRyaTIubG9hZGVyLT5nZXRCdWZmZXJzV2l0aEZvcm1h dCA9PSBOVUxMKSB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwKIAkgICAgICAiXG5FUlJPUiEgIERS STIgbG9hZGVyIHdpdGggZ2V0QnVmZmVyc1dpdGhGb3JtYXQoKSAiCkBAIC0xMjY0LDcgKzEyNjUs NiBAQCBpbnRlbFJlbGVhc2VCdWZmZXIoX19EUklzY3JlZW4gKnNjcmVlbiwgX19EUklidWZmZXIg KmJ1ZmZlcikKICAgIGZyZWUoaW50ZWxCdWZmZXIpOwogfQogCi0KIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgX19Ecml2ZXJBUElSZWMgYnJ3X2RyaXZlcl9hcGkgPSB7CiAgICAuSW5pdFNjcmVlbgkJID0g aW50ZWxJbml0U2NyZWVuMiwKICAgIC5EZXN0cm95U2NyZWVuCSA9IGludGVsRGVzdHJveVNjcmVl biwKQEAgLTEyODUsNiArMTI4NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgX19EUklEcml2ZXJW dGFibGVFeHRlbnNpb25SZWMgYnJ3X3Z0YWJsZSA9IHsKIAogc3RhdGljIGNvbnN0IF9fRFJJZXh0 ZW5zaW9uICpicndfZHJpdmVyX2V4dGVuc2lvbnNbXSA9IHsKICAgICAmZHJpQ29yZUV4dGVuc2lv bi5iYXNlLAorICAgICZkcmlJbWFnZURyaXZlckV4dGVuc2lvbi5iYXNlLAogICAgICZkcmlEUkky RXh0ZW5zaW9uLmJhc2UsCiAgICAgJmJyd192dGFibGUuYmFzZSwKICAgICAmYnJ3X2NvbmZpZ19v cHRpb25zLmJhc2UsCi0tIAoxLjguNC4yCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=