Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1783933pxb; Mon, 8 Mar 2021 06:22:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJx15lZWotmdmDnkS0bnjX//0vuHSIhakjXHnMqdAPG7FRkVqx7IBgwjtFogzQWHpjYiy0PX X-Received: by 2002:a05:6402:1517:: with SMTP id f23mr22857815edw.272.1615213372201; Mon, 08 Mar 2021 06:22:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615213372; cv=none; d=google.com; s=arc-20160816; b=BvyaAClteMF0p/1vFhAoaEGQPqeCUGlAZxKciH0QiGh56kIm84lE8fd1bdIor0rKAa R4yE0LbY5dWvuqI/IP9F/+/1H8jQOIKofKjuE6DrtZzTED1dvJo9trTfMvis7W+zuywq /Rz22p8Nj3yaOg/T7apGrnxb8F8diZ8KWzCa/RTVTOZBHnP3J8eN3BguB1Y/urjAUtlz nj1s/HxsBxlsKhhQI2cB/pOPCGVqDNZdjCwM/GFqBQxto+/9ABs2gW9VMR6aUr3lU+MD DJlgsEXKCeV0XmjI3ic7HMRgKMvE6piGXOB4e4toRqyelOT6Bma5BwZ7CTY40IjyrGBw 344A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=Ljkjbuxz8H4S73rRWSpzlkKHdgWrkOkkYi5xVAvvF5g=; b=kv9K1QlsKOayoSd4gRxss/IxJ8X0a1ZaIecPrZ6+2Diy8cU8TuX5kHzXRxNUQ4Rw1m x+PNaKLocCBfKpI5ByeIa1TWDl8bbRHBy5Hp50m6/IuKraPbHhdnM4wBIZDOAwy4i2dI +nhQmnMy0ZvVSA8IpAv5SgolT/CAtQGs8PdAPvEi5LhmhkC+xji7OqY5rhu3zaRrEnV5 yLGKzx56BaLS0UFL5I8+9G+2rh970m+LVGO90/LVYMF3rjIJDEbgcxljDIITRIlcN7x1 WpbrPwdMfY+nTCscLPNoTkkbc3clcyUxtokuXLfWEV17uyXwSaQVQ51kMaBJYBVAA88p Af/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b="Ox/i1ryp"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u15si6645834edt.339.2021.03.08.06.22.27; Mon, 08 Mar 2021 06:22:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b="Ox/i1ryp"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229965AbhCHOT0 (ORCPT + 99 others); Mon, 8 Mar 2021 09:19:26 -0500 Received: from smtp-fw-6002.amazon.com ([52.95.49.90]:8315 "EHLO smtp-fw-6002.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229757AbhCHOTB (ORCPT ); Mon, 8 Mar 2021 09:19:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1615213141; x=1646749141; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=Ljkjbuxz8H4S73rRWSpzlkKHdgWrkOkkYi5xVAvvF5g=; b=Ox/i1rypmSsv/FU8T+zWBKWIZDTUzQZwiHfKjsfW28HJbsNFix/PwjJK BsmGIIjnEpATCfhaXSaFl1M6B4phgQPz/kNCiBWU6Ws1cqmPg6vbgnwPQ PKPnbsWzoJkxeT+d0aFZwuVBQGNBPWw9Liw0KqD/62ovBAc4MXCQysTig Y=; X-IronPort-AV: E=Sophos;i="5.81,232,1610409600"; d="scan'208";a="95288656" Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-1d-98acfc19.us-east-1.amazon.com) ([10.43.8.2]) by smtp-border-fw-out-6002.iad6.amazon.com with ESMTP; 08 Mar 2021 14:18:53 +0000 Received: from EX13D08EUB004.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan3.iad.amazon.com [10.40.163.38]) by email-inbound-relay-1d-98acfc19.us-east-1.amazon.com (Postfix) with ESMTPS id C11EFA1F1F; Mon, 8 Mar 2021 14:18:42 +0000 (UTC) Received: from uf6ed9c851f4556.ant.amazon.com (10.43.162.131) by EX13D08EUB004.ant.amazon.com (10.43.166.158) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 8 Mar 2021 14:18:27 +0000 From: Adrian Catangiu To: , , , , CC: , , , , , , <0x7f454c46@gmail.com>, , , , , , , , , , , , , , , , , , , , , , , , , , , , , Adrian Catangiu Subject: [PATCH v8] drivers/misc: sysgenid: add system generation id driver Date: Mon, 8 Mar 2021 16:18:03 +0200 Message-ID: <1615213083-29869-1-git-send-email-acatan@amazon.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-Originating-IP: [10.43.162.131] X-ClientProxiedBy: EX13D47UWA003.ant.amazon.com (10.43.163.9) To EX13D08EUB004.ant.amazon.com (10.43.166.158) Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org LSBCYWNrZ3JvdW5kIGFuZCBwcm9ibGVtCgpUaGUgU3lzdGVtIEdlbmVyYXRpb24gSUQgZmVhdHVy ZSBpcyByZXF1aXJlZCBpbiB2aXJ0dWFsaXplZCBvcgpjb250YWluZXJpemVkIGVudmlyb25tZW50 cyBieSBhcHBsaWNhdGlvbnMgdGhhdCB3b3JrIHdpdGggbG9jYWwgY29waWVzCm9yIGNhY2hlcyBv ZiB3b3JsZC11bmlxdWUgZGF0YSBzdWNoIGFzIHJhbmRvbSB2YWx1ZXMsIHV1aWRzLAptb25vdG9u aWNhbGx5IGluY3JlYXNpbmcgY291bnRlcnMsIGNyeXB0b2dyYXBoaWMgbm9uY2VzLCBldGMuClN1 Y2ggYXBwbGljYXRpb25zIGNhbiBiZSBuZWdhdGl2ZWx5IGFmZmVjdGVkIGJ5IFZNIG9yIGNvbnRh aW5lcgpzbmFwc2hvdHRpbmcgd2hlbiB0aGUgVk0gb3IgY29udGFpbmVyIGlzIGVpdGhlciBjbG9u ZWQgb3IgcmV0dXJuZWQgdG8KYW4gZWFybGllciBwb2ludCBpbiB0aW1lLgoKU29sdmluZyB0aGUg dW5pcXVlbmVzcyBwcm9ibGVtIHN0cm9uZ2x5IGVub3VnaCBmb3IgY3J5cHRvZ3JhcGhpYwpwdXJw b3NlcyByZXF1aXJlcyBhIG1lY2hhbmlzbSB3aGljaCBjYW4gZGV0ZXJtaW5pc3RpY2FsbHkgcmVz ZWVkCnVzZXJzcGFjZSBQUk5HcyB3aXRoIG5ldyBlbnRyb3B5IGF0IHJlc3RvcmUgdGltZS4gVGhp cyBtZWNoYW5pc20gbXVzdAphbHNvIHN1cHBvcnQgdGhlIGhpZ2gtdGhyb3VnaHB1dCBhbmQgbG93 LWxhdGVuY3kgdXNlLWNhc2VzIHRoYXQgbGVkCnByb2dyYW1tZXJzIHRvIHBpY2sgYSB1c2Vyc3Bh Y2UgUFJORyBpbiB0aGUgZmlyc3QgcGxhY2U7IGJlIHVzYWJsZSBieQpib3RoIGFwcGxpY2F0aW9u IGNvZGUgYW5kIGxpYnJhcmllczsgYWxsb3cgdHJhbnNwYXJlbnQgcmV0cm9maXR0aW5nCmJlaGlu ZCBleGlzdGluZyBwb3B1bGFyIFBSTkcgaW50ZXJmYWNlcyB3aXRob3V0IGNoYW5naW5nIGFwcGxp Y2F0aW9uCmNvZGU7IGl0IG11c3QgYmUgZWZmaWNpZW50LCBlc3BlY2lhbGx5IG9uIHNuYXBzaG90 IHJlc3RvcmU7IGFuZCBiZQpzaW1wbGUgZW5vdWdoIGZvciB3aWRlIGFkb3B0aW9uLgoKLSBTb2x1 dGlvbgoKVGhpcyBjb21taXQgaW50cm9kdWNlcyBhIG1lY2hhbmlzbSB0aGF0IHN0YW5kYXJkaXpl cyBhbiBBUEkgZm9yCmFwcGxpY2F0aW9ucyBhbmQgbGlicmFyaWVzIHRvIGJlIG1hZGUgYXdhcmUg b2YgdW5pcXVlbmVzcyBicmVha2luZwpldmVudHMgc3VjaCBhcyBWTSBvciBjb250YWluZXIgc25h cHNob3R0aW5nLCBhbmQgYWxsb3cgdGhlbSB0byByZWFjdAphbmQgYWRhcHQgdG8gc3VjaCBldmVu dHMuCgpUaGUgU3lzdGVtIEdlbmVyYXRpb24gSUQgaXMgbWVhbnQgdG8gaGVscCBpbiB0aGVzZSBz Y2VuYXJpb3MgYnkKcHJvdmlkaW5nIGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIHUzMiBjb3Vu dGVyIHRoYXQgY2hhbmdlcyBlYWNoIHRpbWUKdGhlIFZNIG9yIGNvbnRhaW5lciBpcyByZXN0b3Jl ZCBmcm9tIGEgc25hcHNob3QuCgpUaGUgYHN5c2dlbmlkYCBkcml2ZXIgZXhwb3NlcyBhIG1vbm90 b25pYyBpbmNyZW1lbnRhbCBTeXN0ZW0gR2VuZXJhdGlvbgp1MzIgY291bnRlciB2aWEgYSBjaGFy LWRldiBmaWxlc3lzdGVtIGludGVyZmFjZSBhY2Nlc3NpYmxlCnRocm91Z2ggYC9kZXYvc3lzZ2Vu aWRgLiBJdCBwcm92aWRlcyBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIFN5c0dlbgpjb3Vu dGVyIHVwZGF0ZSBub3RpZmljYXRpb25zLCBhcyB3ZWxsIGFzIGNvdW50ZXIgcmV0cmlldmFsIGFu ZApjb25maXJtYXRpb24gbWVjaGFuaXNtcy4KVGhlIGNvdW50ZXIgc3RhcnRzIGZyb20gemVybyB3 aGVuIHRoZSBkcml2ZXIgaXMgaW5pdGlhbGl6ZWQgYW5kCm1vbm90b25pY2FsbHkgaW5jcmVtZW50 cyBldmVyeSB0aW1lIHRoZSBzeXN0ZW0gZ2VuZXJhdGlvbiBjaGFuZ2VzLgoKVXNlcnNwYWNlIGFw cGxpY2F0aW9ucyBvciBsaWJyYXJpZXMgY2FuIChhKXN5bmNocm9ub3VzbHkgY29uc3VtZSB0aGUK c3lzdGVtIGdlbmVyYXRpb24gY291bnRlciB0aHJvdWdoIHRoZSBwcm92aWRlZCBmaWxlc3lzdGVt IGludGVyZmFjZSwgdG8KbWFrZSBhbnkgbmVjZXNzYXJ5IGludGVybmFsIGFkanVzdG1lbnRzIGZv bGxvd2luZyBhIHN5c3RlbSBnZW5lcmF0aW9uCnVwZGF0ZS4KClRoZSBwcm92aWRlZCBmaWxlc3lz dGVtIGludGVyZmFjZSBvcGVyYXRpb25zIGNhbiBiZSB1c2VkIHRvIGJ1aWxkIGEKc3lzdGVtIGxl dmVsIHNhZmUgd29ya2Zsb3cgdGhhdCBndWVzdCBzb2Z0d2FyZSBjYW4gZm9sbG93IHRvIHByb3Rl Y3QKaXRzZWxmIGZyb20gbmVnYXRpdmUgc3lzdGVtIHNuYXBzaG90IGVmZmVjdHMuCgpTeXN0ZW0g Z2VuZXJhdGlvbiBjaGFuZ2VzIGFyZSBkcml2ZW4gYnkgdXNlcnNwYWNlIHNvZnR3YXJlIHRocm91 Z2ggYQpkZWRpY2F0ZWQgZHJpdmVyIGlvY3RsLgoKKipQbGVhc2Ugbm90ZSoqLCBTeXNHZW5JRCBh bG9uZSBkb2VzIG5vdCBndWFyYW50ZWUgY29tcGxldGUgc25hcHNob3QKc2FmZXR5IHRvIGFwcGxp Y2F0aW9ucyB1c2luZyBpdC4gQSBjZXJ0YWluIHdvcmtmbG93IG5lZWRzIHRvIGJlCmZvbGxvd2Vk IGF0IHRoZSBzeXN0ZW0gbGV2ZWwsIGluIG9yZGVyIHRvIG1ha2UgdGhlIHN5c3RlbQpzbmFwc2hv dC1yZXNpbGllbnQuIFBsZWFzZSBzZWUgdGhlICJTbmFwc2hvdCBTYWZldHkgUHJlcmVxdWlzaXRl cyIKc2VjdGlvbiBpbiB0aGUgaW5jbHVkZWQgZG9jdW1lbnRhdGlvbi4KClNpZ25lZC1vZmYtYnk6 IEFkcmlhbiBDYXRhbmdpdSA8YWNhdGFuQGFtYXpvbi5jb20+Ci0tLQp2NyAtPiB2ODoKICAtIHJl bW92ZSB2bWdlbmlkIGRyaXZlcgogIC0gc3lzZ2VuaWQ6IHJlbW92ZSBzdXBwb3J0IGZvciBIVyBi YWNrZW5kcywgU3lzR2VuSUQgaXMgbm93IGRyaXZlbgogICAgYnkgc29mdHdhcmUgdGhyb3VnaCBh IHNhZmUsIGNvbnNpc3RlbnQgaW50ZXJmYWNlCiAgLSB3aXRob3V0IEhXIGJhY2tlbmQgdGhlcmUg aXMgbm8gSVJRIHRvIHJhY2Ugd2l0aCBtbWFwKCkgaW50ZXJmYWNlCiAgLSB1cGRhdGUgZG9jdW1l bnRhdGlvbgoKdjYgLT4gdjc6CiAgLSByZW1vdmUgc3lzZ2VuaWQgdWV2ZW50Cgp2NSAtPiB2NjoK CiAgLSBzeXNnZW5pZDogd2F0Y2hlciB0cmFja2luZyBkaXNhYmxlZCBieSBkZWZhdWx0CiAgLSBz eXNnZW5pZDogYWRkIFNZU0dFTklEX1NFVF9XQVRDSEVSX1RSQUNLSU5HIGlvY3RsIHRvIGFsbG93 IGVhY2gKICAgIGZpbGUgZGVzY3JpcHRvciB0byBzZXQgd2hldGhlciB0aGV5IHNob3VsZCBiZSB0 cmFja2VkIGFzIHdhdGNoZXJzCiAgLSByZW5hbWUgU1lTR0VOSURfRk9SQ0VfR0VOX1VQREFURSAt PiBTWVNHRU5JRF9UUklHR0VSX0dFTl9VUERBVEUKICAtIHJld29yayBhbGwgZG9jdW1lbnRhdGlv biB0byBjbGVhcmx5IGNhcHR1cmUgYWxsIHByZXJlcXVpc2l0ZXMgZm9yCiAgICBhY2hpZXZpbmcg c25hcHNob3Qgc2FmZXR5IHdoZW4gdXNpbmcgdGhlIHByb3ZpZGVkIG1lY2hhbmlzbQogIC0gc3lz Z2VuaWQgZG9jdW1lbnRhdGlvbjogcmVwbGFjZSBpbmRpdmlkdWFsIGZpbGVzeXN0ZW0gb3BlcmF0 aW9ucwogICAgZXhhbXBsZXMgd2l0aCBhIGhpZ2hlciBsZXZlbCBleGFtcGxlIHNob3djYXNpbmcg c3lzdGVtLWxldmVsCiAgICBzbmFwc2hvdC1zYWZlIHdvcmtmbG93Cgp2NCAtPiB2NToKCiAgLSBz eXNnZW5pZDogZ2VuZXJhdGlvbiBjaGFuZ2VzIGFyZSBhbHNvIGV4cG9ydGVkIHRocm91Z2ggdWV2 ZW50cwogIC0gcmVtb3ZlIFNZU0dFTklEX0dFVF9PVVREQVRFRF9XQVRDSEVSUyBpb2N0bAogIC0g ZG9jdW1lbnQgc3lzZ2VuaWQgaW9jdGwgbWFqb3IvbWlub3IgbnVtYmVycwoKdjMgLT4gdjQ6Cgog IC0gc3BsaXQgZnVuY3Rpb25hbGl0eSBpbiB0d28gc2VwYXJhdGUga2VybmVsIG1vZHVsZXM6IAog ICAgMS4gZHJpdmVycy9taXNjL3N5c2dlbmlkLmMgd2hpY2ggcHJvdmlkZXMgdGhlIGdlbmVyaWMg dXNlcnNwYWNlCiAgICAgICBpbnRlcmZhY2UgYW5kIG1lY2hhbmlzbXMKICAgIDIuIGRyaXZlcnMv dmlydC92bWdlbmlkLmMgYXMgVk1HRU5JRCBhY3BpIGRldmljZSBkcml2ZXIgdGhhdCBzZWVkcwog ICAgICAga2VybmVsIGVudHJvcHkgYW5kIGFjdHMgYXMgYSBkcml2aW5nIGJhY2tlbmQgZm9yIHRo ZSBnZW5lcmljCiAgICAgICBzeXNnZW5pZAogIC0gcmVuYW1lIC9kZXYvdm1nZW5pZCAtPiAvZGV2 L3N5c2dlbmlkCiAgLSByZW5hbWUgdWFwaSBoZWFkZXIgZmlsZSB2bWdlbmlkLmggLT4gc3lzZ2Vu aWQuaAogIC0gcmVuYW1lIGlvY3RscyBWTUdFTklEXyogLT4gU1lTR0VOSURfKgogIC0gYWRkIOKA mG1pbl9nZW7igJkgcGFyYW1ldGVyIHRvIFNZU0dFTklEX0ZPUkNFX0dFTl9VUERBVEUgaW9jdGwK ICAtIGZpeCByYWNlcyBpbiBkb2N1bWVudGF0aW9uIGV4YW1wbGVzCgp2MiAtPiB2MzoKCiAgLSBz ZXBhcmF0ZSB0aGUgY29yZSBkcml2ZXIgbG9naWMgYW5kIGludGVyZmFjZSwgZnJvbSB0aGUgQUNQ SSBkZXZpY2UuCiAgICBUaGUgQUNQSSB2bWdlbmlkIGRldmljZSBpcyBub3cgb25lIHBvc3NpYmxl IGJhY2tlbmQKICAtIGZpeCBpc3N1ZSB3aGVuIHRpbWVvdXQ9MCBpbiBWTUdFTklEX1dBSVRfV0FU Q0hFUlMKICAtIGFkZCBsb2NraW5nIHRvIGF2b2lkIHJhY2VzIGJldHdlZW4gZnMgb3BzIGhhbmRs ZXJzIGFuZCBodyBpcnEKICAgIGRyaXZlbiBnZW5lcmF0aW9uIHVwZGF0ZXMKICAtIGNoYW5nZSBW TUdFTklEX1dBSVRfV0FUQ0hFUlMgaW9jdGwgc28gaWYgdGhlIGN1cnJlbnQgY2FsbGVyIGlzCiAg ICBvdXRkYXRlZCBvciBhIGdlbmVyYXRpb24gY2hhbmdlIGhhcHBlbnMgd2hpbGUgd2FpdGluZyAo dGh1cyBtYWtpbmcKICAgIGN1cnJlbnQgY2FsbGVyIG91dGRhdGVkKSwgdGhlIGlvY3RsIHJldHVy bnMgLUVJTlRSIHRvIHNpZ25hbCB0aGUKICAgIHVzZXIgdG8gaGFuZGxlIGV2ZW50IGFuZCByZXRy eS4gRml4ZXMgYmxvY2tpbmcgb24gb25lc2VsZgogIC0gYWRkIFZNR0VOSURfRk9SQ0VfR0VOX1VQ REFURSBpb2N0bCBjb25kaXRpb25lZCBieQogICAgQ0FQX0NIRUNLUE9JTlRfUkVTVE9SRSBjYXBh YmlsaXR5LCB0aHJvdWdoIHdoaWNoIHNvZnR3YXJlIGNhbiBmb3JjZQogICAgZ2VuZXJhdGlvbiBi dW1wCgp2MSAtPiB2MjoKCiAgLSBleHBvc2UgdG8gdXNlcnNwYWNlIGEgbW9ub3RvbmljYWxseSBp bmNyZWFzaW5nIHUzMiBWbSBHZW4gQ291bnRlcgogICAgaW5zdGVhZCBvZiB0aGUgaHcgVm1HZW4g VVVJRAogIC0gc2luY2UgdGhlIGh3L2h5cGVydmlzb3ItcHJvdmlkZWQgMTI4LWJpdCBVVUlEIGlz IG5vdCBwdWJsaWMKICAgIGFueW1vcmUsIGFkZCBpdCB0byB0aGUga2VybmVsIFJORyBhcyBkZXZp Y2UgcmFuZG9tbmVzcwogIC0gaW5zZXJ0IGRyaXZlciBwYWdlIGNvbnRhaW5pbmcgVm0gR2VuIENv dW50ZXIgaW4gdGhlIHVzZXIgdm1hIGluCiAgICB0aGUgZHJpdmVyJ3MgbW1hcCBoYW5kbGVyIGlu c3RlYWQgb2YgdXNpbmcgYSBmYXVsdCBoYW5kbGVyCiAgLSB0dXJuIGRyaXZlciBpbnRvIGEgbWlz YyBkZXZpY2UgZHJpdmVyIHRvIGF1dG8tY3JlYXRlIC9kZXYvdm1nZW5pZAogIC0gY2hhbmdlIGlv Y3RsIGFyZyB0byBhdm9pZCBsZWFraW5nIGtlcm5lbCBzdHJ1Y3RzIHRvIHVzZXJzcGFjZQogIC0g dXBkYXRlIGRvY3VtZW50YXRpb24KLS0tCiBEb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9zeXNn ZW5pZC5yc3QgICAgICAgICAgICB8IDIyOCArKysrKysrKysrKysrKysKIERvY3VtZW50YXRpb24v dXNlcnNwYWNlLWFwaS9pb2N0bC9pb2N0bC1udW1iZXIucnN0IHwgICAxICsKIE1BSU5UQUlORVJT ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICsKIGRyaXZlcnMv bWlzYy9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE1ICsKIGRyaXZl cnMvbWlzYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRy aXZlcnMvbWlzYy9zeXNnZW5pZC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzE2ICsr KysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS91YXBpL2xpbnV4L3N5c2dlbmlkLmggICAgICAg ICAgICAgICAgICAgICAgfCAgMTQgKwogNyBmaWxlcyBjaGFuZ2VkLCA1ODMgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL3N5c2dlbmlk LnJzdAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWlzYy9zeXNnZW5pZC5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgaW5jbHVkZS91YXBpL2xpbnV4L3N5c2dlbmlkLmgKCmRpZmYgLS1naXQgYS9E b2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9zeXNnZW5pZC5yc3QgYi9Eb2N1bWVudGF0aW9uL21p c2MtZGV2aWNlcy9zeXNnZW5pZC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMjFmNzQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2Vz L3N5c2dlbmlkLnJzdApAQCAtMCwwICsxLDIyOCBAQAorLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAKKworPT09PT09PT0KK1NZU0dFTklECis9PT09PT09PQorCitUaGUgU3lzdGVt IEdlbmVyYXRpb24gSUQgZmVhdHVyZSBpcyByZXF1aXJlZCBpbiB2aXJ0dWFsaXplZCBvcgorY29u dGFpbmVyaXplZCBlbnZpcm9ubWVudHMgYnkgYXBwbGljYXRpb25zIHRoYXQgd29yayB3aXRoIGxv Y2FsIGNvcGllcworb3IgY2FjaGVzIG9mIHdvcmxkLXVuaXF1ZSBkYXRhIHN1Y2ggYXMgcmFuZG9t IHZhbHVlcywgVVVJRHMsCittb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgY291bnRlcnMsIGV0Yy4K K1N1Y2ggYXBwbGljYXRpb25zIGNhbiBiZSBuZWdhdGl2ZWx5IGFmZmVjdGVkIGJ5IFZNIG9yIGNv bnRhaW5lcgorc25hcHNob3R0aW5nIHdoZW4gdGhlIFZNIG9yIGNvbnRhaW5lciBpcyBlaXRoZXIg Y2xvbmVkIG9yIHJldHVybmVkIHRvCithbiBlYXJsaWVyIHBvaW50IGluIHRpbWUuCisKK1RoZSBT eXN0ZW0gR2VuZXJhdGlvbiBJRCBkZXZpY2UgaXMgbWVhbnQgdG8gaGVscCBpbiB0aGVzZSBzY2Vu YXJpb3MgYnkKK3Byb3ZpZGluZyBhIHN5c3RlbSBsZXZlbCBpbnRlcmZhY2UgZm9yIGFwcGxpY2F0 aW9ucyBhbmQgbGlicmFyaWVzIHRvCitjb25zdW1lIGFuZCBzeW5jaHJvbml6ZSBhZ2FpbnN0IHRo ZSBTeXN0ZW0gR2VuZXJhdGlvbiBJRC4KK1RoZSBTeXNHZW5JRCBpcyBhIG1vbm90b25pY2FsbHkg aW5jcmVhc2luZyBjb3VudGVyIHRoYXQgaXMgbWVhbnQgdG8KK2NoYW5nZXMgZWFjaHRpbWUgdGhl IHN5c3RlbSBnZW5lcmF0aW9uIGNoYW5nZXMsIGZvciBleGFtcGxlIGFmdGVyIGEgVk0KK29yIGNv bnRhaW5lciBpcyByZXN0b3JlZCBmcm9tIGEgc25hcHNob3QuIFRoZSBkcml2ZXIgZm9yIGl0IGxp dmVzIGF0CitgYGRyaXZlcnMvbWlzYy9zeXNnZW5pZC5jYGAuCisKK1RoZSBgYHN5c2dlbmlkYGAg ZHJpdmVyIGV4cG9zZXMgYSBtb25vdG9uaWMgaW5jcmVtZW50YWwgU3lzdGVtCitHZW5lcmF0aW9u IHUzMiBjb3VudGVyIHZpYSBhIGNoYXItZGV2IGZpbGVzeXN0ZW0gaW50ZXJmYWNlIGFjY2Vzc2li bGUKK3Rocm91Z2ggYGAvZGV2L3N5c2dlbmlkYGAgdGhhdCBwcm92aWRlcyBzeW5jIGFuZCBhc3lu YyBTeXNHZW4gY291bnRlcgordXBkYXRlIG5vdGlmaWNhdGlvbnMuIEl0IGFsc28gcHJvdmlkZXMg U3lzR2VuIGNvdW50ZXIgcmV0cmlldmFsIGFuZAorY29uZmlybWF0aW9uIG1lY2hhbmlzbXMuCisK K1RoZSBjb3VudGVyIHN0YXJ0cyBmcm9tIHplcm8gd2hlbiB0aGUgZHJpdmVyIGlzIGluaXRpYWxp emVkIGFuZAorbW9ub3RvbmljYWxseSBpbmNyZW1lbnRzIGV2ZXJ5IHRpbWUgdGhlIHN5c3RlbSBn ZW5lcmF0aW9uIGNoYW5nZXMuCisKK1N5c3RlbSBnZW5lcmF0aW9uIGNoYW5nZXMgYXJlIGRyaXZl biBieSB1c2Vyc3BhY2Ugc29mdHdhcmUgdGhyb3VnaCBhCitkZWRpY2F0ZWQgZHJpdmVyIGlvY3Rs LgorCitVc2Vyc3BhY2UgYXBwbGljYXRpb25zIG9yIGxpYnJhcmllcyBjYW4gKGEpc3luY2hyb25v dXNseSBjb25zdW1lIHRoZQorc3lzdGVtIGdlbmVyYXRpb24gY291bnRlciB0aHJvdWdoIHRoZSBw cm92aWRlZCBmaWxlc3lzdGVtIGludGVyZmFjZSwgdG8KK21ha2UgYW55IG5lY2Vzc2FyeSBpbnRl cm5hbCBhZGp1c3RtZW50cyBmb2xsb3dpbmcgYSBzeXN0ZW0gZ2VuZXJhdGlvbgordXBkYXRlLgor CisqKlBsZWFzZSBub3RlKiosIFN5c0dlbklEIGFsb25lIGRvZXMgbm90IGd1YXJhbnRlZSBjb21w bGV0ZSBzbmFwc2hvdAorc2FmZXR5IHRvIGFwcGxpY2F0aW9ucyB1c2luZyBpdC4gQSBjZXJ0YWlu IHdvcmtmbG93IG5lZWRzIHRvIGJlCitmb2xsb3dlZCBhdCB0aGUgc3lzdGVtIGxldmVsLCBpbiBv cmRlciB0byBtYWtlIHRoZSBzeXN0ZW0KK3NuYXBzaG90LXJlc2lsaWVudC4gUGxlYXNlIHNlZSB0 aGUgIlNuYXBzaG90IFNhZmV0eSBQcmVyZXF1aXNpdGVzIgorc2VjdGlvbiBiZWxvdy4KKworRHJp dmVyIGZpbGVzeXN0ZW0gaW50ZXJmYWNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor YGBvcGVuKClgYDoKKyAgV2hlbiB0aGUgZGV2aWNlIGlzIG9wZW5lZCwgYSBjb3B5IG9mIHRoZSBj dXJyZW50IFN5c0dlbklEIChjb3VudGVyKQorICBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIG9wZW4g ZmlsZSBkZXNjcmlwdG9yLiBFdmVyeSBvcGVuIGZpbGUKKyAgZGVzY3JpcHRvciB3aWxsIGhhdmUg cmVhZGFibGUgZGF0YSBhdmFpbGFibGUgKEVQT0xMSU4pIHdoaWxlIGl0cworICBjdXJyZW50IGNv cHkgb2YgdGhlIFN5c0dlbklEIGlzIG91dGRhdGVkLiBSZWFkaW5nIGZyb20gdGhlIGZkIHdpbGwK KyAgcHJvdmlkZSB0aGUgbGF0ZXN0IFN5c0dlbklELCB3aGlsZSB3cml0aW5nIHRvIHRoZSBmZCB3 aWxsIHVwZGF0ZSB0aGUKKyAgZmQtbG9jYWwgY29weSBvZiB0aGUgU3lzR2VuSUQgYW5kIGlzIHVz ZWQgYXMgYSBjb25maXJtYXRpb24KKyAgbWVjaGFuaXNtLgorCitgYHJlYWQoKWBgOgorICBSZWFk IGlzIG1lYW50IHRvIHByb3ZpZGUgdGhlICpuZXcqIHN5c3RlbSBnZW5lcmF0aW9uIGNvdW50ZXIg d2hlbiBhCisgIGdlbmVyYXRpb24gY2hhbmdlIHRha2VzIHBsYWNlLiBUaGUgcmVhZCBvcGVyYXRp b24gYmxvY2tzIHVudGlsIHRoZQorICBhc3NvY2lhdGVkIGNvdW50ZXIgaXMgbm8gbG9uZ2VyIHVw IHRvIGRhdGUsIGF0IHdoaWNoIHBvaW50IHRoZSBuZXcKKyAgY291bnRlciBpcyBwcm92aWRlZC9y ZXR1cm5lZC4gIE5vbmJsb2NraW5nIGBgcmVhZCgpYGAgcmV0dXJucworICBgYEVBR0FJTmBgIHRv IHNpZ25hbCB0aGF0IHRoZXJlIGlzIG5vICpuZXcqIGNvdW50ZXIgdmFsdWUgYXZhaWxhYmxlLgor ICBUaGUgZ2VuZXJhdGlvbiBjb3VudGVyIGlzIGNvbnNpZGVyZWQgKm5ldyogZm9yIGVhY2ggb3Bl biBmaWxlCisgIGRlc2NyaXB0b3IgdGhhdCBoYXNuJ3QgY29uZmlybWVkIHRoZSBuZXcgdmFsdWUg Zm9sbG93aW5nIGEgZ2VuZXJhdGlvbgorICBjaGFuZ2UuIFRoZXJlZm9yZSwgb25jZSBhIGdlbmVy YXRpb24gY2hhbmdlIHRha2VzIHBsYWNlLCBhbGwKKyAgYGByZWFkKClgYCBjYWxscyB3aWxsIGlt bWVkaWF0ZWx5IHJldHVybiB0aGUgbmV3IGdlbmVyYXRpb24gY291bnRlcgorICBhbmQgd2lsbCBj b250aW51ZSB0byBkbyBzbyB1bnRpbCB0aGUgbmV3IHZhbHVlIGlzIGNvbmZpcm1lZCBiYWNrIHRv CisgIHRoZSBkcml2ZXIgdGhyb3VnaCBgYHdyaXRlKClgYC4KKyAgUGFydGlhbCByZWFkcyBhcmUg bm90IGFsbG93ZWQgLSByZWFkIGJ1ZmZlciBuZWVkcyB0byBiZSBhdCBsZWFzdAorICAzMiBiaXRz IGluIHNpemUuCisKK2Bgd3JpdGUoKWBgOgorICBXcml0ZSBpcyB1c2VkIHRvIGNvbmZpcm0gdGhl IHVwLXRvLWRhdGUgU3lzR2VuSUQgY291bnRlciBiYWNrIHRvIHRoZQorICBkcml2ZXIuCisgIEZv bGxvd2luZyBhIFZNIGdlbmVyYXRpb24gY2hhbmdlLCBhbGwgZXhpc3Rpbmcgd2F0Y2hlcnMgYXJl IG1hcmtlZAorICBhcyAqb3V0ZGF0ZWQqLiBFYWNoIGZpbGUgZGVzY3JpcHRvciB3aWxsIG1haW50 YWluIHRoZSAqb3V0ZGF0ZWQqCisgIHN0YXR1cyB1bnRpbCBhIGBgd3JpdGUoKWBgIGNvbnRhaW5p bmcgdGhlIG5ldyB1cC10by1kYXRlIGdlbmVyYXRpb24KKyAgY291bnRlciBpcyB1c2VkIGFzIGFu IHVwZGF0ZSBjb25maXJtYXRpb24gbWVjaGFuaXNtLgorICBQYXJ0aWFsIHdyaXRlcyBhcmUgbm90 IGFsbG93ZWQgLSB3cml0ZSBidWZmZXIgc2hvdWxkIGJlIGV4YWN0bHkKKyAgMzIgYml0cyBpbiBz aXplLgorCitgYHBvbGwoKWBgOgorICBQb2xsIGlzIGltcGxlbWVudGVkIHRvIGFsbG93IHBvbGxp bmcgZm9yIGdlbmVyYXRpb24gY291bnRlciB1cGRhdGVzLgorICBTdWNoIHVwZGF0ZXMgcmVzdWx0 IGluIGBgRVBPTExJTmBgIHBvbGxpbmcgc3RhdHVzIHVudGlsIHRoZSBuZXcKKyAgdXAtdG8tZGF0 ZSBjb3VudGVyIGlzIGNvbmZpcm1lZCBiYWNrIHRvIHRoZSBkcml2ZXIgdGhyb3VnaCBhCisgIGBg d3JpdGUoKWBgLgorCitgYGlvY3RsKClgYDoKKyAgVGhlIGRyaXZlciBhbHNvIGFkZHMgc3VwcG9y dCBmb3Igd2FpdGluZyBvbiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMKKyAgdGhhdCBoYXZlbid0IGFj a25vd2xlZGdlZCBhIGdlbmVyYXRpb24gY291bnRlciB1cGRhdGUsIGFzIHdlbGwgYXMgYQorICBt ZWNoYW5pc20gZm9yIHVzZXJzcGFjZSB0byAqdHJpZ2dlciogYSBnZW5lcmF0aW9uIHVwZGF0ZToK KworICAtIFNZU0dFTklEX1NFVF9XQVRDSEVSX1RSQUNLSU5HOiB0YWtlcyBhIGJvb2wgYXJndW1l bnQgdG8gc2V0IHRyYWNraW5nCisgICAgc3RhdHVzIGZvciBjdXJyZW50IGZpbGUgZGVzY3JpcHRv ci4gV2hlbiB3YXRjaGVyIHRyYWNraW5nIGlzCisgICAgZW5hYmxlZCwgdGhlIGRyaXZlciB0cmFj a3MgdGhpcyBmaWxlIGRlc2NyaXB0b3IgYXMgYW4gaW5kZXBlbmRlbnQKKyAgICAqd2F0Y2hlciou IFRoZSBkcml2ZXIga2VlcHMgYWNjb3VudGluZyBvZiBob3cgbWFueSB3YXRjaGVycyBoYXZlCisg ICAgY29uZmlybWVkIHRoZSBsYXRlc3QgU3lzLUdlbi1JZCBjb3VudGVyIGFuZCBob3cgbWFueSBv ZiB0aGVtIGFyZQorICAgICpvdXRkYXRlZCo7IGFuIG91dGRhdGVkIHdhdGNoZXIgaXMgYSAqdHJh Y2tlZCogb3BlbiBmaWxlIGRlc2NyaXB0b3IKKyAgICB0aGF0IGhhcyBsaXZlZCB0aHJvdWdoIGEg U3lzLUdlbi1JZCBjaGFuZ2UgYnV0IGhhcyBub3QgeWV0IGNvbmZpcm1lZAorICAgIHRoZSBuZXcg Z2VuZXJhdGlvbiBjb3VudGVyLgorICAgIFNvZnR3YXJlIHRoYXQgd2FudHMgdG8gYmUgd2FpdGVk IG9uIGJ5IHRoZSBzeXN0ZW0gd2hpbGUgaXQgYWRqdXN0cworICAgIHRvIGdlbmVyYXRpb24gY2hh bmdlcywgc2hvdWxkIHR1cm4gdHJhY2tpbmcgb24uIFRoZSBzeXNnZW5pZCBkcml2ZXIKKyAgICB0 aGVuIGtlZXBzIHRyYWNrIG9mIGl0IGFuZCBjYW4gYmxvY2sgc3lzdGVtLWxldmVsIGFkanVzdG1l bnQgcHJvY2VzcworICAgIHVudGlsIHRoZSBzb2Z0d2FyZSBoYXMgZmluaXNoZWQgYWRqdXN0aW5n IGFuZCBjb25maXJtZWQgaXQgdGhyb3VnaCBhCisgICAgYGB3cml0ZSgpYGAuCisgICAgVHJhY2tp bmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBhbmQgZmlsZSBkZXNjcmlwdG9ycyBuZWVkIHRvCisg ICAgZXhwbGljaXRseSBvcHQtaW4gdXNpbmcgdGhpcyBJT0NUTC4KKyAgLSBTWVNHRU5JRF9XQUlU X1dBVENIRVJTOiBibG9ja3MgdW50aWwgdGhlcmUgYXJlIG5vIG1vcmUgKm91dGRhdGVkKgorICAg IHRyYWNrZWQgd2F0Y2hlcnMgb3IsIGlmIGEgYGB0aW1lb3V0YGAgYXJndW1lbnQgaXMgcHJvdmlk ZWQsIHVudGlsCisgICAgdGhlIHRpbWVvdXQgZXhwaXJlcy4KKyAgICBJZiB0aGUgY3VycmVudCBj YWxsZXIgaXMgKm91dGRhdGVkKiBvciBhIGdlbmVyYXRpb24gY2hhbmdlIGhhcHBlbnMKKyAgICB3 aGlsZSB3YWl0aW5nICh0aHVzIG1ha2luZyBjdXJyZW50IGNhbGxlciAqb3V0ZGF0ZWQqKSwgdGhl IGlvY3RsCisgICAgcmV0dXJucyBgYC1FSU5UUmBgIHRvIHNpZ25hbCB0aGUgdXNlciB0byBoYW5k bGUgZXZlbnQgYW5kIHJldHJ5LgorICAtIFNZU0dFTklEX1RSSUdHRVJfR0VOX1VQREFURTogdHJp Z2dlcnMgYSBnZW5lcmF0aW9uIGNvdW50ZXIgaW5jcmVtZW50LgorICAgIEl0IHRha2VzIGEgYGBt aW5pbXVtLWdlbmVyYXRpb25gYCBhcmd1bWVudCB3aGljaCByZXByZXNlbnRzIHRoZQorICAgIG1p bmltdW0gdmFsdWUgdGhlIGdlbmVyYXRpb24gY291bnRlciB3aWxsIGJlIHNldCB0by4gRm9yIGV4 YW1wbGUgaWYKKyAgICBjdXJyZW50IGdlbmVyYXRpb24gaXMgYGB4YGAgYW5kIGBgU1lTR0VOSURf VFJJR0dFUl9HRU5fVVBEQVRFKHkpYGAKKyAgICBpcyBjYWxsZWQsIHRoZSBnZW5lcmF0aW9uIGNv dW50ZXIgd2lsbCBpbmNyZW1lbnQgdG8gYGBNQVgoeSx4KzEpYGAuCisgICAgVGhpcyBJT0NUTCBj YW4gb25seSBiZSB1c2VkIGJ5IHByb2Nlc3NlcyB3aXRoIENBUF9DSEVDS1BPSU5UX1JFU1RPUkUK KyAgICBvciBDQVBfU1lTX0FETUlOIGNhcGFiaWxpdGllcy4KKworYGBtbWFwKClgYDoKKyAgVGhl IGRyaXZlciBzdXBwb3J0cyBgYFBST1RfUkVBRCwgTUFQX1NIQVJFRGBgIG1tYXBzIG9mIGEgc2lu Z2xlIHBhZ2UKKyAgaW4gc2l6ZS4gVGhlIGZpcnN0IDQgYnl0ZXMgb2YgdGhlIG1hcHBlZCBwYWdl IHdpbGwgY29udGFpbiBhbgorICB1cC10by1kYXRlIHUzMiBjb3B5IG9mIHRoZSBzeXN0ZW0gZ2Vu ZXJhdGlvbiBjb3VudGVyLgorICBUaGUgbWFwcGVkIG1lbW9yeSBjYW4gYmUgdXNlZCBhcyBhIGxv dy1sYXRlbmN5IGdlbmVyYXRpb24gY291bnRlcgorICBwcm9iZSBtZWNoYW5pc20gaW4gY3JpdGlj YWwgc2VjdGlvbnMuCisgIFRoZSBtbWFwKCkgaW50ZXJmYWNlIGlzIHRhcmdldGVkIGF0IGxpYnJh cmllcyBvciBjb2RlIHRoYXQgbmVlZHMgdG8KKyAgY2hlY2sgZm9yIGdlbmVyYXRpb24gY2hhbmdl cyBpbi1saW5lLCB3aGVyZSBhbiBldmVudCBsb29wIGlzIG5vdAorICBhdmFpbGFibGUgb3IgcmVh ZCgpL3dyaXRlKCkgc3lzY2FsbHMgYXJlIHRvbyBleHBlbnNpdmUuCisgIEluIHN1Y2ggY2FzZXMs IGxvZ2ljIGNhbiBiZSBhZGRlZCBpbi1saW5lIHdpdGggdGhlIHNlbnNpdGl2ZSBjb2RlIHRvCisg IGNoZWNrIGFuZCB0cmlnZ2VyIG9uLWRlbWFuZC9qdXN0LWluLXRpbWUgcmVhZGp1c3RtZW50cyB3 aGVuIGNoYW5nZXMKKyAgYXJlIGRldGVjdGVkIG9uIHRoZSBtZW1vcnkgbWFwcGVkIGdlbmVyYXRp b24gY291bnRlci4KKyAgVXNlcnMgb2YgdGhpcyBpbnRlcmZhY2UgdGhhdCBwbGFuIHRvIGxhemls eSBhZGp1c3Qgc2hvdWxkIG5vdCBlbmFibGUKKyAgd2F0Y2hlciB0cmFja2luZywgc2luY2Ugd2Fp dGluZyBvbiB0aGVtIGRvZXNuJ3QgbWFrZSBzZW5zZS4KKworYGBjbG9zZSgpYGA6CisgIFJlbW92 ZXMgdGhlIGZpbGUgZGVzY3JpcHRvciBhcyBhIHN5c3RlbSBnZW5lcmF0aW9uIGNvdW50ZXIgKndh dGNoZXIqLgorCitTbmFwc2hvdCBTYWZldHkgUHJlcmVxdWlzaXRlcworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKworSWYgVk0sIGNvbnRhaW5lciBvciBvdGhlciBzeXN0ZW0tbGV2ZWwg c25hcHNob3RzIGhhcHBlbiBhc3luY2hyb25vdXNseSwKK2F0IGFyYml0cmFyeSB0aW1lcyBkdXJp bmcgYW4gYWN0aXZlIHdvcmtsb2FkIHRoZXJlIGlzIG5vIHByYWN0aWNhbCB3YXkKK3RvIGVuc3Vy ZSB0aGF0IGluLWZsaWdodCBsb2NhbCBjb3BpZXMgb3IgY2FjaGVzIG9mIHdvcmxkLXVuaXF1ZSBk YXRhCitzdWNoIGFzIHJhbmRvbSB2YWx1ZXMsIHNlY3JldHMsIFVVSURzLCBldGMgYXJlIHByb3Bl cmx5IHNjcnViYmVkIGFuZAorcmVnZW5lcmF0ZWQuCitUaGUgY2hhbGxlbmdlIHN0ZW1zIGZyb20g dGhlIGZhY3QgdGhhdCB0aGUgY2F0ZWdvcml6YXRpb24gb2YgZGF0YSBhcworc25hcHNob3Qtc2Vu c2l0aXZlIGlzIG9ubHkga25vd24gdG8gdGhlIHNvZnR3YXJlIHdvcmtpbmcgd2l0aCBpdCwgYW5k Cit0aGlzIHNvZnR3YXJlIGhhcyBubyBsb2dpY2FsIGNvbnRyb2wgb3ZlciB0aGUgbW9tZW50IGlu IHRpbWUgd2hlbiBhbgorZXh0ZXJuYWwgc3lzdGVtIHNuYXBzaG90IG9jY3Vycy4KKworTGV0J3Mg dGFrZSBhbiBPcGVuU1NMIHNlc3Npb24gdG9rZW4gZm9yIGV4YW1wbGUuIEV2ZW4gaWYgdGhlIGxp YnJhcnkKK2NvZGUgaXMgbWFkZSAxMDAlIHNuYXBzaG90LXNhZmUsIG1lYW5pbmcgdGhlIGxpYnJh cnkgZ3VhcmFudGVlcyB0aGF0Cit0aGUgc2Vzc2lvbiB0b2tlbiBpcyB1bmlxdWUgKGFueSBzbmFw c2hvdCB0aGF0IGhhcHBlbmVkIGR1cmluZyB0aGUKK2xpYnJhcnkgY2FsbCBkaWQgbm90IGR1cGxp Y2F0ZSBvciBsZWFrIHRoZSB0b2tlbiksIHRoZSB0b2tlbiBpcyBzdGlsbAordnVsbmVyYWJsZSB0 byBzbmFwc2hvdCBldmVudHMgd2hpbGUgaXQgdHJhbnNpdHMgdGhlIHZhcmlvdXMgbGF5ZXJzIG9m Cit0aGUgbGlicmFyeSBjYWxsZXIsIHRoZW4gdGhlIHZhcmlvdXMgbGF5ZXJzIG9mIHRoZSBPUyBi ZWZvcmUgbGVhdmluZwordGhlIHN5c3RlbS4KKworVG8gY2F0Y2ggYSBzZWNyZXQgd2hpbGUgaXQn cyBpbi1mbGlnaHQsIHdlJ2QgaGF2ZSB0byB2YWxpZGF0ZSBzeXN0ZW0KK2dlbmVyYXRpb24gYXQg ZXZlcnkgbGF5ZXIsIGV2ZXJ5IHN0ZXAgb2YgdGhlIHdheS4gRXZlbiBpZiB0aGF0IHdvdWxkCiti ZSBkZWVtZWQgdGhlIHJpZ2h0IHNvbHV0aW9uLCBpdCB3b3VsZCBiZSBhIGxvbmcgcm9hZCBhbmQg YSB3aG9sZQordW5pdmVyc2UgdG8gcGF0Y2ggYmVmb3JlIHdlIGdldCB0aGVyZS4KKworQm90dG9t IGxpbmUgaXMgd2UgZG9uJ3QgaGF2ZSBhIHdheSB0byB0cmFjayBhbGwgb2YgdGhlc2UgaW4tZmxp Z2h0CitzZWNyZXRzIGFuZCBkeW5hbWljYWxseSBzY3J1YiB0aGVtIGZyb20gZXhpc3RlbmNlIHdp dGggc25hcHNob3QKK2V2ZW50cyBoYXBwZW5pbmcgYXJiaXRyYXJpbHkuCisKK1NpbXBsaWZ5bmcg YXNzdW1wdGlvbiAtIHNhZmV0eSBwcmVyZXF1aXNpdGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKipDb250cm9sIHRoZSBzbmFwc2hvdCBmbG93KiosIGRp c2FsbG93IHNuYXBzaG90cyBjb21pbmcgYXQgYXJiaXRyYXJ5Cittb21lbnRzIGluIHRoZSB3b3Jr bG9hZCBsaWZldGltZS4KKworVXNlIGEgc3lzdGVtLWxldmVsIG92ZXJzZWVyIGVudGl0eSB0aGF0 IHF1aWVzY2VzIHRoZSBzeXN0ZW0gYmVmb3JlCitzbmFwc2hvdCwgYW5kIHBvc3Qtc25hcHNob3Qt cmVzdW1lIG92ZXJzZWVzIHRoYXQgc29mdHdhcmUgY29tcG9uZW50cworaGF2ZSByZWFkanVzdGVk IHRvIG5ldyBlbnZpcm9ubWVudCwgdG8gdGhlIG5ldyBnZW5lcmF0aW9uLiBPbmx5IGFmdGVyLAor d2lsbCB0aGUgb3ZlcnNlZXIgdW4tcXVpZXNjZSB0aGUgc3lzdGVtIGFuZCBhbGxvdyBhY3RpdmUg d29ya2xvYWRzLgorCitTb2Z0d2FyZSBjb21wb25lbnRzIGNhbiBjaG9vc2Ugd2hldGhlciB0aGV5 IHdhbnQgdG8gYmUgdHJhY2tlZCBhbmQKK3dhaXRlZCBvbiBieSB0aGUgb3ZlcnNlZXIgYnkgdXNp bmcgdGhlIGBgU1lTR0VOSURfU0VUX1dBVENIRVJfVFJBQ0tJTkdgYAorSU9DVEwuCisKK1RoZSBz eXNnZW5pZCBmcmFtZXdvcmsgc3RhbmRhcmRpemVzIHRoZSBBUEkgZm9yIHN5c3RlbSBzb2Z0d2Fy ZSB0bworZmluZCBvdXQgYWJvdXQgbmVlZGluZyB0byByZWFkanVzdCBhbmQgYXQgdGhlIHNhbWUg dGltZSBwcm92aWRlcyBhCittZWNoYW5pc20gZm9yIHRoZSBvdmVyc2VlciBlbnRpdHkgdG8gd2Fp dCBmb3IgZXZlcnlvbmUgdG8gYmUgZG9uZSwgdGhlCitzeXN0ZW0gdG8gaGF2ZSByZWFkanVzdGVk LCBzbyBpdCBjYW4gdW4tcXVpZXNjZS4KKworRXhhbXBsZSBzbmFwc2hvdC1zYWZlIHdvcmtmbG93 CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworMSkgQmVmb3JlIHRha2luZyBhIHNu YXBzaG90LCBxdWllc2NlIHRoZSBWTS9jb250YWluZXIvc3lzdGVtLiBFeGFjdGx5CisgICBob3cg dGhpcyBpcyBhY2hpZXZlZCBpcyB2ZXJ5IHdvcmtsb2FkLXNwZWNpZmljLCBidXQgdGhlIGdlbmVy YWwKKyAgIGRlc2NyaXB0aW9uIGlzIHRvIGdldCBhbGwgc29mdHdhcmUgdG8gYW4gZXhwZWN0ZWQg c3RhdGUgd2hlcmUgdGhlaXIKKyAgIGV2ZW50IGxvb3BzIGRyeSB1cCBhbmQgdGhleSBhcmUgZWZm ZWN0aXZlbHkgcXVpZXNjZWQuCisyKSBUYWtlIHNuYXBzaG90LgorMykgUmVzdW1lIHRoZSBWTS9j b250YWluZXIvc3lzdGVtIGZyb20gc2FpZCBzbmFwc2hvdC4KKzQpIE92ZXJzZWVyIHdpbGwgdHJp Z2dlciBnZW5lcmF0aW9uIGJ1bXAgdXNpbmcKKyAgIGBgU1lTR0VOSURfVFJJR0dFUl9HRU5fVVBE QVRFYGAgSU9DTFQuCis1KSBTb2Z0d2FyZSBjb21wb25lbnRzIHdoaWNoIGhhdmUgYGAvZGV2L3N5 c2dlbmlkYGAgaW4gdGhlaXIgZXZlbnQKKyAgIGxvb3BzIChlaXRoZXIgdXNpbmcgYGBwb2xsKClg YCBvciBgYHJlYWQoKWBgKSBhcmUgbm90aWZpZWQgb2YgdGhlCisgICBnZW5lcmF0aW9uIGNoYW5n ZS4KKyAgIFRoZXkgZG8gdGhlaXIgc3BlY2lmaWMgaW50ZXJuYWwgYWRqdXN0bWVudHMuIFNvbWUg bWF5IGhhdmUgcmVxdWVzdGVkCisgICB0byBiZSB0cmFja2VkIGFuZCB3YWl0ZWQgb24gYnkgdGhl IG92ZXJzZWVyLCBvdGhlcnMgbWlnaHQgY2hvb3NlIHRvCisgICBkbyB0aGVpciBhZGp1c3RtZW50 cyBvdXQgb2YgYmFuZCBhbmQgbm90IGJsb2NrIHRoZSBvdmVyc2Vlci4KKyAgIFRyYWNrZWQgb25l cyAqbXVzdCogc2lnbmFsIHdoZW4gdGhleSBhcmUgZG9uZS9yZWFkeSB3aXRoIGEgYGB3cml0ZSgp YGAKKyAgIHdoaWxlIHRoZSByZXN0ICpzaG91bGQqIGFsc28gZG8gc28gZm9yIGNsZWFubGluZXNz LCBidXQgaXQncyBub3QKKyAgIG1hbmRhdG9yeS4KKzYpIE92ZXJzZWVyIHdpbGwgYmxvY2sgYW5k IHdhaXQgZm9yIGFsbCB0cmFja2VkIHdhdGNoZXJzIGJ5IHVzaW5nIHRoZQorICAgYGBTWVNHRU5J RF9XQUlUX1dBVENIRVJTYGAgSU9DVEwuIE9uY2UgYWxsIHRyYWNrZWQgd2F0Y2hlcnMgYXJlIGRv bmUKKyAgIGluIHN0ZXAgNSwgdGhpcyBvdmVyc2VlciB3aWxsIHJldHVybiBmcm9tIHRoaXMgYmxv Y2tpbmcgaW9jdGwga25vd2luZworICAgdGhhdCB0aGUgc3lzdGVtIGhhcyByZWFkanVzdGVkIGFu ZCBpcyByZWFkeSBmb3IgYWN0aXZlIHdvcmtsb2FkLgorNykgT3ZlcnNlZXIgdW4tcXVpZXNjZXMg c3lzdGVtLgorOCkgVGhlcmUgaXMgYSBjbGFzcyBvZiBzb2Z0d2FyZSwgdXN1YWxseSBsaWJyYXJp ZXMsIG1vc3Qgbm90YWJseSBQUk5HcworICAgb3IgU1NMcywgdGhhdCBkb24ndCBmaXQgdGhlIGV2 ZW50LWxvb3AgbW9kZWwgYW5kIGFsc28gaGF2ZSBzdHJpY3QKKyAgIGxhdGVuY3kgcmVxdWlyZW1l bnRzLiBUaGVzZSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGBgbW1hcCgpYGAKKyAgIGludGVy ZmFjZSBhbmQgbGF6aWx5IGFkanVzdCBvbi1kZW1hbmQgd2hlbmV2ZXIgdGhleSBhcmUgY2FsbGVk IGFmdGVyCisgICB1bi1xdWllc2NlLgorICAgRm9yIGEgd2VsbC1kZXNpZ25lZCBzZXJ2aWNlIHN0 YWNrLCB0aGVzZSBsaWJyYXJpZXMgc2hvdWxkIG5vdCBiZQorICAgY2FsbGVkIHdoaWxlIHN5c3Rl bSBpcyBxdWllc2NlZC4gV2hlbiB3b3JrbG9hZCBpcyByZXN1bWVkIGJ5IHRoZQorICAgb3ZlcnNl ZXIsIG9uIHRoZSBmaXJzdCBjYWxsIGludG8gdGhlc2UgbGlicywgdGhleSB3aWxsIHNhZmVseSBK SVQKKyAgIHJlYWRqdXN0LgorICAgVXNlcnMgb2YgdGhpcyBsYXp5IG9uLWRlbWFuZCByZWFkanVz dG1lbnQgbW9kZWwgc2hvdWxkIG5vdCBlbmFibGUKKyAgIHdhdGNoZXIgdHJhY2tpbmcgc2luY2Ug ZG9pbmcgc28gd291bGQgaW50cm9kdWNlIGEgbG9naWNhbCBkZWFkbG9jazoKKyAgIGxhenkgYWRq dXN0bWVudHMgaGFwcGVuIG9ubHkgYWZ0ZXIgdW4tcXVpZXNjZSwgYnV0IHVuLXF1aWVzY2UgaXMK KyAgIGJsb2NrZWQgdW50aWwgYWxsIHRyYWNrZWQgd2F0Y2hlcnMgYXJlIHVwLXRvLWRhdGUuCmRp ZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvaW9jdGwvaW9jdGwtbnVtYmVy LnJzdCBiL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9pb2N0bC9pb2N0bC1udW1iZXIucnN0 CmluZGV4IDU5OWJkNDQuLjVlOWUzODU2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3VzZXJz cGFjZS1hcGkvaW9jdGwvaW9jdGwtbnVtYmVyLnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL3VzZXJz cGFjZS1hcGkvaW9jdGwvaW9jdGwtbnVtYmVyLnJzdApAQCAtMzYwLDYgKzM2MCw3IEBAIENvZGUg IFNlcSMgICAgSW5jbHVkZSBGaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENvbW1lbnRzCiAweERCICAwMC0wRiAgZHJpdmVycy9jaGFyL213YXZlL213YXZlcHVi LmgKIDB4REQgIDAwLTNGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFpGQ1AgZGV2aWNlIGRyaXZlciBzZWUgZHJpdmVycy9zMzkwL3Njc2kv CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8bWFpbHRvOmFoZXJybWFuQGRlLmlibS5jb20+CisweEU0ICAwMS0wMyAg dWFwaS9saW51eC9zeXNnZW5pZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT eXNHZW5JRCBtaXNjIGRyaXZlcgogMHhFNSAgMDAtM0YgIGxpbnV4L2Z1c2UuaAogMHhFQyAgMDAt MDEgIGRyaXZlcnMvcGxhdGZvcm0vY2hyb21lL2Nyb3NfZWNfZGV2LmggICAgICAgICAgICAgICAg ICAgQ2hyb21lT1MgRUMgZHJpdmVyCiAweEYzICAwMC0zRiAgZHJpdmVycy91c2IvbWlzYy9zaXN1 c2J2Z2Evc2lzdXNiLmggICAgICAgICAgICAgICAgICAgICBzaXNmYiAoaW4gZGV2ZWxvcG1lbnQp CmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGQ5MmY4NWMuLjM5 ZjhlOGQgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC0xNzMy NSw2ICsxNzMyNSwxNCBAQCBMOglsaW51eC1tbWNAdmdlci5rZXJuZWwub3JnCiBTOglNYWludGFp bmVkCiBGOglkcml2ZXJzL21tYy9ob3N0L3NkaGNpLXBjaS1kd2MtbXNoYy5jCiAKK1NZU0dFTklE CitNOglBZHJpYW4gQ2F0YW5naXUgPGFjYXRhbkBhbWF6b24uY29tPgorTDoJbGludXgta2VybmVs QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL21pc2MtZGV2 aWNlcy9zeXNnZW5pZC5yc3QKK0Y6CWRyaXZlcnMvbWlzYy9zeXNnZW5pZC5jCitGOglpbmNsdWRl L3VhcGkvbGludXgvc3lzZ2VuaWQuaAorCiBTWVNURU0gQ09ORklHVVJBVElPTiAoU1lTQ09OKQog TToJTGVlIEpvbmVzIDxsZWUuam9uZXNAbGluYXJvLm9yZz4KIE06CUFybmQgQmVyZ21hbm4gPGFy bmRAYXJuZGIuZGU+CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvS2NvbmZpZyBiL2RyaXZlcnMv bWlzYy9LY29uZmlnCmluZGV4IGY1MzJjNTkuLmUzNDU2MjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWlzYy9LY29uZmlnCisrKyBiL2RyaXZlcnMvbWlzYy9LY29uZmlnCkBAIC00MzUsNiArNDM1LDIx IEBAIGNvbmZpZyBQVlBBTklDCiAJICBhIHBhcmF2aXJ0dWFsaXplZCBkZXZpY2UgcHJvdmlkZWQg YnkgUUVNVTsgaXQgbGV0cyBhIHZpcnR1YWwgbWFjaGluZQogCSAgKGd1ZXN0KSBjb21tdW5pY2F0 ZSBwYW5pYyBldmVudHMgdG8gdGhlIGhvc3QuCiAKK2NvbmZpZyBTWVNHRU5JRAorCXRyaXN0YXRl ICJTeXN0ZW0gR2VuZXJhdGlvbiBJRCBkcml2ZXIiCisJaGVscAorCSAgVGhpcyBpcyBhIFN5c3Rl bSBHZW5lcmF0aW9uIElEIGRyaXZlciB3aGljaCBwcm92aWRlcyBhIHN5c3RlbQorCSAgZ2VuZXJh dGlvbiBjb3VudGVyLiBUaGUgZHJpdmVyIGV4cG9zZXMgRlMgb3BzIG9uIC9kZXYvc3lzZ2VuaWQK KwkgIHRocm91Z2ggd2hpY2ggaXQgY2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYW5kIG5vdGlmaWNh dGlvbnMgb24gc3lzdGVtCisJICBnZW5lcmF0aW9uIGNoYW5nZXMgdGhhdCBoYXBwZW4gYmVjYXVz ZSBvZiBWTSBvciBjb250YWluZXIgc25hcHNob3RzCisJICBvciBjbG9uaW5nLgorCSAgVGhpcyBl bmFibGVzIGFwcGxpY2F0aW9ucyBhbmQgbGlicmFyaWVzIHRoYXQgc3RvcmUgb3IgY2FjaGUKKwkg IHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiwgdG8ga25vdyB0aGF0IHRoZXkgbmVlZCB0byByZWdlbmVy YXRlIGl0CisJICBhZnRlciBwcm9jZXNzIG1lbW9yeSBoYXMgYmVlbiBleHBvc2VkIHRvIHBvdGVu dGlhbCBjb3B5aW5nLgorCisJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBj aG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzeXNnZW5pZC4KKwog Y29uZmlnIEhJU0lfSElLRVlfVVNCCiAJdHJpc3RhdGUgIlVTQiBHUElPIEh1YiBvbiBIaVNpbGlj b24gSGlrZXkgOTYwLzk3MCBQbGF0Zm9ybSIKIAlkZXBlbmRzIG9uIChPRiAmJiBHUElPTElCKSB8 fCBDT01QSUxFX1RFU1QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9NYWtlZmlsZSBiL2RyaXZl cnMvbWlzYy9NYWtlZmlsZQppbmRleCA5OWI2ZjE1Li4zZGJmMGQzIDEwMDY0NAotLS0gYS9kcml2 ZXJzL21pc2MvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9taXNjL01ha2VmaWxlCkBAIC01NiwzICs1 Niw0IEBAIG9iai0kKENPTkZJR19IQUJBTkFfQUkpCQkrPSBoYWJhbmFsYWJzLwogb2JqLSQoQ09O RklHX1VBQ0NFKQkJKz0gdWFjY2UvCiBvYmotJChDT05GSUdfWElMSU5YX1NERkVDKQkrPSB4aWxp bnhfc2RmZWMubwogb2JqLSQoQ09ORklHX0hJU0lfSElLRVlfVVNCKQkrPSBoaXNpX2hpa2V5X3Vz Yi5vCitvYmotJChDT05GSUdfU1lTR0VOSUQpCQkrPSBzeXNnZW5pZC5vCmRpZmYgLS1naXQgYS9k cml2ZXJzL21pc2Mvc3lzZ2VuaWQuYyBiL2RyaXZlcnMvbWlzYy9zeXNnZW5pZC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYjUyODgKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL21pc2Mvc3lzZ2VuaWQuYwpAQCAtMCwwICsxLDMxNiBAQAorLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBTeXN0ZW0gR2VuZXJhdGlvbiBJRCBkcml2ZXIK KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQW1hem9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor ICoKKyAqCUF1dGhvcnM6CisgKgkgIEFkcmlhbiBDYXRhbmdpdSA8YWNhdGFuQGFtYXpvbi5jb20+ CisgKgorICovCisjaW5jbHVkZSA8bGludXgvYWNwaS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5l bC5oPgorI2luY2x1ZGUgPGxpbnV4L21pbm1heC5oPgorI2luY2x1ZGUgPGxpbnV4L21pc2NkZXZp Y2UuaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgor I2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KKyNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KKyNpbmNs dWRlIDxsaW51eC91dWlkLmg+CisjaW5jbHVkZSA8bGludXgvc3lzZ2VuaWQuaD4KKworc3RydWN0 IHN5c2dlbmlkX2RhdGEgeworCXVuc2lnbmVkIGxvbmcJCW1hcF9idWY7CisJd2FpdF9xdWV1ZV9o ZWFkX3QJcmVhZF93YWl0cTsKKwlhdG9taWNfdAkJZ2VuZXJhdGlvbl9jb3VudGVyOworCisJdW5z aWduZWQgaW50CQl3YXRjaGVyczsKKwlhdG9taWNfdAkJb3V0ZGF0ZWRfd2F0Y2hlcnM7CisJd2Fp dF9xdWV1ZV9oZWFkX3QJb3V0ZGF0ZWRfd2FpdHE7CisJc3BpbmxvY2tfdAkJbG9jazsKK307Citz dGF0aWMgc3RydWN0IHN5c2dlbmlkX2RhdGEgc3lzZ2VuaWRfZGF0YTsKKworc3RydWN0IGZpbGVf ZGF0YSB7CisJYm9vbCB0cmFja2VkX3dhdGNoZXI7CisJaW50IGFja2VkX2dlbl9jb3VudGVyOwor fTsKKworc3RhdGljIGludCBlcXVhbHNfZ2VuX2NvdW50ZXIodW5zaWduZWQgaW50IGNvdW50ZXIp Cit7CisJcmV0dXJuIGNvdW50ZXIgPT0gYXRvbWljX3JlYWQoJnN5c2dlbmlkX2RhdGEuZ2VuZXJh dGlvbl9jb3VudGVyKTsKK30KKworc3RhdGljIHZvaWQgYnVtcF9nZW5lcmF0aW9uKGludCBtaW5f Z2VuKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IGNvdW50ZXI7CisKKwlzcGluX2xv Y2tfaXJxc2F2ZSgmc3lzZ2VuaWRfZGF0YS5sb2NrLCBmbGFncyk7CisJY291bnRlciA9IG1heCht aW5fZ2VuLCAxICsgYXRvbWljX3JlYWQoJnN5c2dlbmlkX2RhdGEuZ2VuZXJhdGlvbl9jb3VudGVy KSk7CisJYXRvbWljX3NldCgmc3lzZ2VuaWRfZGF0YS5nZW5lcmF0aW9uX2NvdW50ZXIsIGNvdW50 ZXIpOworCSooKGludCAqKSBzeXNnZW5pZF9kYXRhLm1hcF9idWYpID0gY291bnRlcjsKKwlhdG9t aWNfc2V0KCZzeXNnZW5pZF9kYXRhLm91dGRhdGVkX3dhdGNoZXJzLCBzeXNnZW5pZF9kYXRhLndh dGNoZXJzKTsKKworCXdha2VfdXBfaW50ZXJydXB0aWJsZSgmc3lzZ2VuaWRfZGF0YS5yZWFkX3dh aXRxKTsKKwl3YWtlX3VwX2ludGVycnVwdGlibGUoJnN5c2dlbmlkX2RhdGEub3V0ZGF0ZWRfd2Fp dHEpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnN5c2dlbmlkX2RhdGEubG9jaywgZmxhZ3Mp OworfQorCitzdGF0aWMgdm9pZCBwdXRfb3V0ZGF0ZWRfd2F0Y2hlcnModm9pZCkKK3sKKwlpZiAo YXRvbWljX2RlY19hbmRfdGVzdCgmc3lzZ2VuaWRfZGF0YS5vdXRkYXRlZF93YXRjaGVycykpCisJ CXdha2VfdXBfaW50ZXJydXB0aWJsZSgmc3lzZ2VuaWRfZGF0YS5vdXRkYXRlZF93YWl0cSk7Cit9 CisKK3N0YXRpYyB2b2lkIHN0YXJ0X2ZkX3RyYWNraW5nKHN0cnVjdCBmaWxlX2RhdGEgKmZkYXRh KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoIWZkYXRhLT50cmFja2VkX3dhdGNo ZXIpIHsKKwkJLyogZW5hYmxlIHRyYWNraW5nIHRoaXMgZmQgYXMgYSB3YXRjaGVyICovCisJCXNw aW5fbG9ja19pcnFzYXZlKCZzeXNnZW5pZF9kYXRhLmxvY2ssIGZsYWdzKTsKKwkJCWZkYXRhLT50 cmFja2VkX3dhdGNoZXIgPSAxOworCQkJKytzeXNnZW5pZF9kYXRhLndhdGNoZXJzOworCQkJaWYg KCFlcXVhbHNfZ2VuX2NvdW50ZXIoZmRhdGEtPmFja2VkX2dlbl9jb3VudGVyKSkKKwkJCQlhdG9t aWNfaW5jKCZzeXNnZW5pZF9kYXRhLm91dGRhdGVkX3dhdGNoZXJzKTsKKwkJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmc3lzZ2VuaWRfZGF0YS5sb2NrLCBmbGFncyk7CisJfQorfQorCitzdGF0aWMg dm9pZCBzdG9wX2ZkX3RyYWNraW5nKHN0cnVjdCBmaWxlX2RhdGEgKmZkYXRhKQoreworCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoZmRhdGEtPnRyYWNrZWRfd2F0Y2hlcikgeworCQkvKiBz dG9wIHRyYWNraW5nIHRoaXMgZmQgYXMgYSB3YXRjaGVyICovCisJCXNwaW5fbG9ja19pcnFzYXZl KCZzeXNnZW5pZF9kYXRhLmxvY2ssIGZsYWdzKTsKKwkJaWYgKCFlcXVhbHNfZ2VuX2NvdW50ZXIo ZmRhdGEtPmFja2VkX2dlbl9jb3VudGVyKSkKKwkJCXB1dF9vdXRkYXRlZF93YXRjaGVycygpOwor CQktLXN5c2dlbmlkX2RhdGEud2F0Y2hlcnM7CisJCWZkYXRhLT50cmFja2VkX3dhdGNoZXIgPSAw OworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzeXNnZW5pZF9kYXRhLmxvY2ssIGZsYWdzKTsK Kwl9Cit9CisKK3N0YXRpYyBpbnQgc3lzZ2VuaWRfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZmlsZV9kYXRhICpmZGF0YSA9IGt6YWxsb2Mo c2l6ZW9mKHN0cnVjdCBmaWxlX2RhdGEpLCBHRlBfS0VSTkVMKTsKKworCWlmICghZmRhdGEpCisJ CXJldHVybiAtRU5PTUVNOworCWZkYXRhLT50cmFja2VkX3dhdGNoZXIgPSAwOworCWZkYXRhLT5h Y2tlZF9nZW5fY291bnRlciA9IGF0b21pY19yZWFkKCZzeXNnZW5pZF9kYXRhLmdlbmVyYXRpb25f Y291bnRlcik7CisJZmlsZS0+cHJpdmF0ZV9kYXRhID0gZmRhdGE7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBzeXNnZW5pZF9jbG9zZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg ZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZmlsZV9kYXRhICpmZGF0YSA9IGZpbGUtPnByaXZhdGVf ZGF0YTsKKworCXN0b3BfZmRfdHJhY2tpbmcoZmRhdGEpOworCWtmcmVlKGZkYXRhKTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgc3NpemVfdCBzeXNnZW5pZF9yZWFkKHN0cnVjdCBmaWxlICpm aWxlLCBjaGFyIF9fdXNlciAqdWJ1ZiwKKwkJc2l6ZV90IG5ieXRlcywgbG9mZl90ICpwcG9zKQor eworCXN0cnVjdCBmaWxlX2RhdGEgKmZkYXRhID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXNzaXpl X3QgcmV0OworCWludCBnZW5fY291bnRlcjsKKworCWlmIChuYnl0ZXMgPT0gMCkKKwkJcmV0dXJu IDA7CisJLyogZGlzYWxsb3cgcGFydGlhbCByZWFkcyAqLworCWlmIChuYnl0ZXMgPCBzaXplb2Yo Z2VuX2NvdW50ZXIpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChlcXVhbHNfZ2VuX2NvdW50 ZXIoZmRhdGEtPmFja2VkX2dlbl9jb3VudGVyKSkgeworCQlpZiAoZmlsZS0+Zl9mbGFncyAmIE9f Tk9OQkxPQ0spCisJCQlyZXR1cm4gLUVBR0FJTjsKKwkJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1 cHRpYmxlKAorCQkJc3lzZ2VuaWRfZGF0YS5yZWFkX3dhaXRxLAorCQkJIWVxdWFsc19nZW5fY291 bnRlcihmZGF0YS0+YWNrZWRfZ2VuX2NvdW50ZXIpCisJCSk7CisJCWlmIChyZXQpCisJCQlyZXR1 cm4gcmV0OworCX0KKworCWdlbl9jb3VudGVyID0gYXRvbWljX3JlYWQoJnN5c2dlbmlkX2RhdGEu Z2VuZXJhdGlvbl9jb3VudGVyKTsKKwlyZXQgPSBjb3B5X3RvX3VzZXIodWJ1ZiwgJmdlbl9jb3Vu dGVyLCBzaXplb2YoZ2VuX2NvdW50ZXIpKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gLUVGQVVMVDsK KworCXJldHVybiBzaXplb2YoZ2VuX2NvdW50ZXIpOworfQorCitzdGF0aWMgc3NpemVfdCBzeXNn ZW5pZF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCisJ CXNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQoreworCXN0cnVjdCBmaWxlX2RhdGEgKmZkYXRh ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXVuc2lnbmVkIGludCBuZXdfYWNrZWRfZ2VuOworCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CisKKwkvKiBkaXNhbGxvdyBwYXJ0aWFsIHdyaXRlcyAqLworCWlm IChjb3VudCAhPSBzaXplb2YobmV3X2Fja2VkX2dlbikpCisJCXJldHVybiAtRU5PQlVGUzsKKwlp ZiAoY29weV9mcm9tX3VzZXIoJm5ld19hY2tlZF9nZW4sIHVidWYsIGNvdW50KSkKKwkJcmV0dXJu IC1FRkFVTFQ7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmc3lzZ2VuaWRfZGF0YS5sb2NrLCBmbGFn cyk7CisJLyogd3JvbmcgZ2VuLWNvdW50ZXIgYWNrbm93bGVkZ2VkICovCisJaWYgKCFlcXVhbHNf Z2VuX2NvdW50ZXIobmV3X2Fja2VkX2dlbikpIHsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm c3lzZ2VuaWRfZGF0YS5sb2NrLCBmbGFncyk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwkvKiB1 cGRhdGUgYWNrZWQgZ2VuLWNvdW50ZXIgaWYgbmVjZXNzYXJ5ICovCisJaWYgKCFlcXVhbHNfZ2Vu X2NvdW50ZXIoZmRhdGEtPmFja2VkX2dlbl9jb3VudGVyKSkgeworCQlmZGF0YS0+YWNrZWRfZ2Vu X2NvdW50ZXIgPSBuZXdfYWNrZWRfZ2VuOworCQlpZiAoZmRhdGEtPnRyYWNrZWRfd2F0Y2hlcikK KwkJCXB1dF9vdXRkYXRlZF93YXRjaGVycygpOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZzeXNnZW5pZF9kYXRhLmxvY2ssIGZsYWdzKTsKKworCXJldHVybiAoc3NpemVfdCljb3VudDsK K30KKworc3RhdGljIF9fcG9sbF90IHN5c2dlbmlkX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBv bGxfdGFibGUgKndhaXQpCit7CisJX19wb2xsX3QgbWFzayA9IDA7CisJc3RydWN0IGZpbGVfZGF0 YSAqZmRhdGEgPSBmaWxlLT5wcml2YXRlX2RhdGE7CisKKwlpZiAoIWVxdWFsc19nZW5fY291bnRl cihmZGF0YS0+YWNrZWRfZ2VuX2NvdW50ZXIpKQorCQlyZXR1cm4gRVBPTExJTiB8IEVQT0xMUkRO T1JNOworCisJcG9sbF93YWl0KGZpbGUsICZzeXNnZW5pZF9kYXRhLnJlYWRfd2FpdHEsIHdhaXQp OworCisJaWYgKCFlcXVhbHNfZ2VuX2NvdW50ZXIoZmRhdGEtPmFja2VkX2dlbl9jb3VudGVyKSkK KwkJbWFzayA9IEVQT0xMSU4gfCBFUE9MTFJETk9STTsKKworCXJldHVybiBtYXNrOworfQorCitz dGF0aWMgbG9uZyBzeXNnZW5pZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwKKwkJdW5zaWduZWQg aW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJc3RydWN0IGZpbGVfZGF0YSAqZmRhdGEg PSBmaWxlLT5wcml2YXRlX2RhdGE7CisJYm9vbCB0cmFja2luZyA9ICEhYXJnOworCXVuc2lnbmVk IGxvbmcgdGltZW91dF9ucywgbWluX2dlbjsKKwlrdGltZV90IHVudGlsOworCWludCByZXQgPSAw OworCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFNZU0dFTklEX1NFVF9XQVRDSEVSX1RSQUNLSU5H OgorCQlpZiAodHJhY2tpbmcpCisJCQlzdGFydF9mZF90cmFja2luZyhmZGF0YSk7CisJCWVsc2UK KwkJCXN0b3BfZmRfdHJhY2tpbmcoZmRhdGEpOworCQlicmVhazsKKwljYXNlIFNZU0dFTklEX1dB SVRfV0FUQ0hFUlM6CisJCXRpbWVvdXRfbnMgPSBhcmcgKiBOU0VDX1BFUl9NU0VDOworCQl1bnRp bCA9IHRpbWVvdXRfbnMgPyBrdGltZV9zZXQoMCwgdGltZW91dF9ucykgOiBLVElNRV9NQVg7CisK KwkJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX2hydGltZW91dCgKKwkJCXN5c2dlbmlk X2RhdGEub3V0ZGF0ZWRfd2FpdHEsCisJCQkoIWF0b21pY19yZWFkKCZzeXNnZW5pZF9kYXRhLm91 dGRhdGVkX3dhdGNoZXJzKSB8fAorCQkJCQkhZXF1YWxzX2dlbl9jb3VudGVyKGZkYXRhLT5hY2tl ZF9nZW5fY291bnRlcikpLAorCQkJdW50aWwKKwkJKTsKKwkJaWYgKCFlcXVhbHNfZ2VuX2NvdW50 ZXIoZmRhdGEtPmFja2VkX2dlbl9jb3VudGVyKSkKKwkJCXJldCA9IC1FSU5UUjsKKwkJYnJlYWs7 CisJY2FzZSBTWVNHRU5JRF9UUklHR0VSX0dFTl9VUERBVEU6CisJCWlmICghY2hlY2twb2ludF9y ZXN0b3JlX25zX2NhcGFibGUoY3VycmVudF91c2VyX25zKCkpKQorCQkJcmV0dXJuIC1FQUNDRVM7 CisJCW1pbl9nZW4gPSBhcmc7CisJCWJ1bXBfZ2VuZXJhdGlvbihtaW5fZ2VuKTsKKwkJYnJlYWs7 CisJZGVmYXVsdDoKKwkJcmV0ID0gLUVJTlZBTDsKKwkJYnJlYWs7CisJfQorCXJldHVybiByZXQ7 Cit9CisKK3N0YXRpYyBpbnQgc3lzZ2VuaWRfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEpCit7CisJc3RydWN0IGZpbGVfZGF0YSAqZmRhdGEgPSBmaWxl LT5wcml2YXRlX2RhdGE7CisKKwlpZiAodm1hLT52bV9wZ29mZiAhPSAwIHx8IHZtYV9wYWdlcyh2 bWEpID4gMSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoKHZtYS0+dm1fZmxhZ3MgJiBWTV9X UklURSkgIT0gMCkKKwkJcmV0dXJuIC1FUEVSTTsKKworCXZtYS0+dm1fZmxhZ3MgfD0gVk1fRE9O VEVYUEFORCB8IFZNX0RPTlREVU1QOworCXZtYS0+dm1fZmxhZ3MgJj0gflZNX01BWVdSSVRFOwor CXZtYS0+dm1fcHJpdmF0ZV9kYXRhID0gZmRhdGE7CisKKwlyZXR1cm4gdm1faW5zZXJ0X3BhZ2Uo dm1hLCB2bWEtPnZtX3N0YXJ0LAorCQkJdmlydF90b19wYWdlKHN5c2dlbmlkX2RhdGEubWFwX2J1 ZikpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzID0gewor CS5vd25lcgkJPSBUSElTX01PRFVMRSwKKwkubW1hcAkJPSBzeXNnZW5pZF9tbWFwLAorCS5vcGVu CQk9IHN5c2dlbmlkX29wZW4sCisJLnJlbGVhc2UJPSBzeXNnZW5pZF9jbG9zZSwKKwkucmVhZAkJ PSBzeXNnZW5pZF9yZWFkLAorCS53cml0ZQkJPSBzeXNnZW5pZF93cml0ZSwKKwkucG9sbAkJPSBz eXNnZW5pZF9wb2xsLAorCS51bmxvY2tlZF9pb2N0bAk9IHN5c2dlbmlkX2lvY3RsLAorfTsKKwor c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHN5c2dlbmlkX21pc2MgPSB7CisJLm1pbm9yID0gTUlT Q19EWU5BTUlDX01JTk9SLAorCS5uYW1lID0gInN5c2dlbmlkIiwKKwkuZm9wcyA9ICZmb3BzLAor fTsKKworc3RhdGljIGludCBfX2luaXQgc3lzZ2VuaWRfaW5pdCh2b2lkKQoreworCWludCByZXQ7 CisKKwlzeXNnZW5pZF9kYXRhLm1hcF9idWYgPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTCk7 CisJaWYgKCFzeXNnZW5pZF9kYXRhLm1hcF9idWYpCisJCXJldHVybiAtRU5PTUVNOworCisJYXRv bWljX3NldCgmc3lzZ2VuaWRfZGF0YS5nZW5lcmF0aW9uX2NvdW50ZXIsIDApOworCWF0b21pY19z ZXQoJnN5c2dlbmlkX2RhdGEub3V0ZGF0ZWRfd2F0Y2hlcnMsIDApOworCWluaXRfd2FpdHF1ZXVl X2hlYWQoJnN5c2dlbmlkX2RhdGEucmVhZF93YWl0cSk7CisJaW5pdF93YWl0cXVldWVfaGVhZCgm c3lzZ2VuaWRfZGF0YS5vdXRkYXRlZF93YWl0cSk7CisJc3Bpbl9sb2NrX2luaXQoJnN5c2dlbmlk X2RhdGEubG9jayk7CisKKwlyZXQgPSBtaXNjX3JlZ2lzdGVyKCZzeXNnZW5pZF9taXNjKTsKKwlp ZiAocmV0IDwgMCkgeworCQlwcl9lcnIoIm1pc2NfcmVnaXN0ZXIoKSBmYWlsZWQgZm9yIHN5c2dl bmlkXG4iKTsKKwkJZ290byBlcnI7CisJfQorCisJcmV0dXJuIDA7CisKK2VycjoKKwlmcmVlX3Bh Z2VzKHN5c2dlbmlkX2RhdGEubWFwX2J1ZiwgMCk7CisJc3lzZ2VuaWRfZGF0YS5tYXBfYnVmID0g MDsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBzeXNnZW5pZF9leGl0 KHZvaWQpCit7CisJbWlzY19kZXJlZ2lzdGVyKCZzeXNnZW5pZF9taXNjKTsKKwlmcmVlX3BhZ2Vz KHN5c2dlbmlkX2RhdGEubWFwX2J1ZiwgMCk7CisJc3lzZ2VuaWRfZGF0YS5tYXBfYnVmID0gMDsK K30KKworbW9kdWxlX2luaXQoc3lzZ2VuaWRfaW5pdCk7Cittb2R1bGVfZXhpdChzeXNnZW5pZF9l eGl0KTsKKworTU9EVUxFX0FVVEhPUigiQWRyaWFuIENhdGFuZ2l1Iik7CitNT0RVTEVfREVTQ1JJ UFRJT04oIlN5c3RlbSBHZW5lcmF0aW9uIElEIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitN T0RVTEVfVkVSU0lPTigiMC4xIik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvc3lz Z2VuaWQuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9zeXNnZW5pZC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjZjY2UwZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3Vh cGkvbGludXgvc3lzZ2VuaWQuaApAQCAtMCwwICsxLDE0IEBACisvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKworI2lmbmRlZiBf VUFQSV9MSU5VWF9TWVNHRU5JRF9ICisjZGVmaW5lIF9VQVBJX0xJTlVYX1NZU0dFTklEX0gKKwor I2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+CisKKyNkZWZpbmUgU1lTR0VOSURfSU9DVEwJCQkweEU0 CisjZGVmaW5lIFNZU0dFTklEX1NFVF9XQVRDSEVSX1RSQUNLSU5HCV9JTyhTWVNHRU5JRF9JT0NU TCwgMSkKKyNkZWZpbmUgU1lTR0VOSURfV0FJVF9XQVRDSEVSUwkJX0lPKFNZU0dFTklEX0lPQ1RM LCAyKQorI2RlZmluZSBTWVNHRU5JRF9UUklHR0VSX0dFTl9VUERBVEUJX0lPKFNZU0dFTklEX0lP Q1RMLCAzKQorCisjZW5kaWYgLyogX1VBUElfTElOVVhfU1lTR0VOSURfSCAqLworCi0tIAoyLjcu NAoKCgoKQW1hem9uIERldmVsb3BtZW50IENlbnRlciAoUm9tYW5pYSkgUy5SLkwuIHJlZ2lzdGVy ZWQgb2ZmaWNlOiAyN0EgU2YuIExhemFyIFN0cmVldCwgVUJDNSwgZmxvb3IgMiwgSWFzaSwgSWFz aSBDb3VudHksIDcwMDA0NSwgUm9tYW5pYS4gUmVnaXN0ZXJlZCBpbiBSb21hbmlhLiBSZWdpc3Ry YXRpb24gbnVtYmVyIEoyMi8yNjIxLzIwMDUuCg==