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.96) (envelope-from ) id 1vgAnD-0090Xx-2c for pgsql-hackers@arkaria.postgresql.org; Thu, 15 Jan 2026 00:00:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vgAnB-00DhiU-2u for pgsql-hackers@arkaria.postgresql.org; Thu, 15 Jan 2026 00:00:50 +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.96) (envelope-from ) id 1vgAnB-00DhiM-0h for pgsql-hackers@lists.postgresql.org; Thu, 15 Jan 2026 00:00:49 +0000 Received: from mail-lf1-x12a.google.com ([2a00:1450:4864:20::12a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vgAn8-000TNL-0x for pgsql-hackers@lists.postgresql.org; Thu, 15 Jan 2026 00:00:48 +0000 Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-59b6a987346so314847e87.3 for ; Wed, 14 Jan 2026 16:00:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768435245; x=1769040045; 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=S3mNN1CP8irItwhB04FYw1ouL4qo8+0BNqyEq+kX2yc=; b=IcHLWS8OCPd0MtZdAyFMPYHRzKDTTBygOZLfQmQdxYMc6RbKqf+wz2Z8ZhbrejtmQP iwt4ljaAAMvPK6pxCQ+WdmTiLu1b5UtUiKbGxft33P3DeCMBYgiMpYN0zceutyRvrTUX yi39xNChSQUDJb4xqv+JnIlG50AbGXrtCKK+rvBSoV8FEXGmHWvYLP6PSF6afQBK5W6y MjXLJ/Bexmf/It3LXeP7+DpkKLvZqS6+gb44R+bd0zwdwSA6v6dut9N7NmjtTlFCFvvC kSGx/OemmqPCIO01eiaqqwF1gS0u6DH6tPEDskdToGfP2XjMpLo0BHgseK5iKAFDXcu8 igNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768435245; x=1769040045; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=S3mNN1CP8irItwhB04FYw1ouL4qo8+0BNqyEq+kX2yc=; b=qckRrGNQT1gqKJHZRUqFHQyLNE/KsG/MDdPioeJW23GfjXyis5HwnrrrlzxnnfhrS6 c8PNEBpGISrIZqqewlZCjVnD8G62x34YoL0KVR6ICA7cjxt63wUSOyOT5BcBLwDfAh9g cnZV5GGO01W5E/I50HQFMHRQSRxQvHfv05iXmXECAWTzN3muLqfnHLXRt3/KXxxHjt7n vprmU78dfcVrcO7++VgWyrka4sP2vQeahvSl9xE3PhC7zanWSTUUNcAgLZBeTDMLFNW8 B2LHWp3L8opAhRRv+iz05xrCDACgK37873MADhWWj0OgUA6FH6WLsKy/llDYNDW+fKjV vvDA== X-Forwarded-Encrypted: i=1; AJvYcCVr4VcFcmzjeFkwlL7pyIQ8f3AMOzb7OU+RXmVueXX3maUG0pDnQYLQSFlvZgRyU6JyLq98gO4Tin7e0EN2@lists.postgresql.org X-Gm-Message-State: AOJu0YyKHfdOQXK/0tXH6tYqRxPSrnmgvMgDLdwCDNN/qblUKp8VZol5 noYDi2iptoQlr0gBG0ViWfvpJ+lq+Jo4WTFxPZfjdLG/On3k8a2nAkym+VgPuyKUuLQnIIMmTbM E9JXL16vpkntL/MUGbW/ckGbANyJmTzw= X-Gm-Gg: AY/fxX7SghiD78pBzmiTQRjkCakwoJTD4tXWmed1v2iJsYFki+WaahQH19v+NLo4pV9 g5kEiFh1gqXnOSpkCc4QuoFG6ymvT9o1baNkP6G9OOeIRbed03+EMt9qBtXWshGlsjpsof/dc9K QTJvGWZMwU54n9VgNIp+LCQoudSDBm5Lh9DxfT0y/m2/G/DzleY5CJ6KLYYHs/n6F7wV4UZaK8J A4SWu/bsFBH5LFXTmPqQZcx8hrVPUvwym0fmIeXj/mOBAy5AVIQhB4VlaDfHC3NBuU6yEv9ElZq 232+rlo= X-Received: by 2002:a05:6512:4020:b0:59b:7d1b:3516 with SMTP id 2adb3069b0e04-59ba0f78b9fmr1292987e87.25.1768435245100; Wed, 14 Jan 2026 16:00:45 -0800 (PST) MIME-Version: 1.0 References: <202512291435.5edkf3hnichv@alvherre.pgsql> <26279DAC-5ADA-4E30-B866-5DED0EEC2BEF@gmail.com> In-Reply-To: From: Chao Li Date: Thu, 15 Jan 2026 08:00:31 +0800 X-Gm-Features: AZwV_QjmDmhgqUSgGb2h8H1YZr3MV2nUdJG8QxxQJ4aY588pV6LMXyzNnxGLrdY Message-ID: Subject: Re: Refactor replication origin state reset helpers To: Masahiko Sawada Cc: Ashutosh Bapat , =?UTF-8?Q?=C3=81lvaro_Herrera?= , Postgres hackers Content-Type: multipart/mixed; boundary="00000000000097c67d064861ead6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000097c67d064861ead6 Content-Type: multipart/alternative; boundary="00000000000097c67c064861ead4" --00000000000097c67c064861ead4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jan 15, 2026 at 2:56=E2=80=AFAM Masahiko Sawada wrote: > On Sun, Jan 11, 2026 at 5:41=E2=80=AFPM Chao Li = wrote: > > > > --- > > In origin.h: > > > > +/* > > + * Clear the per-transaction replication origin state. > > + * > > + * replorigin_session_origin is also cleared if clear_origin is set. > > + */ > > +static inline void > > +replorigin_xact_clear(bool clear_origin) > > +{ > > + replorigin_xact_state.origin_lsn =3D InvalidXLogRecPtr; > > + replorigin_xact_state.origin_timestamp =3D 0; > > + if (clear_origin) > > + replorigin_xact_state.origin =3D InvalidRepOriginId; > > +} > > > > Why does this function need to move to origin.h from origin.c? > > > > > > That=E2=80=99s because, per Ashutosh=E2=80=99s suggestion, I added two = static inline > helpers replorigin_xact_set_origin() and > replorigin_xact_set_lsn_timestamp(), and I thought replorigin_xact_clear(= ) > should stay close with them. > > > > But looks like they don=E2=80=99t have to be inline as they are not on = hot > paths. So I moved them all to origin.c and only extern them. > > Thank you for updating the patch. > > I'm not even sure that we need to have setter functions like > replorigin_xact_set_{origin,lsn_timestamp} given that > replorigin_xact_state is exposed. While the reset helper function > helps us as it removes duplicated codes and some potential accidents > like wrongly setting -1 as an invalid timestamp etc. these setter > functions don't so much. So I think we can have the patch just > consolidating the separated variables. What do you think? > > No problem. I reverted the two helpers in v10. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/ --00000000000097c67c064861ead4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


=

On Thu, Jan 15, 2026 at 2:56=E2=80=AFAM Masahiko = Sawada <sawada.mshk@gmail.com> wrote:
On= Sun, Jan 11, 2026 at 5:41=E2=80=AFPM Chao Li <li.evan.chao@gmail.com> wrote: >
> ---
> In origin.h:
>
> +/*
> + * Clear the per-transaction replication origin state.
> + *
> + * replorigin_session_origin is also cleared if clear_origin is set.<= br> > + */
> +static inline void
> +replorigin_xact_clear(bool clear_origin)
> +{
> +=C2=A0 =C2=A0replorigin_xact_state.origin_lsn =3D InvalidXLogRecPtr;<= br> > +=C2=A0 =C2=A0replorigin_xact_state.origin_timestamp =3D 0;
> +=C2=A0 =C2=A0if (clear_origin)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0replorigin_xact_state.origin =3D InvalidRe= pOriginId;
> +}
>
> Why does this function need to move to origin.h from origin.c?
>
>
> That=E2=80=99s because, per Ashutosh=E2=80=99s suggestion, I added two= static inline helpers replorigin_xact_set_origin() and replorigin_xact_set= _lsn_timestamp(), and I thought replorigin_xact_clear() should stay close w= ith them.
>
> But looks like they don=E2=80=99t have to be inline as they are not on= hot paths. So I moved them all to origin.c and only extern them.

Thank you for updating the patch.

I'm not even sure that we need to have setter functions like
replorigin_xact_set_{origin,lsn_timestamp} given that
replorigin_xact_state is exposed. While the reset helper function
helps us as it removes duplicated codes and some potential accidents
like wrongly setting -1 as an invalid timestamp etc. these setter
functions don't so much. So I think we can have the patch just
consolidating the separated variables. What do you think?


No problem. I reverted the two helpers in v10.=C2=A0=

Best regards,
--
Chao Li (Evan)HighGo Software Co., Ltd.
--00000000000097c67c064861ead4-- --00000000000097c67d064861ead6 Content-Type: application/octet-stream; name="v10-0002-Consolidate-replication-origin-session-globals-i.patch" Content-Disposition: attachment; filename="v10-0002-Consolidate-replication-origin-session-globals-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkeoo44g1 RnJvbSBhMDQxNzJkZjMwZjQyM2NmMDExODM2MzA0NTZkZWFjMGYyMmI0Yzc3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogVHVlLCAzMCBEZWMgMjAyNSAxMjo1NTozMSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDIv Ml0gQ29uc29saWRhdGUgcmVwbGljYXRpb24gb3JpZ2luIHNlc3Npb24gZ2xvYmFscyBpbnRvIGEK IHNpbmdsZSBzdHJ1Y3QuCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFp bjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGlzIGNv bW1pdCBtb3ZlcyB0aGUgc2VwYXJhdGUgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgcmVwbGljYXRpb24g b3JpZ2luCnN0YXRlIGludG8gYSBzaW5nbGUgUmVwT3JpZ2luWGFjdFN0YXRlIHN0cnVjdC4gVGhp cyBncm91cHMgbG9naWNhbGx5CnJlbGF0ZWQgdmFyaWFibGVzLCB3aGljaCBpbXByb3ZlcyBjb2Rl IHJlYWRhYmlsaXR5IGFuZCBzaW1wbGlmaWVzCnN0YXRlIG1hbmFnZW1lbnQgKGUuZy4sIHJlc2V0 dGluZyB0aGUgc3RhdGUpIGJ5IGhhbmRsaW5nIHRoZW0gYXMgYQp1bml0LgoKQXV0aG9yOiBDaGFv IExpIDxsaWNAaGlnaGdvLmNvbT4KU3VnZ2VzdGVkLWJ5OiDDgWx2YXJvIEhlcnJlcmEgPGFsdmhl cnJlQGt1cmlsZW11LmRlClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5tc2hr QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJhcGF0IDxhc2h1dG9zaC5iYXBhdC5v c3NAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRW9XeDI9cFl2 ZlJ0aFhIVHpTck9zZjVfRmZ5WTR6SnlLNHpWMnY0Vz15alVpajFjQUBtYWlsLmdtYWlsLmNvbQot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgICAgICAgICB8IDMyICsr KysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgICAgICAgICAg ICAgfCA0NCArKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9naW5zZXJ0LmMgICAgICAgfCAxMiArKystLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jIHwgIDYgKy0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL29yaWdpbi5jICAgICAgfCAyNiArKysrKystLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC90YWJsZXN5bmMuYyAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMgICAgICB8IDMwICsrKysrKy0tLS0tLS0KIHNyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL29yaWdpbi5oICAgICAgICAgICAgICB8IDEyICsrKy0tCiBzcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgMSArCiA5IGZpbGVzIGNoYW5nZWQs IDkzIGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS90d29waGFzZS5jCmluZGV4IGU1MGFiYjMzMWNjLi4zMjljNmJiZjNjNyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCkBAIC0xMTU3LDEzICsxMTU3LDEzIEBAIEVuZFByZXBh cmUoR2xvYmFsVHJhbnNhY3Rpb24gZ3hhY3QpCiAJQXNzZXJ0KGhkci0+bWFnaWMgPT0gVFdPUEhB U0VfTUFHSUMpOwogCWhkci0+dG90YWxfbGVuID0gcmVjb3Jkcy50b3RhbF9sZW4gKyBzaXplb2Yo cGdfY3JjMzJjKTsKIAotCXJlcGxvcmlnaW4gPSAocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAh PSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKLQkJCQkgIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4g IT0gRG9Ob3RSZXBsaWNhdGVJZCk7CisJcmVwbG9yaWdpbiA9IChyZXBsb3JpZ2luX3hhY3Rfc3Rh dGUub3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCAmJgorCQkJCSAgcmVwbG9yaWdpbl94YWN0 X3N0YXRlLm9yaWdpbiAhPSBEb05vdFJlcGxpY2F0ZUlkKTsKIAogCWlmIChyZXBsb3JpZ2luKQog CXsKLQkJaGRyLT5vcmlnaW5fbHNuID0gcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc247Ci0J CWhkci0+b3JpZ2luX3RpbWVzdGFtcCA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0 YW1wOworCQloZHItPm9yaWdpbl9sc24gPSByZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX2xz bjsKKwkJaGRyLT5vcmlnaW5fdGltZXN0YW1wID0gcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdp bl90aW1lc3RhbXA7CiAJfQogCiAJLyoKQEAgLTEyMTEsNyArMTIxMSw3IEBAIEVuZFByZXBhcmUo R2xvYmFsVHJhbnNhY3Rpb24gZ3hhY3QpCiAJaWYgKHJlcGxvcmlnaW4pCiAJewogCQkvKiBNb3Zl IExTTnMgZm9yd2FyZCBmb3IgdGhpcyByZXBsaWNhdGlvbiBvcmlnaW4gKi8KLQkJcmVwbG9yaWdp bl9zZXNzaW9uX2FkdmFuY2UocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24sCisJCXJlcGxv cmlnaW5fc2Vzc2lvbl9hZHZhbmNlKHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fbHNuLAog CQkJCQkJCQkgICBneGFjdC0+cHJlcGFyZV9lbmRfbHNuKTsKIAl9CiAKQEAgLTIzMzAsOCArMjMz MCw4IEBAIFJlY29yZFRyYW5zYWN0aW9uQ29tbWl0UHJlcGFyZWQoVHJhbnNhY3Rpb25JZCB4aWQs CiAJICogQXJlIHdlIHVzaW5nIHRoZSByZXBsaWNhdGlvbiBvcmlnaW5zIGZlYXR1cmU/ICBPciwg aW4gb3RoZXIgd29yZHMsIGFyZQogCSAqIHdlIHJlcGxheWluZyByZW1vdGUgYWN0aW9ucz8KIAkg Ki8KLQlyZXBsb3JpZ2luID0gKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJl cE9yaWdpbklkICYmCi0JCQkJICByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IERvTm90UmVw bGljYXRlSWQpOworCXJlcGxvcmlnaW4gPSAocmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbiAh PSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJCQkgIHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmln aW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7CiAKIAkvKiBMb2FkIHRoZSBpbmplY3Rpb24gcG9pbnQg YmVmb3JlIGVudGVyaW5nIHRoZSBjcml0aWNhbCBzZWN0aW9uICovCiAJSU5KRUNUSU9OX1BPSU5U X0xPQUQoImNvbW1pdC1hZnRlci1kZWxheS1jaGVja3BvaW50Iik7CkBAIC0yMzc2LDIzICsyMzc2 LDIzIEBAIFJlY29yZFRyYW5zYWN0aW9uQ29tbWl0UHJlcGFyZWQoVHJhbnNhY3Rpb25JZCB4aWQs CiAKIAlpZiAocmVwbG9yaWdpbikKIAkJLyogTW92ZSBMU05zIGZvcndhcmQgZm9yIHRoaXMgcmVw bGljYXRpb24gb3JpZ2luICovCi0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKHJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW5fbHNuLAorCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBs b3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX2xzbiwKIAkJCQkJCQkJICAgWGFjdExhc3RSZWNFbmQp OwogCiAJLyoKIAkgKiBSZWNvcmQgY29tbWl0IHRpbWVzdGFtcC4gIFRoZSB2YWx1ZSBjb21lcyBm cm9tIHBsYWluIGNvbW1pdCB0aW1lc3RhbXAKIAkgKiBpZiByZXBsb3JpZ2luIGlzIG5vdCBlbmFi bGVkLCBvciByZXBsb3JpZ2luIGFscmVhZHkgc2V0IGEgdmFsdWUgZm9yIHVzCi0JICogaW4gcmVw bG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgb3RoZXJ3aXNlLgorCSAqIGluIHJlcGxv cmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fdGltZXN0YW1wIG90aGVyd2lzZS4KIAkgKgogCSAqIFdl IGRvbid0IG5lZWQgdG8gV0FMLWxvZyBhbnl0aGluZyBoZXJlLCBhcyB0aGUgY29tbWl0IHJlY29y ZCB3cml0dGVuCiAJICogYWJvdmUgYWxyZWFkeSBjb250YWlucyB0aGUgZGF0YS4KIAkgKi8KLQlp ZiAoIXJlcGxvcmlnaW4gfHwgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPT0g MCkKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBjb21taXR0czsKKwlp ZiAoIXJlcGxvcmlnaW4gfHwgcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl90aW1lc3RhbXAg PT0gMCkKKwkJcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl90aW1lc3RhbXAgPSBjb21taXR0 czsKIAogCVRyYW5zYWN0aW9uVHJlZVNldENvbW1pdFRzRGF0YSh4aWQsIG5jaGlsZHJlbiwgY2hp bGRyZW4sCi0JCQkJCQkJCSAgIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wLAot CQkJCQkJCQkgICByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luKTsKKwkJCQkJCQkJICAgcmVwbG9y aWdpbl94YWN0X3N0YXRlLm9yaWdpbl90aW1lc3RhbXAsCisJCQkJCQkJCSAgIHJlcGxvcmlnaW5f eGFjdF9zdGF0ZS5vcmlnaW4pOwogCiAJLyoKIAkgKiBXZSBkb24ndCBjdXJyZW50bHkgdHJ5IHRv IHNsZWVwIGJlZm9yZSBmbHVzaCBoZXJlIC4uLiBub3IgaXMgdGhlcmUgYW55CkBAIC0yNDQ1LDgg KzI0NDUsOCBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0UHJlcGFyZWQoVHJhbnNhY3Rpb25JZCB4 aWQsCiAJICogQXJlIHdlIHVzaW5nIHRoZSByZXBsaWNhdGlvbiBvcmlnaW5zIGZlYXR1cmU/ICBP ciwgaW4gb3RoZXIgd29yZHMsIGFyZQogCSAqIHdlIHJlcGxheWluZyByZW1vdGUgYWN0aW9ucz8K IAkgKi8KLQlyZXBsb3JpZ2luID0gKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxp ZFJlcE9yaWdpbklkICYmCi0JCQkJICByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IERvTm90 UmVwbGljYXRlSWQpOworCXJlcGxvcmlnaW4gPSAocmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdp biAhPSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJCQkgIHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5v cmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7CiAKIAkvKgogCSAqIENhdGNoIHRoZSBzY2VuYXJp byB3aGVyZSB3ZSBhYm9ydGVkIHBhcnR3YXkgdGhyb3VnaApAQCAtMjQ3Miw3ICsyNDcyLDcgQEAg UmVjb3JkVHJhbnNhY3Rpb25BYm9ydFByZXBhcmVkKFRyYW5zYWN0aW9uSWQgeGlkLAogCiAJaWYg KHJlcGxvcmlnaW4pCiAJCS8qIE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9u IG9yaWdpbiAqLwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luX2xzbiwKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UocmVwbG9yaWdpbl94 YWN0X3N0YXRlLm9yaWdpbl9sc24sCiAJCQkJCQkJCSAgIFhhY3RMYXN0UmVjRW5kKTsKIAogCS8q IEFsd2F5cyBmbHVzaCwgc2luY2Ugd2UncmUgYWJvdXQgdG8gcmVtb3ZlIHRoZSAyUEMgc3RhdGUg ZmlsZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IGM4NTdlMjM1NTJmLi5jNWMz ZjIxYzlhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAtMTQxMyw4ICsxNDEzLDgg QEAgUmVjb3JkVHJhbnNhY3Rpb25Db21taXQodm9pZCkKIAkJICogQXJlIHdlIHVzaW5nIHRoZSBy ZXBsaWNhdGlvbiBvcmlnaW5zIGZlYXR1cmU/ICBPciwgaW4gb3RoZXIgd29yZHMsCiAJCSAqIGFy ZSB3ZSByZXBsYXlpbmcgcmVtb3RlIGFjdGlvbnM/CiAJCSAqLwotCQlyZXBsb3JpZ2luID0gKHJl cGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkICYmCi0JCQkJCSAg cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBEb05vdFJlcGxpY2F0ZUlkKTsKKwkJcmVwbG9y aWdpbiA9IChyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5J ZCAmJgorCQkJCQkgIHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4gIT0gRG9Ob3RSZXBsaWNh dGVJZCk7CiAKIAkJLyoKIAkJICogTWFyayBvdXJzZWx2ZXMgYXMgd2l0aGluIG91ciAiY29tbWl0 IGNyaXRpY2FsIHNlY3Rpb24iLiAgVGhpcwpAQCAtMTQ2MiwyNSArMTQ2MiwyNSBAQCBSZWNvcmRU cmFuc2FjdGlvbkNvbW1pdCh2b2lkKQogCiAJCWlmIChyZXBsb3JpZ2luKQogCQkJLyogTW92ZSBM U05zIGZvcndhcmQgZm9yIHRoaXMgcmVwbGljYXRpb24gb3JpZ2luICovCi0JCQlyZXBsb3JpZ2lu X3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiwKKwkJCXJlcGxv cmlnaW5fc2Vzc2lvbl9hZHZhbmNlKHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fbHNuLAog CQkJCQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOwogCiAJCS8qCiAJCSAqIFJlY29yZCBjb21taXQg dGltZXN0YW1wLiAgVGhlIHZhbHVlIGNvbWVzIGZyb20gcGxhaW4gY29tbWl0CiAJCSAqIHRpbWVz dGFtcCBpZiB0aGVyZSdzIG5vIHJlcGxpY2F0aW9uIG9yaWdpbjsgb3RoZXJ3aXNlLCB0aGUKLQkJ ICogdGltZXN0YW1wIHdhcyBhbHJlYWR5IHNldCBpbiByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2lu X3RpbWVzdGFtcCBieQotCQkgKiByZXBsaWNhdGlvbi4KKwkJICogdGltZXN0YW1wIHdhcyBhbHJl YWR5IHNldCBpbiByZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX3RpbWVzdGFtcAorCQkgKiBi eSByZXBsaWNhdGlvbi4KIAkJICoKIAkJICogV2UgZG9uJ3QgbmVlZCB0byBXQUwtbG9nIGFueXRo aW5nIGhlcmUsIGFzIHRoZSBjb21taXQgcmVjb3JkCiAJCSAqIHdyaXR0ZW4gYWJvdmUgYWxyZWFk eSBjb250YWlucyB0aGUgZGF0YS4KIAkJICovCiAKLQkJaWYgKCFyZXBsb3JpZ2luIHx8IHJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID09IDApCi0JCQlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luX3RpbWVzdGFtcCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvblN0b3BUaW1lc3RhbXAo KTsKKwkJaWYgKCFyZXBsb3JpZ2luIHx8IHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fdGlt ZXN0YW1wID09IDApCisJCQlyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX3RpbWVzdGFtcCA9 IEdldEN1cnJlbnRUcmFuc2FjdGlvblN0b3BUaW1lc3RhbXAoKTsKIAogCQlUcmFuc2FjdGlvblRy ZWVTZXRDb21taXRUc0RhdGEoeGlkLCBuY2hpbGRyZW4sIGNoaWxkcmVuLAotCQkJCQkJCQkJICAg cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAsCi0JCQkJCQkJCQkgICByZXBsb3Jp Z2luX3Nlc3Npb25fb3JpZ2luKTsKKwkJCQkJCQkJCSAgIHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5v cmlnaW5fdGltZXN0YW1wLAorCQkJCQkJCQkJICAgcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdp bik7CiAJfQogCiAJLyoKQEAgLTE4MTAsOCArMTgxMCw4IEBAIFJlY29yZFRyYW5zYWN0aW9uQWJv cnQoYm9vbCBpc1N1YlhhY3QpCiAJICogQXJlIHdlIHVzaW5nIHRoZSByZXBsaWNhdGlvbiBvcmln aW5zIGZlYXR1cmU/ICBPciwgaW4gb3RoZXIgd29yZHMsIGFyZQogCSAqIHdlIHJlcGxheWluZyBy ZW1vdGUgYWN0aW9ucz8KIAkgKi8KLQlyZXBsb3JpZ2luID0gKHJlcGxvcmlnaW5fc2Vzc2lvbl9v cmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkICYmCi0JCQkJICByZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luICE9IERvTm90UmVwbGljYXRlSWQpOworCXJlcGxvcmlnaW4gPSAocmVwbG9yaWdpbl94 YWN0X3N0YXRlLm9yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJCQkgIHJlcGxvcmln aW5feGFjdF9zdGF0ZS5vcmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7CiAKIAkvKiBGZXRjaCB0 aGUgZGF0YSB3ZSBuZWVkIGZvciB0aGUgYWJvcnQgcmVjb3JkICovCiAJbnJlbHMgPSBzbWdyR2V0 UGVuZGluZ0RlbGV0ZXMoZmFsc2UsICZyZWxzKTsKQEAgLTE4MzgsNyArMTgzOCw3IEBAIFJlY29y ZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAKIAlpZiAocmVwbG9yaWdpbikKIAkJ LyogTW92ZSBMU05zIGZvcndhcmQgZm9yIHRoaXMgcmVwbGljYXRpb24gb3JpZ2luICovCi0JCXJl cGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuLAor CQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2lu X2xzbiwKIAkJCQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOwogCiAJLyoKQEAgLTU5MjcsMTMgKzU5 MjcsMTcgQEAgWGFjdExvZ0NvbW1pdFJlY29yZChUaW1lc3RhbXBUeiBjb21taXRfdGltZSwKIAkJ CXhsX3hpbmZvLnhpbmZvIHw9IFhBQ1RfWElORk9fSEFTX0dJRDsKIAl9CiAKLQkvKiBkdW1wIHRy YW5zYWN0aW9uIG9yaWdpbiBpbmZvcm1hdGlvbiAqLwotCWlmIChyZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCkKKwkvKgorCSAqIER1bXAgdHJhbnNhY3Rpb24g b3JpZ2luIGluZm9ybWF0aW9uCisJICoKKwkgKiBOb3RlIHRoYXQgRG9Ob3RSZXBsaWNhdGVJZCBp cyBpbnRlbnRpb25hbGx5IGV4Y2x1ZGVkIGhlcmUuCisJICovCisJaWYgKHJlcGxvcmlnaW5feGFj dF9zdGF0ZS5vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkKQogCXsKIAkJeGxfeGluZm8ueGlu Zm8gfD0gWEFDVF9YSU5GT19IQVNfT1JJR0lOOwogCi0JCXhsX29yaWdpbi5vcmlnaW5fbHNuID0g cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc247Ci0JCXhsX29yaWdpbi5vcmlnaW5fdGltZXN0 YW1wID0gcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXA7CisJCXhsX29yaWdpbi5v cmlnaW5fbHNuID0gcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl9sc247CisJCXhsX29yaWdp bi5vcmlnaW5fdGltZXN0YW1wID0gcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl90aW1lc3Rh bXA7CiAJfQogCiAJaWYgKHhsX3hpbmZvLnhpbmZvICE9IDApCkBAIC02MDgwLDEzICs2MDg0LDE1 IEBAIFhhY3RMb2dBYm9ydFJlY29yZChUaW1lc3RhbXBUeiBhYm9ydF90aW1lLAogCS8qCiAJICog RHVtcCB0cmFuc2FjdGlvbiBvcmlnaW4gaW5mb3JtYXRpb24uIFdlIG5lZWQgdGhpcyBkdXJpbmcg cmVjb3ZlcnkgdG8KIAkgKiB1cGRhdGUgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBwcm9ncmVzcy4K KwkgKgorCSAqIE5vdGUgdGhhdCBEb05vdFJlcGxpY2F0ZUlkIGlzIGludGVudGlvbmFsbHkgZXhj bHVkZWQgaGVyZS4KIAkgKi8KLQlpZiAocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZh bGlkUmVwT3JpZ2luSWQpCisJaWYgKHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4gIT0gSW52 YWxpZFJlcE9yaWdpbklkKQogCXsKIAkJeGxfeGluZm8ueGluZm8gfD0gWEFDVF9YSU5GT19IQVNf T1JJR0lOOwogCi0JCXhsX29yaWdpbi5vcmlnaW5fbHNuID0gcmVwbG9yaWdpbl9zZXNzaW9uX29y aWdpbl9sc247Ci0JCXhsX29yaWdpbi5vcmlnaW5fdGltZXN0YW1wID0gcmVwbG9yaWdpbl9zZXNz aW9uX29yaWdpbl90aW1lc3RhbXA7CisJCXhsX29yaWdpbi5vcmlnaW5fbHNuID0gcmVwbG9yaWdp bl94YWN0X3N0YXRlLm9yaWdpbl9sc247CisJCXhsX29yaWdpbi5vcmlnaW5fdGltZXN0YW1wID0g cmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl90aW1lc3RhbXA7CiAJfQogCiAJaWYgKHhsX3hp bmZvLnhpbmZvICE9IDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9naW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9naW5zZXJ0LmMKaW5k ZXggOTJjNDhlNzY4YzMuLjY0NTM0ZTQ1MjE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9naW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZ2luc2VydC5jCkBAIC04NTksMTMgKzg1OSwxNyBAQCBYTG9nUmVjb3JkQXNzZW1ibGUoUm1n cklkIHJtaWQsIHVpbnQ4IGluZm8sCiAJCXNjcmF0Y2ggKz0gc2l6ZW9mKEJsb2NrTnVtYmVyKTsK IAl9CiAKLQkvKiBmb2xsb3dlZCBieSB0aGUgcmVjb3JkJ3Mgb3JpZ2luLCBpZiBhbnkgKi8KKwkv KgorCSAqIGZvbGxvd2VkIGJ5IHRoZSByZWNvcmQncyBvcmlnaW4sIGlmIGFueQorCSAqCisJICog RG9Ob3RSZXBsaWNhdGVJZCBpcyBpbnRlbnRpb25hbGx5IGV4Y2x1ZGVkIGhlcmUKKwkgKi8KIAlp ZiAoKGN1cmluc2VydF9mbGFncyAmIFhMT0dfSU5DTFVERV9PUklHSU4pICYmCi0JCXJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkKQorCQlyZXBsb3JpZ2luX3hh Y3Rfc3RhdGUub3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCkKIAl7CiAJCSooc2NyYXRjaCsr KSA9IChjaGFyKSBYTFJfQkxPQ0tfSURfT1JJR0lOOwotCQltZW1jcHkoc2NyYXRjaCwgJnJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW4sIHNpemVvZihyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luKSk7 Ci0JCXNjcmF0Y2ggKz0gc2l6ZW9mKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4pOworCQltZW1j cHkoc2NyYXRjaCwgJnJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4sIHNpemVvZihyZXBsb3Jp Z2luX3hhY3Rfc3RhdGUub3JpZ2luKSk7CisJCXNjcmF0Y2ggKz0gc2l6ZW9mKHJlcGxvcmlnaW5f eGFjdF9zdGF0ZS5vcmlnaW4pOwogCX0KIAogCS8qIGZvbGxvd2VkIGJ5IHRvcGxldmVsIFhJRCwg aWYgbm90IGFscmVhZHkgaW5jbHVkZWQgaW4gcHJldmlvdXMgcmVjb3JkICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmlu ZGV4IDVlYmQyMzUzZmVkLi5mYmMxMTNiMDk5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTk2Miw3ICs5NjIs NyBAQCBQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkgKiBvcmlnaW4g d2hpY2ggd2FzIGFscmVhZHkgYWNxdWlyZWQgYnkgaXRzIGxlYWRlciBwcm9jZXNzLgogCSAqLwog CXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgTXlMb2dpY2FsUmVwV29ya2VyLT5s ZWFkZXJfcGlkKTsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CisJcmVw bG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbiA9IG9yaWdpbmlkOwogCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOwogCiAJLyoKQEAgLTE0MzAsOCArMTQzMCw4IEBAIHBhX3N0cmVhbV9hYm9ydChM b2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhKQogCSAqIFVwZGF0ZSBvcmlnaW4g c3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgog CSAqIGluIGNhc2Ugb2YgY3Jhc2guCiAJICovCi0JcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9s c24gPSBhYm9ydF9kYXRhLT5hYm9ydF9sc247Ci0JcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90 aW1lc3RhbXAgPSBhYm9ydF9kYXRhLT5hYm9ydF90aW1lOworCXJlcGxvcmlnaW5feGFjdF9zdGF0 ZS5vcmlnaW5fbHNuID0gYWJvcnRfZGF0YS0+YWJvcnRfbHNuOworCXJlcGxvcmlnaW5feGFjdF9z dGF0ZS5vcmlnaW5fdGltZXN0YW1wID0gYWJvcnRfZGF0YS0+YWJvcnRfdGltZTsKIAogCS8qCiAJ ICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9mIHRv cGxldmVsIHhhY3QsIHNvCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL29yaWdpbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwpp bmRleCBiYjY1ZTRkMzZkMy4uODg0YjVkMWY2OTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9vcmlnaW4uYwpAQCAtMTYyLDEwICsxNjIsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVw bGljYXRpb25TdGF0ZUN0bAogCVJlcGxpY2F0aW9uU3RhdGUgc3RhdGVzW0ZMRVhJQkxFX0FSUkFZ X01FTUJFUl07CiB9IFJlcGxpY2F0aW9uU3RhdGVDdGw7CiAKLS8qIGV4dGVybmFsIHZhcmlhYmxl cyAqLwotUmVwT3JpZ2luSWQgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IEludmFsaWRSZXBP cmlnaW5JZDsgLyogYXNzdW1lZCBpZGVudGl0eSAqLwotWExvZ1JlY1B0cglyZXBsb3JpZ2luX3Nl c3Npb25fb3JpZ2luX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwotVGltZXN0YW1wVHogcmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSAwOworLyogR2xvYmFsIHZhcmlhYmxlIGZv ciBwZXItdHJhbnNhY3Rpb24gcmVwbGljYXRpb24gb3JpZ2luIHN0YXRlICovCitSZXBPcmlnaW5Y YWN0U3RhdGUgcmVwbG9yaWdpbl94YWN0X3N0YXRlID0geworCS5vcmlnaW4gPSBJbnZhbGlkUmVw T3JpZ2luSWQsCS8qIGFzc3VtZWQgaWRlbnRpdHkgKi8KKwkub3JpZ2luX2xzbiA9IEludmFsaWRY TG9nUmVjUHRyLAorCS5vcmlnaW5fdGltZXN0YW1wID0gMAorfTsKIAogLyoKICAqIEJhc2UgYWRk cmVzcyBpbnRvIGEgc2hhcmVkIG1lbW9yeSBhcnJheSBvZiByZXBsaWNhdGlvbiBzdGF0ZXMgb2Yg c2l6ZQpAQCAtOTAyLDcgKzkwNCw3IEBAIHJlcGxvcmlnaW5fcmVkbyhYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKICAqIFRlbGwgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBwcm9ncmVzcyBtYWNoaW5l cnkgdGhhdCBhIGNvbW1pdCBmcm9tICdub2RlJwogICogdGhhdCBvcmlnaW5hdGVkIGF0IHRoZSBM U04gcmVtb3RlX2NvbW1pdCBvbiB0aGUgcmVtb3RlIG5vZGUgd2FzIHJlcGxheWVkCiAgKiBzdWNj ZXNzZnVsbHkgYW5kIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBkbyBzbyBhZ2Fpbi4gSW4gY29tYmlu YXRpb24gd2l0aAotICogc2V0dGluZyB1cCByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiBh bmQgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbgorICogc2V0dGluZyB1cCByZXBsb3JpZ2luX3hh Y3Rfc3RhdGUgey5vcmlnaW5fbHNuLCAub3JpZ2luX3RpbWVzdGFtcH0KICAqIHRoYXQgZW5zdXJl cyB3ZSB3b24ndCBsb3NlIGtub3dsZWRnZSBhYm91dCB0aGF0IGFmdGVyIGEgY3Jhc2ggaWYgdGhl CiAgKiB0cmFuc2FjdGlvbiBoYWQgYSBwZXJzaXN0ZW50IGVmZmVjdCAodGhpbmsgb2YgYXN5bmNo cm9ub3VzIGNvbW1pdHMpLgogICoKQEAgLTEzNDksMTAgKzEzNTEsMTAgQEAgcmVwbG9yaWdpbl9z ZXNzaW9uX2dldF9wcm9ncmVzcyhib29sIGZsdXNoKQogdm9pZAogcmVwbG9yaWdpbl94YWN0X2Ns ZWFyKGJvb2wgY2xlYXJfb3JpZ2luKQogewotCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNu ID0gSW52YWxpZFhMb2dSZWNQdHI7Ci0JcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3Rh bXAgPSAwOworCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fbHNuID0gSW52YWxpZFhMb2dS ZWNQdHI7CisJcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl90aW1lc3RhbXAgPSAwOwogCWlm IChjbGVhcl9vcmlnaW4pCi0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBJbnZhbGlkUmVw T3JpZ2luSWQ7CisJCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4gPSBJbnZhbGlkUmVwT3Jp Z2luSWQ7CiB9CiAKIApAQCAtMTQ2Miw3ICsxNDY0LDcgQEAgcGdfcmVwbGljYXRpb25fb3JpZ2lu X3Nlc3Npb25fc2V0dXAoUEdfRlVOQ1RJT05fQVJHUykKIAlwaWQgPSBQR19HRVRBUkdfSU5UMzIo MSk7CiAJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbiwgcGlkKTsKIAotCXJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW47CisJcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdp biA9IG9yaWdpbjsKIAogCXBmcmVlKG5hbWUpOwogCkBAIC0xNDkyLDcgKzE0OTQsNyBAQCBwZ19y ZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9pc19zZXR1cChQR19GVU5DVElPTl9BUkdTKQogewog CXJlcGxvcmlnaW5fY2hlY2tfcHJlcmVxdWlzaXRlcyhmYWxzZSwgZmFsc2UpOwogCi0JUEdfUkVU VVJOX0JPT0wocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQp OworCVBHX1JFVFVSTl9CT09MKHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4gIT0gSW52YWxp ZFJlcE9yaWdpbklkKTsKIH0KIAogCkBAIC0xNTM2LDggKzE1MzgsOCBAQCBwZ19yZXBsaWNhdGlv bl9vcmlnaW5feGFjdF9zZXR1cChQR19GVU5DVElPTl9BUkdTKQogCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coIm5vIHJl cGxpY2F0aW9uIG9yaWdpbiBpcyBjb25maWd1cmVkIikpKTsKIAotCXJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW5fbHNuID0gbG9jYXRpb247Ci0JcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1l c3RhbXAgPSBQR19HRVRBUkdfVElNRVNUQU1QVFooMSk7CisJcmVwbG9yaWdpbl94YWN0X3N0YXRl Lm9yaWdpbl9sc24gPSBsb2NhdGlvbjsKKwlyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX3Rp bWVzdGFtcCA9IFBHX0dFVEFSR19USU1FU1RBTVBUWigxKTsKIAogCVBHX1JFVFVSTl9WT0lEKCk7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3lu Yy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA3 M2EwZDI4MzhjZi4uODY0NDc2YjRhNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC90YWJsZXN5bmMuYwpAQCAtMTMxOCw3ICsxMzE4LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJs ZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJICovCiAJCW9yaWdpbmlkID0g cmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIGZhbHNlKTsKIAkJcmVwbG9yaWdpbl9zZXNz aW9uX3NldHVwKG9yaWdpbmlkLCAwKTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9y aWdpbmlkOworCQlyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luID0gb3JpZ2luaWQ7CiAJCSpv cmlnaW5fc3RhcnRwb3MgPSByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsK IAogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTE0MDUsNyArMTQwNSw3IEBAIExv Z2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJVW5s b2NrUmVsYXRpb25PaWQoUmVwbGljYXRpb25PcmlnaW5SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVM b2NrKTsKIAogCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7Ci0JcmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOworCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5v cmlnaW4gPSBvcmlnaW5pZDsKIAogCS8qCiAJICogSWYgdGhlIHVzZXIgZGlkIG5vdCBvcHQgdG8g cnVuIGFzIHRoZSBvd25lciBvZiB0aGUgc3Vic2NyaXB0aW9uCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYwppbmRleCBjMWFjZWFiYmRmNS4uODMzZDU5ZjIyODQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMTMxOCw4ICsxMzE4LDgg QEAgYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoTG9naWNhbFJlcFByZXBhcmVkVHhuRGF0 YSAqcHJlcGFyZV9kYXRhKQogCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3Rh cnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgogCSAqIGluIGNhc2Ugb2YgY3Jhc2gu CiAJICovCi0JcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBwcmVwYXJlX2RhdGEtPmVu ZF9sc247Ci0JcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBwcmVwYXJlX2Rh dGEtPnByZXBhcmVfdGltZTsKKwlyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX2xzbiA9IHBy ZXBhcmVfZGF0YS0+ZW5kX2xzbjsKKwlyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX3RpbWVz dGFtcCA9IHByZXBhcmVfZGF0YS0+cHJlcGFyZV90aW1lOwogCiAJUHJlcGFyZVRyYW5zYWN0aW9u QmxvY2soZ2lkKTsKIH0KQEAgLTE0MjEsOCArMTQyMSw4IEBAIGFwcGx5X2hhbmRsZV9jb21taXRf cHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2Fu IHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgogCSAqIGluIGNhc2Ugb2Yg Y3Jhc2guCiAJICovCi0JcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBwcmVwYXJlX2Rh dGEuZW5kX2xzbjsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IHByZXBh cmVfZGF0YS5jb21taXRfdGltZTsKKwlyZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luX2xzbiA9 IHByZXBhcmVfZGF0YS5lbmRfbHNuOworCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fdGlt ZXN0YW1wID0gcHJlcGFyZV9kYXRhLmNvbW1pdF90aW1lOwogCiAJRmluaXNoUHJlcGFyZWRUcmFu c2FjdGlvbihnaWQsIHRydWUpOwogCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CkBAIC0xNDc5LDgg KzE0NzksOCBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQog CQkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9t IGNvcnJlY3QKIAkJICogcG9zaXRpb24gaW4gY2FzZSBvZiBjcmFzaC4KIAkJICovCi0JCXJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gcm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNu OwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IHJvbGxiYWNrX2RhdGEu cm9sbGJhY2tfdGltZTsKKwkJcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbl9sc24gPSByb2xs YmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc247CisJCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmln aW5fdGltZXN0YW1wID0gcm9sbGJhY2tfZGF0YS5yb2xsYmFja190aW1lOwogCiAJCS8qIFRoZXJl IGlzIG5vIHRyYW5zYWN0aW9uIHdoZW4gQUJPUlQvUk9MTEJBQ0sgUFJFUEFSRUQgaXMgY2FsbGVk ICovCiAJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKQEAgLTI1MjYsOCArMjUyNiw4IEBAIGFw cGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9k YXRhKQogCQkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWlu ZyBmcm9tIGNvcnJlY3QKIAkJICogcG9zaXRpb24gaW4gY2FzZSBvZiBjcmFzaC4KIAkJICovCi0J CXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gY29tbWl0X2RhdGEtPmVuZF9sc247Ci0J CXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gY29tbWl0X2RhdGEtPmNvbW1p dHRpbWU7CisJCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fbHNuID0gY29tbWl0X2RhdGEt PmVuZF9sc247CisJCXJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW5fdGltZXN0YW1wID0gY29t bWl0X2RhdGEtPmNvbW1pdHRpbWU7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK QEAgLTI5NDAsNyArMjk0MCw3IEBAIGFwcGx5X2hhbmRsZV91cGRhdGVfaW50ZXJuYWwoQXBwbHlF eGVjdXRpb25EYXRhICplZGF0YSwKIAkJICovCiAJCWlmIChHZXRUdXBsZVRyYW5zYWN0aW9uSW5m byhsb2NhbHNsb3QsICZjb25mbGljdHR1cGxlLnhtaW4sCiAJCQkJCQkJCQkmY29uZmxpY3R0dXBs ZS5vcmlnaW4sICZjb25mbGljdHR1cGxlLnRzKSAmJgotCQkJY29uZmxpY3R0dXBsZS5vcmlnaW4g IT0gcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbikKKwkJCWNvbmZsaWN0dHVwbGUub3JpZ2luICE9 IHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4pCiAJCXsKIAkJCVR1cGxlVGFibGVTbG90ICpu ZXdzbG90OwogCkBAIC0yOTgyLDcgKzI5ODIsNyBAQCBhcHBseV9oYW5kbGVfdXBkYXRlX2ludGVy bmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQkJCQkJCQkgICAmY29uZmxpY3R0dXBs ZS54bWluLAogCQkJCQkJCQkJICAgJmNvbmZsaWN0dHVwbGUub3JpZ2luLAogCQkJCQkJCQkJICAg JmNvbmZsaWN0dHVwbGUudHMpICYmCi0JCQljb25mbGljdHR1cGxlLm9yaWdpbiAhPSByZXBsb3Jp Z2luX3Nlc3Npb25fb3JpZ2luKQorCQkJY29uZmxpY3R0dXBsZS5vcmlnaW4gIT0gcmVwbG9yaWdp bl94YWN0X3N0YXRlLm9yaWdpbikKIAkJCXR5cGUgPSBDVF9VUERBVEVfREVMRVRFRDsKIAkJZWxz ZQogCQkJdHlwZSA9IENUX1VQREFURV9NSVNTSU5HOwpAQCAtMzEzNSw3ICszMTM1LDcgQEAgYXBw bHlfaGFuZGxlX2RlbGV0ZV9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQkg Ki8KIAkJaWYgKEdldFR1cGxlVHJhbnNhY3Rpb25JbmZvKGxvY2Fsc2xvdCwgJmNvbmZsaWN0dHVw bGUueG1pbiwKIAkJCQkJCQkJCSZjb25mbGljdHR1cGxlLm9yaWdpbiwgJmNvbmZsaWN0dHVwbGUu dHMpICYmCi0JCQljb25mbGljdHR1cGxlLm9yaWdpbiAhPSByZXBsb3JpZ2luX3Nlc3Npb25fb3Jp Z2luKQorCQkJY29uZmxpY3R0dXBsZS5vcmlnaW4gIT0gcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9y aWdpbikKIAkJewogCQkJY29uZmxpY3R0dXBsZS5zbG90ID0gbG9jYWxzbG90OwogCQkJUmVwb3J0 QXBwbHlDb25mbGljdChlc3RhdGUsIHJlbGluZm8sIExPRywgQ1RfREVMRVRFX09SSUdJTl9ESUZG RVJTLApAQCAtMzQ3Nyw3ICszNDc3LDcgQEAgYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoQXBw bHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAkJCQkJCQkJCQkJCSAgICZjb25mbGljdHR1cGxlLnht aW4sCiAJCQkJCQkJCQkJCQkgICAmY29uZmxpY3R0dXBsZS5vcmlnaW4sCiAJCQkJCQkJCQkJCQkg ICAmY29uZmxpY3R0dXBsZS50cykgJiYKLQkJCQkJCWNvbmZsaWN0dHVwbGUub3JpZ2luICE9IHJl cGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4pCisJCQkJCQljb25mbGljdHR1cGxlLm9yaWdpbiAhPSBy ZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luKQogCQkJCQkJdHlwZSA9IENUX1VQREFURV9ERUxF VEVEOwogCQkJCQllbHNlCiAJCQkJCQl0eXBlID0gQ1RfVVBEQVRFX01JU1NJTkc7CkBAIC0zNTAz LDcgKzM1MDMsNyBAQCBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZyhBcHBseUV4ZWN1dGlvbkRh dGEgKmVkYXRhLAogCQkJCWlmIChHZXRUdXBsZVRyYW5zYWN0aW9uSW5mbyhsb2NhbHNsb3QsICZj b25mbGljdHR1cGxlLnhtaW4sCiAJCQkJCQkJCQkJCSZjb25mbGljdHR1cGxlLm9yaWdpbiwKIAkJ CQkJCQkJCQkJJmNvbmZsaWN0dHVwbGUudHMpICYmCi0JCQkJCWNvbmZsaWN0dHVwbGUub3JpZ2lu ICE9IHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4pCisJCQkJCWNvbmZsaWN0dHVwbGUub3JpZ2lu ICE9IHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4pCiAJCQkJewogCQkJCQlUdXBsZVRhYmxl U2xvdCAqbmV3c2xvdDsKIApAQCAtNTY1Miw3ICs1NjUyLDcgQEAgcnVuX2FwcGx5X3dvcmtlcih2 b2lkKQogCWlmICghT2lkSXNWYWxpZChvcmlnaW5pZCkpCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdp bl9jcmVhdGUob3JpZ2lubmFtZSk7CiAJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlk LCAwKTsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CisJcmVwbG9yaWdp bl94YWN0X3N0YXRlLm9yaWdpbiA9IG9yaWdpbmlkOwogCW9yaWdpbl9zdGFydHBvcyA9IHJlcGxv cmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCkBAIC01ODY5LDcgKzU4NjksNyBAQCBJbml0aWFsaXplTG9nUmVwV29ya2VyKHZv aWQpCiB9CiAKIC8qCi0gKiBDYWxsYmFjayBvbiBleGl0IHRvIHJlc2V0IHRoZSBvcmlnaW4gc3Rh dGUuCisgKiBDYWxsYmFjayBvbiBleGl0IHRvIGNsZWFyIHRyYW5zYWN0aW9uLWxldmVsIHJlcGxp Y2F0aW9uIG9yaWdpbiBzdGF0ZS4KICAqLwogc3RhdGljIHZvaWQKIG9uX2V4aXRfY2xlYXJfc3Rh dGUoaW50IGNvZGUsIERhdHVtIGFyZykKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL29yaWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKaW5kZXggMWVh YWJhY2RlMDMuLjA4MWEzMmNjMTJjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9vcmlnaW4uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaApAQCAtNDAs OSArNDAsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfcmVwbG9yaWdpbl9kcm9wCiAgKi8KICNkZWZp bmUgTUFYX1JPTkFNRV9MRU4JNTEyCiAKLWV4dGVybiBQR0RMTElNUE9SVCBSZXBPcmlnaW5JZCBy ZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luOwotZXh0ZXJuIFBHRExMSU1QT1JUIFhMb2dSZWNQdHIg cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc247Ci1leHRlcm4gUEdETExJTVBPUlQgVGltZXN0 YW1wVHogcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXA7Cit0eXBlZGVmIHN0cnVj dCBSZXBPcmlnaW5YYWN0U3RhdGUKK3sKKwlSZXBPcmlnaW5JZCBvcmlnaW47CisJWExvZ1JlY1B0 cglvcmlnaW5fbHNuOworCVRpbWVzdGFtcFR6IG9yaWdpbl90aW1lc3RhbXA7Cit9IFJlcE9yaWdp blhhY3RTdGF0ZTsKKworZXh0ZXJuIFBHRExMSU1QT1JUIFJlcE9yaWdpblhhY3RTdGF0ZSByZXBs b3JpZ2luX3hhY3Rfc3RhdGU7CiAKIC8qIEdVQ3MgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQg bWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zOwpAQCAtNjcsNiArNzIsNyBAQCBleHRlcm4g dm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVp cmVkX2J5KTsKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCh2b2lkKTsKIGV4 dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoYm9vbCBmbHVz aCk7CiAKKy8qIFBlci10cmFuc2FjdGlvbiByZXBsaWNhdGlvbiBvcmlnaW4gc3RhdGUgbWFuaXB1 bGF0aW9uICovCiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3hhY3RfY2xlYXIoYm9vbCBjbGVhcl9v cmlnaW4pOwogCiAvKiBDaGVja3BvaW50L1N0YXJ0dXAgaW50ZWdyYXRpb24gKi8KZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggMTRkZWMyZDQ5YzEuLjI4ZmY3NTQyODg4IDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtMjU3MCw2ICsyNTcwLDcgQEAgUmVvcmRlckJ1ZmZlclR1cGxl Q2lkS2V5CiBSZW9yZGVyQnVmZmVyVXBkYXRlUHJvZ3Jlc3NUeG5DQgogUmVvcmRlclR1cGxlCiBS ZXBPcmlnaW5JZAorUmVwT3JpZ2luWGFjdFN0YXRlCiBSZXBhcmFtZXRlcml6ZUZvcmVpZ25QYXRo QnlDaGlsZF9mdW5jdGlvbgogUmVwbGFjZVZhcnNGcm9tVGFyZ2V0TGlzdF9jb250ZXh0CiBSZXBs YWNlVmFyc05vTWF0Y2hPcHRpb24KLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --00000000000097c67d064861ead6 Content-Type: application/octet-stream; name="v10-0001-Refactor-replication-origin-state-reset-helpers.patch" Content-Disposition: attachment; filename="v10-0001-Refactor-replication-origin-state-reset-helpers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkeoo44a0 RnJvbSA5NGY0NTU1ZWQ5NmFmM2JmNWIwNDY1NjgxNTA3NzdiZDEzZTcwZmQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogV2VkLCAyNCBEZWMgMjAyNSAwOToxNzoyNyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDEv Ml0gUmVmYWN0b3IgcmVwbGljYXRpb24gb3JpZ2luIHN0YXRlIHJlc2V0IGhlbHBlcnMuCk1JTUUt VmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250 ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpGYWN0b3Igb3V0IGNvbW1vbiBsb2dpYyBmb3Ig Y2xlYXJpbmcgcmVwbG9yaWdpbl9zZXNzaW9uXyogdmFyaWFibGVzCmludG8gYSBkZWRpY2F0ZWQg aGVscGVyIGZ1bmN0aW9uLCByZXBsb3JpZ2luX3hhY3RfY2xlYXIoKS4KClRoaXMgcmVtb3ZlcyBk dXBsaWNhdGVkIGFzc2lnbm1lbnRzIG9mIHRoZXNlIHZhcmlhYmxlcyBhY3Jvc3MgbXVsdGlwbGUK Y2FsbCBzaXRlcywgYW5kIG1ha2VzIHRoZSBpbnRlbmRlZCBzY29wZSBvZiBlYWNoIHJlc2V0IGV4 cGxpY2l0LgoKQXV0aG9yOiBDaGFvIExpIDxsaWNAaGlnaGdvLmNvbT4KUmV2aWV3ZWQtYnk6IE1h c2FoaWtvIFNhd2FkYSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQXNodXRv c2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiDDgWx2 YXJvIEhlcnJlcmEgPGFsdmhlcnJlQGt1cmlsZW11LmRlPgpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tL0NBRW9XeDI9cFl2ZlJ0aFhIVHpTck9zZjVfRmZ5WTR6SnlLNHpWMnY0Vz15alVp ajFjQUBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv b3JpZ2luLmMgICAgfCAyMSArKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgfCAgNCArLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3dvcmtlci5jICAgIHwgMTQgKysrKysrLS0tLS0tLS0KIHNyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL29yaWdpbi5oICAgICAgICAgICAgfCAgMiArKwogNCBmaWxlcyBjaGFuZ2Vk LCAyNSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9vcmlnaW4uYwppbmRleCAxMzgwOGE0Njc0Yi4uYmI2NWU0ZDM2ZDMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwpAQCAtMTM0MSw2ICsxMzQxLDE5 IEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoYm9vbCBmbHVzaCkKIAlyZXR1cm4g cmVtb3RlX2xzbjsKIH0KIAorLyoKKyAqIENsZWFyIHRoZSBwZXItdHJhbnNhY3Rpb24gcmVwbGlj YXRpb24gb3JpZ2luIHN0YXRlLgorICoKKyAqIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gaXMg YWxzbyBjbGVhcmVkIGlmIGNsZWFyX29yaWdpbiBpcyBzZXQuCisgKi8KK3ZvaWQKK3JlcGxvcmln aW5feGFjdF9jbGVhcihib29sIGNsZWFyX29yaWdpbikKK3sKKwlyZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW5fdGltZXN0YW1wID0gMDsKKwlpZiAoY2xlYXJfb3JpZ2luKQorCQlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luID0gSW52YWxpZFJlcE9yaWdpbklkOworfQogCiAKIC8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpAQCAtMTQ2Niw5ICsxNDc5LDcgQEAgcGdfcmVwbGljYXRpb25fb3JpZ2luX3Nlc3Npb25f cmVzZXQoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCgpOwog Ci0JcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IEludmFsaWRSZXBPcmlnaW5JZDsKLQlyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwotCXJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gMDsKKwlyZXBsb3JpZ2luX3hhY3RfY2xlYXIo dHJ1ZSk7CiAKIAlQR19SRVRVUk5fVk9JRCgpOwogfQpAQCAtMTUzNiw4ICsxNTQ3LDggQEAgcGdf cmVwbGljYXRpb25fb3JpZ2luX3hhY3RfcmVzZXQoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlyZXBs b3JpZ2luX2NoZWNrX3ByZXJlcXVpc2l0ZXModHJ1ZSwgZmFsc2UpOwogCi0JcmVwbG9yaWdpbl9z ZXNzaW9uX29yaWdpbl9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKLQlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luX3RpbWVzdGFtcCA9IDA7CisJLyogRG8gbm90IGNsZWFyIHRoZSBzZXNzaW9uIG9y aWdpbiAqLworCXJlcGxvcmlnaW5feGFjdF9jbGVhcihmYWxzZSk7CiAKIAlQR19SRVRVUk5fVk9J RCgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJs ZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5k ZXggNjdlNTc1MjAzODYuLjczYTBkMjgzOGNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTMyMyw5ICszMjMsNyBAQCBQcm9jZXNzU3luY2luZ1Rh Ymxlc0ZvclN5bmMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIAkJICogVGhpcyBpcyBuZWVkZWQg dG8gYWxsb3cgdGhlIG9yaWdpbiB0byBiZSBkcm9wcGVkLgogCQkgKi8KIAkJcmVwbG9yaWdpbl9z ZXNzaW9uX3Jlc2V0KCk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBJbnZhbGlkUmVw T3JpZ2luSWQ7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gSW52YWxpZFhMb2dS ZWNQdHI7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gMDsKKwkJcmVw bG9yaWdpbl94YWN0X2NsZWFyKHRydWUpOwogCiAJCS8qCiAJCSAqIERyb3AgdGhlIHRhYmxlc3lu YydzIG9yaWdpbiB0cmFja2luZyBpZiBleGlzdHMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYwppbmRleCBhZDI4MWU3MDY5Yi4uYzFhY2VhYmJkZjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtNjI3LDcgKzYyNyw3IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCk7CiBzdGF0 aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0 aW9uSWQgeGlkLAogCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZv KTsKIAotc3RhdGljIHZvaWQgcmVwbG9yaWdpbl9yZXNldChpbnQgY29kZSwgRGF0dW0gYXJnKTsK K3N0YXRpYyB2b2lkIG9uX2V4aXRfY2xlYXJfc3RhdGUoaW50IGNvZGUsIERhdHVtIGFyZyk7CiAK IC8qCiAgKiBGb3JtIHRoZSBvcmlnaW4gbmFtZSBmb3IgdGhlIHN1YnNjcmlwdGlvbi4KQEAgLTU1 OTQsNyArNTU5NCw3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQog CQkgKiB0cmFuc2FjdGlvbiBsb3NzIGFzIHRoYXQgdHJhbnNhY3Rpb24gd29uJ3QgYmUgc2VudCBh Z2FpbiBieSB0aGUKIAkJICogc2VydmVyLgogCQkgKi8KLQkJcmVwbG9yaWdpbl9yZXNldCgwLCAo RGF0dW0pIDApOworCQlyZXBsb3JpZ2luX3hhY3RfY2xlYXIodHJ1ZSk7CiAKIAkJaWYgKE15U3Vi c2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCiAJCQlEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCgp OwpAQCAtNTg2NSwxOCArNTg2NSwxNiBAQCBJbml0aWFsaXplTG9nUmVwV29ya2VyKHZvaWQpCiAJ ICogcmVwbGljYXRpb24gd29ya2VycyB0aGF0IHNldCB1cCBvcmlnaW5zIGFuZCBhcHBseSByZW1v dGUgdHJhbnNhY3Rpb25zCiAJICogYXJlIHByb3RlY3RlZC4KIAkgKi8KLQliZWZvcmVfc2htZW1f ZXhpdChyZXBsb3JpZ2luX3Jlc2V0LCAoRGF0dW0pIDApOworCWJlZm9yZV9zaG1lbV9leGl0KG9u X2V4aXRfY2xlYXJfc3RhdGUsIChEYXR1bSkgMCk7CiB9CiAKIC8qCi0gKiBSZXNldCB0aGUgb3Jp Z2luIHN0YXRlLgorICogQ2FsbGJhY2sgb24gZXhpdCB0byByZXNldCB0aGUgb3JpZ2luIHN0YXRl LgogICovCiBzdGF0aWMgdm9pZAotcmVwbG9yaWdpbl9yZXNldChpbnQgY29kZSwgRGF0dW0gYXJn KQorb25fZXhpdF9jbGVhcl9zdGF0ZShpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCXJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW4gPSBJbnZhbGlkUmVwT3JpZ2luSWQ7Ci0JcmVwbG9yaWdpbl9zZXNz aW9uX29yaWdpbl9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKLQlyZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luX3RpbWVzdGFtcCA9IDA7CisJcmVwbG9yaWdpbl94YWN0X2NsZWFyKHRydWUpOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaAppbmRleCAxZGE3NzM2Mzk1NS4uMWVhYWJhY2Rl MDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCkBAIC02Nyw2ICs2Nyw4IEBAIGV4dGVybiB2 b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBpbnQgYWNxdWly ZWRfYnkpOwogZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KHZvaWQpOwogZXh0 ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhib29sIGZsdXNo KTsKIAorZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl94YWN0X2NsZWFyKGJvb2wgY2xlYXJfb3JpZ2lu KTsKKwogLyogQ2hlY2twb2ludC9TdGFydHVwIGludGVncmF0aW9uICovCiBleHRlcm4gdm9pZCBD aGVja1BvaW50UmVwbGljYXRpb25PcmlnaW4odm9pZCk7CiBleHRlcm4gdm9pZCBTdGFydHVwUmVw bGljYXRpb25PcmlnaW4odm9pZCk7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --00000000000097c67d064861ead6--