Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p1CLm-0005oH-P0 for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Dec 2022 20:09:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p1CLl-0005s5-JU for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Dec 2022 20:09:33 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p1CLk-0005rv-OR for pgsql-hackers@lists.postgresql.org; Fri, 02 Dec 2022 20:09:33 +0000 Received: from mail-oa1-x32.google.com ([2001:4860:4864:20::32]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p1CLY-0006H7-AB for pgsql-hackers@lists.postgresql.org; Fri, 02 Dec 2022 20:09:32 +0000 Received: by mail-oa1-x32.google.com with SMTP id 586e51a60fabf-12c8312131fso6757600fac.4 for ; Fri, 02 Dec 2022 12:09:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=22HxjJ3ppCZUH5sotgKAKK6g7xt2my4JYLoPtpNdPNo=; b=NwOM8sE4ZwAKCND77e3o2CurnrmeHepbwc34Kw45pDW3qFipJHCicyiV4D8wUfNmcE RjzSGmRbjXZTInEumsY+wLQ7pji8BWH9qrKnJ3atEZgaOHYkqh0MZ+hJ0gosuGzCZQrW vNIA2bRzRMGd8ATA+Pd+wPFlY4EXRaOTLYUaQxq7UlDPjRj7V2JJV3b+ikoFtza+r+1d i+JvOFKMTGF2nIDGULMUWwScmM+u+R2dE6Kq+3HPOkEzAUmMdY5f3Nrauinut+n9xgsL IvHiE/Z/w52QawSUzZLH+Qm9DbJ66eV3JoyKiu/CcbDcPU8OsprRKAtVg+C5GzKNSshh ncCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=22HxjJ3ppCZUH5sotgKAKK6g7xt2my4JYLoPtpNdPNo=; b=wx4dH/ETdw+24rrCnYi6lou1OrFyHaljnLIGcCYy8l+IPifTVag+HFjhzVfl7J8s69 JD/0y0EyztHAyOBjU+otO5RocA5vyYqBwPHs6rmbpu+llO9XcdztVFoLg0/ABr0Pvx49 RZhMJMUshGG5pl0DkgvIfDjFLyY6FnXAzJpBp+EcLjTfxyTi7G9WL++tALTI/LupFehi v48w8LgGvEwchs9vYcYPBiv0K6H69XpawGeIpKWjrna9t2hHI1hs1adpyedRXrfaktrN 5OC3hFib6IrtKyBWLpk1Ht8uGzfeRM6oVuPGIXBTuwqqZT59vIr4pKzS0qyPWi/wOVcs b3RA== X-Gm-Message-State: ANoB5pm3EBf8Y3a8oJEjafluD0T/ajM4QeKJZzwgmfahE8iO4MbtMV51 rvGkomhuOB8vq7F4Iy5309mau4rbCjbSLdFNHFo= X-Google-Smtp-Source: AA0mqf4APz3CvMVvFK7lBBGuZewGc9XsjypA5gzmbCLuSWTHD0DzqmXm3/1poSXjBlPUj+LdNyx2sSCz4jgAHJduhO8= X-Received: by 2002:a05:6870:8189:b0:132:8335:64ba with SMTP id k9-20020a056870818900b00132833564bamr44294251oae.284.1670011758045; Fri, 02 Dec 2022 12:09:18 -0800 (PST) MIME-Version: 1.0 References: <20220906102312.4npuynhyvd2dy6qj@jrouhaud> <20220908071843.pkzngmo2g2syrats@jrouhaud> <20220916035904.6qdtcdl44lycltrg@jrouhaud> <20220922064059.xvpk5c4zpao7kztf@jrouhaud> <20221017031743.ayyfgppcipoxf2ia@jrouhaud> <33253784-6255-5073-f8d7-007f86bc4f0f@enterprisedb.com> <7c253688-7ced-a413-2719-394492bed5bb@postgrespro.ru> In-Reply-To: From: Pavel Stehule Date: Fri, 2 Dec 2022 21:08:38 +0100 Message-ID: Subject: Re: Schema variables - new implementation for Postgres 15 To: Sergey Shinderuk Cc: Tomas Vondra , Julien Rouhaud , dean.a.rasheed@gmail.com, er@xs4all.nl, joel@compiler.org, pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000009ca7c005eedde9a7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009ca7c005eedde9a7 Content-Type: multipart/alternative; boundary="0000000000009ca7bb05eedde9a5" --0000000000009ca7bb05eedde9a5 Content-Type: text/plain; charset="UTF-8" Hi fresh rebase Regards Pavel --0000000000009ca7bb05eedde9a5 Content-Type: text/html; charset="UTF-8"
Hi

fresh rebase

Regards

Pavel
--0000000000009ca7bb05eedde9a5-- --0000000000009ca7c005eedde9a7 Content-Type: text/x-patch; charset="US-ASCII"; name="v20221202-1-0010-documentation.patch" Content-Disposition: attachment; filename="v20221202-1-0010-documentation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb6xukz30 RnJvbSA3YTZhNWVhMWI3YWY5ZDk3NmU1ZjU3OTJhYTUyMzBlMThiMGJlNDBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IE1vbiwgNCBBcHIgMjAyMiAyMDoyMzo1NCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTAv MTBdIGRvY3VtZW50YXRpb24KCkRvY3VtZW50YXRpb24gZm9yIENSRUFURSBWQVJJQUJMRSwgRFJP UCBWQVJJQUJMRSBhbmQgTEVUIGNvbW1hbmRzLiBVcGRhdGUgb2YKR1JBTlQsIFJFVk9LRSwgRElT Q0FSRCwgQUxURVIgY29tbWFuZHMgcmVsYXRlZCB0byBzdXBwb3J0IG9mIHNlc3Npb24gdmFyaWFi bGVzLgotLS0KIGRvYy9zcmMvc2dtbC9hZHZhbmNlZC5zZ21sICAgICAgICAgICAgICAgICAgICB8 ICA2NiArKysrKysKIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAg ICB8IDE1OCArKysrKysrKysrKysrCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAg ICAgICAgICAgICAgfCAgMTUgKysKIGRvYy9zcmMvc2dtbC9ldmVudC10cmlnZ2VyLnNnbWwgICAg ICAgICAgICAgICB8ICAyNCArKwogZG9jL3NyYy9zZ21sL2dsb3NzYXJ5LnNnbWwgICAgICAgICAg ICAgICAgICAgIHwgIDE2ICsrCiBkb2Mvc3JjL3NnbWwvcGxwZ3NxbC5zZ21sICAgICAgICAgICAg ICAgICAgICAgfCAgMTIgKwogZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sICAgICAgICAg ICAgICAgIHwgICA0ICsKIC4uLi9zZ21sL3JlZi9hbHRlcl9kZWZhdWx0X3ByaXZpbGVnZXMuc2dt bCAgICB8ICAyNiArKy0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFyaWFibGUuc2dtbCAgICAg ICAgICB8IDE3OSArKysrKysrKysrKysrKysKIGRvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21s ICAgICAgICAgICAgICAgICB8ICAgMSArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zY2hlbWEu c2dtbCAgICAgICAgICAgfCAgIDcgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxl LnNnbWwgICAgICAgICB8IDIxNCArKysrKysrKysrKysrKysrKysKIGRvYy9zcmMvc2dtbC9yZWYv ZGlzY2FyZC5zZ21sICAgICAgICAgICAgICAgICB8ICAxNCArLQogZG9jL3NyYy9zZ21sL3JlZi9k cm9wX3ZhcmlhYmxlLnNnbWwgICAgICAgICAgIHwgMTE4ICsrKysrKysrKysKIGRvYy9zcmMvc2dt bC9yZWYvZ3JhbnQuc2dtbCAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBkb2Mvc3JjL3NnbWwv cmVmL2xldC5zZ21sICAgICAgICAgICAgICAgICAgICAgfCAxMDkgKysrKysrKysrCiBkb2Mvc3Jj L3NnbWwvcmVmL3BnX3Jlc3RvcmUuc2dtbCAgICAgICAgICAgICAgfCAgMTEgKwogZG9jL3NyYy9z Z21sL3JlZi9yZXZva2Uuc2dtbCAgICAgICAgICAgICAgICAgIHwgICA3ICsKIGRvYy9zcmMvc2dt bC9yZWZlcmVuY2Uuc2dtbCAgICAgICAgICAgICAgICAgICB8ICAgNCArCiAxOSBmaWxlcyBjaGFu Z2VkLCA5NzkgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJpYWJsZS5zZ21sCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFibGUuc2dtbAogY3JlYXRlIG1vZGUgMTAw NjQ0IGRvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9h ZHZhbmNlZC5zZ21sIGIvZG9jL3NyYy9zZ21sL2FkdmFuY2VkLnNnbWwKaW5kZXggNzU1YzlmMTQ4 NS4uMTFlZGFhYjAyNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2FkdmFuY2VkLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2FkdmFuY2VkLnNnbWwKQEAgLTcwMCw2ICs3MDAsNzIgQEAgU0VMRUNU IG5hbWUsIGVsZXZhdGlvbgogICA8L3NlY3QxPgogCiAKKyAgPHNlY3QxIGlkPSJ0dXRvcmlhbC1z ZXNzaW9uLXZhcmlhYmxlcyI+CisgICA8dGl0bGU+U2Vzc2lvbiBWYXJpYWJsZXM8L3RpdGxlPgor CisgICA8aW5kZXh0ZXJtIHpvbmU9InR1dG9yaWFsLXNlc3Npb24tdmFyaWFibGVzIj4KKyAgICA8 cHJpbWFyeT5TZXNzaW9uIHZhcmlhYmxlczwvcHJpbWFyeT4KKyAgIDwvaW5kZXh0ZXJtPgorCisg ICA8aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnNlc3Npb24gdmFyaWFibGU8L3ByaW1hcnk+Cisg ICAgPHNlY29uZGFyeT5pbnRyb2R1Y3Rpb248L3NlY29uZGFyeT4KKyAgIDwvaW5kZXh0ZXJtPgor CisgICA8cGFyYT4KKyAgICBTZXNzaW9uIHZhcmlhYmxlcyBhcmUgZGF0YWJhc2Ugb2JqZWN0cyB0 aGF0IGNhbiBob2xkIGEgdmFsdWUuCisgICAgU2Vzc2lvbiB2YXJpYWJsZXMsIGxpa2UgcmVsYXRp b25zLCBleGlzdCB3aXRoaW4gYSBzY2hlbWEgYW5kIHRoZWlyIGFjY2VzcworICAgIGlzIGNvbnRy b2xsZWQgdmlhIDxjb21tYW5kPkdSQU5UPC9jb21tYW5kPiBhbmQgPGNvbW1hbmQ+UkVWT0tFPC9j b21tYW5kPgorICAgIGNvbW1hbmRzLiAgQSBzZXNzaW9uIHZhcmlhYmxlIGNhbiBiZSBjcmVhdGVk IGJ5IHRoZSA8Y29tbWFuZD5DUkVBVEUKKyAgICBWQVJJQUJMRTwvY29tbWFuZD4gY29tbWFuZC4K KyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVGhlIHZhbHVlIG9mIGEgc2Vzc2lvbiB2YXJp YWJsZSBpcyBzZXQgd2l0aCB0aGUgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPiBTUUwKKyAgICBjb21t YW5kLiAgV2hpbGUgc2Vzc2lvbiB2YXJpYWJsZXMgc2hhcmUgcHJvcGVydGllcyB3aXRoIHRhYmxl cywgdGhlaXIgdmFsdWUKKyAgICBjYW5ub3QgYmUgdXBkYXRlZCB3aXRoIGFuIDxjb21tYW5kPlVQ REFURTwvY29tbWFuZD4gY29tbWFuZC4gVGhlIHZhbHVlIG9mIGEKKyAgICBzZXNzaW9uIHZhcmlh YmxlIG1heSBiZSByZXRyaWV2ZWQgYnkgdGhlIDxjb21tYW5kPlNFTEVDVDwvY29tbWFuZD4gU1FM CisgICAgY29tbWFuZC4KKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFT IGRhdGU7CitMRVQgdmFyMSA9IGN1cnJlbnRfZGF0ZTsKK1NFTEVDVCB2YXIxOworPC9wcm9ncmFt bGlzdGluZz4KKworICAgIG9yCisKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJMRSBw dWJsaWMuY3VycmVudF91c2VyX2lkIEFTIGludGVnZXI7CitHUkFOVCBSRUFEIE9OIFZBUklBQkxF IHB1YmxpYy5jdXJyZW50X3VzZXJfaWQgVE8gUFVCTElDOworTEVUIGN1cnJlbnRfdXNlcl9pZCA9 IChTRUxFQ1QgaWQgRlJPTSB1c2VycyBXSEVSRSB1c2VuYW1lID0gc2Vzc2lvbl91c2VyKTsKK1NF TEVDVCBjdXJyZW50X3VzZXJfaWQ7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgPC9wYXJhPgorCisg ICA8cGFyYT4KKyAgICBUaGUgdmFsdWUgb2YgYSBzZXNzaW9uIHZhcmlhYmxlIGlzIGxvY2FsIHRv IHRoZSBjdXJyZW50IHNlc3Npb24uIFJldHJpZXZpbmcKKyAgICBhIHZhcmlhYmxlJ3MgdmFsdWUg cmV0dXJucyBlaXRoZXIgYSA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBvciBhIGRlZmF1bHQKKyAg ICB2YWx1ZSwgdW5sZXNzIGl0cyB2YWx1ZSBoYXMgYmVlbiBzZXQgdG8gc29tZXRoaW5nIGVsc2Ug aW4gdGhlIGN1cnJlbnQKKyAgICBzZXNzaW9uIHVzaW5nIHRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1h bmQ+IGNvbW1hbmQuIFRoZSBjb250ZW50IG9mIGEgdmFyaWFibGUKKyAgICBpcyBub3QgdHJhbnNh Y3Rpb25hbC4gVGhpcyBpcyB0aGUgc2FtZSBhcyByZWd1bGFyIHZhcmlhYmxlcyBpbiBQTCBsYW5n dWFnZXMuCisgICAgVGhlIHNlc3Npb24gdmFyaWFibGVzIGNhbiBiZSBwZXJzaXN0ZW50IG9yIGNh biBiZSB0ZW1wb3JhcnkuIEluIGJvdGggY2FzZXMsCisgICAgdGhlIGNvbnRlbnQgb2Ygc2Vzc2lv biB2YXJpYWJsZXMgaXMgdGVtcG9yYXJ5IGFuZCBub3Qgc2hhcmVkIChsaWtlIGFuCisgICAgY29u dGVudCBvZiB0ZW1wb3JhcnkgdGFibGVzKS4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAg VGhlIHNlc3Npb24gdmFyaWFibGVzIGNhbiBiZSBzaGFkb3dlZCBieSBjb2x1bW4gcmVmZXJlbmNl cyBpbiBhIHF1ZXJ5LiBXaGVuCisgICAgYSBxdWVyeSBjb250YWlucyBpZGVudGlmaWVycyBvciBx dWFsaWZpZWQgaWRlbnRpZmllcnMgdGhhdCBjb3VsZCBiZSB1c2VkIGFzCisgICAgYm90aCBhIHNl c3Npb24gdmFyaWFibGUgaWRlbnRpZmllcnMgYW5kIGFzIGNvbHVtbiBpZGVudGlmaWVyLCB0aGVu IHRoZQorICAgIGNvbHVtbiBpZGVudGlmaWVyIGlzIHByZWZlcnJlZCBldmVyeSB0aW1lLiBXYXJu aW5ncyBjYW4gYmUgZW1pdHRlZCB3aGVuCisgICAgdGhpcyBzaXR1YXRpb24gaGFwcGVucyBieSBl bmFibGluZyBjb25maWd1cmF0aW9uIHBhcmFtZXRlciA8eHJlZgorICAgIGxpbmtlbmQ9Imd1Yy1z ZXNzaW9uLXZhcmlhYmxlcy1hbWJpZ3VpdHktd2FybmluZyIvPi4gVXNlciBjYW4gZXhwbGljaXRs eQorICAgIHF1YWxpZnkgdGhlIHNvdXJjZSBvYmplY3QgYnkgc3ludGF4IDxsaXRlcmFsPnRhYmxl LmNvbHVtbjwvbGl0ZXJhbD4gb3IKKyAgICA8bGl0ZXJhbD52YXJpYWJsZS5jb2x1bW48L2xpdGVy YWw+LgorICAgPC9wYXJhPgorICA8L3NlY3QxPgorCisKICAgPHNlY3QxIGlkPSJ0dXRvcmlhbC1j b25jbHVzaW9uIj4KICAgIDx0aXRsZT5Db25jbHVzaW9uPC90aXRsZT4KIApkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApp bmRleCA5ZWQyYjAyMGI3Li5kZmFiNjRiMzlkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMzY5LDYgKzM2 OSwxMSBAQAogICAgICAgPGVudHJ5PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctdXNlci1tYXBw aW5nIj48c3RydWN0bmFtZT5wZ191c2VyX21hcHBpbmc8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50 cnk+CiAgICAgICA8ZW50cnk+bWFwcGluZ3Mgb2YgdXNlcnMgdG8gZm9yZWlnbiBzZXJ2ZXJzPC9l bnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGluayBsaW5r ZW5kPSJjYXRhbG9nLXBnLXZhcmlhYmxlIj48c3RydWN0bmFtZT5wZ192YXJpYWJsZTwvc3RydWN0 bmFtZT48L2xpbms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5zZXNzaW9uIHZhcmlhYmxlczwvZW50 cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4K QEAgLTk2MjQsNCArOTYyOSwxNTcgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0 ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgPC90YWJs ZT4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJjYXRhbG9nLXBnLXZhcmlhYmxlIj4KKyAgPHRp dGxlPjxzdHJ1Y3RuYW1lPnBnX3ZhcmlhYmxlPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisKKyAgPGlu ZGV4dGVybSB6b25lPSJjYXRhbG9nLXBnLXZhcmlhYmxlIj4KKyAgIDxwcmltYXJ5PnBnX3Zhcmlh YmxlPC9wcmltYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8cGFyYT4KKyAgIFRoZSB0YWJsZSA8 c3RydWN0bmFtZT5wZ192YXJpYWJsZTwvc3RydWN0bmFtZT4gcHJvdmlkZXMgaW5mb3JtYXRpb24g YWJvdXQKKyAgIHNlc3Npb24gdmFyaWFibGVzLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAg PHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3ZhcmlhYmxlPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRs ZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICBDb2x1bW4gVHlwZQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgRGVzY3JpcHRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KyAgICA8L3RoZWFkPgorCisgICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K KyAgICAgICA8c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUm93IGlkZW50aWZpZXIKKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFybmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8 L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBz ZXNzaW9uIHZhcmlhYmxlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnZhcm5hbWVzcGFj ZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGlu ayBsaW5rZW5kPSJjYXRhbG9nLXBnLW5hbWVzcGFjZSI+PHN0cnVjdG5hbWU+cGdfbmFtZXNwYWNl PC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIE9JRCBvZiB0aGUgbmFtZXNwYWNl IHRoYXQgY29udGFpbnMgdGhpcyB2YXJpYWJsZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD52YXJ0eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVu Y2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctdHlwZSI+PHN0cnVjdG5hbWU+cGdfdHlwZTwv c3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhlIHZhcmlhYmxlJ3Mg ZGF0YSB0eXBlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnZhcnR5cG1vZDwvc3RydWN0 ZmllbGQ+IDx0eXBlPmludDQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICA8c3RydWN0ZmllbGQ+dmFydHlwbW9kPC9zdHJ1Y3RmaWVsZD4gcmVjb3JkcyB0eXBlLXNw ZWNpZmljIGRhdGEKKyAgICAgICBzdXBwbGllZCBhdCB2YXJpYWJsZSBjcmVhdGlvbiB0aW1lIChm b3IgZXhhbXBsZSwgdGhlIG1heGltdW0KKyAgICAgICBsZW5ndGggb2YgYSA8dHlwZT52YXJjaGFy PC90eXBlPiBjb2x1bW4pLiAgSXQgaXMgcGFzc2VkIHRvCisgICAgICAgdHlwZS1zcGVjaWZpYyBp bnB1dCBmdW5jdGlvbnMgYW5kIGxlbmd0aCBjb2VyY2lvbiBmdW5jdGlvbnMuCisgICAgICAgVGhl IHZhbHVlIHdpbGwgZ2VuZXJhbGx5IGJlIC0xIGZvciB0eXBlcyB0aGF0IGRvIG5vdCBuZWVkIDxz dHJ1Y3RmaWVsZD52YXJ0eXBtb2Q8L3N0cnVjdGZpZWxkPi4KKyAgICAgIDwvcGFyYT48L2VudHJ5 PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3Ry dWN0ZmllbGQ+dmFyb3duZXI8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAg KHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1hdXRoaWQiPjxzdHJ1Y3RuYW1l PnBnX2F1dGhpZDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZp ZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE93bmVyIG9mIHRoZSB2 YXJpYWJsZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD52YXJjb2xsYXRpb248L3N0cnVj dGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2Vu ZD0iY2F0YWxvZy1wZy1jb2xsYXRpb24iPjxzdHJ1Y3RuYW1lPnBnX2NvbGxhdGlvbjwvc3RydWN0 bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBkZWZpbmVkIGNvbGxhdGlvbiBvZiB0aGUgdmFy aWFibGUsIG9yIHplcm8gaWYgdGhlIHZhcmlhYmxlIGlzCisgICAgICAgbm90IG9mIGEgY29sbGF0 YWJsZSBkYXRhIHR5cGUuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnZhcmlzbm90bnVs bDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2xlYW48L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBUcnVlIGlmIHRoZSBzZXNzaW9uIHZhcmlhYmxlIGRvZXNuJ3QgYWxs b3cgbnVsbCB2YWx1ZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZmFsc2UuCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPnZhcmlzaW1tdXRhYmxlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbGVh bjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgdGhl IHZhcmlhYmxlIGlzIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGV2YXJpYWJsZS1pbW11dGFibGUi PmltbXV0YWJsZTwvbGluaz4gKGNhbm5vdCBiZSBtb2RpZmllZCkuIFRoZSBkZWZhdWx0IHZhbHVl IGlzIGZhbHNlLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD52YXJlb3hhY3Rpb248L3N0 cnVjdGZpZWxkPiA8dHlwZT5jaGFyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgQWN0aW9uIHBlcmZvcm1lZCBhdCBlbmQgb2YgdHJhbnNhY3Rpb246CisgICAgICAg PGxpdGVyYWw+bjwvbGl0ZXJhbD4gPSBubyBhY3Rpb24sIDxsaXRlcmFsPmQ8L2xpdGVyYWw+ID0g ZHJvcCB0aGUgdmFyaWFibGUsCisgICAgICAgPGxpdGVyYWw+cjwvbGl0ZXJhbD4gPSByZXNldCB0 aGUgdmFyaWFibGUgdG8gaXRzIGRlZmF1bHQgdmFsdWUuCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnZhcmRlZmV4cHI8L3N0cnVjdGZpZWxkPiA8dHlwZT5wZ19ub2RlX3RyZWU8L3R5cGU+ CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgaW50ZXJuYWwgcmVwcmVz ZW50YXRpb24gb2YgdGhlIHZhcmlhYmxlIGRlZmF1bHQgdmFsdWUKKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+dmFyYWNsPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YWNsaXRlbVtdPC90eXBlPgor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgQWNjZXNzIHByaXZpbGVnZXM7IHNl ZQorICAgICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1ncmFudCIvPiBhbmQKKyAgICAgICA8eHJlZiBs aW5rZW5kPSJzcWwtcmV2b2tlIi8+CisgICAgICAgZm9yIGRldGFpbHMKKyAgICAgIDwvcGFyYT48 L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFi bGU+CisgPC9zZWN0MT4KKwogPC9jaGFwdGVyPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Nv bmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDM5ZDFjODllMzMuLmZi ZTA1ZDRjMzEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTEwMjIxLDYgKzEwMjIxLDIxIEBAIGR5bmFtaWNfbGli cmFyeV9wYXRoID0gJ0M6XHRvb2xzXHBvc3RncmVzcWw7SDpcbXlfcHJvamVjdFxsaWI7JGxpYmRp cicKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJs aXN0ZW50cnkgaWQ9Imd1Yy1zZXNzaW9uLXZhcmlhYmxlcy1hbWJpZ3VpdHktd2FybmluZyIgeHJl ZmxhYmVsPSJzZXNzaW9uX3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2FybmluZyI+CisgICAgICA8dGVy bT48dmFybmFtZT5zZXNzaW9uX3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2FybmluZzwvdmFybmFtZT4g KDx0eXBlPmJvb2xlYW48L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFy eT48dmFybmFtZT5zZXNzaW9uX3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2FybmluZzwvdmFybmFtZT4g Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAg ICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgV2hl biBvbiwgYSB3YXJuaW5nIGlzIHJhaXNlZCB3aGVuIGFueSBpZGVudGlmaWVyIGluIGEgcXVlcnkg Y291bGQgYmUKKyAgICAgICAgdXNlZCBhcyBib3RoIGEgY29sdW1uIGlkZW50aWZpZXIsIHJvdXRp bmUgdmFyaWFibGUgb3IgYSBzZXNzaW9uCisgICAgICAgIHZhcmlhYmxlIGlkZW50aWZpZXIuICBU aGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAg ICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50 cnkgaWQ9Imd1Yy1zdGFuZGFyZC1jb25mb3JtaW5nLXN0cmluZ3MiIHhyZWZsYWJlbD0ic3RhbmRh cmRfY29uZm9ybWluZ19zdHJpbmdzIj4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPnN0YW5kYXJkX2Nv bmZvcm1pbmdfc3RyaW5nczwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQogICAgICAg PGluZGV4dGVybT48cHJpbWFyeT5zdHJpbmdzPC9wcmltYXJ5PjxzZWNvbmRhcnk+c3RhbmRhcmQg Y29uZm9ybWluZzwvc2Vjb25kYXJ5PjwvaW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2V2ZW50LXRyaWdnZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9ldmVudC10cmlnZ2VyLnNnbWwK aW5kZXggZjEyMzVhMmM5Zi4uYThmMzAzYjQ3NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2V2 ZW50LXRyaWdnZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZXZlbnQtdHJpZ2dlci5zZ21sCkBA IC00MDUsNiArNDA1LDE0IEBACiAgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KICAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkFMVEVSIFZBUklBQkxFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KICAg ICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFZJ RVc8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KQEAgLTY5Myw2ICs3MDEsMTQgQEAKICAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFZBUklBQkxFPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD5YPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBWSUVXPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CkBAIC05 ODEsNiArOTk3LDE0IEBACiAgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K ICAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkRST1AgVkFSSUFCTEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgogICAgICAg IDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBWSUVXPC9s aXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2xvc3Nhcnkuc2dt bCBiL2RvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sCmluZGV4IDdjMDFhNTQxZmUuLjZjNTJmNzc3 NzYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9nbG9zc2FyeS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9nbG9zc2FyeS5zZ21sCkBAIC0xNTM0LDYgKzE1MzQsMjIgQEAKICAgIDwvZ2xvc3NkZWY+ CiAgIDwvZ2xvc3NlbnRyeT4KIAorICA8Z2xvc3NlbnRyeSBpZD0iZ2xvc3Nhcnktc2Vzc2lvbi12 YXJpYWJsZSI+CisgICA8Z2xvc3N0ZXJtPlNlc3Npb24gdmFyaWFibGU8L2dsb3NzdGVybT4KKyAg IDxnbG9zc2RlZj4KKyAgICA8cGFyYT4KKyAgICAgQSBwZXJzaXN0ZW50IGRhdGFiYXNlIG9iamVj dCB0aGF0IGhvbGRzIGEgdmFsdWUgaW4gc2Vzc2lvbiBtZW1vcnkuICBUaGlzCisgICAgIG1lbW9y eSBpcyBub3Qgc2hhcmVkIGFjcm9zcyBzZXNzaW9ucywgYW5kIGFmdGVyIHNlc3Npb24gZW5kLCB0 aGlzIG1lbW9yeQorICAgICAodGhlIHZhbHVlKSBpcyByZWxlYXNlZC4gVGhlIGFjY2VzcyAocmVh ZCBvciB3cml0ZSkgdG8gc2Vzc2lvbiB2YXJpYWJsZXMKKyAgICAgaXMgY29udHJvbGxlZCBieSBh Y2Nlc3MgcmlnaHRzIHNpbWlsYXJseSB0byBvdGhlciBkYXRhYmFzZSBvYmplY3QgYWNjZXNzCisg ICAgIHJpZ2h0cy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIEZvciBtb3JlIGluZm9y bWF0aW9uLCBzZWUgPHhyZWYgbGlua2VuZD0idHV0b3JpYWwtc2Vzc2lvbi12YXJpYWJsZXMiLz4u CisgICAgPC9wYXJhPgorICAgPC9nbG9zc2RlZj4KKyAgPC9nbG9zc2VudHJ5PgorCiAgIDxnbG9z c2VudHJ5IGlkPSJnbG9zc2FyeS1zaGFyZWQtbWVtb3J5Ij4KICAgIDxnbG9zc3Rlcm0+U2hhcmVk IG1lbW9yeTwvZ2xvc3N0ZXJtPgogICAgPGdsb3NzZGVmPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3BscGdzcWwuc2dtbCBiL2RvYy9zcmMvc2dtbC9wbHBnc3FsLnNnbWwKaW5kZXggMmIyYTFh ODIxNS4uMmUyYjcyYjY5ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3BscGdzcWwuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcGxwZ3NxbC5zZ21sCkBAIC01OTQyLDYgKzU5NDIsMTggQEAgJCQg TEFOR1VBR0UgcGxwZ3NxbCBTVFJJQ1QgSU1NVVRBQkxFOwogPC9wcm9ncmFtbGlzdGluZz4KICAg ICA8L3BhcmE+CiAgICA8L3NlY3QzPgorCisgICA8c2VjdDM+CisgICAgPHRpdGxlPjxjb21tYW5k PlNlc3Npb24gdmFyaWFibGVzPC9jb21tYW5kPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAg VGhlIDxhcHBsaWNhdGlvbj5QTC9wZ1NRTDwvYXBwbGljYXRpb24+IGxhbmd1YWdlIGhhcyBubyBw YWNrYWdlcywgYW5kCisgICAgIHRoZXJlZm9yZSBubyBwYWNrYWdlIHZhcmlhYmxlcyBvciBwYWNr YWdlIGNvbnN0YW50cy4KKyAgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1l PiBoYXMgc2Vzc2lvbiB2YXJpYWJsZXMgYW5kIGltbXV0YWJsZQorICAgICBzZXNzaW9uIHZhcmlh Ymxlcy4gU2Vzc2lvbiB2YXJpYWJsZXMgY2FuIGJlIGNyZWF0ZWQgYnkgPGNvbW1hbmQ+Q1JFQVRF CisgICAgIFZBUklBQkxFPC9jb21tYW5kPiwgYXMgZGVzY3JpYmVkIGluIDx4cmVmIGxpbmtlbmQ9 InNxbC1jcmVhdGV2YXJpYWJsZSIvPi4KKyAgICA8L3BhcmE+CisgICA8L3NlY3QzPgogICA8L3Nl Y3QyPgogCiAgIDxzZWN0MiBpZD0icGxwZ3NxbC1wb3J0aW5nLWFwcGVuZGl4Ij4KZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWxs ZmlsZXMuc2dtbAppbmRleCBlOTBhMGUxZjgzLi4yNGUzMGZkZDk3IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxl cy5zZ21sCkBAIC00Nyw2ICs0Nyw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291 cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgYWx0ZXJUeXBlICAgICAgICAg IFNZU1RFTSAiYWx0ZXJfdHlwZS5zZ21sIj4KIDwhRU5USVRZIGFsdGVyVXNlciAgICAgICAgICBT WVNURU0gImFsdGVyX3VzZXIuc2dtbCI+CiA8IUVOVElUWSBhbHRlclVzZXJNYXBwaW5nICAgU1lT VEVNICJhbHRlcl91c2VyX21hcHBpbmcuc2dtbCI+Cis8IUVOVElUWSBhbHRlclZhcmlhYmxlICAg ICAgU1lTVEVNICJhbHRlcl92YXJpYWJsZS5zZ21sIj4KIDwhRU5USVRZIGFsdGVyVmlldyAgICAg ICAgICBTWVNURU0gImFsdGVyX3ZpZXcuc2dtbCI+CiA8IUVOVElUWSBhbmFseXplICAgICAgICAg ICAgU1lTVEVNICJhbmFseXplLnNnbWwiPgogPCFFTlRJVFkgYmVnaW4gICAgICAgICAgICAgIFNZ U1RFTSAiYmVnaW4uc2dtbCI+CkBAIC05OSw2ICsxMDAsNyBAQCBDb21wbGV0ZSBsaXN0IG9mIHVz YWJsZSBzZ21sIHNvdXJjZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeS4KIDwhRU5USVRZIGNyZWF0 ZVR5cGUgICAgICAgICBTWVNURU0gImNyZWF0ZV90eXBlLnNnbWwiPgogPCFFTlRJVFkgY3JlYXRl VXNlciAgICAgICAgIFNZU1RFTSAiY3JlYXRlX3VzZXIuc2dtbCI+CiA8IUVOVElUWSBjcmVhdGVV c2VyTWFwcGluZyAgU1lTVEVNICJjcmVhdGVfdXNlcl9tYXBwaW5nLnNnbWwiPgorPCFFTlRJVFkg Y3JlYXRlVmFyaWFibGUgICAgIFNZU1RFTSAiY3JlYXRlX3ZhcmlhYmxlLnNnbWwiPgogPCFFTlRJ VFkgY3JlYXRlVmlldyAgICAgICAgIFNZU1RFTSAiY3JlYXRlX3ZpZXcuc2dtbCI+CiA8IUVOVElU WSBkZWFsbG9jYXRlICAgICAgICAgU1lTVEVNICJkZWFsbG9jYXRlLnNnbWwiPgogPCFFTlRJVFkg ZGVjbGFyZSAgICAgICAgICAgIFNZU1RFTSAiZGVjbGFyZS5zZ21sIj4KQEAgLTE0OCw2ICsxNTAs NyBAQCBDb21wbGV0ZSBsaXN0IG9mIHVzYWJsZSBzZ21sIHNvdXJjZSBmaWxlcyBpbiB0aGlzIGRp cmVjdG9yeS4KIDwhRU5USVRZIGRyb3BVc2VyICAgICAgICAgICBTWVNURU0gImRyb3BfdXNlci5z Z21sIj4KIDwhRU5USVRZIGRyb3BVc2VyTWFwcGluZyAgICBTWVNURU0gImRyb3BfdXNlcl9tYXBw aW5nLnNnbWwiPgogPCFFTlRJVFkgZHJvcFZpZXcgICAgICAgICAgIFNZU1RFTSAiZHJvcF92aWV3 LnNnbWwiPgorPCFFTlRJVFkgZHJvcFZhcmlhYmxlICAgICAgIFNZU1RFTSAiZHJvcF92YXJpYWJs ZS5zZ21sIj4KIDwhRU5USVRZIGVuZCAgICAgICAgICAgICAgICBTWVNURU0gImVuZC5zZ21sIj4K IDwhRU5USVRZIGV4ZWN1dGUgICAgICAgICAgICBTWVNURU0gImV4ZWN1dGUuc2dtbCI+CiA8IUVO VElUWSBleHBsYWluICAgICAgICAgICAgU1lTVEVNICJleHBsYWluLnNnbWwiPgpAQCAtMTU1LDYg KzE1OCw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRo aXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZ3JhbnQgICAgICAgICAgICAgIFNZU1RFTSAiZ3JhbnQu c2dtbCI+CiA8IUVOVElUWSBpbXBvcnRGb3JlaWduU2NoZW1hIFNZU1RFTSAiaW1wb3J0X2ZvcmVp Z25fc2NoZW1hLnNnbWwiPgogPCFFTlRJVFkgaW5zZXJ0ICAgICAgICAgICAgIFNZU1RFTSAiaW5z ZXJ0LnNnbWwiPgorPCFFTlRJVFkgbGV0ICAgICAgICAgICAgICAgIFNZU1RFTSAibGV0LnNnbWwi PgogPCFFTlRJVFkgbGlzdGVuICAgICAgICAgICAgIFNZU1RFTSAibGlzdGVuLnNnbWwiPgogPCFF TlRJVFkgbG9hZCAgICAgICAgICAgICAgIFNZU1RFTSAibG9hZC5zZ21sIj4KIDwhRU5USVRZIGxv Y2sgICAgICAgICAgICAgICBTWVNURU0gImxvY2suc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2FsdGVyX2RlZmF1bHRfcHJpdmlsZWdlcy5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9kZWZhdWx0X3ByaXZpbGVnZXMuc2dtbAppbmRleCAwZGEyOTVkYWZmLi4zOTE0YzJk YzQ3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX2RlZmF1bHRfcHJpdmlsZWdl cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfZGVmYXVsdF9wcml2aWxlZ2VzLnNn bWwKQEAgLTUwLDYgKzUwLDEwIEBAIEdSQU5UIHsgVVNBR0UgfCBDUkVBVEUgfCBBTEwgWyBQUklW SUxFR0VTIF0gfQogICAgIE9OIFNDSEVNQVMKICAgICBUTyB7IFsgR1JPVVAgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBQVUJMSUMgfSBb LCAuLi5dIFsgV0lUSCBHUkFOVCBPUFRJT04gXQogCitHUkFOVCB7IFNFTEVDVCB8IFVQREFURSB8 IEFMTCBbIFBSSVZJTEVHRVMgXSB9CisgICAgT04gVkFSSUFCTEVTCisgICAgVE8geyBbIEdST1VQ IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+ IHwgUFVCTElDIH0gWywgLi4uXSBbIFdJVEggR1JBTlQgT1BUSU9OIF0KKwogUkVWT0tFIFsgR1JB TlQgT1BUSU9OIEZPUiBdCiAgICAgeyB7IFNFTEVDVCB8IElOU0VSVCB8IFVQREFURSB8IERFTEVU RSB8IFRSVU5DQVRFIHwgUkVGRVJFTkNFUyB8IFRSSUdHRVIgfCBWQUNVVU0gfCBBTkFMWVpFIH0K ICAgICBbLCAuLi5dIHwgQUxMIFsgUFJJVklMRUdFUyBdIH0KQEAgLTgxLDYgKzg1LDEyIEBAIFJF Vk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQogICAgIE9OIFNDSEVNQVMKICAgICBGUk9NIHsgWyBH Uk9VUCBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25hbWU8L3JlcGxhY2Vh YmxlPiB8IFBVQkxJQyB9IFssIC4uLl0KICAgICBbIENBU0NBREUgfCBSRVNUUklDVCBdCisKK1JF Vk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQorICAgIHsgeyBTRUxFQ1QgfCBVUERBVEUgfSBbLCAu Li5dIHwgQUxMIFsgUFJJVklMRUdFUyBdIH0KKyAgICBPTiBWQVJJQUJMRVMKKyAgICBGUk9NIHsg WyBHUk9VUCBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25hbWU8L3JlcGxh Y2VhYmxlPiB8IFBVQkxJQyB9IFssIC4uLl0KKyAgICBbIENBU0NBREUgfCBSRVNUUklDVCBdCiA8 L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTkyLDE0ICsxMDIsMTQgQEAgUkVW T0tFIFsgR1JBTlQgT1BUSU9OIEZPUiBdCiAgICB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byBvYmpl Y3RzIGNyZWF0ZWQgaW4gdGhlIGZ1dHVyZS4gIChJdCBkb2VzIG5vdAogICAgYWZmZWN0IHByaXZp bGVnZXMgYXNzaWduZWQgdG8gYWxyZWFkeS1leGlzdGluZyBvYmplY3RzLikgIEN1cnJlbnRseSwK ICAgIG9ubHkgdGhlIHByaXZpbGVnZXMgZm9yIHNjaGVtYXMsIHRhYmxlcyAoaW5jbHVkaW5nIHZp ZXdzIGFuZCBmb3JlaWduCi0gICB0YWJsZXMpLCBzZXF1ZW5jZXMsIGZ1bmN0aW9ucywgYW5kIHR5 cGVzIChpbmNsdWRpbmcgZG9tYWlucykgY2FuIGJlCi0gICBhbHRlcmVkLiAgRm9yIHRoaXMgY29t bWFuZCwgZnVuY3Rpb25zIGluY2x1ZGUgYWdncmVnYXRlcyBhbmQgcHJvY2VkdXJlcy4KLSAgIFRo ZSB3b3JkcyA8bGl0ZXJhbD5GVU5DVElPTlM8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5ST1VUSU5F UzwvbGl0ZXJhbD4gYXJlCi0gICBlcXVpdmFsZW50IGluIHRoaXMgY29tbWFuZC4gICg8bGl0ZXJh bD5ST1VUSU5FUzwvbGl0ZXJhbD4gaXMgcHJlZmVycmVkCi0gICBnb2luZyBmb3J3YXJkIGFzIHRo ZSBzdGFuZGFyZCB0ZXJtIGZvciBmdW5jdGlvbnMgYW5kIHByb2NlZHVyZXMgdGFrZW4KLSAgIHRv Z2V0aGVyLiAgSW4gZWFybGllciBQb3N0Z3JlU1FMIHJlbGVhc2VzLCBvbmx5IHRoZQotICAgd29y ZCA8bGl0ZXJhbD5GVU5DVElPTlM8L2xpdGVyYWw+IHdhcyBhbGxvd2VkLiAgSXQgaXMgbm90IHBv c3NpYmxlIHRvIHNldAotICAgZGVmYXVsdCBwcml2aWxlZ2VzIGZvciBmdW5jdGlvbnMgYW5kIHBy b2NlZHVyZXMgc2VwYXJhdGVseS4pCisgICB0YWJsZXMpLCBzZXF1ZW5jZXMsIGZ1bmN0aW9ucywg dHlwZXMgKGluY2x1ZGluZyBkb21haW5zKSBhbmQgc2Vzc2lvbgorICAgdmFyaWFibGVzIGNhbiBi ZSBhbHRlcmVkLiAgRm9yIHRoaXMgY29tbWFuZCwgZnVuY3Rpb25zIGluY2x1ZGUgYWdncmVnYXRl cworICAgYW5kIHByb2NlZHVyZXMuICBUaGUgd29yZHMgPGxpdGVyYWw+RlVOQ1RJT05TPC9saXRl cmFsPiBhbmQKKyAgIDxsaXRlcmFsPlJPVVRJTkVTPC9saXRlcmFsPiBhcmUgZXF1aXZhbGVudCBp biB0aGlzIGNvbW1hbmQuCisgICAoPGxpdGVyYWw+Uk9VVElORVM8L2xpdGVyYWw+IGlzIHByZWZl cnJlZCBnb2luZyBmb3J3YXJkIGFzIHRoZSBzdGFuZGFyZCB0ZXJtCisgICBmb3IgZnVuY3Rpb25z IGFuZCBwcm9jZWR1cmVzIHRha2VuIHRvZ2V0aGVyLiAgSW4gZWFybGllciBQb3N0Z3JlU1FMCisg ICByZWxlYXNlcywgb25seSB0aGUgd29yZCA8bGl0ZXJhbD5GVU5DVElPTlM8L2xpdGVyYWw+IHdh cyBhbGxvd2VkLiAgSXQgaXMgbm90CisgICBwb3NzaWJsZSB0byBzZXQgZGVmYXVsdCBwcml2aWxl Z2VzIGZvciBmdW5jdGlvbnMgYW5kIHByb2NlZHVyZXMgc2VwYXJhdGVseS4pCiAgIDwvcGFyYT4K IAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFyaWFibGUu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5kMjAzNjM1MWU1Ci0tLSAvZGV2L251bGwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJpYWJsZS5zZ21sCkBAIC0wLDAgKzEsMTc5IEBACis8 IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVTUUwgZG9j dW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWFsdGVydmFyaWFibGUiPgorIDxp bmRleHRlcm0gem9uZT0ic3FsLWFsdGVydmFyaWFibGUiPgorICA8cHJpbWFyeT5BTFRFUiBWQVJJ QUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxpbmRleHRlcm0+CisgIDxwcmltYXJ5 PnNlc3Npb24gdmFyaWFibGU8L3ByaW1hcnk+CisgIDxzZWNvbmRhcnk+YWx0ZXJpbmc8L3NlY29u ZGFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5BTFRF UiBWQVJJQUJMRTwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+Cisg IDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8 L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+QUxURVIgVkFSSUFCTEU8L3Jl Zm5hbWU+CisgIDxyZWZwdXJwb3NlPgorICAgY2hhbmdlIHRoZSBkZWZpbml0aW9uIG9mIGEgc2Vz c2lvbiB2YXJpYWJsZQorICA8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5 bm9wc2lzZGl2PgorPHN5bm9wc2lzPgorQUxURVIgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBPV05FUiBUTyB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uZXdfb3duZXI8L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRfUk9MRSB8 IENVUlJFTlRfVVNFUiB8IFNFU1NJT05fVVNFUiB9CitBTFRFUiBWQVJJQUJMRSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X25hbWU8L3JlcGxhY2VhYmxlPgorQUxURVIgVkFS SUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBT RVQgU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfc2NoZW1hPC9yZXBs YWNlYWJsZT4KKzwvc3lub3BzaXM+CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4K KyAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFu ZD5BTFRFUiBWQVJJQUJMRTwvY29tbWFuZD4gY29tbWFuZCBjaGFuZ2VzIHRoZSBkZWZpbml0aW9u IG9mIGFuCisgICBleGlzdGluZyBzZXNzaW9uIHZhcmlhYmxlLiBUaGVyZSBhcmUgc2V2ZXJhbCBz dWJmb3JtczoKKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVy bT48bGl0ZXJhbD5PV05FUjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBjaGFuZ2VzIHRoZSBvd25lciBvZiB0aGUgc2Vzc2lvbiB2 YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRy eT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5SRU5BTUU8L2xpdGVy YWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0g Y2hhbmdlcyB0aGUgbmFtZSBvZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT48bGl0ZXJhbD5TRVQgU0NIRU1BPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIG1vdmVzIHRoZSBzZXNzaW9uIHZh cmlhYmxlIGludG8gYW5vdGhlciBzY2hlbWEuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIE9ubHkgdGhlIG93bmVyIG9yIGEgc3VwZXJ1c2VyIGlzIGFsbG93ZWQgdG8g YWx0ZXIgYSBzZXNzaW9uIHZhcmlhYmxlLgorICAgSW4gb3JkZXIgdG8gbW92ZSBhIHNlc3Npb24g dmFyaWFibGUgZnJvbSBvbmUgc2NoZW1hIHRvIGFub3RoZXIsIHRoZSB1c2VyCisgICBtdXN0IGFs c28gaGF2ZSB0aGUgPGxpdGVyYWw+Q1JFQVRFPC9saXRlcmFsPiBwcml2aWxlZ2Ugb24gdGhlIG5l dyBzY2hlbWEgKG9yCisgICBiZSBhIHN1cGVydXNlcikuCisKKyAgIEluIG9yZGVyIHRvIG1vdmUg dGhlIHNlc3Npb24gdmFyaWFibGUgb3duZXJzaGlwIGZyb20gb25lIHJvbGUgdG8gYW5vdGhlciwK KyAgIHRoZSB1c2VyIG11c3QgYWxzbyBiZSBhIGRpcmVjdCBvciBpbmRpcmVjdCBtZW1iZXIgb2Yg dGhlIG5ldworICAgb3duaW5nIHJvbGUsIGFuZCB0aGF0IHJvbGUgbXVzdCBoYXZlIHRoZSA8bGl0 ZXJhbD5DUkVBVEU8L2xpdGVyYWw+IHByaXZpbGVnZQorICAgb24gdGhlIHNlc3Npb24gdmFyaWFi bGUncyBzY2hlbWEgKG9yIGJlIGEgc3VwZXJ1c2VyKS4gVGhlc2UgcmVzdHJpY3Rpb25zCisgICBl bmZvcmNlIHRoYXQgYWx0ZXJpbmcgdGhlIG93bmVyIGRvZXNuJ3QgZG8gYW55dGhpbmcgeW91IGNv dWxkbid0IGRvIGJ5CisgICBkcm9wcGluZyBhbmQgcmVjcmVhdGluZyB0aGUgc2Vzc2lvbiB2YXJp YWJsZS4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Q YXJhbWV0ZXJzPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAg PHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBh cmE+CisgICAgICAgIFRoZSBuYW1lIChwb3NzaWJseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiB0aGUg ZXhpc3Rpbmcgc2Vzc2lvbiB2YXJpYWJsZQorICAgICAgICB0byBhbHRlci4KKyAgICAgICA8L3Bh cmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFy bGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5l d19uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBh cmE+CisgICAgICAgIFRoZSBuZXcgbmFtZSBmb3IgdGhlIHNlc3Npb24gdmFyaWFibGUuCisgICAg ICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAg ICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uZXdfb3duZXI8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHVzZXIgbmFtZSBvZiB0aGUgbmV3IG93bmVyIG9mIHRo ZSBzZXNzaW9uIHZhcmlhYmxlLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3NjaGVtYTwvcmVwbGFjZWFibGU+PC90 ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgbmV3IHNj aGVtYSBmb3IgdGhlIHNlc3Npb24gdmFyaWFibGUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9s aXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgICA8 L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFtcGxlczwv dGl0bGU+CisKKyAgPHBhcmE+CisgICBUbyByZW5hbWUgYSBzZXNzaW9uIHZhcmlhYmxlOgorPHBy b2dyYW1saXN0aW5nPgorQUxURVIgVkFSSUFCTEUgZm9vIFJFTkFNRSBUTyBib287Cis8L3Byb2dy YW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBjaGFuZ2UgdGhlIG93bmVy IG9mIHRoZSBzZXNzaW9uIHZhcmlhYmxlIDxsaXRlcmFsPmJvbzwvbGl0ZXJhbD4gdG8KKyAgIDxs aXRlcmFsPmpvZTwvbGl0ZXJhbD46Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBWQVJJQUJMRSBi b28gT1dORVIgVE8gam9lOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJh PgorICAgVG8gY2hhbmdlIHRoZSBzY2hlbWEgb2YgdGhlIHNlc3Npb24gdmFyaWFibGUgPGxpdGVy YWw+Ym9vPC9saXRlcmFsPiB0bworICAgPGxpdGVyYWw+cHJpdmF0ZTwvbGl0ZXJhbD46Cis8cHJv Z3JhbWxpc3Rpbmc+CitBTFRFUiBWQVJJQUJMRSBib28gU0VUIFNDSEVNQSBwcml2YXRlOworPC9w cm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+Cisg IDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFNlc3Npb24gdmFy aWFibGVzIGFuZCB0aGlzIGNvbW1hbmQgaW4gcGFydGljdWxhciBhcmUgYSBQb3N0Z3JlU1FMIGV4 dGVuc2lvbi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDEgaWQ9InNxbC1h bHRlcnZhcmlhYmxlLXNlZS1hbHNvIj4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4KKworICA8 c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwt Y3JlYXRldmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3Fs LWRyb3B2YXJpYWJsZSIvPjwvbWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwt bGV0Ii8+PC9tZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorPC9yZWZlbnRy eT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9jb21tZW50LnNnbWwKaW5kZXggMjNkOTAyOWFmOS4uNTBiZmVjNmYyOCAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jb21tZW50LnNnbWwKQEAgLTY1LDYgKzY1LDcgQEAgQ09NTUVOVCBPTgogICBUUkFOU0ZPUk0g Rk9SIDxyZXBsYWNlYWJsZT50eXBlX25hbWU8L3JlcGxhY2VhYmxlPiBMQU5HVUFHRSA8cmVwbGFj ZWFibGU+bGFuZ19uYW1lPC9yZXBsYWNlYWJsZT4gfAogICBUUklHR0VSIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiBPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IHwKICAgVFlQRSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2VhYmxlPiB8 CisgIFZBUklBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vYmplY3RfbmFtZTwv cmVwbGFjZWFibGU+IHwKICAgVklFVyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2Jq ZWN0X25hbWU8L3JlcGxhY2VhYmxlPgogfSBJUyAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRleHQ8L3JlcGxhY2VhYmxlPicKIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfc2NoZW1hLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zY2hlbWEuc2dtbApp bmRleCAzYzJkZGRiMTYzLi5mNzQ4OGZkMDFiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9zY2hlbWEuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zY2hlbWEu c2dtbApAQCAtMTAzLDkgKzEwMywxMCBAQCBDUkVBVEUgU0NIRU1BIElGIE5PVCBFWElTVFMgQVVU SE9SSVpBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9zcAogICAgICAg ICBzY2hlbWEuIEN1cnJlbnRseSwgb25seSA8Y29tbWFuZD5DUkVBVEUKICAgICAgICAgVEFCTEU8 L2NvbW1hbmQ+LCA8Y29tbWFuZD5DUkVBVEUgVklFVzwvY29tbWFuZD4sIDxjb21tYW5kPkNSRUFU RQogICAgICAgICBJTkRFWDwvY29tbWFuZD4sIDxjb21tYW5kPkNSRUFURSBTRVFVRU5DRTwvY29t bWFuZD4sIDxjb21tYW5kPkNSRUFURQotICAgICAgICBUUklHR0VSPC9jb21tYW5kPiBhbmQgPGNv bW1hbmQ+R1JBTlQ8L2NvbW1hbmQ+IGFyZSBhY2NlcHRlZCBhcyBjbGF1c2VzCi0gICAgICAgIHdp dGhpbiA8Y29tbWFuZD5DUkVBVEUgU0NIRU1BPC9jb21tYW5kPi4gT3RoZXIga2luZHMgb2Ygb2Jq ZWN0cyBtYXkKLSAgICAgICAgYmUgY3JlYXRlZCBpbiBzZXBhcmF0ZSBjb21tYW5kcyBhZnRlciB0 aGUgc2NoZW1hIGlzIGNyZWF0ZWQuCisgICAgICAgIFRSSUdHRVI8L2NvbW1hbmQ+LCA8Y29tbWFu ZD5HUkFOVDwvY29tbWFuZD4gYW5kIDxjb21tYW5kPkNSRUFURQorICAgICAgICBWQVJJQUJMRTwv Y29tbWFuZD4gYXJlIGFjY2VwdGVkIGFzIGNsYXVzZXMgd2l0aGluIDxjb21tYW5kPkNSRUFURQor ICAgICAgICBTQ0hFTUE8L2NvbW1hbmQ+LiBPdGhlciBraW5kcyBvZiBvYmplY3RzIG1heSBiZSBj cmVhdGVkIGluIHNlcGFyYXRlCisgICAgICAgIGNvbW1hbmRzIGFmdGVyIHRoZSBzY2hlbWEgaXMg Y3JlYXRlZC4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxp c3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjcwYzg3OTY4Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sCkBAIC0wLDAgKzEsMjE0IEBACis8 IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sCitQb3N0Z3JlU1FMIGRv Y3VtZW50YXRpb24KKy0tPgorCis8cmVmZW50cnkgaWQ9InNxbC1jcmVhdGV2YXJpYWJsZSI+Cisg PGluZGV4dGVybSB6b25lPSJzcWwtY3JlYXRldmFyaWFibGUiPgorICA8cHJpbWFyeT5DUkVBVEUg VkFSSUFCTEU8L3ByaW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8aW5kZXh0ZXJtPgorICA8cHJp bWFyeT5zZXNzaW9uIHZhcmlhYmxlPC9wcmltYXJ5PgorICA8c2Vjb25kYXJ5PmRlZmluaW5nPC9z ZWNvbmRhcnk+CisgPC9pbmRleHRlcm0+CisKKyA8cmVmbWV0YT4KKyAgPHJlZmVudHJ5dGl0bGU+ Q1JFQVRFIFZBUklBQkxFPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21hbnZvbG51 bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1pc2NpbmZv PgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5DUkVBVEUgVkFSSUFC TEU8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPmRlZmluZSBhIHNlc3Npb24gdmFyaWFibGU8L3Jl ZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lz PgorQ1JFQVRFIFsgeyBURU1QT1JBUlkgfCBURU1QIH0gXSBbIElNTVVUQUJMRSBdIFZBUklBQkxF IFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZT4gWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5 cGU8L3JlcGxhY2VhYmxlPiBdIFsgQ09MTEFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sbGF0aW9uPC9yZXBsYWNlYWJsZT4gXQorICAgIFsgTk9UIE5VTEwgXSBbIERFRkFVTFQg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRlZmF1bHRfZXhwcjwvcmVwbGFjZWFibGU+ IF0gWyB7IE9OIENPTU1JVCBEUk9QIHwgT04gVFJBTlNBQ1RJT04gRU5EIFJFU0VUIH0gXQorPC9z eW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2Ny aXB0aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5DUkVBVEUgVkFSSUFC TEU8L2NvbW1hbmQ+IGNvbW1hbmQgY3JlYXRlcyBhIHNlc3Npb24gdmFyaWFibGUuCisgICBTZXNz aW9uIHZhcmlhYmxlcywgbGlrZSByZWxhdGlvbnMsIGV4aXN0IHdpdGhpbiBhIHNjaGVtYSBhbmQg dGhlaXIgYWNjZXNzIGlzCisgICBjb250cm9sbGVkIHZpYSA8Y29tbWFuZD5HUkFOVDwvY29tbWFu ZD4gYW5kIDxjb21tYW5kPlJFVk9LRTwvY29tbWFuZD4KKyAgIGNvbW1hbmRzLgorICA8L3BhcmE+ CisKKyAgPHBhcmE+CisgICBUaGUgdmFsdWUgb2YgYSBzZXNzaW9uIHZhcmlhYmxlIGlzIGxvY2Fs IHRvIHRoZSBjdXJyZW50IHNlc3Npb24uIFJldHJpZXZpbmcKKyAgIGEgc2Vzc2lvbiB2YXJpYWJs ZSdzIHZhbHVlIHJldHVybnMgZWl0aGVyIGEgTlVMTCBvciBhIGRlZmF1bHQgdmFsdWUsIHVubGVz cworICAgaXRzIHZhbHVlIGlzIHNldCB0byBzb21ldGhpbmcgZWxzZSBpbiB0aGUgY3VycmVudCBz ZXNzaW9uIHdpdGggYSBMRVQKKyAgIGNvbW1hbmQuIFRoZSBjb250ZW50IG9mIGEgc2Vzc2lvbiB2 YXJpYWJsZSBpcyBub3QgdHJhbnNhY3Rpb25hbC4gVGhpcyBpcyB0aGUKKyAgIHNhbWUgYXMgcmVn dWxhciB2YXJpYWJsZXMgaW4gUEwgbGFuZ3VhZ2VzLgorICA8L3BhcmE+CisKKyAgPHBhcmE+Cisg ICBTZXNzaW9uIHZhcmlhYmxlcyBhcmUgcmV0cmlldmVkIGJ5IHRoZSA8Y29tbWFuZD5TRUxFQ1Q8 L2NvbW1hbmQ+IFNRTAorICAgY29tbWFuZC4gIFRoZWlyIHZhbHVlIGlzIHNldCB3aXRoIHRoZSA8 Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IFNRTCBjb21tYW5kLgorICAgV2hpbGUgc2Vzc2lvbiB2YXJp YWJsZXMgc2hhcmUgcHJvcGVydGllcyB3aXRoIHRhYmxlcywgdGhlaXIgdmFsdWUgY2Fubm90IGJl CisgICBjaGFuZ2VkIHdpdGggYW4gPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiBjb21tYW5kLgor ICA8L3BhcmE+CisKKyAgPG5vdGU+CisgICA8cGFyYT4KKyAgICBJbnNpZGUgYSBxdWVyeSBvciBh biBleHByZXNzaW9uLCB0aGUgc2Vzc2lvbiB2YXJpYWJsZSBjYW4gYmUgc2hhZG93ZWQgYnkKKyAg ICBjb2x1bW4gb3IgYnkgcm91dGluZSdzIHZhcmlhYmxlIG9yIHJvdXRpbmUgYXJndW1lbnQuIFN1 Y2ggY29sbGlzaW9ucyBvZgorICAgIGlkZW50aWZpZXJzIGNhbiBiZSByZXNvbHZlZCBieSB1c2lu ZyBxdWFsaWZpZWQgaWRlbnRpZmllcnMuIFNlc3Npb24gdmFyaWFibGVzCisgICAgY2FuIHVzZSBz Y2hlbWEgbmFtZSwgY29sdW1ucyBjYW4gdXNlIHRhYmxlIGFsaWFzZXMsIHJvdXRpbmUgdmFyaWFi bGVzCisgICAgY2FuIHVzZSBibG9jayBsYWJlbHMsIGFuZCByb3V0aW5lIGFyZ3VtZW50cyBjYW4g dXNlIHRoZSByb3V0aW5lIG5hbWUuCisgICA8L3BhcmE+CisgIDwvbm90ZT4KKyA8L3JlZnNlY3Qx PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZhcmlh YmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV2YXJpYWJsZS1pbW11dGFi bGUiPgorICAgIDx0ZXJtPjxsaXRlcmFsPklNTVVUQUJMRTwvbGl0ZXJhbD48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBhc3NpZ25lZCB2YWx1ZSBvZiB0aGUg c2Vzc2lvbiB2YXJpYWJsZSBjYW4gbm90IGJlIGNoYW5nZWQuCisgICAgICBPbmx5IGlmIHRoZSBz ZXNzaW9uIHZhcmlhYmxlIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUsIGEgc2luZ2xlCisg ICAgICBpbml0aWFsaXphdGlvbiBpcyBhbGxvd2VkIHVzaW5nIHRoZSA8Y29tbWFuZD5MRVQ8L2Nv bW1hbmQ+IGNvbW1hbmQuIE9uY2UKKyAgICAgIGRvbmUsIG5vIGZ1cnRoZXIgY2hhbmdlIGlzIGFs bG93ZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9uCisgICAgICBpZiB0aGUgc2Vzc2lvbiB2YXJp YWJsZSB3YXMgY3JlYXRlZCB3aXRoIGNsYXVzZSA8bGl0ZXJhbD5PTiBUUkFOU0FDVElPTgorICAg ICAgRU5EIFJFU0VUPC9saXRlcmFsPiwgb3IgdW50aWwgcmVzZXQgb2YgYWxsIHNlc3Npb24gdmFy aWFibGVzIGJ5CisgICAgICA8Y29tbWFuZD5ESVNDQVJEIFZBUklBQkxFUzwvY29tbWFuZD4sIG9y IHVudGlsIHJlc2V0IG9mIGFsbCBzZXNzaW9uCisgICAgICBvYmplY3RzIGJ5IGNvbW1hbmQgPGNv bW1hbmQ+RElTQ0FSRCBBTEw8L2NvbW1hbmQ+LgorICAgICA8L3BhcmE+CisKKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PGxpdGVyYWw+SUYgTk9UIEVYSVNUUzwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgbmFtZSBhbHJl YWR5IGV4aXN0cy4gQSBub3RpY2UgaXMgaXNzdWVkIGluCisgICAgICB0aGlzIGNhc2UuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg VGhlIG5hbWUsIG9wdGlvbmFsbHkgc2NoZW1hLXF1YWxpZmllZCwgb2YgdGhlIHNlc3Npb24gdmFy aWFibGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSwgb3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkLCBv ZiB0aGUgZGF0YSB0eXBlIG9mIHRoZSBzZXNzaW9uCisgICAgICB2YXJpYWJsZS4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5DT0xMQVRFIDxyZXBsYWNlYWJsZT5jb2xsYXRpb248 L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIFRoZSA8bGl0ZXJhbD5DT0xMQVRFPC9saXRlcmFsPiBjbGF1c2UgYXNzaWducyBh IGNvbGxhdGlvbiB0byB0aGUgc2Vzc2lvbgorICAgICAgdmFyaWFibGUgKHdoaWNoIG11c3QgYmUg b2YgYSBjb2xsYXRhYmxlIGRhdGEgdHlwZSkuICBJZiBub3Qgc3BlY2lmaWVkLAorICAgICAgdGhl IGRhdGEgdHlwZSdzIGRlZmF1bHQgY29sbGF0aW9uIGlzIHVzZWQuCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgPHRlcm0+PGxpdGVyYWw+Tk9UIE5VTEw8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVyYWw+Tk9UIE5VTEw8L2xpdGVyYWw+IGNs YXVzZSBmb3JiaWRzIHNldHRpbmcgdGhlIHNlc3Npb24KKyAgICAgIHZhcmlhYmxlIHRvIGEgbnVs bCB2YWx1ZS4gQSBzZXNzaW9uIHZhcmlhYmxlIGNyZWF0ZWQgYXMgTk9UIE5VTEwgYW5kCisgICAg ICB3aXRob3V0IGFuIGV4cGxpY2l0bHkgZGVjbGFyZWQgZGVmYXVsdCB2YWx1ZSBjYW5ub3QgYmUg cmVhZCB1bnRpbCBpdCBpcworICAgICAgaW5pdGlhbGl6ZWQgYnkgYSBMRVQgY29tbWFuZC4gVGhp cyByZXF1aXJlcyB0aGUgdXNlciB0byBleHBsaWNpdGx5CisgICAgICBpbml0aWFsaXplIHRoZSBz ZXNzaW9uIHZhcmlhYmxlIGNvbnRlbnQgYmVmb3JlIHJlYWRpbmcgaXQsIG90aGVyd2lzZSBhbgor ICAgICAgZXJyb3Igd2lsbCBiZSB0aHJvd24uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxp dGVyYWw+REVGQVVMVCA8cmVwbGFjZWFibGU+ZGVmYXVsdF9leHByPC9yZXBsYWNlYWJsZT48L2xp dGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxp dGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gY2xhdXNlIGNhbiBiZSB1c2VkIHRvIGFzc2lnbiBhIGRl ZmF1bHQKKyAgICAgIHZhbHVlIHRvIGEgc2Vzc2lvbiB2YXJpYWJsZS4gVGhpcyBleHByZXNzaW9u IGlzIGV2YWx1YXRlZCB3aGVuIHRoZSBzZXNzaW9uCisgICAgICB2YXJpYWJsZSBpcyBmaXJzdCBh Y2Nlc3NlZCBmb3IgcmVhZGluZyBhbmQgaGFkIG5vdCB5ZXQgYmVlbiBhc3NpZ25lZCBhIHZhbHVl LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPk9OIENPTU1JVCBEUk9QPC9saXRl cmFsPiwgPGxpdGVyYWw+T04gVFJBTlNBQ1RJT04gRU5EIFJFU0VUPC9saXRlcmFsPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIDxsaXRlcmFsPk9OIENPTU1J VCBEUk9QPC9saXRlcmFsPiBjbGF1c2Ugc3BlY2lmaWVzIHRoZSBiZWhhdmlvdXIgb2YgYQorICAg ICAgdGVtcG9yYXJ5IHNlc3Npb24gdmFyaWFibGUgYXQgdHJhbnNhY3Rpb24gY29tbWl0LiBXaXRo IHRoaXMgY2xhdXNlLCB0aGUKKyAgICAgIHNlc3Npb24gdmFyaWFibGUgaXMgZHJvcHBlZCBhdCBj b21taXQgdGltZS4gVGhlIGNsYXVzZSBpcyBvbmx5IGFsbG93ZWQKKyAgICAgIGZvciB0ZW1wb3Jh cnkgdmFyaWFibGVzLiBUaGUgPGxpdGVyYWw+T04gVFJBTlNBQ1RJT04gRU5EIFJFU0VUPC9saXRl cmFsPgorICAgICAgY2xhdXNlIGNhdXNlcyB0aGUgc2Vzc2lvbiB2YXJpYWJsZSB0byBiZSByZXNl dCB0byBpdHMgZGVmYXVsdCB2YWx1ZSB3aGVuCisgICAgICB0aGUgdHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9yIHJvbGxlZCBiYWNrLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgIDwvdmFyaWFibGVsaXN0PgorIDwvcmVmc2VjdDE+CisKKyA8 cmVmc2VjdDE+CisgIDx0aXRsZT5Ob3RlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBVc2UgdGhl IDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IGNvbW1hbmQgdG8gcmVtb3ZlIGEgc2Vz c2lvbgorICAgdmFyaWFibGUuCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3Qx PgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgQ3JlYXRlIGFuIGRh dGUgc2Vzc2lvbiB2YXJpYWJsZSA8bGl0ZXJhbD52YXIxPC9saXRlcmFsPjoKKzxwcm9ncmFtbGlz dGluZz4KK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGRhdGU7CitMRVQgdmFyMSA9IGN1cnJlbnRf ZGF0ZTsKK1NFTEVDVCB2YXIxOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgPC9y ZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8L3RpdGxlPgor CisgIDxwYXJhPgorICAgVGhlIDxjb21tYW5kPkNSRUFURSBWQVJJQUJMRTwvY29tbWFuZD4gY29t bWFuZCBpcyBhCisgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGV4dGVu c2lvbi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5T ZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1i ZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFsdGVydmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1i ZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRyb3B2YXJpYWJsZSIvPjwvbWVtYmVyPgorICAgPG1lbWJl cj48eHJlZiBsaW5rZW5kPSJzcWwtbGV0Ii8+PC9tZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8 L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9k aXNjYXJkLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbAppbmRleCBiZjQ0YzUy M2NhLi42ZjkwNjcyYWZhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbApAQCAtMjEsNyArMjEsNyBAQCBQ b3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4K LURJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRFTVBPUkFSWSB8IFRFTVAgfQor RElTQ0FSRCB7IEFMTCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVNUE9SQVJZIHwgVEVNUCB8IFZB UklBQkxFUyB9CiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTc1LDYgKzc1 LDE3IEBAIERJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRFTVBPUkFSWSB8IFRF TVAgfQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5WQVJJQUJMRVM8L2xpdGVyYWw+PC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBSZXNldHMgdGhlIHZhbHVlIG9mIGFsbCBz ZXNzaW9uIHZhcmlhYmxlcy4gSWYgYSB2YXJpYWJsZQorICAgICAgaXMgbGF0ZXIgcmV1c2VkLCBp dCBpcyByZS1pbml0aWFsaXplZCB0byBlaXRoZXIKKyAgICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVy YWw+IG9yIGl0cyBkZWZhdWx0IHZhbHVlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRl cmFsPkFMTDwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtOTMsNiArMTA0LDcg QEAgU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9ja19hbGwoKTsKIERJU0NBUkQgUExBTlM7CiBESVND QVJEIFRFTVA7CiBESVNDQVJEIFNFUVVFTkNFUzsKK0RJU0NBUkQgVkFSSUFCTEVTOwogPC9wcm9n cmFtbGlzdGluZz48L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5Pgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi42Nzk4OGI1ZmNkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9kcm9wX3ZhcmlhYmxlLnNnbWwKQEAgLTAsMCArMSwxMTggQEAKKzwhLS0KK2RvYy9zcmMvc2dt bC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCitQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KKy0tPgor Cis8cmVmZW50cnkgaWQ9InNxbC1kcm9wdmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3Fs LWRyb3B2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkRST1AgVkFSSUFCTEU8L3ByaW1hcnk+CisgPC9p bmRleHRlcm0+CisKKyA8aW5kZXh0ZXJtPgorICA8cHJpbWFyeT5zZXNzaW9uIHZhcmlhYmxlPC9w cmltYXJ5PgorICA8c2Vjb25kYXJ5PnJlbW92aW5nPC9zZWNvbmRhcnk+CisgPC9pbmRleHRlcm0+ CisKKyA8cmVmbWV0YT4KKyAgPHJlZmVudHJ5dGl0bGU+RFJPUCBWQVJJQUJMRTwvcmVmZW50cnl0 aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBM YW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFt ZWRpdj4KKyAgPHJlZm5hbWU+RFJPUCBWQVJJQUJMRTwvcmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+ cmVtb3ZlIGEgc2Vzc2lvbiB2YXJpYWJsZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisK KyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitEUk9QIFZBUklBQkxFIFsgSUYgRVhJU1RT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBbLCAu Li5dIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0KKzwvc3lub3BzaXM+CisgPC9yZWZzeW5vcHNpc2Rp dj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICA8cGFy YT4KKyAgIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IHJlbW92ZXMgYSBzZXNzaW9u IHZhcmlhYmxlLgorICAgQSBzZXNzaW9uIHZhcmlhYmxlIGNhbiBvbmx5IGJlIHJlbW92ZWQgYnkg aXRzIG93bmVyIG9yIGEgc3VwZXJ1c2VyLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxy ZWZzZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+ CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPklGIEVYSVNUUzwvbGl0ZXJh bD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJv dyBhbiBlcnJvciBpZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZSBkb2VzIG5vdCBleGlzdC4gQSBub3Rp Y2UgaXMKKyAgICAgIGlzc3VlZCBpbiB0aGlzIGNhc2UuCisgICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPjwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUsIG9wdGlvbmFs bHkgc2NoZW1hLXF1YWxpZmllZCwgb2YgYSBzZXNzaW9uIHZhcmlhYmxlLgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPjxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBdXRvbWF0aWNhbGx5IGRyb3Agb2JqZWN0cyB0aGF0 IGRlcGVuZCBvbiB0aGUgc2Vzc2lvbiB2YXJpYWJsZSAoc3VjaCBhcworICAgICAgdmlld3MpLCBh bmQgaW4gdHVybiBhbGwgb2JqZWN0cyB0aGF0IGRlcGVuZCBvbiB0aG9zZSBvYmplY3RzCisgICAg ICAoc2VlIDx4cmVmIGxpbmtlbmQ9ImRkbC1kZXBlbmQiLz4pLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPjxsaXRlcmFsPlJFU1RSSUNUPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgUmVmdXNlIHRvIGRyb3AgdGhlIHNlc3Npb24gdmFyaWFibGUg aWYgYW55IG9iamVjdHMgZGVwZW5kIG9uIGl0LiAgVGhpcyBpcworICAgICAgdGhlIGRlZmF1bHQu CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwv dmFyaWFibGVsaXN0PgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFt cGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUbyByZW1vdmUgdGhlIHNlc3Npb24gdmFyaWFi bGUgPGxpdGVyYWw+dmFyMTwvbGl0ZXJhbD46CisKKzxwcm9ncmFtbGlzdGluZz4KK0RST1AgVkFS SUFCTEUgdmFyMTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8 cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAg IFRoZSA8Y29tbWFuZD5EUk9QIFZBUklBQkxFPC9jb21tYW5kPiBjb21tYW5kIGlzIGEKKyAgIDxw cm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gZXh0ZW5zaW9uLgorICA8L3BhcmE+ CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4K KworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5k PSJzcWwtYWx0ZXJ2YXJpYWJsZSIvPjwvbWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5k PSJzcWwtY3JlYXRldmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2Vu ZD0ic3FsLWxldCIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKwor PC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbAppbmRleCBjM2M1ODViZTdlLi43NDBjYmE2Y2FiIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9ncmFudC5zZ21sCkBAIC0xMDEsNiArMTAxLDEyIEBAIEdSQU5UIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFRPIDxyZXBs YWNlCiAgICAgWyBXSVRIIHsgQURNSU4gfCBJTkhFUklUIHwgU0VUIH0geyBPUFRJT04gfCBUUlVF IHwgRkFMU0UgfSBdCiAgICAgWyBHUkFOVEVEIEJZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBdCiAKK0dSQU5UIHsgU0VMRUNU IHwgVVBEQVRFIHwgQUxMIFsgUFJJVklMRUdFUyBdIH0KKyAgICBPTiBWQVJJQUJMRSA8cmVwbGFj ZWFibGU+dmFyaWFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KKyAgICAgICB8IEFMTCBW QVJJQUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFf bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAgIFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFsgV0lU SCBHUkFOVCBPUFRJT04gXQorICAgIFsgR1JBTlRFRCBCWSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cm9sZV9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJsZT4gXQorCiA8cGhyYXNlPndo ZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3Jl cGxhY2VhYmxlPiBjYW4gYmU6PC9waHJhc2U+CiAKICAgICBbIEdST1VQIF0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jNWQxZTRkOTYyCi0tLSAvZGV2L251 bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbApAQCAtMCwwICsxLDEwOSBAQAorPCEt LQorZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCist LT4KKworPHJlZmVudHJ5IGlkPSJzcWwtbGV0Ij4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1sZXQi PgorICA8cHJpbWFyeT5MRVQ8L3ByaW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8aW5kZXh0ZXJt PgorICA8cHJpbWFyeT5zZXNzaW9uIHZhcmlhYmxlPC9wcmltYXJ5PgorICA8c2Vjb25kYXJ5PmNo YW5naW5nPC9zZWNvbmRhcnk+CisgPC9pbmRleHRlcm0+CisKKyA8cmVmbWV0YT4KKyAgPHJlZmVu dHJ5dGl0bGU+TEVUPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21hbnZvbG51bT4K KyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1pc2NpbmZvPgor IDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5MRVQ8L3JlZm5hbWU+Cisg IDxyZWZwdXJwb3NlPmNoYW5nZSBhIHNlc3Npb24gdmFyaWFibGUncyB2YWx1ZTwvcmVmcHVycG9z ZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitMRVQg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlc3Npb25fdmFyaWFibGU8L3JlcGxhY2Vh YmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zcWxfZXhwcmVzc2lvbjwvcmVw bGFjZWFibGU+CitMRVQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlc3Npb25fdmFy aWFibGU8L3JlcGxhY2VhYmxlPiA9IERFRkFVTFQKKzwvc3lub3BzaXM+CisgPC9yZWZzeW5vcHNp c2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICA8 cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNvbW1hbmQgYXNzaWducyBhIHZh bHVlIHRvIHRoZSBzcGVjaWZpZWQgc2Vzc2lvbgorICAgdmFyaWFibGUuCisgIDwvcGFyYT4KKwor IDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4K KworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJh bD5zZXNzaW9uX3ZhcmlhYmxlPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAg IDxwYXJhPgorICAgICAgVGhlIG5hbWUgb2YgdGhlIHNlc3Npb24gdmFyaWFibGUuCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0 ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+c3FsX2V4cHJlc3Npb248L2xpdGVyYWw+PC90ZXJt PgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBbiBTUUwgZXhwcmVzc2lvbiAo Y2FuIGJlIHN1YnF1ZXJ5IGluIHBhcmVudGhlc2lzKS4gVGhlIHJlc3VsdCBtdXN0CisgICAgICBi ZSBvZiBjYXN0YWJsZSB0byB0aGUgc2FtZSBkYXRhIHR5cGUgYXMgdGhlIHNlc3Npb24gdmFyaWFi bGUgKGluCisgICAgICBpbXBsaWNpdCBvciBhc3NpZ25tZW50IGNvbnRleHQpLgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVu dHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBSZXNldCB0aGUgc2Vzc2lvbiB2YXJpYWJsZSB0 byBpdHMgZGVmYXVsdCB2YWx1ZSwgaWYgdGhhdCBpcyBkZWZpbmVkLgorICAgICAgSWYgbm8gZXhw bGljaXQgZGVmYXVsdCB2YWx1ZSBoYXMgYmVlbiBkZWNsYXJlZCwgdGhlIHNlc3Npb24gdmFyaWFi bGUKKyAgICAgIGlzIHNldCB0byBOVUxMLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKworICA8cGFyYT4KKyAgIEV4 YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgVkFSSUFCTEUgbXl2YXIgQVMgaW50ZWdl cjsKK0xFVCBteXZhciA9IDEwOworTEVUIG15dmFyID0gKFNFTEVDVCBzdW0odmFsKSBGUk9NIHRh Yik7CitMRVQgbXl2YXIgPSBERUZBVUxUOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgor IDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRs ZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGlzIGEgPHByb2R1 Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPgorICAgZXh0ZW5zaW9uLgorICA8L3BhcmE+ CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4K KworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5k PSJzcWwtYWx0ZXJ2YXJpYWJsZSIvPjwvbWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5k PSJzcWwtY3JlYXRldmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2Vu ZD0ic3FsLWRyb3B2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZz ZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3Jlc3Rv cmUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVzdG9yZS5zZ21sCmluZGV4IDQ3YmQ3ZGJk YTAuLjM5Y2I1OTU2NDcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVzdG9yZS5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVzdG9yZS5zZ21sCkBAIC0xMDYsNiArMTA2 LDE3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAgPC9saXN0aXRlbT4KICAgICAg PC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRp b24+LUEgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlc3Npb25fdmFyaWFibGU8L3Jl cGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS12YXJpYWJs ZT08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2Vzc2lvbl92YXJpYWJsZTwvcmVwbGFj ZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgor ICAgICAgICBSZXN0b3JlIGEgbmFtZWQgc2Vzc2lvbiB2YXJpYWJsZSBvbmx5LiAgTXVsdGlwbGUg c2Vzc2lvbiB2YXJpYWJsZXMgbWF5CisgICAgICAgIGJlIHNwZWNpZmllZCB3aXRoIG11bHRpcGxl IDxvcHRpb24+LUE8L29wdGlvbj4gc3dpdGNoZXMuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9s aXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeT4KICAg ICAgIDx0ZXJtPjxvcHRpb24+LWM8L29wdGlvbj48L3Rlcm0+CiAgICAgICA8dGVybT48b3B0aW9u Pi0tY2xlYW48L29wdGlvbj48L3Rlcm0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3Jl dm9rZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dtbAppbmRleCBlMjhkMTkyZmQz Li5mMjRiMWZiNGI4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3Jldm9rZS5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKQEAgLTEzNyw2ICsxMzcsMTMgQEAgUkVW T0tFIFsgeyBBRE1JTiB8IElOSEVSSVQgfCBTRVQgfSBPUFRJT04gRk9SIF0KICAgfCBDVVJSRU5U X1JPTEUKICAgfCBDVVJSRU5UX1VTRVIKICAgfCBTRVNTSU9OX1VTRVIKKworUkVWT0tFIFsgR1JB TlQgT1BUSU9OIEZPUiBdCisgICAgeyB7IFNFTEVDVCB8IFVQREFURSB9IFssIC4uLl0gfCBBTEwg WyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZBUklBQkxFIDxyZXBsYWNlYWJsZT52YXJpYWJsZV9u YW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQorICAgICAgIHwgQUxMIFZBUklBQkxFUyBJTiBTQ0hF TUEgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJs ZT4gWywgLi4uXSB9CisgICAgRlJPTSB7IFsgR1JPVVAgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBQVUJMSUMgfSBbLCAuLi5dCisgICAg WyBDQVNDQURFIHwgUkVTVFJJQ1QgXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2Pgog CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmZXJlbmNlLnNnbWwKaW5kZXggYTNiNzQzZThjMS4uZjVlYzNjOTg3YiAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uu c2dtbApAQCAtNzUsNiArNzUsNyBAQAogICAgJmFsdGVyVHlwZTsKICAgICZhbHRlclVzZXI7CiAg ICAmYWx0ZXJVc2VyTWFwcGluZzsKKyAgICZhbHRlclZhcmlhYmxlOwogICAgJmFsdGVyVmlldzsK ICAgICZhbmFseXplOwogICAgJmJlZ2luOwpAQCAtMTI3LDYgKzEyOCw3IEBACiAgICAmY3JlYXRl VHlwZTsKICAgICZjcmVhdGVVc2VyOwogICAgJmNyZWF0ZVVzZXJNYXBwaW5nOworICAgJmNyZWF0 ZVZhcmlhYmxlOwogICAgJmNyZWF0ZVZpZXc7CiAgICAmZGVhbGxvY2F0ZTsKICAgICZkZWNsYXJl OwpAQCAtMTc1LDYgKzE3Nyw3IEBACiAgICAmZHJvcFR5cGU7CiAgICAmZHJvcFVzZXI7CiAgICAm ZHJvcFVzZXJNYXBwaW5nOworICAgJmRyb3BWYXJpYWJsZTsKICAgICZkcm9wVmlldzsKICAgICZl bmQ7CiAgICAmZXhlY3V0ZTsKQEAgLTE4Myw2ICsxODYsNyBAQAogICAgJmdyYW50OwogICAgJmlt cG9ydEZvcmVpZ25TY2hlbWE7CiAgICAmaW5zZXJ0OworICAgJmxldDsKICAgICZsaXN0ZW47CiAg ICAmbG9hZDsKICAgICZsb2NrOwotLSAKMi4zOC4xCgo= --0000000000009ca7c005eedde9a7 Content-Type: text/x-patch; charset="US-ASCII"; name="v20221202-1-0009-this-patch-changes-error-message-column-doesn-t-exis.patch" Content-Disposition: attachment; filename="v20221202-1-0009-this-patch-changes-error-message-column-doesn-t-exis.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb6xukzg1 RnJvbSA1ZjIxOTc4M2QxZGI3NGUxOGExYWNjNzU3MDQ4NDdiNjJjZThjZGVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPHBhdmVsLnN0ZWh1bGVAZ21h aWwuY29tPgpEYXRlOiBUaHUsIDI0IE5vdiAyMDIyIDEyOjM1OjU3ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwOS8xMF0gdGhpcyBwYXRjaCBjaGFuZ2VzIGVycm9yIG1lc3NhZ2UgImNvbHVtbiBkb2Vz bid0IGV4aXN0IgogdG8gbWVzc2FnZSAiY29sdW1uIG9yIHZhcmlhYmxlIGRvZXNuJ3QgZXhpc3Qi CgpUaGUgZXJyb3IgbWVzc2FnZSB3aWxsIGJlIG1vcmUgY29ycmVjdC4gVG9kYXksIG1pc3Npbmcg UEwvcGdTUUwgdmFyaWFibGUgY2FuIGJlIHJlcG9ydGVkLiBUaGUgY2hhbmdlIGhhcwppbXBhY3Qg b24gbG90IG9mIHJlZ3Jlc3MgdGVzdHMgbm90IHJlbGF0ZWQgdG8gc2Vzc2lvbiB2YXJpYWJsZXMs IGFuZCB0aGVuIGl0IGlzIGRpc3RyaWJ1dGVkIGFzIHNlcGFyYXRlIHBhdGNoCi0tLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgICAgICB8IDI0ICsrKysrKysrKysrLS0t CiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgICAgICAgICAgICAgfCAgOCArKyst LQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaCAgICAgICAgICAgICAgIHwgIDEgKwog c3JjL3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfYXJyYXkub3V0IHwgIDIgKy0KIC4u Li9wbHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX3JlY29yZC5vdXQgICB8ICA0ICstLQogc3Jj L3BsL3RjbC9leHBlY3RlZC9wbHRjbF9xdWVyaWVzLm91dCAgICAgICAgIHwgMTIgKysrLS0tLQog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgICAgIHwgMzIgKysrKysr KysrLS0tLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQgICAgICAg ICAgIHwgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXJyb3JzLm91dCAgICAgICAg ICB8ICA4ICsrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0ICAgICAgICAg ICAgfCAxMiArKystLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BscGdzcWwub3V0ICAg ICAgICAgfCAxMiArKystLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0ICAg ICAgICAgICAgfCAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAg ICAgICAgIHwgIDIgKy0KIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3Nlc3Npb25fdmFyaWFibGVzLm91 dCAgICB8ICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyYW5zYWN0aW9ucy5vdXQg ICAgfCAgNCArLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdW5pb24ub3V0ICAgICAgICAg ICB8ICAyICstCiAxNyBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA0YWQ4MDQ0NzkxLi5kZDk0NDMzOGIz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTQzMyw3ICs0MzMsNyBAQCB0cmFuc2Zvcm1J bmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKICAqIFJl dHVybnMgdHJ1ZSwgd2hlbiBleHByZXNzaW9uIG9mIGtpbmQgYWxsb3dzIHVzaW5nIG9mCiAgKiBz ZXNzaW9uIHZhcmlhYmxlcy4KICAqLwotc3RhdGljIGJvb2wKK2Jvb2wKIGV4cHJfa2luZF9hbGxv d3Nfc2Vzc2lvbl92YXJpYWJsZXMoUGFyc2VFeHByS2luZCBwX2V4cHJfa2luZCkKIHsKIAlzd2l0 Y2ggKHBfZXhwcl9raW5kKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwppbmRleCA0NjY1 ZjBiMmI3Li5lZDBlMjgyMGZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf cmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwpAQCAt MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5v ZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9lbnIuaCIKKyNpbmNsdWRl ICJwYXJzZXIvcGFyc2VfZXhwci5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5o IgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl dHJlZS5oIgpAQCAtMzY0OCw2ICszNjQ5LDE5IEBAIGVycm9yTWlzc2luZ1JURShQYXJzZVN0YXRl ICpwc3RhdGUsIFJhbmdlVmFyICpyZWxhdGlvbikKIAkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgcmVsYXRpb24tPmxvY2F0aW9uKSkpOwogfQogCisvKgorICogc2V0IG1lc3NhZ2UgImNv bHVtbiBkb2VzIG5vdCBleGlzdCIgb3IgImNvbHVtbiBvciB2YXJpYWJsZSBkb2VzIG5vdCBleGlz dCIKKyAqIGluIGRlcGVuZGVuY3kgaWYgZXhwcmVzc2lvbiBjb250ZXh0IGFsbG93cyBzZXNzaW9u IHZhcmlhYmxlcy4KKyAqLworc3RhdGljIGludAorY29sdW1uX29yX3ZhcmlhYmxlX2RvZXNfbm90 X2V4aXN0cyhQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNvbG5hbWUpCit7CisJaWYg KGV4cHJfa2luZF9hbGxvd3Nfc2Vzc2lvbl92YXJpYWJsZXMocHN0YXRlLT5wX2V4cHJfa2luZCkp CisJCXJldHVybiBlcnJtc2coImNvbHVtbiBvciB2YXJpYWJsZSBcIiVzXCIgZG9lcyBub3QgZXhp c3QiLCBjb2xuYW1lKTsKKwllbHNlCisJCXJldHVybiBlcnJtc2coImNvbHVtbiBcIiVzXCIgZG9l cyBub3QgZXhpc3QiLCBjb2xuYW1lKTsKK30KKwogLyoKICAqIEdlbmVyYXRlIGEgc3VpdGFibGUg ZXJyb3IgYWJvdXQgYSBtaXNzaW5nIGNvbHVtbi4KICAqCkBAIC0zNjgyLDcgKzM2OTYsNyBAQCBl cnJvck1pc3NpbmdDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkoZXJyY29kZShFUlJD T0RFX1VOREVGSU5FRF9DT0xVTU4pLAogCQkJCQkgcmVsbmFtZSA/CiAJCQkJCSBlcnJtc2coImNv bHVtbiAlcy4lcyBkb2VzIG5vdCBleGlzdCIsIHJlbG5hbWUsIGNvbG5hbWUpIDoKLQkJCQkJIGVy cm1zZygiY29sdW1uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsIGNvbG5hbWUpLAorCQkJCQkgY29s dW1uX29yX3ZhcmlhYmxlX2RvZXNfbm90X2V4aXN0cyhwc3RhdGUsIGNvbG5hbWUpLAogCQkJCQkg ZXJyZGV0YWlsKCJUaGVyZSBhcmUgY29sdW1ucyBuYW1lZCBcIiVzXCIsIGJ1dCB0aGV5IGFyZSBp biB0YWJsZXMgdGhhdCBjYW5ub3QgYmUgcmVmZXJlbmNlZCBmcm9tIHRoaXMgcGFydCBvZiB0aGUg cXVlcnkuIiwKIAkJCQkJCQkgICBjb2xuYW1lKSwKIAkJCQkJICFyZWxuYW1lID8gZXJyaGludCgi VHJ5IHVzaW5nIGEgdGFibGUtcXVhbGlmaWVkIG5hbWUuIikgOiAwLApAQCAtMzY5Miw3ICszNzA2 LDcgQEAgZXJyb3JNaXNzaW5nQ29sdW1uKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAogCQkJCSByZWxuYW1lID8KIAkJCQkgZXJybXNn KCJjb2x1bW4gJXMuJXMgZG9lcyBub3QgZXhpc3QiLCByZWxuYW1lLCBjb2xuYW1lKSA6Ci0JCQkJ IGVycm1zZygiY29sdW1uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsIGNvbG5hbWUpLAorCQkJCSBj b2x1bW5fb3JfdmFyaWFibGVfZG9lc19ub3RfZXhpc3RzKHBzdGF0ZSwgY29sbmFtZSksCiAJCQkJ IGVycmRldGFpbCgiVGhlcmUgaXMgYSBjb2x1bW4gbmFtZWQgXCIlc1wiIGluIHRhYmxlIFwiJXNc IiwgYnV0IGl0IGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gdGhpcyBwYXJ0IG9mIHRoZSBxdWVy eS4iLAogCQkJCQkJICAgY29sbmFtZSwgc3RhdGUtPnJleGFjdDEtPmVyZWYtPmFsaWFzbmFtZSks CiAJCQkJIHJ0ZV92aXNpYmxlX2lmX2xhdGVyYWwocHN0YXRlLCBzdGF0ZS0+cmV4YWN0MSkgPwpA QCAtMzcxMCwxNCArMzcyNCwxNCBAQCBlcnJvck1pc3NpbmdDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAogCQkJCQkgcmVs bmFtZSA/CiAJCQkJCSBlcnJtc2coImNvbHVtbiAlcy4lcyBkb2VzIG5vdCBleGlzdCIsIHJlbG5h bWUsIGNvbG5hbWUpIDoKLQkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBkb2VzIG5vdCBleGlz dCIsIGNvbG5hbWUpLAorCQkJCQkgY29sdW1uX29yX3ZhcmlhYmxlX2RvZXNfbm90X2V4aXN0cyhw c3RhdGUsIGNvbG5hbWUpLAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRp b24pKSk7CiAJCS8qIEhhbmRsZSBjYXNlIHdoZXJlIHdlIGhhdmUgYSBzaW5nbGUgYWx0ZXJuYXRp dmUgc3BlbGxpbmcgdG8gb2ZmZXIgKi8KIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAogCQkJCSByZWxuYW1lID8KIAkJCQkgZXJybXNnKCJj b2x1bW4gJXMuJXMgZG9lcyBub3QgZXhpc3QiLCByZWxuYW1lLCBjb2xuYW1lKSA6Ci0JCQkJIGVy cm1zZygiY29sdW1uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsIGNvbG5hbWUpLAorCQkJCSBjb2x1 bW5fb3JfdmFyaWFibGVfZG9lc19ub3RfZXhpc3RzKHBzdGF0ZSwgY29sbmFtZSksCiAJCQkJIGVy cmhpbnQoIlBlcmhhcHMgeW91IG1lYW50IHRvIHJlZmVyZW5jZSB0aGUgY29sdW1uIFwiJXMuJXNc Ii4iLAogCQkJCQkJIHN0YXRlLT5yZmlyc3QtPmVyZWYtPmFsaWFzbmFtZSwKIAkJCQkJCSBzdHJW YWwobGlzdF9udGgoc3RhdGUtPnJmaXJzdC0+ZXJlZi0+Y29sbmFtZXMsCkBAIC0zNzMxLDcgKzM3 NDUsNyBAQCBlcnJvck1pc3NpbmdDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCShlcnJj b2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCiAJCQkJIHJlbG5hbWUgPwogCQkJCSBlcnJt c2coImNvbHVtbiAlcy4lcyBkb2VzIG5vdCBleGlzdCIsIHJlbG5hbWUsIGNvbG5hbWUpIDoKLQkJ CQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgY29sbmFtZSksCisJCQkJ IGNvbHVtbl9vcl92YXJpYWJsZV9kb2VzX25vdF9leGlzdHMocHN0YXRlLCBjb2xuYW1lKSwKIAkJ CQkgZXJyaGludCgiUGVyaGFwcyB5b3UgbWVhbnQgdG8gcmVmZXJlbmNlIHRoZSBjb2x1bW4gXCIl cy4lc1wiIG9yIHRoZSBjb2x1bW4gXCIlcy4lc1wiLiIsCiAJCQkJCQkgc3RhdGUtPnJmaXJzdC0+ ZXJlZi0+YWxpYXNuYW1lLAogCQkJCQkJIHN0clZhbChsaXN0X250aChzdGF0ZS0+cmZpcnN0LT5l cmVmLT5jb2xuYW1lcywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJn ZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCAyNTA2OTVhYTdi Li5hNmU5N2RlZTI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0 LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC03NzksNyArNzc5 LDkgQEAgdHJhbnNmb3JtQXNzaWdubWVudEluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCWlmICghdHlwcmVsaWQpCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVS UkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAotCQkJCQkJIGVycm1zZygiY2Fubm90IGFzc2lnbiB0 byBmaWVsZCBcIiVzXCIgb2YgY29sdW1uIFwiJXNcIiBiZWNhdXNlIGl0cyB0eXBlICVzIGlzIG5v dCBhIGNvbXBvc2l0ZSB0eXBlIiwKKwkJCQkJCSBlcnJtc2coZXhwcl9raW5kX2FsbG93c19zZXNz aW9uX3ZhcmlhYmxlcyhwc3RhdGUtPnBfZXhwcl9raW5kKSA/CisJCQkJCQkJCSAiY2Fubm90IGFz c2lnbiB0byBmaWVsZCBcIiVzXCIgb2YgY29sdW1uIG9yIHZhcmlhYmxlIFwiJXNcIiBiZWNhdXNl IGl0cyB0eXBlICVzIGlzIG5vdCBhIGNvbXBvc2l0ZSB0eXBlIiA6CisJCQkJCQkJCSAiY2Fubm90 IGFzc2lnbiB0byBmaWVsZCBcIiVzXCIgb2YgY29sdW1uIFwiJXNcIiBiZWNhdXNlIGl0cyB0eXBl ICVzIGlzIG5vdCBhIGNvbXBvc2l0ZSB0eXBlIiwKIAkJCQkJCQkJc3RyVmFsKG4pLCB0YXJnZXRO YW1lLAogCQkJCQkJCQlmb3JtYXRfdHlwZV9iZSh0YXJnZXRUeXBlSWQpKSwKIAkJCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKQEAgLTc4OCw3ICs3OTAsOSBAQCB0 cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJaWYg KGF0dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKLQkJCQkJCSBlcnJtc2coImNhbm5v dCBhc3NpZ24gdG8gZmllbGQgXCIlc1wiIG9mIGNvbHVtbiBcIiVzXCIgYmVjYXVzZSB0aGVyZSBp cyBubyBzdWNoIGNvbHVtbiBpbiBkYXRhIHR5cGUgJXMiLAorCQkJCQkJIGVycm1zZyhleHByX2tp bmRfYWxsb3dzX3Nlc3Npb25fdmFyaWFibGVzKHBzdGF0ZS0+cF9leHByX2tpbmQpID8KKwkJCQkJ CQkJICJjYW5ub3QgYXNzaWduIHRvIGZpZWxkIFwiJXNcIiBvZiBjb2x1bW4gb3IgdmFyaWFibGUg XCIlc1wiIGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCBjb2x1bW4gaW4gZGF0YSB0eXBlICVzIiA6 CisJCQkJCQkJCSAiY2Fubm90IGFzc2lnbiB0byBmaWVsZCBcIiVzXCIgb2YgY29sdW1uIFwiJXNc IiBiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggY29sdW1uIGluIGRhdGEgdHlwZSAlcyIsCiAJCQkJ CQkJCXN0clZhbChuKSwgdGFyZ2V0TmFtZSwKIAkJCQkJCQkJZm9ybWF0X3R5cGVfYmUodGFyZ2V0 VHlwZUlkKSksCiAJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oIGIvc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaAppbmRleCAxNGIwYWRiOTQ4Li43NmQ2ZTQ2MDAxIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oCisrKyBiL3NyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV9leHByLmgKQEAgLTIyLDUgKzIyLDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgc2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5pbmc7CiBleHRlcm4gTm9kZSAq dHJhbnNmb3JtRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIFBhcnNlRXhwcktp bmQgZXhwcktpbmQpOwogCiBleHRlcm4gY29uc3QgY2hhciAqUGFyc2VFeHByS2luZE5hbWUoUGFy c2VFeHByS2luZCBleHByS2luZCk7CitleHRlcm4gYm9vbCBleHByX2tpbmRfYWxsb3dzX3Nlc3Np b25fdmFyaWFibGVzKFBhcnNlRXhwcktpbmQgcF9leHByX2tpbmQpOwogCiAjZW5kaWYJCQkJCQkJ LyogUEFSU0VfRVhQUl9IICovCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvZXhwZWN0 ZWQvcGxwZ3NxbF9hcnJheS5vdXQgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvZXhwZWN0ZWQvcGxwZ3Nx bF9hcnJheS5vdXQKaW5kZXggOWUyMmU1NmYwMC4uZTEzMWZlYmYzZCAxMDA2NDQKLS0tIGEvc3Jj L3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfYXJyYXkub3V0CisrKyBiL3NyYy9wbC9w bHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX2FycmF5Lm91dApAQCAtNDEsNyArNDEsNyBAQCBO T1RJQ0U6ICBhID0geyIoLDExKSJ9LCBhWzFdLmkgPSAxMQogLS0gcGVyaGFwcyB0aGlzIG91Z2h0 IHRvIHdvcmssIGJ1dCBmb3Igbm93IGl0IGRvZXNuJ3Q6CiBkbyAkJCBkZWNsYXJlIGEgY29tcGxl eFtdOwogYmVnaW4gYVsxOjJdLmkgOj0gYXJyYXlbMTEsMTJdOyByYWlzZSBub3RpY2UgJ2EgPSAl JywgYTsgZW5kJCQ7Ci1FUlJPUjogIGNhbm5vdCBhc3NpZ24gdG8gZmllbGQgImkiIG9mIGNvbHVt biAiYSIgYmVjYXVzZSBpdHMgdHlwZSBjb21wbGV4W10gaXMgbm90IGEgY29tcG9zaXRlIHR5cGUK K0VSUk9SOiAgY2Fubm90IGFzc2lnbiB0byBmaWVsZCAiaSIgb2YgY29sdW1uIG9yIHZhcmlhYmxl ICJhIiBiZWNhdXNlIGl0cyB0eXBlIGNvbXBsZXhbXSBpcyBub3QgYSBjb21wb3NpdGUgdHlwZQog TElORSAxOiBhWzE6Ml0uaSA6PSBhcnJheVsxMSwxMl0KICAgICAgICAgXgogUVVFUlk6ICBhWzE6 Ml0uaSA6PSBhcnJheVsxMSwxMl0KZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9leHBl Y3RlZC9wbHBnc3FsX3JlY29yZC5vdXQgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvZXhwZWN0ZWQvcGxw Z3NxbF9yZWNvcmQub3V0CmluZGV4IGFmYjkyMmRmMjkuLmY3MDJjN2FkNTQgMTAwNjQ0Ci0tLSBh L3NyYy9wbC9wbHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX3JlY29yZC5vdXQKKysrIGIvc3Jj L3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfcmVjb3JkLm91dApAQCAtMTM1LDcgKzEz NSw3IEBAIEVSUk9SOiAgcmVjb3JkICJjIiBoYXMgbm8gZmllbGQgIngiCiBDT05URVhUOiAgUEwv cGdTUUwgYXNzaWdubWVudCAiYy54LnExID0gMSIKIFBML3BnU1FMIGZ1bmN0aW9uIGlubGluZV9j b2RlX2Jsb2NrIGxpbmUgMSBhdCBhc3NpZ25tZW50CiBkbyAkJCBkZWNsYXJlIGMgbmVzdGVkX2lu dDhzOyBiZWdpbiBjLmMyLnggPSAxOyBlbmQgJCQ7Ci1FUlJPUjogIGNhbm5vdCBhc3NpZ24gdG8g ZmllbGQgIngiIG9mIGNvbHVtbiAiYyIgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIGNvbHVtbiBp biBkYXRhIHR5cGUgdHdvX2ludDhzCitFUlJPUjogIGNhbm5vdCBhc3NpZ24gdG8gZmllbGQgIngi IG9mIGNvbHVtbiBvciB2YXJpYWJsZSAiYyIgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIGNvbHVt biBpbiBkYXRhIHR5cGUgdHdvX2ludDhzCiBMSU5FIDE6IGMuYzIueCA9IDEKICAgICAgICAgXgog UVVFUlk6ICBjLmMyLnggPSAxCkBAIC0xNTcsNyArMTU3LDcgQEAgRVJST1I6ICByZWNvcmQgImMi IGhhcyBubyBmaWVsZCAieCIKIENPTlRFWFQ6ICBQTC9wZ1NRTCBhc3NpZ25tZW50ICJiLmMueC5x MSA9IDEiCiBQTC9wZ1NRTCBmdW5jdGlvbiBpbmxpbmVfY29kZV9ibG9jayBsaW5lIDEgYXQgYXNz aWdubWVudAogZG8gJCQgPDxiPj4gZGVjbGFyZSBjIG5lc3RlZF9pbnQ4czsgYmVnaW4gYi5jLmMy LnggPSAxOyBlbmQgJCQ7Ci1FUlJPUjogIGNhbm5vdCBhc3NpZ24gdG8gZmllbGQgIngiIG9mIGNv bHVtbiAiYiIgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIGNvbHVtbiBpbiBkYXRhIHR5cGUgdHdv X2ludDhzCitFUlJPUjogIGNhbm5vdCBhc3NpZ24gdG8gZmllbGQgIngiIG9mIGNvbHVtbiBvciB2 YXJpYWJsZSAiYiIgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIGNvbHVtbiBpbiBkYXRhIHR5cGUg dHdvX2ludDhzCiBMSU5FIDE6IGIuYy5jMi54ID0gMQogICAgICAgICBeCiBRVUVSWTogIGIuYy5j Mi54ID0gMQpkaWZmIC0tZ2l0IGEvc3JjL3BsL3RjbC9leHBlY3RlZC9wbHRjbF9xdWVyaWVzLm91 dCBiL3NyYy9wbC90Y2wvZXhwZWN0ZWQvcGx0Y2xfcXVlcmllcy5vdXQKaW5kZXggMmQ5MjJjMjMz My4uM2I2NTA2ZDYxMyAxMDA2NDQKLS0tIGEvc3JjL3BsL3RjbC9leHBlY3RlZC9wbHRjbF9xdWVy aWVzLm91dAorKysgYi9zcmMvcGwvdGNsL2V4cGVjdGVkL3BsdGNsX3F1ZXJpZXMub3V0CkBAIC0y NDYsMTIgKzI0NiwxMiBAQCBFUlJPUjogIHR5cGUgImIiIGRvZXMgbm90IGV4aXN0CiBzZWxlY3Qg dGNsX2V2YWwoJ3NwaV9wcmVwYXJlIGEgImIgeyInKTsKIEVSUk9SOiAgdW5tYXRjaGVkIG9wZW4g YnJhY2UgaW4gbGlzdAogc2VsZWN0IHRjbF9lcnJvcl9oYW5kbGluZ190ZXN0KCR0Y2wkc3BpX3By ZXBhcmUgInNlbGVjdCBtb28iIFtdJHRjbCQpOwotICAgICAgIHRjbF9lcnJvcl9oYW5kbGluZ190 ZXN0ICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU1FM U1RBVEU6IDQyNzAzICAgICAgICAgICAgICAgICAgICAgKwotIGNvbmRpdGlvbjogdW5kZWZpbmVk X2NvbHVtbiAgICAgICAgICsKLSBjdXJzb3JfcG9zaXRpb246IDggICAgICAgICAgICAgICAgICAr Ci0gbWVzc2FnZTogY29sdW1uICJtb28iIGRvZXMgbm90IGV4aXN0KworICAgICAgICAgICAgIHRj bF9lcnJvcl9oYW5kbGluZ190ZXN0ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU1FMU1RBVEU6IDQyNzAzICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworIGNvbmRpdGlvbjogdW5kZWZpbmVkX2NvbHVtbiAg ICAgICAgICAgICAgICAgICAgICsKKyBjdXJzb3JfcG9zaXRpb246IDggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgbWVzc2FnZTogY29sdW1uIG9yIHZhcmlhYmxlICJtb28iIGRvZXMg bm90IGV4aXN0KwogIHN0YXRlbWVudDogc2VsZWN0IG1vbwogKDEgcm93KQogCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CmluZGV4IDYwMGU2MDNiZGYuLjJhOGQxOTgz NDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CkBAIC0xMjg3 LDE5ICsxMjg3LDE5IEBAIHNlbGVjdCAqIGZyb20gYXRhY2MxOwogKDEgcm93KQogCiBzZWxlY3Qg KiBmcm9tIGF0YWNjMSBvcmRlciBieSBhOwotRVJST1I6ICBjb2x1bW4gImEiIGRvZXMgbm90IGV4 aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAiYSIgZG9lcyBub3QgZXhpc3QKIExJTkUg MTogc2VsZWN0ICogZnJvbSBhdGFjYzEgb3JkZXIgYnkgYTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgogc2VsZWN0ICogZnJvbSBhdGFjYzEgb3JkZXIgYnkgIi4uLi4u Li4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iOwotRVJST1I6ICBjb2x1bW4gIi4uLi4uLi4ucGcuZHJv cHBlZC4xLi4uLi4uLi4iIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJs ZSAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4uLi4uLiIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTog c2VsZWN0ICogZnJvbSBhdGFjYzEgb3JkZXIgYnkgIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4u Li4iLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIHNlbGVjdCAq IGZyb20gYXRhY2MxIGdyb3VwIGJ5IGE7Ci1FUlJPUjogIGNvbHVtbiAiYSIgZG9lcyBub3QgZXhp c3QKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJhIiBkb2VzIG5vdCBleGlzdAogTElORSAx OiBzZWxlY3QgKiBmcm9tIGF0YWNjMSBncm91cCBieSBhOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCiBzZWxlY3QgKiBmcm9tIGF0YWNjMSBncm91cCBieSAiLi4uLi4u Li5wZy5kcm9wcGVkLjEuLi4uLi4uLiI7Ci1FUlJPUjogIGNvbHVtbiAiLi4uLi4uLi5wZy5kcm9w cGVkLjEuLi4uLi4uLiIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxl ICIuLi4uLi4uLnBnLmRyb3BwZWQuMS4uLi4uLi4uIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBz ZWxlY3QgKiBmcm9tIGF0YWNjMSBncm91cCBieSAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4uLi4u LiIuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogc2VsZWN0IGF0 YWNjMS4qIGZyb20gYXRhY2MxOwpAQCAtMTMwOSw3ICsxMzA5LDcgQEAgc2VsZWN0IGF0YWNjMS4q IGZyb20gYXRhY2MxOwogKDEgcm93KQogCiBzZWxlY3QgYSBmcm9tIGF0YWNjMTsKLUVSUk9SOiAg Y29sdW1uICJhIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBjb2x1bW4gb3IgdmFyaWFibGUgImEi IGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IHNlbGVjdCBhIGZyb20gYXRhY2MxOwogICAgICAgICAg ICAgICAgXgogc2VsZWN0IGF0YWNjMS5hIGZyb20gYXRhY2MxOwpAQCAtMTMyMywxNSArMTMyMywx NSBAQCBzZWxlY3QgYixjLGQgZnJvbSBhdGFjYzE7CiAoMSByb3cpCiAKIHNlbGVjdCBhLGIsYyxk IGZyb20gYXRhY2MxOwotRVJST1I6ICBjb2x1bW4gImEiIGRvZXMgbm90IGV4aXN0CitFUlJPUjog IGNvbHVtbiBvciB2YXJpYWJsZSAiYSIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogc2VsZWN0IGEs YixjLGQgZnJvbSBhdGFjYzE7CiAgICAgICAgICAgICAgICBeCiBzZWxlY3QgKiBmcm9tIGF0YWNj MSB3aGVyZSBhID0gMTsKLUVSUk9SOiAgY29sdW1uICJhIiBkb2VzIG5vdCBleGlzdAorRVJST1I6 ICBjb2x1bW4gb3IgdmFyaWFibGUgImEiIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IHNlbGVjdCAq IGZyb20gYXRhY2MxIHdoZXJlIGEgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCiBzZWxlY3QgIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iIGZyb20gYXRhY2Mx OwotRVJST1I6ICBjb2x1bW4gIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iIGRvZXMgbm90 IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAiLi4uLi4uLi5wZy5kcm9wcGVkLjEu Li4uLi4uLiIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogc2VsZWN0ICIuLi4uLi4uLnBnLmRyb3Bw ZWQuMS4uLi4uLi4uIiBmcm9tIGF0YWNjMTsKICAgICAgICAgICAgICAgIF4KIHNlbGVjdCBhdGFj YzEuIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iIGZyb20gYXRhY2MxOwpAQCAtMTMzOSwx MSArMTMzOSwxMSBAQCBFUlJPUjogIGNvbHVtbiBhdGFjYzEuLi4uLi4uLi5wZy5kcm9wcGVkLjEu Li4uLi4uLiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBzZWxlY3QgYXRhY2MxLiIuLi4uLi4uLnBn LmRyb3BwZWQuMS4uLi4uLi4uIiBmcm9tIGF0YWNjMTsKICAgICAgICAgICAgICAgIF4KIHNlbGVj dCAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4uLi4uLiIsYixjLGQgZnJvbSBhdGFjYzE7Ci1FUlJP UjogIGNvbHVtbiAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4uLi4uLiIgZG9lcyBub3QgZXhpc3QK K0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICIuLi4uLi4uLnBnLmRyb3BwZWQuMS4uLi4uLi4u IiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBzZWxlY3QgIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4u Li4uLi4iLGIsYyxkIGZyb20gYXRhY2MxOwogICAgICAgICAgICAgICAgXgogc2VsZWN0ICogZnJv bSBhdGFjYzEgd2hlcmUgIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iID0gMTsKLUVSUk9S OiAgY29sdW1uICIuLi4uLi4uLnBnLmRyb3BwZWQuMS4uLi4uLi4uIiBkb2VzIG5vdCBleGlzdAor RVJST1I6ICBjb2x1bW4gb3IgdmFyaWFibGUgIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4i IGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IHNlbGVjdCAqIGZyb20gYXRhY2MxIHdoZXJlICIuLi4u Li4uLnBnLmRyb3BwZWQuMS4uLi4uLi4uIiA9IC4uLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCiAtLSBVUERBVEVzCkBAIC0xMzUyLDcgKzEzNTIsNyBAQCBFUlJPUjogIGNv bHVtbiAiYSIgb2YgcmVsYXRpb24gImF0YWNjMSIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogdXBk YXRlIGF0YWNjMSBzZXQgYSA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIHVwZGF0 ZSBhdGFjYzEgc2V0IGIgPSAyIHdoZXJlIGEgPSAzOwotRVJST1I6ICBjb2x1bW4gImEiIGRvZXMg bm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAiYSIgZG9lcyBub3QgZXhpc3QK IExJTkUgMTogdXBkYXRlIGF0YWNjMSBzZXQgYiA9IDIgd2hlcmUgYSA9IDM7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIHVwZGF0ZSBhdGFjYzEgc2V0ICIuLi4uLi4u LnBnLmRyb3BwZWQuMS4uLi4uLi4uIiA9IDM7CkBAIC0xMzYwLDcgKzEzNjAsNyBAQCBFUlJPUjog IGNvbHVtbiAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4uLi4uLiIgb2YgcmVsYXRpb24gImF0YWNj MSIgZG9lcyBub3QgZXhpcwogTElORSAxOiB1cGRhdGUgYXRhY2MxIHNldCAiLi4uLi4uLi5wZy5k cm9wcGVkLjEuLi4uLi4uLiIgPSAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICBeCiB1cGRh dGUgYXRhY2MxIHNldCBiID0gMiB3aGVyZSAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4uLi4uLiIg PSAzOwotRVJST1I6ICBjb2x1bW4gIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iIGRvZXMg bm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAiLi4uLi4uLi5wZy5kcm9wcGVk LjEuLi4uLi4uLiIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogdXBkYXRlIGF0YWNjMSBzZXQgYiA9 IDIgd2hlcmUgIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iLi4uCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KIC0tIElOU0VSVHMKQEAgLTE0MDgsMTEgKzE0MDgs MTEgQEAgTElORSAxOiBpbnNlcnQgaW50byBhdGFjYzEgKCIuLi4uLi4uLnBnLmRyb3BwZWQuMS4u Li4uLi4uIixiLGMsZCkgdmEuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAtLSBE RUxFVEVzCiBkZWxldGUgZnJvbSBhdGFjYzEgd2hlcmUgYSA9IDM7Ci1FUlJPUjogIGNvbHVtbiAi YSIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJhIiBkb2VzIG5v dCBleGlzdAogTElORSAxOiBkZWxldGUgZnJvbSBhdGFjYzEgd2hlcmUgYSA9IDM7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBkZWxldGUgZnJvbSBhdGFjYzEgd2hlcmUgIi4u Li4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iID0gMzsKLUVSUk9SOiAgY29sdW1uICIuLi4uLi4u LnBnLmRyb3BwZWQuMS4uLi4uLi4uIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBjb2x1bW4gb3Ig dmFyaWFibGUgIi4uLi4uLi4ucGcuZHJvcHBlZC4xLi4uLi4uLi4iIGRvZXMgbm90IGV4aXN0CiBM SU5FIDE6IGRlbGV0ZSBmcm9tIGF0YWNjMSB3aGVyZSAiLi4uLi4uLi5wZy5kcm9wcGVkLjEuLi4u Li4uLiIgPSAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogZGVsZXRlIGZy b20gYXRhY2MxOwpAQCAtMTY5OCw3ICsxNjk4LDcgQEAgc2VsZWN0IGYxIGZyb20gYzE7CiAKIGFs dGVyIHRhYmxlIGMxIGRyb3AgY29sdW1uIGYxOwogc2VsZWN0IGYxIGZyb20gYzE7Ci1FUlJPUjog IGNvbHVtbiAiZjEiIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAi ZjEiIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IHNlbGVjdCBmMSBmcm9tIGMxOwogICAgICAgICAg ICAgICAgXgogSElOVDogIFBlcmhhcHMgeW91IG1lYW50IHRvIHJlZmVyZW5jZSB0aGUgY29sdW1u ICJjMS5mMiIuCkBAIC0xNzEyLDcgKzE3MTIsNyBAQCBFUlJPUjogIGNhbm5vdCBkcm9wIGluaGVy aXRlZCBjb2x1bW4gImYxIgogYWx0ZXIgdGFibGUgcDEgZHJvcCBjb2x1bW4gZjE7CiAtLSBjMS5m MSBpcyBkcm9wcGVkIG5vdywgc2luY2UgdGhlcmUgaXMgbm8gbG9jYWwgZGVmaW5pdGlvbiBmb3Ig aXQKIHNlbGVjdCBmMSBmcm9tIGMxOwotRVJST1I6ICBjb2x1bW4gImYxIiBkb2VzIG5vdCBleGlz dAorRVJST1I6ICBjb2x1bW4gb3IgdmFyaWFibGUgImYxIiBkb2VzIG5vdCBleGlzdAogTElORSAx OiBzZWxlY3QgZjEgZnJvbSBjMTsKICAgICAgICAgICAgICAgIF4KIEhJTlQ6ICBQZXJoYXBzIHlv dSBtZWFudCB0byByZWZlcmVuY2UgdGhlIGNvbHVtbiAiYzEuZjIiLgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NvcHkyLm91dAppbmRleCAwOTBlZjZjN2E4Li4xNjViZDc0OTFkIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NvcHkyLm91dApAQCAtMTIyLDcgKzEyMiw3IEBAIExJTkUgMTogQ09QWSB4IFRP IHN0ZG91dCBXSEVSRSBhID0gMTsKIENPUFkgeCBmcm9tIHN0ZGluIFdIRVJFIGEgPSA1MDAwNDsK IENPUFkgeCBmcm9tIHN0ZGluIFdIRVJFIGEgPiA2MDAwMzsKIENPUFkgeCBmcm9tIHN0ZGluIFdI RVJFIGYgPiA2MDAwMzsKLUVSUk9SOiAgY29sdW1uICJmIiBkb2VzIG5vdCBleGlzdAorRVJST1I6 ICBjb2x1bW4gb3IgdmFyaWFibGUgImYiIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IENPUFkgeCBm cm9tIHN0ZGluIFdIRVJFIGYgPiA2MDAwMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgogQ09QWSB4IGZyb20gc3RkaW4gV0hFUkUgYSA9IG1heCh4LmIpOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcnJvcnMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9lcnJvcnMub3V0CmluZGV4IDhjNTI3NDc0ZGEuLmU1M2FlNDUxZGYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXJyb3JzLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2Vycm9ycy5vdXQKQEAgLTI3LDcgKzI3LDcgQEAgTElORSAxOiBzZWxl Y3QgKiBmcm9tIG5vbmVzdWNoOwogICAgICAgICAgICAgICAgICAgICAgIF4KIC0tIGJhZCBuYW1l IGluIHRhcmdldCBsaXN0CiBzZWxlY3Qgbm9uZXN1Y2ggZnJvbSBwZ19kYXRhYmFzZTsKLUVSUk9S OiAgY29sdW1uICJub25lc3VjaCIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9yIHZh cmlhYmxlICJub25lc3VjaCIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogc2VsZWN0IG5vbmVzdWNo IGZyb20gcGdfZGF0YWJhc2U7CiAgICAgICAgICAgICAgICBeCiAtLSBlbXB0eSBkaXN0aW5jdCBs aXN0IGlzbid0IE9LCkBAIC0zNywxNyArMzcsMTcgQEAgTElORSAxOiBzZWxlY3QgZGlzdGluY3Qg ZnJvbSBwZ19kYXRhYmFzZTsKICAgICAgICAgICAgICAgICAgICAgICAgIF4KIC0tIGJhZCBhdHRy aWJ1dGUgbmFtZSBvbiBsaHMgb2Ygb3BlcmF0b3IKIHNlbGVjdCAqIGZyb20gcGdfZGF0YWJhc2Ug d2hlcmUgbm9uZXN1Y2ggPSBwZ19kYXRhYmFzZS5kYXRuYW1lOwotRVJST1I6ICBjb2x1bW4gIm5v bmVzdWNoIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBjb2x1bW4gb3IgdmFyaWFibGUgIm5vbmVz dWNoIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBzZWxlY3QgKiBmcm9tIHBnX2RhdGFiYXNlIHdo ZXJlIG5vbmVzdWNoID0gcGdfZGF0YWJhc2UuZGF0bmEuLi4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCiAtLSBiYWQgYXR0cmlidXRlIG5hbWUgb24gcmhzIG9mIG9w ZXJhdG9yCiBzZWxlY3QgKiBmcm9tIHBnX2RhdGFiYXNlIHdoZXJlIHBnX2RhdGFiYXNlLmRhdG5h bWUgPSBub25lc3VjaDsKLUVSUk9SOiAgY29sdW1uICJub25lc3VjaCIgZG9lcyBub3QgZXhpc3QK K0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJub25lc3VjaCIgZG9lcyBub3QgZXhpc3QKIExJ TkUgMTogLi4uZWN0ICogZnJvbSBwZ19kYXRhYmFzZSB3aGVyZSBwZ19kYXRhYmFzZS5kYXRuYW1l ID0gbm9uZXN1Y2g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KIC0tIGJhZCBhdHRyaWJ1dGUgbmFtZSBpbiBzZWxlY3QgZGlz dGluY3Qgb24KIHNlbGVjdCBkaXN0aW5jdCBvbiAoZm9vYmFyKSAqIGZyb20gcGdfZGF0YWJhc2U7 Ci1FUlJPUjogIGNvbHVtbiAiZm9vYmFyIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBjb2x1bW4g b3IgdmFyaWFibGUgImZvb2JhciIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogc2VsZWN0IGRpc3Rp bmN0IG9uIChmb29iYXIpICogZnJvbSBwZ19kYXRhYmFzZTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCiAtLSBncm91cGluZyB3aXRoIEZPUiBVUERBVEUKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pvaW4ub3V0CmluZGV4IGI4ZDQzZTRjMTQuLjQ1OGJkNWEwZDAgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9qb2luLm91dApAQCAtNTEwOCwxMyArNTEwOCwxMyBAQCBMSU5FIDE6IHNlbGVjdCB0Mi51 dW5pcXVlMSBmcm9tCiBISU5UOiAgUGVyaGFwcyB5b3UgbWVhbnQgdG8gcmVmZXJlbmNlIHRoZSBj b2x1bW4gInQyLnVuaXF1ZTEiLgogc2VsZWN0IHV1bmlxdWUxIGZyb20KICAgdGVuazEgdDEgam9p biB0ZW5rMiB0MiBvbiB0MS50d28gPSB0Mi50d287IC0tIGVycm9yLCBzdWdnZXN0IGJvdGggYXQg b25jZQotRVJST1I6ICBjb2x1bW4gInV1bmlxdWUxIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBj b2x1bW4gb3IgdmFyaWFibGUgInV1bmlxdWUxIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBzZWxl Y3QgdXVuaXF1ZTEgZnJvbQogICAgICAgICAgICAgICAgXgogSElOVDogIFBlcmhhcHMgeW91IG1l YW50IHRvIHJlZmVyZW5jZSB0aGUgY29sdW1uICJ0MS51bmlxdWUxIiBvciB0aGUgY29sdW1uICJ0 Mi51bmlxdWUxIi4KIHNlbGVjdCBjdGlkIGZyb20KICAgdGVuazEgdDEgam9pbiB0ZW5rMiB0MiBv biB0MS50d28gPSB0Mi50d287IC0tIGVycm9yLCBuZWVkIHF1YWxpZmljYXRpb24KLUVSUk9SOiAg Y29sdW1uICJjdGlkIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBjb2x1bW4gb3IgdmFyaWFibGUg ImN0aWQiIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IHNlbGVjdCBjdGlkIGZyb20KICAgICAgICAg ICAgICAgIF4KIERFVEFJTDogIFRoZXJlIGFyZSBjb2x1bW5zIG5hbWVkICJjdGlkIiwgYnV0IHRo ZXkgYXJlIGluIHRhYmxlcyB0aGF0IGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gdGhpcyBwYXJ0 IG9mIHRoZSBxdWVyeS4KQEAgLTYxNDksNyArNjE0OSw3IEBAIGxhdGVyYWwgKHNlbGVjdCAqIGZy b20gaW50OF90YmwgdDEsCiAKIC0tIHRlc3Qgc29tZSBlcnJvciBjYXNlcyB3aGVyZSBMQVRFUkFM IHNob3VsZCBoYXZlIGJlZW4gdXNlZCBidXQgd2Fzbid0CiBzZWxlY3QgZjEsZyBmcm9tIGludDRf dGJsIGEsIChzZWxlY3QgZjEgYXMgZykgc3M7Ci1FUlJPUjogIGNvbHVtbiAiZjEiIGRvZXMgbm90 IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAiZjEiIGRvZXMgbm90IGV4aXN0CiBM SU5FIDE6IHNlbGVjdCBmMSxnIGZyb20gaW50NF90YmwgYSwgKHNlbGVjdCBmMSBhcyBnKSBzczsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIERFVEFJTDog IFRoZXJlIGlzIGEgY29sdW1uIG5hbWVkICJmMSIgaW4gdGFibGUgImEiLCBidXQgaXQgY2Fubm90 IGJlIHJlZmVyZW5jZWQgZnJvbSB0aGlzIHBhcnQgb2YgdGhlIHF1ZXJ5LgpAQCAtNjE2MSw3ICs2 MTYxLDcgQEAgTElORSAxOiBzZWxlY3QgZjEsZyBmcm9tIGludDRfdGJsIGEsIChzZWxlY3QgYS5m MSBhcyBnKSBzczsKIERFVEFJTDogIFRoZXJlIGlzIGFuIGVudHJ5IGZvciB0YWJsZSAiYSIsIGJ1 dCBpdCBjYW5ub3QgYmUgcmVmZXJlbmNlZCBmcm9tIHRoaXMgcGFydCBvZiB0aGUgcXVlcnkuCiBI SU5UOiAgVG8gcmVmZXJlbmNlIHRoYXQgdGFibGUsIHlvdSBtdXN0IG1hcmsgdGhpcyBzdWJxdWVy eSB3aXRoIExBVEVSQUwuCiBzZWxlY3QgZjEsZyBmcm9tIGludDRfdGJsIGEgY3Jvc3Mgam9pbiAo c2VsZWN0IGYxIGFzIGcpIHNzOwotRVJST1I6ICBjb2x1bW4gImYxIiBkb2VzIG5vdCBleGlzdAor RVJST1I6ICBjb2x1bW4gb3IgdmFyaWFibGUgImYxIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBz ZWxlY3QgZjEsZyBmcm9tIGludDRfdGJsIGEgY3Jvc3Mgam9pbiAoc2VsZWN0IGYxIGFzIGcpIHNz OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KIERFVEFJTDogIFRoZXJlIGlzIGEgY29sdW1uIG5hbWVkICJmMSIgaW4gdGFibGUgImEiLCBi dXQgaXQgY2Fubm90IGJlIHJlZmVyZW5jZWQgZnJvbSB0aGlzIHBhcnQgb2YgdGhlIHF1ZXJ5LgpA QCAtNjE5OCw3ICs2MTk4LDcgQEAgTElORSAxOiBzZWxlY3QgMSBmcm9tIHRlbmsxIGEsIGxhdGVy YWwgKHNlbGVjdCBtYXgoYS51bmlxdWUxKSBmcm9tIGkuLi4KIGNyZWF0ZSB0ZW1wIHRhYmxlIHh4 MSBhcyBzZWxlY3QgZjEgYXMgeDEsIC1mMSBhcyB4MiBmcm9tIGludDRfdGJsOwogLS0gZXJyb3Is IGNhbid0IGRvIHRoaXM6CiB1cGRhdGUgeHgxIHNldCB4MiA9IGYxIGZyb20gKHNlbGVjdCAqIGZy b20gaW50NF90Ymwgd2hlcmUgZjEgPSB4MSkgc3M7Ci1FUlJPUjogIGNvbHVtbiAieDEiIGRvZXMg bm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAieDEiIGRvZXMgbm90IGV4aXN0 CiBMSU5FIDE6IC4uLiBzZXQgeDIgPSBmMSBmcm9tIChzZWxlY3QgKiBmcm9tIGludDRfdGJsIHdo ZXJlIGYxID0geDEpIHNzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KIERFVEFJTDogIFRoZXJlIGlzIGEgY29sdW1uIG5h bWVkICJ4MSIgaW4gdGFibGUgInh4MSIsIGJ1dCBpdCBjYW5ub3QgYmUgcmVmZXJlbmNlZCBmcm9t IHRoaXMgcGFydCBvZiB0aGUgcXVlcnkuCkBAIC02MjE4LDcgKzYyMTgsNyBAQCB1cGRhdGUgeHgx IHNldCB4MiA9IGYxIGZyb20geHgxLCBsYXRlcmFsIChzZWxlY3QgKiBmcm9tIGludDRfdGJsIHdo ZXJlIGYxID0geDEpCiBFUlJPUjogIHRhYmxlIG5hbWUgInh4MSIgc3BlY2lmaWVkIG1vcmUgdGhh biBvbmNlCiAtLSBhbHNvIGVycm9yczoKIGRlbGV0ZSBmcm9tIHh4MSB1c2luZyAoc2VsZWN0ICog ZnJvbSBpbnQ0X3RibCB3aGVyZSBmMSA9IHgxKSBzczsKLUVSUk9SOiAgY29sdW1uICJ4MSIgZG9l cyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJ4MSIgZG9lcyBub3QgZXhp c3QKIExJTkUgMTogLi4udGUgZnJvbSB4eDEgdXNpbmcgKHNlbGVjdCAqIGZyb20gaW50NF90Ymwg d2hlcmUgZjEgPSB4MSkgc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogREVUQUlMOiAgVGhlcmUgaXMgYSBjb2x1bW4g bmFtZWQgIngxIiBpbiB0YWJsZSAieHgxIiwgYnV0IGl0IGNhbm5vdCBiZSByZWZlcmVuY2VkIGZy b20gdGhpcyBwYXJ0IG9mIHRoZSBxdWVyeS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGxwZ3NxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BscGdzcWwu b3V0CmluZGV4IDA4ZTQyZjE3ZGMuLjZmNWYzN2Q1OGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGxwZ3NxbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wbHBnc3FsLm91dApAQCAtMjYwMCw3ICsyNjAwLDcgQEAgZW5kOyAkJCBsYW5ndWFnZSBwbHBn c3FsOwogLS0gc2hvdWxkIGZhaWw6IFNRTFNUQVRFIGFuZCBTUUxFUlJNIGFyZSBvbmx5IGluIGRl ZmluZWQgRVhDRVBUSU9OCiAtLSBibG9ja3MKIHNlbGVjdCBleGNwdF90ZXN0MSgpOwotRVJST1I6 ICBjb2x1bW4gInNxbHN0YXRlIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBjb2x1bW4gb3IgdmFy aWFibGUgInNxbHN0YXRlIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBzcWxzdGF0ZQogICAgICAg ICBeCiBRVUVSWTogIHNxbHN0YXRlCkBAIC0yNjE1LDcgKzI2MTUsNyBAQCBiZWdpbgogZW5kOyAk JCBsYW5ndWFnZSBwbHBnc3FsOwogLS0gc2hvdWxkIGZhaWwKIHNlbGVjdCBleGNwdF90ZXN0Migp OwotRVJST1I6ICBjb2x1bW4gInNxbHN0YXRlIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBjb2x1 bW4gb3IgdmFyaWFibGUgInNxbHN0YXRlIiBkb2VzIG5vdCBleGlzdAogTElORSAxOiBzcWxzdGF0 ZQogICAgICAgICBeCiBRVUVSWTogIHNxbHN0YXRlCkBAIC00NjI5LDcgKzQ2MjksNyBAQCBCRUdJ TgogICAgICAgICBSQUlTRSBOT1RJQ0UgJyUsICUnLCByLnJvb21ubywgci5jb21tZW50OwogICAg IEVORCBMT09QOwogRU5EJCQ7Ci1FUlJPUjogIGNvbHVtbiAiZm9vIiBkb2VzIG5vdCBleGlzdAor RVJST1I6ICBjb2x1bW4gb3IgdmFyaWFibGUgImZvbyIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTog U0VMRUNUIHJ0cmltKHJvb21ubykgQVMgcm9vbW5vLCBmb28gRlJPTSBSb29tIE9SREVSIEJZIHJv b21uLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogUVVFUlk6 ICBTRUxFQ1QgcnRyaW0ocm9vbW5vKSBBUyByb29tbm8sIGZvbyBGUk9NIFJvb20gT1JERVIgQlkg cm9vbW5vCkBAIC00NjcxLDcgKzQ2NzEsNyBAQCBiZWdpbgogICByYWlzZSBub3RpY2UgJ3ggPSAl JywgeDsKIGVuZDsKICQkOwotRVJST1I6ICBjb2x1bW4gIngiIGRvZXMgbm90IGV4aXN0CitFUlJP UjogIGNvbHVtbiBvciB2YXJpYWJsZSAieCIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogeCArIDEK ICAgICAgICAgXgogUVVFUlk6ICB4ICsgMQpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgYmVnaW4KICAg cmFpc2Ugbm90aWNlICd4ID0gJSwgeSA9ICUnLCB4LCB5OwogZW5kOwogJCQ7Ci1FUlJPUjogIGNv bHVtbiAieCIgZG9lcyBub3QgZXhpc3QKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJ4IiBk b2VzIG5vdCBleGlzdAogTElORSAxOiB4ICsgMQogICAgICAgICBeCiBRVUVSWTogIHggKyAxCkBA IC01Njk2LDcgKzU2OTYsNyBAQCBBTFRFUiBUQUJMRSBhbHRlcl90YWJsZV91bmRlcl90cmFuc2l0 aW9uX3RhYmxlcwogICBEUk9QIGNvbHVtbiBuYW1lOwogVVBEQVRFIGFsdGVyX3RhYmxlX3VuZGVy X3RyYW5zaXRpb25fdGFibGVzCiAgIFNFVCBpZCA9IGlkOwotRVJST1I6ICBjb2x1bW4gIm5hbWUi IGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAibmFtZSIgZG9lcyBu b3QgZXhpc3QKIExJTkUgMTogKFNFTEVDVCBzdHJpbmdfYWdnKGlkIHx8ICc9JyB8fCBuYW1lLCAn LCcpIEZST00gZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBR VUVSWTogIChTRUxFQ1Qgc3RyaW5nX2FnZyhpZCB8fCAnPScgfHwgbmFtZSwgJywnKSBGUk9NIGQp CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAppbmRleCAxMDQ3Mzk5ZWY4Li5hZWJhMWUzNGY5 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTEyMCw3ICsxMjAsNyBAQCBTRUxF Q1QgJDEsICQyIFxiaW5kICdmb28nICdiYXInIFxnCiAtLSBlcnJvcnMKIC0tIHBhcnNlIGVycm9y CiBTRUxFQ1QgZm9vIFxiaW5kIFxnCi1FUlJPUjogIGNvbHVtbiAiZm9vIiBkb2VzIG5vdCBleGlz dAorRVJST1I6ICBjb2x1bW4gb3IgdmFyaWFibGUgImZvbyIgZG9lcyBub3QgZXhpc3QKIExJTkUg MTogU0VMRUNUIGZvbyAKICAgICAgICAgICAgICAgIF4KIC0tIHRjb3AgZXJyb3IKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggOGQ4NWZmYzc2MC4uMTZjMWJmNzk2YSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTExOTEsNyArMTE5MSw3IEBAIGRyb3AgcnVs ZSBydWxlc19mb29ydWxlIG9uIHJ1bGVzX2ZvbzsKIC0tIHRoaXMgc2hvdWxkIGZhaWwgYmVjYXVz ZSBmMSBpcyBub3QgZXhwb3NlZCBmb3IgdW5xdWFsaWZpZWQgcmVmZXJlbmNlOgogY3JlYXRlIHJ1 bGUgcnVsZXNfZm9vcnVsZSBhcyBvbiBpbnNlcnQgdG8gcnVsZXNfZm9vIHdoZXJlIGYxIDwgMTAw CiBkbyBpbnN0ZWFkIGluc2VydCBpbnRvIHJ1bGVzX2ZvbzIgdmFsdWVzIChmMSk7Ci1FUlJPUjog IGNvbHVtbiAiZjEiIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAi ZjEiIGRvZXMgbm90IGV4aXN0CiBMSU5FIDI6IGRvIGluc3RlYWQgaW5zZXJ0IGludG8gcnVsZXNf Zm9vMiB2YWx1ZXMgKGYxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgogREVUQUlMOiAgVGhlcmUgYXJlIGNvbHVtbnMgbmFtZWQgImYxIiwgYnV0 IHRoZXkgYXJlIGluIHRhYmxlcyB0aGF0IGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20gdGhpcyBw YXJ0IG9mIHRoZSBxdWVyeS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c2Vzc2lvbl92YXJpYWJsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXNzaW9u X3ZhcmlhYmxlcy5vdXQKaW5kZXggMWJlNmMxYzJhOS4uZTUyMGU4MWNjNiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXNzaW9uX3ZhcmlhYmxlcy5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXNzaW9uX3ZhcmlhYmxlcy5vdXQKQEAgLTI2OSw3ICsy NjksNyBAQCBTRUxFQ1QgdjE7CiAKIC0tIHNob3VsZCBmYWlsCiBMRVQgdjEueCA9IDEwOwotRVJS T1I6ICBjYW5ub3QgYXNzaWduIHRvIGZpZWxkICJ4IiBvZiBjb2x1bW4gInYxIiBiZWNhdXNlIHRo ZXJlIGlzIG5vIHN1Y2ggY29sdW1uIGluIGRhdGEgdHlwZSB0MQorRVJST1I6ICBjYW5ub3QgYXNz aWduIHRvIGZpZWxkICJ4IiBvZiBjb2x1bW4gb3IgdmFyaWFibGUgInYxIiBiZWNhdXNlIHRoZXJl IGlzIG5vIHN1Y2ggY29sdW1uIGluIGRhdGEgdHlwZSB0MQogTElORSAxOiBMRVQgdjEueCA9IDEw OwogICAgICAgICAgICAgXgogRFJPUCBWQVJJQUJMRSB2MTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJhbnNhY3Rpb25zLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvdHJhbnNhY3Rpb25zLm91dAppbmRleCAyYjJjZmY3ZDkxLi42MGMwOTZiODU3IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyYW5zYWN0aW9ucy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmFuc2FjdGlvbnMub3V0CkBAIC0yNTYsNyArMjU2 LDcgQEAgU0VMRUNUICogRlJPTSB0cmFuc19iYXJiYXo7CS0tIHNob3VsZCBoYXZlIDEKIEJFR0lO OwogCVNBVkVQT0lOVCBvbmU7CiAJCVNFTEVDVCB0cmFuc19mb287Ci1FUlJPUjogIGNvbHVtbiAi dHJhbnNfZm9vIiBkb2VzIG5vdCBleGlzdAorRVJST1I6ICBjb2x1bW4gb3IgdmFyaWFibGUgInRy YW5zX2ZvbyIgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogU0VMRUNUIHRyYW5zX2ZvbzsKICAgICAg ICAgICAgICAgIF4KIAlST0xMQkFDSyBUTyBTQVZFUE9JTlQgb25lOwpAQCAtMzA1LDcgKzMwNSw3 IEBAIEJFR0lOOwogCVNBVkVQT0lOVCBvbmU7CiAJCUlOU0VSVCBJTlRPIHNhdmVwb2ludHMgVkFM VUVTICg1KTsKIAkJU0VMRUNUIHRyYW5zX2ZvbzsKLUVSUk9SOiAgY29sdW1uICJ0cmFuc19mb28i IGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVtbiBvciB2YXJpYWJsZSAidHJhbnNfZm9vIiBk b2VzIG5vdCBleGlzdAogTElORSAxOiBTRUxFQ1QgdHJhbnNfZm9vOwogICAgICAgICAgICAgICAg XgogQ09NTUlUOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91bmlvbi5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VuaW9uLm91dAppbmRleCBlMjYxM2Q2Nzc3 Li4wYTY2MTNjNDMwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VuaW9u Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VuaW9uLm91dApAQCAtOTA3LDcg KzkwNyw3IEBAIE9SREVSIEJZIHEyLHExOwogCiAtLSBUaGlzIHNob3VsZCBmYWlsLCBiZWNhdXNl IHEyIGlzbid0IGEgbmFtZSBvZiBhbiBFWENFUFQgb3V0cHV0IGNvbHVtbgogU0VMRUNUIHExIEZS T00gaW50OF90YmwgRVhDRVBUIFNFTEVDVCBxMiBGUk9NIGludDhfdGJsIE9SREVSIEJZIHEyIExJ TUlUIDE7Ci1FUlJPUjogIGNvbHVtbiAicTIiIGRvZXMgbm90IGV4aXN0CitFUlJPUjogIGNvbHVt biBvciB2YXJpYWJsZSAicTIiIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IC4uLiBpbnQ4X3RibCBF WENFUFQgU0VMRUNUIHEyIEZST00gaW50OF90YmwgT1JERVIgQlkgcTIgTElNSVQgMS4uLgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KIERFVEFJTDogIFRoZXJlIGlzIGEgY29sdW1uIG5hbWVkICJxMiIgaW4gdGFibGUgIipTRUxF Q1QqIDIiLCBidXQgaXQgY2Fubm90IGJlIHJlZmVyZW5jZWQgZnJvbSB0aGlzIHBhcnQgb2YgdGhl IHF1ZXJ5LgotLSAKMi4zOC4xCgo= --0000000000009ca7c005eedde9a7 Content-Type: text/x-patch; charset="US-ASCII"; name="v20221202-1-0008-regress-tests-for-session-variables.patch" Content-Disposition: attachment; filename="v20221202-1-0008-regress-tests-for-session-variables.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb6xukzi2 RnJvbSA5MjNmOWQ0NjY0NTNjNmJiZGYxYjBhYzA0NDE3NzlhYjA2NWJiMDY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IE1vbiwgNCBBcHIgMjAyMiAyMDo1NDo0MyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDgv MTBdIHJlZ3Jlc3MgdGVzdHMgZm9yIHNlc3Npb24gdmFyaWFibGVzCgpDaGVja3Mgb2YgYmFzaWMg ZnVuY3Rpb25hbGl0eSwgY2hlY2sgb2YgdXNhZ2Ugc2Vzc2lvbiB2YXJpYWJsZXMgaW4gc3VidHJh bnNhY3Rpb25zCmFuZCBmcm9tIFBMcGdTUUwKLS0tCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3Nl c3Npb24tdmFyaWFibGUub3V0ICAgfCAgMTEyICsrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0 aW9uX3NjaGVkdWxlICAgICAgICAgfCAgICAxICsKIC4uLi9pc29sYXRpb24vc3BlY3Mvc2Vzc2lv bi12YXJpYWJsZS5zcGVjICAgICB8ICAgNTMgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vzc2lv bl92YXJpYWJsZXMub3V0ICAgIHwgMTQ3MSArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMiArLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvc2Vzc2lvbl92YXJpYWJsZXMuc3FsICAgIHwgMTExNyArKysrKysrKysrKysrCiA2 IGZpbGVzIGNoYW5nZWQsIDI3NTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9zZXNzaW9uLXZhcmlhYmxl Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9zZXNzaW9u LXZhcmlhYmxlLnNwZWMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Nlc3Npb25fdmFyaWFibGVzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3Nlc3Npb25fdmFyaWFibGVzLnNxbAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9zZXNzaW9uLXZhcmlhYmxlLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlv bi9leHBlY3RlZC9zZXNzaW9uLXZhcmlhYmxlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi4xYzQxNDlmNmVmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNv bGF0aW9uL2V4cGVjdGVkL3Nlc3Npb24tdmFyaWFibGUub3V0CkBAIC0wLDAgKzEsMTEyIEBACitQ YXJzZWQgdGVzdCBzcGVjIHdpdGggNCBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjog bGV0IHZhbCBkcm9wIHZhbAorc3RlcCBsZXQ6IExFVCBteXZhciA9ICd0ZXN0JzsKK3N0ZXAgdmFs OiBTRUxFQ1QgbXl2YXI7CitteXZhcgorLS0tLS0KK3Rlc3QgCisoMSByb3cpCisKK3N0ZXAgZHJv cDogRFJPUCBWQVJJQUJMRSBteXZhcjsKK3N0ZXAgdmFsOiBTRUxFQ1QgbXl2YXI7CitFUlJPUjog IGNvbHVtbiBvciB2YXJpYWJsZSAibXl2YXIiIGRvZXMgbm90IGV4aXN0CisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBsZXQgdmFsIHMxIGRyb3AgdmFsIHNyMQorc3RlcCBsZXQ6IExFVCBteXZhciA9 ICd0ZXN0JzsKK3N0ZXAgdmFsOiBTRUxFQ1QgbXl2YXI7CitteXZhcgorLS0tLS0KK3Rlc3QgCiso MSByb3cpCisKK3N0ZXAgczE6IEJFR0lOOworc3RlcCBkcm9wOiBEUk9QIFZBUklBQkxFIG15dmFy Oworc3RlcCB2YWw6IFNFTEVDVCBteXZhcjsKK0VSUk9SOiAgY29sdW1uIG9yIHZhcmlhYmxlICJt eXZhciIgZG9lcyBub3QgZXhpc3QKK3N0ZXAgc3IxOiBST0xMQkFDSzsKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IGxldCB2YWwgZGJnIGRyb3AgY3JlYXRlIGRiZyB2YWwKK3N0ZXAgbGV0OiBMRVQg bXl2YXIgPSAndGVzdCc7CitzdGVwIHZhbDogU0VMRUNUIG15dmFyOworbXl2YXIKKy0tLS0tCit0 ZXN0IAorKDEgcm93KQorCitzdGVwIGRiZzogU0VMRUNUIHNjaGVtYSwgbmFtZSwgcmVtb3ZlZCBG Uk9NIHBnX3Nlc3Npb25fdmFyaWFibGVzKCk7CitzY2hlbWF8bmFtZSB8cmVtb3ZlZAorLS0tLS0t Ky0tLS0tKy0tLS0tLS0KK3B1YmxpY3xteXZhcnxmICAgICAgCisoMSByb3cpCisKK3N0ZXAgZHJv cDogRFJPUCBWQVJJQUJMRSBteXZhcjsKK3N0ZXAgY3JlYXRlOiBDUkVBVEUgVkFSSUFCTEUgbXl2 YXIgQVMgdGV4dDsKK3N0ZXAgZGJnOiBTRUxFQ1Qgc2NoZW1hLCBuYW1lLCByZW1vdmVkIEZST00g cGdfc2Vzc2lvbl92YXJpYWJsZXMoKTsKK3NjaGVtYXxuYW1lfHJlbW92ZWQKKy0tLS0tLSstLS0t Ky0tLS0tLS0KKygwIHJvd3MpCisKK3N0ZXAgdmFsOiBTRUxFQ1QgbXl2YXI7CitteXZhcgorLS0t LS0KKyAgICAgCisoMSByb3cpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IGxldCB2YWwgczEg ZGJnIGRyb3AgY3JlYXRlIGRiZyB2YWwgc3IxCitzdGVwIGxldDogTEVUIG15dmFyID0gJ3Rlc3Qn Oworc3RlcCB2YWw6IFNFTEVDVCBteXZhcjsKK215dmFyCistLS0tLQordGVzdCAKKygxIHJvdykK Kworc3RlcCBzMTogQkVHSU47CitzdGVwIGRiZzogU0VMRUNUIHNjaGVtYSwgbmFtZSwgcmVtb3Zl ZCBGUk9NIHBnX3Nlc3Npb25fdmFyaWFibGVzKCk7CitzY2hlbWF8bmFtZSB8cmVtb3ZlZAorLS0t LS0tKy0tLS0tKy0tLS0tLS0KK3B1YmxpY3xteXZhcnxmICAgICAgCisoMSByb3cpCisKK3N0ZXAg ZHJvcDogRFJPUCBWQVJJQUJMRSBteXZhcjsKK3N0ZXAgY3JlYXRlOiBDUkVBVEUgVkFSSUFCTEUg bXl2YXIgQVMgdGV4dDsKK3N0ZXAgZGJnOiBTRUxFQ1Qgc2NoZW1hLCBuYW1lLCByZW1vdmVkIEZS T00gcGdfc2Vzc2lvbl92YXJpYWJsZXMoKTsKK3NjaGVtYXxuYW1lIHxyZW1vdmVkCistLS0tLS0r LS0tLS0rLS0tLS0tLQorcHVibGljfG15dmFyfGYgICAgICAKKygxIHJvdykKKworc3RlcCB2YWw6 IFNFTEVDVCBteXZhcjsKK215dmFyCistLS0tLQorICAgICAKKygxIHJvdykKKworc3RlcCBzcjE6 IFJPTExCQUNLOworCitzdGFydGluZyBwZXJtdXRhdGlvbjogY3JlYXRlMyBsZXQzIHMzIG9fY19k IG9fZW94X3IgY3JlYXRlNCBsZXQ0IGRyb3A0IGRyb3AzIGludmFsMyBkaXNjYXJkIHNjMyBjbGVh biBzdGF0ZQorc3RlcCBjcmVhdGUzOiBDUkVBVEUgVkFSSUFCTEUgbXl2YXIzIEFTIHRleHQ7Citz dGVwIGxldDM6IExFVCBteXZhcjMgPSAndGVzdCc7CitzdGVwIHMzOiBCRUdJTjsKK3N0ZXAgb19j X2Q6IENSRUFURSBURU1QIFZBUklBQkxFIG15dmFyX29fY19kIEFTIHRleHQgT04gQ09NTUlUIERS T1A7CitzdGVwIG9fZW94X3I6IENSRUFURSBWQVJJQUJMRSBteXZhcl9vX2VveF9yIEFTIHRleHQg T04gVFJBTlNBQ1RJT04gRU5EIFJFU0VUOyBMRVQgbXl2YXJfb19lb3hfciA9ICd0ZXN0JzsKK3N0 ZXAgY3JlYXRlNDogQ1JFQVRFIFZBUklBQkxFIG15dmFyNCBBUyB0ZXh0Oworc3RlcCBsZXQ0OiBM RVQgbXl2YXI0ID0gJ3Rlc3QnOworc3RlcCBkcm9wNDogRFJPUCBWQVJJQUJMRSBteXZhcjQ7Citz dGVwIGRyb3AzOiBEUk9QIFZBUklBQkxFIG15dmFyMzsKK3N0ZXAgaW52YWwzOiBTRUxFQ1QgQ09V TlQoKikgPj0gMCBGUk9NIHBnX2ZvcmVpZ25fdGFibGU7Cis/Y29sdW1uPworLS0tLS0tLS0KK3Qg ICAgICAgCisoMSByb3cpCisKK3N0ZXAgZGlzY2FyZDogRElTQ0FSRCBWQVJJQUJMRVM7CitzdGVw IHNjMzogQ09NTUlUOworc3RlcCBjbGVhbjogRFJPUCBWQVJJQUJMRSBteXZhcl9vX2VveF9yOwor c3RlcCBzdGF0ZTogU0VMRUNUIHZhcm5hbWUgRlJPTSBwZ192YXJpYWJsZTsKK3Zhcm5hbWUKKy0t LS0tLS0KK215dmFyICAKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9u L2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1 bGUKaW5kZXggYzExZGM5YTQyMC4uNDA1YWE2MzFlOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNv bGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0 aW9uX3NjaGVkdWxlCkBAIC0xMDksMyArMTA5LDQgQEAgdGVzdDogdHJ1bmNhdGUtY29uZmxpY3QK IHRlc3Q6IHNlcmlhbGl6YWJsZS1wYXJhbGxlbAogdGVzdDogc2VyaWFsaXphYmxlLXBhcmFsbGVs LTIKIHRlc3Q6IG1hdHZpZXctd3JpdGUtc2tldwordGVzdDogc2Vzc2lvbi12YXJpYWJsZQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3Nlc3Npb24tdmFyaWFibGUuc3BlYyBi L3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9zZXNzaW9uLXZhcmlhYmxlLnNwZWMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWQwODljOGE0ZQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9zZXNzaW9uLXZhcmlhYmxlLnNwZWMKQEAgLTAs MCArMSw1MyBAQAorIyBUZXN0IHNlc3Npb24gdmFyaWFibGVzIG1lbW9yeSBjbGVhbnVwIGZvciBz aW52YWwKKworc2V0dXAKK3sKKyAgICBDUkVBVEUgVkFSSUFCTEUgbXl2YXIgQVMgdGV4dDsKK30K KwordGVhcmRvd24KK3sKKyAgICBEUk9QIFZBUklBQkxFIElGIEVYSVNUUyBteXZhcjsKK30KKwor c2Vzc2lvbiBzMQorc3RlcCBzMQkJeyBCRUdJTjsgfQorc3RlcCBsZXQJeyBMRVQgbXl2YXIgPSAn dGVzdCc7IH0KK3N0ZXAgdmFsCXsgU0VMRUNUIG15dmFyOyB9CitzdGVwIGRiZwl7IFNFTEVDVCBz Y2hlbWEsIG5hbWUsIHJlbW92ZWQgRlJPTSBwZ19zZXNzaW9uX3ZhcmlhYmxlcygpOyB9CitzdGVw IHNyMQl7IFJPTExCQUNLOyB9CisKK3Nlc3Npb24gczIKK3N0ZXAgZHJvcAkJeyBEUk9QIFZBUklB QkxFIG15dmFyOyB9CitzdGVwIGNyZWF0ZQkJeyBDUkVBVEUgVkFSSUFCTEUgbXl2YXIgQVMgdGV4 dDsgfQorCitzZXNzaW9uIHMzCitzdGVwIHMzCQkJeyBCRUdJTjsgfQorc3RlcCBsZXQzCQl7IExF VCBteXZhcjMgPSAndGVzdCc7IH0KK3N0ZXAgb19jX2QJCXsgQ1JFQVRFIFRFTVAgVkFSSUFCTEUg bXl2YXJfb19jX2QgQVMgdGV4dCBPTiBDT01NSVQgRFJPUDsgfQorc3RlcCBvX2VveF9yCXsgQ1JF QVRFIFZBUklBQkxFIG15dmFyX29fZW94X3IgQVMgdGV4dCBPTiBUUkFOU0FDVElPTiBFTkQgUkVT RVQ7IExFVCBteXZhcl9vX2VveF9yID0gJ3Rlc3QnOyB9CitzdGVwIGNyZWF0ZTQJeyBDUkVBVEUg VkFSSUFCTEUgbXl2YXI0IEFTIHRleHQ7IH0KK3N0ZXAgbGV0NAkJeyBMRVQgbXl2YXI0ID0gJ3Rl c3QnOyB9CitzdGVwIGRyb3A0CQl7IERST1AgVkFSSUFCTEUgbXl2YXI0OyB9CitzdGVwIGludmFs MwkJeyBTRUxFQ1QgQ09VTlQoKikgPj0gMCBGUk9NIHBnX2ZvcmVpZ25fdGFibGU7IH0KK3N0ZXAg ZGlzY2FyZAl7IERJU0NBUkQgVkFSSUFCTEVTOyB9CitzdGVwIHNjMwkJeyBDT01NSVQ7IH0KK3N0 ZXAgY2xlYW4JCXsgRFJPUCBWQVJJQUJMRSBteXZhcl9vX2VveF9yOyB9CitzdGVwIHN0YXRlCQl7 IFNFTEVDVCB2YXJuYW1lIEZST00gcGdfdmFyaWFibGU7IH0KKworc2Vzc2lvbiBzNAorc3RlcCBj cmVhdGUzCXsgQ1JFQVRFIFZBUklBQkxFIG15dmFyMyBBUyB0ZXh0OyB9CitzdGVwIGRyb3AzCQl7 IERST1AgVkFSSUFCTEUgbXl2YXIzOyB9CisKKyMgQ29uY3VycmVudCBkcm9wIG9mIGEga25vd24g dmFyaWFibGUgc2hvdWxkIGxlYWQgdG8gYW4gZXJyb3IKK3Blcm11dGF0aW9uIGxldCB2YWwgZHJv cCB2YWwKKyMgU2FtZSwgYnV0IHdpdGggYW4gZXhwbGljaXQgdHJhbnNhY3Rpb24KK3Blcm11dGF0 aW9uIGxldCB2YWwgczEgZHJvcCB2YWwgc3IxCisjIENvbmN1cnJlbnQgZHJvcC9jcmVhdGUgb2Yg YSBrbm93biB2YXJpYWJsZSBzaG91bGQgbGVhZCB0byBlbXB0eSB2YXJpYWJsZQorcGVybXV0YXRp b24gbGV0IHZhbCBkYmcgZHJvcCBjcmVhdGUgZGJnIHZhbAorIyBDb25jdXJyZW50IGRyb3AvY3Jl YXRlIG9mIGEga25vd24gdmFyaWFibGUgc2hvdWxkIGxlYWQgdG8gZW1wdHkgdmFyaWFibGUKKyMg V2UgbmVlZCBhIHRyYW5zYWN0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIHdvbid0IGFjY2VwdCBp bnZhbGlkYXRpb24gd2hlbgorIyBjYWxsaW5nIHRoZSBkYmcgc3RlcCBhZnRlciB0aGUgY29uY3Vy cmVudCBkcm9wCitwZXJtdXRhdGlvbiBsZXQgdmFsIHMxIGRiZyBkcm9wIGNyZWF0ZSBkYmcgdmFs IHNyMQorIyB0ZXN0IGZvciBESVNDQVJEIEFMTCB3aGVuIGFsbCBpbnRlcm5hbCBxdWV1ZXMgaGF2 ZSBhY3Rpb25zIHJlZ2lzdGVyZWQKK3Blcm11dGF0aW9uIGNyZWF0ZTMgbGV0MyBzMyBvX2NfZCBv X2VveF9yIGNyZWF0ZTQgbGV0NCBkcm9wNCBkcm9wMyBpbnZhbDMgZGlzY2FyZCBzYzMgY2xlYW4g c3RhdGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vzc2lvbl92YXJp YWJsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXNzaW9uX3ZhcmlhYmxlcy5v dXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMWJlNmMxYzJhOQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Vzc2lvbl92YXJpYWJs ZXMub3V0CkBAIC0wLDAgKzEsMTQ3MSBAQAorQ1JFQVRFIFNDSEVNQSBzdmFydGVzdCBDUkVBVEUg VkFSSUFCTEUgeHggQVMgaW50IENSRUFURSBUQUJMRSBmb28oYSBpbnQpOworTEVUIHN2YXJ0ZXN0 Lnh4ID0gMTAwOworRFJPUCBTQ0hFTUEgc3ZhcnRlc3QgQ0FTQ0FERTsKK05PVElDRTogIGRyb3Ag Y2FzY2FkZXMgdG8gMiBvdGhlciBvYmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRh YmxlIHN2YXJ0ZXN0LmZvbworZHJvcCBjYXNjYWRlcyB0byBzZXNzaW9uIHZhcmlhYmxlIHN2YXJ0 ZXN0Lnh4CistLSBzaG91bGQgZmFpbAorTEVUIHN2YXJ0ZXN0Lnh4ID0gMTAwOworRVJST1I6ICBz ZXNzaW9uIHZhcmlhYmxlICJzdmFydGVzdC54eCIgZG9lc24ndCBleGlzdAorTElORSAxOiBMRVQg c3ZhcnRlc3QueHggPSAxMDA7CisgICAgICAgICAgICBeCitDUkVBVEUgU0NIRU1BIHN2YXJ0ZXN0 OworU0VUIHNlYXJjaF9wYXRoID0gc3ZhcnRlc3Q7CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBp bnRlZ2VyOworQ1JFQVRFIFRFTVAgVkFSSUFCTEUgdmFyMiBBUyB0ZXh0OworRFJPUCBWQVJJQUJM RSB2YXIxLCB2YXIyOworLS0gZnVuY3Rpb25hbCBpbnRlcmZhY2UKK0NSRUFURSBWQVJJQUJMRSB2 YXIxIEFTIG51bWVyaWM7CitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xlOworR1JBTlQgVVNBR0Ug T04gU0NIRU1BIHN2YXJ0ZXN0IFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVz dF9yb2xlOworLS0gc2hvdWxkIGZhaWwKK1NFTEVDVCB2YXIxOworRVJST1I6ICBwZXJtaXNzaW9u IGRlbmllZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSB2YXIxCitTRVQgUk9MRSBUTyBERUZBVUxUOwor R1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xF IFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgZmFpbAorTEVUIHZhcjEgPSAxMDsKK0VSUk9S OiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgdmFyMQorLS0gc2hvdWxk IHdvcmsKK1NFTEVDVCB2YXIxOworIHZhcjEgCistLS0tLS0KKyAgICAgCisoMSByb3cpCisKK1NF VCBST0xFIFRPIERFRkFVTFQ7CitHUkFOVCBVUERBVEUgT04gVkFSSUFCTEUgdmFyMSBUTyB2YXJf dGVzdF9yb2xlOworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB3b3JrCitM RVQgdmFyMSA9IDMzMzsKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitSRVZPS0UgQUxMIE9OIFZBUklB QkxFIHZhcjEgRlJPTSB2YXJfdGVzdF9yb2xlOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04g c2VjdXJlX3ZhcigpCitSRVRVUk5TIGludCBBUyAkJAorICBTRUxFQ1Qgc3ZhcnRlc3QudmFyMTo6 aW50OworJCQgTEFOR1VBR0Ugc3FsIFNFQ1VSSVRZIERFRklORVI7CitTRUxFQ1Qgc2VjdXJlX3Zh cigpOworIHNlY3VyZV92YXIgCistLS0tLS0tLS0tLS0KKyAgICAgICAgMzMzCisoMSByb3cpCisK K1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgZmFpbAorU0VMRUNUIHN2YXJ0 ZXN0LnZhcjE7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzZXNzaW9uIHZhcmlhYmxl IHZhcjEKKy0tIHNob3VsZCB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKyBzZWN1cmVfdmFy IAorLS0tLS0tLS0tLS0tCisgICAgICAgIDMzMworKDEgcm93KQorCitTRVQgUk9MRSBUTyBERUZB VUxUOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyMTsKKyAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0aW9uIFNjYW4gb24gcGdfY2F0YWxvZy5nZW5lcmF0 ZV9zZXJpZXMgZworICAgT3V0cHV0OiB2CisgICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTAwKQorICAgRmlsdGVyOiAoKGcudik6Om51bWVyaWMgPSB2YXIxKQorKDQgcm93cykK KworQ1JFQVRFIFZJRVcgc2NoZW1hX3Zhcl92aWV3IEFTIFNFTEVDVCB2YXIxOworU0VMRUNUICog RlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisgdmFyMSAKKy0tLS0tLQorICAzMzMKKygxIHJvdykKKwor XGMgLQorU0VUIHNlYXJjaF9wYXRoID0gc3ZhcnRlc3Q7CistLSBzaG91bGQgd29yayBzdGlsbCwg YnV0IHZhciB3aWxsIGJlIGVtcHR5CitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKyB2 YXIxIAorLS0tLS0tCisgICAgIAorKDEgcm93KQorCitMRVQgdmFyMSA9IHBpKCk7CitTRUxFQ1Qg dmFyMTsKKyAgICAgICB2YXIxICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgMy4xNDE1OTI2 NTM1ODk3OQorKDEgcm93KQorCistLSB3ZSBjYW4gc2VlIGV4ZWN1dGlvbiBwbGFuIG9mIExFVCBz dGF0ZW1lbnQKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgTEVUIHZhcjEgPSBwaSgpOwor ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFNFVCBTRVNTSU9OIFZBUklBQkxFCisgUmVzdWx0CisgICBPdXRwdXQ6IDMuMTQxNTkyNjUz NTg5NzkKKygzIHJvd3MpCisKK1NFTEVDVCB2YXIxOworICAgICAgIHZhcjEgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0KKyAzLjE0MTU5MjY1MzU4OTc5CisoMSByb3cpCisKK0NSRUFURSBWQVJJ QUJMRSB2YXIzIEFTIGludDsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitS RVRVUk5TIGludCBBUyAkJAorQkVHSU4KKyAgTEVUIHN2YXJ0ZXN0LnZhcjMgPSBDT0FMRVNDRShz dmFydGVzdC52YXIzICsgJDEsICQxKTsKKyAgUkVUVVJOIHZhcjM7CitFTkQ7CiskJCBMQU5HVUFH RSBwbHBnc3FsOworU0VMRUNUIGluYygxKTsKKyBpbmMgCistLS0tLQorICAgMQorKDEgcm93KQor CitTRUxFQ1QgaW5jKDEpOworIGluYyAKKy0tLS0tCisgICAyCisoMSByb3cpCisKK1NFTEVDVCBp bmMoMSk7CisgaW5jIAorLS0tLS0KKyAgIDMKKygxIHJvdykKKworU0VMRUNUIGluYygxKSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLDEwKTsKKyBpbmMgCistLS0tLQorICAgNAorICAgNQorICAgNgor ICAgNworICAgOAorICAgOQorICAxMAorICAxMQorICAxMgorICAxMworKDEwIHJvd3MpCisKK1NF VCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgZmFpbAorTEVUIHZhcjMgPSAwOwor RVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSB2YXIzCitTRVQg Uk9MRSBUTyBERUZBVUxUOworRFJPUCBWSUVXIHNjaGVtYV92YXJfdmlldzsKK0RST1AgVkFSSUFC TEUgdmFyMSBDQVNDQURFOworRFJPUCBWQVJJQUJMRSB2YXIzIENBU0NBREU7CistLSBjb21wb3Np dGUgdmFyaWFibGVzCitDUkVBVEUgVFlQRSBzdl94eXogQVMgKHggaW50LCB5IGludCwgeiBudW1l cmljKDEwLDIpKTsKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBzdl94eXo7CitDUkVBVEUgVkFSSUFC TEUgdjIgQVMgc3ZfeHl6OworXGQgdjEKK1xkIHYyCitMRVQgdjEgPSAoMSwyLDMuMTQpOworTEVU IHYyID0gKDEwLDIwLDMuMTQqMTApOworLS0gc2hvdWxkIHdvcmsgdG9vIC0gdGhlcmUgYXJlIHBy ZXBhcmVkIGNhc3RzCitMRVQgdjEgPSAoMSwyLDMuMTQpOworU0VMRUNUIHYxOworICAgICB2MSAg ICAgCistLS0tLS0tLS0tLS0KKyAoMSwyLDMuMTQpCisoMSByb3cpCisKK1NFTEVDVCB2MjsKKyAg ICAgIHYyICAgICAgIAorLS0tLS0tLS0tLS0tLS0tCisgKDEwLDIwLDMxLjQwKQorKDEgcm93KQor CitTRUxFQ1QgKHYxKS4qOworIHggfCB5IHwgIHogICAKKy0tLSstLS0rLS0tLS0tCisgMSB8IDIg fCAzLjE0CisoMSByb3cpCisKK1NFTEVDVCAodjIpLio7CisgeCAgfCB5ICB8ICAgeiAgIAorLS0t LSstLS0tKy0tLS0tLS0KKyAxMCB8IDIwIHwgMzEuNDAKKygxIHJvdykKKworU0VMRUNUIHYxLngg KyB2MS56OworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICA0LjE0CisoMSByb3cpCisKK1NF TEVDVCB2Mi54ICsgdjIuejsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICA0MS40MAorKDEg cm93KQorCistLSBhY2Nlc3MgdG8gY29tcG9zaXRlIGZpZWxkcyBzaG91bGQgYmUgc2FmZSB0b28K Ky0tIHNob3VsZCBmYWlsCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworU0VMRUNUIHYyLng7 CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzZXNzaW9uIHZhcmlhYmxlIHYyCitTRVQg Uk9MRSBUTyBERUZBVUxUOworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CitS RVZPS0UgVVNBR0UgT04gU0NIRU1BIHN2YXJ0ZXN0IEZST00gdmFyX3Rlc3Rfcm9sZTsKK0RST1Ag Uk9MRSB2YXJfdGVzdF9yb2xlOworLS0gc2NhbGFyIHZhcmlhYmxlcyBzaG91bGQgbm90IGJlIGlu IGNvbmZsaWN0IHdpdGggcXVhbGlmaWVkIGNvbHVtbgorQ1JFQVRFIFZBUklBQkxFIHZhcnggQVMg dGV4dDsKK1NFTEVDVCB2YXJ4LnJlbG5hbWUgRlJPTSBwZ19jbGFzcyB2YXJ4IFdIRVJFIHZhcngu cmVsbmFtZSA9ICdwZ19jbGFzcyc7CisgcmVsbmFtZSAgCistLS0tLS0tLS0tCisgcGdfY2xhc3MK KygxIHJvdykKKworLS0gc2hvdWxkIGZhaWwKK1NFTEVDVCB2YXJ4Lnh4eDsKK0VSUk9SOiAgbWlz c2luZyBGUk9NLWNsYXVzZSBlbnRyeSBmb3IgdGFibGUgInZhcngiCitMSU5FIDE6IFNFTEVDVCB2 YXJ4Lnh4eDsKKyAgICAgICAgICAgICAgIF4KKy0tIGRvbid0IGFsbG93IG11bHRpIGNvbHVtbiBx dWVyeQorQ1JFQVRFIFRZUEUgdmFydGVzdHRwIEFTIChhMSBpbnQsIGIxIGludCwgYzEgaW50KTsK K0NSRUFURSBWQVJJQUJMRSB2MSBBUyB2YXJ0ZXN0dHA7CistLSBzaG91bGQgZmFpbAorTEVUIHYx ID0gKE5VTEw6OnZhcnRlc3R0cCkuKjsKK0VSUk9SOiAgYXNzaWdubWVudCBleHByZXNzaW9uIHJl dHVybmVkIDMgY29sdW1ucworTElORSAxOiBMRVQgdjEgPSAoTlVMTDo6dmFydGVzdHRwKS4qOwor ICAgICAgICAgICAgICAgICAgXgorRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVFlQRSB2YXJ0ZXN0 dHA7CistLSB2YXJpYWJsZXMgY2FuIGJlIHVwZGF0ZWQgdW5kZXIgUk8gdHJhbnNhY3Rpb24KK0JF R0lOOworU0VUIFRSQU5TQUNUSU9OIFJFQUQgT05MWTsKK0xFVCB2YXJ4ID0gJ2hlbGxvJzsKK0NP TU1JVDsKK1NFTEVDVCB2YXJ4OworIHZhcnggIAorLS0tLS0tLQorIGhlbGxvCisoMSByb3cpCisK K0RST1AgVkFSSUFCTEUgdmFyeDsKK0NSRUFURSBUWVBFIHQxIEFTIChhIGludCwgYiBudW1lcmlj LCBjIHRleHQpOworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHQxOworTEVUIHYxID0gKDEsIHBpKCks ICdoZWxsbycpOworU0VMRUNUIHYxOworICAgICAgICAgICAgIHYxICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxLDMuMTQxNTkyNjUzNTg5NzksaGVsbG8pCiso MSByb3cpCisKK0xFVCB2MS5iID0gMTAuMjIyMjsKK1NFTEVDVCB2MTsKKyAgICAgICAgdjEgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSwxMC4yMjIyLGhlbGxvKQorKDEgcm93KQor CistLSBzaG91bGQgZmFpbAorTEVUIHYxLnggPSAxMDsKK0VSUk9SOiAgY2Fubm90IGFzc2lnbiB0 byBmaWVsZCAieCIgb2YgY29sdW1uICJ2MSIgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIGNvbHVt biBpbiBkYXRhIHR5cGUgdDEKK0xJTkUgMTogTEVUIHYxLnggPSAxMDsKKyAgICAgICAgICAgIF4K K0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFRZUEUgdDE7CistLSBhcnJheXMgYXJlIHN1cHBvcnRl ZAorQ1JFQVRFIFZBUklBQkxFIHZhMSBBUyBudW1lcmljW107CitMRVQgdmExID0gQVJSQVlbMS4x LDIuMV07CitMRVQgdmExWzFdID0gMTAuMTsKK1NFTEVDVCB2YTE7CisgICAgdmExICAgICAKKy0t LS0tLS0tLS0tLQorIHsxMC4xLDIuMX0KKygxIHJvdykKKworQ1JFQVRFIFRZUEUgdGEyIEFTIChh IG51bWVyaWMsIGIgbnVtZXJpY1tdKTsKK0NSRUFURSBWQVJJQUJMRSB2YTIgQVMgdGEyOworTEVU IHZhMiA9ICgxMC4xLCBBUlJBWVswLjAsIDAuMF0pOworTEVUIHZhMi5hID0gMTAuMjsKK1NFTEVD VCB2YTI7CisgICAgICAgIHZhMiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMTAu MiwiezAuMCwwLjB9IikKKygxIHJvdykKKworTEVUIHZhMi5iWzFdID0gMTAuMzsKK1NFTEVDVCB2 YTI7CisgICAgICAgICB2YTIgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxMC4y LCJ7MTAuMywwLjB9IikKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2YTE7CitEUk9QIFZBUklB QkxFIHZhMjsKK0RST1AgVFlQRSB0YTI7CistLSBkZWZhdWx0IHZhbHVlcworQ1JFQVRFIFZBUklB QkxFIHYxIEFTIG51bWVyaWMgREVGQVVMVCBwaSgpOworTEVUIHYxID0gdjEgKiAyOworU0VMRUNU IHYxOworICAgICAgICB2MSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyA2LjI4MzE4NTMw NzE3OTU4CisoMSByb3cpCisKK0NSRUFURSBUWVBFIHQyIEFTIChhIG51bWVyaWMsIGIgdGV4dCk7 CitDUkVBVEUgVkFSSUFCTEUgdjIgQVMgdDIgREVGQVVMVCAoTlVMTCwgJ0hlbGxvJyk7CitMRVQg c3ZhcnRlc3QudjIuYSA9IHBpKCk7CitTRUxFQ1QgdjI7CisgICAgICAgICAgICB2MiAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMy4xNDE1OTI2NTM1ODk3OSxIZWxs bykKKygxIHJvdykKKworLS0gc2hvdWxkIGZhaWwgZHVlIGRlcGVuZGVuY3kKK0RST1AgVFlQRSB0 MjsKK0VSUk9SOiAgY2Fubm90IGRyb3AgdHlwZSB0MiBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVw ZW5kIG9uIGl0CitERVRBSUw6ICBzZXNzaW9uIHZhcmlhYmxlIHYyIGRlcGVuZHMgb24gdHlwZSB0 MgorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmpl Y3RzIHRvby4KKy0tIHNob3VsZCBiZSBvaworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFC TEUgdjI7CistLSB0ZXN0cyBvZiBhbHRlcnMKK0NSRUFURSBTQ0hFTUEgdmFyX3NjaGVtYTE7CitD UkVBVEUgU0NIRU1BIHZhcl9zY2hlbWEyOworQ1JFQVRFIFZBUklBQkxFIHZhcl9zY2hlbWExLnZh cjEgQVMgaW50ZWdlcjsKK0xFVCB2YXJfc2NoZW1hMS52YXIxID0gMTAwMDsKK1NFTEVDVCB2YXJf c2NoZW1hMS52YXIxOworIHZhcjEgCistLS0tLS0KKyAxMDAwCisoMSByb3cpCisKK0FMVEVSIFZB UklBQkxFIHZhcl9zY2hlbWExLnZhcjEgU0VUIFNDSEVNQSB2YXJfc2NoZW1hMjsKK1NFTEVDVCB2 YXJfc2NoZW1hMi52YXIxOworIHZhcjEgCistLS0tLS0KKyAxMDAwCisoMSByb3cpCisKK0NSRUFU RSBST0xFIHZhcl90ZXN0X3JvbGU7CitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxIE9X TkVSIFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hv dWxkIGZhaWwsIG5vIGFjY2VzcyB0byBzY2hlbWEgdmFyX3NjaGVtYTIudmFyCitTRUxFQ1QgdmFy X3NjaGVtYTIudmFyMTsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJf c2NoZW1hMgorRFJPUCBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxOworRVJST1I6ICBwZXJtaXNz aW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcl9zY2hlbWEyCitTRVQgUk9MRSBUTyBERUZBVUxUOwor QUxURVIgVkFSSUFCTEUgdmFyX3NjaGVtYTIudmFyMSBTRVQgU0NIRU1BIHB1YmxpYzsKK1NFVCBS T0xFIFRPIHZhcl90ZXN0X3JvbGU7CitTRUxFQ1QgcHVibGljLnZhcjE7CisgdmFyMSAKKy0tLS0t LQorIDEwMDAKKygxIHJvdykKKworQUxURVIgVkFSSUFCTEUgcHVibGljLnZhcjEgUkVOQU1FIFRP IHZhcjFfcmVuYW1lZDsKK1NFTEVDVCBwdWJsaWMudmFyMV9yZW5hbWVkOworIHZhcjFfcmVuYW1l ZCAKKy0tLS0tLS0tLS0tLS0tCisgICAgICAgICAxMDAwCisoMSByb3cpCisKK0RST1AgVkFSSUFC TEUgcHVibGljLnZhcjFfcmVuYW1lZDsKK1NFVCBST0xFIFRPIERFRkFVTHQ7CistLSBkZWZhdWx0 IHJpZ2h0cyB0ZXN0CitBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMgSU4gU0NIRU1BIHB1YmxpYyBH UkFOVCBBTEwgT04gVkFSSUFCTEVTIFRPIHZhcl90ZXN0X3JvbGU7CitDUkVBVEUgVkFSSUFCTEUg cHVibGljLnZhcjIgQVMgaW50OworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3Vs ZCBiZSBvaworTEVUIHB1YmxpYy52YXIyID0gMTAwOworU0VMRUNUIHB1YmxpYy52YXIyOworIHZh cjIgCistLS0tLS0KKyAgMTAwCisoMSByb3cpCisKK1NFVCBST0xFIFRPIERFRkFVTHQ7CitEUk9Q IFZBUklBQkxFIHB1YmxpYy52YXIyOworRFJPUCBPV05FRCBCWSB2YXJfdGVzdF9yb2xlOworRFJP UCBST0xFIHZhcl90ZXN0X3JvbGU7CitDUkVBVEUgVkFSSUFCTEUgeHggQVMgdGV4dCBERUZBVUxU ICdoZWxsbyc7CitTRUxFQ1QgeHgsIHVwcGVyKHh4KTsKKyAgeHggICB8IHVwcGVyIAorLS0tLS0t LSstLS0tLS0tCisgaGVsbG8gfCBIRUxMTworKDEgcm93KQorCitMRVQgeHggPSAnSGknOworU0VM RUNUIHh4OworIHh4IAorLS0tLQorIEhpCisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgeHg7Cist LSBPTiBUUkFOU0FDVElPTiBFTkQgUkVTRVQgdGVzdHMKK0NSRUFURSBWQVJJQUJMRSB0MSBBUyBp bnQgREVGQVVMVCAtMSBPTiBUUkFOU0FDVElPTiBFTkQgUkVTRVQ7CitCRUdJTjsKKyAgU0VMRUNU IHQxOworIHQxIAorLS0tLQorIC0xCisoMSByb3cpCisKKyAgTEVUIHQxID0gMTAwOworICBTRUxF Q1QgdDE7CisgdDEgIAorLS0tLS0KKyAxMDAKKygxIHJvdykKKworQ09NTUlUOworU0VMRUNUIHQx OworIHQxIAorLS0tLQorIC0xCisoMSByb3cpCisKK0JFR0lOOworICBTRUxFQ1QgdDE7CisgdDEg CistLS0tCisgLTEKKygxIHJvdykKKworICBMRVQgdDEgPSAxMDA7CisgIFNFTEVDVCB0MTsKKyB0 MSAgCistLS0tLQorIDEwMAorKDEgcm93KQorCitST0xMQkFDSzsKK1NFTEVDVCB0MTsKKyB0MSAK Ky0tLS0KKyAtMQorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHQxOworQ1JFQVRFIFZBUklBQkxF IHYxIEFTIGludCBERUZBVUxUIDA7CitDUkVBVEUgVkFSSUFCTEUgdjIgQVMgdGV4dCBERUZBVUxU ICdub25lJzsKK0xFVCB2MSA9IDEwMDsKK0xFVCB2MiA9ICdIZWxsbyc7CitTRUxFQ1QgdjEsIHYy OworIHYxICB8ICB2MiAgIAorLS0tLS0rLS0tLS0tLQorIDEwMCB8IEhlbGxvCisoMSByb3cpCisK K0xFVCB2MSA9IERFRkFVTFQ7CitMRVQgdjIgPSBERUZBVUxUOworU0VMRUNUIHYxLCB2MjsKKyB2 MSB8ICB2MiAgCistLS0tKy0tLS0tLQorICAwIHwgbm9uZQorKDEgcm93KQorCitEUk9QIFZBUklB QkxFIHYxOworRFJPUCBWQVJJQUJMRSB2MjsKKy0tIE9OIENPTU1JVCBEUk9QIHRlc3RzCistLSBz aG91bGQgYmUgMCBhbHdheXMKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ZhcmlhYmxlOworIGNv dW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK0NSRUFURSBURU1QIFZBUklBQkxFIGcg QVMgaW50IE9OIENPTU1JVCBEUk9QOworU0VMRUNUIGNvdW50KCopIEZST00gcGdfdmFyaWFibGU7 CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworQkVHSU47CisgIENSRUFURSBU RU1QIFZBUklBQkxFIGcgQVMgaW50IE9OIENPTU1JVCBEUk9QOworQ09NTUlUOworU0VMRUNUIGNv dW50KCopIEZST00gcGdfdmFyaWFibGU7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJv dykKKworQkVHSU47CisgIENSRUFURSBURU1QIFZBUklBQkxFIGcgQVMgaW50IE9OIENPTU1JVCBE Uk9QOworUk9MTEJBQ0s7CitTRUxFQ1QgY291bnQoKikgRlJPTSBwZ192YXJpYWJsZTsKKyBjb3Vu dCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCitCRUdJTjsKKyAgQ1JFQVRFIFRFTVAgVkFS SUFCTEUgZyBBUyBpbnQgT04gQ09NTUlUIERST1A7CisgIExFVCBnID0gMTsKKyAgRElTQ0FSRCBW QVJJQUJMRVM7CitDT01NSVQ7CitTRUxFQ1QgY291bnQoKikgRlJPTSBwZ192YXJpYWJsZTsKKyBj b3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCitCRUdJTjsKKyAgQ1JFQVRFIFRFTVAg VkFSSUFCTEUgZyBBUyBpbnQgT04gQ09NTUlUIERST1A7CisgIExFVCBnID0gMTsKKyAgRElTQ0FS RCBWQVJJQUJMRVM7CitST0xMQkFDSzsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ZhcmlhYmxl OworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKKy0tIEVuY291cmFnZSB1c2Ug b2YgcGFyYWxsZWwgcGxhbnMKK1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK1NFVCBwYXJh bGxlbF90dXBsZV9jb3N0ID0gMDsKK1NFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0g MDsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKKy0tIHRlc3Qgb24g cXVlcnkgd2l0aCB3b3JrZXJzCitDUkVBVEUgVEFCTEUgc3Zhcl90ZXN0KGEgaW50KTsKK0lOU0VS VCBJTlRPIHN2YXJfdGVzdCBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDApOwor QU5BTFlaRSBzdmFyX3Rlc3Q7CitDUkVBVEUgVkFSSUFCTEUgemVybyBpbnQ7CitMRVQgemVybyA9 IDA7CistLSBwYXJhbGxlbCB3b3JrZXJzIHNob3VsZCBiZSB1c2VkCitFWFBMQUlOIChjb3N0cyBv ZmYpIFNFTEVDVCBjb3VudCgqKSBGUk9NIHN2YXJfdGVzdCBXSEVSRSBhJTEwID0gemVybzsKKyAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhl cgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFyYWxsZWwgU2Vx IFNjYW4gb24gc3Zhcl90ZXN0CisgICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSAlIDEwKSA9IHpl cm8pCisoNSByb3dzKQorCistLSByZXN1bHQgc2hvdWxkIGJlIDEwMAorU0VMRUNUIGNvdW50KCop IEZST00gc3Zhcl90ZXN0IFdIRVJFIGElMTAgPSB6ZXJvOworIGNvdW50IAorLS0tLS0tLQorICAg MTAwCisoMSByb3cpCisKK0xFVCB6ZXJvID0gKFNFTEVDVCBjb3VudCgqKSBGUk9NIHN2YXJfdGVz dCk7CistLSByZXN1bHQgc2hvdWxkIGJlIDEwMDAKK1NFTEVDVCB6ZXJvOworIHplcm8gCistLS0t LS0KKyAxMDAwCisoMSByb3cpCisKKy0tIHBhcmFsbGVsIHdvcmtlcnMgc2hvdWxkIGJlIHVzZWQK K0VYUExBSU4gKGNvc3RzIG9mZikgTEVUIHplcm8gPSAoU0VMRUNUIGNvdW50KCopIEZST00gc3Zh cl90ZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTRVQgU0VTU0lPTiBWQVJJQUJMRQorIFJlc3VsdAorICAgSW5pdFBs YW4gMSAocmV0dXJucyAkMSkKKyAgICAgLT4gIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgICAgICAg ICAtPiAgR2F0aGVyCisgICAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAg ICAgICAgICAgICAtPiAgUGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHN2YXJfdGVzdAorKDggcm93cykKKworLS0gdGVzdCBm b3IgZGVwZW5kZW5jeSBvbiByZWxhdGlvbgorQ1JFQVRFIFZBUklBQkxFIHZfdGFibGUgQVMgc3Zh cl90ZXN0OworQUxURVIgVEFCTEUgc3Zhcl90ZXN0IEFMVEVSIENPTFVNTiBhIFRZUEUgdGV4dDsK K0VSUk9SOiAgY2Fubm90IGFsdGVyIHRhYmxlICJzdmFyX3Rlc3QiIGJlY2F1c2Ugc2Vzc2lvbiB2 YXJpYWJsZSAic3ZhcnRlc3Qudl90YWJsZSIgdXNlcyBpdAorRFJPUCBWQVJJQUJMRSB2X3RhYmxl OworRFJPUCBUQUJMRSBzdmFyX3Rlc3Q7CitEUk9QIFZBUklBQkxFIHplcm87CitSRVNFVCBwYXJh bGxlbF9zZXR1cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVfY29zdDsKK1JFU0VUIG1pbl9w YXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJf Z2F0aGVyOworLS0gdXNlIHZhcmlhYmxlcyBpbiBwcmVwYXJlZCBzdGF0ZW1lbnRzCitDUkVBVEUg VkFSSUFCTEUgdiBBUyBudW1lcmljOworTEVUIHYgPSAzLjE0OworLS0gdXNlIHZhcmlhYmxlcyBp biB2aWV3cworQ1JFQVRFIFZJRVcgdnYgQVMgU0VMRUNUIENPQUxFU0NFKHYsIDApICsgMTAwMCBB UyByZXN1bHQ7CitTRUxFQ1QgKiBGUk9NIHZ2OworIHJlc3VsdCAgCistLS0tLS0tLS0KKyAxMDAz LjE0CisoMSByb3cpCisKKy0tIHN0YXJ0IGEgbmV3IHNlc3Npb24KK1xjCitTRVQgc2VhcmNoX3Bh dGggdG8gc3ZhcnRlc3Q7CitTRUxFQ1QgKiBGUk9NIHZ2OworIHJlc3VsdCAKKy0tLS0tLS0tCisg ICAxMDAwCisoMSByb3cpCisKK0xFVCB2ID0gMy4xNDsKK1NFTEVDVCAqIEZST00gdnY7CisgcmVz dWx0ICAKKy0tLS0tLS0tLQorIDEwMDMuMTQKKygxIHJvdykKKworLS0gc2hvdWxkIGZhaWwsIGRl cGVuZGVuY3kKK0RST1AgVkFSSUFCTEUgdjsKK0VSUk9SOiAgY2Fubm90IGRyb3Agc2Vzc2lvbiB2 YXJpYWJsZSB2IGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHZp ZXcgdnYgZGVwZW5kcyBvbiBzZXNzaW9uIHZhcmlhYmxlIHYKK0hJTlQ6ICBVc2UgRFJPUCAuLi4g Q0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCistLSBzaG91bGQgYmUg b2sKK0RST1AgVkFSSUFCTEUgdiBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byB2 aWV3IHZ2CistLSBvdGhlciBmZWF0dXJlcworQ1JFQVRFIFZBUklBQkxFIGR0IEFTIGludGVnZXIg REVGQVVMVCAwOworTEVUIGR0ID0gMTAwOworU0VMRUNUIGR0OworIGR0ICAKKy0tLS0tCisgMTAw CisoMSByb3cpCisKK0RJU0NBUkQgVkFSSUFCTEVTOworU0VMRUNUIGR0OworIGR0IAorLS0tLQor ICAwCisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgZHQ7CistLSBOT1QgTlVMTAorQ1JFQVRFIFZB UklBQkxFIHYxIEFTIGludCBOT1QgTlVMTDsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyBpbnQgTk9U IE5VTEwgREVGQVVMVCBOVUxMOworLS0gc2hvdWxkIGZhaWwKK1NFTEVDVCB2MTsKK0VSUk9SOiAg bnVsbCB2YWx1ZSBpcyBub3QgYWxsb3dlZCBmb3IgTk9UIE5VTEwgc2Vzc2lvbiB2YXJpYWJsZSAi c3ZhcnRlc3QudjEiCitERVRBSUw6ICBUaGUgc2Vzc2lvbiB2YXJpYWJsZSB3YXMgbm90IGluaXRp YWxpemVkIHlldC4KK1NFTEVDVCB2MjsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpcyBub3QgYWxsb3dl ZCBmb3IgTk9UIE5VTEwgc2Vzc2lvbiB2YXJpYWJsZSAic3ZhcnRlc3QudjIiCitMRVQgdjEgPSBO VUxMOworRVJST1I6ICBudWxsIHZhbHVlIGlzIG5vdCBhbGxvd2VkIGZvciBOT1QgTlVMTCBzZXNz aW9uIHZhcmlhYmxlICJzdmFydGVzdC52MSIKK0xFVCB2MiA9IE5VTEw7CitFUlJPUjogIG51bGwg dmFsdWUgaXMgbm90IGFsbG93ZWQgZm9yIE5PVCBOVUxMIHNlc3Npb24gdmFyaWFibGUgInN2YXJ0 ZXN0LnYyIgorTEVUIHYxID0gREVGQVVMVDsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpcyBub3QgYWxs b3dlZCBmb3IgTk9UIE5VTEwgc2Vzc2lvbiB2YXJpYWJsZSAic3ZhcnRlc3QudjEiCitMRVQgdjIg PSBERUZBVUxUOworRVJST1I6ICBudWxsIHZhbHVlIGlzIG5vdCBhbGxvd2VkIGZvciBOT1QgTlVM TCBzZXNzaW9uIHZhcmlhYmxlICJzdmFydGVzdC52MiIKKy0tIHNob3VsZCBiZSBvaworTEVUIHYx ID0gMTAwOworTEVUIHYyID0gMTAwMDsKK1NFTEVDVCB2MSwgdjI7CisgdjEgIHwgIHYyICAKKy0t LS0tKy0tLS0tLQorIDEwMCB8IDEwMDAKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2MTsKK0RS T1AgVkFSSUFCTEUgdjI7CitDUkVBVEUgVkFSSUFCTEUgdHYgQVMgaW50OworQ1JFQVRFIFZBUklB QkxFIElGIE5PVCBFWElTVFMgdHYgQVMgaW50OworTk9USUNFOiAgc2Vzc2lvbiB2YXJpYWJsZSAi dHYiIGFscmVhZHkgZXhpc3RzLCBza2lwcGluZworRFJPUCBWQVJJQUJMRSB0djsKK0NSRUFURSBJ TU1VVEFCTEUgVkFSSUFCTEUgaXYgQVMgaW50IERFRkFVTFQgMTAwOworU0VMRUNUIGl2OworIGl2 ICAKKy0tLS0tCisgMTAwCisoMSByb3cpCisKKy0tIHNob3VsZCBmYWlsOworTEVUIGl2ID0gMTAw MDA7CitFUlJPUjogIHNlc3Npb24gdmFyaWFibGUgInN2YXJ0ZXN0Lml2IiBpcyBkZWNsYXJlZCBJ TU1VVEFCTEUKK0RST1AgVkFSSUFCTEUgaXY7CistLSBkaWZmZXJlbnQgb3JkZXIKK0NSRUFURSBJ TU1VVEFCTEUgVkFSSUFCTEUgaXYgQVMgaW50IERFRkFVTFQgMTAwOworLS0gc2hvdWxkIHRvIGZh aWwKK0xFVCBpdiA9IDEwMDAwOworRVJST1I6ICBzZXNzaW9uIHZhcmlhYmxlICJzdmFydGVzdC5p diIgaXMgZGVjbGFyZWQgSU1NVVRBQkxFCistLSBzaG91bGQgYmUgb2sKK1NFTEVDVCBpdjsKKyBp diAgCistLS0tLQorIDEwMAorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIGl2OworQ1JFQVRFIElN TVVUQUJMRSBWQVJJQUJMRSBpdiBBUyBpbnQ7CistLSBzaG91bGQgYmUgb2sKK0xFVCBpdiA9IE5V TEw7CistLSBzaG91bGQgZmFpbAorTEVUIGl2ID0gTlVMTDsKK0VSUk9SOiAgc2Vzc2lvbiB2YXJp YWJsZSAic3ZhcnRlc3QuaXYiIGlzIGRlY2xhcmVkIElNTVVUQUJMRQorRFJPUCBWQVJJQUJMRSBp djsKKy0tIGNyZWF0ZSB2YXJpYWJsZSBpbnNpZGUgcGxwZ3NxbCBibG9jaworRE8gJCQKK0JFR0lO CisgIENSRUFURSBWQVJJQUJMRSBkb190ZXN0X3N2YXIgQVMgZGF0ZSBERUZBVUxUICcyMDAwLTAx LTAxJzsKK0VORDsKKyQkOworU0VMRUNUIGRvX3Rlc3Rfc3ZhcjsKKyBkb190ZXN0X3N2YXIgCist LS0tLS0tLS0tLS0tLQorIDAxLTAxLTIwMDAKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSBkb190 ZXN0X3N2YXI7CistLSBzaG91bGQgZmFpbAorQ1JFQVRFIElNTVVUQUJMRSBWQVJJQUJMRSB4eCBB UyBpbnQgTk9UIE5VTEw7CitFUlJPUjogIElNTVVUQUJMRSBOT1QgTlVMTCB2YXJpYWJsZSByZXF1 aXJlcyBkZWZhdWx0IGV4cHJlc3Npb24KKy0tIFJFQVNTSUdOIE9XTkVEIHRlc3QKK0NSRUFURSBS T0xFIHZhcl90ZXN0X3JvbGUxOworQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTI7CitDUkVBVEUg VkFSSUFCTEUgeHh4X3ZhciBBUyBpbnQ7CitBTFRFUiBWQVJJQUJMRSB4eHhfdmFyIE9XTkVSIFRP IHZhcl90ZXN0X3JvbGUxOworUkVBU1NJR04gT1dORUQgQlkgdmFyX3Rlc3Rfcm9sZTEgdG8gdmFy X3Rlc3Rfcm9sZTI7CitTRUxFQ1QgdmFyb3duZXI6OnJlZ3JvbGUgRlJPTSBwZ192YXJpYWJsZSBX SEVSRSB2YXJuYW1lID0gJ3h4eF92YXInOworICAgIHZhcm93bmVyICAgIAorLS0tLS0tLS0tLS0t LS0tLQorIHZhcl90ZXN0X3JvbGUyCisoMSByb3cpCisKK0RST1AgT1dORUQgQlkgdmFyX3Rlc3Rf cm9sZTE7CitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTE7CitTRUxFQ1QgY291bnQoKikgRlJPTSBw Z192YXJpYWJsZSBXSEVSRSB2YXJuYW1lID0gJ3h4eF92YXInOworIGNvdW50IAorLS0tLS0tLQor ICAgICAxCisoMSByb3cpCisKK0RST1AgT1dORUQgQlkgdmFyX3Rlc3Rfcm9sZTI7CitEUk9QIFJP TEUgdmFyX3Rlc3Rfcm9sZTI7CitTRUxFQ1QgY291bnQoKikgRlJPTSBwZ192YXJpYWJsZSBXSEVS RSB2YXJuYW1lID0gJ3h4eF92YXInOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cp CisKKy0tIGNyZWF0aW5nLCBkcm9wcGluZyB0ZW1wb3JhcnkgdmFyaWFibGUKK0JFR0lOOworQ1JF QVRFIFRFTVAgVkFSSUFCTEUgdGVtcHZhciBBUyBJTlQgT04gQ09NTUlUIERST1A7CitMRVQgdGVt cHZhciA9IDEwMDsKK1NBVkVQT0lOVCBzMTsKK0RST1AgVkFSSUFCTEUgdGVtcHZhcjsKK1JPTExC QUNLIFRPIHMxOworU0VMRUNUIHRlbXB2YXI7CisgdGVtcHZhciAKKy0tLS0tLS0tLQorICAgICAx MDAKKygxIHJvdykKKworQ09NTUlUOworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB0ZW1wdmFyID0g MTAwOworRVJST1I6ICBzZXNzaW9uIHZhcmlhYmxlICJ0ZW1wdmFyIiBkb2Vzbid0IGV4aXN0CitM SU5FIDE6IExFVCB0ZW1wdmFyID0gMTAwOworICAgICAgICAgICAgXgorQkVHSU47CitTQVZFUE9J TlQgczE7CitDUkVBVEUgVEVNUCBWQVJJQUJMRSB0ZW1wdmFyIEFTIElOVCBPTiBDT01NSVQgRFJP UDsKK0xFVCB0ZW1wdmFyID0gMTAwOworUk9MTEJBQ0sgVE8gczE7CitDT01NSVQ7CistLSBzaG91 bGQgdG8gZmFpbAorTEVUIHRlbXB2YXIgPSAxMDA7CitFUlJPUjogIHNlc3Npb24gdmFyaWFibGUg InRlbXB2YXIiIGRvZXNuJ3QgZXhpc3QKK0xJTkUgMTogTEVUIHRlbXB2YXIgPSAxMDA7CisgICAg ICAgICAgICBeCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnQ7CitMRVQgdmFyMSA9IDEwMDsK K0JFR0lOOworRFJPUCBWQVJJQUJMRSB2YXIxOworUk9MTEJBQ0s7CitTRUxFQ1QgdmFyMTsKKyB2 YXIxIAorLS0tLS0tCisgIDEwMAorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHZhcjE7CitDUkVB VEUgVkFSSUFCTEUgdmFyMSBBUyBpbnQgREVGQVVMVCAxMDA7CitDT01NRU5UIE9OIFZBUklBQkxF IHZhcjEgSVMgJ3NvbWUgdmFyaWFibGUgY29tbWVudCc7CitTRUxFQ1QgcGdfY2F0YWxvZy5vYmpf ZGVzY3JpcHRpb24ob2lkLCAncGdfdmFyaWFibGUnKSBGUk9NIHBnX3ZhcmlhYmxlIFdIRVJFIHZh cm5hbWUgPSAndmFyMSc7CisgICAgb2JqX2Rlc2NyaXB0aW9uICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBzb21lIHZhcmlhYmxlIGNvbW1lbnQKKygxIHJvdykKKworRFJPUCBWQVJJQUJM RSB2YXIxOworQ1JFQVRFIFRBQkxFIHh4dGFiKGF2YXIgaW50KTsKK0NSRUFURSBUWVBFIHh4dHlw ZSBBUyAoYXZhciBpbnQpOworQ1JFQVRFIFZBUklBQkxFIHh4dGFiIEFTIHh4dHlwZTsKK0lOU0VS VCBJTlRPIHh4dGFiIFZBTFVFUygxMCk7CistLSBpdCBpcyBhbWJpZ3VvdXMsIGJ1dCBjb2x1bW5z IGFyZSBwcmVmZXJyZWQKKy0tIHZhcmlhYmxlIGlzIHNoYWRvd2VkCitTRUxFQ1QgeHh0YWIuYXZh ciBGUk9NIHh4dGFiOworIGF2YXIgCistLS0tLS0KKyAgIDEwCisoMSByb3cpCisKK1NFVCBzZXNz aW9uX3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2FybmluZyBUTyBvbjsKK1NFTEVDVCB4eHRhYi5hdmFy IEZST00geHh0YWI7CitXQVJOSU5HOiAgc2Vzc2lvbiB2YXJpYWJsZSAieHh0YWIuYXZhciIgaXMg c2hhZG93ZWQKK0xJTkUgMTogU0VMRUNUIHh4dGFiLmF2YXIgRlJPTSB4eHRhYjsKKyAgICAgICAg ICAgICAgIF4KK0RFVEFJTDogIFNlc3Npb24gdmFyaWFibGVzIGNhbiBiZSBzaGFkb3dlZCBieSBj b2x1bW5zLCByb3V0aW5lJ3MgdmFyaWFibGVzIGFuZCByb3V0aW5lJ3MgYXJndW1lbnRzIHdpdGgg dGhlIHNhbWUgbmFtZS4KKyBhdmFyIAorLS0tLS0tCisgICAxMAorKDEgcm93KQorCitTRVQgc2Vh cmNoX3BhdGggPSBzdmFydGVzdDsKK0NSRUFURSBWQVJJQUJMRSB0ZXN0dmFyIGFzIGludDsKKy0t IHBscGdzcWwgdmFyaWFibGVzIGFyZSBwcmVmZXJyZWQgYWdhaW5zdCBzZXNzaW9uIHZhcmlhYmxl cworRE8gJCQKKzw8bXlibG9jaz4+CitERUNMQVJFIHRlc3R2YXIgaW50OworQkVHSU4KKyAgLS0g c2hvdWxkIGJlIG9rIHdpdGhvdXQgd2FybmluZworICBMRVQgdGVzdHZhciA9IDEwMDsKKyAgLS0g c2hvdWxkIGJlIG9rIHdpdGhvdXQgd2FybmluZworICB0ZXN0dmFyIDo9IDEwMDA7CisgIC0tIHNo b3VsZCBiZSBvayB3aXRob3V0IHdhcm5pbmcKKyAgUkFJU0UgTk9USUNFICdzZXNzaW9uIHZhcmlh YmxlIGlzICUnLCBzdmFydGVzdC50ZXN0dmFyOworICAtLSBzaG91bGQgYmUgb2sgd2l0aG91dCB3 YXJuaW5nCisgIFJBSVNFIE5PVElDRSAncGxwZ3NxbCB2YXJpYWJsZSBpcyAlJywgbXlibG9jay50 ZXN0dmFyOworICAtLSBzaG91bGQgdG8gcHJpbnQgcGxwZ3NxbCB2YXJpYWJsZSB3aXRoIHdhcm5p bmcKKyAgUkFJU0UgTk9USUNFICd2YXJpYWJsZSBpcyAlJywgdGVzdHZhcjsKK0VORDsKKyQkOwor V0FSTklORzogIHNlc3Npb24gdmFyaWFibGUgInRlc3R2YXIiIGlzIHNoYWRvd2VkCitMSU5FIDE6 IHRlc3R2YXIgOj0gMTAwMAorICAgICAgICBeCitERVRBSUw6ICBTZXNzaW9uIHZhcmlhYmxlcyBj YW4gYmUgc2hhZG93ZWQgYnkgY29sdW1ucywgcm91dGluZSdzIHZhcmlhYmxlcyBhbmQgcm91dGlu ZSdzIGFyZ3VtZW50cyB3aXRoIHRoZSBzYW1lIG5hbWUuCitRVUVSWTogIHRlc3R2YXIgOj0gMTAw MAorTk9USUNFOiAgc2Vzc2lvbiB2YXJpYWJsZSBpcyAxMDAKK05PVElDRTogIHBscGdzcWwgdmFy aWFibGUgaXMgMTAwMAorV0FSTklORzogIHNlc3Npb24gdmFyaWFibGUgInRlc3R2YXIiIGlzIHNo YWRvd2VkCitMSU5FIDE6IHRlc3R2YXIKKyAgICAgICAgXgorREVUQUlMOiAgU2Vzc2lvbiB2YXJp YWJsZXMgY2FuIGJlIHNoYWRvd2VkIGJ5IGNvbHVtbnMsIHJvdXRpbmUncyB2YXJpYWJsZXMgYW5k IHJvdXRpbmUncyBhcmd1bWVudHMgd2l0aCB0aGUgc2FtZSBuYW1lLgorUVVFUlk6ICB0ZXN0dmFy CitOT1RJQ0U6ICB2YXJpYWJsZSBpcyAxMDAwCitEUk9QIFZBUklBQkxFIHRlc3R2YXI7CitTRVQg c2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5pbmcgVE8gZGVmYXVsdDsKKy0tIHNob3Vs ZCBiZSBvaworU0VMRUNUIGF2YXIgRlJPTSB4eHRhYjsKKyBhdmFyIAorLS0tLS0tCisgICAxMAor KDEgcm93KQorCitDUkVBVEUgVkFSSUFCTEUgcHVibGljLmF2YXIgQVMgaW50OworLS0gc2hvdWxk IGJlIG9rLCBzZWUgdGhlIHRhYmxlCitTRUxFQ1QgYXZhciBGUk9NIHh4dGFiOworIGF2YXIgCist LS0tLS0KKyAgIDEwCisoMSByb3cpCisKKy0tIHNob3VsZCBiZSBvaworU0VMRUNUIHB1YmxpYy5h dmFyIEZST00geHh0YWI7CisgYXZhciAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworRFJPUCBW QVJJQUJMRSB4eHRhYjsKK1NFTEVDVCB4eHRhYi5hdmFyIEZST00geHh0YWI7CisgYXZhciAKKy0t LS0tLQorICAgMTAKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMuYXZhcjsKK0RST1Ag VFlQRSB4eHR5cGU7CitEUk9QIFRBQkxFIHh4dGFiOworLS0gdGVzdCBvZiBwbGFuIGNhY2hlIGlu dmFsaWRhdGlvbgorQ1JFQVRFIFZBUklBQkxFIHh4IEFTIGludDsKK1NFVCBwbGFuX2NhY2hlX21v ZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CitQUkVQQVJFIHBwIEFTIFNFTEVDVCB4eDsKK0VYRUNV VEUgcHA7CisgeHggCistLS0tCisgICAKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB4eDsKK0NS RUFURSBWQVJJQUJMRSB4eCBBUyBpbnQ7CistLSBzaG91bGQgdG8gd29yaworRVhFQ1VURSBwcDsK KyB4eCAKKy0tLS0KKyAgIAorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHh4OworREVBTExPQ0FU RSBwcDsKK1NFVCBwbGFuX2NhY2hlX21vZGUgPSBERUZBVUxUOworQ1JFQVRFIFJPTEUgdmFyX3Rl c3Rfcm9sZTsKK0NSRUFURSBTQ0hFTUEgdmFydGVzdDsKK0dSQU5UIFVTQUdFIE9OIFNDSEVNQSB2 YXJ0ZXN0IFRPIHZhcl90ZXN0X3JvbGU7CitDUkVBVEUgVkFSSUFCTEUgdmFydGVzdC54IEFTIGlu dDsKK0NSRUFURSBWQVJJQUJMRSB2YXJ0ZXN0LnkgQVMgaW50OworTEVUIHZhcnRlc3QueCA9IDEw MDsKK0xFVCB2YXJ0ZXN0LnkgPSAxMDE7CitHUkFOVCBTRUxFQ1QgT04gQUxMIFZBUklBQkxFUyBJ TiBTQ0hFTUEgdmFydGVzdCBUTyB2YXJfdGVzdF9yb2xlOworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rf cm9sZTsKK1NFTEVDVCB2YXJ0ZXN0LngsIHZhcnRlc3QueTsKKyAgeCAgfCAgeSAgCistLS0tLSst LS0tLQorIDEwMCB8IDEwMQorKDEgcm93KQorCitTRVQgUk9MRSBUTyBERUZBVUxUOworUkVWT0tF IFNFTEVDVCBPTiBBTEwgVkFSSUFCTEVTIElOIFNDSEVNQSB2YXJ0ZXN0IEZST00gdmFyX3Rlc3Rf cm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VM RUNUIHZhcnRlc3QueDsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNlc3Npb24gdmFy aWFibGUgeAorU0VMRUNUIHZhcnRlc3QueTsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9y IHNlc3Npb24gdmFyaWFibGUgeQorU0VUIFJPTEUgVE8gREVGQVVMVDsKK0RST1AgVkFSSUFCTEUg dmFydGVzdC54LCB2YXJ0ZXN0Lnk7CitEUk9QIFNDSEVNQSB2YXJ0ZXN0OworRFJPUCBST0xFIHZh cl90ZXN0X3JvbGU7CistLSB0ZXN0IGNhY2hlZCBwbGFuCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMg dGV4dDsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyBpbnQ7CitDUkVBVEUgVkFSSUFCTEUgdjMgQVMg aW50OworTEVUIHYxID0gJ3Rlc3QnOworTEVUIHYyID0gMTA7CitMRVQgdjMgPSA1OworUFJFUEFS RSBxMSBBUyBTRUxFQ1QgdjEgfHwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCB2MikgZyhpKSBX SEVSRSBpIElOICh2MiwgdjMpOworU0VUIHBsYW5fY2FjaGVfbW9kZSB0byBmb3JjZV9nZW5lcmlj X3BsYW47CitFWEVDVVRFIHExOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHRlc3Q1CisgdGVz dDEwCisoMiByb3dzKQorCitFWFBMQUlOIEVYRUNVVEUgcTE7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBnICAoY29zdD0w LjAwLi4wLjE0IHJvd3M9MiB3aWR0aD0zMikKKyAgIEZpbHRlcjogKGkgPSBBTlkgKEFSUkFZW3Yy LCB2M10pKQorKDIgcm93cykKKworLS0gZGVwZW5kZWN5IGNoZWNrCitEUk9QIFZBUklBQkxFIHYz OworLS0gcmVjcmVhdGUgdjMgYWdhaW4KK0NSRUFURSBWQVJJQUJMRSB2MyBBUyBpbnQgREVGQVVM VCA2OworLS0gc2hvdWxkIHRvIHdvcmssIHRoZSBwbGFuIHNob3VsZCBiZSByZWNyZWF0ZWQKK0VY RUNVVEUgcTE7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdGVzdDYKKyB0ZXN0MTAKKygyIHJv d3MpCisKK0RFQUxMT0NBVEUgcTE7CistLSBmaWxsIHYxIGJ5IGxvbmcgdGV4dAorTEVUIHYxID0g cmVwZWF0KCcgJywgMTAwMDApOworUFJFUEFSRSBxMSBBUyBTRUxFQ1QgbGVuZ3RoKHYxKTsKK0VY RUNVVEUgcTE7CisgbGVuZ3RoIAorLS0tLS0tLS0KKyAgMTAwMDAKKygxIHJvdykKKworTEVUIHYx ID0gcmVwZWF0KCcgJywgNTAwMCk7CitFWEVDVVRFIHExOworIGxlbmd0aCAKKy0tLS0tLS0tCisg ICA1MDAwCisoMSByb3cpCisKK0RFQUxMT0NBVEUgcTE7CitTRVQgcGxhbl9jYWNoZV9tb2RlIHRv IGRlZmF1bHQ7CitEUk9QIFZBUklBQkxFIHYxLCB2MiwgdjM7CitDUkVBVEUgUk9MRSB2YXJfdGVz dF9yb2xlOworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy52MSBBUyBpbnQgREVGQVVMVCAwOworLS0g Y2hlY2sgYWNsIHdoZW4gdmFyaWFibGUgaXMgYWNlc3NlZCBieSBzaW1wbGUgZXZhbCBleHByIG1l dGhvZAorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcHVibGljLmZ4X3ZhcihpbnQpCitSRVRV Uk5TIGludCBBUyAkJAorREVDTEFSRSB4eCBpbnQ7CitCRUdJTgorICB4eCA6PSBwdWJsaWMudjEg KyAkMTsKKyAgUkVUVVJOIHh4OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKy0tIHNob3Vs ZCBiZSBvaworU0VMRUNUIHB1YmxpYy5meF92YXIoMCk7CisgZnhfdmFyIAorLS0tLS0tLS0KKyAg ICAgIDAKKygxIHJvdykKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0 byBmYWlsCitTRUxFQ1QgcHVibGljLmZ4X3ZhcigwKTsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5p ZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgdjEKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBw dWJsaWMuZnhfdmFyKGludGVnZXIpIGxpbmUgNCBhdCBhc3NpZ25tZW50CitTRVQgUk9MRSBUTyBk ZWZhdWx0OworR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFIHB1YmxpYy52MSBUTyB2YXJfdGVzdF9y b2xlOworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCBiZSBvaworU0VMRUNU IHB1YmxpYy5meF92YXIoMCk7CisgZnhfdmFyIAorLS0tLS0tLS0KKyAgICAgIDAKKygxIHJvdykK KworU0VUIFJPTEUgVE8gZGVmYXVsdDsKK1JFVk9LRSBTRUxFQ1QgT04gVkFSSUFCTEUgcHVibGlj LnYxIEZST00gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBz aG91bGQgYmUgZmFpbAorU0VMRUNUIHB1YmxpYy5meF92YXIoMCk7CitFUlJPUjogIHBlcm1pc3Np b24gZGVuaWVkIGZvciBzZXNzaW9uIHZhcmlhYmxlIHYxCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gcHVibGljLmZ4X3ZhcihpbnRlZ2VyKSBsaW5lIDQgYXQgYXNzaWdubWVudAorU0VUIFJP TEUgVE8gREVGQVVMVDsKK0RST1AgRlVOQ1RJT04gcHVibGljLmZ4X3ZhcihpbnQpOworRFJPUCBW QVJJQUJMRSBwdWJsaWMudjE7CitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKK0NSRUFURSBUWVBF IHB1YmxpYy5zdmFyX3Rlc3RfdHlwZSBBUyAoYSBpbnQsIGIgaW50LCBjIG51bWVyaWMpOworQ1JF QVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyIEFTIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZTsKK0xFVCBw dWJsaWMuc3ZhciA9IFJPVygxMCwyMCwzMCk7CitTRUxFQ1QgcHVibGljLnN2YXI7CisgICAgc3Zh ciAgICAKKy0tLS0tLS0tLS0tLQorICgxMCwyMCwzMCkKKygxIHJvdykKKworQUxURVIgVFlQRSBw dWJsaWMuc3Zhcl90ZXN0X3R5cGUgRFJPUCBBVFRSSUJVVEUgYzsKKy0tIHNob3VsZCBiZSBvawor U0VMRUNUIHB1YmxpYy5zdmFyOworICBzdmFyICAgCistLS0tLS0tLS0KKyAoMTAsMjApCisoMSBy b3cpCisKK0FMVEVSIFRZUEUgcHVibGljLnN2YXJfdGVzdF90eXBlIEFERCBBVFRSSUJVVEUgYyBp bnQ7CistLSBzaG91bGQgYmUgb2sKK1NFTEVDVCBwdWJsaWMuc3ZhcjsKKyAgIHN2YXIgICAKKy0t LS0tLS0tLS0KKyAoMTAsMjAsKQorKDEgcm93KQorCitMRVQgcHVibGljLnN2YXIgPSBST1coMTAs MjAsMzApOworLS0gc2hvdWxkIGJlIG9rIGFnYWluIGZvciBuZXcgdmFsdWUKK1NFTEVDVCBwdWJs aWMuc3ZhcjsKKyAgICBzdmFyICAgIAorLS0tLS0tLS0tLS0tCisgKDEwLDIwLDMwKQorKDEgcm93 KQorCitEUk9QIFZBUklBQkxFIHB1YmxpYy5zdmFyOworRFJPUCBUWVBFIHB1YmxpYy5zdmFyX3Rl c3RfdHlwZTsKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3ZhciBBUyBpbnQ7CitzZWxlY3Qgb2lk IGFzIHZhcmlkIGZyb20gcGdfdmFyaWFibGUgd2hlcmUgdmFybmFtZSA9ICdzdmFyJyBhbmQgdmFy bmFtZXNwYWNlID0gJ3B1YmxpYyc6OnJlZ25hbWVzcGFjZSBcZ3NldAorU0VMRUNUIHNjaGVtYSwg bmFtZSwgcmVtb3ZlZCBGUk9NIHBnX3Nlc3Npb25fdmFyaWFibGVzKCk7Cisgc2NoZW1hIHwgbmFt ZSB8IHJlbW92ZWQgCistLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tCisoMCByb3dzKQorCitMRVQg cHVibGljLnN2YXIgPSAxMDA7CitTRUxFQ1Qgc2NoZW1hLCBuYW1lLCByZW1vdmVkIEZST00gcGdf c2Vzc2lvbl92YXJpYWJsZXMoKTsKKyBzY2hlbWEgfCBuYW1lIHwgcmVtb3ZlZCAKKy0tLS0tLS0t Ky0tLS0tLSstLS0tLS0tLS0KKyBwdWJsaWMgfCBzdmFyIHwgZgorKDEgcm93KQorCitCRUdJTjsK K0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7CistLSB2YWx1ZSBzaG91bGQgYmUgaW4gbWVtb3J5 CitTRUxFQ1Qgc2NoZW1hLCByZW1vdmVkIEZST00gcGdfc2Vzc2lvbl92YXJpYWJsZXMoKTsKKyBz Y2hlbWEgfCByZW1vdmVkIAorLS0tLS0tLS0rLS0tLS0tLS0tCisgICAgICAgIHwgdAorKDEgcm93 KQorCitST0xMQkFDSzsKKy0tIHZhbHVlIHNob3VsZCBiZSBpbiBtZW1vcnkKK1NFTEVDVCBzY2hl bWEsIG5hbWUsIHJlbW92ZWQgRlJPTSBwZ19zZXNzaW9uX3ZhcmlhYmxlcygpIGYgV0hFUkUgZi52 YXJpZCA9IDp2YXJpZDsKKyBzY2hlbWEgfCBuYW1lIHwgcmVtb3ZlZCAKKy0tLS0tLS0tKy0tLS0t LSstLS0tLS0tLS0KKyBwdWJsaWMgfCBzdmFyIHwgZgorKDEgcm93KQorCitTRUxFQ1QgcHVibGlj LnN2YXI7Cisgc3ZhciAKKy0tLS0tLQorICAxMDAKKygxIHJvdykKKworQkVHSU47CitEUk9QIFZB UklBQkxFIHB1YmxpYy5zdmFyOworLS0gdmFsdWUgc2hvdWxkIGJlIGluIG1lbW9yeQorU0VMRUNU IHNjaGVtYSwgbmFtZSA9IDp2YXJpZDo6dGV4dCBBUyBvaywgcmVtb3ZlZCBGUk9NIHBnX3Nlc3Np b25fdmFyaWFibGVzKCkgZiBXSEVSRSBmLnZhcmlkID0gOnZhcmlkOzsKKyBzY2hlbWEgfCBvayB8 IHJlbW92ZWQgCistLS0tLS0tLSstLS0tKy0tLS0tLS0tLQorICAgICAgICB8IHQgIHwgdAorKDEg cm93KQorCitDT01NSVQ7CistLSB0aGUgbWVtb3J5IHNob3VsZCBiZSBjbGVhbjsKK1NFTEVDVCBz Y2hlbWEsIG5hbWUsIHJlbW92ZWQgRlJPTSBwZ19zZXNzaW9uX3ZhcmlhYmxlcygpIFdIRVJFIGYu dmFyaWQgPSA6dmFyaWQ7CitFUlJPUjogIG1pc3NpbmcgRlJPTS1jbGF1c2UgZW50cnkgZm9yIHRh YmxlICJmIgorTElORSAxOiAuLi4sIG5hbWUsIHJlbW92ZWQgRlJPTSBwZ19zZXNzaW9uX3Zhcmlh YmxlcygpIFdIRVJFIGYudmFyaWQgPSAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitCRUdJTjsKK0NSRUFURSBWQVJJQUJM RSBwdWJsaWMuc3ZhciBBUyBpbnQ7CitzZWxlY3Qgb2lkIGFzIHZhcmlkIGZyb20gcGdfdmFyaWFi bGUgd2hlcmUgdmFybmFtZSA9ICdzdmFyJyBhbmQgdmFybmFtZXNwYWNlID0gJ3B1YmxpYyc6OnJl Z25hbWVzcGFjZSBcZ3NldAorTEVUIHB1YmxpYy5zdmFyID0gMTAwOworUk9MTEJBQ0s7CistLSB0 aGUgbWVtb3J5IHNob3VsZCBiZSBjbGVhbjsKK1NFTEVDVCBzY2hlbWEsIG5hbWUsIHJlbW92ZWQg RlJPTSBwZ19zZXNzaW9uX3ZhcmlhYmxlcygpIGYgV0hFUkUgZi52YXJpZCA9IDp2YXJpZDsKKyBz Y2hlbWEgfCBuYW1lIHwgcmVtb3ZlZCAKKy0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0KKygwIHJv d3MpCisKK1x1bnNldCB2YXJpZAorQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyIEFTIGludDsK K0xFVCBwdWJsaWMuc3ZhciA9IDEwMDsKKy0tIHJlcGVhdGVkIGFib3J0ZWQgdHJhbnNhY3Rpb24K K0JFR0lOOyBEUk9QIFZBUklBQkxFIHB1YmxpYy5zdmFyOyBST0xMQkFDSzsKK0JFR0lOOyBEUk9Q IFZBUklBQkxFIHB1YmxpYy5zdmFyOyBST0xMQkFDSzsKK0JFR0lOOyBEUk9QIFZBUklBQkxFIHB1 YmxpYy5zdmFyOyBST0xMQkFDSzsKKy0tIHRoZSB2YWx1ZSBzaG91bGQgYmUgc3RpbGwgYXZhaWxh YmxlCitTRUxFQ1QgcHVibGljLnN2YXI7Cisgc3ZhciAKKy0tLS0tLQorICAxMDAKKygxIHJvdykK KworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKK0NSRUFURSBUWVBFIHB1YmxpYy5zdmFyX3Rl c3RfdHlwZSBBUyAoYSBpbnQsIGIgaW50KTsKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3ZhciBB UyBwdWJsaWMuc3Zhcl90ZXN0X3R5cGU7CitTRUxFQ1QgcHVibGljLnN2YXI7Cisgc3ZhciAKKy0t LS0tLQorIAorKDEgcm93KQorCitBTFRFUiBUWVBFIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZSBBREQg QVRUUklCVVRFIGMgaW50OworU0VMRUNUIHB1YmxpYy5zdmFyOworIHN2YXIgCistLS0tLS0KKyAK KygxIHJvdykKKworQUxURVIgVFlQRSBwdWJsaWMuc3Zhcl90ZXN0X3R5cGUgRFJPUCBBVFRSSUJV VEUgYjsKK1NFTEVDVCBwdWJsaWMuc3ZhcjsKKyBzdmFyIAorLS0tLS0tCisgCisoMSByb3cpCisK K0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7CitEUk9QIFRZUEUgcHVibGljLnN2YXJfdGVzdF90 eXBlOworQ1JFQVRFIFRZUEUgcHVibGljLnN2YXJfdGVzdF90eXBlIEFTIChhIGludCwgYiBpbnQp OworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyIEFTIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZTsK K0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3ZhcjIgQVMgcHVibGljLnN2YXJfdGVzdF90eXBlOwor TEVUIHB1YmxpYy5zdmFyID0gKDEwLCAyMCk7CitBTFRFUiBUWVBFIHB1YmxpYy5zdmFyX3Rlc3Rf dHlwZSBBREQgQVRUUklCVVRFIGMgaW50OworU0VMRUNUIHB1YmxpYy5zdmFyOworICAgc3ZhciAg IAorLS0tLS0tLS0tLQorICgxMCwyMCwpCisoMSByb3cpCisKK0xFVCBwdWJsaWMuc3ZhcjIgPSAo MTAsIDIwLCAzMCk7CitBTFRFUiBUWVBFIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZSBEUk9QIEFUVFJJ QlVURSBiOworU0VMRUNUIHB1YmxpYy5zdmFyOworIHN2YXIgIAorLS0tLS0tLQorICgxMCwpCiso MSByb3cpCisKK1NFTEVDVCBwdWJsaWMuc3ZhcjI7CisgIHN2YXIyICAKKy0tLS0tLS0tLQorICgx MCwzMCkKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKK0RST1AgVkFSSUFC TEUgcHVibGljLnN2YXIyOworRFJPUCBUWVBFIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZTsKKy0tIFRo ZSBjb21wb3NpdGUgdHlwZSBjYW5ub3QgYmUgY2hhbmdlZCB3aGVuIGl0IGlzIHVzZWQKK0NSRUFU RSBUWVBFIHB1YmxpYy5zdmFyX3R5cGUgQVMgKGEgaW50LCBiIGludCk7CitDUkVBVEUgVkFSSUFC TEUgcHVibGljLnN2YXIgQVMgcHVibGljLnN2YXJfdHlwZTsKKy0tIHNob3VsZCB0byBmYWlsCitB TFRFUiBUWVBFIHB1YmxpYy5zdmFyX3R5cGUgQUxURVIgQVRUUklCVVRFIGIgVFlQRSBudW1lcmlj OworRVJST1I6ICBjYW5ub3QgYWx0ZXIgdHlwZSAic3Zhcl90eXBlIiBiZWNhdXNlIHNlc3Npb24g dmFyaWFibGUgInB1YmxpYy5zdmFyIiB1c2VzIGl0CitEUk9QIFZBUklBQkxFIHB1YmxpYy5zdmFy OworQ1JFQVRFIFRZUEUgcHVibGljLnN2YXJfdHlwZTIgQVMgKGEgaW50LCBiIGludCwgYyBwdWJs aWMuc3Zhcl90eXBlKTsKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3ZhciBBUyBwdWJsaWMuc3Zh cl90eXBlMjsKKy0tIHNob3VsZCB0byBmYWlsCitBTFRFUiBUWVBFIHB1YmxpYy5zdmFyX3R5cGUg QUxURVIgQVRUUklCVVRFIGIgVFlQRSBudW1lcmljOworRVJST1I6ICBjYW5ub3QgYWx0ZXIgdHlw ZSAic3Zhcl90eXBlIiBiZWNhdXNlIHNlc3Npb24gdmFyaWFibGUgInB1YmxpYy5zdmFyIiB1c2Vz IGl0CitEUk9QIFZBUklBQkxFIHB1YmxpYy5zdmFyOworRFJPUCBUWVBFIHB1YmxpYy5zdmFyX3R5 cGUyOworRFJPUCBUWVBFIHB1YmxpYy5zdmFyX3R5cGU7CistLSBUaGUgdmFyaWFibGUgY2FuIGJl IHNoYWRvd2VkIGJ5IHRhYmxlIG9yIGJ5IGFsaWFzCitDUkVBVEUgVFlQRSBwdWJsaWMuc3Zhcl90 eXBlIEFTIChhIGludCwgYiBpbnQsIGMgaW50KTsKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3Zh ciBBUyBwdWJsaWMuc3Zhcl90eXBlOworQ1JFQVRFIFRBQkxFIHB1YmxpYy5zdmFyIChhIGludCwg YiBpbnQpOworSU5TRVJUIElOVE8gcHVibGljLnN2YXIgVkFMVUVTKDEwLCAyMCk7CitMRVQgcHVi bGljLnN2YXIgPSAoMTAwLCAyMDAsIDMwMCk7CistLSBzaG91bGQgYmUgb2sKKy0tIHNob3cgdGFi bGUKK1NFTEVDVCAqIEZST00gcHVibGljLnN2YXI7CisgYSAgfCBiICAKKy0tLS0rLS0tLQorIDEw IHwgMjAKKygxIHJvdykKKworU0VMRUNUIHN2YXIuYSBGUk9NIHB1YmxpYy5zdmFyOworIGEgIAor LS0tLQorIDEwCisoMSByb3cpCisKK1NFTEVDVCBzdmFyLiogRlJPTSBwdWJsaWMuc3ZhcjsKKyBh ICB8IGIgIAorLS0tLSstLS0tCisgMTAgfCAyMAorKDEgcm93KQorCistLSBzaG93IHZhcmlhYmxl CitTRUxFQ1QgcHVibGljLnN2YXI7CisgICAgIHN2YXIgICAgICAKKy0tLS0tLS0tLS0tLS0tLQor ICgxMDAsMjAwLDMwMCkKKygxIHJvdykKKworU0VMRUNUIHB1YmxpYy5zdmFyLmM7CisgIGMgIAor LS0tLS0KKyAzMDAKKygxIHJvdykKKworU0VMRUNUIChwdWJsaWMuc3ZhcikuKjsKKyAgYSAgfCAg YiAgfCAgYyAgCistLS0tLSstLS0tLSstLS0tLQorIDEwMCB8IDIwMCB8IDMwMAorKDEgcm93KQor CistLSB0aGUgdmFyaWFibGUgaXMgc2hhZG93ZWQsIHJhaXNlIGVycm9yCitTRUxFQ1QgcHVibGlj LnN2YXIuYyBGUk9NIHB1YmxpYy5zdmFyOworRVJST1I6ICBjb2x1bW4gc3Zhci5jIGRvZXMgbm90 IGV4aXN0CitMSU5FIDE6IFNFTEVDVCBwdWJsaWMuc3Zhci5jIEZST00gcHVibGljLnN2YXI7Cisg ICAgICAgICAgICAgICBeCistLSBjYW4gYmUgZml4ZWQgYnkgYWxpYXMKK1NFTEVDVCBwdWJsaWMu c3Zhci5jIEZST00gcHVibGljLnN2YXIgeDsKKyAgYyAgCistLS0tLQorIDMwMAorKDEgcm93KQor CistLSBhZ2FpbiB3aXRoIHdhcm5pbmdzCitTRVQgc2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5 X3dhcm5pbmcgVE8gb247CitTRUxFQ1QgKiBGUk9NIHB1YmxpYy5zdmFyOworIGEgIHwgYiAgCist LS0tKy0tLS0KKyAxMCB8IDIwCisoMSByb3cpCisKK1NFTEVDVCBzdmFyLmEgRlJPTSBwdWJsaWMu c3ZhcjsKKyBhICAKKy0tLS0KKyAxMAorKDEgcm93KQorCitTRUxFQ1Qgc3Zhci4qIEZST00gcHVi bGljLnN2YXI7CisgYSAgfCBiICAKKy0tLS0rLS0tLQorIDEwIHwgMjAKKygxIHJvdykKKworLS0g c2hvdyB2YXJpYWJsZQorU0VMRUNUIHB1YmxpYy5zdmFyOworICAgICBzdmFyICAgICAgCistLS0t LS0tLS0tLS0tLS0KKyAoMTAwLDIwMCwzMDApCisoMSByb3cpCisKK1NFTEVDVCBwdWJsaWMuc3Zh ci5jOworICBjICAKKy0tLS0tCisgMzAwCisoMSByb3cpCisKK1NFTEVDVCAocHVibGljLnN2YXIp Lio7CisgIGEgIHwgIGIgIHwgIGMgIAorLS0tLS0rLS0tLS0rLS0tLS0KKyAxMDAgfCAyMDAgfCAz MDAKKygxIHJvdykKKworLS0gdGhlIHZhcmlhYmxlIGlzIHNoYWRvd2VkLCByYWlzZSBlcnJvcgor U0VMRUNUIHB1YmxpYy5zdmFyLmMgRlJPTSBwdWJsaWMuc3ZhcjsKK1dBUk5JTkc6ICBzZXNzaW9u IHZhcmlhYmxlICJwdWJsaWMuc3ZhciIgaXMgc2hhZG93ZWQKK0xJTkUgMTogU0VMRUNUIHB1Ymxp Yy5zdmFyLmMgRlJPTSBwdWJsaWMuc3ZhcjsKKyAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFNl c3Npb24gdmFyaWFibGVzIGNhbiBiZSBzaGFkb3dlZCBieSB0YWJsZXMgb3IgdGFibGUncyBhbGlh c2VzIHdpdGggdGhlIHNhbWUgbmFtZS4KK0VSUk9SOiAgY29sdW1uIHN2YXIuYyBkb2VzIG5vdCBl eGlzdAorTElORSAxOiBTRUxFQ1QgcHVibGljLnN2YXIuYyBGUk9NIHB1YmxpYy5zdmFyOworICAg ICAgICAgICAgICAgXgorLS0gY2FuIGJlIGZpeGVkIGJ5IGFsaWFzCitTRUxFQ1QgcHVibGljLnN2 YXIuYyBGUk9NIHB1YmxpYy5zdmFyIHg7CisgIGMgIAorLS0tLS0KKyAzMDAKKygxIHJvdykKKwor U0VUIHNlc3Npb25fdmFyaWFibGVzX2FtYmlndWl0eV93YXJuaW5nIFRPIERFRkFVTFQ7CitEUk9Q IFZBUklBQkxFIHB1YmxpYy5zdmFyOworRFJPUCBUQUJMRSBwdWJsaWMuc3ZhcjsKK0RST1AgVFlQ RSBwdWJsaWMuc3Zhcl90eXBlOworLS0gdGhlIExFVCBzdGF0ZW1lbnQgc2hvdWxkIGJlIGRpc2Fs bG93ZWQgaW4gQ1RFCitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnN2YXIgQVMgaW50OworV0lUSCB4 IEFTIChMRVQgcHVibGljLnN2YXIgPSAxMDApIFNFTEVDVCAqIEZST00geDsKK0VSUk9SOiAgTEVU IG5vdCBzdXBwb3J0ZWQgaW4gV0lUSCBxdWVyeQorTElORSAxOiBXSVRIIHggQVMgKExFVCBwdWJs aWMuc3ZhciA9IDEwMCkgU0VMRUNUICogRlJPTSB4OworICAgICAgICAgICAgIF4KKy0tIHRoZSBM RVQgc3RhdGVtZW50IGNhbiBiZSBwcmVwYXJlZAorUFJFUEFSRSBwcChpbnQpIEFTIExFVCBwdWJs aWMuc3ZhciA9ICQxOworRVhFQ1VURSBwcCgxMCk7CitTRUxFQ1QgcHVibGljLnN2YXI7Cisgc3Zh ciAKKy0tLS0tLQorICAgMTAKKygxIHJvdykKKworRVhFQ1VURSBwcCgxMDAwKTsKK1NFTEVDVCBw dWJsaWMuc3ZhcjsKKyBzdmFyIAorLS0tLS0tCisgMTAwMAorKDEgcm93KQorCistLSB0ZXN0IG9m IGNvcnJlY3QgZGVwZW5kZW5jeQorRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKK0VYRUNVVEUg cHAoLTEpOworRVJST1I6ICBzZXNzaW9uIHZhcmlhYmxlICJwdWJsaWMuc3ZhciIgZG9lc24ndCBl eGlzdAorREVBTExPQ0FURSBwcDsKK0NSRUFURSBWQVJJQUJMRSBwdWJsaWMuc3ZhcjIgQVMgaW50 OworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyMSBBUyBpbnQgREVGQVVMVCAxMDA7CitQUkVQ QVJFIHBwKGludCkgQVMgTEVUIHB1YmxpYy5zdmFyMiA9IHB1YmxpYy5zdmFyMSArICQxOworRVhF Q1VURSBwcCgxMDApOworU0VMRUNUIHB1YmxpYy5zdmFyMSwgcHVibGljLnN2YXIyOworIHN2YXIx IHwgc3ZhcjIgCistLS0tLS0tKy0tLS0tLS0KKyAgIDEwMCB8ICAgMjAwCisoMSByb3cpCisKK0xF VCBwdWJsaWMuc3ZhcjEgPSAxMDAwOworRVhFQ1VURSBwcCgxMDApOworU0VMRUNUIHB1YmxpYy5z dmFyMSwgcHVibGljLnN2YXIyOworIHN2YXIxIHwgc3ZhcjIgCistLS0tLS0tKy0tLS0tLS0KKyAg MTAwMCB8ICAxMTAwCisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXIxOworRVhF Q1VURSBwcCgxMDApOworRVJST1I6ICBtaXNzaW5nIEZST00tY2xhdXNlIGVudHJ5IGZvciB0YWJs ZSAicHVibGljIgorREVBTExPQ0FURSBwcDsKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXIyOwor Q1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyIEFTIGludDsKKy0tIHNob3VsZCBiZSBvaworTEVU IHB1YmxpYy5zdmFyID0gZ2VuZXJhdGVfc2VyaWVzKDEsIDEpOworLS0gc2hvdWxkIGZhaWwKK0xF VCBwdWJsaWMuc3ZhciA9IGdlbmVyYXRlX3NlcmllcygxLCAyKTsKK0VSUk9SOiAgZXhwcmVzc2lv biByZXR1cm5lZCBtb3JlIHRoYW4gb25lIHJvdworTEVUIHB1YmxpYy5zdmFyID0gZ2VuZXJhdGVf c2VyaWVzKDEsIDApOworRVJST1I6ICBleHByZXNzaW9uIHJldHVybmVkIG5vIHJvd3MKK0RST1Ag VkFSSUFCTEUgcHVibGljLnN2YXI7CitTRVQgc2VhcmNoX3BhdGggVE8gREVGQVVMVDsKK0NSRUFU RSBUWVBFIGFiIEFTIChhIGludGVnZXIsIGIgaW50ZWdlcik7CitDUkVBVEUgVkFSSUFCTEUgdl9h YiBBUyBhYjsKK0NSRUFURSBUQUJMRSB2X2FiIChhIGludGVnZXIsIGIgaW50ZWdlcik7CitTRVQg c2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5pbmcgPSAxOworLS0gd2FybmluZyBzaG91 bGQgYmUgcmFpc2VkCitTRUxFQ1Qgdl9hYi5hIEZST00gdl9hYjsKK1dBUk5JTkc6ICBzZXNzaW9u IHZhcmlhYmxlICJ2X2FiLmEiIGlzIHNoYWRvd2VkCitMSU5FIDE6IFNFTEVDVCB2X2FiLmEgRlJP TSB2X2FiOworICAgICAgICAgICAgICAgXgorREVUQUlMOiAgU2Vzc2lvbiB2YXJpYWJsZXMgY2Fu IGJlIHNoYWRvd2VkIGJ5IGNvbHVtbnMsIHJvdXRpbmUncyB2YXJpYWJsZXMgYW5kIHJvdXRpbmUn cyBhcmd1bWVudHMgd2l0aCB0aGUgc2FtZSBuYW1lLgorIGEgCistLS0KKygwIHJvd3MpCisKK0NS RUFURSBTQ0hFTUEgdl9hYjsKK0NSRUFURSBWQVJJQUJMRSB2X2FiLmEgQVMgaW50ZWdlcjsKKy0t IHdhcm5pbmcgc2hvdWxkIGJlIHJhaXNlZAorU0VMRUNUIHZfYWIuYSBGUk9NIHZfYWI7CitXQVJO SU5HOiAgc2Vzc2lvbiB2YXJpYWJsZSAidl9hYi5hIiBpcyBzaGFkb3dlZAorTElORSAxOiBTRUxF Q1Qgdl9hYi5hIEZST00gdl9hYjsKKyAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFNlc3Npb24g dmFyaWFibGVzIGNhbiBiZSBzaGFkb3dlZCBieSBjb2x1bW5zLCByb3V0aW5lJ3MgdmFyaWFibGVz IGFuZCByb3V0aW5lJ3MgYXJndW1lbnRzIHdpdGggdGhlIHNhbWUgbmFtZS4KKyBhIAorLS0tCiso MCByb3dzKQorCitEUk9QIFZBUklBQkxFIHZfYWI7CitEUk9QIFRBQkxFIHZfYWI7CitEUk9QIFRZ UEUgYWI7CitDUkVBVEUgVkFSSUFCTEUgbXl2YXIgQVMgaW50OworU0VMRUNUIG15dmFyLmJsYWJs YTsKK0VSUk9SOiAgbWlzc2luZyBGUk9NLWNsYXVzZSBlbnRyeSBmb3IgdGFibGUgIm15dmFyIgor TElORSAxOiBTRUxFQ1QgbXl2YXIuYmxhYmxhOworICAgICAgICAgICAgICAgXgorRFJPUCBWQVJJ QUJMRSBteXZhcjsKKy0tIHRoZSByZXN1bHQgb2YgdmlldyBzaG91bGQgYmUgc2FtZSBpbiBwYXJh bGxlbCBtb2RlIHRvbworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIGludDsKK0xFVCB2MSA9IDEwOwor Q1JFQVRFIFZJRVcgdjF2aWV3IEFTIFNFTEVDVCBDT0FMRVNDRSh2MSwgMCkgQVMgcmVzdWx0Owor U0VMRUNUICogRlJPTSB2MXZpZXc7CisgcmVzdWx0IAorLS0tLS0tLS0KKyAgICAgMTAKKygxIHJv dykKKworU0VUIGZvcmNlX3BhcmFsbGVsX21vZGUgVE8gb247CitTRUxFQ1QgKiBGUk9NIHYxdmll dzsKKyByZXN1bHQgCistLS0tLS0tLQorICAgICAxMAorKDEgcm93KQorCitTRVQgZm9yY2VfcGFy YWxsZWxfbW9kZSBUTyBvZmY7CitEUk9QIFZJRVcgdjF2aWV3OworRFJPUCBWQVJJQUJMRSB2MTsK Ky0tIHRoZSB2YWx1ZSBzaG91bGQgbm90IGJlIGNvcnJ1cHRlZAorQ1JFQVRFIFZBUklBQkxFIHYx IHRleHQgREVGQVVMVCAnYWJjJzsKK0NSRUFURSBGVU5DVElPTiBmZnVuYygpCitSRVRVUk5TIHRl eHQgQVMgJCQKK0JFR0lOCisgIFJFVFVSTiBnZnVuYyh2MSk7CitFTkQKKyQkIExBTkdVQUdFIHBs cGdzcWw7CitDUkVBVEUgRlVOQ1RJT04gZ2Z1bmModCB0ZXh0KQorUkVUVVJOUyB0ZXh0IEFTICQk CitCRUdJTgorICBMRVQgdjEgPSAnQk9PTSEnOworICBSRVRVUk4gdDsKK0VORDsKKyQkIExBTkdV QUdFIHBscGdzcWw7CitzZWxlY3QgZmZ1bmMoKTsKKyBmZnVuYyAKKy0tLS0tLS0KKyBhYmMKKygx IHJvdykKKworRFJPUCBGVU5DVElPTiBmZnVuYygpOworRFJPUCBGVU5DVElPTiBnZnVuYyh0ZXh0 KTsKK0RST1AgVkFSSUFCTEUgdjE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA5 YTEzOWYxZTI0Li40YzMxOTE4NGVlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAg LTExOSw3ICsxMTksNyBAQCB0ZXN0OiBqc29uIGpzb25iIGpzb25fZW5jb2RpbmcganNvbnBhdGgg anNvbnBhdGhfZW5jb2RpbmcganNvbmJfanNvbnBhdGgKICMgTkI6IHRlbXAuc3FsIGRvZXMgYSBy ZWNvbm5lY3Qgd2hpY2ggdHJhbnNpZW50bHkgdXNlcyAyIGNvbm5lY3Rpb25zLAogIyBzbyBrZWVw IHRoaXMgcGFyYWxsZWwgZ3JvdXAgdG8gYXQgbW9zdCAxOSB0ZXN0cwogIyAtLS0tLS0tLS0tCi10 ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNz IHByZXBhcmUgY29udmVyc2lvbiB0cnVuY2F0ZSBhbHRlcl90YWJsZSBzZXF1ZW5jZSBwb2x5bW9y cGhpc20gcm93dHlwZXMgcmV0dXJuaW5nIGxhcmdlb2JqZWN0IHdpdGggeG1sCit0ZXN0OiBwbGFu Y2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUg Y29udmVyc2lvbiB0cnVuY2F0ZSBhbHRlcl90YWJsZSBzZXF1ZW5jZSBwb2x5bW9ycGhpc20gcm93 dHlwZXMgcmV0dXJuaW5nIGxhcmdlb2JqZWN0IHdpdGggeG1sIHNlc3Npb25fdmFyaWFibGVzCiAK ICMgLS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZXNzaW9uX3ZhcmlhYmxlcy5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9zZXNzaW9uX3ZhcmlhYmxlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uMDVlZjdkMGU3MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3Nlc3Npb25fdmFyaWFibGVzLnNxbApAQCAtMCwwICsxLDExMTcgQEAKK0NS RUFURSBTQ0hFTUEgc3ZhcnRlc3QgQ1JFQVRFIFZBUklBQkxFIHh4IEFTIGludCBDUkVBVEUgVEFC TEUgZm9vKGEgaW50KTsKKworTEVUIHN2YXJ0ZXN0Lnh4ID0gMTAwOworCitEUk9QIFNDSEVNQSBz dmFydGVzdCBDQVNDQURFOworCistLSBzaG91bGQgZmFpbAorTEVUIHN2YXJ0ZXN0Lnh4ID0gMTAw OworCitDUkVBVEUgU0NIRU1BIHN2YXJ0ZXN0OworCitTRVQgc2VhcmNoX3BhdGggPSBzdmFydGVz dDsKKworQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK0NSRUFURSBURU1QIFZBUklB QkxFIHZhcjIgQVMgdGV4dDsKKworRFJPUCBWQVJJQUJMRSB2YXIxLCB2YXIyOworCistLSBmdW5j dGlvbmFsIGludGVyZmFjZQorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgbnVtZXJpYzsKKworQ1JF QVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKK0dSQU5UIFVTQUdFIE9OIFNDSEVNQSBzdmFydGVzdCBU TyB2YXJfdGVzdF9yb2xlOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91 bGQgZmFpbAorU0VMRUNUIHZhcjE7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0dSQU5UIFNF TEVDVCBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CisKK1NFVCBST0xFIFRPIHZh cl90ZXN0X3JvbGU7CistLSBzaG91bGQgZmFpbAorTEVUIHZhcjEgPSAxMDsKKy0tIHNob3VsZCB3 b3JrCitTRUxFQ1QgdmFyMTsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworR1JBTlQgVVBEQVRF IE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rl c3Rfcm9sZTsKKworLS0gc2hvdWxkIHdvcmsKK0xFVCB2YXIxID0gMzMzOworCitTRVQgUk9MRSBU TyBERUZBVUxUOworCitSRVZPS0UgQUxMIE9OIFZBUklBQkxFIHZhcjEgRlJPTSB2YXJfdGVzdF9y b2xlOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBzZWN1cmVfdmFyKCkKK1JFVFVSTlMg aW50IEFTICQkCisgIFNFTEVDVCBzdmFydGVzdC52YXIxOjppbnQ7CiskJCBMQU5HVUFHRSBzcWwg U0VDVVJJVFkgREVGSU5FUjsKKworU0VMRUNUIHNlY3VyZV92YXIoKTsKKworU0VUIFJPTEUgVE8g dmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIGZhaWwKK1NFTEVDVCBzdmFydGVzdC52YXIxOwor CistLSBzaG91bGQgd29yazsKK1NFTEVDVCBzZWN1cmVfdmFyKCk7CisKK1NFVCBST0xFIFRPIERF RkFVTFQ7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwxMDApIGcodikgV0hFUkUgdiA9IHZhcjE7CisKK0NSRUFURSBWSUVXIHNj aGVtYV92YXJfdmlldyBBUyBTRUxFQ1QgdmFyMTsKKworU0VMRUNUICogRlJPTSBzY2hlbWFfdmFy X3ZpZXc7CisKK1xjIC0KKworU0VUIHNlYXJjaF9wYXRoID0gc3ZhcnRlc3Q7CisKKy0tIHNob3Vs ZCB3b3JrIHN0aWxsLCBidXQgdmFyIHdpbGwgYmUgZW1wdHkKK1NFTEVDVCAqIEZST00gc2NoZW1h X3Zhcl92aWV3OworCitMRVQgdmFyMSA9IHBpKCk7CisKK1NFTEVDVCB2YXIxOworCistLSB3ZSBj YW4gc2VlIGV4ZWN1dGlvbiBwbGFuIG9mIExFVCBzdGF0ZW1lbnQKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgTEVUIHZhcjEgPSBwaSgpOworCitTRUxFQ1QgdmFyMTsKKworQ1JFQVRFIFZB UklBQkxFIHZhcjMgQVMgaW50OworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBpbmMoaW50 KQorUkVUVVJOUyBpbnQgQVMgJCQKK0JFR0lOCisgIExFVCBzdmFydGVzdC52YXIzID0gQ09BTEVT Q0Uoc3ZhcnRlc3QudmFyMyArICQxLCAkMSk7CisgIFJFVFVSTiB2YXIzOworRU5EOworJCQgTEFO R1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUIGluYygxKTsKK1NFTEVDVCBpbmMoMSk7CitTRUxFQ1Qg aW5jKDEpOworCitTRUxFQ1QgaW5jKDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApOworCitT RVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgZmFpbAorTEVUIHZhcjMgPSAw OworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitEUk9QIFZJRVcgc2NoZW1hX3Zhcl92aWV3Owor CitEUk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FERTsKK0RST1AgVkFSSUFCTEUgdmFyMyBDQVNDQURF OworCistLSBjb21wb3NpdGUgdmFyaWFibGVzCisKK0NSRUFURSBUWVBFIHN2X3h5eiBBUyAoeCBp bnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgc3Zf eHl6OworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIHN2X3h5ejsKKworXGQgdjEKK1xkIHYyCisKK0xF VCB2MSA9ICgxLDIsMy4xNCk7CitMRVQgdjIgPSAoMTAsMjAsMy4xNCoxMCk7CisKKy0tIHNob3Vs ZCB3b3JrIHRvbyAtIHRoZXJlIGFyZSBwcmVwYXJlZCBjYXN0cworTEVUIHYxID0gKDEsMiwzLjE0 KTsKKworU0VMRUNUIHYxOworU0VMRUNUIHYyOworU0VMRUNUICh2MSkuKjsKK1NFTEVDVCAodjIp Lio7CisKK1NFTEVDVCB2MS54ICsgdjEuejsKK1NFTEVDVCB2Mi54ICsgdjIuejsKKworLS0gYWNj ZXNzIHRvIGNvbXBvc2l0ZSBmaWVsZHMgc2hvdWxkIGJlIHNhZmUgdG9vCistLSBzaG91bGQgZmFp bAorU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworU0VMRUNUIHYyLng7CisKK1NFVCBST0xF IFRPIERFRkFVTFQ7CisKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxFIHYyOworCitS RVZPS0UgVVNBR0UgT04gU0NIRU1BIHN2YXJ0ZXN0IEZST00gdmFyX3Rlc3Rfcm9sZTsKK0RST1Ag Uk9MRSB2YXJfdGVzdF9yb2xlOworCistLSBzY2FsYXIgdmFyaWFibGVzIHNob3VsZCBub3QgYmUg aW4gY29uZmxpY3Qgd2l0aCBxdWFsaWZpZWQgY29sdW1uCitDUkVBVEUgVkFSSUFCTEUgdmFyeCBB UyB0ZXh0OworU0VMRUNUIHZhcngucmVsbmFtZSBGUk9NIHBnX2NsYXNzIHZhcnggV0hFUkUgdmFy eC5yZWxuYW1lID0gJ3BnX2NsYXNzJzsKKworLS0gc2hvdWxkIGZhaWwKK1NFTEVDVCB2YXJ4Lnh4 eDsKKworLS0gZG9uJ3QgYWxsb3cgbXVsdGkgY29sdW1uIHF1ZXJ5CitDUkVBVEUgVFlQRSB2YXJ0 ZXN0dHAgQVMgKGExIGludCwgYjEgaW50LCBjMSBpbnQpOworQ1JFQVRFIFZBUklBQkxFIHYxIEFT IHZhcnRlc3R0cDsKKworLS0gc2hvdWxkIGZhaWwKK0xFVCB2MSA9IChOVUxMOjp2YXJ0ZXN0dHAp Lio7CisKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFRZUEUgdmFydGVzdHRwOworCistLSB2YXJp YWJsZXMgY2FuIGJlIHVwZGF0ZWQgdW5kZXIgUk8gdHJhbnNhY3Rpb24KKworQkVHSU47CitTRVQg VFJBTlNBQ1RJT04gUkVBRCBPTkxZOworTEVUIHZhcnggPSAnaGVsbG8nOworQ09NTUlUOworCitT RUxFQ1QgdmFyeDsKKworRFJPUCBWQVJJQUJMRSB2YXJ4OworCitDUkVBVEUgVFlQRSB0MSBBUyAo YSBpbnQsIGIgbnVtZXJpYywgYyB0ZXh0KTsKKworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHQxOwor TEVUIHYxID0gKDEsIHBpKCksICdoZWxsbycpOworU0VMRUNUIHYxOworTEVUIHYxLmIgPSAxMC4y MjIyOworU0VMRUNUIHYxOworCistLSBzaG91bGQgZmFpbAorTEVUIHYxLnggPSAxMDsKKworRFJP UCBWQVJJQUJMRSB2MTsKK0RST1AgVFlQRSB0MTsKKworLS0gYXJyYXlzIGFyZSBzdXBwb3J0ZWQK K0NSRUFURSBWQVJJQUJMRSB2YTEgQVMgbnVtZXJpY1tdOworTEVUIHZhMSA9IEFSUkFZWzEuMSwy LjFdOworTEVUIHZhMVsxXSA9IDEwLjE7CitTRUxFQ1QgdmExOworCitDUkVBVEUgVFlQRSB0YTIg QVMgKGEgbnVtZXJpYywgYiBudW1lcmljW10pOworQ1JFQVRFIFZBUklBQkxFIHZhMiBBUyB0YTI7 CitMRVQgdmEyID0gKDEwLjEsIEFSUkFZWzAuMCwgMC4wXSk7CitMRVQgdmEyLmEgPSAxMC4yOwor U0VMRUNUIHZhMjsKK0xFVCB2YTIuYlsxXSA9IDEwLjM7CitTRUxFQ1QgdmEyOworCitEUk9QIFZB UklBQkxFIHZhMTsKK0RST1AgVkFSSUFCTEUgdmEyOworRFJPUCBUWVBFIHRhMjsKKworLS0gZGVm YXVsdCB2YWx1ZXMKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBudW1lcmljIERFRkFVTFQgcGkoKTsK K0xFVCB2MSA9IHYxICogMjsKK1NFTEVDVCB2MTsKKworQ1JFQVRFIFRZUEUgdDIgQVMgKGEgbnVt ZXJpYywgYiB0ZXh0KTsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyB0MiBERUZBVUxUIChOVUxMLCAn SGVsbG8nKTsKK0xFVCBzdmFydGVzdC52Mi5hID0gcGkoKTsKK1NFTEVDVCB2MjsKKworLS0gc2hv dWxkIGZhaWwgZHVlIGRlcGVuZGVuY3kKK0RST1AgVFlQRSB0MjsKKworLS0gc2hvdWxkIGJlIG9r CitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJMRSB2MjsKKworLS0gdGVzdHMgb2YgYWx0 ZXJzCitDUkVBVEUgU0NIRU1BIHZhcl9zY2hlbWExOworQ1JFQVRFIFNDSEVNQSB2YXJfc2NoZW1h MjsKKworQ1JFQVRFIFZBUklBQkxFIHZhcl9zY2hlbWExLnZhcjEgQVMgaW50ZWdlcjsKK0xFVCB2 YXJfc2NoZW1hMS52YXIxID0gMTAwMDsKK1NFTEVDVCB2YXJfc2NoZW1hMS52YXIxOworQUxURVIg VkFSSUFCTEUgdmFyX3NjaGVtYTEudmFyMSBTRVQgU0NIRU1BIHZhcl9zY2hlbWEyOworU0VMRUNU IHZhcl9zY2hlbWEyLnZhcjE7CisKK0NSRUFURSBST0xFIHZhcl90ZXN0X3JvbGU7CisKK0FMVEVS IFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjEgT1dORVIgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBS T0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCBmYWlsLCBubyBhY2Nlc3MgdG8gc2No ZW1hIHZhcl9zY2hlbWEyLnZhcgorU0VMRUNUIHZhcl9zY2hlbWEyLnZhcjE7CitEUk9QIFZBUklB QkxFIHZhcl9zY2hlbWEyLnZhcjE7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0FMVEVSIFZB UklBQkxFIHZhcl9zY2hlbWEyLnZhcjEgU0VUIFNDSEVNQSBwdWJsaWM7CisKK1NFVCBST0xFIFRP IHZhcl90ZXN0X3JvbGU7CitTRUxFQ1QgcHVibGljLnZhcjE7CisKK0FMVEVSIFZBUklBQkxFIHB1 YmxpYy52YXIxIFJFTkFNRSBUTyB2YXIxX3JlbmFtZWQ7CisKK1NFTEVDVCBwdWJsaWMudmFyMV9y ZW5hbWVkOworCitEUk9QIFZBUklBQkxFIHB1YmxpYy52YXIxX3JlbmFtZWQ7CisKK1NFVCBST0xF IFRPIERFRkFVTHQ7CisKKy0tIGRlZmF1bHQgcmlnaHRzIHRlc3QKK0FMVEVSIERFRkFVTFQgUFJJ VklMRUdFUyBJTiBTQ0hFTUEgcHVibGljIEdSQU5UIEFMTCBPTiBWQVJJQUJMRVMgVE8gdmFyX3Rl c3Rfcm9sZTsKKworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy52YXIyIEFTIGludDsKKworU0VUIFJP TEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIGJlIG9rCitMRVQgcHVibGljLnZhcjIg PSAxMDA7CitTRUxFQ1QgcHVibGljLnZhcjI7CisKK1NFVCBST0xFIFRPIERFRkFVTHQ7CisKK0RS T1AgVkFSSUFCTEUgcHVibGljLnZhcjI7CitEUk9QIE9XTkVEIEJZIHZhcl90ZXN0X3JvbGU7CisK K0RST1AgUk9MRSB2YXJfdGVzdF9yb2xlOworCitDUkVBVEUgVkFSSUFCTEUgeHggQVMgdGV4dCBE RUZBVUxUICdoZWxsbyc7CisKK1NFTEVDVCB4eCwgdXBwZXIoeHgpOworCitMRVQgeHggPSAnSGkn OworCitTRUxFQ1QgeHg7CisKK0RST1AgVkFSSUFCTEUgeHg7CisKKy0tIE9OIFRSQU5TQUNUSU9O IEVORCBSRVNFVCB0ZXN0cworQ1JFQVRFIFZBUklBQkxFIHQxIEFTIGludCBERUZBVUxUIC0xIE9O IFRSQU5TQUNUSU9OIEVORCBSRVNFVDsKKworQkVHSU47CisgIFNFTEVDVCB0MTsKKyAgTEVUIHQx ID0gMTAwOworICBTRUxFQ1QgdDE7CitDT01NSVQ7CisKK1NFTEVDVCB0MTsKKworQkVHSU47Cisg IFNFTEVDVCB0MTsKKyAgTEVUIHQxID0gMTAwOworICBTRUxFQ1QgdDE7CitST0xMQkFDSzsKKwor U0VMRUNUIHQxOworCitEUk9QIFZBUklBQkxFIHQxOworCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMg aW50IERFRkFVTFQgMDsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyB0ZXh0IERFRkFVTFQgJ25vbmUn OworCitMRVQgdjEgPSAxMDA7CitMRVQgdjIgPSAnSGVsbG8nOworU0VMRUNUIHYxLCB2MjsKK0xF VCB2MSA9IERFRkFVTFQ7CitMRVQgdjIgPSBERUZBVUxUOworU0VMRUNUIHYxLCB2MjsKKworRFJP UCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CisKKy0tIE9OIENPTU1JVCBEUk9QIHRl c3RzCistLSBzaG91bGQgYmUgMCBhbHdheXMKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3Zhcmlh YmxlOworCitDUkVBVEUgVEVNUCBWQVJJQUJMRSBnIEFTIGludCBPTiBDT01NSVQgRFJPUDsKKwor U0VMRUNUIGNvdW50KCopIEZST00gcGdfdmFyaWFibGU7CisKK0JFR0lOOworICBDUkVBVEUgVEVN UCBWQVJJQUJMRSBnIEFTIGludCBPTiBDT01NSVQgRFJPUDsKK0NPTU1JVDsKKworU0VMRUNUIGNv dW50KCopIEZST00gcGdfdmFyaWFibGU7CisKK0JFR0lOOworICBDUkVBVEUgVEVNUCBWQVJJQUJM RSBnIEFTIGludCBPTiBDT01NSVQgRFJPUDsKK1JPTExCQUNLOworCitTRUxFQ1QgY291bnQoKikg RlJPTSBwZ192YXJpYWJsZTsKKworQkVHSU47CisgIENSRUFURSBURU1QIFZBUklBQkxFIGcgQVMg aW50IE9OIENPTU1JVCBEUk9QOworICBMRVQgZyA9IDE7CisgIERJU0NBUkQgVkFSSUFCTEVTOwor Q09NTUlUOworCitTRUxFQ1QgY291bnQoKikgRlJPTSBwZ192YXJpYWJsZTsKKworQkVHSU47Cisg IENSRUFURSBURU1QIFZBUklBQkxFIGcgQVMgaW50IE9OIENPTU1JVCBEUk9QOworICBMRVQgZyA9 IDE7CisgIERJU0NBUkQgVkFSSUFCTEVTOworUk9MTEJBQ0s7CisKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ZhcmlhYmxlOworCistLSBFbmNvdXJhZ2UgdXNlIG9mIHBhcmFsbGVsIHBsYW5zCitT RVQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitTRVQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7 CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitTRVQgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CisKKy0tIHRlc3Qgb24gcXVlcnkgd2l0aCB3b3JrZXJz CitDUkVBVEUgVEFCTEUgc3Zhcl90ZXN0KGEgaW50KTsKK0lOU0VSVCBJTlRPIHN2YXJfdGVzdCBT RUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDApOworQU5BTFlaRSBzdmFyX3Rlc3Q7 CitDUkVBVEUgVkFSSUFCTEUgemVybyBpbnQ7CitMRVQgemVybyA9IDA7CisKKy0tIHBhcmFsbGVs IHdvcmtlcnMgc2hvdWxkIGJlIHVzZWQKK0VYUExBSU4gKGNvc3RzIG9mZikgU0VMRUNUIGNvdW50 KCopIEZST00gc3Zhcl90ZXN0IFdIRVJFIGElMTAgPSB6ZXJvOworCistLSByZXN1bHQgc2hvdWxk IGJlIDEwMAorU0VMRUNUIGNvdW50KCopIEZST00gc3Zhcl90ZXN0IFdIRVJFIGElMTAgPSB6ZXJv OworCitMRVQgemVybyA9IChTRUxFQ1QgY291bnQoKikgRlJPTSBzdmFyX3Rlc3QpOworCistLSBy ZXN1bHQgc2hvdWxkIGJlIDEwMDAKK1NFTEVDVCB6ZXJvOworCistLSBwYXJhbGxlbCB3b3JrZXJz IHNob3VsZCBiZSB1c2VkCitFWFBMQUlOIChjb3N0cyBvZmYpIExFVCB6ZXJvID0gKFNFTEVDVCBj b3VudCgqKSBGUk9NIHN2YXJfdGVzdCk7CisKKy0tIHRlc3QgZm9yIGRlcGVuZGVuY3kgb24gcmVs YXRpb24KK0NSRUFURSBWQVJJQUJMRSB2X3RhYmxlIEFTIHN2YXJfdGVzdDsKKworQUxURVIgVEFC TEUgc3Zhcl90ZXN0IEFMVEVSIENPTFVNTiBhIFRZUEUgdGV4dDsKKworRFJPUCBWQVJJQUJMRSB2 X3RhYmxlOworRFJPUCBUQUJMRSBzdmFyX3Rlc3Q7CitEUk9QIFZBUklBQkxFIHplcm87CisKK1JF U0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxlbF90dXBsZV9jb3N0OworUkVT RVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXI7CisKKy0tIHVzZSB2YXJpYWJsZXMgaW4gcHJlcGFyZWQgc3RhdGVtZW50 cworQ1JFQVRFIFZBUklBQkxFIHYgQVMgbnVtZXJpYzsKK0xFVCB2ID0gMy4xNDsKKworLS0gdXNl IHZhcmlhYmxlcyBpbiB2aWV3cworQ1JFQVRFIFZJRVcgdnYgQVMgU0VMRUNUIENPQUxFU0NFKHYs IDApICsgMTAwMCBBUyByZXN1bHQ7CitTRUxFQ1QgKiBGUk9NIHZ2OworCistLSBzdGFydCBhIG5l dyBzZXNzaW9uCitcYworCitTRVQgc2VhcmNoX3BhdGggdG8gc3ZhcnRlc3Q7CisKK1NFTEVDVCAq IEZST00gdnY7CitMRVQgdiA9IDMuMTQ7CitTRUxFQ1QgKiBGUk9NIHZ2OworCistLSBzaG91bGQg ZmFpbCwgZGVwZW5kZW5jeQorRFJPUCBWQVJJQUJMRSB2OworCistLSBzaG91bGQgYmUgb2sKK0RS T1AgVkFSSUFCTEUgdiBDQVNDQURFOworCistLSBvdGhlciBmZWF0dXJlcworQ1JFQVRFIFZBUklB QkxFIGR0IEFTIGludGVnZXIgREVGQVVMVCAwOworCitMRVQgZHQgPSAxMDA7CitTRUxFQ1QgZHQ7 CisKK0RJU0NBUkQgVkFSSUFCTEVTOworCitTRUxFQ1QgZHQ7CisKK0RST1AgVkFSSUFCTEUgZHQ7 CisKKy0tIE5PVCBOVUxMCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgaW50IE5PVCBOVUxMOworQ1JF QVRFIFZBUklBQkxFIHYyIEFTIGludCBOT1QgTlVMTCBERUZBVUxUIE5VTEw7CisKKy0tIHNob3Vs ZCBmYWlsCitTRUxFQ1QgdjE7CitTRUxFQ1QgdjI7CitMRVQgdjEgPSBOVUxMOworTEVUIHYyID0g TlVMTDsKK0xFVCB2MSA9IERFRkFVTFQ7CitMRVQgdjIgPSBERUZBVUxUOworCistLSBzaG91bGQg YmUgb2sKK0xFVCB2MSA9IDEwMDsKK0xFVCB2MiA9IDEwMDA7CitTRUxFQ1QgdjEsIHYyOworCitE Uk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJMRSB2MjsKKworQ1JFQVRFIFZBUklBQkxFIHR2 IEFTIGludDsKK0NSRUFURSBWQVJJQUJMRSBJRiBOT1QgRVhJU1RTIHR2IEFTIGludDsKK0RST1Ag VkFSSUFCTEUgdHY7CisKK0NSRUFURSBJTU1VVEFCTEUgVkFSSUFCTEUgaXYgQVMgaW50IERFRkFV TFQgMTAwOworU0VMRUNUIGl2OworCistLSBzaG91bGQgZmFpbDsKK0xFVCBpdiA9IDEwMDAwOwor CitEUk9QIFZBUklBQkxFIGl2OworCistLSBkaWZmZXJlbnQgb3JkZXIKK0NSRUFURSBJTU1VVEFC TEUgVkFSSUFCTEUgaXYgQVMgaW50IERFRkFVTFQgMTAwOworLS0gc2hvdWxkIHRvIGZhaWwKK0xF VCBpdiA9IDEwMDAwOworLS0gc2hvdWxkIGJlIG9rCitTRUxFQ1QgaXY7CisKK0RST1AgVkFSSUFC TEUgaXY7CisKK0NSRUFURSBJTU1VVEFCTEUgVkFSSUFCTEUgaXYgQVMgaW50OworCistLSBzaG91 bGQgYmUgb2sKK0xFVCBpdiA9IE5VTEw7CisKKy0tIHNob3VsZCBmYWlsCitMRVQgaXYgPSBOVUxM OworCitEUk9QIFZBUklBQkxFIGl2OworCistLSBjcmVhdGUgdmFyaWFibGUgaW5zaWRlIHBscGdz cWwgYmxvY2sKK0RPICQkCitCRUdJTgorICBDUkVBVEUgVkFSSUFCTEUgZG9fdGVzdF9zdmFyIEFT IGRhdGUgREVGQVVMVCAnMjAwMC0wMS0wMSc7CitFTkQ7CiskJDsKKworU0VMRUNUIGRvX3Rlc3Rf c3ZhcjsKKworRFJPUCBWQVJJQUJMRSBkb190ZXN0X3N2YXI7CisKKy0tIHNob3VsZCBmYWlsCitD UkVBVEUgSU1NVVRBQkxFIFZBUklBQkxFIHh4IEFTIGludCBOT1QgTlVMTDsKKworCisKKy0tIFJF QVNTSUdOIE9XTkVEIHRlc3QKK0NSRUFURSBST0xFIHZhcl90ZXN0X3JvbGUxOworQ1JFQVRFIFJP TEUgdmFyX3Rlc3Rfcm9sZTI7CisKK0NSRUFURSBWQVJJQUJMRSB4eHhfdmFyIEFTIGludDsKKwor QUxURVIgVkFSSUFCTEUgeHh4X3ZhciBPV05FUiBUTyB2YXJfdGVzdF9yb2xlMTsKK1JFQVNTSUdO IE9XTkVEIEJZIHZhcl90ZXN0X3JvbGUxIHRvIHZhcl90ZXN0X3JvbGUyOworCitTRUxFQ1QgdmFy b3duZXI6OnJlZ3JvbGUgRlJPTSBwZ192YXJpYWJsZSBXSEVSRSB2YXJuYW1lID0gJ3h4eF92YXIn OworCitEUk9QIE9XTkVEIEJZIHZhcl90ZXN0X3JvbGUxOworRFJPUCBST0xFIHZhcl90ZXN0X3Jv bGUxOworU0VMRUNUIGNvdW50KCopIEZST00gcGdfdmFyaWFibGUgV0hFUkUgdmFybmFtZSA9ICd4 eHhfdmFyJzsKKworRFJPUCBPV05FRCBCWSB2YXJfdGVzdF9yb2xlMjsKK0RST1AgUk9MRSB2YXJf dGVzdF9yb2xlMjsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ZhcmlhYmxlIFdIRVJFIHZhcm5h bWUgPSAneHh4X3Zhcic7CisKKy0tIGNyZWF0aW5nLCBkcm9wcGluZyB0ZW1wb3JhcnkgdmFyaWFi bGUKK0JFR0lOOworCitDUkVBVEUgVEVNUCBWQVJJQUJMRSB0ZW1wdmFyIEFTIElOVCBPTiBDT01N SVQgRFJPUDsKKworTEVUIHRlbXB2YXIgPSAxMDA7CisKK1NBVkVQT0lOVCBzMTsKKworRFJPUCBW QVJJQUJMRSB0ZW1wdmFyOworCitST0xMQkFDSyBUTyBzMTsKKworU0VMRUNUIHRlbXB2YXI7CisK K0NPTU1JVDsKKworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB0ZW1wdmFyID0gMTAwOworCitCRUdJ TjsKKworU0FWRVBPSU5UIHMxOworCitDUkVBVEUgVEVNUCBWQVJJQUJMRSB0ZW1wdmFyIEFTIElO VCBPTiBDT01NSVQgRFJPUDsKKworTEVUIHRlbXB2YXIgPSAxMDA7CisKK1JPTExCQUNLIFRPIHMx OworCitDT01NSVQ7CisKKy0tIHNob3VsZCB0byBmYWlsCitMRVQgdGVtcHZhciA9IDEwMDsKKwor Q1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50OworTEVUIHZhcjEgPSAxMDA7CitCRUdJTjsKK0RS T1AgVkFSSUFCTEUgdmFyMTsKK1JPTExCQUNLOworU0VMRUNUIHZhcjE7CisKK0RST1AgVkFSSUFC TEUgdmFyMTsKKworQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50IERFRkFVTFQgMTAwOworQ09N TUVOVCBPTiBWQVJJQUJMRSB2YXIxIElTICdzb21lIHZhcmlhYmxlIGNvbW1lbnQnOworCitTRUxF Q1QgcGdfY2F0YWxvZy5vYmpfZGVzY3JpcHRpb24ob2lkLCAncGdfdmFyaWFibGUnKSBGUk9NIHBn X3ZhcmlhYmxlIFdIRVJFIHZhcm5hbWUgPSAndmFyMSc7CisKK0RST1AgVkFSSUFCTEUgdmFyMTsK KworQ1JFQVRFIFRBQkxFIHh4dGFiKGF2YXIgaW50KTsKKworQ1JFQVRFIFRZUEUgeHh0eXBlIEFT IChhdmFyIGludCk7CisKK0NSRUFURSBWQVJJQUJMRSB4eHRhYiBBUyB4eHR5cGU7CisKK0lOU0VS VCBJTlRPIHh4dGFiIFZBTFVFUygxMCk7CisKKy0tIGl0IGlzIGFtYmlndW91cywgYnV0IGNvbHVt bnMgYXJlIHByZWZlcnJlZAorLS0gdmFyaWFibGUgaXMgc2hhZG93ZWQKK1NFTEVDVCB4eHRhYi5h dmFyIEZST00geHh0YWI7CisKK1NFVCBzZXNzaW9uX3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2Fybmlu ZyBUTyBvbjsKKworU0VMRUNUIHh4dGFiLmF2YXIgRlJPTSB4eHRhYjsKKworU0VUIHNlYXJjaF9w YXRoID0gc3ZhcnRlc3Q7CisKK0NSRUFURSBWQVJJQUJMRSB0ZXN0dmFyIGFzIGludDsKKworLS0g cGxwZ3NxbCB2YXJpYWJsZXMgYXJlIHByZWZlcnJlZCBhZ2FpbnN0IHNlc3Npb24gdmFyaWFibGVz CitETyAkJAorPDxteWJsb2NrPj4KK0RFQ0xBUkUgdGVzdHZhciBpbnQ7CitCRUdJTgorICAtLSBz aG91bGQgYmUgb2sgd2l0aG91dCB3YXJuaW5nCisgIExFVCB0ZXN0dmFyID0gMTAwOworICAtLSBz aG91bGQgYmUgb2sgd2l0aG91dCB3YXJuaW5nCisgIHRlc3R2YXIgOj0gMTAwMDsKKyAgLS0gc2hv dWxkIGJlIG9rIHdpdGhvdXQgd2FybmluZworICBSQUlTRSBOT1RJQ0UgJ3Nlc3Npb24gdmFyaWFi bGUgaXMgJScsIHN2YXJ0ZXN0LnRlc3R2YXI7CisgIC0tIHNob3VsZCBiZSBvayB3aXRob3V0IHdh cm5pbmcKKyAgUkFJU0UgTk9USUNFICdwbHBnc3FsIHZhcmlhYmxlIGlzICUnLCBteWJsb2NrLnRl c3R2YXI7CisgIC0tIHNob3VsZCB0byBwcmludCBwbHBnc3FsIHZhcmlhYmxlIHdpdGggd2Fybmlu ZworICBSQUlTRSBOT1RJQ0UgJ3ZhcmlhYmxlIGlzICUnLCB0ZXN0dmFyOworRU5EOworJCQ7CisK K0RST1AgVkFSSUFCTEUgdGVzdHZhcjsKKworU0VUIHNlc3Npb25fdmFyaWFibGVzX2FtYmlndWl0 eV93YXJuaW5nIFRPIGRlZmF1bHQ7CisKKy0tIHNob3VsZCBiZSBvaworU0VMRUNUIGF2YXIgRlJP TSB4eHRhYjsKKworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5hdmFyIEFTIGludDsKKworLS0gc2hv dWxkIGJlIG9rLCBzZWUgdGhlIHRhYmxlCitTRUxFQ1QgYXZhciBGUk9NIHh4dGFiOworCistLSBz aG91bGQgYmUgb2sKK1NFTEVDVCBwdWJsaWMuYXZhciBGUk9NIHh4dGFiOworCitEUk9QIFZBUklB QkxFIHh4dGFiOworCitTRUxFQ1QgeHh0YWIuYXZhciBGUk9NIHh4dGFiOworCitEUk9QIFZBUklB QkxFIHB1YmxpYy5hdmFyOworCitEUk9QIFRZUEUgeHh0eXBlOworCitEUk9QIFRBQkxFIHh4dGFi OworCistLSB0ZXN0IG9mIHBsYW4gY2FjaGUgaW52YWxpZGF0aW9uCitDUkVBVEUgVkFSSUFCTEUg eHggQVMgaW50OworCitTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOwor CitQUkVQQVJFIHBwIEFTIFNFTEVDVCB4eDsKKworRVhFQ1VURSBwcDsKKworRFJPUCBWQVJJQUJM RSB4eDsKKworQ1JFQVRFIFZBUklBQkxFIHh4IEFTIGludDsKKworLS0gc2hvdWxkIHRvIHdvcmsK K0VYRUNVVEUgcHA7CisKK0RST1AgVkFSSUFCTEUgeHg7CisKK0RFQUxMT0NBVEUgcHA7CisKK1NF VCBwbGFuX2NhY2hlX21vZGUgPSBERUZBVUxUOworCitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xl OworCitDUkVBVEUgU0NIRU1BIHZhcnRlc3Q7CisKK0dSQU5UIFVTQUdFIE9OIFNDSEVNQSB2YXJ0 ZXN0IFRPIHZhcl90ZXN0X3JvbGU7CisKK0NSRUFURSBWQVJJQUJMRSB2YXJ0ZXN0LnggQVMgaW50 OworQ1JFQVRFIFZBUklBQkxFIHZhcnRlc3QueSBBUyBpbnQ7CisKK0xFVCB2YXJ0ZXN0LnggPSAx MDA7CitMRVQgdmFydGVzdC55ID0gMTAxOworCitHUkFOVCBTRUxFQ1QgT04gQUxMIFZBUklBQkxF UyBJTiBTQ0hFTUEgdmFydGVzdCBUTyB2YXJfdGVzdF9yb2xlOworCitTRVQgUk9MRSBUTyB2YXJf dGVzdF9yb2xlOworCitTRUxFQ1QgdmFydGVzdC54LCB2YXJ0ZXN0Lnk7CisKK1NFVCBST0xFIFRP IERFRkFVTFQ7CisKK1JFVk9LRSBTRUxFQ1QgT04gQUxMIFZBUklBQkxFUyBJTiBTQ0hFTUEgdmFy dGVzdCBGUk9NIHZhcl90ZXN0X3JvbGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisK Ky0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgdmFydGVzdC54OworU0VMRUNUIHZhcnRlc3QueTsK KworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworRFJPUCBWQVJJQUJMRSB2YXJ0ZXN0LngsIHZhcnRl c3QueTsKKworRFJPUCBTQ0hFTUEgdmFydGVzdDsKKworRFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7 CisKKy0tIHRlc3QgY2FjaGVkIHBsYW4KK0NSRUFURSBWQVJJQUJMRSB2MSBBUyB0ZXh0OworQ1JF QVRFIFZBUklBQkxFIHYyIEFTIGludDsKK0NSRUFURSBWQVJJQUJMRSB2MyBBUyBpbnQ7CisKK0xF VCB2MSA9ICd0ZXN0JzsKK0xFVCB2MiA9IDEwOworTEVUIHYzID0gNTsKKworUFJFUEFSRSBxMSBB UyBTRUxFQ1QgdjEgfHwgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCB2MikgZyhpKSBXSEVSRSBp IElOICh2MiwgdjMpOworCitTRVQgcGxhbl9jYWNoZV9tb2RlIHRvIGZvcmNlX2dlbmVyaWNfcGxh bjsKKworRVhFQ1VURSBxMTsKKworRVhQTEFJTiBFWEVDVVRFIHExOworCistLSBkZXBlbmRlY3kg Y2hlY2sKK0RST1AgVkFSSUFCTEUgdjM7CisKKy0tIHJlY3JlYXRlIHYzIGFnYWluCitDUkVBVEUg VkFSSUFCTEUgdjMgQVMgaW50IERFRkFVTFQgNjsKKworLS0gc2hvdWxkIHRvIHdvcmssIHRoZSBw bGFuIHNob3VsZCBiZSByZWNyZWF0ZWQKK0VYRUNVVEUgcTE7CisKK0RFQUxMT0NBVEUgcTE7CisK Ky0tIGZpbGwgdjEgYnkgbG9uZyB0ZXh0CitMRVQgdjEgPSByZXBlYXQoJyAnLCAxMDAwMCk7CisK K1BSRVBBUkUgcTEgQVMgU0VMRUNUIGxlbmd0aCh2MSk7CisKK0VYRUNVVEUgcTE7CisKK0xFVCB2 MSA9IHJlcGVhdCgnICcsIDUwMDApOworCitFWEVDVVRFIHExOworCitERUFMTE9DQVRFIHExOwor CitTRVQgcGxhbl9jYWNoZV9tb2RlIHRvIGRlZmF1bHQ7CisKK0RST1AgVkFSSUFCTEUgdjEsIHYy LCB2MzsKKworQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKworQ1JFQVRFIFZBUklBQkxFIHB1 YmxpYy52MSBBUyBpbnQgREVGQVVMVCAwOworCistLSBjaGVjayBhY2wgd2hlbiB2YXJpYWJsZSBp cyBhY2Vzc2VkIGJ5IHNpbXBsZSBldmFsIGV4cHIgbWV0aG9kCitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiBwdWJsaWMuZnhfdmFyKGludCkKK1JFVFVSTlMgaW50IEFTICQkCitERUNMQVJFIHh4 IGludDsKK0JFR0lOCisgIHh4IDo9IHB1YmxpYy52MSArICQxOworICBSRVRVUk4geHg7CitFTkQ7 CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCistLSBzaG91bGQgYmUgb2sKK1NFTEVDVCBwdWJsaWMu ZnhfdmFyKDApOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8g ZmFpbAorU0VMRUNUIHB1YmxpYy5meF92YXIoMCk7CisKK1NFVCBST0xFIFRPIGRlZmF1bHQ7CisK K0dSQU5UIFNFTEVDVCBPTiBWQVJJQUJMRSBwdWJsaWMudjEgVE8gdmFyX3Rlc3Rfcm9sZTsKKwor U0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIGJlIG9rCitTRUxFQ1QgcHVi bGljLmZ4X3ZhcigwKTsKKworU0VUIFJPTEUgVE8gZGVmYXVsdDsKKworUkVWT0tFIFNFTEVDVCBP TiBWQVJJQUJMRSBwdWJsaWMudjEgRlJPTSB2YXJfdGVzdF9yb2xlOworCitTRVQgUk9MRSBUTyB2 YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgYmUgZmFpbAorU0VMRUNUIHB1YmxpYy5meF92YXIo MCk7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0RST1AgRlVOQ1RJT04gcHVibGljLmZ4X3Zh cihpbnQpOworCitEUk9QIFZBUklBQkxFIHB1YmxpYy52MTsKKworRFJPUCBST0xFIHZhcl90ZXN0 X3JvbGU7CisKK0NSRUFURSBUWVBFIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZSBBUyAoYSBpbnQsIGIg aW50LCBjIG51bWVyaWMpOworCitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnN2YXIgQVMgcHVibGlj LnN2YXJfdGVzdF90eXBlOworCitMRVQgcHVibGljLnN2YXIgPSBST1coMTAsMjAsMzApOworCitT RUxFQ1QgcHVibGljLnN2YXI7CisKK0FMVEVSIFRZUEUgcHVibGljLnN2YXJfdGVzdF90eXBlIERS T1AgQVRUUklCVVRFIGM7CisKKy0tIHNob3VsZCBiZSBvaworU0VMRUNUIHB1YmxpYy5zdmFyOwor CitBTFRFUiBUWVBFIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZSBBREQgQVRUUklCVVRFIGMgaW50Owor CistLSBzaG91bGQgYmUgb2sKK1NFTEVDVCBwdWJsaWMuc3ZhcjsKKworTEVUIHB1YmxpYy5zdmFy ID0gUk9XKDEwLDIwLDMwKTsKKworLS0gc2hvdWxkIGJlIG9rIGFnYWluIGZvciBuZXcgdmFsdWUK K1NFTEVDVCBwdWJsaWMuc3ZhcjsKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKKworRFJP UCBUWVBFIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZTsKKworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5z dmFyIEFTIGludDsKK3NlbGVjdCBvaWQgYXMgdmFyaWQgZnJvbSBwZ192YXJpYWJsZSB3aGVyZSB2 YXJuYW1lID0gJ3N2YXInIGFuZCB2YXJuYW1lc3BhY2UgPSAncHVibGljJzo6cmVnbmFtZXNwYWNl IFxnc2V0CisKK1NFTEVDVCBzY2hlbWEsIG5hbWUsIHJlbW92ZWQgRlJPTSBwZ19zZXNzaW9uX3Zh cmlhYmxlcygpOworCitMRVQgcHVibGljLnN2YXIgPSAxMDA7CisKK1NFTEVDVCBzY2hlbWEsIG5h bWUsIHJlbW92ZWQgRlJPTSBwZ19zZXNzaW9uX3ZhcmlhYmxlcygpOworCitCRUdJTjsKKworRFJP UCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKKworLS0gdmFsdWUgc2hvdWxkIGJlIGluIG1lbW9yeQor U0VMRUNUIHNjaGVtYSwgcmVtb3ZlZCBGUk9NIHBnX3Nlc3Npb25fdmFyaWFibGVzKCk7CisKK1JP TExCQUNLOworCistLSB2YWx1ZSBzaG91bGQgYmUgaW4gbWVtb3J5CitTRUxFQ1Qgc2NoZW1hLCBu YW1lLCByZW1vdmVkIEZST00gcGdfc2Vzc2lvbl92YXJpYWJsZXMoKSBmIFdIRVJFIGYudmFyaWQg PSA6dmFyaWQ7CisKK1NFTEVDVCBwdWJsaWMuc3ZhcjsKKworQkVHSU47CisKK0RST1AgVkFSSUFC TEUgcHVibGljLnN2YXI7CisKKy0tIHZhbHVlIHNob3VsZCBiZSBpbiBtZW1vcnkKK1NFTEVDVCBz Y2hlbWEsIG5hbWUgPSA6dmFyaWQ6OnRleHQgQVMgb2ssIHJlbW92ZWQgRlJPTSBwZ19zZXNzaW9u X3ZhcmlhYmxlcygpIGYgV0hFUkUgZi52YXJpZCA9IDp2YXJpZDs7CisKK0NPTU1JVDsKKworLS0g dGhlIG1lbW9yeSBzaG91bGQgYmUgY2xlYW47CitTRUxFQ1Qgc2NoZW1hLCBuYW1lLCByZW1vdmVk IEZST00gcGdfc2Vzc2lvbl92YXJpYWJsZXMoKSBXSEVSRSBmLnZhcmlkID0gOnZhcmlkOworCitC RUdJTjsKKworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5zdmFyIEFTIGludDsKK3NlbGVjdCBvaWQg YXMgdmFyaWQgZnJvbSBwZ192YXJpYWJsZSB3aGVyZSB2YXJuYW1lID0gJ3N2YXInIGFuZCB2YXJu YW1lc3BhY2UgPSAncHVibGljJzo6cmVnbmFtZXNwYWNlIFxnc2V0CisKKworTEVUIHB1YmxpYy5z dmFyID0gMTAwOworCitST0xMQkFDSzsKKworLS0gdGhlIG1lbW9yeSBzaG91bGQgYmUgY2xlYW47 CitTRUxFQ1Qgc2NoZW1hLCBuYW1lLCByZW1vdmVkIEZST00gcGdfc2Vzc2lvbl92YXJpYWJsZXMo KSBmIFdIRVJFIGYudmFyaWQgPSA6dmFyaWQ7CisKK1x1bnNldCB2YXJpZAorCitDUkVBVEUgVkFS SUFCTEUgcHVibGljLnN2YXIgQVMgaW50OworCitMRVQgcHVibGljLnN2YXIgPSAxMDA7CisKKy0t IHJlcGVhdGVkIGFib3J0ZWQgdHJhbnNhY3Rpb24KK0JFR0lOOyBEUk9QIFZBUklBQkxFIHB1Ymxp Yy5zdmFyOyBST0xMQkFDSzsKK0JFR0lOOyBEUk9QIFZBUklBQkxFIHB1YmxpYy5zdmFyOyBST0xM QkFDSzsKK0JFR0lOOyBEUk9QIFZBUklBQkxFIHB1YmxpYy5zdmFyOyBST0xMQkFDSzsKKworLS0g dGhlIHZhbHVlIHNob3VsZCBiZSBzdGlsbCBhdmFpbGFibGUKK1NFTEVDVCBwdWJsaWMuc3ZhcjsK KworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKKworQ1JFQVRFIFRZUEUgcHVibGljLnN2YXJf dGVzdF90eXBlIEFTIChhIGludCwgYiBpbnQpOworCitDUkVBVEUgVkFSSUFCTEUgcHVibGljLnN2 YXIgQVMgcHVibGljLnN2YXJfdGVzdF90eXBlOworCitTRUxFQ1QgcHVibGljLnN2YXI7CisKK0FM VEVSIFRZUEUgcHVibGljLnN2YXJfdGVzdF90eXBlIEFERCBBVFRSSUJVVEUgYyBpbnQ7CisKK1NF TEVDVCBwdWJsaWMuc3ZhcjsKKworQUxURVIgVFlQRSBwdWJsaWMuc3Zhcl90ZXN0X3R5cGUgRFJP UCBBVFRSSUJVVEUgYjsKKworU0VMRUNUIHB1YmxpYy5zdmFyOworCitEUk9QIFZBUklBQkxFIHB1 YmxpYy5zdmFyOworRFJPUCBUWVBFIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZTsKKworQ1JFQVRFIFRZ UEUgcHVibGljLnN2YXJfdGVzdF90eXBlIEFTIChhIGludCwgYiBpbnQpOworCitDUkVBVEUgVkFS SUFCTEUgcHVibGljLnN2YXIgQVMgcHVibGljLnN2YXJfdGVzdF90eXBlOworQ1JFQVRFIFZBUklB QkxFIHB1YmxpYy5zdmFyMiBBUyBwdWJsaWMuc3Zhcl90ZXN0X3R5cGU7CisKK0xFVCBwdWJsaWMu c3ZhciA9ICgxMCwgMjApOworCitBTFRFUiBUWVBFIHB1YmxpYy5zdmFyX3Rlc3RfdHlwZSBBREQg QVRUUklCVVRFIGMgaW50OworCitTRUxFQ1QgcHVibGljLnN2YXI7CisKK0xFVCBwdWJsaWMuc3Zh cjIgPSAoMTAsIDIwLCAzMCk7CisKK0FMVEVSIFRZUEUgcHVibGljLnN2YXJfdGVzdF90eXBlIERS T1AgQVRUUklCVVRFIGI7CisKK1NFTEVDVCBwdWJsaWMuc3ZhcjsKK1NFTEVDVCBwdWJsaWMuc3Zh cjI7CisKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXI7CitEUk9QIFZBUklBQkxFIHB1YmxpYy5z dmFyMjsKK0RST1AgVFlQRSBwdWJsaWMuc3Zhcl90ZXN0X3R5cGU7CisKKy0tIFRoZSBjb21wb3Np dGUgdHlwZSBjYW5ub3QgYmUgY2hhbmdlZCB3aGVuIGl0IGlzIHVzZWQKK0NSRUFURSBUWVBFIHB1 YmxpYy5zdmFyX3R5cGUgQVMgKGEgaW50LCBiIGludCk7CisKK0NSRUFURSBWQVJJQUJMRSBwdWJs aWMuc3ZhciBBUyBwdWJsaWMuc3Zhcl90eXBlOworCistLSBzaG91bGQgdG8gZmFpbAorQUxURVIg VFlQRSBwdWJsaWMuc3Zhcl90eXBlIEFMVEVSIEFUVFJJQlVURSBiIFRZUEUgbnVtZXJpYzsKKwor RFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKKworQ1JFQVRFIFRZUEUgcHVibGljLnN2YXJfdHlw ZTIgQVMgKGEgaW50LCBiIGludCwgYyBwdWJsaWMuc3Zhcl90eXBlKTsKKworQ1JFQVRFIFZBUklB QkxFIHB1YmxpYy5zdmFyIEFTIHB1YmxpYy5zdmFyX3R5cGUyOworCistLSBzaG91bGQgdG8gZmFp bAorQUxURVIgVFlQRSBwdWJsaWMuc3Zhcl90eXBlIEFMVEVSIEFUVFJJQlVURSBiIFRZUEUgbnVt ZXJpYzsKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKK0RST1AgVFlQRSBwdWJsaWMuc3Zh cl90eXBlMjsKK0RST1AgVFlQRSBwdWJsaWMuc3Zhcl90eXBlOworCistLSBUaGUgdmFyaWFibGUg Y2FuIGJlIHNoYWRvd2VkIGJ5IHRhYmxlIG9yIGJ5IGFsaWFzCitDUkVBVEUgVFlQRSBwdWJsaWMu c3Zhcl90eXBlIEFTIChhIGludCwgYiBpbnQsIGMgaW50KTsKK0NSRUFURSBWQVJJQUJMRSBwdWJs aWMuc3ZhciBBUyBwdWJsaWMuc3Zhcl90eXBlOworCitDUkVBVEUgVEFCTEUgcHVibGljLnN2YXIg KGEgaW50LCBiIGludCk7CisKK0lOU0VSVCBJTlRPIHB1YmxpYy5zdmFyIFZBTFVFUygxMCwgMjAp OworCitMRVQgcHVibGljLnN2YXIgPSAoMTAwLCAyMDAsIDMwMCk7CisKKy0tIHNob3VsZCBiZSBv aworLS0gc2hvdyB0YWJsZQorU0VMRUNUICogRlJPTSBwdWJsaWMuc3ZhcjsKK1NFTEVDVCBzdmFy LmEgRlJPTSBwdWJsaWMuc3ZhcjsKK1NFTEVDVCBzdmFyLiogRlJPTSBwdWJsaWMuc3ZhcjsKKwor LS0gc2hvdyB2YXJpYWJsZQorU0VMRUNUIHB1YmxpYy5zdmFyOworU0VMRUNUIHB1YmxpYy5zdmFy LmM7CitTRUxFQ1QgKHB1YmxpYy5zdmFyKS4qOworCistLSB0aGUgdmFyaWFibGUgaXMgc2hhZG93 ZWQsIHJhaXNlIGVycm9yCitTRUxFQ1QgcHVibGljLnN2YXIuYyBGUk9NIHB1YmxpYy5zdmFyOwor CistLSBjYW4gYmUgZml4ZWQgYnkgYWxpYXMKK1NFTEVDVCBwdWJsaWMuc3Zhci5jIEZST00gcHVi bGljLnN2YXIgeDsKKworLS0gYWdhaW4gd2l0aCB3YXJuaW5ncworU0VUIHNlc3Npb25fdmFyaWFi bGVzX2FtYmlndWl0eV93YXJuaW5nIFRPIG9uOworCitTRUxFQ1QgKiBGUk9NIHB1YmxpYy5zdmFy OworU0VMRUNUIHN2YXIuYSBGUk9NIHB1YmxpYy5zdmFyOworU0VMRUNUIHN2YXIuKiBGUk9NIHB1 YmxpYy5zdmFyOworCistLSBzaG93IHZhcmlhYmxlCitTRUxFQ1QgcHVibGljLnN2YXI7CitTRUxF Q1QgcHVibGljLnN2YXIuYzsKK1NFTEVDVCAocHVibGljLnN2YXIpLio7CisKKy0tIHRoZSB2YXJp YWJsZSBpcyBzaGFkb3dlZCwgcmFpc2UgZXJyb3IKK1NFTEVDVCBwdWJsaWMuc3Zhci5jIEZST00g cHVibGljLnN2YXI7CisKKy0tIGNhbiBiZSBmaXhlZCBieSBhbGlhcworU0VMRUNUIHB1YmxpYy5z dmFyLmMgRlJPTSBwdWJsaWMuc3ZhciB4OworCitTRVQgc2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1 aXR5X3dhcm5pbmcgVE8gREVGQVVMVDsKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKK0RS T1AgVEFCTEUgcHVibGljLnN2YXI7CitEUk9QIFRZUEUgcHVibGljLnN2YXJfdHlwZTsKKworLS0g dGhlIExFVCBzdGF0ZW1lbnQgc2hvdWxkIGJlIGRpc2FsbG93ZWQgaW4gQ1RFCitDUkVBVEUgVkFS SUFCTEUgcHVibGljLnN2YXIgQVMgaW50OworV0lUSCB4IEFTIChMRVQgcHVibGljLnN2YXIgPSAx MDApIFNFTEVDVCAqIEZST00geDsKKworLS0gdGhlIExFVCBzdGF0ZW1lbnQgY2FuIGJlIHByZXBh cmVkCitQUkVQQVJFIHBwKGludCkgQVMgTEVUIHB1YmxpYy5zdmFyID0gJDE7CitFWEVDVVRFIHBw KDEwKTsKK1NFTEVDVCBwdWJsaWMuc3ZhcjsKK0VYRUNVVEUgcHAoMTAwMCk7CitTRUxFQ1QgcHVi bGljLnN2YXI7CisKKy0tIHRlc3Qgb2YgY29ycmVjdCBkZXBlbmRlbmN5CitEUk9QIFZBUklBQkxF IHB1YmxpYy5zdmFyOworRVhFQ1VURSBwcCgtMSk7CisKK0RFQUxMT0NBVEUgcHA7CisKK0NSRUFU RSBWQVJJQUJMRSBwdWJsaWMuc3ZhcjIgQVMgaW50OworQ1JFQVRFIFZBUklBQkxFIHB1YmxpYy5z dmFyMSBBUyBpbnQgREVGQVVMVCAxMDA7CisKK1BSRVBBUkUgcHAoaW50KSBBUyBMRVQgcHVibGlj LnN2YXIyID0gcHVibGljLnN2YXIxICsgJDE7CisKK0VYRUNVVEUgcHAoMTAwKTsKKworU0VMRUNU IHB1YmxpYy5zdmFyMSwgcHVibGljLnN2YXIyOworCitMRVQgcHVibGljLnN2YXIxID0gMTAwMDsK KworRVhFQ1VURSBwcCgxMDApOworCitTRUxFQ1QgcHVibGljLnN2YXIxLCBwdWJsaWMuc3ZhcjI7 CisKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXIxOworCitFWEVDVVRFIHBwKDEwMCk7CisKK0RF QUxMT0NBVEUgcHA7CisKK0RST1AgVkFSSUFCTEUgcHVibGljLnN2YXIyOworCitDUkVBVEUgVkFS SUFCTEUgcHVibGljLnN2YXIgQVMgaW50OworCistLSBzaG91bGQgYmUgb2sKK0xFVCBwdWJsaWMu c3ZhciA9IGdlbmVyYXRlX3NlcmllcygxLCAxKTsKKworLS0gc2hvdWxkIGZhaWwKK0xFVCBwdWJs aWMuc3ZhciA9IGdlbmVyYXRlX3NlcmllcygxLCAyKTsKK0xFVCBwdWJsaWMuc3ZhciA9IGdlbmVy YXRlX3NlcmllcygxLCAwKTsKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMuc3ZhcjsKKworU0VUIHNl YXJjaF9wYXRoIFRPIERFRkFVTFQ7CisKK0NSRUFURSBUWVBFIGFiIEFTIChhIGludGVnZXIsIGIg aW50ZWdlcik7CisKK0NSRUFURSBWQVJJQUJMRSB2X2FiIEFTIGFiOworCitDUkVBVEUgVEFCTEUg dl9hYiAoYSBpbnRlZ2VyLCBiIGludGVnZXIpOworCitTRVQgc2Vzc2lvbl92YXJpYWJsZXNfYW1i aWd1aXR5X3dhcm5pbmcgPSAxOworCistLSB3YXJuaW5nIHNob3VsZCBiZSByYWlzZWQKK1NFTEVD VCB2X2FiLmEgRlJPTSB2X2FiOworCitDUkVBVEUgU0NIRU1BIHZfYWI7CisKK0NSRUFURSBWQVJJ QUJMRSB2X2FiLmEgQVMgaW50ZWdlcjsKKworLS0gd2FybmluZyBzaG91bGQgYmUgcmFpc2VkCitT RUxFQ1Qgdl9hYi5hIEZST00gdl9hYjsKKworRFJPUCBWQVJJQUJMRSB2X2FiOworRFJPUCBUQUJM RSB2X2FiOworRFJPUCBUWVBFIGFiOworCitDUkVBVEUgVkFSSUFCTEUgbXl2YXIgQVMgaW50Owor CitTRUxFQ1QgbXl2YXIuYmxhYmxhOworCitEUk9QIFZBUklBQkxFIG15dmFyOworCistLSB0aGUg cmVzdWx0IG9mIHZpZXcgc2hvdWxkIGJlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZSB0b28KK0NSRUFU RSBWQVJJQUJMRSB2MSBBUyBpbnQ7CitMRVQgdjEgPSAxMDsKKworQ1JFQVRFIFZJRVcgdjF2aWV3 IEFTIFNFTEVDVCBDT0FMRVNDRSh2MSwgMCkgQVMgcmVzdWx0OworCitTRUxFQ1QgKiBGUk9NIHYx dmlldzsKKworU0VUIGZvcmNlX3BhcmFsbGVsX21vZGUgVE8gb247CisKK1NFTEVDVCAqIEZST00g djF2aWV3OworCitTRVQgZm9yY2VfcGFyYWxsZWxfbW9kZSBUTyBvZmY7CisKK0RST1AgVklFVyB2 MXZpZXc7CitEUk9QIFZBUklBQkxFIHYxOworCistLSB0aGUgdmFsdWUgc2hvdWxkIG5vdCBiZSBj b3JydXB0ZWQKK0NSRUFURSBWQVJJQUJMRSB2MSB0ZXh0IERFRkFVTFQgJ2FiYyc7CisKK0NSRUFU RSBGVU5DVElPTiBmZnVuYygpCitSRVRVUk5TIHRleHQgQVMgJCQKK0JFR0lOCisgIFJFVFVSTiBn ZnVuYyh2MSk7CitFTkQKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBGVU5DVElPTiBn ZnVuYyh0IHRleHQpCitSRVRVUk5TIHRleHQgQVMgJCQKK0JFR0lOCisgIExFVCB2MSA9ICdCT09N ISc7CisgIFJFVFVSTiB0OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworc2VsZWN0IGZm dW5jKCk7CisKK0RST1AgRlVOQ1RJT04gZmZ1bmMoKTsKK0RST1AgRlVOQ1RJT04gZ2Z1bmModGV4 dCk7CisKK0RST1AgVkFSSUFCTEUgdjE7Ci0tIAoyLjM4LjEKCg== --0000000000009ca7c005eedde9a7 Content-Type: text/x-patch; charset="US-ASCII"; name="v20221202-1-0006-enhancing-psql-for-session-variables.patch" Content-Disposition: attachment; filename="v20221202-1-0006-enhancing-psql-for-session-variables.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb6xukzm4 RnJvbSAwZWQ4MTI3MDIyNzg2ZTdkZjA5Njc5MzUwNmRmN2U4NjM1OWE4OWMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IE1vbiwgNCBBcHIgMjAyMiAyMjo0MDoxMyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDYv MTBdIGVuaGFuY2luZyBwc3FsIGZvciBzZXNzaW9uIHZhcmlhYmxlcwoKXGRWIGFuZCB0YWIgY29t cGxldGUgZm9yIHNlc3Npb24gdmFyaWFibGVzIHJlbGF0ZWQgY29tbWFuZHMKLS0tCiBzcmMvYmlu L3BzcWwvY29tbWFuZC5jICAgICAgfCAgMyArKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAg IHwgOTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmggICAgIHwgIDMgKysKIHNyYy9iaW4vcHNxbC9oZWxwLmMgICAgICAgICB8ICAx ICsKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyB8IDY0ICsrKysrKysrKysrKysrKysrKysr Ky0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTU3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29t bWFuZC5jCmluZGV4IDc2NzJlZDllOWQuLjY4ODgyYWIyNTYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cHNxbC9jb21tYW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwpAQCAtOTgxLDYgKzk4 MSw5IEBAIGV4ZWNfY29tbWFuZF9kKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3Rp dmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAJCQkJCQlicmVhazsKIAkJCQl9CiAJCQkJYnJl YWs7CisJCQljYXNlICdWJzoJCQkvKiBWYXJpYWJsZXMgKi8KKwkJCQlzdWNjZXNzID0gbGlzdFZh cmlhYmxlcyhwYXR0ZXJuLCBzaG93X3ZlcmJvc2UpOworCQkJCWJyZWFrOwogCQkJY2FzZSAneCc6 CQkJLyogRXh0ZW5zaW9ucyAqLwogCQkJCWlmIChzaG93X3ZlcmJvc2UpCiAJCQkJCXN1Y2Nlc3Mg PSBsaXN0RXh0ZW5zaW9uQ29udGVudHMocGF0dGVybik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDJlYWU1MTliMWQu LjM5NDA2YzBmZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC01MDY3LDYgKzUwNjcsMTAyIEBAIGVycm9yX3JldHVy bjoKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBcZFYKKyAqCisgKiBsaXN0VmFyaWFibGVz KCkKKyAqLworYm9vbAorbGlzdFZhcmlhYmxlcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZl cmJvc2UpCit7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKwlQR3Jlc3VsdCAgICpyZXM7CisJcHJp bnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xh dGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisKKwlpbml0UFFFeHBCdWZmZXIo JmJ1Zik7CisKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICJTRUxFQ1Qgbi5uc3Bu YW1lIGFzIFwiJXNcIixcbiIKKwkJCQkJICAiICB2LnZhcm5hbWUgYXMgXCIlc1wiLFxuIgorCQkJ CQkgICIgIHBnX2NhdGFsb2cuZm9ybWF0X3R5cGUodi52YXJ0eXBlLCB2LnZhcnR5cG1vZCkgYXMg XCIlc1wiLFxuIgorCQkJCQkgICIgIChTRUxFQ1QgYy5jb2xsbmFtZSBGUk9NIHBnX2NhdGFsb2cu cGdfY29sbGF0aW9uIGMsIHBnX2NhdGFsb2cucGdfdHlwZSBidFxuIgorCQkJCQkgICIgICBXSEVS RSBjLm9pZCA9IHYudmFyY29sbGF0aW9uIEFORCBidC5vaWQgPSB2LnZhcnR5cGUgQU5EIHYudmFy Y29sbGF0aW9uIDw+IGJ0LnR5cGNvbGxhdGlvbikgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIE5P VCB2LnZhcmlzbm90bnVsbCBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgTk9UIHYudmFyaXNpbW11 dGFibGUgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIodi52 YXJkZWZleHByLCAwKSBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRf dXNlcmJ5aWQodi52YXJvd25lcikgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIENBU0Ugdi52YXJl b3hhY3Rpb25cbiIKKwkJCQkJICAiICAgIFdIRU4gJ2QnIFRIRU4gJ09OIENPTU1JVCBEUk9QJ1xu IgorCQkJCQkgICIgICAgV0hFTiAncicgVEhFTiAnT04gVFJBTlNBQ1RJT04gRU5EIFJFU0VUJyBF TkQgYXMgXCIlc1wiXG4iLAorCQkJCQkgIGdldHRleHRfbm9vcCgiU2NoZW1hIiksCisJCQkJCSAg Z2V0dGV4dF9ub29wKCJOYW1lIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJUeXBlIiksCisJCQkJ CSAgZ2V0dGV4dF9ub29wKCJDb2xsYXRpb24iKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIk51bGxh YmxlIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJNdXRhYmxlIiksCisJCQkJCSAgZ2V0dGV4dF9u b29wKCJEZWZhdWx0IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJPd25lciIpLAorCQkJCQkgIGdl dHRleHRfbm9vcCgiVHJhbnNhY3Rpb25hbCBlbmQgYWN0aW9uIikpOworCisJaWYgKHZlcmJvc2Up CisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLFxuICAiKTsKKwkJcHJpbnRBQ0xD b2x1bW4oJmJ1ZiwgInYudmFyYWNsIik7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJ CQkgICIsXG4gIHBnX2NhdGFsb2cub2JqX2Rlc2NyaXB0aW9uKHYub2lkLCAncGdfdmFyaWFibGUn KSBBUyBcIiVzXCIiLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkRlc2NyaXB0aW9uIikpOworCX0K KworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCisJCQkJCQkgIlxuRlJPTSBwZ19jYXRhbG9n LnBnX3ZhcmlhYmxlIHYiCisJCQkJCQkgIlxuICAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19u YW1lc3BhY2UgbiBPTiBuLm9pZCA9IHYudmFybmFtZXNwYWNlIik7CisKKwlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmYnVmLCAiXG5XSEVSRSB0cnVlXG4iKTsKKwlpZiAoIXBhdHRlcm4pCisJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsICIgICAgICBBTkQgbi5uc3BuYW1lIDw+ICdwZ19jYXRhbG9n J1xuIgorCQkJCQkJCSAiICAgICAgQU5EIG4ubnNwbmFtZSA8PiAnaW5mb3JtYXRpb25fc2NoZW1h J1xuIik7CisKKwlpZiAoIXZhbGlkYXRlU1FMTmFtZVBhdHRlcm4oJmJ1ZiwgcGF0dGVybiwgdHJ1 ZSwgZmFsc2UsCisJCQkJCQkJCSJuLm5zcG5hbWUiLCAidi52YXJuYW1lIiwgTlVMTCwKKwkJCQkJ CQkJInBnX2NhdGFsb2cucGdfdmFyaWFibGVfaXNfdmlzaWJsZSh2Lm9pZCkiLAorCQkJCQkJCQlO VUxMLCAzKSkKKwkJcmV0dXJuIGZhbHNlOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1Ziwg Ik9SREVSIEJZIDEsMjsiKTsKKworCXJlcyA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKwl0ZXJtUFFF eHBCdWZmZXIoJmJ1Zik7CisJaWYgKCFyZXMpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICog TW9zdCBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBjb250ZW50IHRvIHByaW50IGFuIGVtcHR5 IHRhYmxlIHdoZW4KKwkgKiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgb2JqZWN0cy4gIFdlIGludGVu dGlvbmFsbHkgZGV2aWF0ZSBmcm9tIHRoYXQKKwkgKiBoZXJlLCBidXQgb25seSBpbiAhcXVpZXQg bW9kZSwgZm9yIGhpc3RvcmljYWwgcmVhc29ucy4KKwkgKi8KKwlpZiAoUFFudHVwbGVzKHJlcykg PT0gMCAmJiAhcHNldC5xdWlldCkKKwl7CisJCWlmIChwYXR0ZXJuKQorCQkJcGdfbG9nX2Vycm9y KCJEaWQgbm90IGZpbmQgYW55IHNlc3Npb24gdmFyaWFibGUgbmFtZWQgXCIlc1wiLiIsCisJCQkJ CQkgcGF0dGVybik7CisJCWVsc2UKKwkJCXBnX2xvZ19lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBz ZXNzaW9uIHZhcmlhYmxlcy4iKTsKKwl9CisJZWxzZQorCXsKKwkJbXlvcHQubnVsbFByaW50ID0g TlVMTDsKKwkJbXlvcHQudGl0bGUgPSBfKCJMaXN0IG9mIHZhcmlhYmxlcyIpOworCQlteW9wdC50 cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKwkJbXlvcHQudHJhbnNsYXRlX2NvbHVtbnMgPSB0cmFu c2xhdGVfY29sdW1uczsKKwkJbXlvcHQubl90cmFuc2xhdGVfY29sdW1ucyA9IGxlbmd0aG9mKHRy YW5zbGF0ZV9jb2x1bW5zKTsKKworCQlwcmludFF1ZXJ5KHJlcywgJm15b3B0LCBwc2V0LnF1ZXJ5 Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CisJfQorCisJUFFjbGVhcihyZXMpOworCXJldHVy biB0cnVlOworfQogCiAvKgogICogXGRGcApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAppbmRleCBiZDA1MWUwOWNiLi40YmFhNjk5 ZmNkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAorKysgYi9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuaApAQCAtMTQ2LDQgKzE0Niw3IEBAIGV4dGVybiBib29sIGxpc3RPcEZhbWls eUZ1bmN0aW9ucyhjb25zdCBjaGFyICphY2Nlc3NfbWV0aG9kX3BhdHRlcm4sCiAvKiBcZGwgb3Ig XGxvX2xpc3QgKi8KIGV4dGVybiBib29sIGxpc3RMYXJnZU9iamVjdHMoYm9vbCB2ZXJib3NlKTsK IAorLyogXGRWICovCitleHRlcm4gYm9vbCBsaXN0VmFyaWFibGVzKGNvbnN0IGNoYXIgKnBhdHRl cm4sIGJvb2wgdmFyYm9zZSk7CisKICNlbmRpZgkJCQkJCQkvKiBERVNDUklCRV9IICovCmRpZmYg LS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwppbmRleCBi NGUwZWMyNjg3Li4yYWU2MGM4MzhmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvaGVscC5jCisr KyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKQEAgLTI4Nyw2ICsyODcsNyBAQCBzbGFzaFVzYWdlKHVu c2lnbmVkIHNob3J0IGludCBwYWdlcikKIAlIRUxQMCgiICBcXGRUW1MrXSBbUEFUVEVSTl0gICAg ICBsaXN0IGRhdGEgdHlwZXNcbiIpOwogCUhFTFAwKCIgIFxcZHVbUytdIFtQQVRURVJOXSAgICAg IGxpc3Qgcm9sZXNcbiIpOwogCUhFTFAwKCIgIFxcZHZbUytdIFtQQVRURVJOXSAgICAgIGxpc3Qg dmlld3NcbiIpOworCUhFTFAwKCIgIFxcZFYgICAgIFtQQVRURVJOXSAgICAgIGxpc3QgdmFyaWFi bGVzXG4iKTsKIAlIRUxQMCgiICBcXGR4WytdICBbUEFUVEVSTl0gICAgICBsaXN0IGV4dGVuc2lv bnNcbiIpOwogCUhFTFAwKCIgIFxcZFggICAgIFtQQVRURVJOXSAgICAgIGxpc3QgZXh0ZW5kZWQg c3RhdGlzdGljc1xuIik7CiAJSEVMUDAoIiAgXFxkeVsrXSAgW1BBVFRFUk5dICAgICAgbGlzdCBl dmVudCB0cmlnZ2Vyc1xuIik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggODllNzMxN2MyMy4uMDI2NjBl YjRlNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtOTYyLDYgKzk2MiwxMyBAQCBzdGF0aWMgY29uc3Qg U2NoZW1hUXVlcnkgUXVlcnlfZm9yX3RyaWdnZXJfb2ZfdGFibGUgPSB7CiAJLnJlZm5hbWVzcGFj ZSA9ICJjMS5yZWxuYW1lc3BhY2UiLAogfTsKIAorc3RhdGljIGNvbnN0IFNjaGVtYVF1ZXJ5IFF1 ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcyA9IHsKKwkubWluX3NlcnZlcl92ZXJzaW9uID0gMTUw MDAwLAorCS5jYXRuYW1lID0gInBnX2NhdGFsb2cucGdfdmFyaWFibGUgdiIsCisJLnZpc2NvbmRp dGlvbiA9ICJwZ19jYXRhbG9nLnBnX3ZhcmlhYmxlX2lzX3Zpc2libGUodi5vaWQpIiwKKwkubmFt ZXNwYWNlID0gInYudmFybmFtZXNwYWNlIiwKKwkucmVzdWx0ID0gInYudmFybmFtZSIsCit9Owog CiAvKgogICogUXVlcmllcyB0byBnZXQgbGlzdHMgb2YgbmFtZXMgb2YgdmFyaW91cyBraW5kcyBv ZiB0aGluZ3MsIHBvc3NpYmx5CkBAIC0xMjI1LDYgKzEyMzIsOCBAQCBzdGF0aWMgY29uc3QgcGdz cWxfdGhpbmdfdCB3b3Jkc19hZnRlcl9jcmVhdGVbXSA9IHsKIAl7IkZPUkVJR04gVEFCTEUiLCBO VUxMLCBOVUxMLCBOVUxMfSwKIAl7IkZVTkNUSU9OIiwgTlVMTCwgTlVMTCwgUXVlcnlfZm9yX2xp c3Rfb2ZfZnVuY3Rpb25zfSwKIAl7IkdST1VQIiwgUXVlcnlfZm9yX2xpc3Rfb2Zfcm9sZXN9LAor CXsiSU1NVVRBQkxFIFZBUklBQkxFIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgVEhJTkdfTk9f RFJPUCB8IFRISU5HX05PX0FMVEVSfSwgLyogZm9yIENSRUFURSBJTU1VVEFCTEUKKwkJCQkJCQkJ CQkJCQkJCQkJCQkJCSAqIFZBUklBQkxFIC4uLiAqLwogCXsiSU5ERVgiLCBOVUxMLCBOVUxMLCAm UXVlcnlfZm9yX2xpc3Rfb2ZfaW5kZXhlc30sCiAJeyJMQU5HVUFHRSIsIFF1ZXJ5X2Zvcl9saXN0 X29mX2xhbmd1YWdlc30sCiAJeyJMQVJHRSBPQkpFQ1QiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM LCBUSElOR19OT19DUkVBVEUgfCBUSElOR19OT19EUk9QfSwKQEAgLTEyNjMsNiArMTI3Miw3IEBA IHN0YXRpYyBjb25zdCBwZ3NxbF90aGluZ190IHdvcmRzX2FmdGVyX2NyZWF0ZVtdID0gewogCQkJ CQkJCQkJCQkJCQkJCQkJCSAqIFRBQkxFIC4uLiAqLwogCXsiVVNFUiIsIFF1ZXJ5X2Zvcl9saXN0 X29mX3JvbGVzLCBOVUxMLCBOVUxMLCBLZXl3b3Jkc19mb3JfdXNlcl90aGluZ30sCiAJeyJVU0VS IE1BUFBJTkcgRk9SIiwgTlVMTCwgTlVMTCwgTlVMTH0sCisJeyJWQVJJQUJMRSIsIE5VTEwsIE5V TEwsICZRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXN9LAogCXsiVklFVyIsIE5VTEwsIE5VTEws ICZRdWVyeV9mb3JfbGlzdF9vZl92aWV3c30sCiAJe05VTEx9CQkJCQkJLyogZW5kIG9mIGxpc3Qg Ki8KIH07CkBAIC0xNjc0LDggKzE2ODQsOCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAq dGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiQUJPUlQiLCAiQUxURVIiLCAiQU5BTFlaRSIs ICJCRUdJTiIsICJDQUxMIiwgIkNIRUNLUE9JTlQiLCAiQ0xPU0UiLCAiQ0xVU1RFUiIsCiAJCSJD T01NRU5UIiwgIkNPTU1JVCIsICJDT1BZIiwgIkNSRUFURSIsICJERUFMTE9DQVRFIiwgIkRFQ0xB UkUiLAogCQkiREVMRVRFIEZST00iLCAiRElTQ0FSRCIsICJETyIsICJEUk9QIiwgIkVORCIsICJF WEVDVVRFIiwgIkVYUExBSU4iLAotCQkiRkVUQ0giLCAiR1JBTlQiLCAiSU1QT1JUIEZPUkVJR04g U0NIRU1BIiwgIklOU0VSVCBJTlRPIiwgIkxJU1RFTiIsICJMT0FEIiwgIkxPQ0siLAotCQkiTUVS R0UgSU5UTyIsICJNT1ZFIiwgIk5PVElGWSIsICJQUkVQQVJFIiwKKwkJIkZFVENIIiwgIkdSQU5U IiwgIklNUE9SVCBGT1JFSUdOIFNDSEVNQSIsICJJTlNFUlQgSU5UTyIsICJMRVQiLAorCQkiTElT VEVOIiwgIkxPQUQiLCAiTE9DSyIsICJNRVJHRSBJTlRPIiwgIk1PVkUiLCAiTk9USUZZIiwgIlBS RVBBUkUiLAogCQkiUkVBU1NJR04iLCAiUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyIsICJSRUlO REVYIiwgIlJFTEVBU0UiLAogCQkiUkVTRVQiLCAiUkVWT0tFIiwgIlJPTExCQUNLIiwKIAkJIlNB VkVQT0lOVCIsICJTRUNVUklUWSBMQUJFTCIsICJTRUxFQ1QiLCAiU0VUIiwgIlNIT1ciLCAiU1RB UlQiLApAQCAtMTY5NSw3ICsxNzA1LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRl eHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxcZEYiLCAiXFxkRmQiLCAiXFxkRnAiLCAiXFxk RnQiLCAiXFxkZyIsICJcXGRpIiwgIlxcZGwiLCAiXFxkTCIsCiAJCSJcXGRtIiwgIlxcZG4iLCAi XFxkbyIsICJcXGRPIiwgIlxcZHAiLCAiXFxkUCIsICJcXGRQaSIsICJcXGRQdCIsCiAJCSJcXGRy ZHMiLCAiXFxkUnMiLCAiXFxkUnAiLCAiXFxkcyIsCi0JCSJcXGR0IiwgIlxcZFQiLCAiXFxkdiIs ICJcXGR1IiwgIlxcZHgiLCAiXFxkWCIsICJcXGR5IiwKKwkJIlxcZHQiLCAiXFxkVCIsICJcXGR2 IiwgIlxcZHUiLCAiXFxkeCIsICJcXGRYIiwgIlxcZHkiLCAiXFxkViIsCiAJCSJcXGVjaG8iLCAi XFxlZGl0IiwgIlxcZWYiLCAiXFxlbGlmIiwgIlxcZWxzZSIsICJcXGVuY29kaW5nIiwKIAkJIlxc ZW5kaWYiLCAiXFxlcnJ2ZXJib3NlIiwgIlxcZXYiLAogCQkiXFxmIiwKQEAgLTIxMzYsNiArMjE0 Niw5IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAJCQkJCQkJCQkJICAiQUxMIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiU1lT VEVNIiwgIlNFVCIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSCgiVE8iKTsKKwkvKiBBTFRF UiBWQVJJQUJMRSA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJWQVJJQUJM RSIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSCgiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwg IlNFVCBTQ0hFTUEiKTsKIAkvKiBBTFRFUiBWSUVXIDxuYW1lPiAqLwogCWVsc2UgaWYgKE1hdGNo ZXMoIkFMVEVSIiwgIlZJRVciLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIkFMVEVSIENP TFVNTiIsICJPV05FUiBUTyIsICJSRU5BTUUiLApAQCAtMjY3OCw3ICsyNjkxLDcgQEAgcHNxbF9j b21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJCQkJICAi Uk9VVElORSIsICJSVUxFIiwgIlNDSEVNQSIsICJTRVFVRU5DRSIsICJTRVJWRVIiLAogCQkJCQkg ICJTVEFUSVNUSUNTIiwgIlNVQlNDUklQVElPTiIsICJUQUJMRSIsCiAJCQkJCSAgIlRBQkxFU1BB Q0UiLCAiVEVYVCBTRUFSQ0giLCAiVFJBTlNGT1JNIEZPUiIsCi0JCQkJCSAgIlRSSUdHRVIiLCAi VFlQRSIsICJWSUVXIik7CisJCQkJCSAgIlRSSUdHRVIiLCAiVFlQRSIsICJWQVJJQUJMRSIsICJW SUVXIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ09NTUVOVCIsICJPTiIsICJBQ0NFU1MiLCAiTUVU SE9EIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWNjZXNzX21l dGhvZHMpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNPTU1FTlQiLCAiT04iLCAiQ09OU1RSQUlOVCIp KQpAQCAtMzExNyw3ICszMTMwLDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQs IGludCBzdGFydCwgaW50IGVuZCkKIC8qIENSRUFURSBUQUJMRSAtLS0gaXMgYWxsb3dlZCBpbnNp ZGUgQ1JFQVRFIFNDSEVNQSwgc28gdXNlIFRhaWxNYXRjaGVzICovCiAJLyogQ29tcGxldGUgIkNS RUFURSBURU1QL1RFTVBPUkFSWSIgd2l0aCB0aGUgcG9zc2libGUgdGVtcCBvYmplY3RzICovCiAJ ZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkNSRUFURSIsICJURU1QfFRFTVBPUkFSWSIpKQotCQlDT01Q TEVURV9XSVRIKCJTRVFVRU5DRSIsICJUQUJMRSIsICJWSUVXIik7CisJCUNPTVBMRVRFX1dJVEgo IklNTVVUQUJMRSBWQVJJQUJMRSIsICJTRVFVRU5DRSIsICJUQUJMRSIsICJWSUVXIiwgIlZBUklB QkxFIik7CiAJLyogQ29tcGxldGUgIkNSRUFURSBVTkxPR0dFRCIgd2l0aCBUQUJMRSBvciBNQVRW SUVXICovCiAJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkNSRUFURSIsICJVTkxPR0dFRCIpKQogCQlD T01QTEVURV9XSVRIKCJUQUJMRSIsICJNQVRFUklBTElaRUQgVklFVyIpOwpAQCAtMzQyNCw2ICsz NDM3LDE3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGlu dCBlbmQpCiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCI9IiwgTWF0Y2hBbnlFeGNlcHQoIiopIikp KQogCQkJQ09NUExFVEVfV0lUSCgiLCIsICIpIik7CiAJfQorLyogQ1JFQVRFIFZBUklBQkxFIC0t LSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2UgVGFpbE1hdGNoZXMgKi8K KwkvKiBDb21wbGV0ZSBDUkVBVEUgVkFSSUFCTEUgPG5hbWU+IHdpdGggQVMgKi8KKwllbHNlIGlm IChUYWlsTWF0Y2hlcygiSU1NVVRBQkxFIikpCisJCUNPTVBMRVRFX1dJVEgoIlZBUklBQkxFIik7 CisJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkNSRUFURSIsICJWQVJJQUJMRSIsIE1hdGNoQW55KSB8 fAorCQkJIFRhaWxNYXRjaGVzKCJURU1QfFRFTVBPUkFSWSIsICJWQVJJQUJMRSIsIE1hdGNoQW55 KSB8fAorCQkJIFRhaWxNYXRjaGVzKCJJTU1VVEFCTEUiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkp CisJCUNPTVBMRVRFX1dJVEgoIkFTIik7CisJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIlZBUklBQkxF IiwgTWF0Y2hBbnksICJBUyIpKQorCQkvKiBDb21wbGV0ZSBDUkVBVEUgVkFSSUFCTEUgPG5hbWU+ IHdpdGggQVMgdHlwZXMgKi8KKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2ZfZGF0YXR5cGVzKTsKIAogLyogQ1JFQVRFIFZJRVcgLS0tIGlzIGFsbG93ZWQgaW5z aWRlIENSRUFURSBTQ0hFTUEsIHNvIHVzZSBUYWlsTWF0Y2hlcyAqLwogCS8qIENvbXBsZXRlIENS RUFURSBbIE9SIFJFUExBQ0UgXSBWSUVXIDxuYW1lPiB3aXRoIEFTICovCkBAIC0zNTM5LDcgKzM1 NjMsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQg ZW5kKQogCiAvKiBESVNDQVJEICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiRElTQ0FSRCIpKQotCQlD T01QTEVURV9XSVRIKCJBTEwiLCAiUExBTlMiLCAiU0VRVUVOQ0VTIiwgIlRFTVAiKTsKKwkJQ09N UExFVEVfV0lUSCgiQUxMIiwgIlBMQU5TIiwgIlNFUVVFTkNFUyIsICJURU1QIiwgIlZBUklBQkxF UyIpOwogCiAvKiBETyAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkRPIikpCkBAIC0zNjY2LDYgKzM2 OTAsMTIgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50 IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzKCJEUk9QIiwgIlRSQU5TRk9STSIsICJGT1IiLCBNYXRj aEFueSwgIkxBTkdVQUdFIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJDQVNDQURFIiwg IlJFU1RSSUNUIik7CiAKKwkvKiBEUk9QIFZBUklBQkxFICovCisJZWxzZSBpZiAoTWF0Y2hlcygi RFJPUCIsICJWQVJJQUJMRSIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9m b3JfbGlzdF9vZl92YXJpYWJsZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkRST1AiLCAiVkFSSUFC TEUiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEgoIkNBU0NBREUiLCAiUkVTVFJJQ1QiKTsK KwogLyogRVhFQ1VURSAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkVYRUNVVEUiKSkKIAkJQ09NUExF VEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9wcmVwYXJlZF9zdGF0ZW1lbnRzKTsKQEAg LTM4NTUsNyArMzg4NSw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQg c3RhcnQsIGludCBlbmQpCiAJCSAqIG9iamVjdHMgc3VwcG9ydGVkLgogCQkgKi8KIAkJaWYgKEhl YWRNYXRjaGVzKCJBTFRFUiIsICJERUZBVUxUIiwgIlBSSVZJTEVHRVMiKSkKLQkJCUNPTVBMRVRF X1dJVEgoIlRBQkxFUyIsICJTRVFVRU5DRVMiLCAiRlVOQ1RJT05TIiwgIlBST0NFRFVSRVMiLCAi Uk9VVElORVMiLCAiVFlQRVMiLCAiU0NIRU1BUyIpOworCQkJQ09NUExFVEVfV0lUSCgiVEFCTEVT IiwgIlNFUVVFTkNFUyIsICJGVU5DVElPTlMiLCAiUFJPQ0VEVVJFUyIsICJST1VUSU5FUyIsICJU WVBFUyIsICJTQ0hFTUFTIiwgIlZBUklBQkxFUyIpOwogCQllbHNlCiAJCQlDT01QTEVURV9XSVRI X1NDSEVNQV9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29mX2dyYW50YWJsZXMsCiAJCQkJCQkJ CQkJCSJBTEwgRlVOQ1RJT05TIElOIFNDSEVNQSIsCkBAIC0zODc3LDcgKzM5MDcsOCBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJ CQkJCQkiU0VRVUVOQ0UiLAogCQkJCQkJCQkJCQkiVEFCTEUiLAogCQkJCQkJCQkJCQkiVEFCTEVT UEFDRSIsCi0JCQkJCQkJCQkJCSJUWVBFIik7CisJCQkJCQkJCQkJCSJUWVBFIiwKKwkJCQkJCQkJ CQkJIlZBUklBQkxFIik7CiAJfQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJHUkFOVHxSRVZPS0Ui LCBNYXRjaEFueSwgIk9OIiwgIkFMTCIpIHx8CiAJCQkgVGFpbE1hdGNoZXMoIlJFVk9LRSIsICJH UkFOVCIsICJPUFRJT04iLCAiRk9SIiwgTWF0Y2hBbnksICJPTiIsICJBTEwiKSkKQEAgLTM4ODUs NyArMzkxNiw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQs IGludCBlbmQpCiAJCQkJCSAgIlBST0NFRFVSRVMgSU4gU0NIRU1BIiwKIAkJCQkJICAiUk9VVElO RVMgSU4gU0NIRU1BIiwKIAkJCQkJICAiU0VRVUVOQ0VTIElOIFNDSEVNQSIsCi0JCQkJCSAgIlRB QkxFUyBJTiBTQ0hFTUEiKTsKKwkJCQkJICAiVEFCTEVTIElOIFNDSEVNQSIsCisJCQkJCSAgIlZB UklBQkxFUyBJTiBTQ0hFTUEiKTsKIAllbHNlIGlmIChUYWlsTWF0Y2hlcygiR1JBTlR8UkVWT0tF IiwgTWF0Y2hBbnksICJPTiIsICJGT1JFSUdOIikgfHwKIAkJCSBUYWlsTWF0Y2hlcygiUkVWT0tF IiwgIkdSQU5UIiwgIk9QVElPTiIsICJGT1IiLCBNYXRjaEFueSwgIk9OIiwgIkZPUkVJR04iKSkK IAkJQ09NUExFVEVfV0lUSCgiREFUQSBXUkFQUEVSIiwgIlNFUlZFUiIpOwpAQCAtMzkyMSw2ICsz OTUzLDggQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50 IGVuZCkKIAkJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzcGFj ZXMpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlcygiVFlQRSIpKQogCQkJQ09NUExFVEVfV0lUSF9T Q0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfZGF0YXR5cGVzKTsKKwkJZWxzZSBpZiAoVGFp bE1hdGNoZXMoIlZBUklBQkxFIikpCisJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVy eV9mb3JfbGlzdF9vZl92YXJpYWJsZXMpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlcygiR1JBTlQi LCBNYXRjaEFueSwgTWF0Y2hBbnksIE1hdGNoQW55KSkKIAkJCUNPTVBMRVRFX1dJVEgoIlRPIik7 CiAJCWVsc2UKQEAgLTQyMDMsNyArNDIzNyw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFy ICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAKIC8qIFBSRVBBUkUgeHggQVMgKi8KIAllbHNl IGlmIChNYXRjaGVzKCJQUkVQQVJFIiwgTWF0Y2hBbnksICJBUyIpKQotCQlDT01QTEVURV9XSVRI KCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklOU0VSVCBJTlRPIiwgIkRFTEVURSBGUk9NIik7CisJCUNP TVBMRVRFX1dJVEgoIlNFTEVDVCIsICJVUERBVEUiLCAiSU5TRVJUIElOVE8iLCAiREVMRVRFIEZS T00iLCAiTEVUIik7CiAKIC8qCiAgKiBQUkVQQVJFIFRSQU5TQUNUSU9OIGlzIG1pc3Npbmcgb24g cHVycG9zZS4gSXQncyBpbnRlbmRlZCBmb3IgdHJhbnNhY3Rpb24KQEAgLTQ0OTEsNiArNDUyNSwx NCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5k KQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJVUERBVEUiLCBNYXRjaEFueSwgIlNFVCIsIE1hdGNo QW55RXhjZXB0KCIqPSIpKSkKIAkJQ09NUExFVEVfV0lUSCgiPSIpOwogCisvKiBMRVQgLS0tIGNh biBiZSBpbnNpZGUgRVhQTEFJTiwgUFJFUEFSRSBldGMgKi8KKwkvKiBJZiBwcmV2LiB3b3JkIGlz IExFVCBzdWdnZXN0IGEgbGlzdCBvZiB2YXJpYWJsZXMgKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hl cygiTEVUIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29m X3ZhcmlhYmxlcyk7CisJLyogQ29tcGxldGUgTEVUIDx2YXJpYWJsZT4gd2l0aCAiPSIgKi8KKwll bHNlIGlmIChUYWlsTWF0Y2hlcygiTEVUIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCI9 Iik7CisKIC8qIFVTRVIgTUFQUElORyAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSfENSRUFU RXxEUk9QIiwgIlVTRVIiLCAiTUFQUElORyIpKQogCQlDT01QTEVURV9XSVRIKCJGT1IiKTsKQEAg LTQ2NjEsNiArNDcwMyw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQg c3RhcnQsIGludCBlbmQpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zf cm9sZXMpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxcZHYqIikpCiAJCUNPTVBMRVRFX1dJ VEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3ZpZXdzKTsKKwllbHNlIGlmIChUYWls TWF0Y2hlc0NTKCJcXGRWKiIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9m b3JfbGlzdF9vZl92YXJpYWJsZXMpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxcZHgqIikp CiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfZXh0ZW5zaW9ucyk7CiAJ ZWxzZSBpZiAoVGFpbE1hdGNoZXNDUygiXFxkWCoiKSkKLS0gCjIuMzguMQoK --0000000000009ca7c005eedde9a7 Content-Type: text/x-patch; charset="US-ASCII"; name="v20221202-1-0007-possibility-to-dump-session-variables-by-pg_dump.patch" Content-Disposition: attachment; filename="v20221202-1-0007-possibility-to-dump-session-variables-by-pg_dump.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb6xukzk3 RnJvbSA0ODllMDMwZWE0MzMxZTU3ZjgyMmUyYjhmZTNhN2UzM2JmNjZjMTE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IE1vbiwgNCBBcHIgMjAyMiAyMDo0OToxMSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDcv MTBdIHBvc3NpYmlsaXR5IHRvIGR1bXAgc2Vzc2lvbiB2YXJpYWJsZXMgYnkgcGdfZHVtcAoKRW5o YW5jaW5nIHBnX2R1bXAgYWJvdXQgc2Vzc2lvbiB2YXJpYWJsZXMgc3VwcG9ydAotLS0KIHNyYy9i aW4vcGdfZHVtcC9jb21tb24uYyAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2Jpbi9wZ19kdW1w L2R1bXB1dGlscy5jICAgICAgICAgIHwgICA2ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAu aCAgICAgICAgICB8ICAgMiArCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMg fCAgIDkgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgIHwgMjM3ICsrKysr KysrKysrKysrKysrKysrKysrKysrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAg ICAgIHwgIDI1ICsrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgIHwgICA2 ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMgICAgICAgICB8ICAgOSArLQogc3JjL2Jp bi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgICAgIHwgIDY1ICsrKysrKysrCiBzcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgfCAgIDEgKwogMTAgZmlsZXMgY2hhbmdlZCwgMzU5 IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL2NvbW1vbi5jIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jCmluZGV4IDQ0ZmE1MmNjNTUu LjYwOWUxNTJhYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYworKysgYi9z cmMvYmluL3BnX2R1bXAvY29tbW9uLmMKQEAgLTI2Myw3ICsyNjMsOCBAQCBnZXRTY2hlbWFEYXRh KEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzUHRyKQogCXBnX2xvZ19pbmZvKCJyZWFkaW5n IHN1YnNjcmlwdGlvbnMiKTsKIAlnZXRTdWJzY3JpcHRpb25zKGZvdXQpOwogCi0JZnJlZShpbmhp bmZvKTsJCQkJLyogbm90IG5lZWRlZCBhbnkgbG9uZ2VyICovCisJcGdfbG9nX2luZm8oInJlYWRp bmcgdmFyaWFibGVzIik7CisJZ2V0VmFyaWFibGVzKGZvdXQpOwogCiAJKm51bVRhYmxlc1B0ciA9 IG51bVRhYmxlczsKIAlyZXR1cm4gdGJsaW5mbzsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9kdW1wdXRpbHMuYyBiL3NyYy9iaW4vcGdfZHVtcC9kdW1wdXRpbHMuYwppbmRleCA5MzExNDE3 ZjE4Li4zZTVkOTEyZGVlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvZHVtcHV0aWxzLmMK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL2R1bXB1dGlscy5jCkBAIC01MDYsNiArNTA2LDEyIEBAIGRv IHsgXAogCQlDT05WRVJUX1BSSVYoJ3InLCAiU0VMRUNUIik7CiAJCUNPTlZFUlRfUFJJVigndycs ICJVUERBVEUiKTsKIAl9CisJZWxzZSBpZiAoc3RyY21wKHR5cGUsICJWQVJJQUJMRSIpID09IDAg fHwKKwkJCSBzdHJjbXAodHlwZSwgIlZBUklBQkxFUyIpID09IDApCisJeworCQlDT05WRVJUX1BS SVYoJ3InLCAiU0VMRUNUIik7CisJCUNPTlZFUlRfUFJJVigndycsICJVUERBVEUiKTsKKwl9CiAJ ZWxzZQogCQlhYm9ydCgpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3Vw LmggYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmgKaW5kZXggYmM2YjY1OTRhZi4uNWFlNTA5 YjFkMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCisrKyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXAuaApAQCAtMTMyLDEyICsxMzIsMTQgQEAgdHlwZWRlZiBzdHJ1 Y3QgX3Jlc3RvcmVPcHRpb25zCiAJaW50CQkJc2VsRnVuY3Rpb247CiAJaW50CQkJc2VsVHJpZ2dl cjsKIAlpbnQJCQlzZWxUYWJsZTsKKwlpbnQJCQlzZWxWYXJpYWJsZTsKIAlTaW1wbGVTdHJpbmdM aXN0IGluZGV4TmFtZXM7CiAJU2ltcGxlU3RyaW5nTGlzdCBmdW5jdGlvbk5hbWVzOwogCVNpbXBs ZVN0cmluZ0xpc3Qgc2NoZW1hTmFtZXM7CiAJU2ltcGxlU3RyaW5nTGlzdCBzY2hlbWFFeGNsdWRl TmFtZXM7CiAJU2ltcGxlU3RyaW5nTGlzdCB0cmlnZ2VyTmFtZXM7CiAJU2ltcGxlU3RyaW5nTGlz dCB0YWJsZU5hbWVzOworCVNpbXBsZVN0cmluZ0xpc3QgdmFyaWFibGVOYW1lczsKIAogCWludAkJ CXVzZURCOwogCUNvbm5QYXJhbXMJY3BhcmFtczsJCS8qIHBhcmFtZXRlcnMgdG8gdXNlIGlmIHVz ZURCICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMg Yi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggMDA4MTg3M2E3Mi4u MGQzNDBhNzQwNiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZl ci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpAQCAtMjk1MSw2 ICsyOTUxLDE0IEBAIF90b2NFbnRyeVJlcXVpcmVkKFRvY0VudHJ5ICp0ZSwgdGVTZWN0aW9uIGN1 clNlY3Rpb24sIEFyY2hpdmVIYW5kbGUgKkFIKQogCQkJCQkhc2ltcGxlX3N0cmluZ19saXN0X21l bWJlcigmcm9wdC0+dHJpZ2dlck5hbWVzLCB0ZS0+dGFnKSkKIAkJCQkJcmV0dXJuIDA7CiAJCQl9 CisJCQllbHNlIGlmIChzdHJjbXAodGUtPmRlc2MsICJWQVJJQUJMRSIpID09IDApCisJCQl7CisJ CQkJaWYgKCFyb3B0LT5zZWxWYXJpYWJsZSkKKwkJCQkJcmV0dXJuIDA7CisJCQkJaWYgKHJvcHQt PnZhcmlhYmxlTmFtZXMuaGVhZCAhPSBOVUxMICYmCisJCQkJCSFzaW1wbGVfc3RyaW5nX2xpc3Rf bWVtYmVyKCZyb3B0LT52YXJpYWJsZU5hbWVzLCB0ZS0+dGFnKSkKKwkJCQkJcmV0dXJuIDA7CisJ CQl9CiAJCQllbHNlCiAJCQkJcmV0dXJuIDA7CiAJCX0KQEAgLTM0MzUsNiArMzQ0Myw3IEBAIF9n ZXRPYmplY3REZXNjcmlwdGlvbihQUUV4cEJ1ZmZlciBidWYsIGNvbnN0IFRvY0VudHJ5ICp0ZSkK IAkJc3RyY21wKHR5cGUsICJURVhUIFNFQVJDSCBESUNUSU9OQVJZIikgPT0gMCB8fAogCQlzdHJj bXAodHlwZSwgIlRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04iKSA9PSAwIHx8CiAJCXN0cmNtcCh0 eXBlLCAiVFlQRSIpID09IDAgfHwKKwkJc3RyY21wKHR5cGUsICJWQVJJQUJMRSIpID09IDAgfHwK IAkJc3RyY21wKHR5cGUsICJWSUVXIikgPT0gMCB8fAogCS8qIG5vbi1zY2hlbWEtc3BlY2lmaWVk IG9iamVjdHMgKi8KIAkJc3RyY21wKHR5cGUsICJEQVRBQkFTRSIpID09IDAgfHwKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CmluZGV4IDQ0ZThjZDQ3MDQuLjE3MDQ1Y2ZjYzUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMjkwLDYgKzI5 MCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBQb2xpY3koQXJjaGl2ZSAqZm91dCwgY29uc3QgUG9saWN5 SW5mbyAqcG9saW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91 dCwgY29uc3QgUHVibGljYXRpb25JbmZvICpwdWJpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBQdWJs aWNhdGlvblRhYmxlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uUmVsSW5mbyAqcHVi cmluZm8pOwogc3RhdGljIHZvaWQgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25z dCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKTsKK3N0YXRpYyB2b2lkIGR1bXBWYXJpYWJsZShB cmNoaXZlICpmb3V0LCBjb25zdCBWYXJpYWJsZUluZm8gKnZhcmluZm8pOwogc3RhdGljIHZvaWQg ZHVtcERhdGFiYXNlKEFyY2hpdmUgKmZvdXQpOwogc3RhdGljIHZvaWQgZHVtcERhdGFiYXNlQ29u ZmlnKEFyY2hpdmUgKkFILCBQUUV4cEJ1ZmZlciBvdXRidWYsCiAJCQkJCQkJICAgY29uc3QgY2hh ciAqZGJuYW1lLCBPaWQgZGJvaWQpOwpAQCAtNDc3Myw2ICs0Nzc0LDIzMiBAQCBnZXRfbmV4dF9w b3NzaWJsZV9mcmVlX3BnX3R5cGVfb2lkKEFyY2hpdmUgKmZvdXQsIFBRRXhwQnVmZmVyIHVwZ3Jh ZGVfcXVlcnkpCiAJcmV0dXJuIG5leHRfcG9zc2libGVfZnJlZV9vaWQ7CiB9CiAKKy8qCisgKiBn ZXRWYXJpYWJsZXMKKyAqCSAgZ2V0IGluZm9ybWF0aW9uIGFib3V0IHZhcmlhYmxlcworICovCit2 b2lkCitnZXRWYXJpYWJsZXMoQXJjaGl2ZSAqZm91dCkKK3sKKwlQUUV4cEJ1ZmZlciBxdWVyeTsK KwlQR3Jlc3VsdCAgICpyZXM7CisJVmFyaWFibGVJbmZvICp2YXJpbmZvOworCWludAkJCWlfdGFi bGVvaWQ7CisJaW50CQkJaV9vaWQ7CisJaW50CQkJaV92YXJuYW1lOworCWludAkJCWlfdmFybmFt ZXNwYWNlOworCWludAkJCWlfdmFydHlwZTsKKwlpbnQJCQlpX3ZhcnR5cG5hbWU7CisJaW50CQkJ aV92YXJkZWZleHByOworCWludAkJCWlfdmFyZW94YWN0aW9uOworCWludAkJCWlfdmFyaXNub3Ru dWxsOworCWludAkJCWlfdmFyaXNpbW11dGFibGU7CisJaW50CQkJaV92YXJvd25lcjsKKwlpbnQJ CQlpX3ZhcmNvbGxhdGlvbjsKKwlpbnQJCQlpX3ZhcmFjbDsKKwlpbnQJCQlpX2FjbGRlZmF1bHQ7 CisJaW50CQkJaSwKKwkJCQludHVwczsKKworCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uIDwgMTYw MDAwKQorCQlyZXR1cm47CisKKwlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwlyZXNl dFBRRXhwQnVmZmVyKHF1ZXJ5KTsKKworCS8qIEdldCB0aGUgdmFyaWFibGVzIGluIGN1cnJlbnQg ZGF0YWJhc2UuICovCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCisJCQkJCSAgIlNFTEVDVCB2 LnRhYmxlb2lkLCB2Lm9pZCwgdi52YXJuYW1lLFxuIgorCQkJCQkgICJ2LnZhcmVveGFjdGlvbixc biIKKwkJCQkJICAidi52YXJuYW1lc3BhY2UsXG4iCisJCQkJCSAgInYudmFydHlwZSxcbiIKKwkJ CQkJICAicGdfY2F0YWxvZy5mb3JtYXRfdHlwZSh2LnZhcnR5cGUsIHYudmFydHlwbW9kKSBhcyB2 YXJ0eXBuYW1lLFxuIgorCQkJCQkgICJ2LnZhcmlzbm90bnVsbCxcbiIKKwkJCQkJICAidi52YXJp c2ltbXV0YWJsZSxcbiIKKwkJCQkJICAiQ0FTRSBXSEVOIHYudmFyY29sbGF0aW9uIDw+IHQudHlw Y29sbGF0aW9uICIKKwkJCQkJICAiVEhFTiB2LnZhcmNvbGxhdGlvbiBFTFNFIDAgRU5EIEFTIHZh cmNvbGxhdGlvbixcbiIKKwkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRfZXhwcih2LnZhcmRlZmV4 cHIsMCkgYXMgdmFyZGVmZXhwcixcbiIKKwkJCQkJICAidi52YXJvd25lcixcbiIKKwkJCQkJICAi di52YXJhY2wsXG4iCisJCQkJCSAgImFjbGRlZmF1bHQoJ1YnLCB2LnZhcm93bmVyKSBBUyBhY2xk ZWZhdWx0XG4iCisJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ192YXJpYWJsZSB2XG4iCisJCQkJ CSAgIkpPSU4gcGdfY2F0YWxvZy5wZ190eXBlIHQgIgorCQkJCQkgICJPTiAodi52YXJ0eXBlID0g dC5vaWQpIik7CisKKwlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBH UkVTX1RVUExFU19PSyk7CisKKwludHVwcyA9IFBRbnR1cGxlcyhyZXMpOworCisJaV90YWJsZW9p ZCA9IFBRZm51bWJlcihyZXMsICJ0YWJsZW9pZCIpOworCWlfb2lkID0gUFFmbnVtYmVyKHJlcywg Im9pZCIpOworCWlfdmFybmFtZSA9IFBRZm51bWJlcihyZXMsICJ2YXJuYW1lIik7CisJaV92YXJu YW1lc3BhY2UgPSBQUWZudW1iZXIocmVzLCAidmFybmFtZXNwYWNlIik7CisJaV92YXJ0eXBlID0g UFFmbnVtYmVyKHJlcywgInZhcnR5cGUiKTsKKwlpX3ZhcnR5cG5hbWUgPSBQUWZudW1iZXIocmVz LCAidmFydHlwbmFtZSIpOworCWlfdmFyZW94YWN0aW9uID0gUFFmbnVtYmVyKHJlcywgInZhcmVv eGFjdGlvbiIpOworCWlfdmFyZGVmZXhwciA9IFBRZm51bWJlcihyZXMsICJ2YXJkZWZleHByIik7 CisJaV92YXJpc25vdG51bGwgPSBQUWZudW1iZXIocmVzLCAidmFyaXNub3RudWxsIik7CisJaV92 YXJpc2ltbXV0YWJsZSA9IFBRZm51bWJlcihyZXMsICJ2YXJpc2ltbXV0YWJsZSIpOworCWlfdmFy Y29sbGF0aW9uID0gUFFmbnVtYmVyKHJlcywgInZhcmNvbGxhdGlvbiIpOworCisJaV92YXJvd25l ciA9IFBRZm51bWJlcihyZXMsICJ2YXJvd25lciIpOworCWlfdmFyYWNsID0gUFFmbnVtYmVyKHJl cywgInZhcmFjbCIpOworCWlfYWNsZGVmYXVsdCA9IFBRZm51bWJlcihyZXMsICJhY2xkZWZhdWx0 Iik7CisKKwl2YXJpbmZvID0gcGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKFZhcmlhYmxlSW5mbykp OworCisJZm9yIChpID0gMDsgaSA8IG50dXBzOyBpKyspCisJeworCQlUeXBlSW5mbyAgICp2dHlw ZTsKKworCQl2YXJpbmZvW2ldLmRvYmoub2JqVHlwZSA9IERPX1ZBUklBQkxFOworCQl2YXJpbmZv W2ldLmRvYmouY2F0SWQudGFibGVvaWQgPQorCQkJYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBp X3RhYmxlb2lkKSk7CisJCXZhcmluZm9baV0uZG9iai5jYXRJZC5vaWQgPSBhdG9vaWQoUFFnZXR2 YWx1ZShyZXMsIGksIGlfb2lkKSk7CisJCUFzc2lnbkR1bXBJZCgmdmFyaW5mb1tpXS5kb2JqKTsK KwkJdmFyaW5mb1tpXS5kb2JqLm5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlf dmFybmFtZSkpOworCQl2YXJpbmZvW2ldLmRvYmoubmFtZXNwYWNlID0KKwkJCWZpbmROYW1lc3Bh Y2UoYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3Zhcm5hbWVzcGFjZSkpKTsKKworCQl2YXJp bmZvW2ldLnZhcnR5cGUgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFydHlwZSkpOwor CQl2YXJpbmZvW2ldLnZhcnR5cG5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlf dmFydHlwbmFtZSkpOworCQl2YXJpbmZvW2ldLnZhcmVveGFjdGlvbiA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaSwgaV92YXJlb3hhY3Rpb24pKTsKKwkJdmFyaW5mb1tpXS52YXJpc25vdG51 bGwgPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3Zhcmlzbm90bnVsbCkpID09ICd0JzsKKwkJdmFy aW5mb1tpXS52YXJpc2ltbXV0YWJsZSA9ICooUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFyaXNpbW11 dGFibGUpKSA9PSAndCc7CisJCXZhcmluZm9baV0udmFyY29sbGF0aW9uID0gYXRvb2lkKFBRZ2V0 dmFsdWUocmVzLCBpLCBpX3ZhcmNvbGxhdGlvbikpOworCisJCXZhcmluZm9baV0uZGFjbC5hY2wg PSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFyYWNsKSk7CisJCXZhcmluZm9baV0u ZGFjbC5hY2xkZWZhdWx0ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2FjbGRlZmF1 bHQpKTsKKwkJdmFyaW5mb1tpXS5kYWNsLnByaXZ0eXBlID0gMDsKKwkJdmFyaW5mb1tpXS5kYWNs LmluaXRwcml2cyA9IE5VTEw7CisJCXZhcmluZm9baV0ucm9sbmFtZSA9IGdldFJvbGVOYW1lKFBR Z2V0dmFsdWUocmVzLCBpLCBpX3Zhcm93bmVyKSk7CisKKwkJLyogRGVjaWRlIHdoZXRoZXIgd2Ug d2FudCB0byBkdW1wIGl0ICovCisJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYodmFyaW5mb1tpXS5k b2JqKSwgZm91dCk7CisKKwkJLyogRG8gbm90IHRyeSB0byBkdW1wIEFDTCBpZiBubyBBQ0wgZXhp c3RzLiAqLworCQlpZiAoIVBRZ2V0aXNudWxsKHJlcywgaSwgaV92YXJhY2wpKQorCQkJdmFyaW5m b1tpXS5kb2JqLmNvbXBvbmVudHMgfD0gRFVNUF9DT01QT05FTlRfQUNMOworCisJCWlmIChQUWdl dGlzbnVsbChyZXMsIGksIGlfdmFyZGVmZXhwcikpCisJCQl2YXJpbmZvW2ldLnZhcmRlZmV4cHIg PSBOVUxMOworCQllbHNlCisJCQl2YXJpbmZvW2ldLnZhcmRlZmV4cHIgPSBwZ19zdHJkdXAoUFFn ZXR2YWx1ZShyZXMsIGksIGlfdmFyZGVmZXhwcikpOworCisJCWlmIChzdHJsZW4odmFyaW5mb1tp XS5yb2xuYW1lKSA9PSAwKQorCQkJcGdfbG9nX3dhcm5pbmcoIm93bmVyIG9mIHZhcmlhYmxlIFwi JXNcIiBhcHBlYXJzIHRvIGJlIGludmFsaWQiLAorCQkJCQkJICAgdmFyaW5mb1tpXS5kb2JqLm5h bWUpOworCisJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLworCQlzZWxl Y3REdW1wYWJsZU9iamVjdCgmKHZhcmluZm9baV0uZG9iaiksIGZvdXQpOworCisJCXZ0eXBlID0g ZmluZFR5cGVCeU9pZCh2YXJpbmZvW2ldLnZhcnR5cGUpOworCQlhZGRPYmplY3REZXBlbmRlbmN5 KCZ2YXJpbmZvW2ldLmRvYmosIHZ0eXBlLT5kb2JqLmR1bXBJZCk7CisJfQorCVBRY2xlYXIocmVz KTsKKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7Cit9CisKKy8qCisgKiBkdW1wVmFyaWFi bGUKKyAqCSAgZHVtcCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZ2l2ZW4gc2Vzc2lvbiB2YXJpYWJs ZQorICovCitzdGF0aWMgdm9pZAorZHVtcFZhcmlhYmxlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFZh cmlhYmxlSW5mbyAqdmFyaW5mbykKK3sKKwlEdW1wT3B0aW9ucyAqZG9wdCA9IGZvdXQtPmRvcHQ7 CisKKwlQUUV4cEJ1ZmZlciBkZWxxOworCVBRRXhwQnVmZmVyIHF1ZXJ5OworCWNoYXIJICAgKnF1 YWx2YXJuYW1lOworCWNvbnN0IGNoYXIgKnZhcnR5cG5hbWU7CisJY29uc3QgY2hhciAqdmFyZGVm ZXhwcjsKKwljb25zdCBjaGFyICp2YXJlb3hhY3Rpb247CisJY29uc3QgY2hhciAqdmFyaXNpbW11 dGFibGU7CisJT2lkCQkJdmFyY29sbGF0aW9uOworCWJvb2wJCXZhcmlzbm90bnVsbDsKKworCS8q IFNraXAgaWYgbm90IHRvIGJlIGR1bXBlZCAqLworCWlmICghdmFyaW5mby0+ZG9iai5kdW1wIHx8 IGRvcHQtPmRhdGFPbmx5KQorCQlyZXR1cm47CisKKwlkZWxxID0gY3JlYXRlUFFFeHBCdWZmZXIo KTsKKwlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwlxdWFsdmFybmFtZSA9IHBnX3N0 cmR1cChmbXRRdWFsaWZpZWREdW1wYWJsZSh2YXJpbmZvKSk7CisJdmFydHlwbmFtZSA9IHZhcmlu Zm8tPnZhcnR5cG5hbWU7CisJdmFyZGVmZXhwciA9IHZhcmluZm8tPnZhcmRlZmV4cHI7CisJdmFy ZW94YWN0aW9uID0gdmFyaW5mby0+dmFyZW94YWN0aW9uOworCXZhcmlzbm90bnVsbCA9IHZhcmlu Zm8tPnZhcmlzbm90bnVsbDsKKwl2YXJpc2ltbXV0YWJsZSA9IHZhcmluZm8tPnZhcmlzaW1tdXRh YmxlID8gIklNTVVUQUJMRSAiIDogIiI7CisJdmFyY29sbGF0aW9uID0gdmFyaW5mby0+dmFyY29s bGF0aW9uOworCisJYXBwZW5kUFFFeHBCdWZmZXIoZGVscSwgIkRST1AgVkFSSUFCTEUgJXM7XG4i LAorCQkJCQkgIHF1YWx2YXJuYW1lKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQ1JF QVRFICVzVkFSSUFCTEUgJXMgQVMgJXMiLAorCQkJCQkgIHZhcmlzaW1tdXRhYmxlLCBxdWFsdmFy bmFtZSwgdmFydHlwbmFtZSk7CisKKwlpZiAoT2lkSXNWYWxpZCh2YXJjb2xsYXRpb24pKQorCXsK KwkJQ29sbEluZm8gICAqY29sbDsKKworCQljb2xsID0gZmluZENvbGxhdGlvbkJ5T2lkKHZhcmNv bGxhdGlvbik7CisJCWlmIChjb2xsKQorCQkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgQ09M TEFURSAlcyIsCisJCQkJCQkJICBmbXRRdWFsaWZpZWREdW1wYWJsZShjb2xsKSk7CisJfQorCisJ aWYgKHZhcmlzbm90bnVsbCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgTk9UIE5VTEwi KTsKKworCWlmICh2YXJkZWZleHByKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiBERUZB VUxUICVzIiwKKwkJCQkJCSAgdmFyZGVmZXhwcik7CisKKwlpZiAoc3RyY21wKHZhcmVveGFjdGlv biwgImQiKSA9PSAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiBPTiBDT01NSVQgRFJP UCIpOworCWVsc2UgaWYgKHN0cmNtcCh2YXJlb3hhY3Rpb24sICJyIikgPT0gMCkKKwkJYXBwZW5k UFFFeHBCdWZmZXIocXVlcnksICIgT04gVFJBTlNBQ1RJT04gRU5EIFJFU0VUIik7CisKKwlhcHBl bmRQUUV4cEJ1ZmZlcihxdWVyeSwgIjtcbiIpOworCisJaWYgKHZhcmluZm8tPmRvYmouZHVtcCAm IERVTVBfQ09NUE9ORU5UX0RFRklOSVRJT04pCisJCUFyY2hpdmVFbnRyeShmb3V0LCB2YXJpbmZv LT5kb2JqLmNhdElkLCB2YXJpbmZvLT5kb2JqLmR1bXBJZCwKKwkJCQkJIEFSQ0hJVkVfT1BUUygu dGFnID0gdmFyaW5mby0+ZG9iai5uYW1lLAorCQkJCQkJCQkgIC5uYW1lc3BhY2UgPSB2YXJpbmZv LT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAorCQkJCQkJCQkgIC5vd25lciA9IHZhcmluZm8t PnJvbG5hbWUsCisJCQkJCQkJCSAgLmRlc2NyaXB0aW9uID0gIlZBUklBQkxFIiwKKwkJCQkJCQkJ ICAuc2VjdGlvbiA9IFNFQ1RJT05fUFJFX0RBVEEsCisJCQkJCQkJCSAgLmNyZWF0ZVN0bXQgPSBx dWVyeS0+ZGF0YSwKKwkJCQkJCQkJICAuZHJvcFN0bXQgPSBkZWxxLT5kYXRhKSk7CisKKwkvKiBE dW1wIGNvbW1lbnQgaWYgYW55ICovCisJaWYgKHZhcmluZm8tPmRvYmouZHVtcCAmIERVTVBfQ09N UE9ORU5UX0NPTU1FTlQpCisJCWR1bXBDb21tZW50KGZvdXQsICJWQVJJQUJMRSIsIHF1YWx2YXJu YW1lLAorCQkJCQlOVUxMLCB2YXJpbmZvLT5yb2xuYW1lLAorCQkJCQl2YXJpbmZvLT5kb2JqLmNh dElkLCAwLCB2YXJpbmZvLT5kb2JqLmR1bXBJZCk7CisKKwkvKiBEdW1wIEFDTCBpZiBhbnkgKi8K KwlpZiAodmFyaW5mby0+ZG9iai5kdW1wICYgRFVNUF9DT01QT05FTlRfQUNMKQorCXsKKwkJY2hh cgkgICAqcXZhcm5hbWUgPSBwZ19zdHJkdXAoZm10SWQodmFyaW5mby0+ZG9iai5uYW1lKSk7CisK KwkJZHVtcEFDTChmb3V0LCB2YXJpbmZvLT5kb2JqLmR1bXBJZCwgSW52YWxpZER1bXBJZCwgIlZB UklBQkxFIiwKKwkJCQlxdmFybmFtZSwgTlVMTCwKKwkJCQl2YXJpbmZvLT5kb2JqLm5hbWVzcGFj ZS0+ZG9iai5uYW1lLCB2YXJpbmZvLT5yb2xuYW1lLCAmdmFyaW5mby0+ZGFjbCk7CisKKwkJZnJl ZShxdmFybmFtZSk7CisJfQorCisJZGVzdHJveVBRRXhwQnVmZmVyKGRlbHEpOworCWRlc3Ryb3lQ UUV4cEJ1ZmZlcihxdWVyeSk7CisKKwlmcmVlKHF1YWx2YXJuYW1lKTsKK30KKwogc3RhdGljIHZv aWQKIGJpbmFyeV91cGdyYWRlX3NldF90eXBlX29pZHNfYnlfdHlwZV9vaWQoQXJjaGl2ZSAqZm91 dCwKIAkJCQkJCQkJCQkgUFFFeHBCdWZmZXIgdXBncmFkZV9idWZmZXIsCkBAIC05NDI3LDcgKzk2 NTQsOCBAQCBnZXRBZGRpdGlvbmFsQUNMcyhBcmNoaXZlICpmb3V0KQogCQkJCQlkb2JqLT5vYmpU eXBlID09IERPX1RBQkxFIHx8CiAJCQkJCWRvYmotPm9ialR5cGUgPT0gRE9fUFJPQ0xBTkcgfHwK IAkJCQkJZG9iai0+b2JqVHlwZSA9PSBET19GRFcgfHwKLQkJCQkJZG9iai0+b2JqVHlwZSA9PSBE T19GT1JFSUdOX1NFUlZFUikKKwkJCQkJZG9iai0+b2JqVHlwZSA9PSBET19GT1JFSUdOX1NFUlZF UiB8fAorCQkJCQlkb2JqLT5vYmpUeXBlID09IERPX1ZBUklBQkxFKQogCQkJCXsKIAkJCQkJRHVt cGFibGVPYmplY3RXaXRoQWNsICpkYW9iaiA9IChEdW1wYWJsZU9iamVjdFdpdGhBY2wgKikgZG9i ajsKIApAQCAtMTAwMTcsNiArMTAyNDUsOSBAQCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2ZSAq Zm91dCwgRHVtcGFibGVPYmplY3QgKmRvYmopCiAJCWNhc2UgRE9fU1VCU0NSSVBUSU9OOgogCQkJ ZHVtcFN1YnNjcmlwdGlvbihmb3V0LCAoY29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqKSBkb2JqKTsK IAkJCWJyZWFrOworCQljYXNlIERPX1ZBUklBQkxFOgorCQkJZHVtcFZhcmlhYmxlKGZvdXQsIChW YXJpYWJsZUluZm8gKikgZG9iaik7CisJCQlicmVhazsKIAkJY2FzZSBET19QUkVfREFUQV9CT1VO REFSWToKIAkJY2FzZSBET19QT1NUX0RBVEFfQk9VTkRBUlk6CiAJCQkvKiBuZXZlciBkdW1wZWQs IG5vdGhpbmcgdG8gZG8gKi8KQEAgLTE0MzkzLDYgKzE0NjI0LDkgQEAgZHVtcERlZmF1bHRBQ0wo QXJjaGl2ZSAqZm91dCwgY29uc3QgRGVmYXVsdEFDTEluZm8gKmRhY2xpbmZvKQogCQljYXNlIERF RkFDTE9CSl9OQU1FU1BBQ0U6CiAJCQl0eXBlID0gIlNDSEVNQVMiOwogCQkJYnJlYWs7CisJCWNh c2UgREVGQUNMT0JKX1ZBUklBQkxFOgorCQkJdHlwZSA9ICJWQVJJQUJMRVMiOworCQkJYnJlYWs7 CiAJCWRlZmF1bHQ6CiAJCQkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAkJCXBnX2ZhdGFsKCJ1 bnJlY29nbml6ZWQgb2JqZWN0IHR5cGUgaW4gZGVmYXVsdCBwcml2aWxlZ2VzOiAlZCIsCkBAIC0x NzkzNCw2ICsxODE2OCw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1bXBhYmxlT2JqZWN0 ICoqZG9ianMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19DT05WRVJTSU9OOgogCQkJY2FzZSBE T19UQUJMRToKIAkJCWNhc2UgRE9fVEFCTEVfQVRUQUNIOgorCQkJY2FzZSBET19WQVJJQUJMRToK IAkJCWNhc2UgRE9fQVRUUkRFRjoKIAkJCWNhc2UgRE9fUFJPQ0xBTkc6CiAJCQljYXNlIERPX0NB U1Q6CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaAppbmRleCA0MjdmNWQ0NWY2Li41NmFkOGFjYWM5IDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgK QEAgLTUyLDYgKzUyLDcgQEAgdHlwZWRlZiBlbnVtCiAJRE9fVEFCTEUsCiAJRE9fVEFCTEVfQVRU QUNILAogCURPX0FUVFJERUYsCisJRE9fVkFSSUFCTEUsCiAJRE9fSU5ERVgsCiAJRE9fSU5ERVhf QVRUQUNILAogCURPX1NUQVRTRVhULApAQCAtODIsNyArODMsNyBAQCB0eXBlZGVmIGVudW0KIAlE T19QVUJMSUNBVElPTiwKIAlET19QVUJMSUNBVElPTl9SRUwsCiAJRE9fUFVCTElDQVRJT05fVEFC TEVfSU5fU0NIRU1BLAotCURPX1NVQlNDUklQVElPTgorCURPX1NVQlNDUklQVElPTiwKIH0gRHVt cGFibGVPYmplY3RUeXBlOwogCiAvKgpAQCAtNjY0LDYgKzY2NSwyNyBAQCB0eXBlZGVmIHN0cnVj dCBfU3Vic2NyaXB0aW9uSW5mbwogCWNoYXIJICAgKnN1YnB1YmxpY2F0aW9uczsKIH0gU3Vic2Ny aXB0aW9uSW5mbzsKIAorLyoKKyAqIFRoZSBWYXJpYWJsZUluZm8gc3RydWN0IGlzIHVzZWQgdG8g cmVwcmVzZW50IHNlc3Npb24gdmFyaWFibGVzCisgKi8KK3R5cGVkZWYgc3RydWN0IF9WYXJpYWJs ZUluZm8KK3sKKwlEdW1wYWJsZU9iamVjdCBkb2JqOworCUR1bXBhYmxlQWNsIGRhY2w7CisJT2lk CQkJdmFydHlwZTsKKwljaGFyCSAgICp2YXJ0eXBuYW1lOworCWNoYXIJICAgKnZhcmVveGFjdGlv bjsKKwljaGFyCSAgICp2YXJkZWZleHByOworCWNoYXIJICAgKnZhcmFjbDsKKwljaGFyCSAgICpy dmFyYWNsOworCWNoYXIJICAgKmluaXR2YXJhY2w7CisJY2hhcgkgICAqaW5pdHJ2YXJhY2w7CisJ Ym9vbAkJdmFyaXNub3RudWxsOworCWJvb2wJCXZhcmlzaW1tdXRhYmxlOworCU9pZAkJCXZhcmNv bGxhdGlvbjsKKwljb25zdCBjaGFyICpyb2xuYW1lOwkJLyogbmFtZSBvZiBvd25lciwgb3IgZW1w dHkgc3RyaW5nICovCit9IFZhcmlhYmxlSW5mbzsKKwogLyoKICAqCWNvbW1vbiB1dGlsaXR5IGZ1 bmN0aW9ucwogICovCkBAIC03NDYsNSArNzY4LDYgQEAgZXh0ZXJuIHZvaWQgZ2V0UHVibGljYXRp b25OYW1lc3BhY2VzKEFyY2hpdmUgKmZvdXQpOwogZXh0ZXJuIHZvaWQgZ2V0UHVibGljYXRpb25U YWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwKIAkJCQkJCQkJIGludCBu dW1UYWJsZXMpOwogZXh0ZXJuIHZvaWQgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KTsK K2V4dGVybiB2b2lkIGdldFZhcmlhYmxlcyhBcmNoaXZlICpmb3V0KTsKIAogI2VuZGlmCQkJCQkJ CS8qIFBHX0RVTVBfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29y dC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCmluZGV4IDVkZTMyNDFlYjQuLjFh NjYwYjhhOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKQEAgLTc1LDYgKzc1LDcgQEAgZW51bSBk Yk9iamVjdFR5cGVQcmlvcml0aWVzCiAJUFJJT19UQUJMRV9BVFRBQ0gsCiAJUFJJT19EVU1NWV9U WVBFLAogCVBSSU9fQVRUUkRFRiwKKwlQUklPX1ZBUklBQkxFLAogCVBSSU9fQkxPQiwKIAlQUklP X1BSRV9EQVRBX0JPVU5EQVJZLAkJLyogYm91bmRhcnkhICovCiAJUFJJT19UQUJMRV9EQVRBLApA QCAtMTE2LDYgKzExNyw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZGJPYmplY3RUeXBlUHJpb3JpdHlb XSA9CiAJUFJJT19UQUJMRSwJCQkJCS8qIERPX1RBQkxFICovCiAJUFJJT19UQUJMRV9BVFRBQ0gs CQkJLyogRE9fVEFCTEVfQVRUQUNIICovCiAJUFJJT19BVFRSREVGLAkJCQkvKiBET19BVFRSREVG ICovCisJUFJJT19WQVJJQUJMRSwJCQkJLyogRE9fVkFSSUFCTEUgKi8KIAlQUklPX0lOREVYLAkJ CQkJLyogRE9fSU5ERVggKi8KIAlQUklPX0lOREVYX0FUVEFDSCwJCQkvKiBET19JTkRFWF9BVFRB Q0ggKi8KIAlQUklPX1NUQVRTRVhULAkJCQkvKiBET19TVEFUU0VYVCAqLwpAQCAtMTUwOCw2ICsx NTEwLDEwIEBAIGRlc2NyaWJlRHVtcGFibGVPYmplY3QoRHVtcGFibGVPYmplY3QgKm9iaiwgY2hh ciAqYnVmLCBpbnQgYnVmc2l6ZSkKIAkJCQkJICJQT1NULURBVEEgQk9VTkRBUlkgIChJRCAlZCki LAogCQkJCQkgb2JqLT5kdW1wSWQpOwogCQkJcmV0dXJuOworCQljYXNlIERPX1ZBUklBQkxFOgor CQkJc25wcmludGYoYnVmLCBidWZzaXplLAorCQkJCQkgIlZBUklBQkxFICVzICAoSUQgJWQgT0lE ICV1KSIsCisJCQkJCSBvYmotPm5hbWUsIG9iai0+ZHVtcElkLCBvYmotPmNhdElkLm9pZCk7CiAJ fQogCS8qIHNob3VsZG4ndCBnZXQgaGVyZSAqLwogCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMgYi9zcmMvYmluL3BnX2R1bXAv cGdfcmVzdG9yZS5jCmluZGV4IDA0OWExMDA2MzQuLjgzMGNkZTU0MjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3Rv cmUuYwpAQCAtMTAzLDYgKzEwMyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl7 InRyaWdnZXIiLCAxLCBOVUxMLCAnVCd9LAogCQl7InVzZS1saXN0IiwgMSwgTlVMTCwgJ0wnfSwK IAkJeyJ1c2VybmFtZSIsIDEsIE5VTEwsICdVJ30sCisJCXsidmFyaWFibGUiLCAxLCBOVUxMLCAn QSd9LAogCQl7InZlcmJvc2UiLCAwLCBOVUxMLCAndid9LAogCQl7InNpbmdsZS10cmFuc2FjdGlv biIsIDAsIE5VTEwsICcxJ30sCiAKQEAgLTE1MSw3ICsxNTIsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkJfQogCX0KIAotCXdoaWxlICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFy Z3YsICJhY0NkOmVmOkY6aDpJOmo6bEw6bjpOOk9wOlA6UnNTOnQ6VDpVOnZ3V3gxIiwKKwl3aGls ZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiQTphY0NkOmVmOkY6aDpJOmo6bEw6bjpO Ok9wOlA6UnNTOnQ6VDpVOnZ3V3gxIiwKIAkJCQkJCQljbWRvcHRzLCBOVUxMKSkgIT0gLTEpCiAJ ewogCQlzd2l0Y2ggKGMpCkBAIC0xNTksNiArMTYwLDExIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCQkJY2FzZSAnYSc6CQkJLyogRHVtcCBkYXRhIG9ubHkgKi8KIAkJCQlvcHRzLT5k YXRhT25seSA9IDE7CiAJCQkJYnJlYWs7CisJCQljYXNlICdBJzoJCQkvKiB2QXJpYWJsZSAqLwor CQkJCW9wdHMtPnNlbFR5cGVzID0gMTsKKwkJCQlvcHRzLT5zZWxWYXJpYWJsZSA9IDE7CisJCQkJ c2ltcGxlX3N0cmluZ19saXN0X2FwcGVuZCgmb3B0cy0+dmFyaWFibGVOYW1lcywgb3B0YXJnKTsK KwkJCQlicmVhazsKIAkJCWNhc2UgJ2MnOgkJCS8qIGNsZWFuIChpLmUuLCBkcm9wKSBzY2hlbWEg cHJpb3IgdG8gY3JlYXRlICovCiAJCQkJb3B0cy0+ZHJvcFNjaGVtYSA9IDE7CiAJCQkJYnJlYWs7 CkBAIC00NDQsNiArNDUwLDcgQEAgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAKIAlwcmlu dGYoXygiXG5PcHRpb25zIGNvbnRyb2xsaW5nIHRoZSByZXN0b3JlOlxuIikpOwogCXByaW50Zihf KCIgIC1hLCAtLWRhdGEtb25seSAgICAgICAgICAgICAgcmVzdG9yZSBvbmx5IHRoZSBkYXRhLCBu byBzY2hlbWFcbiIpKTsKKwlwcmludGYoXygiICAtQSwgLS12YXJpYWJsZT1OQU1FICAgICAgICAg IHJlc3RvcmUgbmFtZWQgc2Vzc2lvbiB2YXJpYWJsZVxuIikpOwogCXByaW50ZihfKCIgIC1jLCAt LWNsZWFuICAgICAgICAgICAgICAgICAgY2xlYW4gKGRyb3ApIGRhdGFiYXNlIG9iamVjdHMgYmVm b3JlIHJlY3JlYXRpbmdcbiIpKTsKIAlwcmludGYoXygiICAtQywgLS1jcmVhdGUgICAgICAgICAg ICAgICAgIGNyZWF0ZSB0aGUgdGFyZ2V0IGRhdGFiYXNlXG4iKSk7CiAJcHJpbnRmKF8oIiAgLWUs IC0tZXhpdC1vbi1lcnJvciAgICAgICAgICBleGl0IG9uIGVycm9yLCBkZWZhdWx0IGlzIHRvIGNv bnRpbnVlXG4iKSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5w bCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IDcwOWRiMDk4NmQuLjcy MmY1Zjk5MmEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisr KyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC01NzMsNiArNTczLDE2IEBA IG15ICV0ZXN0cyA9ICgKIAkJdW5saWtlID0+IHsgbm9fcHJpdnMgPT4gMSwgfSwKIAkgIH0sCiAK KwknQUxURVIgREVGQVVMVCBQUklWSUxFR0VTIEZPUiBST0xFIHJlZ3Jlc3NfZHVtcF90ZXN0X3Jv bGUgR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFUyBUTyBQVUJMSUMnCisJICA9PiB7CisJCWNyZWF0 ZV9vcmRlciA9PiA1NiwKKwkJY3JlYXRlX3NxbCAgID0+ICdBTFRFUiBERUZBVUxUIFBSSVZJTEVH RVMgRk9SIFJPTEUgcmVncmVzc19kdW1wX3Rlc3Rfcm9sZSBHUkFOVCBTRUxFQ1QgT04gVkFSSUFC TEVTIFRPIFBVQkxJQzsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBERUZBVUxUIFBS SVZJTEVHRVMgRk9SIFJPTEUgcmVncmVzc19kdW1wX3Rlc3Rfcm9sZSBHUkFOVCBTRUxFQ1QgT04g VkFSSUFCTEVTICBUTyBQVUJMSUM7XEUveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0 aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCQl1bmxpa2UgPT4geyBub19wcml2cyA9PiAxLCB9LAor CSAgfSwKKwogCSdBTFRFUiBST0xFIHJlZ3Jlc3NfZHVtcF90ZXN0X3JvbGUnID0+IHsKIAkJcmVn ZXhwID0+IHFyL14KIAkJCVxRQUxURVIgUk9MRSByZWdyZXNzX2R1bXBfdGVzdF9yb2xlIFdJVEgg XEUKQEAgLTEzMjgsNiArMTMzOCwyMiBAQCBteSAldGVzdHMgPSAoCiAJCXVubGlrZSA9PiB7IGV4 Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLCB9LAogCX0sCiAKKwknQ09NTUVOVCBPTiBWQVJJ QUJMRSBkdW1wX3Rlc3QudmFyaWFibGUxJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA3MSwKKwkJ Y3JlYXRlX3NxbCAgID0+ICdDT01NRU5UIE9OIFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZTEK KwkJCQkJICAgSVMgXCdjb21tZW50IG9uIHZhcmlhYmxlXCc7JywKKwkJcmVnZXhwID0+CisJCSAg cXIvXlxRQ09NTUVOVCBPTiBWQVJJQUJMRSBkdW1wX3Rlc3QudmFyaWFibGUxIElTICdjb21tZW50 IG9uIHZhcmlhYmxlJztcRS9tLAorCQlsaWtlID0+IHsKKwkJCSVmdWxsX3J1bnMsCisJCQklZHVt cF90ZXN0X3NjaGVtYV9ydW5zLAorCQkJc2VjdGlvbl9wcmVfZGF0YSAgICAgPT4gMSwKKwkJfSwK KwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAorCQl9LAor CX0sCisKIAknQ09QWSB0ZXN0X3RhYmxlJyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA0LAogCQlj cmVhdGVfc3FsICAgPT4gJ0lOU0VSVCBJTlRPIGR1bXBfdGVzdC50ZXN0X3RhYmxlIChjb2wxKSAn CkBAIC0zMjg0LDYgKzMzMTAsMzAgQEAgbXkgJXRlc3RzID0gKAogCQl9LAogCX0sCiAKKwknQ1JF QVRFIFZBUklBQkxFIHRlc3RfdmFyaWFibGUnID0+IHsKKwkJYWxsX3J1bnMgICAgID0+IDEsCisJ CWNhdGNoX2FsbCAgICA9PiAnQ1JFQVRFIC4uLiBjb21tYW5kcycsCisJCWNyZWF0ZV9vcmRlciA9 PiA2MSwKKwkJY3JlYXRlX3NxbCAgID0+ICdDUkVBVEUgVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlh YmxlMSBBUyBpbnRlZ2VyIERFRkFVTFQgMDsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVB VEUgVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlMSBBUyBpbnRlZ2VyIERFRkFVTFQgMDtcRS94 bSwKKwkJbGlrZSA9PgorCQkgIHsgJWZ1bGxfcnVucywgJWR1bXBfdGVzdF9zY2hlbWFfcnVucywg c2VjdGlvbl9wcmVfZGF0YSA9PiAxLCB9LAorCQl1bmxpa2UgPT4geyBleGNsdWRlX2R1bXBfdGVz dF9zY2hlbWEgPT4gMSwgfSwKKwl9LAorCisJJ0NSRUFURSBJTU1VVEFCTEUgVkFSSUFCTEUgdGVz dF92YXJpYWJsZScgPT4geworCQlhbGxfcnVucyAgICAgPT4gMSwKKwkJY2F0Y2hfYWxsICAgID0+ ICdDUkVBVEUgLi4uIGNvbW1hbmRzJywKKwkJY3JlYXRlX29yZGVyID0+IDYxLAorCQljcmVhdGVf c3FsICAgPT4gJ0NSRUFURSBJTU1VVEFCTEUgVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlMiBB UyBpbnRlZ2VyIERFRkFVTFQgMDsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgSU1N VVRBQkxFIFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZTIgQVMgaW50ZWdlciBERUZBVUxUIDA7 XEUveG0sCisJCWxpa2UgPT4KKwkJICB7ICVmdWxsX3J1bnMsICVkdW1wX3Rlc3Rfc2NoZW1hX3J1 bnMsIHNlY3Rpb25fcHJlX2RhdGEgPT4gMSwgfSwKKwkJdW5saWtlID0+IHsgZXhjbHVkZV9kdW1w X3Rlc3Rfc2NoZW1hID0+IDEsIH0sCisJfSwKKwogCSdDUkVBVEUgVklFVyB0ZXN0X3ZpZXcnID0+ IHsKIAkJY3JlYXRlX29yZGVyID0+IDYxLAogCQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBWSUVX IGR1bXBfdGVzdC50ZXN0X3ZpZXcKQEAgLTM3MjMsNiArMzc3MywyMSBAQCBteSAldGVzdHMgPSAo CiAJCWxpa2UgPT4ge30sCiAJfSwKIAorCSdHUkFOVCBTRUxFQ1QgT04gVkFSSUFCTEUgZHVtcF90 ZXN0LnZhcmlhYmxlMScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNzMsCisJCWNyZWF0ZV9zcWwg PT4KKwkJICAnR1JBTlQgU0VMRUNUIE9OIFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZTEgVE8g cmVncmVzc19kdW1wX3Rlc3Rfcm9sZTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFHUkFOVCBT RUxFQ1QgT04gVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlMSBUTyByZWdyZXNzX2R1bXBfdGVz dF9yb2xlO1xFCisJCQkveG0sCisJCWxpa2UgPT4KKwkJICB7ICVmdWxsX3J1bnMsICVkdW1wX3Rl c3Rfc2NoZW1hX3J1bnMsIHNlY3Rpb25fcHJlX2RhdGEgPT4gMSwgfSwKKwkJdW5saWtlID0+IHsK KwkJCWV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAorCQkJbm9fcHJpdnMgICAgICAgICAg ICAgICAgID0+IDEsCisJCX0sCisJfSwKKwogCSdSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIG1h dHZpZXcnID0+IHsKIAkJcmVnZXhwID0+IHFyL15cUVJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcg ZHVtcF90ZXN0Lm1hdHZpZXc7XEUvbSwKIAkJbGlrZSA9PgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAppbmRleCA5ZTAxMjZiZThkLi45OGQwMWI1NzQ2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dApAQCAtMjkxMiw2ICsyOTEyLDcgQEAgVmFyaWFibGUKIFZhcmlhYmxlQXNzaWduSG9vawogVmFy aWFibGVDYWNoZQogVmFyaWFibGVDYWNoZURhdGEKK1ZhcmlhYmxlSW5mbwogVmFyaWFibGVTZXRL aW5kCiBWYXJpYWJsZVNldFN0bXQKIFZhcmlhYmxlU2hvd1N0bXQKLS0gCjIuMzguMQoK --0000000000009ca7c005eedde9a7 Content-Type: text/x-patch; charset="US-ASCII"; name="v20221202-1-0005-DISCARD-VARIABLES-command.patch" Content-Disposition: attachment; filename="v20221202-1-0005-DISCARD-VARIABLES-command.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb6xukzp5 RnJvbSAwOWNkYWYwMTQzZWMzNDhkYmVkNzRjNWU4ZGI3ZTNkMTRlYWM1MWE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IFR1ZSwgNSBBcHIgMjAyMiAwMDoxMzo1OCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDUv MTBdIERJU0NBUkQgVkFSSUFCTEVTIGNvbW1hbmQKCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv ZGlzY2FyZC5jIHwgNiArKysrKysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICB8IDcg KysrKysrLQogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgIHwgMyArKysKIHNyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCB8IDMgKystCiBzcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xp c3QuaCAgfCAxICsKIDUgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKaW5kZXggYzU4MzUzOWUwYy4uNjhmZTU1MGE3MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNvbW1h bmRzL2Rpc2NhcmQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvc2VxdWVuY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxl LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvcG9ydGFsLmgiCiAK QEAgLTQ4LDYgKzQ5LDEwIEBAIERpc2NhcmRDb21tYW5kKERpc2NhcmRTdG10ICpzdG10LCBib29s IGlzVG9wTGV2ZWwpCiAJCQlSZXNldFRlbXBUYWJsZU5hbWVzcGFjZSgpOwogCQkJYnJlYWs7CiAK KwkJY2FzZSBESVNDQVJEX1ZBUklBQkxFUzoKKwkJCVJlc2V0U2Vzc2lvblZhcmlhYmxlcygpOwor CQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRElT Q0FSRCB0YXJnZXQ6ICVkIiwgc3RtdC0+dGFyZ2V0KTsKIAl9CkBAIC03NSw0ICs4MCw1IEBAIERp c2NhcmRBbGwoYm9vbCBpc1RvcExldmVsKQogCVJlc2V0UGxhbkNhY2hlKCk7CiAJUmVzZXRUZW1w VGFibGVOYW1lc3BhY2UoKTsKIAlSZXNldFNlcXVlbmNlQ2FjaGVzKCk7CisJUmVzZXRTZXNzaW9u VmFyaWFibGVzKCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAyMmIyZmRmNzJkLi5iYjE1MzFjY2E5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKQEAgLTIwMjQsNyArMjAyNCwxMiBAQCBEaXNjYXJkU3RtdDoKIAkJCQkJbi0+ dGFyZ2V0ID0gRElTQ0FSRF9TRVFVRU5DRVM7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 Ci0KKwkJCXwgRElTQ0FSRCBWQVJJQUJMRVMKKwkJCQl7CisJCQkJCURpc2NhcmRTdG10ICpuID0g bWFrZU5vZGUoRGlzY2FyZFN0bXQpOworCQkJCQluLT50YXJnZXQgPSBESVNDQVJEX1ZBUklBQkxF UzsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJOwogCiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5k ZXggZDc3ZmVhZDI3Ni4uZDQ0MmEwZGZmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91 dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTI5NTIsNiArMjk1 Miw5IEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWNhc2UgRElTQ0FS RF9TRVFVRU5DRVM6CiAJCQkJCXRhZyA9IENNRFRBR19ESVNDQVJEX1NFUVVFTkNFUzsKIAkJCQkJ YnJlYWs7CisJCQkJY2FzZSBESVNDQVJEX1ZBUklBQkxFUzoKKwkJCQkJdGFnID0gQ01EVEFHX0RJ U0NBUkRfVkFSSUFCTEVTOworCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgogCQkJCQl0YWcgPSBD TURUQUdfVU5LTk9XTjsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBlZWZiM2Y1Nzkx Li5kMjhjMmY1ZWJkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zNTcyLDcgKzM1NzIsOCBA QCB0eXBlZGVmIGVudW0gRGlzY2FyZE1vZGUKIAlESVNDQVJEX0FMTCwKIAlESVNDQVJEX1BMQU5T LAogCURJU0NBUkRfU0VRVUVOQ0VTLAotCURJU0NBUkRfVEVNUAorCURJU0NBUkRfVEVNUCwKKwlE SVNDQVJEX1ZBUklBQkxFUwogfSBEaXNjYXJkTW9kZTsKIAogdHlwZWRlZiBzdHJ1Y3QgRGlzY2Fy ZFN0bXQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oIGIvc3JjL2lu Y2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKaW5kZXggMzU3OTg5YjUyZi4uMDliZDRkNDY3ZiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUv dGNvcC9jbWR0YWdsaXN0LmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBQR19DTURUQUcoQ01EVEFHX0RJ U0NBUkRfQUxMLCAiRElTQ0FSRCBBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFH KENNRFRBR19ESVNDQVJEX1BMQU5TLCAiRElTQ0FSRCBQTEFOUyIsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCiBQR19DTURUQUcoQ01EVEFHX0RJU0NBUkRfU0VRVUVOQ0VTLCAiRElTQ0FSRCBTRVFVRU5D RVMiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19ESVNDQVJEX1RFTVAs ICJESVNDQVJEIFRFTVAiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19E SVNDQVJEX1ZBUklBQkxFUywgIkRJU0NBUkQgVkFSSUFCTEVTIiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKIFBHX0NNRFRBRyhDTURUQUdfRE8sICJETyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19D TURUQUcoQ01EVEFHX0RST1BfQUNDRVNTX01FVEhPRCwgIkRST1AgQUNDRVNTIE1FVEhPRCIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfRFJPUF9BR0dSRUdBVEUsICJEUk9Q IEFHR1JFR0FURSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLS0gCjIuMzguMQoK --0000000000009ca7c005eedde9a7 Content-Type: text/x-patch; charset="US-ASCII"; name="v20221202-1-0004-support-of-LET-command-in-PLpgSQL.patch" Content-Disposition: attachment; filename="v20221202-1-0004-support-of-LET-command-in-PLpgSQL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb6xukzr6 RnJvbSBkMWZmZWQyMjY2N2FiMTgzMTY0MWQzZGU2MDVjZmRkMGIwZDBjZGY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IE1vbiwgNCBBcHIgMjAyMiAyMDozMjo0NSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDQv MTBdIHN1cHBvcnQgb2YgTEVUIGNvbW1hbmQgaW4gUExwZ1NRTAoKVGhlIHN1cHBvcnQgZm9yIExF VCBjb21tYW5kIGFzIFBMcGdTUUwgY29tbWFuZCBkb2VzIGFzc2lnbmluZyBvZiBleHByZXNzaW9u CmV2YWx1YXRpb24gdG8gc2Vzc2lvbiB2YXJpYWJsZS4gV2l0aCBleHRyYSBzdXBwb3J0IGluIFBM cGdTUUwgd2UgY2FuIGltcGxlbWVudApTUUwgTEVUIGNvbW1hbmQgbGlrZSB1c3VhbCBQb3N0Z3Jl U1FMJ3MgY29tbWFuZCAoYW5kIHRoZSBhc3NpZ25pbmcgb2YgcmVzdWx0CnRvIHNlc3Npb24gdmFy aWFibGUgaXMgbm90IHNpZGUgZWZmZWN0IG9mIHF1ZXJ5IGV2YWx1YXRpb24pLgotLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICB8ICAzICsrCiBzcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgfCAgOCArKysrCiBzcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VyLmMgICAgICAgICAgICAgfCAgMyArLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlci5o ICAgICAgICAgICAgIHwgIDYgKystCiBzcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jICAgICAg ICAgICAgfCA1NSArKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvcGwvcGxwZ3NxbC9zcmMv cGxfZnVuY3MuYyAgICAgICAgICAgfCAyNCArKysrKysrKysrKwogc3JjL3BsL3BscGdzcWwvc3Jj L3BsX2dyYW0ueSAgICAgICAgICAgIHwgMjggKysrKysrKysrKysrLQogc3JjL3BsL3BscGdzcWwv c3JjL3BsX3Jlc2VydmVkX2t3bGlzdC5oIHwgIDEgKwogc3JjL3BsL3BscGdzcWwvc3JjL3BscGdz cWwuaCAgICAgICAgICAgIHwgMTQgKysrKysrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgICAgICAgIHwgIDEgKwogMTAgZmlsZXMgY2hhbmdlZCwgMTM5IGluc2VydGlvbnMoKyks IDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCBmZDU3OTZmMWI5Li4yNWUzOTgxNzk3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9zcGkuYwpAQCAtMjk2Myw2ICsyOTYzLDkgQEAgX1NQSV9lcnJvcl9jYWxsYmFj ayh2b2lkICphcmcpCiAJCQljYXNlIFJBV19QQVJTRV9QTFBHU1FMX0FTU0lHTjM6CiAJCQkJZXJy Y29udGV4dCgiUEwvcGdTUUwgYXNzaWdubWVudCBcIiVzXCIiLCBxdWVyeSk7CiAJCQkJYnJlYWs7 CisJCQljYXNlIFJBV19QQVJTRV9QTFBHU1FMX0xFVDoKKwkJCQllcnJjb250ZXh0KCJMRVQgc3Rh dGVtZW50IFwiJXNcIiIsIHF1ZXJ5KTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJZXJy Y29udGV4dCgiU1FMIHN0YXRlbWVudCBcIiVzXCIiLCBxdWVyeSk7CiAJCQkJYnJlYWs7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQppbmRleCA1ZTNkNTNjYmYzLi4yMmIyZmRmNzJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTc5Myw2 ICs3OTMsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXRva2VuCQlNT0RFX1BMUEdTUUxf QVNTSUdOMQogJXRva2VuCQlNT0RFX1BMUEdTUUxfQVNTSUdOMgogJXRva2VuCQlNT0RFX1BMUEdT UUxfQVNTSUdOMworJXRva2VuCQlNT0RFX1BMUEdTUUxfTEVUCiAKIAogLyogUHJlY2VkZW5jZTog bG93ZXN0IHRvIGhpZ2hlc3QgKi8KQEAgLTkwMiw2ICs5MDMsMTMgQEAgcGFyc2VfdG9wbGV2ZWw6 CiAJCQkJcGdfeXlnZXRfZXh0cmEoeXlzY2FubmVyKS0+cGFyc2V0cmVlID0KIAkJCQkJbGlzdF9t YWtlMShtYWtlUmF3U3RtdCgoTm9kZSAqKSBuLCAwKSk7CiAJCQl9CisJCQl8IE1PREVfUExQR1NR TF9MRVQgTGV0U3RtdAorCQkJeworCQkJCUxldFN0bXQgKm4gPSAoTGV0U3RtdCAqKSAkMjsKKwkJ CQluLT5wbHBnc3FsX21vZGUgPSB0cnVlOworCQkJCXBnX3l5Z2V0X2V4dHJhKHl5c2Nhbm5lcikt PnBhcnNldHJlZSA9CisJCQkJCWxpc3RfbWFrZTEobWFrZVJhd1N0bXQoKE5vZGUgKikgbiwgMCkp OworCQkJfQogCQk7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vy LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VyLmMKaW5kZXggZWY4NWQzYmI2OC4uNTA1ZjVk M2E2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlci5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZXIuYwpAQCAtNjEsNyArNjEsOCBAQCByYXdfcGFyc2VyKGNvbnN0 IGNoYXIgKnN0ciwgUmF3UGFyc2VNb2RlIG1vZGUpCiAJCQlNT0RFX1BMUEdTUUxfRVhQUiwJLyog UkFXX1BBUlNFX1BMUEdTUUxfRVhQUiAqLwogCQkJTU9ERV9QTFBHU1FMX0FTU0lHTjEsCS8qIFJB V19QQVJTRV9QTFBHU1FMX0FTU0lHTjEgKi8KIAkJCU1PREVfUExQR1NRTF9BU1NJR04yLAkvKiBS QVdfUEFSU0VfUExQR1NRTF9BU1NJR04yICovCi0JCQlNT0RFX1BMUEdTUUxfQVNTSUdOMwkvKiBS QVdfUEFSU0VfUExQR1NRTF9BU1NJR04zICovCisJCQlNT0RFX1BMUEdTUUxfQVNTSUdOMywJLyog UkFXX1BBUlNFX1BMUEdTUUxfQVNTSUdOMyAqLworCQkJTU9ERV9QTFBHU1FMX0xFVAkvKiBSQVdf UEFSU0VfUExQR1NRTF9MRVQgKi8KIAkJfTsKIAogCQl5eWV4dHJhLmhhdmVfbG9va2FoZWFkID0g dHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZXIuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZXIuaAppbmRleCA4MjgxNTBmMDFiLi5iZjVkNWFjZjQ4IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlci5oCkBAIC0zMyw2ICszMyw5IEBACiAgKiBSQVdfUEFSU0VfUExQR1NRTF9BU1NJR05u OiBwYXJzZSBhIFBML3BnU1FMIGFzc2lnbm1lbnQgc3RhdGVtZW50LAogICogYW5kIHJldHVybiBh IG9uZS1lbGVtZW50IExpc3QgY29udGFpbmluZyBhIFJhd1N0bXQgbm9kZS4gICJuIgogICogZ2l2 ZXMgdGhlIG51bWJlciBvZiBkb3R0ZWQgbmFtZXMgY29tcHJpc2luZyB0aGUgdGFyZ2V0IENvbHVt blJlZi4KKyAqCisgKiBSQVdfUEFSU0VfUExQR1NRTF9MRVQ6IHBhcnNlIGEgTEVUIHN0YXRlbWVu dCwgYW5kIHJldHVybiBhCisgKiBvbmUtZWxlbWVudCBMaXN0IGNvbnRhaW5pbmcgYSBSYXdTdG10 IG5vZGUuCiAgKi8KIHR5cGVkZWYgZW51bQogewpAQCAtNDEsNyArNDQsOCBAQCB0eXBlZGVmIGVu dW0KIAlSQVdfUEFSU0VfUExQR1NRTF9FWFBSLAogCVJBV19QQVJTRV9QTFBHU1FMX0FTU0lHTjEs CiAJUkFXX1BBUlNFX1BMUEdTUUxfQVNTSUdOMiwKLQlSQVdfUEFSU0VfUExQR1NRTF9BU1NJR04z CisJUkFXX1BBUlNFX1BMUEdTUUxfQVNTSUdOMywKKwlSQVdfUEFSU0VfUExQR1NRTF9MRVQKIH0g UmF3UGFyc2VNb2RlOwogCiAvKiBWYWx1ZXMgZm9yIHRoZSBiYWNrc2xhc2hfcXVvdGUgR1VDICov CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jIGIvc3JjL3BsL3BscGdz cWwvc3JjL3BsX2V4ZWMuYwppbmRleCBhNjQ3MzQyOTQ4Li5kNDFlZDA5OWMzIDEwMDY0NAotLS0g YS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9w bF9leGVjLmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0u aCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9zcGkuaCIKICNpbmNsdWRlICJl eGVjdXRvci90c3RvcmVSZWNlaXZlci5oIgpAQCAtMzE4LDYgKzMxOSw4IEBAIHN0YXRpYyBpbnQJ ZXhlY19zdG10X2NvbW1pdChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCQkJCQkJCSBQTHBn U1FMX3N0bXRfY29tbWl0ICpzdG10KTsKIHN0YXRpYyBpbnQJZXhlY19zdG10X3JvbGxiYWNrKFBM cGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJCQkJICAgUExwZ1NRTF9zdG10X3JvbGxiYWNr ICpzdG10KTsKK3N0YXRpYyBpbnQJZXhlY19zdG10X2xldChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0 YXRlLAorCQkJCQkJICBQTHBnU1FMX3N0bXRfbGV0ICpsZXQpOwogCiBzdGF0aWMgdm9pZCBwbHBn c3FsX2VzdGF0ZV9zZXR1cChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkgUExw Z1NRTF9mdW5jdGlvbiAqZnVuYywKQEAgLTIxMDksNiArMjExMiwxMCBAQCBleGVjX3N0bXRzKFBM cGdTUUxfZXhlY3N0YXRlICplc3RhdGUsIExpc3QgKnN0bXRzKQogCQkJCXJjID0gZXhlY19zdG10 X3JvbGxiYWNrKGVzdGF0ZSwgKFBMcGdTUUxfc3RtdF9yb2xsYmFjayAqKSBzdG10KTsKIAkJCQli cmVhazsKIAorCQkJY2FzZSBQTFBHU1FMX1NUTVRfTEVUOgorCQkJCXJjID0gZXhlY19zdG10X2xl dChlc3RhdGUsIChQTHBnU1FMX3N0bXRfbGV0ICopIHN0bXQpOworCQkJCWJyZWFrOworCiAJCQlk ZWZhdWx0OgogCQkJCS8qIHBvaW50IGVycl9zdG10IHRvIHBhcmVudCwgc2luY2UgdGhpcyBvbmUg c2VlbXMgY29ycnVwdCAqLwogCQkJCWVzdGF0ZS0+ZXJyX3N0bXQgPSBzYXZlX2VzdG10OwpAQCAt NDk3Nyw2ICs0OTg0LDU0IEBAIGV4ZWNfc3RtdF9yb2xsYmFjayhQTHBnU1FMX2V4ZWNzdGF0ZSAq ZXN0YXRlLCBQTHBnU1FMX3N0bXRfcm9sbGJhY2sgKnN0bXQpCiAJcmV0dXJuIFBMUEdTUUxfUkNf T0s7CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIGV4ZWNfc3RtdF9sZXQJCQlFdmFsdWF0ZSBhbiBl eHByZXNzaW9uIGFuZAorICoJCQkJCXB1dCB0aGUgcmVzdWx0IGludG8gYSBzZXNzaW9uIHZhcmlh YmxlLgorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMgaW50CitleGVjX3N0bXRfbGV0KFBMcGdT UUxfZXhlY3N0YXRlICplc3RhdGUsIFBMcGdTUUxfc3RtdF9sZXQgKnN0bXQpCit7CisJYm9vbAkJ aXNOdWxsOworCU9pZAkJCXZhbHR5cGU7CisJaW50MzIJCXZhbHR5cG1vZDsKKwlEYXR1bQkJdmFs dWU7CisJT2lkCQkJdmFyaWQ7CisKKwlMaXN0CSAgICpwbGFuc291cmNlczsKKwlDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlOworCisJdmFsdWUgPSBleGVjX2V2YWxfZXhwcihlc3RhdGUsCisJ CQkJCQkgICBzdG10LT5leHByLAorCQkJCQkJICAgJmlzTnVsbCwKKwkJCQkJCSAgICZ2YWx0eXBl LAorCQkJCQkJICAgJnZhbHR5cG1vZCk7CisKKwkvKgorCSAqIE9pZCBvZiB0YXJnZXQgc2Vzc2lv biB2YXJpYWJsZSBpcyBzdG9yZWQgaW4gUXVlcnkgc3RydWN0dXJlLiBJdCBpcworCSAqIHNhZmVy IHRvIHJlYWQgdGhpcyB2YWx1ZSBkaXJlY3RseSBmcm9tIHRoZSBwbGFuIHRoYW4gdG8gaG9sZCB0 aGlzIHZhbHVlCisJICogaW4gdGhlIHBscGdzcWwgY29udGV4dCwgYmVjYXVzZSBpdCdzIG5vdCBu ZWNlc3NhcnkgdG8gaGFuZGxlCisJICogaW52YWxpZGF0aW9uIG9mIHRoZSBjYWNoZWQgdmFsdWUu IE5leHQgb3BlcmF0aW9ucyBhcmUgcmVhZCBvbmx5IHdpdGhvdXQKKwkgKiBhbnkgYWxsb2NhdGlv bnMsIHNvIHdlIGNhbiBleHBlY3QgdGhhdCByZXRyaWV2aW5nIHZhcmlkIGZyb20gUXVlcnkKKwkg KiBzaG91bGQgYmUgZmFzdC4KKwkgKi8KKwlwbGFuc291cmNlcyA9IFNQSV9wbGFuX2dldF9wbGFu X3NvdXJjZXMoc3RtdC0+ZXhwci0+cGxhbik7CisJaWYgKGxpc3RfbGVuZ3RoKHBsYW5zb3VyY2Vz KSAhPSAxKQorCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBsZW5ndGggb2YgcGxhbnNvdXJjZXMg b2YgcXVlcnkgZm9yIExFVCBzdGF0ZW1lbnQiKTsKKworCXBsYW5zb3VyY2UgPSAoQ2FjaGVkUGxh blNvdXJjZSAqKSBsaW5pdGlhbChwbGFuc291cmNlcyk7CisJaWYgKGxpc3RfbGVuZ3RoKHBsYW5z b3VyY2UtPnF1ZXJ5X2xpc3QpICE9IDEpCisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGxlbmd0 aCBvZiBwbGFuc291cmNlIG9mIHF1ZXJ5IGZvciBMRVQgc3RhdGVtZW50Iik7CisKKwl2YXJpZCA9 IGxpbml0aWFsX25vZGUoUXVlcnksIHBsYW5zb3VyY2UtPnF1ZXJ5X2xpc3QpLT5yZXN1bHRWYXJp YWJsZTsKKwlpZiAoIU9pZElzVmFsaWQodmFyaWQpKQorCQllbG9nKEVSUk9SLCAib2lkIG9mIHRh cmdldCBzZXNzaW9uIHZhcmlhYmxlIGlzIG5vdCB2YWxpZCIpOworCisJU2V0U2Vzc2lvblZhcmlh YmxlV2l0aFNlY3VyaXR5Q2hlY2sodmFyaWQsIHZhbHVlLCBpc051bGwpOworCisJcmV0dXJuIFBM UEdTUUxfUkNfT0s7Cit9CisKIC8qIC0tLS0tLS0tLS0KICAqIGV4ZWNfYXNzaWduX2V4cHIJCQlQ dXQgYW4gZXhwcmVzc2lvbidzIHJlc3VsdCBpbnRvIGEgdmFyaWFibGUuCiAgKiAtLS0tLS0tLS0t CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZnVuY3MuYyBiL3NyYy9wbC9wbHBn c3FsL3NyYy9wbF9mdW5jcy5jCmluZGV4IDhkN2I2YjU4YzAuLjIyZmM2YjJjYTIgMTAwNjQ0Ci0t LSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9mdW5jcy5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3Ny Yy9wbF9mdW5jcy5jCkBAIC0yODgsNiArMjg4LDggQEAgcGxwZ3NxbF9zdG10X3R5cGVuYW1lKFBM cGdTUUxfc3RtdCAqc3RtdCkKIAkJCXJldHVybiAiQ09NTUlUIjsKIAkJY2FzZSBQTFBHU1FMX1NU TVRfUk9MTEJBQ0s6CiAJCQlyZXR1cm4gIlJPTExCQUNLIjsKKwkJY2FzZSBQTFBHU1FMX1NUTVRf TEVUOgorCQkJcmV0dXJuICJMRVQiOwogCX0KIAogCXJldHVybiAidW5rbm93biI7CkBAIC0zNjgs NiArMzcwLDcgQEAgc3RhdGljIHZvaWQgZnJlZV9wZXJmb3JtKFBMcGdTUUxfc3RtdF9wZXJmb3Jt ICpzdG10KTsKIHN0YXRpYyB2b2lkIGZyZWVfY2FsbChQTHBnU1FMX3N0bXRfY2FsbCAqc3RtdCk7 CiBzdGF0aWMgdm9pZCBmcmVlX2NvbW1pdChQTHBnU1FMX3N0bXRfY29tbWl0ICpzdG10KTsKIHN0 YXRpYyB2b2lkIGZyZWVfcm9sbGJhY2soUExwZ1NRTF9zdG10X3JvbGxiYWNrICpzdG10KTsKK3N0 YXRpYyB2b2lkIGZyZWVfbGV0KFBMcGdTUUxfc3RtdF9sZXQgKnN0bXQpOwogc3RhdGljIHZvaWQg ZnJlZV9leHByKFBMcGdTUUxfZXhwciAqZXhwcik7CiAKIApAQCAtNDU3LDYgKzQ2MCw5IEBAIGZy ZWVfc3RtdChQTHBnU1FMX3N0bXQgKnN0bXQpCiAJCWNhc2UgUExQR1NRTF9TVE1UX1JPTExCQUNL OgogCQkJZnJlZV9yb2xsYmFjaygoUExwZ1NRTF9zdG10X3JvbGxiYWNrICopIHN0bXQpOwogCQkJ YnJlYWs7CisJCWNhc2UgUExQR1NRTF9TVE1UX0xFVDoKKwkJCWZyZWVfbGV0KChQTHBnU1FMX3N0 bXRfbGV0ICopIHN0bXQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIGNtZF90eXBlOiAlZCIsIHN0bXQtPmNtZF90eXBlKTsKIAkJCWJyZWFrOwpA QCAtNzExLDYgKzcxNywxMiBAQCBmcmVlX2dldGRpYWcoUExwZ1NRTF9zdG10X2dldGRpYWcgKnN0 bXQpCiB7CiB9CiAKK3N0YXRpYyB2b2lkCitmcmVlX2xldChQTHBnU1FMX3N0bXRfbGV0ICpzdG10 KQoreworCWZyZWVfZXhwcihzdG10LT5leHByKTsKK30KKwogc3RhdGljIHZvaWQKIGZyZWVfZXhw cihQTHBnU1FMX2V4cHIgKmV4cHIpCiB7CkBAIC04MTMsNiArODI1LDcgQEAgc3RhdGljIHZvaWQg ZHVtcF9wZXJmb3JtKFBMcGdTUUxfc3RtdF9wZXJmb3JtICpzdG10KTsKIHN0YXRpYyB2b2lkIGR1 bXBfY2FsbChQTHBnU1FMX3N0bXRfY2FsbCAqc3RtdCk7CiBzdGF0aWMgdm9pZCBkdW1wX2NvbW1p dChQTHBnU1FMX3N0bXRfY29tbWl0ICpzdG10KTsKIHN0YXRpYyB2b2lkIGR1bXBfcm9sbGJhY2so UExwZ1NRTF9zdG10X3JvbGxiYWNrICpzdG10KTsKK3N0YXRpYyB2b2lkIGR1bXBfbGV0KFBMcGdT UUxfc3RtdF9sZXQgKnN0bXQpOwogc3RhdGljIHZvaWQgZHVtcF9leHByKFBMcGdTUUxfZXhwciAq ZXhwcik7CiAKIApAQCAtOTEyLDYgKzkyNSw5IEBAIGR1bXBfc3RtdChQTHBnU1FMX3N0bXQgKnN0 bXQpCiAJCWNhc2UgUExQR1NRTF9TVE1UX1JPTExCQUNLOgogCQkJZHVtcF9yb2xsYmFjaygoUExw Z1NRTF9zdG10X3JvbGxiYWNrICopIHN0bXQpOwogCQkJYnJlYWs7CisJCWNhc2UgUExQR1NRTF9T VE1UX0xFVDoKKwkJCWR1bXBfbGV0KChQTHBnU1FMX3N0bXRfbGV0ICopIHN0bXQpOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGNtZF90eXBlOiAl ZCIsIHN0bXQtPmNtZF90eXBlKTsKIAkJCWJyZWFrOwpAQCAtMTU4OCw2ICsxNjA0LDE0IEBAIGR1 bXBfZ2V0ZGlhZyhQTHBnU1FMX3N0bXRfZ2V0ZGlhZyAqc3RtdCkKIAlwcmludGYoIlxuIik7CiB9 CiAKK3N0YXRpYyB2b2lkCitkdW1wX2xldChQTHBnU1FMX3N0bXRfbGV0ICpzdG10KQoreworCWR1 bXBfaW5kKCk7CisJZHVtcF9leHByKHN0bXQtPmV4cHIpOworCXByaW50ZigiXG4iKTsKK30KKwog c3RhdGljIHZvaWQKIGR1bXBfZXhwcihQTHBnU1FMX2V4cHIgKmV4cHIpCiB7CmRpZmYgLS1naXQg YS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZ3JhbS55IGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dy YW0ueQppbmRleCBmN2NmMmI0Yjg5Li5lMWM5YzhmN2M4IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxw Z3NxbC9zcmMvcGxfZ3JhbS55CisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9ncmFtLnkKQEAg LTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMJdm9pZAkJCWNoZWNrX3JhaXNlX3BhcmFtZXRlcnMoUExw Z1NRTF9zdG10X3JhaXNlICpzdG10KTsKICV0eXBlIDxzdG10PglzdG10X3JldHVybiBzdG10X3Jh aXNlIHN0bXRfYXNzZXJ0IHN0bXRfZXhlY3NxbAogJXR5cGUgPHN0bXQ+CXN0bXRfZHluZXhlY3V0 ZSBzdG10X2ZvciBzdG10X3BlcmZvcm0gc3RtdF9jYWxsIHN0bXRfZ2V0ZGlhZwogJXR5cGUgPHN0 bXQ+CXN0bXRfb3BlbiBzdG10X2ZldGNoIHN0bXRfbW92ZSBzdG10X2Nsb3NlIHN0bXRfbnVsbAot JXR5cGUgPHN0bXQ+CXN0bXRfY29tbWl0IHN0bXRfcm9sbGJhY2sKKyV0eXBlIDxzdG10PglzdG10 X2NvbW1pdCBzdG10X3JvbGxiYWNrIHN0bXRfbGV0CiAldHlwZSA8c3RtdD4Jc3RtdF9jYXNlIHN0 bXRfZm9yZWFjaF9hCiAKICV0eXBlIDxsaXN0Pglwcm9jX2V4Y2VwdGlvbnMKQEAgLTMwMiw2ICsz MDIsNyBAQCBzdGF0aWMJdm9pZAkJCWNoZWNrX3JhaXNlX3BhcmFtZXRlcnMoUExwZ1NRTF9zdG10 X3JhaXNlICpzdG10KTsKICV0b2tlbiA8a2V5d29yZD4JS19JTlRPCiAldG9rZW4gPGtleXdvcmQ+ CUtfSVMKICV0b2tlbiA8a2V5d29yZD4JS19MQVNUCisldG9rZW4gPGtleXdvcmQ+CUtfTEVUCiAl dG9rZW4gPGtleXdvcmQ+CUtfTE9HCiAldG9rZW4gPGtleXdvcmQ+CUtfTE9PUAogJXRva2VuIDxr ZXl3b3JkPglLX01FUkdFCkBAIC04OTYsNiArODk3LDggQEAgcHJvY19zdG10CQk6IHBsX2Jsb2Nr ICc7JwogCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQkJfCBzdG10X3JvbGxiYWNrCiAJCQkJCQl7ICQk ID0gJDE7IH0KKwkJCQl8IHN0bXRfbGV0CisJCQkJCQl7ICQkID0gJDE7IH0KIAkJCQk7CiAKIHN0 bXRfcGVyZm9ybQk6IEtfUEVSRk9STQpAQCAtMTAxMiw2ICsxMDE1LDI5IEBAIHN0bXRfYXNzaWdu CQk6IFRfREFUVU0KIAkJCQkJfQogCQkJCTsKIAorc3RtdF9sZXQJCTogS19MRVQKKwkJCQkJewor CQkJCQkJUExwZ1NRTF9zdG10X2xldCAqbmV3OworCQkJCQkJUmF3UGFyc2VNb2RlIHBtb2RlOwor CisJCQkJCQlwbW9kZSA9IFJBV19QQVJTRV9QTFBHU1FMX0xFVDsKKworCQkJCQkJbmV3ID0gcGFs bG9jMChzaXplb2YoUExwZ1NRTF9zdG10X2xldCkpOworCQkJCQkJbmV3LT5jbWRfdHlwZSA9IFBM UEdTUUxfU1RNVF9MRVQ7CisJCQkJCQluZXctPmxpbmVubyAgID0gcGxwZ3NxbF9sb2NhdGlvbl90 b19saW5lbm8oQDEpOworCQkJCQkJbmV3LT5zdG10aWQgPSArK3BscGdzcWxfY3Vycl9jb21waWxl LT5uc3RhdGVtZW50czsKKworCQkJCQkJLyogUHVzaCBiYWNrIHRoZSBoZWFkIG5hbWUgdG8gaW5j bHVkZSBpdCBpbiB0aGUgc3RtdCAqLworCQkJCQkJcGxwZ3NxbF9wdXNoX2JhY2tfdG9rZW4oS19M RVQpOworCQkJCQkJbmV3LT5leHByID0gcmVhZF9zcWxfY29uc3RydWN0KCc7JywgMCwgMCwgIjsi LAorCQkJCQkJCQkJCQkJCSAgIHBtb2RlLAorCQkJCQkJCQkJCQkJCSAgIGZhbHNlLCB0cnVlLCB0 cnVlLAorCQkJCQkJCQkJCQkJCSAgIE5VTEwsIE5VTEwpOworCisJCQkJCQkkJCA9IChQTHBnU1FM X3N0bXQgKiluZXc7CisJCQkJCX0KKwkJCQk7CisKIHN0bXRfZ2V0ZGlhZwk6IEtfR0VUIGdldGRp YWdfYXJlYV9vcHQgS19ESUFHTk9TVElDUyBnZXRkaWFnX2xpc3QgJzsnCiAJCQkJCXsKIAkJCQkJ CVBMcGdTUUxfc3RtdF9nZXRkaWFnICpuZXc7CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9z cmMvcGxfcmVzZXJ2ZWRfa3dsaXN0LmggYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfcmVzZXJ2ZWRf a3dsaXN0LmgKaW5kZXggOTA0M2ZiZGRiYy4uZTY4YjVkNWIyNiAxMDA2NDQKLS0tIGEvc3JjL3Bs L3BscGdzcWwvc3JjL3BsX3Jlc2VydmVkX2t3bGlzdC5oCisrKyBiL3NyYy9wbC9wbHBnc3FsL3Ny Yy9wbF9yZXNlcnZlZF9rd2xpc3QuaApAQCAtNDAsNiArNDAsNyBAQCBQR19LRVlXT1JEKCJmcm9t IiwgS19GUk9NKQogUEdfS0VZV09SRCgiaWYiLCBLX0lGKQogUEdfS0VZV09SRCgiaW4iLCBLX0lO KQogUEdfS0VZV09SRCgiaW50byIsIEtfSU5UTykKK1BHX0tFWVdPUkQoImxldCIsIEtfTEVUKQog UEdfS0VZV09SRCgibG9vcCIsIEtfTE9PUCkKIFBHX0tFWVdPUkQoIm5vdCIsIEtfTk9UKQogUEdf S0VZV09SRCgibnVsbCIsIEtfTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9w bHBnc3FsLmggYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxwZ3NxbC5oCmluZGV4IDA4ODc2ODg2N2Qu LjNhZWI3YmFkZjggMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbHBnc3FsLmgKKysr IGIvc3JjL3BsL3BscGdzcWwvc3JjL3BscGdzcWwuaApAQCAtMTI3LDcgKzEyNyw4IEBAIHR5cGVk ZWYgZW51bSBQTHBnU1FMX3N0bXRfdHlwZQogCVBMUEdTUUxfU1RNVF9QRVJGT1JNLAogCVBMUEdT UUxfU1RNVF9DQUxMLAogCVBMUEdTUUxfU1RNVF9DT01NSVQsCi0JUExQR1NRTF9TVE1UX1JPTExC QUNLCisJUExQR1NRTF9TVE1UX1JPTExCQUNLLAorCVBMUEdTUUxfU1RNVF9MRVQKIH0gUExwZ1NR TF9zdG10X3R5cGU7CiAKIC8qCkBAIC01MTksNiArNTIwLDE3IEBAIHR5cGVkZWYgc3RydWN0IFBM cGdTUUxfc3RtdF9hc3NpZ24KIAlQTHBnU1FMX2V4cHIgKmV4cHI7CiB9IFBMcGdTUUxfc3RtdF9h c3NpZ247CiAKKy8qCisgKiBMZXQgc3RhdGVtZW50CisgKi8KK3R5cGVkZWYgc3RydWN0IFBMcGdT UUxfc3RtdF9sZXQKK3sKKwlQTHBnU1FMX3N0bXRfdHlwZSBjbWRfdHlwZTsKKwlpbnQJCQlsaW5l bm87CisJdW5zaWduZWQgaW50IHN0bXRpZDsKKwlQTHBnU1FMX2V4cHIgKmV4cHI7Cit9IFBMcGdT UUxfc3RtdF9sZXQ7CisKIC8qCiAgKiBQRVJGT1JNIHN0YXRlbWVudAogICovCmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CmluZGV4IDRlMDE5ODUzODYuLjllMDEyNmJlOGQgMTAwNjQ0Ci0tLSBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CkBAIC0xNzc3LDYgKzE3NzcsNyBAQCBQTHBnU1FMX3N0bXRfZm9ycQogUExw Z1NRTF9zdG10X2ZvcnMKIFBMcGdTUUxfc3RtdF9nZXRkaWFnCiBQTHBnU1FMX3N0bXRfaWYKK1BM cGdTUUxfc3RtdF9sZXQKIFBMcGdTUUxfc3RtdF9sb29wCiBQTHBnU1FMX3N0bXRfb3BlbgogUExw Z1NRTF9zdG10X3BlcmZvcm0KLS0gCjIuMzguMQoK --0000000000009ca7c005eedde9a7 Content-Type: text/x-patch; charset="US-ASCII"; name="v20221202-1-0002-session-variables.patch" Content-Disposition: attachment; filename="v20221202-1-0002-session-variables.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb6xukzu8 RnJvbSBmZWRlYWVmMGFlYTAxMjI4NjNlNWU3N2NjZjFmZWNmOTFjOTU1NWEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPHBhdmVsLnN0ZWh1bGVAZ21h aWwuY29tPgpEYXRlOiBTdW4sIDEzIE5vdiAyMDIyIDE3OjQ1OjIzICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwMi8xMF0gc2Vzc2lvbiB2YXJpYWJsZXMKCkltcGxlbWVudGF0aW9uIHN0b3JhZ2UgYW5k IGFjY2VzcyByb3V0aW5lcy4gU2Vzc2lvbiB2YXJpYWJsZXMgYXJlIHN0b3JlZAppbiBzZXNzaW9u IG1lbW9yeSBpbnNpZGUgZGVkaWNhdGVkIGhhc2ggdGFibGUuIFR3byBsZXZlbHMgb2YgYW4gYWNj ZXNzCmFyZSBpbXBsZW1lbnRlZDogQVBJIGxldmVsIGFuZCBTUUwgbGV2ZWwuIEJvdGggbGV2ZWxz IGFyZSBpbXBsZW1lbnRlZAppbiB0aGlzIGNvbW1pdC4KClRoZSBtb3N0IGRpZmZpY3VsdCBwYXJ0 IGlzIGNsZWFuaW5nIChyZXNldCkgb2Ygc2Vzc2lvbiB2YXJpYWJsZS4gVGhlCmNvbnRlbnQgb2Yg c2Vzc2lvbiB2YXJpYWJsZSBzaG91bGQgYmUgY2xlYW5lZCB3aGVuIHJlbGF0ZWQgc2Vzc2lvbgp2 YXJpYWJsZSBpcyByZW1vdmVkIGZyb20gc3lzdGVtIGNhdGFsb2cuIEJ1dCBxdWV1ZSBvZiBzaW52 YWwgbWVzc2FnZXMKY2FuIGJlIHRydW5jYXRlZCwgb3IgY3VycmVudCB0cmFuc2FjdGlvbiBzdGF0 ZSBjYW4gZGlzYWxsb3cgYW4gYWNjZXNzCnRvIHN5c3RlbSBjYXRhbG9nLCBzbyBjbGVhbmluZyBj YW4gYmUgcG9zdHBvbmVkLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAg ICAgICAgIHwgICAgMiArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAg ICAgfCAgICA1ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgICAgICAgICAgIHwg IDI5NSArKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQgICAgICAgICAgfCAg ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuYyAgIHwgMTIzMyAr KysrKysrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAg ICAgICAgIHwgICA3NiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyAg ICAgfCAgIDE3ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgIHwg ICA1OCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgICB8ICAxNDcg KystCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyAgICAgICB8ICAgIDYgKwog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgfCAgICA4ICsKIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgICAgIHwgIDExOCArLQogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMgfCAgICAzICsKIHNyYy9iYWNrZW5kL29w dGltaXplci91dGlsL2NsYXVzZXMuYyAgICAgIHwgICA3NCArLQogc3JjL2JhY2tlbmQvcGFyc2Vy L2FuYWx5emUuYyAgICAgICAgICAgICAgfCAgICA3ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9leHByLmMgICAgICAgICAgIHwgIDI3MyArKysrLQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnku YyAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyAgICAgICAgIHwgICA0NiArCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUu YyAgICAgICB8ICAgMjkgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jICAgICAgICAg ICAgIHwgICAxMCArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAg fCAgIDEwICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmggICAgICAgICAgIHwgICAg MiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICB8ICAgIDcgKwog c3JjL2luY2x1ZGUvY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oICAgfCAgIDEzICstCiBzcmMv aW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgICAgICB8ICAgMTEgKwogc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgICAgfCAgICA0ICsKIHNyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgIHwgICAxOSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmggICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5v ZGVzLmggICAgICAgICAgICAgfCAgICA1ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o ICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCAgICAg ICAgICAgICB8ICAgMTEgKy0KIHNyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oICAgICAg ICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oICAgICAgICAgICB8 ICAgIDEgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgICAgfCAgICAx ICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgIHwgICAgMyArCiAz NSBmaWxlcyBjaGFuZ2VkLCAyNDAzIGluc2VydGlvbnMoKyksIDEwMCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggMjMwM2UxZTA1My4uMWI2ODU5ZjIyMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAtMjIxNCw3ICsyMjE0LDcgQEAgQ29tbWl0VHJh bnNhY3Rpb24odm9pZCkKIAkgKi8KIAlzbWdyRG9QZW5kaW5nU3luY3ModHJ1ZSwgaXNfcGFyYWxs ZWxfd29ya2VyKTsKIAotCS8qIExldCBPTiBDT01NSVQgRFJPUCAqLworCS8qIExldCBPTiBDT01N SVQgRFJPUCBvciBPTiBUUkFOU0FDVElPTiBFTkQgKi8KIAlBdFByZUVPWGFjdF9TZXNzaW9uVmFy aWFibGUodHJ1ZSk7CiAKIAkvKiBjbG9zZSBsYXJnZSBvYmplY3RzIGJlZm9yZSBsb3dlci1sZXZl bCBjbGVhbnVwICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3ku YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IDczMWI5ODA1YWQuLjk4 OWExMDBlYTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC0xOTA5LDYgKzE5MDksMTEg QEAgZmluZF9leHByX3JlZmVyZW5jZXNfd2Fsa2VyKE5vZGUgKm5vZGUsCiAJewogCQlQYXJhbQkg ICAqcGFyYW0gPSAoUGFyYW0gKikgbm9kZTsKIAorCQkvKiBBIHZhcmlhYmxlIHBhcmFtZXRlciBk ZXBlbmRzIG9uIHRoZSBzZXNzaW9uIHZhcmlhYmxlICovCisJCWlmIChwYXJhbS0+cGFyYW1raW5k ID09IFBBUkFNX1ZBUklBQkxFKQorCQkJYWRkX29iamVjdF9hZGRyZXNzKE9DTEFTU19WQVJJQUJM RSwgcGFyYW0tPnBhcmFtdmFyaWQsIDAsCisJCQkJCQkJICAgY29udGV4dC0+YWRkcnMpOworCiAJ CS8qIEEgcGFyYW1ldGVyIG11c3QgZGVwZW5kIG9uIHRoZSBwYXJhbWV0ZXIncyBkYXRhdHlwZSAq LwogCQlhZGRfb2JqZWN0X2FkZHJlc3MoT0NMQVNTX1RZUEUsIHBhcmFtLT5wYXJhbXR5cGUsIDAs CiAJCQkJCQkgICBjb250ZXh0LT5hZGRycyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL25hbWVzcGFjZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwppbmRleCAw ZDVjMmQxZjA0Li5lZWQ3YzhmMjVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL25h bWVzcGFjZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKQEAgLTI5ODgs NiArMjk4OCwzMDEgQEAgTG9va3VwVmFyaWFibGUoY29uc3QgY2hhciAqbnNwbmFtZSwKIAlyZXR1 cm4gdmFyb2lkOwogfQogCisvKgorICogVGhlIGlucHV0IGxpc3QgY29udGFpbnMgbmFtZXMgd2l0 aCBpbmRpcmVjdGlvbiBleHByZXNzaW9ucyB1c2VkIGFzIHRoZSBsZWZ0CisgKiBwYXJ0IG9mIExF VCBzdGF0ZW1lbnQuIFRoZSBmb2xsb3dpbmcgcm91dGluZSByZXR1cm5zIGEgbmV3IGxpc3Qgd2l0 aCBvbmx5CisgKiBpbml0aWFsIHN0cmluZ3MgKG5hbWVzKSAtIHdpdGhvdXQgaW5kaXJlY3Rpb24g ZXhwcmVzc2lvbnMuCisgKi8KK0xpc3QgKgorTmFtZXNGcm9tTGlzdChMaXN0ICpuYW1lcykKK3sK KwlMaXN0Q2VsbCAgICpsOworCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKKworCWZvcmVhY2gobCwg bmFtZXMpCisJeworCQlOb2RlCSAgICpuID0gbGZpcnN0KGwpOworCisJCWlmIChJc0EobiwgU3Ry aW5nKSkKKwkJeworCQkJcmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsIG4pOworCQl9CisJCWVsc2UK KwkJCWJyZWFrOworCX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBJZGVudGlmeVZh cmlhYmxlIC0gdHJ5IHRvIGZpbmQgdmFyaWFibGUgaWRlbnRpZmllZCBieSBsaXN0IG9mIG5hbWVz LgorICoKKyAqIEJlZm9yZSB0aGlzIGNhbGwgd2UgZG9uJ3Qga25vdywgaG93IHRoZXNlIGZpZWxk cyBzaG91bGQgYmUgbWFwcGVkIHRvCisgKiBzY2hlbWEgbmFtZSwgdmFyaWFibGUgbmFtZSBhbmQg YXR0cmlidXRlIG5hbWUuIEluIHRoaXMgcm91dGluZQorICogd2UgdHJ5IHRvIGFwcGx5IHBhc3Nl ZCBuYW1lcyB0byBhbGwgcG9zc2libGUgY29tYmluYXRpb25zIG9mIHNjaGVtYSBuYW1lLAorICog dmFyaWFibGUgbmFtZSBhbmQgYXR0cmlidXRlIG5hbWUsIGFuZCB3ZSBjb3VudCB2YWxpZCBjb21i aW5hdGlvbnMuCisgKgorICogUmV0dXJucyBvaWQgb2YgaWRlbnRpZmllZCB2YXJpYWJsZS4gV2hl biBsYXN0IGZpZWxkIG9mIG5hbWVzIGxpc3QgaXMKKyAqIGlkZW50aWZpZWQgYXMgYW4gYXR0cmli dXRlLCB0aGVuIG91dHB1dCBhdHRybmFtZSBhcmd1bWVudCBpcyBzZXQgdG8KKyAqIGFuIHN0cmlu ZyBvZiB0aGlzIGZpZWxkLgorICoKKyAqIFdoZW4gdGhlcmUgaXMgbm90IGFueSB2YWxpZCBjb21i aW5hdGlvbiwgdGhlbiB3ZSBhcmUgc3VyZSwgc28gdGhlCisgKiBsaXN0IG9mIG5hbWVzIGNhbm5v dCB0byBpZGVudGlmeSBhbnkgc2Vzc2lvbiB2YXJpYWJsZS4gSW4gdGhpcyBjYXNlCisgKiB3ZSBy ZXR1cm4gSW52YWxpZE9pZC4KKyAqCisgKiBXZSBjYW4gZmluZCBtb3JlIHZhbGlkIGNvbWJpbmF0 aW9uIHRoYW4gb25lLgorICogRXhhbXBsZTogdXNlcnMgY2FuIGhhdmUgc2Vzc2lvbiB2YXJpYWJs ZSB4IGluIHNjaGVtYSB5LCBhbmQKKyAqIHNlc3Npb24gdmFyaWFibGUgeSB3aXRoIGF0dHJpYnV0 ZSB4IGluc2lkZSBzb21lIHNjaGVtYSBmcm9tCisgKiBzZWFyY2ggcGF0aC4gSW4gdGhpcyBzaXR1 YXRpb24gdGhlIG1lYW5pbmcgb2YgZXhwcmVzc2lvbiAieSIuIngiCisgKiBpcyBhbWJpZ3VvdXMu IEluIHRoaXMgY2FzZSB0aGlzIHJvdXRpbmUgcmV0dXJucyBvaWQgb2YgdmFyaWFibGUKKyAqIHgg aW4gc2NoZW1hIHksIGFuZCB0aGUgb3V0cHV0IHBhcmFtZXRlciAibm90X3VuaXF1ZSIgaXMgc2V0 IHRvCisgKiB0cnVlLiBJbiB0aGlzIGNhc2UgdGhpcyB2YXJpYWJsZSBpcyBsb2NrZWQuCisgKgor ICogVGhlIEFjY2Vzc1NoYXJlTG9jayBpcyBjcmVhdGVkIG9uIHJlbGF0ZWQgc2Vzc2lvbiB2YXJp YWJsZS4gVGhlIGxvY2sKKyAqIHdpbGwgYmUga2VwdCBmb3IgdGhlIHdob2xlIHRyYW5zYWN0aW9u LgorICoKKyAqIE5vdGU6IHRoZSBvdXQgYXR0cm5hbWUgc2hvdWxkIGJlIHVzZWQgb25seSB3aGVu IHRoZSBzZXNzaW9uIHZhcmlhYmxlCisgKiBpcyBpZGVudGlmaWVkLiBXaGVuIHRoZSBzZXNzaW9u IHZhcmlhYmxlIGlzIG5vdCBpZGVudGlmaWVkLCB0aGVuIHRoaXMKKyAqIG91dHB1dCB2YXJpYWJs ZSBjYW4gaG9sZCByZWZlcmVuY2UgdG8gc29tZSBzdHJpbmcsIGJ1dCBpc24ndCBzdXJlCisgKiBh Ym91dCBpdHMgc2VtYW50aWNzLgorICovCitPaWQKK0lkZW50aWZ5VmFyaWFibGUoTGlzdCAqbmFt ZXMsIGNoYXIgKiphdHRybmFtZSwgYm9vbCAqbm90X3VuaXF1ZSkKK3sKKwlOb2RlCSAgICpmaWVs ZDEgPSBOVUxMOworCU5vZGUJICAgKmZpZWxkMiA9IE5VTEw7CisJTm9kZQkgICAqZmllbGQzID0g TlVMTDsKKwlOb2RlCSAgICpmaWVsZDQgPSBOVUxMOworCWNoYXIJICAgKmEgPSBOVUxMOworCWNo YXIJICAgKmIgPSBOVUxMOworCWNoYXIJICAgKmMgPSBOVUxMOworCWNoYXIJICAgKmQgPSBOVUxM OworCU9pZAkJCXZhcmlkID0gSW52YWxpZE9pZDsKKwlPaWQJCQlvbGRfdmFyaWQgPSBJbnZhbGlk T2lkOworCXVpbnQ2NAkJaW52YWxfY291bnQ7CisJYm9vbAkJcmV0cnkgPSBmYWxzZTsKKworCS8q CisJICogRERMIG9wZXJhdGlvbnMgY2FuIGNoYW5nZSB0aGUgcmVzdWx0cyBvZiBhIG5hbWUgbG9v a3VwLiAgU2luY2UgYWxsIHN1Y2gKKwkgKiBvcGVyYXRpb25zIHdpbGwgZ2VuZXJhdGUgaW52YWxp ZGF0aW9uIG1lc3NhZ2VzLCB3ZSBrZWVwIHRyYWNrIG9mCisJICogd2hldGhlciBhbnkgc3VjaCBt ZXNzYWdlcyBzaG93IHVwIHdoaWxlIHdlJ3JlIHBlcmZvcm1pbmcgdGhlIG9wZXJhdGlvbiwKKwkg KiBhbmQgcmV0cnkgdW50aWwgZWl0aGVyICgxKSBubyBtb3JlIGludmFsaWRhdGlvbiBtZXNzYWdl cyBzaG93IHVwIG9yICgyKQorCSAqIHRoZSBhbnN3ZXIgZG9lc24ndCBjaGFuZ2UuCisJICovCisJ Zm9yICg7OykKKwl7CisJCU9pZAkJCXZhcm9pZF93aXRob3V0X2F0dHIgPSBJbnZhbGlkT2lkOwor CQlPaWQJCQl2YXJvaWRfd2l0aF9hdHRyID0gSW52YWxpZE9pZDsKKworCQkqbm90X3VuaXF1ZSA9 IGZhbHNlOworCQkqYXR0cm5hbWUgPSBOVUxMOworCQl2YXJpZCA9IEludmFsaWRPaWQ7CisKKwkJ aW52YWxfY291bnQgPSBTaGFyZWRJbnZhbGlkTWVzc2FnZUNvdW50ZXI7CisKKwkJc3dpdGNoIChs aXN0X2xlbmd0aChuYW1lcykpCisJCXsKKwkJCWNhc2UgMToKKwkJCQlmaWVsZDEgPSBsaW5pdGlh bChuYW1lcyk7CisKKwkJCQlBc3NlcnQoSXNBKGZpZWxkMSwgU3RyaW5nKSk7CisKKwkJCQl2YXJp ZCA9IExvb2t1cFZhcmlhYmxlKE5VTEwsIHN0clZhbChmaWVsZDEpLCBmYWxzZSwgdHJ1ZSk7CisJ CQkJYnJlYWs7CisKKwkJCWNhc2UgMjoKKwkJCQlmaWVsZDEgPSBsaW5pdGlhbChuYW1lcyk7CisJ CQkJZmllbGQyID0gbHNlY29uZChuYW1lcyk7CisKKwkJCQlBc3NlcnQoSXNBKGZpZWxkMSwgU3Ry aW5nKSk7CisJCQkJYSA9IHN0clZhbChmaWVsZDEpOworCisJCQkJaWYgKElzQShmaWVsZDIsIFN0 cmluZykpCisJCQkJeworCQkJCQliID0gc3RyVmFsKGZpZWxkMik7CisKKwkJCQkJLyoKKwkJCQkJ ICogYS5iIGNhbiBtZWFuICJzY2hlbWEiLiJ2YXJpYWJsZSIgb3IgInZhcmlhYmxlIi4iZmllbGQi LAorCQkJCQkgKiBDaGVjayBib3RoIHZhcmlhbnRzLCBhbmQgcmV0dXJucyBJbnZhbGlkT2lkIHdp dGgKKwkJCQkJICogbm90X3VuaXF1ZSBmbGFnLCB3aGVuIGJvdGggaW50ZXJwcmV0YXRpb25zIGFy ZQorCQkJCQkgKiBwb3NzaWJsZS4gU2Vjb25kIG5vZGUgY2FuIGJlIHN0YXIuIEluIHRoaXMgY2Fz ZSwgdGhlCisJCQkJCSAqIG9ubHkgYWxsb3dlZCBwb3NzaWJpbGl0eSBpcyAidmFyaWFibGUiLiIq Ii4KKwkJCQkJICovCisJCQkJCXZhcm9pZF93aXRob3V0X2F0dHIgPSBMb29rdXBWYXJpYWJsZShh LCBiLCBmYWxzZSwgdHJ1ZSk7CisJCQkJCXZhcm9pZF93aXRoX2F0dHIgPSBMb29rdXBWYXJpYWJs ZShOVUxMLCBhLCB0cnVlLCB0cnVlKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyoK KwkJCQkJICogU2Vzc2lvbiB2YXJpYWJsZXMgZG9lc24ndCBzdXBwb3J0IHVuYm94aW5nIGJ5IHN0 YXIKKwkJCQkJICogc3ludGF4LiBCdXQgdGhpcyBzeW50YXggaGF2ZSB0byBiZSBjYWxjdWxhdGVk IGhlcmUsCisJCQkJCSAqIGJlY2F1c2UgY2FuIGNvbWUgZnJvbSBub24gc2Vzc2lvbiB2YXJpYWJs ZXMgcmVsYXRlZAorCQkJCQkgKiBleHByZXNzaW9ucy4KKwkJCQkJICovCisJCQkJCUFzc2VydChJ c0EoZmllbGQyLCBBX1N0YXIpKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJaWYgKE9pZElz VmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0cikgJiYgT2lkSXNWYWxpZCh2YXJvaWRfd2l0aF9hdHRy KSkKKwkJCQl7CisJCQkJCSpub3RfdW5pcXVlID0gdHJ1ZTsKKwkJCQkJdmFyaWQgPSB2YXJvaWRf d2l0aG91dF9hdHRyOworCQkJCX0KKwkJCQllbHNlIGlmIChPaWRJc1ZhbGlkKHZhcm9pZF93aXRo b3V0X2F0dHIpKQorCQkJCXsKKwkJCQkJdmFyaWQgPSB2YXJvaWRfd2l0aG91dF9hdHRyOworCQkJ CX0KKwkJCQllbHNlIGlmIChPaWRJc1ZhbGlkKHZhcm9pZF93aXRoX2F0dHIpKQorCQkJCXsKKwkJ CQkJKmF0dHJuYW1lID0gYjsKKwkJCQkJdmFyaWQgPSB2YXJvaWRfd2l0aF9hdHRyOworCQkJCX0K KwkJCQlicmVhazsKKworCQkJY2FzZSAzOgorCQkJCWZpZWxkMSA9IGxpbml0aWFsKG5hbWVzKTsK KwkJCQlmaWVsZDIgPSBsc2Vjb25kKG5hbWVzKTsKKwkJCQlmaWVsZDMgPSBsdGhpcmQobmFtZXMp OworCisJCQkJQXNzZXJ0KElzQShmaWVsZDEsIFN0cmluZykpOworCQkJCUFzc2VydChJc0EoZmll bGQyLCBTdHJpbmcpKTsKKworCQkJCWEgPSBzdHJWYWwoZmllbGQxKTsKKwkJCQliID0gc3RyVmFs KGZpZWxkMik7CisKKwkJCQlpZiAoSXNBKGZpZWxkMywgU3RyaW5nKSkKKwkJCQl7CisJCQkJCWMg PSBzdHJWYWwoZmllbGQzKTsKKworCQkJCQkvKgorCQkJCQkgKiBhLmIuYyBjYW4gbWVhbiAiY2F0 YWxvZyIuInNjaGVtYSIuInZhcmlhYmxlIiBvcgorCQkJCQkgKiAic2NoZW1hIi4idmFyaWFibGUi LiJmaWVsZCIsIENoZWNrIGJvdGggdmFyaWFudHMsIGFuZAorCQkJCQkgKiByZXR1cm5zIEludmFs aWRPaWQgd2l0aCBub3RfdW5pcXVlIGZsYWcsIHdoZW4gYm90aAorCQkJCQkgKiBpbnRlcnByZXRh dGlvbnMgYXJlIHBvc3NpYmxlLiBXaGVuIHRoaXJkIG5vZGUgaXMgc3RhciwKKwkJCQkJICogdGhl IG9ubHkgcG9zc2libGUgaW50ZXJwcmV0YXRpb24gaXMKKwkJCQkJICogInNjaGVtYSIuInZhcmlh YmxlIi4iKiIuCisJCQkJCSAqLworCQkJCQl2YXJvaWRfd2l0aG91dF9hdHRyID0gTG9va3VwVmFy aWFibGUoYiwgYywgZmFsc2UsIHRydWUpOworCQkJCQl2YXJvaWRfd2l0aF9hdHRyID0gTG9va3Vw VmFyaWFibGUoYSwgYiwgdHJ1ZSwgdHJ1ZSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJ CUFzc2VydChJc0EoZmllbGQzLCBBX1N0YXIpKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJ aWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0cikgJiYgT2lkSXNWYWxpZCh2YXJvaWRf d2l0aF9hdHRyKSkKKwkJCQl7CisJCQkJCSpub3RfdW5pcXVlID0gdHJ1ZTsKKwkJCQkJdmFyaWQg PSB2YXJvaWRfd2l0aG91dF9hdHRyOworCQkJCX0KKwkJCQllbHNlIGlmIChPaWRJc1ZhbGlkKHZh cm9pZF93aXRob3V0X2F0dHIpKQorCQkJCXsKKworCQkJCQkvKgorCQkJCQkgKiBJbiB0aGlzIGNh c2UsICJhIiBpcyB1c2VkIGFzIGNhdGFsb2cgbmFtZSAtIGNoZWNrIGl0LgorCQkJCQkgKi8KKwkJ CQkJaWYgKHN0cmNtcChhLCBnZXRfZGF0YWJhc2VfbmFtZShNeURhdGFiYXNlSWQpKSAhPSAwKQor CQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAorCQkJCQkJCQkgZXJybXNnKCJjcm9zcy1kYXRhYmFzZSByZWZlcmVuY2Vz IGFyZSBub3QgaW1wbGVtZW50ZWQ6ICVzIiwKKwkJCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5h bWVzKSkpKTsKKworCQkJCQl2YXJpZCA9IHZhcm9pZF93aXRob3V0X2F0dHI7CisJCQkJfQorCQkJ CWVsc2UgaWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhfYXR0cikpCisJCQkJeworCQkJCQkqYXR0 cm5hbWUgPSBjOworCQkJCQl2YXJpZCA9IHZhcm9pZF93aXRoX2F0dHI7CisJCQkJfQorCQkJCWJy ZWFrOworCisJCQljYXNlIDQ6CisJCQkJZmllbGQxID0gbGluaXRpYWwobmFtZXMpOworCQkJCWZp ZWxkMiA9IGxzZWNvbmQobmFtZXMpOworCQkJCWZpZWxkMyA9IGx0aGlyZChuYW1lcyk7CisJCQkJ ZmllbGQ0ID0gbGZvdXJ0aChuYW1lcyk7CisKKwkJCQlBc3NlcnQoSXNBKGZpZWxkMSwgU3RyaW5n KSk7CisJCQkJQXNzZXJ0KElzQShmaWVsZDIsIFN0cmluZykpOworCQkJCUFzc2VydChJc0EoZmll bGQzLCBTdHJpbmcpKTsKKworCQkJCWEgPSBzdHJWYWwoZmllbGQxKTsKKwkJCQliID0gc3RyVmFs KGZpZWxkMik7CisJCQkJYyA9IHN0clZhbChmaWVsZDMpOworCisJCQkJLyoKKwkJCQkgKiBJbiB0 aGlzIGNhc2UsICJhIiBpcyB1c2VkIGFzIGNhdGFsb2cgbmFtZSAtIGNoZWNrIGl0LgorCQkJCSAq LworCQkJCWlmIChzdHJjbXAoYSwgZ2V0X2RhdGFiYXNlX25hbWUoTXlEYXRhYmFzZUlkKSkgIT0g MCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJCQkJIGVycm1zZygiY3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNl cyBhcmUgbm90IGltcGxlbWVudGVkOiAlcyIsCisJCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5h bWVzKSkpKTsKKworCQkJCWlmIChJc0EoZmllbGQ0LCBTdHJpbmcpKQorCQkJCXsKKwkJCQkJZCA9 IHN0clZhbChmaWVsZDQpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlBc3NlcnQoSXNB KGZpZWxkNCwgQV9TdGFyKSk7CisJCQkJCXJldHVybiBJbnZhbGlkT2lkOworCQkJCX0KKworCQkJ CSphdHRybmFtZSA9IGQ7CisJCQkJdmFyaWQgPSBMb29rdXBWYXJpYWJsZShiLCBjLCB0cnVlLCB0 cnVlKTsKKwkJCQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiaW1wcm9w ZXIgcXVhbGlmaWVkIG5hbWUgKHRvbyBtYW55IGRvdHRlZCBuYW1lcyk6ICVzIiwKKwkJCQkJCQkJ TmFtZUxpc3RUb1N0cmluZyhuYW1lcykpKSk7CisJCQkJYnJlYWs7CisJCX0KKworCQkvKgorCQkg KiBJZiwgdXBvbiByZXRyeSwgd2UgZ2V0IGJhY2sgdGhlIHNhbWUgT0lEIHdlIGRpZCBsYXN0IHRp bWUsIHRoZW4gdGhlCisJCSAqIGludmFsaWRhdGlvbiBtZXNzYWdlcyB3ZSBwcm9jZXNzZWQgZGlk IG5vdCBjaGFuZ2UgdGhlIGZpbmFsIGFuc3dlci4KKwkJICogU28gd2UncmUgZG9uZS4KKwkJICoK KwkJICogSWYgd2UgZ290IGEgZGlmZmVyZW50IE9JRCwgd2UndmUgbG9ja2VkIHRoZSB2YXJpYWJs ZSB0aGF0IHVzZWQgdG8KKwkJICogaGF2ZSB0aGlzIG5hbWUgcmF0aGVyIHRoYW4gdGhlIG9uZSB0 aGF0IGRvZXMgbm93LiAgU28gcmVsZWFzZSB0aGUKKwkJICogbG9jay4KKwkJICovCisJCWlmIChy ZXRyeSkKKwkJeworCQkJaWYgKG9sZF92YXJpZCA9PSB2YXJpZCkKKwkJCQlicmVhazsKKworCQkJ aWYgKE9pZElzVmFsaWQob2xkX3ZhcmlkKSkKKwkJCQlVbmxvY2tEYXRhYmFzZU9iamVjdChWYXJp YWJsZVJlbGF0aW9uSWQsIG9sZF92YXJpZCwgMCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJfQorCisJ CS8qCisJCSAqIExvY2sgdGhlIHZhcmlhYmxlLiAgVGhpcyB3aWxsIGFsc28gYWNjZXB0IGFueSBw ZW5kaW5nIGludmFsaWRhdGlvbgorCQkgKiBtZXNzYWdlcy4gIElmIHdlIGdvdCBiYWNrIEludmFs aWRPaWQsIGluZGljYXRpbmcgbm90IGZvdW5kLCB0aGVuCisJCSAqIHRoZXJlJ3Mgbm90aGluZyB0 byBsb2NrLCBidXQgd2UgYWNjZXB0IGludmFsaWRhdGlvbiBtZXNzYWdlcworCQkgKiBhbnl3YXks IHRvIGZsdXNoIGFueSBuZWdhdGl2ZSBjYXRjYWNoZSBlbnRyaWVzIHRoYXQgbWF5IGJlCisJCSAq IGxpbmdlcmluZy4KKwkJICovCisJCWlmICghT2lkSXNWYWxpZCh2YXJpZCkpCisJCQlBY2NlcHRJ bnZhbGlkYXRpb25NZXNzYWdlcygpOworCQllbHNlIGlmIChPaWRJc1ZhbGlkKHZhcmlkKSkKKwkJ CUxvY2tEYXRhYmFzZU9iamVjdChWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcmlkLCAwLCBBY2Nlc3NT aGFyZUxvY2spOworCisJCWlmIChpbnZhbF9jb3VudCA9PSBTaGFyZWRJbnZhbGlkTWVzc2FnZUNv dW50ZXIpCisJCQlicmVhazsKKworCQlyZXRyeSA9IHRydWU7CisJCW9sZF92YXJpZCA9IHZhcmlk OworCQl2YXJpZCA9IEludmFsaWRPaWQ7CisJfQorCisJcmV0dXJuIHZhcmlkOworfQorCiAvKgog ICogRGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lCiAgKgkJR2l2ZW4gYSBwb3NzaWJseS1xdWFsaWZp ZWQgbmFtZSBleHByZXNzZWQgYXMgYSBsaXN0IG9mIFN0cmluZyBub2RlcywKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWVzb24uYnVpbGQKaW5kZXggOWIzNTBkMDI1Zi4uNDQwYTE1Y2Y2NyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWVzb24uYnVpbGQKQEAgLTM2LDYgKzM2LDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAog ICAnc2NoZW1hY21kcy5jJywKICAgJ3NlY2xhYmVsLmMnLAogICAnc2VxdWVuY2UuYycsCisgICdz ZXNzaW9uX3ZhcmlhYmxlLmMnLAogICAnc3RhdHNjbWRzLmMnLAogICAnc3Vic2NyaXB0aW9uY21k cy5jJywKICAgJ3RhYmxlY21kcy5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3Nlc3Npb25fdmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFi bGUuYwppbmRleCA0NTcwNTgzMDgyLi45ZWEzYzg5OTAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv c2Vzc2lvbl92YXJpYWJsZS5jCkBAIC04LDcgKzgsNyBAQAogICoKICAqCiAgKiBJREVOVElGSUNB VElPTgotICoJICBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXNzaW9udmFyaWFibGUuYworICoJICBz cmMvYmFja2VuZC9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmMKICAqCiAgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAqLwpAQCAtMjIsODcgKzIyLDI0NSBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3Nlc3Np b25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCisjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv bG1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAogLyoKLSAqIFRoZSBsaWZlIGN5Y2xl IG9mIHRlbXBvcmFyeSBzZXNzaW9uIHZhcmlhYmxlIGNhbiBiZQotICogbGltbWl0ZWQgYnkgdXNp bmcgY2xhdXNlIE9OIENPTU1JVCBEUk9QLgorICogVmFsdWVzIG9mIHNlc3Npb24gdmFyaWFibGVz IGFyZSBzdG9yZWQgaW4gdGhlIGJhY2tlbmQgbG9jYWwgbWVtb3J5LAorICogaW4gc2Vzc2lvbnZh cnMgaGFzaCB0YWJsZSBpbiBiaW5hcnkgZm9ybWF0LCBpbiBhIGRlZGljYXRlZCBtZW1vcnkKKyAq IGNvbnRleHQgU1ZhcmlhYmxlTWVtb3J5Q29udGV4dC4gIEEgc2Vzc2lvbiB2YXJpYWJsZSB2YWx1 ZSBjYW4gc3RheQorICogdmFsaWQgZm9yIGxvbmdlciB0aGFuIHRoZSB0cmFuc2FjdGlvbiB0aGF0 IGFzc2lnbnMgaXRzIHZhbHVlLiAgVG8KKyAqIG1ha2Ugc3VyZSB0aGF0IHRoZSB1bmRlcmx5aW5n IG1lbW9yeSBpcyBldmVudHVhbGx5IGZyZWVkLCBidXQgbm90CisgKiBiZWZvcmUgaXQncyBndWFy YW50ZWUgdGhhdCB0aGUgdmFsdWUgd29uJ3QgYmUgbmVlZGVkIGFueW1vcmUsIHdlCisgKiBuZWVk IHRvIGhhbmRsZSB0aGUgdHdvIGZvbGxvd2luZyBwb2ludHM6CisgKgorICogLSBXZSBuZWVkIGRl dGVjdCB3aGVuIGEgdmFyaWFibGUgaXMgZHJvcHBlZCwgd2hldGhlciBpbiB0aGUgY3VycmVudAor ICogdHJhbnNhY3Rpb24gaW4gdGhlIGN1cnJlbnQgc2Vzc2lvbiBvciBieSBhbm90aGVyIHNlc3Np b24sIGFuZCBtYXJrCisgKiB0aGUgdW5kZXJseWluZyBlbnRyaWVzIGZvciByZW1vdmFsLiAgVG8g cHJvdGVjdCB0aGUgY29udGVudCBhZ2FpbnN0CisgKiBwb3NzaWJseSByb2xsYmFja2VkIERST1Ag VkFSSUFCTEUgY29tbWFuZHMsIHRoZSBlbnRyaWVzIChhbmQKKyAqIG1lbW9yeSkgc2hvdWxkbid0 IGJlIGZyZWVkIGltbWVkaWF0ZWx5IGJ1dCBiZSBwb3N0cG9uZWQgdW50aWwgdGhlCisgKiBlbmQg b2YgdGhlIHRyYW5zYWN0aW9uLgorICoKKyAqIC0gVGhlIHNlc3Npb24gdmFyaWFibGUgY2FuIGJl IGRyb3BwZWQgZXhwbGljaXRseSAoYnkgRFJPUCBWQVJJQUJMRQorICogIGNvbW1hbmQpIG9yIGlt cGxpY2l0bHkgKHVzaW5nIE9OIENPTU1JVCBEUk9QIGNsYXVzZSksIGFuZCB0aGUKKyAqICB2YWx1 ZSBjYW4gYmUgaW1wbGljaXRseSByZW1vdmVkICh1c2luZyB0aGUgT04gVFJBTlNBQ1RJT04gRU5E CisgKiAgY2xhdXNlKS4gIEluIGFsbCB0aG9zZSBjYXNlcyB0aGUgbWVtb3J5IHNob3VsZCBhbHNv IGJlIGZyZWVkIGF0CisgKiAgdGhlIHRyYW5zYWN0aW9uIGVuZC4KKyAqCisgKiBUbyBhY2hpZXZl IHRoYXQsIHdlIG1haW50YWluIDMgcXVldWVzIG9mIGFjdGlvbnMgdG8gYmUgcGVyZm9ybWVkIGF0 CisgKiBjZXJ0YWluIHRpbWU6CisgKiAtIGEgTGlzdCBvZiBTVmFyaWFibGVYQWN0QWN0aW9uSXRl bSwgdG8gaGFuZGxlIE9OIENPTU1JVCBEUk9QCisgKiB2YXJpYWJsZXMsIGFuZCBkZWxheWVkIG1l bW9yeSBjbGVhbnVwIG9mIHZhcmlhYmxlIGRyb3BwZWQgYnkgdGhlCisgKiBjdXJyZW50IHRyYW5z YWN0aW9uLiAgVGhvc2UgYWN0aW9ucyBhcmUgdHJhbnNhY3Rpb25hbCAoZm9yIGluc3RhbmNlCisg KiB3ZSBkb24ndCB3YW50IHRvIGNsZWFudXAgdGhlIG1lbW9yeSBvZiBhIHJvbGxiYWNrZWQgRFJP UCBWQVJJQUJMRSkKKyAqIHNvIHRoZSBzdHJ1Y3R1cmUgaXMgbmVlZGVkIHRvIGtlZXAgdHJhY2sg b2YgdGhlIGZpbmFsIHRyYW5zYWN0aW9uCisgKiBzdGF0ZQorICogLSBhIExpc3Qgb2YgdmFyaWFi bGUgT2lkIGZvciB0aGUgT04gVFJBTlNBQ1RJT04gT04gUkVTRVQgdmFyaWFibGVzCisgKiAtIGEg TGlzdCBvZiB2YXJpYWJsZSBPaWQgZm9yIHRoZSBjb25jdXJyZW50IERST1AgVkFSSUFCTEUKKyAq IG5vdGlmaWNhdGlvbiB3ZSByZWNlaXZlIHZpYSBzaGFyZWQgaW52YWxpZGF0aW9ucy4KKyAqCisg KiBOb3RlIHRoYXQgYWx0aG91Z2ggcmVzZXR0aW5nIGEgdmFyaWFibGUgZG9lc24ndCB0ZWNobmlj YWxseSByZXF1aXJlCisgKiB0byByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIHNlc3Npb252YXJz IGhhc2ggdGFibGUsIHdlIGN1cnJlbnRseQorICogZG8gaXQuICBJdCdzIGEgc2ltcGxlIHdheSB0 byBpbXBsZW1lbnQgdGhlIHJlc2V0LCBhbmQgaGVscHMgdG8KKyAqIHJlZHVjZSBtZW1vcnkgdXNh Z2UgYW5kIHByZXZlbnRzIHRoZSBoYXNoIHRhYmxlIGZyb20gYmxvYXRpbmcuCisgKgorICogVGhl cmUgYXJlIHR3byBkaWZmZXJlbnQgd2F5cyB0byBkbyB0aGUgZmluYWwgYWNjZXNzIHRvIHNlc3Np b24KKyAqIHZhcmlhYmxlczogYnVmZmVyZWQgKGluZGlyZWN0KSBvciBkaXJlY3QuIEJ1ZmZlcmVk IGFjY2VzcyBpcyB1c2VkCisgKiBpbiByZWd1bGFyIERNTCBzdGF0ZW1lbnRzLCB3aGVyZSB3ZSBo YXZlIHRvIGVuc3VyZSB0aGUgc3RhYmlsaXR5IG9mCisgKiB0aGUgdmFyaWFibGUgdmFsdWVzLiAg VGhlIHNlc3Npb24gdmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3VyCisgKiBhcyBleHRl cm5hbCBxdWVyeSBwYXJhbWV0ZXJzLCB3aGljaCBpcyBjb25zaXN0ZW50IHdpdGggdXNpbmcKKyAq IFBML3BnU1FMJ3MgdmFyaWFibGVzIGluIGVtYmVkZGVkIHF1ZXJpZXMgaW4gUEwvcGdTUUwuCisg KgorICogVGhpcyBpcyBpbXBsZW1lbnRlZCBieSB1c2luZyBhbiBhdXggYnVmZmVyIChhbiBhcnJh eSkgdGhhdCBob2xkcyBhCisgKiBjb3B5IG9mIHZhbHVlcyBvZiB1c2VkIChpbiBxdWVyeSkgc2Vz c2lvbiB2YXJpYWJsZXMsIHdoaWNoIGlzIGFsc28KKyAqIHRyYW5zbWl0dGVkIHRvIHRoZSBwYXJh bGxlbCB3b3JrZXJzLiAgVGhlIHZhbHVlcyBmcm9tIHRoaXMgYXJyYXkKKyAqIGFyZSBwYXNzZWQg YXMgY29uc3RhbnQgKEVFT1BfQ09OU1QpLgorICoKKyAqIERpcmVjdCBhY2Nlc3MgaXMgdXNlZCBi eSBzaW1wbGUgZXhwcmVzc2lvbiBldmFsdWF0aW9uIChQTHBnU1FMKS4KKyAqIEluIHRoaXMgY2Fz ZSB3ZSBkb24ndCBuZWVkIHRvIGVuc3VyZSB0aGUgc3RhYmlsaXR5IG9mIHBhc3NlZAorICogdmFs dWVzLCBhbmQgbWFpbnRhaW5pbmcgdGhlIGJ1ZmZlciB3aXRoIGNvcGllcyBvZiB2YWx1ZXMgb2Yg c2Vzc2lvbgorICogdmFyaWFibGVzIHdvdWxkIGJlIHVzZWxlc3Mgb3ZlcmhlYWQuICBJbiB0aGlz IGNhc2Ugd2UganVzdCByZWFkIHRoZQorICogdmFsdWUgb2YgdGhlIHNlc3Npb24gdmFyaWFibGUg ZGlyZWN0bHkgKEVFT1BfUEFSQU1fVkFSSUFCTEUpLiBUaGlzCisgKiBzdHJhdGVneSByZW1vdmVz IHRoZSBuZWNlc3NpdHkgdG8gbW9kaWZ5IHJlbGF0ZWQgUEwvcGdTUUwgY29kZSB0bworICogc3Vw cG9ydCBzZXNzaW9uIHZhcmlhYmxlcyAodGhlIHJlYWRpbmcgb2Ygc2Vzc2lvbiB2YXJpYWJsZXMg aXMKKyAqIGZ1bGx5IHRyYW5zcGFyZW50IGZvciBQTC9wZ1NRTCkuCiAgKi8KIHR5cGVkZWYgZW51 bSBTVmFyaWFibGVYQWN0QWN0aW9uCiB7CiAJU1ZBUl9PTl9DT01NSVRfRFJPUCwJCS8qIHVzZWQg Zm9yIE9OIENPTU1JVCBEUk9QICovCisJU1ZBUl9PTl9DT01NSVRfUkVTRVQsCQkvKiB1c2VkIGZv ciBEUk9QIFZBUklBQkxFICovCiB9IFNWYXJpYWJsZVhBY3RBY3Rpb247CiAKIHR5cGVkZWYgc3Ry dWN0IFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtCiB7CiAJT2lkCQkJdmFyaWQ7CQkJLyogdmFyaWQg b2Ygc2Vzc2lvbiB2YXJpYWJsZSAqLworCVNWYXJpYWJsZVhBY3RBY3Rpb24gYWN0aW9uOwogCiAJ LyoKLQkgKiBjcmVhdGluZ19zdWJpZCBpcyB0aGUgSUQgb2YgdGhlIGNyZWF0aW5nIHN1YnhhY3Qu IElmIHRoZSBhY3Rpb24gd2FzCi0JICogdW5yZWdpc3RlcmVkIGR1cmluZyB0aGUgY3VycmVudCB0 cmFuc2FjdGlvbiwgZGVsZXRpbmdfc3ViaWQgaXMgdGhlIElECi0JICogb2YgdGhlIGRlbGV0aW5n IHN1YnhhY3QsIG90aGVyd2lzZSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZC4KKwkgKiBjcmVhdGlu Z19zdWJpZCBpcyB0aGUgSUQgb2YgdGhlIHN1Yi10cmFuc2FjdGlvbiB0aGF0IHJlZ2lzdGVyZWQK KwkgKiB0aGUgYWN0aW9uLiBJZiB0aGUgYWN0aW9uIHdhcyB1bnJlZ2lzdGVyZWQgZHVyaW5nIHRo ZSBjdXJyZW50CisJICogdHJhbnNhY3Rpb24sIGRlbGV0aW5nX3N1YmlkIGlzIHRoZSBJRCBvZiB0 aGUgZGVsZXRpbmcKKwkgKiBzdWItdHJhbnNhY3Rpb24sIG90aGVyd2lzZSBJbnZhbGlkU3ViVHJh bnNhY3Rpb25JZC4KIAkgKi8KIAlTdWJUcmFuc2FjdGlvbklkIGNyZWF0aW5nX3N1YmlkOwogCVN1 YlRyYW5zYWN0aW9uSWQgZGVsZXRpbmdfc3ViaWQ7CiB9IFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVt OwogCi0vKiBMaXN0IGhvbGRzIGZpZWxkcyBvZiBTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSB0eXBl ICovCi1zdGF0aWMgTGlzdCAqeGFjdF9kcm9wX2FjdGlvbnMgPSBOSUw7Ci0KLXN0YXRpYyB2b2lk IHJlZ2lzdGVyX3Nlc3Npb25fdmFyaWFibGVfeGFjdF9hY3Rpb24oT2lkIHZhcmlkLCBTVmFyaWFi bGVYQWN0QWN0aW9uIGFjdGlvbik7Ci1zdGF0aWMgdm9pZCB1bnJlZ2lzdGVyX3Nlc3Npb25fdmFy aWFibGVfeGFjdF9hY3Rpb24oT2lkIHZhcmlkLCBTVmFyaWFibGVYQWN0QWN0aW9uIGFjdGlvbik7 CisvKiBMaXN0IG9mIFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtICovCitzdGF0aWMgTGlzdCAqeGFj dF9vbl9jb21taXRfYWN0aW9ucyA9IE5JTDsKIAorLyoKKyAqIFRvIHByb2Nlc3MgT04gVFJBTlNB Q1RJT04gRU5EIFJFU0VUIHZhcmlhYmxlcywgZm9yIHdoaWNoIHdlIGFsd2F5cworICogbmVlZCB0 byBjbGVhciB0aGUgc2F2ZWQgdmFsdWVzLgorICovCitzdGF0aWMgTGlzdCAqeGFjdF9yZXNldF92 YXJpZHMgPSBOSUw7CiAKIC8qCi0gKiBEbyB0aGUgbmVjZXNzYXJ5IHdvcmsgdG8gc2V0dXAgbG9j YWwgbWVtb3J5IG1hbmFnZW1lbnQgb2YgYSBuZXcKLSAqIHZhcmlhYmxlLgotICoKLSAqIENhbGxl ciBzaG91bGQgYWxyZWFkeSBoYXZlIGNyZWF0ZWQgdGhlIG5lY2Vzc2FyeSBlbnRyeSBpbiBjYXRh bG9nCi0gKiBhbmQgbWFkZSB0aGVtIHZpc2libGUuCisgKiBXaGVuIHRoZSBzZXNzaW9uIHZhcmlh YmxlIGlzIGRyb3BwZWQgd2UgbmVlZCB0byBmcmVlIGxvY2FsIG1lbW9yeS4gVGhlCisgKiBzZXNz aW9uIHZhcmlhYmxlIGNhbiBiZSBkcm9wcGVkIGJ5IGN1cnJlbnQgc2Vzc2lvbiwgYnV0IGl0IGNh biBiZQorICogZHJvcHBlZCBieSBvdGhlcidzIHNlc3Npb25zIHRvbywgc28gd2UgaGF2ZSB0byB3 YXRjaCBzaW52YWwgbWVzc2FnZS4KKyAqIEJ1dCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gZnJl ZSBsb2NhbCBtZW1vcnkgaW1tZWRpYXRlbHksIHdlIG5lZWQgdG8KKyAqIGhvbGQgbGlzdCBvZiBw b3NzaWJseSBkcm9wcGVkIHNlc3Npb24gdmFyaWFibGVzIGFuZCBhdCB0aGUgZW5kIG9mCisgKiB0 cmFuc2FjdGlvbiwgd2UgY2hlY2sgc2Vzc2lvbiB2YXJpYWJsZXMgZnJvbSB0aGlzIGxpc3QgYWdh aW5zdCBzeXN0ZW0KKyAqIGNhdGFsb2cuIFRoaXMgY2hlY2sgY2FuIGJlIHBvc3Rwb25lZCBpbnRv IG5leHQgdHJhbnNhY3Rpb24gaWYKKyAqIGN1cnJlbnQgdHJhbnNhY3Rpb25zIGlzIGluIGFib3J0 ZWQgc3RhdGUsIGFzIHdlIHdvdWxkbid0IGJlIGFibGUgdG8KKyAqIGFjY2VzcyB0aGUgc3lzdGVt IGNhdGFsb2cuCiAgKi8KLXZvaWQKLVNlc3Npb25WYXJpYWJsZUNyZWF0ZVBvc3Rwcm9jZXNzKE9p ZCB2YXJpZCwgY2hhciBlb3hhY3Rpb24pCitzdGF0aWMgTGlzdCAqeGFjdF9yZWNoZWNrX3Zhcmlk cyA9IE5JTDsKKwordHlwZWRlZiBzdHJ1Y3QgU1ZhcmlhYmxlRGF0YQogeworCU9pZAkJCXZhcmlk OwkJCS8qIHBnX3ZhcmlhYmxlIE9JRCBvZiB0aGUgdmFyaWFibGUgKGhhc2gga2V5KSAqLworCiAJ LyoKLQkgKiBGb3IgdGVtcG9yYXJ5IHZhcmlhYmxlcywgd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcg ZW5kIG9mIHhhY3QgYWN0aW9uIHRvCi0JICogZW5zdXJlIGRlbGV0aW9uIGZyb20gY2F0YWxvZy4K KwkgKiBUaGUgc2Vzc2lvbiB2YXJpYWJsZSBpcyBpZGVudGlmaWVkIGJ5IG9pZC4gVGhlIG9pZCBp cyB1bmlxdWUgaW4KKwkgKiBjYXRhbG9nLiBVbmZvcnR1bmF0ZWx5LCB0aGUgbWVtb3J5IGNsZWFu dXAgY2FuIGJlIHBvc3Rwb25lZCB0bworCSAqIHRoZSBiZWdpbm5pbmcKKwkgKiBvZiB0aGUgc2Vz c2lvbiBuZXh0IHRyYW5zYWN0aW9uLCBhbmQgaXQncyBwb3NzaWJsZSB0aGF0IHRoaXMgbmV4dAor CSAqIHRyYW5zYWN0aW9uIHNlZXMgYSBkaWZmZXJlbnQgdmFyaWFibGUgd2l0aCB0aGUgc2FtZSBv aWQuICBXZQorCSAqIHRoZXJlZm9yZSBuZWVkIGFuIGV4dHJhIGlkZW50aWZpZXIgdG8gZGlzdGlu Z3Vpc2ggYm90aCBjYXNlcy4gV2UKKwkgKiB1c2UgdGhlIExTTiBudW1iZXIgb2Ygc2Vzc2lvbiB2 YXJpYWJsZSBhdCBjcmVhdGlvbiB0aW1lLiBUaGUKKwkgKiB2YWx1ZSBvZiBzZXNzaW9uIHZhcmlh YmxlIChpbiBtZW1vcnkpIGlzIHZhbGlkLCB3aGVuIHRoZXJlIGlzIGEKKwkgKiByZWNvcmQgaW4g cGdfdmFyaWFibGUgd2l0aCBzYW1lIG9pZCBhbmQgc2FtZSBjcmVhdGVfbHNuLgogCSAqLwotCWlm IChlb3hhY3Rpb24gPT0gVkFSSUFCTEVfRU9YX0RST1ApCi0JewotCQlBc3NlcnQoaXNUZW1wTmFt ZXNwYWNlKGdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWVzcGFjZSh2YXJpZCkpKTsKKwlYTG9nUmVj UHRyCWNyZWF0ZV9sc247CiAKLQkJcmVnaXN0ZXJfc2Vzc2lvbl92YXJpYWJsZV94YWN0X2FjdGlv bih2YXJpZCwgU1ZBUl9PTl9DT01NSVRfRFJPUCk7CisJYm9vbAkJaXNudWxsOworCWJvb2wJCWZy ZWV2YWw7CisJRGF0dW0JCXZhbHVlOworCisJT2lkCQkJdHlwaWQ7CisJaW50MTYJCXR5cGxlbjsK Kwlib29sCQl0eXBieXZhbDsKKworCWJvb2wJCWlzX2RvbWFpbjsKKwl2b2lkCSAgICpkb21haW5f Y2hlY2tfZXh0cmE7CisJTG9jYWxUcmFuc2FjdGlvbklkIGRvbWFpbl9jaGVja19leHRyYV9seGlk OworCisJLyoKKwkgKiBUb3AgbGV2ZWwgbG9jYWwgdHJhbnNhY3Rpb24gaWQgb2YgdGhlIGxhc3Qg dHJhbnNhY3Rpb24gdGhhdCBkcm9wcGVkIHRoZQorCSAqIHZhcmlhYmxlIGlmIGFueS4gIFdlIG5l ZWQgdGhpcyBpbmZvcm1hdGlvbiB0byBhdm9pZCBmcmVlaW5nIG1lbW9yeSBmb3IKKwkgKiB2YXJp YWJsZSBkcm9wcGVkIGJ5IHRoZSBsb2NhbCBiYWNrZW5kIHRoYXQgbWF5IGJlIGV2ZW50dWFsbHkg cm9sbGJhY2tlZC4KKwkgKi8KKwlMb2NhbFRyYW5zYWN0aW9uSWQgZHJvcF9seGlkOworCisJYm9v bAkJaXNfbm90X251bGw7CS8qIGRvbid0IGFsbG93IG51bGwgdmFsdWVzICovCisJYm9vbAkJaXNf aW1tdXRhYmxlOwkvKiB0cnVlIHdoZW4gdmFyaWFibGUgaXMgaW1tdXRhYmxlICovCisJYm9vbAkJ aGFzX2RlZmV4cHI7CS8qIHRydWUgd2hlbiB2YXJpYWJsZSBoYXMgYSBkZWZhdWx0IHZhbHVlICov CisKKwlib29sCQlpc192YWxpZDsJCS8qIHRydWUgd2hlbiB2YXJpYWJsZSB3YXMgc3VjY2Vzc2Z1 bGx5CisJCQkJCQkJCSAqIGluaXRpYWxpemVkICovCisKKwl1aW50MzIJCWhhc2h2YWx1ZTsJCS8q IHVzZWQgZm9yIHBhaXJpbmcgc2ludmFsIG1lc3NhZ2UgKi8KKworCWJvb2wJCWVveF9yZXNldDsJ CS8qIHRydWUsIHdoZW4gbGlmZWN5Y2xlIGlzIGxpbWl0dGVkIGJ5CisJCQkJCQkJCSAqIHRyYW5z YWN0aW9uICovCit9IFNWYXJpYWJsZURhdGE7CisKK3R5cGVkZWYgU1ZhcmlhYmxlRGF0YSAqU1Zh cmlhYmxlOworCitzdGF0aWMgSFRBQiAqc2Vzc2lvbnZhcnMgPSBOVUxMOwkvKiBoYXNoIHRhYmxl IGZvciBzZXNzaW9uIHZhcmlhYmxlcyAqLworCitzdGF0aWMgTWVtb3J5Q29udGV4dCBTVmFyaWFi bGVNZW1vcnlDb250ZXh0ID0gTlVMTDsKKworc3RhdGljIHZvaWQgY3JlYXRlX3Nlc3Npb252YXJz X2hhc2h0YWJsZXModm9pZCk7CitzdGF0aWMgdm9pZCBmcmVlX3Nlc3Npb25fdmFyaWFibGVfdmFs dWUoU1ZhcmlhYmxlIHN2YXIpOworc3RhdGljIHZvaWQgaW5pdF9zZXNzaW9uX3ZhcmlhYmxlKFNW YXJpYWJsZSBzdmFyLCBWYXJpYWJsZSAqdmFyKTsKK3N0YXRpYyBib29sIGlzX3Nlc3Npb25fdmFy aWFibGVfdmFsaWQoU1ZhcmlhYmxlIHN2YXIpOworc3RhdGljIHZvaWQgcGdfdmFyaWFibGVfY2Fj aGVfY2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwKKwkJCQkJCQkJCSAgIHVpbnQzMiBo YXNodmFsdWUpOworc3RhdGljIFNWYXJpYWJsZSBwcmVwYXJlX3ZhcmlhYmxlX2Zvcl9yZWFkaW5n KE9pZCB2YXJpZCk7CitzdGF0aWMgdm9pZCByZWdpc3Rlcl9zZXNzaW9uX3ZhcmlhYmxlX3hhY3Rf YWN0aW9uKE9pZCB2YXJpZCwKKwkJCQkJCQkJCQkJCSAgU1ZhcmlhYmxlWEFjdEFjdGlvbiBhY3Rp b24pOworc3RhdGljIHZvaWQgcmVtb3ZlX3Nlc3Npb25fdmFyaWFibGUoU1ZhcmlhYmxlIHN2YXIp Oworc3RhdGljIHZvaWQgcmVtb3ZlX3Nlc3Npb25fdmFyaWFibGVfYnlfaWQoT2lkIHZhcmlkKTsK K3N0YXRpYyB2b2lkIHNldF9zZXNzaW9uX3ZhcmlhYmxlKFNWYXJpYWJsZSBzdmFyLCBEYXR1bSB2 YWx1ZSwgYm9vbCBpc251bGwsCisJCQkJCQkJCSBib29sIGluaXRfbW9kZSk7CitzdGF0aWMgY29u c3QgY2hhciAqU1ZhcmlhYmxlWEFjdEFjdGlvbk5hbWUoU1ZhcmlhYmxlWEFjdEFjdGlvbiBhY3Rp b24pOworc3RhdGljIHZvaWQgc3luY19zZXNzaW9udmFyc19hbGwoYm9vbCBmaWx0ZXJfbHhpZCk7 CitzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyX3Nlc3Npb25fdmFyaWFibGVfeGFjdF9hY3Rpb24oT2lk IHZhcmlkLAorCQkJCQkJCQkJCQkJCVNWYXJpYWJsZVhBY3RBY3Rpb24gYWN0aW9uKTsKKworCisv KgorICogUmV0dXJucyBodW1hbiByZWFkYWJsZSBuYW1lIG9mIFNWYXJpYWJsZVhBY3RBY3Rpb24g dmFsdWUuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK1NWYXJpYWJsZVhBY3RBY3Rpb25OYW1l KFNWYXJpYWJsZVhBY3RBY3Rpb24gYWN0aW9uKQoreworCXN3aXRjaCAoYWN0aW9uKQorCXsKKwkJ Y2FzZSBTVkFSX09OX0NPTU1JVF9EUk9QOgorCQkJcmV0dXJuICJPTiBDT01NSVQgRFJPUCI7CisJ CWNhc2UgU1ZBUl9PTl9DT01NSVRfUkVTRVQ6CisJCQlyZXR1cm4gIk9OIENPTU1JVCBSRVNFVCI7 CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5rbm93biBTVmFyaWFibGVYQWN0QWN0aW9u IGFjdGlvbiAlZCIsIGFjdGlvbik7CiAJfQogfQogCiAvKgotICogSGFuZGxlIHRoZSBsb2NhbCBt ZW1vcnkgY2xlYW51cCBmb3IgYSBEUk9QIFZBUklBQkxFIGNvbW1hbmQuCi0gKgotICogQ2FsbGVy IHNob3VsZCB0YWtlIGNhcmUgb2YgcmVtb3ZpbmcgdGhlIHBnX3ZhcmlhYmxlIGVudHJ5IGZpcnN0 LgorICogRnJlZSBhbGwgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIGdpdmVuIHNlc3Npb24gdmFy aWFibGUsIGJ1dAorICogcHJlc2VydmUgdGhlIGhhc2ggZW50cnkgaW4gc2Vzc2lvbnZhcnMuCiAg Ki8KLXZvaWQKLVNlc3Npb25WYXJpYWJsZURyb3BQb3N0cHJvY2VzcyhPaWQgdmFyaWQpCitzdGF0 aWMgdm9pZAorZnJlZV9zZXNzaW9uX3ZhcmlhYmxlX3ZhbHVlKFNWYXJpYWJsZSBzdmFyKQogewor CS8qIENsZWFuIGN1cnJlbnQgdmFsdWUgKi8KKwlpZiAoIXN2YXItPmlzbnVsbCkKKwl7CisJCWlm IChzdmFyLT5mcmVldmFsKQorCQl7CisJCQlwZnJlZShEYXR1bUdldFBvaW50ZXIoc3Zhci0+dmFs dWUpKTsKKwkJCXN2YXItPmZyZWV2YWwgPSBmYWxzZTsKKwkJfQorCisJCXN2YXItPmlzbnVsbCA9 IHRydWU7CisJfQorCisJc3Zhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisJc3Zhci0+ZnJlZXZhbCA9 IGZhbHNlOworCiAJLyoKLQkgKiBUaGUgZW50cnkgd2FzIHJlbW92ZWQgZnJvbSBjYXRhbG9nIGFs cmVhZHksIHdlIG11c3Qgbm90IGRvIGl0Ci0JICogYWdhaW4gYXQgZW5kIG9mIHhhY3QgdGltZS4K KwkgKiBXZSBjYW4gbWFyayB0aGlzIHNlc3Npb24gdmFyaWFibGUgYXMgdmFsaWQgd2hlbiBpdCBo YXMgbm90IGRlZmF1bHQKKwkgKiBleHByZXNzaW9uLCBhbmQgd2hlbiBudWxsIGlzIGFsbG93ZWQu IFdoZW4gaXQgaGFzIGRlZmV4cHIsIHRoZW4gdGhlCisJICogY29udGVudCB3aWxsIGJlIHZhbGlk IGFmdGVyIGFuIGFzc2lnbm1lbnQgb3IgZGVmZXhwIGV2YWx1YXRpb24uCiAJICovCi0JdW5yZWdp c3Rlcl9zZXNzaW9uX3ZhcmlhYmxlX3hhY3RfYWN0aW9uKHZhcmlkLCBTVkFSX09OX0NPTU1JVF9E Uk9QKTsKKwlzdmFyLT5pc192YWxpZCA9ICFzdmFyLT5oYXNfZGVmZXhwciAmJiAhc3Zhci0+aXNf bm90X251bGw7CiB9CiAKIC8qCiAgKiBSZWdpc3RyYXRpb24gb2YgYWN0aW9ucyB0byBiZSBleGVj dXRlZCBvbiBzZXNzaW9uIHZhcmlhYmxlcyBhdCB0cmFuc2FjdGlvbgogICogZW5kIHRpbWUuIFdl IHdhbnQgdG8gZHJvcCB0ZW1wb3Jhcnkgc2Vzc2lvbiB2YXJpYWJsZXMgd2l0aCBjbGF1c2UgT04g Q09NTUlUCi0gKiBEUk9QLCBvciB3ZSB3YW50IHRvIHJlc2V0IHZhbHVlcyBvZiBzZXNzaW9uIHZh cmlhYmxlcyB3aXRoIGNsYXVzZSBPTgotICogVFJBTlNBQ1RJT04gRU5EIFJFU0VUIG9yIHdlIHdh bnQgdG8gY2xlYW4gKHJlc2V0KSBsb2NhbCBtZW1vcnkgYWxsb2NhdGVkIGJ5Ci0gKiB2YWx1ZXMg b2YgZHJvcHBlZCBzZXNzaW9uIHZhcmlhYmxlcy4KLSAqLwotCi0vKgotICogUmVnaXN0ZXIgYSBz ZXNzaW9uIHZhcmlhYmxlIHhhY3QgYWN0aW9uLgorICogRFJPUCwgb3Igd2Ugd2FudCB0byBjbGVh biAocmVzZXQpIGxvY2FsIG1lbW9yeSBhbGxvY2F0ZWQgYnkKKyAqIHZhbHVlcyBvZiBzZXNzaW9u IHZhcmlhYmxlcyBkcm9wcGVkIGluIG90aGVyIGJhY2tlbmRzLgogICovCiBzdGF0aWMgdm9pZAog cmVnaXN0ZXJfc2Vzc2lvbl92YXJpYWJsZV94YWN0X2FjdGlvbihPaWQgdmFyaWQsCkBAIC0xMTEs MjcgKzI2OSwzMCBAQCByZWdpc3Rlcl9zZXNzaW9uX3ZhcmlhYmxlX3hhY3RfYWN0aW9uKE9pZCB2 YXJpZCwKIAlTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSAqeGFjdF9haTsKIAlNZW1vcnlDb250ZXh0 IG9sZGN4dDsKIAotCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9yeUNv bnRleHQpOworCWVsb2coREVCVUcxLCAiU1ZhcmlhYmxlWEFjdEFjdGlvbiBcIiVzXCIgaXMgcmVn aXN0ZXJlZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSAob2lkOiV1KSIsCisJCSBTVmFyaWFibGVYQWN0 QWN0aW9uTmFtZShhY3Rpb24pLCB2YXJpZCk7CisKKwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKIAogCXhhY3RfYWkgPSAoU1ZhcmlhYmxlWEFj dEFjdGlvbkl0ZW0gKikKIAkJcGFsbG9jKHNpemVvZihTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSkp OwogCiAJeGFjdF9haS0+dmFyaWQgPSB2YXJpZDsKKwl4YWN0X2FpLT5hY3Rpb24gPSBhY3Rpb247 CiAKIAl4YWN0X2FpLT5jcmVhdGluZ19zdWJpZCA9IEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklk KCk7CiAJeGFjdF9haS0+ZGVsZXRpbmdfc3ViaWQgPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZDsK IAotCUFzc2VydChhY3Rpb24gPT0gU1ZBUl9PTl9DT01NSVRfRFJPUCk7Ci0JeGFjdF9kcm9wX2Fj dGlvbnMgPSBsY29ucyh4YWN0X2FpLCB4YWN0X2Ryb3BfYWN0aW9ucyk7CisJeGFjdF9vbl9jb21t aXRfYWN0aW9ucyA9IGxjb25zKHhhY3RfYWksIHhhY3Rfb25fY29tbWl0X2FjdGlvbnMpOwogCiAJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiB9CiAKIC8qCi0gKiBVbnJlZ2lzdGVyIGFu IGFjdGlvbiBvbiBhIGdpdmVuIHNlc3Npb24gdmFyaWFibGUgZnJvbSBhY3Rpb24gbGlzdC4gSW4g dGhpcwotICogbW9tZW50LCB0aGUgYWN0aW9uIGlzIGp1c3QgbWFya2VkIGFzIGRlbGV0ZWQgYnkg c2V0dGluZyBkZWxldGluZ19zdWJpZC4gVGhlCi0gKiBjYWxsaW5nIGV2ZW4gbWlnaHQgYmUgcm9s bGJhY2tlZCwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgbm90IGxvc2UgdGhpcwotICogYWN0aW9u LgorICogVW5yZWdpc3RlciBhbiBhY3Rpb24gb24gYSBnaXZlbiBzZXNzaW9uIHZhcmlhYmxlIGZy b20gdGhlIGFjdGlvbiBsaXN0LgorICogVGhlIGFjdGlvbiBpcyBqdXN0IG1hcmtlZCBhcyBkZWxl dGVkIGJ5IHNldHRpbmcgZGVsZXRpbmdfc3ViaWQuCisgKiBUaGUgY2FsbGluZyBzdWJ0cmFuc2Fj dGlvbiBldmVuIG1pZ2h0IGJlIHJvbGxiYWNrZWQsIGluIHdoaWNoIGNhc2UgdGhlCisgKiBhY3Rp b24gc2hvdWxkbid0IGJlIHJlbW92ZWQuCiAgKi8KIHN0YXRpYyB2b2lkCiB1bnJlZ2lzdGVyX3Nl c3Npb25fdmFyaWFibGVfeGFjdF9hY3Rpb24oT2lkIHZhcmlkLApAQCAtMTM5LDQzICszMDAsODM5 IEBAIHVucmVnaXN0ZXJfc2Vzc2lvbl92YXJpYWJsZV94YWN0X2FjdGlvbihPaWQgdmFyaWQsCiB7 CiAJTGlzdENlbGwgICAqbDsKIAotCUFzc2VydChhY3Rpb24gPT0gU1ZBUl9PTl9DT01NSVRfRFJP UCk7CisJZWxvZyhERUJVRzEsICJTVmFyaWFibGVYQWN0QWN0aW9uIFwiJXNcIiBpcyB1bnJlZ2lz dGVyZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgKG9pZDoldSkiLAorCQkgU1ZhcmlhYmxlWEFjdEFj dGlvbk5hbWUoYWN0aW9uKSwgdmFyaWQpOwogCi0JZm9yZWFjaChsLCB4YWN0X2Ryb3BfYWN0aW9u cykKKwlmb3JlYWNoKGwsIHhhY3Rfb25fY29tbWl0X2FjdGlvbnMpCiAJewogCQlTVmFyaWFibGVY QWN0QWN0aW9uSXRlbSAqeGFjdF9haSA9CiAJCShTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSAqKSBs Zmlyc3QobCk7CiAKLQkJaWYgKHhhY3RfYWktPnZhcmlkID09IHZhcmlkKQorCQlpZiAoeGFjdF9h aS0+YWN0aW9uID09IGFjdGlvbiAmJiB4YWN0X2FpLT52YXJpZCA9PSB2YXJpZCkKIAkJCXhhY3Rf YWktPmRlbGV0aW5nX3N1YmlkID0gR2V0Q3VycmVudFN1YlRyYW5zYWN0aW9uSWQoKTsKIAl9CiB9 CiAKIC8qCi0gKiBQZXJmb3JtIE9OIFRSQU5TQUNUSU9OIEVORCBSRVNFVCBvciBPTiBDT01NSVQg RFJPUAotICogYW5kIENPTU1JVC9ST0xMQkFDSyBvZiB0cmFuc2FjdGlvbiBzZXNzaW9uIHZhcmlh Ymxlcy4KKyAqIFJlbGVhc2UgdGhlIGdpdmVuIHNlc3Npb24gdmFyaWFibGUgZnJvbSBzZXNzaW9u dmFycyBoYXNodGFiIGFuZCBmcmVlCisgKiBhbGwgdW5kZXJseWluZyBhbGxvY2F0ZWQgbWVtb3J5 LgorICovCitzdGF0aWMgdm9pZAorcmVtb3ZlX3Nlc3Npb25fdmFyaWFibGUoU1ZhcmlhYmxlIHN2 YXIpCit7CisJZnJlZV9zZXNzaW9uX3ZhcmlhYmxlX3ZhbHVlKHN2YXIpOworCisJLyoKKwkgKiBJ biB0aGlzIG1vbWVudCwgdGhlIHNlc3Npb24gdmFyaWFibGUgaXMgbm90IGluIGNhdGFsb2csIHNv IG9ubHkgc2F2ZWQKKwkgKiBvaWQgY2FuIGJlIGRpc3BsYXllZC4KKwkgKi8KKwllbG9nKERFQlVH MSwgInNlc3Npb24gdmFyaWFibGUgKG9pZDoldSkgaXMgcmVtb3ZpbmcgZnJvbSBtZW1vcnkiLAor CQkgc3Zhci0+dmFyaWQpOworCisJaWYgKGhhc2hfc2VhcmNoKHNlc3Npb252YXJzLAorCQkJCQko dm9pZCAqKSAmc3Zhci0+dmFyaWQsCisJCQkJCUhBU0hfUkVNT1ZFLAorCQkJCQlOVUxMKSA9PSBO VUxMKQorCQllbG9nKERFQlVHMSwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7Cit9CisKKy8qCisg KiBSZWxlYXNlIHRoZSBzZXNzaW9uIHZhcmlhYmxlIGRlZmluZWQgYnkgdmFyaWQgZnJvbSBzZXNz aW9udmFycworICogaGFzaHRhYiBhbmQgZnJlZSBhbGwgdW5kZXJseWluZyBhbGxvY2F0ZWQgbWVt b3J5LgorICovCitzdGF0aWMgdm9pZAorcmVtb3ZlX3Nlc3Npb25fdmFyaWFibGVfYnlfaWQoT2lk IHZhcmlkKQoreworCVNWYXJpYWJsZQlzdmFyOworCWJvb2wJCWZvdW5kOworCisJaWYgKCFzZXNz aW9udmFycykKKwkJcmV0dXJuOworCisJc3ZhciA9IChTVmFyaWFibGUpIGhhc2hfc2VhcmNoKHNl c3Npb252YXJzLCAmdmFyaWQsCisJCQkJCQkJCSAgIEhBU0hfRklORCwgJmZvdW5kKTsKKwlpZiAo Zm91bmQpCisJCXJlbW92ZV9zZXNzaW9uX3ZhcmlhYmxlKHN2YXIpOworfQorCisvKgorICogQ2Fs bGJhY2sgZnVuY3Rpb24gZm9yIHNlc3Npb24gdmFyaWFibGUgaW52YWxpZGF0aW9uLgorICoKKyAq IEl0IHF1ZXVlcyBhIGxpc3Qgb2YgdmFyaWFibGUgT2lkIGluIHhhY3RfcmVjaGVja192YXJpZHMu CisgKi8KK3N0YXRpYyB2b2lkCitwZ192YXJpYWJsZV9jYWNoZV9jYWxsYmFjayhEYXR1bSBhcmcs IGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQoreworCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7CisJU1ZhcmlhYmxlCXN2YXI7CisKKwkvKgorCSAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSBv ZiBzZXNzaW9udmFycyBiZWluZyBpbml0aWFsaXplZCwgZXZlbiB3aGVuCisJICogcmVjZWl2aW5n IGFuIGludmFsaWRhdGlvbiBjYWxsYmFjaywgYXMgRElTQ0FSRCBbIEFMTCB8IFZBUklBQkxFUyBd CisJICogZGVzdHJveXMgdGhlIGhhc2ggdGFibGUgZW50aXJlbHkuCisJICovCisJaWYgKCFzZXNz aW9udmFycykKKwkJcmV0dXJuOworCisJZWxvZyhERUJVRzEsICJwZ192YXJpYWJsZV9jYWNoZV9j YWxsYmFjayAldSAldSIsIGNhY2hlaWQsIGhhc2h2YWx1ZSk7CisKKwkvKgorCSAqIFdoZW4gdGhl IGhhc2h2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIHdlIGhhdmUgdG8gcmVjaGVjayBhbGwK KwkgKiBjdXJyZW50bHkgdXNlZCBzZXNzaW9uIHZhcmlhYmxlcy4gU2luY2Ugd2UgY2FuJ3QgZ3Vh cmFudGVlIHRoZSBleGFjdAorCSAqIHNlc3Npb24gdmFyaWFibGUgZnJvbSBpdHMgaGFzaFZhbHVl LCB3ZSBhbHNvIGhhdmUgdG8gaXRlcmF0ZSBvdmVyCisJICogYWxsIGl0ZW1zIG9mIHRoZSBzZXNz aW9udmFycyBoYXNoIHRhYmxlLgorCSAqLworCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgc2Vzc2lv bnZhcnMpOworCisJd2hpbGUgKChzdmFyID0gKFNWYXJpYWJsZSkgaGFzaF9zZXFfc2VhcmNoKCZz dGF0dXMpKSAhPSBOVUxMKQorCXsKKwkJaWYgKGhhc2h2YWx1ZSA9PSAwIHx8IHN2YXItPmhhc2h2 YWx1ZSA9PSBoYXNodmFsdWUpCisJCXsKKwkJCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCisJCQkv KiBUaGUgbGlzdCBuZWVkcyB0byBiZSBhYmxlIHRvIHN1cnZpdmUgdGhlIHRyYW5zYWN0aW9uICov CisJCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU1ZhcmlhYmxlTWVtb3J5Q29udGV4 dCk7CisKKwkJCXhhY3RfcmVjaGVja192YXJpZHMgPSBsYXBwZW5kX29pZCh4YWN0X3JlY2hlY2tf dmFyaWRzLAorCQkJCQkJCQkJCQkgIHN2YXItPnZhcmlkKTsKKworCQkJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN4dCk7CisKKwkJCWVsb2coREVCVUcxLCAic2Vzc2lvbiB2YXJpYWJsZSAob2lk OiV1KSBzaG91bGQgYmUgcmVjaGVja2VkIChmb3JjZWQgYnkgc2ludmFsKSIsCisJCQkJIHN2YXIt PnZhcmlkKTsKKwkJfQorCisJCS8qCisJCSAqIGFsdGhvdWdoIGl0IHRoZXJlIGlzIGxvdyBwcm9i YWJpbGl0eSwgd2UgaGF2ZSB0byBpdGVyYXRlIG92ZXIgYWxsCisJCSAqIGxvY2FsbHkgc2V0IHNl c3Npb24gdmFyaWFibGVzLCBiZWNhdXNlIGhhc2h2YWx1ZSBpcyBub3QgYSB1bmlxdWUKKwkJICog aWRlbnRpZmllci4KKwkJICovCisJfQorfQorCisvKgorICogUmV0dXJucyB0cnVlIHdoZW4gdGhl IGVudHJ5IGluIHBnX3ZhcmlhYmxlIGlzIHZhbGlkIGZvciB0aGUgZ2l2ZW4gc2Vzc2lvbgorICog dmFyaWFibGUuCisgKi8KK3N0YXRpYyBib29sCitpc19zZXNzaW9uX3ZhcmlhYmxlX3ZhbGlkKFNW YXJpYWJsZSBzdmFyKQoreworCUhlYXBUdXBsZQl0cDsKKwlib29sCQlyZXN1bHQgPSBmYWxzZTsK KworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHN2 YXItPnZhcmlkKSk7CisKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJeworCQkvKgorCQkg KiBJbiB0aGlzIGNhc2UsIHRoZSBvbmx5IG9pZCBjYW5ub3QgYmUgdXNlZCBhcyB1bmlxdWUgaWRl bnRpZmllciwKKwkJICogYmVjYXVzZSB0aGUgb2lkIGNvdW50ZXIgY2FuIHdyYXBhcm91bmQsIGFu ZCB0aGUgb2lkIGNhbiBiZSB1c2VkIGZvcgorCQkgKiBuZXcgb3RoZXIgc2Vzc2lvbiB2YXJpYWJs ZS4gV2UgZG8gYSBzZWNvbmQgY2hlY2sgYWdhaW5zdCA2NGJpdAorCQkgKiB1bmlxdWUgaWRlbnRp Zmllci4KKwkJICovCisJCWlmIChzdmFyLT5jcmVhdGVfbHNuID09ICgoRm9ybV9wZ192YXJpYWJs ZSkgR0VUU1RSVUNUKHRwKSktPmNyZWF0ZV9sc24pCisJCQlyZXN1bHQgPSB0cnVlOworCisJCVJl bGVhc2VTeXNDYWNoZSh0cCk7CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFJl Y2hlY2sgdGhlIHBvc3NpYmx5IGludmFsaWRhdGVkIHZhcmlhYmxlcyAoaW4gbWVtb3J5KSBhZ2Fp bnN0IHN5c3RlbQorICogY2F0YWxvZy4gVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBiZWZvcmUgYW55 IHJlYWQgb3IgYW55IHdyaXRlIGZyb20vdG8gc2Vzc2lvbgorICogdmFyaWFibGVzIGFuZCB3aGVu IHByb2Nlc3NpbmcgYSBjb21taXR0ZWQgdHJhbnNhY3Rpb24uCisgKiBJZiBmaWx0ZXJfbHhpZCBp cyB0cnVlLCB0aGlzIGZ1bmN0aW9uIHdpbGwgaWdub3JlIHRoZSByZWNoZWNrIGZvciB2YXJpYWJs ZXMKKyAqIHRoYXQgaGF2ZSB0aGUgc2FtZSBjYWNoZWQgbG9jYWwgdHJhbnNhY3Rpb24gaWQgYXMg dGhlIHRyYW5zYWN0aW9uIGN1cnJlbnQKKyAqIHRvcCBsZXZlbCBsb2NhbCB0cmFuc2FjdGlvbiBp ZCwgaWUuIHRoZSB2YXJpYWJsZXMgZHJvcHBlZCBpbiB0aGUgY3VycmVudCB0b3AKKyAqIGxldmVs IHRyYW5zYWN0aW9uIG9yIGFueSB1bmRlcmx5aW5nIHN1YnRyYW5zYWN0aW9uLgorICovCitzdGF0 aWMgdm9pZAorc3luY19zZXNzaW9udmFyc19hbGwoYm9vbCBmaWx0ZXJfbHhpZCkKK3sKKwlTVmFy aWFibGUJc3ZhcjsKKwlMaXN0Q2VsbCAgICpsOworCisJaWYgKCF4YWN0X3JlY2hlY2tfdmFyaWRz KQorCQlyZXR1cm47CisKKwkvKgorCSAqIElmIHRoZSBzZXNzaW9udmFycyBoYXNodGFibGUgaXMg TlVMTCAod2hpY2ggY2FuIGJlIGRvbmUgYnkgRElTQ0FSRAorCSAqIFZBUklBQkxFUyksIHdlIGFy ZSBzdXJlIHRoYXQgdGhlcmUgYXJlbid0IGFueSBhY3RpdmUgc2Vzc2lvbiB2YXJpYWJsZQorCSAq IGluIHRoaXMgc2Vzc2lvbi4KKwkgKi8KKwlpZiAoIXNlc3Npb252YXJzKQorCXsKKwkJbGlzdF9m cmVlKHhhY3RfcmVjaGVja192YXJpZHMpOworCQl4YWN0X3JlY2hlY2tfdmFyaWRzID0gTklMOwor CQlyZXR1cm47CisJfQorCisJZWxvZyhERUJVRzEsICJlZmZlY3RpdmUgY2FsbCBvZiBzeW5jX3Nl c3Npb252YXJzX2FsbCgpIik7CisKKwkvKgorCSAqIFRoZSByZWNoZWNrIGxpc3QgY2FuIGNvbnRh aW4gbWFueSBkdXBsaWNhdGVzLCBzbyBjbGVhbiBpdCB1cCBiZWZvcmUKKwkgKiBwcm9jZXNzaW5n IHRvIGF2b2lkIGV4dHJhbmVvdXMgd29yay4KKwkgKi8KKwlsaXN0X3NvcnQoeGFjdF9yZWNoZWNr X3ZhcmlkcywgbGlzdF9vaWRfY21wKTsKKwlsaXN0X2RlZHVwbGljYXRlX29pZCh4YWN0X3JlY2hl Y2tfdmFyaWRzKTsKKworCS8qCisJICogVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBiZWZvcmUgYW55 IHJlYWRpbmcsIHNvIHRoZSBzZXNzaW9uIHNob3VsZCBiZSBpbgorCSAqIHRyYW5zYWN0aW9uIHN0 YXRlLiBUaGlzIGlzIHJlcXVpcmVkIHRvIGFjY2VzcyB0aGUgc3lzdGVtIGNhdGFsb2cuCisJICov CisJQXNzZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKworCWZvcmVhY2gobCwgeGFjdF9yZWNo ZWNrX3ZhcmlkcykKKwl7CisJCWJvb2wJCWZvdW5kOworCQlPaWQJCQl2YXJpZCA9IGxmaXJzdF9v aWQobCk7CisKKwkJc3ZhciA9IChTVmFyaWFibGUpIGhhc2hfc2VhcmNoKHNlc3Npb252YXJzLCAm dmFyaWQsCisJCQkJCQkJCQkgICBIQVNIX0ZJTkQsICZmb3VuZCk7CisKKwkJLyoKKwkJICogUmVt b3ZlIGludmFsaWQgdmFyaWFibGVzLCBidXQgZG9uJ3QgdG91Y2ggdmFyaWFibGVzIHRoYXQgd2Vy ZQorCQkgKiBkcm9wcGVkIGJ5IHRoZSBjdXJyZW50IHRvcCBsZXZlbCBsb2NhbCB0cmFuc2FjdGlv biBvciBhbnkKKwkJICogc3VidHJhbnNhY3Rpb24gdW5kZXJuZWF0aCwgYXMgdGhlcmUncyBubyBn dWFyYW50ZWUgdGhhdCB0aGUKKwkJICogdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQuICBT dWNoIHZhcmlhYmxlcyB3aWxsIGJlIHJlbW92ZWQgaW4KKwkJICogdGhlIG5leHQgdHJhbnNhY3Rp b24gaWYgbmVlZGVkLgorCQkgKi8KKwkJaWYgKGZvdW5kKQorCQl7CisJCQkvKgorCQkJICogSWYg dGhpcyBpcyBhIHZhcmlhYmxlIGRyb3BwZWQgYnkgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24sCisJ CQkgKiBpZ25vcmUgaXQgYW5kIGtlZXAgdGhlIG9pZCB0byByZWNoZWNrIGluIHRoZSBuZXh0IHRy YW5zYWN0aW9uLgorCQkJICovCisJCQlpZiAoZmlsdGVyX2x4aWQgJiYgc3Zhci0+ZHJvcF9seGlk ID09IE15UHJvYy0+bHhpZCkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKCFpc19zZXNzaW9uX3Zh cmlhYmxlX3ZhbGlkKHN2YXIpKQorCQkJCXJlbW92ZV9zZXNzaW9uX3ZhcmlhYmxlKHN2YXIpOwor CQl9CisKKwkJLyoKKwkJICogSWYgY2FsbGVyIGFza2VkIHRvIGZpbHRlciB0aGUgbGlzdCwgd2Ug aGF2ZSB0byBjbGVhbiBpdGVtcyBhcyB0aGV5CisJCSAqIGFyZSBwcm9jZXNzZWQuCisJCSAqLwor CQlpZiAoZmlsdGVyX2x4aWQpCisJCQl4YWN0X3JlY2hlY2tfdmFyaWRzID0gZm9yZWFjaF9kZWxl dGVfY3VycmVudCh4YWN0X3JlY2hlY2tfdmFyaWRzLAorCQkJCQkJCQkJCQkJCQkgbCk7CisJfQor CisJLyoKKwkgKiBJZiBjYWxsZXIgZGlkbid0IGFzayB0byBmaWx0ZXIgdGhlIGxpc3QsIGFsbCBp dGVtcyBoYXZlIGJlZW4gcHJvY2Vzc2VkCisJICogc28gd2UgY2FuIHNpbXBseSBkZXN0cm95IHRo ZSBsaXN0LgorCSAqLworCWlmICghZmlsdGVyX2x4aWQpCisJeworCQlsaXN0X2ZyZWUoeGFjdF9y ZWNoZWNrX3Zhcmlkcyk7CisJCXhhY3RfcmVjaGVja192YXJpZHMgPSBOSUw7CisJfQorfQorCisv KgorICogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlIGZvciBzdG9yaW5nIHNlc3Npb24gdmFyaWFibGVz LgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlX3Nlc3Npb252YXJzX2hhc2h0YWJsZXModm9pZCkK K3sKKwlIQVNIQ1RMCQl2YXJzX2N0bDsKKworCUFzc2VydCghc2Vzc2lvbnZhcnMpOworCisJLyog c2V0IGNhbGxiYWNrcyAqLworCWlmICghU1ZhcmlhYmxlTWVtb3J5Q29udGV4dCkKKwl7CisJCS8q IFJlYWQgc2ludmFsIG1lc3NhZ2VzICovCisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNr KFZBUklBQkxFT0lELAorCQkJCQkJCQkJICBwZ192YXJpYWJsZV9jYWNoZV9jYWxsYmFjaywKKwkJ CQkJCQkJCSAgKERhdHVtKSAwKTsKKworCQkvKiBXZSBuZWVkIG91ciBvd24gbG9uZyBsaXZlZCBt ZW1vcnkgY29udGV4dCAqLworCQlTVmFyaWFibGVNZW1vcnlDb250ZXh0ID0KKwkJCUFsbG9jU2V0 Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkgICJzZXNzaW9uIHZhcmlh YmxlcyIsCisJCQkJCQkJCSAgQUxMT0NTRVRfU1RBUlRfU01BTExfU0laRVMpOworCX0KKworCUFz c2VydChTVmFyaWFibGVNZW1vcnlDb250ZXh0KTsKKworCW1lbXNldCgmdmFyc19jdGwsIDAsIHNp emVvZih2YXJzX2N0bCkpOworCXZhcnNfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKKwl2YXJz X2N0bC5lbnRyeXNpemUgPSBzaXplb2YoU1ZhcmlhYmxlRGF0YSk7CisJdmFyc19jdGwuaGN4dCA9 IFNWYXJpYWJsZU1lbW9yeUNvbnRleHQ7CisKKwlBc3NlcnQoc2Vzc2lvbnZhcnMgPT0gTlVMTCk7 CisKKwlzZXNzaW9udmFycyA9IGhhc2hfY3JlYXRlKCJTZXNzaW9uIHZhcmlhYmxlcyIsIDY0LCAm dmFyc19jdGwsCisJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhU KTsKK30KKworLyoKKyAqIEFzc2lnbiBzb21lIGNvbnRlbnQgdG8gdGhlIHNlc3Npb24gdmFyaWFi bGUuIEl0J3MgY29waWVkIHRvCisgKiBTVmFyaWFibGVNZW1vcnlDb250ZXh0IGlmIG5lY2Vzc2Fy eS4KKyAqCisgKiBpbml0X21vZGUgaXMgdHJ1ZSB3aGVuIHRoZSB2YWx1ZSBvZiBzZXNzaW9uIHZh cmlhYmxlIHNob3VsZCBiZSBpbml0aWFsaXplZAorICogYnkgdGhlIGRlZmF1bHQgZXhwcmVzc2lv biBpZiBhbnkuIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSB3aGVyZSB3ZSBhbGxvdyB0aGUKKyAqIG1v ZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFyaWFibGVzIHdpdGggZGVmYXVsdCBleHByZXNz aW9uLgorICoKKyAqIElmIGFueSBlcnJvciBoYXBwZW5zLCB0aGUgZXhpc3RpbmcgdmFsdWUgc2hv dWxkbid0IGJlIG1vZGlmaWVkLgorICovCitzdGF0aWMgdm9pZAorc2V0X3Nlc3Npb25fdmFyaWFi bGUoU1ZhcmlhYmxlIHN2YXIsIERhdHVtIHZhbHVlLCBib29sIGlzbnVsbCwgYm9vbCBpbml0X21v ZGUpCit7CisJRGF0dW0JCW5ld3ZhbCA9IHZhbHVlOworCisJQXNzZXJ0KHN2YXIgJiYgT2lkSXNW YWxpZChzdmFyLT50eXBpZCkpOworCisJLyogRG9uJ3QgYWxsb3cgYXNzaWdubWVudCBvZiBudWxs IHRvIE5PVCBOVUxMIHZhcmlhYmxlICovCisJaWYgKGlzbnVsbCAmJiBzdmFyLT5pc19ub3RfbnVs bCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9U X0FMTE9XRUQpLAorCQkJCSBlcnJtc2coIm51bGwgdmFsdWUgaXMgbm90IGFsbG93ZWQgZm9yIE5P VCBOVUxMIHNlc3Npb24gdmFyaWFibGUgXCIlcy4lc1wiIiwKKwkJCQkJCWdldF9uYW1lc3BhY2Vf bmFtZShnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2Uoc3Zhci0+dmFyaWQpKSwKKwkJCQkJ CWdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWUoc3Zhci0+dmFyaWQpKSkpOworCisJLyoKKwkgKiBE b24ndCBhbGxvdyB0aGUgbW9kaWZpY2F0aW9uIG9mIGFuIGltbXV0YWJsZSBzZXNzaW9uIHZhcmlh YmxlIHRoYXQKKwkgKiBhbHJlYWR5IGhhcyBhbiBhc3NpZ25lZCB2YWx1ZSAocG9zc2libHkgTlVM TCkgb3IgaGFzIGEgZGVmYXVsdAorCSAqIGV4cHJlc3Npb24gKGluIHdoaWNoIGNhc2UgdGhlIHZh bHVlIHNob3VsZCBhbHdheXMgYmUgdGhlIHJlc3VsdCBvZgorCSAqIGRlZmF1bHQgZXhwcmVzc2lv biBldmFsdWF0aW9uKSB1bmxlc3MgdGhlIHZhcmlhYmxlIGlzIGJlaW5nIGluaXRpYWxpemVkLgor CSAqLworCWlmICghaW5pdF9tb2RlICYmCisJCShzdmFyLT5pc19pbW11dGFibGUgJiYKKwkJIChz dmFyLT5pc192YWxpZCB8fCBzdmFyLT5oYXNfZGVmZXhwcikpKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfRVJST1JfSU5fQVNTSUdOTUVOVCksCisJCQkJIGVycm1zZygi c2Vzc2lvbiB2YXJpYWJsZSBcIiVzLiVzXCIgaXMgZGVjbGFyZWQgSU1NVVRBQkxFIiwKKwkJCQkJ CWdldF9uYW1lc3BhY2VfbmFtZShnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2Uoc3Zhci0+ dmFyaWQpKSwKKwkJCQkJCWdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWUoc3Zhci0+dmFyaWQpKSkp OworCisJaWYgKCFpc251bGwpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN4dCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhTVmFyaWFibGVNZW1vcnlDb250ZXh0KTsKKworCQluZXd2YWwgPSBkYXR1 bUNvcHkodmFsdWUsIHN2YXItPnR5cGJ5dmFsLCBzdmFyLT50eXBsZW4pOworCisJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCX0KKwllbHNlCisJeworCQkvKiBUaGUgY2FsbGVyIHNo b3VsZG4ndCBoYXZlIHByb3ZpZGVkIGFueSByZWFsIHZhbHVlLiAqLworCQlBc3NlcnQodmFsdWUg PT0gKERhdHVtKSAwKTsKKwl9CisKKwlmcmVlX3Nlc3Npb25fdmFyaWFibGVfdmFsdWUoc3Zhcik7 CisKKwlzdmFyLT52YWx1ZSA9IG5ld3ZhbDsKKworCXN2YXItPmlzbnVsbCA9IGlzbnVsbDsKKwlz dmFyLT5mcmVldmFsID0gbmV3dmFsICE9IHZhbHVlOworCXN2YXItPmlzX3ZhbGlkID0gdHJ1ZTsK KworCS8qCisJICogWFhYIFdoaWxlIHVubGlrZWx5LCBhbiBlcnJvciBoZXJlIGlzIHBvc3NpYmxl LgorCSAqIEl0IHdvdWxkbid0IGxlYWsgbWVtb3J5IGFzIHRoZSBhbGxvY2F0ZWQgY2h1bmsgaGFz IGFscmVhZHkgYmVlbgorCSAqIGNvcnJlY3RseSBhc3NpZ25lZCB0byB0aGUgc2Vzc2lvbiB2YXJp YWJsZSwgYnV0IHdvdWxkIGNvbnRyYWRpY3QgdGhpcworCSAqIGZ1bmN0aW9uIGNvbnRyYWN0LCB3 aGljaCBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGVpdGhlciBzdWNjZWVkIG9yCisJICog bGVhdmUgdGhlIGN1cnJlbnQgdmFsdWUgdW50b3VjaGVkLgorCSAqLworCWVsb2coREVCVUcxLCAi c2Vzc2lvbiB2YXJpYWJsZSBcIiVzLiVzXCIgKG9pZDoldSkgaGFzIG5ldyB2YWx1ZSIsCisJCSBn ZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNwYWNlKHN2YXItPnZh cmlkKSksCisJCSBnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHN2YXItPnZhcmlkKSwKKwkJIHN2 YXItPnZhcmlkKTsKK30KKworLyoKKyAqIEluaXRpYWxpemUgc2Vzc2lvbiB2YXJpYWJsZSBzdmFy IGZyb20gdmFyaWFibGUgdmFyCisgKi8KK3N0YXRpYyB2b2lkCitpbml0X3Nlc3Npb25fdmFyaWFi bGUoU1ZhcmlhYmxlIHN2YXIsIFZhcmlhYmxlICp2YXIpCit7CisJTWVtb3J5Q29udGV4dCBvbGRj eHQ7CisKKwlBc3NlcnQoT2lkSXNWYWxpZCh2YXItPm9pZCkpOworCisJc3Zhci0+dmFyaWQgPSB2 YXItPm9pZDsKKwlzdmFyLT5jcmVhdGVfbHNuID0gdmFyLT5jcmVhdGVfbHNuOworCisJc3Zhci0+ aXNudWxsID0gdHJ1ZTsKKwlzdmFyLT5mcmVldmFsID0gZmFsc2U7CisJc3Zhci0+dmFsdWUgPSAo RGF0dW0pIDA7CisKKwlzdmFyLT50eXBpZCA9IHZhci0+dHlwaWQ7CisJZ2V0X3R5cGxlbmJ5dmFs KHZhci0+dHlwaWQsICZzdmFyLT50eXBsZW4sICZzdmFyLT50eXBieXZhbCk7CisKKwlzdmFyLT5p c19kb21haW4gPSAoZ2V0X3R5cHR5cGUodmFyLT50eXBpZCkgPT0gVFlQVFlQRV9ET01BSU4pOwor CXN2YXItPmRvbWFpbl9jaGVja19leHRyYSA9IE5VTEw7CisJc3Zhci0+ZG9tYWluX2NoZWNrX2V4 dHJhX2x4aWQgPSBJbnZhbGlkTG9jYWxUcmFuc2FjdGlvbklkOworCisJc3Zhci0+ZHJvcF9seGlk ID0gSW52YWxpZExvY2FsVHJhbnNhY3Rpb25JZDsKKworCXN2YXItPmlzX25vdF9udWxsID0gdmFy LT5pc19ub3RfbnVsbDsKKwlzdmFyLT5pc19pbW11dGFibGUgPSB2YXItPmlzX2ltbXV0YWJsZTsK KwlzdmFyLT5oYXNfZGVmZXhwciA9IHZhci0+aGFzX2RlZmV4cHI7CisKKwkvKiB0aGUgdmFsdWUg b2YgdmFyaWFibGUgaXMgbm90IGtub3duIHlldCAqLworCXN2YXItPmlzX3ZhbGlkID0gZmFsc2U7 CisKKwlzdmFyLT5oYXNodmFsdWUgPSBHZXRTeXNDYWNoZUhhc2hWYWx1ZTEoVkFSSUFCTEVPSUQs CisJCQkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0odmFyLT5vaWQpKTsKKworCXN2YXItPmVveF9y ZXNldCA9IHZhci0+ZW94YWN0aW9uID09IFZBUklBQkxFX0VPWF9SRVNFVCB8fAorCQl2YXItPmVv eGFjdGlvbiA9PSBWQVJJQUJMRV9FT1hfRFJPUDsKKworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQpOworCisJaWYgKHN2YXItPmVveF9yZXNldCkK KwkJeGFjdF9yZXNldF92YXJpZHMgPSBsYXBwZW5kX29pZCh4YWN0X3Jlc2V0X3ZhcmlkcywgdmFy LT5vaWQpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8qCisgKiBT ZWFyY2ggYSBzZWVzaW9uIHZhcmlhYmxlIGluIHRoZSBoYXNoIHRhYmxlIGdpdmVuIGl0cyBvaWQu IElmIGl0CisgKiBkb2Vzbid0IGV4aXN0LCB0aGVuIGluc2VydCBpdCAoYW5kIGNhbGN1bGF0ZSBk ZWZleHByIGlmIGl0IGV4aXN0cykuCisgKgorICogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBk b2luZyBwZXJtaXNzaW9uIGNoZWNrcy4KKyAqCisgKiBBcyBzaWRlIGVmZmVjdCB0aGlzIGZ1bmN0 aW9uIGFjcXVpcmVzIEFjY2Vzc1NoYXJlTG9jayBvbgorICogcmVsYXRlZCBzZXNzaW9uIHZhcmlh YmxlIHVudGlsIHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLgorICovCitzdGF0aWMgU1Zhcmlh YmxlCitwcmVwYXJlX3ZhcmlhYmxlX2Zvcl9yZWFkaW5nKE9pZCB2YXJpZCkKK3sKKwlTVmFyaWFi bGUJc3ZhcjsKKwlWYXJpYWJsZQl2YXI7CisJYm9vbAkJZm91bmQ7CisKKwl2YXIub2lkID0gSW52 YWxpZE9pZDsKKworCWlmICghc2Vzc2lvbnZhcnMpCisJCWNyZWF0ZV9zZXNzaW9udmFyc19oYXNo dGFibGVzKCk7CisKKwkvKiBQcm90ZWN0IHVzZWQgc2Vzc2lvbiB2YXJpYWJsZSBhZ2FpbnN0IGRy b3AgdW50aWwgdHJhbnNhY3Rpb24gZW5kICovCisJTG9ja0RhdGFiYXNlT2JqZWN0KFZhcmlhYmxl UmVsYXRpb25JZCwgdmFyaWQsIDAsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKgorCSAqIE1ha2Ug c3VyZSB0aGF0IGFsbCBlbnRyaWVzIGluIHNlc3Npb252YXJzIGhhc2ggdGFibGUgYXJlIHZhbGlk LCBidXQKKwkgKiBrZWVwaW5nIHZhcmlhYmxlcyBkcm9wcGVkIGJ5IHRoZSBjdXJyZW50IHRyYW5z YWN0aW9uLgorCSAqLworCXN5bmNfc2Vzc2lvbnZhcnNfYWxsKHRydWUpOworCisJc3ZhciA9IChT VmFyaWFibGUpIGhhc2hfc2VhcmNoKHNlc3Npb252YXJzLCAmdmFyaWQsCisJCQkJCQkJCSAgIEhB U0hfRU5URVIsICZmb3VuZCk7CisKKwkvKiBSZXR1cm4gY29udGVudCBpZiBpdCBpcyBhdmFpbGFi bGUgYW5kIHZhbGlkICovCisJaWYgKCFmb3VuZCB8fCAhc3Zhci0+aXNfdmFsaWQpCisJeworCQkv KiBXZSBuZWVkIHRvIGxvYWQgZGVmZXhwci4gKi8KKwkJSW5pdFZhcmlhYmxlKCZ2YXIsIHZhcmlk LCBmYWxzZSk7CisKKwkJaWYgKCFmb3VuZCkKKwkJeworCQkJaW5pdF9zZXNzaW9uX3ZhcmlhYmxl KHN2YXIsICZ2YXIpOworCisJCQllbG9nKERFQlVHMSwgInNlc3Npb24gdmFyaWFibGUgXCIlcy4l c1wiIChvaWQ6JXUpIGhhcyBuZXcgZW50cnkgaW4gbWVtb3J5IChlbWl0dGVkIGJ5IFJFQUQpIiwK KwkJCQkgZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWVzcGFjZSh2 YXJpZCkpLAorCQkJCSBnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlkKSwKKwkJCQkgdmFy aWQpOworCQl9CisKKwkJLyoKKwkJICogUmFpc2UgYW4gZXJyb3IgaWYgdGhpcyBpcyBhIE5PVCBO VUxMIHZhcmlhYmxlIHdpdGhvdXQgZGVmYXVsdAorCQkgKiBleHByZXNzaW9uLgorCQkgKi8KKwkJ aWYgKHZhci5pc19ub3RfbnVsbCAmJiAhdmFyLmRlZmV4cHIpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAorCQkJCQkgZXJy bXNnKCJudWxsIHZhbHVlIGlzIG5vdCBhbGxvd2VkIGZvciBOT1QgTlVMTCBzZXNzaW9uIHZhcmlh YmxlIFwiJXMuJXNcIiIsCisJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9zZXNzaW9uX3Zh cmlhYmxlX25hbWVzcGFjZSh2YXJpZCkpLAorCQkJCQkJCWdldF9zZXNzaW9uX3ZhcmlhYmxlX25h bWUodmFyaWQpKSwKKwkJCQkJIGVycmRldGFpbCgiVGhlIHNlc3Npb24gdmFyaWFibGUgd2FzIG5v dCBpbml0aWFsaXplZCB5ZXQuIikpKTsKKworCQlpZiAoc3Zhci0+aGFzX2RlZmV4cHIpCisJCXsK KwkJCURhdHVtCQl2YWx1ZSA9IChEYXR1bSkgMDsKKwkJCWJvb2wJCWlzbnVsbDsKKwkJCUVTdGF0 ZQkgICAqZXN0YXRlID0gTlVMTDsKKwkJCUV4cHIJICAgKmRlZmV4cHI7CisJCQlFeHByU3RhdGUg ICpkZWZleHByczsKKwkJCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCisJCQkvKiBQcmVwYXJlIGRl ZmF1bHQgZXhwciAqLworCQkJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCisJCQlv bGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCisJ CQlkZWZleHByID0gZXhwcmVzc2lvbl9wbGFubmVyKChFeHByICopIHZhci5kZWZleHByKTsKKwkJ CWRlZmV4cHJzID0gRXhlY0luaXRFeHByKGRlZmV4cHIsIE5VTEwpOworCQkJdmFsdWUgPSBFeGVj RXZhbEV4cHJTd2l0Y2hDb250ZXh0KGRlZmV4cHJzLAorCQkJCQkJCQkJCQkgIEdldFBlclR1cGxl RXhwckNvbnRleHQoZXN0YXRlKSwKKwkJCQkJCQkJCQkJICAmaXNudWxsKTsKKworCQkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisKKwkJCS8qIFN0b3JlIHJlc3VsdCBiZWZvcmUgcmVs ZWFzaW5nIEV4ZWN1dG9yIG1lbW9yeSAqLworCQkJc2V0X3Nlc3Npb25fdmFyaWFibGUoc3Zhciwg dmFsdWUsIGlzbnVsbCwgdHJ1ZSk7CisKKwkJCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisJ CX0KKwkJZWxzZQorCQkJc2V0X3Nlc3Npb25fdmFyaWFibGUoc3ZhciwgKERhdHVtKSAwLCB0cnVl LCB0cnVlKTsKKwl9CisKKwkvKgorCSAqIEFsdGhvdWdoIHRoZSB2YWx1ZSBvZiBkb21haW4gdHlw ZSBzaG91bGQgYmUgdmFsaWQgKGl0IGlzIGNoZWNrZWQgd2hlbgorCSAqIGl0IGlzIGFzc2lnbmVk IHRvIHNlc3Npb24gdmFyaWFibGUpLCB3ZSBoYXZlIHRvIGNoZWNrIHJlbGF0ZWQKKwkgKiBjb25z dHJhaW50cyBlYWNoIHRpbWUgd2UgYWNjZXNzIHRoZSB2YXJpYWJsZS4gSXQgY2FuIGJlIG1vcmUg ZXhwZW5zaXZlCisJICogdGhhbiBpbiBQTC9wZ1NRTCwgYXMgUEwvcGdTUUwgZm9yY2VzIGRvbWFp biBjaGVja3Mgb25seSB3aGVuIHRoZSB2YWx1ZSBpcyBhc3NpZ25lZAorCSAqIHRvIHRoZSB2YXJp YWJsZSBvciB3aGVuIHRoZSB2YWx1ZSBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9uLgorCSAqIEhv d2V2ZXIsIGRvbWFpbiB0eXBlcyBoYXZlIGEgY29uc3RyYWludCBjYWNoZSBzbyBpdCdzIG5vdCB0 b28gbXVjaAorCSAqIGV4cGVuc2l2ZS4uCisJICovCisJaWYgKHN2YXItPmlzX2RvbWFpbikKKwl7 CisJCS8qCisJCSAqIFN0b3JlIGRvbWFpbl9jaGVjayBleHRyYSBpbiBUb3BUcmFuc2FjdGlvbkNv bnRleHQuIFdoZW4gd2UgYXJlIGluCisJCSAqIG90aGVyIHRyYW5zYWN0aW9uLCB0aGUgZG9tYWlu X2NoZWNrX2V4dHJhIGNhY2hlIGlzIG5vdCB2YWxpZAorCQkgKiBhbnltb3JlLgorCQkgKi8KKwkJ aWYgKHN2YXItPmRvbWFpbl9jaGVja19leHRyYV9seGlkICE9IE15UHJvYy0+bHhpZCkKKwkJCXN2 YXItPmRvbWFpbl9jaGVja19leHRyYSA9IE5VTEw7CisKKwkJZG9tYWluX2NoZWNrKHN2YXItPnZh bHVlLCBzdmFyLT5pc251bGwsCisJCQkJCSBzdmFyLT50eXBpZCwgJnN2YXItPmRvbWFpbl9jaGVj a19leHRyYSwKKwkJCQkJIFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CisKKwkJc3Zhci0+ZG9tYWlu X2NoZWNrX2V4dHJhX2x4aWQgPSBNeVByb2MtPmx4aWQ7CisJfQorCisJcmV0dXJuIHN2YXI7Cit9 CisKKy8qCisgKiBTdG9yZSB0aGUgZ2l2ZW4gdmFsdWUgaW4gYW4gU1ZhcmlhYmxlLCBhbmQgY2Fj aGUgaXQgaWYgbm90IGFscmVhZHkgcHJlc2VudC4KKyAqCisgKiBDYWxsZXIgaXMgcmVzcG9uc2li bGUgZm9yIGRvaW5nIHBlcm1pc3Npb24gY2hlY2tzLgorICoKKyAqIEFzIHNpZGUgZWZmZWN0IHRo aXMgZnVuY3Rpb24gYWNxdWlyZXMgQWNjZXNzU2hhcmVMb2NrIG9uCisgKiByZWxhdGVkIHNlc3Np b24gdmFyaWFibGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uCisgKi8KK3ZvaWQK K1NldFNlc3Npb25WYXJpYWJsZShPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCkK K3sKKwlTVmFyaWFibGUJc3ZhcjsKKwlib29sCQlmb3VuZDsKKworCWlmICghc2Vzc2lvbnZhcnMp CisJCWNyZWF0ZV9zZXNzaW9udmFyc19oYXNodGFibGVzKCk7CisKKwkvKiBQcm90ZWN0IHVzZWQg c2Vzc2lvbiB2YXJpYWJsZSBhZ2FpbnN0IGRyb3AgdW50aWwgdHJhbnNhY3Rpb24gZW5kICovCisJ TG9ja0RhdGFiYXNlT2JqZWN0KFZhcmlhYmxlUmVsYXRpb25JZCwgdmFyaWQsIDAsIEFjY2Vzc1No YXJlTG9jayk7CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB0aGF0IGFsbCBlbnRyaWVzIGluIHNlc3Np b252YXJzIGhhc2ggdGFibGUgYXJlIHZhbGlkLCBidXQKKwkgKiBrZWVwaW5nIHZhcmlhYmxlcyBk cm9wcGVkIGJ5IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLgorCSAqLworCXN5bmNfc2Vzc2lvbnZh cnNfYWxsKHRydWUpOworCisJc3ZhciA9IChTVmFyaWFibGUpIGhhc2hfc2VhcmNoKHNlc3Npb252 YXJzLCAmdmFyaWQsCisJCQkJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisKKwlpZiAoIWZv dW5kKQorCXsKKwkJVmFyaWFibGUJdmFyOworCisJCS8qIFdlIGRvbid0IG5lZWQgdG8ga25vdyBk ZWZleHByIGhlcmUgKi8KKwkJSW5pdFZhcmlhYmxlKCZ2YXIsIHZhcmlkLCB0cnVlKTsKKwkJaW5p dF9zZXNzaW9uX3ZhcmlhYmxlKHN2YXIsICZ2YXIpOworCisJCWVsb2coREVCVUcxLCAic2Vzc2lv biB2YXJpYWJsZSBcIiVzLiVzXCIgKG9pZDoldSkgaGFzIG5ldyBlbnRyeSBpbiBtZW1vcnkgKGVt aXR0ZWQgYnkgV1JJVEUpIiwKKwkJCSBnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3Nlc3Npb25fdmFy aWFibGVfbmFtZXNwYWNlKHN2YXItPnZhcmlkKSksCisJCQkgZ2V0X3Nlc3Npb25fdmFyaWFibGVf bmFtZShzdmFyLT52YXJpZCksCisJCQkgdmFyaWQpOworCX0KKworCS8qCisJICogVGhpcyBzaG91 bGQgZWl0aGVyIHN1Y2NlZWQgb3IgZmFpbCB3aXRob3V0IGNoYW5naW5nIHRoZSBjdXJyZW50bHkg c3RvcmVkCisJICogdmFsdWUuCisJICovCisJc2V0X3Nlc3Npb25fdmFyaWFibGUoc3ZhciwgdmFs dWUsIGlzTnVsbCwgZmFsc2UpOworfQorCisvKgorICogV3JhcHBlciBhcm91bmQgU2V0U2Vzc2lv blZhcmlhYmxlIGFmdGVyIGNoZWNraW5nIGZvciBjb3JyZWN0IHBlcm1pc3Npb24uCisgKi8KK3Zv aWQKK1NldFNlc3Npb25WYXJpYWJsZVdpdGhTZWN1cml0eUNoZWNrKE9pZCB2YXJpZCwgRGF0dW0g dmFsdWUsIGJvb2wgaXNOdWxsKQoreworCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisKKwkvKgorCSAq IElzIGNhbGxlciBhbGxvd2VkIHRvIHVwZGF0ZSB0aGUgc2Vzc2lvbiB2YXJpYWJsZT8KKwkgKi8K KwlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVmFyaWFibGVSZWxhdGlvbklkLCB2YXJpZCwg R2V0VXNlcklkKCksIEFDTF9VUERBVEUpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0sp CisJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBnZXRfc2Vzc2lv bl92YXJpYWJsZV9uYW1lKHZhcmlkKSk7CisKKwlTZXRTZXNzaW9uVmFyaWFibGUodmFyaWQsIHZh bHVlLCBpc051bGwpOworfQorCisvKgorICogUmV0dXJucyBhIGNvcHkgb2YgdGhlIHZhbHVlIG9m IHRoZSBzZXNzaW9uIHZhcmlhYmxlIHNwZWNpZmllZCBieSBpdHMgb2lkLgorICogQ2FsbGVyIGlz IHJlc3BvbnNpYmxlIGZvciBkb2luZyBwZXJtaXNzaW9uIGNoZWNrcy4KKyAqLworRGF0dW0KK0Nv cHlTZXNzaW9uVmFyaWFibGUoT2lkIHZhcmlkLCBib29sICppc051bGwsIE9pZCAqdHlwaWQpCit7 CisJU1ZhcmlhYmxlCXN2YXI7CisJRGF0dW0JCXJlc3VsdDsKKworCXN2YXIgPSBwcmVwYXJlX3Zh cmlhYmxlX2Zvcl9yZWFkaW5nKHZhcmlkKTsKKwlBc3NlcnQoc3ZhciAhPSBOVUxMICYmIHN2YXIt PmlzX3ZhbGlkKTsKKworCSp0eXBpZCA9IHN2YXItPnR5cGlkOworCisJLyogZm9yY2UgY29weSBv ZiBub24gTlVMTCB2YWx1ZSAqLworCWlmICghc3Zhci0+aXNudWxsKQorCXsKKwkJcmVzdWx0ID0g ZGF0dW1Db3B5KHN2YXItPnZhbHVlLCBzdmFyLT50eXBieXZhbCwgc3Zhci0+dHlwbGVuKTsKKwkJ KmlzTnVsbCA9IGZhbHNlOworCX0KKwllbHNlCisJeworCQlyZXN1bHQgPSAoRGF0dW0pIDA7CisJ CSppc051bGwgPSB0cnVlOworCX0KKworCXJldHVybiAoRGF0dW0pIHJlc3VsdDsKK30KKworLyoK KyAqIFJldHVybnMgYSBjb3B5IG9mIHRocyB2YWx1ZSBvZiB0aGUgc2Vzc2lvbiB2YXJpYWJsZSBz cGVjaWZpZWQgYnkgaXRzIG9pZAorICogd2l0aCBhIGNoZWNrIG9mIHRoZSBleHBlY3RlZCB0eXBl LiBMaWtlIHByZXZpb3VzIENvcHlTZXNzaW9uVmFyaWFibGUsIHRoZQorICogY2FsbGVyIGlzIHJl c3BvbnNpYmxlIGZvciBkb2luZyBwZXJtaXNzaW9uIGNoZWNrcy4KKyAqLworRGF0dW0KK0NvcHlT ZXNzaW9uVmFyaWFibGVXaXRoVHlwZUNoZWNrKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLCBPaWQg ZXhwZWN0ZWRfdHlwaWQpCit7CisJU1ZhcmlhYmxlCXN2YXI7CisJRGF0dW0JCXJlc3VsdDsKKwor CXN2YXIgPSBwcmVwYXJlX3ZhcmlhYmxlX2Zvcl9yZWFkaW5nKHZhcmlkKTsKKwlBc3NlcnQoc3Zh ciAhPSBOVUxMICYmIHN2YXItPmlzX3ZhbGlkKTsKKworCWlmIChleHBlY3RlZF90eXBpZCAhPSBz dmFyLT50eXBpZCkKKwkJZWxvZyhFUlJPUiwgInR5cGUgb2YgdmFyaWFibGUgXCIlcy4lc1wiIGlz IGRpZmZlcmVudCB0aGFuIGV4cGVjdGVkIiwKKwkJCSBnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3Nl c3Npb25fdmFyaWFibGVfbmFtZXNwYWNlKHZhcmlkKSksCisJCQkgZ2V0X3Nlc3Npb25fdmFyaWFi bGVfbmFtZSh2YXJpZCkpOworCisJaWYgKCFzdmFyLT5pc251bGwpCisJeworCQlyZXN1bHQgPSBk YXR1bUNvcHkoc3Zhci0+dmFsdWUsIHN2YXItPnR5cGJ5dmFsLCBzdmFyLT50eXBsZW4pOworCQkq aXNOdWxsID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCXJlc3VsdCA9IChEYXR1bSkgMDsKKwkJ KmlzTnVsbCA9IHRydWU7CisJfQorCisJcmV0dXJuIChEYXR1bSkgcmVzdWx0OworfQorCisvKgor ICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHNlc3Npb24gdmFyaWFibGUgc3BlY2lmaWVkIGJ5 IGl0cyBvaWQgIHdpdGggYSBjaGVjaworICogb2YgdGhlIGV4cGVjdGVkIHR5cGUuIExpa2UgQ29w eVNlc3Npb25WYXJpYWJsZSwgdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZQorICogZm9yIGRvaW5n IHBlcm1pc3Npb24gY2hlY2tzLgorICovCitEYXR1bQorR2V0U2Vzc2lvblZhcmlhYmxlV2l0aFR5 cGVDaGVjayhPaWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwgT2lkIGV4cGVjdGVkX3R5cGlkKQorewor CVNWYXJpYWJsZQlzdmFyOworCisJc3ZhciA9IHByZXBhcmVfdmFyaWFibGVfZm9yX3JlYWRpbmco dmFyaWQpOworCUFzc2VydChzdmFyICE9IE5VTEwgJiYgc3Zhci0+aXNfdmFsaWQpOworCisJcmV0 dXJuIENvcHlTZXNzaW9uVmFyaWFibGVXaXRoVHlwZUNoZWNrKHZhcmlkLCBpc051bGwsIGV4cGVj dGVkX3R5cGlkKTsKKworCWlmIChleHBlY3RlZF90eXBpZCAhPSBzdmFyLT50eXBpZCkKKwkJZWxv ZyhFUlJPUiwgInR5cGUgb2YgdmFyaWFibGUgXCIlcy4lc1wiIGlzIGRpZmZlcmVudCB0aGFuIGV4 cGVjdGVkIiwKKwkJCSBnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFt ZXNwYWNlKHZhcmlkKSksCisJCQkgZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZSh2YXJpZCkpOwor CisJKmlzTnVsbCA9IHN2YXItPmlzbnVsbDsKKworCXJldHVybiBzdmFyLT52YWx1ZTsKK30KKwor LyoKKyAqIERvIHRoZSBuZWNlc3Nhcnkgd29yayB0byBzZXR1cCBsb2NhbCBtZW1vcnkgbWFuYWdl bWVudCBvZiBhIG5ldworICogdmFyaWFibGUuCisgKgorICogQ2FsbGVyIHNob3VsZCBhbHJlYWR5 IGhhdmUgY3JlYXRlZCB0aGUgbmVjZXNzYXJ5IGVudHJ5IGluIGNhdGFsb2cKKyAqIGFuZCBtYWRl IHRoZW0gdmlzaWJsZS4KKyAqLwordm9pZAorU2Vzc2lvblZhcmlhYmxlQ3JlYXRlUG9zdHByb2Nl c3MoT2lkIHZhcmlkLCBjaGFyIGVveGFjdGlvbikKK3sKKwkvKgorCSAqIEZvciB0ZW1wb3Jhcnkg dmFyaWFibGVzLCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBlbmQgb2YgeGFjdCBhY3Rpb24gdG8K KwkgKiBlbnN1cmUgZGVsZXRpb24gZnJvbSBjYXRhbG9nLgorCSAqLworCWlmIChlb3hhY3Rpb24g PT0gVkFSSUFCTEVfRU9YX0RST1ApCisJeworCQlBc3NlcnQoaXNUZW1wTmFtZXNwYWNlKGdldF9z ZXNzaW9uX3ZhcmlhYmxlX25hbWVzcGFjZSh2YXJpZCkpKTsKKworCQlyZWdpc3Rlcl9zZXNzaW9u X3ZhcmlhYmxlX3hhY3RfYWN0aW9uKHZhcmlkLCBTVkFSX09OX0NPTU1JVF9EUk9QKTsKKwl9Cit9 CisKKy8qCisgKiBIYW5kbGUgdGhlIGxvY2FsIG1lbW9yeSBjbGVhbnVwIGZvciBhIERST1AgVkFS SUFCTEUgY29tbWFuZC4KKyAqCisgKiBDYWxsZXIgc2hvdWxkIHRha2UgY2FyZSBvZiByZW1vdmlu ZyB0aGUgcGdfdmFyaWFibGUgZW50cnkgZmlyc3QuCisgKi8KK3ZvaWQKK1Nlc3Npb25WYXJpYWJs ZURyb3BQb3N0cHJvY2VzcyhPaWQgdmFyaWQpCit7CisJLyoKKwkgKiBUaGUgZW50cnkgd2FzIHJl bW92ZWQgZnJvbSBjYXRhbG9nIGFscmVhZHksIHdlIG11c3Qgbm90IGRvIGl0CisJICogYWdhaW4g YXQgZW5kIG9mIHhhY3QgdGltZS4KKwkgKi8KKwl1bnJlZ2lzdGVyX3Nlc3Npb25fdmFyaWFibGVf eGFjdF9hY3Rpb24odmFyaWQsIFNWQVJfT05fQ09NTUlUX0RST1ApOworCisJaWYgKHNlc3Npb252 YXJzKQorCXsKKwkJYm9vbAkJZm91bmQ7CisJCVNWYXJpYWJsZQlzdmFyID0gKFNWYXJpYWJsZSkg aGFzaF9zZWFyY2goc2Vzc2lvbnZhcnMsICZ2YXJpZCwKKwkJCQkJCQkJCQkJCSAgIEhBU0hfRklO RCwgJmZvdW5kKTsKKworCQlpZiAoZm91bmQpCisJCXsKKwkJCS8qCisJCQkgKiBTYXZlIHRoZSBj dXJyZW50IHRvcCBsZXZlbCBsb2NhbCB0cmFuc2FjdGlvbiBpZCB0byBtYWtlIHN1cmUgd2UKKwkJ CSAqIGRvbid0IGF1dG9tYXRpY2FsbHkgcmVtb3ZlIHRoZSBsb2NhbCB2YXJpYWJsZSBzdG9yYWdl IGluCisJCQkgKiBzeW5jX3Nlc3Npb252YXJzX2FsbCwgYXMgdGhlIERST1AgVkFSSUFCTEUgd2ls bCBzZW5kIGFuCisJCQkgKiBpbnZhbGlkYXRpb24gbWVzc2FnZS4KKwkJCSAqLworCQkJQXNzZXJ0 KExvY2FsVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT5seGlkKSk7CisJCQlzdmFyLT5kcm9w X2x4aWQgPSBNeVByb2MtPmx4aWQ7CisKKwkJCS8qCisJCQkgKiBGb3IgdmFyaWFibGVzIHRoYXQg YXJlIG5vdCBPTiBUUkFOU0FDVElPTiBFTkQgUkVTRVQsIHdlIG5lZWQgdG8KKwkJCSAqIHJlZ2lz dGVyIGFuIFNWQVJfT05fQ09NTUlUX1JFU0VUIGFjdGlvbiB0byBmcmVlIHRoZSBsb2NhbAorCQkJ ICogbWVtb3J5IGZvciB0aGlzIHZhcmlhYmxlIHdoZW4gdGhlIHRvcCBsZXZlbCB0cmFuc2FjdGlv bgorCQkJICogaXMgY29tbWl0dGVkICh3ZSBkb24ndCBuZWVkIHRvIHdhaXQgZm9yIHNpbnZhbAor CQkJICogbWVzc2FnZSkuICBUaGUgY2xlYW51cCBhY3Rpb24gZm9yIG9uZSBzZXNzaW9uIHZhcmlh YmxlIGNhbiBiZQorCQkJICogZHVwbGljYXRlZCBpbiB0aGUgYWN0aW9uIGxpc3Qgd2l0aG91dCBj YXVzaW5nIGFueSBwcm9ibGVtLCBzbyB3ZQorCQkJICogZG9uJ3QgbmVlZCB0byBlbnN1cmUgdW5p cXVlbmVzcy4gIFdlIG5lZWQgYSBkaWZmZXJlbnQgYWN0aW9uCisJCQkgKiBmcm9tIFJFU0VULCBi ZWNhdXNlIFJFU0VUIGlzIGV4ZWN1dGVkIG9uIGFueSB0cmFuc2FjdGlvbiBlbmQsCisJCQkgKiBi dXQgd2Ugd2FudCB0byBleGVjdXRlIHRoaXMgY2xlYW51cCBvbmx5IHdoZW4gdGhlIGN1cnJlbnQK KwkJCSAqIHRyYW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0dGVkLiBUaGlzIGFjdGlvbiBjYW4gYmUg cmV2ZXJ0ZWQgYnkKKwkJCSAqIEFCT1JUIG9mIERST1AgVkFSSUFCTEUgY29tbWFuZC4KKwkJCSAq LworCQkJaWYgKCFzdmFyLT5lb3hfcmVzZXQpCisJCQkJcmVnaXN0ZXJfc2Vzc2lvbl92YXJpYWJs ZV94YWN0X2FjdGlvbih2YXJpZCwKKwkJCQkJCQkJCQkJCQkgIFNWQVJfT05fQ09NTUlUX1JFU0VU KTsKKwkJfQorCX0KK30KKworLyoKKyAqIEZhc3QgZHJvcCBvZiB0aGUgY29tcGxldGUgY29udGVu dCBvZiBhbGwgc2Vzc2lvbiB2YXJpYWJsZXMgaGFzaCB0YWJsZSwgYW5kCisgKiBjbGVhbnVwIG9m IGFueSBsaXN0IHRoYXQgd291bGRuJ3QgYmUgcmVsZXZhbnQgYW55bW9yZS4KKyAqIFRoaXMgaXMg dXNlZCBieSBESVNDQVJEIFZBUklBQkxFUyAoYW5kIERJU0NBUkQgQUxMKSBjb21tYW5kLgorICov Cit2b2lkCitSZXNldFNlc3Npb25WYXJpYWJsZXModm9pZCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsK KworCS8qIERlc3Ryb3kgaGFzaCB0YWJsZSBhbmQgcmVzZXQgcmVsYXRlZCBtZW1vcnkgY29udGV4 dCAqLworCWlmIChzZXNzaW9udmFycykKKwl7CisJCWhhc2hfZGVzdHJveShzZXNzaW9udmFycyk7 CisJCXNlc3Npb252YXJzID0gTlVMTDsKKwl9CisKKwkvKiBSZWxlYXNlIG1lbW9yeSBhbGxvY2F0 ZWQgYnkgc2Vzc2lvbiB2YXJpYWJsZXMgKi8KKwlpZiAoU1ZhcmlhYmxlTWVtb3J5Q29udGV4dCAh PSBOVUxMKQorCQlNZW1vcnlDb250ZXh0UmVzZXQoU1ZhcmlhYmxlTWVtb3J5Q29udGV4dCk7CisK KwkvKgorCSAqIFRoZXJlIGlzbid0IGFueSBzZXNzaW9uIHZhcmlhYmxlIGxlZnQsIGJ1dCB3ZSBz dGlsbCBuZWVkIHRvIHJldGFpbiB0aGUKKwkgKiBPTiBDT01NSVQgRFJPUCBhY3Rpb25zIGlmIGFu eS4KKwkgKi8KKwlmb3JlYWNoKGxjLCB4YWN0X29uX2NvbW1pdF9hY3Rpb25zKQorCXsKKwkJU1Zh cmlhYmxlWEFjdEFjdGlvbkl0ZW0gKnhhY3RfYWkgPQorCQkJKFNWYXJpYWJsZVhBY3RBY3Rpb25J dGVtICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHhhY3RfYWktPmFjdGlvbiA9PSBTVkFSX09OX0NP TU1JVF9EUk9QKQorCQkJY29udGludWU7CisKKwkJcGZyZWUoeGFjdF9haSk7CisJCXhhY3Rfb25f Y29tbWl0X2FjdGlvbnMgPSBmb3JlYWNoX2RlbGV0ZV9jdXJyZW50KHhhY3Rfb25fY29tbWl0X2Fj dGlvbnMsCisJCQkJCQkJCQkJCQkJICAgbGMpOworCX0KKworCS8qIFdlIHNob3VsZCBjbGVhbiB4 YWN0X3Jlc2V0X3ZhcmlkcyAqLworCWxpc3RfZnJlZSh4YWN0X3Jlc2V0X3Zhcmlkcyk7CisJeGFj dF9yZXNldF92YXJpZHMgPSBOSUw7CisKKwkvKgorCSAqIHhhY3RfcmVjaGVja192YXJpZHMgaXMg c3RvcmVkIGluIFNWYXJpYWJsZU1lbW9yeUNvbnRleHQsIHNvIGl0IGhhcworCSAqIGFscmVhZHkg YmVlbiBmcmVlZCwganVzdCByZXNldCB0aGUgbGlzdC4KKwkgKi8KKwl4YWN0X3JlY2hlY2tfdmFy aWRzID0gTklMOworfQorCisvKgorICogUGVyZm9ybSB0aGUgbmVjZXNzYXJ5IHdvcmsgZm9yIE9O IFRSQU5TQUNUSU9OIEVORCBSRVNFVCBhbmQgT04gQ09NTUlUIERST1AKKyAqIHNlc3Npb24gdmFy aWFibGVzLgorICogSWYgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCwgYWxzbyBwcm9jZXNz IHRoZSBkZWxheWVkIG1lbW9yeSBjbGVhbnVwIG9mCisgKiBsb2NhbCBEUk9QIFZBUklBQkxFIGFu ZCBwcm9jZXNzIGFsbCBwZW5kaW5nIHJlY2hlY2tzLgogICovCiB2b2lkCiBBdFByZUVPWGFjdF9T ZXNzaW9uVmFyaWFibGUoYm9vbCBpc0NvbW1pdCkKIHsKIAlMaXN0Q2VsbCAgICpsOwogCi0JZm9y ZWFjaChsLCB4YWN0X2Ryb3BfYWN0aW9ucykKKwkvKgorCSAqIENsZWFuIG1lbW9yeSBmb3IgYWxs IE9OIFRSQU5TQUNUSU9OIEVORCBSRVNFVCAgdmFyaWFibGVzLiBEbyBpdCBmaXJzdCwKKwkgKiBh cyBpdCByZWR1Y2VzIHRoZSBvdmVyaGVhZCBvZiB0aGUgUkVDSEVDSyBhY3Rpb24gbGlzdC4KKwkg Ki8KKwlmb3JlYWNoKGwsIHhhY3RfcmVzZXRfdmFyaWRzKQogCXsKLQkJU1ZhcmlhYmxlWEFjdEFj dGlvbkl0ZW0gKnhhY3RfYWkgPQotCQkoU1ZhcmlhYmxlWEFjdEFjdGlvbkl0ZW0gKikgbGZpcnN0 KGwpOworCQlyZW1vdmVfc2Vzc2lvbl92YXJpYWJsZV9ieV9pZChsZmlyc3Rfb2lkKGwpKTsKKwl9 CiAKLQkJLyogSXRlcmF0ZSBvbmx5IG92ZXIgZW50cmllcyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5n ICovCi0JCWlmICh4YWN0X2FpLT5kZWxldGluZ19zdWJpZCA9PSBJbnZhbGlkU3ViVHJhbnNhY3Rp b25JZCkKKwkvKiBXZSBjYW4gbm93IGNsZWFuIHhhY3RfcmVzZXRfdmFyaWRzICovCisJbGlzdF9m cmVlKHhhY3RfcmVzZXRfdmFyaWRzKTsKKwl4YWN0X3Jlc2V0X3ZhcmlkcyA9IE5JTDsKKworCWlm IChpc0NvbW1pdCAmJiB4YWN0X29uX2NvbW1pdF9hY3Rpb25zKQorCXsKKwkJZm9yZWFjaChsLCB4 YWN0X29uX2NvbW1pdF9hY3Rpb25zKQogCQl7CisJCQlTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSAq eGFjdF9haSA9CisJCQkJKFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtICopIGxmaXJzdChsKTsKKwor CQkJLyogSXRlcmF0ZSBvbmx5IG92ZXIgZW50cmllcyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nICov CisJCQlpZiAoeGFjdF9haS0+ZGVsZXRpbmdfc3ViaWQgIT0gSW52YWxpZFN1YlRyYW5zYWN0aW9u SWQpCisJCQkJY29udGludWU7CiAKIAkJCS8qCi0JCQkgKiBPTiBDT01NSVQgRFJPUCBpcyBhbGxv d2VkIG9ubHkgZm9yIHRlbXAgc2Vzc2lvbiB2YXJpYWJsZXMuIFNvCi0JCQkgKiB3ZSBzaG91bGQg ZXhwbGljaXRseSBkZWxldGUgb25seSB3aGVuIGN1cnJlbnQgdHJhbnNhY3Rpb24gd2FzCi0JCQkg KiBjb21taXR0ZWQuIFdoZW4gaXQncyByb2xsYmFjaywgdGhlbiBzZXNzaW9uIHZhcmlhYmxlIGlz IHJlbW92ZWQKLQkJCSAqIGF1dG9tYXRpY2FsbHkuCisJCQkgKiBPTiBDT01NSVQgRFJPUCBpcyBh bGxvd2VkIG9ubHkgZm9yIHRlbXAgc2Vzc2lvbiB2YXJpYWJsZXMuCisJCQkgKiBTbyB3ZSBzaG91 bGQgZXhwbGljaXRseSBkZWxldGUgb25seSB3aGVuIHRoZSBjdXJyZW50CisJCQkgKiB0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQuIFdoZW4gaXQncyByb2xsYmFja2VkLCB0aGUgc2Vzc2lvbgorCQkJ ICogdmFyaWFibGUgaXMgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5LgogCQkJICovCi0JCQlpZiAoaXND b21taXQpCisJCQlpZiAoeGFjdF9haS0+YWN0aW9uID09IFNWQVJfT05fQ09NTUlUX0RST1ApCiAJ CQl7CiAJCQkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CiAKQEAgLTE5MSwxMCArMTE0OCwzMCBAQCBB dFByZUVPWGFjdF9TZXNzaW9uVmFyaWFibGUoYm9vbCBpc0NvbW1pdCkKIAkJCQllbG9nKERFQlVH MSwgInNlc3Npb24gdmFyaWFibGUgKG9pZDoldSkgd2lsbCBiZSBkZWxldGVkIChmb3JjZWQgYnkg U1ZBUl9PTl9DT01NSVRfRFJPUCBhY3Rpb24pIiwKIAkJCQkJIHhhY3RfYWktPnZhcmlkKTsKIAor CQkJCS8qCisJCQkJICogSWYgdGhlIHZhcmlhYmxlIHdhcyBsb2NhbGx5IHNldCwgdGhlIG1lbW9y eSB3aWxsIGJlCisJCQkJICogYXV0b21hdGljYWxseSBjbGVhbmVkIHVwIHdoZW4gd2UgcHJvY2Vz cyB0aGUgdW5kZXJseWluZworCQkJCSAqIHNoYXJlZCBpbnZhbGlkYXRpb24gZm9yIHRoaXMgZHJv cC4gIFRoZXJlIGNhbid0IGJlIGEgcmVjaGVjaworCQkJCSAqIGFjdGlvbiBmb3IgdGhpcyB2YXJp YWJsZSwgc28gdGhlcmUncyBub3RoaW5nIHRvIGdhaW4KKwkJCQkgKiBleHBsaWNpdGx5IHJlbW92 aW5nIGl0IGhlcmUuCisJCQkJICovCiAJCQkJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1Bf Q0FTQ0FERSwKIAkJCQkJCQkJUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCB8CiAJCQkJCQkJCVBF UkZPUk1fREVMRVRJT05fUVVJRVRMWSk7CiAJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJ CQkgKiBXaGVuIHdlIHByb2Nlc3MgRFJPUCBWQVJJQUJMRSBzdGF0ZW1lbnQgaXNzdWVkIGJ5IHRo ZQorCQkJCSAqIGN1cnJlbnQgdHJhbnNhY3Rpb24sIHdlIGNyZWF0ZSBhbiBTVkFSX09OX0NPTU1J VF9SRVNFVCB4YWN0CisJCQkJICogYWN0aW9uLiBXZSB3YW50IHRvIHByb2Nlc3MgdGhpcyBhY3Rp b24gb25seSB3aGVuIHJlbGF0ZWQKKwkJCQkgKiB0cmFuc2FjdGlvbiBpcyBjb21taXRlZCAod2hl biBEUk9QIFZBUklBQkxFIHN0YXRlbWVudAorCQkJCSAqIHN1Y2Vzc2Z1bGx5IHByb2Nlc3NlZCkg YXMgd2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgdmFyaWFibGUKKwkJCQkgKiBjb250ZW50IGlmIHRo ZSB0cmFuc2FjdGlvbiB0aGF0IGlzc3VlZCB0aGUgRFJPUCBWQVJBSUJMRQorCQkJCSAqIHN0YXRl bWVudCBpcyByb2xsYmFja2VkLgorCQkJCSAqLworCQkJCXJlbW92ZV9zZXNzaW9uX3ZhcmlhYmxl X2J5X2lkKHhhY3RfYWktPnZhcmlkKTsKKwkJCX0KIAkJfQogCX0KIApAQCAtMjAyLDEyICsxMTc5 LDI2IEBAIEF0UHJlRU9YYWN0X1Nlc3Npb25WYXJpYWJsZShib29sIGlzQ29tbWl0KQogCSAqIEFu eSBkcm9wIGFjdGlvbiBsZWZ0IGlzIGFuIGVudHJ5IHRoYXQgd2FzIHVucmVnaXN0ZXJlZCBhbmQg bm90CiAJICogcm9sbGJhY2tlZCwgc28gd2UgY2FuIHNpbXBseSByZW1vdmUgdGhlbS4KIAkgKi8K LQlsaXN0X2ZyZWVfZGVlcCh4YWN0X2Ryb3BfYWN0aW9ucyk7Ci0JeGFjdF9kcm9wX2FjdGlvbnMg PSBOSUw7CisJbGlzdF9mcmVlX2RlZXAoeGFjdF9vbl9jb21taXRfYWN0aW9ucyk7CisJeGFjdF9v bl9jb21taXRfYWN0aW9ucyA9IE5JTDsKKworCS8qCisJICogV2UgcHJvY2VzcyB0aGUgbGlzdCBv ZiByZWNoZWNrIGxhc3QgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbix0aGUgcHJldmlvdXMKKwkgKiBz dGVwcyBtaWdodCByZW1vdmUgZW50cmllcyBmcm9tIHRoZSBoYXNoIHRhYmxlLgorCSAqIFdlIG5l ZWQgY2F0YWxvZyBhY2Nlc3MgdG8gcHJvY2VzcyB0aGUgcmVjaGVjaywgc28gdGhpcyBjYW4gb25s eSBiZSBkb25lCisJICogaWYgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gIE90aGVyd2lz ZSwgd2UganVzdCBrZWVwIHRoZSByZWNoZWNrCisJICogbGlzdCBhcy1pcyBhbmQgaXQgd2lsbCBi ZSBwcm9jZXNzZWQgYXQgdGhlIG5leHQgKGNvbW1pdHRlZCkgdHJhbnNhY3Rpb24uCisJICovCisJ aWYgKGlzQ29tbWl0ICYmIHhhY3RfcmVjaGVja192YXJpZHMpCisJeworCQlBc3NlcnQoc2Vzc2lv bnZhcnMpOworCisJCXN5bmNfc2Vzc2lvbnZhcnNfYWxsKGZhbHNlKTsKKwl9CiB9CiAKIC8qCi0g KiBQb3N0LXN1YmNvbW1pdCBvciBwb3N0LXN1YmFib3J0IGNsZWFudXAgb2YgeGFjdCBhY3Rpb24g bGlzdC4KKyAqIFBvc3Qtc3ViY29tbWl0IG9yIHBvc3Qtc3ViYWJvcnQgY2xlYW51cCBvZiB4YWN0 X29uX2NvbW1pdF9hY3Rpb25zIGxpc3QuCiAgKgogICogRHVyaW5nIHN1YmFib3J0LCB3ZSBjYW4g aW1tZWRpYXRlbHkgcmVtb3ZlIGVudHJpZXMgY3JlYXRlZCBkdXJpbmcgdGhpcwogICogc3VidHJh bnNhY3Rpb24uIER1cmluZyBzdWJjb21taXQsIGp1c3QgdHJhbnNmZXIgZW50cmllcyBtYXJrZWQg ZHVyaW5nCkBAIC0yMjAsMjQgKzEyMTEsMTMwIEBAIEF0RU9TdWJYYWN0X1Nlc3Npb25WYXJpYWJs ZShib29sIGlzQ29tbWl0LAogewogCUxpc3RDZWxsICAgKmN1cl9pdGVtOwogCi0JZm9yZWFjaChj dXJfaXRlbSwgeGFjdF9kcm9wX2FjdGlvbnMpCisJZm9yZWFjaChjdXJfaXRlbSwgeGFjdF9vbl9j b21taXRfYWN0aW9ucykKIAl7CiAJCVNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtICp4YWN0X2FpID0K IAkJKFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtICopIGxmaXJzdChjdXJfaXRlbSk7CiAKKwkJLyoK KwkJICogVGhlIHN1YnRyYW5zYWN0aW9uIHRoYXQgY3JlYXRlZCB0aGlzIGVudHJ5IHdhcyByb2xs YmFja2VkLCB3ZSBjYW4KKwkJICogcmVtb3ZlIGl0LgorCQkgKi8KIAkJaWYgKCFpc0NvbW1pdCAm JiB4YWN0X2FpLT5jcmVhdGluZ19zdWJpZCA9PSBteVN1YmlkKQogCQl7CiAJCQkvKiBjdXJfaXRl bSBtdXN0IGJlIHJlbW92ZWQgKi8KLQkJCXhhY3RfZHJvcF9hY3Rpb25zID0gZm9yZWFjaF9kZWxl dGVfY3VycmVudCh4YWN0X2Ryb3BfYWN0aW9ucywgY3VyX2l0ZW0pOworCQkJeGFjdF9vbl9jb21t aXRfYWN0aW9ucyA9IGZvcmVhY2hfZGVsZXRlX2N1cnJlbnQoeGFjdF9vbl9jb21taXRfYWN0aW9u cywgY3VyX2l0ZW0pOwogCQkJcGZyZWUoeGFjdF9haSk7CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQkv KiBjdXJfaXRlbSBtdXN0IGJlIHByZXNlcnZlZCAqLworCQkJLyogT3RoZXJ3aXNlIGN1cl9pdGVt IG11c3QgYmUgcHJlc2VydmVkICovCiAJCQlpZiAoeGFjdF9haS0+Y3JlYXRpbmdfc3ViaWQgPT0g bXlTdWJpZCkKIAkJCQl4YWN0X2FpLT5jcmVhdGluZ19zdWJpZCA9IHBhcmVudFN1YmlkOwogCQkJ aWYgKHhhY3RfYWktPmRlbGV0aW5nX3N1YmlkID09IG15U3ViaWQpCi0JCQkJeGFjdF9haS0+ZGVs ZXRpbmdfc3ViaWQgPSBpc0NvbW1pdCA/IHBhcmVudFN1YmlkIDogSW52YWxpZFN1YlRyYW5zYWN0 aW9uSWQ7CisJCQkJeGFjdF9haS0+ZGVsZXRpbmdfc3ViaWQgPSBpc0NvbW1pdCA/IHBhcmVudFN1 YmlkCisJCQkJCQkJCQkJCQkgICA6IEludmFsaWRTdWJUcmFuc2FjdGlvbklkOworCQl9CisJfQor fQorCisvKgorICogcGdfc2Vzc2lvbl92YXJpYWJsZXMgLSBkZXNpZ25lZCBmb3IgdGVzdGluZwor ICoKKyAqIFRoaXMgaXMgYSBmdW5jdGlvbiBkZXNpZ25lZCBmb3IgdGVzdGluZyBhbmQgZGVidWdn aW5nLiAgSXQgcmV0dXJucyB0aGUKKyAqIGNvbnRlbnQgb2Ygc2Vzc2lvbnZhcnMgYXMtaXMsIGFu ZCBjYW4gdGhlcmVmb3JlIGRpc3BsYXkgZW50cmllcyBhYm91dAorICogc2Vzc2lvbiB2YXJpYWJs ZXMgdGhhdCB3ZXJlIGRyb3BwZWQgYnV0IGZvciB3aGljaCB0aGlzIGJhY2tlbmQgZGlkbid0Cisg KiBwcm9jZXNzIHRoZSBzaGFyZWQgaW52YWxpZGF0aW9ucyB5ZXQuCisgKi8KK0RhdHVtCitwZ19z ZXNzaW9uX3ZhcmlhYmxlcyhQR19GVU5DVElPTl9BUkdTKQoreworI2RlZmluZSBOVU1fUEdfU0VT U0lPTl9WQVJJQUJMRVNfQVRUUyAxMAorCisJZWxvZyhERUJVRzEsICJwZ19zZXNzaW9uX3Zhcmlh YmxlcyBzdGFydCIpOworCisJSW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOworCisJaWYg KHNlc3Npb252YXJzKQorCXsKKwkJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldElu Zm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOworCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCQlT VmFyaWFibGUJc3ZhcjsKKworCQkvKgorCQkgKiBNYWtlIHN1cmUgdGhhdCBhbGwgZW50cmllcyBp biBzZXNzaW9udmFycyBoYXNoIHRhYmxlIGFyZSB2YWxpZCwgYnV0CisJCSAqIGtlZXBpbmcgdmFy aWFibGVzIGRyb3BwZWQgYnkgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uCisJCSAqLworCQlzeW5j X3Nlc3Npb252YXJzX2FsbCh0cnVlKTsKKworCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHNlc3Np b252YXJzKTsKKworCQl3aGlsZSAoKHN2YXIgPSAoU1ZhcmlhYmxlKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJCXsKKwkJCURhdHVtCQl2YWx1ZXNbTlVNX1BHX1NFU1NJT05f VkFSSUFCTEVTX0FUVFNdOworCQkJYm9vbAkJbnVsbHNbTlVNX1BHX1NFU1NJT05fVkFSSUFCTEVT X0FUVFNdOworCQkJSGVhcFR1cGxlCXRwOworCisJCQltZW1zZXQodmFsdWVzLCAwLCBzaXplb2Yo dmFsdWVzKSk7CisJCQltZW1zZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOworCisJCQl2YWx1 ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHN2YXItPnZhcmlkKTsKKwkJCXZhbHVlc1szXSA9IE9i amVjdElkR2V0RGF0dW0oc3Zhci0+dHlwaWQpOworCisJCQkvKiBjaGVjayBpZiBzZXNzaW9uIHZh cmlhYmxlIGlzIHZpc2libGUgaW4gc3lzdGVtIGNhdGFsb2cgKi8KKwkJCXRwID0gU2VhcmNoU3lz Q2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHN2YXItPnZhcmlkKSk7CisKKwkJ CS8qCisJCQkgKiBTZXNzaW9udmFycyBjYW4gaG9sZCBkYXRhIG9mIHZhcmlhYmxlcyByZW1vdmVk IGZyb20gY2F0YWxvZywKKwkJCSAqIChhbmQgbm90IHB1cmdlZCkgYW5kIHRoZW4gbmFtZXNwYWNl bmFtZSBhbmQgbmFtZSBjYW5ub3QgYmUgcmVhZAorCQkJICogZnJvbSBjYXRhbG9nLgorCQkJICov CisJCQlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCQl7CisJCQkJRm9ybV9wZ192YXJpYWJs ZSB2YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0cCk7CisKKwkJCQkvKiBX aGVuIHdlIHNlZSBkYXRhIGluIGNhdGFsb2cgKi8KKwkJCQl2YWx1ZXNbMV0gPSBDU3RyaW5nR2V0 VGV4dERhdHVtKAorCQkJCQkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKHZhcmZvcm0tPnZhcm5h bWVzcGFjZSkpOworCisJCQkJdmFsdWVzWzJdID0gQ1N0cmluZ0dldFRleHREYXR1bShOYW1lU3Ry KHZhcmZvcm0tPnZhcm5hbWUpKTsKKworCQkJCXZhbHVlc1s0XSA9IENTdHJpbmdHZXRUZXh0RGF0 dW0oZm9ybWF0X3R5cGVfYmUoc3Zhci0+dHlwaWQpKTsKKwkJCQl2YWx1ZXNbNV0gPSBCb29sR2V0 RGF0dW0oZmFsc2UpOworCQkJCXZhbHVlc1s2XSA9IEJvb2xHZXREYXR1bShzdmFyLT5pc192YWxp ZCk7CisKKwkJCQl2YWx1ZXNbOF0gPSBCb29sR2V0RGF0dW0oCisJCQkJCQkJCQkJIG9iamVjdF9h Y2xjaGVjayhWYXJpYWJsZVJlbGF0aW9uSWQsIHN2YXItPnZhcmlkLAorCQkJCQkJCQkJCQkJCQkg R2V0VXNlcklkKCksIEFDTF9TRUxFQ1QpID09IEFDTENIRUNLX09LKTsKKworCQkJCXZhbHVlc1s5 XSA9IEJvb2xHZXREYXR1bSgKKwkJCQkJCQkJCQkgb2JqZWN0X2FjbGNoZWNrKFZhcmlhYmxlUmVs YXRpb25JZCwgc3Zhci0+dmFyaWQsCisJCQkJCQkJCQkJCQkJCSBHZXRVc2VySWQoKSwgQUNMX1VQ REFURSkgPT0gQUNMQ0hFQ0tfT0spOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJCX0K KwkJCWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFdoZW4gc2Vzc2lvbiB2YXJpYWJsZSB3YXMg cmVtb3ZlZCBmcm9tIGNhdGFsb2csIGJ1dCB3ZQorCQkJCSAqIGhhdmVuJ3QgcHJvY2Vzc2VkIHRo ZSBpbnZsaWRhdGlvbiB5ZXQuCisJCQkJICovCisJCQkJbnVsbHNbMV0gPSB0cnVlOworCQkJCXZh bHVlc1syXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oCisJCQkJCQkJCQkJCQlEYXR1bUdldENTdHJp bmcoRGlyZWN0RnVuY3Rpb25DYWxsMShvaWRvdXQsIHN2YXItPnZhcmlkKSkpOworCQkJCXZhbHVl c1s0XSA9IFBvaW50ZXJHZXREYXR1bSgKKwkJCQkJCQkJCQkJY3N0cmluZ190b190ZXh0KGZvcm1h dF90eXBlX2JlKHN2YXItPnR5cGlkKSkpOworCQkJCXZhbHVlc1s1XSA9IEJvb2xHZXREYXR1bSh0 cnVlKTsKKwkJCQl2YWx1ZXNbNl0gPSBCb29sR2V0RGF0dW0oc3Zhci0+aXNfdmFsaWQpOworCQkJ CW51bGxzWzddID0gdHJ1ZTsKKwkJCQludWxsc1s4XSA9IHRydWU7CisJCQl9CisKKwkJCXR1cGxl c3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8tPnNldERlc2MsIHZhbHVl cywgbnVsbHMpOwogCQl9CiAJfQorCisJZWxvZyhERUJVRzEsICJwZ19zZXNzaW9uX3ZhcmlhYmxl cyBlbmQiKTsKKworCXJldHVybiAoRGF0dW0pIDA7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpp bmRleCA4MTQyOWI5ZjA1Li5lOWIyM2JlNTk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjRXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAg LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFjY2Vzcy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2lu Y2x1ZGUgImNvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJleGVjdXRvci9l eGVjRXhwci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCiAjaW5jbHVkZSAi ZnVuY2FwaS5oIgpAQCAtOTk1LDYgKzk5Niw4MSBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9k ZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJhbXR5cGUgPSBw YXJhbS0+cGFyYW10eXBlOwogCQkJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gp OwogCQkJCQkJYnJlYWs7CisKKwkJCQkJY2FzZSBQQVJBTV9WQVJJQUJMRToKKwkJCQkJCXsKKwkJ CQkJCQlpbnQJCQllc19udW1fc2Vzc2lvbl92YXJpYWJsZXMgPSAwOworCQkJCQkJCVNlc3Npb25W YXJpYWJsZVZhbHVlICplc19zZXNzaW9uX3ZhcmlhYmxlcyA9IE5VTEw7CisKKwkJCQkJCQlpZiAo c3RhdGUtPnBhcmVudCAmJiBzdGF0ZS0+cGFyZW50LT5zdGF0ZSkKKwkJCQkJCQl7CisJCQkJCQkJ CWVzX3Nlc3Npb25fdmFyaWFibGVzID0gc3RhdGUtPnBhcmVudC0+c3RhdGUtPmVzX3Nlc3Npb25f dmFyaWFibGVzOworCQkJCQkJCQllc19udW1fc2Vzc2lvbl92YXJpYWJsZXMgPSBzdGF0ZS0+cGFy ZW50LT5zdGF0ZS0+ZXNfbnVtX3Nlc3Npb25fdmFyaWFibGVzOworCQkJCQkJCX0KKworCQkJCQkJ CWlmIChlc19zZXNzaW9uX3ZhcmlhYmxlcykKKwkJCQkJCQl7CisJCQkJCQkJCVNlc3Npb25WYXJp YWJsZVZhbHVlICp2YXI7CisKKwkJCQkJCQkJLyoKKwkJCQkJCQkJICogVXNlIGJ1ZmZlcmVkIHNl c3Npb24gdmFyaWFibGVzIHdoZW4gdGhlCisJCQkJCQkJCSAqIGJ1ZmZlciB3aXRoIGNvcGllZCB2 YWx1ZXMgaXMgYXZhaWFibGUKKwkJCQkJCQkJICogKHN0YW5kYXJkIHF1ZXJ5IGV4ZWN1dG9yIG1v ZGUpCisJCQkJCQkJCSAqLworCisJCQkJCQkJCS8qIFBhcmFtZXRlciBzYW5pdHkgY2hlY2tzLiAq LworCQkJCQkJCQlpZiAocGFyYW0tPnBhcmFtaWQgPj0gZXNfbnVtX3Nlc3Npb25fdmFyaWFibGVz KQorCQkJCQkJCQkJZWxvZyhFUlJPUiwgInBhcmFtaWQgb2YgUEFSQU1fVkFSSUFCTEUgcGFyYW0g aXMgb3V0IG9mIHJhbmdlIik7CisKKwkJCQkJCQkJdmFyID0gJmVzX3Nlc3Npb25fdmFyaWFibGVz W3BhcmFtLT5wYXJhbWlkXTsKKworCQkJCQkJCQlpZiAodmFyLT50eXBpZCAhPSBwYXJhbS0+cGFy YW10eXBlKQorCQkJCQkJCQkJZWxvZyhFUlJPUiwgInR5cGUgb2YgYnVmZmVyZWQgdmFsdWUgaXMg ZGlmZmVyZW50IHRoYW4gUEFSQU1fVkFSSUFCTEUgdHlwZSIpOworCisJCQkJCQkJCS8qCisJCQkJ CQkJCSAqIEluIHRoaXMgY2FzZSwgcGFzcyB0aGUgdmFsdWUgbGlrZQorCQkJCQkJCQkgKiBhIGNv bnN0YW50LgorCQkJCQkJCQkgKi8KKwkJCQkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0NPTlNU OworCQkJCQkJCQlzY3JhdGNoLmQuY29uc3R2YWwudmFsdWUgPSB2YXItPnZhbHVlOworCQkJCQkJ CQlzY3JhdGNoLmQuY29uc3R2YWwuaXNudWxsID0gdmFyLT5pc251bGw7CisJCQkJCQkJCUV4cHJF dmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKwkJCQkJCQl9CisJCQkJCQkJZWxzZQorCQkJ CQkJCXsKKwkJCQkJCQkJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKwkJCQkJCQkJT2lkCQkJdmFyaWQg PSBwYXJhbS0+cGFyYW12YXJpZDsKKwkJCQkJCQkJT2lkCQkJdmFydHlwZSA9IHBhcmFtLT5wYXJh bXR5cGU7CisKKwkJCQkJCQkJLyoKKwkJCQkJCQkJICogV2hlbiB0aGUgZXhwcmVzc2lvbiBpcyBl dmFsdWF0ZWQgZGlyZWN0bHkKKwkJCQkJCQkJICogd2l0aG91dCBxdWVyeSBleGVjdXRvciBzdGFy dCAocGxwZ3NxbCBzaW1wbGUKKwkJCQkJCQkJICogZXhwciBldmFsdWF0aW9uKSwgdGhlbiB0aGUg YXJyYXkgZXNfc2Vzc2lvbl92YXJpYWJsZXMKKwkJCQkJCQkJICogaXMgbnVsbC4gSW4gdGhpcyBj YXNlIHdlIG5lZWQgdG8gdXNlIGRpcmVjdAorCQkJCQkJCQkgKiBhY2Nlc3MgdG8gc2Vzc2lvbiB2 YXJpYWJsZXMuIFRoZSB2YWx1ZXMgYXJlCisJCQkJCQkJCSAqIG5vdCBwcm90ZWN0ZWQgYnkgdXNp bmcgY29weSwgYnV0IGl0IGlzIG5vdAorCQkJCQkJCQkgKiBwcm9ibGVtICh3ZSBkb24ndCBuZWVk IHRvIGVtdWxhdGUgc3RhYmlsaXR5CisJCQkJCQkJCSAqIG9mIHRoZSB2YWx1ZSkuCisJCQkJCQkJ CSAqCisJCQkJCQkJCSAqIEluIHRoaXMgY2FzZSB3ZSBzaG91bGQgdG8gZG8gYWNsY2hlY2ssIGJl Y2F1c2UKKwkJCQkJCQkJICogdXN1YWwgYWNsY2hlY2sgZnJvbSBzdGFuZGFyZF9FeGVjdXRvclN0 YXJ0CisJCQkJCQkJCSAqIGlzIG5vdCBleGVjdXRlZCBpbiB0aGlzIGNhc2UuIEZvcnR1bmF0ZWx5 CisJCQkJCQkJCSAqIGl0IGlzIGp1c3Qgb25jZSBwZXIgdHJhbnNhY3Rpb24uCisJCQkJCQkJCSAq LworCQkJCQkJCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVmFyaWFibGVSZWxhdGlvbklk LCB2YXJpZCwKKwkJCQkJCQkJCQkJCQkJCUdldFVzZXJJZCgpLCBBQ0xfU0VMRUNUKTsKKwkJCQkJ CQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCQkJCQkJCWFjbGNoZWNrX2Vycm9y KGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLAorCQkJCQkJCQkJCQkJICAgZ2V0X3Nlc3Npb25f dmFyaWFibGVfbmFtZSh2YXJpZCkpOworCisJCQkJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9Q QVJBTV9WQVJJQUJMRTsKKwkJCQkJCQkJc2NyYXRjaC5kLnZwYXJhbS52YXJpZCA9IHZhcmlkOwor CQkJCQkJCQlzY3JhdGNoLmQudnBhcmFtLnZhcnR5cGUgPSB2YXJ0eXBlOworCQkJCQkJCQlFeHBy RXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQkJ YnJlYWs7CisKIAkJCQkJY2FzZSBQQVJBTV9FWFRFUk46CiAKIAkJCQkJCS8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCAxZGFiMjc4N2I3Li5kM2YwNDQ5NjJjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNs dWRlICJhY2Nlc3MvaGVhcHRvYXN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXNzaW9u X3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJl eGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTQ0Niw2ICs0 NDcsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNv bnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfUEFSQU1fRVhFQywKIAkJJiZDQVNF X0VFT1BfUEFSQU1fRVhURVJOLAogCQkmJkNBU0VfRUVPUF9QQVJBTV9DQUxMQkFDSywKKwkJJiZD QVNFX0VFT1BfUEFSQU1fVkFSSUFCTEUsCiAJCSYmQ0FTRV9FRU9QX0NBU0VfVEVTVFZBTCwKIAkJ JiZDQVNFX0VFT1BfTUFLRV9SRUFET05MWSwKIAkJJiZDQVNFX0VFT1BfSU9DT0VSQ0UsCkBAIC0x MDgxLDYgKzEwODMsMjEgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNv bnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJ RUVPX0NBU0UoRUVPUF9QQVJBTV9WQVJJQUJMRSkKKwkJeworCQkJLyoKKwkJCSAqIGRpcmVjdCBh Y2Nlc3MgdG8gc2Vzc2lvbiB2YXJpYWJsZSAod2l0aG91dCBidWZmZXJpbmcpLgorCQkJICogQmVj YXVzZSByZXR1cm5lZCB2YWx1ZSBjYW4gYmUgdXNlZCAod2l0aG91dCBhbiBhc3NpZ25lbWVudCkK KwkJCSAqIGFmdGVyIHRoZSByZWZlcmVuY2VkIHNlc3Npb24gdmFyaWFibGVzIGlzIHVwZGF0ZWQs IHdlIGhhdmUKKwkJCSAqIHRvIHJldHVybiBjb3B5IG9mIHN0b3JlZCB2YWx1ZSBldmVyeSB0aW1l LiBUaGlzIGlzIG5vdCBhbgorCQkJICogaXNzdWUgZm9yIGxvY2FsIChwbHBnc3FsKSB2YXJpYWJs ZXMuCisJCQkgKi8KKwkJCSpvcC0+cmVzdmFsdWUgPSBDb3B5U2Vzc2lvblZhcmlhYmxlV2l0aFR5 cGVDaGVjayhvcC0+ZC52cGFyYW0udmFyaWQsCisJCQkJCQkJCQkJCQkJCQkgb3AtPnJlc251bGws CisJCQkJCQkJCQkJCQkJCQkgb3AtPmQudnBhcmFtLnZhcnR5cGUpOworCQkJRUVPX05FWFQoKTsK KwkJfQorCiAJCUVFT19DQVNFKEVFT1BfQ0FTRV9URVNUVkFMKQogCQl7CiAJCQkvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKaW5kZXggMTJmZjRmM2RlNS4uZGRhZWNlMDE4YyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL21hdHZpZXcuaCIKICNpbmNsdWRlICJjb21t YW5kcy90cmlnZ2VyLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZWJ1Zy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVT dWJwbGFuLmgiCiAjaW5jbHVkZSAiZm9yZWlnbi9mZHdhcGkuaCIKQEAgLTIwMCw2ICsyMDEsNjMg QEAgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFn cykKIAlBc3NlcnQocXVlcnlEZXNjLT5zb3VyY2VUZXh0ICE9IE5VTEwpOwogCWVzdGF0ZS0+ZXNf c291cmNlVGV4dCA9IHF1ZXJ5RGVzYy0+c291cmNlVGV4dDsKIAorCS8qCisJICogVGhlIGV4ZWN1 dG9yIGRvZXNuJ3Qgd29yayB3aXRoIHNlc3Npb24gdmFyaWFibGVzIGRpcmVjdGx5LiBWYWx1ZXMg b2YKKwkgKiByZWxhdGVkIHNlc3Npb24gdmFyaWFibGVzIGFyZSBjb3BpZWQgdG8gZGVkaWNhdGVk IGFycmF5LCBhbmQgdGhpcyBhcnJheQorCSAqIGlzIHBhc3NlZCB0byBleGVjdXRvci4KKwkgKi8K KwlpZiAocXVlcnlEZXNjLT5udW1fc2Vzc2lvbl92YXJpYWJsZXMgPiAwKQorCXsKKwkJLyoKKwkJ ICogV2hlbiBhIHBhcmFsbGVsIHF1ZXJ5IG5lZWRzIHRvIGFjY2VzcyBxdWVyeSBwYXJhbWV0ZXJz IChpbmNsdWRpbmcKKwkJICogcmVsYXRlZCBzZXNzaW9uIHZhcmlhYmxlcyksIHRoZW4gcmVsYXRl ZCBzZXNzaW9uIHZhcmlhYmxlcyBhcmUKKwkJICogcmVzdG9yZWQgKGRlc2VyaWFsaXplZCkgaW4g cXVlcnlEZXNjIGFscmVhZHkuIFNvIGp1c3QgcHVzaCBwb2ludGVyCisJCSAqIG9mIHRoaXMgYXJy YXkgdG8gZXhlY3V0b3IncyBlc3RhdGUuCisJCSAqLworCQlBc3NlcnQoSXNQYXJhbGxlbFdvcmtl cigpKTsKKwkJZXN0YXRlLT5lc19zZXNzaW9uX3ZhcmlhYmxlcyA9IHF1ZXJ5RGVzYy0+c2Vzc2lv bl92YXJpYWJsZXM7CisJCWVzdGF0ZS0+ZXNfbnVtX3Nlc3Npb25fdmFyaWFibGVzID0gcXVlcnlE ZXNjLT5udW1fc2Vzc2lvbl92YXJpYWJsZXM7CisJfQorCWVsc2UgaWYgKHF1ZXJ5RGVzYy0+cGxh bm5lZHN0bXQtPnNlc3Npb25WYXJpYWJsZXMpCisJeworCQlMaXN0Q2VsbCAgICpsYzsKKwkJaW50 CQkJblNlc3Npb25WYXJpYWJsZXM7CisJCWludAkJCWkgPSAwOworCisJCS8qCisJCSAqIEluIHRo aXMgY2FzZSwgdGhlIHF1ZXJ5IHVzZXMgc2Vzc2lvbiB2YXJpYWJsZXMsIGJ1dCB3ZSBoYXZlIHRv CisJCSAqIHByZXBhcmUgdGhlIGFycmF5IHdpdGggcGFzc2VkIHZhbHVlcyAob2YgdXNlZCBzZXNz aW9uIHZhcmlhYmxlcykKKwkJICogZmlyc3QuCisJCSAqLworCQlBc3NlcnQoIUlzUGFyYWxsZWxX b3JrZXIoKSk7CisJCW5TZXNzaW9uVmFyaWFibGVzID0gbGlzdF9sZW5ndGgocXVlcnlEZXNjLT5w bGFubmVkc3RtdC0+c2Vzc2lvblZhcmlhYmxlcyk7CisKKwkJLyogQ3JlYXRlIHRoZSBhcnJheSB1 c2VkIGZvciBwYXNzaW5nIHZhbHVlcyBvZiB1c2VkIHNlc3Npb24gdmFyaWFibGVzICovCisJCWVz dGF0ZS0+ZXNfc2Vzc2lvbl92YXJpYWJsZXMgPSAoU2Vzc2lvblZhcmlhYmxlVmFsdWUgKikKKwkJ CXBhbGxvYyhuU2Vzc2lvblZhcmlhYmxlcyAqIHNpemVvZihTZXNzaW9uVmFyaWFibGVWYWx1ZSkp OworCisJCS8qIEZpbGwgdGhlIGFycmF5ICovCisJCWZvcmVhY2gobGMsIHF1ZXJ5RGVzYy0+cGxh bm5lZHN0bXQtPnNlc3Npb25WYXJpYWJsZXMpCisJCXsKKwkJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7 CisJCQlPaWQJCQl2YXJpZCA9IGxmaXJzdF9vaWQobGMpOworCisJCQlhY2xyZXN1bHQgPSBvYmpl Y3RfYWNsY2hlY2soVmFyaWFibGVSZWxhdGlvbklkLCB2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9T RUxFQ1QpOworCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCQlhY2xjaGVja19l cnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwKKwkJCQkJCQkgICBnZXRfc2Vzc2lvbl92 YXJpYWJsZV9uYW1lKHZhcmlkKSk7CisKKwkJCWVzdGF0ZS0+ZXNfc2Vzc2lvbl92YXJpYWJsZXNb aV0udmFyaWQgPSB2YXJpZDsKKwkJCWVzdGF0ZS0+ZXNfc2Vzc2lvbl92YXJpYWJsZXNbaV0udmFs dWUgPSBDb3B5U2Vzc2lvblZhcmlhYmxlKHZhcmlkLAorCQkJCQkJCQkJCQkJCQkJCQkJJmVzdGF0 ZS0+ZXNfc2Vzc2lvbl92YXJpYWJsZXNbaV0uaXNudWxsLAorCQkJCQkJCQkJCQkJCQkJCQkJJmVz dGF0ZS0+ZXNfc2Vzc2lvbl92YXJpYWJsZXNbaV0udHlwaWQpOworCisJCQlpKys7CisJCX0KKwor CQllc3RhdGUtPmVzX251bV9zZXNzaW9uX3ZhcmlhYmxlcyA9IG5TZXNzaW9uVmFyaWFibGVzOwor CX0KKwogCS8qCiAJICogRmlsbCBpbiB0aGUgcXVlcnkgZW52aXJvbm1lbnQsIGlmIGFueSwgZnJv bSBxdWVyeURlc2MuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGFj YTBjNmYzMjMuLmFjMTVlYWZjYjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBA IC0xMiw4ICsxMiw5IEBACiAgKiB3b3JrZXJzIGFuZCBlbnN1cmluZyB0aGF0IHRoZWlyIHN0YXRl IGdlbmVyYWxseSBtYXRjaGVzIHRoYXQgb2YgdGhlCiAgKiBsZWFkZXI7IHNlZSBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9SRUFETUUucGFyYWxsZWwgZm9yIGRldGFpbHMuCiAgKiBIb3dldmVy LCB3ZSBtdXN0IHNhdmUgYW5kIHJlc3RvcmUgcmVsZXZhbnQgZXhlY3V0b3Igc3RhdGUsIHN1Y2gg YXMKLSAqIGFueSBQYXJhbUxpc3RJbmZvIGFzc29jaWF0ZWQgd2l0aCB0aGUgcXVlcnksIGJ1ZmZl ci9XQUwgdXNhZ2UgaW5mbywgYW5kCi0gKiB0aGUgYWN0dWFsIHBsYW4gdG8gYmUgcGFzc2VkIGRv d24gdG8gdGhlIHdvcmtlci4KKyAqIGFueSBQYXJhbUxpc3RJbmZvIGFzc29jaWF0ZWQgd2l0aCB0 aGUgcXVlcnksIGJ1ZmZlci9XQUwgdXNhZ2UgaW5mbywKKyAqIHNlc3Npb24gdmFyaWFibGVzIGJ1 ZmZlciwgYW5kIHRoZSBhY3R1YWwgcGxhbiB0byBiZSBwYXNzZWQgZG93biB0bworICogdGhlIHdv cmtlci4KICAqCiAgKiBJREVOVElGSUNBVElPTgogICoJICBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUGFyYWxsZWwuYwpAQCAtNjYsNiArNjcsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfUVVF UllfVEVYVAkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA4KQogI2RlZmluZSBQQVJBTExF TF9LRVlfSklUX0lOU1RSVU1FTlRBVElPTiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDkp CiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEUwMDAwMDAw MDAwMDAwMEEpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9TRVNTSU9OX1ZBUklBQkxFUwlVSU5UNjRD T05TVCgweEUwMDAwMDAwMDAwMDAwMEIpCiAKICNkZWZpbmUgUEFSQUxMRUxfVFVQTEVfUVVFVUVf U0laRQkJNjU1MzYKIApAQCAtMTQwLDYgKzE0MiwxMiBAQCBzdGF0aWMgYm9vbCBFeGVjUGFyYWxs ZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIC8qIEhlbHBl ciBmdW5jdGlvbiB0aGF0IHJ1bnMgaW4gdGhlIHBhcmFsbGVsIHdvcmtlci4gKi8KIHN0YXRpYyBE ZXN0UmVjZWl2ZXIgKkV4ZWNQYXJhbGxlbEdldFJlY2VpdmVyKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYyk7CiAKKy8qIEhlbHBlciBmdW5jdGlvbnMgdGhhdCBjYW4gcGFzcyB2YWx1ZXMg b2Ygc2Vzc2lvbiB2YXJpYWJsZXMgKi8KK3N0YXRpYyBTaXplIEVzdGltYXRlU2Vzc2lvblZhcmlh YmxlcyhFU3RhdGUgKmVzdGF0ZSk7CitzdGF0aWMgdm9pZCBTZXJpYWxpemVTZXNzaW9uVmFyaWFi bGVzKEVTdGF0ZSAqZXN0YXRlLCBjaGFyICoqc3RhcnRfYWRkcmVzcyk7CitzdGF0aWMgU2Vzc2lv blZhcmlhYmxlVmFsdWUgKlJlc3RvcmVTZXNzaW9uVmFyaWFibGVzKGNoYXIgKipzdGFydF9hZGRy ZXNzLAorCQkJCQkJCQkJCQkJCSBpbnQgKm51bV9zZXNzaW9uX3ZhcmlhYmxlcyk7CisKIC8qCiAg KiBDcmVhdGUgYSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwbGFuIHRvIGJlIHNl bnQgdG8gZWFjaCB3b3JrZXIuCiAgKi8KQEAgLTU5OCw2ICs2MDYsNyBAQCBFeGVjSW5pdFBhcmFs bGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJY2hhcgkgICAq cHN0bXRfZGF0YTsKIAljaGFyCSAgICpwc3RtdF9zcGFjZTsKIAljaGFyCSAgICpwYXJhbWxpc3Rp bmZvX3NwYWNlOworCWNoYXIJICAgKnNlc3Npb25fdmFyaWFibGVzX3NwYWNlOwogCUJ1ZmZlclVz YWdlICpidWZ1c2FnZV9zcGFjZTsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZV9zcGFjZTsKIAlTaGFy ZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uID0gTlVMTDsKQEAgLTYw Nyw2ICs2MTYsNyBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwg RVN0YXRlICplc3RhdGUsCiAJaW50CQkJaW5zdHJ1bWVudGF0aW9uX2xlbiA9IDA7CiAJaW50CQkJ aml0X2luc3RydW1lbnRhdGlvbl9sZW4gPSAwOwogCWludAkJCWluc3RydW1lbnRfb2Zmc2V0ID0g MDsKKwlpbnQJCQlzZXNzaW9uX3ZhcmlhYmxlc19sZW4gPSAwOwogCVNpemUJCWRzYV9taW5zaXpl ID0gZHNhX21pbmltdW1fc2l6ZSgpOwogCWNoYXIJICAgKnF1ZXJ5X3N0cmluZzsKIAlpbnQJCQlx dWVyeV9sZW47CkBAIC02NjIsNiArNjcyLDExIEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5r KCZwY3h0LT5lc3RpbWF0b3IsIHBhcmFtbGlzdGluZm9fbGVuKTsKIAlzaG1fdG9jX2VzdGltYXRl X2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CiAKKwkvKiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2Vy aWFsaXplZCBzZXNzaW9uIHZhcmlhYmxlcy4gKi8KKwlzZXNzaW9uX3ZhcmlhYmxlc19sZW4gPSBF c3RpbWF0ZVNlc3Npb25WYXJpYWJsZXMoZXN0YXRlKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5r KCZwY3h0LT5lc3RpbWF0b3IsIHNlc3Npb25fdmFyaWFibGVzX2xlbik7CisJc2htX3RvY19lc3Rp bWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCiAJLyoKIAkgKiBFc3RpbWF0ZSBzcGFj ZSBmb3IgQnVmZmVyVXNhZ2UuCiAJICoKQEAgLTc1Niw2ICs3NzEsMTEgQEAgRXhlY0luaXRQYXJh bGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCXNobV90b2Nf aW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElTVElORk8sIHBhcmFtbGlzdGlu Zm9fc3BhY2UpOwogCVNlcmlhbGl6ZVBhcmFtTGlzdChlc3RhdGUtPmVzX3BhcmFtX2xpc3RfaW5m bywgJnBhcmFtbGlzdGluZm9fc3BhY2UpOwogCisJLyogU3RvcmUgc2VyaWFsaXplZCBzZXNzaW9u IHZhcmlhYmxlcy4gKi8KKwlzZXNzaW9uX3ZhcmlhYmxlc19zcGFjZSA9IHNobV90b2NfYWxsb2Nh dGUocGN4dC0+dG9jLCBzZXNzaW9uX3ZhcmlhYmxlc19sZW4pOworCXNobV90b2NfaW5zZXJ0KHBj eHQtPnRvYywgUEFSQUxMRUxfS0VZX1NFU1NJT05fVkFSSUFCTEVTLCBzZXNzaW9uX3ZhcmlhYmxl c19zcGFjZSk7CisJU2VyaWFsaXplU2Vzc2lvblZhcmlhYmxlcyhlc3RhdGUsICZzZXNzaW9uX3Zh cmlhYmxlc19zcGFjZSk7CisKIAkvKiBBbGxvY2F0ZSBzcGFjZSBmb3IgZWFjaCB3b3JrZXIncyBC dWZmZXJVc2FnZTsgbm8gbmVlZCB0byBpbml0aWFsaXplLiAqLwogCWJ1ZnVzYWdlX3NwYWNlID0g c2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCiAJCQkJCQkJCQkgIG11bF9zaXplKHNpemVvZihC dWZmZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CkBAIC0xNDAzLDYgKzE0MjMsNyBAQCBQYXJh bGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJU2hhcmVkSml0 SW5zdHJ1bWVudGF0aW9uICpqaXRfaW5zdHJ1bWVudGF0aW9uOwogCWludAkJCWluc3RydW1lbnRf b3B0aW9ucyA9IDA7CiAJdm9pZAkgICAqYXJlYV9zcGFjZTsKKwljaGFyCSAgICpzZXNzaW9udmFy aWFibGVfc3BhY2U7CiAJZHNhX2FyZWEgICAqYXJlYTsKIAlQYXJhbGxlbFdvcmtlckNvbnRleHQg cHdjeHQ7CiAKQEAgLTE0MjgsNiArMTQ0OSwxNCBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2Vn bWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJYXJlYV9zcGFjZSA9IHNobV90b2NfbG9va3VwKHRv YywgUEFSQUxMRUxfS0VZX0RTQSwgZmFsc2UpOwogCWFyZWEgPSBkc2FfYXR0YWNoX2luX3BsYWNl KGFyZWFfc3BhY2UsIHNlZyk7CiAKKwkvKiBSZWNvbnN0cnVjdCBzZXNzaW9uIHZhcmlhYmxlcy4g Ki8KKwlzZXNzaW9udmFyaWFibGVfc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsCisJCQkJCQkJ CQkJICAgUEFSQUxMRUxfS0VZX1NFU1NJT05fVkFSSUFCTEVTLAorCQkJCQkJCQkJCSAgIGZhbHNl KTsKKwlxdWVyeURlc2MtPnNlc3Npb25fdmFyaWFibGVzID0KKwkJUmVzdG9yZVNlc3Npb25WYXJp YWJsZXMoJnNlc3Npb252YXJpYWJsZV9zcGFjZSwKKwkJCQkJCQkJJnF1ZXJ5RGVzYy0+bnVtX3Nl c3Npb25fdmFyaWFibGVzKTsKKwogCS8qIFN0YXJ0IHVwIHRoZSBleGVjdXRvciAqLwogCXF1ZXJ5 RGVzYy0+cGxhbm5lZHN0bXQtPmppdEZsYWdzID0gZnBlcy0+aml0X2ZsYWdzOwogCUV4ZWN1dG9y U3RhcnQocXVlcnlEZXNjLCBmcGVzLT5lZmxhZ3MpOwpAQCAtMTQ5NiwzICsxNTI1LDExNyBAQCBQ YXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJRnJlZVF1 ZXJ5RGVzYyhxdWVyeURlc2MpOwogCXJlY2VpdmVyLT5yRGVzdHJveShyZWNlaXZlcik7CiB9CisK Ky8qCisgKiBFc3RpbWF0ZSB0aGUgYW1vdW50IG9mIHNwYWNlIHJlcXVpcmVkIHRvIHNlcmlhbGl6 ZSBhIHNlc3Npb24gdmFyaWFibGUuCisgKi8KK3N0YXRpYyBTaXplCitFc3RpbWF0ZVNlc3Npb25W YXJpYWJsZXMoRVN0YXRlICplc3RhdGUpCit7CisJaW50CQkJaTsKKwlTaXplCQlzeiA9IHNpemVv ZihpbnQpOworCisJaWYgKGVzdGF0ZS0+ZXNfc2Vzc2lvbl92YXJpYWJsZXMgPT0gTlVMTCkKKwkJ cmV0dXJuIHN6OworCisJZm9yIChpID0gMDsgaSA8IGVzdGF0ZS0+ZXNfbnVtX3Nlc3Npb25fdmFy aWFibGVzOyBpKyspCisJeworCQlTZXNzaW9uVmFyaWFibGVWYWx1ZSAqc3ZhcnZhbDsKKwkJT2lk CQkJdHlwZU9pZDsKKwkJaW50MTYJCXR5cExlbjsKKwkJYm9vbAkJdHlwQnlWYWw7CisKKwkJc3Zh cnZhbCA9ICZlc3RhdGUtPmVzX3Nlc3Npb25fdmFyaWFibGVzW2ldOworCisJCXR5cGVPaWQgPSBz dmFydmFsLT50eXBpZDsKKworCQlzeiA9IGFkZF9zaXplKHN6LCBzaXplb2YoT2lkKSk7IC8qIHNw YWNlIGZvciB0eXBlIE9JRCAqLworCisJCS8qIHNwYWNlIGZvciBkYXR1bS9pc251bGwgKi8KKwkJ QXNzZXJ0KE9pZElzVmFsaWQodHlwZU9pZCkpOworCQlnZXRfdHlwbGVuYnl2YWwodHlwZU9pZCwg JnR5cExlbiwgJnR5cEJ5VmFsKTsKKworCQlzeiA9IGFkZF9zaXplKHN6LAorCQkJCQkgIGRhdHVt RXN0aW1hdGVTcGFjZShzdmFydmFsLT52YWx1ZSwgc3ZhcnZhbC0+aXNudWxsLCB0eXBCeVZhbCwg dHlwTGVuKSk7CisJfQorCisJcmV0dXJuIHN6OworfQorCisvKgorICogU2VyaWFsaXplIGEgc2Vz c2lvbiB2YXJpYWJsZXMgYnVmZmVyIGludG8gY2FsbGVyLXByb3ZpZGVkIHN0b3JhZ2UuCisgKgor ICogV2Ugd3JpdGUgdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIGZpcnN0LCBhcyBhIDQtYnl0ZSBp bnRlZ2VyLCBhbmQgdGhlbgorICogd3JpdGUgZGV0YWlscyBmb3IgZWFjaCBwYXJhbWV0ZXIgaW4g dHVybi4gIFRoZSBkZXRhaWxzIGZvciBlYWNoIHBhcmFtZXRlcgorICogY29uc2lzdCBvZiBhIDQt Ynl0ZSB0eXBlIE9JRCwgYW5kIHRoZW4gdGhlIGRhdHVtIGFzIHNlcmlhbGl6ZWQgYnkKKyAqIGRh dHVtU2VyaWFsaXplKCkuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyB0 aGF0IHRoZXJlIGlzCisgKiBlbm91Z2ggc3RvcmFnZSB0byBzdG9yZSB0aGUgbnVtYmVyIG9mIGJ5 dGVzIHRoYXQgd2lsbCBiZSB3cml0dGVuOyB1c2UKKyAqIEVzdGltYXRlU2Vzc2lvblZhcmlhYmxl cyB0byBmaW5kIG91dCBob3cgbWFueSB3aWxsIGJlIG5lZWRlZC4KKyAqICpzdGFydF9hZGRyZXNz IGlzIHVwZGF0ZWQgdG8gcG9pbnQgdG8gdGhlIGJ5dGUgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRo b3NlCisgKiB3cml0dGVuLgorICoKKyAqIFJlc3RvcmVTZXNzaW9uVmFyaWFibGVzIGNhbiBiZSB1 c2VkIHRvIHJlY3JlYXRlIGEgc2Vzc2lvbiB2YXJpYWJsZSBidWZmZXIKKyAqIGJhc2VkIG9uIHRo ZSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uOworICovCitzdGF0aWMgdm9pZAorU2VyaWFsaXpl U2Vzc2lvblZhcmlhYmxlcyhFU3RhdGUgKmVzdGF0ZSwgY2hhciAqKnN0YXJ0X2FkZHJlc3MpCit7 CisJaW50CQkJbnBhcmFtczsKKwlpbnQJCQlpOworCisJLyogV3JpdGUgbnVtYmVyIG9mIHBhcmFt ZXRlcnMuICovCisJbnBhcmFtcyA9IGVzdGF0ZS0+ZXNfbnVtX3Nlc3Npb25fdmFyaWFibGVzOwor CW1lbWNweSgqc3RhcnRfYWRkcmVzcywgJm5wYXJhbXMsIHNpemVvZihpbnQpKTsKKwkqc3RhcnRf YWRkcmVzcyArPSBzaXplb2YoaW50KTsKKworCS8qIFdyaXRlIGVhY2ggcGFyYW1ldGVyIGluIHR1 cm4uICovCisJZm9yIChpID0gMDsgaSA8IG5wYXJhbXM7IGkrKykKKwl7CisJCVNlc3Npb25WYXJp YWJsZVZhbHVlICpzdmFydmFsOworCQlPaWQJCQl0eXBlT2lkOworCQlpbnQxNgkJdHlwTGVuOwor CQlib29sCQl0eXBCeVZhbDsKKworCQlzdmFydmFsID0gJmVzdGF0ZS0+ZXNfc2Vzc2lvbl92YXJp YWJsZXNbaV07CisJCXR5cGVPaWQgPSBzdmFydmFsLT50eXBpZDsKKworCQkvKiBXcml0ZSB0eXBl IE9JRC4gKi8KKwkJbWVtY3B5KCpzdGFydF9hZGRyZXNzLCAmdHlwZU9pZCwgc2l6ZW9mKE9pZCkp OworCQkqc3RhcnRfYWRkcmVzcyArPSBzaXplb2YoT2lkKTsKKworCQlBc3NlcnQoT2lkSXNWYWxp ZCh0eXBlT2lkKSk7CisJCWdldF90eXBsZW5ieXZhbCh0eXBlT2lkLCAmdHlwTGVuLCAmdHlwQnlW YWwpOworCisJCWRhdHVtU2VyaWFsaXplKHN2YXJ2YWwtPnZhbHVlLCBzdmFydmFsLT5pc251bGws IHR5cEJ5VmFsLCB0eXBMZW4sCisJCQkJCSAgIHN0YXJ0X2FkZHJlc3MpOworCX0KK30KKworc3Rh dGljIFNlc3Npb25WYXJpYWJsZVZhbHVlICoKK1Jlc3RvcmVTZXNzaW9uVmFyaWFibGVzKGNoYXIg KipzdGFydF9hZGRyZXNzLCBpbnQgKm51bV9zZXNzaW9uX3ZhcmlhYmxlcykKK3sKKwlTZXNzaW9u VmFyaWFibGVWYWx1ZSAqc2Vzc2lvbl92YXJpYWJsZXM7CisJaW50CQkJaTsKKwlpbnQJCQlucGFy YW1zOworCisJbWVtY3B5KCZucGFyYW1zLCAqc3RhcnRfYWRkcmVzcywgc2l6ZW9mKGludCkpOwor CSpzdGFydF9hZGRyZXNzICs9IHNpemVvZihpbnQpOworCisJKm51bV9zZXNzaW9uX3ZhcmlhYmxl cyA9IG5wYXJhbXM7CisJc2Vzc2lvbl92YXJpYWJsZXMgPSAoU2Vzc2lvblZhcmlhYmxlVmFsdWUg KikKKwkJcGFsbG9jKG5wYXJhbXMgKiBzaXplb2YoU2Vzc2lvblZhcmlhYmxlVmFsdWUpKTsKKwor CWZvciAoaSA9IDA7IGkgPCBucGFyYW1zOyBpKyspCisJeworCQlTZXNzaW9uVmFyaWFibGVWYWx1 ZSAqc3ZhcnZhbCA9ICZzZXNzaW9uX3ZhcmlhYmxlc1tpXTsKKworCQkvKiBSZWFkIHR5cGUgT0lE LiAqLworCQltZW1jcHkoJnN2YXJ2YWwtPnR5cGlkLCAqc3RhcnRfYWRkcmVzcywgc2l6ZW9mKE9p ZCkpOworCQkqc3RhcnRfYWRkcmVzcyArPSBzaXplb2YoT2lkKTsKKworCQkvKiBSZWFkIGRhdHVt L2lzbnVsbC4gKi8KKwkJc3ZhcnZhbC0+dmFsdWUgPSBkYXR1bVJlc3RvcmUoc3RhcnRfYWRkcmVz cywgJnN2YXJ2YWwtPmlzbnVsbCk7CisJfQorCisJcmV0dXJuIHNlc3Npb25fdmFyaWFibGVzOwor fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgYi9zcmMv YmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwppbmRleCBmMTE0MzM3ZjhlLi42ZTNjNGQw NDgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYworKysg Yi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwpAQCAtMTA3Myw2ICsxMDczLDEy IEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJTExWTUJ1aWxkQnIo Yiwgb3BibG9ja3Nbb3BubyArIDFdKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBFRU9QX1BBUkFN X1ZBUklBQkxFOgorCQkJCWJ1aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbFBhcmFtVmFy aWFibGUiLAorCQkJCQkJCQl2X3N0YXRlLCBvcCwgdl9lY29udGV4dCk7CisJCQkJTExWTUJ1aWxk QnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBFRU9QX1BB UkFNX0NBTExCQUNLOgogCQkJCXsKIAkJCQkJTExWTVR5cGVSZWYgdl9mdW5jdHlwZTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA3OTk2MDJmNWVhLi4yOTViOTQwYTRkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0zMTcsNiArMzE3LDcgQEAgc3Rh bmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50 IGN1cnNvck9wdGlvbnMsCiAJZ2xvYi0+bGFzdFBsYW5Ob2RlSWQgPSAwOwogCWdsb2ItPnRyYW5z aWVudFBsYW4gPSBmYWxzZTsKIAlnbG9iLT5kZXBlbmRzT25Sb2xlID0gZmFsc2U7CisJZ2xvYi0+ c2Vzc2lvblZhcmlhYmxlcyA9IE5JTDsKIAogCS8qCiAJICogQXNzZXNzIHdoZXRoZXIgaXQncyBm ZWFzaWJsZSB0byB1c2UgcGFyYWxsZWwgbW9kZSBmb3IgdGhpcyBxdWVyeS4gV2UKQEAgLTUzMSw2 ICs1MzIsNyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVl cnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPnBhcmFtRXhlY1R5cGVzID0g Z2xvYi0+cGFyYW1FeGVjVHlwZXM7CiAJLyogdXRpbGl0eVN0bXQgc2hvdWxkIGJlIG51bGwsIGJ1 dCB3ZSBtaWdodCBhcyB3ZWxsIGNvcHkgaXQgKi8KIAlyZXN1bHQtPnV0aWxpdHlTdG10ID0gcGFy c2UtPnV0aWxpdHlTdG10OworCXJlc3VsdC0+c2Vzc2lvblZhcmlhYmxlcyA9IGdsb2ItPnNlc3Np b25WYXJpYWJsZXM7CiAJcmVzdWx0LT5zdG10X2xvY2F0aW9uID0gcGFyc2UtPnN0bXRfbG9jYXRp b247CiAJcmVzdWx0LT5zdG10X2xlbiA9IHBhcnNlLT5zdG10X2xlbjsKIApAQCAtNjg2LDYgKzY4 OCwxMiBAQCBzdWJxdWVyeV9wbGFubmVyKFBsYW5uZXJHbG9iYWwgKmdsb2IsIFF1ZXJ5ICpwYXJz ZSwKIAkgKi8KIAlwdWxsX3VwX3N1YnF1ZXJpZXMocm9vdCk7CiAKKwkvKgorCSAqIENoZWNrIGlm IHNvbWUgc3VicXVlcnkgdXNlcyBzZXNzaW9uIHZhcmlhYmxlLiBGbGFnIGhhc1Nlc3Npb25WYXJp YWJsZXMKKwkgKiBzaG91bGQgYmUgdHJ1ZSBpZiBxdWVyeSBvciBzb21lIHN1YnF1ZXJ5IHVzZXMg YW55IHNlc3Npb24gdmFyaWFibGUuCisJICovCisJcHVsbF91cF9oYXNfc2Vzc2lvbl92YXJpYWJs ZXMocm9vdCk7CisKIAkvKgogCSAqIElmIHRoaXMgaXMgYSBzaW1wbGUgVU5JT04gQUxMIHF1ZXJ5 LCBmbGF0dGVuIGl0IGludG8gYW4gYXBwZW5kcmVsLiBXZQogCSAqIGRvIHRoaXMgbm93IGJlY2F1 c2UgaXQgcmVxdWlyZXMgYXBwbHlpbmcgcHVsbF91cF9zdWJxdWVyaWVzIHRvIHRoZSBsZWFmCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggZTY3ZjBlMzUwOS4uNDcwYjk5ZTAw NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMTgxLDYgKzE4MSw4IEBA IHN0YXRpYyBMaXN0ICpzZXRfcmV0dXJuaW5nX2NsYXVzZV9yZWZlcmVuY2VzKFBsYW5uZXJJbmZv ICpyb290LAogc3RhdGljIExpc3QgKnNldF93aW5kb3dhZ2dfcnVuY29uZGl0aW9uX3JlZmVyZW5j ZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkgICBMaXN0ICpydW5jb25kaXRpb24s CiAJCQkJCQkJCQkJCQkgICBQbGFuICpwbGFuKTsKK3N0YXRpYyBib29sIHB1bGxfdXBfaGFzX3Nl c3Npb25fdmFyaWFibGVzX3dhbGtlcihOb2RlICpub2RlLAorCQkJCQkJCQkJCQkJIFBsYW5uZXJJ bmZvICpyb290KTsKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEyNDMsNiArMTI0NSw1 MCBAQCBzZXRfcGxhbl9yZWZzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLCBpbnQgcnRv ZmZzZXQpCiAJcmV0dXJuIHBsYW47CiB9CiAKKy8qCisgKiBTZWFyY2ggdXNhZ2Ugb2Ygc2Vzc2lv biB2YXJpYWJsZXMgaW4gc3VicXVlcmllcworICovCit2b2lkCitwdWxsX3VwX2hhc19zZXNzaW9u X3ZhcmlhYmxlcyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlRdWVyeQkgICAqcXVlcnkgPSByb290 LT5wYXJzZTsKKworCWlmIChxdWVyeS0+aGFzU2Vzc2lvblZhcmlhYmxlcykKKwl7CisJCXJvb3Qt Pmhhc1Nlc3Npb25WYXJpYWJsZXMgPSB0cnVlOworCX0KKwllbHNlCisJeworCQkodm9pZCkgcXVl cnlfdHJlZV93YWxrZXIocXVlcnksCisJCQkJCQkJCSBwdWxsX3VwX2hhc19zZXNzaW9uX3Zhcmlh Ymxlc193YWxrZXIsCisJCQkJCQkJCSAodm9pZCAqKSByb290LCAwKTsKKwl9Cit9CisKK3N0YXRp YyBib29sCitwdWxsX3VwX2hhc19zZXNzaW9uX3ZhcmlhYmxlc193YWxrZXIoTm9kZSAqbm9kZSwg UGxhbm5lckluZm8gKnJvb3QpCit7CisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNl OworCWlmIChJc0Eobm9kZSwgUXVlcnkpKQorCXsKKwkJUXVlcnkJICAgKnF1ZXJ5ID0gKFF1ZXJ5 ICopIG5vZGU7CisKKwkJaWYgKHF1ZXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzKQorCQl7CisJCQly b290LT5oYXNTZXNzaW9uVmFyaWFibGVzID0gdHJ1ZTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQor CisJCS8qIFJlY3Vyc2UgaW50byBzdWJzZWxlY3RzICovCisJCXJldHVybiBxdWVyeV90cmVlX3dh bGtlcigoUXVlcnkgKikgbm9kZSwKKwkJCQkJCQkJIHB1bGxfdXBfaGFzX3Nlc3Npb25fdmFyaWFi bGVzX3dhbGtlciwKKwkJCQkJCQkJICh2b2lkICopIHJvb3QsIDApOworCX0KKwlyZXR1cm4gZXhw cmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBwdWxsX3VwX2hhc19zZXNzaW9uX3ZhcmlhYmxlc193 YWxrZXIsCisJCQkJCQkJCSAgKHZvaWQgKikgcm9vdCk7Cit9CisKIC8qCiAgKiBzZXRfaW5kZXhv bmx5c2Nhbl9yZWZlcmVuY2VzCiAgKgkJRG8gc2V0X3BsYW5fcmVmZXJlbmNlcyBwcm9jZXNzaW5n IG9uIGFuIEluZGV4T25seVNjYW4KQEAgLTE4MzgsOCArMTg4NCw5IEBAIGNvcHlWYXIoVmFyICp2 YXIpCiAgKiBUaGlzIGlzIGNvZGUgdGhhdCBpcyBjb21tb24gdG8gYWxsIHZhcmlhbnRzIG9mIGV4 cHJlc3Npb24tZml4aW5nLgogICogV2UgbXVzdCBsb29rIHVwIG9wZXJhdG9yIG9wY29kZSBpbmZv IGZvciBPcEV4cHIgYW5kIHJlbGF0ZWQgbm9kZXMsCiAgKiBhZGQgT0lEcyBmcm9tIHJlZ2NsYXNz IENvbnN0IG5vZGVzIGludG8gcm9vdC0+Z2xvYi0+cmVsYXRpb25PaWRzLCBhbmQKLSAqIGFkZCBQ bGFuSW52YWxJdGVtcyBmb3IgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBpbnRvIHJvb3QtPmdsb2It PmludmFsSXRlbXMuCi0gKiBXZSBhbHNvIGZpbGwgaW4gY29sdW1uIGluZGV4IGxpc3RzIGZvciBH Uk9VUElORygpIGV4cHJlc3Npb25zLgorICogYWRkIFBsYW5JbnZhbEl0ZW1zIGZvciB1c2VyLWRl ZmluZWQgZnVuY3Rpb25zIGFuZCBzZXNzaW9uIHZhcmlhYmxlcyBpbnRvCisgKiByb290LT5nbG9i LT5pbnZhbEl0ZW1zLiAgV2UgYWxzbyBmaWxsIGluIGNvbHVtbiBpbmRleCBsaXN0cyBmb3IgR1JP VVBJTkcoKQorICogZXhwcmVzc2lvbnMuCiAgKgogICogV2UgYXNzdW1lIGl0J3Mgb2theSB0byB1 cGRhdGUgb3Bjb2RlIGluZm8gaW4tcGxhY2UuICBTbyB0aGlzIGNvdWxkIHBvc3NpYmx5CiAgKiBz Y3JpYmJsZSBvbiB0aGUgcGxhbm5lcidzIGlucHV0IGRhdGEgc3RydWN0dXJlcywgYnV0IGl0J3Mg T0suCkBAIC0xOTI5LDE1ICsxOTc2LDM5IEBAIGZpeF9leHByX2NvbW1vbihQbGFubmVySW5mbyAq cm9vdCwgTm9kZSAqbm9kZSkKIAkJCQlnLT5jb2xzID0gY29sczsKIAkJfQogCX0KKwllbHNlIGlm IChJc0Eobm9kZSwgUGFyYW0pKQorCXsKKwkJUGFyYW0JICAgKnAgPSAoUGFyYW0gKikgbm9kZTsK KworCQlpZiAocC0+cGFyYW1raW5kID09IFBBUkFNX1ZBUklBQkxFKQorCQl7CisJCQlQbGFuSW52 YWxJdGVtICppbnZhbF9pdGVtID0gbWFrZU5vZGUoUGxhbkludmFsSXRlbSk7CisKKwkJCS8qIHBh cmFtaWQgaXMgc3RpbGwgc2Vzc2lvbiB2YXJpYWJsZSBpZCAqLworCQkJaW52YWxfaXRlbS0+Y2Fj aGVJZCA9IFZBUklBQkxFT0lEOworCQkJaW52YWxfaXRlbS0+aGFzaFZhbHVlID0gR2V0U3lzQ2Fj aGVIYXNoVmFsdWUxKFZBUklBQkxFT0lELAorCQkJCQkJCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0 dW0ocC0+cGFyYW12YXJpZCkpOworCisJCQkvKiBBcHBlbmQgdGhpcyB2YXJpYWJsZSB0byBnbG9i YWwsIHJlZ2lzdGVyIGRlcGVuZGVuY3kgKi8KKwkJCXJvb3QtPmdsb2ItPmludmFsSXRlbXMgPSBs YXBwZW5kKHJvb3QtPmdsb2ItPmludmFsSXRlbXMsCisJCQkJCQkJCQkJCSBpbnZhbF9pdGVtKTsK KwkJfQorCX0KIH0KIAogLyoKICAqIGZpeF9wYXJhbV9ub2RlCiAgKgkJRG8gc2V0X3BsYW5fcmVm ZXJlbmNlcyBwcm9jZXNzaW5nIG9uIGEgUGFyYW0KKyAqCQlDb2xsZWN0IHNlc3Npb24gdmFyaWFi bGVzIGxpc3QgYW5kIHJlcGxhY2UgdmFyaWFibGUgb2lkIGJ5CisgKgkJaW5kZXggdG8gY29sbGVj dGVkIGxpc3QuCiAgKgogICogSWYgaXQncyBhIFBBUkFNX01VTFRJRVhQUiwgcmVwbGFjZSBpdCB3 aXRoIHRoZSBhcHByb3ByaWF0ZSBQYXJhbSBmcm9tCiAgKiByb290LT5tdWx0aWV4cHJfcGFyYW1z OyBvdGhlcndpc2Ugbm8gY2hhbmdlIGlzIG5lZWRlZC4KICAqIEp1c3QgZm9yIHBhcmFub2lhJ3Mg c2FrZSwgd2UgbWFrZSBhIGNvcHkgb2YgdGhlIG5vZGUgaW4gZWl0aGVyIGNhc2UuCisgKgorICog SWYgaXQncyBhIFBBUkFNX1ZBUklBQkxFLCB0aGVuIHdlIGNvbGxlY3QgdXNlZCBzZXNzaW9uIHZh cmlhYmxlcyBpbgorICogbGlzdCByb290LT5nbG9iLT5zZXNzaW9uVmFyaWFibGUuIFdlIHNob3Vs ZCB0byBhc3NpZ24gUGFyYW0gcGFyYW12YXJpZAorICogdG9vLCBhbmQgaXQgaXMgcG9zaXRpb24g b2YgcmVsYXRlZCBzZXNzaW9uIHZhcmlhYmxlIGluIG1lbnRpb25lZCBsaXN0LgogICovCiBzdGF0 aWMgTm9kZSAqCiBmaXhfcGFyYW1fbm9kZShQbGFubmVySW5mbyAqcm9vdCwgUGFyYW0gKnApCkBA IC0xOTU2LDYgKzIwMjcsNDEgQEAgZml4X3BhcmFtX25vZGUoUGxhbm5lckluZm8gKnJvb3QsIFBh cmFtICpwKQogCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgUEFSQU1fTVVMVElFWFBSIElEOiAl ZCIsIHAtPnBhcmFtaWQpOwogCQlyZXR1cm4gY29weU9iamVjdChsaXN0X250aChwYXJhbXMsIGNv bG5vIC0gMSkpOwogCX0KKworCWlmIChwLT5wYXJhbWtpbmQgPT0gUEFSQU1fVkFSSUFCTEUpCisJ eworCQlMaXN0Q2VsbCAgICpsYzsKKwkJaW50CQkJbiA9IDA7CisJCWJvb2wJCWZvdW5kID0gZmFs c2U7CisKKwkJLyogV2Ugd2lsbCBtb2RpZnkgb2JqZWN0ICovCisJCXAgPSAoUGFyYW0gKikgY29w eU9iamVjdChwKTsKKworCQkvKgorCQkgKiBOb3csIHdlIGNhbiBhY3R1YWxpemUgbGlzdCBvZiBz ZXNzaW9uIHZhcmlhYmxlcywgYW5kIHdlIGNhbgorCQkgKiBjb21wbGV0ZSBwYXJhbWlkIHBhcmFt ZXRlci4KKwkJICovCisJCWZvcmVhY2gobGMsIHJvb3QtPmdsb2ItPnNlc3Npb25WYXJpYWJsZXMp CisJCXsKKwkJCWlmIChsZmlyc3Rfb2lkKGxjKSA9PSBwLT5wYXJhbXZhcmlkKQorCQkJeworCQkJ CXAtPnBhcmFtaWQgPSBuOworCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJ CW4gKz0gMTsKKwkJfQorCisJCWlmICghZm91bmQpCisJCXsKKwkJCXJvb3QtPmdsb2ItPnNlc3Np b25WYXJpYWJsZXMgPSBsYXBwZW5kX29pZChyb290LT5nbG9iLT5zZXNzaW9uVmFyaWFibGVzLAor CQkJCQkJCQkJCQkJCSAgIHAtPnBhcmFtdmFyaWQpOworCQkJcC0+cGFyYW1pZCA9IG47CisJCX0K KworCQlyZXR1cm4gKE5vZGUgKikgcDsKKwl9CisKIAlyZXR1cm4gKE5vZGUgKikgY29weU9iamVj dChwKTsKIH0KIApAQCAtMjAxNyw3ICsyMTIzLDEwIEBAIGZpeF9hbHRlcm5hdGl2ZV9zdWJwbGFu KFBsYW5uZXJJbmZvICpyb290LCBBbHRlcm5hdGl2ZVN1YlBsYW4gKmFzcGxhbiwKICAqIHJlcGxh Y2luZyBBZ2dyZWYgbm9kZXMgdGhhdCBzaG91bGQgYmUgcmVwbGFjZWQgYnkgaW5pdHBsYW4gb3V0 cHV0IFBhcmFtcywKICAqIGNob29zaW5nIHRoZSBiZXN0IGltcGxlbWVudGF0aW9uIGZvciBBbHRl cm5hdGl2ZVN1YlBsYW5zLAogICogbG9va2luZyB1cCBvcGVyYXRvciBvcGNvZGUgaW5mbyBmb3Ig T3BFeHByIGFuZCByZWxhdGVkIG5vZGVzLAotICogYW5kIGFkZGluZyBPSURzIGZyb20gcmVnY2xh c3MgQ29uc3Qgbm9kZXMgaW50byByb290LT5nbG9iLT5yZWxhdGlvbk9pZHMuCisgKiBhZGRpbmcg T0lEcyBmcm9tIHJlZ2NsYXNzIENvbnN0IG5vZGVzIGludG8gcm9vdC0+Z2xvYi0+cmVsYXRpb25P aWRzLAorICogYW5kIGFzc2lnbmluZyBwYXJhbXZhcmlkIHRvIFBBUkFNX1ZBUklBQkxFIHBhcmFt cywgYW5kIGNvbGxlY3RpbmcKKyAqIG9mIE9JRHMgb2Ygc2Vzc2lvbiB2YXJpYWJsZXMgaW4gcm9v dC0+Z2xvYi0+c2Vzc2lvblZhcmlhYmxlcyBsaXN0CisgKiAocGFyYW12YXJpZCBpcyBhbiBwb3Np dGlvbiBvZiByZWxhdGVkIHNlc3Npb24gdmFyaWFibGUgaW4gdGhpcyBsaXN0KS4KICAqCiAgKiAn bm9kZSc6IHRoZSBleHByZXNzaW9uIHRvIGJlIG1vZGlmaWVkCiAgKiAncnRvZmZzZXQnOiBob3cg bXVjaCB0byBpbmNyZW1lbnQgdmFybm9zIGJ5CkBAIC0yMDM5LDcgKzIxNDgsOCBAQCBmaXhfc2Nh bl9leHByKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpub2RlLCBpbnQgcnRvZmZzZXQsIGRvdWJs ZSBudW1fZXhlYykKIAkJcm9vdC0+bXVsdGlleHByX3BhcmFtcyAhPSBOSUwgfHwKIAkJcm9vdC0+ Z2xvYi0+bGFzdFBISWQgIT0gMCB8fAogCQlyb290LT5taW5tYXhfYWdncyAhPSBOSUwgfHwKLQkJ cm9vdC0+aGFzQWx0ZXJuYXRpdmVTdWJQbGFucykKKwkJcm9vdC0+aGFzQWx0ZXJuYXRpdmVTdWJQ bGFucyB8fAorCQlyb290LT5oYXNTZXNzaW9uVmFyaWFibGVzKQogCXsKIAkJcmV0dXJuIGZpeF9z Y2FuX2V4cHJfbXV0YXRvcihub2RlLCAmY29udGV4dCk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcHJlcC9wcmVwam9pbnRyZWUuYwppbmRleCAyZWEzY2E3MzRlLi4xMThiNmU0OTRhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYwpAQCAtMTI3Niw2ICsxMjc2 LDkgQEAgcHVsbF91cF9zaW1wbGVfc3VicXVlcnkoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKmp0 bm9kZSwgUmFuZ2VUYmxFbnRyeSAqcnRlLAogCS8qIElmIHN1YnF1ZXJ5IGhhZCBhbnkgUkxTIGNv bmRpdGlvbnMsIG5vdyBtYWluIHF1ZXJ5IGRvZXMgdG9vICovCiAJcGFyc2UtPmhhc1Jvd1NlY3Vy aXR5IHw9IHN1YnF1ZXJ5LT5oYXNSb3dTZWN1cml0eTsKIAorCS8qIElmIHN1YnF1ZXJ5IGhhZCBz ZXNzaW9uIHZhcmlhYmxlcywgbm93IG1haW4gcXVlcnkgZG9lcyB0b28gKi8KKwlwYXJzZS0+aGFz U2Vzc2lvblZhcmlhYmxlcyB8PSBzdWJxdWVyeS0+aGFzU2Vzc2lvblZhcmlhYmxlczsKKwogCS8q CiAJICogc3VicXVlcnkgd29uJ3QgYmUgcHVsbGVkIHVwIGlmIGl0IGhhc0FnZ3MsIGhhc1dpbmRv d0Z1bmNzLCBvcgogCSAqIGhhc1RhcmdldFNSRnMsIHNvIG5vIHdvcmsgbmVlZGVkIG9uIHRob3Nl IGZsYWdzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKaW5kZXggYmZmYzgxMTJhYS4u OGFjZDhkZGY4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNl cy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwpAQCAtMjYsNiAr MjYsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJj b21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3Iu aCIKICNpbmNsdWRlICJleGVjdXRvci9mdW5jdGlvbnMuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgi CkBAIC04MDQsMTYgKzgwNSwxNyBAQCBtYXhfcGFyYWxsZWxfaGF6YXJkX3dhbGtlcihOb2RlICpu b2RlLCBtYXhfcGFyYWxsZWxfaGF6YXJkX2NvbnRleHQgKmNvbnRleHQpCiAKIAkvKgogCSAqIFdl IGNhbid0IHBhc3MgUGFyYW1zIHRvIHdvcmtlcnMgYXQgdGhlIG1vbWVudCBlaXRoZXIsIHNvIHRo ZXkgYXJlIGFsc28KLQkgKiBwYXJhbGxlbC1yZXN0cmljdGVkLCB1bmxlc3MgdGhleSBhcmUgUEFS QU1fRVhURVJOIFBhcmFtcyBvciBhcmUKLQkgKiBQQVJBTV9FWEVDIFBhcmFtcyBsaXN0ZWQgaW4g c2FmZV9wYXJhbV9pZHMsIG1lYW5pbmcgdGhleSBjb3VsZCBiZQotCSAqIGVpdGhlciBnZW5lcmF0 ZWQgd2l0aGluIHdvcmtlcnMgb3IgY2FuIGJlIGNvbXB1dGVkIGJ5IHRoZSBsZWFkZXIgYW5kCi0J ICogdGhlbiB0aGVpciB2YWx1ZSBjYW4gYmUgcGFzc2VkIHRvIHdvcmtlcnMuCisJICogcGFyYWxs ZWwtcmVzdHJpY3RlZCwgdW5sZXNzIHRoZXkgYXJlIFBBUkFNX0VYVEVSTiBvciBQQVJBTV9WQVJJ QUJMRQorCSAqIFBhcmFtcyBvciBhcmUgUEFSQU1fRVhFQyBQYXJhbXMgbGlzdGVkIGluIHNhZmVf cGFyYW1faWRzLCBtZWFuaW5nIHRoZXkKKwkgKiBjb3VsZCBiZSBlaXRoZXIgZ2VuZXJhdGVkIHdp dGhpbiB3b3JrZXJzIG9yIGNhbiBiZSBjb21wdXRlZCBieSB0aGUKKwkgKiBsZWFkZXIgYW5kIHRo ZW4gdGhlaXIgdmFsdWUgY2FuIGJlIHBhc3NlZCB0byB3b3JrZXJzLgogCSAqLwogCWVsc2UgaWYg KElzQShub2RlLCBQYXJhbSkpCiAJewogCQlQYXJhbQkgICAqcGFyYW0gPSAoUGFyYW0gKikgbm9k ZTsKIAotCQlpZiAocGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9FWFRFUk4pCisJCWlmIChwYXJh bS0+cGFyYW1raW5kID09IFBBUkFNX0VYVEVSTiB8fAorCQkJcGFyYW0tPnBhcmFta2luZCA9PSBQ QVJBTV9WQVJJQUJMRSkKIAkJCXJldHVybiBmYWxzZTsKIAogCQlpZiAocGFyYW0tPnBhcmFta2lu ZCAhPSBQQVJBTV9FWEVDIHx8CkBAIC0yMjY3LDYgKzIyNjksNyBAQCBjb252ZXJ0X3Nhb3BfdG9f aGFzaGVkX3Nhb3Bfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAgKgkgIHZhbHVl IG9mIHRoZSBQYXJhbS4KICAqIDIuIEZvbGQgc3RhYmxlLCBhcyB3ZWxsIGFzIGltbXV0YWJsZSwg ZnVuY3Rpb25zIHRvIGNvbnN0YW50cy4KICAqIDMuIFJlZHVjZSBQbGFjZUhvbGRlclZhciBub2Rl cyB0byB0aGVpciBjb250YWluZWQgZXhwcmVzc2lvbnMuCisgKiA0LiBDdXJyZW50IHZhbHVlIG9m IHNlc3Npb24gdmFyaWFibGUgY2FuIGJlIHVzZWQgZm9yIGVzdGltYXRpb24gdG9vLgogICotLS0t LS0tLS0tLS0tLS0tLS0tLQogICovCiBOb2RlICoKQEAgLTIzODksNiArMjM5MiwyOSBAQCBldmFs X2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQkJCX0KIAkJCQkJfQog CQkJCX0KKwkJCQllbHNlIGlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX1ZBUklBQkxFICYm CisJCQkJCQkgY29udGV4dC0+ZXN0aW1hdGUpCisJCQkJeworCQkJCQlpbnQxNgkJdHlwTGVuOwor CQkJCQlib29sCQl0eXBCeVZhbDsKKwkJCQkJRGF0dW0JCXB2YWw7CisJCQkJCWJvb2wJCWlzbnVs bDsKKworCQkJCQlnZXRfdHlwbGVuYnl2YWwocGFyYW0tPnBhcmFtdHlwZSwKKwkJCQkJCQkJCSZ0 eXBMZW4sICZ0eXBCeVZhbCk7CisKKwkJCQkJcHZhbCA9IENvcHlTZXNzaW9uVmFyaWFibGVXaXRo VHlwZUNoZWNrKHBhcmFtLT5wYXJhbXZhcmlkLAorCQkJCQkJCQkJCQkJCQkJJmlzbnVsbCwKKwkJ CQkJCQkJCQkJCQkJCXBhcmFtLT5wYXJhbXR5cGUpOworCisJCQkJCXJldHVybiAoTm9kZSAqKSBt YWtlQ29uc3QocGFyYW0tPnBhcmFtdHlwZSwKKwkJCQkJCQkJCQkJICBwYXJhbS0+cGFyYW10eXBt b2QsCisJCQkJCQkJCQkJCSAgcGFyYW0tPnBhcmFtY29sbGlkLAorCQkJCQkJCQkJCQkgIChpbnQp IHR5cExlbiwKKwkJCQkJCQkJCQkJICBwdmFsLAorCQkJCQkJCQkJCQkgIGlzbnVsbCwKKwkJCQkJ CQkJCQkJICB0eXBCeVZhbCk7CisJCQkJfQogCiAJCQkJLyoKIAkJCQkgKiBOb3QgcmVwbGFjZWFi bGUsIHNvIGp1c3QgY29weSB0aGUgUGFyYW0gKG5vIG5lZWQgdG8KQEAgLTQ3NTYsMjEgKzQ3ODIs NDMgQEAgc3Vic3RpdHV0ZV9hY3R1YWxfcGFyYW1ldGVyc19tdXRhdG9yKE5vZGUgKm5vZGUsCiB7 CiAJaWYgKG5vZGUgPT0gTlVMTCkKIAkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFNRTCBmdW5j dGlvbnMgY2FuIGNvbnRhaW4gdHdvIGRpZmZlcmVudCBraW5kIG9mIHBhcmFtcy4gVGhlIG5vZGVz IHdpdGgKKwkgKiBwYXJhbWtpbmQgUEFSQU1fRVhURVJOIGFyZSByZWxhdGVkIHRvIGZ1bmN0aW9u J3MgYXJndW1lbnRzIChhbmQgc2hvdWxkCisJICogYmUgcmVwbGFjZWQgaW4gdGhpcyBzdGVwKSwg YmVjYXVzZSB0aGlzIGlzIGhvdyB3ZSBhcHBseSB0aGUgZnVuY3Rpb24ncworCSAqIGFyZ3VtZW50 cyBmb3IgYW4gZXhwcmVzc2lvbi4KKwkgKgorCSAqIFRoZSBub2RlcyB3aXRoIHBhcmFta2luZCBQ QVJBTV9WQVJJQUJMRSBhcmUgcmVsYXRlZCB0byB1c2FnZSBvZiBzZXNzaW9uCisJICogdmFyaWFi bGVzLiBUaGUgdmFsdWVzIG9mIHNlc3Npb24gdmFyaWFibGVzIGFyZSBub3QgcGFzc2VkIHRvIGV4 cHJlc3Npb24KKwkgKiBieSBleHByZXNzaW9uIGFyZ3VtZW50cywgc28gaXQgc2hvdWxkIG5vdCBi ZSByZXBsYWNlZCBoZXJlIGJ5CisJICogZnVuY3Rpb24ncyBhcmd1bWVudHMuIEFsdGhvdWdoIHdl IGNvdWxkIHN1YnN0aXR1dGUgcGFyYW1zIHJlbGF0ZWQgdG8KKwkgKiBpbW11dGFibGUgc2Vzc2lv biB2YXJpYWJsZXMgd2l0aCBkZWZhdWx0IGV4cHJlc3Npb24gYnkgdGhpcyBkZWZhdWx0CisJICog ZXhwcmVzc2lvbiwgaXQgaXMgc2FmZXIgdG8gbm90IGRvIGl0LiBUaGlzIHdheSB3ZSBkb24ndCBo YXZlIHRvIHJ1bgorCSAqIHNlY3VyaXR5IGNoZWNrcyBoZXJlLiBUaGVyZSBjYW4gYmUgc29tZSBw ZXJmb3JtYW5jZSBsb3NzLCBidXQgYW4gYWNjZXNzCisJICogdG8gc2Vzc2lvbiB2YXJpYWJsZSBp cyBmYXN0IChhbmQgdGhlIHJlc3VsdCBvZiBkZWZhdWx0IGV4cHJlc3Npb24gaXMKKwkgKiBpbW1l ZGlhdGVseSBtYXRlcmlhbGl6ZWQgYW5kIGNhbiBiZSByZXVzZWQpLgorCSAqLwogCWlmIChJc0Eo bm9kZSwgUGFyYW0pKQogCXsKIAkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5vZGU7CiAK LQkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgIT0gUEFSQU1fRVhURVJOKQorCQlpZiAocGFyYW0tPnBh cmFta2luZCAhPSBQQVJBTV9FWFRFUk4gJiYKKwkJCXBhcmFtLT5wYXJhbWtpbmQgIT0gUEFSQU1f VkFSSUFCTEUpCiAJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBwYXJhbWtpbmQ6ICVkIiwgKGlu dCkgcGFyYW0tPnBhcmFta2luZCk7Ci0JCWlmIChwYXJhbS0+cGFyYW1pZCA8PSAwIHx8IHBhcmFt LT5wYXJhbWlkID4gY29udGV4dC0+bmFyZ3MpCi0JCQllbG9nKEVSUk9SLCAiaW52YWxpZCBwYXJh bWlkOiAlZCIsIHBhcmFtLT5wYXJhbWlkKTsKIAotCQkvKiBDb3VudCB1c2FnZSBvZiBwYXJhbWV0 ZXIgKi8KLQkJY29udGV4dC0+dXNlY291bnRzW3BhcmFtLT5wYXJhbWlkIC0gMV0rKzsKKwkJaWYg KHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOKQorCQl7CisJCQlpZiAocGFyYW0tPnBh cmFtaWQgPD0gMCB8fCBwYXJhbS0+cGFyYW1pZCA+IGNvbnRleHQtPm5hcmdzKQorCQkJCWVsb2co RVJST1IsICJpbnZhbGlkIHBhcmFtaWQ6ICVkIiwgcGFyYW0tPnBhcmFtaWQpOworCisJCQkvKiBD b3VudCB1c2FnZSBvZiBwYXJhbWV0ZXIgKi8KKwkJCWNvbnRleHQtPnVzZWNvdW50c1twYXJhbS0+ cGFyYW1pZCAtIDFdKys7CiAKLQkJLyogU2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBhY3R1YWwgYXJn IGFuZCByZXBsYWNlIHRoZSBQYXJhbSB3aXRoIGl0ICovCi0JCS8qIFdlIGRvbid0IG5lZWQgdG8g Y29weSBhdCB0aGlzIHRpbWUgKGl0J2xsIGdldCBkb25lIGxhdGVyKSAqLwotCQlyZXR1cm4gbGlz dF9udGgoY29udGV4dC0+YXJncywgcGFyYW0tPnBhcmFtaWQgLSAxKTsKKwkJCS8qIFNlbGVjdCB0 aGUgYXBwcm9wcmlhdGUgYWN0dWFsIGFyZyBhbmQgcmVwbGFjZSB0aGUgUGFyYW0gd2l0aCBpdCAq LworCQkJLyogV2UgZG9uJ3QgbmVlZCB0byBjb3B5IGF0IHRoaXMgdGltZSAoaXQnbGwgZ2V0IGRv bmUgbGF0ZXIpICovCisJCQlyZXR1cm4gbGlzdF9udGgoY29udGV4dC0+YXJncywgcGFyYW0tPnBh cmFtaWQgLSAxKTsKKwkJfQogCX0KIAlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX211dGF0b3Iobm9k ZSwgc3Vic3RpdHV0ZV9hY3R1YWxfcGFyYW1ldGVyc19tdXRhdG9yLAogCQkJCQkJCQkgICAodm9p ZCAqKSBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4IDY2ODhjMmE4NjUuLmQ1OWZjYTMx ZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtNTI1LDYgKzUyNSw4IEBAIHRyYW5zZm9ybURlbGV0 ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10KQogCXFyeS0+aGFzVGFy Z2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzOwogCXFyeS0+aGFzQWdncyA9IHBzdGF0 ZS0+cF9oYXNBZ2dzOwogCisJcXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzID0gcHN0YXRlLT5wX2hh c1Nlc3Npb25WYXJpYWJsZXM7CisKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFy eSk7CiAKIAkvKiB0aGlzIG11c3QgYmUgZG9uZSBhZnRlciBjb2xsYXRpb25zLCBmb3IgcmVsaWFi bGUgY29tcGFyaXNvbiBvZiBleHBycyAqLwpAQCAtOTQyLDYgKzk0NCw3IEBAIHRyYW5zZm9ybUlu c2VydFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBJbnNlcnRTdG10ICpzdG10KQogCiAJcXJ5LT5o YXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7CiAJcXJ5LT5oYXNTdWJMaW5r cyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKKwlxcnktPmhhc1Nlc3Npb25WYXJpYWJsZXMgPSBw c3RhdGUtPnBfaGFzU2Vzc2lvblZhcmlhYmxlczsKIAogCWFzc2lnbl9xdWVyeV9jb2xsYXRpb25z KHBzdGF0ZSwgcXJ5KTsKIApAQCAtMTM5Nyw2ICsxNDAwLDcgQEAgdHJhbnNmb3JtU2VsZWN0U3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJcXJ5LT5oYXNXaW5kb3dG dW5jcyA9IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jczsKIAlxcnktPmhhc1RhcmdldFNSRnMgPSBw c3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKIAlxcnktPmhhc0FnZ3MgPSBwc3RhdGUtPnBfaGFzQWdn czsKKwlxcnktPmhhc1Nlc3Npb25WYXJpYWJsZXMgPSBwc3RhdGUtPnBfaGFzU2Vzc2lvblZhcmlh YmxlczsKIAogCWZvcmVhY2gobCwgc3RtdC0+bG9ja2luZ0NsYXVzZSkKIAl7CkBAIC0xNjIyLDYg KzE2MjYsNyBAQCB0cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxl Y3RTdG10ICpzdG10KQogCXFyeS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pv aW5saXN0LCBOVUxMKTsKIAogCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlu a3M7CisJcXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzID0gcHN0YXRlLT5wX2hhc1Nlc3Npb25WYXJp YWJsZXM7CiAKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7CiAKQEAgLTE4 NzEsNiArMTg3Niw3IEBAIHRyYW5zZm9ybVNldE9wZXJhdGlvblN0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBTZWxlY3RTdG10ICpzdG10KQogCXFyeS0+aGFzV2luZG93RnVuY3MgPSBwc3RhdGUtPnBf aGFzV2luZG93RnVuY3M7CiAJcXJ5LT5oYXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1Rhcmdl dFNSRnM7CiAJcXJ5LT5oYXNBZ2dzID0gcHN0YXRlLT5wX2hhc0FnZ3M7CisJcXJ5LT5oYXNTZXNz aW9uVmFyaWFibGVzID0gcHN0YXRlLT5wX2hhc1Nlc3Npb25WYXJpYWJsZXM7CiAKIAlmb3JlYWNo KGwsIGxvY2tpbmdDbGF1c2UpCiAJewpAQCAtMjQwOSw2ICsyNDE1LDcgQEAgdHJhbnNmb3JtVXBk YXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAKIAlxcnktPmhh c1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKIAlxcnktPmhhc1N1Ykxpbmtz ID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOworCXFyeS0+aGFzU2Vzc2lvblZhcmlhYmxlcyA9IHBz dGF0ZS0+cF9oYXNTZXNzaW9uVmFyaWFibGVzOwogCiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMo cHN0YXRlLCBxcnkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCAxYmI4YzVhODUwLi4w NjljNTgwOWJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTMzLDE1ICszMywxNyBAQAog I2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJz ZV90YXJnZXQuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRp bHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMveG1sLmgiCiAKIC8qIEdVQyBwYXJhbWV0ZXJzICovCiBib29sCQlUcmFuc2Zvcm1fbnVsbF9l cXVhbHMgPSBmYWxzZTsKLQorYm9vbAkJc2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5p bmcgPSBmYWxzZTsKIAogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqZXhwcik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtUGFyYW1SZWYo UGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJhbVJlZiAqcHJlZik7CkBAIC04MSw2ICs4Myw5IEBAIHN0 YXRpYyBFeHByICptYWtlX2Rpc3RpbmN0X29wKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3Bu YW1lLAogCQkJCQkJCSAgTm9kZSAqbHRyZWUsIE5vZGUgKnJ0cmVlLCBpbnQgbG9jYXRpb24pOwog c3RhdGljIE5vZGUgKm1ha2VfbnVsbHRlc3RfZnJvbV9kaXN0aW5jdChQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCQkJCQkJCQkJIEFfRXhwciAqZGlzdGluY3RhLCBOb2RlICphcmcpOworc3RhdGljIE5v ZGUgKm1ha2VQYXJhbVNlc3Npb25WYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJ CQkgIE9pZCB2YXJpZCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIE9pZCBjb2xsaWQsCisJCQkJ CQkJCQkgIGNoYXIgKmF0dHJuYW1lLCBpbnQgbG9jYXRpb24pOwogCiAKIC8qCkBAIC00MjQsNiAr NDI5LDU5IEBAIHRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRp cmVjdGlvbiAqaW5kKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBSZXR1cm5zIHRydWUs IHdoZW4gZXhwcmVzc2lvbiBvZiBraW5kIGFsbG93cyB1c2luZyBvZgorICogc2Vzc2lvbiB2YXJp YWJsZXMuCisgKi8KK3N0YXRpYyBib29sCitleHByX2tpbmRfYWxsb3dzX3Nlc3Npb25fdmFyaWFi bGVzKFBhcnNlRXhwcktpbmQgcF9leHByX2tpbmQpCit7CisJc3dpdGNoIChwX2V4cHJfa2luZCkK Kwl7CisJCWNhc2UgRVhQUl9LSU5EX05PTkU6CisJCQlBc3NlcnQoZmFsc2UpOwkJLyogY2FuJ3Qg aGFwcGVuICovCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJY2FzZSBFWFBSX0tJTkRfT1RIRVI6CisJ CWNhc2UgRVhQUl9LSU5EX0pPSU5fT046CisJCWNhc2UgRVhQUl9LSU5EX0ZST01fU1VCU0VMRUNU OgorCQljYXNlIEVYUFJfS0lORF9GUk9NX0ZVTkNUSU9OOgorCQljYXNlIEVYUFJfS0lORF9XSEVS RToKKwkJY2FzZSBFWFBSX0tJTkRfSEFWSU5HOgorCQljYXNlIEVYUFJfS0lORF9GSUxURVI6CisJ CWNhc2UgRVhQUl9LSU5EX1dJTkRPV19QQVJUSVRJT046CisJCWNhc2UgRVhQUl9LSU5EX1dJTkRP V19PUkRFUjoKKwkJY2FzZSBFWFBSX0tJTkRfV0lORE9XX0ZSQU1FX1JBTkdFOgorCQljYXNlIEVY UFJfS0lORF9XSU5ET1dfRlJBTUVfUk9XUzoKKwkJY2FzZSBFWFBSX0tJTkRfV0lORE9XX0ZSQU1F X0dST1VQUzoKKwkJY2FzZSBFWFBSX0tJTkRfU0VMRUNUX1RBUkdFVDoKKwkJY2FzZSBFWFBSX0tJ TkRfSU5TRVJUX1RBUkdFVDoKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1NPVVJDRToKKwkJY2Fz ZSBFWFBSX0tJTkRfVVBEQVRFX1RBUkdFVDoKKwkJY2FzZSBFWFBSX0tJTkRfTUVSR0VfV0hFTjoK KwkJY2FzZSBFWFBSX0tJTkRfR1JPVVBfQlk6CisJCWNhc2UgRVhQUl9LSU5EX09SREVSX0JZOgor CQljYXNlIEVYUFJfS0lORF9ESVNUSU5DVF9PTjoKKwkJY2FzZSBFWFBSX0tJTkRfTElNSVQ6CisJ CWNhc2UgRVhQUl9LSU5EX09GRlNFVDoKKwkJY2FzZSBFWFBSX0tJTkRfUkVUVVJOSU5HOgorCQlj YXNlIEVYUFJfS0lORF9WQUxVRVM6CisJCWNhc2UgRVhQUl9LSU5EX1ZBTFVFU19TSU5HTEU6CisJ CWNhc2UgRVhQUl9LSU5EX0FMVEVSX0NPTF9UUkFOU0ZPUk06CisJCWNhc2UgRVhQUl9LSU5EX0VY RUNVVEVfUEFSQU1FVEVSOgorCQljYXNlIEVYUFJfS0lORF9QT0xJQ1k6CisJCWNhc2UgRVhQUl9L SU5EX0NBTExfQVJHVU1FTlQ6CisJCWNhc2UgRVhQUl9LSU5EX0NPUFlfV0hFUkU6CisJCWNhc2Ug RVhQUl9LSU5EX0xFVF9UQVJHRVQ6CisKKwkJCS8qIG9rYXkgKi8KKwkJCXJldHVybiB0cnVlOwor CisJCWRlZmF1bHQ6CisJCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCiAvKgogICogVHJhbnNmb3Jt IGEgQ29sdW1uUmVmLgogICoKQEAgLTc3Miw2ICs4MzAsMTYxIEBAIHRyYW5zZm9ybUNvbHVtblJl ZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGNyZWYtPmxvY2F0aW9uKSkpOwogCX0KIAorCS8qCisJICogVGhlcmUg YXJlIGNvbnRleHRzIHdoZXJlIHNlc3Npb24ncyB2YXJpYWJsZXMgYXJlIG5vdCBhbGxvd2VkLiBU aGUKKwkgKiBxdWVzdGlvbiBpcyBpZiB3ZSB3YW50IHRvIGlkZW50aWZ5IHNlc3Npb24ncyB2YXJp YWJsZXMgaW4gdGhlc2UKKwkgKiBjb250ZXh0cz8gVGhlIGNvZGUgY2FuIGJlIG1vcmUgc2ltcGxl LCB3aGVuIHdlIGRvbid0IGRvIGl0LCBidXQgdGhlbiB3ZQorCSAqIGNhbm5vdCB0byByYWlzZSBt YXliZSB1c2VmdWwgbWVzc2FnZSBsaWtlICJ5b3UgY2Fubm90IHRvIHVzZSBzZXNzaW9uCisJICog dmFyaWFibGVzIGhlcmUiLiBPbiBzZWNvbmQgaGFuZCwgaW4gdGhpcyBjYXNlIHRoZSB3YXJuaW5n cyBhYm91dAorCSAqIHNlc3Npb24ncyB2YXJpYWJsZSBzaGFkb3dpbmcgY2FuIGJlIG1lc3N5Lgor CSAqLworCWlmIChleHByX2tpbmRfYWxsb3dzX3Nlc3Npb25fdmFyaWFibGVzKHBzdGF0ZS0+cF9l eHByX2tpbmQpKQorCXsKKwkJT2lkCQkJdmFyaWQgPSBJbnZhbGlkT2lkOworCQljaGFyCSAgICph dHRybmFtZSA9IE5VTEw7CisJCWJvb2wJCW5vdF91bmlxdWU7CisKKwkJLyoKKwkJICogU2Vzc2lv biB2YXJpYWJsZXMgYXJlIHNoYWRvd2VkIGJ5IGNvbHVtbnMsIHJvdXRpbmUncyB2YXJpYWJsZXMg b3IKKwkJICogcm91dGluZSdzIGFyZ3VtZW50cyBldmVyLiBXZSBkb24ndCB3YW50IHRvIHVzZSBz ZXNzaW9uIHZhcmlhYmxlCisJCSAqIHdoZW4gaXQgaXMgbm90IGV4YWN0bHkgc2hhZG93ZWQsIGJ1 dCBSVEUgaXMgdmFsaWQgbGlrZToKKwkJICoKKwkJICogQ1JFQVRFIFRZUEUgVCBBUyAoYyBpbnQp OyBDUkVBVEUgVkFSSUFCTEUgZm9vIEFTIFQ7IENSRUFURSBUQUJMRQorCQkgKiBmb28oYSBpbnQs IGIgaW50KTsKKwkJICoKKwkJICogU0VMRUNUIGZvby5hLCBmb28uYiwgZm9vLmMgRlJPTSBmb287 CisJCSAqCisJCSAqIFRoaXMgY2FzZSBjYW4gYmUgbWVzc3kgYW5kIHRoZW4gd2UgZGlzYWxsb3cg aXQuIFdoZW4gd2Uga25vdywgc28KKwkJICogcG9zc2libGUgdmFyaWFibGUgd2lsbCBiZSBzaGFk b3dlZCwgd2UgdHJ5IHRvIGlkZW50aWZ5IHZhcmlhYmxlCisJCSAqIG9ubHkgd2hlbiBzZXNzaW9u X3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2FybmluZyBpcyByZXF1ZXN0ZWQuCisJCSAqLworCQlpZiAo bm9kZSB8fAorCQkJKCFub2RlICYmIHJlbG5hbWUgJiYgY3JlcnIgPT0gQ1JFUlJfTk9fQ09MVU1O KSkKKwkJeworCQkJLyoKKwkJCSAqIEluIHRoaXMgcGF0aCB3ZSBqdXN0IHRyeSAoaWYgaXQgaXMg d2FudGVkKSBkZXRlY3QgaWYgc2Vzc2lvbgorCQkJICogdmFyaWFibGUgaXMgc2hhZG93ZWQuCisJ CQkgKi8KKwkJCWlmIChzZXNzaW9uX3ZhcmlhYmxlc19hbWJpZ3VpdHlfd2FybmluZykKKwkJCXsK KwkJCQkvKgorCQkJCSAqIFRoZSBBY2Nlc3NTaGFyZUxvY2sgaXMgY3JlYXRlZCBvbiByZWxhdGVk IHNlc3Npb24gdmFyaWFibGUuIFRoZSBsb2NrCisJCQkJICogd2lsbCBiZSBrZXB0IGZvciB0aGUg d2hvbGUgdHJhbnNhY3Rpb24uCisJCQkJICovCisJCQkJdmFyaWQgPSBJZGVudGlmeVZhcmlhYmxl KGNyZWYtPmZpZWxkcywgJmF0dHJuYW1lLCAmbm90X3VuaXF1ZSk7CisKKwkJCQkvKiBUaGlzIHBh dGggd2lsbCBlbmRpbmcgYnkgV0FSTklORy4gVW5sb2NrIHZhcmlhYmxlIGZpcnN0ICovCisJCQkJ aWYgKE9pZElzVmFsaWQodmFyaWQpKQorCQkJCQlVbmxvY2tEYXRhYmFzZU9iamVjdChWYXJpYWJs ZVJlbGF0aW9uSWQsIHZhcmlkLCAwLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQkJLyoKKwkJCQkg KiBTb21lIGNhc2VzIHdpdGggYW1iaWd1b3VzIHJlZmVyZW5jZXMgY2FuIGJlIHNvbHZlZCB3aXRo b3V0CisJCQkJICogcmFpc2luZyBhIHdhcm5pbmcuIFdoZW4gdGhlcmUgaXMgYSBjb2xsaXNpb24g YmV0d2VlbiBjb2x1bW4KKwkJCQkgKiBuYW1lIChvciBsYWJlbCkgYW5kIHNvbWUgc2Vzc2lvbiB2 YXJpYWJsZSBuYW1lLCBhbmQgd2hlbiB3ZQorCQkJCSAqIGtub3cgYXR0cmlidXRlIG5hbWUsIHRo ZW4gd2UgY2FuIGlnbm9yZSB0aGUgY29sbGlzaW9uIHdoZW46CisJCQkJICoKKwkJCQkgKiBhKSB2 YXJpYWJsZSBpcyBvZiBzY2FsYXIgdHlwZSAodGhlbiBpbmRpcmVjdGlvbiBjYW5ub3QgYmUKKwkJ CQkgKiBhcHBsaWVkIG9uIHRoaXMgc2Vzc2lvbiB2YXJpYWJsZS4KKwkJCQkgKgorCQkJCSAqIGIp IHdoZW4gcmVsYXRlZCB2YXJpYWJsZSBoYXMgbm8gZmllbGQgd2l0aCB0aGUgZ2l2ZW4KKwkJCQkg KiBhdHRybmFtZSwgdGhlbiBpbmRpcmVjdGlvbiBjYW5ub3QgYmUgYXBwbGllZCBvbiB0aGlzCisJ CQkJICogc2Vzc2lvbiB2YXJpYWJsZS4KKwkJCQkgKi8KKwkJCQlpZiAoT2lkSXNWYWxpZCh2YXJp ZCkgJiYgYXR0cm5hbWUgJiYgbm9kZSkKKwkJCQl7CisJCQkJCU9pZAkJCXR5cGlkOworCQkJCQlP aWQJCQljb2xsaWQ7CisJCQkJCWludDMyCQl0eXBtb2Q7CisKKwkJCQkJZ2V0X3Nlc3Npb25fdmFy aWFibGVfdHlwZV90eXBtb2RfY29sbGlkKHZhcmlkLAorCQkJCQkJCQkJCQkJCQkJJnR5cGlkLCAm dHlwbW9kLAorCQkJCQkJCQkJCQkJCQkJJmNvbGxpZCk7CisKKwkJCQkJaWYgKHR5cGVfaXNfcm93 dHlwZSh0eXBpZCkpCisJCQkJCXsKKwkJCQkJCVR1cGxlRGVzYwl0dXBkZXNjOworCQkJCQkJYm9v bAkJZm91bmQgPSBmYWxzZTsKKwkJCQkJCWludAkJCWk7CisKKwkJCQkJCS8qIHNsb3cgcGFydCwg SSBob3BlIGl0IHdpbGwgbm90IGJlIHRvIG9mdGVuICovCisJCQkJCQl0dXBkZXNjID0gbG9va3Vw X3Jvd3R5cGVfdHVwZGVzYyh0eXBpZCwgdHlwbW9kKTsKKwkJCQkJCWZvciAoaSA9IDA7IGkgPCB0 dXBkZXNjLT5uYXR0czsgaSsrKQorCQkJCQkJeworCQkJCQkJCWlmIChuYW1lc3RyY21wKCYoVHVw bGVEZXNjQXR0cih0dXBkZXNjLCBpKS0+YXR0bmFtZSksIGF0dHJuYW1lKSA9PSAwICYmCisJCQkJ CQkJCSFUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGkpLT5hdHRpc2Ryb3BwZWQpCisJCQkJCQkJewor CQkJCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJCX0KKwkJCQkJCX0K KworCQkJCQkJUmVsZWFzZVR1cGxlRGVzYyh0dXBkZXNjKTsKKworCQkJCQkJLyogVGhlcmUgaXMg bm8gY29tcG9zaXRlIHZhcmlhYmxlIHdpdGggdGhpcyBmaWVsZC4gKi8KKwkJCQkJCWlmICghZm91 bmQpCisJCQkJCQkJdmFyaWQgPSBJbnZhbGlkT2lkOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJ CS8qIFRoZXJlIGlzIG5vIGNvbXBvc2l0ZSB2YXJpYWJsZSB3aXRoIHRoaXMgbmFtZS4gKi8KKwkJ CQkJCXZhcmlkID0gSW52YWxpZE9pZDsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSAqIFJhaXNlIHdh cm5pbmcgd2hlbiBzZXNzaW9uIHZhcmlhYmxlIHJlZmVyZW5jZSBpcyBzdGlsbAorCQkJCSAqIHZp c2libGUuCisJCQkJICovCisJCQkJaWYgKE9pZElzVmFsaWQodmFyaWQpKQorCQkJCXsKKwkJCQkJ aWYgKG5vZGUpCisJCQkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfQU1CSUdVT1VTX0NPTFVNTiksCisJCQkJCQkJCSBlcnJtc2coInNlc3Npb24gdmFyaWFibGUg XCIlc1wiIGlzIHNoYWRvd2VkIiwKKwkJCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKGNyZWYtPmZp ZWxkcykpLAorCQkJCQkJCQkgZXJyZGV0YWlsKCJTZXNzaW9uIHZhcmlhYmxlcyBjYW4gYmUgc2hh ZG93ZWQgYnkgY29sdW1ucywgcm91dGluZSdzIHZhcmlhYmxlcyBhbmQgcm91dGluZSdzIGFyZ3Vt ZW50cyB3aXRoIHRoZSBzYW1lIG5hbWUuIiksCisJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKKwkJCQkJZWxzZQorCQkJCQkJLyogc2Vzc2lvbiB2 YXJpYWJsZSBpcyBzaGFkb3dlZCBieSBSVEUgKi8KKwkJCQkJCWVyZXBvcnQoV0FSTklORywKKwkJ CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9BTUJJR1VPVVNfQ09MVU1OKSwKKwkJCQkJCQkJIGVycm1z Zygic2Vzc2lvbiB2YXJpYWJsZSBcIiVzLiVzXCIgaXMgc2hhZG93ZWQiLAorCQkJCQkJCQkJCWdl dF9uYW1lc3BhY2VfbmFtZShnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2UodmFyaWQpKSwK KwkJCQkJCQkJCQlnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlkKSksCisJCQkJCQkJCSBl cnJkZXRhaWwoIlNlc3Npb24gdmFyaWFibGVzIGNhbiBiZSBzaGFkb3dlZCBieSB0YWJsZXMgb3Ig dGFibGUncyBhbGlhc2VzIHdpdGggdGhlIHNhbWUgbmFtZS4iKSwKKwkJCQkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGNyZWYtPmxvY2F0aW9uKSkpOworCQkJCX0KKwkJCX0KKwkJfQor CQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgQWNjZXNzU2hhcmVMb2NrIGlzIGNyZWF0ZWQg b24gcmVsYXRlZCBzZXNzaW9uIHZhcmlhYmxlLiBUaGUgbG9jaworCQkJICogd2lsbCBiZSBrZXB0 IGZvciB0aGUgd2hvbGUgdHJhbnNhY3Rpb24uCisJCQkqLworCQkJdmFyaWQgPSBJZGVudGlmeVZh cmlhYmxlKGNyZWYtPmZpZWxkcywgJmF0dHJuYW1lLCAmbm90X3VuaXF1ZSk7CisKKwkJCWlmIChP aWRJc1ZhbGlkKHZhcmlkKSkKKwkJCXsKKwkJCQlPaWQJCQl0eXBpZDsKKwkJCQlpbnQzMgkJdHlw bW9kOworCQkJCU9pZAkJCWNvbGxpZDsKKworCQkJCWlmIChub3RfdW5pcXVlKQorCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VTX1BBUkFNRVRFUiks CisJCQkJCQkJIGVycm1zZygic2Vzc2lvbiB2YXJpYWJsZSByZWZlcmVuY2UgXCIlc1wiIGlzIGFt YmlndW91cyIsCisJCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKGNyZWYtPmZpZWxkcykpLAorCQkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKKworCQkJ CWdldF9zZXNzaW9uX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2NvbGxpZCh2YXJpZCwgJnR5cGlkLCAm dHlwbW9kLAorCQkJCQkJCQkJCQkJCQkmY29sbGlkKTsKKworCQkJCW5vZGUgPSBtYWtlUGFyYW1T ZXNzaW9uVmFyaWFibGUocHN0YXRlLAorCQkJCQkJCQkJCQkJdmFyaWQsIHR5cGlkLCB0eXBtb2Qs IGNvbGxpZCwKKwkJCQkJCQkJCQkJCWF0dHJuYW1lLCBjcmVmLT5sb2NhdGlvbik7CisJCQl9CisJ CX0KKwl9CisKIAkvKgogCSAqIFRocm93IGVycm9yIGlmIG5vIHRyYW5zbGF0aW9uIGZvdW5kLgog CSAqLwpAQCAtODA2LDYgKzEwMTksNjQgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCXJldHVybiBub2RlOwogfQogCisvKgorICogR2Vu ZXJhdGUgcGFyYW0gdmFyaWFibGUgZm9yIHJlZmVyZW5jZSB0byBzZXNzaW9uIHZhcmlhYmxlCisg Ki8KK3N0YXRpYyBOb2RlICoKK21ha2VQYXJhbVNlc3Npb25WYXJpYWJsZShQYXJzZVN0YXRlICpw c3RhdGUsCisJCQkJCQkgT2lkIHZhcmlkLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgT2lkIGNv bGxpZCwKKwkJCQkJCSBjaGFyICphdHRybmFtZSwgaW50IGxvY2F0aW9uKQoreworCVBhcmFtCSAg ICpwYXJhbTsKKworCXBhcmFtID0gbWFrZU5vZGUoUGFyYW0pOworCisJcGFyYW0tPnBhcmFta2lu ZCA9IFBBUkFNX1ZBUklBQkxFOworCXBhcmFtLT5wYXJhbXZhcmlkID0gdmFyaWQ7CisJcGFyYW0t PnBhcmFtdHlwZSA9IHR5cGlkOworCXBhcmFtLT5wYXJhbXR5cG1vZCA9IHR5cG1vZDsKKwlwYXJh bS0+cGFyYW1jb2xsaWQgPSBjb2xsaWQ7CisKKwlwc3RhdGUtPnBfaGFzU2Vzc2lvblZhcmlhYmxl cyA9IHRydWU7CisKKwlpZiAoYXR0cm5hbWUgIT0gTlVMTCkKKwl7CisJCVR1cGxlRGVzYwl0dXBk ZXNjOworCQlpbnQJCQlpOworCisJCXR1cGRlc2MgPSBsb29rdXBfcm93dHlwZV90dXBkZXNjKHR5 cGlkLCB0eXBtb2QpOworCisJCWZvciAoaSA9IDA7IGkgPCB0dXBkZXNjLT5uYXR0czsgaSsrKQor CQl7CisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGkp OworCisJCQlpZiAoc3RyY21wKGF0dHJuYW1lLCBOYW1lU3RyKGF0dC0+YXR0bmFtZSkpID09IDAg JiYKKwkJCQkhYXR0LT5hdHRpc2Ryb3BwZWQpCisJCQl7CisJCQkJLyogU3VjY2Vzcywgc28gZ2Vu ZXJhdGUgYSBGaWVsZFNlbGVjdCBleHByZXNzaW9uICovCisJCQkJRmllbGRTZWxlY3QgKmZzZWxl Y3QgPSBtYWtlTm9kZShGaWVsZFNlbGVjdCk7CisKKwkJCQlmc2VsZWN0LT5hcmcgPSAoRXhwciAq KSBwYXJhbTsKKwkJCQlmc2VsZWN0LT5maWVsZG51bSA9IGkgKyAxOworCQkJCWZzZWxlY3QtPnJl c3VsdHR5cGUgPSBhdHQtPmF0dHR5cGlkOworCQkJCWZzZWxlY3QtPnJlc3VsdHR5cG1vZCA9IGF0 dC0+YXR0dHlwbW9kOworCQkJCS8qIHNhdmUgYXR0cmlidXRlJ3MgY29sbGF0aW9uIGZvciBwYXJz ZV9jb2xsYXRlLmMgKi8KKwkJCQlmc2VsZWN0LT5yZXN1bHRjb2xsaWQgPSBhdHQtPmF0dGNvbGxh dGlvbjsKKworCQkJCVJlbGVhc2VUdXBsZURlc2ModHVwZGVzYyk7CisJCQkJcmV0dXJuIChOb2Rl ICopIGZzZWxlY3Q7CisJCQl9CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY291bGQgbm90IGlkZW50 aWZ5IGNvbHVtbiBcIiVzXCIgaW4gdmFyaWFibGUiLCBhdHRybmFtZSksCisJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOworCX0KKworCXJldHVybiAoTm9kZSAqKSBw YXJhbTsKK30KKwogc3RhdGljIE5vZGUgKgogdHJhbnNmb3JtUGFyYW1SZWYoUGFyc2VTdGF0ZSAq cHN0YXRlLCBQYXJhbVJlZiAqcHJlZikKIHsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3Av cHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDUyZTJkYjY0NTIuLjA2 YTViZmJiZmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3Jj L2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtODYsNiArODYsOSBAQCBDcmVhdGVRdWVyeURlc2Mo UGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAogCXFkLT5xdWVyeUVudiA9IHF1ZXJ5RW52OwogCXFk LT5pbnN0cnVtZW50X29wdGlvbnMgPSBpbnN0cnVtZW50X29wdGlvbnM7CS8qIGluc3RydW1lbnRh dGlvbiB3YW50ZWQ/ICovCiAKKwlxZC0+bnVtX3Nlc3Npb25fdmFyaWFibGVzID0gMDsKKwlxZC0+ c2Vzc2lvbl92YXJpYWJsZXMgPSBOVUxMOworCiAJLyogbnVsbCB0aGVzZSBmaWVsZHMgdW50aWwg c2V0IGJ5IEV4ZWN1dG9yU3RhcnQgKi8KIAlxZC0+dHVwRGVzYyA9IE5VTEw7CiAJcWQtPmVzdGF0 ZSA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggYTIwYTFiMDY5Yi4uYWE2 YjY2Yzc4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMzgsNiArMzgsNyBAQAog I2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHJpZ2dlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNs dWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY29tbW9uL2tleXdvcmRzLmgi CkBAIC00OTYsNiArNDk3LDcgQEAgc3RhdGljIGNoYXIgKmdlbmVyYXRlX2Z1bmN0aW9uX25hbWUo T2lkIGZ1bmNpZCwgaW50IG5hcmdzLAogc3RhdGljIGNoYXIgKmdlbmVyYXRlX29wZXJhdG9yX25h bWUoT2lkIG9wZXJpZCwgT2lkIGFyZzEsIE9pZCBhcmcyKTsKIHN0YXRpYyB2b2lkIGFkZF9jYXN0 X3RvKFN0cmluZ0luZm8gYnVmLCBPaWQgdHlwaWQpOwogc3RhdGljIGNoYXIgKmdlbmVyYXRlX3F1 YWxpZmllZF90eXBlX25hbWUoT2lkIHR5cGlkKTsKK3N0YXRpYyBjaGFyICpnZW5lcmF0ZV9zZXNz aW9uX3ZhcmlhYmxlX25hbWUoT2lkIHZhcmlkKTsKIHN0YXRpYyB0ZXh0ICpzdHJpbmdfdG9fdGV4 dChjaGFyICpzdHIpOwogc3RhdGljIGNoYXIgKmZsYXR0ZW5fcmVsb3B0aW9ucyhPaWQgcmVsaWQp Owogc3RhdGljIHZvaWQgZ2V0X3JlbG9wdGlvbnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9w dGlvbnMpOwpAQCAtODA0NCw2ICs4MDQ2LDE0IEBAIGdldF9wYXJhbWV0ZXIoUGFyYW0gKnBhcmFt LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJCXJldHVybjsKIAl9CiAKKwkvKiB0cmFuc2xh dGUgcGFyYW12YXJpZCB0byBzZXNzaW9uIHZhcmlhYmxlIG5hbWUgKi8KKwlpZiAocGFyYW0tPnBh cmFta2luZCA9PSBQQVJBTV9WQVJJQUJMRSkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm8oY29udGV4 dC0+YnVmLCAiJXMiLAorCQkJCQkJIGdlbmVyYXRlX3Nlc3Npb25fdmFyaWFibGVfbmFtZShwYXJh bS0+cGFyYW12YXJpZCkpOworCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBJZiBpdCdzIGFuIGV4 dGVybmFsIHBhcmFtZXRlciwgc2VlIGlmIHRoZSBvdXRlcm1vc3QgbmFtZXNwYWNlIHByb3ZpZGVz CiAJICogZnVuY3Rpb24gYXJndW1lbnQgbmFtZXMuCkBAIC0xMjA2NCw2ICsxMjA3NCw0MiBAQCBn ZW5lcmF0ZV9jb2xsYXRpb25fbmFtZShPaWQgY29sbGlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAK Ky8qCisgKiBnZW5lcmF0ZV9zZXNzaW9uX3ZhcmlhYmxlX25hbWUKKyAqCQlDb21wdXRlIHRoZSBu YW1lIHRvIGRpc3BsYXkgZm9yIGEgc2Vzc2lvbiB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgT0lECisg KgorICogVGhlIHJlc3VsdCBpbmNsdWRlcyBhbGwgbmVjZXNzYXJ5IHF1b3RpbmcgYW5kIHNjaGVt YS1wcmVmaXhpbmcuCisgKi8KK3N0YXRpYyBjaGFyICoKK2dlbmVyYXRlX3Nlc3Npb25fdmFyaWFi bGVfbmFtZShPaWQgdmFyaWQpCit7CisJSGVhcFR1cGxlCXR1cDsKKwlGb3JtX3BnX3ZhcmlhYmxl IHZhcmZvcm07CisJY2hhcgkgICAqdmFybmFtZTsKKwljaGFyCSAgICpuc3BuYW1lOworCWNoYXIJ ICAgKnJlc3VsdDsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0 SWRHZXREYXR1bSh2YXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB2YXJpYWJsZSAldSIsIHZhcmlkKTsK KworCXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwl2YXJu YW1lID0gTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKTsKKworCWlmICghVmFyaWFibGVJc1Zpc2li bGUodmFyaWQpKQorCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAodmFyZm9y bS0+dmFybmFtZXNwYWNlKTsKKwllbHNlCisJCW5zcG5hbWUgPSBOVUxMOworCisJcmVzdWx0ID0g cXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIobnNwbmFtZSwgdmFybmFtZSk7CisKKwlSZWxlYXNl U3lzQ2FjaGUodHVwKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBHaXZlbiBhIEMg c3RyaW5nLCBwcm9kdWNlIGEgVEVYVCBkYXR1bS4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5j YWNoZS5jCmluZGV4IGNjOTQzMjA1ZDMuLmI4MjRiZWY5OGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3BsYW5jYWNoZS5jCkBAIC01OCw2ICs1OCw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNh bS5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z192YXJpYWJsZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCkBAIC0xODY1LDkgKzE4 NjYsMTIgQEAgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBhcnNldHJlZSwgYm9vbCBhY3F1aXJl KQogCiAJLyoKIAkgKiBSZWN1cnNlIGludG8gc3VibGluayBzdWJxdWVyaWVzLCB0b28uICBCdXQg d2UgYWxyZWFkeSBkaWQgdGhlIG9uZXMgaW4KLQkgKiB0aGUgcnRhYmxlIGFuZCBjdGVMaXN0Lgor CSAqIHRoZSBydGFibGUgYW5kIGN0ZUxpc3QuIFdlIG5lZWQgdG8gZm9yY2UgcmVjdXJzaXZlIGNh bGwgZm9yIHNlc3Npb24KKwkgKiB2YXJpYWJsZXMgdG9vLCB0byBmaW5kIGFuZCBsb2NrIHZhcmlh YmxlcyB1c2VkIGluIHF1ZXJ5IChzZWUKKwkgKiBTY2FuUXVlcnlXYWxrZXIpLgogCSAqLwotCWlm IChwYXJzZXRyZWUtPmhhc1N1YkxpbmtzKQorCWlmIChwYXJzZXRyZWUtPmhhc1N1YkxpbmtzIHx8 CisJCXBhcnNldHJlZS0+aGFzU2Vzc2lvblZhcmlhYmxlcykKIAl7CiAJCXF1ZXJ5X3RyZWVfd2Fs a2VyKHBhcnNldHJlZSwgU2NhblF1ZXJ5V2Fsa2VyLAogCQkJCQkJICAodm9pZCAqKSAmYWNxdWly ZSwKQEAgLTE4NzYsNyArMTg4MCw4IEBAIFNjYW5RdWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJzZXRy ZWUsIGJvb2wgYWNxdWlyZSkKIH0KIAogLyoKLSAqIFdhbGtlciB0byBmaW5kIHN1Ymxpbmsgc3Vi cXVlcmllcyBmb3IgU2NhblF1ZXJ5Rm9yTG9ja3MKKyAqIFdhbGtlciB0byBmaW5kIHN1Ymxpbmsg c3VicXVlcmllcyBvciByZWZlcmVuY2VkIHNlc3Npb24gdmFyaWFibGVzCisgKiBmb3IgU2NhblF1 ZXJ5Rm9yTG9ja3MKICAqLwogc3RhdGljIGJvb2wKIFNjYW5RdWVyeVdhbGtlcihOb2RlICpub2Rl LCBib29sICphY3F1aXJlKQpAQCAtMTg5MSw2ICsxODk2LDIwIEBAIFNjYW5RdWVyeVdhbGtlcihO b2RlICpub2RlLCBib29sICphY3F1aXJlKQogCQlTY2FuUXVlcnlGb3JMb2NrcyhjYXN0Tm9kZShR dWVyeSwgc3ViLT5zdWJzZWxlY3QpLCAqYWNxdWlyZSk7CiAJCS8qIEZhbGwgdGhyb3VnaCB0byBw cm9jZXNzIGxlZnRoYW5kIGFyZ3Mgb2YgU3ViTGluayAqLwogCX0KKwllbHNlIGlmIChJc0Eobm9k ZSwgUGFyYW0pKQorCXsKKwkJUGFyYW0JICAgKnAgPSAoUGFyYW0gKikgbm9kZTsKKworCQlpZiAo cC0+cGFyYW1raW5kID09IFBBUkFNX1ZBUklBQkxFKQorCQl7CisJCQlpZiAoYWNxdWlyZSkKKwkJ CQlMb2NrRGF0YWJhc2VPYmplY3QoVmFyaWFibGVSZWxhdGlvbklkLCBwLT5wYXJhbXZhcmlkLAor CQkJCQkJCQkgICAwLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJZWxzZQorCQkJCVVubG9ja0RhdGFi YXNlT2JqZWN0KFZhcmlhYmxlUmVsYXRpb25JZCwgcC0+cGFyYW12YXJpZCwKKwkJCQkJCQkJCSAw LCBBY2Nlc3NTaGFyZUxvY2spOworCQl9CisJfQogCiAJLyoKIAkgKiBEbyBOT1QgcmVjdXJzZSBp bnRvIFF1ZXJ5IG5vZGVzLCBiZWNhdXNlIFNjYW5RdWVyeUZvckxvY2tzIGFscmVhZHkKQEAgLTIw MjIsNyArMjA0MSw5IEBAIFBsYW5DYWNoZVJlbENhbGxiYWNrKERhdHVtIGFyZywgT2lkIHJlbGlk KQogCiAvKgogICogUGxhbkNhY2hlT2JqZWN0Q2FsbGJhY2sKLSAqCQlTeXNjYWNoZSBpbnZhbCBj YWxsYmFjayBmdW5jdGlvbiBmb3IgUFJPQ09JRCBhbmQgVFlQRU9JRCBjYWNoZXMKKyAqCQlTeXNj YWNoZSBpbnZhbCBjYWxsYmFjayBmdW5jdGlvbiBmb3IgVFlQRU9JRCwgUFJPQ09JRCwgTkFNRVNQ QUNFT0lELAorICogT1BFUk9JRCwgQU1PUE9QSUQsIEZPUkVJR05TRVJWRVJPSUQsIEZPUkVJR05E QVRBV1JBUFBFUk9JRCBhbmQgVkFSSUFCTEVPSUQKKyAqIGNhY2hlcy4KICAqCiAgKiBJbnZhbGlk YXRlIGFsbCBwbGFucyBtZW50aW9uaW5nIHRoZSBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGhh c2ggdmFsdWUsCiAgKiBvciBhbGwgcGxhbnMgbWVudGlvbmluZyBhbnkgbWVtYmVyIG9mIHRoaXMg Y2FjaGUgaWYgaGFzaHZhbHVlID09IDAuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9m bWdyL2ZtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCmluZGV4IDNjMjEwMjk3 YWEuLjQ5YjIyZDIwZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCkBAIC0xOTAyLDkgKzE5MDIsMTMg QEAgZ2V0X2NhbGxfZXhwcl9hcmdfc3RhYmxlKE5vZGUgKmV4cHIsIGludCBhcmdudW0pCiAJICov CiAJaWYgKElzQShhcmcsIENvbnN0KSkKIAkJcmV0dXJuIHRydWU7Ci0JaWYgKElzQShhcmcsIFBh cmFtKSAmJgotCQkoKFBhcmFtICopIGFyZyktPnBhcmFta2luZCA9PSBQQVJBTV9FWFRFUk4pCi0J CXJldHVybiB0cnVlOworCWlmIChJc0EoYXJnLCBQYXJhbSkpCisJeworCQlQYXJhbQkgICAqcCA9 IChQYXJhbSAqKSBhcmc7CisKKwkJaWYgKHAtPnBhcmFta2luZCA9PSBQQVJBTV9FWFRFUk4gfHwg cC0+cGFyYW1raW5kID09IFBBUkFNX1ZBUklBQkxFKQorCQkJcmV0dXJuIHRydWU7CisJfQogCiAJ cmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCAxYmYx NGVlYzY2Li4yMTNkOWViZjFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAt MTQ5OCw2ICsxNDk4LDE2IEBAIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xb XSA9CiAJCWZhbHNlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKKwl7CisJCXsic2Vzc2lvbl92 YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5pbmciLCBQR0NfVVNFUlNFVCwgREVWRUxPUEVSX09QVElP TlMsCisJCQlnZXR0ZXh0X25vb3AoIlJhaXNlIHdhcm5pbmcgd2hlbiByZWZlcmVuY2UgdG8gYSBz ZXNzaW9uIHZhcmlhYmxlIGlzIGFtYmlndW91cy4iKSwKKwkJCU5VTEwsCisJCQlHVUNfTk9UX0lO X1NBTVBMRQorCQl9LAorCQkmc2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5pbmcsCisJ CWZhbHNlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKIAl7CiAJCXsiZGJfdXNlcl9uYW1lc3Bh Y2UiLCBQR0NfU0lHSFVQLCBDT05OX0FVVEhfQVVUSCwKIAkJCWdldHRleHRfbm9vcCgiRW5hYmxl cyBwZXItZGF0YWJhc2UgdXNlciBuYW1lcy4iKSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvbmFtZXNwYWNlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oCmluZGV4 IDg0N2M5ZmE2YTAuLmU2ODczZDM2OWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv bmFtZXNwYWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaApAQCAtMTY2 LDggKzE2NiwxMCBAQCBleHRlcm4gdm9pZCBTZXRUZW1wTmFtZXNwYWNlU3RhdGUoT2lkIHRlbXBO YW1lc3BhY2VJZCwKIAkJCQkJCQkJICBPaWQgdGVtcFRvYXN0TmFtZXNwYWNlSWQpOwogZXh0ZXJu IHZvaWQgUmVzZXRUZW1wVGFibGVOYW1lc3BhY2Uodm9pZCk7CiAKK2V4dGVybiBMaXN0ICpOYW1l c0Zyb21MaXN0KExpc3QgKm5hbWVzKTsKIGV4dGVybiBPaWQJTG9va3VwVmFyaWFibGUoY29uc3Qg Y2hhciAqbnNwbmFtZSwgY29uc3QgY2hhciAqdmFybmFtZSwgYm9vbCByb3d0eXBlX29ubHksCiAJ CQkJCQkgICBib29sIG1pc3Npbmdfb2spOworZXh0ZXJuIE9pZAlJZGVudGlmeVZhcmlhYmxlKExp c3QgKm5hbWVzLCBjaGFyICoqYXR0cm5hbWUsIGJvb2wgKm5vdF91bmlxdWUpOwogCiBleHRlcm4g T3ZlcnJpZGVTZWFyY2hQYXRoICpHZXRPdmVycmlkZVNlYXJjaFBhdGgoTWVtb3J5Q29udGV4dCBj b250ZXh0KTsKIGV4dGVybiBPdmVycmlkZVNlYXJjaFBhdGggKkNvcHlPdmVycmlkZVNlYXJjaFBh dGgoT3ZlcnJpZGVTZWFyY2hQYXRoICpwYXRoKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4 IDc3ZGRjM2U3NzkuLmVjYmQ1NmFiMmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTE4 NTcsNCArMTE4NTcsMTEgQEAKICAgcHJvcmV0dHlwZSA9PiAnYnl0ZWEnLCBwcm9hcmd0eXBlcyA9 PiAncGdfYnJpbl9taW5tYXhfbXVsdGlfc3VtbWFyeScsCiAgIHByb3NyYyA9PiAnYnJpbl9taW5t YXhfbXVsdGlfc3VtbWFyeV9zZW5kJyB9LAogCit7IG9pZCA9PiAnODQ4OCcsIGRlc2NyID0+ICds aXN0IG9mIHVzZWQgc2Vzc2lvbiB2YXJpYWJsZXMnLAorICBwcm9uYW1lID0+ICdwZ19zZXNzaW9u X3ZhcmlhYmxlcycsIHByb3Jvd3MgPT4gJzEwMDAnLCBwcm9yZXRzZXQgPT4gJ3QnLAorICBwcm92 b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICcn LAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCx0ZXh0LHRleHQsb2lkLHRleHQsYm9vbCxib29s LGJvb2wsYm9vbH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8sbyxvfScsCisg IHByb2FyZ25hbWVzID0+ICd7dmFyaWQsc2NoZW1hLG5hbWUsdHlwaWQsdHlwbmFtZSxyZW1vdmVk LGhhc192YWx1ZSxjYW5fc2VsZWN0LGNhbl91cGRhdGV9JywKKyAgcHJvc3JjID0+ICdwZ19zZXNz aW9uX3ZhcmlhYmxlcycgfSwKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Nl c3Npb25fdmFyaWFibGUuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUu aAppbmRleCBhZGQxYWU1MGE2Li5hNDgyMGFhMjFkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2Vz c2lvbl92YXJpYWJsZS5oCkBAIC0xLDcgKzEsNyBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgot ICogc2Vzc2lvbnZhcmlhYmxlLmgKLSAqCSAgcHJvdG90eXBlcyBmb3Igc2Vzc2lvbnZhcmlhYmxl LmMuCisgKiBzZXNzaW9uX3ZhcmlhYmxlLmgKKyAqCSAgcHJvdG90eXBlcyBmb3Igc2Vzc2lvbl92 YXJpYWJsZS5jLgogICoKICAqCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMiwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKQEAgLTI2LDYgKzI2LDE1IEBACiBl eHRlcm4gdm9pZCBTZXNzaW9uVmFyaWFibGVDcmVhdGVQb3N0cHJvY2VzcyhPaWQgdmFyaWQsIGNo YXIgZW94YWN0aW9uKTsKIGV4dGVybiB2b2lkIFNlc3Npb25WYXJpYWJsZURyb3BQb3N0cHJvY2Vz cyhPaWQgdmFyaWQpOwogCitleHRlcm4gRGF0dW0gQ29weVNlc3Npb25WYXJpYWJsZShPaWQgdmFy aWQsIGJvb2wgKmlzTnVsbCwgT2lkICp0eXBpZCk7CitleHRlcm4gRGF0dW0gQ29weVNlc3Npb25W YXJpYWJsZVdpdGhUeXBlQ2hlY2soT2lkIHZhcmlkLCBib29sICppc051bGwsIE9pZCBleHBlY3Rl ZF90eXBpZCk7CitleHRlcm4gRGF0dW0gR2V0U2Vzc2lvblZhcmlhYmxlV2l0aFR5cGVDaGVjayhP aWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwgT2lkIGV4cGVjdGVkX3R5cGlkKTsKKworZXh0ZXJuIHZv aWQgU2V0U2Vzc2lvblZhcmlhYmxlKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxs KTsKK2V4dGVybiB2b2lkIFNldFNlc3Npb25WYXJpYWJsZVdpdGhTZWN1cml0eUNoZWNrKE9pZCB2 YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsKTsKKworZXh0ZXJuIHZvaWQgUmVzZXRTZXNz aW9uVmFyaWFibGVzKHZvaWQpOworCiBleHRlcm4gdm9pZCBBdFByZUVPWGFjdF9TZXNzaW9uVmFy aWFibGUoYm9vbCBpc0NvbW1pdCk7CiBleHRlcm4gdm9pZCBBdEVPU3ViWGFjdF9TZXNzaW9uVmFy aWFibGUoYm9vbCBpc0NvbW1pdCwKIAkJCQkJCQkJCQlTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCAwNTU3MzAyYjkyLi4xYjQxMWZjNmQ0IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTE1OCw2ICsxNTgsNyBAQCB0eXBlZGVmIGVudW0gRXhw ckV2YWxPcAogCUVFT1BfUEFSQU1fRVhFQywKIAlFRU9QX1BBUkFNX0VYVEVSTiwKIAlFRU9QX1BB UkFNX0NBTExCQUNLLAorCUVFT1BfUEFSQU1fVkFSSUFCTEUsCiAKIAkvKiByZXR1cm4gQ2FzZVRl c3RFeHByIHZhbHVlICovCiAJRUVPUF9DQVNFX1RFU1RWQUwsCkBAIC0zODEsNiArMzgyLDEzIEBA IHR5cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQkJT2lkCQkJcGFyYW10eXBlOwkvKiBPSUQg b2YgcGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8KIAkJfQkJCXBhcmFtOwogCisJCS8qIGZvciBFRU9Q X1BBUkFNX1ZBUklBQkxFICovCisJCXN0cnVjdAorCQl7CisJCQlPaWQJCQl2YXJpZDsJLyogT0lE IG9mIGFzc2lnbmVkIHZhcmlhYmxlICovCisJCQlPaWQJCQl2YXJ0eXBlOwkvKiBPSUQgb2YgcGFy YW1ldGVyJ3MgZGF0YXR5cGUgKi8KKwkJfQkJCXZwYXJhbTsKKwogCQkvKiBmb3IgRUVPUF9QQVJB TV9DQUxMQkFDSyAqLwogCQlzdHJ1Y3QKIAkJewpAQCAtNzM0LDYgKzc0Miw5IEBAIGV4dGVybiB2 b2lkIEV4ZWNFdmFsUGFyYW1FeGVjKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3As CiAJCQkJCQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxQ YXJhbUV4dGVybihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCQlF eHByQ29udGV4dCAqZWNvbnRleHQpOworZXh0ZXJuIHZvaWQgRXhlY0V2YWxQYXJhbVZhcmlhYmxl KEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCisJCQkJCQkJCSAgRXhwckNvbnRl eHQgKmVjb250ZXh0KTsKK2V4dGVybiB2b2lkIEV4ZWNFdmFsU1FMVmFsdWVGdW5jdGlvbihFeHBy U3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsQ3Vy cmVudE9mRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2 b2lkIEV4ZWNFdmFsTmV4dFZhbHVlRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAg Km9wKTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsUm93TnVsbChFeHByU3RhdGUgKnN0YXRlLCBFeHBy RXZhbFN0ZXAgKm9wLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2Mu aCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggZTc5ZTJjMDAxZi4uZGJm NGRjN2VhMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCkBAIC00OCw2ICs0OCwxMCBAQCB0eXBl ZGVmIHN0cnVjdCBRdWVyeURlc2MKIAlFU3RhdGUJICAgKmVzdGF0ZTsJCQkvKiBleGVjdXRvcidz IHF1ZXJ5LXdpZGUgc3RhdGUgKi8KIAlQbGFuU3RhdGUgICpwbGFuc3RhdGU7CQkvKiB0cmVlIG9m IHBlci1wbGFuLW5vZGUgc3RhdGUgKi8KIAorCS8qIHJlZmVyZW5jZSB0byBzZXNzaW9uIHZhcmlh YmxlcyBidWZmZXIgKi8KKwlpbnQJCQludW1fc2Vzc2lvbl92YXJpYWJsZXM7CisJU2Vzc2lvblZh cmlhYmxlVmFsdWUgKnNlc3Npb25fdmFyaWFibGVzOworCiAJLyogVGhpcyBmaWVsZCBpcyBzZXQg YnkgRXhlY3V0b3JSdW4gKi8KIAlib29sCQlhbHJlYWR5X2V4ZWN1dGVkOwkvKiB0cnVlIGlmIHBy ZXZpb3VzbHkgZXhlY3V0ZWQgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA3MTI0OGE5NDY2 Li5hNjlkNjIxNDVlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNTk3LDYgKzU5NywxOCBAQCB0 eXBlZGVmIHN0cnVjdCBBc3luY1JlcXVlc3QKIAkJCQkJCQkJICogdHVwbGVzKSAqLwogfSBBc3lu Y1JlcXVlc3Q7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqIFNlc3Npb25WYXJpYWJsZVZhbHVl CisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IFNlc3Npb25WYXJpYWJs ZVZhbHVlCit7CisJT2lkCQkJdmFyaWQ7CisJT2lkCQkJdHlwaWQ7CisJYm9vbAkJaXNudWxsOwor CURhdHVtCQl2YWx1ZTsKK30gU2Vzc2lvblZhcmlhYmxlVmFsdWU7CisKIC8qIC0tLS0tLS0tLS0t LS0tLS0KICAqCSAgRVN0YXRlIGluZm9ybWF0aW9uCiAgKgpAQCAtNjQ5LDYgKzY2MSwxMyBAQCB0 eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAlQYXJhbUxpc3RJbmZvIGVzX3BhcmFtX2xpc3RfaW5mbzsJ LyogdmFsdWVzIG9mIGV4dGVybmFsIHBhcmFtcyAqLwogCVBhcmFtRXhlY0RhdGEgKmVzX3BhcmFt X2V4ZWNfdmFsczsJLyogdmFsdWVzIG9mIGludGVybmFsIHBhcmFtcyAqLwogCisJLyogVmFyaWFi bGVzIGluZm86ICovCisJLyogbnVtYmVyIG9mIHVzZWQgc2Vzc2lvbiB2YXJpYWJsZXMgKi8KKwlp bnQJCQllc19udW1fc2Vzc2lvbl92YXJpYWJsZXM7CisKKwkvKiBhcnJheSBvZiBjb3BpZWQgdmFs dWVzIG9mIHNlc3Npb24gdmFyaWFibGVzICovCisJU2Vzc2lvblZhcmlhYmxlVmFsdWUgKmVzX3Nl c3Npb25fdmFyaWFibGVzOworCiAJUXVlcnlFbnZpcm9ubWVudCAqZXNfcXVlcnlFbnY7CS8qIHF1 ZXJ5IGVudmlyb25tZW50ICovCiAKIAkvKiBPdGhlciB3b3JraW5nIHN0YXRlOiAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCmluZGV4IDE0YmMyZmNkMDcuLjUyOTBkYjEyMzEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKQEAgLTE0OCw2ICsxNDgsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeQogCWJvb2wJ CWhhc01vZGlmeWluZ0NURTsJLyogaGFzIElOU0VSVC9VUERBVEUvREVMRVRFIGluIFdJVEggKi8K IAlib29sCQloYXNGb3JVcGRhdGU7CS8qIEZPUiBbS0VZXSBVUERBVEUvU0hBUkUgd2FzIHNwZWNp ZmllZCAqLwogCWJvb2wJCWhhc1Jvd1NlY3VyaXR5OyAvKiByZXdyaXRlciBoYXMgYXBwbGllZCBz b21lIFJMUyBwb2xpY3kgKi8KKwlib29sCQloYXNTZXNzaW9uVmFyaWFibGVzOwkvKiB1c2VzIHNl c3Npb24gdmFyaWFibGVzICovCiAKIAlib29sCQlpc1JldHVybjsJCS8qIGlzIGEgUkVUVVJOIHN0 YXRlbWVudCAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGRkNGViODY3OWQuLmIxMTkwZGJm NWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0xNjAsNiArMTYwLDkgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGxhbm5lckdsb2JhbAogCiAJLyogcGFydGl0aW9uIGRlc2NyaXB0b3JzICovCiAJUGFydGl0 aW9uRGlyZWN0b3J5IHBhcnRpdGlvbl9kaXJlY3RvcnkgcGdfbm9kZV9hdHRyKHJlYWRfd3JpdGVf aWdub3JlKTsKKworCS8qIGxpc3Qgb2YgdXNlZCBzZXNzaW9uIHZhcmlhYmxlcyAqLworCUxpc3QJ ICAgKnNlc3Npb25WYXJpYWJsZXM7CiB9IFBsYW5uZXJHbG9iYWw7CiAKIC8qIG1hY3JvIGZvciBm ZXRjaGluZyB0aGUgUGxhbiBhc3NvY2lhdGVkIHdpdGggYSBTdWJQbGFuIG5vZGUgKi8KQEAgLTQ2 MSw2ICs0NjQsOCBAQCBzdHJ1Y3QgUGxhbm5lckluZm8KIAlib29sCQlwbGFjZWhvbGRlcnNGcm96 ZW47CiAJLyogdHJ1ZSBpZiBwbGFubmluZyBhIHJlY3Vyc2l2ZSBXSVRIIGl0ZW0gKi8KIAlib29s CQloYXNSZWN1cnNpb247CisJLyogdHJ1ZSBpZiBzZXNzaW9uIHZhcmlhYmxlcyB3ZXJlIHVzZWQg Ki8KKwlib29sCQloYXNTZXNzaW9uVmFyaWFibGVzOwogCiAJLyoKIAkgKiBJbmZvcm1hdGlvbiBh Ym91dCBhZ2dyZWdhdGVzLiBGaWxsZWQgYnkgcHJlcHJvY2Vzc19hZ2dyZWZzKCkuCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oCmluZGV4IDJlMjAyODkyYTcuLmMwMWEzNWQ0NmQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oCkBAIC05NSw2ICs5NSw4IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAKIAlOb2Rl CSAgICp1dGlsaXR5U3RtdDsJLyogbm9uLW51bGwgaWYgdGhpcyBpcyB1dGlsaXR5IHN0bXQgKi8K IAorCUxpc3QJICAgKnNlc3Npb25WYXJpYWJsZXM7CS8qIE9JRHMgZm9yIFBBUkFNX1ZBUklBQkxF IFBhcmFtcyAqLworCiAJLyogc3RhdGVtZW50IGxvY2F0aW9uIGluIHNvdXJjZSBzdHJpbmcgKGNv cGllZCBmcm9tIFF1ZXJ5KSAqLwogCWludAkJCXN0bXRfbG9jYXRpb247CS8qIHN0YXJ0IGxvY2F0 aW9uLCBvciAtMSBpZiB1bmtub3duICovCiAJaW50CQkJc3RtdF9sZW47CQkvKiBsZW5ndGggaW4g Ynl0ZXM7IDAgbWVhbnMgInJlc3Qgb2Ygc3RyaW5nIiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRl eCA3NGYyMjhkOTU5Li4xNjk3Y2NhN2U0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9w cmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtNDMsNyAr NDMsOSBAQCB0eXBlZGVmIHN0cnVjdCBBbGlhcwogCUxpc3QJICAgKmNvbG5hbWVzOwkJLyogb3B0 aW9uYWwgbGlzdCBvZiBjb2x1bW4gYWxpYXNlcyAqLwogfSBBbGlhczsKIAotLyogV2hhdCB0byBk byBhdCBjb21taXQgdGltZSBmb3IgdGVtcG9yYXJ5IHJlbGF0aW9ucyAqLworLyoKKyAqIFdoYXQg dG8gZG8gYXQgY29tbWl0IHRpbWUgZm9yIHRlbXBvcmFyeSByZWxhdGlvbnMgb3Igc2Vzc2lvbiB2 YXJpYWJsZXMuCisgKi8KIHR5cGVkZWYgZW51bSBPbkNvbW1pdEFjdGlvbgogewogCU9OQ09NTUlU X05PT1AsCQkJCS8qIE5vIE9OIENPTU1JVCBjbGF1c2UgKGRvIG5vdGhpbmcpICovCkBAIC0yOTYs MTMgKzI5OCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBDb25zdAogICoJCQkJb2YgdGhlIGBwYXJhbWlk JyBmaWVsZCBjb250YWluIHRoZSBTdWJMaW5rJ3Mgc3ViTGlua0lkLCBhbmQKICAqCQkJCXRoZSBs b3ctb3JkZXIgMTYgYml0cyBjb250YWluIHRoZSBjb2x1bW4gbnVtYmVyLiAgKFRoaXMgdHlwZQog ICoJCQkJb2YgUGFyYW0gaXMgYWxzbyBjb252ZXJ0ZWQgdG8gUEFSQU1fRVhFQyBkdXJpbmcgcGxh bm5pbmcuKQorICoKKyAqCQlQQVJBTV9WQVJJQUJMRTogIFRoZSBwYXJhbWV0ZXIgaXMgYW4gYWNj ZXNzIHRvIHNlc3Npb24gdmFyaWFibGUKKyAqCQkJCXBhcmFtaWQgaG9sZHMgdmFyaWQuCiAgKi8K IHR5cGVkZWYgZW51bSBQYXJhbUtpbmQKIHsKIAlQQVJBTV9FWFRFUk4sCiAJUEFSQU1fRVhFQywK IAlQQVJBTV9TVUJMSU5LLAotCVBBUkFNX01VTFRJRVhQUgorCVBBUkFNX01VTFRJRVhQUiwKKwlQ QVJBTV9WQVJJQUJMRQogfSBQYXJhbUtpbmQ7CiAKIHR5cGVkZWYgc3RydWN0IFBhcmFtCkBAIC0z MTMsNiArMzE5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYW0KIAlPaWQJCQlwYXJhbXR5cGU7CQkv KiBwZ190eXBlIE9JRCBvZiBwYXJhbWV0ZXIncyBkYXRhdHlwZSAqLwogCWludDMyCQlwYXJhbXR5 cG1vZDsJLyogdHlwbW9kIHZhbHVlLCBpZiBrbm93biAqLwogCU9pZAkJCXBhcmFtY29sbGlkOwkv KiBPSUQgb2YgY29sbGF0aW9uLCBvciBJbnZhbGlkT2lkIGlmIG5vbmUgKi8KKwlPaWQJCQlwYXJh bXZhcmlkOwkJLyogT0lEIG9mIHNlc3Npb24gdmFyaWFibGUgaWYgaXQgaXMgdXNlZCAqLwogCWlu dAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0g UGFyYW07CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oIGIv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmgKaW5kZXggOWRmZmRjZmQxZS4uZWJiMTRl MjUwZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmgKKysrIGIv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmgKQEAgLTExNyw0ICsxMTcsNiBAQCBleHRl cm4gdm9pZCByZWNvcmRfcGxhbl9mdW5jdGlvbl9kZXBlbmRlbmN5KFBsYW5uZXJJbmZvICpyb290 LCBPaWQgZnVuY2lkKTsKIGV4dGVybiB2b2lkIHJlY29yZF9wbGFuX3R5cGVfZGVwZW5kZW5jeShQ bGFubmVySW5mbyAqcm9vdCwgT2lkIHR5cGlkKTsKIGV4dGVybiBib29sIGV4dHJhY3RfcXVlcnlf ZGVwZW5kZW5jaWVzX3dhbGtlcihOb2RlICpub2RlLCBQbGFubmVySW5mbyAqY29udGV4dCk7CiAK K2V4dGVybiB2b2lkIHB1bGxfdXBfaGFzX3Nlc3Npb25fdmFyaWFibGVzKFBsYW5uZXJJbmZvICpy b290KTsKKwogI2VuZGlmCQkJCQkJCS8qIFBMQU5NQUlOX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhw ci5oCmluZGV4IGM4ZTVjNTdiNDMuLjE0YjBhZGI5NDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV9leHByLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIu aApAQCAtMTcsNiArMTcsNyBAQAogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwogZXh0ZXJuIFBHRExM SU1QT1JUIGJvb2wgVHJhbnNmb3JtX251bGxfZXF1YWxzOworZXh0ZXJuIFBHRExMSU1QT1JUIGJv b2wgc2Vzc2lvbl92YXJpYWJsZXNfYW1iaWd1aXR5X3dhcm5pbmc7CiAKIGV4dGVybiBOb2RlICp0 cmFuc2Zvcm1FeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgUGFyc2VFeHByS2lu ZCBleHByS2luZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2Rl LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDRkNjVhOWU5ZTguLmQw N2Y1YjA1ODQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysr IGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtMjEyLDYgKzIxMiw3IEBAIHN0 cnVjdCBQYXJzZVN0YXRlCiAJYm9vbAkJcF9oYXNUYXJnZXRTUkZzOwogCWJvb2wJCXBfaGFzU3Vi TGlua3M7CiAJYm9vbAkJcF9oYXNNb2RpZnlpbmdDVEU7CisJYm9vbAkJcF9oYXNTZXNzaW9uVmFy aWFibGVzOwogCiAJTm9kZQkgICAqcF9sYXN0X3NyZjsJCS8qIG1vc3QgcmVjZW50IHNldC1yZXR1 cm5pbmcgZnVuYy9vcCBmb3VuZCAqLwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDhi MDhmNjQ0NjguLjNhOTQ1NzAyMjIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yNDUy LDYgKzI0NTIsNyBAQCBTZXJpYWxpemVkVHJhbnNhY3Rpb25TdGF0ZQogU2Vzc2lvbgogU2Vzc2lv bkJhY2t1cFN0YXRlCiBTZXNzaW9uRW5kVHlwZQorU2Vzc2lvblZhcmlhYmxlVmFsdWUKIFNldENv bnN0cmFpbnRTdGF0ZQogU2V0Q29uc3RyYWludFN0YXRlRGF0YQogU2V0Q29uc3RyYWludFRyaWdn ZXJEYXRhCkBAIC0yNjM2LDYgKzI2MzcsOCBAQCBTdXBwb3J0UmVxdWVzdFJvd3MKIFN1cHBvcnRS ZXF1ZXN0U2VsZWN0aXZpdHkKIFN1cHBvcnRSZXF1ZXN0U2ltcGxpZnkKIFN1cHBvcnRSZXF1ZXN0 V0Z1bmNNb25vdG9uaWMKK1NWYXJpYWJsZQorU1ZhcmlhYmxlRGF0YQogU1ZhcmlhYmxlWEFjdEFj dGlvbgogU1ZhcmlhYmxlWEFjdEFjdGlvbkl0ZW0KIFN5bgotLSAKMi4zOC4xCgo= --0000000000009ca7c005eedde9a7 Content-Type: text/x-patch; charset="US-ASCII"; name="v20221202-1-0003-LET-command.patch" Content-Disposition: attachment; filename="v20221202-1-0003-LET-command.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb6xukzt7 RnJvbSA2MGU2MWY1MGRjYzVlMzAyMWNkOWUzNTdjMmViZmZmZWMzNGM0YzVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPG9rYm9iQGdpdGh1Yi5jb20+ CkRhdGU6IFRodSwgMTAgTm92IDIwMjIgMjI6MDM6MDQgKzAxMDAKU3ViamVjdDogW1BBVENIIDAz LzEwXSBMRVQgY29tbWFuZAoKU2V0IHNlc3Npb24gdmFyaWFibGUgdmFsdWUgdG8gcmVzdWx0IG9m IHF1ZXJ5IG9yIHJlc3VsdCBvZiBkZWZhdWx0IGV4cHJlc3Npb24KLS0tCiBzcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMgICAgICAgICAgIHwgIDE2ICsrCiBzcmMvYmFja2VuZC9jb21tYW5k cy9zZXNzaW9uX3ZhcmlhYmxlLmMgIHwgIDg2ICsrKysrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L01ha2VmaWxlICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYyAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZCAg ICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmMg fCAyMTQgKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAg ICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAg ICB8ICAzOCArKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAgICAgICAgICAgfCAy OTIgKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAg ICAgICAgICAgICAgfCAgNTcgKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyAg ICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2N0ZS5jICAgICAgICAg ICB8ICAgOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgIHwgICA0 ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgICAgICAgICAgfCAgIDMgKwogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tl bmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jICAgICB8ICAzNCArKysKIHNyYy9iYWNrZW5kL3Jl d3JpdGUvcm93c2VjdXJpdHkuYyAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL3Rjb3AvZGVz dC5jICAgICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMg ICAgICAgICAgICAgICB8ICAxNSArKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hl LmMgICAgICB8ICAxMiArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgg IHwgICAzICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmggfCAgMjUg KysKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgfCAgMTYgKysKIHNy Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcGFy c2VyL3BhcnNlX25vZGUuaCAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvdGNvcC9jbWR0 YWdsaXN0LmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS90Y29wL2Rlc3QuaCAgICAg ICAgICAgICAgICAgIHwgICAzICstCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAg ICAgICAgIHwgICAyICsKIDI5IGZpbGVzIGNoYW5nZWQsIDg0NiBpbnNlcnRpb25zKCspLCAyNSBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9leGVjdXRvci9zdmFy aWFibGVSZWNlaXZlci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvZXhlY3V0b3Iv c3ZhcmlhYmxlUmVjZWl2ZXIuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBmODY5ODNjNjYw Li41N2RiZWZiZDc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC00OTIsNiArNDkyLDIyIEBA IEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAogCQllbHNlCiAJCQlFeHBsYWluRHVtbXlHcm91cCgiTm90aWZ5Iiwg TlVMTCwgZXMpOwogCX0KKwllbHNlIGlmIChJc0EodXRpbGl0eVN0bXQsIExldFN0bXQpKQorCXsK KwkJTGV0U3RtdCAgICAqbGV0c3RtdCA9IChMZXRTdG10ICopIHV0aWxpdHlTdG10OworCQlMaXN0 CSAgICpyZXdyaXR0ZW47CisKKwkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVY VCkKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIlNFVCBTRVNTSU9OIFZBUklB QkxFXG4iKTsKKwkJZWxzZQorCQkJRXhwbGFpbkR1bW15R3JvdXAoIlNldCBTZXNzaW9uIFZhcmlh YmxlIiwgTlVMTCwgZXMpOworCisJCXJld3JpdHRlbiA9IFF1ZXJ5UmV3cml0ZShjYXN0Tm9kZShR dWVyeSwgY29weU9iamVjdChsZXRzdG10LT5xdWVyeSkpKTsKKwkJQXNzZXJ0KGxpc3RfbGVuZ3Ro KHJld3JpdHRlbikgPT0gMSk7CisJCUV4cGxhaW5PbmVRdWVyeShsaW5pdGlhbF9ub2RlKFF1ZXJ5 LCByZXdyaXR0ZW4pLAorCQkJCQkJQ1VSU09SX09QVF9QQVJBTExFTF9PSywgTlVMTCwgZXMsCisJ CQkJCQlxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudik7CisJfQogCWVsc2UKIAl7CiAJCWlm IChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RFWFQpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9z ZXNzaW9uX3ZhcmlhYmxlLmMKaW5kZXggOWVhM2M4OTkwMi4uZTJiZDcyZjE5MyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuYwpAQCAtMjAsMTYgKzIwLDIwIEBACiAjaW5j bHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxl LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oIgorI2luY2x1ZGUgImV4 ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKKyNpbmNs dWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNp bmNsdWRlICJ1dGlscy9pbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKIC8qCkBAIC0xMjM4LDYgKzEyNDIsODggQEAgQXRF T1N1YlhhY3RfU2Vzc2lvblZhcmlhYmxlKGJvb2wgaXNDb21taXQsCiAJfQogfQogCisvKgorICog QXNzaWduIHJlc3VsdCBvZiBldmFsdWF0ZWQgZXhwcmVzc2lvbiB0byBzZXNzaW9uIHZhcmlhYmxl CisgKi8KK3ZvaWQKK0V4ZWN1dGVMZXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCSAgIExl dFN0bXQgKnN0bXQsCisJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJCSAgIFF1ZXJ5RW52 aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJICAgUXVlcnlDb21wbGV0aW9uICpxYykKK3sKKwlRdWVy eQkgICAqcXVlcnkgPSBjYXN0Tm9kZShRdWVyeSwgc3RtdC0+cXVlcnkpOworCUxpc3QJICAgKnJl d3JpdHRlbjsKKwlEZXN0UmVjZWl2ZXIgKmRlc3Q7CisJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKwlQ bGFubmVkU3RtdCAqcGxhbjsKKwlRdWVyeURlc2MgICpxdWVyeURlc2M7CisJT2lkCQkJdmFyaWQg PSBxdWVyeS0+cmVzdWx0VmFyaWFibGU7CisKKwlBc3NlcnQoT2lkSXNWYWxpZCh2YXJpZCkpOwor CisJLyoKKwkgKiBJcyBpdCBhbGxvd2VkIHRvIHdyaXRlIHRvIHNlc3Npb24gdmFyaWFibGU/CisJ ICovCisJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKFZhcmlhYmxlUmVsYXRpb25JZCwgdmFy aWQsIEdldFVzZXJJZCgpLCBBQ0xfVVBEQVRFKTsKKwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNL X09LKQorCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwgZ2V0X3Nl c3Npb25fdmFyaWFibGVfbmFtZSh2YXJpZCkpOworCisJLyogQ3JlYXRlIGRlc3QgcmVjZWl2ZXIg Zm9yIExFVCAqLworCWRlc3QgPSBDcmVhdGVEZXN0UmVjZWl2ZXIoRGVzdFZhcmlhYmxlKTsKKwlT ZXRWYXJpYWJsZURlc3RSZWNlaXZlclZhcmlkKGRlc3QsIHZhcmlkKTsKKworCS8qIHJ1biByZXdy aXRlciAtIGNhbiBiZSB1c2VkIGZvciByZXBsYWNlbWVudCBvZiBERUZBVUxUIG5vZGUgKi8KKwlx dWVyeSA9IGNvcHlPYmplY3QocXVlcnkpOworCisJcmV3cml0dGVuID0gUXVlcnlSZXdyaXRlKHF1 ZXJ5KTsKKworCUFzc2VydChsaXN0X2xlbmd0aChyZXdyaXR0ZW4pID09IDEpOworCisJcXVlcnkg PSBsaW5pdGlhbF9ub2RlKFF1ZXJ5LCByZXdyaXR0ZW4pOworCUFzc2VydChxdWVyeS0+Y29tbWFu ZFR5cGUgPT0gQ01EX1NFTEVDVCk7CisKKwkvKiBwbGFuIHRoZSBxdWVyeSAqLworCXBsYW4gPSBw Z19wbGFuX3F1ZXJ5KHF1ZXJ5LCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJCQkJCSBDVVJTT1Jf T1BUX1BBUkFMTEVMX09LLCBwYXJhbXMpOworCisJLyoKKwkgKiBVc2UgYSBzbmFwc2hvdCB3aXRo IGFuIHVwZGF0ZWQgY29tbWFuZCBJRCB0byBlbnN1cmUgdGhpcyBxdWVyeSBzZWVzCisJICogcmVz dWx0cyBvZiBhbnkgcHJldmlvdXNseSBleGVjdXRlZCBxdWVyaWVzLiAgKFRoaXMgY291bGQgb25s eSBtYXR0ZXIgaWYKKwkgKiB0aGUgcGxhbm5lciBleGVjdXRlZCBhbiBhbGxlZ2VkbHktc3RhYmxl IGZ1bmN0aW9uIHRoYXQgY2hhbmdlZCB0aGUKKwkgKiBkYXRhYmFzZSBjb250ZW50cywgYnV0IGxl dCdzIGRvIGl0IGFueXdheSB0byBiZSBwYXJhbGxlbCB0byB0aGUgRVhQTEFJTgorCSAqIGNvZGUg cGF0aC4pCisJICovCisJUHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNuYXBzaG90KCkpOwor CVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CisKKwkvKiBDcmVhdGUgYSBRdWVyeURl c2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KKwlxdWVyeURl c2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCQkJCQkJ CUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJZGVzdCwgcGFy YW1zLCBxdWVyeUVudiwgMCk7CisKKwkvKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0 aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCisJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOwor CisJLyoKKwkgKiBydW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbi4gVGhlIHJlc3VsdCBzaG91bGQg YmUgb25seSBvbmUKKwkgKiByb3cuIEZvciBhbiBjaGVjayB0b29fbWFueV9yb3dzIHdlIG5lZWQg dG8gcmVhZCB0d28gcm93cy4KKwkgKi8KKwlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRT Y2FuRGlyZWN0aW9uLCAyTCwgdHJ1ZSk7CisKKwkvKiBzYXZlIHRoZSByb3djb3VudCBpZiB3ZSdy ZSBnaXZlbiBhIHFjIHRvIGZpbGwgKi8KKwlpZiAocWMpCisJCVNldFF1ZXJ5Q29tcGxldGlvbihx YywgQ01EVEFHX0xFVCwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisKKwkvKiBh bmQgY2xlYW4gdXAgKi8KKwlFeGVjdXRvckZpbmlzaChxdWVyeURlc2MpOworCUV4ZWN1dG9yRW5k KHF1ZXJ5RGVzYyk7CisKKwlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CisKKwlQb3BBY3RpdmVT bmFwc2hvdCgpOworfQorCiAvKgogICogcGdfc2Vzc2lvbl92YXJpYWJsZXMgLSBkZXNpZ25lZCBm b3IgdGVzdGluZwogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxl IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKaW5kZXggMTExMThkMGNlMC4uNzEyNDhh MzRmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKQEAgLTc2LDYgKzc2LDcgQEAgT0JKUyA9IFwKIAlu b2RlV2luZG93QWdnLm8gXAogCW5vZGVXb3JrdGFibGVzY2FuLm8gXAogCXNwaS5vIFwKKwlzdmFy aWFibGVSZWNlaXZlci5vIFwKIAl0cXVldWUubyBcCiAJdHN0b3JlUmVjZWl2ZXIubwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYwppbmRleCBkZGFlY2UwMThjLi5hMDEyYjYyN2M1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9zZXNz aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2RlYnVnLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIKKyNpbmNsdWRlICJleGVjdXRvci9zdmFyaWFibGVS ZWNlaXZlci5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAiaml0L2pp dC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkCmlu ZGV4IDUxODY3NGNmYTIuLjY1MWYyYmE2M2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkCkBA IC02Miw2ICs2Miw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ25vZGVXaW5kb3dB Z2cuYycsCiAgICdub2RlV29ya3RhYmxlc2Nhbi5jJywKICAgJ3NwaS5jJywKKyAgJ3N2YXJpYWJs ZVJlY2VpdmVyLmMnLAogICAndHF1ZXVlLmMnLAogICAndHN0b3JlUmVjZWl2ZXIuYycsCiApCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi4yY2ZiNGJlZmE3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuYwpAQCAtMCwwICsxLDIxNCBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoJICBBbiBpbXBs ZW1lbnRhdGlvbiBvZiBEZXN0UmVjZWl2ZXIgdGhhdCBzdG9yZXMgdGhlIHJlc3VsdCB2YWx1ZSBp bgorICoJICBhIHNlc3Npb24gdmFyaWFibGUuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0 aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2Fs aWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L3N2YXJpYWJsZVJlY2VpdmVyLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5j bHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKworI2luY2x1ZGUgImFj Y2Vzcy9kZXRvYXN0LmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaCIK KyNpbmNsdWRlICJjb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9sb2NrLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCit0eXBlZGVmIHN0cnVj dAoreworCURlc3RSZWNlaXZlciBwdWI7CisJT2lkCQkJdmFyaWQ7CisJT2lkCQkJdHlwaWQ7CisJ aW50MzIJCXR5cG1vZDsKKwlpbnQJCQl0eXBsZW47CisJaW50CQkJc2xvdF9vZmZzZXQ7CisJaW50 CQkJcm93czsKK30gU1ZhcmlhYmxlU3RhdGU7CisKKworLyoKKyAqIFByZXBhcmUgdG8gcmVjZWl2 ZSB0dXBsZXMgZnJvbSBleGVjdXRvci4KKyAqLworc3RhdGljIHZvaWQKK3N2YXJpYWJsZVN0YXJ0 dXBSZWNlaXZlcihEZXN0UmVjZWl2ZXIgKnNlbGYsIGludCBvcGVyYXRpb24sIFR1cGxlRGVzYyB0 eXBlaW5mbykKK3sKKwlTVmFyaWFibGVTdGF0ZSAqbXlTdGF0ZSA9IChTVmFyaWFibGVTdGF0ZSAq KSBzZWxmOworCWludAkJCW5hdHRzID0gdHlwZWluZm8tPm5hdHRzOworCWludAkJCW91dGNvbHMg PSAwOworCWludAkJCWk7CisKKwkvKiBSZWNlaXZlciBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgYnkg U2V0VmFyaWFibGVEZXN0UmVjZWl2ZXJWYXJpZCAqLworCUFzc2VydChPaWRJc1ZhbGlkKG15U3Rh dGUtPnZhcmlkKSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKKwl7CisJCUZvcm1f cGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKHR5cGVpbmZvLCBpKTsKKwkJT2lkCQkJ dHlwaWQ7CisJCU9pZAkJCWNvbGxpZDsKKwkJaW50MzIJCXR5cG1vZDsKKworCQlpZiAoYXR0ci0+ YXR0aXNkcm9wcGVkKQorCQkJY29udGludWU7CisKKwkJaWYgKCsrb3V0Y29scyA+IDEpCisJCQlj b250aW51ZTsKKworCQlnZXRfc2Vzc2lvbl92YXJpYWJsZV90eXBlX3R5cG1vZF9jb2xsaWQobXlT dGF0ZS0+dmFyaWQsCisJCQkJCQkJCQkJCQkmdHlwaWQsCisJCQkJCQkJCQkJCQkmdHlwbW9kLAor CQkJCQkJCQkJCQkJJmNvbGxpZCk7CisKKwkJLyoKKwkJICogZG91YmxlIGNoZWNrIC0gdGhlIHR5 cGUgYW5kIHR5cG1vZCBvZiB0YXJnZXQgdmFyaWFibGUgc2hvdWxkIGJlCisJCSAqIHNhbWUgYXMg dHlwZSBhbmQgdHlwbW9kIG9mIGFzc2lnbm1lbnQgZXhwcmVzc2lvbi4gSXQgc2hvdWxkIGJlLCB0 aGUKKwkJICogZXhwcmVzc2lvbiBpcyB3cmFwcGVkIGJ5IGNhc3QgdG8gdGFyZ2V0IHR5cGUgYW5k IHR5cG1vZC4KKwkJICovCisJCWlmIChhdHRyLT5hdHR0eXBpZCAhPSB0eXBpZCB8fAorCQkJKGF0 dHItPmF0dHR5cG1vZCA+PSAwICYmCisJCQkgYXR0ci0+YXR0dHlwbW9kICE9IHR5cG1vZCkpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENI KSwKKwkJCQkJIGVycm1zZygidGFyZ2V0IHNlc3Npb24gdmFyaWJsZSBpcyBvZiB0eXBlICVzIgor CQkJCQkJCSIgYnV0IGV4cHJlc3Npb24gaXMgb2YgdHlwZSAlcyIsCisJCQkJCQkJZm9ybWF0X3R5 cGVfd2l0aF90eXBlbW9kKHR5cGlkLCB0eXBtb2QpLAorCQkJCQkJCWZvcm1hdF90eXBlX3dpdGhf dHlwZW1vZChhdHRyLT5hdHR0eXBpZCwKKwkJCQkJCQkJCQkJCQkgYXR0ci0+YXR0dHlwbW9kKSkp KTsKKworCQlteVN0YXRlLT50eXBpZCA9IGF0dHItPmF0dHR5cGlkOworCQlteVN0YXRlLT50eXBt b2QgPSBhdHRyLT5hdHR0eXBtb2Q7CisJCW15U3RhdGUtPnR5cGxlbiA9IGF0dHItPmF0dGxlbjsK KwkJbXlTdGF0ZS0+c2xvdF9vZmZzZXQgPSBpOworCX0KKworCWlmIChvdXRjb2xzICE9IDEpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJ CSBlcnJtc2dfcGx1cmFsKCJhc3NpZ25tZW50IGV4cHJlc3Npb24gcmV0dXJuZWQgJWQgY29sdW1u IiwKKwkJCQkJCQkgICAiYXNzaWdubWVudCBleHByZXNzaW9uIHJldHVybmVkICVkIGNvbHVtbnMi LAorCQkJCQkJCSAgIG91dGNvbHMsCisJCQkJCQkJICAgb3V0Y29scykpKTsKKworCisKKwlteVN0 YXRlLT5yb3dzID0gMDsKK30KKworLyoKKyAqIFJlY2VpdmUgYSB0dXBsZSBmcm9tIHRoZSBleGVj dXRvciBhbmQgc3RvcmUgaXQgaW4gc2Vzc2lvbiB2YXJpYWJsZS4KKyAqLworc3RhdGljIGJvb2wK K3N2YXJpYWJsZVJlY2VpdmVTbG90KFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIg KnNlbGYpCit7CisJU1ZhcmlhYmxlU3RhdGUgKm15U3RhdGUgPSAoU1ZhcmlhYmxlU3RhdGUgKikg c2VsZjsKKwlEYXR1bQkJdmFsdWU7CisJYm9vbAkJaXNudWxsOworCWJvb2wJCWZyZWV2YWwgPSBm YWxzZTsKKworCS8qIE1ha2Ugc3VyZSB0aGUgdHVwbGUgaXMgZnVsbHkgZGVjb25zdHJ1Y3RlZCAq LworCXNsb3RfZ2V0YWxsYXR0cnMoc2xvdCk7CisKKwl2YWx1ZSA9IHNsb3QtPnR0c192YWx1ZXNb bXlTdGF0ZS0+c2xvdF9vZmZzZXRdOworCWlzbnVsbCA9IHNsb3QtPnR0c19pc251bGxbbXlTdGF0 ZS0+c2xvdF9vZmZzZXRdOworCisJaWYgKG15U3RhdGUtPnR5cGxlbiA9PSAtMSAmJiAhaXNudWxs ICYmIFZBUkFUVF9JU19FWFRFUk5BTChEYXR1bUdldFBvaW50ZXIodmFsdWUpKSkKKwl7CisJCXZh bHVlID0gUG9pbnRlckdldERhdHVtKGRldG9hc3RfZXh0ZXJuYWxfYXR0cigoc3RydWN0IHZhcmxl bmEgKikKKwkJCQkJCQkJCQkJCQkgIERhdHVtR2V0UG9pbnRlcih2YWx1ZSkpKTsKKwkJZnJlZXZh bCA9IHRydWU7CisJfQorCisJbXlTdGF0ZS0+cm93cyArPSAxOworCisJaWYgKG15U3RhdGUtPnJv d3MgPiAxKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVE9PX01BTllf Uk9XUyksCisJCQkJIGVycm1zZygiZXhwcmVzc2lvbiByZXR1cm5lZCBtb3JlIHRoYW4gb25lIHJv dyIpKSk7CisKKwlTZXRTZXNzaW9uVmFyaWFibGUobXlTdGF0ZS0+dmFyaWQsIHZhbHVlLCBpc251 bGwpOworCisJaWYgKGZyZWV2YWwpCisJCXBmcmVlKERhdHVtR2V0UG9pbnRlcih2YWx1ZSkpOwor CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBDbGVhbiB1cCBhdCBlbmQgb2YgYW4gZXhlY3V0 b3IgcnVuCisgKi8KK3N0YXRpYyB2b2lkCitzdmFyaWFibGVTaHV0ZG93blJlY2VpdmVyKERlc3RS ZWNlaXZlciAqc2VsZikKK3sKKwlpZiAoKChTVmFyaWFibGVTdGF0ZSAqKSBzZWxmKS0+cm93cyA9 PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTk9fREFUQV9GT1VO RCksCisJCQkJIGVycm1zZygiZXhwcmVzc2lvbiByZXR1cm5lZCBubyByb3dzIikpKTsKK30KKwor LyoKKyAqIERlc3Ryb3kgcmVjZWl2ZXIgd2hlbiBkb25lIHdpdGggaXQKKyAqLworc3RhdGljIHZv aWQKK3N2YXJpYWJsZURlc3Ryb3lSZWNlaXZlcihEZXN0UmVjZWl2ZXIgKnNlbGYpCit7CisJcGZy ZWUoc2VsZik7Cit9CisKKy8qCisgKiBJbml0aWFsbHkgY3JlYXRlIGEgRGVzdFJlY2VpdmVyIG9i amVjdC4KKyAqLworRGVzdFJlY2VpdmVyICoKK0NyZWF0ZVZhcmlhYmxlRGVzdFJlY2VpdmVyKHZv aWQpCit7CisJU1ZhcmlhYmxlU3RhdGUgKnNlbGYgPSAoU1ZhcmlhYmxlU3RhdGUgKikgcGFsbG9j MChzaXplb2YoU1ZhcmlhYmxlU3RhdGUpKTsKKworCXNlbGYtPnB1Yi5yZWNlaXZlU2xvdCA9IHN2 YXJpYWJsZVJlY2VpdmVTbG90OworCXNlbGYtPnB1Yi5yU3RhcnR1cCA9IHN2YXJpYWJsZVN0YXJ0 dXBSZWNlaXZlcjsKKwlzZWxmLT5wdWIuclNodXRkb3duID0gc3ZhcmlhYmxlU2h1dGRvd25SZWNl aXZlcjsKKwlzZWxmLT5wdWIuckRlc3Ryb3kgPSBzdmFyaWFibGVEZXN0cm95UmVjZWl2ZXI7CisJ c2VsZi0+cHViLm15ZGVzdCA9IERlc3RWYXJpYWJsZTsKKworCS8qCisJICogUHJpdmF0ZSBmaWVs ZHMgd2lsbCBiZSBzZXQgYnkgU2V0VmFyaWFibGVEZXN0UmVjZWl2ZXJWYXJpZCBhbmQKKwkgKiBz dmFyaWFibGVTdGFydHVwUmVjZWl2ZXIuCisJICovCisJcmV0dXJuIChEZXN0UmVjZWl2ZXIgKikg c2VsZjsKK30KKworLyoKKyAqIFNldCBwYXJhbWV0ZXJzIGZvciBhIFZhcmlhYmxlRGVzdFJlY2Vp dmVyLgorICogU2hvdWxkIGJlIGNhbGxlZCByaWdodCBhZnRlciBjcmVhdGluZyB0aGUgRGVzdFJl Y2VpdmVyLgorICovCit2b2lkCitTZXRWYXJpYWJsZURlc3RSZWNlaXZlclZhcmlkKERlc3RSZWNl aXZlciAqc2VsZiwgT2lkIHZhcmlkKQoreworCVNWYXJpYWJsZVN0YXRlICpteVN0YXRlID0gKFNW YXJpYWJsZVN0YXRlICopIHNlbGY7CisJTE9DS1RBRwkJbG9ja3RhZyBQR19VU0VEX0ZPUl9BU1NF UlRTX09OTFk7CisKKwlBc3NlcnQobXlTdGF0ZS0+cHViLm15ZGVzdCA9PSBEZXN0VmFyaWFibGUp OworCUFzc2VydChPaWRJc1ZhbGlkKHZhcmlkKSk7CisJQXNzZXJ0KFNlYXJjaFN5c0NhY2hlRXhp c3RzMShWQVJJQUJMRU9JRCwgdmFyaWQpKTsKKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcK KworCVNFVF9MT0NLVEFHX09CSkVDVChsb2NrdGFnLAorCQkJCQkgICBNeURhdGFiYXNlSWQsCisJ CQkJCSAgIFZhcmlhYmxlUmVsYXRpb25JZCwKKwkJCQkJICAgdmFyaWQsCisJCQkJCSAgIDApOwor CisJQXNzZXJ0KExvY2tIZWxkQnlNZSgmbG9ja3RhZywgQWNjZXNzU2hhcmVMb2NrKSk7CisKKyNl bmRpZgorCisJbXlTdGF0ZS0+dmFyaWQgPSB2YXJpZDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5k ZXggYWY4NjIwY2ViNy4uZWI3MTlhYjIwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTM3OTEs NiArMzc5MSwxNiBAQCByYXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUs CiAJCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9MZXRTdG10Ogor CQkJeworCQkJCUxldFN0bXQgICAgKnN0bXQgPSAoTGV0U3RtdCAqKSBub2RlOworCisJCQkJaWYg KFdBTEsoc3RtdC0+dGFyZ2V0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoc3Rt dC0+cXVlcnkpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRf UExBc3NpZ25TdG10OgogCQkJewogCQkJCVBMQXNzaWduU3RtdCAqc3RtdCA9IChQTEFzc2lnblN0 bXQgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJl ZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCA0NzBiOTll MDA2Li43NDE5ZGJhZTIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9z ZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0x ODMsNyArMTgzLDcgQEAgc3RhdGljIExpc3QgKnNldF93aW5kb3dhZ2dfcnVuY29uZGl0aW9uX3Jl ZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkgICBQbGFuICpwbGFuKTsK IHN0YXRpYyBib29sIHB1bGxfdXBfaGFzX3Nlc3Npb25fdmFyaWFibGVzX3dhbGtlcihOb2RlICpu b2RlLAogCQkJCQkJCQkJCQkJIFBsYW5uZXJJbmZvICpyb290KTsKLQorc3RhdGljIHZvaWQgcmVj b3JkX3BsYW5fdmFyaWFibGVfZGVwZW5kZW5jeShQbGFubmVySW5mbyAqcm9vdCwgT2lkIHZhcmlk KTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTk4MSwxOCArMTk4MSw3IEBAIGZp eF9leHByX2NvbW1vbihQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSkKIAkJUGFyYW0JICAg KnAgPSAoUGFyYW0gKikgbm9kZTsKIAogCQlpZiAocC0+cGFyYW1raW5kID09IFBBUkFNX1ZBUklB QkxFKQotCQl7Ci0JCQlQbGFuSW52YWxJdGVtICppbnZhbF9pdGVtID0gbWFrZU5vZGUoUGxhbklu dmFsSXRlbSk7Ci0KLQkJCS8qIHBhcmFtaWQgaXMgc3RpbGwgc2Vzc2lvbiB2YXJpYWJsZSBpZCAq LwotCQkJaW52YWxfaXRlbS0+Y2FjaGVJZCA9IFZBUklBQkxFT0lEOwotCQkJaW52YWxfaXRlbS0+ aGFzaFZhbHVlID0gR2V0U3lzQ2FjaGVIYXNoVmFsdWUxKFZBUklBQkxFT0lELAotCQkJCQkJCQkJ CQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocC0+cGFyYW12YXJpZCkpOwotCi0JCQkvKiBBcHBlbmQg dGhpcyB2YXJpYWJsZSB0byBnbG9iYWwsIHJlZ2lzdGVyIGRlcGVuZGVuY3kgKi8KLQkJCXJvb3Qt Pmdsb2ItPmludmFsSXRlbXMgPSBsYXBwZW5kKHJvb3QtPmdsb2ItPmludmFsSXRlbXMsCi0JCQkJ CQkJCQkJCSBpbnZhbF9pdGVtKTsKLQkJfQorCQkJcmVjb3JkX3BsYW5fdmFyaWFibGVfZGVwZW5k ZW5jeShyb290LCBwLT5wYXJhbXZhcmlkKTsKIAl9CiB9CiAKQEAgLTMzODYsNiArMzM3NSwyNSBA QCByZWNvcmRfcGxhbl90eXBlX2RlcGVuZGVuY3koUGxhbm5lckluZm8gKnJvb3QsIE9pZCB0eXBp ZCkKIAl9CiB9CiAKKy8qCisgKiBSZWNvcmQgZGVwZW5kZW5jeSBvbiBhIHNlc3Npb24gdmFyaWFi bGUuIFRoZSB2YXJpYWJsZSBjYW4gYmUgdXNlZCBhcyBhCisgKiBzZXNzaW9uIHZhcmlhYmxlIGlu IGV4cHJlc3Npb24gbGlzdCwgb3IgdGFyZ2V0IG9mIExFVCBzdGF0ZW1lbnQuCisgKi8KK3N0YXRp YyB2b2lkCityZWNvcmRfcGxhbl92YXJpYWJsZV9kZXBlbmRlbmN5KFBsYW5uZXJJbmZvICpyb290 LCBPaWQgdmFyaWQpCit7CisJUGxhbkludmFsSXRlbSAqaW52YWxfaXRlbSA9IG1ha2VOb2RlKFBs YW5JbnZhbEl0ZW0pOworCisJLyogcGFyYW1pZCBpcyBzdGlsbCBzZXNzaW9uIHZhcmlhYmxlIGlk ICovCisJaW52YWxfaXRlbS0+Y2FjaGVJZCA9IFZBUklBQkxFT0lEOworCWludmFsX2l0ZW0tPmhh c2hWYWx1ZSA9IEdldFN5c0NhY2hlSGFzaFZhbHVlMShWQVJJQUJMRU9JRCwKKwkJCQkJCQkJCQkJ CSAgT2JqZWN0SWRHZXREYXR1bSh2YXJpZCkpOworCisJLyogQXBwZW5kIHRoaXMgdmFyaWFibGUg dG8gZ2xvYmFsLCByZWdpc3RlciBkZXBlbmRlbmN5ICovCisJcm9vdC0+Z2xvYi0+aW52YWxJdGVt cyA9IGxhcHBlbmQocm9vdC0+Z2xvYi0+aW52YWxJdGVtcywKKwkJCQkJCQkJCSBpbnZhbF9pdGVt KTsKK30KKwogLyoKICAqIGV4dHJhY3RfcXVlcnlfZGVwZW5kZW5jaWVzCiAgKgkJR2l2ZW4gYSBy ZXdyaXR0ZW4sIGJ1dCBub3QgeWV0IHBsYW5uZWQsIHF1ZXJ5IG9yIHF1ZXJpZXMKQEAgLTM0NTks NiArMzQ2NywxMCBAQCBleHRyYWN0X3F1ZXJ5X2RlcGVuZGVuY2llc193YWxrZXIoTm9kZSAqbm9k ZSwgUGxhbm5lckluZm8gKmNvbnRleHQpCiAJCQlxdWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5 KHF1ZXJ5LT51dGlsaXR5U3RtdCk7CiAJCQlpZiAocXVlcnkgPT0gTlVMTCkKIAkJCQlyZXR1cm4g ZmFsc2U7CisKKwkJCS8qIFJlY29yZCB0aGUgc2Vzc2lvbiB2YXJpYWJsZSB1c2VkIGFzIHRhcmdl dCBvZiBMRVQgc3RhdGVtZW50LiAqLworCQkJaWYgKE9pZElzVmFsaWQocXVlcnktPnJlc3VsdFZh cmlhYmxlKSkKKwkJCQlyZWNvcmRfcGxhbl92YXJpYWJsZV9kZXBlbmRlbmN5KGNvbnRleHQsIHF1 ZXJ5LT5yZXN1bHRWYXJpYWJsZSk7CiAJCX0KIAogCQkvKiBSZW1lbWJlciBpZiBhbnkgUXVlcnkg aGFzIFJMUyBxdWFscyBhcHBsaWVkIGJ5IHJld3JpdGVyICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRl eCBkNTlmY2EzMWQyLi5hOGFiODUzODJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv YW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTI1LDggKzI1 LDExIEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRy LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9n L3BnX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2lu Y2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgpAQCAtNTAsNiArNTMsNyBAQAogI2luY2x1ZGUgInV0 aWxzL2JhY2tlbmRfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRl ICJ1dGlscy9xdWVyeWp1bWJsZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCkBAIC04NCw2ICs4OCw4IEBAIHN0YXRpYyBRdWVyeSAqdHJhbnNm b3JtQ3JlYXRlVGFibGVBc1N0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCSBDcmVh dGVUYWJsZUFzU3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUNhbGxTdG10KFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJQ2FsbFN0bXQgKnN0bXQpOworc3RhdGljIFF1ZXJ5 ICp0cmFuc2Zvcm1MZXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkgICBMZXRTdG10 ICpzdG10KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUxvY2tpbmdDbGF1c2UoUGFyc2VTdGF0ZSAq cHN0YXRlLCBRdWVyeSAqcXJ5LAogCQkJCQkJCQkgICBMb2NraW5nQ2xhdXNlICpsYywgYm9vbCBw dXNoZWREb3duKTsKICNpZmRlZiBSQVdfRVhQUkVTU0lPTl9DT1ZFUkFHRV9URVNUCkBAIC0zMjcs NiArMzMzLDcgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNl VHJlZSkKIAkJY2FzZSBUX1VwZGF0ZVN0bXQ6CiAJCWNhc2UgVF9EZWxldGVTdG10OgogCQljYXNl IFRfTWVyZ2VTdG10OgorCQljYXNlIFRfTGV0U3RtdDoKIAkJCSh2b2lkKSB0ZXN0X3Jhd19leHBy ZXNzaW9uX2NvdmVyYWdlKHBhcnNlVHJlZSwgTlVMTCk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoK QEAgLTQwMCw2ICs0MDcsMTEgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5v ZGUgKnBhcnNlVHJlZSkKIAkJCQkJCQkJCSAgIChDYWxsU3RtdCAqKSBwYXJzZVRyZWUpOwogCQkJ YnJlYWs7CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1MZXRTdG10 KHBzdGF0ZSwKKwkJCQkJCQkJCSAgKExldFN0bXQgKikgcGFyc2VUcmVlKTsKKwkJCWJyZWFrOwor CiAJCWRlZmF1bHQ6CiAKIAkJCS8qCkBAIC00NDIsNiArNDU0LDcgQEAgYW5hbHl6ZV9yZXF1aXJl c19zbmFwc2hvdChSYXdTdG10ICpwYXJzZVRyZWUpCiAJCWNhc2UgVF9NZXJnZVN0bXQ6CiAJCWNh c2UgVF9TZWxlY3RTdG10OgogCQljYXNlIFRfUExBc3NpZ25TdG10OgorCQljYXNlIFRfTGV0U3Rt dDoKIAkJCXJlc3VsdCA9IHRydWU7CiAJCQlicmVhazsKIApAQCAtMTYzMyw2ICsxNjQ2LDI4NSBA QCB0cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpz dG10KQogCXJldHVybiBxcnk7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1MZXRTdG10IC0KKyAqCSAg dHJhbnNmb3JtIGFuIExldCBTdGF0ZW1lbnQKKyAqLworc3RhdGljIFF1ZXJ5ICoKK3RyYW5zZm9y bUxldFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMZXRTdG10ICpzdG10KQoreworCVF1ZXJ5CSAg ICpxdWVyeTsKKwlRdWVyeQkgICAqcmVzdWx0OworCUxpc3QJICAgKmV4cHJMaXN0ID0gTklMOwor CUxpc3QJICAgKmV4cHJMaXN0Q29lciA9IE5JTDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0Q2Vs bCAgICppbmRpcmVjdGlvbl9oZWFkID0gTlVMTDsKKwlRdWVyeQkgICAqc2VsZWN0UXVlcnk7CisJ T2lkCQkJdmFyaWQ7CisJY2hhcgkgICAqYXR0cm5hbWUgPSBOVUxMOworCWJvb2wJCW5vdF91bmlx dWU7CisJYm9vbAkJaXNfcm93dHlwZTsKKwlPaWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOwor CU9pZAkJCWNvbGxpZDsKKwlBY2xSZXN1bHQJYWNscmVzdWx0OworCUxpc3QJICAgKm5hbWVzID0g TlVMTDsKKwlpbnQJCQlpbmRpcmVjdGlvbl9zdGFydDsKKwlpbnQJCQlpID0gMDsKKworCS8qIFRo ZXJlIGNhbid0IGJlIGFueSBvdXRlciBXSVRIIHRvIHdvcnJ5IGFib3V0ICovCisJQXNzZXJ0KHBz dGF0ZS0+cF9jdGVuYW1lc3BhY2UgPT0gTklMKTsKKworCW5hbWVzID0gTmFtZXNGcm9tTGlzdChz dG10LT50YXJnZXQpOworCisJLyoKKwkgKiBUaGUgQWNjZXNzU2hhcmVMb2NrIGlzIGNyZWF0ZWQg b24gcmVsYXRlZCBzZXNzaW9uIHZhcmlhYmxlLiBUaGUgbG9jaworCSAqIHdpbGwgYmUga2VwdCBm b3IgdGhlIHdob2xlIHRyYW5zYWN0aW9uLgorCSovCisJdmFyaWQgPSBJZGVudGlmeVZhcmlhYmxl KG5hbWVzLCAmYXR0cm5hbWUsICZub3RfdW5pcXVlKTsKKwlpZiAobm90X3VuaXF1ZSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0FNQklHVU9VU19QQVJBTUVURVIpLAor CQkJCSBlcnJtc2coInRhcmdldCBcIiVzXCIgb2YgTEVUIGNvbW1hbmQgaXMgYW1iaWd1b3VzIiwK KwkJCQkJCU5hbWVMaXN0VG9TdHJpbmcobmFtZXMpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisKKwlpZiAoIU9pZElzVmFsaWQodmFyaWQpKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCks CisJCQkJIGVycm1zZygic2Vzc2lvbiB2YXJpYWJsZSBcIiVzXCIgZG9lc24ndCBleGlzdCIsCisJ CQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5hbWVzKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIHN0bXQtPmxvY2F0aW9uKSkpOworCisJLyoKKwkgKiBDYWxjdWxhdGUgc3RhcnQgb2Yg cG9zc2libGUgcG9zaXRpb24gb2YgYW4gaW5kaXJlY3Rpb24gaW4gbGlzdCwKKwkgKiBhbmQgd2hl biBpdCBpcyBpbnNpZGUgdGhlIGxpc3QsIHN0b3JlIHBvaW50ZXIgb24gZmlyc3Qgbm9kZQorCSAq IG9mIGluZGlyZWN0aW9uLgorCSAqLworCWluZGlyZWN0aW9uX3N0YXJ0ID0gbGlzdF9sZW5ndGgo bmFtZXMpIC0gKGF0dHJuYW1lID8gMSA6IDApOworCWlmIChsaXN0X2xlbmd0aChzdG10LT50YXJn ZXQpID4gaW5kaXJlY3Rpb25fc3RhcnQpCisJCWluZGlyZWN0aW9uX2hlYWQgPSBsaXN0X250aF9j ZWxsKHN0bXQtPnRhcmdldCwgaW5kaXJlY3Rpb25fc3RhcnQpOworCisJZ2V0X3Nlc3Npb25fdmFy aWFibGVfdHlwZV90eXBtb2RfY29sbGlkKHZhcmlkLCAmdHlwaWQsICZ0eXBtb2QsICZjb2xsaWQp OworCisJaXNfcm93dHlwZSA9IHR5cGVfaXNfcm93dHlwZSh0eXBpZCk7CisKKwlpZiAoYXR0cm5h bWUgJiYgIWlzX3Jvd3R5cGUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygidHlwZSBcIiVzXCIgb2YgdGFyZ2V0 IHNlc3Npb24gdmFyaWFibGUgXCIlcy4lc1wiIGlzIG5vdCBhIGNvbXBvc2l0ZSB0eXBlIiwKKwkJ CQkJCWZvcm1hdF90eXBlX2JlKHR5cGlkKSwKKwkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRf c2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2UodmFyaWQpKSwKKwkJCQkJCWdldF9zZXNzaW9uX3Zh cmlhYmxlX25hbWUodmFyaWQpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3Rt dC0+bG9jYXRpb24pKSk7CisKKwlpZiAoc3RtdC0+c2V0X2RlZmF1bHQgJiYgYXR0cm5hbWUgIT0g TlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVD VF9UWVBFKSwKKwkJCQkgZXJybXNnKCJvbmx5IHNlc3Npb24gdmFyaWFibGUgKHdpdGhvdXQgYXR0 cmlidXRlIHNwZWNpZmljYXRpb24pIGNhbiBiZSBzZXQgdG8gZGVmYXVsdCIpLAorCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzdG10LT5sb2NhdGlvbikpKTsKKworCWFjbHJlc3VsdCA9 IG9iamVjdF9hY2xjaGVjayhWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcmlkLCBHZXRVc2VySWQoKSwg QUNMX1VQREFURSk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJYWNsY2hlY2tf ZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUsIE5hbWVMaXN0VG9TdHJpbmcobmFtZXMp KTsKKworCXBzdGF0ZS0+cF9leHByX2tpbmQgPSBFWFBSX0tJTkRfTEVUX1RBUkdFVDsKKworCS8q CisJICogVGhlIExFVCBzdGF0ZW1lbnRzIHN1cHBwb3J0cyB0d28gc3ludGF4ZXM6IExFVCB2YXIg PSBleHByIGFuZCBMRVQgdmFyID0KKwkgKiBERUZBVUxULiBJbiBmaXJzdCBjYXNlLCB0aGUgZXhw cmVzc2lvbiBpcyBvZiBTZWxlY3RTdG10IG5vZGUgYW5kIGl0IGlzCisJICogdHJhbnNmb3JtYXRl ZCB0byBxdWVyeSAoU0VMRUNUKSBieSB1c3VhbCB3YXkuIFNlY29uZCBzeW50YXggc2hvdWxkIGJl CisJICogdHJhbnNmb3JtZWQgZGlmZmVyZW50bHkuIEl0IGlzIG1vcmUgY2xlYW5lciBkbyB0aGlz IHRyYW5zZm9ybWF0aW9uIGhlcmUKKwkgKiAobGlrZSBzcGVjaWFsIGNhc2UpLCBiZWNhdXNlIHdl IGRvbid0IG5lZWQgdG8gZW5oYW5jZSBTZWxlY3RTdG10IGFib3V0CisJICogZmllbGRzIG5lY2Vz c2FyeSBmb3IgdGhpcyB0cmFuc2Zvcm1hdGlvbiBzb213ZWhlcmUgaW4gU2VsZWN0U3RtdAorCSAq IHRyYW5zZm9ybWF0aW9uLiBJc24ndCB0byBuZWNlc3NhcnkgdG8gdWdsaWZ5IHRoZSBTZWxlY3RT dG10CisJICogdHJhbnNmb3JtYXRpb24uIFRoaXMgaXMgc3BlY2lhbCBjYXNlIG9mIExFVCBzdGF0 ZW1lbnQsIG5vdCBTZWxlY3RTdG10LgorCSAqLworCWlmIChzdG10LT5zZXRfZGVmYXVsdCkKKwl7 CisJCXNlbGVjdFF1ZXJ5ID0gbWFrZU5vZGUoUXVlcnkpOworCQlzZWxlY3RRdWVyeS0+Y29tbWFu ZFR5cGUgPSBDTURfU0VMRUNUOworCisJCS8qCisJCSAqIFJlc1RhcmdldChTZXRUb0RlZmF1bHQp IC0+IFRhcmdldEVudHJ5KGV4cHIoU2V0VG9EZWZhdWx0KSkgVGhlCisJCSAqIFNldFRvRGVmYXVs dCBpcyByZXBsYWNlZCBieSBkZWZleHByIGJ5IHJld3JpdGVyIGluIFJld3JpdGVRdWVyeQorCQkg KiBmdW5jdGlvbi4KKwkJICovCisJCXNlbGVjdFF1ZXJ5LT50YXJnZXRMaXN0ID0gdHJhbnNmb3Jt VGFyZ2V0TGlzdChwc3RhdGUsCisJCQkJCQkJCQkJCQkJICAoKFNlbGVjdFN0bXQgKikgc3RtdC0+ cXVlcnkpLT50YXJnZXRMaXN0LAorCQkJCQkJCQkJCQkJCSAgRVhQUl9LSU5EX0xFVF9UQVJHRVQp OworCX0KKwllbHNlCisJCXNlbGVjdFF1ZXJ5ID0gdHJhbnNmb3JtU3RtdChwc3RhdGUsIHN0bXQt PnF1ZXJ5KTsKKworCS8qIFRoZSBncmFtbWFyIHNob3VsZCBoYXZlIHByb2R1Y2VkIGEgU0VMRUNU ICovCisJQXNzZXJ0KElzQShzZWxlY3RRdWVyeSwgUXVlcnkpICYmIHNlbGVjdFF1ZXJ5LT5jb21t YW5kVHlwZSA9PSBDTURfU0VMRUNUKTsKKworCS8qLS0tLS0tLS0tLQorCSAqIEdlbmVyYXRlIGFu IGV4cHJlc3Npb24gbGlzdCBmb3IgdGhlIExFVCB0aGF0IHNlbGVjdHMgYWxsIHRoZQorCSAqIG5v bi1yZXNqdW5rIGNvbHVtbnMgZnJvbSB0aGUgc3VicXVlcnkuCisJICotLS0tLS0tLS0tCisJICov CisJZXhwckxpc3QgPSBOSUw7CisJZm9yZWFjaChsYywgc2VsZWN0UXVlcnktPnRhcmdldExpc3Qp CisJeworCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChsYyk7CisK KwkJaWYgKHRsZS0+cmVzanVuaykKKwkJCWNvbnRpbnVlOworCisJCWV4cHJMaXN0ID0gbGFwcGVu ZChleHByTGlzdCwgdGxlLT5leHByKTsKKwl9CisKKwkvKiBkb24ndCBhbGxvdyBtdWx0aWNvbHVt biByZXN1bHQgKi8KKwlpZiAobGlzdF9sZW5ndGgoZXhwckxpc3QpICE9IDEpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2df cGx1cmFsKCJhc3NpZ25tZW50IGV4cHJlc3Npb24gcmV0dXJuZWQgJWQgY29sdW1uIiwKKwkJCQkJ CQkgICAiYXNzaWdubWVudCBleHByZXNzaW9uIHJldHVybmVkICVkIGNvbHVtbnMiLAorCQkJCQkJ CSAgIGxpc3RfbGVuZ3RoKGV4cHJMaXN0KSwKKwkJCQkJCQkgICBsaXN0X2xlbmd0aChleHByTGlz dCkpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAorCQkJCQkJCQkJZXhwckxvY2F0 aW9uKChOb2RlICopIGV4cHJMaXN0KSkpKTsKKworCWV4cHJMaXN0Q29lciA9IE5JTDsKKworCWZv cmVhY2gobGMsIGV4cHJMaXN0KQorCXsKKwkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJz dChsYyk7CisJCUV4cHIJICAgKmNvZXJjZWRfZXhwcjsKKwkJUGFyYW0JICAgKnBhcmFtOworCQlP aWQJCQlleHBydHlwaWQ7CisKKwkJaWYgKElzQShleHByLCBTZXRUb0RlZmF1bHQpKQorCQl7CisJ CQlTZXRUb0RlZmF1bHQgKmRlZiA9IChTZXRUb0RlZmF1bHQgKikgZXhwcjsKKworCQkJZGVmLT50 eXBlSWQgPSB0eXBpZDsKKwkJCWRlZi0+dHlwZU1vZCA9IHR5cG1vZDsKKwkJCWRlZi0+Y29sbGF0 aW9uID0gY29sbGlkOworCQl9CisJCWVsc2UgaWYgKElzQShleHByLCBDb25zdCkgJiYgKChDb25z dCAqKSBleHByKS0+Y29uc3Rpc251bGwpCisJCXsKKwkJCS8qIHVzZSBrbm93biB0eXBlIGZvciBO VUxMIHZhbHVlICovCisJCQlleHByID0gKEV4cHIgKikgbWFrZU51bGxDb25zdCh0eXBpZCwgdHlw bW9kLCBjb2xsaWQpOworCQl9CisKKwkJLyogbm93IHdlIGNhbiByZWFkIHR5cGUgb2YgZXhwcmVz c2lvbiAqLworCQlleHBydHlwaWQgPSBleHByVHlwZSgoTm9kZSAqKSBleHByKTsKKworCQlwYXJh bSA9IG1ha2VOb2RlKFBhcmFtKTsKKwkJcGFyYW0tPnBhcmFta2luZCA9IFBBUkFNX1ZBUklBQkxF OworCQlwYXJhbS0+cGFyYW12YXJpZCA9IHZhcmlkOworCQlwYXJhbS0+cGFyYW10eXBlID0gdHlw aWQ7CisJCXBhcmFtLT5wYXJhbXR5cG1vZCA9IHR5cG1vZDsKKworCQlpZiAoaW5kaXJlY3Rpb25f aGVhZCkKKwkJeworCQkJYm9vbAkJdGFyZ2V0SXNBcnJheTsKKwkJCWNoYXIJICAgKnRhcmdldE5h bWU7CisKKwkJCXRhcmdldE5hbWUgPSBnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lKHZhcmlkKTsK KwkJCXRhcmdldElzQXJyYXkgPSBPaWRJc1ZhbGlkKGdldF9lbGVtZW50X3R5cGUodHlwaWQpKTsK KworCQkJcHN0YXRlLT5wX2hhc1Nlc3Npb25WYXJpYWJsZXMgPSB0cnVlOworCisJCQljb2VyY2Vk X2V4cHIgPSAoRXhwciAqKQorCQkJCXRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihwc3Rh dGUsCisJCQkJCQkJCQkJCSAgIChOb2RlICopIHBhcmFtLAorCQkJCQkJCQkJCQkgICB0YXJnZXRO YW1lLAorCQkJCQkJCQkJCQkgICB0YXJnZXRJc0FycmF5LAorCQkJCQkJCQkJCQkgICB0eXBpZCwK KwkJCQkJCQkJCQkJICAgdHlwbW9kLAorCQkJCQkJCQkJCQkgICBJbnZhbGlkT2lkLAorCQkJCQkJ CQkJCQkgICBzdG10LT50YXJnZXQsCisJCQkJCQkJCQkJCSAgIGluZGlyZWN0aW9uX2hlYWQsCisJ CQkJCQkJCQkJCSAgIChOb2RlICopIGV4cHIsCisJCQkJCQkJCQkJCSAgIENPRVJDSU9OX1BMUEdT UUwsCisJCQkJCQkJCQkJCSAgIHN0bXQtPmxvY2F0aW9uKTsKKwkJfQorCQllbHNlCisJCQljb2Vy Y2VkX2V4cHIgPSAoRXhwciAqKQorCQkJCWNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsCisJ CQkJCQkJCQkgIChOb2RlICopIGV4cHIsCisJCQkJCQkJCQkgIGV4cHJ0eXBpZCwKKwkJCQkJCQkJ CSAgdHlwaWQsIHR5cG1vZCwKKwkJCQkJCQkJCSAgQ09FUkNJT05fQVNTSUdOTUVOVCwKKwkJCQkJ CQkJCSAgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCisJCQkJCQkJCQkgIHN0bXQtPmxvY2F0aW9uKTsK KworCQlpZiAoY29lcmNlZF9leHByID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygidmFyaWFi bGUgXCIlcy4lc1wiIGlzIG9mIHR5cGUgJXMsIgorCQkJCQkJCSIgYnV0IGV4cHJlc3Npb24gaXMg b2YgdHlwZSAlcyIsCisJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9zZXNzaW9uX3Zhcmlh YmxlX25hbWVzcGFjZSh2YXJpZCkpLAorCQkJCQkJCWdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWUo dmFyaWQpLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKHR5cGlkKSwKKwkJCQkJCQlmb3JtYXRfdHlw ZV9iZShleHBydHlwaWQpKSwKKwkJCQkJIGVycmhpbnQoIllvdSB3aWxsIG5lZWQgdG8gcmV3cml0 ZSBvciBjYXN0IHRoZSBleHByZXNzaW9uLiIpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIGV4cHIpKSkpOworCisJCWV4cHJMaXN0Q29lciA9 IGxhcHBlbmQoZXhwckxpc3RDb2VyLCBjb2VyY2VkX2V4cHIpOworCX0KKworCS8qCisJICogR2Vu ZXJhdGUgcXVlcnkncyB0YXJnZXQgbGlzdCB1c2luZyB0aGUgY29tcHV0ZWQgbGlzdCBvZiBleHBy ZXNzaW9ucy4KKwkgKi8KKwlxdWVyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKKwlxdWVyeS0+Y29tbWFu ZFR5cGUgPSBDTURfU0VMRUNUOworCisJZm9yZWFjaChsYywgZXhwckxpc3RDb2VyKQorCXsKKwkJ RXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisJCVRhcmdldEVudHJ5ICp0bGU7 CisKKwkJdGxlID0gbWFrZVRhcmdldEVudHJ5KGV4cHIsCisJCQkJCQkJICBpICsgMSwKKwkJCQkJ CQkgIEZpZ3VyZUNvbG5hbWUoKE5vZGUgKikgZXhwciksCisJCQkJCQkJICBmYWxzZSk7CisJCXF1 ZXJ5LT50YXJnZXRMaXN0ID0gbGFwcGVuZChxdWVyeS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwl9CisK KwkvKiBkb25lIGJ1aWxkaW5nIHRoZSByYW5nZSB0YWJsZSBhbmQgam9pbnRyZWUgKi8KKwlxdWVy eS0+cnRhYmxlID0gcHN0YXRlLT5wX3J0YWJsZTsKKwlxdWVyeS0+am9pbnRyZWUgPSBtYWtlRnJv bUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBOVUxMKTsKKworCXF1ZXJ5LT5oYXNUYXJnZXRTUkZz ID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7CisJcXVlcnktPmhhc1N1YkxpbmtzID0gcHN0YXRl LT5wX2hhc1N1YkxpbmtzOworCXF1ZXJ5LT5oYXNTZXNzaW9uVmFyaWFibGVzID0gcHN0YXRlLT5w X2hhc1Nlc3Npb25WYXJpYWJsZXM7CisKKwkvKiBUaGlzIGlzIHRvcCBxdWVyeSAqLworCXF1ZXJ5 LT5jYW5TZXRUYWcgPSB0cnVlOworCisJLyoKKwkgKiBTYXZlIHRhcmdldCBzZXNzaW9uIHZhcmlh YmxlIGlkLiBUaGlzIHZhbHVlIGlzIHVzZWQgbXVsdGlwbGUgdGltZXM6IGJ5CisJICogcXVlcnkg cmV3cml0ZXIgKGZvciBnZXR0aW5nIHJlbGF0ZWQgZGVmZXhwciksIGJ5IHBsYW5uZXIgKGZvciBh Y3F1aXJpbmcKKwkgKiBBY2Nlc3NTaGFyZUxvY2sgb24gdGFyZ2V0IHZhcmlhYmxlKSwgYW5kIGJ5 IGV4ZWN1dG9yICh3ZSBuZWVkIHRvIGtub3cKKwkgKiB0YXJnZXQgdmFyaWFibGUgaWQpLgorCSAq LworCXF1ZXJ5LT5yZXN1bHRWYXJpYWJsZSA9IHZhcmlkOworCisJYXNzaWduX3F1ZXJ5X2NvbGxh dGlvbnMocHN0YXRlLCBxdWVyeSk7CisKKwlzdG10LT5xdWVyeSA9IChOb2RlICopIHF1ZXJ5Owor CisJLyoKKwkgKiBXaGVuIHN0YXRlbWVudCBpcyBleGVjdXRlZCBhcyBhIFBscGdTUUwgTEVUIHN0 YXRlbWVudCwgdGhlbiB3ZSBzaG91bGQKKwkgKiByZXR1cm4gdGhlIHF1ZXJ5IGJlY2F1c2Ugd2Ug ZG9uJ3Qgd2FudCB0byB1c2UgYSB1dGlsaXR5U3RtdCB3cmFwcGVyCisJICogbm9kZS4KKwkgKi8K KwlpZiAoc3RtdC0+cGxwZ3NxbF9tb2RlKQorCQlyZXR1cm4gcXVlcnk7CisKKwkvKiByZXByZXNl bnQgdGhlIGNvbW1hbmQgYXMgYSB1dGlsaXR5IFF1ZXJ5ICovCisJcmVzdWx0ID0gbWFrZU5vZGUo UXVlcnkpOworCXJlc3VsdC0+Y29tbWFuZFR5cGUgPSBDTURfVVRJTElUWTsKKwlyZXN1bHQtPnV0 aWxpdHlTdG10ID0gKE5vZGUgKikgc3RtdDsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAg KiB0cmFuc2Zvcm1TZXRPcGVyYXRpb25TdG10IC0KICAqCSAgdHJhbnNmb3JtcyBhIHNldC1vcGVy YXRpb25zIHRyZWUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDI2MGI3ZmJjZTMuLjVlM2Q1M2NiZjMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQpAQCAtMzA0LDcgKzMwNCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmll d1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCURy b3BUcmFuc2Zvcm1TdG10CiAJCURyb3BVc2VyTWFwcGluZ1N0bXQgRXhwbGFpblN0bXQgRmV0Y2hT dG10CiAJCUdyYW50U3RtdCBHcmFudFJvbGVTdG10IEltcG9ydEZvcmVpZ25TY2hlbWFTdG10IElu ZGV4U3RtdCBJbnNlcnRTdG10Ci0JCUxpc3RlblN0bXQgTG9hZFN0bXQgTG9ja1N0bXQgTWVyZ2VT dG10IE5vdGlmeVN0bXQgRXhwbGFpbmFibGVTdG10IFByZXBhcmFibGVTdG10CisJCUxldFN0bXQg TGlzdGVuU3RtdCBMb2FkU3RtdCBMb2NrU3RtdCBNZXJnZVN0bXQgTm90aWZ5U3RtdCBFeHBsYWlu YWJsZVN0bXQgUHJlcGFyYWJsZVN0bXQKIAkJQ3JlYXRlRnVuY3Rpb25TdG10IEFsdGVyRnVuY3Rp b25TdG10IFJlaW5kZXhTdG10IFJlbW92ZUFnZ3JTdG10CiAJCVJlbW92ZUZ1bmNTdG10IFJlbW92 ZU9wZXJTdG10IFJlbmFtZVN0bXQgUmV0dXJuU3RtdCBSZXZva2VTdG10IFJldm9rZVJvbGVTdG10 CiAJCVJ1bGVBY3Rpb25TdG10IFJ1bGVBY3Rpb25TdG10T3JFbXB0eSBSdWxlU3RtdApAQCAtNDUy LDYgKzQ1Miw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJVHJpZ2dlclRyYW5zaXRp b25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1 dW1fcmVsYXRpb25fbGlzdAogCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9saXN0CisJCQkJ bGV0X3RhcmdldAogCiAldHlwZSA8bm9kZT4Jb3B0X3JvdXRpbmVfYm9keQogJXR5cGUgPGdyb3Vw Y2xhdXNlPiBncm91cF9jbGF1c2UKQEAgLTcxNSw3ICs3MTYsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogCUtFWQogCiAJTEFCRUwgTEFOR1VBR0UgTEFSR0VfUCBMQVNUX1AgTEFURVJBTF9Q Ci0JTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVGVCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBM T0FEIExPQ0FMCisJTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVGVCBMRVQgTEVWRUwgTElLRSBM SU1JVCBMSVNURU4gTE9BRCBMT0NBTAogCUxPQ0FMVElNRSBMT0NBTFRJTUVTVEFNUCBMT0NBVElP TiBMT0NLX1AgTE9DS0VEIExPR0dFRAogCiAJTUFQUElORyBNQVRDSCBNQVRDSEVEIE1BVEVSSUFM SVpFRCBNQVhWQUxVRSBNRVJHRSBNRVRIT0QKQEAgLTEwNDIsNiArMTA0Myw3IEBAIHN0bXQ6CiAJ CQl8IEltcG9ydEZvcmVpZ25TY2hlbWFTdG10CiAJCQl8IEluZGV4U3RtdAogCQkJfCBJbnNlcnRT dG10CisJCQl8IExldFN0bXQKIAkJCXwgTGlzdGVuU3RtdAogCQkJfCBSZWZyZXNoTWF0Vmlld1N0 bXQKIAkJCXwgTG9hZFN0bXQKQEAgLTExOTI1LDcgKzExOTI3LDggQEAgRXhwbGFpbmFibGVTdG10 OgogCQkJfCBDcmVhdGVBc1N0bXQKIAkJCXwgQ3JlYXRlTWF0Vmlld1N0bXQKIAkJCXwgUmVmcmVz aE1hdFZpZXdTdG10Ci0JCQl8IEV4ZWN1dGVTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUg JCQ9JDEgKi8KKwkJCXwgRXhlY3V0ZVN0bXQKKwkJCXwgTGV0U3RtdAkJCQkJCS8qIGJ5IGRlZmF1 bHQgYWxsIGFyZSAkJD0kMSAqLwogCQk7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTE5 NTUsNyArMTE5NTgsOCBAQCBQcmVwYXJhYmxlU3RtdDoKIAkJCXwgSW5zZXJ0U3RtdAogCQkJfCBV cGRhdGVTdG10CiAJCQl8IERlbGV0ZVN0bXQKLQkJCXwgTWVyZ2VTdG10CQkJCQkJLyogYnkgZGVm YXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8IE1lcmdlU3RtdAorCQkJfCBMZXRTdG10CQkJCQkJ LyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCiAJCTsKIAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCkBAIC0xMjU0Myw2ICsxMjU0Nyw0OSBAQCBvcHRfaG9sZDogLyogRU1QVFkgKi8JCQkJCQl7 ICQkID0gMDsgfQogCQkJfCBXSVRIT1VUIEhPTEQJCQkJCXsgJCQgPSAwOyB9CiAJCTsKIAorLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZOgorICoJCQkJTEVUIFNUQVRFTUVOVFMK KyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCitMZXRTdG10OglMRVQgbGV0X3RhcmdldCAnPScg YV9leHByCisJCQkJeworCQkJCQlMZXRTdG10CSAgICpuID0gbWFrZU5vZGUoTGV0U3RtdCk7CisJ CQkJCVNlbGVjdFN0bXQgKnNlbGVjdDsKKwkJCQkJUmVzVGFyZ2V0ICAqcmVzOworCisJCQkJCW4t PnRhcmdldCA9ICQyOworCisJCQkJCXNlbGVjdCA9IG1ha2VOb2RlKFNlbGVjdFN0bXQpOworCQkJ CQlyZXMgPSBtYWtlTm9kZShSZXNUYXJnZXQpOworCisJCQkJCS8qIENyZWF0ZSB0YXJnZXQgbGlz dCBmb3IgaW1wbGljaXQgcXVlcnkgKi8KKwkJCQkJcmVzLT5uYW1lID0gTlVMTDsKKwkJCQkJcmVz LT5pbmRpcmVjdGlvbiA9IE5JTDsKKwkJCQkJcmVzLT52YWwgPSAoTm9kZSAqKSAkNDsKKwkJCQkJ cmVzLT5sb2NhdGlvbiA9IEA0OworCisJCQkJCXNlbGVjdC0+dGFyZ2V0TGlzdCA9IGxpc3RfbWFr ZTEocmVzKTsKKwkJCQkJbi0+cXVlcnkgPSAoTm9kZSAqKSBzZWxlY3Q7CisKKwkJCQkJbi0+c2V0 X2RlZmF1bHQgPSBJc0EoJDQsIFNldFRvRGVmYXVsdCk7CisKKwkJCQkJbi0+bG9jYXRpb24gPSBA MjsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitsZXRfdGFyZ2V0OgorCQkJ Q29sSWQgb3B0X2luZGlyZWN0aW9uCisJCQkJeworCQkJCQkkJCA9IGxpc3RfbWFrZTEobWFrZVN0 cmluZygkMSkpOworCQkJCQlpZiAoJDIpCisJCQkJCQkgICQkID0gbGlzdF9jb25jYXQoJCQsCisJ CQkJCQkJCQkJICAgY2hlY2tfaW5kaXJlY3Rpb24oJDIsIHl5c2Nhbm5lcikpOworCQkJCX0KKwkJ OworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKgkJUVVFUlk6CkBAIC0xNjk2NSw2ICsx NzAxMiw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTEFSR0VfUAogCQkJfCBMQVNUX1AK IAkJCXwgTEVBS1BST09GCisJCQl8IExFVAogCQkJfCBMRVZFTAogCQkJfCBMSVNURU4KIAkJCXwg TE9BRApAQCAtMTc1MzUsNiArMTc1ODMsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IExF QUtQUk9PRgogCQkJfCBMRUFTVAogCQkJfCBMRUZUCisJCQl8IExFVAogCQkJfCBMRVZFTAogCQkJ fCBMSUtFCiAJCQl8IExJU1RFTgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2FnZy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IGRiZTYzMGE1MWIu LjQzNjU2OTI3MzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKQEAgLTM0OCw2ICszNDgsNyBAQCBj aGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq ZXhwcikKIAkJCUFzc2VydChmYWxzZSk7CQkvKiBjYW4ndCBoYXBwZW4gKi8KIAkJCWJyZWFrOwog CQljYXNlIEVYUFJfS0lORF9PVEhFUjoKKwkJY2FzZSBFWFBSX0tJTkRfTEVUX1RBUkdFVDoKIAog CQkJLyoKIAkJCSAqIEFjY2VwdCBhZ2dyZWdhdGUvZ3JvdXBpbmcgaGVyZTsgY2FsbGVyIG11c3Qg dGhyb3cgZXJyb3IgaWYKQEAgLTk1NSw2ICs5NTYsOSBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2Fs bChQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJfS0lO RF9DWUNMRV9NQVJLOgogCQkJZXJya2luZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBS X0tJTkRfTEVUX1RBUkdFVDoKKwkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBh bGxvd2VkIGluIExFVCBzdGF0ZW1lbnQiKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhl cmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY3RlLmMgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfY3RlLmMKaW5kZXggOGZjODY1ODYwOC4uYzJhNDJkNDA4ZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2N0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9jdGUuYwpAQCAtMTMzLDYgKzEzMywxNCBAQCB0cmFuc2Zvcm1XaXRoQ2xhdXNlKFBh cnNlU3RhdGUgKnBzdGF0ZSwgV2l0aENsYXVzZSAqd2l0aENsYXVzZSkKIAkJCQkJZXJybXNnKCJN RVJHRSBub3Qgc3VwcG9ydGVkIGluIFdJVEggcXVlcnkiKSwKIAkJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgY3RlLT5sb2NhdGlvbikpOwogCisJCS8qIExFVCBpcyBhbGxvd2VkIGJ5IHBh cnNlciwgYnV0IG5vdCBzdXBwb3J0ZWQuIFJlamVjdCBmb3Igbm93ICovCisJCWlmIChJc0EoY3Rl LT5jdGVxdWVyeSwgTGV0U3RtdCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJZXJybXNnKCJMRVQgbm90IHN1cHBv cnRlZCBpbiBXSVRIIHF1ZXJ5IiksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGN0 ZS0+bG9jYXRpb24pKTsKKworCiAJCWZvcl9lYWNoX2NlbGwocmVzdCwgd2l0aENsYXVzZS0+Y3Rl cywgbG5leHQod2l0aENsYXVzZS0+Y3RlcywgbGMpKQogCQl7CiAJCQlDb21tb25UYWJsZUV4cHIg KmN0ZTIgPSAoQ29tbW9uVGFibGVFeHByICopIGxmaXJzdChyZXN0KTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZXhwci5jCmluZGV4IDA2OWM1ODA5YmMuLjRhZDgwNDQ3OTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYwpAQCAtNTU4LDYgKzU1OCw3IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpw c3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJY2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVN TjoKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJY2FzZSBFWFBSX0tJTkRfVkFSSUFC TEVfREVGQVVMVDoKKwkJY2FzZSBFWFBSX0tJTkRfTEVUX1RBUkdFVDoKIAogCQkJLyogb2theSAq LwogCQkJYnJlYWs7CkBAIC0xOTg1LDYgKzE5ODYsNyBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNl U3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2FzZSBFWFBSX0tJTkRfVkFMVUVT OgogCQljYXNlIEVYUFJfS0lORF9WQUxVRVNfU0lOR0xFOgogCQljYXNlIEVYUFJfS0lORF9DWUNM RV9NQVJLOgorCQljYXNlIEVYUFJfS0lORF9MRVRfVEFSR0VUOgogCQkJLyogb2theSAqLwogCQkJ YnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NIRUNLX0NPTlNUUkFJTlQ6CkBAIC0zMzA3LDYgKzMz MDksOCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQkJcmV0 dXJuICJHRU5FUkFURUQgQVMiOwogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJcmV0 dXJuICJDWUNMRSI7CisJCWNhc2UgRVhQUl9LSU5EX0xFVF9UQVJHRVQ6CisJCQlyZXR1cm4gIkxF VCI7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNh c2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IDAwNWJjMDQw MGYuLjUwYzYzMjhjMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5j LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMjY2MCw2ICsyNjYw LDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq bGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJ CWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX0xFVF9UQVJHRVQ6 CisJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g TEVUIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBU aGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCA4ZTBkNmZkMDFmLi4yNTA2OTVhYTdiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC04OCw3ICs4OCw5IEBAIHRyYW5zZm9ybVRh cmdldEVudHJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJICogdGhyb3VnaCB1bm1vZGlmaWVkLiAg KHRyYW5zZm9ybUV4cHIgd2lsbCB0aHJvdyB0aGUgYXBwcm9wcmlhdGUKIAkJICogZXJyb3IgaWYg d2UncmUgZGlzYWxsb3dpbmcgaXQuKQogCQkgKi8KLQkJaWYgKGV4cHJLaW5kID09IEVYUFJfS0lO RF9VUERBVEVfU09VUkNFICYmIElzQShub2RlLCBTZXRUb0RlZmF1bHQpKQorCQlpZiAoKGV4cHJL aW5kID09IEVYUFJfS0lORF9VUERBVEVfU09VUkNFIHx8CisJCQkgZXhwcktpbmQgPT0gRVhQUl9L SU5EX0xFVF9UQVJHRVQpCisJCQkmJiBJc0Eobm9kZSwgU2V0VG9EZWZhdWx0KSkKIAkJCWV4cHIg PSBub2RlOwogCQllbHNlCiAJCQlleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIG5vZGUsIGV4 cHJLaW5kKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIu YyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwppbmRleCBmYjBjNjg3YmQ4 Li5kNzIyYmE3NDNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5k bGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCkBAIC0yNSw2 ICsyNSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9k ZXBlbmRlbmN5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNs dWRlICJmb3JlaWduL2Zkd2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtMzcwOCw2 ICszNzA5LDM5IEBAIFJld3JpdGVRdWVyeShRdWVyeSAqcGFyc2V0cmVlLCBMaXN0ICpyZXdyaXRl X2V2ZW50cykKIAkJfQogCX0KIAorCS8qCisJICogUmV3cml0ZSBTZXRUb0RlZmF1bHQgYnkgZGVm YXVsdCBleHByZXNzaW9uIG9mIExldCBzdGF0ZW1lbnQuCisJICovCisJaWYgKGV2ZW50ID09IENN RF9TRUxFQ1QgJiYgT2lkSXNWYWxpZChwYXJzZXRyZWUtPnJlc3VsdFZhcmlhYmxlKSkKKwl7CisJ CU9pZAkJCXJlc3VsdFZhcmlhYmxlID0gcGFyc2V0cmVlLT5yZXN1bHRWYXJpYWJsZTsKKworCQlp ZiAobGlzdF9sZW5ndGgocGFyc2V0cmVlLT50YXJnZXRMaXN0KSA9PSAxICYmCisJCQlJc0EoKChU YXJnZXRFbnRyeSAqKSBsaW5pdGlhbChwYXJzZXRyZWUtPnRhcmdldExpc3QpKS0+ZXhwciwgU2V0 VG9EZWZhdWx0KSkKKwkJeworCQkJVmFyaWFibGUJdmFyOworCQkJVGFyZ2V0RW50cnkgKnRsZTsK KwkJCVRhcmdldEVudHJ5ICpuZXd0bGU7CisJCQlFeHByCSAgICpkZWZleHByOworCisJCQkvKiBS ZWFkIHNlc3Npb24gdmFyaWFibGUgbWV0YWRhdGEgd2l0aCBkZWZleHByICovCisJCQlJbml0VmFy aWFibGUoJnZhciwgcmVzdWx0VmFyaWFibGUsIGZhbHNlKTsKKworCQkJaWYgKHZhci5oYXNfZGVm ZXhwcikKKwkJCQlkZWZleHByID0gKEV4cHIgKikgdmFyLmRlZmV4cHI7CisJCQllbHNlCisJCQkJ ZGVmZXhwciA9IChFeHByICopIG1ha2VOdWxsQ29uc3QodmFyLnR5cGlkLCB2YXIudHlwbW9kLCB2 YXIuY29sbGF0aW9uKTsKKworCQkJdGxlID0gKFRhcmdldEVudHJ5ICopIGxpbml0aWFsKHBhcnNl dHJlZS0+dGFyZ2V0TGlzdCk7CisJCQluZXd0bGUgPSBtYWtlVGFyZ2V0RW50cnkoZGVmZXhwciwK KwkJCQkJCQkJCSB0bGUtPnJlc25vLAorCQkJCQkJCQkJIHBzdHJkdXAodGxlLT5yZXNuYW1lKSwK KwkJCQkJCQkJCSBmYWxzZSk7CisKKwkJCXBhcnNldHJlZS0+dGFyZ2V0TGlzdCA9IGxpc3RfbWFr ZTEobmV3dGxlKTsKKwkJfQorCX0KKwogCS8qCiAJICogSWYgdGhlIHN0YXRlbWVudCBpcyBhbiBp bnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCBvciBtZXJnZSwgYWRqdXN0IGl0cwogCSAqIHRhcmdldGxp c3QgYXMgbmVlZGVkLCBhbmQgdGhlbiBmaXJlIElOU0VSVC9VUERBVEUvREVMRVRFIHJ1bGVzIG9u IGl0LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jIGIvc3Jj L2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jCmluZGV4IGY0OWNmYjZjYzYuLmM2ZmYxZmY5 ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcm93c2VjdXJpdHkuYworKysgYi9z cmMvYmFja2VuZC9yZXdyaXRlL3Jvd3NlY3VyaXR5LmMKQEAgLTIxMywxMCArMjEzLDEwIEBAIGdl dF9yb3dfc2VjdXJpdHlfcG9saWNpZXMoUXVlcnkgKnJvb3QsIFJhbmdlVGJsRW50cnkgKnJ0ZSwg aW50IHJ0X2luZGV4LAogCX0KIAogCS8qCi0JICogRm9yIFNFTEVDVCwgVVBEQVRFIGFuZCBERUxF VEUsIGFkZCBzZWN1cml0eSBxdWFscyB0byBlbmZvcmNlIHRoZSBVU0lORwotCSAqIHBvbGljaWVz LiAgVGhlc2Ugc2VjdXJpdHkgcXVhbHMgY29udHJvbCBhY2Nlc3MgdG8gZXhpc3RpbmcgdGFibGUg cm93cy4KLQkgKiBSZXN0cmljdGl2ZSBwb2xpY2llcyBhcmUgY29tYmluZWQgdG9nZXRoZXIgdXNp bmcgQU5ELCBhbmQgcGVybWlzc2l2ZQotCSAqIHBvbGljaWVzIGFyZSBjb21iaW5lZCB0b2dldGhl ciB1c2luZyBPUi4KKwkgKiBGb3IgU0VMRUNULCBMRVQsIFVQREFURSBhbmQgREVMRVRFLCBhZGQg c2VjdXJpdHkgcXVhbHMgdG8gZW5mb3JjZSB0aGUKKwkgKiBVU0lORyBwb2xpY2llcy4gIFRoZXNl IHNlY3VyaXR5IHF1YWxzIGNvbnRyb2wgYWNjZXNzIHRvIGV4aXN0aW5nIHRhYmxlCisJICogcm93 cy4gUmVzdHJpY3RpdmUgcG9saWNpZXMgYXJlIGNvbWJpbmVkIHRvZ2V0aGVyIHVzaW5nIEFORCwg YW5kCisJICogcGVybWlzc2l2ZSBwb2xpY2llcyBhcmUgY29tYmluZWQgdG9nZXRoZXIgdXNpbmcg T1IuCiAJICovCiAKIAlnZXRfcG9saWNpZXNfZm9yX3JlbGF0aW9uKHJlbCwgY29tbWFuZFR5cGUs IHVzZXJfaWQsICZwZXJtaXNzaXZlX3BvbGljaWVzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dGNvcC9kZXN0LmMgYi9zcmMvYmFja2VuZC90Y29wL2Rlc3QuYwppbmRleCA2YWZhYTE1M2NhLi44 ZTFkOTRhNmUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL2Rlc3QuYworKysgYi9zcmMv YmFja2VuZC90Y29wL2Rlc3QuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9y L2Z1bmN0aW9ucy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RxdWV1ZS5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL3RzdG9yZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivc3ZhcmlhYmxlUmVj ZWl2ZXIuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9y bWF0LmgiCiAjaW5jbHVkZSAidXRpbHMvcG9ydGFsLmgiCkBAIC0xNTIsNiArMTUzLDkgQEAgQ3Jl YXRlRGVzdFJlY2VpdmVyKENvbW1hbmREZXN0IGRlc3QpCiAKIAkJY2FzZSBEZXN0VHVwbGVRdWV1 ZToKIAkJCXJldHVybiBDcmVhdGVUdXBsZVF1ZXVlRGVzdFJlY2VpdmVyKE5VTEwpOworCisJCWNh c2UgRGVzdFZhcmlhYmxlOgorCQkJcmV0dXJuIENyZWF0ZVZhcmlhYmxlRGVzdFJlY2VpdmVyKCk7 CiAJfQogCiAJLyogc2hvdWxkIG5ldmVyIGdldCBoZXJlICovCkBAIC0yMDgsNiArMjEyLDcgQEAg RW5kQ29tbWFuZChjb25zdCBRdWVyeUNvbXBsZXRpb24gKnFjLCBDb21tYW5kRGVzdCBkZXN0LCBi b29sIGZvcmNlX3VuZGVjb3JhdGVkX28KIAkJY2FzZSBEZXN0U1FMRnVuY3Rpb246CiAJCWNhc2Ug RGVzdFRyYW5zaWVudFJlbDoKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToKKwkJY2FzZSBEZXN0VmFy aWFibGU6CiAJCQlicmVhazsKIAl9CiB9CkBAIC0yNTMsNiArMjU4LDcgQEAgTnVsbENvbW1hbmQo Q29tbWFuZERlc3QgZGVzdCkKIAkJY2FzZSBEZXN0U1FMRnVuY3Rpb246CiAJCWNhc2UgRGVzdFRy YW5zaWVudFJlbDoKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToKKwkJY2FzZSBEZXN0VmFyaWFibGU6 CiAJCQlicmVhazsKIAl9CiB9CkBAIC0yOTYsNiArMzAyLDcgQEAgUmVhZHlGb3JRdWVyeShDb21t YW5kRGVzdCBkZXN0KQogCQljYXNlIERlc3RTUUxGdW5jdGlvbjoKIAkJY2FzZSBEZXN0VHJhbnNp ZW50UmVsOgogCQljYXNlIERlc3RUdXBsZVF1ZXVlOgorCQljYXNlIERlc3RWYXJpYWJsZToKIAkJ CWJyZWFrOwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIv c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggZDFhN2Q5OTVlMS4uZDc3ZmVhZDI3NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQv dGNvcC91dGlsaXR5LmMKQEAgLTI0Miw2ICsyNDIsNyBAQCBDbGFzc2lmeVV0aWxpdHlDb21tYW5k QXNSZWFkT25seShOb2RlICpwYXJzZXRyZWUpCiAKIAkJY2FzZSBUX0NhbGxTdG10OgogCQljYXNl IFRfRG9TdG10OgorCQljYXNlIFRfTGV0U3RtdDoKIAkJCXsKIAkJCQkvKgogCQkJCSAqIENvbW1h bmRzIGluc2lkZSB0aGUgRE8gYmxvY2sgb3IgdGhlIGNhbGxlZCBwcm9jZWR1cmUgbWlnaHQKQEAg LTEwNzEsNiArMTA3MiwxMSBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAq cHN0bXQsCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQlFeGVjdXRl TGV0U3RtdChwc3RhdGUsIChMZXRTdG10ICopIHBhcnNldHJlZSwgcGFyYW1zLAorCQkJCQkJICAg cXVlcnlFbnYsIHFjKTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQkvKiBBbGwgb3RoZXIg c3RhdGVtZW50IHR5cGVzIGhhdmUgZXZlbnQgdHJpZ2dlciBzdXBwb3J0ICovCiAJCQlQcm9jZXNz VXRpbGl0eVNsb3cocHN0YXRlLCBwc3RtdCwgcXVlcnlTdHJpbmcsCkBAIC0yMTk3LDYgKzIyMDMs MTAgQEAgVXRpbGl0eUNvbnRhaW5zUXVlcnkoTm9kZSAqcGFyc2V0cmVlKQogCQkJCXJldHVybiBV dGlsaXR5Q29udGFpbnNRdWVyeShxcnktPnV0aWxpdHlTdG10KTsKIAkJCXJldHVybiBxcnk7CiAK KwkJY2FzZSBUX0xldFN0bXQ6CisJCQlxcnkgPSBjYXN0Tm9kZShRdWVyeSwgKChMZXRTdG10ICop IHBhcnNldHJlZSktPnF1ZXJ5KTsKKwkJCXJldHVybiBxcnk7CisKIAkJZGVmYXVsdDoKIAkJCXJl dHVybiBOVUxMOwogCX0KQEAgLTIzOTUsNiArMjQwNSwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5v ZGUgKnBhcnNldHJlZSkKIAkJCXRhZyA9IENNRFRBR19TRUxFQ1Q7CiAJCQlicmVhazsKIAorCQlj YXNlIFRfTGV0U3RtdDoKKwkJCXRhZyA9IENNRFRBR19MRVQ7CisJCQlicmVhazsKKwogCQkJLyog dXRpbGl0eSBzdGF0ZW1lbnRzIC0tLSBzYW1lIHdoZXRoZXIgcmF3IG9yIGNvb2tlZCAqLwogCQlj YXNlIFRfVHJhbnNhY3Rpb25TdG10OgogCQkJewpAQCAtMzI4MCw2ICszMjk0LDcgQEAgR2V0Q29t bWFuZExvZ0xldmVsKE5vZGUgKnBhcnNldHJlZSkKIAkJCWJyZWFrOwogCiAJCWNhc2UgVF9QTEFz c2lnblN0bXQ6CisJCWNhc2UgVF9MZXRTdG10OgogCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJCQli cmVhazsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMg Yi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCBiODI0YmVmOThjLi5i ZDNjNzZkN2ViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtMTM1LDYgKzEz NSw3IEBAIEluaXRQbGFuQ2FjaGUodm9pZCkKIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFj ayhBTU9QT1BJRCwgUGxhbkNhY2hlU3lzQ2FsbGJhY2ssIChEYXR1bSkgMCk7CiAJQ2FjaGVSZWdp c3RlclN5c2NhY2hlQ2FsbGJhY2soRk9SRUlHTlNFUlZFUk9JRCwgUGxhbkNhY2hlU3lzQ2FsbGJh Y2ssIChEYXR1bSkgMCk7CiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soRk9SRUlHTkRB VEFXUkFQUEVST0lELCBQbGFuQ2FjaGVTeXNDYWxsYmFjaywgKERhdHVtKSAwKTsKKwlDYWNoZVJl Z2lzdGVyU3lzY2FjaGVDYWxsYmFjayhWQVJJQUJMRU9JRCwgUGxhbkNhY2hlT2JqZWN0Q2FsbGJh Y2ssIChEYXR1bSkgMCk7CiB9CiAKIC8qCkBAIC0xODc3LDYgKzE4NzgsMTcgQEAgU2NhblF1ZXJ5 Rm9yTG9ja3MoUXVlcnkgKnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKQogCQkJCQkJICAodm9pZCAq KSAmYWNxdWlyZSwKIAkJCQkJCSAgUVRXX0lHTk9SRV9SQ19TVUJRVUVSSUVTKTsKIAl9CisKKwkv KiBQcm9jZXNzIHNlc3Npb24gdmFyaWFibGVzICovCisJaWYgKE9pZElzVmFsaWQocGFyc2V0cmVl LT5yZXN1bHRWYXJpYWJsZSkpCisJeworCQlpZiAoYWNxdWlyZSkKKwkJCUxvY2tEYXRhYmFzZU9i amVjdChWYXJpYWJsZVJlbGF0aW9uSWQsIHBhcnNldHJlZS0+cmVzdWx0VmFyaWFibGUsCisJCQkJ CQkJICAgMCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJZWxzZQorCQkJVW5sb2NrRGF0YWJhc2VPYmpl Y3QoVmFyaWFibGVSZWxhdGlvbklkLCBwYXJzZXRyZWUtPnJlc3VsdFZhcmlhYmxlLAorCQkJCQkJ CQkgMCwgQWNjZXNzU2hhcmVMb2NrKTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9z ZXNzaW9uX3ZhcmlhYmxlLmgKaW5kZXggYTQ4MjBhYTIxZC4uMjY2NzY1NmFjMiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuaApAQCAtNDAsNCArNDAsNyBAQCBleHRlcm4g dm9pZCBBdEVPU3ViWGFjdF9TZXNzaW9uVmFyaWFibGUoYm9vbCBpc0NvbW1pdCwKIAkJCQkJCQkJ CQlTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCQkJCQkJCQkJU3ViVHJhbnNhY3Rpb25JZCBw YXJlbnRTdWJpZCk7CiAKK2V4dGVybiB2b2lkIEV4ZWN1dGVMZXRTdG10KFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGV0U3RtdCAqc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCisJCQkJCQkJUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYsIFF1ZXJ5Q29tcGxldGlvbiAqcWMpOworCiAjZW5kaWYKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjBlYWEyMzdiNDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIHN2YXJpYWJsZVJlY2VpdmVyLmgKKyAqCSAgcHJvdG90eXBl cyBmb3Igc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTYtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD YWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIu aAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5kZWYgU1ZBUklBQkxFX1JFQ0VJ VkVSX0gKKyNkZWZpbmUgU1ZBUklBQkxFX1JFQ0VJVkVSX0gKKworI2luY2x1ZGUgInRjb3AvZGVz dC5oIgorCisKK2V4dGVybiBEZXN0UmVjZWl2ZXIgKkNyZWF0ZVZhcmlhYmxlRGVzdFJlY2VpdmVy KHZvaWQpOworCitleHRlcm4gdm9pZCBTZXRWYXJpYWJsZURlc3RSZWNlaXZlclZhcmlkKERlc3RS ZWNlaXZlciAqc2VsZiwgT2lkIHZhcmlkKTsKKworI2VuZGlmCQkJCQkJCS8qIFNWQVJJQUJMRV9S RUNFSVZFUl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggNTI5MGRiMTIzMS4uZWVmYjNm NTc5MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMTM5LDYgKzEzOSw3IEBAIHR5cGVkZWYg c3RydWN0IFF1ZXJ5CiAJaW50CQkJcmVzdWx0UmVsYXRpb247IC8qIHJ0YWJsZSBpbmRleCBvZiB0 YXJnZXQgcmVsYXRpb24gZm9yCiAJCQkJCQkJCSAqIElOU0VSVC9VUERBVEUvREVMRVRFL01FUkdF OyAwIGZvciBTRUxFQ1QgKi8KIAorCU9pZAkJCXJlc3VsdFZhcmlhYmxlOyAvKiB0YXJnZXQgdmFy aWFibGUgb2YgTEVUIHN0YXRlbWVudCAqLwogCWJvb2wJCWhhc0FnZ3M7CQkvKiBoYXMgYWdncmVn YXRlcyBpbiB0bGlzdCBvciBoYXZpbmdRdWFsICovCiAJYm9vbAkJaGFzV2luZG93RnVuY3M7IC8q IGhhcyB3aW5kb3cgZnVuY3Rpb25zIGluIHRsaXN0ICovCiAJYm9vbAkJaGFzVGFyZ2V0U1JGczsJ LyogaGFzIHNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGluIHRsaXN0ICovCkBAIC0xNzAyLDYgKzE3 MDMsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgTWVyZ2VTdG10CiAJV2l0aENsYXVzZSAqd2l0aENsYXVz ZTsJCS8qIFdJVEggY2xhdXNlICovCiB9IE1lcmdlU3RtdDsKIAorLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoJCUxldCBTdGF0ZW1lbnQKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LwordHlwZWRlZiBzdHJ1Y3QgTGV0U3RtdAoreworCU5vZGVUYWcJCXR5cGU7CisJTGlzdAkgICAq dGFyZ2V0OwkJCS8qIHRhcmdldCB2YXJpYWJsZSAqLworCU5vZGUJICAgKnF1ZXJ5OwkJCS8qIHNv dXJjZSBleHByZXNzaW9uICovCisJYm9vbAkJc2V0X2RlZmF1bHQ7CS8qIHRydWUsIHdoZW4gc2V0 IHRvIERFRkFVTHQgaXMgd2FudGVkICovCisJYm9vbAkJcGxwZ3NxbF9tb2RlOwkvKiB0cnVlLCB3 aGVuIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZAorCQkJCQkJCQkgKiAocGFyc2VkKSBieSBwbHBn c3FsIHJ1bnRpbWUgKi8KKwlpbnQJCQlsb2NhdGlvbjsKK30gTGV0U3RtdDsKKwogLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICoJCVNlbGVjdCBTdGF0ZW1lbnQKICAqCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oCmluZGV4IGMwMWEzNWQ0NmQuLmI3OGEwNmFhNGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBA IC01MCw3ICs1MCw3IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAKIAlOb2RlVGFnCQl0 eXBlOwogCi0JQ21kVHlwZQkJY29tbWFuZFR5cGU7CS8qIHNlbGVjdHxpbnNlcnR8dXBkYXRlfGRl bGV0ZXxtZXJnZXx1dGlsaXR5ICovCisJQ21kVHlwZQkJY29tbWFuZFR5cGU7CS8qIHNlbGVjdHxs ZXR8aW5zZXJ0fHVwZGF0ZXxkZWxldGV8bWVyZ2V8dXRpbGl0eSAqLwogCiAJdWludDY0CQlxdWVy eUlkOwkJLyogcXVlcnkgaWRlbnRpZmllciAoY29waWVkIGZyb20gUXVlcnkpICovCiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9r d2xpc3QuaAppbmRleCAwZWI4NWZhYmMwLi5kMmI5ZDA1YThlIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBA IC0yMzcsNiArMjM3LDcgQEAgUEdfS0VZV09SRCgibGVhZGluZyIsIExFQURJTkcsIFJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJsZWFrcHJvb2YiLCBMRUFLUFJPT0Ys IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImxlYXN0IiwgTEVB U1QsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJsZWZ0IiwgTEVG VCwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImxldCIs IExFVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibGV2ZWwi LCBMRVZFTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibGlr ZSIsIExJS0UsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJsaW1pdCIsIExJTUlULCBSRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2Vfbm9kZS5oCmluZGV4IGQwN2Y1YjA1ODQuLmQ5ZDcyMzYwOTkgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNl X25vZGUuaApAQCAtODEsNyArODEsOCBAQCB0eXBlZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVY UFJfS0lORF9DT1BZX1dIRVJFLAkJLyogV0hFUkUgY29uZGl0aW9uIGluIENPUFkgRlJPTSAqLwog CUVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OLCAvKiBnZW5lcmF0aW9uIGV4cHJlc3Npb24gZm9y IGEgY29sdW1uICovCiAJRVhQUl9LSU5EX0NZQ0xFX01BUkssCQkvKiBjeWNsZSBtYXJrIHZhbHVl ICovCi0JRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQJLyogZGVmYXVsdCB2YWx1ZSBmb3Igc2Vz c2lvbiB2YXJpYWJsZSAqLworCUVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxULCAvKiBkZWZhdWx0 IHZhbHVlIGZvciBzZXNzaW9uIHZhcmlhYmxlICovCisJRVhQUl9LSU5EX0xFVF9UQVJHRVQJCS8q IExFVCBhc3NpZ25tZW50IChzaG91bGQgYmUgc2FtZSBsaWtlIFVQREFURSkgKi8KIH0gUGFyc2VF eHByS2luZDsKIAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaCBi L3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCmluZGV4IDZjMWJlNWU5ZDQuLjM1Nzk4OWI1 MmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCisrKyBiL3NyYy9p bmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCkBAIC0xODYsNiArMTg2LDcgQEAgUEdfQ01EVEFHKENN RFRBR19HUkFOVCwgIkdSQU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRB R19HUkFOVF9ST0xFLCAiR1JBTlQgUk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURU QUcoQ01EVEFHX0lNUE9SVF9GT1JFSUdOX1NDSEVNQSwgIklNUE9SVCBGT1JFSUdOIFNDSEVNQSIs IHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfSU5TRVJULCAiSU5TRVJUIiwg ZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19MRVQsICJMRVQiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19MSVNURU4sICJMSVNURU4iLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19MT0FELCAiTE9BRCIsIGZhbHNlLCBmYWxz ZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0xPQ0tfVEFCTEUsICJMT0NLIFRBQkxFIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oIGIv c3JjL2luY2x1ZGUvdGNvcC9kZXN0LmgKaW5kZXggM2MzZWFiYWU2Ny4uN2YxOGUwNzkxNSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9kZXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9k ZXN0LmgKQEAgLTk3LDcgKzk3LDggQEAgdHlwZWRlZiBlbnVtCiAJRGVzdENvcHlPdXQsCQkJCS8q IHJlc3VsdHMgc2VudCB0byBDT1BZIFRPIGNvZGUgKi8KIAlEZXN0U1FMRnVuY3Rpb24sCQkJLyog cmVzdWx0cyBzZW50IHRvIFNRTC1sYW5ndWFnZSBmdW5jIG1nciAqLwogCURlc3RUcmFuc2llbnRS ZWwsCQkJLyogcmVzdWx0cyBzZW50IHRvIHRyYW5zaWVudCByZWxhdGlvbiAqLwotCURlc3RUdXBs ZVF1ZXVlCQkJCS8qIHJlc3VsdHMgc2VudCB0byB0dXBsZSBxdWV1ZSAqLworCURlc3RUdXBsZVF1 ZXVlLAkJCQkvKiByZXN1bHRzIHNlbnQgdG8gdHVwbGUgcXVldWUgKi8KKwlEZXN0VmFyaWFibGUJ CQkJLyogcmVzdWx0cyBzZW50cyB0byBzZXNzaW9uIHZhcmlhYmxlICovCiB9IENvbW1hbmREZXN0 OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDNh OTQ1NzAyMjIuLjRlMDE5ODUzODYgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMzky LDYgKzEzOTIsNyBAQCBMYXJnZU9iamVjdERlc2MKIExhc3RBdHRudW1JbmZvCiBMYXRjaAogTGVy cEZ1bmMKK0xldFN0bXQKIExleERlc2NyCiBMZXhlbWVFbnRyeQogTGV4ZW1lSGFzaEtleQpAQCAt MjYzNyw2ICsyNjM4LDcgQEAgU3VwcG9ydFJlcXVlc3RSb3dzCiBTdXBwb3J0UmVxdWVzdFNlbGVj dGl2aXR5CiBTdXBwb3J0UmVxdWVzdFNpbXBsaWZ5CiBTdXBwb3J0UmVxdWVzdFdGdW5jTW9ub3Rv bmljCitTVmFyaWFibGVTdGF0ZQogU1ZhcmlhYmxlCiBTVmFyaWFibGVEYXRhCiBTVmFyaWFibGVY QWN0QWN0aW9uCi0tIAoyLjM4LjEKCg== --0000000000009ca7c005eedde9a7 Content-Type: text/x-patch; charset="US-ASCII"; name="v20221202-1-0001-catalog-support-for-session-variables.patch" Content-Disposition: attachment; filename="v20221202-1-0001-catalog-support-for-session-variables.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lb6xukzw9 RnJvbSA4MjJlMTI3NTlhZTgyMGFlNzdlOTA1YjRkODNjYzc2OTlhN2M0M2E5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPHBhdmVsLnN0ZWh1bGVAZ21h aWwuY29tPgpEYXRlOiBTdW4sIDEzIE5vdiAyMDIyIDE3OjM5OjM3ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwMS8xMF0gY2F0YWxvZyBzdXBwb3J0IGZvciBzZXNzaW9uIHZhcmlhYmxlcwoKSW1wbGVt ZW50YXRpb24gbmV3IHN5c3RlbSBvYmplY3QgY2xhc3MgLSBzZXNzaW9uIHZhcmlhYmxlIHdpdGgg bmV3IGFjY2VzcyByaWdodHMgU0VMRUNULCBVUERBVEUsCndpdGggcm91dGluZXMgZm9yIGNyZWF0 aW5nIHNlc3Npb24gdmFyaWFibGUsIGluaXRpYWxpemF0aW9uIG9mIHNlc3Npb24gdmFyaWFibGUg ZnJvbSBzeXN0ZW0KY2F0YWxvZywgYW5kIGxvb2t1cHMgcm91dGluZXMgZm9yIGlkZW50aWZpY2F0 aW9uIG9mIHNlc3Npb24gdmFyaWFibGVzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hhY3QuYyAgICAgICB8ICAxMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgICAgICAgICAgICB8 IDIwMiArKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyAgICAg ICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jICAgICAgICAgfCAxNTggKysrKysr KysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMgICAgIHwgMTIyICsrKysr KystCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3NoZGVwZW5kLmMgICAgICAgfCAgIDIgKwogc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jICAgICAgIHwgMzcyICsrKysrKysrKysrKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMgICAgICAgICAgICB8ICAgOSArCiBzcmMv YmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jICAgICAgICAgfCAgIDUgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jICAgIHwgICA2ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3NlY2xhYmVsLmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXNzaW9u X3ZhcmlhYmxlLmMgfCAyNDMgKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgICAgICAgIHwgIDQzICsrKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAg ICAgICAgICAgICAgIHwgMTQ1ICsrKysrKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Fn Zy5jICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAg ICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgIHwgIDEyICsKIHNy Yy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAgICAgICB8ICAxNiArCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvYWNsLmMgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvbHN5c2NhY2hlLmMgICAgIHwgMTEzICsrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3N5c2NhY2hlLmMgICAgICB8ICAyMyArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRl bmN5LmggICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkICAg ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCAgICAgICAgIHwg ICA1ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaCAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5oICAgICAgIHwgMTIwICsrKysrKysrCiBzcmMvaW5jbHVk ZS9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmggfCAgMzQgKysrCiBzcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggICAgICAgICAgfCAgMjAgKysKIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaCAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5o ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggICAgICAgICAg IHwgICAzICsKIHNyYy9pbmNsdWRlL3V0aWxzL2FjbC5oICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgfCAgIDkgKwogc3JjL2lu Y2x1ZGUvdXRpbHMvc3lzY2FjaGUuaCAgICAgICAgICAgIHwgICA2ICstCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dCAgfCAgIDQgKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgICAgICAgIHwgICA1ICsKIDQxIGZpbGVzIGNoYW5nZWQsIDE3MjUgaW5zZXJ0 aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ192YXJpYWJsZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvY29t bWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ192YXJpYWJsZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvY29t bWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4 IDgwODZiODU3YjkuLjIzMDNlMWUwNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hhY3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAg LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2VudW0uaCIKICNpbmNsdWRlICJj YXRhbG9nL3N0b3JhZ2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUg ImNvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNt ZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY29tbW9uL3Bn X3BybmcuaCIKQEAgLTIyMTMsNiArMjIxNCw5IEBAIENvbW1pdFRyYW5zYWN0aW9uKHZvaWQpCiAJ ICovCiAJc21nckRvUGVuZGluZ1N5bmNzKHRydWUsIGlzX3BhcmFsbGVsX3dvcmtlcik7CiAKKwkv KiBMZXQgT04gQ09NTUlUIERST1AgKi8KKwlBdFByZUVPWGFjdF9TZXNzaW9uVmFyaWFibGUodHJ1 ZSk7CisKIAkvKiBjbG9zZSBsYXJnZSBvYmplY3RzIGJlZm9yZSBsb3dlci1sZXZlbCBjbGVhbnVw ICovCiAJQXRFT1hhY3RfTGFyZ2VPYmplY3QodHJ1ZSk7CiAKQEAgLTI3ODksNiArMjc5Myw5IEBA IEFib3J0VHJhbnNhY3Rpb24odm9pZCkKIAlBdEFib3J0X1BvcnRhbHMoKTsKIAlzbWdyRG9QZW5k aW5nU3luY3MoZmFsc2UsIGlzX3BhcmFsbGVsX3dvcmtlcik7CiAJQXRFT1hhY3RfTGFyZ2VPYmpl Y3QoZmFsc2UpOworCisJLyogJ2ZhbHNlJyBtZWFucyBpdCdzIGFib3J0ICovCisJQXRQcmVFT1hh Y3RfU2Vzc2lvblZhcmlhYmxlKGZhbHNlKTsKIAlBdEFib3J0X05vdGlmeSgpOwogCUF0RU9YYWN0 X1JlbGF0aW9uTWFwKGZhbHNlLCBpc19wYXJhbGxlbF93b3JrZXIpOwogCUF0QWJvcnRfVHdvcGhh c2UoKTsKQEAgLTUwMDQsNiArNTAxMSw4IEBAIENvbW1pdFN1YlRyYW5zYWN0aW9uKHZvaWQpCiAJ QXRFT1N1YlhhY3RfU1BJKHRydWUsIHMtPnN1YlRyYW5zYWN0aW9uSWQpOwogCUF0RU9TdWJYYWN0 X29uX2NvbW1pdF9hY3Rpb25zKHRydWUsIHMtPnN1YlRyYW5zYWN0aW9uSWQsCiAJCQkJCQkJCSAg cy0+cGFyZW50LT5zdWJUcmFuc2FjdGlvbklkKTsKKwlBdEVPU3ViWGFjdF9TZXNzaW9uVmFyaWFi bGUodHJ1ZSwgcy0+c3ViVHJhbnNhY3Rpb25JZCwKKwkJCQkJCQkJcy0+cGFyZW50LT5zdWJUcmFu c2FjdGlvbklkKTsKIAlBdEVPU3ViWGFjdF9OYW1lc3BhY2UodHJ1ZSwgcy0+c3ViVHJhbnNhY3Rp b25JZCwKIAkJCQkJCSAgcy0+cGFyZW50LT5zdWJUcmFuc2FjdGlvbklkKTsKIAlBdEVPU3ViWGFj dF9GaWxlcyh0cnVlLCBzLT5zdWJUcmFuc2FjdGlvbklkLApAQCAtNTE2OCw2ICs1MTc3LDggQEAg QWJvcnRTdWJUcmFuc2FjdGlvbih2b2lkKQogCQlBdEVPU3ViWGFjdF9TUEkoZmFsc2UsIHMtPnN1 YlRyYW5zYWN0aW9uSWQpOwogCQlBdEVPU3ViWGFjdF9vbl9jb21taXRfYWN0aW9ucyhmYWxzZSwg cy0+c3ViVHJhbnNhY3Rpb25JZCwKIAkJCQkJCQkJCSAgcy0+cGFyZW50LT5zdWJUcmFuc2FjdGlv bklkKTsKKwkJQXRFT1N1YlhhY3RfU2Vzc2lvblZhcmlhYmxlKGZhbHNlLCBzLT5zdWJUcmFuc2Fj dGlvbklkLAorCQkJCQkJCQkJcy0+cGFyZW50LT5zdWJUcmFuc2FjdGlvbklkKTsKIAkJQXRFT1N1 YlhhY3RfTmFtZXNwYWNlKGZhbHNlLCBzLT5zdWJUcmFuc2FjdGlvbklkLAogCQkJCQkJCSAgcy0+ cGFyZW50LT5zdWJUcmFuc2FjdGlvbklkKTsKIAkJQXRFT1N1YlhhY3RfRmlsZXMoZmFsc2UsIHMt PnN1YlRyYW5zYWN0aW9uSWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2Vm aWxlIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQppbmRleCA4OWEwMjIxZWM5Li5mODll MTJlYWYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKQEAgLTQ1LDYgKzQ1LDcgQEAgT0JKUyA9IFwKIAlw Z19zaGRlcGVuZC5vIFwKIAlwZ19zdWJzY3JpcHRpb24ubyBcCiAJcGdfdHlwZS5vIFwKKwlwZ192 YXJpYWJsZS5vIFwKIAlzdG9yYWdlLm8gXAogCXRvYXN0aW5nLm8KIApAQCAtNzIsNyArNzMsOCBA QCBDQVRBTE9HX0hFQURFUlMgOj0gXAogCXBnX2NvbGxhdGlvbi5oIHBnX3BhcmFtZXRlcl9hY2wu aCBwZ19wYXJ0aXRpb25lZF90YWJsZS5oIFwKIAlwZ19yYW5nZS5oIHBnX3RyYW5zZm9ybS5oIFwK IAlwZ19zZXF1ZW5jZS5oIHBnX3B1YmxpY2F0aW9uLmggcGdfcHVibGljYXRpb25fbmFtZXNwYWNl LmggXAotCXBnX3B1YmxpY2F0aW9uX3JlbC5oIHBnX3N1YnNjcmlwdGlvbi5oIHBnX3N1YnNjcmlw dGlvbl9yZWwuaAorCXBnX3B1YmxpY2F0aW9uX3JlbC5oIHBnX3N1YnNjcmlwdGlvbi5oIHBnX3N1 YnNjcmlwdGlvbl9yZWwuaCBcCisJcGdfdmFyaWFibGUuaAogCiBHRU5FUkFURURfSEVBREVSUyA6 PSAkKENBVEFMT0dfSEVBREVSUzolLmg9JV9kLmgpIHNjaGVtYXBnLmggc3lzdGVtX2ZrX2luZm8u aAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9hY2xjaGsuYwppbmRleCBiZDk2N2VhYTc4Li4zMTk2MmVjY2Y3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvYWNsY2hrLmMKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3Bh cnNlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5o IgogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKQEAgLTExNiw2ICsxMTcsNyBA QCBzdGF0aWMgdm9pZCBFeGVjR3JhbnRfTmFtZXNwYWNlKEludGVybmFsR3JhbnQgKmlzdG10KTsK IHN0YXRpYyB2b2lkIEV4ZWNHcmFudF9UYWJsZXNwYWNlKEludGVybmFsR3JhbnQgKmlzdG10KTsK IHN0YXRpYyB2b2lkIEV4ZWNHcmFudF9UeXBlKEludGVybmFsR3JhbnQgKmlzdG10KTsKIHN0YXRp YyB2b2lkIEV4ZWNHcmFudF9QYXJhbWV0ZXIoSW50ZXJuYWxHcmFudCAqaXN0bXQpOworc3RhdGlj IHZvaWQgRXhlY0dyYW50X1ZhcmlhYmxlKEludGVybmFsR3JhbnQgKmlzdG10KTsKIAogc3RhdGlj IHZvaWQgU2V0RGVmYXVsdEFDTHNJblNjaGVtYXMoSW50ZXJuYWxEZWZhdWx0QUNMICppYWNscywg TGlzdCAqbnNwbmFtZXMpOwogc3RhdGljIHZvaWQgU2V0RGVmYXVsdEFDTChJbnRlcm5hbERlZmF1 bHRBQ0wgKmlhY2xzKTsKQEAgLTI4NSw2ICsyODcsOSBAQCByZXN0cmljdF9hbmRfY2hlY2tfZ3Jh bnQoYm9vbCBpc19ncmFudCwgQWNsTW9kZSBhdmFpbF9nb3B0aW9ucywgYm9vbCBhbGxfcHJpdnMs CiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9BQ0w6CiAJCQl3aG9sZV9tYXNrID0gQUNMX0FMTF9S SUdIVFNfUEFSQU1FVEVSX0FDTDsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToK KwkJCXdob2xlX21hc2sgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWJyZWFrOwogCQlk ZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvYmplY3QgdHlwZTogJWQiLCBv Ymp0eXBlKTsKIAkJCS8qIG5vdCByZWFjaGVkLCBidXQga2VlcCBjb21waWxlciBxdWlldCAqLwpA QCAtNTI5LDYgKzUzNCwxMCBAQCBFeGVjdXRlR3JhbnRTdG10KEdyYW50U3RtdCAqc3RtdCkKIAkJ CWFsbF9wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfUEFSQU1FVEVSX0FDTDsKIAkJCWVycm9y bXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBwYXJhbWV0 ZXIiKTsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCWFsbF9wcml2aWxl Z2VzID0gQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7CisJCQllcnJvcm1zZyA9IGdldHRleHRfbm9v cCgiaW52YWxpZCBwcml2aWxlZ2UgdHlwZSAlcyBmb3Igc2Vzc2lvbiB2YXJpYWJsZSIpOworCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3Rt dC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIHN0bXQtPm9ianR5cGUpOwpAQCAtNjM0LDYgKzY0 Myw5IEBAIEV4ZWNHcmFudFN0bXRfb2lkcyhJbnRlcm5hbEdyYW50ICppc3RtdCkKIAkJY2FzZSBP QkpFQ1RfUEFSQU1FVEVSX0FDTDoKIAkJCUV4ZWNHcmFudF9QYXJhbWV0ZXIoaXN0bXQpOwogCQkJ YnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJRXhlY0dyYW50X1ZhcmlhYmxlKGlz dG10KTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpc3RtdC0+b2JqdHlwZSk7CkBA IC04MjQsNiArODM2LDE5IEBAIG9iamVjdE5hbWVzVG9PaWRzKE9iamVjdFR5cGUgb2JqdHlwZSwg TGlzdCAqb2JqbmFtZXMsIGJvb2wgaXNfZ3JhbnQpCiAJCQkJCW9iamVjdHMgPSBsYXBwZW5kX29p ZChvYmplY3RzLCBwYXJhbWV0ZXJJZCk7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1Rf VkFSSUFCTEU6CisJCQlmb3JlYWNoKGNlbGwsIG9iam5hbWVzKQorCQkJeworCQkJCVJhbmdlVmFy ICAgKnZhcnZhciA9IChSYW5nZVZhciAqKSBsZmlyc3QoY2VsbCk7CisJCQkJT2lkCQkJcmVsT2lk OworCisJCQkJcmVsT2lkID0gTG9va3VwVmFyaWFibGUodmFydmFyLT5zY2hlbWFuYW1lLAorCQkJ CQkJCQkJCXZhcnZhci0+cmVsbmFtZSwKKwkJCQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJCQlmYWxz ZSk7CisJCQkJb2JqZWN0cyA9IGxhcHBlbmRfb2lkKG9iamVjdHMsIHJlbE9pZCk7CisJCQl9CisJ CQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgR3JhbnRT dG10Lm9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgb2JqdHlwZSk7CkBAIC05MTMsNiArOTM4LDMy IEBAIG9iamVjdHNJblNjaGVtYVRvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm5zcG5h bWVzKQogCQkJCQl0YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CiAJCQkJfQogCQkJ CWJyZWFrOworCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJeworCQkJCQlTY2FuS2V5RGF0 YSBrZXk7CisJCQkJCVJlbGF0aW9uCXJlbDsKKwkJCQkJVGFibGVTY2FuRGVzYyBzY2FuOworCQkJ CQlIZWFwVHVwbGUJdHVwbGU7CisKKwkJCQkJU2NhbktleUluaXQoJmtleSwKKwkJCQkJCQkJQW51 bV9wZ192YXJpYWJsZV92YXJuYW1lc3BhY2UsCisJCQkJCQkJCUJURXF1YWxTdHJhdGVneU51bWJl ciwgRl9PSURFUSwKKwkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShuYW1lc3BhY2VJZCkpOworCisJ CQkJCXJlbCA9IHRhYmxlX29wZW4oVmFyaWFibGVSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2sp OworCQkJCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX2NhdGFsb2cocmVsLCAxLCAma2V5KTsKKwor CQkJCQl3aGlsZSAoKHR1cGxlID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0 aW9uKSkgIT0gTlVMTCkKKwkJCQkJeworCQkJCQkJT2lkCQkJb2lkID0gKChGb3JtX3BnX3Byb2Mp IEdFVFNUUlVDVCh0dXBsZSkpLT5vaWQ7CisKKwkJCQkJCW9iamVjdHMgPSBsYXBwZW5kX29pZChv YmplY3RzLCBvaWQpOworCQkJCQl9CisKKwkJCQkJdGFibGVfZW5kc2NhbihzY2FuKTsKKwkJCQkJ dGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCX0KKwkJCQlicmVhazsKIAkJ CWRlZmF1bHQ6CiAJCQkJLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KIAkJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCkBAIC0xMDcyLDYgKzExMjMsMTAg QEAgRXhlY0FsdGVyRGVmYXVsdFByaXZpbGVnZXNTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0 ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQgKnMKIAkJCWFsbF9wcml2aWxlZ2VzID0gQUNMX0FMTF9S SUdIVFNfU0NIRU1BOwogCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmls ZWdlIHR5cGUgJXMgZm9yIHNjaGVtYSIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklB QkxFOgorCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVy cm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzZXNz aW9uIHZhcmlhYmxlIik7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgR3JhbnRTdG10Lm9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgYWN0aW9uLT5v Ymp0eXBlKTsKQEAgLTEyNjMsNiArMTMxOCwxMiBAQCBTZXREZWZhdWx0QUNMKEludGVybmFsRGVm YXVsdEFDTCAqaWFjbHMpCiAJCQkJdGhpc19wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfU0NI RU1BOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlvYmp0eXBlID0g REVGQUNMT0JKX1ZBUklBQkxFOworCQkJaWYgKGlhY2xzLT5hbGxfcHJpdnMgJiYgdGhpc19wcml2 aWxlZ2VzID09IEFDTF9OT19SSUdIVFMpCisJCQkJdGhpc19wcml2aWxlZ2VzID0gQUNMX0FMTF9S SUdIVFNfVkFSSUFCTEU7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBvYmplY3QgdHlwZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+b2JqdHlw ZSk7CkBAIC0xNDk0LDYgKzE1NTUsOSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChPaWQgcm9s ZWlkLCBPaWQgY2xhc3NpZCwgT2lkIG9iamlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNF OgogCQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJM RTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBoZXJlICov CiAJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQiLApAQCAt MTU1NCw2ICsxNjE4LDkgQEAgUmVtb3ZlUm9sZUZyb21PYmplY3RBQ0woT2lkIHJvbGVpZCwgT2lk IGNsYXNzaWQsIE9pZCBvYmppZCkKIAkJCWNhc2UgUGFyYW1ldGVyQWNsUmVsYXRpb25JZDoKIAkJ CQlpc3RtdC5vYmp0eXBlID0gT0JKRUNUX1BBUkFNRVRFUl9BQ0w7CiAJCQkJYnJlYWs7CisJCQlj YXNlIFZhcmlhYmxlUmVsYXRpb25JZDoKKwkJCQlpc3RtdC5vYmp0eXBlID0gT0JKRUNUX1ZBUklB QkxFOworCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQllbG9nKEVSUk9SLCAidW5leHBlY3Rl ZCBvYmplY3QgY2xhc3MgJXUiLCBjbGFzc2lkKTsKIAkJCQlicmVhazsKQEAgLTMzODYsNiArMzQ1 MywxMjkgQEAgRXhlY0dyYW50X1BhcmFtZXRlcihJbnRlcm5hbEdyYW50ICppc3RtdCkKIAl0YWJs ZV9jbG9zZShyZWxhdGlvbiwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAKK3N0YXRpYyB2b2lkCitF eGVjR3JhbnRfVmFyaWFibGUoSW50ZXJuYWxHcmFudCAqaXN0bXQpCit7CisJUmVsYXRpb24JcmVs YXRpb247CisJTGlzdENlbGwgICAqY2VsbDsKKworCWlmIChpc3RtdC0+YWxsX3ByaXZzICYmIGlz dG10LT5wcml2aWxlZ2VzID09IEFDTF9OT19SSUdIVFMpCisJCWlzdG10LT5wcml2aWxlZ2VzID0g QUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7CisKKwlyZWxhdGlvbiA9IHRhYmxlX29wZW4oVmFyaWFi bGVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCWZvcmVhY2goY2VsbCwgaXN0bXQt Pm9iamVjdHMpCisJeworCQlPaWQJCQl2YXJJZCA9IGxmaXJzdF9vaWQoY2VsbCk7CisJCUZvcm1f cGdfdmFyaWFibGUgcGdfdmFyaWFibGVfdHVwbGU7CisJCURhdHVtCQlhY2xEYXR1bTsKKwkJYm9v bAkJaXNOdWxsOworCQlBY2xNb2RlCQlhdmFpbF9nb3B0aW9uczsKKwkJQWNsTW9kZQkJdGhpc19w cml2aWxlZ2VzOworCQlBY2wJCSAgICpvbGRfYWNsOworCQlBY2wJCSAgICpuZXdfYWNsOworCQlP aWQJCQlncmFudG9ySWQ7CisJCU9pZAkJCW93bmVySWQ7CisJCUhlYXBUdXBsZQl0dXBsZTsKKwkJ SGVhcFR1cGxlCW5ld3R1cGxlOworCQlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3ZhcmlhYmxlXTsK KwkJYm9vbAkJbnVsbHNbTmF0dHNfcGdfdmFyaWFibGVdOworCQlib29sCQlyZXBsYWNlc1tOYXR0 c19wZ192YXJpYWJsZV07CisJCWludAkJCW5vbGRtZW1iZXJzOworCQlpbnQJCQlubmV3bWVtYmVy czsKKwkJT2lkCQkgICAqb2xkbWVtYmVyczsKKwkJT2lkCQkgICAqbmV3bWVtYmVyczsKKworCQl0 dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh2YXJJ ZCkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgJXUiLCB2YXJJZCk7CisKKwkJ cGdfdmFyaWFibGVfdHVwbGUgPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cGxlKTsK KworCQkvKgorCQkgKiBHZXQgb3duZXIgSUQgYW5kIHdvcmtpbmcgY29weSBvZiBleGlzdGluZyBB Q0wuIElmIHRoZXJlJ3Mgbm8gQUNMLAorCQkgKiBzdWJzdGl0dXRlIHRoZSBwcm9wZXIgZGVmYXVs dC4KKwkJICovCisJCW93bmVySWQgPSBwZ192YXJpYWJsZV90dXBsZS0+dmFyb3duZXI7CisJCWFj bERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFZBUklBQkxFT0lELCB0dXBsZSwgQW51bV9wZ192YXJp YWJsZV92YXJhY2wsCisJCQkJCQkJCSAgICZpc051bGwpOworCQlpZiAoaXNOdWxsKQorCQl7CisJ CQlvbGRfYWNsID0gYWNsZGVmYXVsdChPQkpFQ1RfVkFSSUFCTEUsIG93bmVySWQpOworCQkJLyog VGhlcmUgYXJlIG5vIG9sZCBtZW1iZXIgcm9sZXMgYWNjb3JkaW5nIHRvIHRoZSBjYXRhbG9ncyAq LworCQkJbm9sZG1lbWJlcnMgPSAwOworCQkJb2xkbWVtYmVycyA9IE5VTEw7CisJCX0KKwkJZWxz ZQorCQl7CisJCQlvbGRfYWNsID0gRGF0dW1HZXRBY2xQQ29weShhY2xEYXR1bSk7CisJCQkvKiBH ZXQgdGhlIHJvbGVzIG1lbnRpb25lZCBpbiB0aGUgZXhpc3RpbmcgQUNMICovCisJCQlub2xkbWVt YmVycyA9IGFjbG1lbWJlcnMob2xkX2FjbCwgJm9sZG1lbWJlcnMpOworCQl9CisKKwkJLyogRGV0 ZXJtaW5lIElEIHRvIGRvIHRoZSBncmFudCBhcywgYW5kIGF2YWlsYWJsZSBncmFudCBvcHRpb25z ICovCisJCXNlbGVjdF9iZXN0X2dyYW50b3IoR2V0VXNlcklkKCksIGlzdG10LT5wcml2aWxlZ2Vz LAorCQkJCQkJCW9sZF9hY2wsIG93bmVySWQsCisJCQkJCQkJJmdyYW50b3JJZCwgJmF2YWlsX2dv cHRpb25zKTsKKworCQkvKgorCQkgKiBSZXN0cmljdCB0aGUgcHJpdmlsZWdlcyB0byB3aGF0IHdl IGNhbiBhY3R1YWxseSBncmFudCwgYW5kIGVtaXQgdGhlCisJCSAqIHN0YW5kYXJkcy1tYW5kYXRl ZCB3YXJuaW5nIGFuZCBlcnJvciBtZXNzYWdlcy4KKwkJICovCisJCXRoaXNfcHJpdmlsZWdlcyA9 CisJCQlyZXN0cmljdF9hbmRfY2hlY2tfZ3JhbnQoaXN0bXQtPmlzX2dyYW50LCBhdmFpbF9nb3B0 aW9ucywKKwkJCQkJCQkJCSBpc3RtdC0+YWxsX3ByaXZzLCBpc3RtdC0+cHJpdmlsZWdlcywKKwkJ CQkJCQkJCSB2YXJJZCwgZ3JhbnRvcklkLCBPQkpFQ1RfVkFSSUFCTEUsCisJCQkJCQkJCQkgTmFt ZVN0cihwZ192YXJpYWJsZV90dXBsZS0+dmFybmFtZSksCisJCQkJCQkJCQkgMCwgTlVMTCk7CisK KwkJLyoKKwkJICogR2VuZXJhdGUgbmV3IEFDTC4KKwkJICovCisJCW5ld19hY2wgPSBtZXJnZV9h Y2xfd2l0aF9ncmFudChvbGRfYWNsLCBpc3RtdC0+aXNfZ3JhbnQsCisJCQkJCQkJCQkgICBpc3Rt dC0+Z3JhbnRfb3B0aW9uLCBpc3RtdC0+YmVoYXZpb3IsCisJCQkJCQkJCQkgICBpc3RtdC0+Z3Jh bnRlZXMsIHRoaXNfcHJpdmlsZWdlcywKKwkJCQkJCQkJCSAgIGdyYW50b3JJZCwgb3duZXJJZCk7 CisKKwkJLyoKKwkJICogV2UgbmVlZCB0aGUgbWVtYmVycyBvZiBib3RoIG9sZCBhbmQgbmV3IEFD THMgc28gd2UgY2FuIGNvcnJlY3QgdGhlCisJCSAqIHNoYXJlZCBkZXBlbmRlbmN5IGluZm9ybWF0 aW9uLgorCQkgKi8KKwkJbm5ld21lbWJlcnMgPSBhY2xtZW1iZXJzKG5ld19hY2wsICZuZXdtZW1i ZXJzKTsKKworCQkvKiBmaW5pc2hlZCBidWlsZGluZyBuZXcgQUNMIHZhbHVlLCBub3cgaW5zZXJ0 IGl0ICovCisJCU1lbVNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwkJTWVtU2V0KG51 bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisJCU1lbVNldChyZXBsYWNlcywgZmFsc2UsIHNp emVvZihyZXBsYWNlcykpOworCisJCXJlcGxhY2VzW0FudW1fcGdfdmFyaWFibGVfdmFyYWNsIC0g MV0gPSB0cnVlOworCQl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IFBvaW50 ZXJHZXREYXR1bShuZXdfYWNsKTsKKworCQluZXd0dXBsZSA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1 cGxlLCBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKSwgdmFsdWVzLAorCQkJCQkJCQkJIG51bGxz LCByZXBsYWNlcyk7CisKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHJlbGF0aW9uLCAmbmV3dHVwbGUt PnRfc2VsZiwgbmV3dHVwbGUpOworCisJCS8qIFVwZGF0ZSBpbml0aWFsIHByaXZpbGVnZXMgZm9y IGV4dGVuc2lvbnMgKi8KKwkJcmVjb3JkRXh0ZW5zaW9uSW5pdFByaXYodmFySWQsIFZhcmlhYmxl UmVsYXRpb25JZCwgMCwgbmV3X2FjbCk7CisKKwkJLyogVXBkYXRlIHRoZSBzaGFyZWQgZGVwZW5k ZW5jeSBBQ0wgaW5mbyAqLworCQl1cGRhdGVBY2xEZXBlbmRlbmNpZXMoVmFyaWFibGVSZWxhdGlv bklkLCB2YXJJZCwgMCwKKwkJCQkJCQkgIG93bmVySWQsCisJCQkJCQkJICBub2xkbWVtYmVycywg b2xkbWVtYmVycywKKwkJCQkJCQkgIG5uZXdtZW1iZXJzLCBuZXdtZW1iZXJzKTsKKworCQlSZWxl YXNlU3lzQ2FjaGUodHVwbGUpOworCisJCXBmcmVlKG5ld19hY2wpOworCisJCS8qIHByZXZlbnQg ZXJyb3Igd2hlbiBwcm9jZXNzaW5nIGR1cGxpY2F0ZSBvYmplY3RzICovCisJCUNvbW1hbmRDb3Vu dGVySW5jcmVtZW50KCk7CisJfQorCisJdGFibGVfY2xvc2UocmVsYXRpb24sIFJvd0V4Y2x1c2l2 ZUxvY2spOworfQorCiAKIHN0YXRpYyBBY2xNb2RlCiBzdHJpbmdfdG9fcHJpdmlsZWdlKGNvbnN0 IGNoYXIgKnByaXZuYW1lKQpAQCAtMzU5NSw2ICszNzg1LDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNs UmVzdWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBF OgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdHlwZSAl cyIpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNn ID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSAl cyIpOworCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCQkJCQltc2cgPSBn ZXR0ZXh0X25vb3AoInBlcm1pc3Npb24gZGVuaWVkIGZvciB2aWV3ICVzIik7CiAJCQkJCQlicmVh azsKQEAgLTM3MDYsNiArMzg5OSw5IEBAIGFjbGNoZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIs IE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCQkJCW1zZyA9 IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25lciBvZiB0eXBlICVzIik7CiAJCQkJCQlicmVhazsK KwkJCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoIm11 c3QgYmUgb3duZXIgb2Ygc2Vzc2lvbiB2YXJpYWJsZSAlcyIpOworCQkJCQkJYnJlYWs7CiAJCQkJ CWNhc2UgT0JKRUNUX1ZJRVc6CiAJCQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoIm11c3QgYmUgb3du ZXIgb2YgdmlldyAlcyIpOwogCQkJCQkJYnJlYWs7CkBAIC0zODU0LDYgKzQwNTAsOCBAQCBwZ19h Y2xtYXNrKE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIG9iamVjdF9vaWQsIEF0dHJOdW1iZXIgYXR0 bnVtLCBPaWQgcm9sZWlkLAogCQkJcmV0dXJuIEFDTF9OT19SSUdIVFM7CiAJCWNhc2UgT0JKRUNU X1RZUEU6CiAJCQlyZXR1cm4gb2JqZWN0X2FjbG1hc2soVHlwZVJlbGF0aW9uSWQsIG9iamVjdF9v aWQsIHJvbGVpZCwgbWFzaywgaG93KTsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlyZXR1 cm4gb2JqZWN0X2FjbG1hc2soVmFyaWFibGVSZWxhdGlvbklkLCBvYmplY3Rfb2lkLCByb2xlaWQs IG1hc2ssIGhvdyk7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9i amVjdCB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIG9ianR5cGUpOwpAQCAtNDk5Myw2ICs1MTkxLDEw IEBAIGdldF91c2VyX2RlZmF1bHRfYWNsKE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIG93bmVySWQs IE9pZCBuc3Bfb2lkKQogCQkJZGVmYWNsb2JqdHlwZSA9IERFRkFDTE9CSl9OQU1FU1BBQ0U7CiAJ CQlicmVhazsKIAorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCWRlZmFjbG9ianR5cGUgPSBE RUZBQ0xPQkpfVkFSSUFCTEU7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJcmV0dXJuIE5V TEw7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCA3ZjNlNjRiNWFlLi43MzFiOTgw NWFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpAQCAtNjUsMTIgKzY1LDE1IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlw ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbW1lbnQuaCIKICNpbmNs dWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2Vy LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv cG9saWN5LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCisjaW5jbHVk ZSAiY29tbWFuZHMvc2NoZW1hY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Nlc3Npb25fdmFy aWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZWNsYWJlbC5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgpAQCAtMTg4LDcg KzE5MSw4IEBAIHN0YXRpYyBjb25zdCBPaWQgb2JqZWN0X2NsYXNzZXNbXSA9IHsKIAlQdWJsaWNh dGlvblJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfUFVCTElDQVRJT04gKi8KIAlQdWJsaWNhdGlvblJl bFJlbGF0aW9uSWQsCS8qIE9DTEFTU19QVUJMSUNBVElPTl9SRUwgKi8KIAlTdWJzY3JpcHRpb25S ZWxhdGlvbklkLAkJLyogT0NMQVNTX1NVQlNDUklQVElPTiAqLwotCVRyYW5zZm9ybVJlbGF0aW9u SWQJCQkvKiBPQ0xBU1NfVFJBTlNGT1JNICovCisJVHJhbnNmb3JtUmVsYXRpb25JZCwJCS8qIE9D TEFTU19UUkFOU0ZPUk0gKi8KKwlWYXJpYWJsZVJlbGF0aW9uSWQJCQkvKiBPQ0xBU1NfVkFSSUFC TEUgKi8KIH07CiAKIApAQCAtMTUwOCw2ICsxNTEyLDEwIEBAIGRvRGVsZXRpb24oY29uc3QgT2Jq ZWN0QWRkcmVzcyAqb2JqZWN0LCBpbnQgZmxhZ3MpCiAJCQlEcm9wT2JqZWN0QnlJZChvYmplY3Qp OwogCQkJYnJlYWs7CiAKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CisJCQlEcm9wVmFyaWFibGUo b2JqZWN0LT5vYmplY3RJZCk7CisJCQlicmVhazsKKwogCQkJLyoKIAkJCSAqIFRoZXNlIGdsb2Jh bCBvYmplY3QgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaGVyZS4KIAkJCSAqLwpAQCAtMjk2Niw2 ICsyOTc0LDkgQEAgZ2V0T2JqZWN0Q2xhc3MoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQog CiAJCWNhc2UgVHJhbnNmb3JtUmVsYXRpb25JZDoKIAkJCXJldHVybiBPQ0xBU1NfVFJBTlNGT1JN OworCisJCWNhc2UgVmFyaWFibGVSZWxhdGlvbklkOgorCQkJcmV0dXJuIE9DTEFTU19WQVJJQUJM RTsKIAl9CiAKIAkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1aWxk CmluZGV4IDA4NzQ3OTE0NTEuLjI3MzA2ZTM1OTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZApA QCAtMzAsNiArMzAsNyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdwZ19zaGRlcGVu ZC5jJywKICAgJ3BnX3N1YnNjcmlwdGlvbi5jJywKICAgJ3BnX3R5cGUuYycsCisgICdwZ192YXJp YWJsZS5jJywKICAgJ3N0b3JhZ2UuYycsCiAgICd0b2FzdGluZy5jJywKICkKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL25h bWVzcGFjZS5jCmluZGV4IGJhYzBkZWI2ZGEuLjBkNWMyZDFmMDQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1l c3BhY2UuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfcGFyc2Vy LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUg Im1iL3BnX3djaGFyLmgiCkBAIC03NjUsNiArNzY2LDY5IEBAIFJlbGF0aW9uSXNWaXNpYmxlKE9p ZCByZWxpZCkKIAlyZXR1cm4gdmlzaWJsZTsKIH0KIAorLyoKKyAqIFZhcmlhYmxlSXNWaXNpYmxl CisgKgkJRGV0ZXJtaW5lIHdoZXRoZXIgYSB2YXJpYWJsZSAoaWRlbnRpZmllZCBieSBPSUQpIGlz IHZpc2libGUgaW4gdGhlCisgKgkJY3VycmVudCBzZWFyY2ggcGF0aC4gVmlzaWJsZSBtZWFucyAi d291bGQgYmUgZm91bmQgYnkgc2VhcmNoaW5nCisgKgkJZm9yIHRoZSB1bnF1YWxpZmllZCB2YXJp YWJsZSBuYW1lIi4KKyAqLworYm9vbAorVmFyaWFibGVJc1Zpc2libGUoT2lkIHZhcmlkKQorewor CUhlYXBUdXBsZQl2YXJ0dXA7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOworCU9pZAkJCXZh cm5hbWVzcGFjZTsKKwlib29sCQl2aXNpYmxlOworCisJdmFydHVwID0gU2VhcmNoU3lzQ2FjaGUx KFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKHZhcnR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBz ZXNzaW9uIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJs ZSkgR0VUU1RSVUNUKHZhcnR1cCk7CisKKwlyZWNvbXB1dGVOYW1lc3BhY2VQYXRoKCk7CisKKwkv KgorCSAqIFF1aWNrIGNoZWNrOiBpZiBpdCBhaW4ndCBpbiB0aGUgcGF0aCBhdCBhbGwsIGl0IGFp bid0IHZpc2libGUuIEl0ZW1zIGluCisJICogdGhlIHN5c3RlbSBuYW1lc3BhY2UgYXJlIHN1cmVs eSBpbiB0aGUgcGF0aCBhbmQgc28gd2UgbmVlZG4ndCBldmVuIGRvCisJICogbGlzdF9tZW1iZXJf b2lkKCkgZm9yIHRoZW0uCisJICovCisJdmFybmFtZXNwYWNlID0gdmFyZm9ybS0+dmFybmFtZXNw YWNlOworCWlmICh2YXJuYW1lc3BhY2UgIT0gUEdfQ0FUQUxPR19OQU1FU1BBQ0UgJiYKKwkJIWxp c3RfbWVtYmVyX29pZChhY3RpdmVTZWFyY2hQYXRoLCB2YXJuYW1lc3BhY2UpKQorCQl2aXNpYmxl ID0gZmFsc2U7CisJZWxzZQorCXsKKwkJLyoKKwkJICogSWYgaXQgaXMgaW4gdGhlIHBhdGgsIGl0 IG1pZ2h0IHN0aWxsIG5vdCBiZSB2aXNpYmxlOyBpdCBjb3VsZCBiZQorCQkgKiBoaWRkZW4gYnkg YW5vdGhlciB2YXJpYWJsZSBvZiB0aGUgc2FtZSBuYW1lIGVhcmxpZXIgaW4gdGhlIHBhdGguIFNv CisJCSAqIHdlIG11c3QgZG8gYSBzbG93IGNoZWNrIGZvciBjb25mbGljdGluZyByZWxhdGlvbnMu CisJCSAqLworCQljaGFyCSAgICp2YXJuYW1lID0gTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKTsK KwkJTGlzdENlbGwgICAqbDsKKworCQl2aXNpYmxlID0gZmFsc2U7CisJCWZvcmVhY2gobCwgYWN0 aXZlU2VhcmNoUGF0aCkKKwkJeworCQkJT2lkCQkJbmFtZXNwYWNlSWQgPSBsZmlyc3Rfb2lkKGwp OworCisJCQlpZiAobmFtZXNwYWNlSWQgPT0gdmFybmFtZXNwYWNlKQorCQkJeworCQkJCS8qIEZv dW5kIGl0IGZpcnN0IGluIHBhdGggKi8KKwkJCQl2aXNpYmxlID0gdHJ1ZTsKKwkJCQlicmVhazsK KwkJCX0KKwkJCWlmIChPaWRJc1ZhbGlkKGdldF92YXJuYW1lX3ZhcmlkKHZhcm5hbWUsIG5hbWVz cGFjZUlkKSkpCisJCQl7CisJCQkJLyogRm91bmQgc29tZXRoaW5nIGVsc2UgZmlyc3QgaW4gcGF0 aCAqLworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorCisJUmVsZWFzZVN5c0NhY2hlKHZhcnR1 cCk7CisKKwlyZXR1cm4gdmlzaWJsZTsKK30KIAogLyoKICAqIFR5cGVuYW1lR2V0VHlwaWQKQEAg LTI4NDAsNiArMjkwNCw4OSBAQCBUU0NvbmZpZ0lzVmlzaWJsZShPaWQgY2ZnaWQpCiAJcmV0dXJu IHZpc2libGU7CiB9CiAKKy8qCisgKiBSZXR1cm5zIG9pZCBvZiBzZXNzaW9uIHZhcmlhYmxlIHNw ZWNpZmllZCBieSBwb3NzaWJseSBxdWFsaWZpZWQgaWRlbnRpZmllci4KKyAqCisgKiBJZiBub3Qg Zm91bmQsIHJldHVybnMgSW52YWxpZE9pZCBpZiBtaXNzaW5nX29rLCBlbHNlIHRocm93cyBlcnJv ci4KKyAqIFdoZW4gcm93dHlwZV9vbmx5IGFyZ3VtZW50IGlzIHRydWUgdGhlIHNlc3Npb24gdmFy aWFibGVzIG9mIG5vdAorICogY29tcG9zaXRlIHR5cGVzIGFyZSBpZ25vcmVkLiBUaGlzIHNob3Vs ZCB0byByZWR1Y2UgcG9zc2libGUgY29sbGlzaW9ucy4KKyAqLworT2lkCitMb29rdXBWYXJpYWJs ZShjb25zdCBjaGFyICpuc3BuYW1lLAorCQkJICAgY29uc3QgY2hhciAqdmFybmFtZSwKKwkJCSAg IGJvb2wgcm93dHlwZV9vbmx5LAorCQkJICAgYm9vbCBtaXNzaW5nX29rKQoreworCU9pZAkJCW5h bWVzcGFjZUlkOworCU9pZAkJCXZhcm9pZCA9IEludmFsaWRPaWQ7CisJTGlzdENlbGwgICAqbDsK KworCWlmIChuc3BuYW1lKQorCXsKKwkJbmFtZXNwYWNlSWQgPSBMb29rdXBFeHBsaWNpdE5hbWVz cGFjZShuc3BuYW1lLCBtaXNzaW5nX29rKTsKKworCQkvKgorCQkgKiBJZiBuc3BuYW1lIGlzIG5v dCBhIGtub3duIG5hbWVzcGFjZSwgdGhlbiBuc3BuYW1lLnZhcm5hbWUgY2Fubm90IGJlCisJCSAq IGFueSB1c2FibGUgc2Vzc2lvbiB2YXJpYWJsZS4KKwkJICovCisJCWlmIChPaWRJc1ZhbGlkKG5h bWVzcGFjZUlkKSkKKwkJeworCQkJdmFyb2lkID0gR2V0U3lzQ2FjaGVPaWQyKFZBUklBQkxFTkFN RU5TUCwgQW51bV9wZ192YXJpYWJsZV9vaWQsCisJCQkJCQkJCQkgUG9pbnRlckdldERhdHVtKHZh cm5hbWUpLAorCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKworCQkJ aWYgKE9pZElzVmFsaWQodmFyb2lkKSkKKwkJCXsKKwkJCQlpZiAocm93dHlwZV9vbmx5ICYmICF0 eXBlX2lzX3Jvd3R5cGUoZ2V0X3Nlc3Npb25fdmFyaWFibGVfdHlwZSh2YXJvaWQpKSkKKwkJCQkJ dmFyb2lkID0gSW52YWxpZE9pZDsKKwkJCX0KKwkJfQorCX0KKwllbHNlCisJeworCQkvKiBJdGVy YXRlIG92ZXIgc2NoZW1hcyBpbiBzZWFyY2hfcGF0aCAqLworCQlyZWNvbXB1dGVOYW1lc3BhY2VQ YXRoKCk7CisKKwkJZm9yZWFjaChsLCBhY3RpdmVTZWFyY2hQYXRoKQorCQl7CisJCQluYW1lc3Bh Y2VJZCA9IGxmaXJzdF9vaWQobCk7CisKKwkJCXZhcm9pZCA9IEdldFN5c0NhY2hlT2lkMihWQVJJ QUJMRU5BTUVOU1AsIEFudW1fcGdfdmFyaWFibGVfb2lkLAorCQkJCQkJCQkJIFBvaW50ZXJHZXRE YXR1bSh2YXJuYW1lKSwKKwkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKG5hbWVzcGFjZUlkKSk7 CisKKwkJCWlmIChPaWRJc1ZhbGlkKHZhcm9pZCkpCisJCQl7CisJCQkJaWYgKHJvd3R5cGVfb25s eSkKKwkJCQl7CisJCQkJCWlmICghdHlwZV9pc19yb3d0eXBlKGdldF9zZXNzaW9uX3ZhcmlhYmxl X3R5cGUodmFyb2lkKSkpCisJCQkJCXsKKwkJCQkJCXZhcm9pZCA9IEludmFsaWRPaWQ7CisJCQkJ CQljb250aW51ZTsKKwkJCQkJfQorCQkJCX0KKworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQor CisJaWYgKCFPaWRJc1ZhbGlkKHZhcm9pZCkgJiYgIW1pc3Npbmdfb2spCisJeworCQlpZiAobnNw bmFtZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X09CSkVDVCksCisJCQkJCSBlcnJtc2coInNlc3Npb24gdmFyaWFibGUgXCIlcy4lc1wiIGRvZXMg bm90IGV4aXN0IiwKKwkJCQkJCQluc3BuYW1lLCB2YXJuYW1lKSkpOworCQllbHNlCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJ CQkgZXJybXNnKCJzZXNzaW9uIHZhcmlhYmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJ CQkJdmFybmFtZSkpKTsKKwl9CisKKwlyZXR1cm4gdmFyb2lkOworfQogCiAvKgogICogRGVjb25z dHJ1Y3RRdWFsaWZpZWROYW1lCkBAIC00NjU3LDMgKzQ4MDQsMTQgQEAgcGdfaXNfb3RoZXJfdGVt cF9zY2hlbWEoUEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9CT09MKGlzT3RoZXJUZW1w TmFtZXNwYWNlKG9pZCkpOwogfQorCitEYXR1bQorcGdfdmFyaWFibGVfaXNfdmlzaWJsZShQR19G VU5DVElPTl9BUkdTKQoreworCU9pZAkJCW9pZCA9IFBHX0dFVEFSR19PSUQoMCk7CisKKwlpZiAo IVNlYXJjaFN5c0NhY2hlRXhpc3RzMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bShvaWQp KSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCVBHX1JFVFVSTl9CT09MKFZhcmlhYmxlSXNWaXNp YmxlKG9pZCkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRy ZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwppbmRleCBmZTk3ZmJm NzlkLi5iNjY1Y2MwNzliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFk ZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpAQCAtNjQs NiArNjQsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3VzZXJfbWFwcGluZy5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9k YmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvZXZlbnRfdHJpZ2dlci5oIgpAQCAtNjMzLDYgKzYzNCwyMCBAQCBzdGF0aWMgY29uc3Qg T2JqZWN0UHJvcGVydHlUeXBlIE9iamVjdFByb3BlcnR5W10gPQogCQlPQkpFQ1RfVVNFUl9NQVBQ SU5HLAogCQlmYWxzZQogCX0sCisJeworCQkic2Vzc2lvbiB2YXJpYWJsZSIsCisJCVZhcmlhYmxl UmVsYXRpb25JZCwKKwkJVmFyaWFibGVPYmplY3RJbmRleElkLAorCQlWQVJJQUJMRU9JRCwKKwkJ VkFSSUFCTEVOQU1FTlNQLAorCQlBbnVtX3BnX3ZhcmlhYmxlX29pZCwKKwkJQW51bV9wZ192YXJp YWJsZV92YXJuYW1lLAorCQlBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWVzcGFjZSwKKwkJQW51bV9w Z192YXJpYWJsZV92YXJvd25lciwKKwkJQW51bV9wZ192YXJpYWJsZV92YXJhY2wsCisJCU9CSkVD VF9WQVJJQUJMRSwKKwkJdHJ1ZQorCX0KIH07CiAKIC8qCkBAIC04NjksNiArODg0LDEwIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5cGVfbWFwCiAJLyogT0NMQVNTX1NUQVRJU1RJQ19F WFQgKi8KIAl7CiAJCSJzdGF0aXN0aWNzIG9iamVjdCIsIE9CSkVDVF9TVEFUSVNUSUNfRVhUCisJ fSwKKwkvKiBPQ0xBU1NfVkFSSUFCTEUgKi8KKwl7CisJCSJzZXNzaW9uIHZhcmlhYmxlIiwgT0JK RUNUX1ZBUklBQkxFCiAJfQogfTsKIApAQCAtODk0LDYgKzkxMyw3IEBAIHN0YXRpYyBPYmplY3RB ZGRyZXNzIGdldF9vYmplY3RfYWRkcmVzc19hdHRyZGVmKE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJ CQkJCQkJCQkJCWJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2Jq ZWN0X2FkZHJlc3NfdHlwZShPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCQkJCQkJCSBUeXBlTmFt ZSAqdHlwZW5hbWUsIGJvb2wgbWlzc2luZ19vayk7CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRf b2JqZWN0X2FkZHJlc3NfdmFyaWFibGUoTGlzdCAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spOwog c3RhdGljIE9iamVjdEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX29wY2YoT2JqZWN0VHlwZSBv Ymp0eXBlLCBMaXN0ICpvYmplY3QsCiAJCQkJCQkJCQkJCSBib29sIG1pc3Npbmdfb2spOwogc3Rh dGljIE9iamVjdEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX29wZl9tZW1iZXIoT2JqZWN0VHlw ZSBvYmp0eXBlLApAQCAtMTE2NCw2ICsxMTg0LDkgQEAgZ2V0X29iamVjdF9hZGRyZXNzKE9iamVj dFR5cGUgb2JqdHlwZSwgTm9kZSAqb2JqZWN0LAogCQkJCQkJCQkJCQkJCQkJIG1pc3Npbmdfb2sp OwogCQkJCWFkZHJlc3Mub2JqZWN0U3ViSWQgPSAwOwogCQkJCWJyZWFrOworCQkJY2FzZSBPQkpF Q1RfVkFSSUFCTEU6CisJCQkJYWRkcmVzcyA9IGdldF9vYmplY3RfYWRkcmVzc192YXJpYWJsZShj YXN0Tm9kZShMaXN0LCBvYmplY3QpLCBtaXNzaW5nX29rKTsKKwkJCQlicmVhazsKIAkJCQkvKiBu byBkZWZhdWx0LCB0byBsZXQgY29tcGlsZXIgd2FybiBhYm91dCBtaXNzaW5nIGNhc2UgKi8KIAkJ fQogCkBAIC0yMDM4LDE2ICsyMDYxLDIwIEBAIGdldF9vYmplY3RfYWRkcmVzc19kZWZhY2woTGlz dCAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spCiAJCWNhc2UgREVGQUNMT0JKX05BTUVTUEFDRToK IAkJCW9ianR5cGVfc3RyID0gInNjaGVtYXMiOwogCQkJYnJlYWs7CisJCWNhc2UgREVGQUNMT0JK X1ZBUklBQkxFOgorCQkJb2JqdHlwZV9zdHIgPSAidmFyaWFibGVzIjsKKwkJCWJyZWFrOwogCQlk ZWZhdWx0OgogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCSBlcnJtc2coInVucmVjb2duaXplZCBkZWZhdWx0IEFD TCBvYmplY3QgdHlwZSBcIiVjXCIiLCBvYmp0eXBlKSwKLQkJCQkJIGVycmhpbnQoIlZhbGlkIG9i amVjdCB0eXBlcyBhcmUgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIuIiwK KwkJCQkJIGVycmhpbnQoIlZhbGlkIG9iamVjdCB0eXBlcyBhcmUgXCIlY1wiLCBcIiVjXCIsIFwi JWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIi4iLAogCQkJCQkJCSBERUZBQ0xPQkpfUkVMQVRJ T04sCiAJCQkJCQkJIERFRkFDTE9CSl9TRVFVRU5DRSwKIAkJCQkJCQkgREVGQUNMT0JKX0ZVTkNU SU9OLAogCQkJCQkJCSBERUZBQ0xPQkpfVFlQRSwKLQkJCQkJCQkgREVGQUNMT0JKX05BTUVTUEFD RSkpKTsKKwkJCQkJCQkgREVGQUNMT0JKX05BTUVTUEFDRSwKKwkJCQkJCQkgREVGQUNMT0JKX1ZB UklBQkxFKSkpOwogCX0KIAogCS8qCkBAIC0yMTMxLDYgKzIxNTgsMjQgQEAgdGV4dGFycmF5X3Rv X3N0cnZhbHVlbGlzdChBcnJheVR5cGUgKmFycikKIAlyZXR1cm4gbGlzdDsKIH0KIAorLyoKKyAq IEZpbmQgdGhlIE9iamVjdEFkZHJlc3MgZm9yIGEgc2Vzc2lvbiB2YXJpYWJsZQorICovCitzdGF0 aWMgT2JqZWN0QWRkcmVzcworZ2V0X29iamVjdF9hZGRyZXNzX3ZhcmlhYmxlKExpc3QgKm9iamVj dCwgYm9vbCBtaXNzaW5nX29rKQoreworCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwljaGFyCSAg ICpuc3BuYW1lID0gTlVMTDsKKwljaGFyCSAgICp2YXJuYW1lID0gTlVMTDsKKworCU9iamVjdEFk ZHJlc3NTZXQoYWRkcmVzcywgVmFyaWFibGVSZWxhdGlvbklkLCBJbnZhbGlkT2lkKTsKKworCURl Y29uc3RydWN0UXVhbGlmaWVkTmFtZShvYmplY3QsICZuc3BuYW1lLCAmdmFybmFtZSk7CisJYWRk cmVzcy5vYmplY3RJZCA9IExvb2t1cFZhcmlhYmxlKG5zcG5hbWUsIHZhcm5hbWUsIGZhbHNlLCBt aXNzaW5nX29rKTsKKworCXJldHVybiBhZGRyZXNzOworfQorCiAvKgogICogU1FMLWNhbGxhYmxl IHZlcnNpb24gb2YgZ2V0X29iamVjdF9hZGRyZXNzCiAgKi8KQEAgLTIzMjQsNiArMjM2OSw3IEBA IHBnX2dldF9vYmplY3RfYWRkcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQljYXNlIE9CSkVDVF9U QUJDT05TVFJBSU5UOgogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVDVF9PUEZB TUlMWToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFt ZTsKIAkJCWJyZWFrOwogCQljYXNlIE9CSkVDVF9BQ0NFU1NfTUVUSE9EOgpAQCAtMjUwMSw2ICsy NTQ3LDcgQEAgY2hlY2tfb2JqZWN0X293bmVyc2hpcChPaWQgcm9sZWlkLCBPYmplY3RUeXBlIG9i anR5cGUsIE9iamVjdEFkZHJlc3MgYWRkcmVzcywKIAkJY2FzZSBPQkpFQ1RfU1RBVElTVElDX0VY VDoKIAkJY2FzZSBPQkpFQ1RfVFNESUNUSU9OQVJZOgogCQljYXNlIE9CSkVDVF9UU0NPTkZJR1VS QVRJT046CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJaWYgKCFvYmplY3Rfb3duZXJjaGVj ayhhZGRyZXNzLmNsYXNzSWQsIGFkZHJlc3Mub2JqZWN0SWQsIHJvbGVpZCkpCiAJCQkJYWNsY2hl Y2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBvYmp0eXBlLAogCQkJCQkJCSAgIE5hbWVMaXN0 VG9TdHJpbmcoY2FzdE5vZGUoTGlzdCwgb2JqZWN0KSkpOwpAQCAtMzQ3OCw2ICszNTI1LDMyIEBA IGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBt aXNzaW5nX29rKQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1ZBUklBQkxFOgor CQkJeworCQkJCWNoYXIJICAgKm5zcG5hbWU7CisJCQkJSGVhcFR1cGxlCXR1cDsKKwkJCQlGb3Jt X3BnX3ZhcmlhYmxlIHZhcmZvcm07CisKKwkJCQl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFC TEVPSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVh cFR1cGxlSXNWYWxpZCh0dXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSAldSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisK KwkJCQl2YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJCQkJ aWYgKFZhcmlhYmxlSXNWaXNpYmxlKG9iamVjdC0+b2JqZWN0SWQpKQorCQkJCQluc3BuYW1lID0g TlVMTDsKKwkJCQllbHNlCisJCQkJCW5zcG5hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWUodmFyZm9y bS0+dmFybmFtZXNwYWNlKTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgXygic2Vz c2lvbiB2YXJpYWJsZSAlcyIpLAorCQkJCQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIo bnNwbmFtZSwKKwkJCQkJCQkJCQkJCQkJCU5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSkpKTsKKwor CQkJCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NM QVNTX1RTUEFSU0VSOgogCQkJewogCQkJCUhlYXBUdXBsZQl0dXA7CkBAIC0zODMwLDYgKzM5MDMs MTYgQEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBi b29sIG1pc3Npbmdfb2spCiAJCQkJCQkJCQkJIF8oImRlZmF1bHQgcHJpdmlsZWdlcyBvbiBuZXcg c2NoZW1hcyBiZWxvbmdpbmcgdG8gcm9sZSAlcyIpLAogCQkJCQkJCQkJCSByb2xlbmFtZSk7CiAJ CQkJCQlicmVhazsKKwkJCQkJY2FzZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJCQlpZiAobnNw bmFtZSkKKwkJCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsCisJCQkJCQkJCQkJCSBfKCJk ZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3IHNlc3Npb24gdmFyaWFibGVzIGJlbG9uZ2luZyB0byBy b2xlICVzIGluIHNjaGVtYSAlcyIpLAorCQkJCQkJCQkJCQkgcm9sZW5hbWUsIG5zcG5hbWUpOwor CQkJCQkJZWxzZQorCQkJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwKKwkJCQkJCQkJCQkJ IF8oImRlZmF1bHQgcHJpdmlsZWdlcyBvbiBuZXcgc2Vzc2lvbiB2YXJpYWJsZXMgYmVsb25naW5n IHRvIHJvbGUgJXMiKSwKKwkJCQkJCQkJCQkJIHJvbGVuYW1lKTsKKwkJCQkJCWJyZWFrOwogCQkJ CQlkZWZhdWx0OgogCQkJCQkJLyogc2hvdWxkbid0IGdldCBoZXJlICovCiAJCQkJCQlpZiAobnNw bmFtZSkKQEAgLTQ2MDYsNiArNDY4OSwxMCBAQCBnZXRPYmplY3RUeXBlRGVzY3JpcHRpb24oY29u c3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spCiAJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZidWZmZXIsICJ0cmFuc2Zvcm0iKTsKIAkJCWJyZWFrOwogCisJCWNhc2Ug T0NMQVNTX1ZBUklBQkxFOgorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLCAic2Vz c2lvbiB2YXJpYWJsZSIpOworCQkJYnJlYWs7CisKIAkJCS8qCiAJCQkgKiBUaGVyZSdzIGludGVu dGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlOyB3ZSB3YW50IHRoZQogCQkJICogY29tcGls ZXIgdG8gd2FybiBpZiBhIG5ldyBPQ0xBU1MgaGFzbid0IGJlZW4gaGFuZGxlZCBhYm92ZS4KQEAg LTU3MTMsNiArNTgwMCwxMCBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFk ZHJlc3MgKm9iamVjdCwKIAkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwKIAkJ CQkJCQkJCQkJICAgIiBvbiBzY2hlbWFzIik7CiAJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBERUZB Q0xPQkpfVkFSSUFCTEU6CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCisJ CQkJCQkJCQkJCSAgICIgb24gc2Vzc2lvbiB2YXJpYWJsZXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJ CX0KIAogCQkJCWlmIChvYmpuYW1lKQpAQCAtNTk1Niw2ICs2MDQ3LDMzIEBAIGdldE9iamVjdElk ZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJfQogCQkJYnJlYWs7 CiAKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CisJCQl7CisJCQkJY2hhcgkgICAqc2NoZW1hOwor CQkJCWNoYXIJICAgKnZhcm5hbWU7CisJCQkJSGVhcFR1cGxlCXR1cDsKKwkJCQlGb3JtX3BnX3Zh cmlhYmxlIHZhcmZvcm07CisKKwkJCQl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQs IE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1cGxl SXNWYWxpZCh0dXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Ig c2Vzc2lvbiB2YXJpYWJsZSAldSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisKKwkJCQl2 YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJCQkJc2NoZW1h ID0gZ2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAodmFyZm9ybS0+dmFybmFtZXNwYWNlKTsKKwkJ CQl2YXJuYW1lID0gTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKTsKKworCQkJCWFwcGVuZFN0cmlu Z0luZm8oJmJ1ZmZlciwgIiVzIiwKKwkJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVy KHNjaGVtYSwgdmFybmFtZSkpOworCisJCQkJaWYgKG9iam5hbWUpCisJCQkJCSpvYmpuYW1lID0g bGlzdF9tYWtlMihzY2hlbWEsIHZhcm5hbWUpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7 CisJCQkJYnJlYWs7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBUaGVyZSdzIGludGVudGlvbmFsbHkg bm8gZGVmYXVsdDogY2FzZSBoZXJlOyB3ZSB3YW50IHRoZQogCQkJICogY29tcGlsZXIgdG8gd2Fy biBpZiBhIG5ldyBPQ0xBU1MgaGFzbid0IGJlZW4gaGFuZGxlZCBhYm92ZS4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc2hkZXBlbmQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfc2hkZXBlbmQuYwppbmRleCBiYzI2YmYxZWY1Li5kMThlODU5ZGI1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX3NoZGVwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19zaGRlcGVuZC5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 c19kaWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ191c2VyX21hcHBpbmcuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvYWx0ZXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb2xsYXRpb25j bWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29udmVyc2lvbmNtZHMuaCIKQEAgLTE2MTMsNiAr MTYxNCw3IEBAIHNoZGVwUmVhc3NpZ25Pd25lZChMaXN0ICpyb2xlaWRzLCBPaWQgbmV3cm9sZSkK IAkJCQljYXNlIERhdGFiYXNlUmVsYXRpb25JZDoKIAkJCQljYXNlIFRTQ29uZmlnUmVsYXRpb25J ZDoKIAkJCQljYXNlIFRTRGljdGlvbmFyeVJlbGF0aW9uSWQ6CisJCQkJY2FzZSBWYXJpYWJsZVJl bGF0aW9uSWQ6CiAJCQkJCXsKIAkJCQkJCU9pZAkJCWNsYXNzSWQgPSBzZGVwRm9ybS0+Y2xhc3Np ZDsKIAkJCQkJCVJlbGF0aW9uCWNhdGFsb2c7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3ZhcmlhYmxlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3ZhcmlhYmxlLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOGE1MzhmODFiZQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYwpAQCAtMCwwICsxLDM3 MiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfdmFyaWFibGUuYworICoJCXNlc3Np b24gdmFyaWFibGVzCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAq IElERU5USUZJQ0FUSU9OCisgKgkJc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jCisg KgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5o IgorI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvZGVwZW5k ZW5jeS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNpbmNsdWRlICJjYXRhbG9n L25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFj ZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdf dmFyaWFibGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgiCisjaW5j bHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvZXJjZS5oIgorI2lu Y2x1ZGUgInBhcnNlci9wYXJzZV9jb2xsYXRlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2V4 cHIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv bG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCisjaW5jbHVkZSAidXRpbHMvc3lz Y2FjaGUuaCIKKworCitzdGF0aWMgT2JqZWN0QWRkcmVzcyBjcmVhdGVfdmFyaWFibGUoY29uc3Qg Y2hhciAqdmFyTmFtZSwKKwkJCQkJCQkJCSBPaWQgdmFyTmFtZXNwYWNlLAorCQkJCQkJCQkJIE9p ZCB2YXJUeXBlLAorCQkJCQkJCQkJIGludDMyIHZhclR5cG1vZCwKKwkJCQkJCQkJCSBPaWQgdmFy T3duZXIsCisJCQkJCQkJCQkgT2lkIHZhckNvbGxhdGlvbiwKKwkJCQkJCQkJCSBOb2RlICp2YXJE ZWZleHByLAorCQkJCQkJCQkJIFZhcmlhYmxlRU9YQWN0aW9uIGVveGFjdGlvbiwKKwkJCQkJCQkJ CSBib29sIGlzX25vdF9udWxsLAorCQkJCQkJCQkJIGJvb2wgaWZfbm90X2V4aXN0cywKKwkJCQkJ CQkJCSBib29sIGlzX2ltbXV0YWJsZSk7CisKKworLyoKKyAqIENyZWF0ZXMgZW50cnkgaW4gcGdf dmFyaWFibGUgdGFibGUKKyAqLworc3RhdGljIE9iamVjdEFkZHJlc3MKK2NyZWF0ZV92YXJpYWJs ZShjb25zdCBjaGFyICp2YXJOYW1lLAorCQkJCU9pZCB2YXJOYW1lc3BhY2UsCisJCQkJT2lkIHZh clR5cGUsCisJCQkJaW50MzIgdmFyVHlwbW9kLAorCQkJCU9pZCB2YXJPd25lciwKKwkJCQlPaWQg dmFyQ29sbGF0aW9uLAorCQkJCU5vZGUgKnZhckRlZmV4cHIsCisJCQkJVmFyaWFibGVFT1hBY3Rp b24gZW94YWN0aW9uLAorCQkJCWJvb2wgaXNfbm90X251bGwsCisJCQkJYm9vbCBpZl9ub3RfZXhp c3RzLAorCQkJCWJvb2wgaXNfaW1tdXRhYmxlKQoreworCUFjbAkJICAgKnZhcmFjbDsKKwlOYW1l RGF0YQl2YXJuYW1lOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3ZhcmlhYmxlXTsKKwlEYXR1bQkJ dmFsdWVzW05hdHRzX3BnX3ZhcmlhYmxlXTsKKwlSZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXR1 cDsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlPYmplY3RBZGRyZXNzIG15c2VsZiwKKwkJCQlyZWZl cmVuY2VkOworCU9iamVjdEFkZHJlc3NlcyAqYWRkcnM7CisJT2lkCQkJdmFyaWQ7CisKKwlBc3Nl cnQodmFyTmFtZSk7CisJQXNzZXJ0KE9pZElzVmFsaWQodmFyTmFtZXNwYWNlKSk7CisJQXNzZXJ0 KE9pZElzVmFsaWQodmFyVHlwZSkpOworCUFzc2VydChPaWRJc1ZhbGlkKHZhck93bmVyKSk7CisK KwlyZWwgPSB0YWJsZV9vcGVuKFZhcmlhYmxlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7 CisKKwkvKgorCSAqIENoZWNrIGZvciBkdXBsaWNhdGVzLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5v dCByZWFsbHkgcHJldmVudAorCSAqIGR1cGxpY2F0ZXMsIGl0J3MgaGVyZSBqdXN0IHRvIHByb3Zp ZGUgbmljZXIgZXJyb3IgbWVzc2FnZSBpbiBjb21tb24KKwkgKiBjYXNlLiBUaGUgcmVhbCBwcm90 ZWN0aW9uIGlzIHRoZSB1bmlxdWUga2V5IG9uIHRoZSBjYXRhbG9nLgorCSAqLworCWlmIChTZWFy Y2hTeXNDYWNoZUV4aXN0czIoVkFSSUFCTEVOQU1FTlNQLAorCQkJCQkJCSAgUG9pbnRlckdldERh dHVtKHZhck5hbWUpLAorCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bSh2YXJOYW1lc3BhY2UpKSkK Kwl7CisJCWlmIChpZl9ub3RfZXhpc3RzKQorCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCSBlcnJtc2coInNlc3Npb24gdmFy aWFibGUgXCIlc1wiIGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyIsCisJCQkJCQkJdmFyTmFtZSkp KTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBM SUNBVEVfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygic2Vzc2lvbiB2YXJpYWJsZSBcIiVzXCIgYWxy ZWFkeSBleGlzdHMiLAorCQkJCQkJCXZhck5hbWUpKSk7CisKKwkJdGFibGVfY2xvc2UocmVsLCBS b3dFeGNsdXNpdmVMb2NrKTsKKworCQlyZXR1cm4gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJfQor CisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFs c2UsIHNpemVvZihudWxscykpOworCisJbmFtZXN0cmNweSgmdmFybmFtZSwgdmFyTmFtZSk7CisK Kwl2YXJpZCA9IEdldE5ld09pZFdpdGhJbmRleChyZWwsIFZhcmlhYmxlT2JqZWN0SW5kZXhJZCwg QW51bV9wZ192YXJpYWJsZV9vaWQpOworCisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfb2lkIC0g MV0gPSBPYmplY3RJZEdldERhdHVtKHZhcmlkKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV9j cmVhdGVfbHNuIC0gMV0gPSBMU05HZXREYXR1bShHZXRYTG9nSW5zZXJ0UmVjUHRyKCkpOworCXZh bHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWUgLSAxXSA9IE5hbWVHZXREYXR1bSgmdmFybmFt ZSk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFybmFtZXNwYWNlIC0gMV0gPSBPYmplY3RJ ZEdldERhdHVtKHZhck5hbWVzcGFjZSk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFydHlw ZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJUeXBlKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJp YWJsZV92YXJ0eXBtb2QgLSAxXSA9IEludDMyR2V0RGF0dW0odmFyVHlwbW9kKTsKKwl2YWx1ZXNb QW51bV9wZ192YXJpYWJsZV92YXJvd25lciAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJPd25l cik7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyY29sbGF0aW9uIC0gMV0gPSBPYmplY3RJ ZEdldERhdHVtKHZhckNvbGxhdGlvbik7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyaXNu b3RudWxsIC0gMV0gPSBCb29sR2V0RGF0dW0oaXNfbm90X251bGwpOworCXZhbHVlc1tBbnVtX3Bn X3ZhcmlhYmxlX3ZhcmlzaW1tdXRhYmxlIC0gMV0gPSBCb29sR2V0RGF0dW0oaXNfaW1tdXRhYmxl KTsKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJlb3hhY3Rpb24gLSAxXSA9IENoYXJHZXRE YXR1bShlb3hhY3Rpb24pOworCisJLyogdmFyYWNsIHdpbGwgYmUgZGV0ZXJtaW5lZCBsYXRlciAq LworCisJaWYgKHZhckRlZmV4cHIpCisJCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmRlZmV4 cHIgLSAxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0obm9kZVRvU3RyaW5nKHZhckRlZmV4cHIpKTsK KwllbHNlCisJCW51bGxzW0FudW1fcGdfdmFyaWFibGVfdmFyZGVmZXhwciAtIDFdID0gdHJ1ZTsK KworCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CisKKwl2YXJhY2wgPSBnZXRfdXNl cl9kZWZhdWx0X2FjbChPQkpFQ1RfVkFSSUFCTEUsIHZhck93bmVyLAorCQkJCQkJCQkgIHZhck5h bWVzcGFjZSk7CisKKwlpZiAodmFyYWNsICE9IE5VTEwpCisJCXZhbHVlc1tBbnVtX3BnX3Zhcmlh YmxlX3ZhcmFjbCAtIDFdID0gUG9pbnRlckdldERhdHVtKHZhcmFjbCk7CisJZWxzZQorCQludWxs c1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCAtIDFdID0gdHJ1ZTsKKworCXR1cCA9IGhlYXBfZm9y bV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsKKwlDYXRhbG9nVHVwbGVJbnNlcnQocmVs LCB0dXApOworCUFzc2VydChPaWRJc1ZhbGlkKHZhcmlkKSk7CisKKwlhZGRycyA9IG5ld19vYmpl Y3RfYWRkcmVzc2VzKCk7CisKKwlPYmplY3RBZGRyZXNzU2V0KG15c2VsZiwgVmFyaWFibGVSZWxh dGlvbklkLCB2YXJpZCk7CisKKwkvKiBkZXBlbmRlbmN5IG9uIG5hbWVzcGFjZSAqLworCU9iamVj dEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgTmFtZXNwYWNlUmVsYXRpb25JZCwgdmFyTmFtZXNwYWNl KTsKKwlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJnJlZmVyZW5jZWQsIGFkZHJzKTsKKworCS8q IGRlcGVuZGVuY3kgb24gdXNlZCB0eXBlICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2Vk LCBUeXBlUmVsYXRpb25JZCwgdmFyVHlwZSk7CisJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZy ZWZlcmVuY2VkLCBhZGRycyk7CisKKwkvKiBkZXBlbmRlbmN5IG9uIGNvbGxhdGlvbiAqLworCWlm IChPaWRJc1ZhbGlkKHZhckNvbGxhdGlvbikgJiYKKwkJdmFyQ29sbGF0aW9uICE9IERFRkFVTFRf Q09MTEFUSU9OX09JRCkKKwl7CisJCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgQ29sbGF0 aW9uUmVsYXRpb25JZCwgdmFyQ29sbGF0aW9uKTsKKwkJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNz KCZyZWZlcmVuY2VkLCBhZGRycyk7CisJfQorCisJLyogZGVwZW5kZW5jeSBvbiBkZWZhdWx0IGV4 cHIgKi8KKwlpZiAodmFyRGVmZXhwcikKKwkJcmVjb3JkRGVwZW5kZW5jeU9uRXhwcigmbXlzZWxm LCAoTm9kZSAqKSB2YXJEZWZleHByLAorCQkJCQkJCSAgIE5JTCwgREVQRU5ERU5DWV9OT1JNQUwp OworCisJcmVjb3JkX29iamVjdF9hZGRyZXNzX2RlcGVuZGVuY2llcygmbXlzZWxmLCBhZGRycywg REVQRU5ERU5DWV9OT1JNQUwpOworCWZyZWVfb2JqZWN0X2FkZHJlc3NlcyhhZGRycyk7CisKKwkv KiBkZXBlbmRlbmN5IG9uIG93bmVyICovCisJcmVjb3JkRGVwZW5kZW5jeU9uT3duZXIoVmFyaWFi bGVSZWxhdGlvbklkLCB2YXJpZCwgdmFyT3duZXIpOworCisJLyogZGVwZW5kZW5jaWVzIG9uIHJv bGVzIG1lbnRpb25lZCBpbiBkZWZhdWx0IEFDTCAqLworCXJlY29yZERlcGVuZGVuY3lPbk5ld0Fj bChWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcmlkLCAwLCB2YXJPd25lciwgdmFyYWNsKTsKKworCS8q IGRlcGVuZGVuY3kgb24gZXh0ZW5zaW9uICovCisJcmVjb3JkRGVwZW5kZW5jeU9uQ3VycmVudEV4 dGVuc2lvbigmbXlzZWxmLCBmYWxzZSk7CisKKwloZWFwX2ZyZWV0dXBsZSh0dXApOworCisJLyog UG9zdCBjcmVhdGlvbiBob29rIGZvciBuZXcgZnVuY3Rpb24gKi8KKwlJbnZva2VPYmplY3RQb3N0 Q3JlYXRlSG9vayhWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcmlkLCAwKTsKKworCXRhYmxlX2Nsb3Nl KHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gbXlzZWxmOworfQorCisvKgorICog Q3JlYXRlcyBhIG5ldyB2YXJpYWJsZQorICoKKyAqIFVzZWQgYnkgQ1JFQVRFIFZBUklBQkxFIGNv bW1hbmQKKyAqLworT2JqZWN0QWRkcmVzcworQ3JlYXRlVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBDcmVhdGVTZXNzaW9uVmFyU3RtdCAqc3RtdCkKK3sKKwlPaWQJCQluYW1lc3BhY2VpZDsK KwlBY2xSZXN1bHQJYWNscmVzdWx0OworCU9pZAkJCXR5cGlkOworCWludDMyCQl0eXBtb2Q7CisJ T2lkCQkJdmFyb3duZXIgPSBHZXRVc2VySWQoKTsKKwlPaWQJCQljb2xsYXRpb247CisJT2lkCQkJ dHlwY29sbGF0aW9uOworCU9iamVjdEFkZHJlc3MgdmFyaWFibGU7CisKKwlOb2RlCSAgICpjb29r ZWRfZGVmYXVsdCA9IE5VTEw7CisKKwkvKgorCSAqIENoZWNrIGNvbnNpc3RlbmN5IG9mIGFyZ3Vt ZW50cworCSAqLworCWlmIChzdG10LT5lb3hhY3Rpb24gPT0gVkFSSUFCTEVfRU9YX0RST1AKKwkJ JiYgc3RtdC0+dmFyaWFibGUtPnJlbHBlcnNpc3RlbmNlICE9IFJFTFBFUlNJU1RFTkNFX1RFTVAp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9E RUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJPTiBDT01NSVQgRFJPUCBjYW4gb25seSBiZSB1c2Vk IG9uIHRlbXBvcmFyeSB2YXJpYWJsZXMiKSkpOworCisJaWYgKHN0bXQtPmlzX25vdF9udWxsICYm IHN0bXQtPmlzX2ltbXV0YWJsZSAmJiAhc3RtdC0+ZGVmZXhwcikKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBl cnJtc2coIklNTVVUQUJMRSBOT1QgTlVMTCB2YXJpYWJsZSByZXF1aXJlcyBkZWZhdWx0IGV4cHJl c3Npb24iKSkpOworCisJbmFtZXNwYWNlaWQgPQorCQlSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRp b25OYW1lc3BhY2Uoc3RtdC0+dmFyaWFibGUsIE5vTG9jaywgTlVMTCk7CisKKwl0eXBlbmFtZVR5 cGVJZEFuZE1vZChwc3RhdGUsIHN0bXQtPnR5cGVOYW1lLCAmdHlwaWQsICZ0eXBtb2QpOworCXR5 cGNvbGxhdGlvbiA9IGdldF90eXBjb2xsYXRpb24odHlwaWQpOworCisJYWNscmVzdWx0ID0gb2Jq ZWN0X2FjbGNoZWNrKFR5cGVSZWxhdGlvbklkLCB0eXBpZCwgR2V0VXNlcklkKCksIEFDTF9VU0FH RSk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJYWNsY2hlY2tfZXJyb3JfdHlw ZShhY2xyZXN1bHQsIHR5cGlkKTsKKworCWlmIChzdG10LT5jb2xsQ2xhdXNlKQorCQljb2xsYXRp b24gPSBMb29rdXBDb2xsYXRpb24ocHN0YXRlLAorCQkJCQkJCQkJc3RtdC0+Y29sbENsYXVzZS0+ Y29sbG5hbWUsCisJCQkJCQkJCQlzdG10LT5jb2xsQ2xhdXNlLT5sb2NhdGlvbik7CisJZWxzZQor CQljb2xsYXRpb24gPSB0eXBjb2xsYXRpb247OworCisJLyogQ29tcGxhaW4gaWYgQ09MTEFURSBp cyBhcHBsaWVkIHRvIGFuIHVuY29sbGF0YWJsZSB0eXBlICovCisJaWYgKE9pZElzVmFsaWQoY29s bGF0aW9uKSAmJiAhT2lkSXNWYWxpZCh0eXBjb2xsYXRpb24pKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCSBlcnJtc2coImNv bGxhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdHlwZSAlcyIsCisJCQkJCQlmb3JtYXRfdHlw ZV9iZSh0eXBpZCkpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzdG10LT5jb2xs Q2xhdXNlLT5sb2NhdGlvbikpKTsKKworCWlmIChzdG10LT5kZWZleHByKQorCXsKKwkJY29va2Vk X2RlZmF1bHQgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgc3RtdC0+ZGVmZXhwciwKKwkJCQkJCQkJ CSAgIEVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxUKTsKKworCQljb29rZWRfZGVmYXVsdCA9IGNv ZXJjZV90b19zcGVjaWZpY190eXBlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCSBjb29rZWRfZGVmYXVs dCwgdHlwaWQsICJERUZBVUxUIik7CisJCWFzc2lnbl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCBj b29rZWRfZGVmYXVsdCk7CisJfQorCisJdmFyaWFibGUgPSBjcmVhdGVfdmFyaWFibGUoc3RtdC0+ dmFyaWFibGUtPnJlbG5hbWUsCisJCQkJCQkJICAgbmFtZXNwYWNlaWQsCisJCQkJCQkJICAgdHlw aWQsCisJCQkJCQkJICAgdHlwbW9kLAorCQkJCQkJCSAgIHZhcm93bmVyLAorCQkJCQkJCSAgIGNv bGxhdGlvbiwKKwkJCQkJCQkgICBjb29rZWRfZGVmYXVsdCwKKwkJCQkJCQkgICBzdG10LT5lb3hh Y3Rpb24sCisJCQkJCQkJICAgc3RtdC0+aXNfbm90X251bGwsCisJCQkJCQkJICAgc3RtdC0+aWZf bm90X2V4aXN0cywKKwkJCQkJCQkgICBzdG10LT5pc19pbW11dGFibGUpOworCisJZWxvZyhERUJV RzEsICJyZWNvcmQgZm9yIHNlc3Npb24gdmFyaWFibGUgXCIlc1wiIChvaWQ6JWQpIHdhcyBjcmVh dGVkIGluIHBnX3ZhcmlhYmxlIiwKKwkJIHN0bXQtPnZhcmlhYmxlLT5yZWxuYW1lLCB2YXJpYWJs ZS5vYmplY3RJZCk7CisKKwkvKiBXZSB3YW50IFNlc3Npb25WYXJpYWJsZUNyZWF0ZVBvc3Rwcm9j ZXNzIHRvIHNlZSB0aGUgY2F0YWxvZyBjaGFuZ2VzLiAqLworCUNvbW1hbmRDb3VudGVySW5jcmVt ZW50KCk7CisKKwlTZXNzaW9uVmFyaWFibGVDcmVhdGVQb3N0cHJvY2Vzcyh2YXJpYWJsZS5vYmpl Y3RJZCwgc3RtdC0+ZW94YWN0aW9uKTsKKworCXJldHVybiB2YXJpYWJsZTsKK30KKworLyoKKyAq IERyb3AgdmFyaWFibGUgYnkgT0lELCBhbmQgcmVnaXN0ZXIgdGhlIG5lZWRlZCBzZXNzaW9uIHZh cmlhYmxlCisgKiBjbGVhbnVwLgorICovCit2b2lkCitEcm9wVmFyaWFibGUoT2lkIHZhcmlkKQor eworCVJlbGF0aW9uCXJlbDsKKwlIZWFwVHVwbGUJdHVwOworCisJcmVsID0gdGFibGVfb3BlbihW YXJpYWJsZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJdHVwID0gU2VhcmNoU3lz Q2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhl YXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJQ2F0YWxvZ1R1cGxlRGVsZXRlKHJlbCwgJnR1 cC0+dF9zZWxmKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJdGFibGVfY2xvc2UocmVs LCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCS8qIERvIHRoZSBuZWNlc3NhcnkgY2xlYW51cCBpZiBu ZWVkZWQgaW4gbG9jYWwgbWVtb3J5ICovCisJU2Vzc2lvblZhcmlhYmxlRHJvcFBvc3Rwcm9jZXNz KHZhcmlkKTsKK30KKworLyoKKyAqIEZldGNoIGF0dHJpYnV0ZXMgKHdpdGhvdXQgYWNsKSBvZiBz ZXNzaW9uIHZhcmlhYmxlIGZyb20gdGhlIHN5c2NhY2hlLgorICogV2UgZG9uJ3Qgd29yayB3aXRo IGFjbCBkaXJlY3RseSwgc28gd2UgZG9uJ3QgbmVlZCB0byByZWFkIGl0IGhlcmUuCisgKiBTa2lw IGRlc2VyaWFsaXphdGlvbiBvZiBkZWZleHByIHdoZW4gZmFzdF9vbmx5IGlzIHRydWUuCisgKi8K K3ZvaWQKK0luaXRWYXJpYWJsZShWYXJpYWJsZSAqdmFyLCBPaWQgdmFyaWQsIGJvb2wgZmFzdF9v bmx5KQoreworCUhlYXBUdXBsZQl0dXA7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOworCURh dHVtCQlkZWZleHByX2RhdHVtOworCWJvb2wJCWRlZmV4cHJfaXNudWxsOworCisJdHVwID0gU2Vh cmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIHNlc3Npb24gdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZv cm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFyLT5vaWQgPSB2YXJpZDsKKwl2 YXItPmNyZWF0ZV9sc24gPSB2YXJmb3JtLT5jcmVhdGVfbHNuOworCXZhci0+bmFtZSA9IHBzdHJk dXAoTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKSk7CisJdmFyLT5uYW1lc3BhY2VpZCA9IHZhcmZv cm0tPnZhcm5hbWVzcGFjZTsKKwl2YXItPnR5cGlkID0gdmFyZm9ybS0+dmFydHlwZTsKKwl2YXIt PnR5cG1vZCA9IHZhcmZvcm0tPnZhcnR5cG1vZDsKKwl2YXItPm93bmVyID0gdmFyZm9ybS0+dmFy b3duZXI7CisJdmFyLT5jb2xsYXRpb24gPSB2YXJmb3JtLT52YXJjb2xsYXRpb247CisJdmFyLT5p c19pbW11dGFibGUgPSB2YXJmb3JtLT52YXJpc2ltbXV0YWJsZTsKKwl2YXItPmlzX25vdF9udWxs ID0gdmFyZm9ybS0+dmFyaXNub3RudWxsOworCXZhci0+ZW94YWN0aW9uID0gdmFyZm9ybS0+dmFy ZW94YWN0aW9uOworCisJLyogR2V0IGRlZmV4cHIgKi8KKwlkZWZleHByX2RhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyKFZBUklBQkxFT0lELAorCQkJCQkJCQkJdHVwLAorCQkJCQkJCQkJQW51bV9wZ192 YXJpYWJsZV92YXJkZWZleHByLAorCQkJCQkJCQkJJmRlZmV4cHJfaXNudWxsKTsKKworCXZhci0+ aGFzX2RlZmV4cHIgPSAhZGVmZXhwcl9pc251bGw7CisKKwkvKgorCSAqIERlc2VyaWFsaXplIGRl ZmV4cHIgb25seSB3aGVuIGl0IGlzIHJlcXVlc3RlZC4gV2UgbmVlZCB0byBkZXNlcmlhbGl6ZQor CSAqIE5vZGUgd2l0aCBkZWZhdWx0IGV4cHJlc3Npb24sIG9ubHkgd2hlbiB3ZSByZWFkIGZyb20g c2Vzc2lvbiB2YXJpYWJsZSwKKwkgKiBhbmQgdGhpcyBzZXNzaW9uIHZhcmlhYmxlIGhhcyBub3Qg YXNzaWduZWQgdmFsdWUsIGFuZCB0aGlzIHNlc3Npb24KKwkgKiB2YXJpYWJsZSBoYXMgZGVmYXVs dCBleHByZXNzaW9uLiBGb3Igb3RoZXIgY2FzZXMsIHdlIHNraXAgc2tpcCB0aGlzCisJICogb3Bl cmF0aW9uLgorCSAqLworCWlmICghZmFzdF9vbmx5ICYmICFkZWZleHByX2lzbnVsbCkKKwkJdmFy LT5kZWZleHByID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoZGVmZXhwcl9kYXR1 bSkpOworCWVsc2UKKwkJdmFyLT5kZWZleHByID0gTlVMTDsKKworCVJlbGVhc2VTeXNDYWNoZSh0 dXApOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQppbmRleCA0OGY3MzQ4ZjkxLi4xY2ZhZWNhNTFlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtNTAsNiArNTAsNyBAQCBPQkpTID0gXAogCXNjaGVtYWNt ZHMubyBcCiAJc2VjbGFiZWwubyBcCiAJc2VxdWVuY2UubyBcCisJc2Vzc2lvbl92YXJpYWJsZS5v IFwKIAlzdGF0c2NtZHMubyBcCiAJc3Vic2NyaXB0aW9uY21kcy5vIFwKIAl0YWJsZWNtZHMubyBc CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvYWx0ZXIuYwppbmRleCAxMGI2ZmUxOWEyLi44ZGMyZmNhYTUzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2FsdGVyLmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX2RpY3Qu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3BhcnNlci5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHNfdGVtcGxhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvYWx0ZXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb2xsYXRpb25jbWRz LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29udmVyc2lvbmNtZHMuaCIKQEAgLTE0MSw2ICsxNDIs MTAgQEAgcmVwb3J0X25hbWVzcGFjZV9jb25mbGljdChPaWQgY2xhc3NJZCwgY29uc3QgY2hhciAq bmFtZSwgT2lkIG5zcE9pZCkKIAkJCUFzc2VydChPaWRJc1ZhbGlkKG5zcE9pZCkpOwogCQkJbXNn Zm10ID0gZ2V0dGV4dF9ub29wKCJ0ZXh0IHNlYXJjaCBjb25maWd1cmF0aW9uIFwiJXNcIiBhbHJl YWR5IGV4aXN0cyBpbiBzY2hlbWEgXCIlc1wiIik7CiAJCQlicmVhazsKKwkJY2FzZSBWYXJpYWJs ZVJlbGF0aW9uSWQ6CisJCQlBc3NlcnQoT2lkSXNWYWxpZChuc3BPaWQpKTsKKwkJCW1zZ2ZtdCA9 IGdldHRleHRfbm9vcCgic2Vzc2lvbiB2YXJpYWJsZSBcIiVzXCIgYWxyZWFkeSBleGlzdHMgaW4g c2NoZW1hIFwiJXNcIiIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAi dW5zdXBwb3J0ZWQgb2JqZWN0IGNsYXNzOiAldSIsIGNsYXNzSWQpOwogCQkJYnJlYWs7CkBAIC0z OTMsNiArMzk4LDcgQEAgRXhlY1JlbmFtZVN0bXQoUmVuYW1lU3RtdCAqc3RtdCkKIAkJY2FzZSBP QkpFQ1RfVFNURU1QTEFURToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CiAJCWNhc2UgT0JK RUNUX1NVQlNDUklQVElPTjoKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQl7CiAJCQkJT2Jq ZWN0QWRkcmVzcyBhZGRyZXNzOwogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CkBAIC01MzYsNiArNTQy LDcgQEAgRXhlY0FsdGVyT2JqZWN0U2NoZW1hU3RtdChBbHRlck9iamVjdFNjaGVtYVN0bXQgKnN0 bXQsCiAJCWNhc2UgT0JKRUNUX1RTRElDVElPTkFSWToKIAkJY2FzZSBPQkpFQ1RfVFNQQVJTRVI6 CiAJCWNhc2UgT0JKRUNUX1RTVEVNUExBVEU6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJ ewogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CiAJCQkJUmVsYXRpb24JcmVsYXRpb247CkBAIC02MjYs NiArNjMzLDcgQEAgQWx0ZXJPYmplY3ROYW1lc3BhY2Vfb2lkKE9pZCBjbGFzc0lkLCBPaWQgb2Jq aWQsIE9pZCBuc3BPaWQsCiAJCWNhc2UgT0NMQVNTX1RTRElDVDoKIAkJY2FzZSBPQ0xBU1NfVFNU RU1QTEFURToKIAkJY2FzZSBPQ0xBU1NfVFNDT05GSUc6CisJCWNhc2UgT0NMQVNTX1ZBUklBQkxF OgogCQkJewogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CiAKQEAgLTg4Niw2ICs4OTQsNyBAQCBFeGVj QWx0ZXJPd25lclN0bXQoQWx0ZXJPd25lclN0bXQgKnN0bXQpCiAJCWNhc2UgT0JKRUNUX1RBQkxF U1BBQ0U6CiAJCWNhc2UgT0JKRUNUX1RTRElDVElPTkFSWToKIAkJY2FzZSBPQkpFQ1RfVFNDT05G SUdVUkFUSU9OOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCXsKIAkJCQlSZWxhdGlvbglj YXRhbG9nOwogCQkJCVJlbGF0aW9uCXJlbGF0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZHJvcGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKaW5k ZXggZGI5MDZmNTMwZS4uMzdjOTk2Mzc5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZHJvcGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jCkBAIC00 ODEsNiArNDgxLDExIEBAIGRvZXNfbm90X2V4aXN0X3NraXBwaW5nKE9iamVjdFR5cGUgb2JqdHlw ZSwgTm9kZSAqb2JqZWN0KQogCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJwdWJsaWNhdGlvbiBcIiVz XCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nIik7CiAJCQluYW1lID0gc3RyVmFsKG9iamVjdCk7 CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQltc2cgPSBnZXR0ZXh0X25v b3AoInNlc3Npb24gdmFyaWFibGUgXCIlc1wiIGRvZXMgbm90IGV4aXN0LCBza2lwcGluZyIpOwor CQkJbmFtZSA9IE5hbWVMaXN0VG9TdHJpbmcoY2FzdE5vZGUoTGlzdCwgb2JqZWN0KSk7CisJCQli cmVhazsKKwkJZGVmYXVsdDoKIAogCQljYXNlIE9CSkVDVF9DT0xVTU46CiAJCWNhc2UgT0JKRUNU X0RBVEFCQVNFOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dl ci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmluZGV4IGEzYmRjNWRi MDcuLmFlZmRiNDliMTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3Ry aWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKQEAgLTk5 MSw2ICs5OTEsNyBAQCBFdmVudFRyaWdnZXJTdXBwb3J0c09iamVjdFR5cGUoT2JqZWN0VHlwZSBv YnR5cGUpCiAJCWNhc2UgT0JKRUNUX1RTVEVNUExBVEU6CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJ CWNhc2UgT0JKRUNUX1VTRVJfTUFQUElORzoKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNh c2UgT0JKRUNUX1ZJRVc6CiAJCQlyZXR1cm4gdHJ1ZTsKIApAQCAtMTA1Nyw2ICsxMDU4LDcgQEAg RXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RDbGFzcyhPYmplY3RDbGFzcyBvYmpjbGFzcykKIAkJ Y2FzZSBPQ0xBU1NfUFVCTElDQVRJT05fUkVMOgogCQljYXNlIE9DTEFTU19TVUJTQ1JJUFRJT046 CiAJCWNhc2UgT0NMQVNTX1RSQU5TRk9STToKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAJCQly ZXR1cm4gdHJ1ZTsKIAogCQkJLyoKQEAgLTIwNDksNiArMjA1MSw4IEBAIHN0cmluZ2lmeV9ncmFu dF9vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJCXJldHVybiAiVEFCTEVTUEFDRSI7CiAJ CWNhc2UgT0JKRUNUX1RZUEU6CiAJCQlyZXR1cm4gIlRZUEUiOworCQljYXNlIE9CSkVDVF9WQVJJ QUJMRToKKwkJCXJldHVybiAiVkFSSUFCTEUiOwogCQkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4n dCB1c2VkICovCiAJCWNhc2UgT0JKRUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FH R1JFR0FURToKQEAgLTIxMzIsNiArMjEzNiw4IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlw ZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0VTIjsKIAkJY2FzZSBP QkpFQ1RfVFlQRToKIAkJCXJldHVybiAiVFlQRVMiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToK KwkJCXJldHVybiAiVkFSSUFCTEVTIjsKIAkJCS8qIHRoZXNlIGN1cnJlbnRseSBhcmVuJ3QgdXNl ZCAqLwogCQljYXNlIE9CSkVDVF9BQ0NFU1NfTUVUSE9EOgogCQljYXNlIE9CSkVDVF9BR0dSRUdB VEU6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwppbmRleCA3YWUxOWI5OGJiLi45YjExMzc0NTM1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKQEAgLTkyLDYgKzkyLDcgQEAgU2VjTGFiZWxTdXBwb3J0 c09iamVjdFR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9UU1BBUlNFUjoK IAkJY2FzZSBPQkpFQ1RfVFNURU1QTEFURToKIAkJY2FzZSBPQkpFQ1RfVVNFUl9NQVBQSU5HOgor CQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCXJldHVybiBmYWxzZTsKIAogCQkJLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3Nlc3Npb25fdmFyaWFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi40NTcwNTgzMDgyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5jCkBAIC0wLDAgKzEsMjQzIEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBzZXNzaW9uX3ZhcmlhYmxlLmMKKyAqCSAgc2Vzc2lvbiB2YXJpYWJs ZSBjcmVhdGlvbi9tYW5pcHVsYXRpb24gY29tbWFuZHMKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTYtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBv ZiBDYWxpZm9ybmlhCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3Nlc3Npb252YXJpYWJsZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K KyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvZGVwZW5kZW5jeS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcu aCIKKyNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdf dmFyaWFibGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgiCisjaW5j bHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInV0aWxz L2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisvKgorICogVGhl IGxpZmUgY3ljbGUgb2YgdGVtcG9yYXJ5IHNlc3Npb24gdmFyaWFibGUgY2FuIGJlCisgKiBsaW1t aXRlZCBieSB1c2luZyBjbGF1c2UgT04gQ09NTUlUIERST1AuCisgKi8KK3R5cGVkZWYgZW51bSBT VmFyaWFibGVYQWN0QWN0aW9uCit7CisJU1ZBUl9PTl9DT01NSVRfRFJPUCwJCS8qIHVzZWQgZm9y IE9OIENPTU1JVCBEUk9QICovCit9IFNWYXJpYWJsZVhBY3RBY3Rpb247CisKK3R5cGVkZWYgc3Ry dWN0IFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtCit7CisJT2lkCQkJdmFyaWQ7CQkJLyogdmFyaWQg b2Ygc2Vzc2lvbiB2YXJpYWJsZSAqLworCisJLyoKKwkgKiBjcmVhdGluZ19zdWJpZCBpcyB0aGUg SUQgb2YgdGhlIGNyZWF0aW5nIHN1YnhhY3QuIElmIHRoZSBhY3Rpb24gd2FzCisJICogdW5yZWdp c3RlcmVkIGR1cmluZyB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiwgZGVsZXRpbmdfc3ViaWQgaXMg dGhlIElECisJICogb2YgdGhlIGRlbGV0aW5nIHN1YnhhY3QsIG90aGVyd2lzZSBJbnZhbGlkU3Vi VHJhbnNhY3Rpb25JZC4KKwkgKi8KKwlTdWJUcmFuc2FjdGlvbklkIGNyZWF0aW5nX3N1YmlkOwor CVN1YlRyYW5zYWN0aW9uSWQgZGVsZXRpbmdfc3ViaWQ7Cit9IFNWYXJpYWJsZVhBY3RBY3Rpb25J dGVtOworCisvKiBMaXN0IGhvbGRzIGZpZWxkcyBvZiBTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSB0 eXBlICovCitzdGF0aWMgTGlzdCAqeGFjdF9kcm9wX2FjdGlvbnMgPSBOSUw7CisKK3N0YXRpYyB2 b2lkIHJlZ2lzdGVyX3Nlc3Npb25fdmFyaWFibGVfeGFjdF9hY3Rpb24oT2lkIHZhcmlkLCBTVmFy aWFibGVYQWN0QWN0aW9uIGFjdGlvbik7CitzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyX3Nlc3Npb25f dmFyaWFibGVfeGFjdF9hY3Rpb24oT2lkIHZhcmlkLCBTVmFyaWFibGVYQWN0QWN0aW9uIGFjdGlv bik7CisKKworLyoKKyAqIERvIHRoZSBuZWNlc3Nhcnkgd29yayB0byBzZXR1cCBsb2NhbCBtZW1v cnkgbWFuYWdlbWVudCBvZiBhIG5ldworICogdmFyaWFibGUuCisgKgorICogQ2FsbGVyIHNob3Vs ZCBhbHJlYWR5IGhhdmUgY3JlYXRlZCB0aGUgbmVjZXNzYXJ5IGVudHJ5IGluIGNhdGFsb2cKKyAq IGFuZCBtYWRlIHRoZW0gdmlzaWJsZS4KKyAqLwordm9pZAorU2Vzc2lvblZhcmlhYmxlQ3JlYXRl UG9zdHByb2Nlc3MoT2lkIHZhcmlkLCBjaGFyIGVveGFjdGlvbikKK3sKKwkvKgorCSAqIEZvciB0 ZW1wb3JhcnkgdmFyaWFibGVzLCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBlbmQgb2YgeGFjdCBh Y3Rpb24gdG8KKwkgKiBlbnN1cmUgZGVsZXRpb24gZnJvbSBjYXRhbG9nLgorCSAqLworCWlmIChl b3hhY3Rpb24gPT0gVkFSSUFCTEVfRU9YX0RST1ApCisJeworCQlBc3NlcnQoaXNUZW1wTmFtZXNw YWNlKGdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWVzcGFjZSh2YXJpZCkpKTsKKworCQlyZWdpc3Rl cl9zZXNzaW9uX3ZhcmlhYmxlX3hhY3RfYWN0aW9uKHZhcmlkLCBTVkFSX09OX0NPTU1JVF9EUk9Q KTsKKwl9Cit9CisKKy8qCisgKiBIYW5kbGUgdGhlIGxvY2FsIG1lbW9yeSBjbGVhbnVwIGZvciBh IERST1AgVkFSSUFCTEUgY29tbWFuZC4KKyAqCisgKiBDYWxsZXIgc2hvdWxkIHRha2UgY2FyZSBv ZiByZW1vdmluZyB0aGUgcGdfdmFyaWFibGUgZW50cnkgZmlyc3QuCisgKi8KK3ZvaWQKK1Nlc3Np b25WYXJpYWJsZURyb3BQb3N0cHJvY2VzcyhPaWQgdmFyaWQpCit7CisJLyoKKwkgKiBUaGUgZW50 cnkgd2FzIHJlbW92ZWQgZnJvbSBjYXRhbG9nIGFscmVhZHksIHdlIG11c3Qgbm90IGRvIGl0CisJ ICogYWdhaW4gYXQgZW5kIG9mIHhhY3QgdGltZS4KKwkgKi8KKwl1bnJlZ2lzdGVyX3Nlc3Npb25f dmFyaWFibGVfeGFjdF9hY3Rpb24odmFyaWQsIFNWQVJfT05fQ09NTUlUX0RST1ApOworfQorCisv KgorICogUmVnaXN0cmF0aW9uIG9mIGFjdGlvbnMgdG8gYmUgZXhlY3V0ZWQgb24gc2Vzc2lvbiB2 YXJpYWJsZXMgYXQgdHJhbnNhY3Rpb24KKyAqIGVuZCB0aW1lLiBXZSB3YW50IHRvIGRyb3AgdGVt cG9yYXJ5IHNlc3Npb24gdmFyaWFibGVzIHdpdGggY2xhdXNlIE9OIENPTU1JVAorICogRFJPUCwg b3Igd2Ugd2FudCB0byByZXNldCB2YWx1ZXMgb2Ygc2Vzc2lvbiB2YXJpYWJsZXMgd2l0aCBjbGF1 c2UgT04KKyAqIFRSQU5TQUNUSU9OIEVORCBSRVNFVCBvciB3ZSB3YW50IHRvIGNsZWFuIChyZXNl dCkgbG9jYWwgbWVtb3J5IGFsbG9jYXRlZCBieQorICogdmFsdWVzIG9mIGRyb3BwZWQgc2Vzc2lv biB2YXJpYWJsZXMuCisgKi8KKworLyoKKyAqIFJlZ2lzdGVyIGEgc2Vzc2lvbiB2YXJpYWJsZSB4 YWN0IGFjdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK3JlZ2lzdGVyX3Nlc3Npb25fdmFyaWFibGVf eGFjdF9hY3Rpb24oT2lkIHZhcmlkLAorCQkJCQkJCQkJICBTVmFyaWFibGVYQWN0QWN0aW9uIGFj dGlvbikKK3sKKwlTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSAqeGFjdF9haTsKKwlNZW1vcnlDb250 ZXh0IG9sZGN4dDsKKworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9y eUNvbnRleHQpOworCisJeGFjdF9haSA9IChTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSAqKQorCQlw YWxsb2Moc2l6ZW9mKFNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtKSk7CisKKwl4YWN0X2FpLT52YXJp ZCA9IHZhcmlkOworCisJeGFjdF9haS0+Y3JlYXRpbmdfc3ViaWQgPSBHZXRDdXJyZW50U3ViVHJh bnNhY3Rpb25JZCgpOworCXhhY3RfYWktPmRlbGV0aW5nX3N1YmlkID0gSW52YWxpZFN1YlRyYW5z YWN0aW9uSWQ7CisKKwlBc3NlcnQoYWN0aW9uID09IFNWQVJfT05fQ09NTUlUX0RST1ApOworCXhh Y3RfZHJvcF9hY3Rpb25zID0gbGNvbnMoeGFjdF9haSwgeGFjdF9kcm9wX2FjdGlvbnMpOworCisJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8qCisgKiBVbnJlZ2lzdGVyIGFu IGFjdGlvbiBvbiBhIGdpdmVuIHNlc3Npb24gdmFyaWFibGUgZnJvbSBhY3Rpb24gbGlzdC4gSW4g dGhpcworICogbW9tZW50LCB0aGUgYWN0aW9uIGlzIGp1c3QgbWFya2VkIGFzIGRlbGV0ZWQgYnkg c2V0dGluZyBkZWxldGluZ19zdWJpZC4gVGhlCisgKiBjYWxsaW5nIGV2ZW4gbWlnaHQgYmUgcm9s bGJhY2tlZCwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgbm90IGxvc2UgdGhpcworICogYWN0aW9u LgorICovCitzdGF0aWMgdm9pZAordW5yZWdpc3Rlcl9zZXNzaW9uX3ZhcmlhYmxlX3hhY3RfYWN0 aW9uKE9pZCB2YXJpZCwKKwkJCQkJCQkJCQlTVmFyaWFibGVYQWN0QWN0aW9uIGFjdGlvbikKK3sK KwlMaXN0Q2VsbCAgICpsOworCisJQXNzZXJ0KGFjdGlvbiA9PSBTVkFSX09OX0NPTU1JVF9EUk9Q KTsKKworCWZvcmVhY2gobCwgeGFjdF9kcm9wX2FjdGlvbnMpCisJeworCQlTVmFyaWFibGVYQWN0 QWN0aW9uSXRlbSAqeGFjdF9haSA9CisJCShTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSAqKSBsZmly c3QobCk7CisKKwkJaWYgKHhhY3RfYWktPnZhcmlkID09IHZhcmlkKQorCQkJeGFjdF9haS0+ZGVs ZXRpbmdfc3ViaWQgPSBHZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25JZCgpOworCX0KK30KKworLyoK KyAqIFBlcmZvcm0gT04gVFJBTlNBQ1RJT04gRU5EIFJFU0VUIG9yIE9OIENPTU1JVCBEUk9QCisg KiBhbmQgQ09NTUlUL1JPTExCQUNLIG9mIHRyYW5zYWN0aW9uIHNlc3Npb24gdmFyaWFibGVzLgor ICovCit2b2lkCitBdFByZUVPWGFjdF9TZXNzaW9uVmFyaWFibGUoYm9vbCBpc0NvbW1pdCkKK3sK KwlMaXN0Q2VsbCAgICpsOworCisJZm9yZWFjaChsLCB4YWN0X2Ryb3BfYWN0aW9ucykKKwl7CisJ CVNWYXJpYWJsZVhBY3RBY3Rpb25JdGVtICp4YWN0X2FpID0KKwkJKFNWYXJpYWJsZVhBY3RBY3Rp b25JdGVtICopIGxmaXJzdChsKTsKKworCQkvKiBJdGVyYXRlIG9ubHkgb3ZlciBlbnRyaWVzIHRo YXQgYXJlIHN0aWxsIHBlbmRpbmcgKi8KKwkJaWYgKHhhY3RfYWktPmRlbGV0aW5nX3N1YmlkID09 IEludmFsaWRTdWJUcmFuc2FjdGlvbklkKQorCQl7CisKKwkJCS8qCisJCQkgKiBPTiBDT01NSVQg RFJPUCBpcyBhbGxvd2VkIG9ubHkgZm9yIHRlbXAgc2Vzc2lvbiB2YXJpYWJsZXMuIFNvCisJCQkg KiB3ZSBzaG91bGQgZXhwbGljaXRseSBkZWxldGUgb25seSB3aGVuIGN1cnJlbnQgdHJhbnNhY3Rp b24gd2FzCisJCQkgKiBjb21taXR0ZWQuIFdoZW4gaXQncyByb2xsYmFjaywgdGhlbiBzZXNzaW9u IHZhcmlhYmxlIGlzIHJlbW92ZWQKKwkJCSAqIGF1dG9tYXRpY2FsbHkuCisJCQkgKi8KKwkJCWlm IChpc0NvbW1pdCkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKworCQkJCW9iamVj dC5jbGFzc0lkID0gVmFyaWFibGVSZWxhdGlvbklkOworCQkJCW9iamVjdC5vYmplY3RJZCA9IHhh Y3RfYWktPnZhcmlkOworCQkJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisKKwkJCQkvKgorCQkJ CSAqIFNpbmNlIHRoaXMgaXMgYW4gYXV0b21hdGljIGRyb3AsIHJhdGhlciB0aGFuIG9uZSBkaXJl Y3RseQorCQkJCSAqIGluaXRpYXRlZCBieSB0aGUgdXNlciwgd2UgcGFzcyB0aGUKKwkJCQkgKiBQ RVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMIGZsYWcuCisJCQkJICovCisJCQkJZWxvZyhERUJVRzEs ICJzZXNzaW9uIHZhcmlhYmxlIChvaWQ6JXUpIHdpbGwgYmUgZGVsZXRlZCAoZm9yY2VkIGJ5IFNW QVJfT05fQ09NTUlUX0RST1AgYWN0aW9uKSIsCisJCQkJCSB4YWN0X2FpLT52YXJpZCk7CisKKwkJ CQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9DQVNDQURFLAorCQkJCQkJCQlQRVJGT1JN X0RFTEVUSU9OX0lOVEVSTkFMIHwKKwkJCQkJCQkJUEVSRk9STV9ERUxFVElPTl9RVUlFVExZKTsK KwkJCX0KKwkJfQorCX0KKworCS8qCisJICogQW55IGRyb3AgYWN0aW9uIGxlZnQgaXMgYW4gZW50 cnkgdGhhdCB3YXMgdW5yZWdpc3RlcmVkIGFuZCBub3QKKwkgKiByb2xsYmFja2VkLCBzbyB3ZSBj YW4gc2ltcGx5IHJlbW92ZSB0aGVtLgorCSAqLworCWxpc3RfZnJlZV9kZWVwKHhhY3RfZHJvcF9h Y3Rpb25zKTsKKwl4YWN0X2Ryb3BfYWN0aW9ucyA9IE5JTDsKK30KKworLyoKKyAqIFBvc3Qtc3Vi Y29tbWl0IG9yIHBvc3Qtc3ViYWJvcnQgY2xlYW51cCBvZiB4YWN0IGFjdGlvbiBsaXN0LgorICoK KyAqIER1cmluZyBzdWJhYm9ydCwgd2UgY2FuIGltbWVkaWF0ZWx5IHJlbW92ZSBlbnRyaWVzIGNy ZWF0ZWQgZHVyaW5nIHRoaXMKKyAqIHN1YnRyYW5zYWN0aW9uLiBEdXJpbmcgc3ViY29tbWl0LCBq dXN0IHRyYW5zZmVyIGVudHJpZXMgbWFya2VkIGR1cmluZworICogdGhpcyBzdWJ0cmFuc2FjdGlv biBhcyBiZWluZyB0aGUgcGFyZW50J3MgcmVzcG9uc2liaWxpdHkuCisgKi8KK3ZvaWQKK0F0RU9T dWJYYWN0X1Nlc3Npb25WYXJpYWJsZShib29sIGlzQ29tbWl0LAorCQkJCQkJCVN1YlRyYW5zYWN0 aW9uSWQgbXlTdWJpZCwKKwkJCQkJCQlTdWJUcmFuc2FjdGlvbklkIHBhcmVudFN1YmlkKQorewor CUxpc3RDZWxsICAgKmN1cl9pdGVtOworCisJZm9yZWFjaChjdXJfaXRlbSwgeGFjdF9kcm9wX2Fj dGlvbnMpCisJeworCQlTVmFyaWFibGVYQWN0QWN0aW9uSXRlbSAqeGFjdF9haSA9CisJCShTVmFy aWFibGVYQWN0QWN0aW9uSXRlbSAqKSBsZmlyc3QoY3VyX2l0ZW0pOworCisJCWlmICghaXNDb21t aXQgJiYgeGFjdF9haS0+Y3JlYXRpbmdfc3ViaWQgPT0gbXlTdWJpZCkKKwkJeworCQkJLyogY3Vy X2l0ZW0gbXVzdCBiZSByZW1vdmVkICovCisJCQl4YWN0X2Ryb3BfYWN0aW9ucyA9IGZvcmVhY2hf ZGVsZXRlX2N1cnJlbnQoeGFjdF9kcm9wX2FjdGlvbnMsIGN1cl9pdGVtKTsKKwkJCXBmcmVlKHhh Y3RfYWkpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogY3VyX2l0ZW0gbXVzdCBiZSBwcmVzZXJ2 ZWQgKi8KKwkJCWlmICh4YWN0X2FpLT5jcmVhdGluZ19zdWJpZCA9PSBteVN1YmlkKQorCQkJCXhh Y3RfYWktPmNyZWF0aW5nX3N1YmlkID0gcGFyZW50U3ViaWQ7CisJCQlpZiAoeGFjdF9haS0+ZGVs ZXRpbmdfc3ViaWQgPT0gbXlTdWJpZCkKKwkJCQl4YWN0X2FpLT5kZWxldGluZ19zdWJpZCA9IGlz Q29tbWl0ID8gcGFyZW50U3ViaWQgOiBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZDsKKwkJfQorCX0K K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMTBjMTk1NTg4NC4uYWYxOGI2NjUxMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJj YXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RyaWdnZXIuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Zhcmlh YmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9z dG9yYWdlX3hsb2cuaCIKICNpbmNsdWRlICJjYXRhbG9nL3RvYXN0aW5nLmgiCkBAIC02NDM2LDYg KzY0MzcsOCBAQCBBVFR5cGVkVGFibGVSZWN1cnNpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24g cmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAgKiBFdmVudHVhbGx5LCB3ZSdkIGxpa2UgdG8gcHJv cGFnYXRlIHRoZSBjaGVjayBvciByZXdyaXRlIG9wZXJhdGlvbgogICogaW50byBzdWNoIHRhYmxl cywgYnV0IGZvciBub3csIGp1c3QgZXJyb3Igb3V0IGlmIHdlIGZpbmQgYW55LgogICoKKyAqIENo ZWNrIGlmIHRoZSB0eXBlICJ0eXBlT2lkIiBpcyB1c2VkIGFzIHR5cGUgb2Ygc29tZSBzZXNzaW9u IHZhcmlhYmxlIHRvby4KKyAqCiAgKiBDYWxsZXIgc2hvdWxkIHByb3ZpZGUgZWl0aGVyIHRoZSBh c3NvY2lhdGVkIHJlbGF0aW9uIG9mIGEgcm93dHlwZSwKICAqIG9yIGEgdHlwZSBuYW1lIChub3Qg Ym90aCkgZm9yIHVzZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSwgaWYgYW55LgogICoKQEAgLTY0OTcs NiArNjUwMCw0NSBAQCBmaW5kX2NvbXBvc2l0ZV90eXBlX2RlcGVuZGVuY2llcyhPaWQgdHlwZU9p ZCwgUmVsYXRpb24gb3JpZ1JlbGF0aW9uLAogCQkJY29udGludWU7CiAJCX0KIAorCQkvKiBEb24n dCBhbGxvdyBjaGFuZ2Ugb2YgdHlwZSB1c2VkIGJ5IHNlc3Npb24ncyB2YXJpYWJsZSAqLworCQlp ZiAocGdfZGVwZW5kLT5jbGFzc2lkID09IFZhcmlhYmxlUmVsYXRpb25JZCkKKwkJeworCQkJT2lk CQkJdmFyaWQgPSBwZ19kZXBlbmQtPm9iamlkOworCisJCQlpZiAob3JpZ1R5cGVOYW1lKQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIgdHlwZSBcIiVzXCIgYmVjYXVzZSBz ZXNzaW9uIHZhcmlhYmxlIFwiJXMuJXNcIiB1c2VzIGl0IiwKKwkJCQkJCQkJb3JpZ1R5cGVOYW1l LAorCQkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNw YWNlKHZhcmlkKSksCisJCQkJCQkJCWdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWUodmFyaWQpKSkp OworCQkJZWxzZSBpZiAob3JpZ1JlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9D T01QT1NJVEVfVFlQRSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygiY2Fubm90IGFsdGVyIHR5 cGUgXCIlc1wiIGJlY2F1c2Ugc2Vzc2lvbiB2YXJpYWJsZSBcIiVzLiVzXCIgdXNlcyBpdCIsCisJ CQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKG9yaWdSZWxhdGlvbiksCisJCQkJCQkJCWdl dF9uYW1lc3BhY2VfbmFtZShnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2UodmFyaWQpKSwK KwkJCQkJCQkJZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZSh2YXJpZCkpKSk7CisJCQllbHNlIGlm IChvcmlnUmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX0ZPUkVJR05fVEFCTEUp CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciBmb3JlaWduIHRhYmxlIFwi JXNcIiBiZWNhdXNlIHNlc3Npb24gdmFyaWFibGUgXCIlcy4lc1wiIHVzZXMgaXQiLAorCQkJCQkJ CQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShvcmlnUmVsYXRpb24pLAorCQkJCQkJCQlnZXRfbmFt ZXNwYWNlX25hbWUoZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNwYWNlKHZhcmlkKSksCisJCQkJ CQkJCWdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWUodmFyaWQpKSkpOworCQkJZWxzZSBpZiAob3Jp Z1JlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTiB8fAorCQkJCQkg b3JpZ1JlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXIHx8CisJCQkJ CSBvcmlnUmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIgdGFibGUgXCIlc1wi IGJlY2F1c2Ugc2Vzc2lvbiB2YXJpYWJsZSBcIiVzLiVzXCIgdXNlcyBpdCIsCisJCQkJCQkJCVJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKG9yaWdSZWxhdGlvbiksCisJCQkJCQkJCWdldF9uYW1lc3Bh Y2VfbmFtZShnZXRfc2Vzc2lvbl92YXJpYWJsZV9uYW1lc3BhY2UodmFyaWQpKSwKKwkJCQkJCQkJ Z2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZSh2YXJpZCkpKSk7CisKKwkJCWNvbnRpbnVlOworCQl9 CisKIAkJLyogRWxzZSwgaWdub3JlIGRlcGVuZGVlcyB0aGF0IGFyZW4ndCB1c2VyIGNvbHVtbnMg b2YgcmVsYXRpb25zICovCiAJCS8qICh3ZSBhc3N1bWUgc3lzdGVtIGNvbHVtbnMgYXJlIG5ldmVy IG9mIGludGVyZXN0aW5nIHR5cGVzKSAqLwogCQlpZiAocGdfZGVwZW5kLT5jbGFzc2lkICE9IFJl bGF0aW9uUmVsYXRpb25JZCB8fApAQCAtMTI3MzIsNiArMTI3NzQsNyBAQCBBVEV4ZWNBbHRlckNv bHVtblR5cGUoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQljYXNlIE9D TEFTU19QVUJMSUNBVElPTl9SRUw6CiAJCQljYXNlIE9DTEFTU19TVUJTQ1JJUFRJT046CiAJCQlj YXNlIE9DTEFTU19UUkFOU0ZPUk06CisJCQljYXNlIE9DTEFTU19WQVJJQUJMRToKIAogCQkJCS8q CiAJCQkJICogV2UgZG9uJ3QgZXhwZWN0IGFueSBvZiB0aGVzZSBzb3J0cyBvZiBvYmplY3RzIHRv IGRlcGVuZCBvbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYjFhZTVmODM0Yy4uMjYwYjdmYmNlMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2Vy LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRz L2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJncmFt cGFyc2UuaCIKQEAgLTI5Miw4ICsyOTMsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlD b25zdHJhaW50c1NldFN0bXQgQ29weVN0bXQgQ3JlYXRlQXNTdG10IENyZWF0ZUNhc3RTdG10CiAJ CUNyZWF0ZURvbWFpblN0bXQgQ3JlYXRlRXh0ZW5zaW9uU3RtdCBDcmVhdGVHcm91cFN0bXQgQ3Jl YXRlT3BDbGFzc1N0bXQKIAkJQ3JlYXRlT3BGYW1pbHlTdG10IEFsdGVyT3BGYW1pbHlTdG10IENy ZWF0ZVBMYW5nU3RtdAotCQlDcmVhdGVTY2hlbWFTdG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3Rt dCBDcmVhdGVTdGF0c1N0bXQgQ3JlYXRlVGFibGVTcGFjZVN0bXQKLQkJQ3JlYXRlRmR3U3RtdCBD cmVhdGVGb3JlaWduU2VydmVyU3RtdCBDcmVhdGVGb3JlaWduVGFibGVTdG10CisJCUNyZWF0ZVNj aGVtYVN0bXQgQ3JlYXRlU2Vzc2lvblZhclN0bXQgQ3JlYXRlU2VxU3RtdCBDcmVhdGVTdG10IENy ZWF0ZVN0YXRzU3RtdAorCQlDcmVhdGVUYWJsZVNwYWNlU3RtdCBDcmVhdGVGZHdTdG10IENyZWF0 ZUZvcmVpZ25TZXJ2ZXJTdG10IENyZWF0ZUZvcmVpZ25UYWJsZVN0bXQKIAkJQ3JlYXRlQXNzZXJ0 aW9uU3RtdCBDcmVhdGVUcmFuc2Zvcm1TdG10IENyZWF0ZVRyaWdTdG10IENyZWF0ZUV2ZW50VHJp Z1N0bXQKIAkJQ3JlYXRlVXNlclN0bXQgQ3JlYXRlVXNlck1hcHBpbmdTdG10IENyZWF0ZVJvbGVT dG10IENyZWF0ZVBvbGljeVN0bXQKIAkJQ3JlYXRlZGJTdG10IERlY2xhcmVDdXJzb3JTdG10IERl ZmluZVN0bXQgRGVsZXRlU3RtdCBEaXNjYXJkU3RtdCBEb1N0bXQKQEAgLTQ3Myw2ICs0NzQsNyBA QCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlz dCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPGl2YWw+CSBPcHRUZW1wCiAldHlwZSA8 aXZhbD4JIE9wdE5vTG9nCiAldHlwZSA8b25jb21taXQ+IE9uQ29tbWl0T3B0aW9uCisldHlwZSA8 aXZhbD4JIE9uRU9YQWN0aW9uT3B0aW9uCiAKICV0eXBlIDxpdmFsPglmb3JfbG9ja2luZ19zdHJl bmd0aAogJXR5cGUgPG5vZGU+CWZvcl9sb2NraW5nX2l0ZW0KQEAgLTY0Miw2ICs2NDQsOCBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAq YWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPHBhcnRib3VuZHNwZWM+IFBhcnRpdGlvbkJv dW5kU3BlYwogJXR5cGUgPGxpc3Q+CQloYXNoX3BhcnRib3VuZAogJXR5cGUgPGRlZmVsdD4JCWhh c2hfcGFydGJvdW5kX2VsZW0KKyV0eXBlIDxub2RlPgkJT3B0U2Vzc2lvblZhckRlZkV4cHIKKyV0 eXBlIDxib29sZWFuPgkJT3B0Tm90TnVsbCBPcHRJbW11dGFibGUKIAogCiAvKgpAQCAtNzUyLDgg Kzc1Niw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJVUVTQ0FQRSBVTkJPVU5ERUQgVU5D T01NSVRURUQgVU5FTkNSWVBURUQgVU5JT04gVU5JUVVFIFVOS05PV04KIAlVTkxJU1RFTiBVTkxP R0dFRCBVTlRJTCBVUERBVEUgVVNFUiBVU0lORwogCi0JVkFDVVVNIFZBTElEIFZBTElEQVRFIFZB TElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBRElDIFZBUllJTkcKLQlWRVJCT1NF IFZFUlNJT05fUCBWSUVXIFZJRVdTIFZPTEFUSUxFCisJVkFDVVVNIFZBTElEIFZBTElEQVRFIFZB TElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBQkxFIFZBUklBQkxFUworCVZBUklB RElDIFZBUllJTkcgVkVSQk9TRSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElMRQogCiAJV0hF TiBXSEVSRSBXSElURVNQQUNFX1AgV0lORE9XIFdJVEggV0lUSElOIFdJVEhPVVQgV09SSyBXUkFQ UEVSIFdSSVRFCiAKQEAgLTEwMDAsNiArMTAwNCw3IEBAIHN0bXQ6CiAJCQl8IENyZWF0ZVBvbGlj eVN0bXQKIAkJCXwgQ3JlYXRlUExhbmdTdG10CiAJCQl8IENyZWF0ZVNjaGVtYVN0bXQKKwkJCXwg Q3JlYXRlU2Vzc2lvblZhclN0bXQKIAkJCXwgQ3JlYXRlU2VxU3RtdAogCQkJfCBDcmVhdGVTdG10 CiAJCQl8IENyZWF0ZVN1YnNjcmlwdGlvblN0bXQKQEAgLTE1NDQsNiArMTU0OSw3IEBAIHNjaGVt YV9zdG10OgogCQkJfCBDcmVhdGVUcmlnU3RtdAogCQkJfCBHcmFudFN0bXQKIAkJCXwgVmlld1N0 bXQKKwkJCXwgQ3JlYXRlU2Vzc2lvblZhclN0bXQKIAkJOwogCiAKQEAgLTUwMDksNiArNTAxNSw2 OSBAQCBjcmVhdGVfZXh0ZW5zaW9uX29wdF9pdGVtOgogCQkJCX0KIAkJOwogCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqCisgKgkJUVVFUlkgOgorICoJCQkJQ1JFQVRFIFZBUklBQkxFIHZhcm5h bWUgW0FTXSB0eXBlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitDcmVhdGVTZXNzaW9u VmFyU3RtdDoKKwkJCUNSRUFURSBPcHRUZW1wIE9wdEltbXV0YWJsZSBWQVJJQUJMRSBxdWFsaWZp ZWRfbmFtZSBvcHRfYXMgVHlwZW5hbWUgb3B0X2NvbGxhdGVfY2xhdXNlIE9wdE5vdE51bGwgT3B0 U2Vzc2lvblZhckRlZkV4cHIgT25FT1hBY3Rpb25PcHRpb24KKwkJCQl7CisJCQkJCUNyZWF0ZVNl c3Npb25WYXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlU2Vzc2lvblZhclN0bXQpOworCQkJCQkk NS0+cmVscGVyc2lzdGVuY2UgPSAkMjsKKwkJCQkJbi0+aXNfaW1tdXRhYmxlID0gJDM7CisJCQkJ CW4tPnZhcmlhYmxlID0gJDU7CisJCQkJCW4tPnR5cGVOYW1lID0gJDc7CisJCQkJCW4tPmNvbGxD bGF1c2UgPSAoQ29sbGF0ZUNsYXVzZSAqKSAkODsKKwkJCQkJbi0+aXNfbm90X251bGwgPSAkOTsK KwkJCQkJbi0+ZGVmZXhwciA9ICQxMDsKKwkJCQkJbi0+ZW94YWN0aW9uID0gJDExOworCQkJCQlu LT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJ CQl8IENSRUFURSBPcHRUZW1wIE9wdEltbXV0YWJsZSBWQVJJQUJMRSBJRl9QIE5PVCBFWElTVFMg cXVhbGlmaWVkX25hbWUgb3B0X2FzIFR5cGVuYW1lIG9wdF9jb2xsYXRlX2NsYXVzZSBPcHROb3RO dWxsIE9wdFNlc3Npb25WYXJEZWZFeHByIE9uRU9YQWN0aW9uT3B0aW9uCisJCQkJeworCQkJCQlD cmVhdGVTZXNzaW9uVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNlc3Npb25WYXJTdG10KTsK KwkJCQkJJDgtPnJlbHBlcnNpc3RlbmNlID0gJDI7CisJCQkJCW4tPmlzX2ltbXV0YWJsZSA9ICQz OworCQkJCQluLT52YXJpYWJsZSA9ICQ4OworCQkJCQluLT50eXBlTmFtZSA9ICQxMDsKKwkJCQkJ bi0+Y29sbENsYXVzZSA9IChDb2xsYXRlQ2xhdXNlICopICQxMTsKKwkJCQkJbi0+aXNfbm90X251 bGwgPSAkMTI7CisJCQkJCW4tPmRlZmV4cHIgPSAkMTM7CisJCQkJCW4tPmVveGFjdGlvbiA9ICQx NDsKKwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKikgbjsK KwkJCQl9CisJCTsKKworT3B0U2Vzc2lvblZhckRlZkV4cHI6IERFRkFVTFQgYl9leHByCQkJCQl7 ICQkID0gJDI7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOwor CisvKgorICogVGVtcG9yYXJ5IHNlc3Npb24gdmFyaWFibGVzIGNhbiBiZSBkcm9wcGVkIG9uIHN1 Y2Nlc3NmdWwKKyAqIHRyYW5zYWN0aW9uIGVuZCBsaWtlIHRhYmxlcy4gIFJFU0VUIGNhbiBvbmx5 IGJlIGZvcmNlZCBvbgorICogdHJhbnNhY3Rpb24gZW5kLiBTaW5jZSB0aGUgc2Vzc2lvbiB2YXJp YWJsZXMgYXJlIG5vdAorICogdHJhbnNhY3Rpb25hbCwgd2UgaGF2ZSB0byBoYW5kbGUgUk9MTEJB Q0sgdG9vLgorICogVGhlIGNsYXVzZSBPTiBUUkFOU0FDVElPTiBFTkQgaXMgY2xlYXJlciB0aGFu IHNvbWUKKyAqIE9OIENPTU1JVCBST0xMQkFDSyBSRVNFVCBjbGF1c2UuCisgKi8KK09uRU9YQWN0 aW9uT3B0aW9uOiAgT04gQ09NTUlUIERST1AJCQkJCXsgJCQgPSBWQVJJQUJMRV9FT1hfRFJPUDsg fQorCQkJfCBPTiBUUkFOU0FDVElPTiBFTkRfUCBSRVNFVAkJCXsgJCQgPSBWQVJJQUJMRV9FT1hf UkVTRVQ7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gVkFSSUFCTEVfRU9YX05PT1A7 IH0KKwkJOworCitPcHROb3ROdWxsOiBOT1QgTlVMTF9QCQkJCQkJCQl7ICQkID0gdHJ1ZTsgfQor CQkJfCAvKiBFTVBUWSAqLwkJCQkJCQl7ICQkID0gZmFsc2U7IH0KKwkJOworCitPcHRJbW11dGFi bGU6IElNTVVUQUJMRQkJCQkJCQkJeyAkJCA9IHRydWU7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJ CQkJeyAkJCA9IGZhbHNlOyB9CisJCTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICog QUxURVIgRVhURU5TSU9OIG5hbWUgVVBEQVRFIFsgVE8gdmVyc2lvbiBdCkBAIC02Nzg2LDYgKzY4 NTUsNyBAQCBvYmplY3RfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEVYVF9QIFNFQVJDSCBESUNUSU9O QVJZCQkJCXsgJCQgPSBPQkpFQ1RfVFNESUNUSU9OQVJZOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0gg VEVNUExBVEUJCQkJeyAkJCA9IE9CSkVDVF9UU1RFTVBMQVRFOyB9CiAJCQl8IFRFWFRfUCBTRUFS Q0ggQ09ORklHVVJBVElPTgkJCXsgJCQgPSBPQkpFQ1RfVFNDT05GSUdVUkFUSU9OOyB9CisJCQl8 IFZBUklBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJCTsKIAogLyoKQEAg LTc2NjksNiArNzczOSwxNCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCQluLT5vYmpzID0gJDI7 CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IFZBUklBQkxFIHF1YWxpZmllZF9uYW1lX2xpc3QK KwkJCQl7CisJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9m KFByaXZUYXJnZXQpKTsKKwkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsKKwkJ CQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqcyA9ICQyOworCQkJ CQkkJCA9IG47CisJCQkJfQogCQkJfCBBTEwgVEFCTEVTIElOX1AgU0NIRU1BIG5hbWVfbGlzdAog CQkJCXsKIAkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2Yo UHJpdlRhcmdldCkpOwpAQCAtNzcxNCw2ICs3NzkyLDE0IEBAIHByaXZpbGVnZV90YXJnZXQ6CiAJ CQkJCW4tPm9ianMgPSAkNTsKIAkJCQkJJCQgPSBuOwogCQkJCX0KKwkJCXwgQUxMIFZBUklBQkxF UyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKKwkJCQl7CisJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJp dlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJbi0+dGFyZ3R5cGUg PSBBQ0xfVEFSR0VUX0FMTF9JTl9TQ0hFTUE7CisJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfVkFS SUFCTEU7CisJCQkJCW4tPm9ianMgPSAkNTsKKwkJCQkJJCQgPSBuOworCQkJCX0KIAkJOwogCiAK QEAgLTc5MTEsNiArNzk5Nyw3IEBAIGRlZmFjbF9wcml2aWxlZ2VfdGFyZ2V0OgogCQkJfCBTRVFV RU5DRVMJCXsgJCQgPSBPQkpFQ1RfU0VRVUVOQ0U7IH0KIAkJCXwgVFlQRVNfUAkJeyAkJCA9IE9C SkVDVF9UWVBFOyB9CiAJCQl8IFNDSEVNQVMJCXsgJCQgPSBPQkpFQ1RfU0NIRU1BOyB9CisJCQl8 IFZBUklBQkxFUwkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAKIApAQCAtOTY5Myw2 ICs5NzgwLDI1IEBAIFJlbmFtZVN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9h cmd0eXBlcyBSRU5BTUUgVE8gbmFtZQogCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CiAJCQkJ CSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxFIGFueV9uYW1lIFJF TkFNRSBUTyBuYW1lCisJCQkJeworCQkJCQlSZW5hbWVTdG10ICpuID0gbWFrZU5vZGUoUmVuYW1l U3RtdCk7CisJCQkJCW4tPnJlbmFtZVR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9i amVjdCA9IChOb2RlICopICQzOworCQkJCQluLT5uZXduYW1lID0gJDY7CisJCQkJCW4tPm1pc3Np bmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBBTFRFUiBW QVJJQUJMRSBJRl9QIEVYSVNUUyBhbnlfbmFtZSBSRU5BTUUgVE8gbmFtZQorCQkJCXsKKwkJCQkJ UmVuYW1lU3RtdCAqbiA9IG1ha2VOb2RlKFJlbmFtZVN0bXQpOworCQkJCQluLT5yZW5hbWVUeXBl ID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkNTsKKwkJCQkJ bi0+bmV3bmFtZSA9ICQ4OworCQkJCQluLT5taXNzaW5nX29rID0gdHJ1ZTsKKwkJCQkJJCQgPSAo Tm9kZSAqKW47CisJCQkJfQorCiAJCTsKIAogb3B0X2NvbHVtbjogQ09MVU1OCkBAIC0xMDA1NCw2 ICsxMDE2MCwyNSBAQCBBbHRlck9iamVjdFNjaGVtYVN0bXQ6CiAJCQkJCW4tPm1pc3Npbmdfb2sg PSBmYWxzZTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFC TEUgYW55X25hbWUgU0VUIFNDSEVNQSBuYW1lCisJCQkJeworCQkJCQlBbHRlck9iamVjdFNjaGVt YVN0bXQgKm4gPSBtYWtlTm9kZShBbHRlck9iamVjdFNjaGVtYVN0bXQpOworCQkJCQluLT5vYmpl Y3RUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkMzsK KwkJCQkJbi0+bmV3c2NoZW1hID0gJDY7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJ CQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBJRl9QIEVYSVNU UyBhbnlfbmFtZSBTRVQgU0NIRU1BIG5hbWUKKwkJCQl7CisJCQkJCUFsdGVyT2JqZWN0U2NoZW1h U3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyT2JqZWN0U2NoZW1hU3RtdCk7CisJCQkJCW4tPm9iamVj dFR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9iamVjdCA9IChOb2RlICopICQ1Owor CQkJCQluLT5uZXdzY2hlbWEgPSAkODsKKwkJCQkJbi0+bWlzc2luZ19vayA9IHRydWU7CisJCQkJ CSQkID0gKE5vZGUgKiluOworCQkJCX0KKwogCQk7CiAKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpA QCAtMTAzMzMsNiArMTA0NTgsMTQgQEAgQWx0ZXJPd25lclN0bXQ6IEFMVEVSIEFHR1JFR0FURSBh Z2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBPV05FUiBUTyBSb2xlU3BlYwogCQkJCQluLT5uZXdvd25l ciA9ICQ2OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJfCBBTFRFUiBWQVJJQUJM RSBhbnlfbmFtZSBPV05FUiBUTyBSb2xlU3BlYworCQkJCXsKKwkJCQkJQWx0ZXJPd25lclN0bXQg Km4gPSBtYWtlTm9kZShBbHRlck93bmVyU3RtdCk7CisJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpF Q1RfVkFSSUFCTEU7CisJCQkJCW4tPm9iamVjdCA9IChOb2RlICopICQzOworCQkJCQluLT5uZXdv d25lciA9ICQ2OworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CiAJCTsKIAogCkBAIC0xNjk5 Miw2ICsxNzEyNSw4IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgVkFMSURBVEUKIAkJCXwg VkFMSURBVE9SCiAJCQl8IFZBTFVFX1AKKwkJCXwgVkFSSUFCTEUKKwkJCXwgVkFSSUFCTEVTCiAJ CQl8IFZBUllJTkcKIAkJCXwgVkVSU0lPTl9QCiAJCQl8IFZJRVcKQEAgLTE3NjAzLDYgKzE3NzM4 LDggQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBWQUxVRV9QCiAJCQl8IFZBTFVFUwogCQkJ fCBWQVJDSEFSCisJCQl8IFZBUklBQkxFCisJCQl8IFZBUklBQkxFUwogCQkJfCBWQVJJQURJQwog CQkJfCBWRVJCT1NFCiAJCQl8IFZFUlNJT05fUApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2FnZy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IDNl ZjllOGVlNWUuLmRiZTYzMGE1MWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9hZ2cuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKQEAgLTQ3MSw2ICs0 NzEsNyBAQCBjaGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqZXhwcikKIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVM VDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKKwkJY2FzZSBFWFBSX0tJTkRf VkFSSUFCTEVfREVGQVVMVDoKIAogCQkJaWYgKGlzQWdnKQogCQkJCWVyciA9IF8oImFnZ3JlZ2F0 ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKQEAg LTkxNSw2ICs5MTYsNyBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpwc3Rh dGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVN Tl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQljYXNlIEVY UFJfS0lORF9WQVJJQUJMRV9ERUZBVUxUOgogCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBh cmUgbm90IGFsbG93ZWQgaW4gREVGQVVMVCBleHByZXNzaW9ucyIpOwogCQkJYnJlYWs7CiAJCWNh c2UgRVhQUl9LSU5EX0lOREVYX0VYUFJFU1NJT046CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRl eCAxNTBhODA5OWMyLi4xYmI4YzVhODUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTE2 LDYgKzE2LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2RiY29tbWFuZHMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJu b2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTQ5OCw2ICs0OTksOCBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYo UGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJCWNhc2UgRVhQUl9LSU5EX0NP UFlfV0hFUkU6CiAJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU46CiAJCWNhc2UgRVhQ Ul9LSU5EX0NZQ0xFX01BUks6CisJCWNhc2UgRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CisK IAkJCS8qIG9rYXkgKi8KIAkJCWJyZWFrOwogCkBAIC0xNzE5LDYgKzE3MjIsNyBAQCB0cmFuc2Zv cm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJCWJyZWFr OwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVO Q1RJT05fREVGQVVMVDoKKwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVDoKIAkJCWVy ciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gREVGQVVMVCBleHByZXNzaW9uIik7CiAJCQli cmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfSU5ERVhfRVhQUkVTU0lPTjoKQEAgLTMwMDYsNiArMzAx MCw3IEBAIFBhcnNlRXhwcktpbmROYW1lKFBhcnNlRXhwcktpbmQgZXhwcktpbmQpCiAJCQlyZXR1 cm4gIkNIRUNLIjsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQ Ul9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNhc2UgRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFV TFQ6CiAJCQlyZXR1cm4gIkRFRkFVTFQiOwogCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNT SU9OOgogCQkJcmV0dXJuICJpbmRleCBleHByZXNzaW9uIjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5j CmluZGV4IDgyNzk4OWYzNzkuLjAwNWJjMDQwMGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpA QCAtMjYyMSw2ICsyNjIxLDcgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3RhdGUg KnBzdGF0ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJCWJyZWFrOwogCQljYXNl IEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVG QVVMVDoKKwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVDoKIAkJCWVyciA9IF8oInNl dC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZBVUxUIGV4cHJlc3Np b25zIik7CiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfSU5ERVhfRVhQUkVTU0lPTjoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IDM2NzkxZDg4MTcuLmI2MWMzNjI1M2MgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMTA3LDYgKzEwNyw3IEBAIHR5cGVkZWYg c3RydWN0CiAJTGlzdAkgICAqaW5kZXhlczsJCS8qIENSRUFURSBJTkRFWCBpdGVtcyAqLwogCUxp c3QJICAgKnRyaWdnZXJzOwkJLyogQ1JFQVRFIFRSSUdHRVIgaXRlbXMgKi8KIAlMaXN0CSAgICpn cmFudHM7CQkJLyogR1JBTlQgaXRlbXMgKi8KKwlMaXN0CSAgICp2YXJpYWJsZXM7CQkvKiBDUkVB VEUgVkFSSUFCTEUgaXRlbXMgKi8KIH0gQ3JlYXRlU2NoZW1hU3RtdENvbnRleHQ7CiAKIApAQCAt Mzg0MCw2ICszODQxLDcgQEAgdHJhbnNmb3JtQ3JlYXRlU2NoZW1hU3RtdChDcmVhdGVTY2hlbWFT dG10ICpzdG10KQogCWN4dC5pbmRleGVzID0gTklMOwogCWN4dC50cmlnZ2VycyA9IE5JTDsKIAlj eHQuZ3JhbnRzID0gTklMOworCWN4dC52YXJpYWJsZXMgPSBOSUw7CiAKIAkvKgogCSAqIFJ1biB0 aHJvdWdoIGVhY2ggc2NoZW1hIGVsZW1lbnQgaW4gdGhlIHNjaGVtYSBlbGVtZW50IGxpc3QuIFNl cGFyYXRlCkBAIC0zOTA4LDYgKzM5MTAsMTUgQEAgdHJhbnNmb3JtQ3JlYXRlU2NoZW1hU3RtdChD cmVhdGVTY2hlbWFTdG10ICpzdG10KQogCQkJCWN4dC5ncmFudHMgPSBsYXBwZW5kKGN4dC5ncmFu dHMsIGVsZW1lbnQpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIFRfQ3JlYXRlU2Vzc2lvblZhclN0 bXQ6CisJCQkJeworCQkJCQlDcmVhdGVTZXNzaW9uVmFyU3RtdCAqZWxwID0gKENyZWF0ZVNlc3Np b25WYXJTdG10ICopIGVsZW1lbnQ7CisKKwkJCQkJc2V0U2NoZW1hTmFtZShjeHQuc2NoZW1hbmFt ZSwgJmVscC0+dmFyaWFibGUtPnNjaGVtYW5hbWUpOworCQkJCQljeHQudmFyaWFibGVzID0gbGFw cGVuZChjeHQudmFyaWFibGVzLCBlbGVtZW50KTsKKwkJCQl9CisJCQkJYnJlYWs7CisKIAkJCWRl ZmF1bHQ6CiAJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwKIAkJ CQkJIChpbnQpIG5vZGVUYWcoZWxlbWVudCkpOwpAQCAtMzkyMSw2ICszOTMyLDcgQEAgdHJhbnNm b3JtQ3JlYXRlU2NoZW1hU3RtdChDcmVhdGVTY2hlbWFTdG10ICpzdG10KQogCXJlc3VsdCA9IGxp c3RfY29uY2F0KHJlc3VsdCwgY3h0LmluZGV4ZXMpOwogCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJl c3VsdCwgY3h0LnRyaWdnZXJzKTsKIAlyZXN1bHQgPSBsaXN0X2NvbmNhdChyZXN1bHQsIGN4dC5n cmFudHMpOworCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJlc3VsdCwgY3h0LnZhcmlhYmxlcyk7CiAK IAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5 LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCAyNDdkMDgxNmFkLi5kMWE3ZDk5 NWUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFj a2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgImNvbW1hbmRz L3Byb2NsYW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvc2NoZW1hY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Nlc3Npb25f dmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZWNsYWJlbC5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5o IgpAQCAtMTg5LDYgKzE5MCw3IEBAIENsYXNzaWZ5VXRpbGl0eUNvbW1hbmRBc1JlYWRPbmx5KE5v ZGUgKnBhcnNldHJlZSkKIAkJY2FzZSBUX0NyZWF0ZVJhbmdlU3RtdDoKIAkJY2FzZSBUX0NyZWF0 ZVJvbGVTdG10OgogCQljYXNlIFRfQ3JlYXRlU2NoZW1hU3RtdDoKKwkJY2FzZSBUX0NyZWF0ZVNl c3Npb25WYXJTdG10OgogCQljYXNlIFRfQ3JlYXRlU2VxU3RtdDoKIAkJY2FzZSBUX0NyZWF0ZVN0 YXRzU3RtdDoKIAkJY2FzZSBUX0NyZWF0ZVN0bXQ6CkBAIC0xMzkzLDYgKzEzOTUsMTAgQEAgUHJv Y2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQl9CiAJCQkJYnJlYWs7CiAK KwkJCWNhc2UgVF9DcmVhdGVTZXNzaW9uVmFyU3RtdDoKKwkJCQlhZGRyZXNzID0gQ3JlYXRlVmFy aWFibGUocHN0YXRlLCAoQ3JlYXRlU2Vzc2lvblZhclN0bXQgKikgcGFyc2V0cmVlKTsKKwkJCQli cmVhazsKKwogCQkJCS8qCiAJCQkJICogKioqKioqKioqKioqKiBvYmplY3QgY3JlYXRpb24gLyBk ZXN0cnVjdGlvbiAqKioqKioqKioqKioqKgogCQkJCSAqLwpAQCAtMjMzMiw2ICsyMzM4LDkgQEAg QWx0ZXJPYmplY3RUeXBlQ29tbWFuZFRhZyhPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JK RUNUX1NUQVRJU1RJQ19FWFQ6CiAJCQl0YWcgPSBDTURUQUdfQUxURVJfU1RBVElTVElDUzsKIAkJ CWJyZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXRhZyA9IENNRFRBR19BTFRFUl9W QVJJQUJMRTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJdGFnID0gQ01EVEFHX1VOS05PV047 CiAJCQlicmVhazsKQEAgLTI2NDAsNiArMjY0OSw5IEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAq cGFyc2V0cmVlKQogCQkJCWNhc2UgT0JKRUNUX1NUQVRJU1RJQ19FWFQ6CiAJCQkJCXRhZyA9IENN RFRBR19EUk9QX1NUQVRJU1RJQ1M7CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgT0JKRUNUX1ZBUklB QkxFOgorCQkJCQl0YWcgPSBDTURUQUdfRFJPUF9WQVJJQUJMRTsKKwkJCQkJYnJlYWs7CiAJCQkJ ZGVmYXVsdDoKIAkJCQkJdGFnID0gQ01EVEFHX1VOS05PV047CiAJCQl9CkBAIC0zMjE2LDYgKzMy MjgsMTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl9CiAJCQlicmVh azsKIAorCQljYXNlIFRfQ3JlYXRlU2Vzc2lvblZhclN0bXQ6CisJCQl0YWcgPSBDTURUQUdfQ1JF QVRFX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coV0FSTklORywg InVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgbm9kZVRhZyhwYXJzZXRy ZWUpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9hY2wuYwppbmRleCBlZDFiNmE0MWNmLi5lN2MzNzhmYWY4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2FjbC5jCkBAIC04MTksNiArODE5LDEwIEBAIGFjbGRlZmF1bHQoT2JqZWN0VHlwZSBvYmp0 eXBlLCBPaWQgb3duZXJJZCkKIAkJCXdvcmxkX2RlZmF1bHQgPSBBQ0xfTk9fUklHSFRTOwogCQkJ b3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1BBUkFNRVRFUl9BQ0w7CiAJCQlicmVhazsK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX05PX1JJR0hU UzsKKwkJCW93bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWJyZWFr OwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvYmplY3QgdHlwZTog JWQiLCAoaW50KSBvYmp0eXBlKTsKIAkJCXdvcmxkX2RlZmF1bHQgPSBBQ0xfTk9fUklHSFRTOwkv KiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC05MTYsNiArOTIwLDkgQEAgYWNsZGVmYXVsdF9z cWwoUEdfRlVOQ1RJT05fQVJHUykKIAkJY2FzZSAnVCc6CiAJCQlvYmp0eXBlID0gT0JKRUNUX1RZ UEU7CiAJCQlicmVhazsKKwkJY2FzZSAnVic6CisJCQlvYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxF OworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9i amVjdCB0eXBlIGFiYnJldmlhdGlvbjogJWMiLCBvYmp0eXBlYyk7CiAJfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9sc3lzY2FjaGUuYwppbmRleCA5NGNhOGUxMjMwLi5lZTQ4ZTVhMDRjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgImNhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmFuc2Zvcm0uaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Zhcmlh YmxlLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNz LmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKQEAgLTM2ODMsMyArMzY4NCwxMTUgQEAgZ2V0 X3N1YnNjcmlwdGlvbl9uYW1lKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKQogCiAJcmV0dXJu IHN1Ym5hbWU7CiB9CisKKy8qCQkJCS0tLS0tLS0tLS0gUEdfVkFSSUFCTEUgQ0FDSEUgLS0tLS0t LS0tLQkJCQkgKi8KKworLyoKKyAqIGdldF92YXJuYW1lX3ZhcmlkCisgKgkJR2l2ZW4gbmFtZSBh bmQgbmFtZXNwYWNlIG9mIHZhcmlhYmxlLCBsb29rIHVwIHRoZSBPSUQuCisgKi8KK09pZAorZ2V0 X3Zhcm5hbWVfdmFyaWQoY29uc3QgY2hhciAqdmFybmFtZSwgT2lkIHZhcm5hbWVzcGFjZSkKK3sK KwlyZXR1cm4gR2V0U3lzQ2FjaGVPaWQyKFZBUklBQkxFTkFNRU5TUCwgQW51bV9wZ192YXJpYWJs ZV9vaWQsCisJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0odmFybmFtZSksCisJCQkJCQkgICBPYmpl Y3RJZEdldERhdHVtKHZhcm5hbWVzcGFjZSkpOworfQorCisvKgorICogZ2V0X3Nlc3Npb25fdmFy aWFibGVfbmFtZQorICoJCVJldHVybnMgYSBwYWxsb2MnZCBjb3B5IG9mIHRoZSBuYW1lIG9mIGEg Z2l2ZW4gc2Vzc2lvbiB2YXJpYWJsZS4KKyAqLworY2hhciAqCitnZXRfc2Vzc2lvbl92YXJpYWJs ZV9uYW1lKE9pZCB2YXJpZCkKK3sKKwlIZWFwVHVwbGUJdHVwOworCUZvcm1fcGdfdmFyaWFibGUg dmFyZm9ybTsKKwljaGFyCSAgICp2YXJuYW1lOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZB UklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNlc3Np b24gdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFibGUp IEdFVFNUUlVDVCh0dXApOworCisJdmFybmFtZSA9IHBzdHJkdXAoTmFtZVN0cih2YXJmb3JtLT52 YXJuYW1lKSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybiB2YXJuYW1lOwor fQorCisvKgorICogZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNwYWNlCisgKgkJUmV0dXJucyB0 aGUgcGdfbmFtZXNwYWNlIE9JRCBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBzZXNzaW9uIHZhcmlh YmxlLgorICovCitPaWQKK2dldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWVzcGFjZShPaWQgdmFyaWQp Cit7CisJSGVhcFR1cGxlCXR1cDsKKwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm07CisJT2lkCQkJ dmFybmFtZXNwYWNlOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmpl Y3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJ ZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQp OworCisJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZh cm5hbWVzcGFjZSA9IHZhcmZvcm0tPnZhcm5hbWVzcGFjZTsKKworCVJlbGVhc2VTeXNDYWNoZSh0 dXApOworCisJcmV0dXJuIHZhcm5hbWVzcGFjZTsKK30KKworLyoKKyAqIFJldHVybnMgdGhlIHR5 cGUsIHR5cG1vZCBhbmQgY29sbGlkIG9mIHRoZSBnaXZlbiBzZXNzaW9uIHZhcmlhYmxlLgorICov CitPaWQKK2dldF9zZXNzaW9uX3ZhcmlhYmxlX3R5cGUoT2lkIHZhcmlkKQoreworCUhlYXBUdXBs ZQl0dXA7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOworCU9pZAkJCXZhcnR5cGU7CisKKwl0 dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQp KTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3Igc2Vzc2lvbiB2YXJpYWJsZSAldSIsIHZhcmlkKTsKKworCXZhcmZv cm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwl2YXJ0eXBlID0gdmFy Zm9ybS0+dmFydHlwZTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0dXJuIHZhcnR5 cGU7Cit9CisKKy8qCisgKiBSZXR1cm5zIHRoZSB0eXBlLCB0eXBtb2QgYW5kIGNvbGxpZCBvZiB0 aGUgZ2l2ZW4gc2Vzc2lvbiB2YXJpYWJsZS4KKyAqLwordm9pZAorZ2V0X3Nlc3Npb25fdmFyaWFi bGVfdHlwZV90eXBtb2RfY29sbGlkKE9pZCB2YXJpZCwgT2lkICp0eXBpZCwgaW50MzIgKnR5cG1v ZCwKKwkJCQkJCQkJCQlPaWQgKmNvbGxpZCkKK3sKKwlIZWFwVHVwbGUJdHVwOworCUZvcm1fcGdf dmFyaWFibGUgdmFyZm9ybTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwg T2JqZWN0SWRHZXREYXR1bSh2YXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkp CisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzZXNzaW9uIHZhcmlhYmxl ICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1Qo dHVwKTsKKworCSp0eXBpZCA9IHZhcmZvcm0tPnZhcnR5cGU7CisJKnR5cG1vZCA9IHZhcmZvcm0t PnZhcnR5cG1vZDsKKwkqY29sbGlkID0gdmFyZm9ybS0+dmFyY29sbGF0aW9uOworCisJUmVsZWFz ZVN5c0NhY2hlKHR1cCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9z eXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYwppbmRleCBlZWM2 NDRlYzg0Li5iNmQ3NTZhMDU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9z eXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKQEAgLTc1 LDYgKzc1LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAibGliL3F1bmlx dWUuaCIKICNpbmNsdWRlICJ1dGlscy9jYXRjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5o IgpAQCAtMTAzNyw2ICsxMDM4LDI4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FjaGVkZXNjIGNh Y2hlaW5mb1tdID0gewogCQkJMAogCQl9LAogCQkyCisJfSwKKwl7VmFyaWFibGVSZWxhdGlvbklk LAkJLyogVkFSSUFCTEVOQU1FTlNQICovCisJCVZhcmlhYmxlTmFtZU5zcEluZGV4SWQsCisJCTIs CisJCXsKKwkJCUFudW1fcGdfdmFyaWFibGVfdmFybmFtZSwKKwkJCUFudW1fcGdfdmFyaWFibGVf dmFybmFtZXNwYWNlLAorCQkJMCwKKwkJCTAKKwkJfSwKKwkJOAorCX0sCisJe1ZhcmlhYmxlUmVs YXRpb25JZCwJCS8qIFZBUklBQkxFT0lEICovCisJCVZhcmlhYmxlT2JqZWN0SW5kZXhJZCwKKwkJ MSwKKwkJeworCQkJQW51bV9wZ192YXJpYWJsZV9vaWQsCisJCQkwLAorCQkJMCwKKwkJCTAKKwkJ fSwKKwkJOAogCX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5k ZW5jeS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKaW5kZXggOThhMWE4NDI4 OS4uODRhODUxYmZhNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5 LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKQEAgLTEyNywxMCArMTI3 LDExIEBAIHR5cGVkZWYgZW51bSBPYmplY3RDbGFzcwogCU9DTEFTU19QVUJMSUNBVElPTl9OQU1F U1BBQ0UsCS8qIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSAqLwogCU9DTEFTU19QVUJMSUNBVElP Tl9SRUwsCQkvKiBwZ19wdWJsaWNhdGlvbl9yZWwgKi8KIAlPQ0xBU1NfU1VCU0NSSVBUSU9OLAkJ LyogcGdfc3Vic2NyaXB0aW9uICovCi0JT0NMQVNTX1RSQU5TRk9STQkJCS8qIHBnX3RyYW5zZm9y bSAqLworCU9DTEFTU19UUkFOU0ZPUk0sCQkJLyogcGdfdHJhbnNmb3JtICovCisJT0NMQVNTX1ZB UklBQkxFCQkJCS8qIHBnX3ZhcmlhYmxlICovCiB9IE9iamVjdENsYXNzOwogCi0jZGVmaW5lIExB U1RfT0NMQVNTCQlPQ0xBU1NfVFJBTlNGT1JNCisjZGVmaW5lIExBU1RfT0NMQVNTCQlPQ0xBU1Nf VkFSSUFCTEUKIAogLyogZmxhZyBiaXRzIGZvciBwZXJmb3JtRGVsZXRpb24vcGVyZm9ybU11bHRp cGxlRGVsZXRpb25zOiAqLwogI2RlZmluZSBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMCQkJMHgw MDAxCS8qIGludGVybmFsIGFjdGlvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9tZXNvbi5idWlsZCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKaW5kZXggNDVm ZmE5OTY5Mi4uZDA0MWQ3MjhmYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNv bi5idWlsZAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkCkBAIC02Myw2ICs2 Myw3IEBAIGNhdGFsb2dfaGVhZGVycyA9IFsKICAgJ3BnX3B1YmxpY2F0aW9uX3JlbC5oJywKICAg J3BnX3N1YnNjcmlwdGlvbi5oJywKICAgJ3BnX3N1YnNjcmlwdGlvbl9yZWwuaCcsCisgICdwZ192 YXJpYWJsZS5oJywKIF0KIAogYmtpX2RhdGEgPSBbCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL25hbWVzcGFjZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaAppbmRl eCAyYTJhMmU2NDg5Li44NDdjOWZhNmEwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L25hbWVzcGFjZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmgKQEAgLTk2 LDYgKzk2LDggQEAgZXh0ZXJuIE9pZAlUeXBlbmFtZUdldFR5cGlkKGNvbnN0IGNoYXIgKnR5cG5h bWUpOwogZXh0ZXJuIE9pZAlUeXBlbmFtZUdldFR5cGlkRXh0ZW5kZWQoY29uc3QgY2hhciAqdHlw bmFtZSwgYm9vbCB0ZW1wX29rKTsKIGV4dGVybiBib29sIFR5cGVJc1Zpc2libGUoT2lkIHR5cGlk KTsKIAorZXh0ZXJuIGJvb2wgVmFyaWFibGVJc1Zpc2libGUoT2lkIHZhcmlkKTsKKwogZXh0ZXJu IEZ1bmNDYW5kaWRhdGVMaXN0IEZ1bmNuYW1lR2V0Q2FuZGlkYXRlcyhMaXN0ICpuYW1lcywKIAkJ CQkJCQkJCQkJICAgaW50IG5hcmdzLCBMaXN0ICphcmduYW1lcywKIAkJCQkJCQkJCQkJICAgYm9v bCBleHBhbmRfdmFyaWFkaWMsCkBAIC0xNjQsNiArMTY2LDkgQEAgZXh0ZXJuIHZvaWQgU2V0VGVt cE5hbWVzcGFjZVN0YXRlKE9pZCB0ZW1wTmFtZXNwYWNlSWQsCiAJCQkJCQkJCSAgT2lkIHRlbXBU b2FzdE5hbWVzcGFjZUlkKTsKIGV4dGVybiB2b2lkIFJlc2V0VGVtcFRhYmxlTmFtZXNwYWNlKHZv aWQpOwogCitleHRlcm4gT2lkCUxvb2t1cFZhcmlhYmxlKGNvbnN0IGNoYXIgKm5zcG5hbWUsIGNv bnN0IGNoYXIgKnZhcm5hbWUsIGJvb2wgcm93dHlwZV9vbmx5LAorCQkJCQkJICAgYm9vbCBtaXNz aW5nX29rKTsKKwogZXh0ZXJuIE92ZXJyaWRlU2VhcmNoUGF0aCAqR2V0T3ZlcnJpZGVTZWFyY2hQ YXRoKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBleHRlcm4gT3ZlcnJpZGVTZWFyY2hQYXRoICpD b3B5T3ZlcnJpZGVTZWFyY2hQYXRoKE92ZXJyaWRlU2VhcmNoUGF0aCAqcGF0aCk7CiBleHRlcm4g Ym9vbCBPdmVycmlkZVNlYXJjaFBhdGhNYXRjaGVzQ3VycmVudChPdmVycmlkZVNlYXJjaFBhdGgg KnBhdGgpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oCmluZGV4IDJhNzkxNTU2MzYu LjY3MmM1NzE1NjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9h Y2wuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmgKQEAgLTY2LDYg KzY2LDcgQEAgREVDTEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19kZWZhdWx0X2FjbF9vaWRfaW5k ZXgsIDgyOCwgRGVmYXVsdEFjbE9pZEluZGV4SWQsIG8KICNkZWZpbmUgREVGQUNMT0JKX0ZVTkNU SU9OCQknZicgLyogZnVuY3Rpb24gKi8KICNkZWZpbmUgREVGQUNMT0JKX1RZUEUJCQknVCcgLyog dHlwZSAqLwogI2RlZmluZSBERUZBQ0xPQkpfTkFNRVNQQUNFCQknbicgLyogbmFtZXNwYWNlICov CisjZGVmaW5lIERFRkFDTE9CSl9WQVJJQUJMRQkJJ1YnIC8qIHZhcmlhYmxlICovCiAKICNlbmRp ZgkJCQkJCQkvKiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKaW5kZXggZjkzMDFiMjYyNy4uNzdkZGMzZTc3OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CkBAIC02MzA4LDYgKzYzMDgsOSBAQAogICBwcm9uYW1lID0+ICdwZ19jb2xsYXRpb25faXNfdmlz aWJsZScsIHByb2Nvc3QgPT4gJzEwJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9yZXR0eXBl ID0+ICdib29sJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfY29sbGF0 aW9uX2lzX3Zpc2libGUnIH0sCit7IG9pZCA9PiAnOTIyMScsIGRlc2NyID0+ICdpcyBzZXNzaW9u IHZhcmlhYmxlIHZpc2libGUgaW4gc2VhcmNoIHBhdGg/JywKKyAgcHJvbmFtZSA9PiAncGdfdmFy aWFibGVfaXNfdmlzaWJsZScsIHByb2Nvc3QgPT4gJzEwJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAor ICBwcm9yZXR0eXBlID0+ICdib29sJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsIHByb3NyYyA9PiAn cGdfdmFyaWFibGVfaXNfdmlzaWJsZScgfSwKIAogeyBvaWQgPT4gJzI4NTQnLCBkZXNjciA9PiAn Z2V0IE9JRCBvZiBjdXJyZW50IHNlc3Npb25cJ3MgdGVtcCBzY2hlbWEsIGlmIGFueScsCiAgIHBy b25hbWUgPT4gJ3BnX215X3RlbXBfc2NoZW1hJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJh bGxlbCA9PiAncicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxl LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uY2RlMzZiMGNlYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaApAQCAtMCwwICsxLDEyMCBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogcGdfdmFyaWFibGUuaAorICoJICBkZWZpbml0aW9uIG9mIHNlc3Np b24gdmFyaWFibGVzIHN5c3RlbSBjYXRhbG9nIChwZ192YXJpYWJsZXMpCisgKgorICoKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRo ZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3ZhcmlhYmxlLmgKKyAqCisgKiBOT1RFUworICoJICBUaGUgQ2F0YWxvZy5wbSBtb2R1bGUgcmVh ZHMgdGhpcyBmaWxlIGFuZCBkZXJpdmVzIHNjaGVtYQorICoJICBpbmZvcm1hdGlvbi4KKyAqCisg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQR19WQVJJQUJMRV9ICisjZGVmaW5lIFBH X1ZBUklBQkxFX0gKKworI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZV9kLmgi CisjaW5jbHVkZSAidXRpbHMvYWNsLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ192 YXJpYWJsZSBkZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bworICoJCXR5cGVkZWYgc3Ry dWN0IEZvcm1EYXRhX3BnX3ZhcmlhYmxlCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK0NBVEFM T0cocGdfdmFyaWFibGUsOTIyMixWYXJpYWJsZVJlbGF0aW9uSWQpCit7CisJT2lkCQkJb2lkOwkJ CS8qIG9pZCAqLworCisJLyogT0lEIG9mIGVudHJ5IGluIHBnX3R5cGUgZm9yIHZhcmlhYmxlJ3Mg dHlwZSAqLworCU9pZAkJCXZhcnR5cGUgQktJX0xPT0tVUChwZ190eXBlKTsKKworCS8qIFVzZWQg Zm9yIGlkZW50aXR5IGNoZWNrIFtvaWQsIGNyZWF0ZV9sc25dICovCisJWExvZ1JlY1B0cgljcmVh dGVfbHNuOworCisJLyogdmFyaWFibGUgbmFtZSAqLworCU5hbWVEYXRhCXZhcm5hbWU7CisKKwkv KiBPSUQgb2YgbmFtZXNwYWNlIGNvbnRhaW5pbmcgdmFyaWFibGUgY2xhc3MgKi8KKwlPaWQJCQl2 YXJuYW1lc3BhY2UgQktJX0xPT0tVUChwZ19uYW1lc3BhY2UpOworCisJLyogdHlwbW9kZSBmb3Ig dmFyaWFibGUncyB0eXBlICovCisJaW50MzIJCXZhcnR5cG1vZDsKKworCS8qIHZhcmlhYmxlIG93 bmVyICovCisJT2lkCQkJdmFyb3duZXIgQktJX0xPT0tVUChwZ19hdXRoaWQpOworCisJLyogdmFy aWFibGUgY29sbGF0aW9uICovCisJT2lkCQkJdmFyY29sbGF0aW9uIEJLSV9MT09LVVBfT1BUKHBn X2NvbGxhdGlvbik7CisKKwkvKiBEb24ndCBhbGxvdyBOVUxMICovCisJYm9vbAkJdmFyaXNub3Ru dWxsOworCisJLyogRG9uJ3QgYWxsb3cgY2hhbmdlcyAqLworCWJvb2wJCXZhcmlzaW1tdXRhYmxl OworCisJLyogYWN0aW9uIG9uIHRyYW5zYWN0aW9uIGVuZCAqLworCWNoYXIJCXZhcmVveGFjdGlv bjsKKworI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBz dGFydCBoZXJlICovCisKKwkvKiBsaXN0IG9mIGV4cHJlc3Npb24gdHJlZXMgZm9yIHZhcmlhYmxl IGRlZmF1bHQgKE5VTEwgaWYgbm9uZSkgKi8KKwlwZ19ub2RlX3RyZWUgdmFyZGVmZXhwciBCS0lf REVGQVVMVChfbnVsbF8pOworCisJLyogYWNjZXNzIHBlcm1pc3Npb25zICovCisJYWNsaXRlbQkJ dmFyYWNsWzFdIEJLSV9ERUZBVUxUKF9udWxsXyk7CisKKyNlbmRpZgorfSBGb3JtRGF0YV9wZ192 YXJpYWJsZTsKKwordHlwZWRlZiBlbnVtIFZhcmlhYmxlRU9YQWN0aW9uCit7CisJVkFSSUFCTEVf RU9YX05PT1AgPSAnbicsCS8qIE5PT1AgKi8KKwlWQVJJQUJMRV9FT1hfRFJPUCA9ICdkJywJLyog T04gQ09NTUlUIERST1AgKi8KKwlWQVJJQUJMRV9FT1hfUkVTRVQgPSAncicsCS8qIE9OIFRSQU5T QUNUSU9OIEVORCBSRVNFVCAqLworfQkJCVZhcmlhYmxlRU9YQWN0aW9uOworCisvKiAtLS0tLS0t LS0tLS0tLS0tCisgKgkJRm9ybV9wZ192YXJpYWJsZSBjb3JyZXNwb25kcyB0byBhIHBvaW50ZXIg dG8gYSB0dXBsZSB3aXRoCisgKgkJdGhlIGZvcm1hdCBvZiBwZ192YXJpYWJsZSByZWxhdGlvbi4K KyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBGb3JtRGF0YV9wZ192YXJpYWJsZSAq Rm9ybV9wZ192YXJpYWJsZTsKKworREVDTEFSRV9UT0FTVChwZ192YXJpYWJsZSwgOTIyMywgOTIy NCk7CisKK0RFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfdmFyaWFibGVfb2lkX2luZGV4LCA5 MjI1LCBWYXJpYWJsZU9pZEluZGV4SWQsIG9uIHBnX3ZhcmlhYmxlIHVzaW5nIGJ0cmVlKG9pZCBv aWRfb3BzKSk7CisjZGVmaW5lIFZhcmlhYmxlT2JqZWN0SW5kZXhJZCA5MjI1CisKK0RFQ0xBUkVf VU5JUVVFX0lOREVYKHBnX3ZhcmlhYmxlX3Zhcm5hbWVfbnNwX2luZGV4LCA5MjI2LCBWYXJpYWJs ZU5hbWVOc3BJbmRleElkLCBvbiBwZ192YXJpYWJsZSB1c2luZyBidHJlZSh2YXJuYW1lIG5hbWVf b3BzLCB2YXJuYW1lc3BhY2Ugb2lkX29wcykpOworI2RlZmluZSBWYXJpYWJsZU5hbWVOc3BJbmRl eElkICA5MjI2CisKK3R5cGVkZWYgc3RydWN0IFZhcmlhYmxlCit7CisJT2lkCQkJb2lkOworCU9p ZAkJCXR5cGlkOworCVhMb2dSZWNQdHIJY3JlYXRlX2xzbjsKKwljaGFyCSAgICpuYW1lOworCU9p ZAkJCW5hbWVzcGFjZWlkOworCWludDMyCQl0eXBtb2Q7CisJT2lkCQkJb3duZXI7CisJT2lkCQkJ Y29sbGF0aW9uOworCWJvb2wJCWlzX25vdF9udWxsOworCWJvb2wJCWlzX2ltbXV0YWJsZTsKKwlW YXJpYWJsZUVPWEFjdGlvbiBlb3hhY3Rpb247CisJYm9vbAkJaGFzX2RlZmV4cHI7CisJTm9kZQkg ICAqZGVmZXhwcjsKK30gVmFyaWFibGU7CisKK2V4dGVybiBPYmplY3RBZGRyZXNzIENyZWF0ZVZh cmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkJCUNyZWF0ZVNlc3Npb25WYXJTdG10 ICpzdG10KTsKK2V4dGVybiB2b2lkIERyb3BWYXJpYWJsZShPaWQgdmFyaWQpOworZXh0ZXJuIHZv aWQgSW5pdFZhcmlhYmxlKFZhcmlhYmxlICp2YXIsIE9pZCB2YXJpZCwgYm9vbCBmYXN0X29ubHkp OworCisjZW5kaWYJCQkJCQkJLyogUEdfVkFSSUFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv c2Vzc2lvbl92YXJpYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmFkZDFhZTUwYTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXNz aW9uX3ZhcmlhYmxlLmgKQEAgLTAsMCArMSwzNCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor ICogc2Vzc2lvbnZhcmlhYmxlLmgKKyAqCSAgcHJvdG90eXBlcyBmb3Igc2Vzc2lvbnZhcmlhYmxl LmMuCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMv aW5jbHVkZS9jb21tYW5kcy9zZXNzaW9uX3ZhcmlhYmxlLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworCisjaWZuZGVmIFNFU1NJT05WQVJJQUJMRV9ICisjZGVmaW5lIFNFU1NJT05WQVJJ QUJMRV9ICisKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAibm9kZXMvcGFyYW1zLmgiCisjaW5jbHVk ZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgorI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgorI2lu Y2x1ZGUgInRjb3AvY21kdGFnLmgiCisjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5o IgorCitleHRlcm4gdm9pZCBTZXNzaW9uVmFyaWFibGVDcmVhdGVQb3N0cHJvY2VzcyhPaWQgdmFy aWQsIGNoYXIgZW94YWN0aW9uKTsKK2V4dGVybiB2b2lkIFNlc3Npb25WYXJpYWJsZURyb3BQb3N0 cHJvY2VzcyhPaWQgdmFyaWQpOworCitleHRlcm4gdm9pZCBBdFByZUVPWGFjdF9TZXNzaW9uVmFy aWFibGUoYm9vbCBpc0NvbW1pdCk7CitleHRlcm4gdm9pZCBBdEVPU3ViWGFjdF9TZXNzaW9uVmFy aWFibGUoYm9vbCBpc0NvbW1pdCwKKwkJCQkJCQkJCQlTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQs CisJCQkJCQkJCQkJU3ViVHJhbnNhY3Rpb25JZCBwYXJlbnRTdWJpZCk7CisKKyNlbmRpZgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDYxMTJjZDg1YzguLjE0YmMyZmNkMDcgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmgKQEAgLTE5MTEsNiArMTkxMSw3IEBAIHR5cGVkZWYgZW51bSBPYmplY3RUeXBl CiAJT0JKRUNUX1RTVEVNUExBVEUsCiAJT0JKRUNUX1RZUEUsCiAJT0JKRUNUX1VTRVJfTUFQUElO RywKKwlPQkpFQ1RfVkFSSUFCTEUsCiAJT0JKRUNUX1ZJRVcKIH0gT2JqZWN0VHlwZTsKIApAQCAt MzAzOCw2ICszMDM5LDI1IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyU3RhdHNTdG10CiAJYm9vbAkJ bWlzc2luZ19vazsJCS8qIHNraXAgZXJyb3IgaWYgc3RhdGlzdGljcyBvYmplY3QgaXMgbWlzc2lu ZyAqLwogfSBBbHRlclN0YXRzU3RtdDsKIAorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgkJe0NyZWF0ZXxBbHRlcn0gVkFSSUFCTEUgU3RhdGVtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IENyZWF0ZVNlc3Npb25WYXJTdG10Cit7CisJTm9k ZVRhZwkJdHlwZTsKKwlSYW5nZVZhciAgICp2YXJpYWJsZTsJCS8qIHRoZSB2YXJpYWJsZSB0byBj cmVhdGUgKi8KKwlUeXBlTmFtZSAgICp0eXBlTmFtZTsJCS8qIHRoZSB0eXBlIG9mIHZhcmlhYmxl ICovCisJQ29sbGF0ZUNsYXVzZSAqY29sbENsYXVzZTsKKwlOb2RlCSAgICpkZWZleHByOwkJLyog ZGVmYXVsdCBleHByZXNzaW9uICovCisJY2hhcgkJZW94YWN0aW9uOwkJLyogb24gY29tbWl0IGFj dGlvbiAqLworCWJvb2wJCWlmX25vdF9leGlzdHM7CS8qIGRvIG5vdGhpbmcgaWYgaXQgYWxyZWFk eSBleGlzdHMgKi8KKwlib29sCQlpc19ub3RfbnVsbDsJLyogRGlzYWxsb3cgbnVsbHMgKi8KKwli b29sCQlpc19pbW11dGFibGU7CS8qIERvbid0IGFsbG93IGNoYW5nZXMgKi8KK30gQ3JlYXRlU2Vz c2lvblZhclN0bXQ7CisKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUNyZWF0ZSBG dW5jdGlvbiBTdGF0ZW1lbnQKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aAppbmRleCA5NTdlZTE4ZDg0Li4wZWI4NWZhYmMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w YXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC00NTQs NiArNDU0LDggQEAgUEdfS0VZV09SRCgidmFsaWRhdG9yIiwgVkFMSURBVE9SLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ2YWx1ZSIsIFZBTFVFX1AsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZhbHVlcyIsIFZBTFVFUywg Q09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZhcmNoYXIiLCBWQVJD SEFSLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgidmFyaWFibGUi LCBWQVJJQUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgi dmFyaWFibGVzIiwgVkFSSUFCTEVTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJ2YXJpYWRpYyIsIFZBUklBRElDLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgidmFyeWluZyIsIFZBUllJTkcsIFVOUkVTRVJWRURfS0VZV09SRCwg QVNfTEFCRUwpCiBQR19LRVlXT1JEKCJ2ZXJib3NlIiwgVkVSQk9TRSwgVFlQRV9GVU5DX05BTUVf S0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDk2MmViZjY1 ZGUuLjRkNjVhOWU5ZTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2Rl LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtODEsNiArODEsNyBA QCB0eXBlZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9DT1BZX1dIRVJFLAkJLyog V0hFUkUgY29uZGl0aW9uIGluIENPUFkgRlJPTSAqLwogCUVYUFJfS0lORF9HRU5FUkFURURfQ09M VU1OLCAvKiBnZW5lcmF0aW9uIGV4cHJlc3Npb24gZm9yIGEgY29sdW1uICovCiAJRVhQUl9LSU5E X0NZQ0xFX01BUkssCQkvKiBjeWNsZSBtYXJrIHZhbHVlICovCisJRVhQUl9LSU5EX1ZBUklBQkxF X0RFRkFVTFQJLyogZGVmYXVsdCB2YWx1ZSBmb3Igc2Vzc2lvbiB2YXJpYWJsZSAqLwogfSBQYXJz ZUV4cHJLaW5kOwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5o IGIvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKaW5kZXggOWU5NGY0NGM1Zi4uNmMxYmU1 ZTlkNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKKysrIGIvc3Jj L2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKQEAgLTY4LDYgKzY4LDcgQEAgUEdfQ01EVEFHKENN RFRBR19BTFRFUl9UUkFOU0ZPUk0sICJBTFRFUiBUUkFOU0ZPUk0iLCB0cnVlLCBmYWxzZSwgZmFs c2UpCiBQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RSSUdHRVIsICJBTFRFUiBUUklHR0VSIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19BTFRFUl9UWVBFLCAiQUxURVIgVFlQ RSIsIHRydWUsIHRydWUsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19BTFRFUl9VU0VSX01BUFBJ TkcsICJBTFRFUiBVU0VSIE1BUFBJTkciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUco Q01EVEFHX0FMVEVSX1ZBUklBQkxFLCAiQUxURVIgVkFSSUFCTEUiLCB0cnVlLCBmYWxzZSwgZmFs c2UpCiBQR19DTURUQUcoQ01EVEFHX0FMVEVSX1ZJRVcsICJBTFRFUiBWSUVXIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19BTkFMWVpFLCAiQU5BTFlaRSIsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0JFR0lOLCAiQkVHSU4iLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQpAQCAtMTIzLDYgKzEyNCw3IEBAIFBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RS QU5TRk9STSwgIkNSRUFURSBUUkFOU0ZPUk0iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURU QUcoQ01EVEFHX0NSRUFURV9UUklHR0VSLCAiQ1JFQVRFIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0NSRUFURV9UWVBFLCAiQ1JFQVRFIFRZUEUiLCB0cnVl LCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0NSRUFURV9VU0VSX01BUFBJTkcsICJD UkVBVEUgVVNFUiBNQVBQSU5HIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRB R19DUkVBVEVfVkFSSUFCTEUsICJDUkVBVEUgVkFSSUFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2Up CiBQR19DTURUQUcoQ01EVEFHX0NSRUFURV9WSUVXLCAiQ1JFQVRFIFZJRVciLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0RFQUxMT0NBVEUsICJERUFMTE9DQVRFIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfREVBTExPQ0FURV9BTEwsICJERUFM TE9DQVRFIEFMTCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCkBAIC0xNzUsNiArMTc3LDcgQEAgUEdf Q01EVEFHKENNRFRBR19EUk9QX1RSQU5TRk9STSwgIkRST1AgVFJBTlNGT1JNIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19EUk9QX1RSSUdHRVIsICJEUk9QIFRSSUdHRVIi LCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0RST1BfVFlQRSwgIkRST1Ag VFlQRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfRFJPUF9VU0VSX01B UFBJTkcsICJEUk9QIFVTRVIgTUFQUElORyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRB RyhDTURUQUdfRFJPUF9WQVJJQUJMRSwgIkRST1AgVkFSSUFCTEUiLCB0cnVlLCBmYWxzZSwgZmFs c2UpCiBQR19DTURUQUcoQ01EVEFHX0RST1BfVklFVywgIkRST1AgVklFVyIsIHRydWUsIGZhbHNl LCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfRVhFQ1VURSwgIkVYRUNVVEUiLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19FWFBMQUlOLCAiRVhQTEFJTiIsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9hY2wuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL2FjbC5oCmluZGV4IGU1NjZmZjBjNzMuLmUxMGU2MDgxZGMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5o CkBAIC0xNzAsNiArMTcwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXJyYXlUeXBlIEFjbDsKICNkZWZp bmUgQUNMX0FMTF9SSUdIVFNfU0NIRU1BCQkoQUNMX1VTQUdFfEFDTF9DUkVBVEUpCiAjZGVmaW5l IEFDTF9BTExfUklHSFRTX1RBQkxFU1BBQ0UJKEFDTF9DUkVBVEUpCiAjZGVmaW5lIEFDTF9BTExf UklHSFRTX1RZUEUJCQkoQUNMX1VTQUdFKQorI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJM RQkJKEFDTF9TRUxFQ1R8QUNMX1VQREFURSkKIAogLyogb3BlcmF0aW9uIGNvZGVzIGZvciBwZ18q X2FjbG1hc2sgKi8KIHR5cGVkZWYgZW51bQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv bHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCA1MGYwMjg4 MzA1Li4xMGQ5N2ZmYmYzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTMyLDYgKzEzMiw3IEBA IGV4dGVybiBjaGFyIGdldF9mdW5jX3Byb2tpbmQoT2lkIGZ1bmNpZCk7CiBleHRlcm4gYm9vbCBn ZXRfZnVuY19sZWFrcHJvb2YoT2lkIGZ1bmNpZCk7CiBleHRlcm4gUmVnUHJvY2VkdXJlIGdldF9m dW5jX3N1cHBvcnQoT2lkIGZ1bmNpZCk7CiBleHRlcm4gT2lkCWdldF9yZWxuYW1lX3JlbGlkKGNv bnN0IGNoYXIgKnJlbG5hbWUsIE9pZCByZWxuYW1lc3BhY2UpOworZXh0ZXJuIE9pZAlnZXRfdmFy bmFtZV92YXJpZChjb25zdCBjaGFyICp2YXJuYW1lLCBPaWQgdmFybmFtZXNwYWNlKTsKIGV4dGVy biBjaGFyICpnZXRfcmVsX25hbWUoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF9uYW1l c3BhY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90eXBlX2lkKE9pZCByZWxpZCk7 CkBAIC0yMDMsNiArMjA0LDE0IEBAIGV4dGVybiBjaGFyICpnZXRfcHVibGljYXRpb25fbmFtZShP aWQgcHViaWQsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gT2lkCWdldF9zdWJzY3JpcHRpb25f b2lkKGNvbnN0IGNoYXIgKnN1Ym5hbWUsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gY2hhciAq Z2V0X3N1YnNjcmlwdGlvbl9uYW1lKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKTsKIAorZXh0 ZXJuIGNoYXIgKmdldF9zZXNzaW9uX3ZhcmlhYmxlX25hbWUoT2lkIHZhcmlkKTsKK2V4dGVybiBP aWQJZ2V0X3Nlc3Npb25fdmFyaWFibGVfbmFtZXNwYWNlKE9pZCB2YXJpZCk7CitleHRlcm4gT2lk CWdldF9zZXNzaW9uX3ZhcmlhYmxlX3R5cGUoT2lkIHZhcmlkKTsKK2V4dGVybiB2b2lkIGdldF9z ZXNzaW9uX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2NvbGxpZChPaWQgdmFyaWQsCisJCQkJCQkJCQkJ CQkJT2lkICp0eXBpZCwKKwkJCQkJCQkJCQkJCQlpbnQzMiAqdHlwbW9kLAorCQkJCQkJCQkJCQkJ CU9pZCAqY29sbGlkKTsKKwogI2RlZmluZSB0eXBlX2lzX2FycmF5KHR5cGlkKSAgKGdldF9lbGVt ZW50X3R5cGUodHlwaWQpICE9IEludmFsaWRPaWQpCiAvKiB0eXBlX2lzX2FycmF5X2RvbWFpbiBh Y2NlcHRzIGJvdGggcGxhaW4gYXJyYXlzIGFuZCBkb21haW5zIG92ZXIgYXJyYXlzICovCiAjZGVm aW5lIHR5cGVfaXNfYXJyYXlfZG9tYWluKHR5cGlkKSAgKGdldF9iYXNlX2VsZW1lbnRfdHlwZSh0 eXBpZCkgIT0gSW52YWxpZE9pZCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2Nh Y2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCmluZGV4IDQ0NjNlYTY2YmUuLjNk MThkYzg4YWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaApAQCAtMTEzLDkgKzExMywxMSBAQCBlbnVtIFN5 c0NhY2hlSWRlbnRpZmllcgogCVRZUEVOQU1FTlNQLAogCVRZUEVPSUQsCiAJVVNFUk1BUFBJTkdP SUQsCi0JVVNFUk1BUFBJTkdVU0VSU0VSVkVSCisJVVNFUk1BUFBJTkdVU0VSU0VSVkVSLAorCVZB UklBQkxFTkFNRU5TUCwKKwlWQVJJQUJMRU9JRAogCi0jZGVmaW5lIFN5c0NhY2hlU2l6ZSAoVVNF Uk1BUFBJTkdVU0VSU0VSVkVSICsgMSkKKyNkZWZpbmUgU3lzQ2FjaGVTaXplIChWQVJJQUJMRU9J RCArIDEpCiB9OwogCiBleHRlcm4gdm9pZCBJbml0Q2F0YWxvZ0NhY2hlKHZvaWQpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lucy5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dAppbmRleCAyMTVlYjg5OWJlLi5kOTk1MzMyMTQw IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dApAQCAtMjY2LDMgKzI2Niw3 IEBAIE5PVElDRTogIGNoZWNraW5nIHBnX3N1YnNjcmlwdGlvbiB7c3ViZGJpZH0gPT4gcGdfZGF0 YWJhc2Uge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX3N1YnNjcmlwdGlvbiB7c3Vib3duZXJ9 ID0+IHBnX2F1dGhpZCB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfc3Vic2NyaXB0aW9uX3Jl bCB7c3JzdWJpZH0gPT4gcGdfc3Vic2NyaXB0aW9uIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBw Z19zdWJzY3JpcHRpb25fcmVsIHtzcnJlbGlkfSA9PiBwZ19jbGFzcyB7b2lkfQorTk9USUNFOiAg Y2hlY2tpbmcgcGdfdmFyaWFibGUge3ZhcnR5cGV9ID0+IHBnX3R5cGUge29pZH0KK05PVElDRTog IGNoZWNraW5nIHBnX3ZhcmlhYmxlIHt2YXJuYW1lc3BhY2V9ID0+IHBnX25hbWVzcGFjZSB7b2lk fQorTk9USUNFOiAgY2hlY2tpbmcgcGdfdmFyaWFibGUge3Zhcm93bmVyfSA9PiBwZ19hdXRoaWQg e29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX3ZhcmlhYmxlIHt2YXJjb2xsYXRpb259ID0+IHBn X2NvbGxhdGlvbiB7b2lkfQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA1OGRhZWNhODMx Li44YjA4ZjY0NDY4IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDk5LDYgKzQ5OSw3 IEBAIENyZWF0ZVJvbGVTdG10CiBDcmVhdGVTY2hlbWFTdG10CiBDcmVhdGVTY2hlbWFTdG10Q29u dGV4dAogQ3JlYXRlU2VxU3RtdAorQ3JlYXRlU2Vzc2lvblZhclN0bXQKIENyZWF0ZVN0YXRzU3Rt dAogQ3JlYXRlU3RtdAogQ3JlYXRlU3RtdENvbnRleHQKQEAgLTgyNCw2ICs4MjUsNyBAQCBGb3Jt RGF0YV9wZ190c19wYXJzZXIKIEZvcm1EYXRhX3BnX3RzX3RlbXBsYXRlCiBGb3JtRGF0YV9wZ190 eXBlCiBGb3JtRGF0YV9wZ191c2VyX21hcHBpbmcKK0Zvcm1EYXRhX3BnX3ZhcmlhYmxlCiBGb3Jt X3BnX2FnZ3JlZ2F0ZQogRm9ybV9wZ19hbQogRm9ybV9wZ19hbW9wCkBAIC04ODIsNiArODg0LDcg QEAgRm9ybV9wZ190c19wYXJzZXIKIEZvcm1fcGdfdHNfdGVtcGxhdGUKIEZvcm1fcGdfdHlwZQog Rm9ybV9wZ191c2VyX21hcHBpbmcKK0Zvcm1fcGdfdmFyaWFibGUKIEZvcm1hdE5vZGUKIEZyZWVC bG9ja051bWJlckFycmF5CiBGcmVlTGlzdERhdGEKQEAgLTI2MzMsNiArMjYzNiw4IEBAIFN1cHBv cnRSZXF1ZXN0Um93cwogU3VwcG9ydFJlcXVlc3RTZWxlY3Rpdml0eQogU3VwcG9ydFJlcXVlc3RT aW1wbGlmeQogU3VwcG9ydFJlcXVlc3RXRnVuY01vbm90b25pYworU1ZhcmlhYmxlWEFjdEFjdGlv bgorU1ZhcmlhYmxlWEFjdEFjdGlvbkl0ZW0KIFN5bgogU3luY09wcwogU3luY1JlcENvbmZpZ0Rh dGEKLS0gCjIuMzguMQoK --0000000000009ca7c005eedde9a7--