Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tDSQV-000rXQ-68 for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Nov 2024 17:54:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tDSQT-00FdjJ-OL for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Nov 2024 17:54:09 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tDSQS-00FdjB-RV for pgsql-hackers@lists.postgresql.org; Tue, 19 Nov 2024 17:54:09 +0000 Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tDSQN-002jjj-Hi for pgsql-hackers@lists.postgresql.org; Tue, 19 Nov 2024 17:54:07 +0000 Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-5cfbe8f0cd8so442488a12.1 for ; Tue, 19 Nov 2024 09:54:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732038842; x=1732643642; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=/KUAi2JRA9fNYyIGrQl1/jtsey9n2VkMPjpxxOgLjGA=; b=XNfyS/XrsHuJN01+yL8VwghFS4Yh8ElPhOK4MPH++BiThAN+g+TQzUlbRtBHB4iQB2 NCeqBgPeziFufioAqywL9U8uePYFETn65XtAEeN2XMM447ty1jfgGhAAaQHJGTuACEFC uRH/5sQ+2Q4SDynPKUJJuwW/sqxOhBOD4jOZcNTvREx1JY1q8Y/8KRAV6X+poq2hymcN h+JsmwNSAvT2UZDmfJbkiz7hcpbXWBFJokiidyhBNfv+SVLyBa+Atk0s1mNJ/l55Ye/Z P2Yp79e1nEAI/17lPBlT6wbcKiDPPLlSmknNznf2W+JpeoT9OnK3sYnucdgR2TfpFBgl SDcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732038842; x=1732643642; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=/KUAi2JRA9fNYyIGrQl1/jtsey9n2VkMPjpxxOgLjGA=; b=Vg3qd+/ib6QdM5nvadbYWnQU5PKCZUsJvR/z8nE5wMITzZjxQaWoGfOI1synxL2Ljv O6xZeSa2QgBDsN/wusSIlvy/sSDQbnPMf2V8GPaUi8yBRU5mclxUKaGvY2nQH5IXyl66 1H4w8+4VllE0RV8PUgoHkJ/dj5F9VK2VrSYThOJkXVlB4yZsX97MOC0XROevOabA6R1K QIXjn3cWwsiobEUJ/dF0r02tW/rQMFF7hKRgI+wUW9ErJfe6Q8bXsZvB3R9cQX0w4yGh kKiT6FTtv7fp4/lUde/VP/VefRXE5Hm1PoAsxjS9/HDc+Bj+m3GUG2uUM7x/R3xeHkSg gsYA== X-Forwarded-Encrypted: i=1; AJvYcCVtouLHRIQsM794UOuNnFNAp0JW4lWpy0PykZD0udaoNTO3TPKKc2QmDWNsrH2sLgzGLJe2Es2iSm8ymF3o@lists.postgresql.org X-Gm-Message-State: AOJu0YyvcHignRehhRvf4ImIxWa5vsg0P+4RP+6QkEVSjVwR6R5PMZmt fOBC9xMiu2AIijCQPi3UjKCvCb0U8qhaRFVcbmzqVWKvSbbAW7s49nmzA/cedp/ven11Wez0itX Muz6l5dkhWlNAAXIzqBtDaCeX2hI= X-Gm-Gg: ASbGncvruO+/j8qA6W2xpWieq08lOgFg64Pf8KbpD6Meo4rSvt6H0BHCpiXEkUM3tGZ re7OfLYiF+/dzu1FmRG1Mxh7H5SM5 X-Google-Smtp-Source: AGHT+IFsmS0hTdGpVSL0MvqXbKV/GWQt8vpEWKEX6ekbXMl4qCnZ6S6A2KW2Qifkq39SCBzKwcbGd+VxqPNhhXRqr/w= X-Received: by 2002:a05:6402:1d49:b0:5cf:e23c:200a with SMTP id 4fb4d7f45d1cf-5cfe23c209emr1044937a12.5.1732038841810; Tue, 19 Nov 2024 09:54:01 -0800 (PST) MIME-Version: 1.0 References: <5ecc35f5-1111-47fc-8a02-36d89490a50d@iki.fi> <24b3deb6-a732-4256-847a-560f4bf39d59@iki.fi> In-Reply-To: From: Maxim Orlov Date: Tue, 19 Nov 2024 20:53:49 +0300 Message-ID: Subject: Re: POC: make mxidoff 64 bits To: Heikki Linnakangas Cc: wenhui qiu , Alexander Korotkov , Postgres hackers Content-Type: multipart/mixed; boundary="000000000000e797b8062747b7e3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e797b8062747b7e3 Content-Type: multipart/alternative; boundary="000000000000e797b1062747b7e1" --000000000000e797b1062747b7e1 Content-Type: text/plain; charset="UTF-8" Oops! Sorry for the noise. I've must have been overworking yesterday and messed up the working branches. v7 was a correct set and v8 don't. Here is the correction with extended Perl test. The test itself is in src/bin/pg_upgrade/t/005_offset.pl It is rather heavy and took about 45 minutes on my i5 with 2.7 Gb data generated. Basically, each test here is creating a cluster and fill it with multixacts. Thus, dozens of segments are created using two methods. One is with prepared transactions, and it creates, roughly, the same amount of segments for members and for offsets. The other one is based on Heikki's multixids.py and creates more members than offsets. I've used both of these methods to generate as much diverse data as possible. Here is how I test this patch set: 1. You need two pg clusters: the "old" one, i.e. without patch set, and the "new" with patch set v9 applied. 2. Apply v9-0005-TEST-initdb-option-to-initialize-cluster-with-non.patch.txt to the "old" and "new" clusters. Note, this is only patch required for "old" cluster. This will allow you to create a cluster with non-standard initial multixact and multixact offset. Unfortunately, this patch was not did not arouse public interest since it is assumed that there is similar functionality to the pg_resetwal utility. But similar is not mean equal. See, pg_resetwal must be used after cluster init, thus, we step into some problems with vacuum and some SLRU segments must be filled with zeroes. Also, template0 datminmxid must be manually updated. So, in me view, using this patch is justified and very handy here. 3. Also, apply all the "TEST" (0006 and 0007) patches to the "new" cluster. 4. Build "old" and "new" pg clusters. 5. Run the test with: PROVE_TESTS=t/005_offset.pl PG_TEST_NOCLEAN=1 oldinstall=/home/orlov/proj/OFFSET3/pgsql-old make check -s -C src/bin/pg_upgrade/ 6. In my case, it took around 45 minutes and generate roughly 2.7 Gb of data. "TEST" patches, of course, are for the test purposes and not to be committed. In src/bin/pg_upgrade/t/005_offset.pl I try to consider next cases: - Basic sanity checks. Here I test various initial multi and offset values (including wraparound) and see how appropriate segments are generated. - pg_upgarde tests. Here is oldinstall ENV is for. Run pg_upgrade for old cluster with multi and offset values just like in previous step. i.e. with various combinations. - Self pg_upgarde. -- Best regards, Maxim Orlov. --000000000000e797b1062747b7e1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Oops! Sorry for the noise. I've must have been ov= erworking yesterday and messed up the working branches. v7 was a correct se= t and v8 don't. Here is the correction with extended Perl test.

The test itself is in=C2=A0src/bin/pg_upgrade/t/005_offset.pl It is rather heavy and took abo= ut 45 minutes on my i5 with 2.7 Gb data generated. Basically, each test her= e is creating a cluster and fill it with multixacts. Thus, dozens of segmen= ts are created using two methods. One is with prepared transactions, and it= creates, roughly, the same amount of segments for members and for offsets.= The other one is based on Heikki's multixids.py and creates more membe= rs than offsets. I've used both of t= hese methods to generate as much diverse data as possible.

Here is how I test this patch set:
=
  1. You need two pg clusters: the "old" one, i.e. without pat= ch set, and the "new" with patch set v9 applied.
  2. Apply=C2= =A0v9-0005-TEST-initdb-option-to-initialize-cluster-with-non.patch.txt to the "old" and "new" clusters. Note, this is only patch= required for "old" cluster. This will allow you to create a clus= ter=20 with non-standard initial multixact and multixact offset. Unfortunately, this patch was not did not arouse public interest since it is assumed that there is similar functionality to the pg_resetwal=20 utility. But similar is not mean equal. See, pg_resetwal must be used=20 after cluster init, thus, we step into some problems with vacuum and some S= LRU segments must be filled with zeroes. Also, template0=C2=A0datminmxid must be manually upda= ted. So, in me view, using this patch is=C2=A0justifie= d and very handy here.
  3. Also, apply all the "TE= ST" (0006 and 0007) patches to the "new" cluster.
  4. =
  5. Build "old" and "new&= quot; pg clusters.
  6. Run the test with: PROVE= _TESTS=3Dt/005_offset.pl PG_TEST_NOCLE= AN=3D1 oldinstall=3D/home/orlov/proj/OFFSET3/pgsql-old make check -s -C src= /bin/pg_upgrade/
  7. In my case,= it took around 45 minutes and generate roughly 2.7 Gb of data.
"TEST" patches, of course, are for the test purposes a= nd not to be committed.

In src/bin/pg_upgrade/t/005_offset.pl I try to consider next cas= es:
  • Basic sanity checks.
    Here I test various initial m= ulti and offset values (including wraparound) and see how appropriate segme= nts are generated.
  • pg_upgarde tests.
    Here is oldinstall ENV is for. Run pg_upgrade for old clu= ster with multi and offset values just like in previous step. i.e. w= ith various combinations.
  • Self pg_upgarde.

