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.96) (envelope-from ) id 1wcA0I-0038P6-11 for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jun 2026 22:54:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wcA0G-00E61L-1F for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jun 2026 22:54:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wcA0F-00E61D-2w for pgsql-hackers@lists.postgresql.org; Tue, 23 Jun 2026 22:54:00 +0000 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wcA0D-000000020EH-1Phu for pgsql-hackers@postgresql.org; Tue, 23 Jun 2026 22:53:59 +0000 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-4626fdc829aso311816f8f.3 for ; Tue, 23 Jun 2026 15:53:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782255234; x=1782860034; darn=postgresql.org; h=mime-version:subject:references:in-reply-to:message-id:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to; bh=t6kdp8MihsrKdBRXlQlSq7wH7K30sAO9y8H9OW4gcMw=; b=LO9bLPCnq3gGZ9W2q6bH9Vayy4RG81mvhWE0QMIaDmQpfDHJWN+GSVyP6EWrxgIpoK 7IEd0tV8DIcdbHE6VKIIXsaExYKetGLH34XFIrdtGTuY/3irXGSS+xATVjhVw8YquMdx QZKBq9ZIN/7vsqiBCK1zA3ECFRu0FWZtHfVGJy4zcEJ1b/bivcc7TfQpS6GVZhUN2KBb rIlXvKu5pl0D/mBNFLZXt5O81NyAwqqINQDI4VZw7IDYePNTeiwj6iXD5Gdi/REtddCs 5BimsXKcU843xiRY4IFjfmA2sAnEuz1At4cuSHZ7TW1Uy2R6XmWQSw02KU5O24UYE3Nf ksow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782255234; x=1782860034; h=mime-version:subject:references:in-reply-to:message-id:cc:to:from :date:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=t6kdp8MihsrKdBRXlQlSq7wH7K30sAO9y8H9OW4gcMw=; b=gfHxvO/he9/fLD6iYLd5Okm7o8klarcw6MHPkRfD/EOzNZbB8KYtkL6fCDDP1TTtKo IA5xQrzmpiTmeHQyJLj0oxCF1IgW8NZaQNXaLZOovBfmuEkQDmoRelyoEL5cPXYdsDFL es8RYWfvnvdhYcmVIyt/zfg+43MkTeaZx+AB1jZKc9A7C1w/9KoA59ME+8vFuBDf3vU9 cQ6wSvPHE3vEy4Mbn4EVbgrGh1KVvxe5noepw4jOJL0RxgIaSXIg2laZtZTFEVBUtzNA aeadWfJoiqdelvEuW3Z+Z6gp8NB4FuizXp+ZfTF9KMmIKsm/sdcf2LCfLlzPH6hpRkXA viTw== X-Forwarded-Encrypted: i=1; AHgh+RrS+mwIrZZIto/YETTk6uGtktBKcvzPU1qk4GSk+EfCTuvWqssW+MHKZsIjyhQrAWndPMmVOsHQQHap0ESF@postgresql.org X-Gm-Message-State: AOJu0YyP+RebKcDRk1EUAzyIz4qazdLea4uBtYm14Fc6maW+CYZ3HHnC kxFGoKEUgC6dMBE7zlEqccyYhP7ZZ4WhMpoNtXAk3Z3hLlITlLb2FvHA X-Gm-Gg: AfdE7ckLbBZtHwZAD1GQDvRlyJeBqp24DjvUCw1YaixUNF8KyrX2azj7mF2rbUjTx/c dRGU+98tkGqPDBBa4E6+KM639b4Q4PK2A++0/BJkS8jks0AXCwVEr35vpEGgOc737d1crpD73dI +QZEckAiyS/ZXwYr8yTYxpm5+lPXx+wf7tSpyNV8Wa4r9X12rf7bKFZT3tvKn1y0LEMKkUkKN0L or0gcabvz49wFHtoCXRbDorkxPBV9ArIPV5pdNh0q9+V0U7Fvo/N4Q0msMMz2t59o0tKNEw9K7F pgg9eYyhG/MUJfk51N+qtSIpbal/8tALVq6An9wk/agNYd0Sxa31zuGXswEe9Ng/qssGkCwX686 7rs0Yv9e6C395oAO3kc9EwKh8uKeq0+F6C/uiHoPhG56pjR9di+CJc4HzmLpJjCCVvNlJCc18Gk ybd+34wGk8X39lvLo1BGXx6hZncfHu3Iq3SFloHbad/wlB3Vfotg== X-Received: by 2002:a05:6000:27c3:b0:46a:45d:2bed with SMTP id ffacd0b85a97d-46ad8a3a181mr5279336f8f.8.1782255234296; Tue, 23 Jun 2026 15:53:54 -0700 (PDT) Received: from [192.168.1.207] ([109.227.133.120]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-46c1ee01c3bsm1276579f8f.10.2026.06.23.15.53.53 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 Jun 2026 15:53:53 -0700 (PDT) Date: Wed, 24 Jun 2026 00:53:47 +0200 From: Alexander Nestorov To: Maxime Schoemans Cc: Andrey Borodin , pgsql-hackers mailing list Message-ID: In-Reply-To: References: <36b4f67d-5975-452c-a6b8-b6407f0924ee@Spark> <4B4B0998-7B43-4893-9603-0AF212036690@yandex-team.ru> <18e88767-6c31-402a-887e-37c38b366a6a@Spark> <80ef3b41-1a71-47a4-a320-29e118d7092c@Spark> Subject: Re: [PATCH] btree_gist: add cross-type integer operator support for GiST X-Readdle-Message-ID: ac05a661-53a5-478a-9907-f56a960dab51@Spark MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="6a3b0e80_2acbe2e_5be" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --6a3b0e80_2acbe2e_5be Content-Type: multipart/alternative; boundary="6a3b0e80_62798630_5be" --6a3b0e80_62798630_5be Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hey Maxime=21 Thank you for reviewing my changes so far and for proposing the changes i= n your patch=21 And thank you for the kind words=21 1) I think we still need to check =60InvalidOid=60 because execIndexing.c:=7E= 800 initializes scan keys ('ScanKeyEntryInitialize') with =60InvalidOid=60 as= the subtype. Running the 'not=5Fequal', 'partitions' and 'without=5Foverlaps'= tests confirms that 'InvalidOid' must be handled. I can add the check again in = the switch. (attaching patch) 2) and 3) I completely agree, your patch makes it much cleaner. I applied your patch (with the 'InvalidOid' fix) on top of mine and ran a= ll the tests and benchmarks that I prepared previously. These are the results be= fore the entire patchset and after: duration=3D15s/run, reps=3D10, 1 client, interleaved, lower is better ------------------------------------------------------------------------ before consistent min/med/mean =3D 51.246=C2=A0 =C2=A051.361=C2=A0 =C2=A0= 51.378 ms after consistent min/med/mean=C2=A0=C2=A0 =C2=A0=3D 51.849=C2=A0 =C2=A051= .958=C2=A0 =C2=A051.967 ms ------------------------------------------------------------------------ before distance min/med/mean =3D 76.441=C2=A0=C2=A0 =C2=A076.561=C2=A0 =C2= =A076.567 ms after distance min/med/mean=C2=A0=C2=A0 =C2=A0=3D 76.568=C2=A0 =C2=A076.6= 78=C2=A0 =C2=A076.681 ms ------------------------------------------------------------------------ I added one more commit that adds a small description of this fix in the = docs. The current patchset has been rebased on top of ef01ca6dbca54e9bf3abea01c= 357b346847ebcf3 Best regards=21 --6a3b0e80_62798630_5be Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
Hey Maxime=21

Thank you for reviewing my changes so far and for proposing the changes i= n your
patch=21 And thank you for the kind words=21

1)

I think we still need to check =60InvalidOid=60 because execIndexing.c:=7E= 800
initializes scan keys ('ScanKeyEntryInitialize') with =60InvalidOid=60 as= the
subtype. Running the 'not=5Fequal', 'partitions' and 'without=5Foverlaps'= tests
confirms that 'InvalidOid' must be handled. I can add the check again in = the
switch. (attaching patch)

2) and 3)

I completely agree, your patch makes it much cleaner.
I applied your patch (with the 'InvalidOid' fix) on top of mine and ran a= ll the
tests and benchmarks that I prepared previously. These are the results be= fore
the entire patchset and after:


duration=3D15s/run, reps=3D10, 1 client, interleaved, lower is better
------------------------------------------------------------------------<= br /> before consistent min/med/mean =3D 51.246&=23160; &=23160;51.361&=23160; = &=23160;51.378 ms
after consistent min/med/mean&=23160;&=23160; &=23160;=3D 51.849&=23160; = &=23160;51.958&=23160; &=23160;51.967 ms
------------------------------------------------------------------------<= br /> before distance min/med/mean =3D 76.441&=23160;&=23160; &=23160;76.561&=23= 160; &=23160;76.567 ms
after distance min/med/mean&=23160;&=23160; &=23160;=3D 76.568&=23160; &=23= 160;76.678&=23160; &=23160;76.681 ms
------------------------------------------------------------------------<= br />
I added one more commit that adds a small description of this fix in the = docs.

The current patchset has been rebased on top of ef01ca6dbca54e9bf3abea01c= 357b346847ebcf3

