Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rrtTd-003O6w-9r for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Apr 2024 05:48:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rrtTc-00FPvW-Ah for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Apr 2024 05:48:00 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rrtTb-00FPvN-KA for pgsql-hackers@lists.postgresql.org; Wed, 03 Apr 2024 05:48:00 +0000 Received: from mail-lj1-x232.google.com ([2a00:1450:4864:20::232]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rrtTY-000J39-L0 for pgsql-hackers@lists.postgresql.org; Wed, 03 Apr 2024 05:47:58 +0000 Received: by mail-lj1-x232.google.com with SMTP id 38308e7fff4ca-2d4360ab3daso78104881fa.3 for ; Tue, 02 Apr 2024 22:47:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712123274; x=1712728074; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=SHCfNTSzlXWtsIT5MnAeyeeiy2EPOiluyCh9eBJ8r3I=; b=NsdHpXZDAhzs0ET/WtKz9/DDnyEpG44Uv6Z045olhQVllNbffn8oE1Tbrajq3ttCgt H1tFOMBvPo4+CyG3fspUGRSZiROFGqKkGlpbR/yY2BTFWsE3Rw2keEAa8DVZPeE6Ihot Kty07JLCSvc+Ln7E25TqjgDZXKfsyQoC+biT2el1hDf0MR/iBxaMH9o+0gWL3LFrV5ju Yr8uN4rhCahOxpRMLPoLLYUQCFb8UqrXaX0agiWQOr5Wc8M27TUmOFNWmWvmR2DwpIpt pWLNM0T6WjlKcS9EzzQHy/TeNgIZda8f5S3QuYDmIqsrConpMqreW475lV+i0mn8Jy1W mkOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712123274; x=1712728074; 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=SHCfNTSzlXWtsIT5MnAeyeeiy2EPOiluyCh9eBJ8r3I=; b=vuze7Lkv0qmjBSMTKOr5GwKfomfM9NhFDJfi7s9AMmNzBcn56Xw/+JIWZcoRuiUO78 WrMWhqVpRwlxbP3qs2N3PvhFpeUoN1oiaUcvMPUPoABizyO8DShYmk3U4ZlJe8Dw8cjN oyvw1kY4PEBM8VlFLwHN5fUJVuswXsevIXb9u40GJWOJYj2sivEtUB+Ny4j83vas6EU7 wOSK+vyeezTrRYZDMUx0aQyki2xTIcv/OlHW22sf5r38p8wXq9PP7TbDkf0wtn0fkye5 1685hqsC5ZH56Zz+RWf444SYIpvbqjG2BNLt/x5FciBfrvRrNV2Kduh6al9DX4P5j6H4 RYiA== X-Forwarded-Encrypted: i=1; AJvYcCU2lQDAH/3kpiXuAM0ZMx0P+67mMty4wdQfb5V/Zn+e+oSpC4XfQ0gzPqqPSGm+waMD0MS6qfdi24ozycdH/XcLfslEi2L0e9KnuRYTQMnXPDa+ X-Gm-Message-State: AOJu0Yx0UITtnXSrebwg8L5hRbqK74mrZTHDRDE2hTaWxXge/1/WlUVv /FSwZtfFY3XlokxS3VTKpJt1f3jlP/VR7flbw+QgzlMjp17AJzd8mSUIcMrEyaJ1/dpEf3nco0/ AoCN87HjfQ1hBXB7JNM9mWlu57rU= X-Google-Smtp-Source: AGHT+IGqXrkaf0AkXRUwpf9vxc2qsLkj01JwD6b20jmiaQDSF7OOmf6kPimJp7vOqNL80l67NfmsxVS8JSMG4kW+arQ= X-Received: by 2002:a2e:b019:0:b0:2d6:a5f6:c8d3 with SMTP id y25-20020a2eb019000000b002d6a5f6c8d3mr8233809ljk.27.1712123274205; Tue, 02 Apr 2024 22:47:54 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bharath Rupireddy Date: Wed, 3 Apr 2024 11:17:41 +0530 Message-ID: Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation To: shveta malik Cc: Bertrand Drouvot , Masahiko Sawada , Amit Kapila , Nathan Bossart , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000923f7c06152ac3a5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000923f7c06152ac3a5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Apr 3, 2024 at 8:38=E2=80=AFAM shveta malik wrote: > > > > Or a simple solution is that the slotsync worker updates > > > inactive_since as it does for non-synced slots, and disables > > > timeout-based slot invalidation for synced slots. > > I like this idea better, it takes care of such a case too when the > user is relying on sync-function rather than worker and does not want > to get the slots invalidated in between 2 sync function calls. Please find the attached v31 patches implementing the above idea: - synced slots get their on inactive_since just like any other slot - synced slots don't get invalidated due to inactive timeout because such slots not considered active at all as they don't perform logical decoding (of course, they will perform in fast_forward mode to fix the other data loss issue, but they don't generate changes for them to be called as *active* slots) - synced slots inactive_since is set to current timestamp after the standby gets promoted to help inactive_since interpret correctly just like any other slot. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --000000000000923f7c06152ac3a5 Content-Type: application/x-patch; name="v31-0001-Allow-synced-slots-to-have-their-own-inactive_si.patch" Content-Disposition: attachment; filename="v31-0001-Allow-synced-slots-to-have-their-own-inactive_si.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lujdhkv90 RnJvbSBmZDJjYjQ4NzI2ZGQ0ZTE5MzJmODgwOWRmYjM2ZTBmZTlmOTIyMjI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMyBBcHIgMjAyNCAwNTowMzoyMiArMDAw MApTdWJqZWN0OiBbUEFUQ0ggdjMxIDEvMl0gQWxsb3cgc3luY2VkIHNsb3RzIHRvIGhhdmUgdGhl aXIgb3duIGluYWN0aXZlX3NpbmNlLgoKLS0tCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNn bWwgICAgICAgICAgICAgICAgfCAgNyArKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvc2xvdHN5bmMuYyAgICB8IDQ0ICsrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAyMyArKystLS0tLS0KIHNyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gICAgICB8IDM0ICsrKysrKysrKysrKysKIHNy Yy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsICAgICB8IDI2ICstLS0tLS0t LS0KIC4uLi90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwgICAgICB8IDQ5ICsr KysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlvbnMoKyksIDM5 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCAzYzhkY2E4Y2EzLi5iNjQy NzRhMWZiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0yNTMwLDYgKzI1MzAsMTMgQEAgU0VM RUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4CiAg ICAgICA8cGFyYT4KICAgICAgICAgVGhlIHRpbWUgc2luY2UgdGhlIHNsb3QgaGFzIGJlY29tZSBp bmFjdGl2ZS4KICAgICAgICAgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gaWYgdGhlIHNsb3QgaXMg Y3VycmVudGx5IGJlaW5nIHVzZWQuCisgICAgICAgIE5vdGUgdGhhdCBmb3Igc2xvdHMgb24gdGhl IHN0YW5kYnkgdGhhdCBhcmUgYmVpbmcgc3luY2VkIGZyb20gYQorICAgICAgICBwcmltYXJ5IHNl cnZlciAod2hvc2UgPHN0cnVjdGZpZWxkPnN5bmNlZDwvc3RydWN0ZmllbGQ+IGZpZWxkIGlzCisg ICAgICAgIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+KSwgdGhlCisgICAgICAgIDxzdHJ1Y3RmaWVs ZD5pbmFjdGl2ZV9zaW5jZTwvc3RydWN0ZmllbGQ+IHZhbHVlIHdpbGwgZ2V0IHVwZGF0ZWQKKyAg ICAgICAgYWZ0ZXIgZXZlcnkgc3luY2hyb25pemF0aW9uIChzZWUKKyAgICAgICAgPHhyZWYgbGlu a2VuZD0ibG9naWNhbGRlY29kaW5nLXJlcGxpY2F0aW9uLXNsb3RzLXN5bmNocm9uaXphdGlvbiIv PikKKyAgICAgICAgZnJvbSB0aGUgY29ycmVzcG9uZGluZyByZW1vdGUgc2xvdCBvbiB0aGUgcHJp bWFyeS4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IDMwNDgwOTYwYzUuLjQwNTBiZDQw ZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTE0 MCw2ICsxNDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZW1vdGVTbG90CiB9IFJlbW90ZVNsb3Q7CiAK IHN0YXRpYyB2b2lkIHNsb3RzeW5jX2ZhaWx1cmVfY2FsbGJhY2soaW50IGNvZGUsIERhdHVtIGFy Zyk7CitzdGF0aWMgdm9pZCB1cGRhdGVfc3luY2VkX3Nsb3RzX2luYWN0aXZlX3NpbmNlKHZvaWQp OwogCiAvKgogICogSWYgbmVjZXNzYXJ5LCB1cGRhdGUgdGhlIGxvY2FsIHN5bmNlZCBzbG90J3Mg bWV0YWRhdGEgYmFzZWQgb24gdGhlIGRhdGEKQEAgLTEyOTYsNiArMTI5Nyw0NiBAQCBSZXBsU2xv dFN5bmNXb3JrZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9s ZW4pCiAJQXNzZXJ0KGZhbHNlKTsKIH0KIAorLyoKKyAqIFVwZGF0ZSB0aGUgaW5hY3RpdmVfc2lu Y2UgcHJvcGVydHkgZm9yIHN5bmNlZCBzbG90cy4KKyAqLworc3RhdGljIHZvaWQKK3VwZGF0ZV9z eW5jZWRfc2xvdHNfaW5hY3RpdmVfc2luY2Uodm9pZCkKK3sKKwlUaW1lc3RhbXBUeiBub3cgPSAw OworCisJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVE KTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOyBpKyspCisJ eworCQlSZXBsaWNhdGlvblNsb3QgKnMgPSAmUmVwbGljYXRpb25TbG90Q3RsLT5yZXBsaWNhdGlv bl9zbG90c1tpXTsKKworCQkvKiBDaGVjayBpZiBpdCBpcyBhIHN5bmNocm9uaXplZCBzbG90ICov CisJCWlmIChzLT5pbl91c2UgJiYgcy0+ZGF0YS5zeW5jZWQpCisJCXsKKwkJCUFzc2VydChTbG90 SXNMb2dpY2FsKHMpKTsKKworCQkJLyoKKwkJCSAqIFdlIGdldCB0aGUgY3VycmVudCB0aW1lIGJl Zm9yZWhhbmQgYW5kIG9ubHkgb25jZSB0byBhdm9pZAorCQkJICogc3lzdGVtIGNhbGxzIG92ZXJo ZWFkIHdoaWxlIGhvbGRpbmcgdGhlIGxvY2suCisJCQkgKi8KKwkJCWlmIChub3cgPT0gMCkKKwkJ CQlub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwkJCS8qCisJCQkgKiBTZXQgdGhlIHRp bWUgc2luY2UgdGhlIHNsb3QgaGFzIGJlY29tZSBpbmFjdGl2ZSBhZnRlciBzaHV0dGluZworCQkJ ICogZG93biBzbG90IHN5bmMgbWFjaGluZXJ5LiBUaGlzIGhlbHBzIGNvcnJlY3RseSBpbnRlcnBy ZXQgdGhlCisJCQkgKiB0aW1lIGlmIHRoZSBzdGFuZGJ5IGdldHMgcHJvbW90ZWQgd2l0aG91dCBh IHJlc3RhcnQuCisJCQkgKi8KKwkJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOworCQkJcy0+ aW5hY3RpdmVfc2luY2UgPSBub3c7CisJCQlTcGluTG9ja1JlbGVhc2UoJnMtPm11dGV4KTsKKwkJ fQorCX0KKworCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOworfQor CiAvKgogICogU2h1dCBkb3duIHRoZSBzbG90IHN5bmMgd29ya2VyLgogICovCkBAIC0xMzA5LDYg KzEzNTAsNyBAQCBTaHV0RG93blNsb3RTeW5jKHZvaWQpCiAJaWYgKFNsb3RTeW5jQ3R4LT5waWQg PT0gSW52YWxpZFBpZCkKIAl7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmNDdHgtPm11dGV4 KTsKKwkJdXBkYXRlX3N5bmNlZF9zbG90c19pbmFjdGl2ZV9zaW5jZSgpOwogCQlyZXR1cm47CiAJ fQogCVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsKQEAgLTEzNDEsNiArMTM4 Myw4IEBAIFNodXREb3duU2xvdFN5bmModm9pZCkKIAl9CiAKIAlTcGluTG9ja1JlbGVhc2UoJlNs b3RTeW5jQ3R4LT5tdXRleCk7CisKKwl1cGRhdGVfc3luY2VkX3Nsb3RzX2luYWN0aXZlX3NpbmNl KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXggZDc3OGMwYjkyMS4uNTU0OWNh OTY0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUg ImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKICNp bmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGls cy5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL3N0 cmluZy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtNjkwLDEzICs2OTEsMTAgQEAgUmVw bGljYXRpb25TbG90UmVsZWFzZSh2b2lkKQogCX0KIAogCS8qCi0JICogU2V0IHRoZSBsYXN0IGlu YWN0aXZlIHRpbWUgYWZ0ZXIgbWFya2luZyB0aGUgc2xvdCBpbmFjdGl2ZS4gV2UgZG9uJ3QKLQkg KiBzZXQgaXQgZm9yIHRoZSBzbG90cyBjdXJyZW50bHkgYmVpbmcgc3luY2VkIGZyb20gdGhlIHBy aW1hcnkgdG8gdGhlCi0JICogc3RhbmRieSBiZWNhdXNlIHN1Y2ggc2xvdHMgYXJlIHR5cGljYWxs eSBpbmFjdGl2ZSBhcyBkZWNvZGluZyBpcyBub3QKLQkgKiBhbGxvd2VkIG9uIHRob3NlLgorCSAq IFNldCB0aGUgdGltZSBzaW5jZSB0aGUgc2xvdCBoYXMgYmVjb21lIGluYWN0aXZlLiBXZSBnZXQg dGhlIGN1cnJlbnQKKwkgKiB0aW1lIGJlZm9yZWhhbmQgdG8gYXZvaWQgc3lzdGVtIGNhbGwgb3Zl cmhlYWQgd2hpbGUgaG9sZGluZyB0aGUgbG9jay4KIAkgKi8KLQlpZiAoIShSZWNvdmVyeUluUHJv Z3Jlc3MoKSAmJiBzbG90LT5kYXRhLnN5bmNlZCkpCi0JCW5vdyA9IEdldEN1cnJlbnRUaW1lc3Rh bXAoKTsKKwlub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKIAlpZiAoc2xvdC0+ZGF0YS5w ZXJzaXN0ZW5jeSA9PSBSU19QRVJTSVNURU5UKQogCXsKQEAgLTIzNjksMTYgKzIzNjcsMTEgQEAg UmVzdG9yZVNsb3RGcm9tRGlzayhjb25zdCBjaGFyICpuYW1lKQogCQlzbG90LT5hY3RpdmVfcGlk ID0gMDsKIAogCQkvKgotCQkgKiBXZSBzZXQgdGhlIGxhc3QgaW5hY3RpdmUgdGltZSBhZnRlciBs b2FkaW5nIHRoZSBzbG90IGZyb20gdGhlIGRpc2sKLQkJICogaW50byBtZW1vcnkuIFdob2V2ZXIg YWNxdWlyZXMgdGhlIHNsb3QgaS5lLiBtYWtlcyB0aGUgc2xvdCBhY3RpdmUKLQkJICogd2lsbCBy ZXNldCBpdC4gV2UgZG9uJ3Qgc2V0IGl0IGZvciB0aGUgc2xvdHMgY3VycmVudGx5IGJlaW5nIHN5 bmNlZAotCQkgKiBmcm9tIHRoZSBwcmltYXJ5IHRvIHRoZSBzdGFuZGJ5IGJlY2F1c2Ugc3VjaCBz bG90cyBhcmUgdHlwaWNhbGx5Ci0JCSAqIGluYWN0aXZlIGFzIGRlY29kaW5nIGlzIG5vdCBhbGxv d2VkIG9uIHRob3NlLgorCQkgKiBTZXQgdGhlIHRpbWUgc2luY2UgdGhlIHNsb3QgaGFzIGJlY29t ZSBpbmFjdGl2ZSBhZnRlciBsb2FkaW5nIHRoZQorCQkgKiBzbG90IGZyb20gdGhlIGRpc2sgaW50 byBtZW1vcnkuIFdob2V2ZXIgYWNxdWlyZXMgdGhlIHNsb3QgaS5lLgorCQkgKiBtYWtlcyB0aGUg c2xvdCBhY3RpdmUgd2lsbCByZXNldCBpdC4KIAkJICovCi0JCWlmICghKFJlY292ZXJ5SW5Qcm9n cmVzcygpICYmIHNsb3QtPmRhdGEuc3luY2VkKSkKLQkJCXNsb3QtPmluYWN0aXZlX3NpbmNlID0g R2V0Q3VycmVudFRpbWVzdGFtcCgpOwotCQllbHNlCi0JCQlzbG90LT5pbmFjdGl2ZV9zaW5jZSA9 IDA7CisJCXNsb3QtPmluYWN0aXZlX3NpbmNlID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwogCiAJ CXJlc3RvcmVkID0gdHJ1ZTsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bv c3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3Qv Q2x1c3Rlci5wbQppbmRleCBiMDgyOTY2MDVjLi5kZGZjMzIzNmYzIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90ZXN0L3Blcmwv UG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTMyNzYsNiArMzI3Niw0MCBAQCBzdWIgY3Jl YXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5CiAKID1wb2QKIAorPWl0ZW0gJG5vZGUtPmdldF9z bG90X2luYWN0aXZlX3NpbmNlX3ZhbHVlKHNlbGYsIHNsb3RfbmFtZSwgcmVmZXJlbmNlX3RpbWUp CisKK0dldCBpbmFjdGl2ZV9zaW5jZSBjb2x1bW4gdmFsdWUgZm9yIGEgZ2l2ZW4gcmVwbGljYXRp b24gc2xvdCB2YWxpZGF0aW5nIGl0CithZ2FpbnN0IG9wdGlvbmFsIHJlZmVyZW5jZSB0aW1lLgor Cis9Y3V0CisKK3N1YiBnZXRfc2xvdF9pbmFjdGl2ZV9zaW5jZV92YWx1ZQoreworCW15ICgkc2Vs ZiwgJHNsb3RfbmFtZSwgJHJlZmVyZW5jZV90aW1lKSA9IEBfOworCW15ICRuYW1lID0gJHNlbGYt Pm5hbWU7CisKKwlteSAkaW5hY3RpdmVfc2luY2UgPSAkc2VsZi0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCXFxKFNFTEVDVCBpbmFjdGl2ZV9zaW5jZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3Rz CisJCQlXSEVSRSBzbG90X25hbWUgPSAnJHNsb3RfbmFtZScgQU5EIGluYWN0aXZlX3NpbmNlIElT IE5PVCBOVUxMOykKKwkJKTsKKworCSMgQ2hlY2sgdGhhdCB0aGUgY2FwdHVyZWQgdGltZSBpcyBz YW5lCisJaWYgKGRlZmluZWQgJHJlZmVyZW5jZV90aW1lKQorCXsKKwkJaXMoJHNlbGYtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkJcXFbU0VMRUNUICckaW5hY3RpdmVfc2luY2UnOjp0aW1lc3Rh bXB0eiA+IHRvX3RpbWVzdGFtcCgwKSBBTkQKKwkJCQkJJyRpbmFjdGl2ZV9zaW5jZSc6OnRpbWVz dGFtcHR6ID49ICckcmVmZXJlbmNlX3RpbWUnOjp0aW1lc3RhbXB0ejtdCisJCQkpLAorCQkJJ3Qn LAorCQkJImxhc3QgaW5hY3RpdmUgdGltZSBmb3Igc2xvdCAkc2xvdF9uYW1lIGlzIHZhbGlkIG9u IG5vZGUgJG5hbWUiKQorCQkJb3IgZGllICJjb3VsZCBub3QgdmFsaWRhdGUgY2FwdHVyZWQgaW5h Y3RpdmVfc2luY2UgZm9yIHNsb3QgJHNsb3RfbmFtZSI7CisJfQorCisJcmV0dXJuICRpbmFjdGl2 ZV9zaW5jZTsKK30KKworPXBvZAorCiA9aXRlbSAkbm9kZS0+YWR2YW5jZV93YWwobnVtKQogCiBB ZHZhbmNlIFdBTCBvZiBub2RlIGJ5IGdpdmVuIG51bWJlciBvZiBzZWdtZW50cy4KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsIGIvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwKaW5kZXggM2I5YTMwNmE4Yi4uYzhlNWU1 MDU0ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQu cGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwKQEAgLTQ0 Myw3ICs0NDMsNyBAQCAkcHJpbWFyeTQtPnNhZmVfcHNxbCgKICMgR2V0IGluYWN0aXZlX3NpbmNl IHZhbHVlIGFmdGVyIHRoZSBzbG90J3MgY3JlYXRpb24uIE5vdGUgdGhhdCB0aGUgc2xvdCBpcwog IyBzdGlsbCBpbmFjdGl2ZSB0aWxsIGl0J3MgdXNlZCBieSB0aGUgc3RhbmRieSBiZWxvdy4KIG15 ICRpbmFjdGl2ZV9zaW5jZSA9Ci0JY2FwdHVyZV9hbmRfdmFsaWRhdGVfc2xvdF9pbmFjdGl2ZV9z aW5jZSgkcHJpbWFyeTQsICRzYjRfc2xvdCwgJHNsb3RfY3JlYXRpb25fdGltZSk7CisJJHByaW1h cnk0LT5nZXRfc2xvdF9pbmFjdGl2ZV9zaW5jZV92YWx1ZSgkc2I0X3Nsb3QsICRzbG90X2NyZWF0 aW9uX3RpbWUpOwogCiAkc3RhbmRieTQtPnN0YXJ0OwogCkBAIC01MDIsNyArNTAyLDcgQEAgJHB1 Ymxpc2hlcjQtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogIyBHZXQgaW5hY3RpdmVfc2luY2UgdmFs dWUgYWZ0ZXIgdGhlIHNsb3QncyBjcmVhdGlvbi4gTm90ZSB0aGF0IHRoZSBzbG90IGlzCiAjIHN0 aWxsIGluYWN0aXZlIHRpbGwgaXQncyB1c2VkIGJ5IHRoZSBzdWJzY3JpYmVyIGJlbG93LgogJGlu YWN0aXZlX3NpbmNlID0KLQljYXB0dXJlX2FuZF92YWxpZGF0ZV9zbG90X2luYWN0aXZlX3NpbmNl KCRwdWJsaXNoZXI0LCAkbHN1YjRfc2xvdCwgJHNsb3RfY3JlYXRpb25fdGltZSk7CisJJHB1Ymxp c2hlcjQtPmdldF9zbG90X2luYWN0aXZlX3NpbmNlX3ZhbHVlKCRsc3ViNF9zbG90LCAkc2xvdF9j cmVhdGlvbl90aW1lKTsKIAogJHN1YnNjcmliZXI0LT5zdGFydDsKICRzdWJzY3JpYmVyNC0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC01NDAsMjYgKzU0MCw0IEBAIGlzKCAkcHVibGlzaGVyNC0+ c2FmZV9wc3FsKAogJHB1Ymxpc2hlcjQtPnN0b3A7CiAkc3Vic2NyaWJlcjQtPnN0b3A7CiAKLSMg Q2FwdHVyZSBhbmQgdmFsaWRhdGUgaW5hY3RpdmVfc2luY2Ugb2YgYSBnaXZlbiBzbG90Lgotc3Vi IGNhcHR1cmVfYW5kX3ZhbGlkYXRlX3Nsb3RfaW5hY3RpdmVfc2luY2UKLXsKLQlteSAoJG5vZGUs ICRzbG90X25hbWUsICRzbG90X2NyZWF0aW9uX3RpbWUpID0gQF87Ci0KLQlteSAkaW5hY3RpdmVf c2luY2UgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JCXFxKFNFTEVDVCBpbmFjdGl2 ZV9zaW5jZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCi0JCQlXSEVSRSBzbG90X25hbWUgPSAn JHNsb3RfbmFtZScgQU5EIGluYWN0aXZlX3NpbmNlIElTIE5PVCBOVUxMOykKLQkJKTsKLQotCSMg Q2hlY2sgdGhhdCB0aGUgY2FwdHVyZWQgdGltZSBpcyBzYW5lCi0JaXMoICRub2RlLT5zYWZlX3Bz cWwoCi0JCQkncG9zdGdyZXMnLAotCQkJcXFbU0VMRUNUICckaW5hY3RpdmVfc2luY2UnOjp0aW1l c3RhbXB0eiA+IHRvX3RpbWVzdGFtcCgwKSBBTkQKLQkJCQknJGluYWN0aXZlX3NpbmNlJzo6dGlt ZXN0YW1wdHogPj0gJyRzbG90X2NyZWF0aW9uX3RpbWUnOjp0aW1lc3RhbXB0ejtdCi0JCSksCi0J CSd0JywKLQkJImxhc3QgaW5hY3RpdmUgdGltZSBmb3IgYW4gYWN0aXZlIHNsb3QgJHNsb3RfbmFt ZSBpcyBzYW5lIik7Ci0KLQlyZXR1cm4gJGluYWN0aXZlX3NpbmNlOwotfQotCiBkb25lX3Rlc3Rp bmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92 ZXJfc2xvdHNfc3luYy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX3N0YW5kYnlfZmFpbG92 ZXJfc2xvdHNfc3luYy5wbAppbmRleCBmNDdiZmQ3OGViLi41MGJlOTRlNjI5IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwK KysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5j LnBsCkBAIC0zNSw2ICszNSwxMyBAQCBteSAkc3Vic2NyaWJlcjEgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXIxJyk7CiAkc3Vic2NyaWJlcjEtPmluaXQ7CiAkc3Vi c2NyaWJlcjEtPnN0YXJ0OwogCisjIENhcHR1cmUgdGhlIHRpbWUgYmVmb3JlIHRoZSBsb2dpY2Fs IGZhaWxvdmVyIHNsb3QgaXMgY3JlYXRlZCBvbiB0aGUKKyMgcHJpbWFyeS4gV2UgbGF0ZXIgY2Fs bCB0aGlzIHB1Ymxpc2hlciBhcyBwcmltYXJ5IGFueXdheS4KK215ICRzbG90X2NyZWF0aW9uX3Rp bWVfb25fcHJpbWFyeSA9ICRwdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsK KyAgICBTRUxFQ1QgY3VycmVudF90aW1lc3RhbXA7CitdKTsKKwogIyBDcmVhdGUgYSBzbG90IG9u IHRoZSBwdWJsaXNoZXIgd2l0aCBmYWlsb3ZlciBkaXNhYmxlZAogJHB1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCAnaW5pdCcgRlJPTSBwZ19jcmVhdGVfbG9naWNhbF9y ZXBsaWNhdGlvbl9zbG90KCdsc3ViMV9zbG90JywgJ3Bnb3V0cHV0JywgZmFsc2UsIGZhbHNlLCBm YWxzZSk7IgpAQCAtMTc0LDYgKzE4MSwxMCBAQCAkcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgK IAkiU0VMRUNUIENPVU5UKCopIEZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyBX SEVSRSBzbG90X25hbWUgPSAnbHN1YjFfc2xvdCcgQU5EIGFjdGl2ZSA9ICdmJyIsCiAJMSk7CiAK KyMgQ2FwdHVyZSB0aGUgaW5hY3RpdmVfc2luY2Ugb2YgdGhlIHNsb3QgZnJvbSB0aGUgcHJpbWFy eQorbXkgJGluYWN0aXZlX3NpbmNlX29uX3ByaW1hcnkgPQorCSRwcmltYXJ5LT5nZXRfc2xvdF9p bmFjdGl2ZV9zaW5jZV92YWx1ZSgnbHN1YjFfc2xvdCcsICRzbG90X2NyZWF0aW9uX3RpbWVfb25f cHJpbWFyeSk7CisKICMgV2FpdCBmb3IgdGhlIHN0YW5kYnkgdG8gY2F0Y2ggdXAgc28gdGhhdCB0 aGUgc3RhbmRieSBpcyBub3QgbGFnZ2luZyBiZWhpbmQKICMgdGhlIHN1YnNjcmliZXIuCiAkcHJp bWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJHN0YW5kYnkxKTsKQEAgLTE4MSw2ICsxOTIs MTEgQEAgJHByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CiAjIFN5 bmNocm9uaXplIHRoZSBwcmltYXJ5IHNlcnZlciBzbG90cyB0byB0aGUgc3RhbmRieS4KICRzdGFu ZGJ5MS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfc3luY19yZXBsaWNhdGlvbl9z bG90cygpOyIpOwogCitteSAkc2xvdF9zeW5jX3RpbWUgPSAkc3RhbmRieTEtPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxcVsKKyAgICBTRUxFQ1QgY3VycmVudF90aW1lc3RhbXA7CitdKTsKKwog IyBDb25maXJtIHRoYXQgdGhlIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdHMgYXJlIGNyZWF0ZWQgb24g dGhlIHN0YW5kYnkgYW5kIGFyZQogIyBmbGFnZ2VkIGFzICdzeW5jZWQnCiBpcyggJHN0YW5kYnkx LT5zYWZlX3BzcWwoCkBAIC0xOTAsNiArMjA2LDE5IEBAIGlzKCAkc3RhbmRieTEtPnNhZmVfcHNx bCgKIAkidCIsCiAJJ2xvZ2ljYWwgc2xvdHMgaGF2ZSBzeW5jZWQgYXMgdHJ1ZSBvbiBzdGFuZGJ5 Jyk7CiAKKyMgQ2FwdHVyZSB0aGUgaW5hY3RpdmVfc2luY2Ugb2YgdGhlIHN5bmNlZCBzbG90IG9u IHRoZSBzdGFuZGJ5CitteSAkaW5hY3RpdmVfc2luY2Vfb25fc3RhbmRieSA9CisJJHN0YW5kYnkx LT5nZXRfc2xvdF9pbmFjdGl2ZV9zaW5jZV92YWx1ZSgnbHN1YjFfc2xvdCcsICRzbG90X2NyZWF0 aW9uX3RpbWVfb25fcHJpbWFyeSk7CisKKyMgU3luY2VkIHNsb3Qgb24gdGhlIHN0YW5kYnkgbXVz dCBnZXQgaXRzIG93biBpbmFjdGl2ZV9zaW5jZS4KK2lzKCAkc3RhbmRieTEtPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCAnJGluYWN0aXZlX3NpbmNlX29uX3ByaW1hcnknOjp0 aW1lc3RhbXB0eiA8ICckaW5hY3RpdmVfc2luY2Vfb25fc3RhbmRieSc6OnRpbWVzdGFtcHR6IEFO RAorCQkJJyRpbmFjdGl2ZV9zaW5jZV9vbl9zdGFuZGJ5Jzo6dGltZXN0YW1wdHogPCAnJHNsb3Rf c3luY190aW1lJzo6dGltZXN0YW1wdHo7IgorCSksCisJInQiLAorCSdzeW5jaHJvbml6ZWQgc2xv dCBoYXMgZ290IGl0cyBvd24gaW5hY3RpdmVfc2luY2UnKTsKKwogIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB0aGF0IHRoZSBzeW5jaHJv bml6ZWQgc2xvdCB3aWxsIGJlIGRyb3BwZWQgaWYgdGhlIGNvcnJlc3BvbmRpbmcgcmVtb3RlCiAj IHNsb3Qgb24gdGhlIHByaW1hcnkgc2VydmVyIGhhcyBiZWVuIGRyb3BwZWQuCkBAIC03NTAsOCAr Nzc5LDI4IEBAICRwcmltYXJ5LT5yZWxvYWQ7CiAkc3RhbmRieTEtPnN0YXJ0OwogJHByaW1hcnkt PndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRzdGFuZGJ5MSk7CiAKKyMgQ2FwdHVyZSB0aGUgdGlt ZSBiZWZvcmUgdGhlIHN0YW5kYnkgaXMgcHJvbW90ZWQKK215ICRwcm9tb3Rpb25fdGltZV9vbl9w cmltYXJ5ID0gJHN0YW5kYnkxLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgU0VM RUNUIGN1cnJlbnRfdGltZXN0YW1wOworXSk7CisKICRzdGFuZGJ5MS0+cHJvbW90ZTsKIAorIyBD YXB0dXJlIHRoZSBpbmFjdGl2ZV9zaW5jZSBvZiB0aGUgc3luY2VkIHNsb3QgYWZ0ZXIgdGhlIHBy b21vdGlvbi4KKyMgRXhwZWN0YXRpb24gaGVyZSBpcyB0aGF0IHRoZSBzbG90IGdldHMgaXRzIG93 biBpbmFjdGl2ZV9zaW5jZSBhcyBwYXJ0IG9mIHRoZQorIyBwcm9tb3Rpb24uIFdlIGRvIHRoaXMg Y2hlY2sgYmVmb3JlIHRoZSBzbG90IGlzIGVuYWJsZWQgb24gdGhlIG5ldyBwcmltYXJ5CisjIGJl bG93LCBvdGhlcndpc2UgdGhlIHNsb3QgZ2V0cyBhY3RpdmUgc2V0dGluZyBpbmFjdGl2ZV9zaW5j ZSB0byBOVUxMLgorbXkgJGluYWN0aXZlX3NpbmNlX29uX25ld19wcmltYXJ5ID0KKwkkc3RhbmRi eTEtPmdldF9zbG90X2luYWN0aXZlX3NpbmNlX3ZhbHVlKCdsc3ViMV9zbG90JywgJHByb21vdGlv bl90aW1lX29uX3ByaW1hcnkpOworCitpcyggJHN0YW5kYnkxLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgJyRpbmFjdGl2ZV9zaW5jZV9vbl9uZXdfcHJpbWFyeSc6OnRpbWVz dGFtcHR6ID4gJyRpbmFjdGl2ZV9zaW5jZV9vbl9wcmltYXJ5Jzo6dGltZXN0YW1wdHoiCisJKSwK KwkidCIsCisJJ3N5bmNocm9uaXplZCBzbG90IGhhcyBnb3QgaXRzIG93biBpbmFjdGl2ZV9zaW5j ZSBvbiB0aGUgbmV3IHByaW1hcnkgYWZ0ZXIgcHJvbW90aW9uJyk7CisKICMgVXBkYXRlIHN1YnNj cmlwdGlvbiB3aXRoIHRoZSBuZXcgcHJpbWFyeSdzIGNvbm5lY3Rpb24gaW5mbwogbXkgJHN0YW5k YnkxX2Nvbm5pbmZvID0gJHN0YW5kYnkxLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOwog JHN1YnNjcmliZXIxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLS0gCjIuMzQuMQoK --000000000000923f7c06152ac3a5 Content-Type: application/x-patch; name="v31-0002-Add-inactive_timeout-based-replication-slot-inva.patch" Content-Disposition: attachment; filename="v31-0002-Add-inactive_timeout-based-replication-slot-inva.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lujdhmyq1 RnJvbSAzODJhNjNiZDRjNDgzMThlYzUzYmRiZTI5MmIzYWIxZWNiYWViMzQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMyBBcHIgMjAyNCAwNTozMjoxNCArMDAw MApTdWJqZWN0OiBbUEFUQ0ggdjMxIDIvMl0gQWRkIGluYWN0aXZlX3RpbWVvdXQgYmFzZWQgcmVw bGljYXRpb24gc2xvdAogaW52YWxpZGF0aW9uLgoKVGlsbCBub3csIHBvc3RncmVzIGhhcyB0aGUg YWJpbGl0eSB0byBpbnZhbGlkYXRlIGluYWN0aXZlCnJlcGxpY2F0aW9uIHNsb3RzIGJhc2VkIG9u IHRoZSBhbW91bnQgb2YgV0FMIChzZXQgdmlhCm1heF9zbG90X3dhbF9rZWVwX3NpemUgR1VDKSB0 aGF0IHdpbGwgYmUgbmVlZGVkIGZvciB0aGUgc2xvdHMgaW4KY2FzZSB0aGV5IGJlY29tZSBhY3Rp dmUuIEhvd2V2ZXIsIGNob29zaW5nIGEgZGVmYXVsdCB2YWx1ZSBmb3IKbWF4X3Nsb3Rfd2FsX2tl ZXBfc2l6ZSBpcyB0cmlja3kuIEJlY2F1c2UgdGhlIGFtb3VudCBvZiBXQUwgYQpjdXN0b21lciBn ZW5lcmF0ZXMsIGFuZCB0aGVpciBhbGxvY2F0ZWQgc3RvcmFnZSB3aWxsIHZhcnkgZ3JlYXRseQpp biBwcm9kdWN0aW9uLCBtYWtpbmcgaXQgZGlmZmljdWx0IHRvIHBpbiBkb3duIGEgb25lLXNpemUt Zml0cy1hbGwKdmFsdWUuIEl0IGlzIG9mdGVuIGVhc3kgZm9yIGRldmVsb3BlcnMgdG8gc2V0IGEg dGltZW91dCBvZiBzYXkgMQpvciAyIG9yIDMgZGF5cyBhdCBzbG90IGxldmVsLCBhZnRlciB3aGlj aCB0aGUgaW5hY3RpdmUgc2xvdHMgZ2V0CmRyb3BwZWQuCgpUbyBhY2hpZXZlIHRoZSBhYm92ZSwg cG9zdGdyZXMgaW50cm9kdWNlcyBhIEdVQyBhbGxvd2luZyB1c2VycwpzZXQgaW5hY3RpdmUgdGlt ZW91dCBhbmQgdGhlbiBhIHNsb3Qgc3RheXMgaW5hY3RpdmUgZm9yIHRoaXMgbXVjaAphbW91bnQg b2YgdGltZSBpdCBpbnZhbGlkYXRlcyB0aGUgc2xvdC4gVGhlIGludmFsaWRhdGlvbiBjaGVjawpo YXBwZW5zIGF0IHZhcmlvdXMgbG9jYXRpb25zIHRvIGhlbHAgYmVpbmcgYXMgbGF0ZXN0IGFzIHBv c3NpYmxlLAp0aGVzZSBsb2NhdGlvbnMgaW5jbHVkZSB0aGUgZm9sbG93aW5nOgotIFdoZW5ldmVy IHRoZSBzbG90IGlzIGFjcXVpcmVkIGFuZCB0aGUgc2xvdCBhY3F1aXNpdGlvbiBlcnJvcnMKb3V0 IGlmIGludmFsaWRhdGVkLgotIER1cmluZyBjaGVja3BvaW50Ck5vdGUgdGhhdCB0aGlzIG5ldyBp bnZhbGlkYXRpb24gbWVjaGFuaXNtIHdvbid0IGtpY2staW4gZm9yIHRoZQpzbG90cyB0aGF0IGFy ZSBjdXJyZW50bHkgYmVpbmcgc3luY2VkIGZyb20gdGhlIHByaW1hcnkgdG8gdGhlCnN0YW5kYnku CgpBdXRob3I6IEJoYXJhdGggUnVwaXJlZGR5ClJldmlld2VkLWJ5OiBCZXJ0cmFuZCBEcm91dm90 LCBBbWl0IEthcGlsYSwgU2h2ZXRhIE1hbGlrCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3Rn cmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FMajJBQ1c0YVVlLV91RlFPamRXQ0VOLXhYb0xHaG12UkZu TDhTTndfVFo1bkplK2F3QG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sICAgICAgICAgICAgICAgICAgICAgIHwgIDMzICsrKwogZG9jL3NyYy9zZ21sL3N5c3RlbS12 aWV3cy5zZ21sICAgICAgICAgICAgICAgIHwgICA3ICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2Fs L2xvZ2ljYWxmdW5jcy5jICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zbG90c3luYy5jICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMgICAgICAgICAgICAgICAgfCAyMDMgKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc2xvdGZ1bmNzLmMgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9zbG90LmggICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy90ZXN0L3JlY292ZXJ5L21lc29u LmJ1aWxkICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWNvdmVyeS90LzA0NF9p bnZhbGlkYXRlX3Nsb3RzLnBsICAgfCAyNzkgKysrKysrKysrKysrKysrKysrCiAxMyBmaWxlcyBj aGFuZ2VkLCA1MzQgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDRfaW52YWxpZGF0ZV9zbG90cy5wbAoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bAppbmRleCA2MjQ1MThlMGIwLi4wYTVlZDAwZDhkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv Y29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00NTQ3LDYgKzQ1 NDcsMzkgQEAgcmVzdG9yZV9jb21tYW5kID0gJ2NvcHkgIkM6XFxzZXJ2ZXJcXGFyY2hpdmVkaXJc XCVmIiAiJXAiJyAgIyBXaW5kb3dzCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3Rl bnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcmVwbGljYXRpb24tc2xvdC1pbmFj dGl2ZS10aW1lb3V0IiB4cmVmbGFiZWw9InJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91 dCI+CisgICAgICA8dGVybT48dmFybmFtZT5yZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVv dXQ8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+Cisg ICAgICAgPHByaW1hcnk+PHZhcm5hbWU+cmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0 PC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5k ZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgor ICAgICAgICBJbnZhbGlkYXRlcyByZXBsaWNhdGlvbiBzbG90cyB0aGF0IGFyZSBpbmFjdGl2ZSBm b3IgbG9uZ2VyIHRoZQorICAgICAgICBzcGVjaWZpZWQgYW1vdW50IG9mIHRpbWUuIElmIHRoaXMg dmFsdWUgaXMgc3BlY2lmaWVkIHdpdGhvdXQgdW5pdHMsCisgICAgICAgIGl0IGlzIHRha2VuIGFz IHNlY29uZHMuIEEgdmFsdWUgb2YgemVybyAod2hpY2ggaXMgZGVmYXVsdCkgZGlzYWJsZXMKKyAg ICAgICAgdGhlIHRpbWVvdXQgbWVjaGFuaXNtLiBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBz ZXQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPiBm aWxlIG9yIG9uIHRoZSBzZXJ2ZXIKKyAgICAgICAgY29tbWFuZCBsaW5lLgorICAgICAgIDwvcGFy YT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgdGltZW91dCBpcyBtZWFzdXJlZCBmcm9t IHRoZSB0aW1lIHNpbmNlIHRoZSBzbG90IGhhcyBiZWNvbWUKKyAgICAgICAgaW5hY3RpdmUgKGtu b3duIGZyb20gaXRzCisgICAgICAgIDxzdHJ1Y3RmaWVsZD5pbmFjdGl2ZV9zaW5jZTwvc3RydWN0 ZmllbGQ+IHZhbHVlKSB1bnRpbCBpdCBnZXRzCisgICAgICAgIHVzZWQgKGkuZS4sIGl0cyA8c3Ry dWN0ZmllbGQ+YWN0aXZlPC9zdHJ1Y3RmaWVsZD4gaXMgc2V0IHRvIHRydWUpLgorICAgICAgIDwv cGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBOb3RlIHRoYXQgdGhpcyBpbmFjdGl2ZSB0 aW1lb3V0IGludmFsaWRhdGlvbiBtZWNoYW5pc20gaXMgbm90CisgICAgICAgIGFwcGxpY2FibGUg Zm9yIHNsb3RzIG9uIHRoZSBzdGFuZGJ5IHRoYXQgYXJlIGJlaW5nIHN5bmNlZCBmcm9tIGEKKyAg ICAgICAgcHJpbWFyeSBzZXJ2ZXIgKHdob3NlIDxzdHJ1Y3RmaWVsZD5zeW5jZWQ8L3N0cnVjdGZp ZWxkPiBmaWVsZCBpcworICAgICAgICA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPikgYXMgc3VjaCBz eW5jZWQgc2xvdHMgZG9uJ3QgYWN0dWFsbHkgcGVyZm9ybQorICAgICAgICBsb2dpY2FsIGRlY29k aW5nLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVu dHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy10cmFjay1jb21taXQtdGltZXN0YW1w IiB4cmVmbGFiZWw9InRyYWNrX2NvbW1pdF90aW1lc3RhbXAiPgogICAgICAgPHRlcm0+PHZhcm5h bWU+dHJhY2tfY29tbWl0X3RpbWVzdGFtcDwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+ KQogICAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmll d3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCBiNjQyNzRhMWZi Li4zZDMzYWZhNzk2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0yNTgwLDYgKzI1ODAsMTMg QEAgU0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMg cHB4CiAgICAgICAgICAgcGVyZm9ybSBsb2dpY2FsIGRlY29kaW5nLiAgSXQgaXMgc2V0IG9ubHkg Zm9yIGxvZ2ljYWwgc2xvdHMuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+ CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFs PmluYWN0aXZlX3RpbWVvdXQ8L2xpdGVyYWw+IG1lYW5zIHRoYXQgdGhlIHNsb3QgaGFzIGJlZW4K KyAgICAgICAgICBpbmFjdGl2ZSBmb3IgdGhlIGR1cmF0aW9uIHNwZWNpZmllZCBieQorICAgICAg ICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1yZXBsaWNhdGlvbi1zbG90LWluYWN0aXZlLXRpbWVvdXQi Lz4gcGFyYW1ldGVyLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93Pgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3Mu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXgg YjRkZDVjY2U3NS4uNTZmYzFhNDVhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xvZ2ljYWxmdW5jcy5jCkBAIC0xOTcsNyArMTk3LDcgQEAgcGdfbG9naWNhbF9zbG90 X2dldF9jaGFuZ2VzX2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29uZmlybSwg Ym9vbCBiaW4KIAllbHNlCiAJCWVuZF9vZl93YWwgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwp OwogCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpuYW1lKSwgdHJ1ZSk7CisJUmVw bGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpuYW1lKSwgdHJ1ZSwgdHJ1ZSk7CiAKIAlQR19U UlkoKTsKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Ns b3RzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKaW5k ZXggNDA1MGJkNDBmOC4uMDhkZTkyOTk3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvc2xvdHN5bmMuYwpAQCAtMzE3LDcgKzMxNyw3IEBAIGRyb3BfbG9jYWxfb2Jzb2xldGVf c2xvdHMoTGlzdCAqcmVtb3RlX3Nsb3RfbGlzdCkKIAogCQkJaWYgKHN5bmNlZF9zbG90KQogCQkJ ewotCQkJCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cihsb2NhbF9zbG90LT5kYXRhLm5h bWUpLCB0cnVlKTsKKwkJCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIobG9jYWxfc2xv dC0+ZGF0YS5uYW1lKSwgdHJ1ZSwgZmFsc2UpOwogCQkJCVJlcGxpY2F0aW9uU2xvdERyb3BBY3F1 aXJlZCgpOwogCQkJfQogCkBAIC01MjcsNyArNTI3LDcgQEAgc3luY2hyb25pemVfb25lX3Nsb3Qo UmVtb3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9pZCByZW1vdGVfZGJpZCkKIAkJICogSW52YWxpZGF0 ZVBvc3NpYmx5T2Jzb2xldGVTbG90KCkgd2hlcmUgaXQgaW52YWxpZGF0ZXMgc2xvdCBkaXJlY3Rs eQogCQkgKiBpZiB0aGUgc2xvdCBpcyBub3QgYWNxdWlyZWQgYnkgb3RoZXIgcHJvY2Vzc2VzLgog CQkgKi8KLQkJUmVwbGljYXRpb25TbG90QWNxdWlyZShyZW1vdGVfc2xvdC0+bmFtZSwgdHJ1ZSk7 CisJCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUocmVtb3RlX3Nsb3QtPm5hbWUsIHRydWUsIGZhbHNl KTsKIAogCQlBc3NlcnQoc2xvdCA9PSBNeVJlcGxpY2F0aW9uU2xvdCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3QuYwppbmRleCA1NTQ5Y2E5NjQwLi5lNTgzZDBlZTgyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCkBAIC0xMDgsMTAgKzEwOCwxMSBAQCBjb25zdCBjaGFyICpjb25zdCBTbG90SW52YWxpZGF0 aW9uQ2F1c2VzW10gPSB7CiAJW1JTX0lOVkFMX1dBTF9SRU1PVkVEXSA9ICJ3YWxfcmVtb3ZlZCIs CiAJW1JTX0lOVkFMX0hPUklaT05dID0gInJvd3NfcmVtb3ZlZCIsCiAJW1JTX0lOVkFMX1dBTF9M RVZFTF0gPSAid2FsX2xldmVsX2luc3VmZmljaWVudCIsCisJW1JTX0lOVkFMX0lOQUNUSVZFX1RJ TUVPVVRdID0gImluYWN0aXZlX3RpbWVvdXQiLAogfTsKIAogLyogTWF4aW11bSBudW1iZXIgb2Yg aW52YWxpZGF0aW9uIGNhdXNlcyAqLwotI2RlZmluZQlSU19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lO VkFMX1dBTF9MRVZFTAorI2RlZmluZQlSU19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX0lOQUNU SVZFX1RJTUVPVVQKIAogU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihTbG90SW52YWxpZGF0aW9u Q2F1c2VzKSA9PSAoUlNfSU5WQUxfTUFYX0NBVVNFUyArIDEpLAogCQkJCSAiYXJyYXkgbGVuZ3Ro IG1pc21hdGNoIik7CkBAIC0xNDEsNiArMTQyLDcgQEAgUmVwbGljYXRpb25TbG90ICpNeVJlcGxp Y2F0aW9uU2xvdCA9IE5VTEw7CiAvKiBHVUMgdmFyaWFibGVzICovCiBpbnQJCQltYXhfcmVwbGlj YXRpb25fc2xvdHMgPSAxMDsgLyogdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlcGxpY2F0aW9uCiAJ CQkJCQkJCQkJICogc2xvdHMgKi8KK2ludAkJCXJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGlt ZW91dCA9IDA7CiAKIC8qCiAgKiBUaGlzIEdVQyBsaXN0cyBzdHJlYW1pbmcgcmVwbGljYXRpb24g c3RhbmRieSBzZXJ2ZXIgc2xvdCBuYW1lcyB0aGF0CkBAIC0xNTksNiArMTYxLDcgQEAgc3RhdGlj IFhMb2dSZWNQdHIgc3Nfb2xkZXN0X2ZsdXNoX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCiBz dGF0aWMgdm9pZCBSZXBsaWNhdGlvblNsb3RTaG1lbUV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7 CiBzdGF0aWMgdm9pZCBSZXBsaWNhdGlvblNsb3REcm9wUHRyKFJlcGxpY2F0aW9uU2xvdCAqc2xv dCk7CitzdGF0aWMgYm9vbCBJbnZhbGlkYXRlUG9zc2libHlJbmFjdGl2ZVNsb3QoUmVwbGljYXRp b25TbG90ICpzbG90KTsKIAogLyogaW50ZXJuYWwgcGVyc2lzdGVuY3kgZnVuY3Rpb25zICovCiBz dGF0aWMgdm9pZCBSZXN0b3JlU2xvdEZyb21EaXNrKGNvbnN0IGNoYXIgKm5hbWUpOwpAQCAtNTM2 LDkgKzUzOSwxNCBAQCBSZXBsaWNhdGlvblNsb3ROYW1lKGludCBpbmRleCwgTmFtZSBuYW1lKQog ICoKICAqIEFuIGVycm9yIGlzIHJhaXNlZCBpZiBub3dhaXQgaXMgdHJ1ZSBhbmQgdGhlIHNsb3Qg aXMgY3VycmVudGx5IGluIHVzZS4gSWYKICAqIG5vd2FpdCBpcyBmYWxzZSwgd2Ugc2xlZXAgdW50 aWwgdGhlIHNsb3QgaXMgcmVsZWFzZWQgYnkgdGhlIG93bmluZyBwcm9jZXNzLgorICoKKyAqIElm IGNoZWNrX2Zvcl90aW1lb3V0X2ludmFsaWRhdGlvbiBpcyB0cnVlLCB0aGUgc2xvdCBpcyBjaGVj a2VkIGZvcgorICogaW52YWxpZGF0aW9uIGJhc2VkIG9uIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3Rp dmVfdGltZW91dCBHVUMsIGFuZCBhbiBlcnJvciBpcworICogcmFpc2VkIGFmdGVyIG1ha2luZyB0 aGUgc2xvdCBvdXJzLgogICovCiB2b2lkCi1SZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNvbnN0IGNo YXIgKm5hbWUsIGJvb2wgbm93YWl0KQorUmVwbGljYXRpb25TbG90QWNxdWlyZShjb25zdCBjaGFy ICpuYW1lLCBib29sIG5vd2FpdCwKKwkJCQkJICAgYm9vbCBjaGVja19mb3JfdGltZW91dF9pbnZh bGlkYXRpb24pCiB7CiAJUmVwbGljYXRpb25TbG90ICpzOwogCWludAkJCWFjdGl2ZV9waWQ7CkBA IC02MTYsNiArNjI0LDM0IEBAIHJldHJ5OgogCS8qIFdlIG1hZGUgdGhpcyBzbG90IGFjdGl2ZSwg c28gaXQncyBvdXJzIG5vdy4gKi8KIAlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7CiAKKwkvKgorCSAq IENoZWNrIGlmIHRoZSBnaXZlbiBzbG90IGNhbiBiZSBpbnZhbGlkYXRlZCBiYXNlZCBvbiBpdHMg aW5hY3RpdmUKKwkgKiB0aW1lb3V0LiBJZiB5ZXMsIHBlcnNpc3QgdGhlIGludmFsaWRhdGVkIHN0 YXRlIHRvIGRpc2sgYW5kIHRoZW4gZXJyb3IKKwkgKiBvdXQuIFdlIGRvIHRoaXMgb25seSBhZnRl ciBtYWtpbmcgdGhlIHNsb3Qgb3VycyB0byBhdm9pZCBhbnlvbmUgZWxzZQorCSAqIGFjcXVpcmlu ZyBpdCB3aGlsZSB3ZSBjaGVjayBmb3IgaXRzIGludmFsaWRhdGlvbi4KKwkgKi8KKwlpZiAoY2hl Y2tfZm9yX3RpbWVvdXRfaW52YWxpZGF0aW9uKQorCXsKKwkJLyogVGhlIHNsb3QgaXMgb3VycyBi eSBub3cgKi8KKwkJQXNzZXJ0KHMtPmFjdGl2ZV9waWQgPT0gTXlQcm9jUGlkKTsKKworCQlpZiAo SW52YWxpZGF0ZUluYWN0aXZlUmVwbGljYXRpb25TbG90KHMsIHRydWUpKQorCQl7CisJCQkvKgor CQkJICogSWYgdGhlIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHJlY2FsY3VsYXRlIHRoZSBy ZXNvdXJjZQorCQkJICogbGltaXRzLgorCQkJICovCisJCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0 ZVJlcXVpcmVkWG1pbihmYWxzZSk7CisJCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVk TFNOKCk7CisKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJjYW4gbm8gbG9uZ2Vy IGdldCBjaGFuZ2VzIGZyb20gcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJCU5hbWVT dHIoTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEubmFtZSkpLAorCQkJCQkgZXJyZGV0YWlsKCJUaGlz IHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgYmVjYXVzZSBpdCB3YXMgaW5hY3RpdmUgZm9yIG1v cmUgdGhhbiB0aGUgdGltZSBzcGVjaWZpZWQgYnkgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90 aW1lb3V0IHBhcmFtZXRlci4iKSkpOworCQl9CisJfQorCiAJLyoKIAkgKiBUaGUgY2FsbCB0byBw Z3N0YXRfYWNxdWlyZV9yZXBsc2xvdCgpIHByb3RlY3RzIGFnYWluc3Qgc3RhdHMgZm9yIGEKIAkg KiBkaWZmZXJlbnQgc2xvdCwgZnJvbSBiZWZvcmUgYSByZXN0YXJ0IG9yIHN1Y2gsIGJlaW5nIHBy ZXNlbnQgZHVyaW5nCkBAIC03ODIsNyArODE4LDcgQEAgUmVwbGljYXRpb25TbG90RHJvcChjb25z dCBjaGFyICpuYW1lLCBib29sIG5vd2FpdCkKIHsKIAlBc3NlcnQoTXlSZXBsaWNhdGlvblNsb3Qg PT0gTlVMTCk7CiAKLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUsIG5vd2FpdCk7CisJUmVw bGljYXRpb25TbG90QWNxdWlyZShuYW1lLCBub3dhaXQsIGZhbHNlKTsKIAogCS8qCiAJICogRG8g bm90IGFsbG93IHVzZXJzIHRvIGRyb3AgdGhlIHNsb3RzIHdoaWNoIGFyZSBjdXJyZW50bHkgYmVp bmcgc3luY2VkCkBAIC04MDUsNyArODQxLDcgQEAgUmVwbGljYXRpb25TbG90QWx0ZXIoY29uc3Qg Y2hhciAqbmFtZSwgYm9vbCBmYWlsb3ZlcikKIHsKIAlBc3NlcnQoTXlSZXBsaWNhdGlvblNsb3Qg PT0gTlVMTCk7CiAKLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUsIGZhbHNlKTsKKwlSZXBs aWNhdGlvblNsb3RBY3F1aXJlKG5hbWUsIGZhbHNlLCB0cnVlKTsKIAogCWlmIChTbG90SXNQaHlz aWNhbChNeVJlcGxpY2F0aW9uU2xvdCkpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC05ODEsNiArMTAx NywyMCBAQCBSZXBsaWNhdGlvblNsb3REcm9wUHRyKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCkKIAlM V0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdEFsbG9jYXRpb25Mb2NrKTsKIH0KIAorLyoKKyAq IEhlbHBlciBmb3IgUmVwbGljYXRpb25TbG90U2F2ZQorICovCitzdGF0aWMgaW5saW5lIHZvaWQK K1NhdmVHaXZlblJlcGxpY2F0aW9uU2xvdChSZXBsaWNhdGlvblNsb3QgKnNsb3QsIGludCBlbGV2 ZWwpCit7CisJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOworCisJQXNzZXJ0KHNsb3QgIT0gTlVMTCk7 CisKKwlzcHJpbnRmKHBhdGgsICJwZ19yZXBsc2xvdC8lcyIsIE5hbWVTdHIoc2xvdC0+ZGF0YS5u YW1lKSk7CisJU2F2ZVNsb3RUb1BhdGgoc2xvdCwgcGF0aCwgZWxldmVsKTsKK30KKwogLyoKICAq IFNlcmlhbGl6ZSB0aGUgY3VycmVudGx5IGFjcXVpcmVkIHNsb3QncyBzdGF0ZSBmcm9tIG1lbW9y eSB0byBkaXNrLCB0aGVyZWJ5CiAgKiBndWFyYW50ZWVpbmcgdGhlIGN1cnJlbnQgc3RhdGUgd2ls bCBzdXJ2aXZlIGEgY3Jhc2guCkBAIC05ODgsMTIgKzEwMzgsMjEgQEAgUmVwbGljYXRpb25TbG90 RHJvcFB0cihSZXBsaWNhdGlvblNsb3QgKnNsb3QpCiB2b2lkCiBSZXBsaWNhdGlvblNsb3RTYXZl KHZvaWQpCiB7Ci0JY2hhcgkJcGF0aFtNQVhQR1BBVEhdOworCVNhdmVHaXZlblJlcGxpY2F0aW9u U2xvdChNeVJlcGxpY2F0aW9uU2xvdCwgRVJST1IpOworfQogCi0JQXNzZXJ0KE15UmVwbGljYXRp b25TbG90ICE9IE5VTEwpOworLyoKKyAqIEhlbHBlciBmb3IgUmVwbGljYXRpb25TbG90TWFya0Rp cnR5CisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorTWFya0dpdmVuUmVwbGljYXRpb25TbG90RGly dHkoUmVwbGljYXRpb25TbG90ICpzbG90KQoreworCUFzc2VydChzbG90ICE9IE5VTEwpOwogCi0J c3ByaW50ZihwYXRoLCAicGdfcmVwbHNsb3QvJXMiLCBOYW1lU3RyKE15UmVwbGljYXRpb25TbG90 LT5kYXRhLm5hbWUpKTsKLQlTYXZlU2xvdFRvUGF0aChNeVJlcGxpY2F0aW9uU2xvdCwgcGF0aCwg RVJST1IpOworCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOworCXNsb3QtPmp1c3RfZGly dGllZCA9IHRydWU7CisJc2xvdC0+ZGlydHkgPSB0cnVlOworCVNwaW5Mb2NrUmVsZWFzZSgmc2xv dC0+bXV0ZXgpOwogfQogCiAvKgpAQCAtMTAwNiwxNCArMTA2NSw3IEBAIFJlcGxpY2F0aW9uU2xv dFNhdmUodm9pZCkKIHZvaWQKIFJlcGxpY2F0aW9uU2xvdE1hcmtEaXJ0eSh2b2lkKQogewotCVJl cGxpY2F0aW9uU2xvdCAqc2xvdCA9IE15UmVwbGljYXRpb25TbG90OwotCi0JQXNzZXJ0KE15UmVw bGljYXRpb25TbG90ICE9IE5VTEwpOwotCi0JU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7 Ci0JTXlSZXBsaWNhdGlvblNsb3QtPmp1c3RfZGlydGllZCA9IHRydWU7Ci0JTXlSZXBsaWNhdGlv blNsb3QtPmRpcnR5ID0gdHJ1ZTsKLQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKKwlN YXJrR2l2ZW5SZXBsaWNhdGlvblNsb3REaXJ0eShNeVJlcGxpY2F0aW9uU2xvdCk7CiB9CiAKIC8q CkBAIC0xNTA3LDYgKzE1NTksOSBAQCBSZXBvcnRTbG90SW52YWxpZGF0aW9uKFJlcGxpY2F0aW9u U2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQljYXNlIFJTX0lOVkFMX1dBTF9MRVZFTDoK IAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmVycl9kZXRhaWwsIF8oIkxvZ2ljYWwgZGVjb2Rp bmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgPj0gbG9naWNhbCBvbiB0aGUgcHJpbWFy eSBzZXJ2ZXIuIikpOwogCQkJYnJlYWs7CisJCWNhc2UgUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9V VDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmVycl9kZXRhaWwsIF8oIlRoZSBzbG90IGhh cyBiZWVuIGluYWN0aXZlIGZvciBtb3JlIHRoYW4gdGhlIHRpbWUgc3BlY2lmaWVkIGJ5IHJlcGxp Y2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCBwYXJhbWV0ZXIuIikpOworCQkJYnJlYWs7CiAJ CWNhc2UgUlNfSU5WQUxfTk9ORToKIAkJCXBnX3VucmVhY2hhYmxlKCk7CiAJfQpAQCAtMTU1MSw2 ICsxNjA2LDEzIEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNs b3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAlYTG9nUmVjUHRyCWluaXRpYWxfcmVzdGFydF9s c24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVz ZSBpbnZhbGlkYXRpb25fY2F1c2VfcHJldiBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBSU19J TlZBTF9OT05FOwogCisJLyoKKwkgKiBUaGlzIGZ1bmN0aW9uIGlzbid0IGV4cGVjdGVkIHRvIGJl IGNhbGxlZCBmb3IgaW5hY3RpdmUgdGltZW91dCBiYXNlZAorCSAqIGludmFsaWRhdGlvbi4gQSBz ZXBhcmF0ZSBmdW5jdGlvbiBJbnZhbGlkYXRlSW5hY3RpdmVSZXBsaWNhdGlvblNsb3QgaXMKKwkg KiB0byBiZSB1c2VkIGZvciB0aGF0LgorCSAqLworCUFzc2VydChjYXVzZSAhPSBSU19JTlZBTF9J TkFDVElWRV9USU1FT1VUKTsKKwogCWZvciAoOzspCiAJewogCQlYTG9nUmVjUHRyCXJlc3RhcnRf bHNuOwpAQCAtMTYyMCw2ICsxNjgyLDEwIEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xv dChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJCQkJaWYgKFNsb3RJ c0xvZ2ljYWwocykpCiAJCQkJCQlpbnZhbGlkYXRpb25fY2F1c2UgPSBjYXVzZTsKIAkJCQkJYnJl YWs7CisJCQkJY2FzZSBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUOgorCQkJCQkvKiBub3QgcmVh Y2hhYmxlICovCisJCQkJCUFzc2VydChmYWxzZSk7CisJCQkJCWJyZWFrOwogCQkJCWNhc2UgUlNf SU5WQUxfTk9ORToKIAkJCQkJcGdfdW5yZWFjaGFibGUoKTsKIAkJCX0KQEAgLTE3NzMsNiArMTgz OSw3IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZh bGlkYXRpb25DYXVzZSBjYXVzZSwKICAqIC0gUlNfSU5WQUxfSE9SSVpPTjogcmVxdWlyZXMgYSBz bmFwc2hvdCA8PSB0aGUgZ2l2ZW4gaG9yaXpvbiBpbiB0aGUgZ2l2ZW4KICAqICAgZGI7IGRib2lk IG1heSBiZSBJbnZhbGlkT2lkIGZvciBzaGFyZWQgcmVsYXRpb25zCiAgKiAtIFJTX0lOVkFMX1dB TF9MRVZFTDogaXMgbG9naWNhbAorICogLSBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUOiBpbmFj dGl2ZSBzbG90IHRpbWVvdXQgb2NjdXJzCiAgKgogICogTkIgLSB0aGlzIHJ1bnMgYXMgcGFydCBv ZiBjaGVja3BvaW50LCBzbyBhdm9pZCByYWlzaW5nIGVycm9ycyBpZiBwb3NzaWJsZS4KICAqLwpA QCAtMTc4OCw2ICsxODU1LDEzIEBAIEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMo UmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJQXNzZXJ0KGNhdXNlICE9 IFJTX0lOVkFMX1dBTF9SRU1PVkVEIHx8IG9sZGVzdFNlZ25vID4gMCk7CiAJQXNzZXJ0KGNhdXNl ICE9IFJTX0lOVkFMX05PTkUpOwogCisJLyoKKwkgKiBUaGlzIGZ1bmN0aW9uIGlzbid0IGV4cGVj dGVkIHRvIGJlIGNhbGxlZCBmb3IgaW5hY3RpdmUgdGltZW91dCBiYXNlZAorCSAqIGludmFsaWRh dGlvbi4gQSBzZXBhcmF0ZSBmdW5jdGlvbiBJbnZhbGlkYXRlSW5hY3RpdmVSZXBsaWNhdGlvblNs b3QgaXMKKwkgKiB0byBiZSB1c2VkIGZvciB0aGF0LgorCSAqLworCUFzc2VydChjYXVzZSAhPSBS U19JTlZBTF9JTkFDVElWRV9USU1FT1VUKTsKKwogCWlmIChtYXhfcmVwbGljYXRpb25fc2xvdHMg PT0gMCkKIAkJcmV0dXJuIGludmFsaWRhdGVkOwogCkBAIC0xODI0LDYgKzE4OTgsODggQEAgcmVz dGFydDoKIAlyZXR1cm4gaW52YWxpZGF0ZWQ7CiB9CiAKKy8qCisgKiBJbnZhbGlkYXRlIGdpdmVu IHNsb3QgYmFzZWQgb24gcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0IEdVQy4KKyAq CisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNsb3QgaGFzIGdvdCBpbnZhbGlkYXRlZC4KKyAqCisg KiBOQiAtIHRoaXMgZnVuY3Rpb24gYWxzbyBydW5zIGFzIHBhcnQgb2YgY2hlY2twb2ludCwgc28g YXZvaWQgcmFpc2luZyBlcnJvcnMKKyAqIGlmIHBvc3NpYmxlLgorICovCitib29sCitJbnZhbGlk YXRlSW5hY3RpdmVSZXBsaWNhdGlvblNsb3QoUmVwbGljYXRpb25TbG90ICpzbG90LCBib29sIHBl cnNpc3Rfc3RhdGUpCit7CisJaWYgKCFJbnZhbGlkYXRlUG9zc2libHlJbmFjdGl2ZVNsb3Qoc2xv dCkpCisJCXJldHVybiBmYWxzZTsKKworCS8qIE1ha2Ugc3VyZSB0aGUgaW52YWxpZGF0ZWQgc3Rh dGUgcGVyc2lzdHMgYWNyb3NzIHNlcnZlciByZXN0YXJ0ICovCisJTWFya0dpdmVuUmVwbGljYXRp b25TbG90RGlydHkoc2xvdCk7CisKKwlpZiAocGVyc2lzdF9zdGF0ZSkKKwkJU2F2ZUdpdmVuUmVw bGljYXRpb25TbG90KHNsb3QsIEVSUk9SKTsKKworCVJlcG9ydFNsb3RJbnZhbGlkYXRpb24oUlNf SU5WQUxfSU5BQ1RJVkVfVElNRU9VVCwgZmFsc2UsIDAsCisJCQkJCQkgICBzbG90LT5kYXRhLm5h bWUsIEludmFsaWRYTG9nUmVjUHRyLAorCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsIEludmFs aWRUcmFuc2FjdGlvbklkKTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogSGVscGVyIGZv ciBJbnZhbGlkYXRlSW5hY3RpdmVSZXBsaWNhdGlvblNsb3QKKyAqLworc3RhdGljIGJvb2wKK0lu dmFsaWRhdGVQb3NzaWJseUluYWN0aXZlU2xvdChSZXBsaWNhdGlvblNsb3QgKnNsb3QpCit7CisJ UmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgaW5hdmlkYXRpb25fY2F1c2UgPSBSU19J TlZBTF9OT05FOworCisJLyoKKwkgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgaW52YWxpZGF0ZSBzbG90 IG9uIHRoZSBzdGFuZGJ5IHRoYXQncyBjdXJyZW50bHkKKwkgKiBiZWluZyBzeW5jZWQgZnJvbSB0 aGUgcHJpbWFyeSwgYmVjYXVzZSBzdWNoIHNsb3RzIGFyZSB0eXBpY2FsbHkKKwkgKiBjb25zaWRl cmVkIG5vdCBhY3RpdmUgYXMgdGhleSBkb24ndCBhY3R1YWxseSBwZXJmb3JtIGxvZ2ljYWwgZGVj b2RpbmcuCisJICovCisJaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpICYmIHNsb3QtPmRhdGEuc3lu Y2VkKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAocmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90 aW1lb3V0ID09IDApCisJCXJldHVybiBmYWxzZTsKKwllbHNlIGlmIChzbG90LT5pbmFjdGl2ZV9z aW5jZSA+IDApCisJeworCQlUaW1lc3RhbXBUeiBub3c7CisKKwkJLyoKKwkJICogRG8gbm90IGlu dmFsaWRhdGUgdGhlIHNsb3RzIHdoaWNoIGFyZSBjdXJyZW50bHkgYmVpbmcgc3luY2VkIGZyb20K KwkJICogdGhlIHByaW1hcnkgdG8gdGhlIHN0YW5kYnkuCisJCSAqLworCQlpZiAoUmVjb3ZlcnlJ blByb2dyZXNzKCkgJiYgc2xvdC0+ZGF0YS5zeW5jZWQpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJ TFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKTsKKwkJ U3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgdGhl IHNsb3QgbmVlZHMgdG8gYmUgaW52YWxpZGF0ZWQgZHVlIHRvCisJCSAqIHJlcGxpY2F0aW9uX3Ns b3RfaW5hY3RpdmVfdGltZW91dCBHVUMuIFdlIGRvIHRoaXMgd2l0aCB0aGUgc3BpbmxvY2sKKwkJ ICogaGVsZCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgLS0gZm9yIGV4YW1wbGUgdGhlIGluYWN0 aXZlX3NpbmNlCisJCSAqIGNvdWxkIGNoYW5nZSwgb3IgdGhlIHNsb3QgY291bGQgYmUgZHJvcHBl ZC4KKwkJICovCisJCW5vdyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKwkJaWYgKFRpbWVzdGFt cERpZmZlcmVuY2VFeGNlZWRzKHNsb3QtPmluYWN0aXZlX3NpbmNlLCBub3csCisJCQkJCQkJCQkg ICByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgKiAxMDAwKSkKKwkJeworCQkJaW5h dmlkYXRpb25fY2F1c2UgPSBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUOworCQkJc2xvdC0+ZGF0 YS5pbnZhbGlkYXRlZCA9IFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQ7CisJCX0KKworCQlTcGlu TG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKKwkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNs b3RDb250cm9sTG9jayk7CisKKwkJcmV0dXJuIChpbmF2aWRhdGlvbl9jYXVzZSA9PSBSU19JTlZB TF9JTkFDVElWRV9USU1FT1VUKTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiBG bHVzaCBhbGwgcmVwbGljYXRpb24gc2xvdHMgdG8gZGlzay4KICAqCkBAIC0xODM2LDYgKzE5OTIs NyBAQCB2b2lkCiBDaGVja1BvaW50UmVwbGljYXRpb25TbG90cyhib29sIGlzX3NodXRkb3duKQog ewogCWludAkJCWk7CisJYm9vbAkJaW52YWxpZGF0ZWQgPSBmYWxzZTsKIAogCWVsb2coREVCVUcx LCAicGVyZm9ybWluZyByZXBsaWNhdGlvbiBzbG90IGNoZWNrcG9pbnQiKTsKIApAQCAtMTg1OSw2 ICsyMDE2LDEzIEBAIENoZWNrUG9pbnRSZXBsaWNhdGlvblNsb3RzKGJvb2wgaXNfc2h1dGRvd24p CiAJCS8qIHNhdmUgdGhlIHNsb3QgdG8gZGlzaywgbG9ja2luZyBpcyBoYW5kbGVkIGluIFNhdmVT bG90VG9QYXRoKCkgKi8KIAkJc3ByaW50ZihwYXRoLCAicGdfcmVwbHNsb3QvJXMiLCBOYW1lU3Ry KHMtPmRhdGEubmFtZSkpOwogCisJCS8qCisJCSAqIEhlcmUncyBhbiBvcHBvcnR1bml0eSB0byBp bnZhbGlkYXRlIGluYWN0aXZlIHJlcGxpY2F0aW9uIHNsb3RzCisJCSAqIGJhc2VkIG9uIHRpbWVv dXQsIHNvIGxldCdzIGRvIGl0LgorCQkgKi8KKwkJaWYgKEludmFsaWRhdGVJbmFjdGl2ZVJlcGxp Y2F0aW9uU2xvdChzLCBmYWxzZSkpCisJCQlpbnZhbGlkYXRlZCA9IHRydWU7CisKIAkJLyoKIAkJ ICogU2xvdCdzIGRhdGEgaXMgbm90IGZsdXNoZWQgZWFjaCB0aW1lIHRoZSBjb25maXJtZWRfZmx1 c2ggTFNOIGlzCiAJCSAqIHVwZGF0ZWQgYXMgdGhhdCBjb3VsZCBsZWFkIHRvIGZyZXF1ZW50IHdy aXRlcy4gIEhvd2V2ZXIsIHdlIGRlY2lkZQpAQCAtMTg4NSw2ICsyMDQ5LDEzIEBAIENoZWNrUG9p bnRSZXBsaWNhdGlvblNsb3RzKGJvb2wgaXNfc2h1dGRvd24pCiAJCVNhdmVTbG90VG9QYXRoKHMs IHBhdGgsIExPRyk7CiAJfQogCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90QWxsb2NhdGlv bkxvY2spOworCisJLyogSWYgdGhlIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHJlY2FsY3Vs YXRlIHRoZSByZXNvdXJjZSBsaW1pdHMgKi8KKwlpZiAoaW52YWxpZGF0ZWQpCisJeworCQlSZXBs aWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkWG1pbihmYWxzZSk7CisJCVJlcGxpY2F0aW9uU2xv dHNDb21wdXRlUmVxdWlyZWRMU04oKTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3RmdW5jcy5jCmluZGV4IGRhNTcxNzdjMjUuLjY3N2MwYmYwYTIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3RmdW5jcy5jCkBAIC02NTEsNyArNjUxLDcgQEAgcGdfcmVwbGljYXRpb25fc2xvdF9h ZHZhbmNlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW1vdmV0byA9IE1pbihtb3ZldG8sIEdldFhMb2dS ZXBsYXlSZWNQdHIoTlVMTCkpOwogCiAJLyogQWNxdWlyZSB0aGUgc2xvdCBzbyB3ZSAib3duIiBp dCAqLwotCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdG5hbWUpLCB0cnVlKTsK KwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RuYW1lKSwgdHJ1ZSwgdHJ1ZSk7 CiAKIAkvKiBBIHNsb3Qgd2hvc2UgcmVzdGFydF9sc24gaGFzIG5ldmVyIGJlZW4gcmVzZXJ2ZWQg Y2Fubm90IGJlIGFkdmFuY2VkICovCiAJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoTXlSZXBsaWNh dGlvblNsb3QtPmRhdGEucmVzdGFydF9sc24pKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIu YwppbmRleCBiYzQwYzQ1NGRlLi45NmVlYjhiN2QyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxz ZW5kZXIuYwpAQCAtODQ2LDcgKzg0Niw3IEBAIFN0YXJ0UmVwbGljYXRpb24oU3RhcnRSZXBsaWNh dGlvbkNtZCAqY21kKQogCiAJaWYgKGNtZC0+c2xvdG5hbWUpCiAJewotCQlSZXBsaWNhdGlvblNs b3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOworCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJl KGNtZC0+c2xvdG5hbWUsIHRydWUsIHRydWUpOwogCQlpZiAoU2xvdElzTG9naWNhbChNeVJlcGxp Y2F0aW9uU2xvdCkpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKQEAgLTE0NTksNyArMTQ1OSw3IEBAIFN0 YXJ0TG9naWNhbFJlcGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkKIAogCUFzc2Vy dCghTXlSZXBsaWNhdGlvblNsb3QpOwogCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShjbWQtPnNs b3RuYW1lLCB0cnVlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRy dWUsIHRydWUpOwogCiAJLyoKIAkgKiBGb3JjZSBhIGRpc2Nvbm5lY3QsIHNvIHRoYXQgdGhlIGRl Y29kaW5nIGNvZGUgZG9lc24ndCBuZWVkIHRvIGNhcmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z191cGdyYWRlX3N1cHBvcnQuYwppbmRleCBjNTRiMDhmZTE4Li44Mjk1NmQ1OGQzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCkBAIC0yOTksNyArMjk5LDcg QEAgYmluYXJ5X3VwZ3JhZGVfbG9naWNhbF9zbG90X2hhc19jYXVnaHRfdXAoUEdfRlVOQ1RJT05f QVJHUykKIAlzbG90X25hbWUgPSBQR19HRVRBUkdfTkFNRSgwKTsKIAogCS8qIEFjcXVpcmUgdGhl IGdpdmVuIHNsb3QgKi8KLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RfbmFt ZSksIHRydWUpOworCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdF9uYW1lKSwg dHJ1ZSwgZmFsc2UpOwogCiAJQXNzZXJ0KFNsb3RJc0xvZ2ljYWwoTXlSZXBsaWNhdGlvblNsb3Qp KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCBjMTI3ODRjYmVjLi40MTQ5 ZmYxZmZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMjk3MSw2ICsyOTcx LDE4IEBAIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBO VUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVv dXQiLCBQR0NfU0lHSFVQLCBSRVBMSUNBVElPTl9TRU5ESU5HLAorCQkJZ2V0dGV4dF9ub29wKCJT ZXRzIHRoZSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBpbnZhbGlkYXRpbmcgYW4gIgor CQkJCQkJICJpbmFjdGl2ZSByZXBsaWNhdGlvbiBzbG90LiIpLAorCQkJTlVMTCwKKwkJCUdVQ19V TklUX1MKKwkJfSwKKwkJJnJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCwKKwkJMCwg MCwgSU5UX01BWCwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAl7CiAJCXsiY29tbWl0X2Rl bGF5IiwgUEdDX1NVU0VULCBXQUxfU0VUVElOR1MsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhl IGRlbGF5IGluIG1pY3Jvc2Vjb25kcyBiZXR3ZWVuIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQgIgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGJh ZWNkZTI4NDEuLjJlMWFkMmVhY2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3Rn cmVzcWwuY29uZi5zYW1wbGUKQEAgLTMzNSw2ICszMzUsNyBAQAogI3dhbF9zZW5kZXJfdGltZW91 dCA9IDYwcwkjIGluIG1pbGxpc2Vjb25kczsgMCBkaXNhYmxlcwogI3RyYWNrX2NvbW1pdF90aW1l c3RhbXAgPSBvZmYJIyBjb2xsZWN0IHRpbWVzdGFtcCBvZiB0cmFuc2FjdGlvbiBjb21taXQKIAkJ CQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKKyNyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZl X3RpbWVvdXQgPSAwCSMgaW4gc2Vjb25kczsgMCBkaXNhYmxlcwogCiAjIC0gUHJpbWFyeSBTZXJ2 ZXIgLQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5kZXggN2I5MzdkMWEwYy4uZjBhYzMyNGNlOSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtNTMsNiArNTMsOCBAQCB0eXBlZGVmIGVudW0gUmVw bGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UKIAlSU19JTlZBTF9IT1JJWk9OLAogCS8qIHdh bF9sZXZlbCBpbnN1ZmZpY2llbnQgZm9yIHNsb3QgKi8KIAlSU19JTlZBTF9XQUxfTEVWRUwsCisJ LyogaW5hY3RpdmUgc2xvdCB0aW1lb3V0IGhhcyBvY2N1cnJlZCAqLworCVJTX0lOVkFMX0lOQUNU SVZFX1RJTUVPVVQsCiB9IFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlOwogCiBleHRl cm4gUEdETExJTVBPUlQgY29uc3QgY2hhciAqY29uc3QgU2xvdEludmFsaWRhdGlvbkNhdXNlc1td OwpAQCAtMjMwLDYgKzIzMiw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBSZXBsaWNhdGlvblNsb3Qg Kk15UmVwbGljYXRpb25TbG90OwogLyogR1VDcyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBt YXhfcmVwbGljYXRpb25fc2xvdHM7CiBleHRlcm4gUEdETExJTVBPUlQgY2hhciAqc3RhbmRieV9z bG90X25hbWVzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCByZXBsaWNhdGlvbl9zbG90X2luYWN0 aXZlX3RpbWVvdXQ7CiAKIC8qIHNobWVtIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAqLwogZXh0 ZXJuIFNpemUgUmVwbGljYXRpb25TbG90c1NobWVtU2l6ZSh2b2lkKTsKQEAgLTI0NSw3ICsyNDgs OCBAQCBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3REcm9wKGNvbnN0IGNoYXIgKm5hbWUsIGJv b2wgbm93YWl0KTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdERyb3BBY3F1aXJlZCh2b2lk KTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdEFsdGVyKGNvbnN0IGNoYXIgKm5hbWUsIGJv b2wgZmFpbG92ZXIpOwogCi1leHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNvbnN0 IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0KTsKK2V4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdEFj cXVpcmUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBub3dhaXQsCisJCQkJCQkJCSAgIGJvb2wgY2hl Y2tfZm9yX3RpbWVvdXRfaW52YWxpZGF0aW9uKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xv dFJlbGVhc2Uodm9pZCk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RDbGVhbnVwKHZvaWQp OwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90U2F2ZSh2b2lkKTsKQEAgLTI2NCw2ICsyNjgs OCBAQCBleHRlcm4gYm9vbCBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFJlcGxp Y2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlCiAJCQkJCQkJCQkJCSAgIFhMb2dTZWdObyBvbGRl c3RTZWdubywKIAkJCQkJCQkJCQkJICAgT2lkIGRib2lkLAogCQkJCQkJCQkJCQkgICBUcmFuc2Fj dGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKK2V4dGVybiBib29sIEludmFsaWRhdGVJ bmFjdGl2ZVJlcGxpY2F0aW9uU2xvdChSZXBsaWNhdGlvblNsb3QgKnNsb3QsCisJCQkJCQkJCQkJ CSAgYm9vbCBwZXJzaXN0X3N0YXRlKTsKIGV4dGVybiBSZXBsaWNhdGlvblNsb3QgKlNlYXJjaE5h bWVkUmVwbGljYXRpb25TbG90KGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbmVlZF9sb2NrKTsKIGV4 dGVybiBpbnQJUmVwbGljYXRpb25TbG90SW5kZXgoUmVwbGljYXRpb25TbG90ICpzbG90KTsKIGV4 dGVybiBib29sIFJlcGxpY2F0aW9uU2xvdE5hbWUoaW50IGluZGV4LCBOYW1lIG5hbWUpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9yZWNvdmVy eS9tZXNvbi5idWlsZAppbmRleCA3MTI5MjRjMmZhLi4wNDM3YWI1YzQ2IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS9tZXNv bi5idWlsZApAQCAtNTIsNiArNTIsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wNDFfY2hlY2tw b2ludF9hdF9wcm9tb3RlLnBsJywKICAgICAgICd0LzA0Ml9sb3dfbGV2ZWxfYmFja3VwLnBsJywK ICAgICAgICd0LzA0M193YWxfcmVwbGF5X3dhaXQucGwnLAorICAgICAgJ3QvMDQ0X2ludmFsaWRh dGVfc2xvdHMucGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNv dmVyeS90LzA0NF9pbnZhbGlkYXRlX3Nsb3RzLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDRf aW52YWxpZGF0ZV9zbG90cy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li4wZjQ5ZDE2ZmY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDRf aW52YWxpZGF0ZV9zbG90cy5wbApAQCAtMCwwICsxLDI3OSBAQAorIyBDb3B5cmlnaHQgKGMpIDIw MjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCBmb3IgcmVw bGljYXRpb24gc2xvdHMgaW52YWxpZGF0aW9uCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZB VEFMID0+ICdhbGwnOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBUZXN0OjpNb3JlOwordXNlIFRpbWU6OkhpUmVzIHF3 KHVzbGVlcCk7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdGNhc2Ugc3RhcnQ6IElu dmFsaWRhdGUgc3RyZWFtaW5nIHN0YW5kYnkncyBzbG90IGFzIHdlbGwgYXMgbG9naWNhbAorIyBm YWlsb3ZlciBzbG90IG9uIHByaW1hcnkgZHVlIHRvIGluYWN0aXZlIHRpbWVvdXQgR1VDLiBBbHNv LCBjaGVjayB0aGUgbG9naWNhbAorIyBmYWlsb3ZlciBzbG90IHN5bmNlZCBvbiB0byB0aGUgc3Rh bmRieSBkb2Vzbid0IGludmFsaWRhdGUgdGhlIHNsb3Qgb24gaXRzIG93biwKKyMgYnV0IGdldHMg dGhlIGludmFsaWRhdGVkIHN0YXRlIGZyb20gdGhlIHJlbW90ZSBzbG90IG9uIHRoZSBwcmltYXJ5 LgorCisjIEluaXRpYWxpemUgcHJpbWFyeSBub2RlCitteSAkcHJpbWFyeSA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJHByaW1hcnktPmluaXQoYWxsb3dzX3N0 cmVhbWluZyA9PiAnbG9naWNhbCcpOworCisjIEF2b2lkIGNoZWNrcG9pbnQgZHVyaW5nIHRoZSB0 ZXN0LCBvdGhlcndpc2UsIHRoZSB0ZXN0IGNhbiBnZXQgdW5wcmVkaWN0YWJsZQorJHByaW1hcnkt PmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxeworY2hlY2twb2ludF90aW1lb3V0 ID0gMWgKK2F1dG92YWN1dW0gPSBvZmYKK30pOworJHByaW1hcnktPnN0YXJ0OworCisjIFRha2Ug YmFja3VwCitteSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRwcmltYXJ5LT5iYWNrdXAo JGJhY2t1cF9uYW1lKTsKKworIyBDcmVhdGUgYSBzdGFuZGJ5IGxpbmtpbmcgdG8gdGhlIHByaW1h cnkgdXNpbmcgdGhlIHJlcGxpY2F0aW9uIHNsb3QKK215ICRzdGFuZGJ5MSA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieTEnKTsKKyRzdGFuZGJ5MS0+aW5pdF9mcm9tX2Jh Y2t1cCgkcHJpbWFyeSwgJGJhY2t1cF9uYW1lLCBoYXNfc3RyZWFtaW5nID0+IDEpOworCitteSAk Y29ubnN0cl8xID0gJHByaW1hcnktPmNvbm5zdHI7Ciskc3RhbmRieTEtPmFwcGVuZF9jb25mKAor CSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK3ByaW1h cnlfc2xvdF9uYW1lID0gJ3NiMV9zbG90JworcHJpbWFyeV9jb25uaW5mbyA9ICckY29ubnN0cl8x IGRibmFtZT1wb3N0Z3JlcycKKykpOworCisjIENyZWF0ZSBzeW5jIHNsb3Qgb24gdGhlIHByaW1h cnkKKyRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgcGdfY3JlYXRlX2xvZ2lj YWxfcmVwbGljYXRpb25fc2xvdCgnbHN1YjFfc3luY19zbG90JywgJ3Rlc3RfZGVjb2RpbmcnLCBm YWxzZSwgZmFsc2UsIHRydWUpO30KKyk7CisKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXFbCisgICAgU0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90 KHNsb3RfbmFtZSA6PSAnc2IxX3Nsb3QnKTsKK10pOworCiskc3RhbmRieTEtPnN0YXJ0OworCitt eSAkc3RhbmRieTFfbG9nc3RhcnQgPSAtcyAkc3RhbmRieTEtPmxvZ2ZpbGU7CisKKyMgV2FpdCB1 bnRpbCBzdGFuZGJ5IGhhcyByZXBsYXllZCBlbm91Z2ggZGF0YQorJHByaW1hcnktPndhaXRfZm9y X2NhdGNodXAoJHN0YW5kYnkxKTsKKworIyBTeW5jaHJvbml6ZSB0aGUgcHJpbWFyeSBzZXJ2ZXIg c2xvdHMgdG8gdGhlIHN0YW5kYnkuCiskc3RhbmRieTEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKTsiKTsKKworIyBDb25maXJtIHRoYXQg dGhlIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCBpcyBjcmVhdGVkIG9uIHRoZSBzdGFuZGJ5IGFuZCBp cworIyBmbGFnZ2VkIGFzICdzeW5jZWQnLgoraXMoICRzdGFuZGJ5MS0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9z bG90cworCQkgIFdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMV9zeW5jX3Nsb3QnIEFORCBzeW5jZWQg QU5EIE5PVCB0ZW1wb3Jhcnk7fQorCSksCisJInQiLAorCSdsb2dpY2FsIHNsb3QgaGFzIHN5bmNl ZCBhcyB0cnVlIG9uIHN0YW5kYnknKTsKKworbXkgJGxvZ3N0YXJ0ID0gLXMgJHByaW1hcnktPmxv Z2ZpbGU7CisKKyMgU2V0IHRpbWVvdXQgc28gdGhhdCB0aGUgbmV4dCBjaGVja3BvaW50IHdpbGwg aW52YWxpZGF0ZSB0aGUgaW5hY3RpdmUKKyMgcmVwbGljYXRpb24gc2xvdC4KKyRwcmltYXJ5LT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgQUxURVIgU1lTVEVNIFNFVCByZXBsaWNh dGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgVE8gJzJzJzsKK10pOworJHByaW1hcnktPnJlbG9h ZDsKKworIyBXYWl0IGZvciB0aGUgbG9naWNhbCBmYWlsb3ZlciBzbG90IHRvIGJlY29tZSBpbmFj dGl2ZSBvbiB0aGUgcHJpbWFyeS4gTm90ZQorIyB0aGF0IG5vYm9keSBoYXMgYWNxdWlyZWQgdGhh dCBzbG90IHlldCwgc28gZHVlIHRvIGluYWN0aXZlIHRpbWVvdXQgc2V0dGluZworIyBhYm92ZSBp dCBtdXN0IGdldCBpbnZhbGlkYXRlZC4KK3dhaXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9uKCRwcmlt YXJ5LCAnbHN1YjFfc3luY19zbG90JywgJGxvZ3N0YXJ0KTsKKworIyBTZXQgdGltZW91dCBvbiB0 aGUgc3RhbmRieSBhbHNvIHRvIGNoZWNrIHRoZSBzeW5jZWQgc2xvdHMgZG9uJ3QgZ2V0CisjIGlu dmFsaWRhdGVkIGR1ZSB0byB0aW1lb3V0IG9uIHRoZSBzdGFuZGJ5LgorJHN0YW5kYnkxLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgQUxURVIgU1lTVEVNIFNFVCByZXBsaWNhdGlv bl9zbG90X2luYWN0aXZlX3RpbWVvdXQgVE8gJzJzJzsKK10pOworJHN0YW5kYnkxLT5yZWxvYWQ7 CisKKyMgTm93LCBzeW5jIHRoZSBsb2dpY2FsIGZhaWxvdmVyIHNsb3QgZnJvbSB0aGUgcmVtb3Rl IHNsb3Qgb24gdGhlIHByaW1hcnkuCisjIE5vdGUgdGhhdCB0aGUgcmVtb3RlIHNsb3QgaGFzIGFs cmVhZHkgYmVlbiBpbnZhbGlkYXRlZCBkdWUgdG8gaW5hY3RpdmUKKyMgdGltZW91dC4gTm93LCB0 aGUgc3RhbmRieSBtdXN0IGFsc28gc2VlIGl0IGFzIGludmFsaWRhdGVkLgorJHN0YW5kYnkxLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19zeW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCk7 Iik7CisKKyMgV2FpdCBmb3IgdGhlIGluYWN0aXZlIHJlcGxpY2F0aW9uIHNsb3QgdG8gYmUgaW52 YWxpZGF0ZWQuCiskc3RhbmRieTEtPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywgcXFb CisJU0VMRUNUIENPVU5UKHNsb3RfbmFtZSkgPSAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMK KwkJV0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIxX3N5bmNfc2xvdCcgQU5ECisJCWludmFsaWRhdGlv bl9yZWFzb24gPSAnaW5hY3RpdmVfdGltZW91dCc7CitdKQorICBvciBkaWUKKyAgIlRpbWVkIG91 dCB3aGlsZSB3YWl0aW5nIGZvciByZXBsaWNhdGlvbiBzbG90IGxzdWIxX3N5bmNfc2xvdCBpbnZh bGlkYXRpb24gdG8gYmUgc3luY2VkIG9uIHN0YW5kYnkiOworCisjIFN5bmNlZCBzbG90IG11c3Ru J3QgZ2V0IGludmFsaWRhdGVkIG9uIHRoZSBzdGFuZGJ5LCBpdCBtdXN0IHN5bmMgaW52YWxpZGF0 aW9uCisjIGZyb20gdGhlIHByaW1hcnkuIFNvLCB3ZSBtdXN0IG5vdCBzZWUgdGhlIHNsb3QncyBp bnZhbGlkYXRpb24gbWVzc2FnZSBpbiBzZXJ2ZXIKKyMgbG9nLgorb2soICEkc3RhbmRieTEtPmxv Z19jb250YWlucygKKwkJImludmFsaWRhdGluZyBvYnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwi bHN1YjFfc3luY19zbG90XCIiLAorCQkkc3RhbmRieTFfbG9nc3RhcnQpLAorCSdjaGVjayB0aGF0 IHN5bmVkIHNsb3QgaGFzIG5vdCBiZWVuIGludmFsaWRhdGVkIG9uIHRoZSBzdGFuZGJ5Jyk7CisK KyMgU3RvcCBzdGFuZGJ5IHRvIG1ha2UgdGhlIHN0YW5kYnkncyByZXBsaWNhdGlvbiBzbG90IG9u IHRoZSBwcmltYXJ5IGluYWN0aXZlCiskc3RhbmRieTEtPnN0b3A7CisKKyMgV2FpdCBmb3IgdGhl IHN0YW5kYnkncyByZXBsaWNhdGlvbiBzbG90IHRvIGJlY29tZSBpbmFjdGl2ZQord2FpdF9mb3Jf c2xvdF9pbnZhbGlkYXRpb24oJHByaW1hcnksICdzYjFfc2xvdCcsICRsb2dzdGFydCk7CisKKyMg VGVzdGNhc2UgZW5kOiBJbnZhbGlkYXRlIHN0cmVhbWluZyBzdGFuZGJ5J3Mgc2xvdCBhcyB3ZWxs IGFzIGxvZ2ljYWwgZmFpbG92ZXIKKyMgc2xvdCBvbiBwcmltYXJ5IGR1ZSB0byBpbmFjdGl2ZSB0 aW1lb3V0IEdVQy4gQWxzbywgY2hlY2sgdGhlIGxvZ2ljYWwgZmFpbG92ZXIKKyMgc2xvdCBzeW5j ZWQgb24gdG8gdGhlIHN0YW5kYnkgZG9lc24ndCBpbnZhbGlkYXRlIHRoZSBzbG90IG9uIGl0cyBv d24sIGJ1dAorIyBnZXRzIHRoZSBpbnZhbGlkYXRlZCBzdGF0ZSBmcm9tIHRoZSByZW1vdGUgc2xv dCBvbiB0aGUgcHJpbWFyeS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFydDogSW52YWxpZGF0ZSBsb2dpY2FsIHN1YnNjcmli ZXIncyBzbG90IGR1ZSB0byBpbmFjdGl2ZSB0aW1lb3V0CisjIEdVQy4KKworbXkgJHB1Ymxpc2hl ciA9ICRwcmltYXJ5OworCisjIFByZXBhcmUgZm9yIHRoZSBuZXh0IHRlc3QKKyRwdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAgICBBTFRFUiBTWVNURU0gU0VUIHJlcGxp Y2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCBUTyAnMCc7CitdKTsKKyRwdWJsaXNoZXItPnJl bG9hZDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlCitteSAkc3Vic2NyaWJlciA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3ViJyk7Ciskc3Vic2NyaWJlci0+aW5pdDsKKyRz dWJzY3JpYmVyLT5zdGFydDsKKworIyBDcmVhdGUgdGFibGVzCiskcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RibCAoaWQgaW50KSIpOworJHN1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGJsIChpZCBp bnQpIik7CisKKyMgSW5zZXJ0IHNvbWUgZGF0YQorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RibCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcygx LCA1KSk7Iik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hlcl9j b25uc3RyID0gJHB1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRwdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1Ig QUxMIFRBQkxFUyIpOworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWwor ICAgIFNFTEVDVCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KHNsb3RfbmFtZSA6 PSAnbHN1YjFfc2xvdCcsIHBsdWdpbiA6PSAncGdvdXRwdXQnKTsKK10pOworCiskc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc3ViIENPTk5F Q1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gcHViIFdJVEggKHNsb3RfbmFt ZSA9ICdsc3ViMV9zbG90JywgY3JlYXRlX3Nsb3QgPSBmYWxzZSkiCispOworCiskc3Vic2NyaWJl ci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJHB1Ymxpc2hlciwgJ3N1YicpOworCitteSAk cmVzdWx0ID0KKyAgJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIEZST00gdGVzdF90YmwiKTsKKworaXMoJHJlc3VsdCwgcXEoNSksICJjaGVjayBpbml0 aWFsIGNvcHkgd2FzIGRvbmUiKTsKKworIyBQcmVwYXJlIGZvciB0aGUgbmV4dCB0ZXN0CiskcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgQUxURVIgU1lTVEVNIFNF VCByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgVE8gJzJzJzsKK10pOworJHB1Ymxp c2hlci0+cmVsb2FkOworCiskbG9nc3RhcnQgPSAtcyAkcHVibGlzaGVyLT5sb2dmaWxlOworCisj IFN0b3Agc3Vic2NyaWJlciB0byBtYWtlIHRoZSByZXBsaWNhdGlvbiBzbG90IG9uIHB1Ymxpc2hl ciBpbmFjdGl2ZQorJHN1YnNjcmliZXItPnN0b3A7CisKKyMgV2FpdCBmb3IgdGhlIHJlcGxpY2F0 aW9uIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlIGFuZCB0aGVuIGludmFsaWRhdGVkIGR1ZSB0bwor IyB0aW1lb3V0Lgord2FpdF9mb3Jfc2xvdF9pbnZhbGlkYXRpb24oJHB1Ymxpc2hlciwgJ2xzdWIx X3Nsb3QnLCAkbG9nc3RhcnQpOworCisjIFRlc3RjYXNlIGVuZDogSW52YWxpZGF0ZSBsb2dpY2Fs IHN1YnNjcmliZXIncyBzbG90IGR1ZSB0byBpbmFjdGl2ZSB0aW1lb3V0CisjIEdVQy4KKyMgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBTdGFydDogSGVs cGVyIGZ1bmN0aW9ucyB1c2VkIGZvciB0aGlzIHRlc3QgZmlsZQorCitzdWIgd2FpdF9mb3Jfc2xv dF9pbnZhbGlkYXRpb24KK3sKKwlteSAoJG5vZGUsICRzbG90X25hbWUsICRvZmZzZXQpID0gQF87 CisJbXkgJG5hbWUgPSAkbm9kZS0+bmFtZTsKKworCSMgV2FpdCBmb3IgdGhlIHJlcGxpY2F0aW9u IHNsb3QgdG8gYmVjb21lIGluYWN0aXZlCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdw b3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgQ09VTlQoc2xvdF9uYW1lKSA9IDEgRlJPTSBwZ19yZXBs aWNhdGlvbl9zbG90cworCQkJV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90X25hbWUnIEFORCBhY3Rp dmUgPSAnZic7CisJXSkKKwkgIG9yIGRpZQorCSAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZv ciByZXBsaWNhdGlvbiBzbG90IHRvIGJlY29tZSBpbmFjdGl2ZSI7CisKKwkjIFdhaXQgZm9yIHRo ZSByZXBsaWNhdGlvbiBzbG90IGluZm8gdG8gYmUgdXBkYXRlZAorCSRub2RlLT5wb2xsX3F1ZXJ5 X3VudGlsKAorCQkncG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUIENPVU5UKHNsb3RfbmFtZSkgPSAx IEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMKKwkJCVdIRVJFIGluYWN0aXZlX3NpbmNlIElTIE5P VCBOVUxMCisJCQkJQU5EIHNsb3RfbmFtZSA9ICckc2xvdF9uYW1lJyBBTkQgYWN0aXZlID0gJ2Yn OworCV0pCisJICBvciBkaWUKKwkgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgaW5mbyBv ZiByZXBsaWNhdGlvbiBzbG90ICRzbG90X25hbWUgdG8gYmUgdXBkYXRlZCBvbiBub2RlICRuYW1l IjsKKworCWNoZWNrX2Zvcl9zbG90X2ludmFsaWRhdGlvbl9pbl9zZXJ2ZXJfbG9nKCRub2RlLCAk c2xvdF9uYW1lLCAkb2Zmc2V0KTsKKworCSMgV2FpdCBmb3IgdGhlIGluYWN0aXZlIHJlcGxpY2F0 aW9uIHNsb3QgdG8gYmUgaW52YWxpZGF0ZWQuCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJ CSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgQ09VTlQoc2xvdF9uYW1lKSA9IDEgRlJPTSBwZ19y ZXBsaWNhdGlvbl9zbG90cworCQkJV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90X25hbWUnIEFORAor CQkJaW52YWxpZGF0aW9uX3JlYXNvbiA9ICdpbmFjdGl2ZV90aW1lb3V0JzsKKwldKQorCSAgb3Ig ZGllCisJICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGluYWN0aXZlIHJlcGxpY2F0aW9u IHNsb3QgJHNsb3RfbmFtZSB0byBiZSBpbnZhbGlkYXRlZCBvbiBub2RlICRuYW1lIjsKKworCSMg Q2hlY2sgdGhhdCB0aGUgaW52YWxpZGF0ZWQgc2xvdCBjYW5ub3QgYmUgYWNxdWlyZWQKKwlteSAo JHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycik7CisKKwkoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVy cikgPSAkcHJpbWFyeS0+cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCQlTRUxFQ1QgcGdfcmVw bGljYXRpb25fc2xvdF9hZHZhbmNlKCckc2xvdF9uYW1lJywgJzAvMScpOworCV0pOworCisJb2so ICRzdGRlcnIgPX4KKwkJICAvY2FuIG5vIGxvbmdlciBnZXQgY2hhbmdlcyBmcm9tIHJlcGxpY2F0 aW9uIHNsb3QgIiRzbG90X25hbWUiLywKKwkJImRldGVjdGVkIGVycm9yIHVwb24gdHJ5aW5nIHRv IGFjcXVpcmUgaW52YWxpZGF0ZWQgc2xvdCAkc2xvdF9uYW1lIG9uIG5vZGUgJG5hbWUiCisJICAp CisJICBvciBkaWUKKwkgICJjb3VsZCBub3QgZGV0ZWN0IGVycm9yIHVwb24gdHJ5aW5nIHRvIGFj cXVpcmUgaW52YWxpZGF0ZWQgc2xvdCAkc2xvdF9uYW1lIjsKK30KKworIyBDaGVjayBmb3IgaW52 YWxpZGF0aW9uIG9mIHNsb3QgaW4gc2VydmVyIGxvZy4KK3N1YiBjaGVja19mb3Jfc2xvdF9pbnZh bGlkYXRpb25faW5fc2VydmVyX2xvZworeworCW15ICgkbm9kZSwgJHNsb3RfbmFtZSwgJG9mZnNl dCkgPSBAXzsKKwlteSAkaW52YWxpZGF0ZWQgPSAwOworCisJZm9yIChteSAkaSA9IDA7ICRpIDwg MTAgKiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsgJGkrKykKKwl7 CisJCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQiKTsKKwkJaWYgKCRu b2RlLT5sb2dfY29udGFpbnMoCisJCQkJImludmFsaWRhdGluZyBvYnNvbGV0ZSByZXBsaWNhdGlv biBzbG90IFwiJHNsb3RfbmFtZVwiIiwKKwkJCQkkb2Zmc2V0KSkKKwkJeworCQkJJGludmFsaWRh dGVkID0gMTsKKwkJCWxhc3Q7CisJCX0KKwkJdXNsZWVwKDEwMF8wMDApOworCX0KKwlvaygkaW52 YWxpZGF0ZWQsCisJCSJjaGVjayB0aGF0IHNsb3QgJHNsb3RfbmFtZSBpbnZhbGlkYXRpb24gaGFz IGJlZW4gbG9nZ2VkIik7Cit9CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRW5kOiBIZWxw ZXIgZnVuY3Rpb25zIHVzZWQgZm9yIHRoaXMgdGVzdCBmaWxlCisKK2RvbmVfdGVzdGluZygpOwot LSAKMi4zNC4xCgo= --000000000000923f7c06152ac3a5--