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 1rt4Pa-00BsDy-KL for pgsql-hackers@arkaria.postgresql.org; Sat, 06 Apr 2024 11:40:43 +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 1rt4PZ-00BXZx-0i for pgsql-hackers@arkaria.postgresql.org; Sat, 06 Apr 2024 11:40:41 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rt4PY-00BXYY-Gd for pgsql-hackers@lists.postgresql.org; Sat, 06 Apr 2024 11:40:40 +0000 Received: from mail-lj1-x22a.google.com ([2a00:1450:4864:20::22a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rt4PQ-0010Wx-WA for pgsql-hackers@lists.postgresql.org; Sat, 06 Apr 2024 11:40:39 +0000 Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-2d68c6a4630so35635091fa.3 for ; Sat, 06 Apr 2024 04:40:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712403632; x=1713008432; 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=NIZyYNBgtHyBagLB9H3cat7Hb0ntOd6m3tXOVT2O4UI=; b=P8CbViuhDgGMrBeqvzYLTdn+y4EJGdDbcqfQhCw/nAGHC5avWQvAI3+EeMsno9/pZ8 zRdhFP1fK8PbGeKxbDVHX8+CFG3YsOMsycps/KY5avJCvYl7KgibNQEvmHISBauA4jGD KCU5e1XLpSi7YQ2mclePZcmvORQfT6T4vXCkaoW32zTK/LexyW+h7vGzKWUP9AgJdLfY gwlSgLFBMg1UXhWWE/NvFjwVi6XH+c/f79tUJqYBMhEJ/PCc1zq4V5WhL72Hg+W2o31E CpLcVziZn/LzPN0fLDlvuAtTaYykZJUvsCKsUzzg0Ef+VuZChmxCeIMTcajMbPJKln6F k0Dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712403632; x=1713008432; 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=NIZyYNBgtHyBagLB9H3cat7Hb0ntOd6m3tXOVT2O4UI=; b=MYp+6k0wMQfqlECwPDCRoNWdZlMFRkMC4VleWsO2sYHkyh7dxnPeFcUWShyWNrDMGE B/BH10UWgYs8Kd9EEVVmWb/TxR+VZWvlpOCISBTCbytPW9yOmPbfS1XJlGvrhmx15pai OWltgW5yhApfQ5SHBKVf86lROBGgtqkcLSGovyIbT7cNb/ch0Pauj1YNsXEJNsL+17y9 QZQ8cd9Sv0xg2WEhNn29bDyN9V1i3cc4WC44EQmS+VQzdEspheuZPDoZkHmymm6o5X/i duxKnUdOCG2yWqDbsfhkjRLCoIFhsyWv03QZXA9iHtISxDwVIka7Z6x7LhcrohICFG5B u8GA== X-Forwarded-Encrypted: i=1; AJvYcCULKGgkoQXSxZ2NGvd4ddjs+FHVc/uVfxqZfBFComqPTOwpTfiif+xiOKKaBKc2UWNAEN4ESAN3cuAmdCy+mGRL5Nb2jDQfXvZ9gupOCIg5Wxp0 X-Gm-Message-State: AOJu0Yyo+/S9t64nh3VH7oAugcezCl/z1ffK0gRRDOAWv+8R43SMqi0l /wRt556iw9YSSU8PWr0dcV8OyUAZc3c6V+yNtGg35b9k6TrZppmdcbs9NSe0c7RX8uG1HcR9EB4 DUT/zdV7arCt4X1Iry0whrOdV4Kc= X-Google-Smtp-Source: AGHT+IGmW4JTPMzlUYk0EbfCDN/EebY0HR8sU0TF1qtf6n5neQU0QkqFSVswcWEzazqoBOAPSCCCVHpxV32HHmfKnFI= X-Received: by 2002:a2e:3619:0:b0:2d8:5b4e:bddb with SMTP id d25-20020a2e3619000000b002d85b4ebddbmr2810839lja.52.1712403631834; Sat, 06 Apr 2024 04:40:31 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bharath Rupireddy Date: Sat, 6 Apr 2024 17:10:19 +0530 Message-ID: Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation To: Amit Kapila Cc: Bertrand Drouvot , shveta malik , Masahiko Sawada , Nathan Bossart , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000302bf906156c0a81" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000302bf906156c0a81 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Apr 6, 2024 at 12:18=E2=80=AFPM Amit Kapila wrote: > > Why the handling w.r.t active_pid in InvalidatePossiblyInactiveSlot() > is not similar to InvalidatePossiblyObsoleteSlot(). Won't we need to > ensure that there is no other active slot user? Is it sufficient to > check inactive_since for the same? If so, we need some comments to > explain the same. I removed the separate functions and with minimal changes, I've now placed the RS_INVAL_INACTIVE_TIMEOUT logic into InvalidatePossiblyObsoleteSlot and use that even in CheckPointReplicationSlots. > Can we avoid introducing the new functions like > SaveGivenReplicationSlot() and MarkGivenReplicationSlotDirty(), if we > do the required work in the caller? Hm. Removed them now. Please see the attached v38 patch. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --000000000000302bf906156c0a81 Content-Type: application/octet-stream; name="v38-0001-Add-inactive_timeout-based-replication-slot-inva.patch" Content-Disposition: attachment; filename="v38-0001-Add-inactive_timeout-based-replication-slot-inva.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_luo0w9wk0 RnJvbSBhMmM2NmM3MTFkYTcxMThlYWU0ODQ0NmM4N2U1NTk1Zjg1YzhlNDVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFNhdCwgNiBBcHIgMjAyNCAxMToxMzowMiArMDAw MApTdWJqZWN0OiBbUEFUQ0ggdjM4XSBBZGQgaW5hY3RpdmVfdGltZW91dCBiYXNlZCByZXBsaWNh dGlvbiBzbG90IGludmFsaWRhdGlvbi4KClRpbGwgbm93LCBwb3N0Z3JlcyBoYXMgdGhlIGFiaWxp dHkgdG8gaW52YWxpZGF0ZSBpbmFjdGl2ZQpyZXBsaWNhdGlvbiBzbG90cyBiYXNlZCBvbiB0aGUg YW1vdW50IG9mIFdBTCAoc2V0IHZpYQptYXhfc2xvdF93YWxfa2VlcF9zaXplIEdVQykgdGhhdCB3 aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHNsb3RzIGluCmNhc2UgdGhleSBiZWNvbWUgYWN0aXZlLiBI b3dldmVyLCBjaG9vc2luZyBhIGRlZmF1bHQgdmFsdWUgZm9yCm1heF9zbG90X3dhbF9rZWVwX3Np emUgaXMgdHJpY2t5LiBCZWNhdXNlIHRoZSBhbW91bnQgb2YgV0FMIGEKY3VzdG9tZXIgZ2VuZXJh dGVzLCBhbmQgdGhlaXIgYWxsb2NhdGVkIHN0b3JhZ2Ugd2lsbCB2YXJ5IGdyZWF0bHkKaW4gcHJv ZHVjdGlvbiwgbWFraW5nIGl0IGRpZmZpY3VsdCB0byBwaW4gZG93biBhIG9uZS1zaXplLWZpdHMt YWxsCnZhbHVlLiBJdCBpcyBvZnRlbiBlYXN5IGZvciBkZXZlbG9wZXJzIHRvIHNldCBhIHRpbWVv dXQgb2Ygc2F5IDEKb3IgMiBvciAzIGRheXMgYXQgc2xvdCBsZXZlbCwgYWZ0ZXIgd2hpY2ggdGhl IGluYWN0aXZlIHNsb3RzIGdldAppbnZhbGlkYXRlZC4KClRvIGFjaGlldmUgdGhlIGFib3ZlLCBw b3N0Z3JlcyBpbnRyb2R1Y2VzIGEgR1VDIGFsbG93aW5nIHVzZXJzCnNldCBpbmFjdGl2ZSB0aW1l b3V0LiBUaGUgcmVwbGljYXRpb24gc2xvdHMgdGhhdCBhcmUgaW5hY3RpdmUKZm9yIGxvbmdlciB0 aGFuIHNwZWNpZmllZCBhbW91bnQgb2YgdGltZSBnZXQgaW52YWxpZGF0ZWQuCgpUaGUgaW52YWxp ZGF0aW9uIGNoZWNrIGhhcHBlbnMgYXQgdmFyaW91cyBsb2NhdGlvbnMgdG8gaGVscCBiZWluZwph cyBsYXRlc3QgYXMgcG9zc2libGUsIHRoZXNlIGxvY2F0aW9ucyBpbmNsdWRlIHRoZSBmb2xsb3dp bmc6Ci0gV2hlbmV2ZXIgdGhlIHNsb3QgaXMgYWNxdWlyZWQgYW5kIHRoZSBzbG90IGFjcXVpc2l0 aW9uIGVycm9ycwpvdXQgaWYgaW52YWxpZGF0ZWQuCi0gRHVyaW5nIGNoZWNrcG9pbnQKCk5vdGUg dGhhdCB0aGlzIG5ldyBpbnZhbGlkYXRpb24gbWVjaGFuaXNtIHdvbid0IGtpY2staW4gZm9yIHRo ZQpzbG90cyB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgc3luY2VkIGZyb20gdGhlIHByaW1hcnkg dG8gdGhlCnN0YW5kYnkuCgpBdXRob3I6IEJoYXJhdGggUnVwaXJlZGR5ClJldmlld2VkLWJ5OiBC ZXJ0cmFuZCBEcm91dm90LCBBbWl0IEthcGlsYSwgU2h2ZXRhIE1hbGlrCkRpc2N1c3Npb246IGh0 dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FMajJBQ1c0YVVlLV91RlFPamRX Q0VOLXhYb0xHaG12UkZuTDhTTndfVFo1bkplK2F3QG1haWwuZ21haWwuY29tCi0tLQogZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDMzICsrCiBkb2Mvc3Jj L3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgICAgICAgICAgICAgICAgfCAgIDcgKwogLi4uL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3QuYyAgICAgICAgICAgICAgICB8IDE3NCArKysrKysrKysrLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgICAgICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyAgICB8ICAgMiArLQogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgIDEyICsKIHNyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMSArCiBzcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9zbG90LmggICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy90ZXN0L3Jl Y292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWNv dmVyeS90LzA0NF9pbnZhbGlkYXRlX3Nsb3RzLnBsICAgfCAyODMgKysrKysrKysrKysrKysrKysr CiAxMyBmaWxlcyBjaGFuZ2VkLCA1MjMgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDRfaW52YWxpZGF0ZV9zbG90 cy5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dt bC9jb25maWcuc2dtbAppbmRleCA2MjQ1MThlMGIwLi40MmY3YjE1YWE3IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBA IC00NTQ3LDYgKzQ1NDcsMzkgQEAgcmVzdG9yZV9jb21tYW5kID0gJ2NvcHkgIkM6XFxzZXJ2ZXJc XGFyY2hpdmVkaXJcXCVmIiAiJXAiJyAgIyBXaW5kb3dzCiAgICAgICA8L2xpc3RpdGVtPgogICAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcmVwbGljYXRp b24tc2xvdC1pbmFjdGl2ZS10aW1lb3V0IiB4cmVmbGFiZWw9InJlcGxpY2F0aW9uX3Nsb3RfaW5h Y3RpdmVfdGltZW91dCI+CisgICAgICA8dGVybT48dmFybmFtZT5yZXBsaWNhdGlvbl9zbG90X2lu YWN0aXZlX3RpbWVvdXQ8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgIDxp bmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+cmVwbGljYXRpb25fc2xvdF9pbmFj dGl2ZV90aW1lb3V0PC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4K KyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAg ICAgIDxwYXJhPgorICAgICAgICBJbnZhbGlkYXRlcyByZXBsaWNhdGlvbiBzbG90cyB0aGF0IGFy ZSBpbmFjdGl2ZSBmb3IgbG9uZ2VyIHRoYW4KKyAgICAgICAgc3BlY2lmaWVkIGFtb3VudCBvZiB0 aW1lLiBJZiB0aGlzIHZhbHVlIGlzIHNwZWNpZmllZCB3aXRob3V0IHVuaXRzLAorICAgICAgICBp dCBpcyB0YWtlbiBhcyBzZWNvbmRzLiBBIHZhbHVlIG9mIHplcm8gKHdoaWNoIGlzIGRlZmF1bHQp IGRpc2FibGVzCisgICAgICAgIHRoZSB0aW1lb3V0IG1lY2hhbmlzbS4gVGhpcyBwYXJhbWV0ZXIg Y2FuIG9ubHkgYmUgc2V0IGluCisgICAgICAgIHRoZSA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25m PC9maWxlbmFtZT4gZmlsZSBvciBvbiB0aGUgc2VydmVyCisgICAgICAgIGNvbW1hbmQgbGluZS4K KyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBpbnZhbGlkYXRp b24gY2hlY2sgaGFwcGVucyBlaXRoZXIgd2hlbiB0aGUgc2xvdCBpcyBhY3F1aXJlZAorICAgICAg ICBmb3IgdXNlIG9yIGR1cmluZyBhIGNoZWNrcG9pbnQuIFRoZSB0aW1lIHNpbmNlIHRoZSBzbG90 IGhhcyBiZWNvbWUKKyAgICAgICAgaW5hY3RpdmUgaXMga25vd24gZnJvbSBpdHMKKyAgICAgICAg PHN0cnVjdGZpZWxkPmluYWN0aXZlX3NpbmNlPC9zdHJ1Y3RmaWVsZD4gdmFsdWUgdXNpbmcgd2hp Y2ggdGhlCisgICAgICAgIHRpbWVvdXQgaXMgbWVhc3VyZWQuCisgICAgICAgPC9wYXJhPgorCisg ICAgICAgPHBhcmE+CisgICAgICAgIE5vdGUgdGhhdCB0aGUgaW5hY3RpdmUgdGltZW91dCBpbnZh bGlkYXRpb24gbWVjaGFuaXNtIGlzIG5vdAorICAgICAgICBhcHBsaWNhYmxlIGZvciBzbG90cyBv biB0aGUgc3RhbmRieSB0aGF0IGFyZSBiZWluZyBzeW5jZWQgZnJvbSBhCisgICAgICAgIHByaW1h cnkgc2VydmVyICh3aG9zZSA8c3RydWN0ZmllbGQ+c3luY2VkPC9zdHJ1Y3RmaWVsZD4gZmllbGQg aXMKKyAgICAgICAgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4pLgorICAgICAgIDwvcGFyYT4KKyAg ICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50 cnkgaWQ9Imd1Yy10cmFjay1jb21taXQtdGltZXN0YW1wIiB4cmVmbGFiZWw9InRyYWNrX2NvbW1p dF90aW1lc3RhbXAiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+dHJhY2tfY29tbWl0X3RpbWVzdGFt cDwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9z eXN0ZW0tdmlld3Muc2dtbAppbmRleCA3ZWQ2MTcxNzBmLi4wNjM2MzhiZWRhIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3Rl bS12aWV3cy5zZ21sCkBAIC0yNTgwLDYgKzI1ODAsMTMgQEAgU0VMRUNUICogRlJPTSBwZ19sb2Nr cyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4CiAgICAgICAgICAgcGVyZm9ybSBs b2dpY2FsIGRlY29kaW5nLiAgSXQgaXMgc2V0IG9ubHkgZm9yIGxvZ2ljYWwgc2xvdHMuCiAgICAg ICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAg ICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFsPmluYWN0aXZlX3RpbWVvdXQ8L2xpdGVy YWw+IG1lYW5zIHRoYXQgdGhlIHNsb3QgaGFzIGJlZW4KKyAgICAgICAgICBpbmFjdGl2ZSBmb3Ig dGhlIGR1cmF0aW9uIHNwZWNpZmllZCBieQorICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1y ZXBsaWNhdGlvbi1zbG90LWluYWN0aXZlLXRpbWVvdXQiLz4gcGFyYW1ldGVyLgorICAgICAgICAg PC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAg ICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXggYjRkZDVjY2U3NS4uNTZmYzFhNDVhOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCkBA IC0xOTcsNyArMTk3LDcgQEAgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzX2d1dHMoRnVuY3Rp b25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29uZmlybSwgYm9vbCBiaW4KIAllbHNlCiAJCWVuZF9v Zl93YWwgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOwogCi0JUmVwbGljYXRpb25TbG90QWNx dWlyZShOYW1lU3RyKCpuYW1lKSwgdHJ1ZSk7CisJUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1l U3RyKCpuYW1lKSwgdHJ1ZSwgdHJ1ZSk7CiAKIAlQR19UUlkoKTsKIAl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKaW5kZXggZDE4ZTJjNzM0Mi4uZTkyZjU1OTUz OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtMzYy LDcgKzM2Miw3IEBAIGRyb3BfbG9jYWxfb2Jzb2xldGVfc2xvdHMoTGlzdCAqcmVtb3RlX3Nsb3Rf bGlzdCkKIAogCQkJaWYgKHN5bmNlZF9zbG90KQogCQkJewotCQkJCVJlcGxpY2F0aW9uU2xvdEFj cXVpcmUoTmFtZVN0cihsb2NhbF9zbG90LT5kYXRhLm5hbWUpLCB0cnVlKTsKKwkJCQlSZXBsaWNh dGlvblNsb3RBY3F1aXJlKE5hbWVTdHIobG9jYWxfc2xvdC0+ZGF0YS5uYW1lKSwgdHJ1ZSwgZmFs c2UpOwogCQkJCVJlcGxpY2F0aW9uU2xvdERyb3BBY3F1aXJlZCgpOwogCQkJfQogCkBAIC01NzUs NiArNTc1LDEzIEBAIHN5bmNocm9uaXplX29uZV9zbG90KFJlbW90ZVNsb3QgKnJlbW90ZV9zbG90 LCBPaWQgcmVtb3RlX2RiaWQpCiAJCQkJCQkgICAiIG5hbWUgc2xvdCBcIiVzXCIgYWxyZWFkeSBl eGlzdHMgb24gdGhlIHN0YW5kYnkiLAogCQkJCQkJICAgcmVtb3RlX3Nsb3QtPm5hbWUpKTsKIAor CQkvKgorCQkgKiBTa2lwIHRoZSBzeW5jIGlmIHRoZSBsb2NhbCBzbG90IGlzIGFscmVhZHkgaW52 YWxpZGF0ZWQuIFdlIGRvIHRoaXMKKwkJICogYmVmb3JlaGFuZCB0byBhdm9pZCBzbG90IGFjcXVp cmUgYW5kIHJlbGVhc2UuCisJCSAqLworCQlpZiAoc2xvdC0+ZGF0YS5pbnZhbGlkYXRlZCAhPSBS U19JTlZBTF9OT05FKQorCQkJcmV0dXJuIGZhbHNlOworCiAJCS8qCiAJCSAqIFRoZSBzbG90IGhh cyBiZWVuIHN5bmNocm9uaXplZCBiZWZvcmUuCiAJCSAqCkBAIC01OTEsNyArNTk4LDcgQEAgc3lu Y2hyb25pemVfb25lX3Nsb3QoUmVtb3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9pZCByZW1vdGVfZGJp ZCkKIAkJICogcHJlLWNoZWNrIHRvIGVuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGUgc2xv dCBwcm9wZXJ0aWVzIGlzCiAJCSAqIGNoYW5nZWQgYmVmb3JlIGFjcXVpcmluZyB0aGUgc2xvdC4K IAkJICovCi0JCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUocmVtb3RlX3Nsb3QtPm5hbWUsIHRydWUp OworCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKHJlbW90ZV9zbG90LT5uYW1lLCB0cnVlLCBmYWxz ZSk7CiAKIAkJQXNzZXJ0KHNsb3QgPT0gTXlSZXBsaWNhdGlvblNsb3QpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9zbG90LmMKaW5kZXggM2JkZGFhZTAyMi4uNzY3ZDgxODcwNiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYwpAQCAtMTA3LDEwICsxMDcsMTEgQEAgY29uc3QgY2hhciAqY29uc3QgU2xvdEludmFsaWRh dGlvbkNhdXNlc1tdID0gewogCVtSU19JTlZBTF9XQUxfUkVNT1ZFRF0gPSAid2FsX3JlbW92ZWQi LAogCVtSU19JTlZBTF9IT1JJWk9OXSA9ICJyb3dzX3JlbW92ZWQiLAogCVtSU19JTlZBTF9XQUxf TEVWRUxdID0gIndhbF9sZXZlbF9pbnN1ZmZpY2llbnQiLAorCVtSU19JTlZBTF9JTkFDVElWRV9U SU1FT1VUXSA9ICJpbmFjdGl2ZV90aW1lb3V0IiwKIH07CiAKIC8qIE1heGltdW0gbnVtYmVyIG9m IGludmFsaWRhdGlvbiBjYXVzZXMgKi8KLSNkZWZpbmUJUlNfSU5WQUxfTUFYX0NBVVNFUyBSU19J TlZBTF9XQUxfTEVWRUwKKyNkZWZpbmUJUlNfSU5WQUxfTUFYX0NBVVNFUyBSU19JTlZBTF9JTkFD VElWRV9USU1FT1VUCiAKIFN0YXRpY0Fzc2VydERlY2wobGVuZ3Rob2YoU2xvdEludmFsaWRhdGlv bkNhdXNlcykgPT0gKFJTX0lOVkFMX01BWF9DQVVTRVMgKyAxKSwKIAkJCQkgImFycmF5IGxlbmd0 aCBtaXNtYXRjaCIpOwpAQCAtMTQwLDYgKzE0MSw3IEBAIFJlcGxpY2F0aW9uU2xvdCAqTXlSZXBs aWNhdGlvblNsb3QgPSBOVUxMOwogLyogR1VDIHZhcmlhYmxlcyAqLwogaW50CQkJbWF4X3JlcGxp Y2F0aW9uX3Nsb3RzID0gMTA7IC8qIHRoZSBtYXhpbXVtIG51bWJlciBvZiByZXBsaWNhdGlvbgog CQkJCQkJCQkJCSAqIHNsb3RzICovCitpbnQJCQlyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3Rp bWVvdXQgPSAwOwogCiAvKgogICogVGhpcyBHVUMgbGlzdHMgc3RyZWFtaW5nIHJlcGxpY2F0aW9u IHN0YW5kYnkgc2VydmVyIHNsb3QgbmFtZXMgdGhhdApAQCAtMTU5LDYgKzE2MSwxNCBAQCBzdGF0 aWMgWExvZ1JlY1B0ciBzc19vbGRlc3RfZmx1c2hfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiBz dGF0aWMgdm9pZCBSZXBsaWNhdGlvblNsb3RTaG1lbUV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7 CiBzdGF0aWMgdm9pZCBSZXBsaWNhdGlvblNsb3REcm9wUHRyKFJlcGxpY2F0aW9uU2xvdCAqc2xv dCk7CiAKK3N0YXRpYyBib29sIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNh dGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKKwkJCQkJCQkJCQkgICBSZXBsaWNhdGlv blNsb3QgKnMsCisJCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBvbGRlc3RMU04sCisJCQkJCQkJCQkJ ICAgT2lkIGRib2lkLAorCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGlj dEhvcml6b24sCisJCQkJCQkJCQkJICAgYm9vbCBuZWVkX2xvY2ssCisJCQkJCQkJCQkJICAgYm9v bCAqaW52YWxpZGF0ZWQpOworCiAvKiBpbnRlcm5hbCBwZXJzaXN0ZW5jeSBmdW5jdGlvbnMgKi8K IHN0YXRpYyB2b2lkIFJlc3RvcmVTbG90RnJvbURpc2soY29uc3QgY2hhciAqbmFtZSk7CiBzdGF0 aWMgdm9pZCBDcmVhdGVTbG90T25EaXNrKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCk7CkBAIC01MzUs MTIgKzU0NSwxOCBAQCBSZXBsaWNhdGlvblNsb3ROYW1lKGludCBpbmRleCwgTmFtZSBuYW1lKQog ICoKICAqIEFuIGVycm9yIGlzIHJhaXNlZCBpZiBub3dhaXQgaXMgdHJ1ZSBhbmQgdGhlIHNsb3Qg aXMgY3VycmVudGx5IGluIHVzZS4gSWYKICAqIG5vd2FpdCBpcyBmYWxzZSwgd2Ugc2xlZXAgdW50 aWwgdGhlIHNsb3QgaXMgcmVsZWFzZWQgYnkgdGhlIG93bmluZyBwcm9jZXNzLgorICoKKyAqIElm IGNoZWNrX2Zvcl90aW1lb3V0X2ludmFsaWRhdGlvbiBpcyB0cnVlLCB0aGUgc2xvdCBpcyBjaGVj a2VkIGZvcgorICogaW52YWxpZGF0aW9uIGJhc2VkIG9uIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3Rp dmVfdGltZW91dCBHVUMsIGFuZCBhbiBlcnJvciBpcworICogcmFpc2VkIGFmdGVyIG1ha2luZyB0 aGUgc2xvdCBvdXJzLgogICovCiB2b2lkCi1SZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNvbnN0IGNo YXIgKm5hbWUsIGJvb2wgbm93YWl0KQorUmVwbGljYXRpb25TbG90QWNxdWlyZShjb25zdCBjaGFy ICpuYW1lLCBib29sIG5vd2FpdCwKKwkJCQkJICAgYm9vbCBjaGVja19mb3JfdGltZW91dF9pbnZh bGlkYXRpb24pCiB7CiAJUmVwbGljYXRpb25TbG90ICpzOwogCWludAkJCWFjdGl2ZV9waWQ7CisJ Ym9vbAkJcmVsZWFzZWRfbG9jayA9IGZhbHNlOwogCiAJQXNzZXJ0KG5hbWUgIT0gTlVMTCk7CiAK QEAgLTU4Myw3ICs1OTksNjAgQEAgcmV0cnk6CiAJfQogCWVsc2UKIAkJYWN0aXZlX3BpZCA9IE15 UHJvY1BpZDsKLQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKwor CS8qCisJICogV2hlbiB0aGUgc2xvdCBpcyBub3QgYWN0aXZlIHVuZGVyIG90aGVyIHByb2Nlc3Ms IGNoZWNrIGlmIHRoZSBnaXZlbgorCSAqIHNsb3QgaXMgdG8gYmUgaW52YWxpZGF0ZWQgYmFzZWQg b24gaW5hY3RpdmUgdGltZW91dCBiZWZvcmUgd2UgYWNxdWlyZQorCSAqIGl0LgorCSAqLworCWlm IChhY3RpdmVfcGlkID09IE15UHJvY1BpZCAmJgorCQljaGVja19mb3JfdGltZW91dF9pbnZhbGlk YXRpb24pCisJeworCQlib29sCQlpbnZhbGlkYXRlZCA9IGZhbHNlOworCisJCXJlbGVhc2VkX2xv Y2sgPSBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUlNfSU5WQUxfSU5BQ1RJVkVfVElN RU9VVCwKKwkJCQkJCQkJCQkJCQkgICBzLCAwLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkJCSAg IEludmFsaWRUcmFuc2FjdGlvbklkLAorCQkJCQkJCQkJCQkJCSAgIGZhbHNlLAorCQkJCQkJCQkJ CQkJCSAgICZpbnZhbGlkYXRlZCk7CisKKwkJLyoKKwkJICogSWYgdGhlIHNsb3QgaGFzIGJlZW4g aW52YWxpZGF0ZWQsIHJlY2FsY3VsYXRlIHRoZSByZXNvdXJjZSBsaW1pdHMuCisJCSAqLworCQlp ZiAoaW52YWxpZGF0ZWQpCisJCXsKKwkJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRY bWluKGZhbHNlKTsKKwkJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRMU04oKTsKKwkJ fQorCisJCS8qCisJCSAqIElmIHRoZSBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIG5vdyBvciBw cmV2aW91c2x5LCBlcnJvciBvdXQgYXMKKwkJICogdGhlcmUncyBubyBwb2ludCBpbiBhY3F1aXJp bmcgdGhlIHNsb3QuCisJCSAqCisJCSAqIFhYWDogV2UgbWlnaHQgbmVlZCB0byBjaGVjayBmb3Ig YWxsIGludmFsaWRhdGlvbnMgYW5kIGVycm9yIG91dAorCQkgKiBoZXJlLgorCQkgKi8KKwkJaWYg KHMtPmRhdGEuaW52YWxpZGF0ZWQgPT0gUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVCkKKwkJewor CQkJLyoKKwkJCSAqIFJlbGVhc2UgdGhlIGxvY2sgaWYgaXQncyBub3QgeWV0IGFuZCBtYWtlIHRo aXMgc2xvdCBvdXJzIHRvCisJCQkgKiBrZWVwIHRoZSBjbGVhbnVwIHBhdGggb24gZXJyb3IgaXMg aGFwcHkuCisJCQkgKi8KKwkJCWlmICghcmVsZWFzZWRfbG9jaykKKwkJCQlMV0xvY2tSZWxlYXNl KFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKworCQkJTXlSZXBsaWNhdGlvblNsb3QgPSBz OworCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiY2FuIG5vIGxvbmdlciBnZXQg Y2hhbmdlcyBmcm9tIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCQlOYW1lU3RyKHMt PmRhdGEubmFtZSkpLAorCQkJCQkgZXJyZGV0YWlsKCJUaGlzIHNsb3QgaGFzIGJlZW4gaW52YWxp ZGF0ZWQgYmVjYXVzZSBpdCB3YXMgaW5hY3RpdmUgZm9yIG1vcmUgdGhhbiByZXBsaWNhdGlvbl9z bG90X2luYWN0aXZlX3RpbWVvdXQuIikpKTsKKwkJfQorCX0KKworCWlmICghcmVsZWFzZWRfbG9j aykKKwkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7CiAKIAkvKgog CSAqIElmIHdlIGZvdW5kIHRoZSBzbG90IGJ1dCBpdCdzIGFscmVhZHkgYWN0aXZlIGluIGFub3Ro ZXIgcHJvY2Vzcywgd2UKQEAgLTc4MSw3ICs4NTAsNyBAQCBSZXBsaWNhdGlvblNsb3REcm9wKGNv bnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0KQogewogCUFzc2VydChNeVJlcGxpY2F0aW9uU2xv dCA9PSBOVUxMKTsKIAotCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUobmFtZSwgbm93YWl0KTsKKwlS ZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUsIG5vd2FpdCwgZmFsc2UpOwogCiAJLyoKIAkgKiBE byBub3QgYWxsb3cgdXNlcnMgdG8gZHJvcCB0aGUgc2xvdHMgd2hpY2ggYXJlIGN1cnJlbnRseSBi ZWluZyBzeW5jZWQKQEAgLTgwNCw3ICs4NzMsNyBAQCBSZXBsaWNhdGlvblNsb3RBbHRlcihjb25z dCBjaGFyICpuYW1lLCBib29sIGZhaWxvdmVyKQogewogCUFzc2VydChNeVJlcGxpY2F0aW9uU2xv dCA9PSBOVUxMKTsKIAotCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUobmFtZSwgZmFsc2UpOworCVJl cGxpY2F0aW9uU2xvdEFjcXVpcmUobmFtZSwgZmFsc2UsIHRydWUpOwogCiAJaWYgKFNsb3RJc1Bo eXNpY2FsKE15UmVwbGljYXRpb25TbG90KSkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTE1MDYsNiAr MTU3NSw5IEBAIFJlcG9ydFNsb3RJbnZhbGlkYXRpb24oUmVwbGljYXRpb25TbG90SW52YWxpZGF0 aW9uQ2F1c2UgY2F1c2UsCiAJCWNhc2UgUlNfSU5WQUxfV0FMX0xFVkVMOgogCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZXJyX2RldGFpbCwgXygiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5 IHJlcXVpcmVzIHdhbF9sZXZlbCA+PSBsb2dpY2FsIG9uIHRoZSBwcmltYXJ5IHNlcnZlci4iKSk7 CiAJCQlicmVhazsKKwkJY2FzZSBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUOgorCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmZXJyX2RldGFpbCwgXygiVGhlIHNsb3QgaGFzIGJlZW4gaW5hY3Rp dmUgZm9yIG1vcmUgdGhhbiByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQuIikpOwor CQkJYnJlYWs7CiAJCWNhc2UgUlNfSU5WQUxfTk9ORToKIAkJCXBnX3VucmVhY2hhYmxlKCk7CiAJ fQpAQCAtMTU0MCw3ICsxNjEyLDcgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJl cGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJCQkJCSAgIFJlcGxpY2F0 aW9uU2xvdCAqcywKIAkJCQkJCQkgICBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAkJCQkJCQkgICBP aWQgZGJvaWQsIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJ ICAgYm9vbCAqaW52YWxpZGF0ZWQpCisJCQkJCQkJICAgYm9vbCBuZWVkX2xvY2ssIGJvb2wgKmlu dmFsaWRhdGVkKQogewogCWludAkJCWxhc3Rfc2lnbmFsZWRfcGlkID0gMDsKIAlib29sCQlyZWxl YXNlZF9sb2NrID0gZmFsc2U7CkBAIC0xNTUwLDEyICsxNjIyLDE2IEBAIEludmFsaWRhdGVQb3Nz aWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwK IAlYTG9nUmVjUHRyCWluaXRpYWxfcmVzdGFydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlS ZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBpbnZhbGlkYXRpb25fY2F1c2VfcHJldiBQ R19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBSU19JTlZBTF9OT05FOwogCisJaWYgKG5lZWRfbG9j aykKKwkJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVE KTsKKwogCWZvciAoOzspCiAJewogCQlYTG9nUmVjUHRyCXJlc3RhcnRfbHNuOwogCQlOYW1lRGF0 YQlzbG90bmFtZTsKIAkJaW50CQkJYWN0aXZlX3BpZCA9IDA7CiAJCVJlcGxpY2F0aW9uU2xvdElu dmFsaWRhdGlvbkNhdXNlIGludmFsaWRhdGlvbl9jYXVzZSA9IFJTX0lOVkFMX05PTkU7CisJCVRp bWVzdGFtcFR6IG5vdyA9IDA7CiAKIAkJQXNzZXJ0KExXTG9ja0hlbGRCeU1lSW5Nb2RlKFJlcGxp Y2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpKTsKIApAQCAtMTU2Niw2ICsxNjQyLDE4 IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlk YXRpb25DYXVzZSBjYXVzZSwKIAkJCWJyZWFrOwogCQl9CiAKKwkJaWYgKGNhdXNlID09IFJTX0lO VkFMX0lOQUNUSVZFX1RJTUVPVVQgJiYKKwkJCShyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3Rp bWVvdXQgPiAwICYmCisJCQkgcy0+aW5hY3RpdmVfc2luY2UgPiAwICYmCisJCQkgIShSZWNvdmVy eUluUHJvZ3Jlc3MoKSAmJiBzLT5kYXRhLnN5bmNlZCkpKQorCQl7CisJCQkvKgorCQkJICogV2Ug Z2V0IHRoZSBjdXJyZW50IHRpbWUgYmVmb3JlaGFuZCB0byBhdm9pZCBzeXN0ZW0gY2FsbCB3aGls ZQorCQkJICogaG9sZGluZyB0aGUgc3BpbmxvY2suCisJCQkgKi8KKwkJCW5vdyA9IEdldEN1cnJl bnRUaW1lc3RhbXAoKTsKKwkJfQorCiAJCS8qCiAJCSAqIENoZWNrIGlmIHRoZSBzbG90IG5lZWRz IHRvIGJlIGludmFsaWRhdGVkLiBJZiBpdCBuZWVkcyB0byBiZQogCQkgKiBpbnZhbGlkYXRlZCwg YW5kIGlzIG5vdCBjdXJyZW50bHkgYWNxdWlyZWQsIGFjcXVpcmUgaXQgYW5kIG1hcmsgaXQKQEAg LTE2MTksNiArMTcwNyw0MSBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGlj YXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQkJCWlmIChTbG90SXNMb2dpY2Fs KHMpKQogCQkJCQkJaW52YWxpZGF0aW9uX2NhdXNlID0gY2F1c2U7CiAJCQkJCWJyZWFrOworCQkJ CWNhc2UgUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVDoKKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJ CSAqIFF1aWNrIGV4aXQgaWYgaW5hY3RpdmUgdGltZW91dCBpbnZhbGlkYXRpb24KKwkJCQkJCSAq IG1lY2hhbmlzbSBpcyBkaXNhYmxlZCBvciBzbG90IGlzIGN1cnJlbnRseSBiZWluZworCQkJCQkJ ICogdXNlZCBvciB0aGUgc2xvdCBvbiBzdGFuZGJ5IGlzIGN1cnJlbnRseSBiZWluZworCQkJCQkJ ICogc3luY2VkIGZyb20gdGhlIHByaW1hcnkuCisJCQkJCQkgKgorCQkJCQkJICogTm90ZSB0aGF0 IHdlIGRvbid0IGludmFsaWRhdGUgc3luY2VkIHNsb3RzIGJlY2F1c2UsCisJCQkJCQkgKiB0aGV5 IGFyZSB0eXBpY2FsbHkgY29uc2lkZXJlZCBub3QgYWN0aXZlIGFzIHRoZXkKKwkJCQkJCSAqIGRv bid0IHBlcmZvcm0gbG9naWNhbCBkZWNvZGluZyB0byBwcm9kdWNlIHRoZQorCQkJCQkJICogY2hh bmdlcy4KKwkJCQkJCSAqLworCQkJCQkJaWYgKHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGlt ZW91dCA9PSAwIHx8CisJCQkJCQkJcy0+aW5hY3RpdmVfc2luY2UgPT0gMCB8fAorCQkJCQkJCShS ZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJiBzLT5kYXRhLnN5bmNlZCkpCisJCQkJCQkJYnJlYWs7CisK KwkJCQkJCS8qCisJCQkJCQkgKiBDaGVjayBpZiB0aGUgc2xvdCBuZWVkcyB0byBiZSBpbnZhbGlk YXRlZCBkdWUgdG8KKwkJCQkJCSAqIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCBH VUMuCisJCQkJCQkgKi8KKwkJCQkJCWlmIChUaW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVkcyhzLT5p bmFjdGl2ZV9zaW5jZSwgbm93LAorCQkJCQkJCQkJCQkJCSAgIHJlcGxpY2F0aW9uX3Nsb3RfaW5h Y3RpdmVfdGltZW91dCAqIDEwMDApKQorCQkJCQkJeworCQkJCQkJCWludmFsaWRhdGlvbl9jYXVz ZSA9IGNhdXNlOworCisJCQkJCQkJLyoKKwkJCQkJCQkgKiBJbnZhbGlkYXRpb24gZHVlIHRvIGlu YWN0aXZlIHRpbWVvdXQgaW1wbGllcyBubworCQkJCQkJCSAqIG9uZSB1c2luZyB0aGUgc2xvdC4K KwkJCQkJCQkgKi8KKwkJCQkJCQlBc3NlcnQocy0+YWN0aXZlX3BpZCA9PSAwKTsKKwkJCQkJCX0K KwkJCQkJfQorCQkJCQlicmVhazsKIAkJCQljYXNlIFJTX0lOVkFMX05PTkU6CiAJCQkJCXBnX3Vu cmVhY2hhYmxlKCk7CiAJCQl9CkBAIC0xNzU2LDYgKzE4NzksMTYgQEAgSW52YWxpZGF0ZVBvc3Np Ymx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAog CQl9CiAJfQogCisJLyoKKwkgKiBSZWxlYXNlIHRoZSBsb2NrIGlmIHdlIGhhdmUgYWNxdWlyZWQg aXQgYXQgdGhlIGJlZ2lubmluZywgYW5kIGhhdmUgbm90CisJICogcmVsZWFzZWQgaXQgeWV0Lgor CSAqLworCWlmIChuZWVkX2xvY2sgJiYgIXJlbGVhc2VkX2xvY2spCisJeworCQlMV0xvY2tSZWxl YXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKwkJcmVsZWFzZWRfbG9jayA9IHRydWU7 CisJfQorCiAJQXNzZXJ0KHJlbGVhc2VkX2xvY2sgPT0gIUxXTG9ja0hlbGRCeU1lKFJlcGxpY2F0 aW9uU2xvdENvbnRyb2xMb2NrKSk7CiAKIAlyZXR1cm4gcmVsZWFzZWRfbG9jazsKQEAgLTE3NzIs NiArMTkwNSw3IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNs b3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKICAqIC0gUlNfSU5WQUxfSE9SSVpPTjogcmVxdWly ZXMgYSBzbmFwc2hvdCA8PSB0aGUgZ2l2ZW4gaG9yaXpvbiBpbiB0aGUgZ2l2ZW4KICAqICAgZGI7 IGRib2lkIG1heSBiZSBJbnZhbGlkT2lkIGZvciBzaGFyZWQgcmVsYXRpb25zCiAgKiAtIFJTX0lO VkFMX1dBTF9MRVZFTDogaXMgbG9naWNhbAorICogLSBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VU OiBpbmFjdGl2ZSB0aW1lb3V0IG9jY3VycwogICoKICAqIE5CIC0gdGhpcyBydW5zIGFzIHBhcnQg b2YgY2hlY2twb2ludCwgc28gYXZvaWQgcmFpc2luZyBlcnJvcnMgaWYgcG9zc2libGUuCiAgKi8K QEAgLTE4MDMsNyArMTkzNyw3IEBAIHJlc3RhcnQ6CiAKIAkJaWYgKEludmFsaWRhdGVQb3NzaWJs eU9ic29sZXRlU2xvdChjYXVzZSwgcywgb2xkZXN0TFNOLCBkYm9pZCwKIAkJCQkJCQkJCQkgICBz bmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJCQkgICAmaW52YWxpZGF0ZWQpKQorCQkJ CQkJCQkJCSAgIGZhbHNlLCAmaW52YWxpZGF0ZWQpKQogCQl7CiAJCQkvKiBpZiB0aGUgbG9jayB3 YXMgcmVsZWFzZWQsIHN0YXJ0IGZyb20gc2NyYXRjaCAqLwogCQkJZ290byByZXN0YXJ0OwpAQCAt MTgzNSw2ICsxOTY5LDcgQEAgdm9pZAogQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHMoYm9vbCBp c19zaHV0ZG93bikKIHsKIAlpbnQJCQlpOworCWJvb2wJCWludmFsaWRhdGVkID0gZmFsc2U7CiAK IAllbG9nKERFQlVHMSwgInBlcmZvcm1pbmcgcmVwbGljYXRpb24gc2xvdCBjaGVja3BvaW50Iik7 CiAKQEAgLTE4NTEsMTAgKzE5ODYsMjYgQEAgQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHMoYm9v bCBpc19zaHV0ZG93bikKIAl7CiAJCVJlcGxpY2F0aW9uU2xvdCAqcyA9ICZSZXBsaWNhdGlvblNs b3RDdGwtPnJlcGxpY2F0aW9uX3Nsb3RzW2ldOwogCQljaGFyCQlwYXRoW01BWFBHUEFUSF07CisJ CWJvb2wJCXJlbGVhc2VkX2xvY2sgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZID0gZmFsc2U7CiAK IAkJaWYgKCFzLT5pbl91c2UpCiAJCQljb250aW51ZTsKIAorCQkvKgorCQkgKiBIZXJlJ3MgYW4g b3Bwb3J0dW5pdHkgdG8gaW52YWxpZGF0ZSBpbmFjdGl2ZSByZXBsaWNhdGlvbiBzbG90cworCQkg KiBiYXNlZCBvbiB0aW1lb3V0LCBzbyBsZXQncyBkbyBpdC4KKwkJICovCisJCXJlbGVhc2VkX2xv Y2sgPSBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUlNfSU5WQUxfSU5BQ1RJVkVfVElN RU9VVCwgcywKKwkJCQkJCQkJCQkJCQkgICAwLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkJCSAg IEludmFsaWRUcmFuc2FjdGlvbklkLAorCQkJCQkJCQkJCQkJCSAgIHRydWUsICZpbnZhbGlkYXRl ZCk7CisKKwkJLyoKKwkJICogSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90IG11c3QgaGF2 ZSByZWxlYXNlZCB0aGUgbG9jayBhcyB3ZQorCQkgKiBoYXZlIHRvbGQgaXQgZXhwbGljaXRseSBh Y3F1aXJlIHRoZSBsb2NrLgorCQkgKi8KKwkJQXNzZXJ0KHJlbGVhc2VkX2xvY2spOworCiAJCS8q IHNhdmUgdGhlIHNsb3QgdG8gZGlzaywgbG9ja2luZyBpcyBoYW5kbGVkIGluIFNhdmVTbG90VG9Q YXRoKCkgKi8KIAkJc3ByaW50ZihwYXRoLCAicGdfcmVwbHNsb3QvJXMiLCBOYW1lU3RyKHMtPmRh dGEubmFtZSkpOwogCkBAIC0xODg0LDYgKzIwMzUsMTUgQEAgQ2hlY2tQb2ludFJlcGxpY2F0aW9u U2xvdHMoYm9vbCBpc19zaHV0ZG93bikKIAkJU2F2ZVNsb3RUb1BhdGgocywgcGF0aCwgTE9HKTsK IAl9CiAJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RBbGxvY2F0aW9uTG9jayk7CisKKwkv KgorCSAqIElmIGFueSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0ZWQsIHJlY2FsY3VsYXRlIHRo ZSByZXNvdXJjZSBsaW1pdHMuCisJICovCisJaWYgKGludmFsaWRhdGVkKQorCXsKKwkJUmVwbGlj YXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZFhtaW4oZmFsc2UpOworCQlSZXBsaWNhdGlvblNsb3Rz Q29tcHV0ZVJlcXVpcmVkTFNOKCk7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 ZnVuY3MuYwppbmRleCBkZDZjMWQ1YTdlLi45YWQzZTU1NzA0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9zbG90ZnVuY3MuYwpAQCAtNTM5LDcgKzUzOSw3IEBAIHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2 YW5jZShQR19GVU5DVElPTl9BUkdTKQogCQltb3ZldG8gPSBNaW4obW92ZXRvLCBHZXRYTG9nUmVw bGF5UmVjUHRyKE5VTEwpKTsKIAogCS8qIEFjcXVpcmUgdGhlIHNsb3Qgc28gd2UgIm93biIgaXQg Ki8KLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RuYW1lKSwgdHJ1ZSk7CisJ UmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpzbG90bmFtZSksIHRydWUsIHRydWUpOwog CiAJLyogQSBzbG90IHdob3NlIHJlc3RhcnRfbHNuIGhhcyBuZXZlciBiZWVuIHJlc2VydmVkIGNh bm5vdCBiZSBhZHZhbmNlZCAqLwogCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15UmVwbGljYXRp b25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMK aW5kZXggYmM0MGM0NTRkZS4uOTZlZWI4YjdkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2Vu ZGVyLmMKQEAgLTg0Niw3ICs4NDYsNyBAQCBTdGFydFJlcGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRp b25DbWQgKmNtZCkKIAogCWlmIChjbWQtPnNsb3RuYW1lKQogCXsKLQkJUmVwbGljYXRpb25TbG90 QWNxdWlyZShjbWQtPnNsb3RuYW1lLCB0cnVlKTsKKwkJUmVwbGljYXRpb25TbG90QWNxdWlyZShj bWQtPnNsb3RuYW1lLCB0cnVlLCB0cnVlKTsKIAkJaWYgKFNsb3RJc0xvZ2ljYWwoTXlSZXBsaWNh dGlvblNsb3QpKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCkBAIC0xNDU5LDcgKzE0NTksNyBAQCBTdGFy dExvZ2ljYWxSZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAKIAlBc3NlcnQo IU15UmVwbGljYXRpb25TbG90KTsKIAotCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY21kLT5zbG90 bmFtZSwgdHJ1ZSk7CisJUmVwbGljYXRpb25TbG90QWNxdWlyZShjbWQtPnNsb3RuYW1lLCB0cnVl LCB0cnVlKTsKIAogCS8qCiAJICogRm9yY2UgYSBkaXNjb25uZWN0LCBzbyB0aGF0IHRoZSBkZWNv ZGluZyBjb2RlIGRvZXNuJ3QgbmVlZCB0byBjYXJlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdf dXBncmFkZV9zdXBwb3J0LmMKaW5kZXggYzU0YjA4ZmUxOC4uODI5NTZkNThkMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYwpAQCAtMjk5LDcgKzI5OSw3IEBA IGJpbmFyeV91cGdyYWRlX2xvZ2ljYWxfc2xvdF9oYXNfY2F1Z2h0X3VwKFBHX0ZVTkNUSU9OX0FS R1MpCiAJc2xvdF9uYW1lID0gUEdfR0VUQVJHX05BTUUoMCk7CiAKIAkvKiBBY3F1aXJlIHRoZSBn aXZlbiBzbG90ICovCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpzbG90X25hbWUp LCB0cnVlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RfbmFtZSksIHRy dWUsIGZhbHNlKTsKIAogCUFzc2VydChTbG90SXNMb2dpY2FsKE15UmVwbGljYXRpb25TbG90KSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggYzEyNzg0Y2JlYy4uNDE0OWZm MWZmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTI5NzEsNiArMjk3MSwx OCBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVM TCwgTlVMTAogCX0sCiAKKwl7CisJCXsicmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0 IiwgUEdDX1NJR0hVUCwgUkVQTElDQVRJT05fU0VORElORywKKwkJCWdldHRleHRfbm9vcCgiU2V0 cyB0aGUgYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgaW52YWxpZGF0aW5nIGFuICIKKwkJ CQkJCSAiaW5hY3RpdmUgcmVwbGljYXRpb24gc2xvdC4iKSwKKwkJCU5VTEwsCisJCQlHVUNfVU5J VF9TCisJCX0sCisJCSZyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQsCisJCTAsIDAs IElOVF9NQVgsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImNvbW1pdF9kZWxh eSIsIFBHQ19TVVNFVCwgV0FMX1NFVFRJTkdTLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBk ZWxheSBpbiBtaWNyb3NlY29uZHMgYmV0d2VlbiB0cmFuc2FjdGlvbiBjb21taXQgYW5kICIKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBiYWVj ZGUyODQxLi4yZTFhZDJlYWNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlCkBAIC0zMzUsNiArMzM1LDcgQEAKICN3YWxfc2VuZGVyX3RpbWVvdXQg PSA2MHMJIyBpbiBtaWxsaXNlY29uZHM7IDAgZGlzYWJsZXMKICN0cmFja19jb21taXRfdGltZXN0 YW1wID0gb2ZmCSMgY29sbGVjdCB0aW1lc3RhbXAgb2YgdHJhbnNhY3Rpb24gY29tbWl0CiAJCQkJ IyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCisjcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90 aW1lb3V0ID0gMAkjIGluIHNlY29uZHM7IDAgZGlzYWJsZXMKIAogIyAtIFByaW1hcnkgU2VydmVy IC0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCmluZGV4IDdiOTM3ZDFhMGMuLjNmM2JkZjc0NDEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAorKysgYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9zbG90LmgKQEAgLTUzLDYgKzUzLDggQEAgdHlwZWRlZiBlbnVtIFJlcGxp Y2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlCiAJUlNfSU5WQUxfSE9SSVpPTiwKIAkvKiB3YWxf bGV2ZWwgaW5zdWZmaWNpZW50IGZvciBzbG90ICovCiAJUlNfSU5WQUxfV0FMX0xFVkVMLAorCS8q IGluYWN0aXZlIHNsb3QgdGltZW91dCBoYXMgb2NjdXJyZWQgKi8KKwlSU19JTlZBTF9JTkFDVElW RV9USU1FT1VULAogfSBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZTsKIAogZXh0ZXJu IFBHRExMSU1QT1JUIGNvbnN0IGNoYXIgKmNvbnN0IFNsb3RJbnZhbGlkYXRpb25DYXVzZXNbXTsK QEAgLTIzMCw2ICsyMzIsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgUmVwbGljYXRpb25TbG90ICpN eVJlcGxpY2F0aW9uU2xvdDsKIC8qIEdVQ3MgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4 X3JlcGxpY2F0aW9uX3Nsb3RzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKnN0YW5kYnlfc2xv dF9uYW1lczsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2 ZV90aW1lb3V0OwogCiAvKiBzaG1lbSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgKi8KIGV4dGVy biBTaXplIFJlcGxpY2F0aW9uU2xvdHNTaG1lbVNpemUodm9pZCk7CkBAIC0yNDUsNyArMjQ4LDgg QEAgZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90RHJvcChjb25zdCBjaGFyICpuYW1lLCBib29s IG5vd2FpdCk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3REcm9wQWNxdWlyZWQodm9pZCk7 CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RBbHRlcihjb25zdCBjaGFyICpuYW1lLCBib29s IGZhaWxvdmVyKTsKIAotZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90QWNxdWlyZShjb25zdCBj aGFyICpuYW1lLCBib29sIG5vd2FpdCk7CitleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RBY3F1 aXJlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0LAorCQkJCQkJCQkgICBib29sIGNoZWNr X2Zvcl90aW1lb3V0X2ludmFsaWRhdGlvbik7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RS ZWxlYXNlKHZvaWQpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90Q2xlYW51cCh2b2lkKTsK IGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdFNhdmUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxk CmluZGV4IDcxMjkyNGMyZmEuLjA0MzdhYjVjNDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292 ZXJ5L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC01 Miw2ICs1Miw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzA0MV9jaGVja3BvaW50X2F0X3Byb21v dGUucGwnLAogICAgICAgJ3QvMDQyX2xvd19sZXZlbF9iYWNrdXAucGwnLAogICAgICAgJ3QvMDQz X3dhbF9yZXBsYXlfd2FpdC5wbCcsCisgICAgICAndC8wNDRfaW52YWxpZGF0ZV9zbG90cy5wbCcs CiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ0X2lu dmFsaWRhdGVfc2xvdHMucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0NF9pbnZhbGlkYXRlX3Ns b3RzLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjc3OTZkODc5NjMK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0NF9pbnZhbGlkYXRlX3Ns b3RzLnBsCkBAIC0wLDAgKzEsMjgzIEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IGZvciByZXBsaWNhdGlvbiBzbG90 cyBpbnZhbGlkYXRpb24KK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7 CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyOwordXNlIFRlc3Q6Ok1vcmU7Cit1c2UgVGltZTo6SGlSZXMgcXcodXNsZWVwKTsKKwor IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFydDogSW52YWxpZGF0ZSBzdHJl YW1pbmcgc3RhbmRieSdzIHNsb3QgYXMgd2VsbCBhcyBsb2dpY2FsCisjIGZhaWxvdmVyIHNsb3Qg b24gcHJpbWFyeSBkdWUgdG8gcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0LiBBbHNv LAorIyBjaGVjayB0aGUgbG9naWNhbCBmYWlsb3ZlciBzbG90IHN5bmNlZCBvbiB0byB0aGUgc3Rh bmRieSBkb2Vzbid0IGludmFsaWRhdGUKKyMgdGhlIHNsb3Qgb24gaXRzIG93biwgYnV0IGdldHMg dGhlIGludmFsaWRhdGVkIHN0YXRlIGZyb20gdGhlIHJlbW90ZSBzbG90IG9uCisjIHRoZSBwcmlt YXJ5LgorCisjIEluaXRpYWxpemUgcHJpbWFyeSBub2RlCitteSAkcHJpbWFyeSA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJHByaW1hcnktPmluaXQoYWxsb3dz X3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworCisjIEF2b2lkIGNoZWNrcG9pbnQgZHVyaW5nIHRo ZSB0ZXN0LCBvdGhlcndpc2UsIHRoZSB0ZXN0IGNhbiBnZXQgdW5wcmVkaWN0YWJsZQorJHByaW1h cnktPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxeworY2hlY2twb2ludF90aW1l b3V0ID0gMWgKK2F1dG92YWN1dW0gPSBvZmYKK30pOworJHByaW1hcnktPnN0YXJ0OworCisjIFRh a2UgYmFja3VwCitteSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRwcmltYXJ5LT5iYWNr dXAoJGJhY2t1cF9uYW1lKTsKKworIyBDcmVhdGUgYSBzdGFuZGJ5IGxpbmtpbmcgdG8gdGhlIHBy aW1hcnkgdXNpbmcgdGhlIHJlcGxpY2F0aW9uIHNsb3QKK215ICRzdGFuZGJ5MSA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieTEnKTsKKyRzdGFuZGJ5MS0+aW5pdF9mcm9t X2JhY2t1cCgkcHJpbWFyeSwgJGJhY2t1cF9uYW1lLCBoYXNfc3RyZWFtaW5nID0+IDEpOworCitt eSAkY29ubnN0cl8xID0gJHByaW1hcnktPmNvbm5zdHI7Ciskc3RhbmRieTEtPmFwcGVuZF9jb25m KAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK3By aW1hcnlfc2xvdF9uYW1lID0gJ3NiMV9zbG90JworcHJpbWFyeV9jb25uaW5mbyA9ICckY29ubnN0 cl8xIGRibmFtZT1wb3N0Z3JlcycKKykpOworCisjIENyZWF0ZSBzeW5jIHNsb3Qgb24gdGhlIHBy aW1hcnkKKyRwcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgcGdfY3JlYXRlX2xv Z2ljYWxfcmVwbGljYXRpb25fc2xvdCgnbHN1YjFfc3luY19zbG90JywgJ3Rlc3RfZGVjb2Rpbmcn LCBmYWxzZSwgZmFsc2UsIHRydWUpO30KKyk7CisKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywgcXFbCisgICAgU0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9z bG90KHNsb3RfbmFtZSA6PSAnc2IxX3Nsb3QnKTsKK10pOworCiskc3RhbmRieTEtPnN0YXJ0Owor CitteSAkc3RhbmRieTFfbG9nc3RhcnQgPSAtcyAkc3RhbmRieTEtPmxvZ2ZpbGU7CisKKyMgV2Fp dCB1bnRpbCBzdGFuZGJ5IGhhcyByZXBsYXllZCBlbm91Z2ggZGF0YQorJHByaW1hcnktPndhaXRf Zm9yX2NhdGNodXAoJHN0YW5kYnkxKTsKKworIyBTeW5jaHJvbml6ZSB0aGUgcHJpbWFyeSBzZXJ2 ZXIgc2xvdHMgdG8gdGhlIHN0YW5kYnkKKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpOyIpOworCisjIENvbmZpcm0gdGhh dCB0aGUgbG9naWNhbCBmYWlsb3ZlciBzbG90IGlzIGNyZWF0ZWQgb24gdGhlIHN0YW5kYnkgYW5k IGlzCisjIGZsYWdnZWQgYXMgJ3N5bmNlZCcuCitpcyggJHN0YW5kYnkxLT5zYWZlX3BzcWwoCisJ CSdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIGNvdW50KCopID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9u X3Nsb3RzCisJCSAgV0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIxX3N5bmNfc2xvdCcgQU5EIHN5bmNl ZCBBTkQgTk9UIHRlbXBvcmFyeTt9CisJKSwKKwkidCIsCisJJ2xvZ2ljYWwgc2xvdCBoYXMgc3lu Y2VkIGFzIHRydWUgb24gc3RhbmRieScpOworCitteSAkbG9nc3RhcnQgPSAtcyAkcHJpbWFyeS0+ bG9nZmlsZTsKK215ICRpbmFjdGl2ZV90aW1lb3V0ID0gMjsKKworIyBTZXQgdGltZW91dCBzbyB0 aGF0IHRoZSBuZXh0IGNoZWNrcG9pbnQgd2lsbCBpbnZhbGlkYXRlIHRoZSBpbmFjdGl2ZQorIyBy ZXBsaWNhdGlvbiBzbG90LgorJHByaW1hcnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsK KyAgICBBTFRFUiBTWVNURU0gU0VUIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCBU TyAnJHtpbmFjdGl2ZV90aW1lb3V0fXMnOworXSk7CiskcHJpbWFyeS0+cmVsb2FkOworCisjIFdh aXQgZm9yIHRoZSBsb2dpY2FsIGZhaWxvdmVyIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlIG9uIHRo ZSBwcmltYXJ5LiBOb3RlCisjIHRoYXQgbm9ib2R5IGhhcyBhY3F1aXJlZCB0aGF0IHNsb3QgeWV0 LCBzbyBkdWUgdG8KKyMgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0IHNldHRpbmcg YWJvdmUgaXQgbXVzdCBnZXQgaW52YWxpZGF0ZWQuCit3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlv bigkcHJpbWFyeSwgJ2xzdWIxX3N5bmNfc2xvdCcsICRsb2dzdGFydCwKKwkkaW5hY3RpdmVfdGlt ZW91dCk7CisKKyMgU2V0IHRpbWVvdXQgb24gdGhlIHN0YW5kYnkgYWxzbyB0byBjaGVjayB0aGUg c3luY2VkIHNsb3RzIGRvbid0IGdldAorIyBpbnZhbGlkYXRlZCBkdWUgdG8gdGltZW91dCBvbiB0 aGUgc3RhbmRieS4KKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworICAg IEFMVEVSIFNZU1RFTSBTRVQgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0IFRPICcy cyc7CitdKTsKKyRzdGFuZGJ5MS0+cmVsb2FkOworCisjIE5vdywgc3luYyB0aGUgbG9naWNhbCBm YWlsb3ZlciBzbG90IGZyb20gdGhlIHJlbW90ZSBzbG90IG9uIHRoZSBwcmltYXJ5LgorIyBOb3Rl IHRoYXQgdGhlIHJlbW90ZSBzbG90IGhhcyBhbHJlYWR5IGJlZW4gaW52YWxpZGF0ZWQgZHVlIHRv IGluYWN0aXZlCisjIHRpbWVvdXQuIE5vdywgdGhlIHN0YW5kYnkgbXVzdCBhbHNvIHNlZSBpdCBh cyBpbnZhbGlkYXRlZC4KKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg cGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpOyIpOworCisjIFdhaXQgZm9yIHRoZSBpbmFjdGl2 ZSByZXBsaWNhdGlvbiBzbG90IHRvIGJlIGludmFsaWRhdGVkLgorJHN0YW5kYnkxLT5wb2xsX3F1 ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsIHFxWworCVNFTEVDVCBDT1VOVChzbG90X25hbWUpID0g MSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMV9z eW5jX3Nsb3QnIEFORAorCQlpbnZhbGlkYXRpb25fcmVhc29uID0gJ2luYWN0aXZlX3RpbWVvdXQn OworXSkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgcmVwbGljYXRp b24gc2xvdCBsc3ViMV9zeW5jX3Nsb3QgaW52YWxpZGF0aW9uIHRvIGJlIHN5bmNlZCBvbiBzdGFu ZGJ5IjsKKworIyBTeW5jZWQgc2xvdCBtdXN0bid0IGdldCBpbnZhbGlkYXRlZCBvbiB0aGUgc3Rh bmRieSBldmVuIGFmdGVyIGEgY2hlY2twb2ludCwKKyMgaXQgbXVzdCBzeW5jIGludmFsaWRhdGlv biBmcm9tIHRoZSBwcmltYXJ5LiBTbywgd2UgbXVzdCBub3Qgc2VlIHRoZSBzbG90J3MKKyMgaW52 YWxpZGF0aW9uIG1lc3NhZ2UgaW4gc2VydmVyIGxvZy4KKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJDSEVDS1BPSU5UIik7CitvayggISRzdGFuZGJ5MS0+bG9nX2NvbnRhaW5zKAor CQkiaW52YWxpZGF0aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3QgXCJsc3ViMV9zeW5jX3Ns b3RcIiIsCisJCSRzdGFuZGJ5MV9sb2dzdGFydCksCisJJ2NoZWNrIHRoYXQgc3luZWQgc2xvdCBo YXMgbm90IGJlZW4gaW52YWxpZGF0ZWQgb24gdGhlIHN0YW5kYnknKTsKKworIyBTdG9wIHN0YW5k YnkgdG8gbWFrZSB0aGUgc3RhbmRieSdzIHJlcGxpY2F0aW9uIHNsb3Qgb24gdGhlIHByaW1hcnkg aW5hY3RpdmUKKyRzdGFuZGJ5MS0+c3RvcDsKKworIyBXYWl0IGZvciB0aGUgc3RhbmRieSdzIHJl cGxpY2F0aW9uIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlCit3YWl0X2Zvcl9zbG90X2ludmFsaWRh dGlvbigkcHJpbWFyeSwgJ3NiMV9zbG90JywgJGxvZ3N0YXJ0LAorCSRpbmFjdGl2ZV90aW1lb3V0 KTsKKworIyBUZXN0Y2FzZSBlbmQ6IEludmFsaWRhdGUgc3RyZWFtaW5nIHN0YW5kYnkncyBzbG90 IGFzIHdlbGwgYXMgbG9naWNhbCBmYWlsb3ZlcgorIyBzbG90IG9uIHByaW1hcnkgZHVlIHRvIHJl cGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dC4gQWxzbywgY2hlY2sgdGhlCisjIGxvZ2lj YWwgZmFpbG92ZXIgc2xvdCBzeW5jZWQgb24gdG8gdGhlIHN0YW5kYnkgZG9lc24ndCBpbnZhbGlk YXRlIHRoZSBzbG90IG9uCisjIGl0cyBvd24sIGJ1dCBnZXRzIHRoZSBpbnZhbGlkYXRlZCBzdGF0 ZSBmcm9tIHRoZSByZW1vdGUgc2xvdCBvbiB0aGUgcHJpbWFyeS4KKyMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFydDogSW52YWxp ZGF0ZSBsb2dpY2FsIHN1YnNjcmliZXIncyBzbG90IGR1ZSB0bworIyByZXBsaWNhdGlvbl9zbG90 X2luYWN0aXZlX3RpbWVvdXQuCisKK215ICRwdWJsaXNoZXIgPSAkcHJpbWFyeTsKKworIyBQcmVw YXJlIGZvciB0aGUgbmV4dCB0ZXN0CiskcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXFbCisgICAgQUxURVIgU1lTVEVNIFNFVCByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3Rp bWVvdXQgVE8gJzAnOworXSk7CiskcHVibGlzaGVyLT5yZWxvYWQ7CisKKyMgQ3JlYXRlIHN1YnNj cmliZXIgbm9kZQorbXkgJHN1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ3N1YicpOworJHN1YnNjcmliZXItPmluaXQ7Ciskc3Vic2NyaWJlci0+c3RhcnQ7CisKKyMg Q3JlYXRlIHRhYmxlcworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUg VEFCTEUgdGVzdF90YmwgKGlkIGludCkiKTsKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RibCAoaWQgaW50KSIpOworCisjIEluc2VydCBzb21l IGRhdGEKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8g dGVzdF90YmwgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMSwgNSkpOyIpOworCisjIFNldHVwIGxv Z2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRwdWJsaXNoZXItPmNv bm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkNSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIEFMTCBUQUJMRVMiKTsKKyRwdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAgICBTRUxFQ1QgcGdfY3JlYXRlX2xv Z2ljYWxfcmVwbGljYXRpb25fc2xvdChzbG90X25hbWUgOj0gJ2xzdWIxX3Nsb3QnLCBwbHVnaW4g Oj0gJ3Bnb3V0cHV0Jyk7CitdKTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5z dHInIFBVQkxJQ0FUSU9OIHB1YiBXSVRIIChzbG90X25hbWUgPSAnbHN1YjFfc2xvdCcsIGNyZWF0 ZV9zbG90ID0gZmFsc2UpIgorKTsKKworJHN1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlv bl9zeW5jKCRwdWJsaXNoZXIsICdzdWInKTsKKworbXkgJHJlc3VsdCA9CisgICRzdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGJsIik7 CisKK2lzKCRyZXN1bHQsIHFxKDUpLCAiY2hlY2sgaW5pdGlhbCBjb3B5IHdhcyBkb25lIik7CisK KyMgUHJlcGFyZSBmb3IgdGhlIG5leHQgdGVzdAorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxWworICAgIEFMVEVSIFNZU1RFTSBTRVQgcmVwbGljYXRpb25fc2xvdF9pbmFj dGl2ZV90aW1lb3V0IFRPICcgJHtpbmFjdGl2ZV90aW1lb3V0fXMnOworXSk7CiskcHVibGlzaGVy LT5yZWxvYWQ7CisKKyRsb2dzdGFydCA9IC1zICRwdWJsaXNoZXItPmxvZ2ZpbGU7CisKKyMgU3Rv cCBzdWJzY3JpYmVyIHRvIG1ha2UgdGhlIHJlcGxpY2F0aW9uIHNsb3Qgb24gcHVibGlzaGVyIGlu YWN0aXZlCiskc3Vic2NyaWJlci0+c3RvcDsKKworIyBXYWl0IGZvciB0aGUgcmVwbGljYXRpb24g c2xvdCB0byBiZWNvbWUgaW5hY3RpdmUgYW5kIHRoZW4gaW52YWxpZGF0ZWQgZHVlIHRvCisjIHRp bWVvdXQuCit3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbigkcHVibGlzaGVyLCAnbHN1YjFfc2xv dCcsICRsb2dzdGFydCwKKwkkaW5hY3RpdmVfdGltZW91dCk7CisKKyMgVGVzdGNhc2UgZW5kOiBJ bnZhbGlkYXRlIGxvZ2ljYWwgc3Vic2NyaWJlcidzIHNsb3QgZHVlIHRvCisjIHJlcGxpY2F0aW9u X3Nsb3RfaW5hY3RpdmVfdGltZW91dC4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworc3ViIHdh aXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9uCit7CisJbXkgKCRub2RlLCAkc2xvdF9uYW1lLCAkb2Zm c2V0LCAkaW5hY3RpdmVfdGltZW91dCkgPSBAXzsKKwlteSAkbmFtZSA9ICRub2RlLT5uYW1lOwor CisJIyBXYWl0IGZvciB0aGUgcmVwbGljYXRpb24gc2xvdCB0byBiZWNvbWUgaW5hY3RpdmUKKwkk bm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCBDT1VO VChzbG90X25hbWUpID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCQlXSEVSRSBzbG90 X25hbWUgPSAnJHNsb3RfbmFtZScgQU5EIGFjdGl2ZSA9ICdmJzsKKwldKQorCSAgb3IgZGllCisJ ICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJlcGxpY2F0aW9uIHNsb3QgdG8gYmVjb21l IGluYWN0aXZlIjsKKworCSMgV2FpdCBmb3IgdGhlIHJlcGxpY2F0aW9uIHNsb3QgaW5mbyB0byBi ZSB1cGRhdGVkCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWwor CQlTRUxFQ1QgQ09VTlQoc2xvdF9uYW1lKSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cwor CQkJV0hFUkUgaW5hY3RpdmVfc2luY2UgSVMgTk9UIE5VTEwKKwkJCQlBTkQgc2xvdF9uYW1lID0g JyRzbG90X25hbWUnIEFORCBhY3RpdmUgPSAnZic7CisJXSkKKwkgIG9yIGRpZQorCSAgIlRpbWVk IG91dCB3aGlsZSB3YWl0aW5nIGZvciBpbmZvIG9mIHJlcGxpY2F0aW9uIHNsb3QgJHNsb3RfbmFt ZSB0byBiZSB1cGRhdGVkIG9uIG5vZGUgJG5hbWUiOworCisJIyBTbGVlcCBhdCBsZWFzdCAkaW5h Y3RpdmVfdGltZW91dCBkdXJhdGlvbiB0byBhdm9pZCBtdWx0aXBsZSBjaGVja3BvaW50cworCSMg Zm9yIHRoZSBzbG90IHRvIGdldCBpbnZhbGlkYXRlZC4KKwlzbGVlcCgkaW5hY3RpdmVfdGltZW91 dCk7CisKKwljaGVja19mb3Jfc2xvdF9pbnZhbGlkYXRpb25faW5fc2VydmVyX2xvZygkbm9kZSwg JHNsb3RfbmFtZSwgJG9mZnNldCk7CisKKwkjIFdhaXQgZm9yIHRoZSBpbmFjdGl2ZSByZXBsaWNh dGlvbiBzbG90IHRvIGJlIGludmFsaWRhdGVkCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJ CSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgQ09VTlQoc2xvdF9uYW1lKSA9IDEgRlJPTSBwZ19y ZXBsaWNhdGlvbl9zbG90cworCQkJV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90X25hbWUnIEFORAor CQkJaW52YWxpZGF0aW9uX3JlYXNvbiA9ICdpbmFjdGl2ZV90aW1lb3V0JzsKKwldKQorCSAgb3Ig ZGllCisJICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGluYWN0aXZlIHJlcGxpY2F0aW9u IHNsb3QgJHNsb3RfbmFtZSB0byBiZSBpbnZhbGlkYXRlZCBvbiBub2RlICRuYW1lIjsKKworCSMg Q2hlY2sgdGhhdCB0aGUgaW52YWxpZGF0ZWQgc2xvdCBjYW5ub3QgYmUgYWNxdWlyZWQKKwlteSAo JHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycik7CisKKwkoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVy cikgPSAkbm9kZS0+cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCQlTRUxFQ1QgcGdfcmVwbGlj YXRpb25fc2xvdF9hZHZhbmNlKCckc2xvdF9uYW1lJywgJzAvMScpOworCV0pOworCisJb2soICRz dGRlcnIgPX4KKwkJICAvY2FuIG5vIGxvbmdlciBnZXQgY2hhbmdlcyBmcm9tIHJlcGxpY2F0aW9u IHNsb3QgIiRzbG90X25hbWUiLywKKwkJImRldGVjdGVkIGVycm9yIHVwb24gdHJ5aW5nIHRvIGFj cXVpcmUgaW52YWxpZGF0ZWQgc2xvdCAkc2xvdF9uYW1lIG9uIG5vZGUgJG5hbWUiCisJICApCisJ ICBvciBkaWUKKwkgICJjb3VsZCBub3QgZGV0ZWN0IGVycm9yIHVwb24gdHJ5aW5nIHRvIGFjcXVp cmUgaW52YWxpZGF0ZWQgc2xvdCAkc2xvdF9uYW1lIjsKK30KKworIyBDaGVjayBmb3IgaW52YWxp ZGF0aW9uIG9mIHNsb3QgaW4gc2VydmVyIGxvZworc3ViIGNoZWNrX2Zvcl9zbG90X2ludmFsaWRh dGlvbl9pbl9zZXJ2ZXJfbG9nCit7CisJbXkgKCRub2RlLCAkc2xvdF9uYW1lLCAkb2Zmc2V0KSA9 IEBfOworCW15ICRpbnZhbGlkYXRlZCA9IDA7CisKKwlmb3IgKG15ICRpID0gMDsgJGkgPCAxMCAq ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0OyAkaSsrKQorCXsKKwkJ JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ0hFQ0tQT0lOVCIpOworCQlpZiAoJG5vZGUt PmxvZ19jb250YWlucygKKwkJCQkiaW52YWxpZGF0aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9uIHNs b3QgXCIkc2xvdF9uYW1lXCIiLAorCQkJCSRvZmZzZXQpKQorCQl7CisJCQkkaW52YWxpZGF0ZWQg PSAxOworCQkJbGFzdDsKKwkJfQorCQl1c2xlZXAoMTAwXzAwMCk7CisJfQorCW9rKCRpbnZhbGlk YXRlZCwKKwkJImNoZWNrIHRoYXQgc2xvdCAkc2xvdF9uYW1lIGludmFsaWRhdGlvbiBoYXMgYmVl biBsb2dnZWQiKTsKK30KKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjM0LjEKCg== --000000000000302bf906156c0a81--