=
--
Best regards,
<= /div>
Maxim Orlov.
--000000000000e797b1062747b7e1-- --000000000000e797b8062747b7e3 Content-Type: text/plain; charset="US-ASCII"; name="v9-0005-TEST-initdb-option-to-initialize-cluster-with-non.patch.txt" Content-Disposition: attachment; filename="v9-0005-TEST-initdb-option-to-initialize-cluster-with-non.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3oqaqmr4 RnJvbSAyNjQyZjU5NzgzMmNiZWQwZWJjNTQyMDJkZTRlMGY1NzcwYWM1ZjUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA0IE1heSAyMDIyIDE1OjUzOjM2ICswMzAwClN1YmplY3Q6IFtQQVRDSCB2OSA1 LzddIFRFU1Q6IGluaXRkYiBvcHRpb24gdG8gaW5pdGlhbGl6ZSBjbHVzdGVyIHdpdGgKIG5vbi1z dGFuZGFyZCB4aWQvbXhpZC9teG9mZgoKVG8gZGF0ZSB0ZXN0aW5nIGRhdGFiYXNlIGNsdXN0ZXIg d3JhcGFydW5kIHdhcyBub3QgZWFzeSBhcyBpbml0ZGIgaGFzIGFsd2F5cwppbml0ZWQgaXQgd2l0 aCBkZWZhdWx0IHhpZC9teGlkL214b2ZmLiBUaGUgb3B0aW9uIHRvIHNwZWNpZnkgYW55IHZhbGlk CnhpZC9teGlkL214b2ZmIGF0IGNsdXN0ZXIgc3RhcnR1cCB3aWxsIG1ha2UgdGhlc2UgdGhpbmdz IGVhc2llci4KCkF1dGhvcjogTWF4aW0gT3Jsb3YgPG9ybG92bWdAZ21haWwuY29tPgpBdXRob3I6 IFBhdmVsIEJvcmlzb3YgPHBhc2hraW4uZWxmZUBnbWFpbC5jb20+CkF1dGhvcjogU3ZldGxhbmEg RGVyZXZ5YW5rbyA8cy5kZXJldnlhbmtvQHBvc3RncmVzcHJvLnJ1PgpEaXNjdXNzaW9uOiBodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FDRyUzRGV6YWE0dnFZakox NnlveGdycGEtJTNEZ1huZjBWdjNFeTliakdyUlJGTjJZeVdGUSU0MG1haWwuZ21haWwuY29tCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jICAgICAgfCAgMjEgKysrKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIHwgIDUzICsrKysrKysrKysrKwog c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYyAgfCAgIDggKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgIHwgIDE1ICsrLS0KIHNyYy9iYWNrZW5kL2Jv b3RzdHJhcC9ib290c3RyYXAuYyAgICAgIHwgIDUwICsrKysrKysrKysrLQogc3JjL2JhY2tlbmQv bWFpbi9tYWluLmMgICAgICAgICAgICAgICAgfCAgIDYgKysKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvcG9zdG1hc3Rlci5jICAgIHwgIDE0ICsrKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YyAgICAgICAgICAgIHwgIDUzICsrKysrKysrKysrLQogc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMg ICAgICAgICAgICAgICAgfCAxMDcgKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2Jpbi9p bml0ZGIvdC8wMDFfaW5pdGRiLnBsICAgICAgICAgfCAgNjAgKysrKysrKysrKysrKysKIHNyYy9p bmNsdWRlL2FjY2Vzcy94bG9nLmggICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2Mu aCAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf Y2xhc3MuaCAgICAgICAgIHwgICAyICstCiAxMyBmaWxlcyBjaGFuZ2VkLCAzODIgaW5zZXJ0aW9u cygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vY2xvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCmluZGV4IGU2 Zjc5MzIwZTkuLjE3ZTI5ZjQ0OTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL2Nsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMKQEAgLTgz NCw2ICs4MzQsNyBAQCBCb290U3RyYXBDTE9HKHZvaWQpCiB7CiAJaW50CQkJc2xvdG5vOwogCUxX TG9jawkgICAqbG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2NrKFhhY3RDdGwsIDApOworCWludDY0 CQlwYWdlbm87CiAKIAlMV0xvY2tBY3F1aXJlKGxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKQEAgLTg0 NCw2ICs4NDUsMjYgQEAgQm9vdFN0cmFwQ0xPRyh2b2lkKQogCVNpbXBsZUxydVdyaXRlUGFnZShY YWN0Q3RsLCBzbG90bm8pOwogCUFzc2VydCghWGFjdEN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Ns b3Rub10pOwogCisJcGFnZW5vID0gVHJhbnNhY3Rpb25JZFRvUGFnZShYaWRGcm9tRnVsbFRyYW5z YWN0aW9uSWQoVHJhbnNhbVZhcmlhYmxlcy0+bmV4dFhpZCkpOworCWlmIChwYWdlbm8gIT0gMCkK Kwl7CisJCUxXTG9jayAqbmV4dGxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9jayhYYWN0Q3RsLCBw YWdlbm8pOworCisJCWlmIChuZXh0bG9jayAhPSBsb2NrKQorCQl7CisJCQlMV0xvY2tSZWxlYXNl KGxvY2spOworCQkJTFdMb2NrQWNxdWlyZShuZXh0bG9jaywgTFdfRVhDTFVTSVZFKTsKKwkJCWxv Y2sgPSBuZXh0bG9jazsKKwkJfQorCisJCS8qIENyZWF0ZSBhbmQgemVybyB0aGUgZmlyc3QgcGFn ZSBvZiB0aGUgY29tbWl0IGxvZyAqLworCQlzbG90bm8gPSBaZXJvQ0xPR1BhZ2UocGFnZW5vLCBm YWxzZSk7CisKKwkJLyogTWFrZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KKwkJU2ltcGxlTHJ1 V3JpdGVQYWdlKFhhY3RDdGwsIHNsb3Rubyk7CisJCUFzc2VydCghWGFjdEN0bC0+c2hhcmVkLT5w YWdlX2RpcnR5W3Nsb3Rub10pOworCX0KKwogCUxXTG9ja1JlbGVhc2UobG9jayk7CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKaW5kZXggYTgxN2Y1MzllZS4uMDk1YzM5 ZGQ5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTE5NTUsNiAr MTk1NSw3IEBAIEJvb3RTdHJhcE11bHRpWGFjdCh2b2lkKQogewogCWludAkJCXNsb3RubzsKIAlM V0xvY2sJICAgKmxvY2s7CisJaW50NjQJCXBhZ2VubzsKIAogCWxvY2sgPSBTaW1wbGVMcnVHZXRC YW5rTG9jayhNdWx0aVhhY3RPZmZzZXRDdGwsIDApOwogCUxXTG9ja0FjcXVpcmUobG9jaywgTFdf RVhDTFVTSVZFKTsKQEAgLTE5NjYsNiArMTk2NywyNiBAQCBCb290U3RyYXBNdWx0aVhhY3Qodm9p ZCkKIAlTaW1wbGVMcnVXcml0ZVBhZ2UoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBzbG90bm8pOwogCUFz c2VydCghTXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSk7CiAK KwlwYWdlbm8gPSBNdWx0aVhhY3RJZFRvT2Zmc2V0UGFnZShNdWx0aVhhY3RTdGF0ZS0+bmV4dE1Y YWN0KTsKKwlpZiAocGFnZW5vICE9IDApCisJeworCQlMV0xvY2sgKm5leHRsb2NrID0gU2ltcGxl THJ1R2V0QmFua0xvY2soTXVsdGlYYWN0T2Zmc2V0Q3RsLCBwYWdlbm8pOworCisJCWlmIChuZXh0 bG9jayAhPSBsb2NrKQorCQl7CisJCQlMV0xvY2tSZWxlYXNlKGxvY2spOworCQkJTFdMb2NrQWNx dWlyZShuZXh0bG9jaywgTFdfRVhDTFVTSVZFKTsKKwkJCWxvY2sgPSBuZXh0bG9jazsKKwkJfQor CisJCS8qIENyZWF0ZSBhbmQgemVybyB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgb2Zmc2V0cyBsb2cg Ki8KKwkJc2xvdG5vID0gWmVyb011bHRpWGFjdE9mZnNldFBhZ2UocGFnZW5vLCBmYWxzZSk7CisK KwkJLyogTWFrZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KKwkJU2ltcGxlTHJ1V3JpdGVQYWdl KE11bHRpWGFjdE9mZnNldEN0bCwgc2xvdG5vKTsKKwkJQXNzZXJ0KCFNdWx0aVhhY3RPZmZzZXRD dGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwl9CisKIAlMV0xvY2tSZWxlYXNlKGxv Y2spOwogCiAJbG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2NrKE11bHRpWGFjdE1lbWJlckN0bCwg MCk7CkBAIC0xOTc4LDcgKzE5OTksMzkgQEAgQm9vdFN0cmFwTXVsdGlYYWN0KHZvaWQpCiAJU2lt cGxlTHJ1V3JpdGVQYWdlKE11bHRpWGFjdE1lbWJlckN0bCwgc2xvdG5vKTsKIAlBc3NlcnQoIU11 bHRpWGFjdE1lbWJlckN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10pOwogCisJcGFnZW5v ID0gTVhPZmZzZXRUb01lbWJlclBhZ2UoTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQpOworCWlm IChwYWdlbm8gIT0gMCkKKwl7CisJCUxXTG9jayAqbmV4dGxvY2sgPSBTaW1wbGVMcnVHZXRCYW5r TG9jayhNdWx0aVhhY3RNZW1iZXJDdGwsIHBhZ2Vubyk7CisKKwkJaWYgKG5leHRsb2NrICE9IGxv Y2spCisJCXsKKwkJCUxXTG9ja1JlbGVhc2UobG9jayk7CisJCQlMV0xvY2tBY3F1aXJlKG5leHRs b2NrLCBMV19FWENMVVNJVkUpOworCQkJbG9jayA9IG5leHRsb2NrOworCQl9CisKKwkJLyogQ3Jl YXRlIGFuZCB6ZXJvIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBtZW1iZXJzIGxvZyAqLworCQlzbG90 bm8gPSBaZXJvTXVsdGlYYWN0TWVtYmVyUGFnZShwYWdlbm8sIGZhbHNlKTsKKworCQkvKiBNYWtl IHN1cmUgaXQncyB3cml0dGVuIG91dCAqLworCQlTaW1wbGVMcnVXcml0ZVBhZ2UoTXVsdGlYYWN0 TWVtYmVyQ3RsLCBzbG90bm8pOworCQlBc3NlcnQoIU11bHRpWGFjdE1lbWJlckN0bC0+c2hhcmVk LT5wYWdlX2RpcnR5W3Nsb3Rub10pOworCX0KKwogCUxXTG9ja1JlbGVhc2UobG9jayk7CisKKwkv KgorCSAqIElmIHdlJ3JlIHN0YXJ0aW5nIG5vdCBmcm9tIHplcm8gb2Zmc2V0LCBpbml0aWxpemUg ZHVtbXkgbXVsdGl4YWN0IHRvCisJICogZXZhZGUgdG9vIGxvbmcgbG9vcCBpbiBQZXJmb3JtTWVt YmVyc1RydW5jYXRpb24oKS4KKwkgKi8KKwlpZiAoTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQg PiAwICYmIE11bHRpWGFjdFN0YXRlLT5uZXh0TVhhY3QgPiAwKQorCXsKKwkJUmVjb3JkTmV3TXVs dGlYYWN0KEZpcnN0TXVsdGlYYWN0SWQsCisJCQkJCQkgICBNdWx0aVhhY3RTdGF0ZS0+bmV4dE9m ZnNldCwgMCwgTlVMTCk7CisJCVJlY29yZE5ld011bHRpWGFjdChNdWx0aVhhY3RTdGF0ZS0+bmV4 dE1YYWN0LAorCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQsIDAsIE5VTEwpOwor CX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRy YW5zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jCmluZGV4IDUwYmIx ZDhjZmMuLmE1ZTZlOGYwOTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3N1YnRyYW5zLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYwpA QCAtMjcwLDEyICsyNzAsMTYgQEAgdm9pZAogQm9vdFN0cmFwU1VCVFJBTlModm9pZCkKIHsKIAlp bnQJCQlzbG90bm87Ci0JTFdMb2NrCSAgICpsb2NrID0gU2ltcGxlTHJ1R2V0QmFua0xvY2soU3Vi VHJhbnNDdGwsIDApOworCUxXTG9jawkgICAqbG9jazsKKwlpbnQ2NAkJcGFnZW5vOworCisJcGFn ZW5vID0gVHJhbnNhY3Rpb25JZFRvUGFnZShYaWRGcm9tRnVsbFRyYW5zYWN0aW9uSWQoVHJhbnNh bVZhcmlhYmxlcy0+bmV4dFhpZCkpOworCWxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9jayhTdWJU cmFuc0N0bCwgcGFnZW5vKTsKIAogCUxXTG9ja0FjcXVpcmUobG9jaywgTFdfRVhDTFVTSVZFKTsK IAogCS8qIENyZWF0ZSBhbmQgemVybyB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgc3VidHJhbnMgbG9n ICovCi0Jc2xvdG5vID0gWmVyb1NVQlRSQU5TUGFnZSgwKTsKKwlzbG90bm8gPSBaZXJvU1VCVFJB TlNQYWdlKHBhZ2Vubyk7CiAKIAkvKiBNYWtlIHN1cmUgaXQncyB3cml0dGVuIG91dCAqLwogCVNp bXBsZUxydVdyaXRlUGFnZShTdWJUcmFuc0N0bCwgc2xvdG5vKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYwppbmRleCA2ZjU4NDEyYmNhLi5jNjFkN2Q5NjdjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZy5jCkBAIC0xMzYsNiArMTM2LDEwIEBAIGludAkJCW1heF9zbG90X3dhbF9rZWVwX3Np emVfbWIgPSAtMTsKIGludAkJCXdhbF9kZWNvZGVfYnVmZmVyX3NpemUgPSA1MTIgKiAxMDI0Owog Ym9vbAkJdHJhY2tfd2FsX2lvX3RpbWluZyA9IGZhbHNlOwogCitUcmFuc2FjdGlvbklkCQlzdGFy dF94aWQgPSBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQ7CitNdWx0aVhhY3RJZAkJCXN0YXJ0X214 aWQgPSBGaXJzdE11bHRpWGFjdElkOworTXVsdGlYYWN0T2Zmc2V0CQlzdGFydF9teG9mZiA9IDA7 CisKICNpZmRlZiBXQUxfREVCVUcKIGJvb2wJCVhMT0dfREVCVUcgPSBmYWxzZTsKICNlbmRpZgpA QCAtNTA4MCwxMyArNTA4NCwxNCBAQCBCb290U3RyYXBYTE9HKHVpbnQzMiBkYXRhX2NoZWNrc3Vt X3ZlcnNpb24pCiAJY2hlY2tQb2ludC5mdWxsUGFnZVdyaXRlcyA9IGZ1bGxQYWdlV3JpdGVzOwog CWNoZWNrUG9pbnQud2FsX2xldmVsID0gd2FsX2xldmVsOwogCWNoZWNrUG9pbnQubmV4dFhpZCA9 Ci0JCUZ1bGxUcmFuc2FjdGlvbklkRnJvbUVwb2NoQW5kWGlkKDAsIEZpcnN0Tm9ybWFsVHJhbnNh Y3Rpb25JZCk7CisJCUZ1bGxUcmFuc2FjdGlvbklkRnJvbUVwb2NoQW5kWGlkKDAsIE1heChGaXJz dE5vcm1hbFRyYW5zYWN0aW9uSWQsCisJCQkJCQkJCQkJCQlzdGFydF94aWQpKTsKIAljaGVja1Bv aW50Lm5leHRPaWQgPSBGaXJzdEdlbmJraU9iamVjdElkOwotCWNoZWNrUG9pbnQubmV4dE11bHRp ID0gRmlyc3RNdWx0aVhhY3RJZDsKLQljaGVja1BvaW50Lm5leHRNdWx0aU9mZnNldCA9IDA7Ci0J Y2hlY2tQb2ludC5vbGRlc3RYaWQgPSBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQ7CisJY2hlY2tQ b2ludC5uZXh0TXVsdGkgPSBNYXgoRmlyc3RNdWx0aVhhY3RJZCwgc3RhcnRfbXhpZCk7CisJY2hl Y2tQb2ludC5uZXh0TXVsdGlPZmZzZXQgPSBzdGFydF9teG9mZjsKKwljaGVja1BvaW50Lm9sZGVz dFhpZCA9IFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChjaGVja1BvaW50Lm5leHRYaWQpOwogCWNo ZWNrUG9pbnQub2xkZXN0WGlkREIgPSBUZW1wbGF0ZTFEYk9pZDsKLQljaGVja1BvaW50Lm9sZGVz dE11bHRpID0gRmlyc3RNdWx0aVhhY3RJZDsKKwljaGVja1BvaW50Lm9sZGVzdE11bHRpID0gY2hl Y2tQb2ludC5uZXh0TXVsdGk7CiAJY2hlY2tQb2ludC5vbGRlc3RNdWx0aURCID0gVGVtcGxhdGUx RGJPaWQ7CiAJY2hlY2tQb2ludC5vbGRlc3RDb21taXRUc1hpZCA9IEludmFsaWRUcmFuc2FjdGlv bklkOwogCWNoZWNrUG9pbnQubmV3ZXN0Q29tbWl0VHNYaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYyBiL3NyYy9i YWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwppbmRleCBkMzFhNjc1OTljLi44YzMzYjhiYTlk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCkBAIC0yMTcsNyArMjE3LDcgQEAgQm9vdHN0 cmFwTW9kZU1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgYm9vbCBjaGVja19vbmx5KQogCWFy Z3YrKzsKIAlhcmdjLS07CiAKLQl3aGlsZSAoKGZsYWcgPSBnZXRvcHQoYXJnYywgYXJndiwgIkI6 YzpkOkQ6RmtyOlg6LToiKSkgIT0gLTEpCisJd2hpbGUgKChmbGFnID0gZ2V0b3B0KGFyZ2MsIGFy Z3YsICJCOmM6ZDpEOkZrbTpvOnI6WDp4Oi06IikpICE9IC0xKQogCXsKIAkJc3dpdGNoIChmbGFn KQogCQl7CkBAIC0yNzIsMTIgKzI3Miw2MCBAQCBCb290c3RyYXBNb2RlTWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdLCBib29sIGNoZWNrX29ubHkpCiAJCQljYXNlICdrJzoKIAkJCQlib290c3Ry YXBfZGF0YV9jaGVja3N1bV92ZXJzaW9uID0gUEdfREFUQV9DSEVDS1NVTV9WRVJTSU9OOwogCQkJ CWJyZWFrOworCQkJY2FzZSAnbSc6CisJCQkJeworCQkJCQljaGFyCSAgICplbmRwdHI7CisKKwkJ CQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teGlkID0gc3RydG91NjQob3B0YXJnLCAmZW5kcHRy LCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwg ZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0SWRJc1ZhbGlkKHN0YXJ0X214aWQp KQorCQkJCQl7CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coImludmFsaWQgaW5pdGlhbCBkYXRhYmFz ZSBjbHVzdGVyIG11bHRpeGFjdCBpZCIpKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CisJ CQljYXNlICdvJzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJCQllcnJubyA9 IDA7CisJCQkJCXN0YXJ0X214b2ZmID0gc3RydG91NjQob3B0YXJnLCAmZW5kcHRyLCAwKTsKKwor CQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwgZXJybm8gIT0g MCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0T2Zmc2V0SXNWYWxpZChzdGFydF9teG9mZikpCisJ CQkJCXsKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNs dXN0ZXIgbXVsdGl4YWN0IG9mZnNldCIpKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CiAJ CQljYXNlICdyJzoKIAkJCQlzdHJsY3B5KE91dHB1dEZpbGVOYW1lLCBvcHRhcmcsIE1BWFBHUEFU SCk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdYJzoKIAkJCQlTZXRDb25maWdPcHRpb24oIndhbF9z ZWdtZW50X3NpemUiLCBvcHRhcmcsIFBHQ19JTlRFUk5BTCwgUEdDX1NfRFlOQU1JQ19ERUZBVUxU KTsKIAkJCQlicmVhazsKKwkJCWNhc2UgJ3gnOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRy OworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfeGlkID0gc3RydG91NjQob3B0YXJnLCAm ZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdc MCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0VHJhbnNhY3Rpb25JZElzVmFsaWQoc3Rh cnRfeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIGluaXRpYWwg ZGF0YWJhc2UgY2x1c3RlciB4aWQgdmFsdWUiKSkpOworCQkJCQl9CisJCQkJfQorCQkJCWJyZWFr OwogCQkJZGVmYXVsdDoKIAkJCQl3cml0ZV9zdGRlcnIoIlRyeSBcIiVzIC0taGVscFwiIGZvciBt b3JlIGluZm9ybWF0aW9uLlxuIiwKIAkJCQkJCQkgcHJvZ25hbWUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbWFpbi9tYWluLmMgYi9zcmMvYmFja2VuZC9tYWluL21haW4uYwppbmRleCBhZWE5 M2EwMjI5Li42YTMyMjRiYjgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9tYWluL21haW4uYwor KysgYi9zcmMvYmFja2VuZC9tYWluL21haW4uYwpAQCAtMzU4LDEyICszNTgsMTggQEAgaGVscChj b25zdCBjaGFyICpwcm9nbmFtZSkKIAlwcmludGYoXygiICAtRSAgICAgICAgICAgICAgICAgZWNo byBzdGF0ZW1lbnQgYmVmb3JlIGV4ZWN1dGlvblxuIikpOwogCXByaW50ZihfKCIgIC1qICAgICAg ICAgICAgICAgICBkbyBub3QgdXNlIG5ld2xpbmUgYXMgaW50ZXJhY3RpdmUgcXVlcnkgZGVsaW1p dGVyXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXIgRklMRU5BTUUgICAgICAgIHNlbmQgc3Rkb3V0IGFu ZCBzdGRlcnIgdG8gZ2l2ZW4gZmlsZVxuIikpOworCXByaW50ZihfKCIgIC1tIFNUQVJUX01YSUQg ICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZFxuIikpOworCXBy aW50ZihfKCIgIC1vIFNUQVJUX01YT0ZGICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVy IG11bHRpeGFjdCBvZmZzZXRcbiIpKTsKKwlwcmludGYoXygiICAteCBTVEFSVF9YSUQgICAgICAg c2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWRcbiIpKTsKIAogCXByaW50ZihfKCJcbk9w dGlvbnMgZm9yIGJvb3RzdHJhcHBpbmcgbW9kZTpcbiIpKTsKIAlwcmludGYoXygiICAtLWJvb3Qg ICAgICAgICAgICAgc2VsZWN0cyBib290c3RyYXBwaW5nIG1vZGUgKG11c3QgYmUgZmlyc3QgYXJn dW1lbnQpXG4iKSk7CiAJcHJpbnRmKF8oIiAgLS1jaGVjayAgICAgICAgICAgIHNlbGVjdHMgY2hl Y2sgbW9kZSAobXVzdCBiZSBmaXJzdCBhcmd1bWVudClcbiIpKTsKIAlwcmludGYoXygiICBEQk5B TUUgICAgICAgICAgICAgZGF0YWJhc2UgbmFtZSAobWFuZGF0b3J5IGFyZ3VtZW50IGluIGJvb3Rz dHJhcHBpbmcgbW9kZSlcbiIpKTsKIAlwcmludGYoXygiICAtciBGSUxFTkFNRSAgICAgICAgc2Vu ZCBzdGRvdXQgYW5kIHN0ZGVyciB0byBnaXZlbiBmaWxlXG4iKSk7CisJcHJpbnRmKF8oIiAgLW0g U1RBUlRfTVhJRCAgICAgIHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IGlk XG4iKSk7CisJcHJpbnRmKF8oIiAgLW8gU1RBUlRfTVhPRkYgICAgIHNldCBpbml0aWFsIGRhdGFi YXNlIGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldFxuIikpOworCXByaW50ZihfKCIgIC14IFNUQVJU X1hJRCAgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZFxuIikpOwogCiAJcHJp bnRmKF8oIlxuUGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBjb21wbGV0ZSBs aXN0IG9mIHJ1bi10aW1lXG4iCiAJCQkgImNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYW5kIGhvdyB0 byBzZXQgdGhlbSBvbiB0aGUgY29tbWFuZCBsaW5lIG9yIGluXG4iCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv cG9zdG1hc3Rlci5jCmluZGV4IDc4ZTY2YTA2YWMuLjQ4MzMwNzI3OWYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC01NzIsNyArNTcyLDcgQEAgUG9zdG1hc3Rlck1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKiB0Y29wL3Bvc3RncmVzLmMgKHRoZSBvcHRpb24gc2V0 cyBzaG91bGQgbm90IGNvbmZsaWN0KSBhbmQgd2l0aCB0aGUKIAkgKiBjb21tb24gaGVscCgpIGZ1 bmN0aW9uIGluIG1haW4vbWFpbi5jLgogCSAqLwotCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2Ms IGFyZ3YsICJCOmJDOmM6RDpkOkVlRmY6aDppams6bE46T1BwOnI6UzpzVHQ6VzotOiIpKSAhPSAt MSkKKwl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAiQjpiQzpjOkQ6ZDpFZUZmOmg6 aWprOmxtOk46T286UHA6cjpTOnNUdDpXOng6LToiKSkgIT0gLTEpCiAJewogCQlzd2l0Y2ggKG9w dCkKIAkJewpAQCAtNjY5LDEwICs2NjksMTggQEAgUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkJCQlTZXRDb25maWdPcHRpb24oIm1heF9jb25uZWN0aW9ucyIsIG9wdGFy ZywgUEdDX1BPU1RNQVNURVIsIFBHQ19TX0FSR1YpOwogCQkJCWJyZWFrOwogCisJCQljYXNlICdt JzoKKwkJCQkvKiBvbmx5IHVzZWQgYnkgc2luZ2xlLXVzZXIgYmFja2VuZCAqLworCQkJCWJyZWFr OworCiAJCQljYXNlICdPJzoKIAkJCQlTZXRDb25maWdPcHRpb24oImFsbG93X3N5c3RlbV90YWJs ZV9tb2RzIiwgInRydWUiLCBQR0NfUE9TVE1BU1RFUiwgUEdDX1NfQVJHVik7CiAJCQkJYnJlYWs7 CiAKKwkJCWNhc2UgJ28nOgorCQkJCS8qIG9ubHkgdXNlZCBieSBzaW5nbGUtdXNlciBiYWNrZW5k ICovCisJCQkJYnJlYWs7CisKIAkJCWNhc2UgJ1AnOgogCQkJCVNldENvbmZpZ09wdGlvbigiaWdu b3JlX3N5c3RlbV9pbmRleGVzIiwgInRydWUiLCBQR0NfUE9TVE1BU1RFUiwgUEdDX1NfQVJHVik7 CiAJCQkJYnJlYWs7CkBAIC03MjMsNiArNzMxLDEwIEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJwb3N0X2F1dGhfZGVsYXkiLCBv cHRhcmcsIFBHQ19QT1NUTUFTVEVSLCBQR0NfU19BUkdWKTsKIAkJCQlicmVhazsKIAorCQkJY2Fz ZSAneCc6CisJCQkJLyogb25seSB1c2VkIGJ5IHNpbmdsZS11c2VyIGJhY2tlbmQgKi8KKwkJCQli cmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQl3cml0ZV9zdGRlcnIoIlRyeSBcIiVzIC0taGVscFwi IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiwKIAkJCQkJCQkgcHJvZ25hbWUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCmluZGV4IDE4NGI4MzAxNjguLjRmZDU5NGNmZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTM5 MTgsNyArMzkxOCw3IEBAIHByb2Nlc3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSwgR3VjQ29udGV4dCBjdHgsCiAJICogcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgKHRo ZSBvcHRpb24gc2V0cyBzaG91bGQgbm90IGNvbmZsaWN0KSBhbmQgd2l0aAogCSAqIHRoZSBjb21t b24gaGVscCgpIGZ1bmN0aW9uIGluIG1haW4vbWFpbi5jLgogCSAqLwotCXdoaWxlICgoZmxhZyA9 IGdldG9wdChhcmdjLCBhcmd2LCAiQjpiQzpjOkQ6ZDpFZUZmOmg6aWprOmxOOm5PUHA6cjpTOnNU dDp2Olc6LToiKSkgIT0gLTEpCisJd2hpbGUgKChmbGFnID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJC OmJDOmM6RDpkOkVlRmY6aDppams6bG06TjpuT286UHA6cjpTOnNUdDp2Olc6eDotOiIpKSAhPSAt MSkKIAl7CiAJCXN3aXRjaCAoZmxhZykKIAkJewpAQCAtNDAxMCw2ICs0MDEwLDIzIEBAIHByb2Nl c3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgR3VjQ29udGV4dCBj dHgsCiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJzc2wiLCAidHJ1ZSIsIGN0eCwgZ3Vjc291cmNlKTsK IAkJCQlicmVhazsKIAorCQkJY2FzZSAnbSc6CisJCQkJeworCQkJCQljaGFyCSAgICplbmRwdHI7 CisKKwkJCQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teGlkID0gc3RydG91NjQob3B0YXJnLCAm ZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdc MCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0SWRJc1ZhbGlkKHN0YXJ0 X214aWQpKQorCQkJCQl7CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coImludmFsaWQgaW5pdGlhbCBk YXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZCIpKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJl YWs7CisKIAkJCWNhc2UgJ04nOgogCQkJCVNldENvbmZpZ09wdGlvbigibWF4X2Nvbm5lY3Rpb25z Iiwgb3B0YXJnLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CkBAIC00MDIyLDYgKzQwMzks MjMgQEAgcHJvY2Vzc19wb3N0Z3Jlc19zd2l0Y2hlcyhpbnQgYXJnYywgY2hhciAqYXJndltdLCBH dWNDb250ZXh0IGN0eCwKIAkJCQlTZXRDb25maWdPcHRpb24oImFsbG93X3N5c3RlbV90YWJsZV9t b2RzIiwgInRydWUiLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgJ28n OgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJ c3RhcnRfbXhvZmYgPSBzdHJ0b3U2NChvcHRhcmcsICZlbmRwdHIsIDApOworCisJCQkJCWlmIChl bmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAwIHx8CisJCQkJ CQkhU3RhcnRNdWx0aVhhY3RPZmZzZXRJc1ZhbGlkKHN0YXJ0X214b2ZmKSkKKwkJCQkJeworCQkJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0 aXhhY3Qgb2Zmc2V0IikpKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKKwogCQkJY2FzZSAn UCc6CiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJpZ25vcmVfc3lzdGVtX2luZGV4ZXMiLCAidHJ1ZSIs IGN0eCwgZ3Vjc291cmNlKTsKIAkJCQlicmVhazsKQEAgLTQwNzYsNiArNDExMCwyMyBAQCBwcm9j ZXNzX3Bvc3RncmVzX3N3aXRjaGVzKGludCBhcmdjLCBjaGFyICphcmd2W10sIEd1Y0NvbnRleHQg Y3R4LAogCQkJCVNldENvbmZpZ09wdGlvbigicG9zdF9hdXRoX2RlbGF5Iiwgb3B0YXJnLCBjdHgs IGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgJ3gnOgorCQkJCXsKKwkJCQkJY2hh cgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfeGlkID0gc3RydG91 NjQob3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAq ZW5kcHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0VHJhbnNhY3Rpb25J ZElzVmFsaWQoc3RhcnRfeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZh bGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWQiKSkpOworCQkJCQl9CisJCQkJfQorCQkJ CWJyZWFrOworCiAJCQlkZWZhdWx0OgogCQkJCWVycnMrKzsKIAkJCQlicmVhazsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKaW5k ZXggOWE5MTgzMDc4My4uNDEwODY4ZGRkZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0ZGIvaW5p dGRiLmMKKysrIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKQEAgLTE2OCw2ICsxNjgsOSBAQCBz dGF0aWMgYm9vbCBkYXRhX2NoZWNrc3VtcyA9IHRydWU7CiBzdGF0aWMgY2hhciAqeGxvZ19kaXIg PSBOVUxMOwogc3RhdGljIGludAl3YWxfc2VnbWVudF9zaXplX21iID0gKERFRkFVTFRfWExPR19T RUdfU0laRSkgLyAoMTAyNCAqIDEwMjQpOwogc3RhdGljIERhdGFEaXJTeW5jTWV0aG9kIHN5bmNf bWV0aG9kID0gREFUQV9ESVJfU1lOQ19NRVRIT0RfRlNZTkM7CitzdGF0aWMgVHJhbnNhY3Rpb25J ZCBzdGFydF94aWQgPSAwOworc3RhdGljIE11bHRpWGFjdElkIHN0YXJ0X214aWQgPSAwOworc3Rh dGljIE11bHRpWGFjdE9mZnNldCBzdGFydF9teG9mZiA9IDA7CiAKIAogLyogaW50ZXJuYWwgdmFy cyAqLwpAQCAtMTU2OCw2ICsxNTcxLDExIEBAIGJvb3RzdHJhcF90ZW1wbGF0ZTEodm9pZCkKIAli a2lfbGluZXMgPSByZXBsYWNlX3Rva2VuKGJraV9saW5lcywgIlBPU1RHUkVTIiwKIAkJCQkJCQkg IGVzY2FwZV9xdW90ZXNfYmtpKHVzZXJuYW1lKSk7CiAKKwkvKiByZWxmcm96ZW54aWQgbXVzdCBu b3QgYmUgbGVzcyB0aGFuIEZpcnN0Tm9ybWFsVHJhbnNhY3Rpb25JZCAqLworCXNwcmludGYoYnVm LCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIE1heChzdGFydF94aWQsIDMpKTsKKwlia2lf bGluZXMgPSByZXBsYWNlX3Rva2VuKGJraV9saW5lcywgIlJFQ0VOVFhNSU4iLAorCQkJCQkJCSAg YnVmKTsKKwogCWJraV9saW5lcyA9IHJlcGxhY2VfdG9rZW4oYmtpX2xpbmVzLCAiRU5DT0RJTkci LAogCQkJCQkJCSAgZW5jb2RpbmdpZF90b19zdHJpbmcoZW5jb2RpbmdpZCkpOwogCkBAIC0xNTkz LDYgKzE2MDEsOSBAQCBib290c3RyYXBfdGVtcGxhdGUxKHZvaWQpCiAKIAlwcmludGZQUUV4cEJ1 ZmZlcigmY21kLCAiXCIlc1wiIC0tYm9vdCAlcyAlcyIsIGJhY2tlbmRfZXhlYywgYm9vdF9vcHRp b25zLCBleHRyYV9vcHRpb25zKTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC1YICVkIiwg d2FsX3NlZ21lbnRfc2l6ZV9tYiAqICgxMDI0ICogMTAyNCkpOworCWFwcGVuZFBRRXhwQnVmZmVy KCZjbWQsICIgLW0gJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X214aWQpOworCWFw cGVuZFBRRXhwQnVmZmVyKCZjbWQsICIgLW8gJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0 YXJ0X214b2ZmKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC14ICVsbHUiLCAodW5zaWdu ZWQgbG9uZyBsb25nKSBzdGFydF94aWQpOwogCWlmIChkYXRhX2NoZWNrc3VtcykKIAkJYXBwZW5k UFFFeHBCdWZmZXIoJmNtZCwgIiAtayIpOwogCWlmIChkZWJ1ZykKQEAgLTI1MzIsMTIgKzI1NDMs MjAgQEAgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJcHJpbnRmKF8oIiAgLWQsIC0tZGVi dWcgICAgICAgICAgICAgICBnZW5lcmF0ZSBsb3RzIG9mIGRlYnVnZ2luZyBvdXRwdXRcbiIpKTsK IAlwcmludGYoXygiICAgICAgLS1kaXNjYXJkLWNhY2hlcyAgICAgIHNldCBkZWJ1Z19kaXNjYXJk X2NhY2hlcz0xXG4iKSk7CiAJcHJpbnRmKF8oIiAgLUwgRElSRUNUT1JZICAgICAgICAgICAgICB3 aGVyZSB0byBmaW5kIHRoZSBpbnB1dCBmaWxlc1xuIikpOworCXByaW50ZihfKCIgIC1tLCAtLW11 bHRpeGFjdC1pZD1TVEFSVF9NWElEXG4iCisJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZFxuIgorCQkJICIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWF4IHZhbHVlIGlzIDJeNjItMVxuIikpOwogCXByaW50 ZihfKCIgIC1uLCAtLW5vLWNsZWFuICAgICAgICAgICAgZG8gbm90IGNsZWFuIHVwIGFmdGVyIGVy cm9yc1xuIikpOwogCXByaW50ZihfKCIgIC1OLCAtLW5vLXN5bmMgICAgICAgICAgICAgZG8gbm90 IHdhaXQgZm9yIGNoYW5nZXMgdG8gYmUgd3JpdHRlbiBzYWZlbHkgdG8gZGlza1xuIikpOwogCXBy aW50ZihfKCIgICAgICAtLW5vLWluc3RydWN0aW9ucyAgICAgZG8gbm90IHByaW50IGluc3RydWN0 aW9ucyBmb3IgbmV4dCBzdGVwc1xuIikpOworCXByaW50ZihfKCIgIC1vLCAtLW11bHRpeGFjdC1v ZmZzZXQ9U1RBUlRfTVhPRkZcbiIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl dCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldFxuIgorCQkJICIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWF4IHZhbHVlIGlzIDJeNjItMVxuIikpOwogCXByaW50 ZihfKCIgIC1zLCAtLXNob3cgICAgICAgICAgICAgICAgc2hvdyBpbnRlcm5hbCBzZXR0aW5ncywg dGhlbiBleGl0XG4iKSk7CiAJcHJpbnRmKF8oIiAgICAgIC0tc3luYy1tZXRob2Q9TUVUSE9EICBz ZXQgbWV0aG9kIGZvciBzeW5jaW5nIGZpbGVzIHRvIGRpc2tcbiIpKTsKIAlwcmludGYoXygiICAt UywgLS1zeW5jLW9ubHkgICAgICAgICAgIG9ubHkgc3luYyBkYXRhYmFzZSBmaWxlcyB0byBkaXNr LCB0aGVuIGV4aXRcbiIpKTsKKwlwcmludGYoXygiICAteCwgLS14aWQ9U1RBUlRfWElEICAgICAg IHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkXG4iCisJCQkgIiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtYXggdmFsdWUgaXMgMl42Mi0xXG4iKSk7CiAJcHJpbnRmKF8oIlxuT3Ro ZXIgb3B0aW9uczpcbiIpKTsKIAlwcmludGYoXygiICAtViwgLS12ZXJzaW9uICAgICAgICAgICAg IG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYoXygi ICAtPywgLS1oZWxwICAgICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwLCB0aGVuIGV4aXRcbiIp KTsKQEAgLTMwNzksNiArMzA5OCwxOCBAQCBpbml0aWFsaXplX2RhdGFfZGlyZWN0b3J5KHZvaWQp CiAJLyogTm93IGNyZWF0ZSBhbGwgdGhlIHRleHQgY29uZmlnIGZpbGVzICovCiAJc2V0dXBfY29u ZmlnKCk7CiAKKwlpZiAoc3RhcnRfbXhpZCAhPSAwKQorCQlwcmludGYoXygic2VsZWN0aW5nIGlu aXRpYWwgbXVsdGl4YWN0IGlkIC4uLiAlbGx1XG4iKSwKKwkJCQkgKHVuc2lnbmVkIGxvbmcgbG9u Zykgc3RhcnRfbXhpZCk7CisKKwlpZiAoc3RhcnRfbXhvZmYgIT0gMCkKKwkJcHJpbnRmKF8oInNl bGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBvZmZzZXQgLi4uICVsbHVcbiIpLAorCQkJCSAodW5z aWduZWQgbG9uZyBsb25nKSBzdGFydF9teG9mZik7CisKKwlpZiAoc3RhcnRfeGlkICE9IDApCisJ CXByaW50ZihfKCJzZWxlY3RpbmcgaW5pdGlhbCB4aWQgLi4uICVsbHVcbiIpLAorCQkJCSAodW5z aWduZWQgbG9uZyBsb25nKSBzdGFydF94aWQpOworCiAJLyogQm9vdHN0cmFwIHRlbXBsYXRlMSAq LwogCWJvb3RzdHJhcF90ZW1wbGF0ZTEoKTsKIApAQCAtMzA5NSw4ICszMTI2LDEyIEBAIGluaXRp YWxpemVfZGF0YV9kaXJlY3Rvcnkodm9pZCkKIAlmZmx1c2goc3Rkb3V0KTsKIAogCWluaXRQUUV4 cEJ1ZmZlcigmY21kKTsKLQlwcmludGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiICVzICVzIHRl bXBsYXRlMSA+JXMiLAotCQkJCQkgIGJhY2tlbmRfZXhlYywgYmFja2VuZF9vcHRpb25zLCBleHRy YV9vcHRpb25zLCBERVZOVUxMKTsKKwlwcmludGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiICVz ICVzIiwKKwkJCQkJICBiYWNrZW5kX2V4ZWMsIGJhY2tlbmRfb3B0aW9ucywgZXh0cmFfb3B0aW9u cyk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtbSAlbGx1IiwgKHVuc2lnbmVkIGxvbmcg bG9uZykgc3RhcnRfbXhpZCk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtbyAlbGx1Iiwg KHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhcnRfbXhvZmYpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZj bWQsICIgLXggJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X3hpZCk7CisJYXBwZW5k UFFFeHBCdWZmZXIoJmNtZCwgIiB0ZW1wbGF0ZTEgPiVzIiwgREVWTlVMTCk7CiAKIAlQR19DTURf T1BFTihjbWQuZGF0YSk7CiAKQEAgLTMxODMsNiArMzIxOCw5IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkJeyJpY3UtcnVsZXMiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMTh9 LAogCQl7InN5bmMtbWV0aG9kIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDE5fSwKIAkJeyJu by1kYXRhLWNoZWNrc3VtcyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAyMH0sCisJCXsieGlkIiwgcmVx dWlyZWRfYXJndW1lbnQsIE5VTEwsICd4J30sCisJCXsibXVsdGl4YWN0LWlkIiwgcmVxdWlyZWRf YXJndW1lbnQsIE5VTEwsICdtJ30sCisJCXsibXVsdGl4YWN0LW9mZnNldCIsIHJlcXVpcmVkX2Fy Z3VtZW50LCBOVUxMLCAnbyd9LAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwogCkBAIC0zMjI0 LDcgKzMyNjIsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkvKiBwcm9jZXNz IGNvbW1hbmQtbGluZSBvcHRpb25zICovCiAKLQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdj LCBhcmd2LCAiQTpjOmREOkU6Z2tMOm5Oc1NUOlU6V1g6IiwKKwl3aGlsZSAoKGMgPSBnZXRvcHRf bG9uZyhhcmdjLCBhcmd2LCAiQTpjOmREOkU6Z2tMOm06bk5vOnNTVDpVOld4Olg6IiwKIAkJCQkJ CQlsb25nX29wdGlvbnMsICZvcHRpb25faW5kZXgpKSAhPSAtMSkKIAl7CiAJCXN3aXRjaCAoYykK QEAgLTMyODIsNiArMzMyMCwzMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJ ZGVidWcgPSB0cnVlOwogCQkJCXByaW50ZihfKCJSdW5uaW5nIGluIGRlYnVnIG1vZGUuXG4iKSk7 CiAJCQkJYnJlYWs7CisJCQljYXNlICdtJzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsK KworCQkJCQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X214aWQgPSBzdHJ0b3U2NChvcHRhcmcsICZl bmRwdHIsIDApOworCisJCQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1ww JyB8fCBlcnJubyAhPSAwIHx8CisJCQkJCQkhU3RhcnRNdWx0aVhhY3RJZElzVmFsaWQoc3RhcnRf bXhpZCkpCisJCQkJCXsKKwkJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBpbml0aWFsIGRhdGFi YXNlIGNsdXN0ZXIgbXVsdGl4YWN0IGlkIik7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJ CWVsc2UgaWYgKHN0YXJ0X214aWQgPCAxKSAvKiBGaXJzdE11bHRpWGFjdElkICovCisJCQkJCXsK KwkJCQkJCS8qCisJCQkJCQkgKiBXZSBhdm9pZCBteGlkIHRvIGJlIHNpbGVudGx5IHNldCB0bwor CQkJCQkJICogRmlyc3RNdWx0aVhhY3RJZCwgdGhvdWdoIGl0IGRvZXMgbm90IGhhcm0uCisJCQkJ CQkgKi8KKwkJCQkJCXBnX2xvZ19lcnJvcigibXVsdGl4YWN0IGlkIHNob3VsZCBiZSBncmVhdGVy IHRoYW4gMCIpOworCQkJCQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKIAkJ CWNhc2UgJ24nOgogCQkJCW5vY2xlYW4gPSB0cnVlOwogCQkJCXByaW50ZihfKCJSdW5uaW5nIGlu IG5vLWNsZWFuIG1vZGUuICBNaXN0YWtlcyB3aWxsIG5vdCBiZSBjbGVhbmVkIHVwLlxuIikpOwpA QCAtMzI4OSw2ICszMzUxLDIxIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCWNh c2UgJ04nOgogCQkJCWRvX3N5bmMgPSBmYWxzZTsKIAkJCQlicmVhazsKKwkJCWNhc2UgJ28nOgor CQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3Rh cnRfbXhvZmYgPSBzdHJ0b3U2NChvcHRhcmcsICZlbmRwdHIsIDApOworCisJCQkJCWlmIChlbmRw dHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAwIHx8CisJCQkJCQkh U3RhcnRNdWx0aVhhY3RPZmZzZXRJc1ZhbGlkKHN0YXJ0X214b2ZmKSkKKwkJCQkJeworCQkJCQkJ cGdfbG9nX2Vycm9yKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3Qg b2Zmc2V0Iik7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJfQorCQkJCWJyZWFrOwogCQkJ Y2FzZSAnUyc6CiAJCQkJc3luY19vbmx5ID0gdHJ1ZTsKIAkJCQlicmVhazsKQEAgLTMzNzcsNiAr MzQ1NCwzMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQljYXNlIDIwOgogCQkJ CWRhdGFfY2hlY2tzdW1zID0gZmFsc2U7CiAJCQkJYnJlYWs7CisJCQljYXNlICd4JzoKKwkJCQl7 CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJCQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X3hp ZCA9IHN0cnRvdTY0KG9wdGFyZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVuZHB0ciA9PSBv cHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJCSFTdGFydFRy YW5zYWN0aW9uSWRJc1ZhbGlkKHN0YXJ0X3hpZCkpCisJCQkJCXsKKwkJCQkJCXBnX2xvZ19lcnJv cigiaW52YWxpZCB2YWx1ZSBmb3IgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZCIpOworCQkJ CQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCQllbHNlIGlmIChzdGFydF94aWQgPCAzKSAvKiBGaXJz dE5vcm1hbFRyYW5zYWN0aW9uSWQgKi8KKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIFdlIGF2 b2lkIHhpZCB0byBiZSBzaWxlbnRseSBzZXQgdG8KKwkJCQkJCSAqIEZpcnN0Tm9ybWFsVHJhbnNh Y3Rpb25JZCwgdGhvdWdoIGl0IGRvZXMgbm90IGhhcm0uCisJCQkJCQkgKi8KKwkJCQkJCXBnX2xv Z19lcnJvcigieGlkIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMiIpOworCQkJCQkJZXhpdCgxKTsK KwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogZ2V0b3B0X2xv bmcgYWxyZWFkeSBlbWl0dGVkIGEgY29tcGxhaW50ICovCiAJCQkJcGdfbG9nX2Vycm9yX2hpbnQo IlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL3QvMDAxX2luaXRkYi5wbCBiL3NyYy9iaW4vaW5pdGRi L3QvMDAxX2luaXRkYi5wbAppbmRleCA3NTIwZDNkMGRkLi45MWE4NWQ5ZjRkIDEwMDY0NAotLS0g YS9zcmMvYmluL2luaXRkYi90LzAwMV9pbml0ZGIucGwKKysrIGIvc3JjL2Jpbi9pbml0ZGIvdC8w MDFfaW5pdGRiLnBsCkBAIC0yODIsNCArMjgyLDY0IEBAIGNvbW1hbmRfZmFpbHMoCiAJWyAncGdf Y2hlY2tzdW1zJywgJy1EJywgJGRhdGFkaXJfbm9jaGVja3N1bXMgXSwKIAkicGdfY2hlY2tzdW1z IGZhaWxzIHdpdGggZGF0YSBjaGVja3N1bSBkaXNhYmxlZCIpOwogCisjIFNldCBub24tc3RhbmRh cmQgaW5pdGlhbCBteGlkL214b2ZmL3hpZC4KK2NvbW1hbmRfZmFpbHNfbGlrZSgKKwlbICdpbml0 ZGInLCAnLW0nLCAnc2V2ZW4nLCAkZGF0YWRpciBdLAorCXFyL2luaXRkYjogZXJyb3I6IGludmFs aWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZC8sCisJJ2ZhaWxzIGZvciBp bnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3QgaWQnKTsKK2NvbW1hbmRf ZmFpbHNfbGlrZSgKKwlbICdpbml0ZGInLCAnLW8nLCAnc2V2ZW4nLCAkZGF0YWRpciBdLAorCXFy L2luaXRkYjogZXJyb3I6IGludmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFj dCBvZmZzZXQvLAorCSdmYWlscyBmb3IgaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIg bXVsdGl4YWN0IG9mZnNldCcpOworY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ2luaXRkYicsICct eCcsICdzZXZlbicsICRkYXRhZGlyIF0sCisJcXIvaW5pdGRiOiBlcnJvcjogaW52YWxpZCB2YWx1 ZSBmb3IgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZC8sCisJJ2ZhaWxzIGZvciBpbnZhbGlk IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWQnKTsKKworY29tbWFuZF9jaGVja3NfYWxsKAor CVsgJ2luaXRkYicsICctbScsICc2NTUzNScsICIkdGVtcGRpci9kYXRhLW02NTUzNSIgXSwKKwkw LAorCVtxci9zZWxlY3RpbmcgaW5pdGlhbCBtdWx0aXhhY3QgaWQgLi4uIDY1NTM1L10sCisJW10s CisJJ3NlbGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBpZCcpOworY29tbWFuZF9jaGVja3NfYWxs KAorCVsgJ2luaXRkYicsICctbycsICc2NTUzNScsICIkdGVtcGRpci9kYXRhLW82NTUzNSIgXSwK KwkwLAorCVtxci9zZWxlY3RpbmcgaW5pdGlhbCBtdWx0aXhhY3Qgb2Zmc2V0IC4uLiA2NTUzNS9d LAorCVtdLAorCSdzZWxlY3RpbmcgaW5pdGlhbCBtdWx0aXhhY3Qgb2Zmc2V0Jyk7Citjb21tYW5k X2NoZWNrc19hbGwoCisJWyAnaW5pdGRiJywgJy14JywgJzY1NTM1JywgIiR0ZW1wZGlyL2RhdGEt eDY1NTM1IiBdLAorCTAsCisJW3FyL3NlbGVjdGluZyBpbml0aWFsIHhpZCAuLi4gNjU1MzUvXSwK KwlbXSwKKwknc2VsZWN0aW5nIGluaXRpYWwgeGlkJyk7CisKKyMgU2V0dXAgbmV3IGNsdXN0ZXIg d2l0aCBnaXZlbiBteGlkL214b2ZmL3hpZC4KK215ICRub2RlOworbXkgJHJlc3VsdDsKKworJG5v ZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3Rlc3QtbXhpZCcpOworJG5vZGUt PmluaXQoZXh0cmEgPT4gWyctbScsICcxNjc3NzIxNSddKTsgIyAweEZGRkZGRgorJG5vZGUtPnN0 YXJ0OworJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBuZXh0 X211bHRpeGFjdF9pZCBGUk9NIHBnX2NvbnRyb2xfY2hlY2twb2ludCgpOyIpOworb2soJHJlc3Vs dCA+PSAxNjc3NzIxNSwgJ3NldHVwIGNsdXN0ZXIgd2l0aCBnaXZlbiBteGlkJyk7Ciskbm9kZS0+ c3RvcDsKKworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3Rlc3QtbXhv ZmYnKTsKKyRub2RlLT5pbml0KGV4dHJhID0+IFsnLW8nLCAnMTY3NzcyMTUnXSk7ICMgMHhGRkZG RkYKKyRub2RlLT5zdGFydDsKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgbmV4dF9tdWx0aV9vZmZzZXQgRlJPTSBwZ19jb250cm9sX2NoZWNrcG9pbnQoKTsi KTsKK29rKCRyZXN1bHQgPj0gMTY3NzcyMTUsICdzZXR1cCBjbHVzdGVyIHdpdGggZ2l2ZW4gbXhv ZmYnKTsKKyRub2RlLT5zdG9wOworCiskbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygndGVzdC14aWQnKTsKKyRub2RlLT5pbml0KGV4dHJhID0+IFsnLXgnLCAnMTY3NzcyMTUn XSk7ICMgMHhGRkZGRkYKKyRub2RlLT5zdGFydDsKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgdHhpZF9jdXJyZW50KCk7Iik7CitvaygkcmVzdWx0ID49IDE2 Nzc3MjE1LCAnc2V0dXAgY2x1c3RlciB3aXRoIGdpdmVuIHhpZCAtIGNoZWNrIDEnKTsKKyRyZXN1 bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qgb2xkZXN0X3hpZCBGUk9N IHBnX2NvbnRyb2xfY2hlY2twb2ludCgpOyIpOworb2soJHJlc3VsdCA+PSAxNjc3NzIxNSwgJ3Nl dHVwIGNsdXN0ZXIgd2l0aCBnaXZlbiB4aWQgLSBjaGVjayAyJyk7Ciskbm9kZS0+c3RvcDsKKwog ZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCAzNGFkNDZjMDY3Li40Y2U3OWIxMmUzIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy94bG9nLmgKQEAgLTk0LDYgKzk0LDkgQEAgdHlwZWRlZiBlbnVtIFJlY292ZXJ5U3RhdGUK IH0gUmVjb3ZlcnlTdGF0ZTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCB3YWxfbGV2ZWw7Citl eHRlcm4gUEdETExJTVBPUlQgVHJhbnNhY3Rpb25JZCBzdGFydF94aWQ7CitleHRlcm4gUEdETExJ TVBPUlQgTXVsdGlYYWN0SWQgc3RhcnRfbXhpZDsKK2V4dGVybiBQR0RMTElNUE9SVCBNdWx0aVhh Y3RPZmZzZXQgc3RhcnRfbXhvZmY7CiAKIC8qIElzIFdBTCBhcmNoaXZpbmcgZW5hYmxlZCAoYWx3 YXlzIG9yIG9ubHkgd2hpbGUgc2VydmVyIGlzIHJ1bm5pbmcgbm9ybWFsbHkpPyAqLwogI2RlZmlu ZSBYTG9nQXJjaGl2aW5nQWN0aXZlKCkgXApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYy5oIGIv c3JjL2luY2x1ZGUvYy5oCmluZGV4IGUxYjMxODdkMGIuLmY3NzBlOWExNDAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTY2OCw2ICs2NjgsMTAg QEAgdHlwZWRlZiB1aW50NjQgTXVsdGlYYWN0T2Zmc2V0OwogCiB0eXBlZGVmIHVpbnQzMiBDb21t YW5kSWQ7CiAKKyNkZWZpbmUgU3RhcnRUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpCQkJKCh4aWQp IDw9IDB4RkZGRkZGRkYpCisjZGVmaW5lIFN0YXJ0TXVsdGlYYWN0SWRJc1ZhbGlkKG14aWQpCQkJ KChteGlkKSA8PSAweEZGRkZGRkZGKQorI2RlZmluZSBTdGFydE11bHRpWGFjdE9mZnNldElzVmFs aWQob2Zmc2V0KQkJKChvZmZzZXQpIDw9IDB4RkZGRkZGRkYpCisKICNkZWZpbmUgRmlyc3RDb21t YW5kSWQJKChDb21tYW5kSWQpIDApCiAjZGVmaW5lIEludmFsaWRDb21tYW5kSWQJKH4oQ29tbWFu ZElkKTApCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaAppbmRleCAwZmMyYzA5M2IwLi4wYTc1MThkZjBk IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCkBAIC0xMjMsNyArMTIzLDcgQEAgQ0FUQUxPRyhwZ19j bGFzcywxMjU5LFJlbGF0aW9uUmVsYXRpb25JZCkgQktJX0JPT1RTVFJBUCBCS0lfUk9XVFlQRV9P SUQoODMsUmVsYXQKIAlPaWQJCQlyZWxyZXdyaXRlIEJLSV9ERUZBVUxUKDApIEJLSV9MT09LVVBf T1BUKHBnX2NsYXNzKTsKIAogCS8qIGFsbCBYaWRzIDwgdGhpcyBhcmUgZnJvemVuIGluIHRoaXMg cmVsICovCi0JVHJhbnNhY3Rpb25JZCByZWxmcm96ZW54aWQgQktJX0RFRkFVTFQoMyk7CS8qIEZp cnN0Tm9ybWFsVHJhbnNhY3Rpb25JZCAqLworCVRyYW5zYWN0aW9uSWQgcmVsZnJvemVueGlkIEJL SV9ERUZBVUxUKFJFQ0VOVFhNSU4pOwkvKiBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQgKi8KIAog CS8qIGFsbCBtdWx0aXhhY3RzIGluIHRoaXMgcmVsIGFyZSA+PSB0aGlzOyBpdCBpcyByZWFsbHkg YSBNdWx0aVhhY3RJZCAqLwogCVRyYW5zYWN0aW9uSWQgcmVsbWlubXhpZCBCS0lfREVGQVVMVCgx KTsJLyogRmlyc3RNdWx0aVhhY3RJZCAqLwotLSAKMi40My4wCgo= --000000000000e797b8062747b7e3 Content-Type: application/octet-stream; name="v9-0004-Get-rid-of-MultiXactMemberFreezeThreshold-call.patch" Content-Disposition: attachment; filename="v9-0004-Get-rid-of-MultiXactMemberFreezeThreshold-call.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3oqaqmo3 RnJvbSBkNzAzZmU0NTM4NzU0NTM0ODE3NTk2YTBkNGY1MWUwNmE4YzMyOTNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjMgT2N0IDIwMjQgMTg6MjM6MzkgKzAzMDAKU3ViamVjdDogW1BBVENIIHY5IDQvN10g R2V0IHJpZCBvZiBNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQgY2FsbC4KClNpbmNlIE1h eE11bHRpWGFjdE9mZnNldCBhcmUgVUlOVDY0X01BWCBub3csIE1VTFRJWEFDVF9NRU1CRVJfU0FG RV9USFJFU0hPTEQgYW5kCk1VTFRJWEFDVF9NRU1CRVJfREFOR0VSX1RIUkVTSE9MRCB2YWx1ZXMg YXJlIG5vdCBtZWFuaW5nZnVsIGFueSBtb3JlLiBUaHVzLApNdWx0aVhhY3RNZW1iZXJGcmVlemVU aHJlc2hvbGQgaXMgbm90IG5lZWRlZCB0b28uCgpJbnN0ZWFkLCBzd2l0Y2ggdG8gTVVMVElYQUNU X01FTUJFUl9BVVRPVkFDX1RIUkVTSE9MRCAoZXEgMl4zMikgbWVtYmVycwp0aHJlc2hvbGQuIEl0 IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gZm9yY2UgYXV0b3ZhY3V1bSBvciBu b3QuCgpBdXRob3I6IE1heGltIE9ybG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyB8IDExNyArKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgICB8ICAgMiArLQog c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgfCAgIDQgKy0KIHNyYy9pbmNs dWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCAgICAgICAgIHwgICAxIC0KIDQgZmlsZXMgY2hhbmdlZCwg MTUgaW5zZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vbXVsdGl4YWN0LmMKaW5kZXggNDhlMWMwMTYwYS4uYTgxN2Y1MzllZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTIwNCwxMCArMjA0LDE0IEBAIE1YT2Zmc2V0 VG9NZW1iZXJPZmZzZXQoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCkKIAkJbWVtYmVyX2luX2dyb3Vw ICogc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwogfQogCi0vKiBNdWx0aXhhY3QgbWVtYmVycyB3cmFw YXJvdW5kIHRocmVzaG9sZHMuICovCi0jZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJF U0hPTEQJCShNYXhNdWx0aVhhY3RPZmZzZXQgLyAyKQotI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVS X0RBTkdFUl9USFJFU0hPTEQJXAotCShNYXhNdWx0aVhhY3RPZmZzZXQgLSBNYXhNdWx0aVhhY3RP ZmZzZXQgLyA0KQorLyoKKyAqIE11bHRpeGFjdCBtZW1iZXJzIHdhcm5pbmcgdGhyZXNob2xkLgor ICoKKyAqIElmIGRpZmZlcmVuY2UgYmV0dHdlZW4gbmV4dE9mZnNldCBhbmQgb2xkZXN0T2Zmc2V0 IGV4Y2VlZCB0aGlzIHZhbHVlLCB3ZQorICogdHJpZ2dlciBhdXRvdmFjdXVtaW4gb3JkZXIgdG8g cmVsZWFzZSB0aGUgZGlzayBzcGFjZSwgcmVkdWNlIHRhYmxlIGJsb2F0IGlmCisgKiBwb3NzaWJs ZS4KKyAqLworI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSX0FVVE9WQUNfVEhSRVNIT0xECQlVSU5U NjRDT05TVCgweEZGRkZGRkZGKQogCiBzdGF0aWMgaW5saW5lIE11bHRpWGFjdElkCiBQcmV2aW91 c011bHRpWGFjdElkKE11bHRpWGFjdElkIG11bHRpKQpAQCAtMjYxNiwxNSArMjYyMCwxMyBAQCBH ZXRPbGRlc3RNdWx0aVhhY3RJZCh2b2lkKQogfQogCiAvKgotICogRGV0ZXJtaW5lIGhvdyBhZ2dy ZXNzaXZlbHkgd2UgbmVlZCB0byB2YWN1dW0gaW4gb3JkZXIgdG8gcHJldmVudCBtZW1iZXIKLSAq IHdyYXBhcm91bmQuCisgKiBEZXRlcm1pbmUgaWYgd2UgbmVlZCB0byB2YWN1dW0gZm9yIG1lbWJl ciBvciBub3QuCiAgKgogICogVG8gZG8gc28gZGV0ZXJtaW5lIHdoYXQncyB0aGUgb2xkZXN0IG1l bWJlciBvZmZzZXQgYW5kIGluc3RhbGwgdGhlIGxpbWl0CiAgKiBpbmZvIGluIE11bHRpWGFjdFN0 YXRlLCB3aGVyZSBpdCBjYW4gYmUgdXNlZCB0byBwcmV2ZW50IG92ZXJydW4gb2Ygb2xkIGRhdGEK ICAqIGluIHRoZSBtZW1iZXJzIFNMUlUgYXJlYS4KICAqCi0gKiBUaGUgcmV0dXJuIHZhbHVlIGlz IHRydWUgaWYgZW1lcmdlbmN5IGF1dG92YWN1dW0gaXMgcmVxdWlyZWQgYW5kIGZhbHNlCi0gKiBv dGhlcndpc2UuCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRydWUgaWYgYXV0b3ZhY3V1bSBpcyBy ZXF1aXJlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICovCiBzdGF0aWMgYm9vbAogU2V0T2Zmc2V0 VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQpAQCAtMjcxMiwxMCArMjcxNCwxMCBAQCBTZXRP ZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJTFdMb2NrUmVsZWFzZShNdWx0aVhh Y3RHZW5Mb2NrKTsKIAogCS8qCi0JICogRG8gd2UgbmVlZCBhbiBlbWVyZ2VuY3kgYXV0b3ZhY3V1 bT8JSWYgd2UncmUgbm90IHN1cmUsIGFzc3VtZSB5ZXMuCisJICogRG8gd2UgbmVlZCBhdXRvdmFj dXVtPwlJZiB3ZSdyZSBub3Qgc3VyZSwgYXNzdW1lIHllcy4KIAkgKi8KIAlyZXR1cm4gIW9sZGVz dE9mZnNldEtub3duIHx8Ci0JCShuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0ID4gTVVMVElYQUNU X01FTUJFUl9TQUZFX1RIUkVTSE9MRCk7CisJCShuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0ID4g TVVMVElYQUNUX01FTUJFUl9BVVRPVkFDX1RIUkVTSE9MRCk7CiB9CiAKIC8qCkBAIC0yNzYxLDEw MSArMjc2Myw2IEBAIGZpbmRfbXVsdGl4YWN0X3N0YXJ0KE11bHRpWGFjdElkIG11bHRpLCBNdWx0 aVhhY3RPZmZzZXQgKnJlc3VsdCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotLyoKLSAqIERldGVybWlu ZSBob3cgbWFueSBtdWx0aXhhY3RzLCBhbmQgaG93IG1hbnkgbXVsdGl4YWN0IG1lbWJlcnMsIGN1 cnJlbnRseQotICogZXhpc3QuICBSZXR1cm4gZmFsc2UgaWYgdW5hYmxlIHRvIGRldGVybWluZS4K LSAqLwotc3RhdGljIGJvb2wKLVJlYWRNdWx0aVhhY3RDb3VudHModWludDMyICptdWx0aXhhY3Rz LCBNdWx0aVhhY3RPZmZzZXQgKm1lbWJlcnMpCi17Ci0JTXVsdGlYYWN0T2Zmc2V0IG5leHRPZmZz ZXQ7Ci0JTXVsdGlYYWN0T2Zmc2V0IG9sZGVzdE9mZnNldDsKLQlNdWx0aVhhY3RJZCBvbGRlc3RN dWx0aVhhY3RJZDsKLQlNdWx0aVhhY3RJZCBuZXh0TXVsdGlYYWN0SWQ7Ci0JYm9vbAkJb2xkZXN0 T2Zmc2V0S25vd247Ci0KLQlMV0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExXX1NIQVJF RCk7Ci0JbmV4dE9mZnNldCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0OwotCW9sZGVzdE11 bHRpWGFjdElkID0gTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE11bHRpWGFjdElkOwotCW5leHRNdWx0 aVhhY3RJZCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0TVhhY3Q7Ci0Jb2xkZXN0T2Zmc2V0ID0gTXVs dGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldDsKLQlvbGRlc3RPZmZzZXRLbm93biA9IE11bHRpWGFj dFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93bjsKLQlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxv Y2spOwotCi0JaWYgKCFvbGRlc3RPZmZzZXRLbm93bikKLQkJcmV0dXJuIGZhbHNlOwotCi0JKm1l bWJlcnMgPSBuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0OwotCSptdWx0aXhhY3RzID0gbmV4dE11 bHRpWGFjdElkIC0gb2xkZXN0TXVsdGlYYWN0SWQ7Ci0JcmV0dXJuIHRydWU7Ci19Ci0KLS8qCi0g KiBNdWx0aXhhY3QgbWVtYmVycyBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRoZSBtdWx0aXhhY3RzIHRo YXQgcmVmZXIgdG8gdGhlbQotICogYXJlIG9sZGVyIHRoYW4gZXZlcnkgZGF0bWlubXhpZC4gIGF1 dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlIGFuZAotICogdmFjdXVtX211bHRpeGFj dF9mcmVlemVfdGFibGVfYWdlIHdvcmsgdG9nZXRoZXIgdG8gbWFrZSBzdXJlIHdlIG5ldmVyIGhh dmUKLSAqIHRvbyBtYW55IG11bHRpeGFjdHM7IHdlIGhvcGUgdGhhdCwgYXQgbGVhc3QgdW5kZXIg bm9ybWFsIGNpcmN1bXN0YW5jZXMsCi0gKiB0aGlzIHdpbGwgYWxzbyBiZSBzdWZmaWNpZW50IHRv IGtlZXAgdXMgZnJvbSB1c2luZyB0b28gbWFueSBvZmZzZXRzLgotICogSG93ZXZlciwgaWYgdGhl IGF2ZXJhZ2UgbXVsdGl4YWN0IGhhcyBtYW55IG1lbWJlcnMsIHdlIG1pZ2h0IGV4aGF1c3QgdGhl Ci0gKiBtZW1iZXJzIHNwYWNlIHdoaWxlIHN0aWxsIHVzaW5nIGZldyBlbm91Z2ggbWVtYmVycyB0 aGF0IHRoZXNlIGxpbWl0cyBmYWlsCi0gKiB0byB0cmlnZ2VyIHJlbG1pbm14aWQgYWR2YW5jZW1l bnQgYnkgVkFDVVVNLiAgQXQgdGhhdCBwb2ludCwgd2UnZCBoYXZlIG5vCi0gKiBjaG9pY2UgYnV0 IHRvIHN0YXJ0IGZhaWxpbmcgbXVsdGl4YWN0LWNyZWF0aW5nIG9wZXJhdGlvbnMgd2l0aCBhbiBl cnJvci4KLSAqCi0gKiBUbyBwcmV2ZW50IHRoYXQsIGlmIG1vcmUgdGhhbiBhIHRocmVzaG9sZCBw b3J0aW9uIG9mIHRoZSBtZW1iZXJzIHNwYWNlIGlzCi0gKiB1c2VkLCB3ZSBlZmZlY3RpdmVseSBy ZWR1Y2UgYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgYW5kCi0gKiB0byBhIHZh bHVlIGp1c3QgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgbXVsdGl4YWN0cyBpbiB1c2UuICBXZSBo b3BlIHRoYXQKLSAqIHRoaXMgd2lsbCBxdWlja2x5IHRyaWdnZXIgYXV0b3ZhY3V1bWluZyBvbiB0 aGUgdGFibGUgb3IgdGFibGVzIHdpdGggdGhlCi0gKiBvbGRlc3QgcmVsbWlubXhpZCwgdGh1cyBh bGxvd2luZyBkYXRtaW5teGlkIHZhbHVlcyB0byBhZHZhbmNlIGFuZCByZW1vdmluZwotICogc29t ZSBtZW1iZXJzLgotICoKLSAqIEFzIHRoZSBmcmFjdGlvbiBvZiB0aGUgbWVtYmVyIHNwYWNlIGN1 cnJlbnRseSBpbiB1c2UgZ3Jvd3MsIHdlIGJlY29tZQotICogbW9yZSBhZ2dyZXNzaXZlIGluIGNs YW1waW5nIHRoaXMgdmFsdWUuICBUaGF0IG5vdCBvbmx5IGNhdXNlcyBhdXRvdmFjdXVtCi0gKiB0 byByYW1wIHVwLCBidXQgYWxzbyBtYWtlcyBhbnkgbWFudWFsIHZhY3V1bXMgdGhlIHVzZXIgaXNz dWVzIG1vcmUKLSAqIGFnZ3Jlc3NpdmUuICBUaGlzIGhhcHBlbnMgYmVjYXVzZSB2YWN1dW1fZ2V0 X2N1dG9mZnMoKSB3aWxsIGNsYW1wIHRoZQotICogZnJlZXplIHRhYmxlIGFuZCB0aGUgbWluaW11 bSBmcmVlemUgYWdlIGN1dG9mZnMgYmFzZWQgb24gdGhlIGVmZmVjdGl2ZQotICogYXV0b3ZhY3V1 bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgdGhpcyBmdW5jdGlvbiByZXR1cm5zLiAgSW4gdGhl IHdvcnN0Ci0gKiBjYXNlLCB3ZSdsbCBjbGFpbSB0aGUgZnJlZXplX21heF9hZ2UgdG8gemVybywg YW5kIGV2ZXJ5IHZhY3V1bSBvZiBhbnkKLSAqIHRhYmxlIHdpbGwgZnJlZXplIGV2ZXJ5IG11bHRp eGFjdC4KLSAqLwotaW50Ci1NdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQodm9pZCkKLXsK LQlNdWx0aVhhY3RPZmZzZXQgbWVtYmVyczsKLQl1aW50MzIJCW11bHRpeGFjdHM7Ci0JdWludDMy CQl2aWN0aW1fbXVsdGl4YWN0czsKLQlkb3VibGUJCWZyYWN0aW9uOwotCWludAkJCXJlc3VsdDsK LQotCS8qIElmIHdlIGNhbid0IGRldGVybWluZSBtZW1iZXIgc3BhY2UgdXRpbGl6YXRpb24sIGFz c3VtZSB0aGUgd29yc3QuICovCi0JaWYgKCFSZWFkTXVsdGlYYWN0Q291bnRzKCZtdWx0aXhhY3Rz LCAmbWVtYmVycykpCi0JCXJldHVybiAwOwotCi0JLyogSWYgbWVtYmVyIHNwYWNlIHV0aWxpemF0 aW9uIGlzIGxvdywgbm8gc3BlY2lhbCBhY3Rpb24gaXMgcmVxdWlyZWQuICovCi0JaWYgKG1lbWJl cnMgPD0gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCkKLQkJcmV0dXJuIGF1dG92YWN1 dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOwotCi0JLyoKLQkgKiBDb21wdXRlIGEgdGFyZ2V0 IGZvciByZWxtaW5teGlkIGFkdmFuY2VtZW50LiAgVGhlIG51bWJlciBvZiBtdWx0aXhhY3RzCi0J ICogd2UgdHJ5IHRvIGVsaW1pbmF0ZSBmcm9tIHRoZSBzeXN0ZW0gaXMgYmFzZWQgb24gaG93IGZh ciB3ZSBhcmUgcGFzdAotCSAqIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQuCi0JICov Ci0JZnJhY3Rpb24gPSAoZG91YmxlKSAobWVtYmVycyAtIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9U SFJFU0hPTEQpOwotCWZyYWN0aW9uIC89IChkb3VibGUpIChNVUxUSVhBQ1RfTUVNQkVSX0RBTkdF Ul9USFJFU0hPTEQgLSBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKLQotCXZpY3Rp bV9tdWx0aXhhY3RzID0gbXVsdGl4YWN0cyAqIGZyYWN0aW9uOwotCi0JLyogZnJhY3Rpb24gY291 bGQgYmUgPiAxLjAsIGJ1dCBsb3dlc3QgcG9zc2libGUgZnJlZXplIGFnZSBpcyB6ZXJvICovCi0J aWYgKHZpY3RpbV9tdWx0aXhhY3RzID4gbXVsdGl4YWN0cykKLQkJcmV0dXJuIDA7Ci0JcmVzdWx0 ID0gbXVsdGl4YWN0cyAtIHZpY3RpbV9tdWx0aXhhY3RzOwotCi0JLyoKLQkgKiBDbGFtcCB0byBh dXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwgc28gdGhhdCB3ZSBuZXZlciBtYWtl Ci0JICogYXV0b3ZhY3V1bSBsZXNzIGFnZ3Jlc3NpdmUgdGhhbiBpdCB3b3VsZCBvdGhlcndpc2Ug YmUuCi0JICovCi0JcmV0dXJuIE1pbihyZXN1bHQsIGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6 ZV9tYXhfYWdlKTsKLX0KLQogdHlwZWRlZiBzdHJ1Y3QgbXh0cnVuY2luZm8KIHsKIAlpbnQ2NAkJ ZWFybGllc3RFeGlzdGluZ1BhZ2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IDg2ZjM2YjM2OTUu LmU3NTA2ZTI2OGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0xMTMzLDcgKzExMzMsNyBAQCB2 YWN1dW1fZ2V0X2N1dG9mZnMoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKIAkgKiBub3JtYWxseSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwgYnV0 IG1heSBiZSBsZXNzIGlmIHdlIGFyZQogCSAqIHNob3J0IG9mIG11bHRpeGFjdCBtZW1iZXIgc3Bh Y2UuCiAJICovCi0JZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSA9IE11bHRpWGFj dE1lbWJlckZyZWV6ZVRocmVzaG9sZCgpOworCWVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21h eF9hZ2UgPSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZTsKIAogCS8qCiAJICog QWxtb3N0IHJlYWR5IHRvIHNldCBmcmVlemUgb3V0cHV0IHBhcmFtZXRlcnM7IGNoZWNrIGlmIE9s ZGVzdFhtaW4gb3IKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggZGMzY2Y4N2Fi YS4uMTgwYmI3ZTk2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTExMjIs NyArMTEyMiw3IEBAIGRvX3N0YXJ0X3dvcmtlcih2b2lkKQogCiAJLyogQWxzbyBkZXRlcm1pbmUg dGhlIG9sZGVzdCBkYXRtaW5teGlkIHdlIHdpbGwgY29uc2lkZXIuICovCiAJcmVjZW50TXVsdGkg PSBSZWFkTmV4dE11bHRpWGFjdElkKCk7Ci0JbXVsdGlGb3JjZUxpbWl0ID0gcmVjZW50TXVsdGkg LSBNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQoKTsKKwltdWx0aUZvcmNlTGltaXQgPSBy ZWNlbnRNdWx0aSAtIGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOwogCWlmICht dWx0aUZvcmNlTGltaXQgPCBGaXJzdE11bHRpWGFjdElkKQogCQltdWx0aUZvcmNlTGltaXQgLT0g Rmlyc3RNdWx0aVhhY3RJZDsKIApAQCAtMTkxNSw3ICsxOTE1LDcgQEAgZG9fYXV0b3ZhY3V1bSh2 b2lkKQogCSAqIG5vcm1hbGx5IGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlLCBi dXQgbWF5IGJlIGxlc3MgaWYgd2UgYXJlCiAJICogc2hvcnQgb2YgbXVsdGl4YWN0IG1lbWJlciBz cGFjZS4KIAkgKi8KLQllZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlID0gTXVsdGlY YWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKCk7CisJZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVf bWF4X2FnZSA9IGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOwogCiAJLyoKIAkg KiBGaW5kIHRoZSBwZ19kYXRhYmFzZSBlbnRyeSBhbmQgc2VsZWN0IHRoZSBkZWZhdWx0IGZyZWV6 ZSBhZ2VzLiBXZSB1c2UKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3Qu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAppbmRleCA5MDU4MzYzNGVjLi41YWVm YmRkY2UzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oCkBAIC0xNDMsNyArMTQzLDYgQEAgZXh0ZXJu IHZvaWQgTXVsdGlYYWN0U2V0TmV4dE1YYWN0KE11bHRpWGFjdElkIG5leHRNdWx0aSwKIGV4dGVy biB2b2lkIE11bHRpWGFjdEFkdmFuY2VOZXh0TVhhY3QoTXVsdGlYYWN0SWQgbWluTXVsdGksCiAJ CQkJCQkJCQkgIE11bHRpWGFjdE9mZnNldCBtaW5NdWx0aU9mZnNldCk7CiBleHRlcm4gdm9pZCBN dWx0aVhhY3RBZHZhbmNlT2xkZXN0KE11bHRpWGFjdElkIG9sZGVzdE11bHRpLCBPaWQgb2xkZXN0 TXVsdGlEQik7Ci1leHRlcm4gaW50CU11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCh2b2lk KTsKIAogZXh0ZXJuIHZvaWQgbXVsdGl4YWN0X3R3b3BoYXNlX3JlY292ZXIoVHJhbnNhY3Rpb25J ZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJCQkJICAgdm9pZCAqcmVjZGF0YSwgdWludDMyIGxl bik7Ci0tIAoyLjQzLjAKCg== --000000000000e797b8062747b7e3 Content-Type: application/octet-stream; name="v9-0002-Use-64-bit-multixact-offsets.patch" Content-Disposition: attachment; filename="v9-0002-Use-64-bit-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3oqaqma1 RnJvbSA4Y2M1NDc3YTIzYjM4MzEzMmZkZGQ0Mzg2NDkyYzBmZmU2YjYzZmI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA2IE1hciAyMDI0IDExOjExOjMzICswMzAwClN1YmplY3Q6IFtQQVRDSCB2OSAy LzddIFVzZSA2NC1iaXQgbXVsdGl4YWN0IG9mZnNldHMuCgpBdXRob3I6IE1heGltIE9ybG92IDxv cmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhh Y3QuYyB8IDE3MCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmluL3BnX3Jlc2V0d2Fs L3BnX3Jlc2V0d2FsLmMgICAgICB8ICAgMiArLQogc3JjL2Jpbi9wZ19yZXNldHdhbC90LzAwMV9i YXNpYy5wbCAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCAgICAg ICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAg MiArLQogNSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxNjggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCBhYjkwOTEyZWQzLi40 OGUxYzAxNjBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhh Y3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtOTYs MTQgKzk2LDYgQEAKIC8qCiAgKiBEZWZpbmVzIGZvciBNdWx0aVhhY3RPZmZzZXQgcGFnZSBzaXpl cy4gIEEgcGFnZSBpcyB0aGUgc2FtZSBCTENLU1ogYXMgaXMKICAqIHVzZWQgZXZlcnl3aGVyZSBl bHNlIGluIFBvc3RncmVzLgotICoKLSAqIE5vdGU6IGJlY2F1c2UgTXVsdGlYYWN0T2Zmc2V0cyBh cmUgMzIgYml0cyBhbmQgd3JhcCBhcm91bmQgYXQgMHhGRkZGRkZGRiwKLSAqIE11bHRpWGFjdCBw YWdlIG51bWJlcmluZyBhbHNvIHdyYXBzIGFyb3VuZCBhdAotICogMHhGRkZGRkZGRi9NVUxUSVhB Q1RfT0ZGU0VUU19QRVJfUEFHRSwgYW5kIHNlZ21lbnQgbnVtYmVyaW5nIGF0Ci0gKiAweEZGRkZG RkZGL01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFL1NMUlVfUEFHRVNfUEVSX1NFR01FTlQuICBX ZSBuZWVkCi0gKiB0YWtlIG5vIGV4cGxpY2l0IG5vdGljZSBvZiB0aGF0IGZhY3QgaW4gdGhpcyBt b2R1bGUsIGV4Y2VwdCB3aGVuIGNvbXBhcmluZwotICogc2VnbWVudCBhbmQgcGFnZSBudW1iZXJz IGluIFRydW5jYXRlTXVsdGlYYWN0IChzZWUKLSAqIE11bHRpWGFjdE9mZnNldFBhZ2VQcmVjZWRl cykuCiAgKi8KIAogLyogV2UgbmVlZCBmb3VyIGJ5dGVzIHBlciBvZmZzZXQgKi8KQEAgLTI3Miw5 ICsyNjQsNiBAQCB0eXBlZGVmIHN0cnVjdCBNdWx0aVhhY3RTdGF0ZURhdGEKIAlNdWx0aVhhY3RJ ZCBtdWx0aVN0b3BMaW1pdDsKIAlNdWx0aVhhY3RJZCBtdWx0aVdyYXBMaW1pdDsKIAotCS8qIHN1 cHBvcnQgZm9yIG1lbWJlcnMgYW50aS13cmFwYXJvdW5kIG1lYXN1cmVzICovCi0JTXVsdGlYYWN0 T2Zmc2V0IG9mZnNldFN0b3BMaW1pdDsJLyoga25vd24gaWYgb2xkZXN0T2Zmc2V0S25vd24gKi8K LQogCS8qCiAJICogVGhpcyBpcyB1c2VkIHRvIHNsZWVwIHVudGlsIGEgbXVsdGl4YWN0IG9mZnNl dCBpcyB3cml0dGVuIHdoZW4gd2Ugd2FudAogCSAqIHRvIGNyZWF0ZSB0aGUgbmV4dCBvbmUuCkBA IC00MDksOCArMzk4LDYgQEAgc3RhdGljIGJvb2wgTXVsdGlYYWN0T2Zmc2V0UHJlY2VkZXMoTXVs dGlYYWN0T2Zmc2V0IG9mZnNldDEsCiAJCQkJCQkJCQlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0Mik7 CiBzdGF0aWMgdm9pZCBFeHRlbmRNdWx0aVhhY3RPZmZzZXQoTXVsdGlYYWN0SWQgbXVsdGkpOwog c3RhdGljIHZvaWQgRXh0ZW5kTXVsdGlYYWN0TWVtYmVyKE11bHRpWGFjdE9mZnNldCBvZmZzZXQs IGludCBubWVtYmVycyk7Ci1zdGF0aWMgYm9vbCBNdWx0aVhhY3RPZmZzZXRXb3VsZFdyYXAoTXVs dGlYYWN0T2Zmc2V0IGJvdW5kYXJ5LAotCQkJCQkJCQkJIE11bHRpWGFjdE9mZnNldCBzdGFydCwg dWludDMyIGRpc3RhbmNlKTsKIHN0YXRpYyBib29sIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wg aXNfc3RhcnR1cCk7CiBzdGF0aWMgYm9vbCBmaW5kX211bHRpeGFjdF9zdGFydChNdWx0aVhhY3RJ ZCBtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpyZXN1bHQpOwogc3RhdGljIHZvaWQgV3JpdGVNWmVy b1BhZ2VYbG9nUmVjKGludDY0IHBhZ2VubywgdWludDggaW5mbyk7CkBAIC0xMTY0LDc4ICsxMTUx LDYgQEAgR2V0TmV3TXVsdGlYYWN0SWQoaW50IG5tZW1iZXJzLCBNdWx0aVhhY3RPZmZzZXQgKm9m ZnNldCkKIAllbHNlCiAJCSpvZmZzZXQgPSBuZXh0T2Zmc2V0OwogCi0JLyotLS0tLS0tLS0tCi0J ICogUHJvdGVjdCBhZ2FpbnN0IG92ZXJydW4gb2YgdGhlIG1lbWJlcnMgc3BhY2UgYXMgd2VsbCwg d2l0aCB0aGUKLQkgKiBmb2xsb3dpbmcgcnVsZXM6Ci0JICoKLQkgKiBJZiB3ZSdyZSBwYXN0IG9m ZnNldFN0b3BMaW1pdCwgcmVmdXNlIHRvIGdlbmVyYXRlIG1vcmUgbXVsdGlzLgotCSAqIElmIHdl J3JlIGNsb3NlIHRvIG9mZnNldFN0b3BMaW1pdCwgZW1pdCBhIHdhcm5pbmcuCi0JICoKLQkgKiBB cmJpdHJhcmlseSwgd2Ugc3RhcnQgZW1pdHRpbmcgd2FybmluZ3Mgd2hlbiB3ZSdyZSAyMCBzZWdt ZW50cyBvciBsZXNzCi0JICogZnJvbSBvZmZzZXRTdG9wTGltaXQuCi0JICoKLQkgKiBOb3RlIHdl IGhhdmVuJ3QgdXBkYXRlZCB0aGUgc2hhcmVkIHN0YXRlIHlldCwgc28gaWYgd2UgZmFpbCBhdCB0 aGlzCi0JICogcG9pbnQsIHRoZSBtdWx0aXhhY3QgSUQgd2UgZ3JhYmJlZCBjYW4gc3RpbGwgYmUg dXNlZCBieSB0aGUgbmV4dCBndXkuCi0JICoKLQkgKiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gcG9p bnQgaW4gZm9yY2luZyBhdXRvdmFjdXVtIHJ1bnMgaGVyZTogdGhlCi0JICogbXVsdGl4YWN0IGZy ZWV6ZSBzZXR0aW5ncyB3b3VsZCBoYXZlIHRvIGJlIHJlZHVjZWQgZm9yIHRoYXQgdG8gaGF2ZSBh bnkKLQkgKiBlZmZlY3QuCi0JICotLS0tLS0tLS0tCi0JICovCi0jZGVmaW5lIE9GRlNFVF9XQVJO X1NFR01FTlRTCTIwCi0JaWYgKE11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93biAmJgot CQlNdWx0aVhhY3RPZmZzZXRXb3VsZFdyYXAoTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1p dCwgbmV4dE9mZnNldCwKLQkJCQkJCQkJIG5tZW1iZXJzKSkKLQl7Ci0JCS8qIHNlZSBjb21tZW50 IGluIHRoZSBjb3JyZXNwb25kaW5nIG9mZnNldHMgd3JhcGFyb3VuZCBjYXNlICovCi0JCVNlbmRQ b3N0bWFzdGVyU2lnbmFsKFBNU0lHTkFMX1NUQVJUX0FVVE9WQUNfTEFVTkNIRVIpOwotCi0JCWVy ZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVE KSwKLQkJCQkgZXJybXNnKCJtdWx0aXhhY3QgXCJtZW1iZXJzXCIgbGltaXQgZXhjZWVkZWQiKSwK LQkJCQkgZXJyZGV0YWlsX3BsdXJhbCgiVGhpcyBjb21tYW5kIHdvdWxkIGNyZWF0ZSBhIG11bHRp eGFjdCB3aXRoICV1IG1lbWJlcnMsIGJ1dCB0aGUgcmVtYWluaW5nIHNwYWNlIGlzIG9ubHkgZW5v dWdoIGZvciAldSBtZW1iZXIuIiwKLQkJCQkJCQkJICAiVGhpcyBjb21tYW5kIHdvdWxkIGNyZWF0 ZSBhIG11bHRpeGFjdCB3aXRoICV1IG1lbWJlcnMsIGJ1dCB0aGUgcmVtYWluaW5nIHNwYWNlIGlz IG9ubHkgZW5vdWdoIGZvciAldSBtZW1iZXJzLiIsCi0JCQkJCQkJCSAgTXVsdGlYYWN0U3RhdGUt Pm9mZnNldFN0b3BMaW1pdCAtIG5leHRPZmZzZXQgLSAxLAotCQkJCQkJCQkgIG5tZW1iZXJzLAot CQkJCQkJCQkgIE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQgLSBuZXh0T2Zmc2V0IC0g MSksCi0JCQkJIGVycmhpbnQoIkV4ZWN1dGUgYSBkYXRhYmFzZS13aWRlIFZBQ1VVTSBpbiBkYXRh YmFzZSB3aXRoIE9JRCAldSB3aXRoIHJlZHVjZWQgXCJ2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9t aW5fYWdlXCIgYW5kIFwidmFjdXVtX211bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlXCIgc2V0dGlu Z3MuIiwKLQkJCQkJCSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0TXVsdGlYYWN0REIpKSk7Ci0JfQot Ci0JLyoKLQkgKiBDaGVjayB3aGV0aGVyIHdlIHNob3VsZCBraWNrIGF1dG92YWN1dW0gaW50byBh Y3Rpb24sIHRvIHByZXZlbnQgbWVtYmVycwotCSAqIHdyYXBhcm91bmQuIE5CIHdlIHVzZSBhIG11 Y2ggbGFyZ2VyIHdpbmRvdyB0byB0cmlnZ2VyIGF1dG92YWN1dW0gdGhhbgotCSAqIGp1c3QgdGhl IHdhcm5pbmcgbGltaXQuIFRoZSB3YXJuaW5nIGlzIGp1c3QgYSBtZWFzdXJlIG9mIGxhc3QgcmVz b3J0IC0KLQkgKiB0aGlzIGlzIGluIGxpbmUgd2l0aCBHZXROZXdUcmFuc2FjdGlvbklkJ3MgYmVo YXZpb3VyLgotCSAqLwotCWlmICghTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtub3duIHx8 Ci0JCShNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldCAtIE11bHRpWGFjdFN0YXRlLT5vbGRlc3RP ZmZzZXQKLQkJID4gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCkpCi0JewotCQkvKgot CQkgKiBUbyBhdm9pZCBzd2FtcGluZyB0aGUgcG9zdG1hc3RlciB3aXRoIHNpZ25hbHMsIHdlIGlz c3VlIHRoZSBhdXRvdmFjCi0JCSAqIHJlcXVlc3Qgb25seSB3aGVuIGNyb3NzaW5nIGEgc2VnbWVu dCBib3VuZGFyeS4gV2l0aCBkZWZhdWx0Ci0JCSAqIGNvbXBpbGF0aW9uIHNldHRpbmdzIHRoYXQn cyByb3VnaGx5IGFmdGVyIDUwayBtZW1iZXJzLiAgVGhpcyBzdGlsbAotCQkgKiBnaXZlcyBwbGVu dHkgb2YgY2hhbmNlcyBiZWZvcmUgd2UgZ2V0IGludG8gcmVhbCB0cm91YmxlLgotCQkgKi8KLQkJ aWYgKChNWE9mZnNldFRvTWVtYmVyUGFnZShuZXh0T2Zmc2V0KSAvIFNMUlVfUEFHRVNfUEVSX1NF R01FTlQpICE9Ci0JCQkoTVhPZmZzZXRUb01lbWJlclBhZ2UobmV4dE9mZnNldCArIG5tZW1iZXJz KSAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpKQotCQkJU2VuZFBvc3RtYXN0ZXJTaWduYWwoUE1T SUdOQUxfU1RBUlRfQVVUT1ZBQ19MQVVOQ0hFUik7Ci0JfQotCi0JaWYgKE11bHRpWGFjdFN0YXRl LT5vbGRlc3RPZmZzZXRLbm93biAmJgotCQlNdWx0aVhhY3RPZmZzZXRXb3VsZFdyYXAoTXVsdGlY YWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCwKLQkJCQkJCQkJIG5leHRPZmZzZXQsCi0JCQkJCQkJ CSBubWVtYmVycyArIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFICogU0xSVV9QQUdFU19QRVJf U0VHTUVOVCAqIE9GRlNFVF9XQVJOX1NFR01FTlRTKSkKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCi0JCQkJIGVycm1zZ19w bHVyYWwoImRhdGFiYXNlIHdpdGggT0lEICV1IG11c3QgYmUgdmFjdXVtZWQgYmVmb3JlICVkIG1v cmUgbXVsdGl4YWN0IG1lbWJlciBpcyB1c2VkIiwKLQkJCQkJCQkgICAiZGF0YWJhc2Ugd2l0aCBP SUQgJXUgbXVzdCBiZSB2YWN1dW1lZCBiZWZvcmUgJWQgbW9yZSBtdWx0aXhhY3QgbWVtYmVycyBh cmUgdXNlZCIsCi0JCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCAtIG5l eHRPZmZzZXQgKyBubWVtYmVycywKLQkJCQkJCQkgICBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0TXVs dGlYYWN0REIsCi0JCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCAtIG5l eHRPZmZzZXQgKyBubWVtYmVycyksCi0JCQkJIGVycmhpbnQoIkV4ZWN1dGUgYSBkYXRhYmFzZS13 aWRlIFZBQ1VVTSBpbiB0aGF0IGRhdGFiYXNlIHdpdGggcmVkdWNlZCBcInZhY3V1bV9tdWx0aXhh Y3RfZnJlZXplX21pbl9hZ2VcIiBhbmQgXCJ2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9h Z2VcIiBzZXR0aW5ncy4iKSkpOwotCiAJRXh0ZW5kTXVsdGlYYWN0TWVtYmVyKG5leHRPZmZzZXQs IG5tZW1iZXJzKTsKIAogCS8qCkBAIC0yNzIxLDggKzI2MzYsNiBAQCBTZXRPZmZzZXRWYWN1dW1M aW1pdChib29sIGlzX3N0YXJ0dXApCiAJTXVsdGlYYWN0T2Zmc2V0IG5leHRPZmZzZXQ7CiAJYm9v bAkJb2xkZXN0T2Zmc2V0S25vd24gPSBmYWxzZTsKIAlib29sCQlwcmV2T2xkZXN0T2Zmc2V0S25v d247Ci0JTXVsdGlYYWN0T2Zmc2V0IG9mZnNldFN0b3BMaW1pdCA9IDA7Ci0JTXVsdGlYYWN0T2Zm c2V0IHByZXZPZmZzZXRTdG9wTGltaXQ7CiAKIAkvKgogCSAqIE5COiBIYXZlIHRvIHByZXZlbnQg Y29uY3VycmVudCB0cnVuY2F0aW9uLCB3ZSBtaWdodCBvdGhlcndpc2UgdHJ5IHRvCkBAIC0yNzM3 LDcgKzI2NTAsNiBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJbmV4 dE9mZnNldCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0OwogCXByZXZPbGRlc3RPZmZzZXRL bm93biA9IE11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93bjsKIAlwcmV2T2xkZXN0T2Zm c2V0ID0gTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldDsKLQlwcmV2T2Zmc2V0U3RvcExpbWl0 ID0gTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdDsKIAlBc3NlcnQoTXVsdGlYYWN0U3Rh dGUtPmZpbmlzaGVkU3RhcnR1cCk7CiAJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsK IApAQCAtMjc2OCwxMSArMjY4MCw3IEBAIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3Rh cnR1cCkKIAkJb2xkZXN0T2Zmc2V0S25vd24gPQogCQkJZmluZF9tdWx0aXhhY3Rfc3RhcnQob2xk ZXN0TXVsdGlYYWN0SWQsICZvbGRlc3RPZmZzZXQpOwogCi0JCWlmIChvbGRlc3RPZmZzZXRLbm93 bikKLQkJCWVyZXBvcnQoREVCVUcxLAotCQkJCQkoZXJybXNnX2ludGVybmFsKCJvbGRlc3QgTXVs dGlYYWN0SWQgbWVtYmVyIGlzIGF0IG9mZnNldCAldSIsCi0JCQkJCQkJCQkgb2xkZXN0T2Zmc2V0 KSkpOwotCQllbHNlCisJCWlmICghb2xkZXN0T2Zmc2V0S25vd24pCiAJCQllcmVwb3J0KExPRywK IAkJCQkJKGVycm1zZygiTXVsdGlYYWN0IG1lbWJlciB3cmFwYXJvdW5kIHByb3RlY3Rpb25zIGFy ZSBkaXNhYmxlZCBiZWNhdXNlIG9sZGVzdCBjaGVja3BvaW50ZWQgTXVsdGlYYWN0ICV1IGRvZXMg bm90IGV4aXN0IG9uIGRpc2siLAogCQkJCQkJCW9sZGVzdE11bHRpWGFjdElkKSkpOwpAQCAtMjc4 NSwyNCArMjY5Myw3IEBAIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAkg KiBvdmVycnVuIG9mIG9sZCBkYXRhIGluIHRoZSBtZW1iZXJzIFNMUlUgYXJlYS4gV2UgY2FuIG9u bHkgZG8gc28gaWYgdGhlCiAJICogb2xkZXN0IG9mZnNldCBpcyBrbm93biB0aG91Z2guCiAJICov Ci0JaWYgKG9sZGVzdE9mZnNldEtub3duKQotCXsKLQkJLyogbW92ZSBiYWNrIHRvIHN0YXJ0IG9m IHRoZSBjb3JyZXNwb25kaW5nIHNlZ21lbnQgKi8KLQkJb2Zmc2V0U3RvcExpbWl0ID0gb2xkZXN0 T2Zmc2V0IC0gKG9sZGVzdE9mZnNldCAlCi0JCQkJCQkJCQkJICAoTVVMVElYQUNUX01FTUJFUlNf UEVSX1BBR0UgKiBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKSk7Ci0KLQkJLyogYWx3YXlzIGxlYXZl IG9uZSBzZWdtZW50IGJlZm9yZSB0aGUgd3JhcGFyb3VuZCBwb2ludCAqLwotCQlvZmZzZXRTdG9w TGltaXQgLT0gKE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFICogU0xSVV9QQUdFU19QRVJfU0VH TUVOVCk7Ci0KLQkJaWYgKCFwcmV2T2xkZXN0T2Zmc2V0S25vd24gJiYgIWlzX3N0YXJ0dXApCi0J CQllcmVwb3J0KExPRywKLQkJCQkJKGVycm1zZygiTXVsdGlYYWN0IG1lbWJlciB3cmFwYXJvdW5k IHByb3RlY3Rpb25zIGFyZSBub3cgZW5hYmxlZCIpKSk7Ci0KLQkJZXJlcG9ydChERUJVRzEsCi0J CQkJKGVycm1zZ19pbnRlcm5hbCgiTXVsdGlYYWN0IG1lbWJlciBzdG9wIGxpbWl0IGlzIG5vdyAl dSBiYXNlZCBvbiBNdWx0aVhhY3QgJXUiLAotCQkJCQkJCQkgb2Zmc2V0U3RvcExpbWl0LCBvbGRl c3RNdWx0aVhhY3RJZCkpKTsKLQl9Ci0JZWxzZSBpZiAocHJldk9sZGVzdE9mZnNldEtub3duKQor CWlmIChwcmV2T2xkZXN0T2Zmc2V0S25vd24pCiAJewogCQkvKgogCQkgKiBJZiB3ZSBmYWlsZWQg dG8gZ2V0IHRoZSBvbGRlc3Qgb2Zmc2V0IHRoaXMgdGltZSwgYnV0IHdlIGhhdmUgYQpAQCAtMjgx MiwxNCArMjcwMywxMiBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApCiAJ CSAqLwogCQlvbGRlc3RPZmZzZXQgPSBwcmV2T2xkZXN0T2Zmc2V0OwogCQlvbGRlc3RPZmZzZXRL bm93biA9IHRydWU7Ci0JCW9mZnNldFN0b3BMaW1pdCA9IHByZXZPZmZzZXRTdG9wTGltaXQ7CiAJ fQogCiAJLyogSW5zdGFsbCB0aGUgY29tcHV0ZWQgdmFsdWVzICovCiAJTFdMb2NrQWNxdWlyZShN dWx0aVhhY3RHZW5Mb2NrLCBMV19FWENMVVNJVkUpOwogCU11bHRpWGFjdFN0YXRlLT5vbGRlc3RP ZmZzZXQgPSBvbGRlc3RPZmZzZXQ7CiAJTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtub3du ID0gb2xkZXN0T2Zmc2V0S25vd247Ci0JTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCA9 IG9mZnNldFN0b3BMaW1pdDsKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCiAJ LyoKQEAgLTI4MjksNTQgKzI3MTgsNiBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0 YXJ0dXApCiAJCShuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0ID4gTVVMVElYQUNUX01FTUJFUl9T QUZFX1RIUkVTSE9MRCk7CiB9CiAKLS8qCi0gKiBSZXR1cm4gd2hldGhlciBhZGRpbmcgImRpc3Rh bmNlIiB0byAic3RhcnQiIHdvdWxkIG1vdmUgcGFzdCAiYm91bmRhcnkiLgotICoKLSAqIFdlIHVz ZSB0aGlzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBhZGRpdGlvbiBpcyAid3JhcHBpbmcgYXJv dW5kIiB0aGUKLSAqIGJvdW5kYXJ5IHBvaW50LCBoZW5jZSB0aGUgbmFtZS4gIFRoZSByZWFzb24g d2UgZG9uJ3Qgd2FudCB0byB1c2UgdGhlIHJlZ3VsYXIKLSAqIDJeMzEtbW9kdWxvIGFyaXRobWV0 aWMgaGVyZSBpcyB0aGF0IHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgdGhlIHdob2xlIG9mCi0g KiB0aGUgMl4zMi0xIHNwYWNlIGhlcmUsIGFsbG93aW5nIGZvciBtb3JlIG11bHRpeGFjdHMgdGhh biB3b3VsZCBmaXQKLSAqIG90aGVyd2lzZS4KLSAqLwotc3RhdGljIGJvb2wKLU11bHRpWGFjdE9m ZnNldFdvdWxkV3JhcChNdWx0aVhhY3RPZmZzZXQgYm91bmRhcnksIE11bHRpWGFjdE9mZnNldCBz dGFydCwKLQkJCQkJCSB1aW50MzIgZGlzdGFuY2UpCi17Ci0JTXVsdGlYYWN0T2Zmc2V0IGZpbmlz aDsKLQotCS8qCi0JICogTm90ZSB0aGF0IG9mZnNldCBudW1iZXIgMCBpcyBub3QgdXNlZCAoc2Vl IEdldE11bHRpWGFjdElkTWVtYmVycyksIHNvCi0JICogaWYgdGhlIGFkZGl0aW9uIHdyYXBzIGFy b3VuZCB0aGUgVUlOVF9NQVggYm91bmRhcnksIHNraXAgdGhhdCB2YWx1ZS4KLQkgKi8KLQlmaW5p c2ggPSBzdGFydCArIGRpc3RhbmNlOwotCWlmIChmaW5pc2ggPCBzdGFydCkKLQkJZmluaXNoKys7 Ci0KLQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0JICogV2hlbiB0aGUgYm91bmRhcnkgaXMgbnVtZXJpY2Fs bHkgZ3JlYXRlciB0aGFuIHRoZSBzdGFydGluZyBwb2ludCwgYW55Ci0JICogdmFsdWUgbnVtZXJp Y2FsbHkgYmV0d2VlbiB0aGUgdHdvIGlzIG5vdCB3cmFwcGVkOgotCSAqCi0JICoJPC0tLS1TLS0t LUItLS0tPgotCSAqCVstLS0pCQkJID0gRiB3cmFwcGVkIHBhc3QgQiAoYW5kIFVJTlRfTUFYKQot CSAqCQkgWy0tLSkJCSA9IEYgbm90IHdyYXBwZWQKLQkgKgkJCSAgWy0tLS1dID0gRiB3cmFwcGVk IHBhc3QgQgotCSAqCi0JICogV2hlbiB0aGUgYm91bmRhcnkgaXMgbnVtZXJpY2FsbHkgbGVzcyB0 aGFuIHRoZSBzdGFydGluZyBwb2ludCAoaS5lLiB0aGUKLQkgKiBVSU5UX01BWCB3cmFwYXJvdW5k IG9jY3VycyBzb21ld2hlcmUgaW4gYmV0d2VlbikgdGhlbiBhbGwgdmFsdWVzIGluCi0JICogYmV0 d2VlbiBhcmUgd3JhcHBlZDoKLQkgKgotCSAqCTwtLS0tQi0tLS1TLS0tLT4KLQkgKglbLS0tKQkJ CSA9IEYgbm90IHdyYXBwZWQgcGFzdCBCIChidXQgd3JhcHBlZCBwYXN0IFVJTlRfTUFYKQotCSAq CQkgWy0tLSkJCSA9IEYgd3JhcHBlZCBwYXN0IEIgKGFuZCBVSU5UX01BWCkKLQkgKgkJCSAgWy0t LS1dID0gRiBub3Qgd3JhcHBlZAotCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkgKi8KLQlpZiAoc3RhcnQg PCBib3VuZGFyeSkKLQkJcmV0dXJuIGZpbmlzaCA+PSBib3VuZGFyeSB8fCBmaW5pc2ggPCBzdGFy dDsKLQllbHNlCi0JCXJldHVybiBmaW5pc2ggPj0gYm91bmRhcnkgJiYgZmluaXNoIDwgc3RhcnQ7 Ci19Ci0KIC8qCiAgKiBGaW5kIHRoZSBzdGFydGluZyBvZmZzZXQgb2YgdGhlIGdpdmVuIE11bHRp WGFjdElkLgogICoKQEAgLTI5OTgsOCArMjgzOSw5IEBAIE11bHRpWGFjdE1lbWJlckZyZWV6ZVRo cmVzaG9sZCh2b2lkKQogCSAqIHdlIHRyeSB0byBlbGltaW5hdGUgZnJvbSB0aGUgc3lzdGVtIGlz IGJhc2VkIG9uIGhvdyBmYXIgd2UgYXJlIHBhc3QKIAkgKiBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVf VEhSRVNIT0xELgogCSAqLwotCWZyYWN0aW9uID0gKGRvdWJsZSkgKG1lbWJlcnMgLSBNVUxUSVhB Q1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKSAvCi0JCShNVUxUSVhBQ1RfTUVNQkVSX0RBTkdFUl9U SFJFU0hPTEQgLSBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKKwlmcmFjdGlvbiA9 IChkb3VibGUpIChtZW1iZXJzIC0gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCk7CisJ ZnJhY3Rpb24gLz0gKGRvdWJsZSkgKE1VTFRJWEFDVF9NRU1CRVJfREFOR0VSX1RIUkVTSE9MRCAt IE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQpOworCiAJdmljdGltX211bHRpeGFjdHMg PSBtdWx0aXhhY3RzICogZnJhY3Rpb247CiAKIAkvKiBmcmFjdGlvbiBjb3VsZCBiZSA+IDEuMCwg YnV0IGxvd2VzdCBwb3NzaWJsZSBmcmVlemUgYWdlIGlzIHplcm8gKi8KQEAgLTMzNDUsNyArMzE4 Nyw3IEBAIE11bHRpWGFjdElkUHJlY2VkZXNPckVxdWFscyhNdWx0aVhhY3RJZCBtdWx0aTEsIE11 bHRpWGFjdElkIG11bHRpMikKIHN0YXRpYyBib29sCiBNdWx0aVhhY3RPZmZzZXRQcmVjZWRlcyhN dWx0aVhhY3RPZmZzZXQgb2Zmc2V0MSwgTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDIpCiB7Ci0JaW50 MzIJCWRpZmYgPSAoaW50MzIpIChvZmZzZXQxIC0gb2Zmc2V0Mik7CisJaW50NjQJCWRpZmYgPSAo aW50NjQpIChvZmZzZXQxIC0gb2Zmc2V0Mik7CiAKIAlyZXR1cm4gKGRpZmYgPCAwKTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYyBiL3NyYy9iaW4vcGdf cmVzZXR3YWwvcGdfcmVzZXR3YWwuYwppbmRleCA5ODVjZDA2ODAyLi4xYWYyY2U0YjkzIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKKysrIGIvc3JjL2Jpbi9w Z19yZXNldHdhbC9wZ19yZXNldHdhbC5jCkBAIC0yNjQsNyArMjY0LDcgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCiAJCQljYXNlICdPJzoKIAkJCQllcnJubyA9IDA7Ci0JCQkJc2V0 X214b2ZmID0gc3RydG91bChvcHRhcmcsICZlbmRwdHIsIDApOworCQkJCXNldF9teG9mZiA9IHN0 cnRvdTY0KG9wdGFyZywgJmVuZHB0ciwgMCk7CiAJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwg KmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDApCiAJCQkJewogCQkJCQlwZ19sb2dfZXJyb3Io ImludmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAlcyIsICItTyIpOwpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19yZXNldHdhbC90LzAwMV9iYXNpYy5wbCBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8w MDFfYmFzaWMucGwKaW5kZXggOTgyOWU0ODEwNi4uZjhhOGVlZjQ0ZCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19yZXNldHdhbC90LzAwMV9iYXNpYy5wbAorKysgYi9zcmMvYmluL3BnX3Jlc2V0d2Fs L3QvMDAxX2Jhc2ljLnBsCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVzaCBAY21kLAogICBzcHJpbnRm KCIlZCwlZCIsIGhleCgkZmlsZXNbMF0pID09IDAgPyAzIDogaGV4KCRmaWxlc1swXSksIGhleCgk ZmlsZXNbLTFdKSk7CiAKIEBmaWxlcyA9IGdldF9zbHJ1X2ZpbGVzKCdwZ19tdWx0aXhhY3Qvb2Zm c2V0cycpOwotJG11bHQgPSAzMiAqICRibGNrc3ogLyA0OworJG11bHQgPSAzMiAqICRibGNrc3og LyA4OwogIyAtbSBhcmd1bWVudCBpcyAibmV3LG9sZCIKIHB1c2ggQGNtZCwgJy1tJywKICAgc3By aW50ZigiJWQsJWQiLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oCmluZGV4IDdmZmQyNTZjNzQuLjkwNTgz NjM0ZWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2RlZmlu ZSBNdWx0aVhhY3RJZElzVmFsaWQobXVsdGkpICgobXVsdGkpICE9IEludmFsaWRNdWx0aVhhY3RJ ZCkKIAotI2RlZmluZSBNYXhNdWx0aVhhY3RPZmZzZXQJKChNdWx0aVhhY3RPZmZzZXQpIDB4RkZG RkZGRkYpCisjZGVmaW5lIE1heE11bHRpWGFjdE9mZnNldAlVSU5UNjRDT05TVCgweEZGRkZGRkZG RkZGRkZGRkYpCiAKIC8qCiAgKiBQb3NzaWJsZSBtdWx0aXhhY3QgbG9jayBtb2RlcyAoInN0YXR1 cyIpLiAgVGhlIGZpcnN0IGZvdXIgbW9kZXMgYXJlIGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYy5oIGIvc3JjL2luY2x1ZGUvYy5oCmluZGV4IDBhNTQ4ZDY5ZDcuLmUxYjMxODdkMGIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTY2NCw3 ICs2NjQsNyBAQCB0eXBlZGVmIHVpbnQzMiBTdWJUcmFuc2FjdGlvbklkOwogLyogTXVsdGlYYWN0 SWQgbXVzdCBiZSBlcXVpdmFsZW50IHRvIFRyYW5zYWN0aW9uSWQsIHRvIGZpdCBpbiB0X3htYXgg Ki8KIHR5cGVkZWYgVHJhbnNhY3Rpb25JZCBNdWx0aVhhY3RJZDsKIAotdHlwZWRlZiB1aW50MzIg TXVsdGlYYWN0T2Zmc2V0OwordHlwZWRlZiB1aW50NjQgTXVsdGlYYWN0T2Zmc2V0OwogCiB0eXBl ZGVmIHVpbnQzMiBDb21tYW5kSWQ7CiAKLS0gCjIuNDMuMAoK --000000000000e797b8062747b7e3 Content-Type: application/octet-stream; name="v9-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Disposition: attachment; filename="v9-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3oqaqlu0 RnJvbSBiYzc3ZTA4YzJhZmFlMmQwZTRhZTkyMjJkZmZmMWE3N2VmMmIzZjE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgNyBBdWcgMjAyNCAxNjozNToyMiArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjkgMS83XSBV c2UgNjQtYml0IGZvcm1hdCBvdXRwdXQgZm9yIG11bHRpeGFjdCBvZmZzZXRzCgpBdXRob3I6IE1h eGltIE9ybG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1n cmRlc2MvbXhhY3RkZXNjLmMgICB8ICA5ICsrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1n cmRlc2MveGxvZ2Rlc2MuYyAgICB8ICA0ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L211bHRpeGFjdC5jICAgIHwgMjYgKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIHwgIDUgKysrLS0KIHNyYy9iaW4vcGdfY29u dHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYyAgIHwgIDQgKystLQogc3JjL2Jpbi9wZ19yZXNldHdh bC9wZ19yZXNldHdhbC5jICAgICAgICAgfCAgOCArKystLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDMx IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9teGFjdGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9teGFjdGRlc2MuYwppbmRleCAzZThhZDRkNWVmLi4xYjQ4NmRlMzhjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbXhhY3RkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3JtZ3JkZXNjL214YWN0ZGVzYy5jCkBAIC02NSw4ICs2NSw4IEBAIG11bHRpeGFjdF9k ZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJeGxfbXVsdGl4 YWN0X2NyZWF0ZSAqeGxyZWMgPSAoeGxfbXVsdGl4YWN0X2NyZWF0ZSAqKSByZWM7CiAJCWludAkJ CWk7CiAKLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIldSBvZmZzZXQgJXUgbm1lbWJlcnMgJWQ6 ICIsIHhscmVjLT5taWQsCi0JCQkJCQkgeGxyZWMtPm1vZmYsIHhscmVjLT5ubWVtYmVycyk7CisJ CWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXUgb2Zmc2V0ICVsbHUgbm1lbWJlcnMgJWQ6ICIsIHhs cmVjLT5taWQsCisJCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgeGxyZWMtPm1vZmYsIHhscmVj LT5ubWVtYmVycyk7CiAJCWZvciAoaSA9IDA7IGkgPCB4bHJlYy0+bm1lbWJlcnM7IGkrKykKIAkJ CW91dF9tZW1iZXIoYnVmLCAmeGxyZWMtPm1lbWJlcnNbaV0pOwogCX0KQEAgLTc0LDkgKzc0LDEw IEBAIG11bHRpeGFjdF9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCkKIAl7CiAJCXhsX211bHRpeGFjdF90cnVuY2F0ZSAqeGxyZWMgPSAoeGxfbXVsdGl4YWN0X3Ry dW5jYXRlICopIHJlYzsKIAotCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIm9mZnNldHMgWyV1LCAl dSksIG1lbWJlcnMgWyV1LCAldSkiLAorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIm9mZnNldHMg WyV1LCAldSksIG1lbWJlcnMgWyVsbHUsICVsbHUpIiwKIAkJCQkJCSB4bHJlYy0+c3RhcnRUcnVu Y09mZiwgeGxyZWMtPmVuZFRydW5jT2ZmLAotCQkJCQkJIHhscmVjLT5zdGFydFRydW5jTWVtYiwg eGxyZWMtPmVuZFRydW5jTWVtYik7CisJCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgeGxyZWMt PnN0YXJ0VHJ1bmNNZW1iLAorCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIHhscmVjLT5lbmRU cnVuY01lbWIpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3Jk ZXNjL3hsb2dkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYwpp bmRleCAzNjMyOTRkNjIzLi5hYWExOWM4MWM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv eGxvZ2Rlc2MuYwpAQCAtNjYsNyArNjYsNyBAQCB4bG9nX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhM b2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlDaGVja1BvaW50ICpjaGVja3BvaW50ID0gKENoZWNr UG9pbnQgKikgcmVjOwogCiAJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAicmVkbyAlWC8lWDsgIgot CQkJCQkJICJ0bGkgJXU7IHByZXYgdGxpICV1OyBmcHcgJXM7IHdhbF9sZXZlbCAlczsgeGlkICV1 OiV1OyBvaWQgJXU7IG11bHRpICV1OyBvZmZzZXQgJXU7ICIKKwkJCQkJCSAidGxpICV1OyBwcmV2 IHRsaSAldTsgZnB3ICVzOyB3YWxfbGV2ZWwgJXM7IHhpZCAldToldTsgb2lkICV1OyBtdWx0aSAl dTsgb2Zmc2V0ICVsbHU7ICIKIAkJCQkJCSAib2xkZXN0IHhpZCAldSBpbiBEQiAldTsgb2xkZXN0 IG11bHRpICV1IGluIERCICV1OyAiCiAJCQkJCQkgIm9sZGVzdC9uZXdlc3QgY29tbWl0IHRpbWVz dGFtcCB4aWQ6ICV1LyV1OyAiCiAJCQkJCQkgIm9sZGVzdCBydW5uaW5nIHhpZCAldTsgJXMiLApA QCAtNzksNyArNzksNyBAQCB4bG9nX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCQkJCQkJIFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChjaGVja3BvaW50LT5u ZXh0WGlkKSwKIAkJCQkJCSBjaGVja3BvaW50LT5uZXh0T2lkLAogCQkJCQkJIGNoZWNrcG9pbnQt Pm5leHRNdWx0aSwKLQkJCQkJCSBjaGVja3BvaW50LT5uZXh0TXVsdGlPZmZzZXQsCisJCQkJCQkg KHVuc2lnbmVkIGxvbmcgbG9uZykgY2hlY2twb2ludC0+bmV4dE11bHRpT2Zmc2V0LAogCQkJCQkJ IGNoZWNrcG9pbnQtPm9sZGVzdFhpZCwKIAkJCQkJCSBjaGVja3BvaW50LT5vbGRlc3RYaWREQiwK IAkJCQkJCSBjaGVja3BvaW50LT5vbGRlc3RNdWx0aSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v bXVsdGl4YWN0LmMKaW5kZXggOGMzN2Q3ZWJhNy4uYWI5MDkxMmVkMyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTEyNjQsNyArMTI2NCw4IEBAIEdldE5ld011bHRp WGFjdElkKGludCBubWVtYmVycywgTXVsdGlYYWN0T2Zmc2V0ICpvZmZzZXQpCiAKIAlMV0xvY2tS ZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCi0JZGVidWdfZWxvZzQoREVCVUcyLCAiR2V0TmV3 OiByZXR1cm5pbmcgJXUgb2Zmc2V0ICV1IiwgcmVzdWx0LCAqb2Zmc2V0KTsKKwlkZWJ1Z19lbG9n NChERUJVRzIsICJHZXROZXc6IHJldHVybmluZyAldSBvZmZzZXQgJWxsdSIsIHJlc3VsdCwKKwkJ CQkodW5zaWduZWQgbG9uZyBsb25nKSAqb2Zmc2V0KTsKIAlyZXR1cm4gcmVzdWx0OwogfQogCkBA IC0yMjkzLDggKzIyOTQsOSBAQCBNdWx0aVhhY3RHZXRDaGVja3B0TXVsdGkoYm9vbCBpc19zaHV0 ZG93biwKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCiAJZGVidWdfZWxvZzYo REVCVUcyLAotCQkJCSJNdWx0aVhhY3Q6IGNoZWNrcG9pbnQgaXMgbmV4dE11bHRpICV1LCBuZXh0 T2Zmc2V0ICV1LCBvbGRlc3RNdWx0aSAldSBpbiBEQiAldSIsCi0JCQkJKm5leHRNdWx0aSwgKm5l eHRNdWx0aU9mZnNldCwgKm9sZGVzdE11bHRpLCAqb2xkZXN0TXVsdGlEQik7CisJCQkJIk11bHRp WGFjdDogY2hlY2twb2ludCBpcyBuZXh0TXVsdGkgJXUsIG5leHRPZmZzZXQgJWxsdSwgb2xkZXN0 TXVsdGkgJXUgaW4gREIgJXUiLAorCQkJCSpuZXh0TXVsdGksICh1bnNpZ25lZCBsb25nIGxvbmcp ICpuZXh0TXVsdGlPZmZzZXQsICpvbGRlc3RNdWx0aSwKKwkJCQkqb2xkZXN0TXVsdGlEQik7CiB9 CiAKIC8qCkBAIC0yMzI4LDggKzIzMzAsOCBAQCB2b2lkCiBNdWx0aVhhY3RTZXROZXh0TVhhY3Qo TXVsdGlYYWN0SWQgbmV4dE11bHRpLAogCQkJCQkgIE11bHRpWGFjdE9mZnNldCBuZXh0TXVsdGlP ZmZzZXQpCiB7Ci0JZGVidWdfZWxvZzQoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5nIG5leHQg bXVsdGkgdG8gJXUgb2Zmc2V0ICV1IiwKLQkJCQluZXh0TXVsdGksIG5leHRNdWx0aU9mZnNldCk7 CisJZGVidWdfZWxvZzQoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5nIG5leHQgbXVsdGkgdG8g JXUgb2Zmc2V0ICVsbHUiLAorCQkJCW5leHRNdWx0aSwgKHVuc2lnbmVkIGxvbmcgbG9uZykgbmV4 dE11bHRpT2Zmc2V0KTsKIAlMV0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExXX0VYQ0xV U0lWRSk7CiAJTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdCA9IG5leHRNdWx0aTsKIAlNdWx0aVhh Y3RTdGF0ZS0+bmV4dE9mZnNldCA9IG5leHRNdWx0aU9mZnNldDsKQEAgLTI1MTksOCArMjUyMSw4 IEBAIE11bHRpWGFjdEFkdmFuY2VOZXh0TVhhY3QoTXVsdGlYYWN0SWQgbWluTXVsdGksCiAJfQog CWlmIChNdWx0aVhhY3RPZmZzZXRQcmVjZWRlcyhNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldCwg bWluTXVsdGlPZmZzZXQpKQogCXsKLQkJZGVidWdfZWxvZzMoREVCVUcyLCAiTXVsdGlYYWN0OiBz ZXR0aW5nIG5leHQgb2Zmc2V0IHRvICV1IiwKLQkJCQkJbWluTXVsdGlPZmZzZXQpOworCQlkZWJ1 Z19lbG9nMyhERUJVRzIsICJNdWx0aVhhY3Q6IHNldHRpbmcgbmV4dCBvZmZzZXQgdG8gJWxsdSIs CisJCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIG1pbk11bHRpT2Zmc2V0KTsKIAkJTXVsdGlYYWN0 U3RhdGUtPm5leHRPZmZzZXQgPSBtaW5NdWx0aU9mZnNldDsKIAl9CiAJTFdMb2NrUmVsZWFzZShN dWx0aVhhY3RHZW5Mb2NrKTsKQEAgLTMyMTEsMTEgKzMyMTMsMTIgQEAgVHJ1bmNhdGVNdWx0aVhh Y3QoTXVsdGlYYWN0SWQgbmV3T2xkZXN0TXVsdGksIE9pZCBuZXdPbGRlc3RNdWx0aURCKQogCiAJ ZWxvZyhERUJVRzEsICJwZXJmb3JtaW5nIG11bHRpeGFjdCB0cnVuY2F0aW9uOiAiCiAJCSAib2Zm c2V0cyBbJXUsICV1KSwgb2Zmc2V0cyBzZWdtZW50cyBbJWxseCwgJWxseCksICIKLQkJICJtZW1i ZXJzIFsldSwgJXUpLCBtZW1iZXJzIHNlZ21lbnRzIFslbGx4LCAlbGx4KSIsCisJCSAibWVtYmVy cyBbJWxsdSwgJWxsdSksIG1lbWJlcnMgc2VnbWVudHMgWyVsbHgsICVsbHgpIiwKIAkJIG9sZGVz dE11bHRpLCBuZXdPbGRlc3RNdWx0aSwKIAkJICh1bnNpZ25lZCBsb25nIGxvbmcpIE11bHRpWGFj dElkVG9PZmZzZXRTZWdtZW50KG9sZGVzdE11bHRpKSwKIAkJICh1bnNpZ25lZCBsb25nIGxvbmcp IE11bHRpWGFjdElkVG9PZmZzZXRTZWdtZW50KG5ld09sZGVzdE11bHRpKSwKLQkJIG9sZGVzdE9m ZnNldCwgbmV3T2xkZXN0T2Zmc2V0LAorCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgb2xkZXN0T2Zm c2V0LAorCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgbmV3T2xkZXN0T2Zmc2V0LAogCQkgKHVuc2ln bmVkIGxvbmcgbG9uZykgTVhPZmZzZXRUb01lbWJlclNlZ21lbnQob2xkZXN0T2Zmc2V0KSwKIAkJ ICh1bnNpZ25lZCBsb25nIGxvbmcpIE1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50KG5ld09sZGVzdE9m ZnNldCkpOwogCkBAIC0zNDcxLDExICszNDc0LDEyIEBAIG11bHRpeGFjdF9yZWRvKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCiAJCWVsb2coREVCVUcxLCAicmVwbGF5aW5nIG11bHRpeGFjdCB0 cnVuY2F0aW9uOiAiCiAJCQkgIm9mZnNldHMgWyV1LCAldSksIG9mZnNldHMgc2VnbWVudHMgWyVs bHgsICVsbHgpLCAiCi0JCQkgIm1lbWJlcnMgWyV1LCAldSksIG1lbWJlcnMgc2VnbWVudHMgWyVs bHgsICVsbHgpIiwKKwkJCSAibWVtYmVycyBbJWxsdSwgJWxsdSksIG1lbWJlcnMgc2VnbWVudHMg WyVsbHgsICVsbHgpIiwKIAkJCSB4bHJlYy5zdGFydFRydW5jT2ZmLCB4bHJlYy5lbmRUcnVuY09m ZiwKIAkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBNdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudCh4 bHJlYy5zdGFydFRydW5jT2ZmKSwKIAkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBNdWx0aVhhY3RJ ZFRvT2Zmc2V0U2VnbWVudCh4bHJlYy5lbmRUcnVuY09mZiksCi0JCQkgeGxyZWMuc3RhcnRUcnVu Y01lbWIsIHhscmVjLmVuZFRydW5jTWVtYiwKKwkJCSAodW5zaWduZWQgbG9uZyBsb25nKSB4bHJl Yy5zdGFydFRydW5jTWVtYiwKKwkJCSAodW5zaWduZWQgbG9uZyBsb25nKSB4bHJlYy5lbmRUcnVu Y01lbWIsCiAJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgTVhPZmZzZXRUb01lbWJlclNlZ21lbnQo eGxyZWMuc3RhcnRUcnVuY01lbWIpLAogCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIE1YT2Zmc2V0 VG9NZW1iZXJTZWdtZW50KHhscmVjLmVuZFRydW5jTWVtYikpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4IDA1YzczOGQ2NjEuLjcyN2I2ZTc0NGYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCkBAIC04NzYsOCArODc2 LDkgQEAgSW5pdFdhbFJlY292ZXJ5KENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUsIGJvb2wg Kndhc1NodXRkb3duX3B0ciwKIAkJCQkJCQkgVTY0RnJvbUZ1bGxUcmFuc2FjdGlvbklkKGNoZWNr UG9pbnQubmV4dFhpZCksCiAJCQkJCQkJIGNoZWNrUG9pbnQubmV4dE9pZCkpKTsKIAllcmVwb3J0 KERFQlVHMSwKLQkJCShlcnJtc2dfaW50ZXJuYWwoIm5leHQgTXVsdGlYYWN0SWQ6ICV1OyBuZXh0 IE11bHRpWGFjdE9mZnNldDogJXUiLAotCQkJCQkJCSBjaGVja1BvaW50Lm5leHRNdWx0aSwgY2hl Y2tQb2ludC5uZXh0TXVsdGlPZmZzZXQpKSk7CisJCQkoZXJybXNnX2ludGVybmFsKCJuZXh0IE11 bHRpWGFjdElkOiAldTsgbmV4dCBNdWx0aVhhY3RPZmZzZXQ6ICVsbHUiLAorCQkJCQkJCSBjaGVj a1BvaW50Lm5leHRNdWx0aSwKKwkJCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgY2hlY2tQb2lu dC5uZXh0TXVsdGlPZmZzZXQpKSk7CiAJZXJlcG9ydChERUJVRzEsCiAJCQkoZXJybXNnX2ludGVy bmFsKCJvbGRlc3QgdW5mcm96ZW4gdHJhbnNhY3Rpb24gSUQ6ICV1LCBpbiBkYXRhYmFzZSAldSIs CiAJCQkJCQkJIGNoZWNrUG9pbnQub2xkZXN0WGlkLCBjaGVja1BvaW50Lm9sZGVzdFhpZERCKSkp OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jIGIv c3JjL2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jCmluZGV4IDkzYTA1ZDgwY2Eu LjQzYjY3Mjc1NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJv bGRhdGEuYworKysgYi9zcmMvYmluL3BnX2NvbnRyb2xkYXRhL3BnX2NvbnRyb2xkYXRhLmMKQEAg LTI1Myw4ICsyNTMsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCSAgIENvbnRy b2xGaWxlLT5jaGVja1BvaW50Q29weS5uZXh0T2lkKTsKIAlwcmludGYoXygiTGF0ZXN0IGNoZWNr cG9pbnQncyBOZXh0TXVsdGlYYWN0SWQ6ICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxlLT5jaGVj a1BvaW50Q29weS5uZXh0TXVsdGkpOwotCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5l eHRNdWx0aU9mZnNldDogICV1XG4iKSwKLQkJICAgQ29udHJvbEZpbGUtPmNoZWNrUG9pbnRDb3B5 Lm5leHRNdWx0aU9mZnNldCk7CisJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11 bHRpT2Zmc2V0OiAgJWxsdVxuIiksCisJCSAgICh1bnNpZ25lZCBsb25nIGxvbmcpIENvbnRyb2xG aWxlLT5jaGVja1BvaW50Q29weS5uZXh0TXVsdGlPZmZzZXQpOwogCXByaW50ZihfKCJMYXRlc3Qg Y2hlY2twb2ludCdzIG9sZGVzdFhJRDogICAgICAgICV1XG4iKSwKIAkJICAgQ29udHJvbEZpbGUt PmNoZWNrUG9pbnRDb3B5Lm9sZGVzdFhpZCk7CiAJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50 J3Mgb2xkZXN0WElEJ3MgREI6ICAgJXVcbiIpLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNl dHdhbC9wZ19yZXNldHdhbC5jIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCmlu ZGV4IGU5ZGNiNWE2ZDguLjk4NWNkMDY4MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmVzZXR3 YWwvcGdfcmVzZXR3YWwuYworKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMK QEAgLTczNyw4ICs3MzcsOCBAQCBQcmludENvbnRyb2xWYWx1ZXMoYm9vbCBndWVzc2VkKQogCQkg ICBDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0T2lkKTsKIAlwcmludGYoXygiTGF0ZXN0 IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlYYWN0SWQ6ICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxl LmNoZWNrUG9pbnRDb3B5Lm5leHRNdWx0aSk7Ci0JcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50 J3MgTmV4dE11bHRpT2Zmc2V0OiAgJXVcbiIpLAotCQkgICBDb250cm9sRmlsZS5jaGVja1BvaW50 Q29weS5uZXh0TXVsdGlPZmZzZXQpOworCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5l eHRNdWx0aU9mZnNldDogICVsbHVcbiIpLAorCQkgICAodW5zaWduZWQgbG9uZyBsb25nKSBDb250 cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0TXVsdGlPZmZzZXQpOwogCXByaW50ZihfKCJMYXRl c3QgY2hlY2twb2ludCdzIG9sZGVzdFhJRDogICAgICAgICV1XG4iKSwKIAkJICAgQ29udHJvbEZp bGUuY2hlY2tQb2ludENvcHkub2xkZXN0WGlkKTsKIAlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9p bnQncyBvbGRlc3RYSUQncyBEQjogICAldVxuIiksCkBAIC04MDksOCArODA5LDggQEAgUHJpbnRO ZXdDb250cm9sVmFsdWVzKHZvaWQpCiAKIAlpZiAoc2V0X214b2ZmICE9IC0xKQogCXsKLQkJcHJp bnRmKF8oIk5leHRNdWx0aU9mZnNldDogICAgICAgICAgICAgICAgICAgICAgJXVcbiIpLAotCQkJ ICAgQ29udHJvbEZpbGUuY2hlY2tQb2ludENvcHkubmV4dE11bHRpT2Zmc2V0KTsKKwkJcHJpbnRm KF8oIk5leHRNdWx0aU9mZnNldDogICAgICAgICAgICAgICAgICAgICAgJWxsdVxuIiksCisJCQkg ICAodW5zaWduZWQgbG9uZyBsb25nKSBDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0TXVs dGlPZmZzZXQpOwogCX0KIAogCWlmIChzZXRfb2lkICE9IDApCi0tIAoyLjQzLjAKCg== --000000000000e797b8062747b7e3 Content-Type: application/octet-stream; name="v9-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Disposition: attachment; filename="v9-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3oqaqmj2 RnJvbSBkNzMxYzQ5YjhjNTFkNTdlZTRhZTAxNjBhNDY2OGY5Zjk5ZDRhMmJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogVHVlLCAxMyBBdWcgMjAyNCAxNDo0NDo1MCArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjkg My83XSBNYWtlIHBnX3VwZ3JhZGUgY29udmVydCBtdWx0aXhhY3Qgb2Zmc2V0cy4KCkF1dGhvcjog TWF4aW0gT3Jsb3YgPG9ybG92bWdAZ21haWwuY29tPgpBdXRob3I6IFl1cmEgU29rb2xvdiA8eS5z b2tvbG92QHBvc3RncmVzcHJvLnJ1PgotLS0KIHNyYy9iaW4vcGdfdXBncmFkZS9NYWtlZmlsZSAg ICAgfCAgIDEgKwogc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMv YmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jIHwgIDQyICsrLQogc3JjL2Jpbi9wZ191cGdyYWRl L3BnX3VwZ3JhZGUuaCB8ICAxNCArLQogc3JjL2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5jICB8 IDUyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA1 ODAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv YmluL3BnX3VwZ3JhZGUvc2VncmVzaXplLmMKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3Jh ZGUvTWFrZWZpbGUgYi9zcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUKaW5kZXggZjgzZDJiNWQz MC4uNzA5MDhkNjNhMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL01ha2VmaWxlCisr KyBiL3NyYy9iaW4vcGdfdXBncmFkZS9NYWtlZmlsZQpAQCAtMjEsNiArMjEsNyBAQCBPQkpTID0g XAogCWluZm8ubyBcCiAJb3B0aW9uLm8gXAogCXBhcmFsbGVsLm8gXAorCXNlZ3Jlc2l6ZS5vIFwK IAlwZ191cGdyYWRlLm8gXAogCXJlbGZpbGVudW1iZXIubyBcCiAJc2VydmVyLm8gXApkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ191cGdyYWRl L21lc29uLmJ1aWxkCmluZGV4IDNkODg0MTk2NzQuLjE2Zjg5OGJhMTQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvbWVz b24uYnVpbGQKQEAgLTEwLDYgKzEwLDcgQEAgcGdfdXBncmFkZV9zb3VyY2VzID0gZmlsZXMoCiAg ICdpbmZvLmMnLAogICAnb3B0aW9uLmMnLAogICAncGFyYWxsZWwuYycsCisgICdzZWdyZXNpemUu YycsCiAgICdwZ191cGdyYWRlLmMnLAogICAncmVsZmlsZW51bWJlci5jJywKICAgJ3NlcnZlci5j JywKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMgYi9zcmMvYmlu L3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jCmluZGV4IDY2MzIzNTgxNmYuLjE2NTRlODc3YzAgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMKKysrIGIvc3JjL2Jpbi9w Z191cGdyYWRlL3BnX3VwZ3JhZGUuYwpAQCAtNzUwLDggKzc1MCw0MiBAQCBjb3B5X3hhY3RfeGxv Z194aWQodm9pZCkKIAlpZiAob2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+PSBNVUxU SVhBQ1RfRk9STUFUQ0hBTkdFX0NBVF9WRVIgJiYKIAkJbmV3X2NsdXN0ZXIuY29udHJvbGRhdGEu Y2F0X3ZlciA+PSBNVUxUSVhBQ1RfRk9STUFUQ0hBTkdFX0NBVF9WRVIpCiAJewotCQljb3B5X3N1 YmRpcl9maWxlcygicGdfbXVsdGl4YWN0L29mZnNldHMiLCAicGdfbXVsdGl4YWN0L29mZnNldHMi KTsKLQkJY29weV9zdWJkaXJfZmlsZXMoInBnX211bHRpeGFjdC9tZW1iZXJzIiwgInBnX211bHRp eGFjdC9tZW1iZXJzIik7CisJCS8qCisJCSAqIElmIHRoZSBvbGQgc2VydmVyIGlzIGJlZm9yZSB0 aGUgTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENIQU5HRV9DQVRfVkVSCisJCSAqIGl0IG11c3QgaGF2 ZSAzMi1iaXQgbXVsdGl4aWQgb2Zmc2V0cywgdGh1cyBpdCBzaG91bGQgYmUgY29udmVydGVkLgor CQkgKi8KKwkJaWYgKG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNhdF92ZXIgPCBNVUxUSVhBQ1RP RkZTRVRfRk9STUFUQ0hBTkdFX0NBVF9WRVIgJiYKKwkJCW5ld19jbHVzdGVyLmNvbnRyb2xkYXRh LmNhdF92ZXIgPj0gTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENIQU5HRV9DQVRfVkVSKQorCQl7CisJ CQlNdWx0aVhhY3RPZmZzZXQJCW9sZGVzdF9vZmZzZXQsCisJCQkJCQkJCW5leHRfb2Zmc2V0Owor CisJCQlyZW1vdmVfbmV3X3N1YmRpcigicGdfbXVsdGl4YWN0L29mZnNldHMiLCBmYWxzZSk7CisJ CQlwcmVwX3N0YXR1cygiQ29udmVydGluZyBwZ19tdWx0aXhhY3Qvb2Zmc2V0cyB0byA2NC1iaXQi KTsKKwkJCW9sZGVzdF9vZmZzZXQgPSBjb252ZXJ0X211bHRpeGFjdF9vZmZzZXRzKCk7CisJCQlj aGVja19vaygpOworCisJCQlyZW1vdmVfbmV3X3N1YmRpcigicGdfbXVsdGl4YWN0L21lbWJlcnMi LCBmYWxzZSk7CisJCQlwcmVwX3N0YXR1cygiQ29udmVydGluZyBwZ19tdWx0aXhhY3QvbWVtYmVy cyIpOworCQkJY29udmVydF9tdWx0aXhhY3RfbWVtYmVycyhvbGRlc3Rfb2Zmc2V0KTsKKwkJCWNo ZWNrX29rKCk7CisKKwkJCW5leHRfb2Zmc2V0ID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hr cG50X254dG14b2ZmOworCQkJaWYgKG9sZGVzdF9vZmZzZXQpCisJCQl7CisJCQkJaWYgKG5leHRf b2Zmc2V0IDwgb2xkZXN0X29mZnNldCkKKwkJCQkJbmV4dF9vZmZzZXQgKz0gKChNdWx0aVhhY3RP ZmZzZXQpIDEgPDwgMzIpIC0gMTsKKworCQkJCW5leHRfb2Zmc2V0IC09IG9sZGVzdF9vZmZzZXQg LSAxOworCisJCQkJb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X254dG14b2ZmID0gbmV4 dF9vZmZzZXQ7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQljb3B5X3N1YmRpcl9maWxlcygi cGdfbXVsdGl4YWN0L29mZnNldHMiLCAicGdfbXVsdGl4YWN0L29mZnNldHMiKTsKKwkJCWNvcHlf c3ViZGlyX2ZpbGVzKCJwZ19tdWx0aXhhY3QvbWVtYmVycyIsICJwZ19tdWx0aXhhY3QvbWVtYmVy cyIpOworCQl9CiAKIAkJcHJlcF9zdGF0dXMoIlNldHRpbmcgbmV4dCBtdWx0aXhhY3QgSUQgYW5k IG9mZnNldCBmb3IgbmV3IGNsdXN0ZXIiKTsKIApAQCAtNzYwLDkgKzc5NCw5IEBAIGNvcHlfeGFj dF94bG9nX3hpZCh2b2lkKQogCQkgKiBjb3VudGVycyBoZXJlIGFuZCB0aGUgb2xkZXN0IG11bHRp IHByZXNlbnQgb24gc3lzdGVtLgogCQkgKi8KIAkJZXhlY19wcm9nKFVUSUxJVFlfTE9HX0ZJTEUs IE5VTEwsIHRydWUsIHRydWUsCi0JCQkJICAiXCIlcy9wZ19yZXNldHdhbFwiIC1PICV1IC1tICV1 LCV1IFwiJXNcIiIsCisJCQkJICAiXCIlcy9wZ19yZXNldHdhbFwiIC1PICVsbHUgLW0gJXUsJXUg XCIlc1wiIiwKIAkJCQkgIG5ld19jbHVzdGVyLmJpbmRpciwKLQkJCQkgIG9sZF9jbHVzdGVyLmNv bnRyb2xkYXRhLmNoa3BudF9ueHRteG9mZiwKKwkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIG9s ZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9ueHRteG9mZiwKIAkJCQkgIG9sZF9jbHVzdGVy LmNvbnRyb2xkYXRhLmNoa3BudF9ueHRtdWx0aSwKIAkJCQkgIG9sZF9jbHVzdGVyLmNvbnRyb2xk YXRhLmNoa3BudF9vbGRzdE11bHRpLAogCQkJCSAgbmV3X2NsdXN0ZXIucGdkYXRhKTsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggYi9zcmMvYmluL3BnX3VwZ3Jh ZGUvcGdfdXBncmFkZS5oCmluZGV4IDUzZjY5M2MyZDQuLjJjODVlYzFlOTQgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRl L3BnX3VwZ3JhZGUuaApAQCAtMTE0LDYgKzExNCwxMyBAQCBleHRlcm4gY2hhciAqb3V0cHV0X2Zp bGVzW107CiAgKi8KICNkZWZpbmUgTVVMVElYQUNUX0ZPUk1BVENIQU5HRV9DQVRfVkVSIDIwMTMw MTIzMQogCisvKgorICogU3dpY3RoIGZyb20gMzItYml0IHRvIDY0LWJpdCBmb3IgbXVsdGl4aWQg b2Zmc2V0cy4KKyAqCisgKiBYWFg6IHNob3VsZCBiZSBjaGFuZ2VkIHRvIHRoZSBhY3R1YWwgQ0FU QUxPR19WRVJTSU9OX05PIG9uIGNvbW1pdC4KKyAqLworI2RlZmluZSBNVUxUSVhBQ1RPRkZTRVRf Rk9STUFUQ0hBTkdFX0NBVF9WRVIgMjAyNDA5MDQxCisKIC8qCiAgKiBsYXJnZSBvYmplY3QgY2h1 bmsgc2l6ZSBhZGRlZCB0byBwZ19jb250cm9sZGF0YSwKICAqIGNvbW1pdCA1ZjkzYzM3ODA1ZTc0 ODU0ODg0ODA5MTZiNDU4NWUwOThkM2NjODgzCkBAIC0yMzAsNyArMjM3LDcgQEAgdHlwZWRlZiBz dHJ1Y3QKIAl1aW50MzIJCWNoa3BudF9ueHRlcG9jaDsKIAl1aW50MzIJCWNoa3BudF9ueHRvaWQ7 CiAJdWludDMyCQljaGtwbnRfbnh0bXVsdGk7Ci0JdWludDMyCQljaGtwbnRfbnh0bXhvZmY7CisJ dWludDY0CQljaGtwbnRfbnh0bXhvZmY7CiAJdWludDMyCQljaGtwbnRfb2xkc3RNdWx0aTsKIAl1 aW50MzIJCWNoa3BudF9vbGRzdHhpZDsKIAl1aW50MzIJCWFsaWduOwpAQCAtNTE1LDMgKzUyMiw4 IEBAIHR5cGVkZWYgc3RydWN0CiAJRklMRQkgICAqZmlsZTsKIAljaGFyCQlwYXRoW01BWFBHUEFU SF07CiB9IFVwZ3JhZGVUYXNrUmVwb3J0OworCisvKiBzZWdyZXNpemUuYyAqLworCitNdWx0aVhh Y3RPZmZzZXQJCWNvbnZlcnRfbXVsdGl4YWN0X29mZnNldHModm9pZCk7Cit2b2lkCQkJCWNvbnZl cnRfbXVsdGl4YWN0X21lbWJlcnMoTXVsdGlYYWN0T2Zmc2V0IG9sZGVzdF9vZmZzZXQpOwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3NlZ3Jlc2l6ZS5jIGIvc3JjL2Jpbi9wZ191cGdy YWRlL3NlZ3Jlc2l6ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjcz MDY0Yzc3ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvc2VncmVzaXpl LmMKQEAgLTAsMCArMSw1MjcgQEAKKy8qCisgKglzZWdyZXNpemUuYworICoKKyAqCVNMUlUgc2Vn bWVudCByZXNpemUgdXRpbGl0eQorICoKKyAqCUNvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCXNyYy9iaW4vcGdfdXBncmFkZS9zZWdyZXNp emUuYworICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVkZSAicGdfdXBn cmFkZS5oIgorI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKKworLyogU2VlIHNscnUuaCAq LworI2RlZmluZSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UCQkzMgorCisvKgorICogU29tZSBraW5k IG9mIGl0ZXJhdG9yIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgU0xSVSBzZWdtZW50LiAg VGhlIGlkZWEgaXMKKyAqIHRvIHNwZWNpZnkgdGhlIHNlZ21lbnQgYW5kIHBhZ2UgbnVtYmVyIGFu ZCB0aGVuIG1vdmUgdGhyb3VnaCB0aGUgcGFnZXMuCisgKi8KK3R5cGVkZWYgc3RydWN0IFNscnVT ZWdTdGF0ZQoreworCWNoYXIJICAgKmRpcjsKKwljaGFyCSAgICpmbjsKKwlGSUxFCSAgICpmaWxl OworCWludDY0CQlzZWdubzsKKwl1aW50NjQJCXBhZ2VubzsKKwlib29sCQlsZWFkaW5nX2dhcDsK K30gU2xydVNlZ1N0YXRlOworCisvKgorICogTWlycm9ycyB0aGUgU2xydUZpbGVOYW1lIGZyb20g c2xydS5jCisgKi8KK3N0YXRpYyBpbmxpbmUgY2hhciAqCitTbHJ1RmlsZU5hbWUoU2xydVNlZ1N0 YXRlICpzdGF0ZSkKK3sKKwlBc3NlcnQoc3RhdGUtPnNlZ25vID49IDAgJiYgc3RhdGUtPnNlZ25v IDw9IElOVDY0Q09OU1QoMHhGRkZGRkYpKTsKKwlyZXR1cm4gcHNwcmludGYoIiVzLyUwNFgiLCBz dGF0ZS0+ZGlyLCAodW5zaWduZWQgaW50KSBzdGF0ZS0+c2Vnbm8pOworfQorCisvKgorICogQ3Jl YXRlIG5ldyBTTFJVIHNlZ21lbnQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK2NyZWF0ZV9zZWdt ZW50KFNscnVTZWdTdGF0ZSAqc3RhdGUpCit7CisJQXNzZXJ0KHN0YXRlLT5mbiA9PSBOVUxMKTsK KwlBc3NlcnQoc3RhdGUtPmZpbGUgPT0gTlVMTCk7CisKKwlzdGF0ZS0+Zm4gPSBTbHJ1RmlsZU5h bWUoc3RhdGUpOworCXN0YXRlLT5maWxlID0gZm9wZW4oc3RhdGUtPmZuLCAid2IiKTsKKwlpZiAo IXN0YXRlLT5maWxlKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBmaWxlIFwiJXNcIjog JW0iLCBzdGF0ZS0+Zm4pOworfQorCisvKgorICogT3BlbiBleGlzdGluZyBTTFJVIHNlZ21lbnQg ZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK29wZW5fc2VnbWVudChTbHJ1U2VnU3RhdGUgKnN0YXRl KQoreworCUFzc2VydChzdGF0ZS0+Zm4gPT0gTlVMTCk7CisJQXNzZXJ0KHN0YXRlLT5maWxlID09 IE5VTEwpOworCisJc3RhdGUtPmZuID0gU2xydUZpbGVOYW1lKHN0YXRlKTsKKwlzdGF0ZS0+Zmls ZSA9IGZvcGVuKHN0YXRlLT5mbiwgInJiIik7CisJaWYgKCFzdGF0ZS0+ZmlsZSkKKwkJcGdfZmF0 YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7Cit9CisKKy8q CisgKiBDbG9zZSBTTFJVIHNlZ21lbnQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK2Nsb3NlX3Nl Z21lbnQoU2xydVNlZ1N0YXRlICpzdGF0ZSkKK3sKKwlpZiAoc3RhdGUtPmZpbGUpCisJeworCQlm Y2xvc2Uoc3RhdGUtPmZpbGUpOworCQlzdGF0ZS0+ZmlsZSA9IE5VTEw7CisJfQorCisJaWYgKHN0 YXRlLT5mbikKKwl7CisJCXBmcmVlKHN0YXRlLT5mbik7CisJCXN0YXRlLT5mbiA9IE5VTEw7CisJ fQorfQorCisvKgorICogUmVhZCBuZXh0IHBhZ2UgZnJvbSB0aGUgb2xkIDMyLWJpdCBvZmZzZXQg c2VnbWVudCBmaWxlLgorICovCitzdGF0aWMgaW50CityZWFkX29sZF9zZWdtZW50X3BhZ2UoU2xy dVNlZ1N0YXRlICpzdGF0ZSwgdm9pZCAqYnVmLCBib29sICplbXB0eSkKK3sKKwlpbnQJCWxlbjsK KworCS8qIE9wZW4gbmV4dCBzZWdtZW50IGZpbGUsIGlmIG5lZWRlZC4gKi8KKwlpZiAoIXN0YXRl LT5mbikKKwl7CisJCWlmICghc3RhdGUtPnNlZ25vKQorCQkJc3RhdGUtPmxlYWRpbmdfZ2FwID0g dHJ1ZTsKKworCQlvcGVuX3NlZ21lbnQoc3RhdGUpOworCisJCS8qIFNldCBwb3NpdGlvbiB0byB0 aGUgbmVlZGVkIHBhZ2UuICovCisJCWlmIChzdGF0ZS0+cGFnZW5vID4gMCAmJgorCQkJZnNlZWso c3RhdGUtPmZpbGUsIHN0YXRlLT5wYWdlbm8gKiBCTENLU1osIFNFRUtfU0VUKSkKKwkJeworCQkJ Y2xvc2Vfc2VnbWVudChzdGF0ZSk7CisJCX0KKwl9CisKKwlpZiAoc3RhdGUtPmZpbGUpCisJewor CQkvKiBTZWdtZW50IGZpbGUgZG8gZXhpc3RzLCByZWFkIHBhZ2UgZnJvbSBpdC4gKi8KKwkJc3Rh dGUtPmxlYWRpbmdfZ2FwID0gZmFsc2U7CisKKwkJbGVuID0gZnJlYWQoYnVmLCBzaXplb2YoY2hh ciksIEJMQ0tTWiwgc3RhdGUtPmZpbGUpOworCisJCS8qIEFyZSB3ZSBkb25lIG9yIHdhcyB0aGVy ZSBhbiBlcnJvcj8gKi8KKwkJaWYgKGxlbiA8PSAwKQorCQl7CisJCQlpZiAoZmVycm9yKHN0YXRl LT5maWxlKSkKKwkJCQlwZ19mYXRhbCgiZXJyb3IgcmVhZGluZyBmaWxlIFwiJXNcIjogJW0iLCBz dGF0ZS0+Zm4pOworCisJCQlpZiAoZmVvZihzdGF0ZS0+ZmlsZSkpCisJCQl7CisJCQkJKmVtcHR5 ID0gdHJ1ZTsKKwkJCQlsZW4gPSAtMTsKKworCQkJCWNsb3NlX3NlZ21lbnQoc3RhdGUpOworCQkJ fQorCQl9CisJCWVsc2UKKwkJCSplbXB0eSA9IGZhbHNlOworCX0KKwllbHNlIGlmICghc3RhdGUt PmxlYWRpbmdfZ2FwKQorCXsKKwkJLyogV2UgcmVhY2hlZCB0aGUgbGFzdCBzZWdtZW50LiAqLwor CQlsZW4gPSAtMTsKKwkJKmVtcHR5ID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJLyogU2tpcCBm ZXcgZmlyc3Qgc2VnbWVudHMgaWYgdGhleSB3ZXJlIGZyb3plbiBhbmQgcmVtb3ZlZC4gKi8KKwkJ bGVuID0gQkxDS1NaOworCQkqZW1wdHkgPSB0cnVlOworCX0KKworCWlmICgrK3N0YXRlLT5wYWdl bm8gPj0gU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkKKwl7CisJCS8qIFN0YXJ0IGEgbmV3IHNlZ21l bnQuICovCisJCXN0YXRlLT5zZWdubysrOworCQlzdGF0ZS0+cGFnZW5vID0gMDsKKworCQljbG9z ZV9zZWdtZW50KHN0YXRlKTsKKwl9CisKKwlyZXR1cm4gbGVuOworfQorCisvKgorICogV3JpdGUg bmV4dCBwYWdlIHRvIHRoZSBuZXcgNjQtYml0IG9mZnNldCBzZWdtZW50IGZpbGUuCisgKi8KK3N0 YXRpYyB2b2lkCit3cml0ZV9uZXdfc2VnbWVudF9wYWdlKFNscnVTZWdTdGF0ZSAqc3RhdGUsIHZv aWQgKmJ1ZikKK3sKKwkvKgorCSAqIENyZWF0ZSBhIG5ldyBzZWdtZW50IGZpbGUgaWYgd2Ugc3Rp bGwgZGlkbid0LiAgQ3JlYXRpb24gaXMKKwkgKiBwb3N0cG9uZWQgdW50aWwgdGhlIGZpcnN0IG5v bi1lbXB0eSBwYWdlIGlzIGZvdW5kLiAgVGhpcyBoZWxwcworCSAqIG5vdCB0byBjcmVhdGUgY29t cGxldGVseSBlbXB0eSBzZWdtZW50cy4KKwkgKi8KKwlpZiAoIXN0YXRlLT5maWxlKQorCXsKKwkJ Y3JlYXRlX3NlZ21lbnQoc3RhdGUpOworCisJCS8qIFdyaXRlIHplcm9lcyB0byB0aGUgcHJldmlv dXNseSBza2lwcGVkIHByZWZpeC4gKi8KKwkJaWYgKHN0YXRlLT5wYWdlbm8gPiAwKQorCQl7CisJ CQljaGFyCQl6ZXJvYnVmW0JMQ0tTWl0gPSB7MH07CisKKwkJCWZvciAoaW50NjQgaSA9IDA7IGkg PCBzdGF0ZS0+cGFnZW5vOyBpKyspCisJCQl7CisJCQkJaWYgKGZ3cml0ZSh6ZXJvYnVmLCBzaXpl b2YoY2hhciksIEJMQ0tTWiwgc3RhdGUtPmZpbGUpICE9IEJMQ0tTWikKKwkJCQkJcGdfZmF0YWwo ImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBzdGF0ZS0+Zm4pOworCQkJfQorCQl9 CisJfQorCisJLyogV3JpdGUgcGFnZSB0byB0aGUgbmV3IHNlZ21lbnQgKGlmIGl0IHdhcyBjcmVh dGVkKS4gKi8KKwlpZiAoc3RhdGUtPmZpbGUpCisJeworCQlpZiAoZndyaXRlKGJ1Ziwgc2l6ZW9m KGNoYXIpLCBCTENLU1osIHN0YXRlLT5maWxlKSAhPSBCTENLU1opCisJCQlwZ19mYXRhbCgiY291 bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7CisJfQorCisJLyoKKwkg KiBEaWQgd2UgcmVhY2ggdGhlIG1heGltdW0gcGFnZSBudW1iZXI/ICBUaGVuIGNsb3NlIHNlZ21l bnQgZmlsZQorCSAqIGFuZCBjcmVhdGUgYSBuZXcgb25lIG9uIHRoZSBuZXh0IGl0ZXJhdGlvbi4K KwkgKi8KKwlpZiAoKytzdGF0ZS0+cGFnZW5vID49IFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpCisJ eworCQkvKiBTdGFydCBhIG5ldyBzZWdtZW50LiAqLworCQlzdGF0ZS0+c2Vnbm8rKzsKKwkJc3Rh dGUtPnBhZ2VubyA9IDA7CisKKwkJY2xvc2Vfc2VnbWVudChzdGF0ZSk7CisJfQorfQorCit0eXBl ZGVmIHVpbnQzMiBNdWx0aVhhY3RPZmZzZXRPbGQ7CisKKyNkZWZpbmUgTWF4TXVsdGlYYWN0T2Zm c2V0T2xkCSgoTXVsdGlYYWN0T2Zmc2V0T2xkKSAweEZGRkZGRkZGKQorCisjZGVmaW5lIE1VTFRJ WEFDVF9PRkZTRVRTX1BFUl9QQUdFX09MRCAoQkxDS1NaIC8gc2l6ZW9mKE11bHRpWGFjdE9mZnNl dE9sZCkpCisjZGVmaW5lIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FVyAoQkxDS1NaIC8g c2l6ZW9mKE11bHRpWGFjdE9mZnNldCkpCisKKy8qCisgKiBDb252ZXJ0IHBnX211bHRpeGFjdC9v ZmZzZXRzIHNlZ21lbnRzIGFuZCByZXR1cm4gb2xkZXN0IG11bHRpIG9mZnNldC4KKyAqLworTXVs dGlYYWN0T2Zmc2V0Citjb252ZXJ0X211bHRpeGFjdF9vZmZzZXRzKHZvaWQpCit7CisJU2xydVNl Z1N0YXRlCQlvbGRzZWcgPSB7MH0sCisJCQkJCQluZXdzZWcgPSB7MH07CisJTXVsdGlYYWN0T2Zm c2V0T2xkCW9sZGJ1ZltNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTERdID0gezB9OworCU11 bHRpWGFjdE9mZnNldAkJbmV3YnVmW01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FV10gPSB7 MH0sCisJCQkJCQlvbGRlc3Rfb2Zmc2V0ID0gMDsKKwl1aW50NjQJCQkJb2xkZXN0X211bHRpID0g b2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X29sZHN0TXVsdGksCisJCQkJCQluZXh0X211 bHRpID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X254dG11bHRpLAorCQkJCQkJbXVs dGksCisJCQkJCQlvbGRfZW50cnksCisJCQkJCQluZXdfZW50cnk7CisJYm9vbAkJCQlvbGRlc3Rf b2Zmc2V0X2tub3duID0gZmFsc2U7CisKKwlvbGRzZWcuZGlyID0gcHNwcmludGYoIiVzL3BnX211 bHRpeGFjdC9vZmZzZXRzIiwgb2xkX2NsdXN0ZXIucGdkYXRhKTsKKwluZXdzZWcuZGlyID0gcHNw cmludGYoIiVzL3BnX211bHRpeGFjdC9vZmZzZXRzIiwgbmV3X2NsdXN0ZXIucGdkYXRhKTsKKwor CW9sZF9lbnRyeSA9IG9sZGVzdF9tdWx0aSAlIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX09M RDsKKwlvbGRzZWcucGFnZW5vID0gb2xkZXN0X211bHRpIC8gTVVMVElYQUNUX09GRlNFVFNfUEVS X1BBR0VfT0xEOworCW9sZHNlZy5zZWdubyA9IG9sZHNlZy5wYWdlbm8gLyBTTFJVX1BBR0VTX1BF Ul9TRUdNRU5UOworCW9sZHNlZy5wYWdlbm8gJT0gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKKwor CW5ld19lbnRyeSA9IG9sZGVzdF9tdWx0aSAlIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFX05F VzsKKwluZXdzZWcucGFnZW5vID0gb2xkZXN0X211bHRpIC8gTVVMVElYQUNUX09GRlNFVFNfUEVS X1BBR0VfTkVXOworCW5ld3NlZy5zZWdubyA9IG5ld3NlZy5wYWdlbm8gLyBTTFJVX1BBR0VTX1BF Ul9TRUdNRU5UOworCW5ld3NlZy5wYWdlbm8gJT0gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKKwor CWlmIChuZXh0X211bHRpIDwgb2xkZXN0X211bHRpKQorCQluZXh0X211bHRpICs9ICh1aW50NjQp IDEgPDwgMzI7CS8qIHdyYXBhcm91bmQgKi8KKworCS8qIENvcHkgbXVsdGkgb2Zmc2V0cyByZWFk aW5nIG9ubHkgbmVlZGVkIHNlZ21lbnQgcGFnZXMgKi8KKwlmb3IgKG11bHRpID0gb2xkZXN0X211 bHRpOyBtdWx0aSA8IG5leHRfbXVsdGk7IG9sZF9lbnRyeSA9IDApCisJeworCQlpbnQJCW9sZGxl bjsKKwkJYm9vbAllbXB0eTsKKworCQkvKiBIYW5kbGUgcG9zc2libGUgc2VnbWVudCB3cmFwYXJv dW5kICovCisjZGVmaW5lIE9MRF9PRkZTRVRfU0VHTk9fTUFYCVwKKwkoTWF4TXVsdGlYYWN0SWQg LyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTEQgLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5U KQorCQlpZiAob2xkc2VnLnNlZ25vID4gT0xEX09GRlNFVF9TRUdOT19NQVgpCisJCXsKKwkJCW9s ZHNlZy5zZWdubyA9IDA7CisJCQlvbGRzZWcucGFnZW5vID0gMDsKKwkJfQorCisJCW9sZGxlbiA9 IHJlYWRfb2xkX3NlZ21lbnRfcGFnZSgmb2xkc2VnLCBvbGRidWYsICZlbXB0eSk7CisJCWlmIChl bXB0eSB8fCBvbGRsZW4gIT0gQkxDS1NaKQorCQkJcGdfZmF0YWwoImNhbm5vdCByZWFkIHBhZ2Ug JWxsdSBmcm9tIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBv bGRzZWcucGFnZW5vLCBvbGRzZWcuZm4pOworCisJCS8qIFNhdmUgb2xkZXN0IG11bHRpIG9mZnNl dCAqLworCQlpZiAoIW9sZGVzdF9vZmZzZXRfa25vd24pCisJCXsKKwkJCW9sZGVzdF9vZmZzZXQg PSBvbGRidWZbb2xkX2VudHJ5XTsKKwkJCW9sZGVzdF9vZmZzZXRfa25vd24gPSB0cnVlOworCQl9 CisKKwkJLyogU2tpcCB3cmFwcGVkLWFyb3VuZCBpbnZhbGlkIE11bHRpWGFjdElkcyAqLworCQlp ZiAobXVsdGkgPT0gKHVpbnQ2NCkgMSA8PCAzMikKKwkJeworCQkJQXNzZXJ0KG9sZHNlZy5zZWdu byA9PSAwKTsKKwkJCUFzc2VydChvbGRzZWcucGFnZW5vID09IDEpOworCQkJQXNzZXJ0KG9sZF9l bnRyeSA9PSAwKTsKKwkJCUFzc2VydChuZXdfZW50cnkgPT0gMCk7CisKKwkJCW11bHRpICs9IEZp cnN0TXVsdGlYYWN0SWQ7CisJCQlvbGRfZW50cnkgPSBGaXJzdE11bHRpWGFjdElkOworCQkJbmV3 X2VudHJ5ID0gRmlyc3RNdWx0aVhhY3RJZDsKKwkJfQorCisJCS8qIENvcHkgZW50cmllcyB0byB0 aGUgbmV3IHBhZ2UgKi8KKwkJZm9yICg7IG11bHRpIDwgbmV4dF9tdWx0aSAmJiBvbGRfZW50cnkg PCBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9PTEQ7CisJCQkgbXVsdGkrKywgb2xkX2VudHJ5 KyspCisJCXsKKwkJCU11bHRpWGFjdE9mZnNldCBvZmZzZXQgPSBvbGRidWZbb2xkX2VudHJ5XTsK KworCQkJLyogSGFuZGxlIHBvc3NpYmxlIG9mZnNldCB3cmFwYXJvdW5kICgxIGJlY29tZXMgMl4z MikgKi8KKwkJCWlmIChvZmZzZXQgPCBvbGRlc3Rfb2Zmc2V0KQorCQkJCW9mZnNldCArPSAoKHVp bnQ2NCkgMSA8PCAzMikgLSAxOworCisJCQkvKiBTdWJ0cmFjdCBvbGRlc3Rfb2Zmc2V0LCBzbyBu ZXcgb2Zmc2V0cyB3aWxsIHN0YXJ0IGZyb20gMSAqLworCQkJbmV3YnVmW25ld19lbnRyeSsrXSA9 IG9mZnNldCAtIG9sZGVzdF9vZmZzZXQgKyAxOworCisJCQlpZiAobmV3X2VudHJ5ID49IE1VTFRJ WEFDVF9PRkZTRVRTX1BFUl9QQUdFX05FVykKKwkJCXsKKwkJCQkvKiBIYW5kbGUgcG9zc2libGUg c2VnbWVudCB3cmFwYXJvdW5kICovCisjZGVmaW5lIE5FV19PRkZTRVRfU0VHTk9fTUFYCVwKKwko TWF4TXVsdGlYYWN0SWQgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRV9ORVcgLyBTTFJVX1BB R0VTX1BFUl9TRUdNRU5UKQorCQkJCWlmIChuZXdzZWcuc2Vnbm8gPiBORVdfT0ZGU0VUX1NFR05P X01BWCkKKwkJCQl7CisJCQkJCW5ld3NlZy5zZWdubyA9IDA7CisJCQkJCW5ld3NlZy5wYWdlbm8g PSAwOworCQkJCX0KKworCQkJCS8qIFdyaXRlIG5ldyBwYWdlICovCisJCQkJd3JpdGVfbmV3X3Nl Z21lbnRfcGFnZSgmbmV3c2VnLCBuZXdidWYpOworCQkJCW5ld19lbnRyeSA9IDA7CisJCQl9CisJ CX0KKwl9CisKKwkvKiBXcml0ZSB0aGUgbGFzdCBpbmNvbXBsZXRlIHBhZ2UgKi8KKwlpZiAobmV3 X2VudHJ5ID4gMCB8fCBvbGRlc3RfbXVsdGkgPT0gbmV4dF9tdWx0aSkKKwl7CisJCW1lbXNldCgm bmV3YnVmW25ld19lbnRyeV0sIDAsCisJCQkgICBzaXplb2YobmV3YnVmWzBdKSAqIChNVUxUSVhB Q1RfT0ZGU0VUU19QRVJfUEFHRV9ORVcgLSBuZXdfZW50cnkpKTsKKwkJd3JpdGVfbmV3X3NlZ21l bnRfcGFnZSgmbmV3c2VnLCBuZXdidWYpOworCX0KKworCS8qIFVzZSBuZXh0X29mZnNldCBhcyBv bGRlc3Rfb2Zmc2V0LCBpZiBvbGRlc3RfbXVsdGkgPT0gbmV4dF9tdWx0aSAqLworCWlmICghb2xk ZXN0X29mZnNldF9rbm93bikKKwl7CisJCUFzc2VydChvbGRlc3RfbXVsdGkgPT0gbmV4dF9tdWx0 aSk7CisJCW9sZGVzdF9vZmZzZXQgPSAoTXVsdGlYYWN0T2Zmc2V0KSBvbGRfY2x1c3Rlci5jb250 cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmY7CisJfQorCisJLyogUmVsZWFzZSByZXNvdXJjZXMgKi8K KwljbG9zZV9zZWdtZW50KCZvbGRzZWcpOworCWNsb3NlX3NlZ21lbnQoJm5ld3NlZyk7CisKKwlw ZnJlZShvbGRzZWcuZGlyKTsKKwlwZnJlZShuZXdzZWcuZGlyKTsKKworCXJldHVybiBvbGRlc3Rf b2Zmc2V0OworfQorCisjZGVmaW5lIE1YQUNUX01FTUJFUlNfRkxBR19CWVRFUwkJCTEKKworI2Rl ZmluZSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVAJCQk0CisjZGVmaW5lIE1VTFRJWEFDVF9N RU1CRVJHUk9VUF9TSVpFCQkJXAorCShNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVAgKiAoc2l6 ZW9mKFRyYW5zYWN0aW9uSWQpICsgTVhBQ1RfTUVNQkVSU19GTEFHX0JZVEVTKSkKKyNkZWZpbmUg TVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRQkJXAorCShCTENLU1ogLyBNVUxUSVhBQ1Rf TUVNQkVSR1JPVVBfU0laRSkKKworI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRQkJ CQlcCisJKE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9HUk9VUCAqIE1VTFRJWEFDVF9NRU1CRVJHUk9V UFNfUEVSX1BBR0UpCisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJfRkxBR19CWVRFU19QRVJfR1JP VVAJXAorCShNWEFDVF9NRU1CRVJTX0ZMQUdfQllURVMgKiBNVUxUSVhBQ1RfTUVNQkVSU19QRVJf R1JPVVApCisKK3R5cGVkZWYgc3RydWN0IE11bHRpWGFjdE1lbWJlcnNDdHgKK3sKKwlTbHJ1U2Vn U3RhdGUJc2VnOworCWNoYXIJCQlidWZbQkxDS1NaXTsKKwlpbnQJCQkJZ3JvdXA7CisJaW50CQkJ CW1lbWJlcjsKKwljaGFyCQkgICAqZmxhZzsKKwlUcmFuc2FjdGlvbklkICAqeGlkOworfSBNdWx0 aVhhY3RNZW1iZXJzQ3R4OworCitzdGF0aWMgdm9pZAorTXVsdGlYYWN0TWVtYmVyc0N0eEluaXQo TXVsdGlYYWN0TWVtYmVyc0N0eCAqY3R4KQoreworCWN0eC0+c2VnLmRpciA9IHBzcHJpbnRmKCIl cy9wZ19tdWx0aXhhY3QvbWVtYmVycyIsIG5ld19jbHVzdGVyLnBnZGF0YSk7CisKKwljdHgtPmdy b3VwID0gMDsKKwljdHgtPm1lbWJlciA9IDE7CQkvKiBza2lwIGludmFsaWQgemVybyBvZmZzZXQg Ki8KKworCWN0eC0+ZmxhZyA9IChjaGFyICopIGN0eC0+YnVmICsgY3R4LT5ncm91cCAqIE1VTFRJ WEFDVF9NRU1CRVJHUk9VUF9TSVpFOworCWN0eC0+eGlkID0gKFRyYW5zYWN0aW9uSWQgKikoY3R4 LT5mbGFnICsgTVhBQ1RfTUVNQkVSU19GTEFHX0JZVEVTICogTVVMVElYQUNUX01FTUJFUlNfUEVS X0dST1VQKTsKKworCWN0eC0+ZmxhZyArPSBjdHgtPm1lbWJlcjsKKwljdHgtPnhpZCArPSBjdHgt Pm1lbWJlcjsKK30KKworc3RhdGljIHZvaWQKK011bHRpWGFjdE1lbWJlcnNDdHhBZGQoTXVsdGlY YWN0TWVtYmVyc0N0eCAqY3R4LCBjaGFyIGZsYWcsIFRyYW5zYWN0aW9uSWQgeGlkKQoreworCS8q IENvcHkgbWVtYmVyJ3MgeGlkIGFuZCBmbGFncyB0byB0aGUgbmV3IHBhZ2UgKi8KKwkqY3R4LT5m bGFnKysgPSBmbGFnOworCSpjdHgtPnhpZCsrID0geGlkOworCisJaWYgKCsrY3R4LT5tZW1iZXIg PCBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVApCisJCXJldHVybjsKKworCS8qIFN0YXJ0IG5l eHQgbWVtYmVyIGdyb3VwICovCisJY3R4LT5tZW1iZXIgPSAwOworCisJaWYgKCsrY3R4LT5ncm91 cCA+PSBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBTX1BFUl9QQUdFKQorCXsKKwkJLyogV3JpdGUgY3Vy cmVudCBwYWdlIGFuZCBzdGFydCBuZXcgKi8KKwkJd3JpdGVfbmV3X3NlZ21lbnRfcGFnZSgmY3R4 LT5zZWcsIGN0eC0+YnVmKTsKKworCQljdHgtPmdyb3VwID0gMDsKKwkJbWVtc2V0KGN0eC0+YnVm LCAwLCBCTENLU1opOworCX0KKworCWN0eC0+ZmxhZyA9IChjaGFyICopIGN0eC0+YnVmICsgY3R4 LT5ncm91cCAqIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFOworCWN0eC0+eGlkID0gKFRyYW5z YWN0aW9uSWQgKikoY3R4LT5mbGFnICsgTVhBQ1RfTUVNQkVSU19GTEFHX0JZVEVTICogTVVMVElY QUNUX01FTUJFUlNfUEVSX0dST1VQKTsKK30KKworc3RhdGljIHZvaWQKK011bHRpWGFjdE1lbWJl cnNDdHhGaW5pdChNdWx0aVhhY3RNZW1iZXJzQ3R4ICpjdHgpCit7CisJaWYgKGN0eC0+ZmxhZyA+ IChjaGFyICopIGN0eC0+YnVmKQorCQl3cml0ZV9uZXdfc2VnbWVudF9wYWdlKCZjdHgtPnNlZywg Y3R4LT5idWYpOworCisJY2xvc2Vfc2VnbWVudCgmY3R4LT5zZWcpOworCisJcGZyZWUoY3R4LT5z ZWcuZGlyKTsKK30KKworLyoKKyAqIENvbnZlcnQgcGdfbXVsdGl4YWN0L21lbWJlcnMgc2VnbWVu dHMsIG9mZnNldHMgd2lsbCBzdGFydCBmcm9tIDEuCisgKgorICovCit2b2lkCitjb252ZXJ0X211 bHRpeGFjdF9tZW1iZXJzKE11bHRpWGFjdE9mZnNldCBvbGRlc3Rfb2Zmc2V0KQoreworCU11bHRp WGFjdE9mZnNldAkJCW5leHRfb2Zmc2V0LAorCQkJCQkJCW9mZnNldDsKKwlTbHJ1U2VnU3RhdGUJ CQlvbGRzZWcgPSB7MH07CisJY2hhcgkJCQkJb2xkYnVmW0JMQ0tTWl0gPSB7MH07CisJaW50CQkJ CQkJb2xkaWR4OworCU11bHRpWGFjdE1lbWJlcnNDdHgJCW5ld2N0eCA9IHswfTsKKworCW9sZHNl Zy5kaXIgPSBwc3ByaW50ZigiJXMvcGdfbXVsdGl4YWN0L21lbWJlcnMiLCBvbGRfY2x1c3Rlci5w Z2RhdGEpOworCisJbmV4dF9vZmZzZXQgPSAoTXVsdGlYYWN0T2Zmc2V0KSBvbGRfY2x1c3Rlci5j b250cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmY7CisJaWYgKG5leHRfb2Zmc2V0IDwgb2xkZXN0X29m ZnNldCkKKwkJbmV4dF9vZmZzZXQgKz0gKCh1aW50NjQpIDEgPDwgMzIpIC0gMTsKKworCS8qIElu aXRpYWxpemUgdGhlIG9sZCBzdGFydGluZyBwb3NpdGlvbiAqLworCW9sZHNlZy5wYWdlbm8gPSBv bGRlc3Rfb2Zmc2V0IC8gTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0U7CisJb2xkc2VnLnNlZ25v ID0gb2xkc2VnLnBhZ2VubyAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7CisJb2xkc2VnLnBhZ2Vu byAlPSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOworCisJLyogSW5pdGlhbGl6ZSBuZXcgc3RhcnRp bmcgcG9zaXRpb24gKi8KKwlNdWx0aVhhY3RNZW1iZXJzQ3R4SW5pdCgmbmV3Y3R4KTsKKworCS8q IEl0ZXJhdGUgdGhyb3VnaCB0aGUgb3JpZ2luYWwgZGlyZWN0b3J5ICovCisJb2xkaWR4ID0gb2xk ZXN0X29mZnNldCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFOworCWZvciAob2Zmc2V0ID0g b2xkZXN0X29mZnNldDsgb2Zmc2V0IDwgbmV4dF9vZmZzZXQ7KQorCXsKKwkJYm9vbAllbXB0eTsK KwkJaW50CQlvbGRsZW47CisJCWludAkJbmdyb3VwczsKKwkJaW50CQlvbGRncm91cDsKKwkJaW50 CQlvbGRtZW1iZXI7CisKKwkJb2xkbGVuID0gcmVhZF9vbGRfc2VnbWVudF9wYWdlKCZvbGRzZWcs IG9sZGJ1ZiwgJmVtcHR5KTsKKwkJaWYgKGVtcHR5IHx8IG9sZGxlbiAhPSBCTENLU1opCisJCQlw Z19mYXRhbCgiY2Fubm90IHJlYWQgcGFnZSAlbGx1IGZyb20gZmlsZSBcIiVzXCI6ICVtIiwKKwkJ CQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIG9sZHNlZy5wYWdlbm8sIG9sZHNlZy5mbik7CisKKwkJ LyogSXRlcmF0ZSB0aHJvdWdoIHRoZSBvbGQgbWVtYmVyIGdyb3VwcyAqLworCQluZ3JvdXBzID0g b2xkbGVuIC8gTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkU7CisJCW9sZG1lbWJlciA9IG9sZGlk eCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9HUk9VUDsKKwkJb2xkZ3JvdXAgPSBvbGRpZHggLyBN VUxUSVhBQ1RfTUVNQkVSU19QRVJfR1JPVVA7CisJCXdoaWxlIChvbGRncm91cCA8IG5ncm91cHMg JiYgb2Zmc2V0IDwgbmV4dF9vZmZzZXQpCisJCXsKKwkJCWNoYXIJCSAgICpvbGRmbGFnOworCQkJ VHJhbnNhY3Rpb25JZCAgKm9sZHhpZDsKKwkJCWludAkJCQlpOworCisJCQlvbGRmbGFnID0gKGNo YXIgKikgb2xkYnVmICsgb2xkZ3JvdXAgKiBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0laRTsKKwkJ CW9sZHhpZCA9IChUcmFuc2FjdGlvbklkICopKG9sZGZsYWcgKyBNVUxUSVhBQ1RfTUVNQkVSX0ZM QUdfQllURVNfUEVSX0dST1VQKTsKKworCQkJb2xkeGlkICs9IG9sZG1lbWJlcjsKKwkJCW9sZGZs YWcgKz0gb2xkbWVtYmVyOworCisJCQkvKiBJdGVyYXRlIHRocm91Z2ggdGhlIG9sZCBtZW1iZXJz ICovCisJCQlmb3IgKGkgPSBvbGRtZW1iZXI7CisJCQkJIGkgPCBNVUxUSVhBQ1RfTUVNQkVSU19Q RVJfR1JPVVAgJiYgb2Zmc2V0IDwgbmV4dF9vZmZzZXQ7CisJCQkJIGkrKykKKwkJCXsKKwkJCQlN dWx0aVhhY3RNZW1iZXJzQ3R4QWRkKCZuZXdjdHgsICpvbGRmbGFnKyssICpvbGR4aWQrKyk7CisK KwkJCQlpZiAoKytvZmZzZXQgPT0gKHVpbnQ2NCkgMSA8PCAzMikKKwkJCQl7CisJCQkJCUFzc2Vy dChpID09IE1heE11bHRpWGFjdE9mZnNldE9sZCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9HUk9V UCk7CisJCQkJCWdvdG8gd3JhcGFyb3VuZDsKKwkJCQl9CisJCQl9CisKKwkJCW9sZGdyb3VwKys7 CisJCQlvbGRtZW1iZXIgPSAwOworCQl9CisKKwkJb2xkaWR4ID0gMDsKKworCQljb250aW51ZTsK Kword3JhcGFyb3VuZDoKKyNkZWZpbmUgU0VHTk9fTUFYCU1heE11bHRpWGFjdE9mZnNldE9sZCAv IE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVAorI2Rl ZmluZSBQQUdFTk9fTUFYCU1heE11bHRpWGFjdE9mZnNldE9sZCAvIE1VTFRJWEFDVF9NRU1CRVJT X1BFUl9QQUdFICUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVAorCQlBc3NlcnQoKG9sZHNlZy5zZWdu byA9PSBTRUdOT19NQVggJiYgb2xkc2VnLnBhZ2VubyA9PSBQQUdFTk9fTUFYICsgMSkgfHwKKwkJ CSAgIChvbGRzZWcuc2Vnbm8gPT0gU0VHTk9fTUFYICsgMSAmJiBvbGRzZWcucGFnZW5vID09IDAp KTsKKworCQkvKiBTd2l0Y2ggdG8gc2VnbWVudCAwMDAwICovCisJCWNsb3NlX3NlZ21lbnQoJm9s ZHNlZyk7CisJCW9sZHNlZy5zZWdubyA9IDA7CisJCW9sZHNlZy5wYWdlbm8gPSAwOworCisJCS8q IHNraXAgaW52YWxpZCB6ZXJvIG11bHRpIG9mZnNldCAqLworCQlvbGRpZHggPSAxOworCX0KKwor CU11bHRpWGFjdE1lbWJlcnNDdHhGaW5pdCgmbmV3Y3R4KTsKKworCS8qIFJlbGVhc2UgcmVzb3Vy Y2VzICovCisJY2xvc2Vfc2VnbWVudCgmb2xkc2VnKTsKKworCXBmcmVlKG9sZHNlZy5kaXIpOwor fQotLSAKMi40My4wCgo= --000000000000e797b8062747b7e3 Content-Type: text/plain; charset="US-ASCII"; name="v9-0007-TEST-bump-catver.patch.txt" Content-Disposition: attachment; filename="v9-0007-TEST-bump-catver.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3oqaqn06 RnJvbSAzM2UyMWNmODZiMTgxM2E2N2M2OTlkNzAzYWIxZjc1YmNmMjhhN2IxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMTMgTm92IDIwMjQgMTY6MzQ6MzQgKzAzMDAKU3ViamVjdDogW1BBVENIIHY5IDcvN10g VEVTVDogYnVtcCBjYXR2ZXIKCi0tLQogc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCAg fCAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaCB8IDIgKy0KIDIgZmlsZXMg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBn cmFkZS5oCmluZGV4IDJjODVlYzFlOTQuLjE4ZmFlZGM5NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfdXBncmFkZS9wZ191cGdyYWRlLmgKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3Jh ZGUuaApAQCAtMTE5LDcgKzExOSw3IEBAIGV4dGVybiBjaGFyICpvdXRwdXRfZmlsZXNbXTsKICAq CiAgKiBYWFg6IHNob3VsZCBiZSBjaGFuZ2VkIHRvIHRoZSBhY3R1YWwgQ0FUQUxPR19WRVJTSU9O X05PIG9uIGNvbW1pdC4KICAqLwotI2RlZmluZSBNVUxUSVhBQ1RPRkZTRVRfRk9STUFUQ0hBTkdF X0NBVF9WRVIgMjAyNDA5MDQxCisjZGVmaW5lIE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0Vf Q0FUX1ZFUiAyMDI0MTExMTIKIAogLyoKICAqIGxhcmdlIG9iamVjdCBjaHVuayBzaXplIGFkZGVk IHRvIHBnX2NvbnRyb2xkYXRhLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2 ZXJzaW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAppbmRleCA1ZGQ5MWUx OTBhLi4zZDA5Y2FmNWFlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNp b24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaApAQCAtNTcsNiArNTcs NiBAQAogICovCiAKIC8qCQkJCQkJCXl5eXltbWRkTiAqLwotI2RlZmluZSBDQVRBTE9HX1ZFUlNJ T05fTk8JMjAyNDExMTExCisjZGVmaW5lIENBVEFMT0dfVkVSU0lPTl9OTwkyMDI0MTExMTIKIAog I2VuZGlmCi0tIAoyLjQzLjAKCg== --000000000000e797b8062747b7e3 Content-Type: text/plain; charset="US-ASCII"; name="v9-0006-TEST-add-src-bin-pg_upgrade-t-005_offset.pl.patch.txt" Content-Disposition: attachment; filename="v9-0006-TEST-add-src-bin-pg_upgrade-t-005_offset.pl.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3oqaqmw5 RnJvbSAzNTU4Y2NiNDcxMmQ1MGJjZGE4Nzc0NzRkYjVjOWZkMTI0YjZlOTE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMTkgTm92IDIwMjQgMTc6MDg6MTAgKzAzMDAKU3ViamVjdDogW1BBVENIIHY5IDYvN10g VEVTVDogYWRkIHNyYy9iaW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQucGwKCi0tLQogc3JjL2Jp bi9wZ191cGdyYWRlL3QvMDA1X29mZnNldC5wbCB8IDU2MiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDU2MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA1X29mZnNldC5wbAoKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQucGwgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8w MDVfb2Zmc2V0LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjFjZmQ4 YjM2NGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDVfb2Zmc2V0 LnBsCkBAIC0wLDAgKzEsNTYyIEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRB TCA9PiAnYWxsJzsKKwordXNlIEZpbGU6OkZpbmQgcXcoZmluZCk7CisKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6 Ok1vcmU7CisKKyMgVGhpcyBwYWlyIG9mIGNhbGxzIHdpbGwgY3JlYXRlIHNpZ25pZmljYW50bHkg bW9yZSBtZW1iZXIgc2VnbWVudHMgdGhhbiBvZmZzZXQKKyMgc2VnbWVudHMuCitzdWIgcHJlcAor eworCW15ICRub2RlID0gc2hpZnQ7CisJbXkgJHRibCA9IHNoaWZ0OworCisJJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiQ1JFQVRFIFRBQkxFICR7dGJsfSAoSSBJTlQgUFJJTUFSWSBL RVksIE5fVVBEQVRFRCBJTlQpICIgLgorCQkiICAgICAgIFdJVEggKEFVVE9WQUNVVU1fRU5BQkxF RD1GQUxTRSk7IiAuCisJCSJJTlNFUlQgSU5UTyAke3RibH0gU0VMRUNUIEcsIDAgRlJPTSBHRU5F UkFURV9TRVJJRVMoMSwgNTApIEc7Iik7Cit9CisKK3N1YiBmaWxsCit7CisJbXkgJG5vZGUgPSBz aGlmdDsKKwlteSAkdGJsID0gc2hpZnQ7CisKKwlteSAkbmNsaWVudHMgPSA1MDsKKwlteSAkdXBk YXRlX2V2ZXJ5ID0gOTA7CisJbXkgQGNvbm5lY3Rpb25zID0gKCk7CisKKwlmb3IgKDAuLiRuY2xp ZW50cykKKwl7CisJCW15ICRjb25uID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn KTsKKwkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkJFR0lOIik7CisKKwkJcHVzaChAY29ubmVjdGlvbnMs ICRjb25uKTsKKwl9CisKKwlmb3IgKG15ICRpID0gMDsgJGkgPCAyMDAwMDsgJGkrKykKKwl7CisJ CW15ICRjb25uID0gJGNvbm5lY3Rpb25zWyRpICUgJG5jbGllbnRzXTsKKworCQkkY29ubi0+cXVl cnlfc2FmZSgiQ09NTUlUOyIpOworCQkkY29ubi0+cXVlcnlfc2FmZSgiQkVHSU4iKTsKKworCQlp ZiAoJGkgJSAkdXBkYXRlX2V2ZXJ5ID09IDApCisJCXsKKwkJCSRjb25uLT5xdWVyeV9zYWZlKAor CQkJCSJVUERBVEUgJHt0Ymx9IFNFVCAiIC4KKwkJCQkiTl9VUERBVEVEID0gTl9VUERBVEVEICsg MSAiIC4KKwkJCQkiV0hFUkUgSSA9ICR7aX0gJSA1MCIpOworCQl9CisJCWVsc2UKKwkJeworCQkJ JGNvbm4tPnF1ZXJ5X3NhZmUoCisJCQkJIlNFTEVDVCAqIEZST00gJHt0Ymx9IEZPUiBLRVkgU0hB UkUiKTsKKwkJfQorCX0KKworCWZvciBteSAkY29ubiAoQGNvbm5lY3Rpb25zKQorCXsKKwkJJGNv bm4tPnF1aXQoKTsKKwl9Cit9CisKKyMgVGhpcyBwYWlyIG9mIGNhbGxzIHdpbGwgY3JlYXRlIG1v cmUgb3IgbGVzcyB0aGUgc2FtZSBhbW91bnQgb2YgbWVtYnNlcnMgYW5kCisjIG9mZnNldHMgc2Vn bWVudHMuCitzdWIgcHJlcDIKK3sKKwlteSAkbm9kZSA9IHNoaWZ0OworCW15ICR0YmwgPSBzaGlm dDsKKworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNSRUFURSBUQUJMRSAke3Ri bH0oQkFSIElOVCBQUklNQVJZIEtFWSwgQkFaIElOVCk7ICIgLgorCQkiQ1JFQVRFIE9SIFJFUExB Q0UgUFJPQ0VEVVJFIE1YSURGSUxMRVIoTl9TVEVQUyBJTlQgREVGQVVMVCAxMDAwKSAiIC4KKwkJ IkxBTkdVQUdFIFBMUEdTUUwgIiAuCisJCSJBUyBcJFwkICIgLgorCQkiQkVHSU4gIiAuCisJCSIJ Rk9SIEkgSU4gMS4uTl9TVEVQUyBMT09QICIgLgorCQkiCQlVUERBVEUgJHt0Ymx9IFNFVCBCQVog PSBSQU5ET00oMSwgMTAwMCkgIiAuCisJCSIJCVdIRVJFIEJBUiBJTiAoU0VMRUNUIEJBUiBGUk9N ICR7dGJsfSAiIC4KKwkJIgkJCQkJCVRBQkxFU0FNUExFIEJFUk5PVUxMSSg4MCkpOyAiIC4KKwkJ IgkJQ09NTUlUOyAiIC4KKwkJIglFTkQgTE9PUDsgIiAuCisJCSJFTkQ7IFwkXCQ7ICIgLgorCQki SU5TRVJUIElOVE8gJHt0Ymx9IChCQVIsIEJBWikgIiAuCisJCSJTRUxFQ1QgSUQsIElEIEZST00g R0VORVJBVEVfU0VSSUVTKDEsIDEwMjQpIElEOyIpOworfQorCitzdWIgZmlsbDIKK3sKKwlteSAk bm9kZSA9IHNoaWZ0OworCW15ICR0YmwgPSBzaGlmdDsKKwlteSAkc2NhbGUgPSBzaGlmdCAvLyAx OworCisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQkVHSU47ICIgLgorCQkiU0VM RUNUICogRlJPTSAke3RibH0gRk9SIEtFWSBTSEFSRTsgIiAuCisJCSJQUkVQQVJFIFRSQU5TQUNU SU9OICdBJzsgIiAuCisJCSJDQUxMIE1YSURGSUxMRVIoKDM2NSAqICR7c2NhbGV9KTo6aW50KTsg IiAuCisJCSJDT01NSVQgUFJFUEFSRUQgJ0EnOyIpOworfQorCisKKyMgZ2VuZXJhdGUgYXJvdW5k IDIgb2Zmc2V0IHNlZ21lbnRzIGFuZCA1NSBtZW1iZXIgc2VnbWVudHMKK3N1YiBteGlkX2dlbjEK K3sKKwlteSAkbm9kZSA9IHNoaWZ0OworCW15ICR0YmwgPSBzaGlmdDsKKworCXByZXAoJG5vZGUs ICR0YmwpOworCWZpbGwoJG5vZGUsICR0YmwpOworCisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKENIRUNLUE9JTlQpKTsKK30KKworIyBnZW5lcmF0ZSBhcm91bmQgMTAgb2Zmc2V0IHNl Z21lbnRzIGFuZCAxMiBtZW1iZXIgc2VnbWVudHMKK3N1YiBteGlkX2dlbjIKK3sKKwlteSAkbm9k ZSA9IHNoaWZ0OworCW15ICR0YmwgPSBzaGlmdDsKKwlteSAkc2NhbGUgPSBzaGlmdCAvLyAxOwor CisJcHJlcDIoJG5vZGUsICR0YmwpOworCWZpbGwyKCRub2RlLCAkdGJsLCAkc2NhbGUpOworCisJ JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENIRUNLUE9JTlQpKTsKK30KKworIyBGZXRj aCBsYXRlc3QgbXVsdGl4YWN0IGNoZWNrcG9pbnQgdmFsdWVzLgorc3ViIG11bHRpX2JvdW5kcwor eworCW15ICgkbm9kZSkgPSBAXzsKKwlteSAkcGF0aCA9ICRub2RlLT5jb25maWdfZGF0YSgnLS1i aW5kaXInKTsKKwlteSAoJHN0ZG91dCwgJHN0ZGVycikgPSBydW5fY29tbWFuZChbCisJCQkJCQkJ CQkkcGF0aCAuICcvcGdfY29udHJvbGRhdGEnLAorCQkJCQkJCQkJJG5vZGUtPmRhdGFfZGlyCisJ CQkJCQkJCV0pOworCW15IEBjb250cm9sX2RhdGEgPSBzcGxpdCgiXG4iLCAkc3Rkb3V0KTsKKwlt eSAkbmV4dCA9IHVuZGVmOworCW15ICRvbGRlc3QgPSB1bmRlZjsKKwlteSAkbmV4dF9vZmZzZXQg PSB1bmRlZjsKKworCWZvcmVhY2ggKEBjb250cm9sX2RhdGEpCisJeworCQlpZiAoJF8gPX4gL15M YXRlc3QgY2hlY2twb2ludCdzIE5leHRNdWx0aVhhY3RJZDpccyooLiopJC9tZykKKwkJeworCQkJ JG5leHQgPSAkMTsKKwkJCXByaW50ICI+Pj4gQCBub2RlICIuICRub2RlLT5uYW1lIC4gIiwgIiAu ICRfIC4gIlxuIjsKKwkJfQorCisJCWlmICgkXyA9fiAvXkxhdGVzdCBjaGVja3BvaW50J3Mgb2xk ZXN0TXVsdGlYaWQ6XHMqKC4qKSQvbWcpCisJCXsKKwkJCSRvbGRlc3QgPSAkMTsKKwkJCXByaW50 ICI+Pj4gQCBub2RlICIuICRub2RlLT5uYW1lIC4gIiwgIiAuICRfIC4gIlxuIjsKKwkJfQorCisJ CWlmICgkXyA9fiAvXkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRpT2Zmc2V0OlxzKiguKikk L21nKQorCQl7CisJCQkkbmV4dF9vZmZzZXQgPSAkMTsKKwkJCXByaW50ICI+Pj4gQCBub2RlICIu ICRub2RlLT5uYW1lIC4gIiwgIiAuICRfIC4gIlxuIjsKKwkJfQorCisJCWlmIChkZWZpbmVkKCRv bGRlc3QpICYmIGRlZmluZWQoJG5leHQpICYmIGRlZmluZWQoJG5leHRfb2Zmc2V0KSkKKwkJewor CQkJbGFzdDsKKwkJfQorCX0KKworCWRpZSAiTGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlY YWN0SWQgbm90IGZvdW5kIGluIGNvbnRyb2wgZmlsZSFcbiIKKwl1bmxlc3MgZGVmaW5lZCgkbmV4 dCk7CisKKwlkaWUgIkxhdGVzdCBjaGVja3BvaW50J3Mgb2xkZXN0TXVsdGlYaWQgbm90IGZvdW5k IGluIGNvbnRyb2wgZmlsZSFcbiIKKwl1bmxlc3MgZGVmaW5lZCgkb2xkZXN0KTsKKworCWRpZSAi TGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlPZmZzZXQgbm90IGZvdW5kIGluIGNvbnRyb2wg ZmlsZSFcbiIKKwl1bmxlc3MgZGVmaW5lZCgkbmV4dF9vZmZzZXQpOworCisJcmV0dXJuICgkb2xk ZXN0LCAkbmV4dCwgJG5leHRfb2Zmc2V0KTsKK30KKworIyBDcmVhdGUgbm9kZSBmcm9tIGV4aXN0 aW5nIGJpbnMuCitzdWIgY3JlYXRlX25ld19ub2RlCit7CisJbXkgKCRuYW1lLCAlcGFyYW1zKSA9 IEBfOworCisJY3JlYXRlX25vZGUoMCwgQF8pOworfQorCisjIENyZWF0ZSBub2RlIGZyb20gRU5W IG9sZGluc3RhbGwKK3N1YiBjcmVhdGVfb2xkX25vZGUKK3sKKwlteSAoJG5hbWUsICVwYXJhbXMp ID0gQF87CisKKwlpZiAoIWRlZmluZWQoJEVOVntvbGRpbnN0YWxsfSkpCisJeworCQlkaWUgIm9s ZGluc3RhbGwgaXMgbm90IGRlZmluZWQiOworCX0KKworCWNyZWF0ZV9ub2RlKDEsIEBfKTsKK30K Kworc3ViIGNyZWF0ZV9ub2RlCit7CisJbXkgKCRpbnN0YWxsX3BhdGhfZnJvbV9lbnYsICRuYW1l LCAlcGFyYW1zKSA9IEBfOworCW15ICRzY2FsZSA9IGRlZmluZWQgJHBhcmFtc3tzY2FsZX0gPyAk cGFyYW1ze3NjYWxlfSA6IDE7CisJbXkgJG11bHRpID0gZGVmaW5lZCAkcGFyYW1ze211bHRpfSA/ ICRwYXJhbXN7bXVsdGl9IDogdW5kZWY7CisJbXkgJG9mZnNldCA9IGRlZmluZWQgJHBhcmFtc3tv ZmZzZXR9ID8gJHBhcmFtc3tvZmZzZXR9IDogdW5kZWY7CisKKwlteSAkbm9kZSA9CisJCSRpbnN0 YWxsX3BhdGhfZnJvbV9lbnYgPworCQkJUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCRu YW1lLAorCQkJCQlpbnN0YWxsX3BhdGggPT4gJEVOVntvbGRpbnN0YWxsfSkgOgorCQkJUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCRuYW1lKTsKKworCSRub2RlLT5pbml0KGZvcmNlX2lu aXRkYiA9PiAxLCAKKwkJZXh0cmEgPT4gWworCQkJJG11bHRpID8gKCctbScsICRtdWx0aSkgOiAo KSwKKwkJCSRvZmZzZXQgPyAoJy1vJywgJG9mZnNldCkgOiAoKSwKKwkJXSk7CisKKwkjIEZpeHVw IE1PWCBwYXRjaCBxdWlyaworCWlmICgkbXVsdGkpCisJeworCQl1bmxpbmsgJG5vZGUtPmRhdGFf ZGlyIC4gJy9wZ19tdWx0aXhhY3Qvb2Zmc2V0cy8wMDAwJzsKKwl9CisJaWYgKCRvZmZzZXQpCisJ eworCQl1bmxpbmsgJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19tdWx0aXhhY3QvbWVtYmVycy8wMDAw JzsKKwl9CisKKwkkbm9kZS0+YXBwZW5kX2NvbmYoJ2ZzeW5jJywgJ29mZicpOworCSRub2RlLT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ21heF9wcmVwYXJlZF90cmFuc2FjdGlvbnMg PSAyJyk7CisKKwkkbm9kZS0+c3RhcnQoKTsKKwlteGlkX2dlbjIoJG5vZGUsICdGT08nLCAkc2Nh bGUpOworCW14aWRfZ2VuMSgkbm9kZSwgJ0JBUicsICRzY2FsZSk7CisJJG5vZGUtPnJlc3RhcnQo KTsKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUICogRlJPTSBGT08pKTsJ CSMganVzdCBpbiBjYXNlLi4uCisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNFTEVD VCAqIEZST00gQkFSKSk7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENIRUNLUE9J TlQpKTsKKwkkbm9kZS0+c3RvcCgpOworCisJcmV0dXJuICRub2RlOworfQorCitzdWIgZG9fdXBn cmFkZQoreworCW15ICgkb2xkbm9kZSwgJG5ld25vZGUpID0gQF87CisKKwljb21tYW5kX29rKAor CQlbCisJCQkncGdfdXBncmFkZScsICctLW5vLXN5bmMnLAorCQkJJy1kJywgJG9sZG5vZGUtPmRh dGFfZGlyLAorCQkJJy1EJywgJG5ld25vZGUtPmRhdGFfZGlyLAorCQkJJy1iJywgJG9sZG5vZGUt PmNvbmZpZ19kYXRhKCctLWJpbmRpcicpLAorCQkJJy1CJywgJG5ld25vZGUtPmNvbmZpZ19kYXRh KCctLWJpbmRpcicpLAorCQkJJy1zJywgJG5ld25vZGUtPmhvc3QsCisJCQknLXAnLCAkb2xkbm9k ZS0+cG9ydCwKKwkJCSctUCcsICRuZXdub2RlLT5wb3J0LAorCQkJJy0tY2hlY2snCisJCV0sCisJ CSdydW4gb2YgcGdfdXBncmFkZScpOworCisJY29tbWFuZF9vaygKKwkJWworCQkJJ3BnX3VwZ3Jh ZGUnLCAnLS1uby1zeW5jJywKKwkJCSctZCcsICRvbGRub2RlLT5kYXRhX2RpciwKKwkJCSctRCcs ICRuZXdub2RlLT5kYXRhX2RpciwKKwkJCSctYicsICRvbGRub2RlLT5jb25maWdfZGF0YSgnLS1i aW5kaXInKSwKKwkJCSctQicsICRuZXdub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXInKSwKKwkJ CSctcycsICRuZXdub2RlLT5ob3N0LAorCQkJJy1wJywgJG9sZG5vZGUtPnBvcnQsCisJCQknLVAn LCAkbmV3bm9kZS0+cG9ydCwKKwkJCSctLWNvcHknCisJCV0sCisJCSdydW4gb2YgcGdfdXBncmFk ZScpOworCisJJG9sZG5vZGUtPnN0YXJ0KCk7CisJJG5ld25vZGUtPnN0YXJ0KCk7CisKKwlteSAk b2xkZm9vID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCAqIEZST00g Rk9PKSk7CisJbXkgJG5ld2ZvbyA9ICRuZXdub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShT RUxFQ1QgKiBGUk9NIEZPTykpOworCWlzKCRvbGRmb28sICRuZXdmb28sICJzZWxlY3QgZm9vIGVx Iik7CisKKwlteSAkb2xkYmFyID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNF TEVDVCAqIEZST00gQkFSKSk7CisJbXkgJG5ld2JhciA9ICRuZXdub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcShTRUxFQ1QgKiBGUk9NIEJBUikpOworCWlzKCRvbGRiYXIsICRuZXdiYXIsICJz ZWxlY3QgYmFyIGVxIik7CisKKwkkb2xkbm9kZS0+c3RvcCgpOworCSRuZXdub2RlLT5zdG9wKCk7 CisKKwltdWx0aV9ib3VuZHMoJG9sZG5vZGUpOworCW11bHRpX2JvdW5kcygkbmV3bm9kZSk7Cit9 CisKK215IEBURVNUUyA9ICgKKwkjIHRlc3RzIHdpdGhvdXQgRU5WIG9sZGluc3RhbGwKKwkwLCAx LCAyLCAzLCA0LCA1LCA2LAorCSMgdGVzdHMgd2l0aCAicmVhbCIgcGdfdXBncmFkZQorCTEwMCwg MTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwKKwkjIHNlbGYgdXBncmFkZQorCTEwMDAsCisp OworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEJhc2ljIHNhbml0eSB0ZXN0cyBvbiBhIE5F VyBiaW4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBzdGFydHMgZnJvbSB0aGUgemVybwor U0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDA7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVT VF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJ bXkgJG5vZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9tbycsCisJCQkJCQlzY2FsZSA9PiAx KTsKKwltdWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIp OworfQorCisjIG11bHRpIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZQorU0tJUDoKK3sKKwlteSAkVEVT VF9OTyA9IDE7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNz ICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJG5vZGUgPSBjcmVhdGVf bmV3X25vZGUoJ3NpbXBsZV9NbycsCisJCQkJCQlzY2FsZSA9PiAxLjE1LAorCQkJCQkJbXVsdGkg PT4gJzB4MTIzNDAwJyk7CisJbXVsdGlfYm91bmRzKCRub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVT VF9OTyBQQVNTRUQiKTsKK30KKworIyBvZmZzZXRzIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZQorU0tJ UDoKK3sKKwlteSAkVEVTVF9OTyA9IDI7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9O TyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkg JG5vZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9tTycsCisJCQkJCQlzY2FsZSA9PiAxLjE1 LAorCQkJCQkJb2Zmc2V0ID0+ICcweDQzMjEwMCcpOworCW11bHRpX2JvdW5kcygkbm9kZSk7CisJ b2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisKKyMgbXVsdGkgYW5kIG9mZnNldHMg c3RhcnRzIGZyb20gdGhlIHZhbHVlCitTS0lQOgoreworCW15ICRURVNUX05PID0gMzsKKwlza2lw ICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAvXiRURVNU X05PJC8sIEBURVNUUyApICk7CisKKwlteSAkbm9kZSA9IGNyZWF0ZV9uZXdfbm9kZSgnc2ltcGxl X01PJywKKwkJCQkJCXNjYWxlID0+IDEuMTUsCisJCQkJCQltdWx0aSA9PiAnMHhERUFEMDAnLCBv ZmZzZXQgPT4gJzB4QkVFRjAwJyk7CisJbXVsdGlfYm91bmRzKCRub2RlKTsKKwlvaygxLCAiVEVT VCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBtdWx0aSBzdGFydHMgZnJvbSB0aGUgdmFsdWUs IG11bHRpIHdyYXAKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSA0OworCXNraXAgImRvIG5vdCB0 ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywgQFRF U1RTICkgKTsKKworCW15ICRub2RlID0gY3JlYXRlX25ld19ub2RlKCdzaW1wbGVfTW9fd3JhcCcs CisJCQkJCQlzY2FsZSA9PiAxLjE1LAorCQkJCQkJbXVsdGkgPT4gJzB4RkZGRjcwMDAnKTsKKwlt dWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIpOworfQor CisjIG9mZnNldHMgc3RhcnRzIGZyb20gdGhlIHZhbHVlLCBvZmZzZXRzIHdyYXAKK1NLSVA6Cit7 CisJbXkgJFRFU1RfTk8gPSA1OworCXNraXAgImRvIG5vdCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAx CisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkgKTsKKworCW15ICRub2Rl ID0gY3JlYXRlX25ld19ub2RlKCdzaW1wbGVfbU9fd3JhcCcsCisJCQkJCQlzY2FsZSA9PiAxLjE1 LAorCQkJCQkJb2Zmc2V0ID0+ICcweEZGRkZGQzAwJyk7CisJbXVsdGlfYm91bmRzKCRub2RlKTsK KwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBtdWx0aSBzdGFydHMgZnJv bSB0aGUgdmFsdWUsIG9mZnNldHMgc3RhcnRzIGZyb20gdGhlIHZhbHVlLAorIyBtdWx0aSB3cmFw LCBvZmZzZXRzIHdyYXAKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSA2OworCXNraXAgImRvIG5v dCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywg QFRFU1RTICkgKTsKKworCW15ICRub2RlID0gY3JlYXRlX25ld19ub2RlKCdzaW1wbGVfTU9fd3Jh cCcsCisJCQkJCQlzY2FsZSA9PiAxLjE1LAorCQkJCQkJbXVsdGkgPT4gJzB4RkZGRjcwMDAnLCBv ZmZzZXQgPT4gJzB4RkZGRkZDMDAnKTsKKwltdWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJU RVNUICRURVNUX05PIFBBU1NFRCIpOworfQorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIHBn X3VwZ2FyZGUgdGVzdHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBzdGFydHMgZnJvbSB0 aGUgemVybworU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDEwMDsKKwlza2lwICJkbyBub3QgdGVz dCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAvXiRURVNUX05PJC8sIEBURVNU UyApICk7CisKKwlteSAkZGJuYW1lID0gJ21vJzsKKwlteSAkb2xkbm9kZSA9IGNyZWF0ZV9vbGRf bm9kZSgib2xkXyRkYm5hbWUiLAorCQkJCQkJc2NhbGUgPT4gMSk7CisJbXkgJG5ld25vZGUgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm5ld18kZGJuYW1lIik7CisJJG5ld25vZGUt PmluaXQoKTsKKworCWRvX3VwZ3JhZGUoJG9sZG5vZGUsICRuZXdub2RlKTsKKwlvaygxLCAiVEVT VCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBtdWx0aSBzdGFydHMgZnJvbSB0aGUgdmFsdWUK K1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSAxMDE7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAk VEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOwor CisJbXkgJGRibmFtZSA9ICdNbyc7CisJbXkgJG9sZG5vZGUgPSBjcmVhdGVfb2xkX25vZGUoIm9s ZF8kZGJuYW1lIiwKKwkJCQkJCXNjYWxlID0+IDEuMiwKKwkJCQkJCW11bHRpID0+ICcweDEyMzQw MCcpOworCW15ICRuZXdub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCJuZXdf JGRibmFtZSIpOworCSRuZXdub2RlLT5pbml0KCk7CisKKwlkb191cGdyYWRlKCRvbGRub2RlLCAk bmV3bm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisKKyMgb2Zmc2V0 cyBzdGFydHMgZnJvbSB0aGUgdmFsdWUKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSAxMDI7CisJ c2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14k VEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJGRibmFtZSA9ICdtTyc7CisJbXkgJG9sZG5v ZGUgPSBjcmVhdGVfb2xkX25vZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJCXNjYWxlID0+IDEuMiwK KwkJCQkJCW9mZnNldCA9PiAnMHg0MzIxMDAnKTsKKwlteSAkbmV3bm9kZSA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygibmV3XyRkYm5hbWUiKTsKKwkkbmV3bm9kZS0+aW5pdCgpOwor CisJZG9fdXBncmFkZSgkb2xkbm9kZSwgJG5ld25vZGUpOworCW9rKDEsICJURVNUICRURVNUX05P IFBBU1NFRCIpOworfQorCisjIG11bHRpIGFuZCBvZmZzZXRzIHN0YXJ0cyBmcm9tIHRoZSB2YWx1 ZQorU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDEwMzsKKwlza2lwICJkbyBub3QgdGVzdCBjYXNl ICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAvXiRURVNUX05PJC8sIEBURVNUUyApICk7 CisKKwlteSAkZGJuYW1lID0gJ01PJzsKKwlteSAkb2xkbm9kZSA9IGNyZWF0ZV9vbGRfbm9kZSgi b2xkXyRkYm5hbWUiLAorCQkJCQkJc2NhbGUgPT4gMS4yLAorCQkJCQkJbXVsdGkgPT4gJzB4REVB RDAwJywgb2Zmc2V0ID0+ICcweEJFRUYwMCcpOworCW15ICRuZXdub2RlID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCJuZXdfJGRibmFtZSIpOworCSRuZXdub2RlLT5pbml0KCk7CisK Kwlkb191cGdyYWRlKCRvbGRub2RlLCAkbmV3bm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8g UEFTU0VEIik7Cit9CisKKyMgbXVsdGkgc3RhcnRzIGZyb20gdGhlIHZhbHVlLCBtdWx0aSB3cmFw CitTS0lQOgoreworCW15ICRURVNUX05PID0gMTA0OworCXNraXAgImRvIG5vdCB0ZXN0IGNhc2Ug JFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkgKTsK KworCW15ICRkYm5hbWUgPSAnTW9fd3JhcCc7CisJbXkgJG9sZG5vZGUgPSBjcmVhdGVfb2xkX25v ZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJCXNjYWxlID0+IDEuMiwKKwkJCQkJCW11bHRpID0+ICcw eEZGRkY3MDAwJyk7CisJbXkgJG5ld25vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoIm5ld18kZGJuYW1lIik7CisJJG5ld25vZGUtPmluaXQoKTsKKworCWRvX3VwZ3JhZGUoJG9s ZG5vZGUsICRuZXdub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKwor IyBvZmZzZXRzIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZSwgb2Zmc2V0cyB3cmFwCitTS0lQOgorewor CW15ICRURVNUX05PID0gMTA1OworCXNraXAgImRvIG5vdCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAx CisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkgKTsKKworCW15ICRkYm5h bWUgPSAnbU9fd3JhcCc7CisJbXkgJG9sZG5vZGUgPSBjcmVhdGVfb2xkX25vZGUoIm9sZF8kZGJu YW1lIiwKKwkJCQkJCXNjYWxlID0+IDEuMiwKKwkJCQkJCW9mZnNldCA9PiAnMHhGRkZGRkMwMCcp OworCW15ICRuZXdub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCJuZXdfJGRi bmFtZSIpOworCSRuZXdub2RlLT5pbml0KCk7CisKKwlkb191cGdyYWRlKCRvbGRub2RlLCAkbmV3 bm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisKKyMgbXVsdGkgc3Rh cnRzIGZyb20gdGhlIHZhbHVlLCBvZmZzZXRzIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZSwKKyMgbXVs dGkgd3JhcCwgb2Zmc2V0cyB3cmFwCitTS0lQOgoreworCW15ICRURVNUX05PID0gMTA2OworCXNr aXAgImRvIG5vdCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRF U1RfTk8kLywgQFRFU1RTICkgKTsKKworCW15ICRkYm5hbWUgPSAnTU9fd3JhcCc7CisJbXkgJG9s ZG5vZGUgPSBjcmVhdGVfb2xkX25vZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJCXNjYWxlID0+IDEu MiwKKwkJCQkJCW11bHRpID0+ICcweEZGRkY3MDAwJywgb2Zmc2V0ID0+ICcweEZGRkZGQzAwJyk7 CisJbXkgJG5ld25vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm5ld18kZGJu YW1lIik7CisJJG5ld25vZGUtPmluaXQoKTsKKworCWRvX3VwZ3JhZGUoJG9sZG5vZGUsICRuZXdu b2RlKTsKKwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorIyBTZWxmIHVwZ3JhZGUKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBz dGFydHMgZnJvbSB0aGUgemVybworU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDEwMDA7CisJc2tp cCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVT VF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJGRibmFtZSA9ICdzZWxmX3VwZ3JhZGUnOworCW15 ICRvbGRub2RlID0gY3JlYXRlX25ld19ub2RlKCJvbGRfJGRibmFtZSIsCisJCQkJCQlzY2FsZSA9 PiAxKTsKKwlteSAkbmV3bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygibmV3 XyRkYm5hbWUiKTsKKwkkbmV3bm9kZS0+aW5pdCgpOworCisJZG9fdXBncmFkZSgkb2xkbm9kZSwg JG5ld25vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIpOworfQorCitkb25lX3Rl c3RpbmcoKTsKLS0gCjIuNDMuMAoK --000000000000e797b8062747b7e3--