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 1tKym1-00Bsho-Q9 for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Dec 2024 11:51:30 +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 1tKylz-003EtW-3o for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Dec 2024 11:51:28 +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 1tKyly-003EtB-CG for pgsql-hackers@lists.postgresql.org; Tue, 10 Dec 2024 11:51:27 +0000 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tKylw-0024iG-He for pgsql-hackers@lists.postgresql.org; Tue, 10 Dec 2024 11:51:26 +0000 Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-53e3c47434eso2411327e87.3 for ; Tue, 10 Dec 2024 03:51:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733831483; x=1734436283; 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=H/dcD96p5jt3CQvf/KMEM5wRcT5oper0Q8OP18zl2pM=; b=fokTpNYsbtZhUpsH5f/yue0bPSI+FZpT1Bx/9R+Gdwi4CITmUlQqunnD+AqKECUptC Kxtp1Lv/q3p5qVyRmdCKfOEp9BMSedm7p18HHqqnaYGnfn3KyF/v5O/CSguDRcEWQc/b vhcD7VXwapKGCT+5Fi71QuSZ8dAOzgxTnxDfWPfFk2e/FVRR9JybElP4MR2hVujthiO9 dkudmvZvAVc0N06AuVwH0zWzrl4GUcnNAX/CeITRw+kCXsDAX60CRI5MoapoUq89x6HH ssIbNxrxP+y037HgGCQbQB8M2a3Ae73WOR+/jTK7tC7dlb+hEAuzvxcAXmNudeRpQkKg N/Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733831483; x=1734436283; 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=H/dcD96p5jt3CQvf/KMEM5wRcT5oper0Q8OP18zl2pM=; b=hi3fLpSel9f/MKjshY0ko3F64HvUJQ3+bZ6CqRAcH+UtUFnqx0EkM/WNr3w4USU84s 9FFNVdzyb/PI3hjlnx/iNWNPwvZLOi/UXm7mI2dQ6gEFc6iSRf2Hm/v99oI9IXl/nX1Z 8sI8ifLvYa6nQn3m7T0mswpZ2DuHjElB58UPbJPagwvU3WKAy+RUxSt70G3qshgQXBhv KnsCiULC83GSQksedoU5vjI6lG/yTSQiW7nB38HwUbE7OgzkzY9jzQAK9s7GAOyo8Kw4 ww73TdFoTJpIgTKyQSZ+ZGxsguW/1yyv9k/raCWjZdabOt5y3A+ClHsib5GJlZO6HnBS rVVA== X-Forwarded-Encrypted: i=1; AJvYcCWeUuPiGLc8ToZp03QSz+7xhCxGlSY4heZijnuwUi7D4ChKUCHglwzKva0WLV6VFOvLRVFgY3WTts1bzdQP@lists.postgresql.org X-Gm-Message-State: AOJu0Yy0dIhwCSORRR6/fVFAYW/RKsbHMj7dpt/6oCU2/9nVDhienpwd wGrx+WVaBX9PP0pMHmsvg3jcDbpCrm26b2S4AUO/TwF1AE5ink+qrAEKLsm7R7piLzLSDeFuois 5tmrTKfL0JMhWZLvltGspoLIzmw== X-Gm-Gg: ASbGncvqG6igvGTqjR/YI/Iun86ESXX3vLzZIdcGXNL/DixJIwTzE1RHJ1LaxIjHkKN Y/5x0VWh8NXvh+kEanoVTt9O+ledWN8FyMIgy X-Google-Smtp-Source: AGHT+IEtdINTAUty2KtiV3VN7MuCK+g9/pBTxbDLkz2ODEH2O/rJqnKLynNfWnKl97S51GXst3fmogmaO5WrKgxubpw= X-Received: by 2002:a05:6512:3e14:b0:540:2022:e3c6 with SMTP id 2adb3069b0e04-5402022e505mr3238365e87.35.1733831482507; Tue, 10 Dec 2024 03:51:22 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Tue, 10 Dec 2024 17:21:09 +0530 Message-ID: Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation To: vignesh C Cc: Peter Smith , "Hayato Kuroda (Fujitsu)" , shveta malik , Bharath Rupireddy , Amit Kapila , Ajin Cherian , Bertrand Drouvot , Masahiko Sawada , Nathan Bossart , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000009d9c720628e91956" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009d9c720628e91956 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Dec 6, 2024 at 11:04=E2=80=AFAM vignesh C wro= te: > > > Determining the correct time may be challenging for users, as it > depends on when the active_since value is set, as well as when the > checkpoint_timeout occurs and the subsequent checkpoint is triggered. > Even if the user sets it to an appropriate value, there is still a > possibility of delayed identification due to the timing of when the > slot's active_timeout is being set. Including this information in the > documentation should be sufficient. > +1 v54 documents this information as suggested. Attached the v54 patch-set addressing all the comments till now in [1], [2] and [3]. [1] https://www.postgresql.org/message-id/CALDaNm0mTWwg0z4v-sorq08S2CdZmL2s= %2Brh4nHpWeJaBQ2F%2Bmg%40mail.gmail.com [2] https://www.postgresql.org/message-id/CALDaNm1STyk%3DS_EAihWP9SowBkS5dJ= 32JfEqmG5tTeC2Ct39yg%40mail.gmail.com [3] https://www.postgresql.org/message-id/CAHut%2BPtHbYNxPvtMfs7jARbsVcFXL1= %3DC9SO3Q93NgVDgbKN7LQ%40mail.gmail.com -- Thanks, Nisha --0000000000009d9c720628e91956 Content-Type: application/x-patch; name="v54-0001-Enhance-replication-slot-error-handling-slot-inv.patch" Content-Disposition: attachment; filename="v54-0001-Enhance-replication-slot-error-handling-slot-inv.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4iavqmq0 RnJvbSA3MTM4NzFkOGNkYTAyZjJiNzBjNjM5ODNmYzQ5ZGVkZTMwOTdmMDE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBNb24sIDE4IE5vdiAyMDI0IDE2OjEzOjI2ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 NTQgMS8yXSBFbmhhbmNlIHJlcGxpY2F0aW9uIHNsb3QgZXJyb3IgaGFuZGxpbmcsIHNsb3QKIGlu dmFsaWRhdGlvbiwgYW5kIGluYWN0aXZlX3NpbmNlIHNldHRpbmcgbG9naWMKCkluIFJlcGxpY2F0 aW9uU2xvdEFjcXVpcmUoKSwgcmFpc2UgYW4gZXJyb3IgZm9yIGludmFsaWQgc2xvdHMgaWYgdGhl CmNhbGxlciBzcGVjaWZpZXMgZXJyb3JfaWZfaW52YWxpZD10cnVlLgoKQWRkIGNoZWNrIGlmIHRo ZSBzbG90IGlzIGFscmVhZHkgYWNxdWlyZWQsIHRoZW4gbWFyayBpdCBpbnZhbGlkYXRlZCBkaXJl Y3RseS4KCkVuc3VyZSBzYW1lIGluYWN0aXZlX3NpbmNlIHRpbWUgZm9yIGFsbCBzbG90cyBpbiB1 cGRhdGVfc3luY2VkX3Nsb3RzX2luYWN0aXZlX3NpbmNlKCkKYW5kIFJlc3RvcmVTbG90RnJvbURp c2soKS4KLS0tCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyAgICAgICAg fCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jICAgIHwg MTMgKystLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAgIHwg NjEgKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNz LmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5j ICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBw b3J0LmMgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oICAgICAgICAg ICAgICAgIHwgIDMgKy0KIHNyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBs ICAgICB8ICAyICstCiA4IGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDIyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5j cy5jCmluZGV4IGI0ZGQ1Y2NlNzUuLjU2ZmMxYTQ1YTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHBnX2xv Z2ljYWxfc2xvdF9nZXRfY2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29s IGNvbmZpcm0sIGJvb2wgYmluCiAJZWxzZQogCQllbmRfb2Zfd2FsID0gR2V0WExvZ1JlcGxheVJl Y1B0cihOVUxMKTsKIAotCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqbmFtZSksIHRy dWUpOworCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqbmFtZSksIHRydWUsIHRydWUp OwogCiAJUEdfVFJZKCk7CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90 c3luYy5jCmluZGV4IGY0ZjgwYjIzMTIuLmUzNjQ1YWVhNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTQ0Niw3ICs0NDYsNyBAQCBkcm9wX2xvY2Fs X29ic29sZXRlX3Nsb3RzKExpc3QgKnJlbW90ZV9zbG90X2xpc3QpCiAKIAkJCWlmIChzeW5jZWRf c2xvdCkKIAkJCXsKLQkJCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIobG9jYWxfc2xv dC0+ZGF0YS5uYW1lKSwgdHJ1ZSk7CisJCQkJUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3Ry KGxvY2FsX3Nsb3QtPmRhdGEubmFtZSksIHRydWUsIGZhbHNlKTsKIAkJCQlSZXBsaWNhdGlvblNs b3REcm9wQWNxdWlyZWQoKTsKIAkJCX0KIApAQCAtNjY1LDcgKzY2NSw3IEBAIHN5bmNocm9uaXpl X29uZV9zbG90KFJlbW90ZVNsb3QgKnJlbW90ZV9zbG90LCBPaWQgcmVtb3RlX2RiaWQpCiAJCSAq IHByZS1jaGVjayB0byBlbnN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgb2YgdGhlIHNsb3QgcHJvcGVy dGllcyBpcwogCQkgKiBjaGFuZ2VkIGJlZm9yZSBhY3F1aXJpbmcgdGhlIHNsb3QuCiAJCSAqLwot CQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKHJlbW90ZV9zbG90LT5uYW1lLCB0cnVlKTsKKwkJUmVw bGljYXRpb25TbG90QWNxdWlyZShyZW1vdGVfc2xvdC0+bmFtZSwgdHJ1ZSwgZmFsc2UpOwogCiAJ CUFzc2VydChzbG90ID09IE15UmVwbGljYXRpb25TbG90KTsKIApAQCAtMTUwOCw3ICsxNTA4LDcg QEAgUmVwbFNsb3RTeW5jV29ya2VyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFy dHVwX2RhdGFfbGVuKQogc3RhdGljIHZvaWQKIHVwZGF0ZV9zeW5jZWRfc2xvdHNfaW5hY3RpdmVf c2luY2Uodm9pZCkKIHsKLQlUaW1lc3RhbXBUeiBub3cgPSAwOworCVRpbWVzdGFtcFR6IG5vdzsK IAogCS8qCiAJICogV2UgbmVlZCB0byB1cGRhdGUgaW5hY3RpdmVfc2luY2Ugb25seSB3aGVuIHdl IGFyZSBwcm9tb3Rpbmcgc3RhbmRieSB0bwpAQCAtMTUyMyw2ICsxNTIzLDkgQEAgdXBkYXRlX3N5 bmNlZF9zbG90c19pbmFjdGl2ZV9zaW5jZSh2b2lkKQogCS8qIFRoZSBzbG90IHN5bmMgd29ya2Vy IG9yIFNRTCBmdW5jdGlvbiBtdXN0bid0IGJlIHJ1bm5pbmcgYnkgbm93ICovCiAJQXNzZXJ0KChT bG90U3luY0N0eC0+cGlkID09IEludmFsaWRQaWQpICYmICFTbG90U3luY0N0eC0+c3luY2luZyk7 CiAKKwkvKiBVc2Ugc2FtZSBpbmFjdGl2ZV9zaW5jZSB0aW1lIGZvciBhbGwgc2xvdHMgKi8KKwlu b3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKIAlMV0xvY2tBY3F1aXJlKFJlcGxpY2F0aW9u U2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpOwogCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhf cmVwbGljYXRpb25fc2xvdHM7IGkrKykKQEAgLTE1MzcsMTAgKzE1NDAsNiBAQCB1cGRhdGVfc3lu Y2VkX3Nsb3RzX2luYWN0aXZlX3NpbmNlKHZvaWQpCiAJCQkvKiBUaGUgc2xvdCBtdXN0IG5vdCBi ZSBhY3F1aXJlZCBieSBhbnkgcHJvY2VzcyAqLwogCQkJQXNzZXJ0KHMtPmFjdGl2ZV9waWQgPT0g MCk7CiAKLQkJCS8qIFVzZSB0aGUgc2FtZSBpbmFjdGl2ZV9zaW5jZSB0aW1lIGZvciBhbGwgdGhl IHNsb3RzLiAqLwotCQkJaWYgKG5vdyA9PSAwKQotCQkJCW5vdyA9IEdldEN1cnJlbnRUaW1lc3Rh bXAoKTsKLQogCQkJU3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CiAJCQlzLT5pbmFjdGl2ZV9z aW5jZSA9IG5vdzsKIAkJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCmluZGV4IDRhMjA2Zjk1MjcuLmRiOTRjZWM1YzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKQEAgLTUzNSw5ICs1MzUsMTIgQEAgUmVwbGljYXRpb25TbG90TmFtZShpbnQgaW5kZXgsIE5h bWUgbmFtZSkKICAqCiAgKiBBbiBlcnJvciBpcyByYWlzZWQgaWYgbm93YWl0IGlzIHRydWUgYW5k IHRoZSBzbG90IGlzIGN1cnJlbnRseSBpbiB1c2UuIElmCiAgKiBub3dhaXQgaXMgZmFsc2UsIHdl IHNsZWVwIHVudGlsIHRoZSBzbG90IGlzIHJlbGVhc2VkIGJ5IHRoZSBvd25pbmcgcHJvY2Vzcy4K KyAqCisgKiBBbiBlcnJvciBpcyByYWlzZWQgaWYgZXJyb3JfaWZfaW52YWxpZCBpcyB0cnVlIGFu ZCB0aGUgc2xvdCBpcyBmb3VuZCB0bworICogYmUgaW52YWxpZC4KICAqLwogdm9pZAotUmVwbGlj YXRpb25TbG90QWNxdWlyZShjb25zdCBjaGFyICpuYW1lLCBib29sIG5vd2FpdCkKK1JlcGxpY2F0 aW9uU2xvdEFjcXVpcmUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBub3dhaXQsIGJvb2wgZXJyb3Jf aWZfaW52YWxpZCkKIHsKIAlSZXBsaWNhdGlvblNsb3QgKnM7CiAJaW50CQkJYWN0aXZlX3BpZDsK QEAgLTYxNSw2ICs2MTgsNDMgQEAgcmV0cnk6CiAJLyogV2UgbWFkZSB0aGlzIHNsb3QgYWN0aXZl LCBzbyBpdCdzIG91cnMgbm93LiAqLwogCU15UmVwbGljYXRpb25TbG90ID0gczsKIAorCS8qCisJ ICogQW4gZXJyb3IgaXMgcmFpc2VkIGlmIGVycm9yX2lmX2ludmFsaWQgaXMgdHJ1ZSBhbmQgdGhl IHNsb3QgaXMgZm91bmQgdG8KKwkgKiBiZSBpbnZhbGlkLgorCSAqLworCWlmIChlcnJvcl9pZl9p bnZhbGlkICYmIHMtPmRhdGEuaW52YWxpZGF0ZWQgIT0gUlNfSU5WQUxfTk9ORSkKKwl7CisJCVN0 cmluZ0luZm9EYXRhIGVycl9kZXRhaWw7CisKKwkJaW5pdFN0cmluZ0luZm8oJmVycl9kZXRhaWwp OworCisJCXN3aXRjaCAocy0+ZGF0YS5pbnZhbGlkYXRlZCkKKwkJeworCQkJY2FzZSBSU19JTlZB TF9XQUxfUkVNT1ZFRDoKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJfZGV0YWlsLCBfKCJUaGlz IHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgYmVjYXVzZSB0aGUgcmVxdWlyZWQgV0FMIGhhcyBi ZWVuIHJlbW92ZWQuIikpOworCQkJCWJyZWFrOworCisJCQljYXNlIFJTX0lOVkFMX0hPUklaT046 CisJCQkJYXBwZW5kU3RyaW5nSW5mbygmZXJyX2RldGFpbCwgXygiVGhpcyBzbG90IGhhcyBiZWVu IGludmFsaWRhdGVkIGJlY2F1c2UgdGhlIHJlcXVpcmVkIHJvd3MgaGF2ZSBiZWVuIHJlbW92ZWQu IikpOworCQkJCWJyZWFrOworCisJCQljYXNlIFJTX0lOVkFMX1dBTF9MRVZFTDoKKwkJCQkvKiB0 cmFuc2xhdG9yOiAlcyBpcyBhIEdVQyB2YXJpYWJsZSBuYW1lICovCisJCQkJYXBwZW5kU3RyaW5n SW5mbygmZXJyX2RldGFpbCwgXygiVGhpcyBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIGJlY2F1 c2UgXCIlc1wiIGlzIGluc3VmZmljaWVudCBmb3Igc2xvdC4iKSwKKwkJCQkJCQkJICJ3YWxfbGV2 ZWwiKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBSU19JTlZBTF9OT05FOgorCQkJCXBnX3VucmVh Y2hhYmxlKCk7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJZXJybXNnKCJjYW4gbm8gbG9u Z2VyIGdldCBjaGFuZ2VzIGZyb20gcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkgICBO YW1lU3RyKHMtPmRhdGEubmFtZSkpLAorCQkJCWVycmRldGFpbF9pbnRlcm5hbCgiJXMiLCBlcnJf ZGV0YWlsLmRhdGEpKTsKKwl9CisKIAkvKgogCSAqIFRoZSBjYWxsIHRvIHBnc3RhdF9hY3F1aXJl X3JlcGxzbG90KCkgcHJvdGVjdHMgYWdhaW5zdCBzdGF0cyBmb3IgYQogCSAqIGRpZmZlcmVudCBz bG90LCBmcm9tIGJlZm9yZSBhIHJlc3RhcnQgb3Igc3VjaCwgYmVpbmcgcHJlc2VudCBkdXJpbmcK QEAgLTc4NSw3ICs4MjUsNyBAQCBSZXBsaWNhdGlvblNsb3REcm9wKGNvbnN0IGNoYXIgKm5hbWUs IGJvb2wgbm93YWl0KQogewogCUFzc2VydChNeVJlcGxpY2F0aW9uU2xvdCA9PSBOVUxMKTsKIAot CVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUobmFtZSwgbm93YWl0KTsKKwlSZXBsaWNhdGlvblNsb3RB Y3F1aXJlKG5hbWUsIG5vd2FpdCwgZmFsc2UpOwogCiAJLyoKIAkgKiBEbyBub3QgYWxsb3cgdXNl cnMgdG8gZHJvcCB0aGUgc2xvdHMgd2hpY2ggYXJlIGN1cnJlbnRseSBiZWluZyBzeW5jZWQKQEAg LTgxMiw3ICs4NTIsNyBAQCBSZXBsaWNhdGlvblNsb3RBbHRlcihjb25zdCBjaGFyICpuYW1lLCBj b25zdCBib29sICpmYWlsb3ZlciwKIAlBc3NlcnQoTXlSZXBsaWNhdGlvblNsb3QgPT0gTlVMTCk7 CiAJQXNzZXJ0KGZhaWxvdmVyIHx8IHR3b19waGFzZSk7CiAKLQlSZXBsaWNhdGlvblNsb3RBY3F1 aXJlKG5hbWUsIGZhbHNlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUsIGZhbHNlLCBm YWxzZSk7CiAKIAlpZiAoU2xvdElzUGh5c2ljYWwoTXlSZXBsaWNhdGlvblNsb3QpKQogCQllcmVw b3J0KEVSUk9SLApAQCAtMTY3NiwxMSArMTcxNiwxMiBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNv bGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCWFjdGl2 ZV9waWQgPSBzLT5hY3RpdmVfcGlkOwogCiAJCS8qCi0JCSAqIElmIHRoZSBzbG90IGNhbiBiZSBh Y3F1aXJlZCwgZG8gc28gYW5kIG1hcmsgaXQgaW52YWxpZGF0ZWQKLQkJICogaW1tZWRpYXRlbHku ICBPdGhlcndpc2Ugd2UnbGwgc2lnbmFsIHRoZSBvd25pbmcgcHJvY2VzcywgYmVsb3csIGFuZAot CQkgKiByZXRyeS4KKwkJICogSWYgdGhlIHNsb3QgY2FuIGJlIGFjcXVpcmVkLCBkbyBzbyBhbmQg bWFyayBpdCBhcyBpbnZhbGlkYXRlZC4gSWYKKwkJICogdGhlIHNsb3QgaXMgYWxyZWFkeSBvdXJz LCBtYXJrIGl0IGFzIGludmFsaWRhdGVkLiBPdGhlcndpc2UsIHdlJ2xsCisJCSAqIHNpZ25hbCB0 aGUgb3duaW5nIHByb2Nlc3MgYmVsb3cgYW5kIHJldHJ5LgogCQkgKi8KLQkJaWYgKGFjdGl2ZV9w aWQgPT0gMCkKKwkJaWYgKGFjdGl2ZV9waWQgPT0gMCB8fAorCQkJKE15UmVwbGljYXRpb25TbG90 ID09IHMgJiYgYWN0aXZlX3BpZCA9PSBNeVByb2NQaWQpKQogCQl7CiAJCQlNeVJlcGxpY2F0aW9u U2xvdCA9IHM7CiAJCQlzLT5hY3RpdmVfcGlkID0gTXlQcm9jUGlkOwpAQCAtMjIwOCw2ICsyMjQ5 LDcgQEAgUmVzdG9yZVNsb3RGcm9tRGlzayhjb25zdCBjaGFyICpuYW1lKQogCWJvb2wJCXJlc3Rv cmVkID0gZmFsc2U7CiAJaW50CQkJcmVhZEJ5dGVzOwogCXBnX2NyYzMyYwljaGVja3N1bTsKKwlU aW1lc3RhbXBUeiBub3c7CiAKIAkvKiBubyBuZWVkIHRvIGxvY2sgaGVyZSwgbm8gY29uY3VycmVu dCBhY2Nlc3MgYWxsb3dlZCB5ZXQgKi8KIApAQCAtMjM2OCw2ICsyNDEwLDkgQEAgUmVzdG9yZVNs b3RGcm9tRGlzayhjb25zdCBjaGFyICpuYW1lKQogCQkJCQkJTmFtZVN0cihjcC5zbG90ZGF0YS5u YW1lKSksCiAJCQkJIGVycmhpbnQoIkNoYW5nZSBcIndhbF9sZXZlbFwiIHRvIGJlIFwicmVwbGlj YVwiIG9yIGhpZ2hlci4iKSkpOwogCisJLyogVXNlIHNhbWUgaW5hY3RpdmVfc2luY2UgdGltZSBm b3IgYWxsIHNsb3RzICovCisJbm93ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCiAJLyogbm90 aGluZyBjYW4gYmUgYWN0aXZlIHlldCwgZG9uJ3QgbG9jayBhbnl0aGluZyAqLwogCWZvciAoaSA9 IDA7IGkgPCBtYXhfcmVwbGljYXRpb25fc2xvdHM7IGkrKykKIAl7CkBAIC0yNDAwLDcgKzI0NDUs NyBAQCBSZXN0b3JlU2xvdEZyb21EaXNrKGNvbnN0IGNoYXIgKm5hbWUpCiAJCSAqIHNsb3QgZnJv bSB0aGUgZGlzayBpbnRvIG1lbW9yeS4gV2hvZXZlciBhY3F1aXJlcyB0aGUgc2xvdCBpLmUuCiAJ CSAqIG1ha2VzIHRoZSBzbG90IGFjdGl2ZSB3aWxsIHJlc2V0IGl0LgogCQkgKi8KLQkJc2xvdC0+ aW5hY3RpdmVfc2luY2UgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJCXNsb3QtPmluYWN0aXZl X3NpbmNlID0gbm93OwogCiAJCXJlc3RvcmVkID0gdHJ1ZTsKIAkJYnJlYWs7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Nsb3RmdW5jcy5jCmluZGV4IDQ4OGExNjFiM2UuLjU3OGNmZjY0YzggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCkBAIC01MzYsNyArNTM2LDcgQEAgcGdfcmVwbGljYXRp b25fc2xvdF9hZHZhbmNlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW1vdmV0byA9IE1pbihtb3ZldG8s IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCkpOwogCiAJLyogQWNxdWlyZSB0aGUgc2xvdCBzbyB3 ZSAib3duIiBpdCAqLwotCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdG5hbWUp LCB0cnVlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RuYW1lKSwgdHJ1 ZSwgdHJ1ZSk7CiAKIAkvKiBBIHNsb3Qgd2hvc2UgcmVzdGFydF9sc24gaGFzIG5ldmVyIGJlZW4g cmVzZXJ2ZWQgY2Fubm90IGJlIGFkdmFuY2VkICovCiAJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQo TXlSZXBsaWNhdGlvblNsb3QtPmRhdGEucmVzdGFydF9sc24pKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYwppbmRleCAzNzFlZWYzZGRkLi5iMzZhZTkwYjJjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxzZW5kZXIuYwpAQCAtODE2LDcgKzgxNiw3IEBAIFN0YXJ0UmVwbGljYXRpb24oU3Rh cnRSZXBsaWNhdGlvbkNtZCAqY21kKQogCiAJaWYgKGNtZC0+c2xvdG5hbWUpCiAJewotCQlSZXBs aWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOworCQlSZXBsaWNhdGlvblNs b3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUsIHRydWUpOwogCQlpZiAoU2xvdElzTG9naWNh bChNeVJlcGxpY2F0aW9uU2xvdCkpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKQEAgLTE0MzQsNyArMTQz NCw3IEBAIFN0YXJ0TG9naWNhbFJlcGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkK IAogCUFzc2VydCghTXlSZXBsaWNhdGlvblNsb3QpOwogCi0JUmVwbGljYXRpb25TbG90QWNxdWly ZShjbWQtPnNsb3RuYW1lLCB0cnVlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xv dG5hbWUsIHRydWUsIHRydWUpOwogCiAJLyoKIAkgKiBGb3JjZSBhIGRpc2Nvbm5lY3QsIHNvIHRo YXQgdGhlIGRlY29kaW5nIGNvZGUgZG9lc24ndCBuZWVkIHRvIGNhcmUKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYwppbmRleCA4YTQ1YjU4MjdlLi5lOGJjOTg2YzA3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCkBAIC0yOTgs NyArMjk4LDcgQEAgYmluYXJ5X3VwZ3JhZGVfbG9naWNhbF9zbG90X2hhc19jYXVnaHRfdXAoUEdf RlVOQ1RJT05fQVJHUykKIAlzbG90X25hbWUgPSBQR19HRVRBUkdfTkFNRSgwKTsKIAogCS8qIEFj cXVpcmUgdGhlIGdpdmVuIHNsb3QgKi8KLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIo KnNsb3RfbmFtZSksIHRydWUpOworCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xv dF9uYW1lKSwgdHJ1ZSwgdHJ1ZSk7CiAKIAlBc3NlcnQoU2xvdElzTG9naWNhbChNeVJlcGxpY2F0 aW9uU2xvdCkpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90Lmgg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5kZXggZDJjZjc4NmZkNS4uZjVmMmQy MjE2MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtMjUzLDcgKzI1Myw4IEBAIGV4dGVybiB2 b2lkIFJlcGxpY2F0aW9uU2xvdERyb3BBY3F1aXJlZCh2b2lkKTsKIGV4dGVybiB2b2lkIFJlcGxp Y2F0aW9uU2xvdEFsdGVyKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGJvb2wgKmZhaWxvdmVyLAog CQkJCQkJCQkgY29uc3QgYm9vbCAqdHdvX3BoYXNlKTsKIAotZXh0ZXJuIHZvaWQgUmVwbGljYXRp b25TbG90QWNxdWlyZShjb25zdCBjaGFyICpuYW1lLCBib29sIG5vd2FpdCk7CitleHRlcm4gdm9p ZCBSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0LAor CQkJCQkJCQkgICBib29sIGVycm9yX2lmX2ludmFsaWQpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRp b25TbG90UmVsZWFzZSh2b2lkKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdENsZWFudXAo Ym9vbCBzeW5jZWRfb25seSk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RTYXZlKHZvaWQp OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwg Yi9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbAppbmRleCBlZmI0YmEz YWYxLi4zMzNlMDQwZTdmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBs c2xvdF9saW1pdC5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1p dC5wbApAQCAtMjM0LDcgKzIzNCw3IEBAIG15ICRmYWlsZWQgPSAwOwogZm9yIChteSAkaSA9IDA7 ICRpIDwgMTAgKiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsgJGkr KykKIHsKIAlpZiAoJG5vZGVfc3RhbmRieS0+bG9nX2NvbnRhaW5zKAotCQkJInJlcXVlc3RlZCBX QUwgc2VnbWVudCBbMC05QS1GXSsgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIiwKKwkJCSJUaGlz IHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgYmVjYXVzZSB0aGUgcmVxdWlyZWQgV0FMIGhhcyBi ZWVuIHJlbW92ZWQiLAogCQkJJGxvZ3N0YXJ0KSkKIAl7CiAJCSRmYWlsZWQgPSAxOwotLSAKMi4z NC4xCgo= --0000000000009d9c720628e91956 Content-Type: application/x-patch; name="v54-0002-Introduce-inactive_timeout-based-replication-slo.patch" Content-Disposition: attachment; filename="v54-0002-Introduce-inactive_timeout-based-replication-slo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4iavw0i1 RnJvbSA3ZmMyMDI1MmQ4ODI4MDgzNjEzZTc5NDhiOWQ1YTQ4MzQ5YWYwYjI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBXZWQsIDQgRGVjIDIwMjQgMTI6NTE6MjIgKzA1MzAKU3ViamVjdDogW1BBVENIIHY1 NCAyLzJdIEludHJvZHVjZSBpbmFjdGl2ZV90aW1lb3V0IGJhc2VkIHJlcGxpY2F0aW9uIHNsb3QK IGludmFsaWRhdGlvbgoKVGlsbCBub3csIHBvc3RncmVzIGhhcyB0aGUgYWJpbGl0eSB0byBpbnZh bGlkYXRlIGluYWN0aXZlCnJlcGxpY2F0aW9uIHNsb3RzIGJhc2VkIG9uIHRoZSBhbW91bnQgb2Yg V0FMIChzZXQgdmlhCm1heF9zbG90X3dhbF9rZWVwX3NpemUgR1VDKSB0aGF0IHdpbGwgYmUgbmVl ZGVkIGZvciB0aGUgc2xvdHMgaW4KY2FzZSB0aGV5IGJlY29tZSBhY3RpdmUuIEhvd2V2ZXIsIGNo b29zaW5nIGEgZGVmYXVsdCB2YWx1ZSBmb3IKdGhpcyBHVUMgaXMgYSBiaXQgdHJpY2t5LiBCZWNh dXNlIHRoZSBhbW91bnQgb2YgV0FMIGEgZGF0YWJhc2UKZ2VuZXJhdGVzLCBhbmQgdGhlIGFsbG9j YXRlZCBzdG9yYWdlIHBlciBpbnN0YW5jZSB3aWxsIHZhcnkKZ3JlYXRseSBpbiBwcm9kdWN0aW9u LCBtYWtpbmcgaXQgZGlmZmljdWx0IHRvIHBpbiBkb3duIGEKb25lLXNpemUtZml0cy1hbGwgdmFs dWUuCgpJdCBpcyBvZnRlbiBlYXN5IGZvciB1c2VycyB0byBzZXQgYSB0aW1lb3V0IG9mIHNheSAx IG9yIDIgb3IgbgpkYXlzLCBhZnRlciB3aGljaCBhbGwgdGhlIGluYWN0aXZlIHNsb3RzIGdldCBp bnZhbGlkYXRlZC4gVGhpcwpjb21taXQgaW50cm9kdWNlcyBhIEdVQyBuYW1lZCBpZGxlX3JlcGxp Y2F0aW9uX3Nsb3RfdGltZW91dC4KV2hlbiBzZXQsIHBvc3RncmVzIGludmFsaWRhdGVzIHNsb3Rz IChkdXJpbmcgbm9uLXNodXRkb3duCmNoZWNrcG9pbnRzKSB0aGF0IGFyZSBpZGxlIGZvciBsb25n ZXIgdGhhbiB0aGlzIGFtb3VudCBvZgp0aW1lLgoKTm90ZSB0aGF0IHRoZSBpZGxlIHRpbWVvdXQg aW52YWxpZGF0aW9uIG1lY2hhbmlzbSBpcyBub3QKYXBwbGljYWJsZSBmb3Igc2xvdHMgb24gdGhl IHN0YW5kYnkgc2VydmVyIHRoYXQgYXJlIGJlaW5nIHN5bmNlZApmcm9tIHRoZSBwcmltYXJ5IHNl cnZlciAoaS5lLiwgc3RhbmRieSBzbG90cyBoYXZpbmcgJ3N5bmNlZCcgZmllbGQKJ3RydWUnKS4g U3luY2VkIHNsb3RzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBpbmFjdGl2ZSBiZWNhdXNl CnRoZXkgZG9uJ3QgcGVyZm9ybSBsb2dpY2FsIGRlY29kaW5nIHRvIHByb2R1Y2UgY2hhbmdlcy4K LS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMzkg KysrKwogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgIHwgICA1 ICsKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAgICAgICAgICB8ICAxMCAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jICAgIHwgICA0ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAxNTUgKysr KysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAg ICAgfCAgMTIgKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZSB8ICAgMSArCiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jICAg fCAgIDQgKwogc3JjL2Jpbi9wZ191cGdyYWRlL3NlcnZlci5jICAgICAgICAgICAgICAgICAgIHwg ICA3ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCAgICAgICAgICAgICAgICB8ICAy MiArKwogc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmggICAgICAgICAgICAgICAgIHwgICAy ICsKIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8ICAgMSAr CiAuLi4vdC8wNDNfaW52YWxpZGF0ZV9pbmFjdGl2ZV9zbG90cy5wbCAgICAgICAgfCAxODggKysr KysrKysrKysrKysrKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCA0MzQgaW5zZXJ0aW9ucygrKSwgMTYg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDNf aW52YWxpZGF0ZV9pbmFjdGl2ZV9zbG90cy5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBlMGM4MzI1YTM5Li5h ODg4YzcwOWZkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00NTkzLDYgKzQ1OTMsNDUgQEAgcmVzdG9yZV9jb21t YW5kID0gJ2NvcHkgIkM6XFxzZXJ2ZXJcXGFyY2hpdmVkaXJcXCVmIiAiJXAiJyAgIyBXaW5kb3dz CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlz dGVudHJ5IGlkPSJndWMtaWRsZS1yZXBsaWNhdGlvbi1zbG90LXRpbWVvdXQiIHhyZWZsYWJlbD0i aWRsZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVvdXQiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+aWRs ZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVvdXQ8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBl PikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+aWRsZV9yZXBs aWNhdGlvbl9zbG90X3RpbWVvdXQ8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9w cmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEludmFsaWRhdGUgcmVwbGljYXRpb24gc2xvdHMg dGhhdCBhcmUgaWRsZSBmb3IgbG9uZ2VyIHRoYW4gdGhpcworICAgICAgICBhbW91bnQgb2YgdGlt ZS4gSWYgdGhpcyB2YWx1ZSBpcyBzcGVjaWZpZWQgd2l0aG91dCB1bml0cywKKyAgICAgICAgaXQg aXMgdGFrZW4gYXMgbWlsbGlzZWNvbmRzLiBBIHZhbHVlIG9mIHplcm8gKHdoaWNoIGlzIGRlZmF1 bHQpIGRpc2FibGVzCisgICAgICAgIHRoZSBpZGxlIHRpbWVvdXQgaW52YWxpZGF0aW9uIG1lY2hh bmlzbS4gVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkKKyAgICAgICAgYmUgc2V0IGluIHRoZSA8Zmls ZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciBvbiB0aGUKKyAgICAgICAg c2VydmVyIGNvbW1hbmQgbGluZS4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAg ICAgICAgU2xvdCBpbnZhbGlkYXRpb24gZHVlIHRvIGlkbGUgdGltZW91dCBvY2N1cnMgZHVyaW5n IGNoZWNrcG9pbnQuCisgICAgICAgIElmIHRoZSA8dmFybmFtZT5jaGVja3BvaW50X3RpbWVvdXQ8 L3Zhcm5hbWU+IGV4Y2VlZHMKKyAgICAgICAgPHZhcm5hbWU+aWRsZV9yZXBsaWNhdGlvbl9zbG90 X3RpbWVvdXQ8L3Zhcm5hbWU+LCB0aGUgc2xvdAorICAgICAgICBpbnZhbGlkYXRpb24gd2lsbCBi ZSBkZWxheWVkIHVudGlsIHRoZSBuZXh0IGNoZWNrcG9pbnQgaXMgdHJpZ2dlcmVkLgorICAgICAg ICBUbyBhdm9pZCBkZWxheXMsIHVzZXJzIGNhbiBmb3JjZSBhIGNoZWNrcG9pbnQgdG8gcHJvbXB0 bHkgaW52YWxpZGF0ZQorICAgICAgICBpbmFjdGl2ZSBzbG90cy4gVGhlIGR1cmF0aW9uIG9mIHNs b3QgaW5hY3Rpdml0eSBpcyBjYWxjdWxhdGVkIHVzaW5nIHRoZSBzbG90J3MKKyAgICAgICAgPGxp bmsgbGlua2VuZD0idmlldy1wZy1yZXBsaWNhdGlvbi1zbG90cyI+cGdfcmVwbGljYXRpb25fc2xv dHM8L2xpbms+LjxzdHJ1Y3RmaWVsZD5pbmFjdGl2ZV9zaW5jZTwvc3RydWN0ZmllbGQ+CisgICAg ICAgIHZhbHVlLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBOb3Rl IHRoYXQgdGhlIGlkbGUgdGltZW91dCBpbnZhbGlkYXRpb24gbWVjaGFuaXNtIGlzIG5vdAorICAg ICAgICBhcHBsaWNhYmxlIGZvciBzbG90cyBvbiB0aGUgc3RhbmRieSBzZXJ2ZXIgdGhhdCBhcmUg YmVpbmcgc3luY2VkCisgICAgICAgIGZyb20gdGhlIHByaW1hcnkgc2VydmVyIChpLmUuLCBzdGFu ZGJ5IHNsb3RzIGhhdmluZworICAgICAgICA8bGluayBsaW5rZW5kPSJ2aWV3LXBnLXJlcGxpY2F0 aW9uLXNsb3RzIj5wZ19yZXBsaWNhdGlvbl9zbG90czwvbGluaz4uPHN0cnVjdGZpZWxkPnN5bmNl ZDwvc3RydWN0ZmllbGQ+CisgICAgICAgIHZhbHVlIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+KS4K KyAgICAgICAgU3luY2VkIHNsb3RzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBpbmFjdGl2 ZSBiZWNhdXNlIHRoZXkgZG9uJ3QKKyAgICAgICAgcGVyZm9ybSBsb2dpY2FsIGRlY29kaW5nIHRv IHByb2R1Y2UgY2hhbmdlcy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAg ICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtdHJhY2stY29t bWl0LXRpbWVzdGFtcCIgeHJlZmxhYmVsPSJ0cmFja19jb21taXRfdGltZXN0YW1wIj4KICAgICAg IDx0ZXJtPjx2YXJuYW1lPnRyYWNrX2NvbW1pdF90aW1lc3RhbXA8L3Zhcm5hbWU+ICg8dHlwZT5i b29sZWFuPC90eXBlPikKICAgICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGlj YXRpb24uc2dtbAppbmRleCA4MjkwY2QxYTA4Li4xNThlYzE4MjExIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dp Y2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTIxNjMsNiArMjE2MywxMSBAQCBDT05URVhUOiAgcHJv Y2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVy aW5nICJJTlNFUgogICAgIHBsdXMgc29tZSByZXNlcnZlIGZvciB0YWJsZSBzeW5jaHJvbml6YXRp b24uCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIExvZ2ljYWwgcmVwbGljYXRpb24gc2xv dHMgYXJlIGFsc28gYWZmZWN0ZWQgYnkKKyAgICA8bGluayBsaW5rZW5kPSJndWMtaWRsZS1yZXBs aWNhdGlvbi1zbG90LXRpbWVvdXQiPjx2YXJuYW1lPmlkbGVfcmVwbGljYXRpb25fc2xvdF90aW1l b3V0PC92YXJuYW1lPjwvbGluaz4uCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIDxsaW5r IGxpbmtlbmQ9Imd1Yy1tYXgtd2FsLXNlbmRlcnMiPjx2YXJuYW1lPm1heF93YWxfc2VuZGVyczwv dmFybmFtZT48L2xpbms+CiAgICAgc2hvdWxkIGJlIHNldCB0byBhdCBsZWFzdCB0aGUgc2FtZSBh cwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9z Z21sL3N5c3RlbS12aWV3cy5zZ21sCmluZGV4IGE1ODYxNTY2MTQuLjYxMWRiNGU1MzkgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv c3lzdGVtLXZpZXdzLnNnbWwKQEAgLTI1NjYsNyArMjU2Niw4IEBAIFNFTEVDVCAqIEZST00gcGdf bG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogICAgICAgPC9wYXJhPgog ICAgICAgPHBhcmE+CiAgICAgICAgIFRoZSB0aW1lIHdoZW4gdGhlIHNsb3QgYmVjYW1lIGluYWN0 aXZlLiA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBpZiB0aGUKLSAgICAgICAgc2xvdCBpcyBjdXJy ZW50bHkgYmVpbmcgc3RyZWFtZWQuCisgICAgICAgIHNsb3QgaXMgY3VycmVudGx5IGJlaW5nIHN0 cmVhbWVkLiBJZiB0aGUgc2xvdCBiZWNvbWVzIGludmFsaWRhdGVkLAorICAgICAgICB0aGlzIHZh bHVlIHdpbGwgcmVtYWluIHVuY2hhbmdlZCB1bnRpbCBzZXJ2ZXIgc2h1dGRvd24uCiAgICAgICAg IE5vdGUgdGhhdCBmb3Igc2xvdHMgb24gdGhlIHN0YW5kYnkgdGhhdCBhcmUgYmVpbmcgc3luY2Vk IGZyb20gYQogICAgICAgICBwcmltYXJ5IHNlcnZlciAod2hvc2UgPHN0cnVjdGZpZWxkPnN5bmNl ZDwvc3RydWN0ZmllbGQ+IGZpZWxkIGlzCiAgICAgICAgIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+ KSwgdGhlIDxzdHJ1Y3RmaWVsZD5pbmFjdGl2ZV9zaW5jZTwvc3RydWN0ZmllbGQ+CkBAIC0yNjIw LDYgKzI2MjEsMTMgQEAgU0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJl cGFyZWRfeGFjdHMgcHB4CiAgICAgICAgICAgcGVyZm9ybSBsb2dpY2FsIGRlY29kaW5nLiAgSXQg aXMgc2V0IG9ubHkgZm9yIGxvZ2ljYWwgc2xvdHMuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAg ICAgIDxsaXRlcmFsPmlkbGVfdGltZW91dDwvbGl0ZXJhbD4gbWVhbnMgdGhhdCB0aGUgc2xvdCBo YXMgcmVtYWluZWQKKyAgICAgICAgICBpZGxlIGJleW9uZCB0aGUgZHVyYXRpb24gc3BlY2lmaWVk IGJ5IHRoZQorICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1pZGxlLXJlcGxpY2F0aW9uLXNs b3QtdGltZW91dCIvPiBwYXJhbWV0ZXIuCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlz dGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Ns b3RzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKaW5k ZXggZTM2NDVhZWE1My4uOTc3N2M2YTljYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvc2xvdHN5bmMuYwpAQCAtMTU0MCw5ICsxNTQwLDcgQEAgdXBkYXRlX3N5bmNlZF9zbG90 c19pbmFjdGl2ZV9zaW5jZSh2b2lkKQogCQkJLyogVGhlIHNsb3QgbXVzdCBub3QgYmUgYWNxdWly ZWQgYnkgYW55IHByb2Nlc3MgKi8KIAkJCUFzc2VydChzLT5hY3RpdmVfcGlkID09IDApOwogCi0J CQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKLQkJCXMtPmluYWN0aXZlX3NpbmNlID0gbm93 OwotCQkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CisJCQlSZXBsaWNhdGlvblNsb3RTZXRJ bmFjdGl2ZVNpbmNlKHMsIG5vdywgdHJ1ZSk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3Qu YwppbmRleCBkYjk0Y2VjNWMzLi40MWVmOGVjYzg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBA IC0xMDcsMTAgKzEwNywxMSBAQCBjb25zdCBjaGFyICpjb25zdCBTbG90SW52YWxpZGF0aW9uQ2F1 c2VzW10gPSB7CiAJW1JTX0lOVkFMX1dBTF9SRU1PVkVEXSA9ICJ3YWxfcmVtb3ZlZCIsCiAJW1JT X0lOVkFMX0hPUklaT05dID0gInJvd3NfcmVtb3ZlZCIsCiAJW1JTX0lOVkFMX1dBTF9MRVZFTF0g PSAid2FsX2xldmVsX2luc3VmZmljaWVudCIsCisJW1JTX0lOVkFMX0lETEVfVElNRU9VVF0gPSAi aWRsZV90aW1lb3V0IiwKIH07CiAKIC8qIE1heGltdW0gbnVtYmVyIG9mIGludmFsaWRhdGlvbiBj YXVzZXMgKi8KLSNkZWZpbmUJUlNfSU5WQUxfTUFYX0NBVVNFUyBSU19JTlZBTF9XQUxfTEVWRUwK KyNkZWZpbmUJUlNfSU5WQUxfTUFYX0NBVVNFUyBSU19JTlZBTF9JRExFX1RJTUVPVVQKIAogU3Rh dGljQXNzZXJ0RGVjbChsZW5ndGhvZihTbG90SW52YWxpZGF0aW9uQ2F1c2VzKSA9PSAoUlNfSU5W QUxfTUFYX0NBVVNFUyArIDEpLAogCQkJCSAiYXJyYXkgbGVuZ3RoIG1pc21hdGNoIik7CkBAIC0x NDEsNiArMTQyLDkgQEAgUmVwbGljYXRpb25TbG90ICpNeVJlcGxpY2F0aW9uU2xvdCA9IE5VTEw7 CiBpbnQJCQltYXhfcmVwbGljYXRpb25fc2xvdHMgPSAxMDsgLyogdGhlIG1heGltdW0gbnVtYmVy IG9mIHJlcGxpY2F0aW9uCiAJCQkJCQkJCQkJICogc2xvdHMgKi8KIAorLyogSW52YWxpZGF0ZSBy ZXBsaWNhdGlvbiBzbG90cyBpZGxlIGJleW9uZCB0aGlzIHRpbWU7ICcwJyBkaXNhYmxlcyBpdCAq LworaW50CQkJaWRsZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVvdXRfbXMgPSAwOworCiAvKgogICog VGhpcyBHVUMgbGlzdHMgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2VydmVyIHNsb3Qg bmFtZXMgdGhhdAogICogbG9naWNhbCBXQUwgc2VuZGVyIHByb2Nlc3NlcyB3aWxsIHdhaXQgZm9y LgpAQCAtNjQ0LDYgKzY0OCwxMiBAQCByZXRyeToKIAkJCQkJCQkJICJ3YWxfbGV2ZWwiKTsKIAkJ CQlicmVhazsKIAorCQkJY2FzZSBSU19JTlZBTF9JRExFX1RJTUVPVVQ6CisJCQkJLyogdHJhbnNs YXRvcjogJXMgaXMgYSBHVUMgdmFyaWFibGUgbmFtZSAqLworCQkJCWFwcGVuZFN0cmluZ0luZm8o JmVycl9kZXRhaWwsIF8oIlRoaXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNlIGlu YWN0aXZpdHkgZXhjZWVkZWQgdGhlIHRpbWUgbGltaXQgc2V0IGJ5IFwiJXNcIi4iKSwKKwkJCQkJ CQkJICJpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dCIpOworCQkJCWJyZWFrOworCiAJCQlj YXNlIFJTX0lOVkFMX05PTkU6CiAJCQkJcGdfdW5yZWFjaGFibGUoKTsKIAkJfQpAQCAtNzQzLDE2 ICs3NTMsMTIgQEAgUmVwbGljYXRpb25TbG90UmVsZWFzZSh2b2lkKQogCQkgKi8KIAkJU3Bpbkxv Y2tBY3F1aXJlKCZzbG90LT5tdXRleCk7CiAJCXNsb3QtPmFjdGl2ZV9waWQgPSAwOwotCQlzbG90 LT5pbmFjdGl2ZV9zaW5jZSA9IG5vdzsKKwkJUmVwbGljYXRpb25TbG90U2V0SW5hY3RpdmVTaW5j ZShzbG90LCBub3csIGZhbHNlKTsKIAkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7CiAJ CUNvbmRpdGlvblZhcmlhYmxlQnJvYWRjYXN0KCZzbG90LT5hY3RpdmVfY3YpOwogCX0KIAllbHNl Ci0JewotCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJc2xvdC0+aW5hY3RpdmVf c2luY2UgPSBub3c7Ci0JCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCX0KKwkJUmVw bGljYXRpb25TbG90U2V0SW5hY3RpdmVTaW5jZShzbG90LCBub3csIHRydWUpOwogCiAJTXlSZXBs aWNhdGlvblNsb3QgPSBOVUxMOwogCkBAIC0xNTQ4LDcgKzE1NTQsOCBAQCBSZXBvcnRTbG90SW52 YWxpZGF0aW9uKFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJCQkg ICBOYW1lRGF0YSBzbG90bmFtZSwKIAkJCQkJICAgWExvZ1JlY1B0ciByZXN0YXJ0X2xzbiwKIAkJ CQkJICAgWExvZ1JlY1B0ciBvbGRlc3RMU04sCi0JCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNo b3RDb25mbGljdEhvcml6b24pCisJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGlj dEhvcml6b24sCisJCQkJCSAgIFRpbWVzdGFtcFR6IGluYWN0aXZlX3NpbmNlKQogewogCVN0cmlu Z0luZm9EYXRhIGVycl9kZXRhaWw7CiAJYm9vbAkJaGludCA9IGZhbHNlOwpAQCAtMTU3OCw2ICsx NTg1LDE2IEBAIFJlcG9ydFNsb3RJbnZhbGlkYXRpb24oUmVwbGljYXRpb25TbG90SW52YWxpZGF0 aW9uQ2F1c2UgY2F1c2UsCiAJCWNhc2UgUlNfSU5WQUxfV0FMX0xFVkVMOgogCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZXJyX2RldGFpbCwgXygiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5 IHJlcXVpcmVzIFwid2FsX2xldmVsXCIgPj0gXCJsb2dpY2FsXCIgb24gdGhlIHByaW1hcnkgc2Vy dmVyLiIpKTsKIAkJCWJyZWFrOworCisJCWNhc2UgUlNfSU5WQUxfSURMRV9USU1FT1VUOgorCQkJ QXNzZXJ0KGluYWN0aXZlX3NpbmNlID4gMCk7CisJCQkvKiB0cmFuc2xhdG9yOiBzZWNvbmQgJXMg aXMgYSBHVUMgdmFyaWFibGUgbmFtZSAqLworCQkJYXBwZW5kU3RyaW5nSW5mbygmZXJyX2RldGFp bCwKKwkJCQkJCQkgXygiVGhlIHNsb3QgaGFzIGJlZW4gaW5hY3RpdmUgc2luY2UgJXMsIGV4Y2Vl ZGluZyB0aGUgdGltZSBsaW1pdCBzZXQgYnkgXCIlc1wiLiIpLAorCQkJCQkJCSB0aW1lc3RhbXB0 el90b19zdHIoaW5hY3RpdmVfc2luY2UpLAorCQkJCQkJCSAiaWRsZV9yZXBsaWNhdGlvbl9zbG90 X3RpbWVvdXQiKTsKKwkJCWJyZWFrOworCiAJCWNhc2UgUlNfSU5WQUxfTk9ORToKIAkJCXBnX3Vu cmVhY2hhYmxlKCk7CiAJfQpAQCAtMTU5NCw2ICsxNjExLDMwIEBAIFJlcG9ydFNsb3RJbnZhbGlk YXRpb24oUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJcGZyZWUoZXJy X2RldGFpbC5kYXRhKTsKIH0KIAorLyoKKyAqIElzIGlkbGUgdGltZW91dCBpbnZhbGlkYXRpb24g cG9zc2libGUgZm9yIHRoaXMgcmVwbGljYXRpb24gc2xvdD8KKyAqCisgKiBJZGxlIHRpbWVvdXQg aW52YWxpZGF0aW9uIGlzIGFsbG93ZWQgb25seSB3aGVuOgorICoKKyAqIDEuIElkbGUgdGltZW91 dCBpcyBzZXQKKyAqIDIuIFNsb3QgaXMgaW5hY3RpdmUKKyAqIDMuIFRoZSBzbG90IGlzIG5vdCBi ZWluZyBzeW5jZWQgZnJvbSB0aGUgcHJpbWFyeSB3aGlsZSB0aGUgc2VydmVyCisgKiAgICBpcyBp biByZWNvdmVyeQorICoKKyAqIE5vdGUgdGhhdCB0aGUgaWRsZSB0aW1lb3V0IGludmFsaWRhdGlv biBtZWNoYW5pc20gaXMgbm90CisgKiBhcHBsaWNhYmxlIGZvciBzbG90cyBvbiB0aGUgc3RhbmRi eSBzZXJ2ZXIgdGhhdCBhcmUgYmVpbmcgc3luY2VkCisgKiBmcm9tIHRoZSBwcmltYXJ5IHNlcnZl ciAoaS5lLiwgc3RhbmRieSBzbG90cyBoYXZpbmcgJ3N5bmNlZCcgZmllbGQgJ3RydWUnKS4KKyAq IFN5bmNlZCBzbG90cyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgaW5hY3RpdmUgYmVjYXVz ZSB0aGV5IGRvbid0CisgKiBwZXJmb3JtIGxvZ2ljYWwgZGVjb2RpbmcgdG8gcHJvZHVjZSBjaGFu Z2VzLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0lzU2xvdElkbGVUaW1lb3V0UG9zc2libGUo UmVwbGljYXRpb25TbG90ICpzKQoreworCXJldHVybiAoaWRsZV9yZXBsaWNhdGlvbl9zbG90X3Rp bWVvdXRfbXMgPiAwICYmCisJCQlzLT5pbmFjdGl2ZV9zaW5jZSA+IDAgJiYKKwkJCSEoUmVjb3Zl cnlJblByb2dyZXNzKCkgJiYgcy0+ZGF0YS5zeW5jZWQpKTsKK30KKwogLyoKICAqIEhlbHBlciBm b3IgSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cwogICoKQEAgLTE2MjEsNiArMTY2 Miw3IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZh bGlkYXRpb25DYXVzZSBjYXVzZSwKIAlUcmFuc2FjdGlvbklkIGluaXRpYWxfY2F0YWxvZ19lZmZl Y3RpdmVfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCVhMb2dSZWNQdHIJaW5pdGlhbF9y ZXN0YXJ0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCVJlcGxpY2F0aW9uU2xvdEludmFsaWRh dGlvbkNhdXNlIGludmFsaWRhdGlvbl9jYXVzZV9wcmV2IFBHX1VTRURfRk9SX0FTU0VSVFNfT05M WSA9IFJTX0lOVkFMX05PTkU7CisJVGltZXN0YW1wVHogaW5hY3RpdmVfc2luY2UgPSAwOwogCiAJ Zm9yICg7OykKIAl7CkBAIC0xNjI4LDYgKzE2NzAsNyBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNv bGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCU5hbWVE YXRhCXNsb3RuYW1lOwogCQlpbnQJCQlhY3RpdmVfcGlkID0gMDsKIAkJUmVwbGljYXRpb25TbG90 SW52YWxpZGF0aW9uQ2F1c2UgaW52YWxpZGF0aW9uX2NhdXNlID0gUlNfSU5WQUxfTk9ORTsKKwkJ VGltZXN0YW1wVHogbm93ID0gMDsKIAogCQlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJbk1vZGUoUmVw bGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NIQVJFRCkpOwogCkBAIC0xNjM4LDYgKzE2ODEs MTUgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFs aWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJYnJlYWs7CiAJCX0KIAorCQlpZiAoY2F1c2UgPT0gUlNf SU5WQUxfSURMRV9USU1FT1VUKQorCQl7CisJCQkvKgorCQkJICogV2UgZ2V0IHRoZSBjdXJyZW50 IHRpbWUgYmVmb3JlaGFuZCB0byBhdm9pZCBzeXN0ZW0gY2FsbCB3aGlsZQorCQkJICogaG9sZGlu ZyB0aGUgc3BpbmxvY2suCisJCQkgKi8KKwkJCW5vdyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsK KwkJfQorCiAJCS8qCiAJCSAqIENoZWNrIGlmIHRoZSBzbG90IG5lZWRzIHRvIGJlIGludmFsaWRh dGVkLiBJZiBpdCBuZWVkcyB0byBiZQogCQkgKiBpbnZhbGlkYXRlZCwgYW5kIGlzIG5vdCBjdXJy ZW50bHkgYWNxdWlyZWQsIGFjcXVpcmUgaXQgYW5kIG1hcmsgaXQKQEAgLTE2OTEsNiArMTc0Mywy MSBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxp ZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQkJCWlmIChTbG90SXNMb2dpY2FsKHMpKQogCQkJCQkJaW52 YWxpZGF0aW9uX2NhdXNlID0gY2F1c2U7CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgUlNfSU5WQUxf SURMRV9USU1FT1VUOgorCQkJCQlBc3NlcnQobm93ID4gMCk7CisKKwkJCQkJLyoKKwkJCQkJICog Q2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8gYmUgaW52YWxpZGF0ZWQgZHVlIHRvCisJCQkJCSAq IGlkbGVfcmVwbGljYXRpb25fc2xvdF90aW1lb3V0IEdVQy4KKwkJCQkJICovCisJCQkJCWlmIChJ c1Nsb3RJZGxlVGltZW91dFBvc3NpYmxlKHMpICYmCisJCQkJCQlUaW1lc3RhbXBEaWZmZXJlbmNl RXhjZWVkcyhzLT5pbmFjdGl2ZV9zaW5jZSwgbm93LAorCQkJCQkJCQkJCQkJICAgaWRsZV9yZXBs aWNhdGlvbl9zbG90X3RpbWVvdXRfbXMpKQorCQkJCQl7CisJCQkJCQlpbnZhbGlkYXRpb25fY2F1 c2UgPSBjYXVzZTsKKwkJCQkJCWluYWN0aXZlX3NpbmNlID0gcy0+aW5hY3RpdmVfc2luY2U7CisJ CQkJCX0KKwkJCQkJYnJlYWs7CiAJCQkJY2FzZSBSU19JTlZBTF9OT05FOgogCQkJCQlwZ191bnJl YWNoYWJsZSgpOwogCQkJfQpAQCAtMTc3Niw3ICsxODQzLDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5 T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJ ewogCQkJCVJlcG9ydFNsb3RJbnZhbGlkYXRpb24oaW52YWxpZGF0aW9uX2NhdXNlLCB0cnVlLCBh Y3RpdmVfcGlkLAogCQkJCQkJCQkJICAgc2xvdG5hbWUsIHJlc3RhcnRfbHNuLAotCQkJCQkJCQkJ ICAgb2xkZXN0TFNOLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbik7CisJCQkJCQkJCQkgICBvbGRl c3RMU04sIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJICAgaW5hY3RpdmVfc2lu Y2UpOwogCiAJCQkJaWYgKE15QmFja2VuZFR5cGUgPT0gQl9TVEFSVFVQKQogCQkJCQkodm9pZCkg U2VuZFByb2NTaWduYWwoYWN0aXZlX3BpZCwKQEAgLTE4MjIsNyArMTg5MCw4IEBAIEludmFsaWRh dGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBj YXVzZSwKIAogCQkJUmVwb3J0U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIGZh bHNlLCBhY3RpdmVfcGlkLAogCQkJCQkJCQkgICBzbG90bmFtZSwgcmVzdGFydF9sc24sCi0JCQkJ CQkJCSAgIG9sZGVzdExTTiwgc25hcHNob3RDb25mbGljdEhvcml6b24pOworCQkJCQkJCQkgICBv bGRlc3RMU04sIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkgICBpbmFjdGl2ZV9z aW5jZSk7CiAKIAkJCS8qIGRvbmUgd2l0aCB0aGlzIHNsb3QgZm9yIG5vdyAqLwogCQkJYnJlYWs7 CkBAIC0xODQ1LDYgKzE5MTQsNyBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVw bGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAgKiAtIFJTX0lOVkFMX0hPUkla T046IHJlcXVpcmVzIGEgc25hcHNob3QgPD0gdGhlIGdpdmVuIGhvcml6b24gaW4gdGhlIGdpdmVu CiAgKiAgIGRiOyBkYm9pZCBtYXkgYmUgSW52YWxpZE9pZCBmb3Igc2hhcmVkIHJlbGF0aW9ucwog ICogLSBSU19JTlZBTF9XQUxfTEVWRUw6IGlzIGxvZ2ljYWwKKyAqIC0gUlNfSU5WQUxfSURMRV9U SU1FT1VUOiBpZGxlIHNsb3QgdGltZW91dCBoYXMgb2NjdXJyZWQKICAqCiAgKiBOQiAtIHRoaXMg cnVucyBhcyBwYXJ0IG9mIGNoZWNrcG9pbnQsIHNvIGF2b2lkIHJhaXNpbmcgZXJyb3JzIGlmIHBv c3NpYmxlLgogICovCkBAIC0xODk3LDcgKzE5NjcsOCBAQCByZXN0YXJ0OgogfQogCiAvKgotICog Rmx1c2ggYWxsIHJlcGxpY2F0aW9uIHNsb3RzIHRvIGRpc2suCisgKiBGbHVzaCBhbGwgcmVwbGlj YXRpb24gc2xvdHMgdG8gZGlzay4gQWxzbywgaW52YWxpZGF0ZSBvYnNvbGV0ZSBzbG90cyBkdXJp bmcKKyAqIG5vbi1zaHV0ZG93biBjaGVja3BvaW50LgogICoKICAqIEl0IGlzIGNvbnZlbmllbnQg dG8gZmx1c2ggZGlydHkgcmVwbGljYXRpb24gc2xvdHMgYXQgdGhlIHRpbWUgb2YgY2hlY2twb2lu dC4KICAqIEFkZGl0aW9uYWxseSwgaW4gY2FzZSBvZiBhIHNodXRkb3duIGNoZWNrcG9pbnQsIHdl IGFsc28gaWRlbnRpZnkgdGhlIHNsb3RzCkBAIC0xOTU1LDYgKzIwMjYsNDUgQEAgQ2hlY2tQb2lu dFJlcGxpY2F0aW9uU2xvdHMoYm9vbCBpc19zaHV0ZG93bikKIAkJU2F2ZVNsb3RUb1BhdGgocywg cGF0aCwgTE9HKTsKIAl9CiAJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RBbGxvY2F0aW9u TG9jayk7CisKKwlpZiAoIWlzX3NodXRkb3duKQorCXsKKwkJZWxvZyhERUJVRzEsICJwZXJmb3Jt aW5nIHJlcGxpY2F0aW9uIHNsb3QgaW52YWxpZGF0aW9uIGNoZWNrcyIpOworCisJCS8qCisJCSAq IE5COiBXZSB3aWxsIG1ha2UgYW5vdGhlciBwYXNzIG92ZXIgcmVwbGljYXRpb24gc2xvdHMgZm9y CisJCSAqIGludmFsaWRhdGlvbiBjaGVja3MgdG8ga2VlcCB0aGUgY29kZSBzaW1wbGUuIFRlc3Rp bmcgc2hvd3MgdGhhdAorCQkgKiB0aGVyZSBpcyBubyBub3RpY2VhYmxlIG92ZXJoZWFkICh3aGVu IGNvbXBhcmVkIHdpdGggd2FsX3JlbW92ZWQKKwkJICogaW52YWxpZGF0aW9uKSBldmVuIGlmIHdl IHdlcmUgdG8gZG8gaWRsZV90aW1lb3V0IGludmFsaWRhdGlvbiBvZgorCQkgKiB0aG91c2FuZHMg b2YgcmVwbGljYXRpb24gc2xvdHMgaGVyZS4gSWYgaXQgaXMgZXZlciBwcm92ZW4gdGhhdCB0aGlz CisJCSAqIGFzc3VtcHRpb24gaXMgd3JvbmcsIHdlIHdpbGwgaGF2ZSB0byBwZXJmb3JtIHRoZSBp bnZhbGlkYXRpb24KKwkJICogY2hlY2tzIGluIHRoZSBhYm92ZSBmb3IgbG9vcCB3aXRoIHRoZSBm b2xsb3dpbmcgY2hhbmdlczoKKwkJICoKKwkJICogLSBBY3F1aXJlIENvbnRyb2xMb2NrIGxvY2sg b25jZSBiZWZvcmUgdGhlIGxvb3AuCisJCSAqCisJCSAqIC0gQ2FsbCBJbnZhbGlkYXRlUG9zc2li bHlPYnNvbGV0ZVNsb3QgZm9yIGVhY2ggc2xvdC4KKwkJICoKKwkJICogLSBIYW5kbGUgdGhlIGNh c2VzIGluIHdoaWNoIENvbnRyb2xMb2NrIGdldHMgcmVsZWFzZWQganVzdCBsaWtlCisJCSAqIElu dmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMgZG9lcy4KKwkJICoKKwkJICogLSBBdm9p ZCBzYXZpbmcgc2xvdCBpbmZvIHRvIGRpc2sgdHdvIHRpbWVzIGZvciBlYWNoIGludmFsaWRhdGVk CisJCSAqIHNsb3QuCisJCSAqCisJCSAqIFhYWDogU2hvdWxkIHdlIG1vdmUgaWRsZV90aW1lb3V0 IGludmFsaWRhdGlvbiBjaGVjayBjbG9zZXIgdG8KKwkJICogd2FsX3JlbW92ZWQgaW4gQ3JlYXRl Q2hlY2tQb2ludCBhbmQgQ3JlYXRlUmVzdGFydFBvaW50PworCQkgKgorCQkgKiBYWFg6IFNsb3Qg aW52YWxpZGF0aW9uIGR1ZSB0byAnaWRsZV90aW1lb3V0JyBvY2N1cnMgb25seSBmb3IKKwkJICog cmVsZWFzZWQgc2xvdHMsIGJhc2VkIG9uICdpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dCcu IEFjdGl2ZQorCQkgKiBzbG90cyBpbiB1c2UgZm9yIHJlcGxpY2F0aW9uIGFyZSBleGNsdWRlZCwg cHJldmVudGluZyBhY2NpZGVudGFsCisJCSAqIGludmFsaWRhdGlvbi4gU2xvdHMgd2hlcmUgY29t bXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBwdWJsaXNoZXIgYW5kCisJCSAqIHN1YnNjcmliZXIgaXMg ZG93biBhcmUgYWxzbyBleGNsdWRlZCwgYXMgdGhleSBhcmUgbWFuYWdlZCBieSB0aGUKKwkJICog J3dhbF9zZW5kZXJfdGltZW91dCcuCisJCSAqLworCQlJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNh dGlvblNsb3RzKFJTX0lOVkFMX0lETEVfVElNRU9VVCwKKwkJCQkJCQkJCQkgICAwLAorCQkJCQkJ CQkJCSAgIEludmFsaWRPaWQsCisJCQkJCQkJCQkJICAgSW52YWxpZFRyYW5zYWN0aW9uSWQpOwor CX0KIH0KIAogLyoKQEAgLTI0NDMsNyArMjU1Myw5IEBAIFJlc3RvcmVTbG90RnJvbURpc2soY29u c3QgY2hhciAqbmFtZSkKIAkJLyoKIAkJICogU2V0IHRoZSB0aW1lIHNpbmNlIHRoZSBzbG90IGhh cyBiZWNvbWUgaW5hY3RpdmUgYWZ0ZXIgbG9hZGluZyB0aGUKIAkJICogc2xvdCBmcm9tIHRoZSBk aXNrIGludG8gbWVtb3J5LiBXaG9ldmVyIGFjcXVpcmVzIHRoZSBzbG90IGkuZS4KLQkJICogbWFr ZXMgdGhlIHNsb3QgYWN0aXZlIHdpbGwgcmVzZXQgaXQuCisJCSAqIG1ha2VzIHRoZSBzbG90IGFj dGl2ZSB3aWxsIHJlc2V0IGl0LiBBdm9pZCBjYWxsaW5nCisJCSAqIFJlcGxpY2F0aW9uU2xvdFNl dEluYWN0aXZlU2luY2UoKSBoZXJlLCBhcyBpdCB3aWxsIG5vdCBzZXQgdGhlIHRpbWUKKwkJICog Zm9yIGludmFsaWQgc2xvdHMuCiAJCSAqLwogCQlzbG90LT5pbmFjdGl2ZV9zaW5jZSA9IG5vdzsK IApAQCAtMjgzOCwzICsyOTUwLDIyIEBAIFdhaXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9uKFhMb2dS ZWNQdHIgd2FpdF9mb3JfbHNuKQogCiAJQ29uZGl0aW9uVmFyaWFibGVDYW5jZWxTbGVlcCgpOwog fQorCisvKgorICogR1VDIGNoZWNrX2hvb2sgZm9yIGlkbGVfcmVwbGljYXRpb25fc2xvdF90aW1l b3V0CisgKgorICogVGhlIGlkbGVfcmVwbGljYXRpb25fc2xvdF90aW1lb3V0IG11c3QgYmUgZGlz YWJsZWQgKHNldCB0byAwKQorICogZHVyaW5nIHRoZSBiaW5hcnkgdXBncmFkZS4KKyAqLworYm9v bAorY2hlY2tfaWRsZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVvdXQoaW50ICpuZXd2YWwsIHZvaWQg KipleHRyYSwgR3VjU291cmNlIHNvdXJjZSkKK3sKKwlpZiAoSXNCaW5hcnlVcGdyYWRlICYmICpu ZXd2YWwgIT0gMCkKKwl7CisJCUdVQ19jaGVja19lcnJkZXRhaWwoIlRoZSB2YWx1ZSBvZiBcIiVz XCIgbXVzdCBiZSBzZXQgdG8gMCBkdXJpbmcgYmluYXJ5IHVwZ3JhZGUgbW9kZS4iLAorCQkJCQkJ CSJpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dCIpOworCQlyZXR1cm4gZmFsc2U7CisJfQor CisJcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDhj ZjFhZmJhZDIuLjZhNGYxNWI4MzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBA IC0zMDQ3LDYgKzMwNDcsMTggQEAgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRb XSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJeworCQl7ImlkbGVfcmVwbGljYXRpb25f c2xvdF90aW1lb3V0IiwgUEdDX1NJR0hVUCwgUkVQTElDQVRJT05fU0VORElORywKKwkJCWdldHRl eHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUgYSByZXBsaWNhdGlvbiBzbG90IGNhbiBy ZW1haW4gaWRsZSBiZWZvcmUgIgorCQkJCQkJICJpdCB3aWxsIGJlIGludmFsaWRhdGVkLiIpLAor CQkJTlVMTCwKKwkJCUdVQ19VTklUX01TCisJCX0sCisJCSZpZGxlX3JlcGxpY2F0aW9uX3Nsb3Rf dGltZW91dF9tcywKKwkJMCwgMCwgSU5UX01BWCwKKwkJY2hlY2tfaWRsZV9yZXBsaWNhdGlvbl9z bG90X3RpbWVvdXQsIE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImNvbW1pdF9kZWxheSIsIFBH Q19TVVNFVCwgV0FMX1NFVFRJTkdTLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBkZWxheSBp biBtaWNyb3NlY29uZHMgYmV0d2VlbiB0cmFuc2FjdGlvbiBjb21taXQgYW5kICIKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBhMmFjNzU3NWNh Li42YjVjMjQ2ZThkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlCkBAIC0zMzcsNiArMzM3LDcgQEAKICN3YWxfc2VuZGVyX3RpbWVvdXQgPSA2MHMJ IyBpbiBtaWxsaXNlY29uZHM7IDAgZGlzYWJsZXMKICN0cmFja19jb21taXRfdGltZXN0YW1wID0g b2ZmCSMgY29sbGVjdCB0aW1lc3RhbXAgb2YgdHJhbnNhY3Rpb24gY29tbWl0CiAJCQkJIyAoY2hh bmdlIHJlcXVpcmVzIHJlc3RhcnQpCisjaWRsZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVvdXQgPSAw CSMgaW4gbWlsbGlzZWNvbmRzOyAwIGRpc2FibGVzCiAKICMgLSBQcmltYXJ5IFNlcnZlciAtCiAK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMg Yi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jCmluZGV4IGU5NjM3 MGE5ZWMuLmE5YWMwMGY0NGYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19j cmVhdGVzdWJzY3JpYmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1 YnNjcmliZXIuYwpAQCAtMTQzOCw2ICsxNDM4LDEwIEBAIHN0YXJ0X3N0YW5kYnlfc2VydmVyKGNv bnN0IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAqb3B0LCBib29sIHJlc3RyaWN0ZWRf CiAJYXBwZW5kUFFFeHBCdWZmZXIocGdfY3RsX2NtZCwgIlwiJXNcIiBzdGFydCAtRCAiLCBwZ19j dGxfcGF0aCk7CiAJYXBwZW5kU2hlbGxTdHJpbmcocGdfY3RsX2NtZCwgc3Vic2NyaWJlcl9kaXIp OwogCWFwcGVuZFBRRXhwQnVmZmVyKHBnX2N0bF9jbWQsICIgLXMgLW8gXCItYyBzeW5jX3JlcGxp Y2F0aW9uX3Nsb3RzPW9mZlwiIik7CisKKwkvKiBQcmV2ZW50IHVuaW50ZW5kZWQgc2xvdCBpbnZh bGlkYXRpb24gKi8KKwlhcHBlbmRQUUV4cEJ1ZmZlcihwZ19jdGxfY21kLCAiIC1vIFwiLWMgaWRs ZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVvdXQ9MFwiIik7CisKIAlpZiAocmVzdHJpY3RlZF9hY2Nl c3MpCiAJewogCQlhcHBlbmRQUUV4cEJ1ZmZlcihwZ19jdGxfY21kLCAiIC1vIFwiLXAgJXNcIiIs IG9wdC0+c3ViX3BvcnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3NlcnZlci5j IGIvc3JjL2Jpbi9wZ191cGdyYWRlL3NlcnZlci5jCmluZGV4IDkxYmNiNGRiYzcuLjkwZTJiOWYx ODggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9zZXJ2ZXIuYworKysgYi9zcmMvYmlu L3BnX3VwZ3JhZGUvc2VydmVyLmMKQEAgLTI1Miw2ICsyNTIsMTMgQEAgc3RhcnRfcG9zdG1hc3Rl cihDbHVzdGVySW5mbyAqY2x1c3RlciwgYm9vbCByZXBvcnRfYW5kX2V4aXRfb25fZXJyb3IpCiAJ aWYgKEdFVF9NQUpPUl9WRVJTSU9OKGNsdXN0ZXItPm1ham9yX3ZlcnNpb24pID49IDE3MDApCiAJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZwZ29wdGlvbnMsICIgLWMgbWF4X3Nsb3Rfd2FsX2tlZXBf c2l6ZT0tMSIpOwogCisJLyoKKwkgKiBVc2UgaWRsZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVvdXQ9 MCB0byBwcmV2ZW50IHNsb3QgaW52YWxpZGF0aW9uIGR1ZSB0bworCSAqIGluYWN0aXZlX3RpbWVv dXQgYnkgY2hlY2twb2ludGVyIHByb2Nlc3MgZHVyaW5nIHVwZ3JhZGUuCisJICovCisJaWYgKEdF VF9NQUpPUl9WRVJTSU9OKGNsdXN0ZXItPm1ham9yX3ZlcnNpb24pID49IDE4MDApCisJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZwZ29wdGlvbnMsICIgLWMgaWRsZV9yZXBsaWNhdGlvbl9zbG90X3Rp bWVvdXQ9MCIpOworCiAJLyoKIAkgKiBVc2UgLWIgdG8gZGlzYWJsZSBhdXRvdmFjdXVtIGFuZCBs b2dpY2FsIHJlcGxpY2F0aW9uIGxhdW5jaGVyCiAJICogKGVmZmVjdGl2ZSBpbiBQRzE3IG9yIGxh dGVyIGZvciB0aGUgbGF0dGVyKS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCBmNWYyZDIyMTYz Li45ODYyNWY5ZDEzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC01Niw2ICs1Niw4IEBAIHR5 cGVkZWYgZW51bSBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZQogCVJTX0lOVkFMX0hP UklaT04sCiAJLyogd2FsX2xldmVsIGluc3VmZmljaWVudCBmb3Igc2xvdCAqLwogCVJTX0lOVkFM X1dBTF9MRVZFTCwKKwkvKiBpZGxlIHNsb3QgdGltZW91dCBoYXMgb2NjdXJyZWQgKi8KKwlSU19J TlZBTF9JRExFX1RJTUVPVVQsCiB9IFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlOwog CiBleHRlcm4gUEdETExJTVBPUlQgY29uc3QgY2hhciAqY29uc3QgU2xvdEludmFsaWRhdGlvbkNh dXNlc1tdOwpAQCAtMjI4LDYgKzIzMCwyNSBAQCB0eXBlZGVmIHN0cnVjdCBSZXBsaWNhdGlvblNs b3RDdGxEYXRhCiAJUmVwbGljYXRpb25TbG90IHJlcGxpY2F0aW9uX3Nsb3RzWzFdOwogfSBSZXBs aWNhdGlvblNsb3RDdGxEYXRhOwogCisvKgorICogU2V0IHNsb3QncyBpbmFjdGl2ZV9zaW5jZSBw cm9wZXJ0eSB1bmxlc3MgaXQgd2FzIHByZXZpb3VzbHkgaW52YWxpZGF0ZWQuCisgKi8KK3N0YXRp YyBpbmxpbmUgdm9pZAorUmVwbGljYXRpb25TbG90U2V0SW5hY3RpdmVTaW5jZShSZXBsaWNhdGlv blNsb3QgKnMsIFRpbWVzdGFtcFR6IG5vdywKKwkJCQkJCQkJYm9vbCBhY3F1aXJlX2xvY2spCit7 CisJaWYgKHMtPmRhdGEuaW52YWxpZGF0ZWQgIT0gUlNfSU5WQUxfTk9ORSkKKwkJcmV0dXJuOwor CisJaWYgKGFjcXVpcmVfbG9jaykKKwkJU3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CisKKwlz LT5pbmFjdGl2ZV9zaW5jZSA9IG5vdzsKKworCWlmIChhY3F1aXJlX2xvY2spCisJCVNwaW5Mb2Nr UmVsZWFzZSgmcy0+bXV0ZXgpOworfQorCiAvKgogICogUG9pbnRlcnMgdG8gc2hhcmVkIG1lbW9y eQogICovCkBAIC0yMzcsNiArMjU4LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFJlcGxpY2F0aW9u U2xvdCAqTXlSZXBsaWNhdGlvblNsb3Q7CiAvKiBHVUNzICovCiBleHRlcm4gUEdETExJTVBPUlQg aW50IG1heF9yZXBsaWNhdGlvbl9zbG90czsKIGV4dGVybiBQR0RMTElNUE9SVCBjaGFyICpzeW5j aHJvbml6ZWRfc3RhbmRieV9zbG90czsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgaWRsZV9yZXBs aWNhdGlvbl9zbG90X3RpbWVvdXRfbXM7CiAKIC8qIHNobWVtIGluaXRpYWxpemF0aW9uIGZ1bmN0 aW9ucyAqLwogZXh0ZXJuIFNpemUgUmVwbGljYXRpb25TbG90c1NobWVtU2l6ZSh2b2lkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oIGIvc3JjL2luY2x1ZGUvdXRp bHMvZ3VjX2hvb2tzLmgKaW5kZXggNTgxM2RiYTBhMi4uZDdhN2RmZmFiNSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvZ3Vj X2hvb2tzLmgKQEAgLTE3NCw1ICsxNzQsNyBAQCBleHRlcm4gdm9pZCBhc3NpZ25fd2FsX3N5bmNf bWV0aG9kKGludCBuZXdfd2FsX3N5bmNfbWV0aG9kLCB2b2lkICpleHRyYSk7CiBleHRlcm4gYm9v bCBjaGVja19zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyhjaGFyICoqbmV3dmFsLCB2b2lkICoq ZXh0cmEsCiAJCQkJCQkJCQkJCSBHdWNTb3VyY2Ugc291cmNlKTsKIGV4dGVybiB2b2lkIGFzc2ln bl9zeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyhjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4 dHJhKTsKK2V4dGVybiBib29sIGNoZWNrX2lkbGVfcmVwbGljYXRpb25fc2xvdF90aW1lb3V0KGlu dCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsCisJCQkJCQkJCQkJCQlHdWNTb3VyY2Ugc291cmNlKTsK IAogI2VuZGlmCQkJCQkJCS8qIEdVQ19IT09LU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWNvdmVyeS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmluZGV4 IGIxZWI3N2IxZWMuLjNiOGY0NWM5M2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L21l c29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC01MSw2ICs1 MSw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5 bmMucGwnLAogICAgICAgJ3QvMDQxX2NoZWNrcG9pbnRfYXRfcHJvbW90ZS5wbCcsCiAgICAgICAn dC8wNDJfbG93X2xldmVsX2JhY2t1cC5wbCcsCisgICAgICAndC8wNDNfaW52YWxpZGF0ZV9pbmFj dGl2ZV9zbG90cy5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDQzX2ludmFsaWRhdGVfaW5hY3RpdmVfc2xvdHMucGwgYi9zcmMvdGVzdC9yZWNv dmVyeS90LzA0M19pbnZhbGlkYXRlX2luYWN0aXZlX3Nsb3RzLnBsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLmE5NDdiZGYyZTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9yZWNvdmVyeS90LzA0M19pbnZhbGlkYXRlX2luYWN0aXZlX3Nsb3RzLnBsCkBAIC0wLDAg KzEsMTg4IEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKworIyBUZXN0IGZvciByZXBsaWNhdGlvbiBzbG90cyBpbnZhbGlkYXRpb24K K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFRl c3Q6Ok1vcmU7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdGNhc2Ugc3RhcnQKKyMK KyMgVGVzdCBpbnZhbGlkYXRpb24gb2Ygc3RyZWFtaW5nIHN0YW5kYnkgc2xvdCBhbmQgbG9naWNh bCBmYWlsb3ZlciBzbG90IG9uIHRoZQorIyBwcmltYXJ5IGR1ZSB0byBpZGxlIHRpbWVvdXQuIEFs c28sIHRlc3QgbG9naWNhbCBmYWlsb3ZlciBzbG90IHN5bmNlZCB0bworIyB0aGUgc3RhbmRieSBm cm9tIHRoZSBwcmltYXJ5IGRvZXNuJ3QgZ2V0IGludmFsaWRhdGVkIG9uIGl0cyBvd24sIGJ1dCBn ZXRzIHRoZQorIyBpbnZhbGlkYXRlZCBzdGF0ZSBmcm9tIHRoZSBwcmltYXJ5LgorCisjIEluaXRp YWxpemUgcHJpbWFyeQorbXkgJHByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ3ByaW1hcnknKTsKKyRwcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2lj YWwnKTsKKworIyBBdm9pZCB1bnByZWRpY3RhYmlsaXR5CiskcHJpbWFyeS0+YXBwZW5kX2NvbmYo CisJJ3Bvc3RncmVzcWwuY29uZicsIHFxeworY2hlY2twb2ludF90aW1lb3V0ID0gMWgKK2F1dG92 YWN1dW0gPSBvZmYKK30pOworJHByaW1hcnktPnN0YXJ0OworCisjIFRha2UgYmFja3VwCitteSAk YmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRwcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1l KTsKKworIyBDcmVhdGUgc3RhbmRieQorbXkgJHN0YW5kYnkxID0gUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5MScpOworJHN0YW5kYnkxLT5pbml0X2Zyb21fYmFja3VwKCRw cmltYXJ5LCAkYmFja3VwX25hbWUsIGhhc19zdHJlYW1pbmcgPT4gMSk7CisKK215ICRjb25uc3Ry ID0gJHByaW1hcnktPmNvbm5zdHI7Ciskc3RhbmRieTEtPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jl c3FsLmNvbmYnLCBxcSgKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK3ByaW1hcnlfc2xvdF9u YW1lID0gJ3NiX3Nsb3QxJworcHJpbWFyeV9jb25uaW5mbyA9ICckY29ubnN0ciBkYm5hbWU9cG9z dGdyZXMnCispKTsKKworIyBDcmVhdGUgc3luYyBzbG90IG9uIHRoZSBwcmltYXJ5CiskcHJpbWFy eS0+cHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0 aW9uX3Nsb3QoJ3N5bmNfc2xvdDEnLCAndGVzdF9kZWNvZGluZycsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSk7fQorKTsKKworIyBDcmVhdGUgc3RhbmRieSBzbG90IG9uIHRoZSBwcmltYXJ5CiskcHJpbWFy eS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworICAgIFNFTEVDVCBwZ19jcmVhdGVfcGh5 c2ljYWxfcmVwbGljYXRpb25fc2xvdChzbG90X25hbWUgOj0gJ3NiX3Nsb3QxJywgaW1tZWRpYXRl bHlfcmVzZXJ2ZSA6PSB0cnVlKTsKK10pOworCiskc3RhbmRieTEtPnN0YXJ0OworCisjIFdhaXQg dW50aWwgdGhlIHN0YW5kYnkgaGFzIHJlcGxheWVkIGVub3VnaCBkYXRhCiskcHJpbWFyeS0+d2Fp dF9mb3JfY2F0Y2h1cCgkc3RhbmRieTEpOworCitteSAkbG9nc3RhcnQgPSAtcyAkc3RhbmRieTEt PmxvZ2ZpbGU7CisKKyMgU2V0IHRpbWVvdXQgR1VDIG9uIHRoZSBzdGFuZGJ5IHRvIHZlcmlmeSB0 aGF0IHRoZSBuZXh0IGNoZWNrcG9pbnQgd2lsbCBub3QKKyMgaW52YWxpZGF0ZSBzeW5jZWQgc2xv dHMuCitteSAkaWRsZV90aW1lb3V0XzFzID0gMTsKKyRzdGFuZGJ5MS0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxWworICAgIEFMVEVSIFNZU1RFTSBTRVQgaWRsZV9yZXBsaWNhdGlvbl9zbG90 X3RpbWVvdXQgVE8gJyR7aWRsZV90aW1lb3V0XzFzfXMnOworXSk7Ciskc3RhbmRieTEtPnJlbG9h ZDsKKworIyBTeW5jIHRoZSBwcmltYXJ5IHNsb3RzIHRvIHRoZSBzdGFuZGJ5Ciskc3RhbmRieTEt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMo KTsiKTsKKworIyBDb25maXJtIHRoYXQgdGhlIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCBpcyBjcmVh dGVkIG9uIHRoZSBzdGFuZGJ5CitpcyggJHN0YW5kYnkxLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsCisJCXF7U0VMRUNUIGNvdW50KCopID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJ CSAgV0hFUkUgc2xvdF9uYW1lID0gJ3N5bmNfc2xvdDEnIEFORCBzeW5jZWQKKwkJCUFORCBOT1Qg dGVtcG9yYXJ5CisJCQlBTkQgaW52YWxpZGF0aW9uX3JlYXNvbiBJUyBOVUxMO30KKwkpLAorCSJ0 IiwKKwknbG9naWNhbCBzbG90IHN5bmNfc2xvdDEgaXMgc3luY2VkIHRvIHN0YW5kYnknKTsKKwor IyBHaXZlIGVub3VnaCB0aW1lIGZvciBpbmFjdGl2ZV9zaW5jZSB0byBleGNlZWQgdGhlIHRpbWVv dXQKK3NsZWVwKCRpZGxlX3RpbWVvdXRfMXMgKyAxKTsKKworIyBPbiBzdGFuZGJ5LCBzeW5jZWQg c2xvdHMgYXJlIG5vdCBpbnZhbGlkYXRlZCBieSB0aGUgaWRsZSB0aW1lb3V0CisjIHVudGlsIHRo ZSBpbnZhbGlkYXRpb24gc3RhdGUgaXMgcHJvcGFnYXRlZCBmcm9tIHRoZSBwcmltYXJ5LgorJHN0 YW5kYnkxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQiKTsKK2lzKCAkc3RhbmRi eTEtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1QgY291bnQoKikgPSAxIEZS T00gcGdfcmVwbGljYXRpb25fc2xvdHMKKwkJICBXSEVSRSBzbG90X25hbWUgPSAnc3luY19zbG90 MScKKwkJCUFORCBpbnZhbGlkYXRpb25fcmVhc29uIElTIE5VTEw7fQorCSksCisJInQiLAorCSdj aGVjayB0aGF0IHN5bmNlZCBzbG90IHN5bmNfc2xvdDEgaGFzIG5vdCBiZWVuIGludmFsaWRhdGVk IG9uIHN0YW5kYnknKTsKKworJGxvZ3N0YXJ0ID0gLXMgJHByaW1hcnktPmxvZ2ZpbGU7CisKKyMg U2V0IHRpbWVvdXQgR1VDIHNvIHRoYXQgdGhlIG5leHQgY2hlY2twb2ludCB3aWxsIGludmFsaWRh dGUgaW5hY3RpdmUgc2xvdHMKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFb CisgICAgQUxURVIgU1lTVEVNIFNFVCBpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dCBUTyAn JHtpZGxlX3RpbWVvdXRfMXN9cyc7CitdKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisKKyMgV2FpdCBm b3IgbG9naWNhbCBmYWlsb3ZlciBzbG90IHRvIGJlY29tZSBpbmFjdGl2ZSBvbiB0aGUgcHJpbWFy eS4gTm90ZSB0aGF0CisjIG5vYm9keSBoYXMgYWNxdWlyZWQgdGhlIHNsb3QgeWV0LCBzbyBpdCBt dXN0IGdldCBpbnZhbGlkYXRlZCBkdWUgdG8KKyMgaWRsZSB0aW1lb3V0Lgord2FpdF9mb3Jfc2xv dF9pbnZhbGlkYXRpb24oJHByaW1hcnksICdzeW5jX3Nsb3QxJywgJGxvZ3N0YXJ0LAorCSRpZGxl X3RpbWVvdXRfMXMpOworCisjIFJlLXN5bmMgdGhlIHByaW1hcnkgc2xvdHMgdG8gdGhlIHN0YW5k YnkuIE5vdGUgdGhhdCB0aGUgcHJpbWFyeSBzbG90IHdhcworIyBhbHJlYWR5IGludmFsaWRhdGVk IChhYm92ZSkgZHVlIHRvIGlkbGUgdGltZW91dC4gVGhlIHN0YW5kYnkgbXVzdCBqdXN0CisjIHN5 bmMgdGhlIGludmFsaWRhdGVkIHN0YXRlLgorJHN0YW5kYnkxLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBwZ19zeW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCk7Iik7CisKK2lzKCAkc3RhbmRi eTEtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1QgY291bnQoKikgPSAxIEZS T00gcGdfcmVwbGljYXRpb25fc2xvdHMKKwkJICBXSEVSRSBzbG90X25hbWUgPSAnc3luY19zbG90 MScKKwkJCUFORCBpbnZhbGlkYXRpb25fcmVhc29uID0gJ2lkbGVfdGltZW91dCc7fQorCSksCisJ InQiLAorCSdjaGVjayB0aGF0IGludmFsaWRhdGlvbiBvZiBzeW5jZWQgc2xvdCBzeW5jX3Nsb3Qx IGlzIHN5bmNlZCBvbiBzdGFuZGJ5Jyk7CisKKyMgTWFrZSB0aGUgc3RhbmRieSBzbG90IG9uIHRo ZSBwcmltYXJ5IGluYWN0aXZlIGFuZCBjaGVjayBmb3IgaW52YWxpZGF0aW9uCiskc3RhbmRieTEt PnN0b3A7Cit3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbigkcHJpbWFyeSwgJ3NiX3Nsb3QxJywg JGxvZ3N0YXJ0LCAkaWRsZV90aW1lb3V0XzFzKTsKKworIyBUZXN0Y2FzZSBlbmQKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKworIyBXYWl0IGZvciBzbG90IHRvIGZpcnN0IGJlY29tZSBpZGxlIGFu ZCB0aGVuIGdldCBpbnZhbGlkYXRlZAorc3ViIHdhaXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9uCit7 CisJbXkgKCRub2RlLCAkc2xvdCwgJG9mZnNldCwgJGlkbGVfdGltZW91dCkgPSBAXzsKKwlteSAk bm9kZV9uYW1lID0gJG5vZGUtPm5hbWU7CisKKwl0cmlnZ2VyX3Nsb3RfaW52YWxpZGF0aW9uKCRu b2RlLCAkc2xvdCwgJG9mZnNldCwgJGlkbGVfdGltZW91dCk7CisKKwkjIENoZWNrIHRoYXQgYW4g aW52YWxpZGF0ZWQgc2xvdCBjYW5ub3QgYmUgYWNxdWlyZWQKKwlteSAoJHJlc3VsdCwgJHN0ZG91 dCwgJHN0ZGVycik7CisJKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGUtPnBzcWwo CisJCSdwb3N0Z3JlcycsIHFxWworCQkJU0VMRUNUIHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5j ZSgnJHNsb3QnLCAnMC8xJyk7CisJXSk7CisJb2soICRzdGRlcnIgPX4gL2NhbiBubyBsb25nZXIg Z2V0IGNoYW5nZXMgZnJvbSByZXBsaWNhdGlvbiBzbG90ICIkc2xvdCIvLAorCQkiZGV0ZWN0ZWQg ZXJyb3IgdXBvbiB0cnlpbmcgdG8gYWNxdWlyZSBpbnZhbGlkYXRlZCBzbG90ICRzbG90IG9uIG5v ZGUgJG5vZGVfbmFtZSIKKwkgICkKKwkgIG9yIGRpZQorCSAgImNvdWxkIG5vdCBkZXRlY3QgZXJy b3IgdXBvbiB0cnlpbmcgdG8gYWNxdWlyZSBpbnZhbGlkYXRlZCBzbG90ICRzbG90IG9uIG5vZGUg JG5vZGVfbmFtZSI7Cit9CisKKyMgVHJpZ2dlciBzbG90IGludmFsaWRhdGlvbiBhbmQgY29uZmly bSBpdCBpbiB0aGUgc2VydmVyIGxvZworc3ViIHRyaWdnZXJfc2xvdF9pbnZhbGlkYXRpb24KK3sK KwlteSAoJG5vZGUsICRzbG90LCAkb2Zmc2V0LCAkaWRsZV90aW1lb3V0KSA9IEBfOworCW15ICRu b2RlX25hbWUgPSAkbm9kZS0+bmFtZTsKKwlteSAkaW52YWxpZGF0ZWQgPSAwOworCisJIyBHaXZl IGVub3VnaCB0aW1lIGZvciBpbmFjdGl2ZV9zaW5jZSB0byBleGNlZWQgdGhlIHRpbWVvdXQKKwlz bGVlcCgkaWRsZV90aW1lb3V0ICsgMSk7CisKKwkjIFJ1biBhIGNoZWNrcG9pbnQKKwkkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDSEVDS1BPSU5UIik7CisKKwkjIFRoZSBzbG90J3MgaW52 YWxpZGF0aW9uIHNob3VsZCBiZSBsb2dnZWQKKwkkbm9kZS0+d2FpdF9mb3JfbG9nKHFyL2ludmFs aWRhdGluZyBvYnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiJHNsb3RcIi8sCisJCSRvZmZzZXQp OworCisJIyBDaGVjayB0aGF0IHRoZSBpbnZhbGlkYXRpb24gcmVhc29uIGlzICdpZGxlX3RpbWVv dXQnCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxF Q1QgQ09VTlQoc2xvdF9uYW1lKSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cworCQkJV0hF UkUgc2xvdF9uYW1lID0gJyRzbG90JyBBTkQKKwkJCWludmFsaWRhdGlvbl9yZWFzb24gPSAnaWRs ZV90aW1lb3V0JzsKKwldKQorCSAgb3IgZGllCisJICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcg Zm9yIGludmFsaWRhdGlvbiByZWFzb24gb2Ygc2xvdCAkc2xvdCB0byBiZSBzZXQgb24gbm9kZSAk bm9kZV9uYW1lIjsKK30KKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjM0LjEKCg== --0000000000009d9c720628e91956--