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 1pdwDJ-0000QP-Dh for pgsql-hackers@arkaria.postgresql.org; Sun, 19 Mar 2023 16:48:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pdwDI-0000gq-8G for pgsql-hackers@arkaria.postgresql.org; Sun, 19 Mar 2023 16:48:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pdwDH-0000dV-Jh for pgsql-hackers@lists.postgresql.org; Sun, 19 Mar 2023 16:48:55 +0000 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pdwDD-0007bT-UR for pgsql-hackers@postgresql.org; Sun, 19 Mar 2023 16:48:54 +0000 Received: by mail-pg1-x531.google.com with SMTP id z10so5369703pgr.8 for ; Sun, 19 Mar 2023 09:48:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679244530; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=k3ARUvIB75nknYwJvLyXzpEC5wUUEVTE67MvMQcH30w=; b=ExmQv7HRj0jWlooIcsZhawi+J7WZOwOEdAq3fS4FyymuJan3C0fSkb0OOmRYPtEdHD kmMPNbW3AkxNqgi211hpkv/lt4HSdi99uZ7LVdCbaB5BqE88mzT/1NsxLm9NWmDO1iS+ ukPFIneU7FmdNnEqnK9uUrMwlNjSL70utIpudD8JHH0IC1wr1D+63P2hBVj+lFn1om7e h628dmC1OUHdrTYE2/ds7l31eUrp+yJtmKw9km3Vo2e6zGPwWNSD5JcVDV96xGTfRuaz dzxWeprlM0obdY3mEYal8MLlYmLa5KZxUJrB28sWC1lilx9cZFL+EHffBcXovDXFltAZ VmlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679244530; 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=k3ARUvIB75nknYwJvLyXzpEC5wUUEVTE67MvMQcH30w=; b=yqd8JDmVMJ1nWdCVgqd8T/rjGIYiPZjisHJqBFz0xDl94bEAYTFlsGHVUJDBTX/91m 7Ywl6rSSAJtfDBw57ro3GYpVXOUPRamSPAx9Eg51WRgQjpOUKiaS6OCO601oNk1duO+g F40vQW+LCdItfgdn8PEcXuWc9HP/778UhMfAIjKFj+zf3LDowNfRykAB5QdynrcmgjJB JycPPr0WSqZVhCmFqDdmaHlwMNlRJU+u4pTGBkTXd8kJZFeTvXAKJIg2nBQOJkEBBodk f6+LGgw0yftVZ4Mkhk3L/ii/C/kdC6Z26etNurTInTazRLUCkSwreO2J7p0PKYmvlPZz 7GAg== X-Gm-Message-State: AO0yUKXYUjJCyhxGtgzP6K5WbLC5RHd/vxRIbbKe9AkSlml8USzwa3Zi g5Q4Q4lKMsAoyrbrmBsiAp0SpF3nfGaAa7sOBsM= X-Google-Smtp-Source: AK7set/bBkrvaphy2Pgn45Mj2rC35njHNKuWoMmSK8JfD9z36tdFF8CeqXVo9S/+R0CuNuRpQUD5ZcWRYT5E+EJ1EPM= X-Received: by 2002:a05:6a00:1a52:b0:5aa:310c:e65b with SMTP id h18-20020a056a001a5200b005aa310ce65bmr6094314pfv.2.1679244530343; Sun, 19 Mar 2023 09:48:50 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Melanie Plageman Date: Sun, 19 Mar 2023 12:48:38 -0400 Message-ID: Subject: Re: Should vacuum process config file reload more often To: Masahiko Sawada Cc: Pg Hackers , Andres Freund , Amit Kapila Content-Type: multipart/mixed; boundary="000000000000b8fbea05f7439500" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b8fbea05f7439500 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Mar 18, 2023 at 6:47=E2=80=AFPM Melanie Plageman wrote: > On Wed, Mar 15, 2023 at 1:14=E2=80=AFAM Masahiko Sawada wrote: > > On Sat, Mar 11, 2023 at 8:11=E2=80=AFAM Melanie Plageman > > wrote: > > > > > Also not sure how the patch interacts with failsafe autovac and p= arallel > > > > > vacuum. > > > > > > > > Good point. > > > > > > > > When entering the failsafe mode, we disable the vacuum delays (see > > > > lazy_check_wraparound_failsafe()). We need to keep disabling the > > > > vacuum delays even after reloading the config file. One idea is to > > > > have another global variable indicating we're in the failsafe mode. > > > > vacuum_delay_point() doesn't update VacuumCostActive if the flag is > > > > true. > > > > > > I think we might not need to do this. Other than in > > > lazy_check_wraparound_failsafe(), VacuumCostActive is only updated in > > > two places: > > > > > > 1) in vacuum() which autovacuum will call per table. And failsafe is > > > reset per table as well. > > > > > > 2) in vacuum_delay_point(), but, since VacuumCostActive will already = be > > > false when we enter vacuum_delay_point() the next time after > > > lazy_check_wraparound_failsafe(), we won't set VacuumCostActive there= . > > > > Indeed. But does it mean that there is no code path to turn > > vacuum-delay on, even when vacuum_cost_delay is updated from 0 to > > non-0? > > Ah yes! Good point. This is true. > I'm not sure how to cheaply allow for re-enabling delays after disabling > them in the middle of a table vacuum. > > I don't see a way around checking if we need to reload the config file > on every call to vacuum_delay_point() (currently, we are only doing this > when we have to wait anyway). It seems expensive to do this check every > time. If we do do this, we would update VacuumCostActive when updating > VacuumCostDelay, and we would need a global variable keeping the > failsafe status, as you mentioned. > > It could be okay to say that you can only disable cost-based delays in > the middle of vacuuming a table (i.e. you cannot enable them if they are > already disabled until you start vacuuming the next table). Though maybe > it is weird that you can increase the delay but not re-enable it... So, I thought about it some more, and I think it is a bit odd that you can increase the delay and limit but not re-enable them if they were disabled. And, perhaps it would be okay to check ConfigReloadPending at the top of vacuum_delay_point() instead of only after sleeping. It is just one more branch. We can check if VacuumCostActive is false after checking if we should reload and doing so if needed and return early. I've implemented that in attached v6. I added in the global we discussed for VacuumFailsafeActive. If we keep it, we can probably remove the one in LVRelState -- as it seems redundant. Let me know what you think. - Melanie --000000000000b8fbea05f7439500 Content-Type: text/x-patch; charset="US-ASCII"; name="v6-0001-auto-vacuum-reloads-config-file-more-often.patch" Content-Disposition: attachment; filename="v6-0001-auto-vacuum-reloads-config-file-more-often.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lffmgelo0 RnJvbSAxMjE4YzE4NTI3OTRhMTMxMGQyNTM1OWEzN2I4N2QwNjgyODI1MDBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDE4IE1hciAyMDIzIDE1OjQyOjM5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2Nl0gW2F1dG9ddmFjdXVtIHJlbG9hZHMgY29uZmlnIGZpbGUgbW9yZSBvZnRlbgoKUHJl dmlvdXNseSwgVkFDVVVNIGFuZCBhdXRvdmFjdXVtIHdvcmtlcnMgd291bGQgcmVsb2FkIHRoZSBj b25maWd1cmF0aW9uCmZpbGUgb25seSBiZXR3ZWVuIHZhY3V1bWluZyB0YWJsZXMuIFRoaXMgcHJl Y2x1ZGVkIHVzZXIgdXBkYXRlcyB0bwpjb3N0LWJhc2VkIGRlbGF5IHBhcmFtZXRlcnMgZnJvbSB0 YWtpbmcgZWZmZWN0IHdoaWxlIHZhY3V1bWluZyBhIHRhYmxlLgoKQ2hlY2sgaWYgYSByZWxvYWQg aXMgcGVuZGluZyByb3VnaGx5IG9uY2UgcGVyIGJsb2NrIG5vdywgd2hlbiBjaGVja2luZwppZiB3 ZSBuZWVkIHRvIGRlbGF5LgoKSW4gb3JkZXIgZm9yIHRoaXMgY2hhbmdlIHRvIGhhdmUgdGhlIGlu dGVuZGVkIGVmZmVjdCBvbiBhdXRvdmFjdXVtLAphdXRvdmFjdXVtIHdvcmtlcnMgbXVzdCBzdGFy dCB1cGRhdGluZyB0aGVpciBjb3N0IGRlbGF5IG1vcmUgZnJlcXVlbnRseQphcyB3ZWxsLgoKV2l0 aCB0aGlzIG5ldyBwYXJhZGlnbSwgYmFsYW5jaW5nIHRoZSBjb3N0IGxpbWl0IGFtb25nc3Qgd29y a2VycyBhbHNvCm11c3Qgd29yayBkaWZmZXJlbnRseS4gUHJldmlvdXNseSwgYSB3b3JrZXIncyB3 aV9jb3N0X2xpbWl0IHdhcyBzZXQgb25seQphdCB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZyBh IHRhYmxlLCBhZnRlciByZWxvYWRpbmcgdGhlIGNvbmZpZyBmaWxlLgpUaGVyZWZvcmUsIGF0IHRo ZSB0aW1lIHRoYXQgYXV0b3ZhY19iYWxhbmNlX2Nvc3QoKSBpcyBjYWxsZWQsIHdvcmtlcnMKdmFj dXVtaW5nIHRhYmxlcyB3aXRoIG5vIHRhYmxlIG9wdGlvbnMgY291bGQgc3RpbGwgaGF2ZSBkaWZm ZXJlbnQgdmFsdWVzCmZvciB0aGVpciB3aV9jb3N0X2xpbWl0X2Jhc2UgYW5kIHdpX2Nvc3RfZGVs YXkuIFdpdGggdGhpcyBjaGFuZ2UsCndvcmtlcnMgd2lsbCAod2l0aGluIHNvbWUgbWFyZ2luIG9m IGVycm9yKSBoYXZlIG5vIHJlYXNvbiB0byBoYXZlCmRpZmZlcmVudCB2YWx1ZXMgZm9yIGNvc3Qg bGltaXQgYW5kIGNvc3QgZGVsYXkgKGluIHRoZSBhYnNlbmNlIG9mIHRhYmxlCm9wdGlvbnMpLiBU aHVzLCByZW1vdmUgY29zdCBsaW1pdCBhbmQgY29zdCBkZWxheSBmcm9tIHNoYXJlZCBtZW1vcnkg YW5kCmtlZXAgdHJhY2sgb25seSBvZiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMgYWN0aXZlbHkgdmFj dXVtaW5nIHRhYmxlcyB3aXRoCm5vIGNvc3QtcmVsYXRlZCB0YWJsZSBvcHRpb25zLiBUaGVuLCB1 c2UgdGhpcyB2YWx1ZSB0byBkZXRlcm1pbmUgd2hhdAplYWNoIHdvcmtlcidzIGVmZmVjdGl2ZSBj b3N0IGxpbWl0IHNob3VsZCBiZS4KClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEgPHNhd2Fk YS5tc2hrQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcv bWVzc2FnZS1pZC9mbGF0L0NBQUtSdV9idVA1d3pzaG8zcU53NW85X1IwcEY2OUZSTTVoZ0Ntci1t dlhtR1h3ZEE3QSU0MG1haWwuZ21haWwuY29tIzVlNjc3MWQ0Y2RjYTRkYjZlZmMyYWNlYzJkY2Uw YmM3Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICB8ICAgMSArCiBz cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgIHwgIDU1ICsrKysrLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgfCAgIDEgKwogc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmMgICB8IDIwOSArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5oICAgfCAgIDIgKwogNyBmaWxlcyBjaGFuZ2VkLCAxNDIgaW5zZXJ0aW9u cygrKSwgMTI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpp bmRleCA4ZjE0Y2Y4NWYzLi4zOGRjZTlhZTY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0yNjIyLDYgKzI2MjIsNyBAQCBsYXp5X2NoZWNrX3dyYXBhcm91bmRfZmFpbHNh ZmUoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCWlmICh1bmxpa2VseSh2YWN1dW1feGlkX2ZhaWxzYWZl X2NoZWNrKCZ2YWNyZWwtPmN1dG9mZnMpKSkKIAl7CiAJCXZhY3JlbC0+ZmFpbHNhZmVfYWN0aXZl ID0gdHJ1ZTsKKwkJVmFjdXVtRmFpbHNhZmVBY3RpdmUgPSB0cnVlOwogCiAJCS8qIERpc2FibGUg aW5kZXggdmFjdXVtaW5nLCBpbmRleCBjbGVhbnVwLCBhbmQgaGVhcCByZWwgdHJ1bmNhdGlvbiAq LwogCQl2YWNyZWwtPmRvX2luZGV4X3ZhY3V1bWluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0u YwppbmRleCBjNTQzNjBhNmEwLi5hNWViMjJjNWNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAt NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIv YXV0b3ZhY3V1bS5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgi CisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1z aWduYWwuaCIKQEAgLTc2LDYgKzc3LDcgQEAgaW50CQkJdmFjdXVtX211bHRpeGFjdF9mYWlsc2Fm ZV9hZ2U7CiAvKiBBIGZldyB2YXJpYWJsZXMgdGhhdCBkb24ndCBzZWVtIHdvcnRoIHBhc3Npbmcg YXJvdW5kIGFzIHBhcmFtZXRlcnMgKi8KIHN0YXRpYyBNZW1vcnlDb250ZXh0IHZhY19jb250ZXh0 ID0gTlVMTDsKIHN0YXRpYyBCdWZmZXJBY2Nlc3NTdHJhdGVneSB2YWNfc3RyYXRlZ3k7CitzdGF0 aWMgYm9vbCBhbmFseXplX2luX291dGVyX3hhY3QgPSBmYWxzZTsKIAogCiAvKgpAQCAtMzE0LDgg KzMxNiw3IEBAIHZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAog CXN0YXRpYyBib29sIGluX3ZhY3V1bSA9IGZhbHNlOwogCiAJY29uc3QgY2hhciAqc3RtdHR5cGU7 Ci0Jdm9sYXRpbGUgYm9vbCBpbl9vdXRlcl94YWN0LAotCQkJCXVzZV9vd25feGFjdHM7CisJdm9s YXRpbGUgYm9vbCB1c2Vfb3duX3hhY3RzOwogCiAJQXNzZXJ0KHBhcmFtcyAhPSBOVUxMKTsKIApA QCAtMzMyLDEwICszMzMsMTAgQEAgdmFjdXVtKExpc3QgKnJlbGF0aW9ucywgVmFjdXVtUGFyYW1z ICpwYXJhbXMsCiAJaWYgKHBhcmFtcy0+b3B0aW9ucyAmIFZBQ09QVF9WQUNVVU0pCiAJewogCQlQ cmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKGlzVG9wTGV2ZWwsIHN0bXR0eXBlKTsKLQkJaW5fb3V0 ZXJfeGFjdCA9IGZhbHNlOworCQlhbmFseXplX2luX291dGVyX3hhY3QgPSBmYWxzZTsKIAl9CiAJ ZWxzZQotCQlpbl9vdXRlcl94YWN0ID0gSXNJblRyYW5zYWN0aW9uQmxvY2soaXNUb3BMZXZlbCk7 CisJCWFuYWx5emVfaW5fb3V0ZXJfeGFjdCA9IElzSW5UcmFuc2FjdGlvbkJsb2NrKGlzVG9wTGV2 ZWwpOwogCiAJLyoKIAkgKiBEdWUgdG8gc3RhdGljIHZhcmlhYmxlcyB2YWNfY29udGV4dCwgYW5s X2NvbnRleHQgYW5kIHZhY19zdHJhdGVneSwKQEAgLTQ1Nyw3ICs0NTgsNyBAQCB2YWN1dW0oTGlz dCAqcmVsYXRpb25zLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJQXNzZXJ0KHBhcmFtcy0+b3B0 aW9ucyAmIFZBQ09QVF9BTkFMWVpFKTsKIAkJaWYgKElzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3Mo KSkKIAkJCXVzZV9vd25feGFjdHMgPSB0cnVlOwotCQllbHNlIGlmIChpbl9vdXRlcl94YWN0KQor CQllbHNlIGlmIChhbmFseXplX2luX291dGVyX3hhY3QpCiAJCQl1c2Vfb3duX3hhY3RzID0gZmFs c2U7CiAJCWVsc2UgaWYgKGxpc3RfbGVuZ3RoKHJlbGF0aW9ucykgPiAxKQogCQkJdXNlX293bl94 YWN0cyA9IHRydWU7CkBAIC00NzUsNyArNDc2LDcgQEAgdmFjdXVtKExpc3QgKnJlbGF0aW9ucywg VmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJICovCiAJaWYgKHVzZV9vd25feGFjdHMpCiAJewotCQlB c3NlcnQoIWluX291dGVyX3hhY3QpOworCQlBc3NlcnQoIWFuYWx5emVfaW5fb3V0ZXJfeGFjdCk7 CiAKIAkJLyogQWN0aXZlU25hcHNob3QgaXMgbm90IHNldCBieSBhdXRvdmFjdXVtICovCiAJCWlm IChBY3RpdmVTbmFwc2hvdFNldCgpKQpAQCAtNDkyLDYgKzQ5Myw3IEBAIHZhY3V1bShMaXN0ICpy ZWxhdGlvbnMsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCiAJCWluX3ZhY3V1bSA9IHRydWU7CiAJ CVZhY3V1bUNvc3RBY3RpdmUgPSAoVmFjdXVtQ29zdERlbGF5ID4gMCk7CisJCVZhY3V1bUZhaWxz YWZlQWN0aXZlID0gZmFsc2U7CiAJCVZhY3V1bUNvc3RCYWxhbmNlID0gMDsKIAkJVmFjdXVtUGFn ZUhpdCA9IDA7CiAJCVZhY3V1bVBhZ2VNaXNzID0gMDsKQEAgLTUyNyw3ICs1MjksNyBAQCB2YWN1 dW0oTGlzdCAqcmVsYXRpb25zLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJCQl9CiAKIAkJCQlh bmFseXplX3JlbCh2cmVsLT5vaWQsIHZyZWwtPnJlbGF0aW9uLCBwYXJhbXMsCi0JCQkJCQkJdnJl bC0+dmFfY29scywgaW5fb3V0ZXJfeGFjdCwgdmFjX3N0cmF0ZWd5KTsKKwkJCQkJCQl2cmVsLT52 YV9jb2xzLCBhbmFseXplX2luX291dGVyX3hhY3QsIHZhY19zdHJhdGVneSk7CiAKIAkJCQlpZiAo dXNlX293bl94YWN0cykKIAkJCQl7CkBAIC01NTAsNiArNTUyLDcgQEAgdmFjdXVtKExpc3QgKnJl bGF0aW9ucywgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJewogCQlpbl92YWN1dW0gPSBmYWxzZTsK IAkJVmFjdXVtQ29zdEFjdGl2ZSA9IGZhbHNlOworCQlhbmFseXplX2luX291dGVyX3hhY3QgPSBm YWxzZTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCkBAIC0xODUwLDYgKzE4NTMsOCBAQCB2YWN1dW1f cmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywg Ym9vbCBza2lwX3ByaXZzKQogCiAJQXNzZXJ0KHBhcmFtcyAhPSBOVUxMKTsKIAorCVZhY3V1bUZh aWxzYWZlQWN0aXZlID0gZmFsc2U7CisKIAkvKiBCZWdpbiBhIHRyYW5zYWN0aW9uIGZvciB2YWN1 dW1pbmcgdGhpcyByZWxhdGlvbiAqLwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKQEAg LTIyMTUsOSArMjIyMCwzMyBAQCB2YWN1dW1fZGVsYXlfcG9pbnQodm9pZCkKIAkvKiBBbHdheXMg Y2hlY2sgZm9yIGludGVycnVwdHMgKi8KIAlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JaWYg KCFWYWN1dW1Db3N0QWN0aXZlIHx8IEludGVycnVwdFBlbmRpbmcpCisJaWYgKEludGVycnVwdFBl bmRpbmcgfHwgVmFjdXVtRmFpbHNhZmVBY3RpdmUgfHwKKwkJKCFWYWN1dW1Db3N0QWN0aXZlICYm ICFDb25maWdSZWxvYWRQZW5kaW5nKSkKIAkJcmV0dXJuOwogCisJLyoKKwkgKiBSZWxvYWQgdGhl IGNvbmZpZ3VyYXRpb24gZmlsZSBpZiByZXF1ZXN0ZWQuIFRoaXMgYWxsb3dzIGNoYW5nZXMgdG8K KwkgKiBbYXV0b3ZhY3V1bV9ddmFjdXVtX2Nvc3RfbGltaXQgYW5kIFthdXRvdmFjdXVtX112YWN1 dW1fY29zdF9kZWxheSB0bworCSAqIHRha2UgZWZmZWN0IHdoaWxlIGEgdGFibGUgaXMgYmVpbmcg dmFjdXVtZWQgb3IgYW5hbHl6ZWQuCisJICovCisJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcgJiYg IWFuYWx5emVfaW5fb3V0ZXJfeGFjdCkKKwl7CisJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxz ZTsKKwkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJCUF1dG9WYWN1dW1VcGRhdGVE ZWxheSgpOworCQlBdXRvVmFjdXVtVXBkYXRlTGltaXQoKTsKKwl9CisKKwkvKgorCSAqIElmIHdl IGRpc2FibGVkIGNvc3QtYmFzZWQgZGVsYXlzIGFmdGVyIHJlbG9hZGluZyB0aGUgY29uZmlnIGZp bGUsCisJICogcmV0dXJuCisJICovCisJaWYgKCFWYWN1dW1Db3N0QWN0aXZlKQorCXsKKwkJVmFj dXVtQ29zdEJhbGFuY2UgPSAwOworCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBGb3IgcGFyYWxs ZWwgdmFjdXVtLCB0aGUgZGVsYXkgaXMgY29tcHV0ZWQgYmFzZWQgb24gdGhlIHNoYXJlZCBjb3N0 CiAJICogYmFsYW5jZS4gIFNlZSBjb21wdXRlX3BhcmFsbGVsX2RlbGF5LgpAQCAtMjI0OCw4ICsy Mjc3LDE0IEBAIHZhY3V1bV9kZWxheV9wb2ludCh2b2lkKQogCiAJCVZhY3V1bUNvc3RCYWxhbmNl ID0gMDsKIAotCQkvKiB1cGRhdGUgYmFsYW5jZSB2YWx1ZXMgZm9yIHdvcmtlcnMgKi8KLQkJQXV0 b1ZhY3V1bVVwZGF0ZURlbGF5KCk7CisJCS8qCisJCSAqIFVwZGF0ZSBsaW1pdCB2YWx1ZXMgZm9y IHdvcmtlcnMuIFdlIG11c3QgYWx3YXlzIGRvIHRoaXMgaW4gY2FzZSB0aGUKKwkJICogYXV0b3Zh Y3V1bSBsYXVuY2hlciBvciBhbm90aGVyIGF1dG92YWN1dW0gd29ya2VyIGhhcyByZWNhbGN1bGF0 ZWQKKwkJICogdGhlIG51bWJlciBvZiB3b3JrZXJzIGFjcm9zcyB3aGljaCB3ZSBtdXN0IGJhbGFu Y2UgdGhlIGxpbWl0LiBUaGlzCisJCSAqIGlzIGRvbmUgYnkgdGhlIGxhdW5jaGVyIHdoZW4gbGF1 bmNoaW5nIGEgbmV3IHdvcmtlciBhbmQgYnkgd29ya2VycworCQkgKiBiZWZvcmUgdmFjdXVtaW5n IGVhY2ggdGFibGUuCisJCSAqLworCQlBdXRvVmFjdXVtVXBkYXRlTGltaXQoKTsKIAogCQkvKiBN aWdodCBoYXZlIGdvdHRlbiBhbiBpbnRlcnJ1cHQgd2hpbGUgc2xlZXBpbmcgKi8KIAkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4 IGJjZDQwYzgwYTEuLjU3MTg4NTAwZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYwpAQCAtOTkwLDYgKzk5MCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50 ICpzZWcsIHNobV90b2MgKnRvYykKIAkJCQkJCQkJCQkJCSBmYWxzZSk7CiAKIAkvKiBTZXQgY29z dC1iYXNlZCB2YWN1dW0gZGVsYXkgKi8KKwlWYWN1dW1GYWlsc2FmZUFjdGl2ZSA9IGZhbHNlOwog CVZhY3V1bUNvc3RBY3RpdmUgPSAoVmFjdXVtQ29zdERlbGF5ID4gMCk7CiAJVmFjdXVtQ29zdEJh bGFuY2UgPSAwOwogCVZhY3V1bVBhZ2VIaXQgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uYwppbmRleCBjMGUyZTAwYTdlLi4xMDMzZTZkYjYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uYwpAQCAtMTM5LDYgKzEzOSw5IEBAIGludAkJCUxvZ19hdXRvdmFjdXVtX21pbl9k dXJhdGlvbiA9IDYwMDAwMDsKIHN0YXRpYyBib29sIGFtX2F1dG92YWN1dW1fbGF1bmNoZXIgPSBm YWxzZTsKIHN0YXRpYyBib29sIGFtX2F1dG92YWN1dW1fd29ya2VyID0gZmFsc2U7CiAKK3N0YXRp YyBkb3VibGUgYXZfdGFibGVfb3B0aW9uX2Nvc3RfZGVsYXkgPSAtMTsKK3N0YXRpYyBpbnQJYXZf dGFibGVfb3B0aW9uX2Nvc3RfbGltaXQgPSAwOworCiAvKiBGbGFncyBzZXQgYnkgc2lnbmFsIGhh bmRsZXJzICovCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGdvdF9TSUdVU1IyID0gZmFs c2U7CiAKQEAgLTE4OSw4ICsxOTIsOCBAQCB0eXBlZGVmIHN0cnVjdCBhdXRvdmFjX3RhYmxlCiB7 CiAJT2lkCQkJYXRfcmVsaWQ7CiAJVmFjdXVtUGFyYW1zIGF0X3BhcmFtczsKLQlkb3VibGUJCWF0 X3ZhY3V1bV9jb3N0X2RlbGF5OwotCWludAkJCWF0X3ZhY3V1bV9jb3N0X2xpbWl0OworCWRvdWJs ZQkJYXRfdGFibGVfb3B0aW9uX3ZhY19jb3N0X2RlbGF5OworCWludAkJCWF0X3RhYmxlX29wdGlv bl92YWNfY29zdF9saW1pdDsKIAlib29sCQlhdF9kb2JhbGFuY2U7CiAJYm9vbAkJYXRfc2hhcmVk cmVsOwogCWNoYXIJICAgKmF0X3JlbG5hbWU7CkBAIC0yMDksNyArMjEyLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgYXV0b3ZhY190YWJsZQogICogd2lfc2hhcmVkcmVsIGZsYWcgaW5kaWNhdGluZyB3aGV0 aGVyIHRhYmxlIGlzIG1hcmtlZCByZWxpc3NoYXJlZAogICogd2lfcHJvYwkJcG9pbnRlciB0byBQ R1BST0Mgb2YgdGhlIHJ1bm5pbmcgd29ya2VyLCBOVUxMIGlmIG5vdCBzdGFydGVkCiAgKiB3aV9s YXVuY2h0aW1lIFRpbWUgYXQgd2hpY2ggdGhpcyB3b3JrZXIgd2FzIGxhdW5jaGVkCi0gKiB3aV9j b3N0XyoJVmFjdXVtIGNvc3QtYmFzZWQgZGVsYXkgcGFyYW1ldGVycyBjdXJyZW50IGluIHRoaXMg d29ya2VyCisgKiB3aV9kb2JhbGFuY2UgV2hldGhlciB0aGlzIHdvcmtlciBzaG91bGQgYmUgaW5j bHVkZWQgaW4gYmFsYW5jZSBjYWxjdWxhdGlvbnMKICAqCiAgKiBBbGwgZmllbGRzIGFyZSBwcm90 ZWN0ZWQgYnkgQXV0b3ZhY3V1bUxvY2ssIGV4Y2VwdCBmb3Igd2lfdGFibGVvaWQgYW5kCiAgKiB3 aV9zaGFyZWRyZWwgd2hpY2ggYXJlIHByb3RlY3RlZCBieSBBdXRvdmFjdXVtU2NoZWR1bGVMb2Nr IChub3RlIHRoZXNlCkBAIC0yMjUsOSArMjI4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgV29ya2VySW5m b0RhdGEKIAlUaW1lc3RhbXBUeiB3aV9sYXVuY2h0aW1lOwogCWJvb2wJCXdpX2RvYmFsYW5jZTsK IAlib29sCQl3aV9zaGFyZWRyZWw7Ci0JZG91YmxlCQl3aV9jb3N0X2RlbGF5OwotCWludAkJCXdp X2Nvc3RfbGltaXQ7Ci0JaW50CQkJd2lfY29zdF9saW1pdF9iYXNlOwogfSBXb3JrZXJJbmZvRGF0 YTsKIAogdHlwZWRlZiBzdHJ1Y3QgV29ya2VySW5mb0RhdGEgKldvcmtlckluZm87CkBAIC0yODYs NiArMjg2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlkbGlzdF9oZWFkCWF2X3J1bm5pbmdXb3JrZXJz OwogCVdvcmtlckluZm8JYXZfc3RhcnRpbmdXb3JrZXI7CiAJQXV0b1ZhY3V1bVdvcmtJdGVtIGF2 X3dvcmtJdGVtc1tOVU1fV09SS0lURU1TXTsKKwlwZ19hdG9taWNfdWludDMyIG53b3JrZXJzX2Zv cl9iYWxhbmNlOwogfSBBdXRvVmFjdXVtU2htZW1TdHJ1Y3Q7CiAKIHN0YXRpYyBBdXRvVmFjdXVt U2htZW1TdHJ1Y3QgKkF1dG9WYWN1dW1TaG1lbTsKQEAgLTgyMCw3ICs4MjEsNyBAQCBIYW5kbGVB dXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRzKHZvaWQpCiAJCQlBdXRvVmFjTGF1bmNoZXJTaHV0ZG93 bigpOwogCiAJCS8qIHJlYmFsYW5jZSBpbiBjYXNlIHRoZSBkZWZhdWx0IGNvc3QgcGFyYW1ldGVy cyBjaGFuZ2VkICovCi0JCUxXTG9ja0FjcXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lW RSk7CisJCUxXTG9ja0FjcXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX1NIQVJFRCk7CiAJCWF1dG92 YWNfYmFsYW5jZV9jb3N0KCk7CiAJCUxXTG9ja1JlbGVhc2UoQXV0b3ZhY3V1bUxvY2spOwogCkBA IC0xNzU2LDkgKzE3NTcsNiBAQCBGcmVlV29ya2VySW5mbyhpbnQgY29kZSwgRGF0dW0gYXJnKQog CQlNeVdvcmtlckluZm8tPndpX3Byb2MgPSBOVUxMOwogCQlNeVdvcmtlckluZm8tPndpX2xhdW5j aHRpbWUgPSAwOwogCQlNeVdvcmtlckluZm8tPndpX2RvYmFsYW5jZSA9IGZhbHNlOwotCQlNeVdv cmtlckluZm8tPndpX2Nvc3RfZGVsYXkgPSAwOwotCQlNeVdvcmtlckluZm8tPndpX2Nvc3RfbGlt aXQgPSAwOwotCQlNeVdvcmtlckluZm8tPndpX2Nvc3RfbGltaXRfYmFzZSA9IDA7CiAJCWRsaXN0 X3B1c2hfaGVhZCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlV29ya2VycywKIAkJCQkJCSZNeVdv cmtlckluZm8tPndpX2xpbmtzKTsKIAkJLyogbm90IG1pbmUgYW55bW9yZSAqLwpAQCAtMTc3NCw5 OSArMTc3Miw5OCBAQCBGcmVlV29ya2VySW5mbyhpbnQgY29kZSwgRGF0dW0gYXJnKQogfQogCiAv KgotICogVXBkYXRlIHRoZSBjb3N0LWJhc2VkIGRlbGF5IHBhcmFtZXRlcnMsIHNvIHRoYXQgbXVs dGlwbGUgd29ya2VycyBjb25zdW1lCi0gKiBlYWNoIGEgZnJhY3Rpb24gb2YgdGhlIHRvdGFsIGF2 YWlsYWJsZSBJL08uCisgKiBVcGRhdGUgVmFjdXVtQ29zdERlbGF5IHdpdGggdGhlIGNvcnJlY3Qg dmFsdWUgZm9yIGFuIGF1dG92YWN1dW0gd29ya2VyLAorICogZ2l2ZW4gdGhlIHZhbHVlIG9mIG90 aGVyIHJlbGV2YW50IGNvc3QtYmFzZWQgZGVsYXkgcGFyYW1ldGVycy4gQXV0b3ZhY3V1bQorICog d29ya2VycyBzaG91bGQgY2FsbCB0aGlzIGFmdGVyIGV2ZXJ5IGNvbmZpZyByZWxvYWQsIGluIGNh c2UgVmFjdXVtQ29zdERlbGF5CisgKiB3YXMgb3ZlcndyaXR0ZW4uCiAgKi8KIHZvaWQKIEF1dG9W YWN1dW1VcGRhdGVEZWxheSh2b2lkKQogewotCWlmIChNeVdvcmtlckluZm8pCisJaWYgKCFhbV9h dXRvdmFjdXVtX3dvcmtlcikKKwkJcmV0dXJuOworCisJaWYgKGF2X3RhYmxlX29wdGlvbl9jb3N0 X2RlbGF5ID49IDApCisJCVZhY3V1bUNvc3REZWxheSA9IGF2X3RhYmxlX29wdGlvbl9jb3N0X2Rl bGF5OworCWVsc2UKKwkJVmFjdXVtQ29zdERlbGF5ID0gYXV0b3ZhY3V1bV92YWNfY29zdF9kZWxh eSA+PSAwID8KKwkJCWF1dG92YWN1dW1fdmFjX2Nvc3RfZGVsYXkgOiBWYWN1dW1Db3N0RGVsYXk7 CisKKwlpZiAoIVZhY3V1bUZhaWxzYWZlQWN0aXZlKQorCQlWYWN1dW1Db3N0QWN0aXZlID0gKFZh Y3V1bUNvc3REZWxheSA+IDApOworfQorCisvKgorICogVXBkYXRlIFZhY3V1bUNvc3RMaW1pdCB3 aXRoIHRoZSBjb3JyZWN0IHZhbHVlIGZvciBhbiBhdXRvdmFjdXVtIHdvcmtlciwKKyAqIGdpdmVu IHRoZSB2YWx1ZSBvZiBvdGhlciByZWxldmFudCBjb3N0IGxpbWl0IHBhcmFtZXRlcnMgYW5kIHRo ZSBudW1iZXIgb2YKKyAqIHdvcmtlcnMgYWNyb3NzIHdoaWNoIHRoZSBsaW1pdCBtdXN0IGJlIGJh bGFuY2VkLiBBdXRvdmFjdXVtIHdvcmtlcnMgbXVzdAorICogY2FsbCB0aGlzIHJlZ3VsYXJseSBp biBjYXNlIG53b3JrZXJzX2Zvcl9iYWxhbmNlIGhhcyBiZWVuIHVwZGF0ZWQgYnkgYW5vdGhlcgor ICogd29ya2VyIG9yIGJ5IHRoZSBhdXRvdmFjdXVtIGxhdW5jaGVyLiBUaGV5IGFsc28gbXVzdCBj YWxsIHRoaXMgYWZ0ZXIgZXZlcnkKKyAqIGNvbmZpZyByZWxvYWQsIGluIGNhc2UgVmFjdXVtQ29z dExpbWl0IHdhcyBvdmVyd3JpdHRlbi4KKyAqLwordm9pZAorQXV0b1ZhY3V1bVVwZGF0ZUxpbWl0 KHZvaWQpCit7CisJaWYgKCFhbV9hdXRvdmFjdXVtX3dvcmtlcikKKwkJcmV0dXJuOworCisJLyoK KwkgKiBub3RlOiBpbiBjb3N0X2xpbWl0LCB6ZXJvIGFsc28gbWVhbnMgdXNlIHZhbHVlIGZyb20g ZWxzZXdoZXJlLCBiZWNhdXNlCisJICogemVybyBpcyBub3QgYSB2YWxpZCB2YWx1ZS4KKwkgKi8K KwlpZiAoYXZfdGFibGVfb3B0aW9uX2Nvc3RfbGltaXQgPiAwKQorCQlWYWN1dW1Db3N0TGltaXQg PSBhdl90YWJsZV9vcHRpb25fY29zdF9saW1pdDsKKwllbHNlCiAJewotCQlWYWN1dW1Db3N0RGVs YXkgPSBNeVdvcmtlckluZm8tPndpX2Nvc3RfZGVsYXk7Ci0JCVZhY3V1bUNvc3RMaW1pdCA9IE15 V29ya2VySW5mby0+d2lfY29zdF9saW1pdDsKKwkJaW50CQkJdmFjX2Nvc3RfbGltaXQgPSBhdXRv dmFjdXVtX3ZhY19jb3N0X2xpbWl0ID4gMCA/CisJCWF1dG92YWN1dW1fdmFjX2Nvc3RfbGltaXQg OiBWYWN1dW1Db3N0TGltaXQ7CisKKwkJaW50CQkJYmFsYW5jZWRfY29zdF9saW1pdCA9IHZhY19j b3N0X2xpbWl0IC8KKwkJcGdfYXRvbWljX3JlYWRfdTMyKCZBdXRvVmFjdXVtU2htZW0tPm53b3Jr ZXJzX2Zvcl9iYWxhbmNlKTsKKworCQlWYWN1dW1Db3N0TGltaXQgPSBNYXgoTWluKGJhbGFuY2Vk X2Nvc3RfbGltaXQsIHZhY19jb3N0X2xpbWl0KSwgMSk7CiAJfQogfQogCiAvKgogICogYXV0b3Zh Y19iYWxhbmNlX2Nvc3QKLSAqCQlSZWNhbGN1bGF0ZSB0aGUgY29zdCBsaW1pdCBzZXR0aW5nIGZv ciBlYWNoIGFjdGl2ZSB3b3JrZXIuCisgKgkJUmVjYWxjdWxhdGUgdGhlIG51bWJlciBvZiB3b3Jr ZXJzIHRvIGNvbnNpZGVyLCBnaXZlbiB0YWJsZSBvcHRpb25zIGFuZAorICoJCXRoZSBjdXJyZW50 IG51bWJlciBvZiBhY3RpdmUgd29ya2Vycy4KICAqCi0gKiBDYWxsZXIgbXVzdCBob2xkIHRoZSBB dXRvdmFjdXVtTG9jayBpbiBleGNsdXNpdmUgbW9kZS4KKyAqIENhbGxlciBtdXN0IGhvbGQgdGhl IEF1dG92YWN1dW1Mb2NrIGluIGF0IGxlYXN0IHNoYXJlZCBtb2RlLgogICovCiBzdGF0aWMgdm9p ZAogYXV0b3ZhY19iYWxhbmNlX2Nvc3Qodm9pZCkKIHsKLQkvKgotCSAqIFRoZSBpZGVhIGhlcmUg aXMgdGhhdCB3ZSByYXRpb24gb3V0IEkvTyBlcXVhbGx5LiAgVGhlIGFtb3VudCBvZiBJL08KLQkg KiB0aGF0IGEgd29ya2VyIGNhbiBjb25zdW1lIGlzIGRldGVybWluZWQgYnkgY29zdF9saW1pdC9j b3N0X2RlbGF5LCBzbyB3ZQotCSAqIHRyeSB0byBlcXVhbGl6ZSB0aG9zZSByYXRpb3MgcmF0aGVy IHRoYW4gdGhlIHJhdyBsaW1pdCBzZXR0aW5ncy4KLQkgKgotCSAqIG5vdGU6IGluIGNvc3RfbGlt aXQsIHplcm8gYWxzbyBtZWFucyB1c2UgdmFsdWUgZnJvbSBlbHNld2hlcmUsIGJlY2F1c2UKLQkg KiB6ZXJvIGlzIG5vdCBhIHZhbGlkIHZhbHVlLgotCSAqLwotCWludAkJCXZhY19jb3N0X2xpbWl0 ID0gKGF1dG92YWN1dW1fdmFjX2Nvc3RfbGltaXQgPiAwID8KLQkJCQkJCQkJICBhdXRvdmFjdXVt X3ZhY19jb3N0X2xpbWl0IDogVmFjdXVtQ29zdExpbWl0KTsKLQlkb3VibGUJCXZhY19jb3N0X2Rl bGF5ID0gKGF1dG92YWN1dW1fdmFjX2Nvc3RfZGVsYXkgPj0gMCA/Ci0JCQkJCQkJCSAgYXV0b3Zh Y3V1bV92YWNfY29zdF9kZWxheSA6IFZhY3V1bUNvc3REZWxheSk7Ci0JZG91YmxlCQljb3N0X3Rv dGFsOwotCWRvdWJsZQkJY29zdF9hdmFpbDsKIAlkbGlzdF9pdGVyCWl0ZXI7CisJaW50CQkJb3Jp Z19ud29ya2Vyc19mb3JfYmFsYW5jZTsKKwlpbnQJCQlud29ya2Vyc19mb3JfYmFsYW5jZSA9IDA7 CiAKLQkvKiBub3Qgc2V0PyBub3RoaW5nIHRvIGRvICovCi0JaWYgKHZhY19jb3N0X2xpbWl0IDw9 IDAgfHwgdmFjX2Nvc3RfZGVsYXkgPD0gMCkKKwlpZiAoYXV0b3ZhY3V1bV92YWNfY29zdF9kZWxh eSA9PSAwIHx8CisJCShhdXRvdmFjdXVtX3ZhY19jb3N0X2RlbGF5ID09IC0xICYmIFZhY3V1bUNv c3REZWxheSA9PSAwKSkKIAkJcmV0dXJuOwogCi0JLyogY2FsY3VsYXRlIHRoZSB0b3RhbCBiYXNl IGNvc3QgbGltaXQgb2YgcGFydGljaXBhdGluZyBhY3RpdmUgd29ya2VycyAqLwotCWNvc3RfdG90 YWwgPSAwLjA7Ci0JZGxpc3RfZm9yZWFjaChpdGVyLCAmQXV0b1ZhY3V1bVNobWVtLT5hdl9ydW5u aW5nV29ya2VycykKLQl7Ci0JCVdvcmtlckluZm8Jd29ya2VyID0gZGxpc3RfY29udGFpbmVyKFdv cmtlckluZm9EYXRhLCB3aV9saW5rcywgaXRlci5jdXIpOwotCi0JCWlmICh3b3JrZXItPndpX3By b2MgIT0gTlVMTCAmJgotCQkJd29ya2VyLT53aV9kb2JhbGFuY2UgJiYKLQkJCXdvcmtlci0+d2lf Y29zdF9saW1pdF9iYXNlID4gMCAmJiB3b3JrZXItPndpX2Nvc3RfZGVsYXkgPiAwKQotCQkJY29z dF90b3RhbCArPQotCQkJCShkb3VibGUpIHdvcmtlci0+d2lfY29zdF9saW1pdF9iYXNlIC8gd29y a2VyLT53aV9jb3N0X2RlbGF5OwotCX0KLQotCS8qIHRoZXJlIGFyZSBubyBjb3N0IGxpbWl0cyAt LSBub3RoaW5nIHRvIGRvICovCi0JaWYgKGNvc3RfdG90YWwgPD0gMCkKKwlpZiAoYXV0b3ZhY3V1 bV92YWNfY29zdF9saW1pdCA8PSAwICYmIFZhY3V1bUNvc3RMaW1pdCA8PSAwKQogCQlyZXR1cm47 CiAKLQkvKgotCSAqIEFkanVzdCBjb3N0IGxpbWl0IG9mIGVhY2ggYWN0aXZlIHdvcmtlciB0byBi YWxhbmNlIHRoZSB0b3RhbCBvZiBjb3N0Ci0JICogbGltaXQgdG8gYXV0b3ZhY3V1bV92YWN1dW1f Y29zdF9saW1pdC4KLQkgKi8KLQljb3N0X2F2YWlsID0gKGRvdWJsZSkgdmFjX2Nvc3RfbGltaXQg LyB2YWNfY29zdF9kZWxheTsKKwlvcmlnX253b3JrZXJzX2Zvcl9iYWxhbmNlID0KKwkJcGdfYXRv bWljX3JlYWRfdTMyKCZBdXRvVmFjdXVtU2htZW0tPm53b3JrZXJzX2Zvcl9iYWxhbmNlKTsKKwog CWRsaXN0X2ZvcmVhY2goaXRlciwgJkF1dG9WYWN1dW1TaG1lbS0+YXZfcnVubmluZ1dvcmtlcnMp CiAJewogCQlXb3JrZXJJbmZvCXdvcmtlciA9IGRsaXN0X2NvbnRhaW5lcihXb3JrZXJJbmZvRGF0 YSwgd2lfbGlua3MsIGl0ZXIuY3VyKTsKIAotCQlpZiAod29ya2VyLT53aV9wcm9jICE9IE5VTEwg JiYKLQkJCXdvcmtlci0+d2lfZG9iYWxhbmNlICYmCi0JCQl3b3JrZXItPndpX2Nvc3RfbGltaXRf YmFzZSA+IDAgJiYgd29ya2VyLT53aV9jb3N0X2RlbGF5ID4gMCkKLQkJewotCQkJaW50CQkJbGlt aXQgPSAoaW50KQotCQkJKGNvc3RfYXZhaWwgKiB3b3JrZXItPndpX2Nvc3RfbGltaXRfYmFzZSAv IGNvc3RfdG90YWwpOwotCi0JCQkvKgotCQkJICogV2UgcHV0IGEgbG93ZXIgYm91bmQgb2YgMSBv biB0aGUgY29zdF9saW1pdCwgdG8gYXZvaWQgZGl2aXNpb24tCi0JCQkgKiBieS16ZXJvIGluIHRo ZSB2YWN1dW0gY29kZS4gIEFsc28sIGluIGNhc2Ugb2Ygcm91bmRvZmYgdHJvdWJsZQotCQkJICog aW4gdGhlc2UgY2FsY3VsYXRpb25zLCBsZXQncyBiZSBzdXJlIHdlIGRvbid0IGV2ZXIgc2V0Ci0J CQkgKiBjb3N0X2xpbWl0IHRvIG1vcmUgdGhhbiB0aGUgYmFzZSB2YWx1ZS4KLQkJCSAqLwotCQkJ d29ya2VyLT53aV9jb3N0X2xpbWl0ID0gTWF4KE1pbihsaW1pdCwKLQkJCQkJCQkJCQkJd29ya2Vy LT53aV9jb3N0X2xpbWl0X2Jhc2UpLAotCQkJCQkJCQkJCTEpOwotCQl9CisJCWlmICh3b3JrZXIt PndpX3Byb2MgPT0gTlVMTCB8fCAhd29ya2VyLT53aV9kb2JhbGFuY2UpCisJCQljb250aW51ZTsK IAotCQlpZiAod29ya2VyLT53aV9wcm9jICE9IE5VTEwpCi0JCQllbG9nKERFQlVHMiwgImF1dG92 YWNfYmFsYW5jZV9jb3N0KHBpZD0lZCBkYj0ldSwgcmVsPSV1LCBkb2JhbGFuY2U9JXMgY29zdF9s aW1pdD0lZCwgY29zdF9saW1pdF9iYXNlPSVkLCBjb3N0X2RlbGF5PSVnKSIsCi0JCQkJIHdvcmtl ci0+d2lfcHJvYy0+cGlkLCB3b3JrZXItPndpX2Rib2lkLCB3b3JrZXItPndpX3RhYmxlb2lkLAot CQkJCSB3b3JrZXItPndpX2RvYmFsYW5jZSA/ICJ5ZXMiIDogIm5vIiwKLQkJCQkgd29ya2VyLT53 aV9jb3N0X2xpbWl0LCB3b3JrZXItPndpX2Nvc3RfbGltaXRfYmFzZSwKLQkJCQkgd29ya2VyLT53 aV9jb3N0X2RlbGF5KTsKKwkJbndvcmtlcnNfZm9yX2JhbGFuY2UrKzsKIAl9CisKKwlud29ya2Vy c19mb3JfYmFsYW5jZSA9IE1heChud29ya2Vyc19mb3JfYmFsYW5jZSwgMSk7CisKKwlpZiAobndv cmtlcnNfZm9yX2JhbGFuY2UgIT0gb3JpZ19ud29ya2Vyc19mb3JfYmFsYW5jZSkKKwkJcGdfYXRv bWljX3dyaXRlX3UzMigmQXV0b1ZhY3V1bVNobWVtLT5ud29ya2Vyc19mb3JfYmFsYW5jZSwKKwkJ CQkJCQlud29ya2Vyc19mb3JfYmFsYW5jZSk7CiB9CiAKIC8qCkBAIC0yMzEyLDE0ICsyMzA5LDE1 IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJYXV0b3ZhY190YWJsZSAqdGFiOwogCQlib29sCQlp c3NoYXJlZDsKIAkJYm9vbAkJc2tpcGl0OwotCQlkb3VibGUJCXN0ZFZhY3V1bUNvc3REZWxheTsK LQkJaW50CQkJc3RkVmFjdXVtQ29zdExpbWl0OwogCQlkbGlzdF9pdGVyCWl0ZXI7CiAKIAkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkvKgogCQkgKiBDaGVjayBmb3IgY29uZmlnIGNoYW5n ZXMgYmVmb3JlIHByb2Nlc3NpbmcgZWFjaCBjb2xsZWN0ZWQgdGFibGUuCisJCSAqIEF1dG92YWN1 dW0gd29ya2VycyBtdXN0IHVwZGF0ZSBWYWN1dW1Db3N0RGVsYXkgYW5kIFZhY3V1bUNvc3RMaW1p dAorCQkgKiBpbiBjYXNlIHRoZXkgd2VyZSBvdmVycmlkZGVuIGJ5IHRoZSByZWxvYWQuIEhvd2V2 ZXIsIHdlIHdpbGwgZG8KKwkJICogdGhpcyBhcyBzb29uIGFzIHdlIGNoZWNrIHRhYmxlIG9wdGlv bnMgYSBiaXQgbGF0ZXIuCiAJCSAqLwogCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKIAkJewpA QCAtMjQxNiwzMiArMjQxNCwxOCBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJCQljb250aW51ZTsK IAkJfQogCi0JCS8qCi0JCSAqIFJlbWVtYmVyIHRoZSBwcmV2YWlsaW5nIHZhbHVlcyBvZiB0aGUg dmFjdXVtIGNvc3QgR1VDcy4gIFdlIGhhdmUgdG8KLQkJICogcmVzdG9yZSB0aGVzZSBhdCB0aGUg Ym90dG9tIG9mIHRoZSBsb29wLCBlbHNlIHdlJ2xsIGNvbXB1dGUgd3JvbmcKLQkJICogdmFsdWVz IGluIHRoZSBuZXh0IGl0ZXJhdGlvbiBvZiBhdXRvdmFjX2JhbGFuY2VfY29zdCgpLgotCQkgKi8K LQkJc3RkVmFjdXVtQ29zdERlbGF5ID0gVmFjdXVtQ29zdERlbGF5OwotCQlzdGRWYWN1dW1Db3N0 TGltaXQgPSBWYWN1dW1Db3N0TGltaXQ7CisJCWF2X3RhYmxlX29wdGlvbl9jb3N0X2xpbWl0ID0g dGFiLT5hdF90YWJsZV9vcHRpb25fdmFjX2Nvc3RfbGltaXQ7CisJCWF2X3RhYmxlX29wdGlvbl9j b3N0X2RlbGF5ID0gdGFiLT5hdF90YWJsZV9vcHRpb25fdmFjX2Nvc3RfZGVsYXk7CiAKIAkJLyog TXVzdCBob2xkIEF1dG92YWN1dW1Mb2NrIHdoaWxlIG11Y2tpbmcgd2l0aCBjb3N0IGJhbGFuY2Ug aW5mbyAqLwogCQlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2NrLCBMV19FWENMVVNJVkUpOwot Ci0JCS8qIGFkdmVydGlzZSBteSBjb3N0IGRlbGF5IHBhcmFtZXRlcnMgZm9yIHRoZSBiYWxhbmNp bmcgYWxnb3JpdGhtICovCiAJCU15V29ya2VySW5mby0+d2lfZG9iYWxhbmNlID0gdGFiLT5hdF9k b2JhbGFuY2U7Ci0JCU15V29ya2VySW5mby0+d2lfY29zdF9kZWxheSA9IHRhYi0+YXRfdmFjdXVt X2Nvc3RfZGVsYXk7Ci0JCU15V29ya2VySW5mby0+d2lfY29zdF9saW1pdCA9IHRhYi0+YXRfdmFj dXVtX2Nvc3RfbGltaXQ7Ci0JCU15V29ya2VySW5mby0+d2lfY29zdF9saW1pdF9iYXNlID0gdGFi LT5hdF92YWN1dW1fY29zdF9saW1pdDsKLQotCQkvKiBkbyBhIGJhbGFuY2UgKi8KIAkJYXV0b3Zh Y19iYWxhbmNlX2Nvc3QoKTsKKwkJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7CiAKLQkJ Lyogc2V0IHRoZSBhY3RpdmUgY29zdCBwYXJhbWV0ZXJzIGZyb20gdGhlIHJlc3VsdCBvZiB0aGF0 ICovCisJCUF1dG9WYWN1dW1VcGRhdGVMaW1pdCgpOwogCQlBdXRvVmFjdXVtVXBkYXRlRGVsYXko KTsKIAotCQkvKiBkb25lICovCi0JCUxXTG9ja1JlbGVhc2UoQXV0b3ZhY3V1bUxvY2spOwotCiAJ CS8qIGNsZWFuIHVwIG1lbW9yeSBiZWZvcmUgZWFjaCBpdGVyYXRpb24gKi8KIAkJTWVtb3J5Q29u dGV4dFJlc2V0QW5kRGVsZXRlQ2hpbGRyZW4oUG9ydGFsQ29udGV4dCk7CiAKQEAgLTI1MzQsMTAg KzI1MTgsNiBAQCBkZWxldGVkOgogCQlNeVdvcmtlckluZm8tPndpX3RhYmxlb2lkID0gSW52YWxp ZE9pZDsKIAkJTXlXb3JrZXJJbmZvLT53aV9zaGFyZWRyZWwgPSBmYWxzZTsKIAkJTFdMb2NrUmVs ZWFzZShBdXRvdmFjdXVtU2NoZWR1bGVMb2NrKTsKLQotCQkvKiByZXN0b3JlIHZhY3V1bSBjb3N0 IEdVQ3MgZm9yIHRoZSBuZXh0IGl0ZXJhdGlvbiAqLwotCQlWYWN1dW1Db3N0RGVsYXkgPSBzdGRW YWN1dW1Db3N0RGVsYXk7Ci0JCVZhY3V1bUNvc3RMaW1pdCA9IHN0ZFZhY3V1bUNvc3RMaW1pdDsK IAl9CiAKIAkvKgpAQCAtMjU2OSw2ICsyNTQ5LDggQEAgZGVsZXRlZDoKIAkJewogCQkJQ29uZmln UmVsb2FkUGVuZGluZyA9IGZhbHNlOwogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7 CisJCQlBdXRvVmFjdXVtVXBkYXRlRGVsYXkoKTsKKwkJCUF1dG9WYWN1dW1VcGRhdGVMaW1pdCgp OwogCQl9CiAKIAkJTFdMb2NrQWNxdWlyZShBdXRvdmFjdXVtTG9jaywgTFdfRVhDTFVTSVZFKTsK QEAgLTI4MDEsOCArMjc4Myw2IEBAIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYyhPaWQgcmVsaWQsIEhU QUIgKnRhYmxlX3RvYXN0X21hcCwKIAkJaW50CQkJZnJlZXplX3RhYmxlX2FnZTsKIAkJaW50CQkJ bXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlOwogCQlpbnQJCQltdWx0aXhhY3RfZnJlZXplX3RhYmxl X2FnZTsKLQkJaW50CQkJdmFjX2Nvc3RfbGltaXQ7Ci0JCWRvdWJsZQkJdmFjX2Nvc3RfZGVsYXk7 CiAJCWludAkJCWxvZ19taW5fZHVyYXRpb247CiAKIAkJLyoKQEAgLTI4MTIsMjAgKzI3OTIsNiBA QCB0YWJsZV9yZWNoZWNrX2F1dG92YWMoT2lkIHJlbGlkLCBIVEFCICp0YWJsZV90b2FzdF9tYXAs CiAJCSAqIGRlZmF1bHRzLCBhdXRvdmFjdXVtJ3Mgb3duIGZpcnN0IGFuZCBwbGFpbiB2YWN1dW0g c2Vjb25kLgogCQkgKi8KIAotCQkvKiAtMSBpbiBhdXRvdmFjIHNldHRpbmcgbWVhbnMgdXNlIHBs YWluIHZhY3V1bV9jb3N0X2RlbGF5ICovCi0JCXZhY19jb3N0X2RlbGF5ID0gKGF2b3B0cyAmJiBh dm9wdHMtPnZhY3V1bV9jb3N0X2RlbGF5ID49IDApCi0JCQk/IGF2b3B0cy0+dmFjdXVtX2Nvc3Rf ZGVsYXkKLQkJCTogKGF1dG92YWN1dW1fdmFjX2Nvc3RfZGVsYXkgPj0gMCkKLQkJCT8gYXV0b3Zh Y3V1bV92YWNfY29zdF9kZWxheQotCQkJOiBWYWN1dW1Db3N0RGVsYXk7Ci0KLQkJLyogMCBvciAt MSBpbiBhdXRvdmFjIHNldHRpbmcgbWVhbnMgdXNlIHBsYWluIHZhY3V1bV9jb3N0X2xpbWl0ICov Ci0JCXZhY19jb3N0X2xpbWl0ID0gKGF2b3B0cyAmJiBhdm9wdHMtPnZhY3V1bV9jb3N0X2xpbWl0 ID4gMCkKLQkJCT8gYXZvcHRzLT52YWN1dW1fY29zdF9saW1pdAotCQkJOiAoYXV0b3ZhY3V1bV92 YWNfY29zdF9saW1pdCA+IDApCi0JCQk/IGF1dG92YWN1dW1fdmFjX2Nvc3RfbGltaXQKLQkJCTog VmFjdXVtQ29zdExpbWl0OwotCiAJCS8qIC0xIGluIGF1dG92YWMgc2V0dGluZyBtZWFucyB1c2Ug bG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uICovCiAJCWxvZ19taW5fZHVyYXRpb24gPSAoYXZv cHRzICYmIGF2b3B0cy0+bG9nX21pbl9kdXJhdGlvbiA+PSAwKQogCQkJPyBhdm9wdHMtPmxvZ19t aW5fZHVyYXRpb24KQEAgLTI4ODEsOCArMjg0NywxMCBAQCB0YWJsZV9yZWNoZWNrX2F1dG92YWMo T2lkIHJlbGlkLCBIVEFCICp0YWJsZV90b2FzdF9tYXAsCiAJCXRhYi0+YXRfcGFyYW1zLm11bHRp eGFjdF9mcmVlemVfdGFibGVfYWdlID0gbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2U7CiAJCXRh Yi0+YXRfcGFyYW1zLmlzX3dyYXBhcm91bmQgPSB3cmFwYXJvdW5kOwogCQl0YWItPmF0X3BhcmFt cy5sb2dfbWluX2R1cmF0aW9uID0gbG9nX21pbl9kdXJhdGlvbjsKLQkJdGFiLT5hdF92YWN1dW1f Y29zdF9saW1pdCA9IHZhY19jb3N0X2xpbWl0OwotCQl0YWItPmF0X3ZhY3V1bV9jb3N0X2RlbGF5 ID0gdmFjX2Nvc3RfZGVsYXk7CisJCXRhYi0+YXRfdGFibGVfb3B0aW9uX3ZhY19jb3N0X2xpbWl0 ID0gYXZvcHRzID8KKwkJCWF2b3B0cy0+dmFjdXVtX2Nvc3RfbGltaXQgOiAwOworCQl0YWItPmF0 X3RhYmxlX29wdGlvbl92YWNfY29zdF9kZWxheSA9IGF2b3B0cyA/CisJCQlhdm9wdHMtPnZhY3V1 bV9jb3N0X2RlbGF5IDogLTE7CiAJCXRhYi0+YXRfcmVsbmFtZSA9IE5VTEw7CiAJCXRhYi0+YXRf bnNwbmFtZSA9IE5VTEw7CiAJCXRhYi0+YXRfZGF0bmFtZSA9IE5VTEw7CkBAIC0zMzc0LDEwICsz MzQyLDE1IEBAIEF1dG9WYWN1dW1TaG1lbUluaXQodm9pZCkKIAkJd29ya2VyID0gKFdvcmtlcklu Zm8pICgoY2hhciAqKSBBdXRvVmFjdXVtU2htZW0gKwogCQkJCQkJCSAgIE1BWEFMSUdOKHNpemVv ZihBdXRvVmFjdXVtU2htZW1TdHJ1Y3QpKSk7CiAKKwogCQkvKiBpbml0aWFsaXplIHRoZSBXb3Jr ZXJJbmZvIGZyZWUgbGlzdCAqLwogCQlmb3IgKGkgPSAwOyBpIDwgYXV0b3ZhY3V1bV9tYXhfd29y a2VyczsgaSsrKQogCQkJZGxpc3RfcHVzaF9oZWFkKCZBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVX b3JrZXJzLAogCQkJCQkJCSZ3b3JrZXJbaV0ud2lfbGlua3MpOworCisJCS8qIGluaXRpYWxpemUg dG8gMSwgYXMgaXQgc2hvdWxkIGJlIGEgbWluaW11bSBvZiAxICovCisJCXBnX2F0b21pY19pbml0 X3UzMigmQXV0b1ZhY3V1bVNobWVtLT5ud29ya2Vyc19mb3JfYmFsYW5jZSwgMSk7CisKIAl9CiAJ ZWxzZQogCQlBc3NlcnQoZm91bmQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9nbG9iYWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwppbmRleCAxYjFk ODE0MjU0Li5hZWI4ZWQwZTQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2ds b2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtMTUxLDMg KzE1MSw0IEBAIGludDY0CQlWYWN1dW1QYWdlRGlydHkgPSAwOwogCiBpbnQJCQlWYWN1dW1Db3N0 QmFsYW5jZSA9IDA7CS8qIHdvcmtpbmcgc3RhdGUgZm9yIHZhY3V1bSAqLwogYm9vbAkJVmFjdXVt Q29zdEFjdGl2ZSA9IGZhbHNlOworYm9vbAkJVmFjdXVtRmFpbHNhZmVBY3RpdmUgPSBmYWxzZTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2Fk bWluLmgKaW5kZXggMDZhODZmOWFjMS4uYjEyOTc2NzdkMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTI3NSw2ICsy NzUsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50NjQgVmFjdXVtUGFnZURpcnR5OwogCiBleHRl cm4gUEdETExJTVBPUlQgaW50IFZhY3V1bUNvc3RCYWxhbmNlOwogZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgVmFjdXVtQ29zdEFjdGl2ZTsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIFZhY3V1bUZh aWxzYWZlQWN0aXZlOwogCiAKIC8qIGluIHRjb3AvcG9zdGdyZXMuYyAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFz dGVyL2F1dG92YWN1dW0uaAppbmRleCBjMTQwMzcxYjUxLi41NTgzNTg5MTFjIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9w b3N0bWFzdGVyL2F1dG92YWN1dW0uaApAQCAtNjYsNiArNjYsOCBAQCBleHRlcm4gdm9pZCBBdXRv VmFjV29ya2VyRmFpbGVkKHZvaWQpOwogLyogYXV0b3ZhY3V1bSBjb3N0LWRlbGF5IGJhbGFuY2Vy ICovCiBleHRlcm4gdm9pZCBBdXRvVmFjdXVtVXBkYXRlRGVsYXkodm9pZCk7CiAKK2V4dGVybiB2 b2lkIEF1dG9WYWN1dW1VcGRhdGVMaW1pdCh2b2lkKTsKKwogI2lmZGVmIEVYRUNfQkFDS0VORAog ZXh0ZXJuIHZvaWQgQXV0b1ZhY0xhdW5jaGVyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSBw Z19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKIGV4dGVybiB2b2lkIEF1dG9WYWNXb3JrZXJNYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOwotLSAKMi4zNy4y Cgo= --000000000000b8fbea05f7439500--