Best regards=21
--6a3b0e80_62798630_5be-- --6a3b0e80_2acbe2e_5be Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v4-0001-Implement-cross-type-operators-for-GiST-indexes.patch" RnJvbSAyYzcyNThmZGVmNmM5MTU1MTk5NmNiN2UzZjQxODRjNWI0ZGFhMmY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTmVzdG9yb3YgPGFsZXhhbmRlcm5zdEBnbWFp bC5jb20+CkRhdGU6IFRodSwgNCBKdW4gMjAyNiAwMDowNjo1NCArMDIwMApTdWJqZWN0OiBbUEFU Q0hdIEltcGxlbWVudCBjcm9zcy10eXBlIG9wZXJhdG9ycyBmb3IgR2lTVCBpbmRleGVzCgotLS0K IGNvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBj b250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS45LS0xLjEwLnNxbCB8IDE0MyArKysrKysr KysrKysrKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuY29udHJvbCAgICAgICAg fCAgIDIgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQyLmMgICAgICAgICAgICAgIHwg IDcwICsrKysrKy0tCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50NC5jICAgICAgICAgICAg ICB8ICA3MCArKysrKystLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYyAgICAgICAg ICAgICAgfCAgNzAgKysrKysrLS0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc19udW0u YyAgICAgICAgIHwgMTYwICsrKysrKysrKysrKysrKysrKysKIGNvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV91dGlsc19udW0uaCAgICAgICAgIHwgIDE2ICsrCiBjb250cmliL2J0cmVlX2dpc3QvbWVz b24uYnVpbGQgICAgICAgICAgICAgICB8ICAgMiArCiA5IGZpbGVzIGNoYW5nZWQsIDUwMSBpbnNl cnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS45LS0xLjEwLnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9NYWtlZmlsZSBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZQppbmRleCBm YmJiY2E5NTU5OC4uMWQwNjY4ZDk3YWIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9N YWtlZmlsZQorKysgYi9jb250cmliL2J0cmVlX2dpc3QvTWFrZWZpbGUKQEAgLTMyLDE5ICszMiwx OSBAQCBPQkpTID0gIFwKIEVYVEVOU0lPTiA9IGJ0cmVlX2dpc3QKIERBVEEgPSBidHJlZV9naXN0 LS0xLjAtLTEuMS5zcWwgXAogICAgICAgIGJ0cmVlX2dpc3QtLTEuMS0tMS4yLnNxbCBidHJlZV9n aXN0LS0xLjItLTEuMy5zcWwgXAogICAgICAgIGJ0cmVlX2dpc3QtLTEuMy0tMS40LnNxbCBidHJl ZV9naXN0LS0xLjQtLTEuNS5zcWwgXAogICAgICAgIGJ0cmVlX2dpc3QtLTEuNS0tMS42LnNxbCBi dHJlZV9naXN0LS0xLjYtLTEuNy5zcWwgXAogICAgICAgIGJ0cmVlX2dpc3QtLTEuNy0tMS44LnNx bCBidHJlZV9naXN0LS0xLjgtLTEuOS5zcWwgXAotICAgICAgIGJ0cmVlX2dpc3QtLTEuOS5zcWwK KyAgICAgICBidHJlZV9naXN0LS0xLjkuc3FsIGJ0cmVlX2dpc3QtLTEuOS0tMS4xMC5zcWwKIFBH RklMRURFU0MgPSAiYnRyZWVfZ2lzdCAtIEItdHJlZSBlcXVpdmFsZW50IEdpU1Qgb3BlcmF0b3Ig Y2xhc3NlcyIKIAogUkVHUkVTUyA9IGluaXQgaW50MiBpbnQ0IGludDggZmxvYXQ0IGZsb2F0OCBj YXNoIG9pZCB0aW1lc3RhbXAgdGltZXN0YW1wdHogXAogICAgICAgICB0aW1lIHRpbWV0eiBkYXRl IGludGVydmFsIG1hY2FkZHIgbWFjYWRkcjggaW5ldCBjaWRyIHRleHQgdmFyY2hhciBjaGFyIFwK ICAgICAgICAgYnl0ZWEgYml0IHZhcmJpdCBudW1lcmljIHV1aWQgbm90X2VxdWFsIGVudW0gYm9v bCBwYXJ0aXRpb25zIFwKLSAgICAgICAgc3RyYXRudW0gd2l0aG91dF9vdmVybGFwcworICAgICAg ICBzdHJhdG51bSBpbnRfY3Jvc3N0eXBlIHdpdGhvdXRfb3ZlcmxhcHMKIAogU0hMSUJfTElOSyAr PSAkKGZpbHRlciAtbG0sICQoTElCUykpCiAKIGlmZGVmIFVTRV9QR1hTCiBQR19DT05GSUcgPSBw Z19jb25maWcKIFBHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQpkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuOS0tMS4xMC5zcWwgYi9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS45LS0xLjEwLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uYzlmZjE5NTUyMDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS45LS0xLjEwLnNxbApAQCAtMCwwICsxLDE0MyBA QAorLyogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuOS0tMS4xMC5zcWwgKi8KKwor LS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlh IEFMVEVSIEVYVEVOU0lPTgorXGVjaG8gVXNlICJBTFRFUiBFWFRFTlNJT04gYnRyZWVfZ2lzdCBV UERBVEUgVE8gJzEuMTAnIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLS0gQWRkIGNyb3Nz LXR5cGUgb3BlcmF0b3Igc3VwcG9ydCBmb3IgdGhlIGludGVnZXIgdHJpbyAoaW50MiwgaW50NCwg aW50OCkKKy0tIHRvIHRoZSBleGlzdGluZyBHaVNUIG9wZXJhdG9yIGZhbWlsaWVzLgorLS0KKy0t IEdpU1QncyBhbXZhbGlkYXRlIHJlcXVpcmVzIHN1cHBvcnQgZnVuY3Rpb25zIGluIGEgZmFtaWx5 IHRvIGhhdmUgbWF0Y2hpbmcKKy0tIGxlZnQvcmlnaHQgaW5wdXQgdHlwZXMsIHNvIHRoZSBjYXRh bG9nIGFkZGl0aW9ucyBiZWxvdyBhcmUgZGVsaWJlcmF0ZWx5CistLSBwZ19hbW9wLW9ubHkuIFRo ZSBleGlzdGluZyBjb25zaXN0ZW50L2Rpc3RhbmNlIHN1cHBvcnQgZnVuY3Rpb25zIGRpc3BhdGNo CistLSBvbiB0aGUgc3VidHlwZSBPSUQ6IHNhbWUtdHlwZSBxdWVyaWVzIHRha2UgdGhlIG5vcm1h bCBwYXRoLCB3aGlsZSBtaXhlZC13aWR0aAorLS0gaW50ZWdlciBxdWVyaWVzIGFyZSBwcm9tb3Rl ZCB0byBpbnQ2NCBhbmQgY29tcGFyZWQgYnkgdGhlIGludGVnZXIgY3Jvc3MtdHlwZQorLS0gaGVs cGVycyBpbiBidHJlZV91dGlsc19udW0uYy4KKworQ1JFQVRFIEZVTkNUSU9OIGludDJfaW50NF9k aXN0KGludDIsIGludDQpCitSRVRVUk5TIGludDQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5H VUFHRSBDIElNTVVUQUJMRSBTVFJJQ1QgUEFSQUxMRUwgU0FGRTsKKworQ1JFQVRFIEZVTkNUSU9O IGludDRfaW50Ml9kaXN0KGludDQsIGludDIpCitSRVRVUk5TIGludDQKK0FTICdNT0RVTEVfUEFU SE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1QgUEFSQUxMRUwgU0FGRTsKKworQ1JF QVRFIEZVTkNUSU9OIGludDJfaW50OF9kaXN0KGludDIsIGludDgpCitSRVRVUk5TIGludDgKK0FT ICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1QgUEFSQUxMRUwg U0FGRTsKKworQ1JFQVRFIEZVTkNUSU9OIGludDhfaW50Ml9kaXN0KGludDgsIGludDIpCitSRVRV Uk5TIGludDgKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJ Q1QgUEFSQUxMRUwgU0FGRTsKKworQ1JFQVRFIEZVTkNUSU9OIGludDRfaW50OF9kaXN0KGludDQs IGludDgpCitSRVRVUk5TIGludDgKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElN TVVUQUJMRSBTVFJJQ1QgUEFSQUxMRUwgU0FGRTsKKworQ1JFQVRFIEZVTkNUSU9OIGludDhfaW50 NF9kaXN0KGludDgsIGludDQpCitSRVRVUk5TIGludDgKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitM QU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1QgUEFSQUxMRUwgU0FGRTsKKworLS0gSW50cm9zcGVj dGlvbiBoZWxwZXIgZXhwb3NpbmcgdGhlIGludGVnZXIgcXVlcnkgc3VidHlwZXMgdW5kZXJzdG9v ZCBieSB0aGUgQworLS0gY3Jvc3MtdHlwZSBkaXNwYXRjaCAoZ2J0X2ludF9jcm9zc3R5cGVfdGFi bGUgaW4gYnRyZWVfdXRpbHNfbnVtLmMpLiBUaGUKKy0tIHJlZ3Jlc3Npb24gdGVzdHMgdXNlIGl0 IHRvIGFzc2VydCB0aGF0IHRoZSBjcm9zcy10eXBlIHBnX2Ftb3AgZW50cmllcyBiZWxvdworLS0g bmV2ZXIgZHJpZnQgZnJvbSB3aGF0IHRoZSBkaXNwYXRjaCBjYW4gaGFuZGxlLgorQ1JFQVRFIEZV TkNUSU9OIGdidF9pbnRfY3Jvc3N0eXBlX3N1YnR5cGVzKCkKK1JFVFVSTlMgU0VUT0Ygb2lkCitB UyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgUEFSQUxMRUwgU0FGRTsK KworQ1JFQVRFIE9QRVJBVE9SIDwtPiAoCisJTEVGVEFSRyA9IGludDIsCisJUklHSFRBUkcgPSBp bnQ0LAorCVBST0NFRFVSRSA9IGludDJfaW50NF9kaXN0LAorCUNPTU1VVEFUT1IgPSAnPC0+Jwor KTsKKworQ1JFQVRFIE9QRVJBVE9SIDwtPiAoCisJTEVGVEFSRyA9IGludDQsCisJUklHSFRBUkcg PSBpbnQyLAorCVBST0NFRFVSRSA9IGludDRfaW50Ml9kaXN0LAorCUNPTU1VVEFUT1IgPSAnPC0+ JworKTsKKworQ1JFQVRFIE9QRVJBVE9SIDwtPiAoCisJTEVGVEFSRyA9IGludDIsCisJUklHSFRB UkcgPSBpbnQ4LAorCVBST0NFRFVSRSA9IGludDJfaW50OF9kaXN0LAorCUNPTU1VVEFUT1IgPSAn PC0+JworKTsKKworQ1JFQVRFIE9QRVJBVE9SIDwtPiAoCisJTEVGVEFSRyA9IGludDgsCisJUklH SFRBUkcgPSBpbnQyLAorCVBST0NFRFVSRSA9IGludDhfaW50Ml9kaXN0LAorCUNPTU1VVEFUT1Ig PSAnPC0+JworKTsKKworQ1JFQVRFIE9QRVJBVE9SIDwtPiAoCisJTEVGVEFSRyA9IGludDQsCisJ UklHSFRBUkcgPSBpbnQ4LAorCVBST0NFRFVSRSA9IGludDRfaW50OF9kaXN0LAorCUNPTU1VVEFU T1IgPSAnPC0+JworKTsKKworQ1JFQVRFIE9QRVJBVE9SIDwtPiAoCisJTEVGVEFSRyA9IGludDgs CisJUklHSFRBUkcgPSBpbnQ0LAorCVBST0NFRFVSRSA9IGludDhfaW50NF9kaXN0LAorCUNPTU1V VEFUT1IgPSAnPC0+JworKTsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfaW50Ml9vcHMg VVNJTkcgZ2lzdCBBREQKKwlPUEVSQVRPUgkxCTwgIChpbnQyLCBpbnQ0KSwKKwlPUEVSQVRPUgky CTw9IChpbnQyLCBpbnQ0KSwKKwlPUEVSQVRPUgkzCT0gIChpbnQyLCBpbnQ0KSwKKwlPUEVSQVRP Ugk0CT49IChpbnQyLCBpbnQ0KSwKKwlPUEVSQVRPUgk1CT4gIChpbnQyLCBpbnQ0KSwKKwlPUEVS QVRPUgk2CTw+IChpbnQyLCBpbnQ0KSwKKwlPUEVSQVRPUgkxNQk8LT4gKGludDIsIGludDQpIEZP UiBPUkRFUiBCWSBwZ19jYXRhbG9nLmludGVnZXJfb3BzLAorCU9QRVJBVE9SCTEJPCAgKGludDIs IGludDgpLAorCU9QRVJBVE9SCTIJPD0gKGludDIsIGludDgpLAorCU9QRVJBVE9SCTMJPSAgKGlu dDIsIGludDgpLAorCU9QRVJBVE9SCTQJPj0gKGludDIsIGludDgpLAorCU9QRVJBVE9SCTUJPiAg KGludDIsIGludDgpLAorCU9QRVJBVE9SCTYJPD4gKGludDIsIGludDgpLAorCU9QRVJBVE9SCTE1 CTwtPiAoaW50MiwgaW50OCkgRk9SIE9SREVSIEJZIHBnX2NhdGFsb2cuaW50ZWdlcl9vcHM7CisK K0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2ludDRfb3BzIFVTSU5HIGdpc3QgQURECisJT1BF UkFUT1IJMQk8ICAoaW50NCwgaW50MiksCisJT1BFUkFUT1IJMgk8PSAoaW50NCwgaW50MiksCisJ T1BFUkFUT1IJMwk9ICAoaW50NCwgaW50MiksCisJT1BFUkFUT1IJNAk+PSAoaW50NCwgaW50Miks CisJT1BFUkFUT1IJNQk+ICAoaW50NCwgaW50MiksCisJT1BFUkFUT1IJNgk8PiAoaW50NCwgaW50 MiksCisJT1BFUkFUT1IJMTUJPC0+IChpbnQ0LCBpbnQyKSBGT1IgT1JERVIgQlkgcGdfY2F0YWxv Zy5pbnRlZ2VyX29wcywKKwlPUEVSQVRPUgkxCTwgIChpbnQ0LCBpbnQ4KSwKKwlPUEVSQVRPUgky CTw9IChpbnQ0LCBpbnQ4KSwKKwlPUEVSQVRPUgkzCT0gIChpbnQ0LCBpbnQ4KSwKKwlPUEVSQVRP Ugk0CT49IChpbnQ0LCBpbnQ4KSwKKwlPUEVSQVRPUgk1CT4gIChpbnQ0LCBpbnQ4KSwKKwlPUEVS QVRPUgk2CTw+IChpbnQ0LCBpbnQ4KSwKKwlPUEVSQVRPUgkxNQk8LT4gKGludDQsIGludDgpIEZP UiBPUkRFUiBCWSBwZ19jYXRhbG9nLmludGVnZXJfb3BzOworCitBTFRFUiBPUEVSQVRPUiBGQU1J TFkgZ2lzdF9pbnQ4X29wcyBVU0lORyBnaXN0IEFERAorCU9QRVJBVE9SCTEJPCAgKGludDgsIGlu dDIpLAorCU9QRVJBVE9SCTIJPD0gKGludDgsIGludDIpLAorCU9QRVJBVE9SCTMJPSAgKGludDgs IGludDIpLAorCU9QRVJBVE9SCTQJPj0gKGludDgsIGludDIpLAorCU9QRVJBVE9SCTUJPiAgKGlu dDgsIGludDIpLAorCU9QRVJBVE9SCTYJPD4gKGludDgsIGludDIpLAorCU9QRVJBVE9SCTE1CTwt PiAoaW50OCwgaW50MikgRk9SIE9SREVSIEJZIHBnX2NhdGFsb2cuaW50ZWdlcl9vcHMsCisJT1BF UkFUT1IJMQk8ICAoaW50OCwgaW50NCksCisJT1BFUkFUT1IJMgk8PSAoaW50OCwgaW50NCksCisJ T1BFUkFUT1IJMwk9ICAoaW50OCwgaW50NCksCisJT1BFUkFUT1IJNAk+PSAoaW50OCwgaW50NCks CisJT1BFUkFUT1IJNQk+ICAoaW50OCwgaW50NCksCisJT1BFUkFUT1IJNgk8PiAoaW50OCwgaW50 NCksCisJT1BFUkFUT1IJMTUJPC0+IChpbnQ4LCBpbnQ0KSBGT1IgT1JERVIgQlkgcGdfY2F0YWxv Zy5pbnRlZ2VyX29wczsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0 LmNvbnRyb2wgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5jb250cm9sCmluZGV4IDY5 ZDkzNDFhMGFkLi5lNjA2ZmE2NTUxZCAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2dpc3QuY29udHJvbAorKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5jb250 cm9sCkBAIC0xLDYgKzEsNiBAQAogIyBidHJlZV9naXN0IGV4dGVuc2lvbgogY29tbWVudCA9ICdz dXBwb3J0IGZvciBpbmRleGluZyBjb21tb24gZGF0YXR5cGVzIGluIEdpU1QnCi1kZWZhdWx0X3Zl cnNpb24gPSAnMS45JworZGVmYXVsdF92ZXJzaW9uID0gJzEuMTAnCiBtb2R1bGVfcGF0aG5hbWUg PSAnJGxpYmRpci9idHJlZV9naXN0JwogcmVsb2NhdGFibGUgPSB0cnVlCiB0cnVzdGVkID0gdHJ1 ZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDIuYyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9pbnQyLmMKaW5kZXggY2M0YjMzMTc3ZTMuLmQwMGIyNGQ5YTU3IDEw MDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50Mi5jCisrKyBiL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9pbnQyLmMKQEAgLTIsMTIgKzIsMTMgQEAKICAqIGNvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV9pbnQyLmMKICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNs dWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2luY2x1ZGUg InV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIHR5cGVkZWYg c3RydWN0IGludDE2a2V5CiB7CkBAIC03MywxMyArNzQsMTIgQEAgZ2J0X2ludDJrZXlfY21wKGNv bnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCiBzdGF0aWMgZmxv YXQ4CiBnYnRfaW50Ml9kaXN0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZv ICpmbGluZm8pCiB7CiAJcmV0dXJuIEdFVF9GTE9BVF9ESVNUQU5DRShpbnQxNiwgYSwgYik7CiB9 CiAKLQogc3RhdGljIGNvbnN0IGdidHJlZV9uaW5mbyB0aW5mbyA9CiB7CiAJZ2J0X3RfaW50MiwK IAlzaXplb2YoaW50MTYpLAogCTQsCQkJCQkJCS8qIHNpemVvZihnYnRyZWVrZXk0KSAqLwogCWdi dF9pbnQyZ3QsCkBAIC0xMDksMTIgKzEwOSw0NiBAQCBpbnQyX2Rpc3QoUEdfRlVOQ1RJT05fQVJH UykKIAogCXJhID0gYWJzKHIpOwogCiAJUEdfUkVUVVJOX0lOVDE2KHJhKTsKIH0KIAorUEdfRlVO Q1RJT05fSU5GT19WMShpbnQyX2ludDRfZGlzdCk7CitEYXR1bQoraW50Ml9pbnQ0X2Rpc3QoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwlpbnQzMgkJYSA9IChpbnQzMikgUEdfR0VUQVJHX0lOVDE2KDAp OworCWludDMyCQliID0gUEdfR0VUQVJHX0lOVDMyKDEpOworCWludDMyCQlyOworCisJaWYgKHBn X3N1Yl9zMzJfb3ZlcmZsb3coYSwgYiwgJnIpIHx8CisJCXIgPT0gUEdfSU5UMzJfTUlOKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0Zf UkFOR0UpLAorCQkJCSBlcnJtc2coImludGVnZXIgb3V0IG9mIHJhbmdlIikpKTsKKworCVBHX1JF VFVSTl9JTlQzMihhYnMocikpOworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKGludDJfaW50OF9k aXN0KTsKK0RhdHVtCitpbnQyX2ludDhfZGlzdChQR19GVU5DVElPTl9BUkdTKQoreworCWludDY0 CQlhID0gKGludDY0KSBQR19HRVRBUkdfSU5UMTYoMCk7CisJaW50NjQJCWIgPSBQR19HRVRBUkdf SU5UNjQoMSk7CisJaW50NjQJCXI7CisKKwlpZiAocGdfc3ViX3M2NF9vdmVyZmxvdyhhLCBiLCAm cikgfHwKKwkJciA9PSBQR19JTlQ2NF9NSU4pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCisJCQkJIGVycm1zZygiYmln aW50IG91dCBvZiByYW5nZSIpKSk7CisKKwlQR19SRVRVUk5fSU5UNjQoaTY0YWJzKHIpKTsKK30K KwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK ICAqIEdpU1Qgc3VwcG9ydCBmdW5jdGlvbnMKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KIAogRGF0dW0KQEAgLTEzNCw0NyArMTY4LDYxIEBAIGdi dF9pbnQyX2ZldGNoKFBHX0ZVTkNUSU9OX0FSR1MpCiB9CiAKIERhdHVtCiBnYnRfaW50Ml9jb25z aXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJR0lTVEVOVFJZICAqZW50cnkgPSAoR0lTVEVO VFJZICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwotCWludDE2CQlxdWVyeSA9IFBHX0dFVEFSR19J TlQxNigxKTsKKwlEYXR1bQkJcXVlcnlEYXR1bSA9IFBHX0dFVEFSR19EQVRVTSgxKTsKIAlTdHJh dGVneU51bWJlciBzdHJhdGVneSA9IChTdHJhdGVneU51bWJlcikgUEdfR0VUQVJHX1VJTlQxNigy KTsKLSNpZmRlZiBOT1RfVVNFRAogCU9pZAkJCXN1YnR5cGUgPSBQR19HRVRBUkdfT0lEKDMpOwot I2VuZGlmCiAJYm9vbAkgICAqcmVjaGVjayA9IChib29sICopIFBHX0dFVEFSR19QT0lOVEVSKDQp OwogCWludDE2S0VZICAgKmtrayA9IChpbnQxNktFWSAqKSBEYXR1bUdldFBvaW50ZXIoZW50cnkt PmtleSk7CisJaW50MTYJCXF1ZXJ5OwogCUdCVF9OVU1LRVlfUiBrZXk7CiAKIAkvKiBBbGwgY2Fz ZXMgc2VydmVkIGJ5IHRoaXMgZnVuY3Rpb24gYXJlIGV4YWN0ICovCiAJKnJlY2hlY2sgPSBmYWxz ZTsKIAogCWtleS5sb3dlciA9IChHQlRfTlVNS0VZICopICZra2stPmxvd2VyOwogCWtleS51cHBl ciA9IChHQlRfTlVNS0VZICopICZra2stPnVwcGVyOwogCi0JUEdfUkVUVVJOX0JPT0woZ2J0X251 bV9jb25zaXN0ZW50KCZrZXksICZxdWVyeSwgJnN0cmF0ZWd5LAotCQkJCQkJCQkJICBHSVNUX0xF QUYoZW50cnkpLCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKSk7CisJaWYgKGxpa2VseShzdWJ0eXBl ID09IEludmFsaWRPaWQgfHwgc3VidHlwZSA9PSBJTlQyT0lEKSkKKwl7CisJCXF1ZXJ5ID0gRGF0 dW1HZXRJbnQxNihxdWVyeURhdHVtKTsKKwkJUEdfUkVUVVJOX0JPT0woZ2J0X251bV9jb25zaXN0 ZW50KCZrZXksICZxdWVyeSwgJnN0cmF0ZWd5LAorCQkJCQkJCQkJCSAgR0lTVF9MRUFGKGVudHJ5 KSwgJnRpbmZvLAorCQkJCQkJCQkJCSAgZmNpbmZvLT5mbGluZm8pKTsKKwl9CisKKwlQR19SRVRV Uk5fQk9PTChnYnRfaW50X2NvbnNpc3RlbnRfeCgoaW50NjQpIGtray0+bG93ZXIsIChpbnQ2NCkg a2trLT51cHBlciwKKwkJCQkJCQkJCQlxdWVyeURhdHVtLCBzdWJ0eXBlLCAmc3RyYXRlZ3ksCisJ CQkJCQkJCQkJR0lTVF9MRUFGKGVudHJ5KSkpOwogfQogCiBEYXR1bQogZ2J0X2ludDJfZGlzdGFu Y2UoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlHSVNURU5UUlkgICplbnRyeSA9IChHSVNURU5UUlkg KikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0JaW50MTYJCXF1ZXJ5ID0gUEdfR0VUQVJHX0lOVDE2 KDEpOwotI2lmZGVmIE5PVF9VU0VECisJRGF0dW0JCXF1ZXJ5RGF0dW0gPSBQR19HRVRBUkdfREFU VU0oMSk7CiAJT2lkCQkJc3VidHlwZSA9IFBHX0dFVEFSR19PSUQoMyk7Ci0jZW5kaWYKIAlpbnQx NktFWSAgICpra2sgPSAoaW50MTZLRVkgKikgRGF0dW1HZXRQb2ludGVyKGVudHJ5LT5rZXkpOwor CWludDE2CQlxdWVyeTsKIAlHQlRfTlVNS0VZX1Iga2V5OwogCiAJa2V5Lmxvd2VyID0gKEdCVF9O VU1LRVkgKikgJmtray0+bG93ZXI7CiAJa2V5LnVwcGVyID0gKEdCVF9OVU1LRVkgKikgJmtray0+ dXBwZXI7CiAKLQlQR19SRVRVUk5fRkxPQVQ4KGdidF9udW1fZGlzdGFuY2UoJmtleSwgJnF1ZXJ5 LCBHSVNUX0xFQUYoZW50cnkpLAotCQkJCQkJCQkJICAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKSk7 CisJaWYgKGxpa2VseShzdWJ0eXBlID09IEludmFsaWRPaWQgfHwgc3VidHlwZSA9PSBJTlQyT0lE KSkKKwl7CisJCXF1ZXJ5ID0gRGF0dW1HZXRJbnQxNihxdWVyeURhdHVtKTsKKwkJUEdfUkVUVVJO X0ZMT0FUOChnYnRfbnVtX2Rpc3RhbmNlKCZrZXksICZxdWVyeSwgR0lTVF9MRUFGKGVudHJ5KSwK KwkJCQkJCQkJCQkgICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKKwl9CisKKwlQR19SRVRVUk5f RkxPQVQ4KGdidF9pbnRfZGlzdGFuY2VfeCgoaW50NjQpIGtray0+bG93ZXIsIChpbnQ2NCkga2tr LT51cHBlciwKKwkJCQkJCQkJCQlxdWVyeURhdHVtLCBzdWJ0eXBlKSk7CiB9CiAKIERhdHVtCiBn YnRfaW50Ml91bmlvbihQR19GVU5DVElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3RvciAqZW50 cnl2ZWMgPSAoR2lzdEVudHJ5VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwpkaWZmIC0t Z2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9pbnQ0LmMKaW5kZXggNDc3OTA1NzhlNmIuLjRkZjkxZjIwNTdjIDEwMDY0NAotLS0g YS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50NC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9pbnQ0LmMKQEAgLTEsMTIgKzEsMTMgQEAKIC8qCiAgKiBjb250cmliL2J0cmVlX2dp c3QvYnRyZWVfaW50NC5jCiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogI2luY2x1ZGUgImJ0 cmVlX2dpc3QuaCIKICNpbmNsdWRlICJidHJlZV91dGlsc19udW0uaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAidXRpbHMv cmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3Qg aW50MzJrZXkKIHsKQEAgLTcxLDEzICs3MiwxMiBAQCBnYnRfaW50NGtleV9jbXAoY29uc3Qgdm9p ZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHN0YXRpYyBmbG9hdDgKIGdi dF9pbnQ0X2Rpc3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5m bykKIHsKIAlyZXR1cm4gR0VUX0ZMT0FUX0RJU1RBTkNFKGludDMyLCBhLCBiKTsKIH0KIAotCiBz dGF0aWMgY29uc3QgZ2J0cmVlX25pbmZvIHRpbmZvID0KIHsKIAlnYnRfdF9pbnQ0LAogCXNpemVv ZihpbnQzMiksCiAJOCwJCQkJCQkJLyogc2l6ZW9mKGdidHJlZWtleTgpICovCiAJZ2J0X2ludDRn dCwKQEAgLTEwNywxMiArMTA3LDQ2IEBAIGludDRfZGlzdChQR19GVU5DVElPTl9BUkdTKQogCiAJ cmEgPSBhYnMocik7CiAKIAlQR19SRVRVUk5fSU5UMzIocmEpOwogfQogCitQR19GVU5DVElPTl9J TkZPX1YxKGludDRfaW50Ml9kaXN0KTsKK0RhdHVtCitpbnQ0X2ludDJfZGlzdChQR19GVU5DVElP Tl9BUkdTKQoreworCWludDMyCQlhID0gUEdfR0VUQVJHX0lOVDMyKDApOworCWludDMyCQliID0g KGludDMyKSBQR19HRVRBUkdfSU5UMTYoMSk7CisJaW50MzIJCXI7CisKKwlpZiAocGdfc3ViX3Mz Ml9vdmVyZmxvdyhhLCBiLCAmcikgfHwKKwkJciA9PSBQR19JTlQzMl9NSU4pCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSks CisJCQkJIGVycm1zZygiaW50ZWdlciBvdXQgb2YgcmFuZ2UiKSkpOworCisJUEdfUkVUVVJOX0lO VDMyKGFicyhyKSk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoaW50NF9pbnQ4X2Rpc3QpOwor RGF0dW0KK2ludDRfaW50OF9kaXN0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJaW50NjQJCWEgPSAo aW50NjQpIFBHX0dFVEFSR19JTlQzMigwKTsKKwlpbnQ2NAkJYiA9IFBHX0dFVEFSR19JTlQ2NCgx KTsKKwlpbnQ2NAkJcjsKKworCWlmIChwZ19zdWJfczY0X292ZXJmbG93KGEsIGIsICZyKSB8fAor CQlyID09IFBHX0lOVDY0X01JTikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKKwkJCQkgZXJybXNnKCJiaWdpbnQgb3V0 IG9mIHJhbmdlIikpKTsKKworCVBHX1JFVFVSTl9JTlQ2NChpNjRhYnMocikpOworfQorCiAKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogR2lT VCBzdXBwb3J0IGZ1bmN0aW9ucwogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLwogCiBEYXR1bQpAQCAtMTMyLDQ3ICsxNjYsNjEgQEAgZ2J0X2ludDRf ZmV0Y2goUEdfRlVOQ1RJT05fQVJHUykKIH0KIAogRGF0dW0KIGdidF9pbnQ0X2NvbnNpc3RlbnQo UEdfRlVOQ1RJT05fQVJHUykKIHsKIAlHSVNURU5UUlkgICplbnRyeSA9IChHSVNURU5UUlkgKikg UEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0JaW50MzIJCXF1ZXJ5ID0gUEdfR0VUQVJHX0lOVDMyKDEp OworCURhdHVtCQlxdWVyeURhdHVtID0gUEdfR0VUQVJHX0RBVFVNKDEpOwogCVN0cmF0ZWd5TnVt YmVyIHN0cmF0ZWd5ID0gKFN0cmF0ZWd5TnVtYmVyKSBQR19HRVRBUkdfVUlOVDE2KDIpOwotI2lm ZGVmIE5PVF9VU0VECiAJT2lkCQkJc3VidHlwZSA9IFBHX0dFVEFSR19PSUQoMyk7Ci0jZW5kaWYK IAlib29sCSAgICpyZWNoZWNrID0gKGJvb2wgKikgUEdfR0VUQVJHX1BPSU5URVIoNCk7CiAJaW50 MzJLRVkgICAqa2trID0gKGludDMyS0VZICopIERhdHVtR2V0UG9pbnRlcihlbnRyeS0+a2V5KTsK KwlpbnQzMgkJcXVlcnk7CiAJR0JUX05VTUtFWV9SIGtleTsKIAogCS8qIEFsbCBjYXNlcyBzZXJ2 ZWQgYnkgdGhpcyBmdW5jdGlvbiBhcmUgZXhhY3QgKi8KIAkqcmVjaGVjayA9IGZhbHNlOwogCiAJ a2V5Lmxvd2VyID0gKEdCVF9OVU1LRVkgKikgJmtray0+bG93ZXI7CiAJa2V5LnVwcGVyID0gKEdC VF9OVU1LRVkgKikgJmtray0+dXBwZXI7CiAKLQlQR19SRVRVUk5fQk9PTChnYnRfbnVtX2NvbnNp c3RlbnQoJmtleSwgJnF1ZXJ5LCAmc3RyYXRlZ3ksCi0JCQkJCQkJCQkgIEdJU1RfTEVBRihlbnRy eSksICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKKwlpZiAobGlrZWx5KHN1YnR5cGUgPT0gSW52 YWxpZE9pZCB8fCBzdWJ0eXBlID09IElOVDRPSUQpKQorCXsKKwkJcXVlcnkgPSBEYXR1bUdldElu dDMyKHF1ZXJ5RGF0dW0pOworCQlQR19SRVRVUk5fQk9PTChnYnRfbnVtX2NvbnNpc3RlbnQoJmtl eSwgJnF1ZXJ5LCAmc3RyYXRlZ3ksCisJCQkJCQkJCQkJICBHSVNUX0xFQUYoZW50cnkpLCAmdGlu Zm8sCisJCQkJCQkJCQkJICBmY2luZm8tPmZsaW5mbykpOworCX0KKworCVBHX1JFVFVSTl9CT09M KGdidF9pbnRfY29uc2lzdGVudF94KChpbnQ2NCkga2trLT5sb3dlciwgKGludDY0KSBra2stPnVw cGVyLAorCQkJCQkJCQkJCXF1ZXJ5RGF0dW0sIHN1YnR5cGUsICZzdHJhdGVneSwKKwkJCQkJCQkJ CQlHSVNUX0xFQUYoZW50cnkpKSk7CiB9CiAKIERhdHVtCiBnYnRfaW50NF9kaXN0YW5jZShQR19G VU5DVElPTl9BUkdTKQogewogCUdJU1RFTlRSWSAgKmVudHJ5ID0gKEdJU1RFTlRSWSAqKSBQR19H RVRBUkdfUE9JTlRFUigwKTsKLQlpbnQzMgkJcXVlcnkgPSBQR19HRVRBUkdfSU5UMzIoMSk7Ci0j aWZkZWYgTk9UX1VTRUQKKwlEYXR1bQkJcXVlcnlEYXR1bSA9IFBHX0dFVEFSR19EQVRVTSgxKTsK IAlPaWQJCQlzdWJ0eXBlID0gUEdfR0VUQVJHX09JRCgzKTsKLSNlbmRpZgogCWludDMyS0VZICAg KmtrayA9IChpbnQzMktFWSAqKSBEYXR1bUdldFBvaW50ZXIoZW50cnktPmtleSk7CisJaW50MzIJ CXF1ZXJ5OwogCUdCVF9OVU1LRVlfUiBrZXk7CiAKIAlrZXkubG93ZXIgPSAoR0JUX05VTUtFWSAq KSAma2trLT5sb3dlcjsKIAlrZXkudXBwZXIgPSAoR0JUX05VTUtFWSAqKSAma2trLT51cHBlcjsK IAotCVBHX1JFVFVSTl9GTE9BVDgoZ2J0X251bV9kaXN0YW5jZSgma2V5LCAmcXVlcnksIEdJU1Rf TEVBRihlbnRyeSksCi0JCQkJCQkJCQkgICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKKwlpZiAo bGlrZWx5KHN1YnR5cGUgPT0gSW52YWxpZE9pZCB8fCBzdWJ0eXBlID09IElOVDRPSUQpKQorCXsK KwkJcXVlcnkgPSBEYXR1bUdldEludDMyKHF1ZXJ5RGF0dW0pOworCQlQR19SRVRVUk5fRkxPQVQ4 KGdidF9udW1fZGlzdGFuY2UoJmtleSwgJnF1ZXJ5LCBHSVNUX0xFQUYoZW50cnkpLAorCQkJCQkJ CQkJCSAgJnRpbmZvLCBmY2luZm8tPmZsaW5mbykpOworCX0KKworCVBHX1JFVFVSTl9GTE9BVDgo Z2J0X2ludF9kaXN0YW5jZV94KChpbnQ2NCkga2trLT5sb3dlciwgKGludDY0KSBra2stPnVwcGVy LAorCQkJCQkJCQkJCXF1ZXJ5RGF0dW0sIHN1YnR5cGUpKTsKIH0KIAogRGF0dW0KIGdidF9pbnQ0 X3VuaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJR2lzdEVudHJ5VmVjdG9yICplbnRyeXZlYyA9 IChHaXN0RW50cnlWZWN0b3IgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CmRpZmYgLS1naXQgYS9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50OC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2ludDguYwppbmRleCBmNDgxMjJjOGQ4NC4uYWUwMTI3M2I3MDkgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ4LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2ludDguYwpAQCAtMiwxMiArMiwxMyBAQAogICogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2lu dDguYwogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImJ0cmVlX2dpc3Qu aCIKICNpbmNsdWRlICJidHJlZV91dGlsc19udW0uaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKICNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAj aW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgaW50NjRrZXkK IHsKQEAgLTczLDEzICs3NCwxMiBAQCBnYnRfaW50OGtleV9jbXAoY29uc3Qgdm9pZCAqYSwgY29u c3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHN0YXRpYyBmbG9hdDgKIGdidF9pbnQ4X2Rp c3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKIAly ZXR1cm4gR0VUX0ZMT0FUX0RJU1RBTkNFKGludDY0LCBhLCBiKTsKIH0KIAotCiBzdGF0aWMgY29u c3QgZ2J0cmVlX25pbmZvIHRpbmZvID0KIHsKIAlnYnRfdF9pbnQ4LAogCXNpemVvZihpbnQ2NCks CiAJMTYsCQkJCQkJCS8qIHNpemVvZihnYnRyZWVrZXkxNikgKi8KIAlnYnRfaW50OGd0LApAQCAt MTA5LDEyICsxMDksNDYgQEAgaW50OF9kaXN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlyYSA9IGk2 NGFicyhyKTsKIAogCVBHX1JFVFVSTl9JTlQ2NChyYSk7CiB9CiAKK1BHX0ZVTkNUSU9OX0lORk9f VjEoaW50OF9pbnQyX2Rpc3QpOworRGF0dW0KK2ludDhfaW50Ml9kaXN0KFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJaW50NjQJCWEgPSBQR19HRVRBUkdfSU5UNjQoMCk7CisJaW50NjQJCWIgPSAoaW50 NjQpIFBHX0dFVEFSR19JTlQxNigxKTsKKwlpbnQ2NAkJcjsKKworCWlmIChwZ19zdWJfczY0X292 ZXJmbG93KGEsIGIsICZyKSB8fAorCQlyID09IFBHX0lOVDY0X01JTikKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKKwkJ CQkgZXJybXNnKCJiaWdpbnQgb3V0IG9mIHJhbmdlIikpKTsKKworCVBHX1JFVFVSTl9JTlQ2NChp NjRhYnMocikpOworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKGludDhfaW50NF9kaXN0KTsKK0Rh dHVtCitpbnQ4X2ludDRfZGlzdChQR19GVU5DVElPTl9BUkdTKQoreworCWludDY0CQlhID0gUEdf R0VUQVJHX0lOVDY0KDApOworCWludDY0CQliID0gKGludDY0KSBQR19HRVRBUkdfSU5UMzIoMSk7 CisJaW50NjQJCXI7CisKKwlpZiAocGdfc3ViX3M2NF9vdmVyZmxvdyhhLCBiLCAmcikgfHwKKwkJ ciA9PSBQR19JTlQ2NF9NSU4pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCisJCQkJIGVycm1zZygiYmlnaW50IG91dCBv ZiByYW5nZSIpKSk7CisKKwlQR19SRVRVUk5fSU5UNjQoaTY0YWJzKHIpKTsKK30KKwogCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIEdpU1Qg c3VwcG9ydCBmdW5jdGlvbnMKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KIAogRGF0dW0KQEAgLTEzNCw0NyArMTY4LDYxIEBAIGdidF9pbnQ4X2Zl dGNoKFBHX0ZVTkNUSU9OX0FSR1MpCiB9CiAKIERhdHVtCiBnYnRfaW50OF9jb25zaXN0ZW50KFBH X0ZVTkNUSU9OX0FSR1MpCiB7CiAJR0lTVEVOVFJZICAqZW50cnkgPSAoR0lTVEVOVFJZICopIFBH X0dFVEFSR19QT0lOVEVSKDApOwotCWludDY0CQlxdWVyeSA9IFBHX0dFVEFSR19JTlQ2NCgxKTsK KwlEYXR1bQkJcXVlcnlEYXR1bSA9IFBHX0dFVEFSR19EQVRVTSgxKTsKIAlTdHJhdGVneU51bWJl ciBzdHJhdGVneSA9IChTdHJhdGVneU51bWJlcikgUEdfR0VUQVJHX1VJTlQxNigyKTsKLSNpZmRl ZiBOT1RfVVNFRAogCU9pZAkJCXN1YnR5cGUgPSBQR19HRVRBUkdfT0lEKDMpOwotI2VuZGlmCiAJ Ym9vbAkgICAqcmVjaGVjayA9IChib29sICopIFBHX0dFVEFSR19QT0lOVEVSKDQpOwogCWludDY0 S0VZICAgKmtrayA9IChpbnQ2NEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoZW50cnktPmtleSk7CisJ aW50NjQJCXF1ZXJ5OwogCUdCVF9OVU1LRVlfUiBrZXk7CiAKIAkvKiBBbGwgY2FzZXMgc2VydmVk IGJ5IHRoaXMgZnVuY3Rpb24gYXJlIGV4YWN0ICovCiAJKnJlY2hlY2sgPSBmYWxzZTsKIAogCWtl eS5sb3dlciA9IChHQlRfTlVNS0VZICopICZra2stPmxvd2VyOwogCWtleS51cHBlciA9IChHQlRf TlVNS0VZICopICZra2stPnVwcGVyOwogCi0JUEdfUkVUVVJOX0JPT0woZ2J0X251bV9jb25zaXN0 ZW50KCZrZXksICZxdWVyeSwgJnN0cmF0ZWd5LAotCQkJCQkJCQkJICBHSVNUX0xFQUYoZW50cnkp LCAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKSk7CisJaWYgKGxpa2VseShzdWJ0eXBlID09IEludmFs aWRPaWQgfHwgc3VidHlwZSA9PSBJTlQ4T0lEKSkKKwl7CisJCXF1ZXJ5ID0gRGF0dW1HZXRJbnQ2 NChxdWVyeURhdHVtKTsKKwkJUEdfUkVUVVJOX0JPT0woZ2J0X251bV9jb25zaXN0ZW50KCZrZXks ICZxdWVyeSwgJnN0cmF0ZWd5LAorCQkJCQkJCQkJCSAgR0lTVF9MRUFGKGVudHJ5KSwgJnRpbmZv LAorCQkJCQkJCQkJCSAgZmNpbmZvLT5mbGluZm8pKTsKKwl9CisKKwlQR19SRVRVUk5fQk9PTChn YnRfaW50X2NvbnNpc3RlbnRfeChra2stPmxvd2VyLCBra2stPnVwcGVyLAorCQkJCQkJCQkJCXF1 ZXJ5RGF0dW0sIHN1YnR5cGUsICZzdHJhdGVneSwKKwkJCQkJCQkJCQlHSVNUX0xFQUYoZW50cnkp KSk7CiB9CiAKIERhdHVtCiBnYnRfaW50OF9kaXN0YW5jZShQR19GVU5DVElPTl9BUkdTKQogewog CUdJU1RFTlRSWSAgKmVudHJ5ID0gKEdJU1RFTlRSWSAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsK LQlpbnQ2NAkJcXVlcnkgPSBQR19HRVRBUkdfSU5UNjQoMSk7Ci0jaWZkZWYgTk9UX1VTRUQKKwlE YXR1bQkJcXVlcnlEYXR1bSA9IFBHX0dFVEFSR19EQVRVTSgxKTsKIAlPaWQJCQlzdWJ0eXBlID0g UEdfR0VUQVJHX09JRCgzKTsKLSNlbmRpZgogCWludDY0S0VZICAgKmtrayA9IChpbnQ2NEtFWSAq KSBEYXR1bUdldFBvaW50ZXIoZW50cnktPmtleSk7CisJaW50NjQJCXF1ZXJ5OwogCUdCVF9OVU1L RVlfUiBrZXk7CiAKIAlrZXkubG93ZXIgPSAoR0JUX05VTUtFWSAqKSAma2trLT5sb3dlcjsKIAlr ZXkudXBwZXIgPSAoR0JUX05VTUtFWSAqKSAma2trLT51cHBlcjsKIAotCVBHX1JFVFVSTl9GTE9B VDgoZ2J0X251bV9kaXN0YW5jZSgma2V5LCAmcXVlcnksIEdJU1RfTEVBRihlbnRyeSksCi0JCQkJ CQkJCQkgICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKKwlpZiAobGlrZWx5KHN1YnR5cGUgPT0g SW52YWxpZE9pZCB8fCBzdWJ0eXBlID09IElOVDhPSUQpKQorCXsKKwkJcXVlcnkgPSBEYXR1bUdl dEludDY0KHF1ZXJ5RGF0dW0pOworCQlQR19SRVRVUk5fRkxPQVQ4KGdidF9udW1fZGlzdGFuY2Uo JmtleSwgJnF1ZXJ5LCBHSVNUX0xFQUYoZW50cnkpLAorCQkJCQkJCQkJCSAgJnRpbmZvLCBmY2lu Zm8tPmZsaW5mbykpOworCX0KKworCVBHX1JFVFVSTl9GTE9BVDgoZ2J0X2ludF9kaXN0YW5jZV94 KGtray0+bG93ZXIsIGtray0+dXBwZXIsCisJCQkJCQkJCQkJcXVlcnlEYXR1bSwgc3VidHlwZSkp OwogfQogCiBEYXR1bQogZ2J0X2ludDhfdW5pb24oUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlHaXN0 RW50cnlWZWN0b3IgKmVudHJ5dmVjID0gKEdpc3RFbnRyeVZlY3RvciAqKSBQR19HRVRBUkdfUE9J TlRFUigwKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc19udW0u YyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc19udW0uYwppbmRleCAzYWZmZTRjMmM0 Ni4uY2ZmNDdlMmQ4NzYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGls c19udW0uYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfbnVtLmMKQEAgLTIs MTIgKzIsMTQgQEAKICAqIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc19udW0uYwogICov CiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNs dWRlICJidHJlZV91dGlsc19udW0uaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNp bmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAidXRpbHMvY2FzaC5oIgogI2luY2x1ZGUgInV0 aWxzL2RhdGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIAogCiBHSVNURU5UUlkg KgpAQCAtMzA0LDEyICszMDYsMTQ0IEBAIGdidF9udW1fY29uc2lzdGVudChjb25zdCBHQlRfTlVN S0VZX1IgKmtleSwKIAkJCXJldHZhbCA9IGZhbHNlOwogCX0KIAogCXJldHVybiByZXR2YWw7CiB9 CiAKKy8qCisgKiBDcm9zcy10eXBlIGRpc3BhdGNoIHRhYmxlIGZvciB0aGUgaW50ZWdlciBvcGNs YXNzZXMuCisgKgorICogVGhpcyBpcyB0aGUgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3Igd2hp Y2ggcXVlcnkgc3VidHlwZXMgdGhlIGludGVnZXIKKyAqIGNyb3NzLXR5cGUgcGF0aCB1bmRlcnN0 YW5kcy4gZ2J0X2ludF9xdWVyeV90b19pbnQ2NCgpIHByb21vdGVzIGV4YWN0bHkgdGhlCisgKiBz dWJ0eXBlcyBsaXN0ZWQgaGVyZSwgYW5kIHRoZSBTUUwtdmlzaWJsZSBnYnRfaW50X2Nyb3NzdHlw ZV9zdWJ0eXBlcygpCisgKiBleHBvc2VzIHRoZSBzYW1lIGxpc3Qgc28gdGhlIHJlZ3Jlc3Npb24g dGVzdHMgY2FuIGFzc2VydCB0aGF0IHRoZSBjcm9zcy10eXBlCisgKiBwZ19hbW9wIGVudHJpZXMg aW4gZ2lzdF9pbnR7Miw0LDh9X29wcyBuZXZlciBkcmlmdCBmcm9tIHdoYXQgdGhlIEMgY29kZSBj YW4KKyAqIGFjdHVhbGx5IGhhbmRsZS4KKyAqLwordHlwZWRlZiBpbnQ2NCAoKmdidF9pbnRfcHJv bW90ZV9mbikgKERhdHVtIHF1ZXJ5KTsKKworc3RhdGljIGludDY0CitnYnRfaW50Ml90b19pbnQ2 NChEYXR1bSBxdWVyeSkKK3sKKwlyZXR1cm4gKGludDY0KSBEYXR1bUdldEludDE2KHF1ZXJ5KTsK K30KKworc3RhdGljIGludDY0CitnYnRfaW50NF90b19pbnQ2NChEYXR1bSBxdWVyeSkKK3sKKwly ZXR1cm4gKGludDY0KSBEYXR1bUdldEludDMyKHF1ZXJ5KTsKK30KKworc3RhdGljIGludDY0Citn YnRfaW50OF90b19pbnQ2NChEYXR1bSBxdWVyeSkKK3sKKwlyZXR1cm4gRGF0dW1HZXRJbnQ2NChx dWVyeSk7Cit9CisKK3R5cGVkZWYgc3RydWN0Cit7CisJT2lkCQkJc3VidHlwZTsKKwlnYnRfaW50 X3Byb21vdGVfZm4gcHJvbW90ZTsKK30JCQlnYnRfaW50X2Nyb3NzdHlwZTsKKworc3RhdGljIGNv bnN0IGdidF9pbnRfY3Jvc3N0eXBlIGdidF9pbnRfY3Jvc3N0eXBlX3RhYmxlW10gPSB7CisJe0lO VDJPSUQsIGdidF9pbnQyX3RvX2ludDY0fSwKKwl7SU5UNE9JRCwgZ2J0X2ludDRfdG9faW50NjR9 LAorCXtJTlQ4T0lELCBnYnRfaW50OF90b19pbnQ2NH0sCit9OworCisvKgorICogUHJvbW90ZSBh IGNyb3NzLXR5cGUgaW50ZWdlciBxdWVyeSB2YWx1ZSB0byBpbnQ2NC4KKyAqCisgKiBBIHN1YnR5 cGUgb3V0c2lkZSBnYnRfaW50X2Nyb3NzdHlwZV90YWJsZSBtZWFucyB0aGUgQyBkaXNwYXRjaCBp cyBvdXQgb2Ygc3luYworICogd2l0aCB0aGUgb3BlcmF0b3ItZmFtaWx5IHJlZ2lzdHJhdGlvbnMg aW4gcGdfYW1vcCwgc28gd2UgdHJlYXQgaXQgYXMgYW4KKyAqIGludGVybmFsIGVycm9yLiAgVGhl IHJlZ3Jlc3Npb24gdGVzdHMgYXNzZXJ0IHRoaXMgbmV2ZXIgaGFwcGVucy4KKyAqLworc3RhdGlj IGludDY0CitnYnRfaW50X3F1ZXJ5X3RvX2ludDY0KERhdHVtIHF1ZXJ5LCBPaWQgc3VidHlwZSkK K3sKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsgaSA8IGxlbmd0aG9mKGdidF9pbnRfY3Jvc3N0 eXBlX3RhYmxlKTsgaSsrKQorCXsKKwkJaWYgKGdidF9pbnRfY3Jvc3N0eXBlX3RhYmxlW2ldLnN1 YnR5cGUgPT0gc3VidHlwZSkKKwkJCXJldHVybiBnYnRfaW50X2Nyb3NzdHlwZV90YWJsZVtpXS5w cm9tb3RlKHF1ZXJ5KTsKKwl9CisKKwllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIHN1YnR5cGUg JXUgZm9yIGJ0cmVlX2dpc3QgaW50ZWdlciBjcm9zcy10eXBlIGNvbXBhcmlzb24iLAorCQkgc3Vi dHlwZSk7CisJcmV0dXJuIDA7CQkJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCit9CisKKy8q CisgKiBnYnRfaW50X2Nyb3NzdHlwZV9zdWJ0eXBlcworICoKKyAqIEV4cG9zZSB0aGUgY29udGVu dHMgb2YgZ2J0X2ludF9jcm9zc3R5cGVfdGFibGUgdG8gU1FMIGFzIGEgc2V0IG9mIHR5cGUgT0lE cy4KKyAqIFRoZSBidHJlZV9naXN0IHJlZ3Jlc3Npb24gdGVzdHMgdXNlIHRoaXMgdG8gY2hlY2sg dGhhdCB0aGUgY3Jvc3MtdHlwZSBwZ19hbW9wCisgKiBlbnRyaWVzIGluIGdpc3RfaW50ezIsNCw4 fV9vcHMgc3RheSBpbiBhZ3JlZW1lbnQgd2l0aCB0aGUgQyBkaXNwYXRjaC4KKyAqLworUEdfRlVO Q1RJT05fSU5GT19WMShnYnRfaW50X2Nyb3NzdHlwZV9zdWJ0eXBlcyk7CitEYXR1bQorZ2J0X2lu dF9jcm9zc3R5cGVfc3VidHlwZXMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlGdW5jQ2FsbENvbnRl eHQgKmZ1bmNjdHg7CisKKwlpZiAoU1JGX0lTX0ZJUlNUQ0FMTCgpKQorCQlmdW5jY3R4ID0gU1JG X0ZJUlNUQ0FMTF9JTklUKCk7CisKKwlmdW5jY3R4ID0gU1JGX1BFUkNBTExfU0VUVVAoKTsKKwor CWlmIChmdW5jY3R4LT5jYWxsX2NudHIgPCBsZW5ndGhvZihnYnRfaW50X2Nyb3NzdHlwZV90YWJs ZSkpCisJeworCQlPaWQJCQlzdWJ0eXBlID0gZ2J0X2ludF9jcm9zc3R5cGVfdGFibGVbZnVuY2N0 eC0+Y2FsbF9jbnRyXS5zdWJ0eXBlOworCisJCVNSRl9SRVRVUk5fTkVYVChmdW5jY3R4LCBPYmpl Y3RJZEdldERhdHVtKHN1YnR5cGUpKTsKKwl9CisKKwlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7 Cit9CisKKy8qCisgKiBDcm9zcy10eXBlIGNvbnNpc3RlbnQgbWV0aG9kIGZvciB0aGUgaW50ZWdl ciBvcGNsYXNzZXMuCisgKgorICogVGhlIGtleSByYW5nZSBbbG93ZXIsIHVwcGVyXSBhbmQgdGhl IHF1ZXJ5IHZhbHVlIGFyZSBhbGwgY29tcGFyZWQgYXMgaW50NjQuCisgKiBUaGUgc3RyYXRlZ3kg bG9naWMgbWlycm9ycyB0aGUgc2FtZS10eXBlIHBhdGggaW4gZ2J0X251bV9jb25zaXN0ZW50KCk6 IHRoZQorICogcXVlcnkgdmFsdWUga2VlcHMgaXRzIG93biB3aWR0aCAobm8gbmFycm93aW5nIHRv IHRoZSBpbmRleGVkIGNvbHVtbiB0eXBlKSwKKyAqIHNvIG91dC1vZi1yYW5nZSBjb25zdGFudHMg YmVoYXZlIGFjY29yZGluZyB0byBub3JtYWwgaW50ZWdlciBjb21wYXJpc29uLgorICovCitib29s CitnYnRfaW50X2NvbnNpc3RlbnRfeChpbnQ2NCBsb3dlciwgaW50NjQgdXBwZXIsIERhdHVtIHF1 ZXJ5LCBPaWQgc3VidHlwZSwKKwkJCQkJIGNvbnN0IFN0cmF0ZWd5TnVtYmVyICpzdHJhdGVneSwg Ym9vbCBpc19sZWFmKQoreworCWludDY0CQlxID0gZ2J0X2ludF9xdWVyeV90b19pbnQ2NChxdWVy eSwgc3VidHlwZSk7CisKKwlzd2l0Y2ggKCpzdHJhdGVneSkKKwl7CisJCWNhc2UgQlRMZXNzRXF1 YWxTdHJhdGVneU51bWJlcjoKKwkJCS8qIHNvbWUgayBpbiBbbG93ZXIsdXBwZXJdIGhhcyBrIDw9 IHEgaWZmIGxvd2VyIDw9IHEgKi8KKwkJCXJldHVybiBsb3dlciA8PSBxOworCQljYXNlIEJUTGVz c1N0cmF0ZWd5TnVtYmVyOgorCQkJLyogbGVhZjoga2V5IDwgcS4gaW50ZXJuYWw6IGxvd2VyIDw9 IHEgKGxvb3NlKSAqLworCQkJcmV0dXJuIGlzX2xlYWYgPyAobG93ZXIgPCBxKSA6IChsb3dlciA8 PSBxKTsKKwkJY2FzZSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI6CisJCQlpZiAoaXNfbGVhZikKKwkJ CQlyZXR1cm4gbG93ZXIgPT0gcTsKKwkJCS8qIGludGVybmFsOiBsb3dlciA8PSBxIDw9IHVwcGVy ICovCisJCQlyZXR1cm4gKGxvd2VyIDw9IHEgJiYgcSA8PSB1cHBlcik7CisJCWNhc2UgQlRHcmVh dGVyU3RyYXRlZ3lOdW1iZXI6CisJCQkvKiBsZWFmOiBrZXkgPiBxLiBpbnRlcm5hbDogdXBwZXIg Pj0gcSAobG9vc2UpICovCisJCQlyZXR1cm4gaXNfbGVhZiA/ICh1cHBlciA+IHEpIDogKHVwcGVy ID49IHEpOworCQljYXNlIEJUR3JlYXRlckVxdWFsU3RyYXRlZ3lOdW1iZXI6CisJCQlyZXR1cm4g dXBwZXIgPj0gcTsKKwkJY2FzZSBCdHJlZUdpc3ROb3RFcXVhbFN0cmF0ZWd5TnVtYmVyOgorCQkJ cmV0dXJuICEobG93ZXIgPT0gcSAmJiB1cHBlciA9PSBxKTsKKwkJZGVmYXVsdDoKKwkJCXJldHVy biBmYWxzZTsKKwl9Cit9CisKIAogLyoKICAqIFRoZSBHaVNUIGRpc3RhbmNlIG1ldGhvZCAoZm9y IEtOTi1HaXN0KQogICovCiAKIGZsb2F0OApAQCAtMzMxLDEyICs0NjUsMzggQEAgZ2J0X251bV9k aXN0YW5jZShjb25zdCBHQlRfTlVNS0VZX1IgKmtleSwKIAllbHNlCiAJCXJldHZhbCA9IDAuMDsK IAogCXJldHVybiByZXR2YWw7CiB9CiAKKy8qCisgKiBDcm9zcy10eXBlIGRpc3RhbmNlIG1ldGhv ZCBmb3IgdGhlIGludGVnZXIgb3BjbGFzc2VzLgorICoKKyAqIFRoZSBkaXN0YW5jZSBmcm9tIHRo ZSBxdWVyeSB2YWx1ZSB0byB0aGUga2V5IHJhbmdlIGlzIGNvbXB1dGVkIGluIGludDY0IGFuZAor ICogcmV0dXJuZWQgYXMgYSBmbG9hdDgsIG1hdGNoaW5nIHRoZSBzYW1lLXR5cGUgaW50ZWdlciBk aXN0YW5jZSBiZWhhdmlvdXIuCisgKgorICogTm90ZSB0aGF0IHRoZSBzdWJ0cmFjdGlvbiBpcyBw ZXJmb3JtZWQgaW4gZmxvYXQ4LCBzbyB3aGVuIHRoZSBrZXkgYm91bmQgYW5kCisgKiB0aGUgcXVl cnkgdmFsdWUgZGlmZmVyIGJ5IG1vcmUgdGhhbiAyXjUzIHRoZSByZXR1cm5lZCBkaXN0YW5jZSBs b3NlcworICogcHJlY2lzaW9uLiBUaGlzIG9ubHkgYWZmZWN0cyB0aGUgb3JkZXJpbmcgb2YgS05O IHJlc3VsdHMgdGhhdCBhcmUgbmVhcmx5CisgKiBlcXVpZGlzdGFudCBhdCB0aGF0IHNjYWxlOyBp dCBuZXZlciBjaGFuZ2VzIHdoaWNoIHJvd3MgYXJlIHJldHVybmVkLgorICovCitmbG9hdDgKK2di dF9pbnRfZGlzdGFuY2VfeChpbnQ2NCBsb3dlciwgaW50NjQgdXBwZXIsIERhdHVtIHF1ZXJ5LCBP aWQgc3VidHlwZSkKK3sKKwlpbnQ2NAkJcSA9IGdidF9pbnRfcXVlcnlfdG9faW50NjQocXVlcnks IHN1YnR5cGUpOworCisJLyogcXVlcnkgYmVsb3cgdGhlIHJhbmdlOiBkaXN0YW5jZSB0byBsb3dl ciBib3VuZCAqLworCWlmIChsb3dlciA+PSBxKQorCQlyZXR1cm4gZmFicygoZmxvYXQ4KSBsb3dl ciAtIChmbG9hdDgpIHEpOworCS8qIHF1ZXJ5IGFib3ZlIHRoZSByYW5nZTogZGlzdGFuY2UgdG8g dXBwZXIgYm91bmQgKi8KKwlpZiAodXBwZXIgPD0gcSkKKwkJcmV0dXJuIGZhYnMoKGZsb2F0OCkg dXBwZXIgLSAoZmxvYXQ4KSBxKTsKKwkvKiBxdWVyeSBpbnNpZGUgdGhlIHJhbmdlICovCisJcmV0 dXJuIDAuMDsKK30KKwogCiBHSVNUX1NQTElUVkVDICoKIGdidF9udW1fcGlja3NwbGl0KGNvbnN0 IEdpc3RFbnRyeVZlY3RvciAqZW50cnl2ZWMsIEdJU1RfU1BMSVRWRUMgKnYsCiAJCQkJICBjb25z dCBnYnRyZWVfbmluZm8gKnRpbmZvLCBGbWdySW5mbyAqZmxpbmZvKQogewogCU9mZnNldE51bWJl ciBpLApkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5oIGIv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5oCmluZGV4IDUzZTQ3N2Q4YjFlLi5k Mzc4YjBkZjM3ZSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251 bS5oCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc19udW0uaApAQCAtOTUsMTIg Kzk1LDI4IEBAIGV4dGVybiBib29sIGdidF9udW1fY29uc2lzdGVudChjb25zdCBHQlRfTlVNS0VZ X1IgKmtleSwgY29uc3Qgdm9pZCAqcXVlcnksCiAJCQkJCQkJICAgY29uc3QgU3RyYXRlZ3lOdW1i ZXIgKnN0cmF0ZWd5LCBib29sIGlzX2xlYWYsCiAJCQkJCQkJICAgY29uc3QgZ2J0cmVlX25pbmZv ICp0aW5mbywgRm1nckluZm8gKmZsaW5mbyk7CiAKIGV4dGVybiBmbG9hdDggZ2J0X251bV9kaXN0 YW5jZShjb25zdCBHQlRfTlVNS0VZX1IgKmtleSwgY29uc3Qgdm9pZCAqcXVlcnksCiAJCQkJCQkJ ICAgYm9vbCBpc19sZWFmLCBjb25zdCBnYnRyZWVfbmluZm8gKnRpbmZvLCBGbWdySW5mbyAqZmxp bmZvKTsKIAorLyoKKyAqIENyb3NzLXR5cGUgY29uc2lzdGVudC9kaXN0YW5jZSBoZWxwZXJzIGZv ciB0aGUgaW50ZWdlciBvcGNsYXNzZXMKKyAqIChpbnQyL2ludDQvaW50OCkuICBBbGwgdGhyZWUg aW50ZWdlciB3aWR0aHMgcHJvbW90ZSBsb3NzbGVzc2x5IHRvIGludDY0LCBzbworICogYSBjcm9z cy10eXBlIHF1ZXJ5IHJlZHVjZXMgdG8gYSBwbGFpbiBpbnQ2NCBjb21wYXJpc29uIGFuZCB0aGVy ZSBpcyBubyBuZWVkCisgKiBmb3IgdGhlIHBlci10eXBlIGNhbGxiYWNrIG1hY2hpbmVyeSB0aGUg c2FtZS10eXBlIHBhdGggdXNlcy4gIFRoZXNlIGhlbHBlcnMKKyAqIGFyZSBkZWxpYmVyYXRlbHkg aW50ZWdlci1zcGVjaWZpYyByYXRoZXIgdGhhbiBhIGdlbmVyYWwgY3Jvc3MtdHlwZSBmcmFtZXdv cms7CisgKiBvdGhlciB0eXBlIGZhbWlsaWVzIHNob3VsZCBncm93IHRoZWlyIG93biBoZWxwZXJz IHNoYXBlZCB0byB0aGVpciBuZWVkcyBhcworICogdGhlIG5lZWQgYXJpc2VzLgorICovCitleHRl cm4gYm9vbCBnYnRfaW50X2NvbnNpc3RlbnRfeChpbnQ2NCBsb3dlciwgaW50NjQgdXBwZXIsCisJ CQkJCQkJCSBEYXR1bSBxdWVyeSwgT2lkIHN1YnR5cGUsCisJCQkJCQkJCSBjb25zdCBTdHJhdGVn eU51bWJlciAqc3RyYXRlZ3ksIGJvb2wgaXNfbGVhZik7CisKK2V4dGVybiBmbG9hdDggZ2J0X2lu dF9kaXN0YW5jZV94KGludDY0IGxvd2VyLCBpbnQ2NCB1cHBlciwKKwkJCQkJCQkJIERhdHVtIHF1 ZXJ5LCBPaWQgc3VidHlwZSk7CisKIGV4dGVybiBHSVNUX1NQTElUVkVDICpnYnRfbnVtX3BpY2tz cGxpdChjb25zdCBHaXN0RW50cnlWZWN0b3IgKmVudHJ5dmVjLCBHSVNUX1NQTElUVkVDICp2LAog CQkJCQkJCQkJCWNvbnN0IGdidHJlZV9uaW5mbyAqdGluZm8sIEZtZ3JJbmZvICpmbGluZm8pOwog CiBleHRlcm4gR0lTVEVOVFJZICpnYnRfbnVtX2NvbXByZXNzKEdJU1RFTlRSWSAqZW50cnksIGNv bnN0IGdidHJlZV9uaW5mbyAqdGluZm8pOwogCiBleHRlcm4gR0lTVEVOVFJZICpnYnRfbnVtX2Zl dGNoKEdJU1RFTlRSWSAqZW50cnksIGNvbnN0IGdidHJlZV9uaW5mbyAqdGluZm8pOwpkaWZmIC0t Z2l0IGEvY29udHJpYi9idHJlZV9naXN0L21lc29uLmJ1aWxkIGIvY29udHJpYi9idHJlZV9naXN0 L21lc29uLmJ1aWxkCmluZGV4IDJiMWE1NDYzMjg5Li5jNjQwY2I3ZDhkMiAxMDA2NDQKLS0tIGEv Y29udHJpYi9idHJlZV9naXN0L21lc29uLmJ1aWxkCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9t ZXNvbi5idWlsZApAQCAtNDksMTIgKzQ5LDEzIEBAIGluc3RhbGxfZGF0YSgKICAgJ2J0cmVlX2dp c3QtLTEuNC0tMS41LnNxbCcsCiAgICdidHJlZV9naXN0LS0xLjUtLTEuNi5zcWwnLAogICAnYnRy ZWVfZ2lzdC0tMS42LS0xLjcuc3FsJywKICAgJ2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbCcsCiAg ICdidHJlZV9naXN0LS0xLjgtLTEuOS5zcWwnLAogICAnYnRyZWVfZ2lzdC0tMS45LnNxbCcsCisg ICdidHJlZV9naXN0LS0xLjktLTEuMTAuc3FsJywKICAga3dhcmdzOiBjb250cmliX2RhdGFfYXJn cywKICkKIAogdGVzdHMgKz0gewogICAnbmFtZSc6ICdidHJlZV9naXN0JywKICAgJ3NkJzogbWVz b24uY3VycmVudF9zb3VyY2VfZGlyKCksCkBAIC04OSwxMCArOTAsMTEgQEAgdGVzdHMgKz0gewog ICAgICAgJ3V1aWQnLAogICAgICAgJ25vdF9lcXVhbCcsCiAgICAgICAnZW51bScsCiAgICAgICAn Ym9vbCcsCiAgICAgICAncGFydGl0aW9ucycsCiAgICAgICAnc3RyYXRudW0nLAorICAgICAgJ2lu dF9jcm9zc3R5cGUnLAogICAgICAgJ3dpdGhvdXRfb3ZlcmxhcHMnLAogICAgIF0sCiAgIH0sCiB9 Ci0tIAoyLjUxLjAKCg== --6a3b0e80_2acbe2e_5be Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v4-0002-Add-tests-for-cross-type-operators-for-GiST-indexes.patch" RnJvbSAxMzhjMDlhNWIxM2ZhYWM4ZWRlYjM4N2VhYjI2Nzk5ZTA3YWIxYTA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTmVzdG9yb3YgPGFsZXhhbmRlcm5zdEBnbWFp bC5jb20+CkRhdGU6IFRodSwgNCBKdW4gMjAyNiAwMDowODoyNyArMDIwMApTdWJqZWN0OiBbUEFU Q0hdIEFkZCB0ZXN0cyBmb3IgY3Jvc3MtdHlwZSBvcGVyYXRvcnMgZm9yIEdpU1QgaW5kZXhlcwoK LS0tCiBjb250cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvaW50X2Nyb3NzdHlwZS5vdXQgfCA1Njgg KysrKysrKysrKysrKysrKysrCiBjb250cmliL2J0cmVlX2dpc3Qvc3FsL2ludF9jcm9zc3R5cGUu c3FsICAgICAgfCAyMzYgKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgODA0IGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvaW50X2Ny b3NzdHlwZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL2J0cmVlX2dpc3Qvc3FsL2lu dF9jcm9zc3R5cGUuc3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVk L2ludF9jcm9zc3R5cGUub3V0IGIvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL2ludF9jcm9z c3R5cGUub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iZDJiOTBi ZDNmNgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9leHBlY3RlZC9pbnRf Y3Jvc3N0eXBlLm91dApAQCAtMCwwICsxLDU2OCBAQAorLS0gQ3Jvc3MtdHlwZSBvcGVyYXRvciBz dXBwb3J0IGZvciBpbnQyL2ludDQvaW50OCBpbiBHaVNULgorLS0KKy0tIFZlcmlmaWVzIHRoYXQg KGEpIHRoZSBjcm9zcy10eXBlIEItdHJlZS1zdHlsZSBvcGVyYXRvcnMgcmVnaXN0ZXJlZCBpbgor LS0gZ2lzdF9pbnR7Miw0LDh9X29wcyBtYXRjaCB0aGUgcmVzdWx0cyBvZiBzZXFzY2FucyB1c2lu ZyB0aGUgc2FtZSBvcGVyYXRvcgorLS0gZXhwcmVzc2lvbnMsIChiKSB0aGUgS05OIDwtPiBvcGVy YXRvciB3b3JrcyBhY3Jvc3MgdHlwZXMgYW5kIHVzZXMgdGhlCistLSBpbmRleCwgYW5kIChjKSB2 YWx1ZXMgb3V0c2lkZSB0aGUgc21hbGxlciBzdWJ0eXBlJ3MgcmFuZ2UgYXJlIGhhbmRsZWQKKy0t IGFjY29yZGluZyB0byBub3JtYWwgY29tcGFyaXNvbiBzZW1hbnRpY3MsIHdpdGhvdXQgbmFycm93 aW5nIG9yIGVycm9yaW5nLgorLS0KKy0tIENhdGFsb2cgaW52YXJpYW50OiB0aGUgY3Jvc3MtdHlw ZSBwZ19hbW9wIGVudHJpZXMgaW4gZ2lzdF9pbnR7Miw0LDh9X29wcyBtdXN0CistLSBhZ3JlZSwg aW4gYm90aCBkaXJlY3Rpb25zLCB3aXRoIHdoYXQgdGhlIEMgY3Jvc3MtdHlwZSBkaXNwYXRjaCBj YW4gaGFuZGxlLgorLS0gVGhlIHNldCBvZiBzdXBwb3J0ZWQgcXVlcnkgc3VidHlwZXMgaXMgcmVh ZCBmcm9tIHRoZSBDIHNpZGUgdmlhCistLSBnYnRfaW50X2Nyb3NzdHlwZV9zdWJ0eXBlcygpLCBz byB0aGVyZSBpcyBubyBoYW5kLW1haW50YWluZWQgc2Vjb25kIGNvcHkgb2YKKy0tIHRoZSBsaXN0 IGhlcmU6IHJlZ2lzdGVyaW5nIGEgcGdfYW1vcCByb3cgd2hvc2Ugc3VidHlwZSB0aGUgZGlzcGF0 Y2ggZG9lcyBub3QKKy0tIGhhbmRsZSAob3IgZHJvcHBpbmcgYSBkaXNwYXRjaCBlbnRyeSB3aGls ZSBpdHMgcGdfYW1vcCByb3dzIHJlbWFpbiwgb3IgdmljZQorLS0gdmVyc2EpIHNob3dzIHVwIGFz IGEgZGlmZiBiZWxvdy4gQ3Jvc3MtdHlwZSBwZ19hbXByb2Mgcm93cyBtdXN0IGFsc28gc3RheQor LS0gYWJzZW50LCBzaW5jZSB0aGUgZGlzcGF0Y2ggcmV1c2VzIHRoZSBzYW1lLXR5cGUgc3VwcG9y dCBmdW5jdGlvbnMuCistLQorV0lUSCBkaXNwYXRjaF9zdWJ0eXBlcyh0eXApIEFTICgKKyAgICBT RUxFQ1Qgcy5zdWJ0eXBlOjpyZWd0eXBlCisgICAgRlJPTSBnYnRfaW50X2Nyb3NzdHlwZV9zdWJ0 eXBlcygpIEFTIHMoc3VidHlwZSkKKyksCitnaXN0X2ludF9vcGNsYXNzZXMob3BmYW1pbHksIGlu ZGV4dHlwZSkgQVMgKAorICAgIFNFTEVDVCBvcGMub3BjbmFtZTo6dGV4dCwgb3BjLm9wY2ludHlw ZTo6cmVndHlwZQorICAgIEZST00gcGdfb3BjbGFzcyBvcGMKKyAgICAgICAgIEpPSU4gcGdfYW0g YW0gT04gYW0ub2lkID0gb3BjLm9wY21ldGhvZAorICAgIFdIRVJFIGFtLmFtbmFtZSA9ICdnaXN0 JworICAgICAgQU5EIG9wYy5vcGNuYW1lIElOICgnZ2lzdF9pbnQyX29wcycsICdnaXN0X2ludDRf b3BzJywgJ2dpc3RfaW50OF9vcHMnKQorKSwKK2V4cGVjdGVkX3BhaXJzKG9wZmFtaWx5LCBsZWZ0 dHlwZSwgcmlnaHR0eXBlKSBBUyAoCisgICAgU0VMRUNUIG9jLm9wZmFtaWx5LCBvYy5pbmRleHR5 cGUsIGRzLnR5cAorICAgIEZST00gZ2lzdF9pbnRfb3BjbGFzc2VzIG9jCisgICAgICAgICBDUk9T UyBKT0lOIGRpc3BhdGNoX3N1YnR5cGVzIGRzCisgICAgV0hFUkUgZHMudHlwIDw+IG9jLmluZGV4 dHlwZQorKSwKK2V4cGVjdGVkX2Ftb3Aob3BmYW1pbHksIGxlZnR0eXBlLCByaWdodHR5cGUsIHN0 cmF0ZWd5LCBwdXJwb3NlKSBBUyAoCisgICAgU0VMRUNUIG9wZmFtaWx5LCBsZWZ0dHlwZSwgcmln aHR0eXBlLCBzdHJhdGVneSwgcHVycG9zZQorICAgIEZST00gZXhwZWN0ZWRfcGFpcnMKKyAgICAg ICAgIENST1NTIEpPSU4gKFZBTFVFUworICAgICAgICAgICAgICgxLCAncycpLCAoMiwgJ3MnKSwg KDMsICdzJyksICg0LCAncycpLAorICAgICAgICAgICAgICg1LCAncycpLCAoNiwgJ3MnKSwgKDE1 LCAnbycpCisgICAgICAgICApIEFTIHN0cmF0ZWd5X3B1cnBvc2VzKHN0cmF0ZWd5LCBwdXJwb3Nl KQorKSwKK2FjdHVhbF9hbW9wIEFTICgKKyAgICBTRUxFQ1Qgb3BmLm9wZm5hbWU6OnRleHQgQVMg b3BmYW1pbHksCisgICAgICAgICAgIGFtb3AuYW1vcGxlZnR0eXBlOjpyZWd0eXBlIEFTIGxlZnR0 eXBlLAorICAgICAgICAgICBhbW9wLmFtb3ByaWdodHR5cGU6OnJlZ3R5cGUgQVMgcmlnaHR0eXBl LAorICAgICAgICAgICBhbW9wLmFtb3BzdHJhdGVneTo6aW50IEFTIHN0cmF0ZWd5LAorICAgICAg ICAgICBhbW9wLmFtb3BwdXJwb3NlOjp0ZXh0IEFTIHB1cnBvc2UKKyAgICBGUk9NIHBnX2Ftb3Ag YW1vcAorICAgICAgICAgSk9JTiBwZ19vcGZhbWlseSBvcGYgT04gb3BmLm9pZCA9IGFtb3AuYW1v cGZhbWlseQorICAgICAgICAgSk9JTiBwZ19hbSBhbSBPTiBhbS5vaWQgPSBvcGYub3BmbWV0aG9k CisgICAgV0hFUkUgYW0uYW1uYW1lID0gJ2dpc3QnCisgICAgICBBTkQgb3BmLm9wZm5hbWUgSU4g KCdnaXN0X2ludDJfb3BzJywgJ2dpc3RfaW50NF9vcHMnLCAnZ2lzdF9pbnQ4X29wcycpCisgICAg ICBBTkQgYW1vcC5hbW9wbGVmdHR5cGUgPD4gYW1vcC5hbW9wcmlnaHR0eXBlCispCitTRUxFQ1Qg KgorRlJPTSAoCisgICAgU0VMRUNUICdtaXNzaW5nIGZyb20gcGdfYW1vcCcgQVMgc3RhdHVzLCAq CisgICAgRlJPTSAoU0VMRUNUICogRlJPTSBleHBlY3RlZF9hbW9wIEVYQ0VQVCBTRUxFQ1QgKiBG Uk9NIGFjdHVhbF9hbW9wKSBtaXNzaW5nCisgICAgVU5JT04gQUxMCisgICAgU0VMRUNUICd1bmV4 cGVjdGVkIGluIHBnX2Ftb3AnIEFTIHN0YXR1cywgKgorICAgIEZST00gKFNFTEVDVCAqIEZST00g YWN0dWFsX2Ftb3AgRVhDRVBUIFNFTEVDVCAqIEZST00gZXhwZWN0ZWRfYW1vcCkgdW5leHBlY3Rl ZAorKSBkaWZmCitPUkRFUiBCWSBzdGF0dXMsIG9wZmFtaWx5LCBsZWZ0dHlwZTo6dGV4dCwgcmln aHR0eXBlOjp0ZXh0LCBzdHJhdGVneSwgcHVycG9zZTsKKyBzdGF0dXMgfCBvcGZhbWlseSB8IGxl ZnR0eXBlIHwgcmlnaHR0eXBlIHwgc3RyYXRlZ3kgfCBwdXJwb3NlIAorLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisoMCByb3dz KQorCitTRUxFQ1Qgb3BmLm9wZm5hbWUgQVMgb3BmYW1pbHksCisgICAgICAgYW1wcm9jLmFtcHJv Y2xlZnR0eXBlOjpyZWd0eXBlIEFTIGxlZnR0eXBlLAorICAgICAgIGFtcHJvYy5hbXByb2NyaWdo dHR5cGU6OnJlZ3R5cGUgQVMgcmlnaHR0eXBlLAorICAgICAgIGFtcHJvYy5hbXByb2NudW0gQVMg cHJvY251bSwKKyAgICAgICBhbXByb2MuYW1wcm9jOjpyZWdwcm9jIEFTIHByb2MKK0ZST00gcGdf YW1wcm9jIGFtcHJvYworICAgICBKT0lOIHBnX29wZmFtaWx5IG9wZiBPTiBvcGYub2lkID0gYW1w cm9jLmFtcHJvY2ZhbWlseQorICAgICBKT0lOIHBnX2FtIGFtIE9OIGFtLm9pZCA9IG9wZi5vcGZt ZXRob2QKK1dIRVJFIGFtLmFtbmFtZSA9ICdnaXN0JworICBBTkQgb3BmLm9wZm5hbWUgSU4gKCdn aXN0X2ludDJfb3BzJywgJ2dpc3RfaW50NF9vcHMnLCAnZ2lzdF9pbnQ4X29wcycpCisgIEFORCBh bXByb2MuYW1wcm9jbGVmdHR5cGUgPD4gYW1wcm9jLmFtcHJvY3JpZ2h0dHlwZQorT1JERVIgQlkg b3BmLm9wZm5hbWUsCisgICAgICAgICBhbXByb2MuYW1wcm9jbGVmdHR5cGU6OnJlZ3R5cGU6OnRl eHQsCisgICAgICAgICBhbXByb2MuYW1wcm9jcmlnaHR0eXBlOjpyZWd0eXBlOjp0ZXh0LAorICAg ICAgICAgYW1wcm9jLmFtcHJvY251bSwKKyAgICAgICAgIGFtcHJvYy5hbXByb2M6OnJlZ3Byb2M6 OnRleHQ7Cisgb3BmYW1pbHkgfCBsZWZ0dHlwZSB8IHJpZ2h0dHlwZSB8IHByb2NudW0gfCBwcm9j IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0KKygw IHJvd3MpCisKK0NSRUFURSBUQUJMRSBjdF9pMiAoYSBpbnQyKTsKK0NSRUFURSBUQUJMRSBjdF9p NCAoYSBpbnQ0KTsKK0NSRUFURSBUQUJMRSBjdF9pOCAoYSBpbnQ4KTsKK0lOU0VSVCBJTlRPIGN0 X2kyIFNFTEVDVCBnOjppbnQyIEZST00gZ2VuZXJhdGVfc2VyaWVzKC0xMDAsIDEwMCkgZzsKK0lO U0VSVCBJTlRPIGN0X2k0IFNFTEVDVCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKC0xMDAsIDEwMCkg ZzsKK0lOU0VSVCBJTlRPIGN0X2k4IFNFTEVDVCBnOjppbnQ4IEZST00gZ2VuZXJhdGVfc2VyaWVz KC0xMDAsIDEwMCkgZzsKKy0tIEFkZCBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxl IG9ubHkgaW4gd2lkZXIgdHlwZXMsIHRvIGV4ZXJjaXNlCistLSB0aGUgcGF0aCB3aGVyZSB0aGUg Y3Jvc3MtdHlwZSBxdWVyeSBjb25zdGFudCBpcyBvdXQgb2YgcmFuZ2Ugb2YgdGhlIGtleQorLS0g dHlwZS4KK0lOU0VSVCBJTlRPIGN0X2k0IFZBTFVFUyAoMTAwMDAwKSwgKC0xMDAwMDApOworSU5T RVJUIElOVE8gY3RfaTggVkFMVUVTICg1MDAwMDAwMDAwKSwgKC01MDAwMDAwMDAwKTsKK0NSRUFU RSBJTkRFWCBjdF9pMl9pZHggT04gY3RfaTIgVVNJTkcgZ2lzdCAoYSk7CitDUkVBVEUgSU5ERVgg Y3RfaTRfaWR4IE9OIGN0X2k0IFVTSU5HIGdpc3QgKGEpOworQ1JFQVRFIElOREVYIGN0X2k4X2lk eCBPTiBjdF9pOCBVU0lORyBnaXN0IChhKTsKK0FOQUxZWkUgY3RfaTI7CitBTkFMWVpFIGN0X2k0 OworQU5BTFlaRSBjdF9pODsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVf Yml0bWFwc2NhbiA9IG9mZjsKKy0tIGludDIga2V5IHggaW50NCBxdWVyeQorU0VMRUNUIGNvdW50 KCopIEZST00gY3RfaTIgV0hFUkUgYSA8ICA1MDo6aW50NDsKKyBjb3VudCAKKy0tLS0tLS0KKyAg IDE1MAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pMiBXSEVSRSBhIDw9IDUw OjppbnQ0OworIGNvdW50IAorLS0tLS0tLQorICAgMTUxCisoMSByb3cpCisKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIGN0X2kyIFdIRVJFIGEgPSAgNTA6OmludDQ7CisgY291bnQgCistLS0tLS0tCisg ICAgIDEKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTIgV0hFUkUgYSA+PSA1 MDo6aW50NDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICA1MQorKDEgcm93KQorCitTRUxFQ1QgY291 bnQoKikgRlJPTSBjdF9pMiBXSEVSRSBhID4gIDUwOjppbnQ0OworIGNvdW50IAorLS0tLS0tLQor ICAgIDUwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2kyIFdIRVJFIGEgPD4g NTA6OmludDQ7CisgY291bnQgCistLS0tLS0tCisgICAyMDAKKygxIHJvdykKKworLS0gcXVlcnkg b3V0IG9mIGludDIgcmFuZ2U6IG1hdGNoZXMgbm90aGluZyBmb3IgPSwgZXZlcnl0aGluZyBmb3Ig PD4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2kyIFdIRVJFIGEgPSAgMTAwMDAwOjppbnQ0Owor IGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9N IGN0X2kyIFdIRVJFIGEgPD4gMTAwMDAwOjppbnQ0OworIGNvdW50IAorLS0tLS0tLQorICAgMjAx CisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2kyIFdIRVJFIGEgPCAgMTAwMDAw OjppbnQ0OworIGNvdW50IAorLS0tLS0tLQorICAgMjAxCisoMSByb3cpCisKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIGN0X2kyIFdIRVJFIGEgPiAgMTAwMDAwOjppbnQ0OworIGNvdW50IAorLS0tLS0t LQorICAgICAwCisoMSByb3cpCisKKy0tIGludDIga2V5IHggaW50OCBxdWVyeQorU0VMRUNUIGNv dW50KCopIEZST00gY3RfaTIgV0hFUkUgYSA8ICA1MDo6aW50ODsKKyBjb3VudCAKKy0tLS0tLS0K KyAgIDE1MAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pMiBXSEVSRSBhIDw9 IDUwOjppbnQ4OworIGNvdW50IAorLS0tLS0tLQorICAgMTUxCisoMSByb3cpCisKK1NFTEVDVCBj b3VudCgqKSBGUk9NIGN0X2kyIFdIRVJFIGEgPSAgNTA6OmludDg7CisgY291bnQgCistLS0tLS0t CisgICAgIDEKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTIgV0hFUkUgYSA+ PSA1MDo6aW50ODsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICA1MQorKDEgcm93KQorCitTRUxFQ1Qg Y291bnQoKikgRlJPTSBjdF9pMiBXSEVSRSBhID4gIDUwOjppbnQ4OworIGNvdW50IAorLS0tLS0t LQorICAgIDUwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2kyIFdIRVJFIGEg PD4gNTA6OmludDg7CisgY291bnQgCistLS0tLS0tCisgICAyMDAKKygxIHJvdykKKworU0VMRUNU IGNvdW50KCopIEZST00gY3RfaTIgV0hFUkUgYSA9ICA1MDAwMDAwMDAwOjppbnQ4OworIGNvdW50 IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2ky IFdIRVJFIGEgPCAgNTAwMDAwMDAwMDo6aW50ODsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDIwMQor KDEgcm93KQorCistLSBpbnQ0IGtleSB4IGludDIgcXVlcnkKK1NFTEVDVCBjb3VudCgqKSBGUk9N IGN0X2k0IFdIRVJFIGEgPCAgNTA6OmludDI7CisgY291bnQgCistLS0tLS0tCisgICAxNTEKKygx IHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTQgV0hFUkUgYSA8PSA1MDo6aW50MjsK KyBjb3VudCAKKy0tLS0tLS0KKyAgIDE1MgorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJP TSBjdF9pNCBXSEVSRSBhID0gIDUwOjppbnQyOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCiso MSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2k0IFdIRVJFIGEgPj0gNTA6OmludDI7 CisgY291bnQgCistLS0tLS0tCisgICAgNTIKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZS T00gY3RfaTQgV0hFUkUgYSA+ICA1MDo6aW50MjsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICA1MQor KDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pNCBXSEVSRSBhIDw+IDUwOjppbnQy OworIGNvdW50IAorLS0tLS0tLQorICAgMjAyCisoMSByb3cpCisKKy0tIGludDQga2V5IHggaW50 OCBxdWVyeQorU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTQgV0hFUkUgYSA8ICA1MDo6aW50ODsK KyBjb3VudCAKKy0tLS0tLS0KKyAgIDE1MQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJP TSBjdF9pNCBXSEVSRSBhIDw9IDUwOjppbnQ4OworIGNvdW50IAorLS0tLS0tLQorICAgMTUyCiso MSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2k0IFdIRVJFIGEgPSAgNTA6OmludDg7 CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZS T00gY3RfaTQgV0hFUkUgYSA+PSA1MDo6aW50ODsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICA1Mgor KDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pNCBXSEVSRSBhID4gIDUwOjppbnQ4 OworIGNvdW50IAorLS0tLS0tLQorICAgIDUxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIGN0X2k0IFdIRVJFIGEgPD4gNTA6OmludDg7CisgY291bnQgCistLS0tLS0tCisgICAyMDIK KygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTQgV0hFUkUgYSA9ICA1MDAwMDAw MDAwOjppbnQ4OworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK1NFTEVDVCBj b3VudCgqKSBGUk9NIGN0X2k0IFdIRVJFIGEgPCAgNTAwMDAwMDAwMDo6aW50ODsKKyBjb3VudCAK Ky0tLS0tLS0KKyAgIDIwMworKDEgcm93KQorCistLSBpbnQ4IGtleSB4IGludDIgcXVlcnkKK1NF TEVDVCBjb3VudCgqKSBGUk9NIGN0X2k4IFdIRVJFIGEgPCAgNTA6OmludDI7CisgY291bnQgCist LS0tLS0tCisgICAxNTEKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTggV0hF UkUgYSA8PSA1MDo6aW50MjsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDE1MgorKDEgcm93KQorCitT RUxFQ1QgY291bnQoKikgRlJPTSBjdF9pOCBXSEVSRSBhID0gIDUwOjppbnQyOworIGNvdW50IAor LS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2k4IFdI RVJFIGEgPj0gNTA6OmludDI7CisgY291bnQgCistLS0tLS0tCisgICAgNTIKKygxIHJvdykKKwor U0VMRUNUIGNvdW50KCopIEZST00gY3RfaTggV0hFUkUgYSA+ICA1MDo6aW50MjsKKyBjb3VudCAK Ky0tLS0tLS0KKyAgICA1MQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pOCBX SEVSRSBhIDw+IDUwOjppbnQyOworIGNvdW50IAorLS0tLS0tLQorICAgMjAyCisoMSByb3cpCisK Ky0tIGludDgga2V5IHggaW50NCBxdWVyeQorU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTggV0hF UkUgYSA8ICA1MDo6aW50NDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDE1MQorKDEgcm93KQorCitT RUxFQ1QgY291bnQoKikgRlJPTSBjdF9pOCBXSEVSRSBhIDw9IDUwOjppbnQ0OworIGNvdW50IAor LS0tLS0tLQorICAgMTUyCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2k4IFdI RVJFIGEgPSAgNTA6OmludDQ7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKwor U0VMRUNUIGNvdW50KCopIEZST00gY3RfaTggV0hFUkUgYSA+PSA1MDo6aW50NDsKKyBjb3VudCAK Ky0tLS0tLS0KKyAgICA1MgorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pOCBX SEVSRSBhID4gIDUwOjppbnQ0OworIGNvdW50IAorLS0tLS0tLQorICAgIDUxCisoMSByb3cpCisK K1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2k4IFdIRVJFIGEgPD4gNTA6OmludDQ7CisgY291bnQg CistLS0tLS0tCisgICAyMDIKKygxIHJvdykKKworLS0gQ29uZmlybSB0aGUgaW5kZXggaXMgYWN0 dWFsbHkgdXNlZCBmb3IgYSBjcm9zcy10eXBlIHByZWRpY2F0ZS4KK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2k0IFdIRVJFIGEgPSA1MDo6aW50ODsKKyAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAg SW5kZXggT25seSBTY2FuIHVzaW5nIGN0X2k0X2lkeCBvbiBjdF9pNAorICAgICAgICAgSW5kZXgg Q29uZDogKGEgPSAnNTAnOjpiaWdpbnQpCisoMyByb3dzKQorCistLSBDcm9zcy10eXBlIEtOTjog aW50NCBrZXkgb3JkZXJlZCBieSBpbnQyIC8gaW50OCBxdWVyaWVzLgorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIGEgRlJPTSBjdF9pNCBPUkRFUiBCWSBhIDwtPiAnLTEwMCc6OmludDIgTElN SVQgMzsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTGltaXQK KyAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgY3RfaTRfaWR4IG9uIGN0X2k0CisgICAgICAg ICBPcmRlciBCeTogKGEgPC0+ICctMTAwJzo6c21hbGxpbnQpCisoMyByb3dzKQorCitTRUxFQ1Qg YSBGUk9NIGN0X2k0IE9SREVSIEJZIGEgPC0+ICctMTAwJzo6aW50MiBMSU1JVCAzOworICBhICAg CistLS0tLS0KKyAtMTAwCisgIC05OQorICAtOTgKKygzIHJvd3MpCisKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBhIEZST00gY3RfaTQgT1JERVIgQlkgYSA8LT4gJy0xMDAnOjppbnQ4IExJ TUlUIDM7CisgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExpbWl0 CisgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIGN0X2k0X2lkeCBvbiBjdF9pNAorICAgICAg ICAgT3JkZXIgQnk6IChhIDwtPiAnLTEwMCc6OmJpZ2ludCkKKygzIHJvd3MpCisKK1NFTEVDVCBh IEZST00gY3RfaTQgT1JERVIgQlkgYSA8LT4gJy0xMDAnOjppbnQ4IExJTUlUIDM7CisgIGEgICAK Ky0tLS0tLQorIC0xMDAKKyAgLTk5CisgIC05OAorKDMgcm93cykKKworLS0gQ3Jvc3MtdHlwZSBL Tk46IGludDIga2V5IG9yZGVyZWQgYnkgaW50NCAvIGludDggcXVlcmllcy4KK1NFTEVDVCBhIEZS T00gY3RfaTIgT1JERVIgQlkgYSA8LT4gJy0xMDAnOjppbnQ0IExJTUlUIDM7CisgIGEgICAKKy0t LS0tLQorIC0xMDAKKyAgLTk5CisgIC05OAorKDMgcm93cykKKworU0VMRUNUIGEgRlJPTSBjdF9p MiBPUkRFUiBCWSBhIDwtPiAnLTEwMCc6OmludDggTElNSVQgMzsKKyAgYSAgIAorLS0tLS0tCisg LTEwMAorICAtOTkKKyAgLTk4CisoMyByb3dzKQorCistLSBDcm9zcy10eXBlIEtOTjogaW50OCBr ZXkgb3JkZXJlZCBieSBpbnQyIC8gaW50NCBxdWVyaWVzLgorU0VMRUNUIGEgRlJPTSBjdF9pOCBP UkRFUiBCWSBhIDwtPiAnLTEwMCc6OmludDIgTElNSVQgMzsKKyAgYSAgIAorLS0tLS0tCisgLTEw MAorICAtOTkKKyAgLTk4CisoMyByb3dzKQorCitTRUxFQ1QgYSBGUk9NIGN0X2k4IE9SREVSIEJZ IGEgPC0+ICctMTAwJzo6aW50NCBMSU1JVCAzOworICBhICAgCistLS0tLS0KKyAtMTAwCisgIC05 OQorICAtOTgKKygzIHJvd3MpCisKKy0tIENvbWJpbmVkOiBjcm9zcy10eXBlIFdIRVJFICsgY3Jv c3MtdHlwZSBPUkRFUiBCWSBvbiB0aGUgc2FtZSBpbmRleC4KK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBhIEZST00gY3RfaTQgV0hFUkUgYSA8IDgwOjppbnQ4IE9SREVSIEJZIGEgPC0+ICct MTAwJzo6aW50OCBMSU1JVCAzOworICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBMaW1pdAorICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBjdF9pNF9pZHggb24g Y3RfaTQKKyAgICAgICAgIEluZGV4IENvbmQ6IChhIDwgJzgwJzo6YmlnaW50KQorICAgICAgICAg T3JkZXIgQnk6IChhIDwtPiAnLTEwMCc6OmJpZ2ludCkKKyg0IHJvd3MpCisKK1NFTEVDVCBhIEZS T00gY3RfaTQgV0hFUkUgYSA8IDgwOjppbnQ4IE9SREVSIEJZIGEgPC0+ICctMTAwJzo6aW50OCBM SU1JVCAzOworICBhICAgCistLS0tLS0KKyAtMTAwCisgIC05OQorICAtOTgKKygzIHJvd3MpCisK Ky0tIFN0YW5kYWxvbmUgZGlzdGFuY2UtZnVuY3Rpb24gc21va2UgdGVzdHMgKG5vdCBnb2luZyB0 aHJvdWdoIHRoZSBpbmRleCksCistLSBpbmNsdWRpbmcgdGhlIG92ZXJmbG93LWRldGVjdGlvbiBw YXRocy4KK1NFTEVDVCBpbnQyX2ludDRfZGlzdCgzOjppbnQyLCAxMDo6aW50NCk7CisgaW50Ml9p bnQ0X2Rpc3QgCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDcKKygxIHJvdykKKwor U0VMRUNUIGludDRfaW50Ml9kaXN0KC01OjppbnQ0LCA1OjppbnQyKTsKKyBpbnQ0X2ludDJfZGlz dCAKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxMAorKDEgcm93KQorCitTRUxFQ1Qg aW50Ml9pbnQ4X2Rpc3QoMzo6aW50MiwgMTA6OmludDgpOworIGludDJfaW50OF9kaXN0IAorLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICA3CisoMSByb3cpCisKK1NFTEVDVCBpbnQ4X2lu dDJfZGlzdCgxMDA6OmludDgsIC01OjppbnQyKTsKKyBpbnQ4X2ludDJfZGlzdCAKKy0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgIDEwNQorKDEgcm93KQorCitTRUxFQ1QgaW50NF9pbnQ4X2Rp c3QoMTAwOjppbnQ0LCA1MDAwMDAwMDAwOjppbnQ4KTsKKyBpbnQ0X2ludDhfZGlzdCAKKy0tLS0t LS0tLS0tLS0tLS0KKyAgICAgNDk5OTk5OTkwMAorKDEgcm93KQorCitTRUxFQ1QgaW50OF9pbnQ0 X2Rpc3QoNTAwMDAwMDAwMDo6aW50OCwgMTAwOjppbnQ0KTsKKyBpbnQ4X2ludDRfZGlzdCAKKy0t LS0tLS0tLS0tLS0tLS0KKyAgICAgNDk5OTk5OTkwMAorKDEgcm93KQorCistLSBPdmVyZmxvdyBk ZXRlY3Rpb246IElOVDMyX01JTiBkaXN0YW5jZSBmcm9tIGEgcG9zaXRpdmUgaW50MiBjYW4ndCBm aXQKKy0tIGluIGludDMyLCBzaG91bGQgZXJyb3IuCitTRUxFQ1QgaW50Ml9pbnQ0X2Rpc3QoMTo6 aW50MiwgLTIxNDc0ODM2NDg6OmludDQpOworRVJST1I6ICBpbnRlZ2VyIG91dCBvZiByYW5nZQor LS0gTGlrZXdpc2UgSU5UNjRfTUlOIGRpc3RhbmNlIGZyb20gYSBwb3NpdGl2ZSBpbnQ0IGNhbid0 IGZpdCBpbiBpbnQ2NC4KK1NFTEVDVCBpbnQ0X2ludDhfZGlzdCgxOjppbnQ0LCAtOTIyMzM3MjAz Njg1NDc3NTgwODo6aW50OCk7CitFUlJPUjogIGJpZ2ludCBvdXQgb2YgcmFuZ2UKKy0tCistLSBN dWx0aS1jb2x1bW4gR2lTVCBpbmRleCB3aXRoIG1peGVkLXR5cGUgcHJlZGljYXRlcy4gVGhpcyBp cyB0aGUKKy0tIG9yaWdpbmFsIG1vdGl2YXRpbmcgY2FzZTogd2l0aG91dCBjcm9zcy10eXBlIG9w ZXJhdG9yIHN1cHBvcnQgdGhlCistLSBwbGFubmVyIGNhbiBvbmx5IHVzZSBvbmUgY29sdW1uIGFz IGFuIEluZGV4IENvbmQgYW5kIGFwcGxpZXMgdGhlCistLSBvdGhlcihzKSBhcyBhIEZpbHRlciBw b3N0LXNjYW4uIEhlcmUgYm90aCBjb2x1bW5zIHNob3VsZCBhcHBlYXIgYXMKKy0tIEluZGV4IENv bmQuCistLQorQ1JFQVRFIFRBQkxFIGN0X211bHRpIChhIGludDQsIGIgaW50OCk7CitJTlNFUlQg SU5UTyBjdF9tdWx0aQorICAgIFNFTEVDVCBnLCAoZyAqIDIpOjppbnQ4IEZST00gZ2VuZXJhdGVf c2VyaWVzKC01MCwgNTApIGc7CitDUkVBVEUgSU5ERVggY3RfbXVsdGlfaWR4IE9OIGN0X211bHRp IFVTSU5HIGdpc3QgKGEsIGIpOworQU5BTFlaRSBjdF9tdWx0aTsKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X211bHRpIFdIRVJFIGEgPSAyNTo6aW50OCBBTkQg YiA9IDUwOjppbnQ0OworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBj dF9tdWx0aV9pZHggb24gY3RfbXVsdGkKKyAgICAgICAgIEluZGV4IENvbmQ6ICgoYSA9ICcyNSc6 OmJpZ2ludCkgQU5EIChiID0gNTApKQorKDMgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00g Y3RfbXVsdGkgV0hFUkUgYSA9IDI1OjppbnQ4IEFORCBiID0gNTA6OmludDQ7CisgY291bnQgCist LS0tLS0tCisgICAgIDEKKygxIHJvdykKKworLS0gTWl4ZWQgY3Jvc3MtdHlwZSByYW5nZXMgYWNy b3NzIGJvdGggY29sdW1ucy4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIGN0X211bHRpIFdIRVJFIGEgPCAxMDo6aW50OCBBTkQgYiA+IDA6OmludDI7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBj dF9tdWx0aV9pZHggb24gY3RfbXVsdGkKKyAgICAgICAgIEluZGV4IENvbmQ6ICgoYSA8ICcxMCc6 OmJpZ2ludCkgQU5EIChiID4gJzAnOjpzbWFsbGludCkpCisoMyByb3dzKQorCitTRUxFQ1QgY291 bnQoKikgRlJPTSBjdF9tdWx0aSBXSEVSRSBhIDwgMTA6OmludDggQU5EIGIgPiAwOjppbnQyOwor IGNvdW50IAorLS0tLS0tLQorICAgICA5CisoMSByb3cpCisKK0RST1AgVEFCTEUgY3RfbXVsdGk7 CitEUk9QIFRBQkxFIGN0X2kyOworRFJPUCBUQUJMRSBjdF9pNDsKK0RST1AgVEFCTEUgY3RfaTg7 CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3Qvc3FsL2ludF9jcm9zc3R5cGUuc3FsIGIv Y29udHJpYi9idHJlZV9naXN0L3NxbC9pbnRfY3Jvc3N0eXBlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDM4MDg0ZjE5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9j b250cmliL2J0cmVlX2dpc3Qvc3FsL2ludF9jcm9zc3R5cGUuc3FsCkBAIC0wLDAgKzEsMjM2IEBA CistLSBDcm9zcy10eXBlIG9wZXJhdG9yIHN1cHBvcnQgZm9yIGludDIvaW50NC9pbnQ4IGluIEdp U1QuCistLQorLS0gVmVyaWZpZXMgdGhhdCAoYSkgdGhlIGNyb3NzLXR5cGUgQi10cmVlLXN0eWxl IG9wZXJhdG9ycyByZWdpc3RlcmVkIGluCistLSBnaXN0X2ludHsyLDQsOH1fb3BzIG1hdGNoIHRo ZSByZXN1bHRzIG9mIHNlcXNjYW5zIHVzaW5nIHRoZSBzYW1lIG9wZXJhdG9yCistLSBleHByZXNz aW9ucywgKGIpIHRoZSBLTk4gPC0+IG9wZXJhdG9yIHdvcmtzIGFjcm9zcyB0eXBlcyBhbmQgdXNl cyB0aGUKKy0tIGluZGV4LCBhbmQgKGMpIHZhbHVlcyBvdXRzaWRlIHRoZSBzbWFsbGVyIHN1YnR5 cGUncyByYW5nZSBhcmUgaGFuZGxlZAorLS0gYWNjb3JkaW5nIHRvIG5vcm1hbCBjb21wYXJpc29u IHNlbWFudGljcywgd2l0aG91dCBuYXJyb3dpbmcgb3IgZXJyb3JpbmcuCisKKy0tCistLSBDYXRh bG9nIGludmFyaWFudDogdGhlIGNyb3NzLXR5cGUgcGdfYW1vcCBlbnRyaWVzIGluIGdpc3RfaW50 ezIsNCw4fV9vcHMgbXVzdAorLS0gYWdyZWUsIGluIGJvdGggZGlyZWN0aW9ucywgd2l0aCB3aGF0 IHRoZSBDIGNyb3NzLXR5cGUgZGlzcGF0Y2ggY2FuIGhhbmRsZS4KKy0tIFRoZSBzZXQgb2Ygc3Vw cG9ydGVkIHF1ZXJ5IHN1YnR5cGVzIGlzIHJlYWQgZnJvbSB0aGUgQyBzaWRlIHZpYQorLS0gZ2J0 X2ludF9jcm9zc3R5cGVfc3VidHlwZXMoKSwgc28gdGhlcmUgaXMgbm8gaGFuZC1tYWludGFpbmVk IHNlY29uZCBjb3B5IG9mCistLSB0aGUgbGlzdCBoZXJlOiByZWdpc3RlcmluZyBhIHBnX2Ftb3Ag cm93IHdob3NlIHN1YnR5cGUgdGhlIGRpc3BhdGNoIGRvZXMgbm90CistLSBoYW5kbGUgKG9yIGRy b3BwaW5nIGEgZGlzcGF0Y2ggZW50cnkgd2hpbGUgaXRzIHBnX2Ftb3Agcm93cyByZW1haW4sIG9y IHZpY2UKKy0tIHZlcnNhKSBzaG93cyB1cCBhcyBhIGRpZmYgYmVsb3cuIENyb3NzLXR5cGUgcGdf YW1wcm9jIHJvd3MgbXVzdCBhbHNvIHN0YXkKKy0tIGFic2VudCwgc2luY2UgdGhlIGRpc3BhdGNo IHJldXNlcyB0aGUgc2FtZS10eXBlIHN1cHBvcnQgZnVuY3Rpb25zLgorLS0KK1dJVEggZGlzcGF0 Y2hfc3VidHlwZXModHlwKSBBUyAoCisgICAgU0VMRUNUIHMuc3VidHlwZTo6cmVndHlwZQorICAg IEZST00gZ2J0X2ludF9jcm9zc3R5cGVfc3VidHlwZXMoKSBBUyBzKHN1YnR5cGUpCispLAorZ2lz dF9pbnRfb3BjbGFzc2VzKG9wZmFtaWx5LCBpbmRleHR5cGUpIEFTICgKKyAgICBTRUxFQ1Qgb3Bj Lm9wY25hbWU6OnRleHQsIG9wYy5vcGNpbnR5cGU6OnJlZ3R5cGUKKyAgICBGUk9NIHBnX29wY2xh c3Mgb3BjCisgICAgICAgICBKT0lOIHBnX2FtIGFtIE9OIGFtLm9pZCA9IG9wYy5vcGNtZXRob2QK KyAgICBXSEVSRSBhbS5hbW5hbWUgPSAnZ2lzdCcKKyAgICAgIEFORCBvcGMub3BjbmFtZSBJTiAo J2dpc3RfaW50Ml9vcHMnLCAnZ2lzdF9pbnQ0X29wcycsICdnaXN0X2ludDhfb3BzJykKKyksCitl eHBlY3RlZF9wYWlycyhvcGZhbWlseSwgbGVmdHR5cGUsIHJpZ2h0dHlwZSkgQVMgKAorICAgIFNF TEVDVCBvYy5vcGZhbWlseSwgb2MuaW5kZXh0eXBlLCBkcy50eXAKKyAgICBGUk9NIGdpc3RfaW50 X29wY2xhc3NlcyBvYworICAgICAgICAgQ1JPU1MgSk9JTiBkaXNwYXRjaF9zdWJ0eXBlcyBkcwor ICAgIFdIRVJFIGRzLnR5cCA8PiBvYy5pbmRleHR5cGUKKyksCitleHBlY3RlZF9hbW9wKG9wZmFt aWx5LCBsZWZ0dHlwZSwgcmlnaHR0eXBlLCBzdHJhdGVneSwgcHVycG9zZSkgQVMgKAorICAgIFNF TEVDVCBvcGZhbWlseSwgbGVmdHR5cGUsIHJpZ2h0dHlwZSwgc3RyYXRlZ3ksIHB1cnBvc2UKKyAg ICBGUk9NIGV4cGVjdGVkX3BhaXJzCisgICAgICAgICBDUk9TUyBKT0lOIChWQUxVRVMKKyAgICAg ICAgICAgICAoMSwgJ3MnKSwgKDIsICdzJyksICgzLCAncycpLCAoNCwgJ3MnKSwKKyAgICAgICAg ICAgICAoNSwgJ3MnKSwgKDYsICdzJyksICgxNSwgJ28nKQorICAgICAgICAgKSBBUyBzdHJhdGVn eV9wdXJwb3NlcyhzdHJhdGVneSwgcHVycG9zZSkKKyksCithY3R1YWxfYW1vcCBBUyAoCisgICAg U0VMRUNUIG9wZi5vcGZuYW1lOjp0ZXh0IEFTIG9wZmFtaWx5LAorICAgICAgICAgICBhbW9wLmFt b3BsZWZ0dHlwZTo6cmVndHlwZSBBUyBsZWZ0dHlwZSwKKyAgICAgICAgICAgYW1vcC5hbW9wcmln aHR0eXBlOjpyZWd0eXBlIEFTIHJpZ2h0dHlwZSwKKyAgICAgICAgICAgYW1vcC5hbW9wc3RyYXRl Z3k6OmludCBBUyBzdHJhdGVneSwKKyAgICAgICAgICAgYW1vcC5hbW9wcHVycG9zZTo6dGV4dCBB UyBwdXJwb3NlCisgICAgRlJPTSBwZ19hbW9wIGFtb3AKKyAgICAgICAgIEpPSU4gcGdfb3BmYW1p bHkgb3BmIE9OIG9wZi5vaWQgPSBhbW9wLmFtb3BmYW1pbHkKKyAgICAgICAgIEpPSU4gcGdfYW0g YW0gT04gYW0ub2lkID0gb3BmLm9wZm1ldGhvZAorICAgIFdIRVJFIGFtLmFtbmFtZSA9ICdnaXN0 JworICAgICAgQU5EIG9wZi5vcGZuYW1lIElOICgnZ2lzdF9pbnQyX29wcycsICdnaXN0X2ludDRf b3BzJywgJ2dpc3RfaW50OF9vcHMnKQorICAgICAgQU5EIGFtb3AuYW1vcGxlZnR0eXBlIDw+IGFt b3AuYW1vcHJpZ2h0dHlwZQorKQorU0VMRUNUICoKK0ZST00gKAorICAgIFNFTEVDVCAnbWlzc2lu ZyBmcm9tIHBnX2Ftb3AnIEFTIHN0YXR1cywgKgorICAgIEZST00gKFNFTEVDVCAqIEZST00gZXhw ZWN0ZWRfYW1vcCBFWENFUFQgU0VMRUNUICogRlJPTSBhY3R1YWxfYW1vcCkgbWlzc2luZworICAg IFVOSU9OIEFMTAorICAgIFNFTEVDVCAndW5leHBlY3RlZCBpbiBwZ19hbW9wJyBBUyBzdGF0dXMs ICoKKyAgICBGUk9NIChTRUxFQ1QgKiBGUk9NIGFjdHVhbF9hbW9wIEVYQ0VQVCBTRUxFQ1QgKiBG Uk9NIGV4cGVjdGVkX2Ftb3ApIHVuZXhwZWN0ZWQKKykgZGlmZgorT1JERVIgQlkgc3RhdHVzLCBv cGZhbWlseSwgbGVmdHR5cGU6OnRleHQsIHJpZ2h0dHlwZTo6dGV4dCwgc3RyYXRlZ3ksIHB1cnBv c2U7CisKK1NFTEVDVCBvcGYub3BmbmFtZSBBUyBvcGZhbWlseSwKKyAgICAgICBhbXByb2MuYW1w cm9jbGVmdHR5cGU6OnJlZ3R5cGUgQVMgbGVmdHR5cGUsCisgICAgICAgYW1wcm9jLmFtcHJvY3Jp Z2h0dHlwZTo6cmVndHlwZSBBUyByaWdodHR5cGUsCisgICAgICAgYW1wcm9jLmFtcHJvY251bSBB UyBwcm9jbnVtLAorICAgICAgIGFtcHJvYy5hbXByb2M6OnJlZ3Byb2MgQVMgcHJvYworRlJPTSBw Z19hbXByb2MgYW1wcm9jCisgICAgIEpPSU4gcGdfb3BmYW1pbHkgb3BmIE9OIG9wZi5vaWQgPSBh bXByb2MuYW1wcm9jZmFtaWx5CisgICAgIEpPSU4gcGdfYW0gYW0gT04gYW0ub2lkID0gb3BmLm9w Zm1ldGhvZAorV0hFUkUgYW0uYW1uYW1lID0gJ2dpc3QnCisgIEFORCBvcGYub3BmbmFtZSBJTiAo J2dpc3RfaW50Ml9vcHMnLCAnZ2lzdF9pbnQ0X29wcycsICdnaXN0X2ludDhfb3BzJykKKyAgQU5E IGFtcHJvYy5hbXByb2NsZWZ0dHlwZSA8PiBhbXByb2MuYW1wcm9jcmlnaHR0eXBlCitPUkRFUiBC WSBvcGYub3BmbmFtZSwKKyAgICAgICAgIGFtcHJvYy5hbXByb2NsZWZ0dHlwZTo6cmVndHlwZTo6 dGV4dCwKKyAgICAgICAgIGFtcHJvYy5hbXByb2NyaWdodHR5cGU6OnJlZ3R5cGU6OnRleHQsCisg ICAgICAgICBhbXByb2MuYW1wcm9jbnVtLAorICAgICAgICAgYW1wcm9jLmFtcHJvYzo6cmVncHJv Yzo6dGV4dDsKKworQ1JFQVRFIFRBQkxFIGN0X2kyIChhIGludDIpOworQ1JFQVRFIFRBQkxFIGN0 X2k0IChhIGludDQpOworQ1JFQVRFIFRBQkxFIGN0X2k4IChhIGludDgpOworCitJTlNFUlQgSU5U TyBjdF9pMiBTRUxFQ1QgZzo6aW50MiBGUk9NIGdlbmVyYXRlX3NlcmllcygtMTAwLCAxMDApIGc7 CitJTlNFUlQgSU5UTyBjdF9pNCBTRUxFQ1QgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygtMTAwLCAx MDApIGc7CitJTlNFUlQgSU5UTyBjdF9pOCBTRUxFQ1QgZzo6aW50OCBGUk9NIGdlbmVyYXRlX3Nl cmllcygtMTAwLCAxMDApIGc7CisKKy0tIEFkZCBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNl bnRhYmxlIG9ubHkgaW4gd2lkZXIgdHlwZXMsIHRvIGV4ZXJjaXNlCistLSB0aGUgcGF0aCB3aGVy ZSB0aGUgY3Jvc3MtdHlwZSBxdWVyeSBjb25zdGFudCBpcyBvdXQgb2YgcmFuZ2Ugb2YgdGhlIGtl eQorLS0gdHlwZS4KK0lOU0VSVCBJTlRPIGN0X2k0IFZBTFVFUyAoMTAwMDAwKSwgKC0xMDAwMDAp OworSU5TRVJUIElOVE8gY3RfaTggVkFMVUVTICg1MDAwMDAwMDAwKSwgKC01MDAwMDAwMDAwKTsK KworQ1JFQVRFIElOREVYIGN0X2kyX2lkeCBPTiBjdF9pMiBVU0lORyBnaXN0IChhKTsKK0NSRUFU RSBJTkRFWCBjdF9pNF9pZHggT04gY3RfaTQgVVNJTkcgZ2lzdCAoYSk7CitDUkVBVEUgSU5ERVgg Y3RfaThfaWR4IE9OIGN0X2k4IFVTSU5HIGdpc3QgKGEpOworCitBTkFMWVpFIGN0X2kyOworQU5B TFlaRSBjdF9pNDsKK0FOQUxZWkUgY3RfaTg7CisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsK K1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKworLS0gaW50MiBrZXkgeCBpbnQ0IHF1ZXJ5 CitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pMiBXSEVSRSBhIDwgIDUwOjppbnQ0OworU0VMRUNU IGNvdW50KCopIEZST00gY3RfaTIgV0hFUkUgYSA8PSA1MDo6aW50NDsKK1NFTEVDVCBjb3VudCgq KSBGUk9NIGN0X2kyIFdIRVJFIGEgPSAgNTA6OmludDQ7CitTRUxFQ1QgY291bnQoKikgRlJPTSBj dF9pMiBXSEVSRSBhID49IDUwOjppbnQ0OworU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTIgV0hF UkUgYSA+ICA1MDo6aW50NDsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2kyIFdIRVJFIGEgPD4g NTA6OmludDQ7CisKKy0tIHF1ZXJ5IG91dCBvZiBpbnQyIHJhbmdlOiBtYXRjaGVzIG5vdGhpbmcg Zm9yID0sIGV2ZXJ5dGhpbmcgZm9yIDw+CitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pMiBXSEVS RSBhID0gIDEwMDAwMDo6aW50NDsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2kyIFdIRVJFIGEg PD4gMTAwMDAwOjppbnQ0OworU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTIgV0hFUkUgYSA8ICAx MDAwMDA6OmludDQ7CitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pMiBXSEVSRSBhID4gIDEwMDAw MDo6aW50NDsKKworLS0gaW50MiBrZXkgeCBpbnQ4IHF1ZXJ5CitTRUxFQ1QgY291bnQoKikgRlJP TSBjdF9pMiBXSEVSRSBhIDwgIDUwOjppbnQ4OworU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTIg V0hFUkUgYSA8PSA1MDo6aW50ODsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2kyIFdIRVJFIGEg PSAgNTA6OmludDg7CitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pMiBXSEVSRSBhID49IDUwOjpp bnQ4OworU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTIgV0hFUkUgYSA+ICA1MDo6aW50ODsKK1NF TEVDVCBjb3VudCgqKSBGUk9NIGN0X2kyIFdIRVJFIGEgPD4gNTA6OmludDg7CitTRUxFQ1QgY291 bnQoKikgRlJPTSBjdF9pMiBXSEVSRSBhID0gIDUwMDAwMDAwMDA6OmludDg7CitTRUxFQ1QgY291 bnQoKikgRlJPTSBjdF9pMiBXSEVSRSBhIDwgIDUwMDAwMDAwMDA6OmludDg7CisKKy0tIGludDQg a2V5IHggaW50MiBxdWVyeQorU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTQgV0hFUkUgYSA8ICA1 MDo6aW50MjsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2k0IFdIRVJFIGEgPD0gNTA6OmludDI7 CitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pNCBXSEVSRSBhID0gIDUwOjppbnQyOworU0VMRUNU IGNvdW50KCopIEZST00gY3RfaTQgV0hFUkUgYSA+PSA1MDo6aW50MjsKK1NFTEVDVCBjb3VudCgq KSBGUk9NIGN0X2k0IFdIRVJFIGEgPiAgNTA6OmludDI7CitTRUxFQ1QgY291bnQoKikgRlJPTSBj dF9pNCBXSEVSRSBhIDw+IDUwOjppbnQyOworCistLSBpbnQ0IGtleSB4IGludDggcXVlcnkKK1NF TEVDVCBjb3VudCgqKSBGUk9NIGN0X2k0IFdIRVJFIGEgPCAgNTA6OmludDg7CitTRUxFQ1QgY291 bnQoKikgRlJPTSBjdF9pNCBXSEVSRSBhIDw9IDUwOjppbnQ4OworU0VMRUNUIGNvdW50KCopIEZS T00gY3RfaTQgV0hFUkUgYSA9ICA1MDo6aW50ODsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2k0 IFdIRVJFIGEgPj0gNTA6OmludDg7CitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pNCBXSEVSRSBh ID4gIDUwOjppbnQ4OworU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTQgV0hFUkUgYSA8PiA1MDo6 aW50ODsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2k0IFdIRVJFIGEgPSAgNTAwMDAwMDAwMDo6 aW50ODsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2k0IFdIRVJFIGEgPCAgNTAwMDAwMDAwMDo6 aW50ODsKKworLS0gaW50OCBrZXkgeCBpbnQyIHF1ZXJ5CitTRUxFQ1QgY291bnQoKikgRlJPTSBj dF9pOCBXSEVSRSBhIDwgIDUwOjppbnQyOworU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTggV0hF UkUgYSA8PSA1MDo6aW50MjsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2k4IFdIRVJFIGEgPSAg NTA6OmludDI7CitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9pOCBXSEVSRSBhID49IDUwOjppbnQy OworU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTggV0hFUkUgYSA+ICA1MDo6aW50MjsKK1NFTEVD VCBjb3VudCgqKSBGUk9NIGN0X2k4IFdIRVJFIGEgPD4gNTA6OmludDI7CisKKy0tIGludDgga2V5 IHggaW50NCBxdWVyeQorU0VMRUNUIGNvdW50KCopIEZST00gY3RfaTggV0hFUkUgYSA8ICA1MDo6 aW50NDsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X2k4IFdIRVJFIGEgPD0gNTA6OmludDQ7CitT RUxFQ1QgY291bnQoKikgRlJPTSBjdF9pOCBXSEVSRSBhID0gIDUwOjppbnQ0OworU0VMRUNUIGNv dW50KCopIEZST00gY3RfaTggV0hFUkUgYSA+PSA1MDo6aW50NDsKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIGN0X2k4IFdIRVJFIGEgPiAgNTA6OmludDQ7CitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9p OCBXSEVSRSBhIDw+IDUwOjppbnQ0OworCistLSBDb25maXJtIHRoZSBpbmRleCBpcyBhY3R1YWxs eSB1c2VkIGZvciBhIGNyb3NzLXR5cGUgcHJlZGljYXRlLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIGNvdW50KCopIEZST00gY3RfaTQgV0hFUkUgYSA9IDUwOjppbnQ4OworCistLSBDcm9z cy10eXBlIEtOTjogaW50NCBrZXkgb3JkZXJlZCBieSBpbnQyIC8gaW50OCBxdWVyaWVzLgorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGEgRlJPTSBjdF9pNCBPUkRFUiBCWSBhIDwtPiAnLTEw MCc6OmludDIgTElNSVQgMzsKK1NFTEVDVCBhIEZST00gY3RfaTQgT1JERVIgQlkgYSA8LT4gJy0x MDAnOjppbnQyIExJTUlUIDM7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBhIEZST00g Y3RfaTQgT1JERVIgQlkgYSA8LT4gJy0xMDAnOjppbnQ4IExJTUlUIDM7CitTRUxFQ1QgYSBGUk9N IGN0X2k0IE9SREVSIEJZIGEgPC0+ICctMTAwJzo6aW50OCBMSU1JVCAzOworCistLSBDcm9zcy10 eXBlIEtOTjogaW50MiBrZXkgb3JkZXJlZCBieSBpbnQ0IC8gaW50OCBxdWVyaWVzLgorU0VMRUNU IGEgRlJPTSBjdF9pMiBPUkRFUiBCWSBhIDwtPiAnLTEwMCc6OmludDQgTElNSVQgMzsKK1NFTEVD VCBhIEZST00gY3RfaTIgT1JERVIgQlkgYSA8LT4gJy0xMDAnOjppbnQ4IExJTUlUIDM7CisKKy0t IENyb3NzLXR5cGUgS05OOiBpbnQ4IGtleSBvcmRlcmVkIGJ5IGludDIgLyBpbnQ0IHF1ZXJpZXMu CitTRUxFQ1QgYSBGUk9NIGN0X2k4IE9SREVSIEJZIGEgPC0+ICctMTAwJzo6aW50MiBMSU1JVCAz OworU0VMRUNUIGEgRlJPTSBjdF9pOCBPUkRFUiBCWSBhIDwtPiAnLTEwMCc6OmludDQgTElNSVQg MzsKKworLS0gQ29tYmluZWQ6IGNyb3NzLXR5cGUgV0hFUkUgKyBjcm9zcy10eXBlIE9SREVSIEJZ IG9uIHRoZSBzYW1lIGluZGV4LgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGEgRlJPTSBj dF9pNCBXSEVSRSBhIDwgODA6OmludDggT1JERVIgQlkgYSA8LT4gJy0xMDAnOjppbnQ4IExJTUlU IDM7CitTRUxFQ1QgYSBGUk9NIGN0X2k0IFdIRVJFIGEgPCA4MDo6aW50OCBPUkRFUiBCWSBhIDwt PiAnLTEwMCc6OmludDggTElNSVQgMzsKKworLS0gU3RhbmRhbG9uZSBkaXN0YW5jZS1mdW5jdGlv biBzbW9rZSB0ZXN0cyAobm90IGdvaW5nIHRocm91Z2ggdGhlIGluZGV4KSwKKy0tIGluY2x1ZGlu ZyB0aGUgb3ZlcmZsb3ctZGV0ZWN0aW9uIHBhdGhzLgorU0VMRUNUIGludDJfaW50NF9kaXN0KDM6 OmludDIsIDEwOjppbnQ0KTsKK1NFTEVDVCBpbnQ0X2ludDJfZGlzdCgtNTo6aW50NCwgNTo6aW50 Mik7CitTRUxFQ1QgaW50Ml9pbnQ4X2Rpc3QoMzo6aW50MiwgMTA6OmludDgpOworU0VMRUNUIGlu dDhfaW50Ml9kaXN0KDEwMDo6aW50OCwgLTU6OmludDIpOworU0VMRUNUIGludDRfaW50OF9kaXN0 KDEwMDo6aW50NCwgNTAwMDAwMDAwMDo6aW50OCk7CitTRUxFQ1QgaW50OF9pbnQ0X2Rpc3QoNTAw MDAwMDAwMDo6aW50OCwgMTAwOjppbnQ0KTsKKworLS0gT3ZlcmZsb3cgZGV0ZWN0aW9uOiBJTlQz Ml9NSU4gZGlzdGFuY2UgZnJvbSBhIHBvc2l0aXZlIGludDIgY2FuJ3QgZml0CistLSBpbiBpbnQz Miwgc2hvdWxkIGVycm9yLgorU0VMRUNUIGludDJfaW50NF9kaXN0KDE6OmludDIsIC0yMTQ3NDgz NjQ4OjppbnQ0KTsKKy0tIExpa2V3aXNlIElOVDY0X01JTiBkaXN0YW5jZSBmcm9tIGEgcG9zaXRp dmUgaW50NCBjYW4ndCBmaXQgaW4gaW50NjQuCitTRUxFQ1QgaW50NF9pbnQ4X2Rpc3QoMTo6aW50 NCwgLTkyMjMzNzIwMzY4NTQ3NzU4MDg6OmludDgpOworCistLQorLS0gTXVsdGktY29sdW1uIEdp U1QgaW5kZXggd2l0aCBtaXhlZC10eXBlIHByZWRpY2F0ZXMuIFRoaXMgaXMgdGhlCistLSBvcmln aW5hbCBtb3RpdmF0aW5nIGNhc2U6IHdpdGhvdXQgY3Jvc3MtdHlwZSBvcGVyYXRvciBzdXBwb3J0 IHRoZQorLS0gcGxhbm5lciBjYW4gb25seSB1c2Ugb25lIGNvbHVtbiBhcyBhbiBJbmRleCBDb25k IGFuZCBhcHBsaWVzIHRoZQorLS0gb3RoZXIocykgYXMgYSBGaWx0ZXIgcG9zdC1zY2FuLiBIZXJl IGJvdGggY29sdW1ucyBzaG91bGQgYXBwZWFyIGFzCistLSBJbmRleCBDb25kLgorLS0KK0NSRUFU RSBUQUJMRSBjdF9tdWx0aSAoYSBpbnQ0LCBiIGludDgpOworSU5TRVJUIElOVE8gY3RfbXVsdGkK KyAgICBTRUxFQ1QgZywgKGcgKiAyKTo6aW50OCBGUk9NIGdlbmVyYXRlX3NlcmllcygtNTAsIDUw KSBnOworQ1JFQVRFIElOREVYIGN0X211bHRpX2lkeCBPTiBjdF9tdWx0aSBVU0lORyBnaXN0IChh LCBiKTsKK0FOQUxZWkUgY3RfbXVsdGk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBj b3VudCgqKSBGUk9NIGN0X211bHRpIFdIRVJFIGEgPSAyNTo6aW50OCBBTkQgYiA9IDUwOjppbnQ0 OworCitTRUxFQ1QgY291bnQoKikgRlJPTSBjdF9tdWx0aSBXSEVSRSBhID0gMjU6OmludDggQU5E IGIgPSA1MDo6aW50NDsKKworLS0gTWl4ZWQgY3Jvc3MtdHlwZSByYW5nZXMgYWNyb3NzIGJvdGgg Y29sdW1ucy4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGN0X211 bHRpIFdIRVJFIGEgPCAxMDo6aW50OCBBTkQgYiA+IDA6OmludDI7CisKK1NFTEVDVCBjb3VudCgq KSBGUk9NIGN0X211bHRpIFdIRVJFIGEgPCAxMDo6aW50OCBBTkQgYiA+IDA6OmludDI7CisKK0RS T1AgVEFCTEUgY3RfbXVsdGk7CisKK0RST1AgVEFCTEUgY3RfaTI7CitEUk9QIFRBQkxFIGN0X2k0 OworRFJPUCBUQUJMRSBjdF9pODsKLS0gCjIuNTEuMAoK --6a3b0e80_2acbe2e_5be Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v4-0003-Add-docs-for-cross-type-operators-for-GiST-indexes.patch" RnJvbSBiZjc2YThjNzVkZGZmNjI1Mzk2MTUyM2E5ZTJjMDNjM2Y3MTQ4MGVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTmVzdG9yb3YgPGFsZXhhbmRlcm5zdEBnbWFp bC5jb20+CkRhdGU6IFRodSwgNCBKdW4gMjAyNiAwMDowOTowOCArMDIwMApTdWJqZWN0OiBbUEFU Q0hdIEFkZCBkb2NzIGZvciBjcm9zcy10eXBlIG9wZXJhdG9ycyBmb3IgR2lTVCBpbmRleGVzCgot LS0KIGRvYy9zcmMvc2dtbC9idHJlZS1naXN0LnNnbWwgfCAyNCArKysrKysrKysrKysrKysrKysr KysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2J0cmVlLWdpc3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9idHJlZS1naXN0LnNnbWwK aW5kZXggY2MwOWVjODM3MzMuLjFiMWRjZTcwN2NmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv YnRyZWUtZ2lzdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9idHJlZS1naXN0LnNnbWwKQEAgLTQ5 LDEyICs0OSwzNiBAQAogICA8dHlwZT5mbG9hdDg8L3R5cGU+LCA8dHlwZT50aW1lc3RhbXAgd2l0 aCB0aW1lIHpvbmU8L3R5cGU+LAogICA8dHlwZT50aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmU8 L3R5cGU+LAogICA8dHlwZT50aW1lIHdpdGhvdXQgdGltZSB6b25lPC90eXBlPiwgPHR5cGU+ZGF0 ZTwvdHlwZT4sIDx0eXBlPmludGVydmFsPC90eXBlPiwKICAgPHR5cGU+b2lkPC90eXBlPiwgYW5k IDx0eXBlPm1vbmV5PC90eXBlPi4KICA8L3BhcmE+CiAKKyA8cGFyYT4KKyAgQXMgb2YgdmVyc2lv biAxLjEwLCB0aGUgb3BlcmF0b3IgY2xhc3NlcyBmb3IgPHR5cGU+aW50MjwvdHlwZT4sCisgIDx0 eXBlPmludDQ8L3R5cGU+IGFuZCA8dHlwZT5pbnQ4PC90eXBlPiBhZGRpdGlvbmFsbHkgc3VwcG9y dCBjcm9zcy10eXBlCisgIHF1ZXJ5IG9wZXJhdG9ycy4gQW4gaW5kZXggb24gYW55IG9uZSBvZiB0 aGVzZSBpbnRlZ2VyIHR5cGVzIGNhbiBiZSB1c2VkCisgIHdpdGggYSBCLXRyZWUtc3R5bGUgY29t cGFyaXNvbiAoPGxpdGVyYWw+Jmx0OzwvbGl0ZXJhbD4sCisgIDxsaXRlcmFsPiZsdDs9PC9saXRl cmFsPiwgPGxpdGVyYWw+PTwvbGl0ZXJhbD4sIDxsaXRlcmFsPiZndDs9PC9saXRlcmFsPiwKKyAg PGxpdGVyYWw+Jmd0OzwvbGl0ZXJhbD4sIDxsaXRlcmFsPiZsdDsmZ3Q7PC9saXRlcmFsPikgb3Ig d2l0aCB0aGUKKyAgZGlzdGFuY2Ugb3BlcmF0b3IgKDxsaXRlcmFsPiZsdDstJmd0OzwvbGl0ZXJh bD4pIGFnYWluc3QgYSB2YWx1ZSBvZiBhbnkKKyAgb2YgdGhlIG90aGVyIHR3byBpbnRlZ2VyIHR5 cGVzLCB3aXRob3V0IGFuIGV4cGxpY2l0IGNhc3QuIFF1ZXJ5CisgIGNvbnN0YW50cyBvdXRzaWRl IHRoZSBpbmRleGVkIGNvbHVtbidzIHJhbmdlIGFyZSBjb21wYXJlZCBhY2NvcmRpbmcgdG8KKyAg bm9ybWFsIGludGVnZXIgY29tcGFyaXNvbiBzZW1hbnRpY3MsIHdpdGhvdXQgbmFycm93aW5nIHRo ZSBxdWVyeSB2YWx1ZQorICB0byB0aGUgY29sdW1uIHR5cGUgZmlyc3QuCisgPC9wYXJhPgorCisg PHBhcmE+CisgIFRoZSBpbnRlZ2VyIGRpc3RhbmNlIG9wZXJhdG9yICg8bGl0ZXJhbD4mbHQ7LSZn dDs8L2xpdGVyYWw+KSB1c2VkIGZvcgorICBuZWFyZXN0LW5laWdoYm9yICg8bGl0ZXJhbD5PUkRF UiBCWTwvbGl0ZXJhbD4pIHNlYXJjaGVzIGNvbXB1dGVzIHRoZQorICBkaXN0YW5jZSBpbiA8dHlw ZT5mbG9hdDg8L3R5cGU+LiBGb3IgPHR5cGU+aW50ODwvdHlwZT4gdmFsdWVzIHdob3NlCisgIGRp c3RhbmNlIGZyb20gdGhlIHF1ZXJ5IGV4Y2VlZHMgMl41MywgdGhlIHJlc3VsdCBsb3NlcyBwcmVj aXNpb24gYW5kCisgIG1heSByZW9yZGVyIHJlc3VsdHMgdGhhdCBhcmUgbmVhcmx5IGVxdWlkaXN0 YW50OyBpdCBuZXZlciBjaGFuZ2VzIHdoaWNoCisgIHJvd3MgbWF0Y2guIFRoaXMgYXBwbGllcyBl cXVhbGx5IHRvIHNhbWUtdHlwZSBhbmQgY3Jvc3MtdHlwZQorICA8dHlwZT5pbnQ4PC90eXBlPiBk aXN0YW5jZSBzZWFyY2hlcy4KKyA8L3BhcmE+CisKICA8cGFyYT4KICAgQnkgZGVmYXVsdCA8Zmls ZW5hbWU+YnRyZWVfZ2lzdDwvZmlsZW5hbWU+IGJ1aWxkcyA8YWNyb255bT5HaVNUPC9hY3Jvbnlt PiBpbmRleCB3aXRoCiAgIDxmdW5jdGlvbj5zb3J0c3VwcG9ydDwvZnVuY3Rpb24+IGluIDxmaXJz dHRlcm0+c29ydGVkPC9maXJzdHRlcm0+IG1vZGUuIFRoaXMgdXN1YWxseSByZXN1bHRzIGluCiAg IG11Y2ggZmFzdGVyIGluZGV4IGJ1aWx0IHNwZWVkLiBJdCBpcyBzdGlsbCBwb3NzaWJsZSB0byBy ZXZlcnQgdG8gYnVmZmVyZWQgYnVpbHQgc3RyYXRlZ3kKICAgYnkgdXNpbmcgdGhlIDxsaXRlcmFs PmJ1ZmZlcmluZzwvbGl0ZXJhbD4gcGFyYW1ldGVyIHdoZW4gY3JlYXRpbmcgdGhlIGluZGV4Lgog IDwvcGFyYT4KLS0gCjIuNTEuMAoK --6a3b0e80_2acbe2e_5be Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?utf-8?Q?v4-0004-Reuse-gbt=5Fnum=5Fconsistent-for-cross-type-integer-comp.patch?=" RnJvbSA0NDk5YTBmODQ2MjYyZDZiZmM4ZjAxZDljYTYxY2U0YzQxODU3NzIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgU2Nob2VtYW5zIDxtYXhpbWUuc2Nob2VtYW5zQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IE1vbiwgMjIgSnVuIDIwMjYgMTM6MzE6NDEgKzAyMDAKU3Vi amVjdDogW1BBVENIXSBSZXVzZSBnYnRfbnVtX2NvbnNpc3RlbnQgZm9yIGNyb3NzLXR5cGUgaW50 ZWdlciBjb21wYXJpc29ucwoKLS0tCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS45 LS0xLjEwLnNxbCAgfCAgMTMgKy0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQyLmMgICAg ICAgICAgICAgICB8ICA5OCArKysrKysrLS0tCiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50 NC5jICAgICAgICAgICAgICAgfCAgOTggKysrKysrKy0tLQogY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2ludDguYyAgICAgICAgICAgICAgIHwgIDk4ICsrKysrKystLS0KIGNvbnRyaWIvYnRyZWVf Z2lzdC9idHJlZV91dGlsc19udW0uYyAgICAgICAgICB8IDE2OSArLS0tLS0tLS0tLS0tLS0tLS0K IGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc19udW0uaCAgICAgICAgICB8ICA1NSArKysr LS0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9leHBlY3RlZC9pbnRfY3Jvc3N0eXBlLm91dCB8ICA2MyAr LS0tLS0tCiBjb250cmliL2J0cmVlX2dpc3Qvc3FsL2ludF9jcm9zc3R5cGUuc3FsICAgICAgfCAg NjAgKy0tLS0tLQogOCBmaWxlcyBjaGFuZ2VkLCAyODkgaW5zZXJ0aW9ucygrKSwgMzY1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjkt LTEuMTAuc3FsIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuOS0tMS4xMC5zcWwK aW5kZXggYzlmZjE5NTUyMDQuLjljZDU3NDU1MDg2IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVl X2dpc3QvYnRyZWVfZ2lzdC0tMS45LS0xLjEwLnNxbAorKysgYi9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfZ2lzdC0tMS45LS0xLjEwLnNxbApAQCAtNywxNCArNywxNCBAQAogLS0gdG8gdGhlIGV4 aXN0aW5nIEdpU1Qgb3BlcmF0b3IgZmFtaWxpZXMuCiAtLQogLS0gR2lTVCdzIGFtdmFsaWRhdGUg cmVxdWlyZXMgc3VwcG9ydCBmdW5jdGlvbnMgaW4gYSBmYW1pbHkgdG8gaGF2ZSBtYXRjaGluZwog LS0gbGVmdC9yaWdodCBpbnB1dCB0eXBlcywgc28gdGhlIGNhdGFsb2cgYWRkaXRpb25zIGJlbG93 IGFyZSBkZWxpYmVyYXRlbHkKIC0tIHBnX2Ftb3Atb25seS4gVGhlIGV4aXN0aW5nIGNvbnNpc3Rl bnQvZGlzdGFuY2Ugc3VwcG9ydCBmdW5jdGlvbnMgZGlzcGF0Y2gKIC0tIG9uIHRoZSBzdWJ0eXBl IE9JRDogc2FtZS10eXBlIHF1ZXJpZXMgdGFrZSB0aGUgbm9ybWFsIHBhdGgsIHdoaWxlIG1peGVk LXdpZHRoCi0tLSBpbnRlZ2VyIHF1ZXJpZXMgYXJlIHByb21vdGVkIHRvIGludDY0IGFuZCBjb21w YXJlZCBieSB0aGUgaW50ZWdlciBjcm9zcy10eXBlCi0tLSBoZWxwZXJzIGluIGJ0cmVlX3V0aWxz X251bS5jLgorLS0gaW50ZWdlciBxdWVyaWVzIHNlbGVjdCBhIGNyb3NzLXR5cGUgY29tcGFyaXNv biBjYWxsYmFjayB0aGF0IHJlYWRzIHRoZSBxdWVyeQorLS0gYW5kIGtleSBzaWRlcyBhdCB0aGVp ciBvd24gd2lkdGhzIChzZWUgYnRyZWVfaW50ezIsNCw4fS5jKS4KIAogQ1JFQVRFIEZVTkNUSU9O IGludDJfaW50NF9kaXN0KGludDIsIGludDQpCiBSRVRVUk5TIGludDQKIEFTICdNT0RVTEVfUEFU SE5BTUUnCiBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1QgUEFSQUxMRUwgU0FGRTsKIApAQCAt NDAsMjEgKzQwLDEyIEBAIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVCBQQVJBTExFTCBTQUZF OwogCiBDUkVBVEUgRlVOQ1RJT04gaW50OF9pbnQ0X2Rpc3QoaW50OCwgaW50NCkKIFJFVFVSTlMg aW50OAogQVMgJ01PRFVMRV9QQVRITkFNRScKIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVCBQ QVJBTExFTCBTQUZFOwogCi0tLSBJbnRyb3NwZWN0aW9uIGhlbHBlciBleHBvc2luZyB0aGUgaW50 ZWdlciBxdWVyeSBzdWJ0eXBlcyB1bmRlcnN0b29kIGJ5IHRoZSBDCi0tLSBjcm9zcy10eXBlIGRp c3BhdGNoIChnYnRfaW50X2Nyb3NzdHlwZV90YWJsZSBpbiBidHJlZV91dGlsc19udW0uYykuIFRo ZQotLS0gcmVncmVzc2lvbiB0ZXN0cyB1c2UgaXQgdG8gYXNzZXJ0IHRoYXQgdGhlIGNyb3NzLXR5 cGUgcGdfYW1vcCBlbnRyaWVzIGJlbG93Ci0tLSBuZXZlciBkcmlmdCBmcm9tIHdoYXQgdGhlIGRp c3BhdGNoIGNhbiBoYW5kbGUuCi1DUkVBVEUgRlVOQ1RJT04gZ2J0X2ludF9jcm9zc3R5cGVfc3Vi dHlwZXMoKQotUkVUVVJOUyBTRVRPRiBvaWQKLUFTICdNT0RVTEVfUEFUSE5BTUUnCi1MQU5HVUFH RSBDIElNTVVUQUJMRSBQQVJBTExFTCBTQUZFOwotCiBDUkVBVEUgT1BFUkFUT1IgPC0+ICgKIAlM RUZUQVJHID0gaW50MiwKIAlSSUdIVEFSRyA9IGludDQsCiAJUFJPQ0VEVVJFID0gaW50Ml9pbnQ0 X2Rpc3QsCiAJQ09NTVVUQVRPUiA9ICc8LT4nCiApOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2ludDIuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQyLmMKaW5k ZXggZDAwYjI0ZDlhNTcuLmVhOWMyMDZlNTUyIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfaW50Mi5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQyLmMKQEAg LTg4LDEyICs4OCw3OCBAQCBzdGF0aWMgY29uc3QgZ2J0cmVlX25pbmZvIHRpbmZvID0KIAlnYnRf aW50MmxlLAogCWdidF9pbnQybHQsCiAJZ2J0X2ludDJrZXlfY21wLAogCWdidF9pbnQyX2Rpc3QK IH07CiAKKy8qCisgKiBDcm9zcy10eXBlIEdpU1QgY2FsbGJhY2tzOiB0aGUgaW5kZXhlZCBrZXkg aXMgaW50MiwgdGhlIHF1ZXJ5IGlzIGludDQgb3IKKyAqIGludDguICBCb3RoIHJldXNlIGdidF9u dW1fY29uc2lzdGVudCgpL2didF9udW1fZGlzdGFuY2UoKSB2aWEgYSB0aW5mbyB3aG9zZQorICog Y29tcGFyaXNvbi9kaXN0YW5jZSBjYWxsYmFja3MgcmVhZCB0aGUgcXVlcnkgKGxlZnQpIGFuZCBr ZXkgKHJpZ2h0KSBzaWRlcyBhdAorICogdGhlaXIgb3duIHdpZHRocy4gIGZfY21wIGlzIHVudXNl ZCBvbiB0aGVzZSBwYXRocyBhbmQgbGVmdCBOVUxMLgorICovCitHQlRfSU5UX0NNUF9GTlMoZ2J0 X2ludDJfcTRfLCBpbnQzMiwgaW50MTYpCitHQlRfSU5UX0NNUF9GTlMoZ2J0X2ludDJfcThfLCBp bnQ2NCwgaW50MTYpCisKK3N0YXRpYyBjb25zdCBnYnRyZWVfbmluZm8gdGluZm9fcTQgPQorewor CWdidF90X2ludDIsCisJc2l6ZW9mKGludDE2KSwKKwk0LAorCWdidF9pbnQyX3E0X2d0LAorCWdi dF9pbnQyX3E0X2dlLAorCWdidF9pbnQyX3E0X2VxLAorCWdidF9pbnQyX3E0X2xlLAorCWdidF9p bnQyX3E0X2x0LAorCU5VTEwsCisJZ2J0X2ludDJfcTRfZGlzdAorfTsKKworc3RhdGljIGNvbnN0 IGdidHJlZV9uaW5mbyB0aW5mb19xOCA9Cit7CisJZ2J0X3RfaW50MiwKKwlzaXplb2YoaW50MTYp LAorCTQsCisJZ2J0X2ludDJfcThfZ3QsCisJZ2J0X2ludDJfcThfZ2UsCisJZ2J0X2ludDJfcThf ZXEsCisJZ2J0X2ludDJfcThfbGUsCisJZ2J0X2ludDJfcThfbHQsCisJTlVMTCwKKwlnYnRfaW50 Ml9xOF9kaXN0Cit9OworCisvKgorICogQ3Jvc3MtdHlwZSBkaXNwYXRjaCBzaGFyZWQgYnkgZ2J0 X2ludDJfY29uc2lzdGVudCBhbmQgZ2J0X2ludDJfZGlzdGFuY2U6CisgKiBzZWxlY3QgdGhlIHRp bmZvIGZvciB0aGUgcXVlcnkgc3VidHlwZSBhbmQgcmVhZCB0aGUgcXVlcnkgdmFsdWUgYXQgaXRz IG93bgorICogd2lkdGggaW50byBjYWxsZXItb3duZWQgc3RvcmFnZS4KKyAqLworc3RhdGljIGNv bnN0IGdidHJlZV9uaW5mbyAqCitnYnRfaW50Ml9jcm9zc3R5cGUoT2lkIHN1YnR5cGUsIERhdHVt IGQsIGdidF9pbnRrZXkgKnEsIGNvbnN0IHZvaWQgKipxcCkKK3sKKwlzd2l0Y2ggKHN1YnR5cGUp CisJeworCQljYXNlIElOVDJPSUQ6CisJCQlxLT5pMiA9IERhdHVtR2V0SW50MTYoZCk7CisJCQkq cXAgPSAmcS0+aTI7CisJCQlyZXR1cm4gJnRpbmZvOworCQljYXNlIElOVDRPSUQ6CisJCQlxLT5p NCA9IERhdHVtR2V0SW50MzIoZCk7CisJCQkqcXAgPSAmcS0+aTQ7CisJCQlyZXR1cm4gJnRpbmZv X3E0OworCQljYXNlIElOVDhPSUQ6CisJCQlxLT5pOCA9IERhdHVtR2V0SW50NjQoZCk7CisJCQkq cXAgPSAmcS0+aTg7CisJCQlyZXR1cm4gJnRpbmZvX3E4OworCQlkZWZhdWx0OgorCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBzdWJ0eXBlICV1IGZvciBidHJlZV9naXN0IGludDIgY3Jvc3Mt dHlwZSBjb21wYXJpc29uIiwKKwkJCQkgc3VidHlwZSk7CisJCQlyZXR1cm4gTlVMTDsJCS8qIGtl ZXAgY29tcGlsZXIgcXVpZXQgKi8KKwl9Cit9CisKIAogUEdfRlVOQ1RJT05fSU5GT19WMShpbnQy X2Rpc3QpOwogRGF0dW0KIGludDJfZGlzdChQR19GVU5DVElPTl9BUkdTKQogewogCWludDE2CQlh ID0gUEdfR0VUQVJHX0lOVDE2KDApOwpAQCAtMTczLDU2ICsyMzksNDggQEAgZ2J0X2ludDJfY29u c2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCUdJU1RFTlRSWSAgKmVudHJ5ID0gKEdJU1RFTlRS WSAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKIAlEYXR1bQkJcXVlcnlEYXR1bSA9IFBHX0dFVEFS R19EQVRVTSgxKTsKIAlTdHJhdGVneU51bWJlciBzdHJhdGVneSA9IChTdHJhdGVneU51bWJlcikg UEdfR0VUQVJHX1VJTlQxNigyKTsKIAlPaWQJCQlzdWJ0eXBlID0gUEdfR0VUQVJHX09JRCgzKTsK IAlib29sCSAgICpyZWNoZWNrID0gKGJvb2wgKikgUEdfR0VUQVJHX1BPSU5URVIoNCk7CiAJaW50 MTZLRVkgICAqa2trID0gKGludDE2S0VZICopIERhdHVtR2V0UG9pbnRlcihlbnRyeS0+a2V5KTsK LQlpbnQxNgkJcXVlcnk7CisJY29uc3QgZ2J0cmVlX25pbmZvICp0aTsKKwlnYnRfaW50a2V5CXF1 ZXJ5OworCWNvbnN0IHZvaWQgKnFwOwogCUdCVF9OVU1LRVlfUiBrZXk7CiAKIAkvKiBBbGwgY2Fz ZXMgc2VydmVkIGJ5IHRoaXMgZnVuY3Rpb24gYXJlIGV4YWN0ICovCiAJKnJlY2hlY2sgPSBmYWxz ZTsKIAogCWtleS5sb3dlciA9IChHQlRfTlVNS0VZICopICZra2stPmxvd2VyOwogCWtleS51cHBl ciA9IChHQlRfTlVNS0VZICopICZra2stPnVwcGVyOwogCi0JaWYgKGxpa2VseShzdWJ0eXBlID09 IEludmFsaWRPaWQgfHwgc3VidHlwZSA9PSBJTlQyT0lEKSkKLQl7Ci0JCXF1ZXJ5ID0gRGF0dW1H ZXRJbnQxNihxdWVyeURhdHVtKTsKLQkJUEdfUkVUVVJOX0JPT0woZ2J0X251bV9jb25zaXN0ZW50 KCZrZXksICZxdWVyeSwgJnN0cmF0ZWd5LAotCQkJCQkJCQkJCSAgR0lTVF9MRUFGKGVudHJ5KSwg JnRpbmZvLAotCQkJCQkJCQkJCSAgZmNpbmZvLT5mbGluZm8pKTsKLQl9CisJdGkgPSBnYnRfaW50 Ml9jcm9zc3R5cGUoc3VidHlwZSwgcXVlcnlEYXR1bSwgJnF1ZXJ5LCAmcXApOwogCi0JUEdfUkVU VVJOX0JPT0woZ2J0X2ludF9jb25zaXN0ZW50X3goKGludDY0KSBra2stPmxvd2VyLCAoaW50NjQp IGtray0+dXBwZXIsCi0JCQkJCQkJCQkJcXVlcnlEYXR1bSwgc3VidHlwZSwgJnN0cmF0ZWd5LAot CQkJCQkJCQkJCUdJU1RfTEVBRihlbnRyeSkpKTsKKwlQR19SRVRVUk5fQk9PTChnYnRfbnVtX2Nv bnNpc3RlbnQoJmtleSwgcXAsICZzdHJhdGVneSwgR0lTVF9MRUFGKGVudHJ5KSwKKwkJCQkJCQkJ CSAgdGksIGZjaW5mby0+ZmxpbmZvKSk7CiB9CiAKIERhdHVtCiBnYnRfaW50Ml9kaXN0YW5jZShQ R19GVU5DVElPTl9BUkdTKQogewogCUdJU1RFTlRSWSAgKmVudHJ5ID0gKEdJU1RFTlRSWSAqKSBQ R19HRVRBUkdfUE9JTlRFUigwKTsKIAlEYXR1bQkJcXVlcnlEYXR1bSA9IFBHX0dFVEFSR19EQVRV TSgxKTsKIAlPaWQJCQlzdWJ0eXBlID0gUEdfR0VUQVJHX09JRCgzKTsKIAlpbnQxNktFWSAgICpr a2sgPSAoaW50MTZLRVkgKikgRGF0dW1HZXRQb2ludGVyKGVudHJ5LT5rZXkpOwotCWludDE2CQlx dWVyeTsKKwljb25zdCBnYnRyZWVfbmluZm8gKnRpOworCWdidF9pbnRrZXkJcXVlcnk7CisJY29u c3Qgdm9pZCAqcXA7CiAJR0JUX05VTUtFWV9SIGtleTsKIAogCWtleS5sb3dlciA9IChHQlRfTlVN S0VZICopICZra2stPmxvd2VyOwogCWtleS51cHBlciA9IChHQlRfTlVNS0VZICopICZra2stPnVw cGVyOwogCi0JaWYgKGxpa2VseShzdWJ0eXBlID09IEludmFsaWRPaWQgfHwgc3VidHlwZSA9PSBJ TlQyT0lEKSkKLQl7Ci0JCXF1ZXJ5ID0gRGF0dW1HZXRJbnQxNihxdWVyeURhdHVtKTsKLQkJUEdf UkVUVVJOX0ZMT0FUOChnYnRfbnVtX2Rpc3RhbmNlKCZrZXksICZxdWVyeSwgR0lTVF9MRUFGKGVu dHJ5KSwKLQkJCQkJCQkJCQkgICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKLQl9CisJdGkgPSBn YnRfaW50Ml9jcm9zc3R5cGUoc3VidHlwZSwgcXVlcnlEYXR1bSwgJnF1ZXJ5LCAmcXApOwogCi0J UEdfUkVUVVJOX0ZMT0FUOChnYnRfaW50X2Rpc3RhbmNlX3goKGludDY0KSBra2stPmxvd2VyLCAo aW50NjQpIGtray0+dXBwZXIsCi0JCQkJCQkJCQkJcXVlcnlEYXR1bSwgc3VidHlwZSkpOworCVBH X1JFVFVSTl9GTE9BVDgoZ2J0X251bV9kaXN0YW5jZSgma2V5LCBxcCwgR0lTVF9MRUFGKGVudHJ5 KSwKKwkJCQkJCQkJCSAgdGksIGZjaW5mby0+ZmxpbmZvKSk7CiB9CiAKIERhdHVtCiBnYnRfaW50 Ml91bmlvbihQR19GVU5DVElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3RvciAqZW50cnl2ZWMg PSAoR2lzdEVudHJ5VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwpkaWZmIC0tZ2l0IGEv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9pbnQ0LmMKaW5kZXggNGRmOTFmMjA1N2MuLjdlNTY2ODkwMTQzIDEwMDY0NAotLS0gYS9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50NC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9pbnQ0LmMKQEAgLTg2LDEyICs4Niw3OCBAQCBzdGF0aWMgY29uc3QgZ2J0cmVlX25pbmZvIHRp bmZvID0KIAlnYnRfaW50NGxlLAogCWdidF9pbnQ0bHQsCiAJZ2J0X2ludDRrZXlfY21wLAogCWdi dF9pbnQ0X2Rpc3QKIH07CiAKKy8qCisgKiBDcm9zcy10eXBlIEdpU1QgY2FsbGJhY2tzOiB0aGUg aW5kZXhlZCBrZXkgaXMgaW50NCwgdGhlIHF1ZXJ5IGlzIGludDIgb3IKKyAqIGludDguICBCb3Ro IHJldXNlIGdidF9udW1fY29uc2lzdGVudCgpL2didF9udW1fZGlzdGFuY2UoKSB2aWEgYSB0aW5m byB3aG9zZQorICogY29tcGFyaXNvbi9kaXN0YW5jZSBjYWxsYmFja3MgcmVhZCB0aGUgcXVlcnkg KGxlZnQpIGFuZCBrZXkgKHJpZ2h0KSBzaWRlcyBhdAorICogdGhlaXIgb3duIHdpZHRocy4gIGZf Y21wIGlzIHVudXNlZCBvbiB0aGVzZSBwYXRocyBhbmQgbGVmdCBOVUxMLgorICovCitHQlRfSU5U X0NNUF9GTlMoZ2J0X2ludDRfcTJfLCBpbnQxNiwgaW50MzIpCitHQlRfSU5UX0NNUF9GTlMoZ2J0 X2ludDRfcThfLCBpbnQ2NCwgaW50MzIpCisKK3N0YXRpYyBjb25zdCBnYnRyZWVfbmluZm8gdGlu Zm9fcTIgPQoreworCWdidF90X2ludDQsCisJc2l6ZW9mKGludDMyKSwKKwk4LAorCWdidF9pbnQ0 X3EyX2d0LAorCWdidF9pbnQ0X3EyX2dlLAorCWdidF9pbnQ0X3EyX2VxLAorCWdidF9pbnQ0X3Ey X2xlLAorCWdidF9pbnQ0X3EyX2x0LAorCU5VTEwsCisJZ2J0X2ludDRfcTJfZGlzdAorfTsKKwor c3RhdGljIGNvbnN0IGdidHJlZV9uaW5mbyB0aW5mb19xOCA9Cit7CisJZ2J0X3RfaW50NCwKKwlz aXplb2YoaW50MzIpLAorCTgsCisJZ2J0X2ludDRfcThfZ3QsCisJZ2J0X2ludDRfcThfZ2UsCisJ Z2J0X2ludDRfcThfZXEsCisJZ2J0X2ludDRfcThfbGUsCisJZ2J0X2ludDRfcThfbHQsCisJTlVM TCwKKwlnYnRfaW50NF9xOF9kaXN0Cit9OworCisvKgorICogQ3Jvc3MtdHlwZSBkaXNwYXRjaCBz aGFyZWQgYnkgZ2J0X2ludDRfY29uc2lzdGVudCBhbmQgZ2J0X2ludDRfZGlzdGFuY2U6CisgKiBz ZWxlY3QgdGhlIHRpbmZvIGZvciB0aGUgcXVlcnkgc3VidHlwZSBhbmQgcmVhZCB0aGUgcXVlcnkg dmFsdWUgYXQgaXRzIG93bgorICogd2lkdGggaW50byBjYWxsZXItb3duZWQgc3RvcmFnZS4KKyAq Lworc3RhdGljIGNvbnN0IGdidHJlZV9uaW5mbyAqCitnYnRfaW50NF9jcm9zc3R5cGUoT2lkIHN1 YnR5cGUsIERhdHVtIGQsIGdidF9pbnRrZXkgKnEsIGNvbnN0IHZvaWQgKipxcCkKK3sKKwlzd2l0 Y2ggKHN1YnR5cGUpCisJeworCQljYXNlIElOVDJPSUQ6CisJCQlxLT5pMiA9IERhdHVtR2V0SW50 MTYoZCk7CisJCQkqcXAgPSAmcS0+aTI7CisJCQlyZXR1cm4gJnRpbmZvX3EyOworCQljYXNlIElO VDRPSUQ6CisJCQlxLT5pNCA9IERhdHVtR2V0SW50MzIoZCk7CisJCQkqcXAgPSAmcS0+aTQ7CisJ CQlyZXR1cm4gJnRpbmZvOworCQljYXNlIElOVDhPSUQ6CisJCQlxLT5pOCA9IERhdHVtR2V0SW50 NjQoZCk7CisJCQkqcXAgPSAmcS0+aTg7CisJCQlyZXR1cm4gJnRpbmZvX3E4OworCQlkZWZhdWx0 OgorCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBzdWJ0eXBlICV1IGZvciBidHJlZV9naXN0 IGludDQgY3Jvc3MtdHlwZSBjb21wYXJpc29uIiwKKwkJCQkgc3VidHlwZSk7CisJCQlyZXR1cm4g TlVMTDsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwl9Cit9CisKIAogUEdfRlVOQ1RJT05f SU5GT19WMShpbnQ0X2Rpc3QpOwogRGF0dW0KIGludDRfZGlzdChQR19GVU5DVElPTl9BUkdTKQog ewogCWludDMyCQlhID0gUEdfR0VUQVJHX0lOVDMyKDApOwpAQCAtMTcxLDU2ICsyMzcsNDggQEAg Z2J0X2ludDRfY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCUdJU1RFTlRSWSAgKmVudHJ5 ID0gKEdJU1RFTlRSWSAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKIAlEYXR1bQkJcXVlcnlEYXR1 bSA9IFBHX0dFVEFSR19EQVRVTSgxKTsKIAlTdHJhdGVneU51bWJlciBzdHJhdGVneSA9IChTdHJh dGVneU51bWJlcikgUEdfR0VUQVJHX1VJTlQxNigyKTsKIAlPaWQJCQlzdWJ0eXBlID0gUEdfR0VU QVJHX09JRCgzKTsKIAlib29sCSAgICpyZWNoZWNrID0gKGJvb2wgKikgUEdfR0VUQVJHX1BPSU5U RVIoNCk7CiAJaW50MzJLRVkgICAqa2trID0gKGludDMyS0VZICopIERhdHVtR2V0UG9pbnRlcihl bnRyeS0+a2V5KTsKLQlpbnQzMgkJcXVlcnk7CisJY29uc3QgZ2J0cmVlX25pbmZvICp0aTsKKwln YnRfaW50a2V5CXF1ZXJ5OworCWNvbnN0IHZvaWQgKnFwOwogCUdCVF9OVU1LRVlfUiBrZXk7CiAK IAkvKiBBbGwgY2FzZXMgc2VydmVkIGJ5IHRoaXMgZnVuY3Rpb24gYXJlIGV4YWN0ICovCiAJKnJl Y2hlY2sgPSBmYWxzZTsKIAogCWtleS5sb3dlciA9IChHQlRfTlVNS0VZICopICZra2stPmxvd2Vy OwogCWtleS51cHBlciA9IChHQlRfTlVNS0VZICopICZra2stPnVwcGVyOwogCi0JaWYgKGxpa2Vs eShzdWJ0eXBlID09IEludmFsaWRPaWQgfHwgc3VidHlwZSA9PSBJTlQ0T0lEKSkKLQl7Ci0JCXF1 ZXJ5ID0gRGF0dW1HZXRJbnQzMihxdWVyeURhdHVtKTsKLQkJUEdfUkVUVVJOX0JPT0woZ2J0X251 bV9jb25zaXN0ZW50KCZrZXksICZxdWVyeSwgJnN0cmF0ZWd5LAotCQkJCQkJCQkJCSAgR0lTVF9M RUFGKGVudHJ5KSwgJnRpbmZvLAotCQkJCQkJCQkJCSAgZmNpbmZvLT5mbGluZm8pKTsKLQl9CisJ dGkgPSBnYnRfaW50NF9jcm9zc3R5cGUoc3VidHlwZSwgcXVlcnlEYXR1bSwgJnF1ZXJ5LCAmcXAp OwogCi0JUEdfUkVUVVJOX0JPT0woZ2J0X2ludF9jb25zaXN0ZW50X3goKGludDY0KSBra2stPmxv d2VyLCAoaW50NjQpIGtray0+dXBwZXIsCi0JCQkJCQkJCQkJcXVlcnlEYXR1bSwgc3VidHlwZSwg JnN0cmF0ZWd5LAotCQkJCQkJCQkJCUdJU1RfTEVBRihlbnRyeSkpKTsKKwlQR19SRVRVUk5fQk9P TChnYnRfbnVtX2NvbnNpc3RlbnQoJmtleSwgcXAsICZzdHJhdGVneSwgR0lTVF9MRUFGKGVudHJ5 KSwKKwkJCQkJCQkJCSAgdGksIGZjaW5mby0+ZmxpbmZvKSk7CiB9CiAKIERhdHVtCiBnYnRfaW50 NF9kaXN0YW5jZShQR19GVU5DVElPTl9BUkdTKQogewogCUdJU1RFTlRSWSAgKmVudHJ5ID0gKEdJ U1RFTlRSWSAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKIAlEYXR1bQkJcXVlcnlEYXR1bSA9IFBH X0dFVEFSR19EQVRVTSgxKTsKIAlPaWQJCQlzdWJ0eXBlID0gUEdfR0VUQVJHX09JRCgzKTsKIAlp bnQzMktFWSAgICpra2sgPSAoaW50MzJLRVkgKikgRGF0dW1HZXRQb2ludGVyKGVudHJ5LT5rZXkp OwotCWludDMyCQlxdWVyeTsKKwljb25zdCBnYnRyZWVfbmluZm8gKnRpOworCWdidF9pbnRrZXkJ cXVlcnk7CisJY29uc3Qgdm9pZCAqcXA7CiAJR0JUX05VTUtFWV9SIGtleTsKIAogCWtleS5sb3dl ciA9IChHQlRfTlVNS0VZICopICZra2stPmxvd2VyOwogCWtleS51cHBlciA9IChHQlRfTlVNS0VZ ICopICZra2stPnVwcGVyOwogCi0JaWYgKGxpa2VseShzdWJ0eXBlID09IEludmFsaWRPaWQgfHwg c3VidHlwZSA9PSBJTlQ0T0lEKSkKLQl7Ci0JCXF1ZXJ5ID0gRGF0dW1HZXRJbnQzMihxdWVyeURh dHVtKTsKLQkJUEdfUkVUVVJOX0ZMT0FUOChnYnRfbnVtX2Rpc3RhbmNlKCZrZXksICZxdWVyeSwg R0lTVF9MRUFGKGVudHJ5KSwKLQkJCQkJCQkJCQkgICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsK LQl9CisJdGkgPSBnYnRfaW50NF9jcm9zc3R5cGUoc3VidHlwZSwgcXVlcnlEYXR1bSwgJnF1ZXJ5 LCAmcXApOwogCi0JUEdfUkVUVVJOX0ZMT0FUOChnYnRfaW50X2Rpc3RhbmNlX3goKGludDY0KSBr a2stPmxvd2VyLCAoaW50NjQpIGtray0+dXBwZXIsCi0JCQkJCQkJCQkJcXVlcnlEYXR1bSwgc3Vi dHlwZSkpOworCVBHX1JFVFVSTl9GTE9BVDgoZ2J0X251bV9kaXN0YW5jZSgma2V5LCBxcCwgR0lT VF9MRUFGKGVudHJ5KSwKKwkJCQkJCQkJCSAgdGksIGZjaW5mby0+ZmxpbmZvKSk7CiB9CiAKIERh dHVtCiBnYnRfaW50NF91bmlvbihQR19GVU5DVElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3Rv ciAqZW50cnl2ZWMgPSAoR2lzdEVudHJ5VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwpk aWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYyBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV9pbnQ4LmMKaW5kZXggYWUwMTI3M2I3MDkuLjgxYzhiYjM2NGNmIDEwMDY0 NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50OC5jCisrKyBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV9pbnQ4LmMKQEAgLTg4LDEyICs4OCw3OCBAQCBzdGF0aWMgY29uc3QgZ2J0 cmVlX25pbmZvIHRpbmZvID0KIAlnYnRfaW50OGxlLAogCWdidF9pbnQ4bHQsCiAJZ2J0X2ludDhr ZXlfY21wLAogCWdidF9pbnQ4X2Rpc3QKIH07CiAKKy8qCisgKiBDcm9zcy10eXBlIEdpU1QgY2Fs bGJhY2tzOiB0aGUgaW5kZXhlZCBrZXkgaXMgaW50OCwgdGhlIHF1ZXJ5IGlzIGludDIgb3IKKyAq IGludDQuICBCb3RoIHJldXNlIGdidF9udW1fY29uc2lzdGVudCgpL2didF9udW1fZGlzdGFuY2Uo KSB2aWEgYSB0aW5mbyB3aG9zZQorICogY29tcGFyaXNvbi9kaXN0YW5jZSBjYWxsYmFja3MgcmVh ZCB0aGUgcXVlcnkgKGxlZnQpIGFuZCBrZXkgKHJpZ2h0KSBzaWRlcyBhdAorICogdGhlaXIgb3du IHdpZHRocy4gIGZfY21wIGlzIHVudXNlZCBvbiB0aGVzZSBwYXRocyBhbmQgbGVmdCBOVUxMLgor ICovCitHQlRfSU5UX0NNUF9GTlMoZ2J0X2ludDhfcTJfLCBpbnQxNiwgaW50NjQpCitHQlRfSU5U X0NNUF9GTlMoZ2J0X2ludDhfcTRfLCBpbnQzMiwgaW50NjQpCisKK3N0YXRpYyBjb25zdCBnYnRy ZWVfbmluZm8gdGluZm9fcTIgPQoreworCWdidF90X2ludDgsCisJc2l6ZW9mKGludDY0KSwKKwkx NiwKKwlnYnRfaW50OF9xMl9ndCwKKwlnYnRfaW50OF9xMl9nZSwKKwlnYnRfaW50OF9xMl9lcSwK KwlnYnRfaW50OF9xMl9sZSwKKwlnYnRfaW50OF9xMl9sdCwKKwlOVUxMLAorCWdidF9pbnQ4X3Ey X2Rpc3QKK307CisKK3N0YXRpYyBjb25zdCBnYnRyZWVfbmluZm8gdGluZm9fcTQgPQoreworCWdi dF90X2ludDgsCisJc2l6ZW9mKGludDY0KSwKKwkxNiwKKwlnYnRfaW50OF9xNF9ndCwKKwlnYnRf aW50OF9xNF9nZSwKKwlnYnRfaW50OF9xNF9lcSwKKwlnYnRfaW50OF9xNF9sZSwKKwlnYnRfaW50 OF9xNF9sdCwKKwlOVUxMLAorCWdidF9pbnQ4X3E0X2Rpc3QKK307CisKKy8qCisgKiBDcm9zcy10 eXBlIGRpc3BhdGNoIHNoYXJlZCBieSBnYnRfaW50OF9jb25zaXN0ZW50IGFuZCBnYnRfaW50OF9k aXN0YW5jZToKKyAqIHNlbGVjdCB0aGUgdGluZm8gZm9yIHRoZSBxdWVyeSBzdWJ0eXBlIGFuZCBy ZWFkIHRoZSBxdWVyeSB2YWx1ZSBhdCBpdHMgb3duCisgKiB3aWR0aCBpbnRvIGNhbGxlci1vd25l ZCBzdG9yYWdlLgorICovCitzdGF0aWMgY29uc3QgZ2J0cmVlX25pbmZvICoKK2didF9pbnQ4X2Ny b3NzdHlwZShPaWQgc3VidHlwZSwgRGF0dW0gZCwgZ2J0X2ludGtleSAqcSwgY29uc3Qgdm9pZCAq KnFwKQoreworCXN3aXRjaCAoc3VidHlwZSkKKwl7CisJCWNhc2UgSU5UMk9JRDoKKwkJCXEtPmky ID0gRGF0dW1HZXRJbnQxNihkKTsKKwkJCSpxcCA9ICZxLT5pMjsKKwkJCXJldHVybiAmdGluZm9f cTI7CisJCWNhc2UgSU5UNE9JRDoKKwkJCXEtPmk0ID0gRGF0dW1HZXRJbnQzMihkKTsKKwkJCSpx cCA9ICZxLT5pNDsKKwkJCXJldHVybiAmdGluZm9fcTQ7CisJCWNhc2UgSU5UOE9JRDoKKwkJCXEt Pmk4ID0gRGF0dW1HZXRJbnQ2NChkKTsKKwkJCSpxcCA9ICZxLT5pODsKKwkJCXJldHVybiAmdGlu Zm87CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIHN1YnR5cGUgJXUg Zm9yIGJ0cmVlX2dpc3QgaW50OCBjcm9zcy10eXBlIGNvbXBhcmlzb24iLAorCQkJCSBzdWJ0eXBl KTsKKwkJCXJldHVybiBOVUxMOwkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworCX0KK30KKwog CiBQR19GVU5DVElPTl9JTkZPX1YxKGludDhfZGlzdCk7CiBEYXR1bQogaW50OF9kaXN0KFBHX0ZV TkNUSU9OX0FSR1MpCiB7CiAJaW50NjQJCWEgPSBQR19HRVRBUkdfSU5UNjQoMCk7CkBAIC0xNzMs NTYgKzIzOSw0OCBAQCBnYnRfaW50OF9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJR0lT VEVOVFJZICAqZW50cnkgPSAoR0lTVEVOVFJZICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwogCURh dHVtCQlxdWVyeURhdHVtID0gUEdfR0VUQVJHX0RBVFVNKDEpOwogCVN0cmF0ZWd5TnVtYmVyIHN0 cmF0ZWd5ID0gKFN0cmF0ZWd5TnVtYmVyKSBQR19HRVRBUkdfVUlOVDE2KDIpOwogCU9pZAkJCXN1 YnR5cGUgPSBQR19HRVRBUkdfT0lEKDMpOwogCWJvb2wJICAgKnJlY2hlY2sgPSAoYm9vbCAqKSBQ R19HRVRBUkdfUE9JTlRFUig0KTsKIAlpbnQ2NEtFWSAgICpra2sgPSAoaW50NjRLRVkgKikgRGF0 dW1HZXRQb2ludGVyKGVudHJ5LT5rZXkpOwotCWludDY0CQlxdWVyeTsKKwljb25zdCBnYnRyZWVf bmluZm8gKnRpOworCWdidF9pbnRrZXkJcXVlcnk7CisJY29uc3Qgdm9pZCAqcXA7CiAJR0JUX05V TUtFWV9SIGtleTsKIAogCS8qIEFsbCBjYXNlcyBzZXJ2ZWQgYnkgdGhpcyBmdW5jdGlvbiBhcmUg ZXhhY3QgKi8KIAkqcmVjaGVjayA9IGZhbHNlOwogCiAJa2V5Lmxvd2VyID0gKEdCVF9OVU1LRVkg KikgJmtray0+bG93ZXI7CiAJa2V5LnVwcGVyID0gKEdCVF9OVU1LRVkgKikgJmtray0+dXBwZXI7 CiAKLQlpZiAobGlrZWx5KHN1YnR5cGUgPT0gSW52YWxpZE9pZCB8fCBzdWJ0eXBlID09IElOVDhP SUQpKQotCXsKLQkJcXVlcnkgPSBEYXR1bUdldEludDY0KHF1ZXJ5RGF0dW0pOwotCQlQR19SRVRV Uk5fQk9PTChnYnRfbnVtX2NvbnNpc3RlbnQoJmtleSwgJnF1ZXJ5LCAmc3RyYXRlZ3ksCi0JCQkJ CQkJCQkJICBHSVNUX0xFQUYoZW50cnkpLCAmdGluZm8sCi0JCQkJCQkJCQkJICBmY2luZm8tPmZs aW5mbykpOwotCX0KKwl0aSA9IGdidF9pbnQ4X2Nyb3NzdHlwZShzdWJ0eXBlLCBxdWVyeURhdHVt LCAmcXVlcnksICZxcCk7CiAKLQlQR19SRVRVUk5fQk9PTChnYnRfaW50X2NvbnNpc3RlbnRfeChr a2stPmxvd2VyLCBra2stPnVwcGVyLAotCQkJCQkJCQkJCXF1ZXJ5RGF0dW0sIHN1YnR5cGUsICZz dHJhdGVneSwKLQkJCQkJCQkJCQlHSVNUX0xFQUYoZW50cnkpKSk7CisJUEdfUkVUVVJOX0JPT0wo Z2J0X251bV9jb25zaXN0ZW50KCZrZXksIHFwLCAmc3RyYXRlZ3ksIEdJU1RfTEVBRihlbnRyeSks CisJCQkJCQkJCQkgIHRpLCBmY2luZm8tPmZsaW5mbykpOwogfQogCiBEYXR1bQogZ2J0X2ludDhf ZGlzdGFuY2UoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlHSVNURU5UUlkgICplbnRyeSA9IChHSVNU RU5UUlkgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CiAJRGF0dW0JCXF1ZXJ5RGF0dW0gPSBQR19H RVRBUkdfREFUVU0oMSk7CiAJT2lkCQkJc3VidHlwZSA9IFBHX0dFVEFSR19PSUQoMyk7CiAJaW50 NjRLRVkgICAqa2trID0gKGludDY0S0VZICopIERhdHVtR2V0UG9pbnRlcihlbnRyeS0+a2V5KTsK LQlpbnQ2NAkJcXVlcnk7CisJY29uc3QgZ2J0cmVlX25pbmZvICp0aTsKKwlnYnRfaW50a2V5CXF1 ZXJ5OworCWNvbnN0IHZvaWQgKnFwOwogCUdCVF9OVU1LRVlfUiBrZXk7CiAKIAlrZXkubG93ZXIg PSAoR0JUX05VTUtFWSAqKSAma2trLT5sb3dlcjsKIAlrZXkudXBwZXIgPSAoR0JUX05VTUtFWSAq KSAma2trLT51cHBlcjsKIAotCWlmIChsaWtlbHkoc3VidHlwZSA9PSBJbnZhbGlkT2lkIHx8IHN1 YnR5cGUgPT0gSU5UOE9JRCkpCi0JewotCQlxdWVyeSA9IERhdHVtR2V0SW50NjQocXVlcnlEYXR1 bSk7Ci0JCVBHX1JFVFVSTl9GTE9BVDgoZ2J0X251bV9kaXN0YW5jZSgma2V5LCAmcXVlcnksIEdJ U1RfTEVBRihlbnRyeSksCi0JCQkJCQkJCQkJICAmdGluZm8sIGZjaW5mby0+ZmxpbmZvKSk7Ci0J fQorCXRpID0gZ2J0X2ludDhfY3Jvc3N0eXBlKHN1YnR5cGUsIHF1ZXJ5RGF0dW0sICZxdWVyeSwg JnFwKTsKIAotCVBHX1JFVFVSTl9GTE9BVDgoZ2J0X2ludF9kaXN0YW5jZV94KGtray0+bG93ZXIs IGtray0+dXBwZXIsCi0JCQkJCQkJCQkJcXVlcnlEYXR1bSwgc3VidHlwZSkpOworCVBHX1JFVFVS Tl9GTE9BVDgoZ2J0X251bV9kaXN0YW5jZSgma2V5LCBxcCwgR0lTVF9MRUFGKGVudHJ5KSwKKwkJ CQkJCQkJCSAgdGksIGZjaW5mby0+ZmxpbmZvKSk7CiB9CiAKIERhdHVtCiBnYnRfaW50OF91bmlv bihQR19GVU5DVElPTl9BUkdTKQogewogCUdpc3RFbnRyeVZlY3RvciAqZW50cnl2ZWMgPSAoR2lz dEVudHJ5VmVjdG9yICopIFBHX0dFVEFSR19QT0lOVEVSKDApOwpkaWZmIC0tZ2l0IGEvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X3V0aWxzX251bS5jCmluZGV4IGNmZjQ3ZTJkODc2Li45MWYyNTNkODgwYyAxMDA2NDQKLS0tIGEv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5jCisrKyBiL2NvbnRyaWIvYnRyZWVf Z2lzdC9idHJlZV91dGlsc19udW0uYwpAQCAtMiwxNCArMiwxMiBAQAogICogY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX3V0aWxzX251bS5jCiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAj aW5jbHVkZSAiYnRyZWVfZ2lzdC5oIgogI2luY2x1ZGUgImJ0cmVlX3V0aWxzX251bS5oIgotI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgotI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRl ICJ1dGlscy9jYXNoLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxz L3RpbWVzdGFtcC5oIgogCiAKIEdJU1RFTlRSWSAqCkBAIC0yNjgsMTIgKzI2NiwxOCBAQCBnYnRf bnVtX2NvbnNpc3RlbnQoY29uc3QgR0JUX05VTUtFWV9SICprZXksCiAJCQkJICAgYm9vbCBpc19s ZWFmLAogCQkJCSAgIGNvbnN0IGdidHJlZV9uaW5mbyAqdGluZm8sCiAJCQkJICAgRm1nckluZm8g KmZsaW5mbykKIHsKIAlib29sCQlyZXR2YWw7CiAKKwkvKgorCSAqIEV2ZXJ5IGNvbXBhcmlzb24g Y2FsbGJhY2sgaXMgaW52b2tlZCBhcyBmX3h4KHF1ZXJ5LCBrZXkpOiB0aGUgcXVlcnkgdmFsdWUK KwkgKiBpcyBhbHdheXMgdGhlIGxlZnQgYXJndW1lbnQgYW5kIHRoZSBpbmRleGVkIGtleSBib3Vu ZCB0aGUgcmlnaHQuICBUaGUKKwkgKiBpbnRlZ2VyIG9wY2xhc3NlcyByZWx5IG9uIHRoaXMgZml4 ZWQgb3JkZXIgc28gdGhlaXIgY3Jvc3MtdHlwZSBjYWxsYmFja3MKKwkgKiBjYW4gcmVhZCBlYWNo IHNpZGUgYXQgaXRzIG93biB3aWR0aC4KKwkgKi8KIAlzd2l0Y2ggKCpzdHJhdGVneSkKIAl7CiAJ CWNhc2UgQlRMZXNzRXF1YWxTdHJhdGVneU51bWJlcjoKIAkJCXJldHZhbCA9IHRpbmZvLT5mX2dl KHF1ZXJ5LCBrZXktPmxvd2VyLCBmbGluZm8pOwogCQkJYnJlYWs7CiAJCWNhc2UgQlRMZXNzU3Ry YXRlZ3lOdW1iZXI6CkBAIC0yODMsMTMgKzI4NywxMyBAQCBnYnRfbnVtX2NvbnNpc3RlbnQoY29u c3QgR0JUX05VTUtFWV9SICprZXksCiAJCQkJcmV0dmFsID0gdGluZm8tPmZfZ2UocXVlcnksIGtl eS0+bG93ZXIsIGZsaW5mbyk7CiAJCQlicmVhazsKIAkJY2FzZSBCVEVxdWFsU3RyYXRlZ3lOdW1i ZXI6CiAJCQlpZiAoaXNfbGVhZikKIAkJCQlyZXR2YWwgPSB0aW5mby0+Zl9lcShxdWVyeSwga2V5 LT5sb3dlciwgZmxpbmZvKTsKIAkJCWVsc2UKLQkJCQlyZXR2YWwgPSAodGluZm8tPmZfbGUoa2V5 LT5sb3dlciwgcXVlcnksIGZsaW5mbykgJiYKKwkJCQlyZXR2YWwgPSAodGluZm8tPmZfZ2UocXVl cnksIGtleS0+bG93ZXIsIGZsaW5mbykgJiYKIAkJCQkJCSAgdGluZm8tPmZfbGUocXVlcnksIGtl eS0+dXBwZXIsIGZsaW5mbykpOwogCQkJYnJlYWs7CiAJCWNhc2UgQlRHcmVhdGVyU3RyYXRlZ3lO dW1iZXI6CiAJCQlpZiAoaXNfbGVhZikKIAkJCQlyZXR2YWwgPSB0aW5mby0+Zl9sdChxdWVyeSwg a2V5LT51cHBlciwgZmxpbmZvKTsKIAkJCWVsc2UKQEAgLTMwNiwxNDUgKzMxMCwxMiBAQCBnYnRf bnVtX2NvbnNpc3RlbnQoY29uc3QgR0JUX05VTUtFWV9SICprZXksCiAJCQlyZXR2YWwgPSBmYWxz ZTsKIAl9CiAKIAlyZXR1cm4gcmV0dmFsOwogfQogCi0vKgotICogQ3Jvc3MtdHlwZSBkaXNwYXRj aCB0YWJsZSBmb3IgdGhlIGludGVnZXIgb3BjbGFzc2VzLgotICoKLSAqIFRoaXMgaXMgdGhlIHNp bmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHdoaWNoIHF1ZXJ5IHN1YnR5cGVzIHRoZSBpbnRlZ2Vy Ci0gKiBjcm9zcy10eXBlIHBhdGggdW5kZXJzdGFuZHMuIGdidF9pbnRfcXVlcnlfdG9faW50NjQo KSBwcm9tb3RlcyBleGFjdGx5IHRoZQotICogc3VidHlwZXMgbGlzdGVkIGhlcmUsIGFuZCB0aGUg U1FMLXZpc2libGUgZ2J0X2ludF9jcm9zc3R5cGVfc3VidHlwZXMoKQotICogZXhwb3NlcyB0aGUg c2FtZSBsaXN0IHNvIHRoZSByZWdyZXNzaW9uIHRlc3RzIGNhbiBhc3NlcnQgdGhhdCB0aGUgY3Jv c3MtdHlwZQotICogcGdfYW1vcCBlbnRyaWVzIGluIGdpc3RfaW50ezIsNCw4fV9vcHMgbmV2ZXIg ZHJpZnQgZnJvbSB3aGF0IHRoZSBDIGNvZGUgY2FuCi0gKiBhY3R1YWxseSBoYW5kbGUuCi0gKi8K LXR5cGVkZWYgaW50NjQgKCpnYnRfaW50X3Byb21vdGVfZm4pIChEYXR1bSBxdWVyeSk7Ci0KLXN0 YXRpYyBpbnQ2NAotZ2J0X2ludDJfdG9faW50NjQoRGF0dW0gcXVlcnkpCi17Ci0JcmV0dXJuIChp bnQ2NCkgRGF0dW1HZXRJbnQxNihxdWVyeSk7Ci19Ci0KLXN0YXRpYyBpbnQ2NAotZ2J0X2ludDRf dG9faW50NjQoRGF0dW0gcXVlcnkpCi17Ci0JcmV0dXJuIChpbnQ2NCkgRGF0dW1HZXRJbnQzMihx dWVyeSk7Ci19Ci0KLXN0YXRpYyBpbnQ2NAotZ2J0X2ludDhfdG9faW50NjQoRGF0dW0gcXVlcnkp Ci17Ci0JcmV0dXJuIERhdHVtR2V0SW50NjQocXVlcnkpOwotfQotCi10eXBlZGVmIHN0cnVjdAot ewotCU9pZAkJCXN1YnR5cGU7Ci0JZ2J0X2ludF9wcm9tb3RlX2ZuIHByb21vdGU7Ci19CQkJZ2J0 X2ludF9jcm9zc3R5cGU7Ci0KLXN0YXRpYyBjb25zdCBnYnRfaW50X2Nyb3NzdHlwZSBnYnRfaW50 X2Nyb3NzdHlwZV90YWJsZVtdID0gewotCXtJTlQyT0lELCBnYnRfaW50Ml90b19pbnQ2NH0sCi0J e0lOVDRPSUQsIGdidF9pbnQ0X3RvX2ludDY0fSwKLQl7SU5UOE9JRCwgZ2J0X2ludDhfdG9faW50 NjR9LAotfTsKLQotLyoKLSAqIFByb21vdGUgYSBjcm9zcy10eXBlIGludGVnZXIgcXVlcnkgdmFs dWUgdG8gaW50NjQuCi0gKgotICogQSBzdWJ0eXBlIG91dHNpZGUgZ2J0X2ludF9jcm9zc3R5cGVf dGFibGUgbWVhbnMgdGhlIEMgZGlzcGF0Y2ggaXMgb3V0IG9mIHN5bmMKLSAqIHdpdGggdGhlIG9w ZXJhdG9yLWZhbWlseSByZWdpc3RyYXRpb25zIGluIHBnX2Ftb3AsIHNvIHdlIHRyZWF0IGl0IGFz IGFuCi0gKiBpbnRlcm5hbCBlcnJvci4gIFRoZSByZWdyZXNzaW9uIHRlc3RzIGFzc2VydCB0aGlz IG5ldmVyIGhhcHBlbnMuCi0gKi8KLXN0YXRpYyBpbnQ2NAotZ2J0X2ludF9xdWVyeV90b19pbnQ2 NChEYXR1bSBxdWVyeSwgT2lkIHN1YnR5cGUpCi17Ci0JaW50CQkJaTsKLQotCWZvciAoaSA9IDA7 IGkgPCBsZW5ndGhvZihnYnRfaW50X2Nyb3NzdHlwZV90YWJsZSk7IGkrKykKLQl7Ci0JCWlmIChn YnRfaW50X2Nyb3NzdHlwZV90YWJsZVtpXS5zdWJ0eXBlID09IHN1YnR5cGUpCi0JCQlyZXR1cm4g Z2J0X2ludF9jcm9zc3R5cGVfdGFibGVbaV0ucHJvbW90ZShxdWVyeSk7Ci0JfQotCi0JZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBzdWJ0eXBlICV1IGZvciBidHJlZV9naXN0IGludGVnZXIgY3Jv c3MtdHlwZSBjb21wYXJpc29uIiwKLQkJIHN1YnR5cGUpOwotCXJldHVybiAwOwkJCQkJLyoga2Vl cCBjb21waWxlciBxdWlldCAqLwotfQotCi0vKgotICogZ2J0X2ludF9jcm9zc3R5cGVfc3VidHlw ZXMKLSAqCi0gKiBFeHBvc2UgdGhlIGNvbnRlbnRzIG9mIGdidF9pbnRfY3Jvc3N0eXBlX3RhYmxl IHRvIFNRTCBhcyBhIHNldCBvZiB0eXBlIE9JRHMuCi0gKiBUaGUgYnRyZWVfZ2lzdCByZWdyZXNz aW9uIHRlc3RzIHVzZSB0aGlzIHRvIGNoZWNrIHRoYXQgdGhlIGNyb3NzLXR5cGUgcGdfYW1vcAot ICogZW50cmllcyBpbiBnaXN0X2ludHsyLDQsOH1fb3BzIHN0YXkgaW4gYWdyZWVtZW50IHdpdGgg dGhlIEMgZGlzcGF0Y2guCi0gKi8KLVBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludF9jcm9zc3R5 cGVfc3VidHlwZXMpOwotRGF0dW0KLWdidF9pbnRfY3Jvc3N0eXBlX3N1YnR5cGVzKFBHX0ZVTkNU SU9OX0FSR1MpCi17Ci0JRnVuY0NhbGxDb250ZXh0ICpmdW5jY3R4OwotCi0JaWYgKFNSRl9JU19G SVJTVENBTEwoKSkKLQkJZnVuY2N0eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOwotCi0JZnVuY2N0 eCA9IFNSRl9QRVJDQUxMX1NFVFVQKCk7Ci0KLQlpZiAoZnVuY2N0eC0+Y2FsbF9jbnRyIDwgbGVu Z3Rob2YoZ2J0X2ludF9jcm9zc3R5cGVfdGFibGUpKQotCXsKLQkJT2lkCQkJc3VidHlwZSA9IGdi dF9pbnRfY3Jvc3N0eXBlX3RhYmxlW2Z1bmNjdHgtPmNhbGxfY250cl0uc3VidHlwZTsKLQotCQlT UkZfUkVUVVJOX05FWFQoZnVuY2N0eCwgT2JqZWN0SWRHZXREYXR1bShzdWJ0eXBlKSk7Ci0JfQot Ci0JU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOwotfQotCi0vKgotICogQ3Jvc3MtdHlwZSBjb25z aXN0ZW50IG1ldGhvZCBmb3IgdGhlIGludGVnZXIgb3BjbGFzc2VzLgotICoKLSAqIFRoZSBrZXkg cmFuZ2UgW2xvd2VyLCB1cHBlcl0gYW5kIHRoZSBxdWVyeSB2YWx1ZSBhcmUgYWxsIGNvbXBhcmVk IGFzIGludDY0LgotICogVGhlIHN0cmF0ZWd5IGxvZ2ljIG1pcnJvcnMgdGhlIHNhbWUtdHlwZSBw YXRoIGluIGdidF9udW1fY29uc2lzdGVudCgpOiB0aGUKLSAqIHF1ZXJ5IHZhbHVlIGtlZXBzIGl0 cyBvd24gd2lkdGggKG5vIG5hcnJvd2luZyB0byB0aGUgaW5kZXhlZCBjb2x1bW4gdHlwZSksCi0g KiBzbyBvdXQtb2YtcmFuZ2UgY29uc3RhbnRzIGJlaGF2ZSBhY2NvcmRpbmcgdG8gbm9ybWFsIGlu dGVnZXIgY29tcGFyaXNvbi4KLSAqLwotYm9vbAotZ2J0X2ludF9jb25zaXN0ZW50X3goaW50NjQg bG93ZXIsIGludDY0IHVwcGVyLCBEYXR1bSBxdWVyeSwgT2lkIHN1YnR5cGUsCi0JCQkJCSBjb25z dCBTdHJhdGVneU51bWJlciAqc3RyYXRlZ3ksIGJvb2wgaXNfbGVhZikKLXsKLQlpbnQ2NAkJcSA9 IGdidF9pbnRfcXVlcnlfdG9faW50NjQocXVlcnksIHN1YnR5cGUpOwotCi0Jc3dpdGNoICgqc3Ry YXRlZ3kpCi0JewotCQljYXNlIEJUTGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXI6Ci0JCQkvKiBzb21l IGsgaW4gW2xvd2VyLHVwcGVyXSBoYXMgayA8PSBxIGlmZiBsb3dlciA8PSBxICovCi0JCQlyZXR1 cm4gbG93ZXIgPD0gcTsKLQkJY2FzZSBCVExlc3NTdHJhdGVneU51bWJlcjoKLQkJCS8qIGxlYWY6 IGtleSA8IHEuIGludGVybmFsOiBsb3dlciA8PSBxIChsb29zZSkgKi8KLQkJCXJldHVybiBpc19s ZWFmID8gKGxvd2VyIDwgcSkgOiAobG93ZXIgPD0gcSk7Ci0JCWNhc2UgQlRFcXVhbFN0cmF0ZWd5 TnVtYmVyOgotCQkJaWYgKGlzX2xlYWYpCi0JCQkJcmV0dXJuIGxvd2VyID09IHE7Ci0JCQkvKiBp bnRlcm5hbDogbG93ZXIgPD0gcSA8PSB1cHBlciAqLwotCQkJcmV0dXJuIChsb3dlciA8PSBxICYm IHEgPD0gdXBwZXIpOwotCQljYXNlIEJUR3JlYXRlclN0cmF0ZWd5TnVtYmVyOgotCQkJLyogbGVh Zjoga2V5ID4gcS4gaW50ZXJuYWw6IHVwcGVyID49IHEgKGxvb3NlKSAqLwotCQkJcmV0dXJuIGlz X2xlYWYgPyAodXBwZXIgPiBxKSA6ICh1cHBlciA+PSBxKTsKLQkJY2FzZSBCVEdyZWF0ZXJFcXVh bFN0cmF0ZWd5TnVtYmVyOgotCQkJcmV0dXJuIHVwcGVyID49IHE7Ci0JCWNhc2UgQnRyZWVHaXN0 Tm90RXF1YWxTdHJhdGVneU51bWJlcjoKLQkJCXJldHVybiAhKGxvd2VyID09IHEgJiYgdXBwZXIg PT0gcSk7Ci0JCWRlZmF1bHQ6Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JfQotfQotCi0KIC8qCiAgKiBU aGUgR2lTVCBkaXN0YW5jZSBtZXRob2QgKGZvciBLTk4tR2lzdCkKICAqLwogCiBmbG9hdDgKIGdi dF9udW1fZGlzdGFuY2UoY29uc3QgR0JUX05VTUtFWV9SICprZXksCkBAIC00NjUsMzggKzMzNiwx MiBAQCBnYnRfbnVtX2Rpc3RhbmNlKGNvbnN0IEdCVF9OVU1LRVlfUiAqa2V5LAogCWVsc2UKIAkJ cmV0dmFsID0gMC4wOwogCiAJcmV0dXJuIHJldHZhbDsKIH0KIAotLyoKLSAqIENyb3NzLXR5cGUg ZGlzdGFuY2UgbWV0aG9kIGZvciB0aGUgaW50ZWdlciBvcGNsYXNzZXMuCi0gKgotICogVGhlIGRp c3RhbmNlIGZyb20gdGhlIHF1ZXJ5IHZhbHVlIHRvIHRoZSBrZXkgcmFuZ2UgaXMgY29tcHV0ZWQg aW4gaW50NjQgYW5kCi0gKiByZXR1cm5lZCBhcyBhIGZsb2F0OCwgbWF0Y2hpbmcgdGhlIHNhbWUt dHlwZSBpbnRlZ2VyIGRpc3RhbmNlIGJlaGF2aW91ci4KLSAqCi0gKiBOb3RlIHRoYXQgdGhlIHN1 YnRyYWN0aW9uIGlzIHBlcmZvcm1lZCBpbiBmbG9hdDgsIHNvIHdoZW4gdGhlIGtleSBib3VuZCBh bmQKLSAqIHRoZSBxdWVyeSB2YWx1ZSBkaWZmZXIgYnkgbW9yZSB0aGFuIDJeNTMgdGhlIHJldHVy bmVkIGRpc3RhbmNlIGxvc2VzCi0gKiBwcmVjaXNpb24uIFRoaXMgb25seSBhZmZlY3RzIHRoZSBv cmRlcmluZyBvZiBLTk4gcmVzdWx0cyB0aGF0IGFyZSBuZWFybHkKLSAqIGVxdWlkaXN0YW50IGF0 IHRoYXQgc2NhbGU7IGl0IG5ldmVyIGNoYW5nZXMgd2hpY2ggcm93cyBhcmUgcmV0dXJuZWQuCi0g Ki8KLWZsb2F0OAotZ2J0X2ludF9kaXN0YW5jZV94KGludDY0IGxvd2VyLCBpbnQ2NCB1cHBlciwg RGF0dW0gcXVlcnksIE9pZCBzdWJ0eXBlKQotewotCWludDY0CQlxID0gZ2J0X2ludF9xdWVyeV90 b19pbnQ2NChxdWVyeSwgc3VidHlwZSk7Ci0KLQkvKiBxdWVyeSBiZWxvdyB0aGUgcmFuZ2U6IGRp c3RhbmNlIHRvIGxvd2VyIGJvdW5kICovCi0JaWYgKGxvd2VyID49IHEpCi0JCXJldHVybiBmYWJz KChmbG9hdDgpIGxvd2VyIC0gKGZsb2F0OCkgcSk7Ci0JLyogcXVlcnkgYWJvdmUgdGhlIHJhbmdl OiBkaXN0YW5jZSB0byB1cHBlciBib3VuZCAqLwotCWlmICh1cHBlciA8PSBxKQotCQlyZXR1cm4g ZmFicygoZmxvYXQ4KSB1cHBlciAtIChmbG9hdDgpIHEpOwotCS8qIHF1ZXJ5IGluc2lkZSB0aGUg cmFuZ2UgKi8KLQlyZXR1cm4gMC4wOwotfQotCiAKIEdJU1RfU1BMSVRWRUMgKgogZ2J0X251bV9w aWNrc3BsaXQoY29uc3QgR2lzdEVudHJ5VmVjdG9yICplbnRyeXZlYywgR0lTVF9TUExJVFZFQyAq diwKIAkJCQkgIGNvbnN0IGdidHJlZV9uaW5mbyAqdGluZm8sIEZtZ3JJbmZvICpmbGluZm8pCiB7 CiAJT2Zmc2V0TnVtYmVyIGksCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVf dXRpbHNfbnVtLmggYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfbnVtLmgKaW5kZXgg ZDM3OGIwZGYzN2UuLmJlMDliZGIyNTgxIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfdXRpbHNfbnVtLmgKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251 bS5oCkBAIC0yNCwxMiArMjQsMjQgQEAgdHlwZWRlZiBzdHJ1Y3QKIHR5cGVkZWYgc3RydWN0CiB7 CiAJaW50CQkJaTsKIAlHQlRfTlVNS0VZICp0OwogfSBOc3J0OwogCisvKgorICogUXVlcnktdmFs dWUgc3RvcmFnZSBmb3IgdGhlIGludGVnZXIgb3BjbGFzc2VzJyBjcm9zcy10eXBlIHBhdGguICBU aGUgY2FsbGVyCisgKiBvd25zIG9uZSBvZiB0aGVzZSBhbmQgcGFzc2VzIGl0cyBhZGRyZXNzIHRv IHRoZSBwZXItdHlwZSBjcm9zcy10eXBlIGhlbHBlciwKKyAqIHdoaWNoIGZpbGxzIHRoZSByaWdo dCB3aWR0aCBhbmQgcG9pbnRzIHRoZSBxdWVyeSBwb2ludGVyIGF0IGl0LgorICovCit0eXBlZGVm IHVuaW9uCit7CisJaW50MTYJCWkyOworCWludDMyCQlpNDsKKwlpbnQ2NAkJaTg7Cit9CQkJZ2J0 X2ludGtleTsKKwogCiAvKiB0eXBlIGRlc2NyaXB0aW9uICovCiAKIHR5cGVkZWYgc3RydWN0CiB7 CiAKQEAgLTgzLDQwICs5NSw0OSBAQCB0eXBlZGVmIHN0cnVjdAogICovCiAjZGVmaW5lIElOVEVS VkFMX1RPX1NFQyhpdnApIFwKIAkoKChkb3VibGUpIChpdnApLT50aW1lKSAvICgoZG91YmxlKSBV U0VDU19QRVJfU0VDKSArIFwKIAkgKGl2cCktPmRheSAqICgyNC4wICogU0VDU19QRVJfSE9VUikg KyBcCiAJIChpdnApLT5tb250aCAqICgzMC4wICogU0VDU19QRVJfREFZKSkKIAotI2RlZmluZSBH RVRfRkxPQVRfRElTVEFOQ0UodCwgYXJnMSwgYXJnMikJZmFicyggKChmbG9hdDgpICooKGNvbnN0 IHQgKikgKGFyZzEpKSkgLSAoKGZsb2F0OCkgKigoY29uc3QgdCAqKSAoYXJnMikpKSApCisjZGVm aW5lIEdFVF9GTE9BVF9ESVNUQU5DRTIodDEsIHQyLCBhcmcxLCBhcmcyKQlmYWJzKCAoKGZsb2F0 OCkgKigoY29uc3QgdDEgKikgKGFyZzEpKSkgLSAoKGZsb2F0OCkgKigoY29uc3QgdDIgKikgKGFy ZzIpKSkgKQorI2RlZmluZSBHRVRfRkxPQVRfRElTVEFOQ0UodCwgYXJnMSwgYXJnMikJR0VUX0ZM T0FUX0RJU1RBTkNFMih0LCB0LCAoYXJnMSksIChhcmcyKSkKKworLyoKKyAqIEdlbmVyYXRlIHRo ZSBjb21wYXJpc29uL2Rpc3RhbmNlIGNhbGxiYWNrcyBmb3IgYSBnYnRyZWVfbmluZm8gd2hvc2Ug cXVlcnkKKyAqIGFuZCBrZXkgc2lkZXMgbWF5IGJlIGRpZmZlcmVudCAoaW50ZWdlcikgdHlwZXMu ICBnYnRfbnVtX2NvbnNpc3RlbnQoKSBhbmQKKyAqIGdidF9udW1fZGlzdGFuY2UoKSBhbHdheXMg aW52b2tlIHRoZSBjYWxsYmFja3MgYXMgZl94eChxdWVyeSwga2V5KSwgc28gdGhlCisgKiBmaXJz dCBhcmd1bWVudCBoYXMgdGhlIHF1ZXJ5IHR5cGUgUVQgKHRoZSBvcGVyYXRvcidzIHJpZ2h0LWhh bmQgc3VidHlwZSkgYW5kCisgKiB0aGUgc2Vjb25kIGhhcyB0aGUgaW5kZXhlZCBrZXkgdHlwZSBL VC4gIEludGVnZXIgd2lkZW5pbmcgaXMgdmFsdWUtcHJlc2VydmluZywKKyAqIHNvIHRoZSBjb21w YXJpc29ucyBuZWVkIG5vIGV4cGxpY2l0IGNhc3Q7IHRoZSBkaXN0YW5jZSB3aWRlbnMgdG8gZmxv YXQ4IHRvCisgKiBhdm9pZCBvdmVyZmxvdyBpbiB0aGUgc3VidHJhY3Rpb24uICBJbnZva2VkIHdp dGggUVQgPT0gS1QgdGhpcyBhbHNvIGdlbmVyYXRlcworICogdGhlIG9yZGluYXJ5IHNhbWUtdHlw ZSBjYWxsYmFja3MuCisgKi8KKyNkZWZpbmUgR0JUX0lOVF9DTVBfRk5TKHByZWZpeCwgUVQsIEtU KSBcCitzdGF0aWMgYm9vbCBwcmVmaXgjI2d0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIs IEZtZ3JJbmZvICpmbGluZm8pIFwKK3sgcmV0dXJuICooKGNvbnN0IFFUICopIGEpID4gKigoY29u c3QgS1QgKikgYik7IH0gXAorc3RhdGljIGJvb2wgcHJlZml4IyNnZShjb25zdCB2b2lkICphLCBj b25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKSBcCit7IHJldHVybiAqKChjb25zdCBRVCAq KSBhKSA+PSAqKChjb25zdCBLVCAqKSBiKTsgfSBcCitzdGF0aWMgYm9vbCBwcmVmaXgjI2VxKGNv bnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pIFwKK3sgcmV0dXJu ICooKGNvbnN0IFFUICopIGEpID09ICooKGNvbnN0IEtUICopIGIpOyB9IFwKK3N0YXRpYyBib29s IHByZWZpeCMjbGUoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5m bykgXAoreyByZXR1cm4gKigoY29uc3QgUVQgKikgYSkgPD0gKigoY29uc3QgS1QgKikgYik7IH0g XAorc3RhdGljIGJvb2wgcHJlZml4IyNsdChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBG bWdySW5mbyAqZmxpbmZvKSBcCit7IHJldHVybiAqKChjb25zdCBRVCAqKSBhKSA8ICooKGNvbnN0 IEtUICopIGIpOyB9IFwKK3N0YXRpYyBmbG9hdDggcHJlZml4IyNkaXN0KGNvbnN0IHZvaWQgKmEs IGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pIFwKK3sgcmV0dXJuIEdFVF9GTE9BVF9E SVNUQU5DRTIoUVQsIEtULCBhLCBiKTsgfQogCiAKIGV4dGVybiBJbnRlcnZhbCAqYWJzX2ludGVy dmFsKEludGVydmFsICphKTsKIAogZXh0ZXJuIGJvb2wgZ2J0X251bV9jb25zaXN0ZW50KGNvbnN0 IEdCVF9OVU1LRVlfUiAqa2V5LCBjb25zdCB2b2lkICpxdWVyeSwKIAkJCQkJCQkgICBjb25zdCBT dHJhdGVneU51bWJlciAqc3RyYXRlZ3ksIGJvb2wgaXNfbGVhZiwKIAkJCQkJCQkgICBjb25zdCBn YnRyZWVfbmluZm8gKnRpbmZvLCBGbWdySW5mbyAqZmxpbmZvKTsKIAogZXh0ZXJuIGZsb2F0OCBn YnRfbnVtX2Rpc3RhbmNlKGNvbnN0IEdCVF9OVU1LRVlfUiAqa2V5LCBjb25zdCB2b2lkICpxdWVy eSwKIAkJCQkJCQkgICBib29sIGlzX2xlYWYsIGNvbnN0IGdidHJlZV9uaW5mbyAqdGluZm8sIEZt Z3JJbmZvICpmbGluZm8pOwogCi0vKgotICogQ3Jvc3MtdHlwZSBjb25zaXN0ZW50L2Rpc3RhbmNl IGhlbHBlcnMgZm9yIHRoZSBpbnRlZ2VyIG9wY2xhc3NlcwotICogKGludDIvaW50NC9pbnQ4KS4g IEFsbCB0aHJlZSBpbnRlZ2VyIHdpZHRocyBwcm9tb3RlIGxvc3NsZXNzbHkgdG8gaW50NjQsIHNv Ci0gKiBhIGNyb3NzLXR5cGUgcXVlcnkgcmVkdWNlcyB0byBhIHBsYWluIGludDY0IGNvbXBhcmlz b24gYW5kIHRoZXJlIGlzIG5vIG5lZWQKLSAqIGZvciB0aGUgcGVyLXR5cGUgY2FsbGJhY2sgbWFj aGluZXJ5IHRoZSBzYW1lLXR5cGUgcGF0aCB1c2VzLiAgVGhlc2UgaGVscGVycwotICogYXJlIGRl bGliZXJhdGVseSBpbnRlZ2VyLXNwZWNpZmljIHJhdGhlciB0aGFuIGEgZ2VuZXJhbCBjcm9zcy10 eXBlIGZyYW1ld29yazsKLSAqIG90aGVyIHR5cGUgZmFtaWxpZXMgc2hvdWxkIGdyb3cgdGhlaXIg b3duIGhlbHBlcnMgc2hhcGVkIHRvIHRoZWlyIG5lZWRzIGFzCi0gKiB0aGUgbmVlZCBhcmlzZXMu Ci0gKi8KLWV4dGVybiBib29sIGdidF9pbnRfY29uc2lzdGVudF94KGludDY0IGxvd2VyLCBpbnQ2 NCB1cHBlciwKLQkJCQkJCQkJIERhdHVtIHF1ZXJ5LCBPaWQgc3VidHlwZSwKLQkJCQkJCQkJIGNv bnN0IFN0cmF0ZWd5TnVtYmVyICpzdHJhdGVneSwgYm9vbCBpc19sZWFmKTsKLQotZXh0ZXJuIGZs b2F0OCBnYnRfaW50X2Rpc3RhbmNlX3goaW50NjQgbG93ZXIsIGludDY0IHVwcGVyLAotCQkJCQkJ CQkgRGF0dW0gcXVlcnksIE9pZCBzdWJ0eXBlKTsKLQogZXh0ZXJuIEdJU1RfU1BMSVRWRUMgKmdi dF9udW1fcGlja3NwbGl0KGNvbnN0IEdpc3RFbnRyeVZlY3RvciAqZW50cnl2ZWMsIEdJU1RfU1BM SVRWRUMgKnYsCiAJCQkJCQkJCQkJY29uc3QgZ2J0cmVlX25pbmZvICp0aW5mbywgRm1nckluZm8g KmZsaW5mbyk7CiAKIGV4dGVybiBHSVNURU5UUlkgKmdidF9udW1fY29tcHJlc3MoR0lTVEVOVFJZ ICplbnRyeSwgY29uc3QgZ2J0cmVlX25pbmZvICp0aW5mbyk7CiAKIGV4dGVybiBHSVNURU5UUlkg KmdidF9udW1fZmV0Y2goR0lTVEVOVFJZICplbnRyeSwgY29uc3QgZ2J0cmVlX25pbmZvICp0aW5m byk7CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvaW50X2Nyb3NzdHlw ZS5vdXQgYi9jb250cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvaW50X2Nyb3NzdHlwZS5vdXQKaW5k ZXggYmQyYjkwYmQzZjYuLmFmMDNjZjg0YTQwIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dp c3QvZXhwZWN0ZWQvaW50X2Nyb3NzdHlwZS5vdXQKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2V4 cGVjdGVkL2ludF9jcm9zc3R5cGUub3V0CkBAIC0zLDcyICszLDE3IEBACiAtLSBWZXJpZmllcyB0 aGF0IChhKSB0aGUgY3Jvc3MtdHlwZSBCLXRyZWUtc3R5bGUgb3BlcmF0b3JzIHJlZ2lzdGVyZWQg aW4KIC0tIGdpc3RfaW50ezIsNCw4fV9vcHMgbWF0Y2ggdGhlIHJlc3VsdHMgb2Ygc2Vxc2NhbnMg dXNpbmcgdGhlIHNhbWUgb3BlcmF0b3IKIC0tIGV4cHJlc3Npb25zLCAoYikgdGhlIEtOTiA8LT4g b3BlcmF0b3Igd29ya3MgYWNyb3NzIHR5cGVzIGFuZCB1c2VzIHRoZQogLS0gaW5kZXgsIGFuZCAo YykgdmFsdWVzIG91dHNpZGUgdGhlIHNtYWxsZXIgc3VidHlwZSdzIHJhbmdlIGFyZSBoYW5kbGVk CiAtLSBhY2NvcmRpbmcgdG8gbm9ybWFsIGNvbXBhcmlzb24gc2VtYW50aWNzLCB3aXRob3V0IG5h cnJvd2luZyBvciBlcnJvcmluZy4KIC0tCi0tLSBDYXRhbG9nIGludmFyaWFudDogdGhlIGNyb3Nz LXR5cGUgcGdfYW1vcCBlbnRyaWVzIGluIGdpc3RfaW50ezIsNCw4fV9vcHMgbXVzdAotLS0gYWdy ZWUsIGluIGJvdGggZGlyZWN0aW9ucywgd2l0aCB3aGF0IHRoZSBDIGNyb3NzLXR5cGUgZGlzcGF0 Y2ggY2FuIGhhbmRsZS4KLS0tIFRoZSBzZXQgb2Ygc3VwcG9ydGVkIHF1ZXJ5IHN1YnR5cGVzIGlz IHJlYWQgZnJvbSB0aGUgQyBzaWRlIHZpYQotLS0gZ2J0X2ludF9jcm9zc3R5cGVfc3VidHlwZXMo KSwgc28gdGhlcmUgaXMgbm8gaGFuZC1tYWludGFpbmVkIHNlY29uZCBjb3B5IG9mCi0tLSB0aGUg bGlzdCBoZXJlOiByZWdpc3RlcmluZyBhIHBnX2Ftb3Agcm93IHdob3NlIHN1YnR5cGUgdGhlIGRp c3BhdGNoIGRvZXMgbm90Ci0tLSBoYW5kbGUgKG9yIGRyb3BwaW5nIGEgZGlzcGF0Y2ggZW50cnkg d2hpbGUgaXRzIHBnX2Ftb3Agcm93cyByZW1haW4sIG9yIHZpY2UKLS0tIHZlcnNhKSBzaG93cyB1 cCBhcyBhIGRpZmYgYmVsb3cuIENyb3NzLXR5cGUgcGdfYW1wcm9jIHJvd3MgbXVzdCBhbHNvIHN0 YXkKLS0tIGFic2VudCwgc2luY2UgdGhlIGRpc3BhdGNoIHJldXNlcyB0aGUgc2FtZS10eXBlIHN1 cHBvcnQgZnVuY3Rpb25zLgorLS0gVGhlIGludGVnZXIgY3Jvc3MtdHlwZSBzdXBwb3J0IGlzIGhh bmRsZWQgaW5zaWRlIHRoZSBleGlzdGluZworLS0gY29uc2lzdGVudC9kaXN0YW5jZSBzdXBwb3J0 IGZ1bmN0aW9ucyAod2hpY2ggZGlzcGF0Y2ggb24gdGhlIHN1YnR5cGUgT0lEKSwKKy0tIHNvIHRo ZSBvcGVyYXRvciBmYW1pbGllcyBtdXN0IG5vdCBjb250YWluIGFueSBjcm9zcy10eXBlIChkaWZm ZXJlbnQKKy0tIGxlZnQvcmlnaHQgaW5wdXQgdHlwZSkgc3VwcG9ydC1mdW5jdGlvbiBlbnRyaWVz LgogLS0KLVdJVEggZGlzcGF0Y2hfc3VidHlwZXModHlwKSBBUyAoCi0gICAgU0VMRUNUIHMuc3Vi dHlwZTo6cmVndHlwZQotICAgIEZST00gZ2J0X2ludF9jcm9zc3R5cGVfc3VidHlwZXMoKSBBUyBz KHN1YnR5cGUpCi0pLAotZ2lzdF9pbnRfb3BjbGFzc2VzKG9wZmFtaWx5LCBpbmRleHR5cGUpIEFT ICgKLSAgICBTRUxFQ1Qgb3BjLm9wY25hbWU6OnRleHQsIG9wYy5vcGNpbnR5cGU6OnJlZ3R5cGUK LSAgICBGUk9NIHBnX29wY2xhc3Mgb3BjCi0gICAgICAgICBKT0lOIHBnX2FtIGFtIE9OIGFtLm9p ZCA9IG9wYy5vcGNtZXRob2QKLSAgICBXSEVSRSBhbS5hbW5hbWUgPSAnZ2lzdCcKLSAgICAgIEFO RCBvcGMub3BjbmFtZSBJTiAoJ2dpc3RfaW50Ml9vcHMnLCAnZ2lzdF9pbnQ0X29wcycsICdnaXN0 X2ludDhfb3BzJykKLSksCi1leHBlY3RlZF9wYWlycyhvcGZhbWlseSwgbGVmdHR5cGUsIHJpZ2h0 dHlwZSkgQVMgKAotICAgIFNFTEVDVCBvYy5vcGZhbWlseSwgb2MuaW5kZXh0eXBlLCBkcy50eXAK LSAgICBGUk9NIGdpc3RfaW50X29wY2xhc3NlcyBvYwotICAgICAgICAgQ1JPU1MgSk9JTiBkaXNw YXRjaF9zdWJ0eXBlcyBkcwotICAgIFdIRVJFIGRzLnR5cCA8PiBvYy5pbmRleHR5cGUKLSksCi1l eHBlY3RlZF9hbW9wKG9wZmFtaWx5LCBsZWZ0dHlwZSwgcmlnaHR0eXBlLCBzdHJhdGVneSwgcHVy cG9zZSkgQVMgKAotICAgIFNFTEVDVCBvcGZhbWlseSwgbGVmdHR5cGUsIHJpZ2h0dHlwZSwgc3Ry YXRlZ3ksIHB1cnBvc2UKLSAgICBGUk9NIGV4cGVjdGVkX3BhaXJzCi0gICAgICAgICBDUk9TUyBK T0lOIChWQUxVRVMKLSAgICAgICAgICAgICAoMSwgJ3MnKSwgKDIsICdzJyksICgzLCAncycpLCAo NCwgJ3MnKSwKLSAgICAgICAgICAgICAoNSwgJ3MnKSwgKDYsICdzJyksICgxNSwgJ28nKQotICAg ICAgICAgKSBBUyBzdHJhdGVneV9wdXJwb3NlcyhzdHJhdGVneSwgcHVycG9zZSkKLSksCi1hY3R1 YWxfYW1vcCBBUyAoCi0gICAgU0VMRUNUIG9wZi5vcGZuYW1lOjp0ZXh0IEFTIG9wZmFtaWx5LAot ICAgICAgICAgICBhbW9wLmFtb3BsZWZ0dHlwZTo6cmVndHlwZSBBUyBsZWZ0dHlwZSwKLSAgICAg ICAgICAgYW1vcC5hbW9wcmlnaHR0eXBlOjpyZWd0eXBlIEFTIHJpZ2h0dHlwZSwKLSAgICAgICAg ICAgYW1vcC5hbW9wc3RyYXRlZ3k6OmludCBBUyBzdHJhdGVneSwKLSAgICAgICAgICAgYW1vcC5h bW9wcHVycG9zZTo6dGV4dCBBUyBwdXJwb3NlCi0gICAgRlJPTSBwZ19hbW9wIGFtb3AKLSAgICAg ICAgIEpPSU4gcGdfb3BmYW1pbHkgb3BmIE9OIG9wZi5vaWQgPSBhbW9wLmFtb3BmYW1pbHkKLSAg ICAgICAgIEpPSU4gcGdfYW0gYW0gT04gYW0ub2lkID0gb3BmLm9wZm1ldGhvZAotICAgIFdIRVJF IGFtLmFtbmFtZSA9ICdnaXN0JwotICAgICAgQU5EIG9wZi5vcGZuYW1lIElOICgnZ2lzdF9pbnQy X29wcycsICdnaXN0X2ludDRfb3BzJywgJ2dpc3RfaW50OF9vcHMnKQotICAgICAgQU5EIGFtb3Au YW1vcGxlZnR0eXBlIDw+IGFtb3AuYW1vcHJpZ2h0dHlwZQotKQotU0VMRUNUICoKLUZST00gKAot ICAgIFNFTEVDVCAnbWlzc2luZyBmcm9tIHBnX2Ftb3AnIEFTIHN0YXR1cywgKgotICAgIEZST00g KFNFTEVDVCAqIEZST00gZXhwZWN0ZWRfYW1vcCBFWENFUFQgU0VMRUNUICogRlJPTSBhY3R1YWxf YW1vcCkgbWlzc2luZwotICAgIFVOSU9OIEFMTAotICAgIFNFTEVDVCAndW5leHBlY3RlZCBpbiBw Z19hbW9wJyBBUyBzdGF0dXMsICoKLSAgICBGUk9NIChTRUxFQ1QgKiBGUk9NIGFjdHVhbF9hbW9w IEVYQ0VQVCBTRUxFQ1QgKiBGUk9NIGV4cGVjdGVkX2Ftb3ApIHVuZXhwZWN0ZWQKLSkgZGlmZgot T1JERVIgQlkgc3RhdHVzLCBvcGZhbWlseSwgbGVmdHR5cGU6OnRleHQsIHJpZ2h0dHlwZTo6dGV4 dCwgc3RyYXRlZ3ksIHB1cnBvc2U7Ci0gc3RhdHVzIHwgb3BmYW1pbHkgfCBsZWZ0dHlwZSB8IHJp Z2h0dHlwZSB8IHN0cmF0ZWd5IHwgcHVycG9zZSAKLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQotKDAgcm93cykKLQogU0VMRUNU IG9wZi5vcGZuYW1lIEFTIG9wZmFtaWx5LAogICAgICAgIGFtcHJvYy5hbXByb2NsZWZ0dHlwZTo6 cmVndHlwZSBBUyBsZWZ0dHlwZSwKICAgICAgICBhbXByb2MuYW1wcm9jcmlnaHR0eXBlOjpyZWd0 eXBlIEFTIHJpZ2h0dHlwZSwKICAgICAgICBhbXByb2MuYW1wcm9jbnVtIEFTIHByb2NudW0sCiAg ICAgICAgYW1wcm9jLmFtcHJvYzo6cmVncHJvYyBBUyBwcm9jCiBGUk9NIHBnX2FtcHJvYyBhbXBy b2MKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvaW50X2Nyb3NzdHlwZS5zcWwg Yi9jb250cmliL2J0cmVlX2dpc3Qvc3FsL2ludF9jcm9zc3R5cGUuc3FsCmluZGV4IGQzODA4NGYx OTQxLi5iMzM3ZTI2YTFhZiAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L3NxbC9pbnRf Y3Jvc3N0eXBlLnNxbAorKysgYi9jb250cmliL2J0cmVlX2dpc3Qvc3FsL2ludF9jcm9zc3R5cGUu c3FsCkBAIC00LDY5ICs0LDE3IEBACiAtLSBnaXN0X2ludHsyLDQsOH1fb3BzIG1hdGNoIHRoZSBy ZXN1bHRzIG9mIHNlcXNjYW5zIHVzaW5nIHRoZSBzYW1lIG9wZXJhdG9yCiAtLSBleHByZXNzaW9u cywgKGIpIHRoZSBLTk4gPC0+IG9wZXJhdG9yIHdvcmtzIGFjcm9zcyB0eXBlcyBhbmQgdXNlcyB0 aGUKIC0tIGluZGV4LCBhbmQgKGMpIHZhbHVlcyBvdXRzaWRlIHRoZSBzbWFsbGVyIHN1YnR5cGUn cyByYW5nZSBhcmUgaGFuZGxlZAogLS0gYWNjb3JkaW5nIHRvIG5vcm1hbCBjb21wYXJpc29uIHNl bWFudGljcywgd2l0aG91dCBuYXJyb3dpbmcgb3IgZXJyb3JpbmcuCiAKIC0tCi0tLSBDYXRhbG9n IGludmFyaWFudDogdGhlIGNyb3NzLXR5cGUgcGdfYW1vcCBlbnRyaWVzIGluIGdpc3RfaW50ezIs NCw4fV9vcHMgbXVzdAotLS0gYWdyZWUsIGluIGJvdGggZGlyZWN0aW9ucywgd2l0aCB3aGF0IHRo ZSBDIGNyb3NzLXR5cGUgZGlzcGF0Y2ggY2FuIGhhbmRsZS4KLS0tIFRoZSBzZXQgb2Ygc3VwcG9y dGVkIHF1ZXJ5IHN1YnR5cGVzIGlzIHJlYWQgZnJvbSB0aGUgQyBzaWRlIHZpYQotLS0gZ2J0X2lu dF9jcm9zc3R5cGVfc3VidHlwZXMoKSwgc28gdGhlcmUgaXMgbm8gaGFuZC1tYWludGFpbmVkIHNl Y29uZCBjb3B5IG9mCi0tLSB0aGUgbGlzdCBoZXJlOiByZWdpc3RlcmluZyBhIHBnX2Ftb3Agcm93 IHdob3NlIHN1YnR5cGUgdGhlIGRpc3BhdGNoIGRvZXMgbm90Ci0tLSBoYW5kbGUgKG9yIGRyb3Bw aW5nIGEgZGlzcGF0Y2ggZW50cnkgd2hpbGUgaXRzIHBnX2Ftb3Agcm93cyByZW1haW4sIG9yIHZp Y2UKLS0tIHZlcnNhKSBzaG93cyB1cCBhcyBhIGRpZmYgYmVsb3cuIENyb3NzLXR5cGUgcGdfYW1w cm9jIHJvd3MgbXVzdCBhbHNvIHN0YXkKLS0tIGFic2VudCwgc2luY2UgdGhlIGRpc3BhdGNoIHJl dXNlcyB0aGUgc2FtZS10eXBlIHN1cHBvcnQgZnVuY3Rpb25zLgorLS0gVGhlIGludGVnZXIgY3Jv c3MtdHlwZSBzdXBwb3J0IGlzIGhhbmRsZWQgaW5zaWRlIHRoZSBleGlzdGluZworLS0gY29uc2lz dGVudC9kaXN0YW5jZSBzdXBwb3J0IGZ1bmN0aW9ucyAod2hpY2ggZGlzcGF0Y2ggb24gdGhlIHN1 YnR5cGUgT0lEKSwKKy0tIHNvIHRoZSBvcGVyYXRvciBmYW1pbGllcyBtdXN0IG5vdCBjb250YWlu IGFueSBjcm9zcy10eXBlIChkaWZmZXJlbnQKKy0tIGxlZnQvcmlnaHQgaW5wdXQgdHlwZSkgc3Vw cG9ydC1mdW5jdGlvbiBlbnRyaWVzLgogLS0KLVdJVEggZGlzcGF0Y2hfc3VidHlwZXModHlwKSBB UyAoCi0gICAgU0VMRUNUIHMuc3VidHlwZTo6cmVndHlwZQotICAgIEZST00gZ2J0X2ludF9jcm9z c3R5cGVfc3VidHlwZXMoKSBBUyBzKHN1YnR5cGUpCi0pLAotZ2lzdF9pbnRfb3BjbGFzc2VzKG9w ZmFtaWx5LCBpbmRleHR5cGUpIEFTICgKLSAgICBTRUxFQ1Qgb3BjLm9wY25hbWU6OnRleHQsIG9w Yy5vcGNpbnR5cGU6OnJlZ3R5cGUKLSAgICBGUk9NIHBnX29wY2xhc3Mgb3BjCi0gICAgICAgICBK T0lOIHBnX2FtIGFtIE9OIGFtLm9pZCA9IG9wYy5vcGNtZXRob2QKLSAgICBXSEVSRSBhbS5hbW5h bWUgPSAnZ2lzdCcKLSAgICAgIEFORCBvcGMub3BjbmFtZSBJTiAoJ2dpc3RfaW50Ml9vcHMnLCAn Z2lzdF9pbnQ0X29wcycsICdnaXN0X2ludDhfb3BzJykKLSksCi1leHBlY3RlZF9wYWlycyhvcGZh bWlseSwgbGVmdHR5cGUsIHJpZ2h0dHlwZSkgQVMgKAotICAgIFNFTEVDVCBvYy5vcGZhbWlseSwg b2MuaW5kZXh0eXBlLCBkcy50eXAKLSAgICBGUk9NIGdpc3RfaW50X29wY2xhc3NlcyBvYwotICAg ICAgICAgQ1JPU1MgSk9JTiBkaXNwYXRjaF9zdWJ0eXBlcyBkcwotICAgIFdIRVJFIGRzLnR5cCA8 PiBvYy5pbmRleHR5cGUKLSksCi1leHBlY3RlZF9hbW9wKG9wZmFtaWx5LCBsZWZ0dHlwZSwgcmln aHR0eXBlLCBzdHJhdGVneSwgcHVycG9zZSkgQVMgKAotICAgIFNFTEVDVCBvcGZhbWlseSwgbGVm dHR5cGUsIHJpZ2h0dHlwZSwgc3RyYXRlZ3ksIHB1cnBvc2UKLSAgICBGUk9NIGV4cGVjdGVkX3Bh aXJzCi0gICAgICAgICBDUk9TUyBKT0lOIChWQUxVRVMKLSAgICAgICAgICAgICAoMSwgJ3MnKSwg KDIsICdzJyksICgzLCAncycpLCAoNCwgJ3MnKSwKLSAgICAgICAgICAgICAoNSwgJ3MnKSwgKDYs ICdzJyksICgxNSwgJ28nKQotICAgICAgICAgKSBBUyBzdHJhdGVneV9wdXJwb3NlcyhzdHJhdGVn eSwgcHVycG9zZSkKLSksCi1hY3R1YWxfYW1vcCBBUyAoCi0gICAgU0VMRUNUIG9wZi5vcGZuYW1l Ojp0ZXh0IEFTIG9wZmFtaWx5LAotICAgICAgICAgICBhbW9wLmFtb3BsZWZ0dHlwZTo6cmVndHlw ZSBBUyBsZWZ0dHlwZSwKLSAgICAgICAgICAgYW1vcC5hbW9wcmlnaHR0eXBlOjpyZWd0eXBlIEFT IHJpZ2h0dHlwZSwKLSAgICAgICAgICAgYW1vcC5hbW9wc3RyYXRlZ3k6OmludCBBUyBzdHJhdGVn eSwKLSAgICAgICAgICAgYW1vcC5hbW9wcHVycG9zZTo6dGV4dCBBUyBwdXJwb3NlCi0gICAgRlJP TSBwZ19hbW9wIGFtb3AKLSAgICAgICAgIEpPSU4gcGdfb3BmYW1pbHkgb3BmIE9OIG9wZi5vaWQg PSBhbW9wLmFtb3BmYW1pbHkKLSAgICAgICAgIEpPSU4gcGdfYW0gYW0gT04gYW0ub2lkID0gb3Bm Lm9wZm1ldGhvZAotICAgIFdIRVJFIGFtLmFtbmFtZSA9ICdnaXN0JwotICAgICAgQU5EIG9wZi5v cGZuYW1lIElOICgnZ2lzdF9pbnQyX29wcycsICdnaXN0X2ludDRfb3BzJywgJ2dpc3RfaW50OF9v cHMnKQotICAgICAgQU5EIGFtb3AuYW1vcGxlZnR0eXBlIDw+IGFtb3AuYW1vcHJpZ2h0dHlwZQot KQotU0VMRUNUICoKLUZST00gKAotICAgIFNFTEVDVCAnbWlzc2luZyBmcm9tIHBnX2Ftb3AnIEFT IHN0YXR1cywgKgotICAgIEZST00gKFNFTEVDVCAqIEZST00gZXhwZWN0ZWRfYW1vcCBFWENFUFQg U0VMRUNUICogRlJPTSBhY3R1YWxfYW1vcCkgbWlzc2luZwotICAgIFVOSU9OIEFMTAotICAgIFNF TEVDVCAndW5leHBlY3RlZCBpbiBwZ19hbW9wJyBBUyBzdGF0dXMsICoKLSAgICBGUk9NIChTRUxF Q1QgKiBGUk9NIGFjdHVhbF9hbW9wIEVYQ0VQVCBTRUxFQ1QgKiBGUk9NIGV4cGVjdGVkX2Ftb3Ap IHVuZXhwZWN0ZWQKLSkgZGlmZgotT1JERVIgQlkgc3RhdHVzLCBvcGZhbWlseSwgbGVmdHR5cGU6 OnRleHQsIHJpZ2h0dHlwZTo6dGV4dCwgc3RyYXRlZ3ksIHB1cnBvc2U7Ci0KIFNFTEVDVCBvcGYu b3BmbmFtZSBBUyBvcGZhbWlseSwKICAgICAgICBhbXByb2MuYW1wcm9jbGVmdHR5cGU6OnJlZ3R5 cGUgQVMgbGVmdHR5cGUsCiAgICAgICAgYW1wcm9jLmFtcHJvY3JpZ2h0dHlwZTo6cmVndHlwZSBB UyByaWdodHR5cGUsCiAgICAgICAgYW1wcm9jLmFtcHJvY251bSBBUyBwcm9jbnVtLAogICAgICAg IGFtcHJvYy5hbXByb2M6OnJlZ3Byb2MgQVMgcHJvYwogRlJPTSBwZ19hbXByb2MgYW1wcm9jCi0t IAoyLjUxLjAKCg== --6a3b0e80_2acbe2e_5be Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v4-0005-Safe-guard-InvalidOid.patch" RnJvbSA1ZTE3OTFlZTBkYWU1NGEyZTg3ZWFiMGFlMDgzMmFhNWNmMTliYmU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTmVzdG9yb3YgPGFsZXhhbmRlcm5zdEBnbWFp bC5jb20+CkRhdGU6IFR1ZSwgMjMgSnVuIDIwMjYgMjM6MDc6MjEgKzAyMDAKU3ViamVjdDogW1BB VENIXSBTYWZlLWd1YXJkIEludmFsaWRPaWQKCi0tLQogY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2ludDIuYyAgICAgIHwgMiArKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDQuYyAgICAg IHwgMiArKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYyAgICAgIHwgMiArKwogY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5jIHwgOCArKysrLS0tLQogY29udHJpYi9i dHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5oIHwgMiArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgICAgIHwgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyks IDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2lu dDIuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQyLmMKaW5kZXggZWE5YzIwNmU1NTIu LjhkNjQ0NTc5YjIzIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50Mi5j CisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQyLmMKQEAgLTEzNSwxMiArMTM1LDE0 IEBAIHN0YXRpYyBjb25zdCBnYnRyZWVfbmluZm8gdGluZm9fcTggPQogICovCiBzdGF0aWMgY29u c3QgZ2J0cmVlX25pbmZvICoKIGdidF9pbnQyX2Nyb3NzdHlwZShPaWQgc3VidHlwZSwgRGF0dW0g ZCwgZ2J0X2ludGtleSAqcSwgY29uc3Qgdm9pZCAqKnFwKQogewogCXN3aXRjaCAoc3VidHlwZSkK IAl7CisJCWNhc2UgSW52YWxpZE9pZDoJCS8qIHNhbWUtdHlwZTogZXhjbHVzaW9uL3RlbXBvcmFs IGNvbnN0cmFpbnQKKwkJCQkJCQkJICogY2hlY2tzIHBhc3MgdGhlIG5hdGl2ZSB0eXBlIHdpdGgg c3VidHlwZSAwICovCiAJCWNhc2UgSU5UMk9JRDoKIAkJCXEtPmkyID0gRGF0dW1HZXRJbnQxNihk KTsKIAkJCSpxcCA9ICZxLT5pMjsKIAkJCXJldHVybiAmdGluZm87CiAJCWNhc2UgSU5UNE9JRDoK IAkJCXEtPmk0ID0gRGF0dW1HZXRJbnQzMihkKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVf Z2lzdC9idHJlZV9pbnQ0LmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50NC5jCmluZGV4 IDdlNTY2ODkwMTQzLi4zMjVlZTc4ZjJhYiAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0 L2J0cmVlX2ludDQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50NC5jCkBAIC0x MzcsMTIgKzEzNywxNCBAQCBnYnRfaW50NF9jcm9zc3R5cGUoT2lkIHN1YnR5cGUsIERhdHVtIGQs IGdidF9pbnRrZXkgKnEsIGNvbnN0IHZvaWQgKipxcCkKIAlzd2l0Y2ggKHN1YnR5cGUpCiAJewog CQljYXNlIElOVDJPSUQ6CiAJCQlxLT5pMiA9IERhdHVtR2V0SW50MTYoZCk7CiAJCQkqcXAgPSAm cS0+aTI7CiAJCQlyZXR1cm4gJnRpbmZvX3EyOworCQljYXNlIEludmFsaWRPaWQ6CQkvKiBzYW1l LXR5cGU6IGV4Y2x1c2lvbi90ZW1wb3JhbCBjb25zdHJhaW50CisJCQkJCQkJCSAqIGNoZWNrcyBw YXNzIHRoZSBuYXRpdmUgdHlwZSB3aXRoIHN1YnR5cGUgMCAqLwogCQljYXNlIElOVDRPSUQ6CiAJ CQlxLT5pNCA9IERhdHVtR2V0SW50MzIoZCk7CiAJCQkqcXAgPSAmcS0+aTQ7CiAJCQlyZXR1cm4g JnRpbmZvOwogCQljYXNlIElOVDhPSUQ6CiAJCQlxLT5pOCA9IERhdHVtR2V0SW50NjQoZCk7CmRp ZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50OC5jIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2ludDguYwppbmRleCA4MWM4YmIzNjRjZi4uNjJjMDYzNDVlODcgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ4LmMKKysrIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX2ludDguYwpAQCAtMTQzLDEyICsxNDMsMTQgQEAgZ2J0X2ludDhfY3Jvc3N0 eXBlKE9pZCBzdWJ0eXBlLCBEYXR1bSBkLCBnYnRfaW50a2V5ICpxLCBjb25zdCB2b2lkICoqcXAp CiAJCQkqcXAgPSAmcS0+aTI7CiAJCQlyZXR1cm4gJnRpbmZvX3EyOwogCQljYXNlIElOVDRPSUQ6 CiAJCQlxLT5pNCA9IERhdHVtR2V0SW50MzIoZCk7CiAJCQkqcXAgPSAmcS0+aTQ7CiAJCQlyZXR1 cm4gJnRpbmZvX3E0OworCQljYXNlIEludmFsaWRPaWQ6CQkvKiBzYW1lLXR5cGU6IGV4Y2x1c2lv bi90ZW1wb3JhbCBjb25zdHJhaW50CisJCQkJCQkJCSAqIGNoZWNrcyBwYXNzIHRoZSBuYXRpdmUg dHlwZSB3aXRoIHN1YnR5cGUgMCAqLwogCQljYXNlIElOVDhPSUQ6CiAJCQlxLT5pOCA9IERhdHVt R2V0SW50NjQoZCk7CiAJCQkqcXAgPSAmcS0+aTg7CiAJCQlyZXR1cm4gJnRpbmZvOwogCQlkZWZh dWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBzdWJ0eXBlICV1IGZvciBidHJlZV9n aXN0IGludDggY3Jvc3MtdHlwZSBjb21wYXJpc29uIiwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRy ZWVfZ2lzdC9idHJlZV91dGlsc19udW0uYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGls c19udW0uYwppbmRleCA5MWYyNTNkODgwYy4uMTQ1ZGI4MTU0YzUgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc19udW0uYworKysgYi9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfdXRpbHNfbnVtLmMKQEAgLTI2NywxNiArMjY3LDE2IEBAIGdidF9udW1fY29uc2lzdGVu dChjb25zdCBHQlRfTlVNS0VZX1IgKmtleSwKIAkJCQkgICBjb25zdCBnYnRyZWVfbmluZm8gKnRp bmZvLAogCQkJCSAgIEZtZ3JJbmZvICpmbGluZm8pCiB7CiAJYm9vbAkJcmV0dmFsOwogCiAJLyoK LQkgKiBFdmVyeSBjb21wYXJpc29uIGNhbGxiYWNrIGlzIGludm9rZWQgYXMgZl94eChxdWVyeSwg a2V5KTogdGhlIHF1ZXJ5IHZhbHVlCi0JICogaXMgYWx3YXlzIHRoZSBsZWZ0IGFyZ3VtZW50IGFu ZCB0aGUgaW5kZXhlZCBrZXkgYm91bmQgdGhlIHJpZ2h0LiAgVGhlCi0JICogaW50ZWdlciBvcGNs YXNzZXMgcmVseSBvbiB0aGlzIGZpeGVkIG9yZGVyIHNvIHRoZWlyIGNyb3NzLXR5cGUgY2FsbGJh Y2tzCi0JICogY2FuIHJlYWQgZWFjaCBzaWRlIGF0IGl0cyBvd24gd2lkdGguCisJICogRXZlcnkg Y29tcGFyaXNvbiBjYWxsYmFjayBpcyBpbnZva2VkIGFzIGZfeHgocXVlcnksIGtleSk6IHRoZSBx dWVyeQorCSAqIHZhbHVlIGlzIGFsd2F5cyB0aGUgbGVmdCBhcmd1bWVudCBhbmQgdGhlIGluZGV4 ZWQga2V5IGJvdW5kIHRoZSByaWdodC4KKwkgKiBUaGUgaW50ZWdlciBvcGNsYXNzZXMgcmVseSBv biB0aGlzIGZpeGVkIG9yZGVyIHNvIHRoZWlyIGNyb3NzLXR5cGUKKwkgKiBjYWxsYmFja3MgY2Fu IHJlYWQgZWFjaCBzaWRlIGF0IGl0cyBvd24gd2lkdGguCiAJICovCiAJc3dpdGNoICgqc3RyYXRl Z3kpCiAJewogCQljYXNlIEJUTGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXI6CiAJCQlyZXR2YWwgPSB0 aW5mby0+Zl9nZShxdWVyeSwga2V5LT5sb3dlciwgZmxpbmZvKTsKIAkJCWJyZWFrOwpkaWZmIC0t Z2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5oIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX3V0aWxzX251bS5oCmluZGV4IGJlMDliZGIyNTgxLi4yMTdiMzYyYzE2OSAx MDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V0aWxzX251bS5oCisrKyBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV91dGlsc19udW0uaApAQCAtMzQsMTMgKzM0LDEzIEBAIHR5 cGVkZWYgc3RydWN0CiAgKi8KIHR5cGVkZWYgdW5pb24KIHsKIAlpbnQxNgkJaTI7CiAJaW50MzIJ CWk0OwogCWludDY0CQlpODsKLX0JCQlnYnRfaW50a2V5OworfSBnYnRfaW50a2V5OwogCiAKIC8q IHR5cGUgZGVzY3JpcHRpb24gKi8KIAogdHlwZWRlZiBzdHJ1Y3QKIHsKZGlmZiAtLWdpdCBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKaW5kZXggYzVkYjZjYTY3MDUuLmUyOWY3NmI2ZmViIDEwMDY0NAotLS0gYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdApAQCAtMzgwOCwxMiArMzgwOCwxMyBAQCBmbG9hdGluZ19kZWNpbWFsXzMyCiBm bG9hdGluZ19kZWNpbWFsXzY0CiBmbWdyX2hvb2tfdHlwZQogZm9yZWlnbl9nbG9iX2N4dAogZm9y ZWlnbl9sb2NfY3h0CiBmcmVlZnVuYwogZnNlY190CitnYnRfaW50a2V5CiBnYnRfdnNydF9hcmcK IGdidHJlZV9uaW5mbwogZ2J0cmVlX3ZpbmZvCiBnZW5lcmF0ZV9zZXJpZXNfZmN0eAogZ2VuZXJh dGVfc2VyaWVzX251bWVyaWNfZmN0eAogZ2VuZXJhdGVfc2VyaWVzX3RpbWVzdGFtcF9mY3R4Ci0t IAoyLjUxLjAKCg== --6a3b0e80_2acbe2e_5be--