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 1wbIXw-002RE8-2i for pgsql-hackers@arkaria.postgresql.org; Sun, 21 Jun 2026 13:49:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wbIXv-003LgY-2G for pgsql-hackers@arkaria.postgresql.org; Sun, 21 Jun 2026 13:49:11 +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 1wbIXv-003LgQ-09 for pgsql-hackers@lists.postgresql.org; Sun, 21 Jun 2026 13:49:11 +0000 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wbIXs-00000001Rfr-1StH for pgsql-hackers@lists.postgresql.org; Sun, 21 Jun 2026 13:49:10 +0000 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-8456005a6c4so803132b3a.2 for ; Sun, 21 Jun 2026 06:49:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782049747; cv=none; d=google.com; s=arc-20240605; b=fK6h+EhKNlCxgUFuP9gCLfOpuixBEUhnd4q3RF8UPQP2yfVSp3ulOisC0/ynbFL64b 3IWdM6edPz58kMeSBXe/TKz/BDQyFMfIabNTGQSqLvMLGhij7+4OIsnS0O4JDHtqB8Pt hRgl/0aoP35ROw2EOf9n3sCUYLlNfFEbuoP7VsfxBtGSyPryZLpFtwDkvsRg1D7gYmrd kO9SDqZb+G4JYMLkP3dkoYGvraLHxsm/yOHH1awr7GJ252LCwdt16+5EKsnSMasvTpqh VnphzBMx7lKcL3Sj2u/qf4gmbldiL9JrHFOi2WLj30YjFpcqjaTTFmStF/urkA9RhRCR uHUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=CVFGSoRfAp4vODGeGjudBUC5Zzuow0ELYOWlTzb+mfE=; fh=xnx0Sw9Niq6UsGL3WT6EkQHGQ/92+kEZPtBVXjd404w=; b=Qt4A4tTSVkFOS/61/qXBJG5uoc1hE6MQi8iyx3CAuI6EJY7HRw3DYmg3Q+WwzF5enS NBr8DWdTS326R7QTboqIBY7aUW/XyaL8a5eE9/UC4PvROXzGnx1GaLlGm6dVXTa2mVlk jaenV2rDH5F1W7NU/xBezyGyku8kkZ6uQoX/Q/igN6X/I9rrFyIySfgNBzjaQ+JYdph5 OOZAzVWXGSGioVB8JZt60B7ZdDv8V46Gp+ikxcTKomCmFxLCOjAa1wP79FjKz0IzGyIi SKnVobBP8eb1ArkKSGdOL1GniMMRSJpknkg/SjfkqaCAgPrhT7oli1aisv0ty/YfMddZ /PPw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782049747; x=1782654547; 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=CVFGSoRfAp4vODGeGjudBUC5Zzuow0ELYOWlTzb+mfE=; b=TgytH9pdAFW0SaNA83dxOoZH6r3Z+IjkXnDrazCzhqqFANCLUA/m0CXITICb8vIgmt Rf4EjsKYIGCIyH2mtiXO63PQlYdS8oJ0qJPT4fcXGul3TLgBYa+ZulVusVhWRIE4Kr/M 5ZWWSUcZD8y6eH7S+Rn+zdV4aLsy6o4ZQw7E81w+xlp0ZWRuLclquQ63x2v/BLcYWIPK /YO6jmky+8N4SRkVPfT8v0/OVaPEYHpqbr2rgvgGquCvfeXpuipofJOcEY5mgbJHGNrZ /U3pppIWYU48PMjjAeGAeWqtAmwuyOu7E7R0gjImdGfOvqErwBLud7VR2jE+dRy5MjR6 L3pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782049747; x=1782654547; 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=CVFGSoRfAp4vODGeGjudBUC5Zzuow0ELYOWlTzb+mfE=; b=Xu15Z23Zrm5OYBqJP+MhUoFgzXYyvgCC65eTorrvtSH4dMDjY08lDOtO/BSbKslJod c45ck35JliTQ/0JOEkAfMAuANaQPaWMVDGljahLtGcssKSmCZbmHXo1s+TqokPWTazjg PS7ZGK7bQvIaTKDpkhobuDnnQeF0iW4IYOvC3B42BrxNStA9gRFg8wCTdU+Nqn0thce0 Y4mQqegoyiG4H9KGQyrYjDntQNarZ+c6WkHfmJl4wMyjNh/lISZfSFXZcKXRJP3X5/OX Wir/9jUGZ+yLrRT1cbjmLHPe4v5iSYoJtaDMbZis38U9h7iNi6IsvhFWJY+WnY/qZBTv QW/Q== X-Forwarded-Encrypted: i=1; AFNElJ+x1qtGfk6J2g+ekd4May43mi5sKR59rT7HU0VSbE87614Yf6Ue18kAeDCwqiToHiCz0HkiVp0xyoAH6Tmi@lists.postgresql.org X-Gm-Message-State: AOJu0Yx1YPPjPJQ/Xw909u0/GNu4W3EYFO8T6mRlOsHKg7aiBuiq/U/I J7i7eO7Y5ZybYDBts786Ypsu0Edg5l/jKYp8V6phmlr+I0k5Sjn5FAHdjDY6WaltrCBtdDBwMd0 w3L2dauQl7E9I/VL6NtIGy4ag+xsg2r4= X-Gm-Gg: AfdE7ckBkkUWrTyxvVs4cVyL4LncHxNVJJCfK8p5tuIjG8i1GX02E0bOPLzs+pxjab3 azSJZTruTNaluXuC4wfg4RebUZEMMUPqwur1df+9kcDfhiek8q0mTV/CGTEZD1B1mGtGLMSgX2b bXnnrbN2SioyOSclOiJ8cEArur98xukWO0yUY5VaZQqXssPSU0J1cfQXp0QKh7on7T+IkQY19Y2 VWDHjxSeefQ3xMpf4htSpW2sClw4m1OgO/Ug55uAt/LAr4pgdSXQXVBRg9/YTa1dIVYEdJbH0Fe DUJ6xuv/Qe2aPEVcU6iHb8aCkDAxr8VFsiu21Mf3yrmGHOVhHxLBPlnpA1jvMXiHsL5DJm2y3si hP5HFILDBEmS2R7WFbJ+BU8MSopW2WQ== X-Received: by 2002:a05:6a00:3405:b0:841:edb9:4ea2 with SMTP id d2e1a72fcca58-8455089f74dmr11818244b3a.32.1782049746790; Sun, 21 Jun 2026 06:49:06 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Amit Kapila Date: Sun, 21 Jun 2026 19:18:54 +0530 X-Gm-Features: AVVi8CePRBVZyWQPb5Cg7vsJ2kcP4AMltlK0sxJ71VMHDJsaJNoyg-fABjwOrqs Message-ID: Subject: Re: Proposal: Conflict log history table for Logical Replication To: shveta malik Cc: Dilip Kumar , Nisha Moond , vignesh C , Peter Smith , Masahiko Sawada , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000214c720654c3ca39" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000214c720654c3ca39 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jun 18, 2026 at 9:33=E2=80=AFAM shveta malik wrote: > > On Tue, Jun 16, 2026 at 6:54=E2=80=AFPM Dilip Kumar wrote: > > > > IMHO we should just log WARNING and continue the apply worker on > > conflict insertion failure, lets see what other thinks on this. > > > > I have the same opinion. Allowing CLT to block the apply worker would > be undesirable; CLT is a history/logs collection feature and should > not interrupt core logical replication work. > I think the insert can fail in rare cases like disk getting full while writing WAL or some internal memory ERROR and the ERROR could be persistent which means the LOG will be filled with the same WARNING if there are many conflicts. Also, users may not like missing out on conflict information. So, we can ERROR out and let users fix the situation. Additionally, the nested try-catch to downgrade ERROR to WARNING also looks ugly and a source of future bugs and maintenance burden. The attached patch tries to fix this by ERRORing out on insertion failure and attaching the required conflict info as a context of ERROR. The patch also improved the ReportApplyConflict() non-ERROR paths by displaying the conflict information in server LOGs before inserting the same into CLT so that if insertion fails, the complete conflict info can be present in server LOGs. See v52-1-amit.Improve-error-handling-for-conflict-log-table-ins. Additionally, there is another problem with 0003 where when a parallel apply worker hits an ERROR-level conflict it logs the conflict to the conflict log table in a new transaction in its error path, after aborting the failed apply transaction. But the leader detects worker failure in pa_wait_for_xact_finish() by waiting on the worker's transaction lock, and AbortOutOfAnyTransaction() releases that lock: the leader unblocks, sees a non-finished state, raises "lost connection to the logical replication parallel apply worker", and tears the worker down -- which can SIGTERM it mid-insert and lose the conflict log row, besides being a misleading message. The attached top-up patch v52-2-amit.fix_parallel_apply_logging fixes that by introducing PARALLEL_TRANS_ERROR state. I think if you are okay with this patch, you can merge it into your 0003 but v52-1-amit.Improve-error-handling-for-conflict-log-table-ins can be reviewed before being merged into 0003. I have taken help from AI to work on these top-up (atop v52 0003) bug-fix patches and done self initial review and test of these but more review and testing is required for this work. --=20 With Regards, Amit Kapila. --000000000000214c720654c3ca39 Content-Type: text/plain; charset="US-ASCII"; name="v52-1-amit.Improve-error-handling-for-conflict-log-table-ins.txt" Content-Disposition: attachment; filename="v52-1-amit.Improve-error-handling-for-conflict-log-table-ins.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnu4hql0 RnJvbSBhMTQ4ZDM4OWQzZWMzYjg3YTQ1ZGU0MjY3YWVlYTZlNTU5YTBjNTU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IEthcGlsYSA8YWthcGlsYUBwb3N0Z3Jlc3FsLm9yZz4K RGF0ZTogRnJpLCAxOSBKdW4gMjAyNiAxMTowOTowOCArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjNd IEltcHJvdmUgZXJyb3IgaGFuZGxpbmcgZm9yIGNvbmZsaWN0IGxvZyB0YWJsZSBpbnNlcnRpb25z LgoKV2hlbiBhIHN1YnNjcmlwdGlvbiBsb2dzIGNvbmZsaWN0cyB0byBpdHMgY29uZmxpY3QgbG9n IHRhYmxlIChDTFQpLCB0aGUKYXBwbHkgd29ya2VyIHByZXBhcmVzIHRoZSBjb25mbGljdCB0dXBs ZSBhbmQgaW5zZXJ0cyBpdCBlaXRoZXIgaW5saW5lCihmb3Igc3ViLUVSUk9SIGNvbmZsaWN0cywg d2hlcmUgYXBwbHkgY29udGludWVzKSBvciwgZm9yIEVSUk9SLWxldmVsCmNvbmZsaWN0cywgZGVm ZXJzIHRoZSBpbnNlcnRpb24gdG8gYSBmcmVzaCB0cmFuc2FjdGlvbiBhZnRlciB0aGUgYXBwbHkK dHJhbnNhY3Rpb24gYWJvcnRzIChQcm9jZXNzUGVuZGluZ0NvbmZsaWN0TG9nVHVwbGUpLCBzbyB0 aGUgbG9nIHJvdyBpcwpub3Qgcm9sbGVkIGJhY2sgd2l0aCB0aGUgZmFpbGVkIGNoYW5nZS4KClRo ZSBwcmV2aW91cyBlcnJvciBoYW5kbGluZyBhcm91bmQgdGhhdCBpbnNlcnRpb24gaGFkIGEgZmV3 IHByb2JsZW1zOgoKKiBQcm9jZXNzUGVuZGluZ0NvbmZsaWN0TG9nVHVwbGUoKSB3cmFwcGVkIHRo ZSBpbnNlcnQgaW4gaXRzIG93bgpQR19UUlkvUEdfQ0FUQ0ggdGhhdCwgb24gZmFpbHVyZSwgY2Fs bGVkIEZsdXNoRXJyb3JTdGF0ZSgpIGFuZApkb3duZ3JhZGVkIHRoZSBmYWlsdXJlIHRvIGEgV0FS TklORy4gIFdoZW4gY2FsbGVkIGZyb20gc3RhcnRfYXBwbHkoKSdzClBHX0NBVENIICh3aGljaCB0 aGVuIGRvZXMgUEdfUkVfVEhST1coKSksIHRoYXQgRmx1c2hFcnJvclN0YXRlKCkgcmVzZXQKdGhl IGVycm9yIHN0YWNrIGFuZCBkaXNjYXJkZWQgdGhlIHZlcnkgZXJyb3IgYmVpbmcgcmUtdGhyb3du LCBzbyBhCmZhaWx1cmUgb2YgdGhlIGRlZmVycmVkIGluc2VydCBjb3VsZCBjb3JydXB0IGVycm9y IHJlcG9ydGluZy4gIEl0IGFsc28Kc2lsZW50bHkgc3dhbGxvd2VkIGdlbnVpbmUgaW5zZXJ0aW9u IGZhaWx1cmVzLgoKKiBJZiB0aGUgaW5saW5lIGluc2VydCAoc3ViLUVSUk9SIHBhdGgpIGZhaWxl ZCwgdGhlIGNvbmZsaWN0IHdhcyBub3QKcmVjb3JkZWQgYW55d2hlcmU6IHRoZSBhcHBseSB0cmFu c2FjdGlvbiBhYm9ydGVkIGJlZm9yZSB0aGUgY29uZmxpY3QKd2FzIHdyaXR0ZW4gdG8gdGhlIHNl cnZlciBsb2cuCgoqIEluIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIGEgZmFpbGVkIGRlZmVy cmVkIGluc2VydCBsaWtld2lzZSBsb3N0CnRoZSBvcmlnaW5hbCBlcnJvci4KClJld29yayB0aGlz IHNvIHRoYXQgYSBmYWlsdXJlIHRvIHdyaXRlIHRoZSBDTFQgaXMgdHJlYXRlZCBhcyBhIG5vcm1h bAphcHBseSBlcnJvciwgYW5kIHNvIHRoYXQgdGhlIGNvbmZsaWN0IGlzIGFsd2F5cyBpZGVudGlm aWFibGU6CgoqIERyb3AgdGhlIGludGVybmFsIFBHX1RSWS9QR19DQVRDSCBmcm9tIFByb2Nlc3NQ ZW5kaW5nQ29uZmxpY3RMb2dUdXBsZSgpLgpBIGZhaWxlZCBpbnNlcnQgbm93IHJhaXNlcyBhbiBF UlJPUiBsaWtlIGFueSBvdGhlciBhcHBseSBmYWlsdXJlOyBzdWNoCmZhaWx1cmVzIChlLmcuIHRo ZSBDTFQgd2FzIGRyb3BwZWQsIG9yIG91dC1vZi1zcGFjZSkgYXJlIGV4cGVjdGVkIHRvIGJlCnJh cmUgYW5kIHBlcnNpc3RlbnQuCgoqIEFubm90YXRlIGluc2VydGlvbiBmYWlsdXJlcyB3aXRoIHRo ZSBjb25mbGljdCBiZWluZyBsb2dnZWQuCnByZXBhcmVfY29uZmxpY3RfbG9nX3R1cGxlKCkgc3Rh c2hlcyBhIHNob3J0IGRlc2NyaXB0aW9uICgid2hpbGUgbG9nZ2luZwpjb25mbGljdCA8dHlwZT4g ZGV0ZWN0ZWQgb24gcmVsYXRpb24gPHJlbD4iKSBpbiBhIG5ldwpMb2dpY2FsUmVwV29ya2VyLmNv bmZsaWN0X2xvZ19lcnJjb250ZXh0IGZpZWxkIChhbGxvY2F0ZWQsIGxpa2UKY29uZmxpY3RfbG9n X3R1cGxlLCBpbiBBcHBseUNvbnRleHQpLCBhbmQgSW5zZXJ0Q29uZmxpY3RMb2dUdXBsZSgpCmlu c3RhbGxzIGFuIGVycm9yIGNvbnRleHQgY2FsbGJhY2sgYXJvdW5kIHRoZSBoZWFwX2luc2VydCgp LiAgQW55IGVycm9yCnJhaXNlZCBkdXJpbmcgdGhlIGluc2VydCB0aGVyZWZvcmUgY2FycmllcyBl bm91Z2ggY29udGV4dCB0byBpZGVudGlmeQp0aGUgY29uZmxpY3QsIGV2ZW4gb24gdGhlIGRlZmVy cmVkIHBhdGggd2hlcmUgdGhlIG9yaWdpbmFsIGNvbmZsaWN0CmVycm9yIGlzIG5vdCBzZXBhcmF0 ZWx5IHJlcG9ydGVkLgoKKiBSZXBvcnQgdGhlIGNvbmZsaWN0IHRvIHRoZSBzZXJ2ZXIgbG9nIGJl Zm9yZSBpbnNlcnRpbmcgaXQgaW50byB0aGUKdGFibGUuICBSZXBvcnRBcHBseUNvbmZsaWN0KCkg bm93IHByZXBhcmVzIHRoZSB0dXBsZSwgZW1pdHMgdGhlCnNlcnZlci1sb2cgbWVzc2FnZSAoZnVs bCBkZXRhaWxzIHdoZW4gdGhlIGRlc3RpbmF0aW9uIGluY2x1ZGVzIHRoZSBsb2csCm90aGVyd2lz ZSBhIHNob3J0IG1lc3NhZ2UgcG9pbnRpbmcgYXQgdGhlIHRhYmxlKSwgYW5kIG9ubHkgdGhlbiBp bnNlcnRzLgpUaGlzIGd1YXJhbnRlZXMgdGhlIGNvbmZsaWN0IGlzIHJlY29yZGVkIGV2ZW4gaWYg dGhlIHRhYmxlIGluc2VydCBmYWlscy4KVGhlIGlubGluZSAoc3ViLUVSUk9SKSBpbnNlcnQgaXMg d3JhcHBlZCBzbyB0aGF0LCBvbiBmYWlsdXJlLCB0aGUKcHJlcGFyZWQgdHVwbGUgaXMgZGlzY2Fy ZGVkIGJlZm9yZSByZS10aHJvd2luZywgZW5zdXJpbmcgdGhlIGRlZmVycmVkCnBhdGggZG9lcyBu b3QgcmV0cnkgdGhlIHNhbWUgZmFpbGluZyBpbnNlcnQuCgoqIFJld29yayB0aGUgd29ya2VyIGVy cm9yIGhhbmRsZXJzIHRvIGRvIHRoZSBkZWZlcnJlZCBpbnNlcnRpb24gY2xlYW5seS4Kc3RhcnRf YXBwbHkoKSBhbmQgUGFyYWxsZWxBcHBseVdvcmtlck1haW4oKSBub3cgY29weSB0aGUgZXJyb3Ig aW50byBhCmxvbmctbGl2ZWQgY29udGV4dCwgRmx1c2hFcnJvclN0YXRlKCksIHJlc2V0IGVycm9y X2NvbnRleHRfc3RhY2sgKHRoZQpjYWxsYmFja3MgYWN0aXZlIGF0IHRocm93IHRpbWUgYmVsb25n IHRvIHVud291bmQgZnJhbWVzLCBhbmQgdGhlIGluc2VydAppbnN0YWxscyBpdHMgb3duKSwgYWJv cnQsIHJ1biBQcm9jZXNzUGVuZGluZ0NvbmZsaWN0TG9nVHVwbGUoKSwgYW5kCmZpbmFsbHkgUmVU aHJvd0Vycm9yKCkgdGhlIG9yaWdpbmFsIGVycm9yLiAgT24gc3VjY2VzcyB0aGUgb3JpZ2luYWwK ZXJyb3IgaXMgcmUtdGhyb3duOyBvbiBhIGZhaWxlZCBpbnNlcnQgdGhlIGluc2VydCBlcnJvciAo Y2FycnlpbmcgdGhlCmNvbmZsaWN0IGNvbnRleHQpIHByb3BhZ2F0ZXMgaW5zdGVhZC4gIEZvciB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCnRoaXMgbWVhbnMgdGhlIGxlYWRlciBhbHdheXMgcmVj ZWl2ZXMgYSByZWFsIEVycm9yUmVzcG9uc2UgcmF0aGVyIHRoYW4KYSAibG9zdCBjb25uZWN0aW9u IHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIiIG1lc3NhZ2UuCgoqIEluIERpc2FibGVTdWJz Y3JpcHRpb25BbmRFeGl0KCksIHBlcmZvcm0gdGhlIGRlZmVycmVkIGluc2VydGlvbiBhZnRlcgp0 aGUgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkIGFuZCBjb21taXR0ZWQgKGFuZCBiZWZv cmUgdGhlCmRlYWQtdHVwbGUgcmV0ZW50aW9uIGNoZWNrKSwgc28gYSBmYWlsdXJlIHRvIGxvZyB0 aGUgY29uZmxpY3QgY2Fubm90CnByZXZlbnQgdGhlIHN1YnNjcmlwdGlvbiBmcm9tIGJlaW5nIGRp c2FibGVkIG9yIGxlYXZlIHRoZSB3b3JrZXIKcmVzdGFydGluZyBhbmQgZmFpbGluZyBmb3JldmVy LgotLS0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8ICAz OCArKy0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMgICAgfCAy MTQgKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jICAgICAgfCAgNTEgKysrKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oICAgICB8ICAgNyArCiA0IGZpbGVzIGNoYW5nZWQsIDIxMSBpbnNlcnRpb25zKCsp LCA5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IGQyNGM1MmQ0M2U2Li40OGNiNTU1ODM2 NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFs bGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBh cmFsbGVsd29ya2VyLmMKQEAgLTk5MywzMiArOTkzLDQ0IEBAIFBhcmFsbGVsQXBwbHlXb3JrZXJN YWluKERhdHVtIG1haW5fYXJnKQogCVBHX0NBVENIKCk7CiAJewogCQlNZW1vcnlDb250ZXh0IG9s ZGNvbnRleHQ7Ci0JCUVycm9yRGF0YSAqZWRhdGE7CisJCUVycm9yRGF0YSAgKmVkYXRhOwogCiAJ CS8qCi0JCSAqIENvcHkgdGhlIEVycm9yRGF0YSBiZWZvcmUgZG9pbmcgYW55IGZ1cnRoZXIgd29y ay4gVGhlIGVycm9yIG1heQotCQkgKiBoYXZlIGJlZW4gcmFpc2VkIHdoaWxlIHJ1bm5pbmcgdW5k ZXIgRXJyb3JDb250ZXh0LCBzbyBzd2l0Y2ggdG8KLQkJICogYSBzYWZlIGNvbnRleHQgKFRvcE1l bW9yeUNvbnRleHQpIHRvIGF2b2lkIGFzc2VydGlvbnMgYW5kIGVuc3VyZQotCQkgKiB0aGUgZXJy b3IgZGF0YSBzdXJ2aXZlcyBzdWJzZXF1ZW50IGNsZWFudXAuCisJCSAqIFJlc2V0IHRoZSBvcmln aW4gc3RhdGUgdG8gcHJldmVudCB0aGUgYWR2YW5jZW1lbnQgb2Ygb3JpZ2luCisJCSAqIHByb2dy ZXNzIGlmIHdlIGZhaWwgdG8gYXBwbHkuIE90aGVyd2lzZSwgdGhpcyB3aWxsIHJlc3VsdCBpbgor CQkgKiB0cmFuc2FjdGlvbiBsb3NzIGFzIHRoYXQgdHJhbnNhY3Rpb24gd29uJ3QgYmUgc2VudCBh Z2FpbiBieSB0aGUKKwkJICogc2VydmVyLgorCQkgKi8KKwkJcmVwbG9yaWdpbl94YWN0X2NsZWFy KHRydWUpOworCisJCS8qCisJCSAqIENvcHkgdGhlIGVycm9yIGFuZCByZWNvdmVyIHRvIGFuIGlk bGUgc3RhdGUgc28gd2UgY2FuIGluc2VydCB0aGUKKwkJICogZGVmZXJyZWQgY29uZmxpY3QgbG9n IHR1cGxlIChpZiBhbnkpIGJlZm9yZSByZS10aHJvd2luZy4gIENvcHkgdGhlCisJCSAqIGVycm9y IGludG8gYSBsb25nZXItbGl2ZWQgY29udGV4dCBmaXJzdCwgYXMgaXQgbWF5IGhhdmUgYmVlbiBy YWlzZWQKKwkJICogdW5kZXIgRXJyb3JDb250ZXh0LiAgQWxzbyByZXNldCB0aGUgZXJyb3IgY29u dGV4dCBzdGFjazogdGhlCisJCSAqIGNhbGxiYWNrcyBpbiBlZmZlY3Qgd2hlbiB0aGUgZXJyb3Ig d2FzIHRocm93biBiZWxvbmcgdG8gdW53b3VuZCBzdGFjaworCQkgKiBmcmFtZXMsIGFuZCB0aGUg ZGVmZXJyZWQgaW5zZXJ0IGluc3RhbGxzIGl0cyBvd24uCiAJCSAqLwogCQlvbGRjb250ZXh0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcE1lbW9yeUNvbnRleHQpOwogCQllZGF0YSA9IENvcHlF cnJvckRhdGEoKTsKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCUZs dXNoRXJyb3JTdGF0ZSgpOworCQllcnJvcl9jb250ZXh0X3N0YWNrID0gTlVMTDsKKwkJQWJvcnRP dXRPZkFueVRyYW5zYWN0aW9uKCk7CiAKIAkJLyoKLQkJICogUmVzZXQgdGhlIG9yaWdpbiBzdGF0 ZSB0byBwcmV2ZW50IHRoZSBhZHZhbmNlbWVudCBvZiBvcmlnaW4KLQkJICogcHJvZ3Jlc3MgaWYg d2UgZmFpbCB0byBhcHBseS4gT3RoZXJ3aXNlLCB0aGlzIHdpbGwgcmVzdWx0IGluCi0JCSAqIHRy YW5zYWN0aW9uIGxvc3MgYXMgdGhhdCB0cmFuc2FjdGlvbiB3b24ndCBiZSBzZW50IGFnYWluIGJ5 IHRoZQotCQkgKiBzZXJ2ZXIuCisJCSAqIEluc2VydCB0aGUgZGVmZXJyZWQgY29uZmxpY3QgbG9n IHR1cGxlIGJlZm9yZSByZS10aHJvd2luZy4KKwkJICogUmUtdGhyb3dpbmcgaXMgd2hhdCByZXBv cnRzIHRoZSBlcnJvciB0byB0aGUgbGVhZGVyICh2aWEgdGhlIGVycm9yCisJCSAqIHF1ZXVlIHNl dCB1cCBhYm92ZSksIHNvIHRoZSBpbnNlcnRpb24gbXVzdCBoYXBwZW4gZmlyc3Q6IG90aGVyd2lz ZQorCQkgKiB0aGUgbGVhZGVyIGNvdWxkIHN0YXJ0IHRlYXJpbmcgZG93biB0aGlzIHdvcmtlciB3 aGlsZSBpdCBpcyBzdGlsbAorCQkgKiB3cml0aW5nIHRoZSBjb25mbGljdCBsb2cgdHVwbGUuICBJ ZiB0aGUgaW5zZXJ0aW9uIGl0c2VsZiBmYWlscywgdGhhdAorCQkgKiBlcnJvciAoYW5ub3RhdGVk IHdpdGggdGhlIGNvbmZsaWN0IGNvbnRleHQsIHNlZSBJbnNlcnRDb25mbGljdExvZ1R1cGxlKQor CQkgKiBwcm9wYWdhdGVzIHRvIHRoZSBsZWFkZXIgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwuCiAJ CSAqLwotCQlyZXBsb3JpZ2luX3hhY3RfY2xlYXIodHJ1ZSk7Ci0KLQkJQWJvcnRPdXRPZkFueVRy YW5zYWN0aW9uKCk7CiAJCVByb2Nlc3NQZW5kaW5nQ29uZmxpY3RMb2dUdXBsZSgpOwogCi0JCS8q IFJlLXRocm93IHRoZSBvcmlnaW5hbCBlcnJvci4gKi8KKwkJLyogUmUtdGhyb3cgdGhlIG9yaWdp bmFsIGVycm9yLCB3aGljaCByZXBvcnRzIGl0IHRvIHRoZSBsZWFkZXIuICovCiAJCVJlVGhyb3dF cnJvcihlZGF0YSk7CiAJfQogCVBHX0VORF9UUlkoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvY29uZmxpY3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvY29uZmxpY3QuYwppbmRleCA2YmYzZDZkNWE0NC4uYzJjMTVmMDU1ZTYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvY29uZmxpY3QuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2NvbmZsaWN0LmMKQEAgLTMzNSwxNyArMzM1 LDE2IEBAIFJlcG9ydEFwcGx5Q29uZmxpY3QoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8g KnJlbGluZm8sIGludCBlbGV2ZWwsCiAJbG9nX2Rlc3RfdGFibGUgPSBDT05GTElDVFNfTE9HR0VE X1RPX1RBQkxFKGRlc3QpOwogCWxvZ19kZXN0X2xvZ2ZpbGUgPSBDT05GTElDVFNfTE9HR0VEX1RP X0xPRyhkZXN0KTsKIAotCS8qIEluc2VydCB0byB0YWJsZSBpZiByZXF1ZXN0ZWQuICovCisJLyoK KwkgKiBQcmVwYXJlIHRoZSBjb25mbGljdCBsb2cgdHVwbGUgZmlyc3Qgd2hlbiB0aGUgZGVzdGlu YXRpb24gaW5jbHVkZXMgdGhlCisJICogdGFibGUuICBUaGlzIG11c3QgaGFwcGVuIGJlZm9yZSB0 aGUgZXJlcG9ydCgpIGJlbG93LCBiZWNhdXNlIGZvciBhbgorCSAqIEVSUk9SLWxldmVsIGNvbmZs aWN0IHRoYXQgZXJlcG9ydCgpIHJhaXNlcyB0aGUgZXJyb3IgYW5kIGRlZmVycyB0aGUKKwkgKiBh Y3R1YWwgaW5zZXJ0aW9uIHRvIFByb2Nlc3NQZW5kaW5nQ29uZmxpY3RMb2dUdXBsZSgpLCB3aGlj aCByZWxpZXMgb24gdGhlCisJICogdHVwbGUgaGF2aW5nIGJlZW4gcHJlcGFyZWQuCisJICovCiAJ aWYgKGxvZ19kZXN0X3RhYmxlKQogCXsKIAkJQXNzZXJ0KGNvbmZsaWN0bG9ncmVsICE9IE5VTEwp OwotCi0JCS8qCi0JCSAqIFByZXBhcmUgdGhlIGNvbmZsaWN0IGxvZyB0dXBsZS4gSWYgdGhlIGVy cm9yIGxldmVsIGlzIGJlbG93IEVSUk9SLAotCQkgKiBpbnNlcnQgaXQgaW1tZWRpYXRlbHkuIE90 aGVyd2lzZSwgZGVmZXIgdGhlIGluc2VydGlvbiB0byBhIG5ldwotCQkgKiB0cmFuc2FjdGlvbiBh ZnRlciB0aGUgY3VycmVudCBvbmUgYWJvcnRzLCBlbnN1cmluZyB0aGUgaW5zZXJ0aW9uIG9mCi0J CSAqIHRoZSBsb2cgdHVwbGUgaXMgbm90IHJvbGxlZCBiYWNrLgotCQkgKi8KIAkJcHJlcGFyZV9j b25mbGljdF9sb2dfdHVwbGUoZXN0YXRlLAogCQkJCQkJCQkgICByZWxpbmZvLT5yaV9SZWxhdGlv bkRlc2MsCiAJCQkJCQkJCSAgIGNvbmZsaWN0bG9ncmVsLApAQCAtMzUzLDI5ICszNTIsMTYgQEAg UmVwb3J0QXBwbHlDb25mbGljdChFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5m bywgaW50IGVsZXZlbCwKIAkJCQkJCQkJICAgc2VhcmNoc2xvdCwKIAkJCQkJCQkJICAgY29uZmxp Y3R0dXBsZXMsCiAJCQkJCQkJCSAgIHJlbW90ZXNsb3QpOwotCQlpZiAoZWxldmVsIDwgRVJST1Ip Ci0JCQlJbnNlcnRDb25mbGljdExvZ1R1cGxlKGNvbmZsaWN0bG9ncmVsKTsKLQotCQlpZiAoIWxv Z19kZXN0X2xvZ2ZpbGUpCi0JCXsKLQkJCS8qCi0JCQkgKiBOb3QgbG9nZ2luZyBjb25mbGljdCBk ZXRhaWxzIHRvIHRoZSBzZXJ2ZXIgbG9nOyBSZXBvcnQgdGhlIGVycm9yCi0JCQkgKiBtc2cgYnV0 IG9taXQgcmF3IHR1cGxlIGRhdGEgZnJvbSBzZXJ2ZXIgbG9ncyBzaW5jZSBpdCdzIGFscmVhZHkK LQkJCSAqIGNhcHR1cmVkIGluIHRoZSBjb25mbGljdCBsb2cgdGFibGUuCi0JCQkgKi8KLQkJCWVy ZXBvcnQoZWxldmVsLAotCQkJCQllcnJjb2RlX2FwcGx5X2NvbmZsaWN0KHR5cGUpLAotCQkJCQll cnJtc2coImNvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwiJXNcIjogY29uZmxpY3Q9JXMi LAotCQkJCQkJUmVsYXRpb25HZXRRdWFsaWZpZWRSZWxhdGlvbk5hbWUobG9jYWxyZWwpLAotCQkJ CQkJQ29uZmxpY3RUeXBlTmFtZXNbdHlwZV0pLAotCQkJCQllcnJkZXRhaWwoIkNvbmZsaWN0IGRl dGFpbHMgYXJlIGxvZ2dlZCB0byB0aGUgY29uZmxpY3QgbG9nIHRhYmxlOiAlcyIsCi0JCQkJCQkJ ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShjb25mbGljdGxvZ3JlbCkpKTsKLQkJfQotCi0JCXRh YmxlX2Nsb3NlKGNvbmZsaWN0bG9ncmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAl9CiAKLQkvKiBM b2cgaW50byB0aGUgc2VydmVyIGxvZyBpZiByZXF1ZXN0ZWQuICovCisJLyoKKwkgKiBSZXBvcnQg dGhlIGNvbmZsaWN0IHRvIHRoZSBzZXJ2ZXIgbG9nIGJlZm9yZSBpbnNlcnRpbmcgaXQgaW50byB0 aGUKKwkgKiBjb25mbGljdCBsb2cgdGFibGUuICBFbWl0dGluZyBpdCBmaXJzdCBndWFyYW50ZWVz IHRoZSBjb25mbGljdCBpcworCSAqIHJlY29yZGVkIGV2ZW4gaWYgdGhlIHRhYmxlIGluc2VydCBi ZWxvdyBmYWlsczsgaXQgaXMgYWxzbyB3aGF0IHJhaXNlcyB0aGUKKwkgKiBlcnJvciBmb3IgRVJS T1ItbGV2ZWwgY29uZmxpY3RzLiAgV2hlbiB0aGUgc2VydmVyIGxvZyBpcyBvbmUgb2YgdGhlCisJ ICogZGVzdGluYXRpb25zIHdlIGVtaXQgdGhlIGZ1bGwgZGV0YWlscywgb3RoZXJ3aXNlICh0YWJs ZS1vbmx5KSB3ZSBlbWl0IGEKKwkgKiBzaG9ydGVyIG1lc3NhZ2Ugc2luY2UgdGhlIGRldGFpbHMg YXJlIGNhcHR1cmVkIGluIHRoZSB0YWJsZS4KKwkgKi8KIAlpZiAobG9nX2Rlc3RfbG9nZmlsZSkK IAl7CiAJCVN0cmluZ0luZm9EYXRhCWVycl9kZXRhaWw7CkBAIC00MDAsNiArMzg2LDY0IEBAIFJl cG9ydEFwcGx5Q29uZmxpY3QoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8s IGludCBlbGV2ZWwsCiAJCQkJCSAgIENvbmZsaWN0VHlwZU5hbWVzW3R5cGVdKSwKIAkJCQllcnJk ZXRhaWxfaW50ZXJuYWwoIiVzIiwgZXJyX2RldGFpbC5kYXRhKSk7CiAJfQorCWVsc2UgaWYgKGxv Z19kZXN0X3RhYmxlKQorCXsKKwkJLyoKKwkJICogTm90IGxvZ2dpbmcgY29uZmxpY3QgZGV0YWls cyB0byB0aGUgc2VydmVyIGxvZzsgcmVwb3J0IHRoZSBjb25mbGljdAorCQkgKiBidXQgb21pdCBy YXcgdHVwbGUgZGF0YSBzaW5jZSBpdCBpcyBjYXB0dXJlZCBpbiB0aGUgY29uZmxpY3QgbG9nCisJ CSAqIHRhYmxlLgorCQkgKi8KKwkJZXJlcG9ydChlbGV2ZWwsCisJCQkJZXJyY29kZV9hcHBseV9j b25mbGljdCh0eXBlKSwKKwkJCQllcnJtc2coImNvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9u IFwiJXNcIjogY29uZmxpY3Q9JXMiLAorCQkJCQlSZWxhdGlvbkdldFF1YWxpZmllZFJlbGF0aW9u TmFtZShsb2NhbHJlbCksCisJCQkJCUNvbmZsaWN0VHlwZU5hbWVzW3R5cGVdKSwKKwkJCQllcnJk ZXRhaWwoIkNvbmZsaWN0IGRldGFpbHMgYXJlIGxvZ2dlZCB0byB0aGUgY29uZmxpY3QgbG9nIHRh YmxlOiAlcyIsCisJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGNvbmZsaWN0bG9ncmVs KSkpOworCX0KKworCS8qCisJICogSW5zZXJ0IGludG8gdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBp ZiByZXF1ZXN0ZWQuICBGb3IgY29uZmxpY3RzIGJlbG93CisJICogRVJST1IgdGhlIGFwcGx5IHRy YW5zYWN0aW9uIGNvbnRpbnVlcywgc28gaW5zZXJ0IGltbWVkaWF0ZWx5OyBmb3IKKwkgKiBFUlJP Ui1sZXZlbCBjb25mbGljdHMgdGhlIGVyZXBvcnQoKSBhYm92ZSBhbHJlYWR5IHJhaXNlZCB0aGUg ZXJyb3IgYW5kCisJICogdGhlIGluc2VydGlvbiBpcyBkZWZlcnJlZCB0byBhIG5ldyB0cmFuc2Fj dGlvbgorCSAqIChQcm9jZXNzUGVuZGluZ0NvbmZsaWN0TG9nVHVwbGUpIHNvIHRoYXQgaXQgaXMg bm90IHJvbGxlZCBiYWNrLgorCSAqLworCWlmIChsb2dfZGVzdF90YWJsZSkKKwl7CisJCWlmIChl bGV2ZWwgPCBFUlJPUikKKwkJeworCQkJUEdfVFJZKCk7CisJCQl7CisJCQkJSW5zZXJ0Q29uZmxp Y3RMb2dUdXBsZShjb25mbGljdGxvZ3JlbCk7CisJCQl9CisJCQlQR19DQVRDSCgpOworCQkJewor CQkJCS8qCisJCQkJICogVGhlIGluc2VydCBmYWlsZWQsIHNvIHRoZSBhcHBseSB0cmFuc2FjdGlv biB3aWxsIGFib3J0IGFuZAorCQkJCSAqIHRoZSBlcnJvciB3aWxsIHByb3BhZ2F0ZSB0byB0aGUg d29ya2VyJ3MgZXJyb3IgaGFuZGxlci4gIFRoZQorCQkJCSAqIGNvbmZsaWN0IHdhcyBhbHJlYWR5 IHJlcG9ydGVkIHRvIHRoZSBzZXJ2ZXIgbG9nIGFib3ZlLCBzbyBpdAorCQkJCSAqIGlzIG5vdCBs b3N0LiAgRGlzY2FyZCB0aGUgcHJlcGFyZWQgdHVwbGUgc28gdGhhdCB0aGUgZGVmZXJyZWQKKwkJ CQkgKiBpbnNlcnRpb24gcGF0aCAoUHJvY2Vzc1BlbmRpbmdDb25mbGljdExvZ1R1cGxlKSBkb2Vz IG5vdCByZXRyeQorCQkJCSAqIHRoaXMgc2FtZSBmYWlsaW5nIGluc2VydC4KKwkJCQkgKi8KKwkJ CQlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9sb2dfdHVwbGUgIT0gTlVMTCkKKwkJ CQl7CisJCQkJCWhlYXBfZnJlZXR1cGxlKE15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9n X3R1cGxlKTsKKwkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9sb2dfdHVwbGUgPSBO VUxMOworCQkJCX0KKwkJCQlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9sb2dfZXJy Y29udGV4dCAhPSBOVUxMKQorCQkJCXsKKwkJCQkJcGZyZWUoTXlMb2dpY2FsUmVwV29ya2VyLT5j b25mbGljdF9sb2dfZXJyY29udGV4dCk7CisJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxp Y3RfbG9nX2VycmNvbnRleHQgPSBOVUxMOworCQkJCX0KKwkJCQlQR19SRV9USFJPVygpOworCQkJ fQorCQkJUEdfRU5EX1RSWSgpOworCQl9CisKKwkJdGFibGVfY2xvc2UoY29uZmxpY3Rsb2dyZWws IFJvd0V4Y2x1c2l2ZUxvY2spOworCX0KIH0KIAogLyoKQEAgLTQyOCw2MCArNDcyLDI4IEBAIFBy b2Nlc3NQZW5kaW5nQ29uZmxpY3RMb2dUdXBsZSh2b2lkKQogCWlmIChNeUxvZ2ljYWxSZXBXb3Jr ZXItPmNvbmZsaWN0X2xvZ190dXBsZSA9PSBOVUxMKQogCQlyZXR1cm47CiAKLQlQR19UUlkoKTsK LQl7Ci0JCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0JCVB1c2hBY3RpdmVTbmFwc2hvdChH ZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCi0JCS8qIE9wZW4gY29uZmxpY3QgbG9nIHRhYmxl IGFuZCBpbnNlcnQgdGhlIHR1cGxlICovCi0JCWNvbmZsaWN0bG9ncmVsID0gR2V0Q29uZmxpY3RM b2dEZXN0QW5kVGFibGUoJmRlc3QpOwotCQlBc3NlcnQoY29uZmxpY3Rsb2dyZWwpOwotCi0JCUlu c2VydENvbmZsaWN0TG9nVHVwbGUoY29uZmxpY3Rsb2dyZWwpOwotCi0JCXRhYmxlX2Nsb3NlKGNv bmZsaWN0bG9ncmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKLQotCQlQb3BBY3RpdmVTbmFwc2hvdCgp OwotCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQl9Ci0JUEdfQ0FUQ0goKTsKLQl7Ci0J CUVycm9yRGF0YSAgKmVkYXRhOwotCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKLQotCQkvKiBTYXZl IGVycm9yIGluZm8gaW4gb3VyIG1lbW9yeSBjb250ZXh0ICovCi0JCW9sZGN0eCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhUb3BNZW1vcnlDb250ZXh0KTsKLQkJZWRhdGEgPSBDb3B5RXJyb3JEYXRh KCk7Ci0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwotCi0JCS8qIENsZWFyIHRoZSBl cnJvciBzdGF0ZSBzbyB3ZSBjYW4gY29udGludWUgKi8KLQkJRmx1c2hFcnJvclN0YXRlKCk7CisJ LyoKKwkgKiBJbnNlcnQgdGhlIGRlZmVycmVkIGNvbmZsaWN0IGxvZyB0dXBsZSBpbiBpdHMgb3du IHRyYW5zYWN0aW9uLiAgQQorCSAqIGZhaWx1cmUgaGVyZSAoZS5nLiB0aGUgY29uZmxpY3QgbG9n IHRhYmxlIHdhcyBkcm9wcGVkLCBvciBhbgorCSAqIG91dC1vZi1kaXNrLXNwYWNlIGVycm9yKSBp cyB0cmVhdGVkIGxpa2UgYW55IG90aGVyIGFwcGx5IGVycm9yIGFuZAorCSAqIHJhaXNlcyBhbiBF UlJPUjsgc3VjaCBmYWlsdXJlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgcmFyZSBhbmQgcGVyc2lzdGVu dC4KKwkgKiBDYWxsZXJzIG11c3QgdGhlcmVmb3JlIGhhdmUgYWxyZWFkeSByZXBvcnRlZCAoYW5k IGNsZWFyZWQpIGFueQorCSAqIGluLXByb2dyZXNzIGFwcGx5IGVycm9yIGJlZm9yZSBjYWxsaW5n IHRoaXMsIHNvIHRoYXQgdGhpcyBlcnJvciBkb2VzIG5vdAorCSAqIG1hc2sgdGhlIG9yaWdpbmFs IG9uZS4KKwkgKi8KKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVB1c2hBY3RpdmVTbmFw c2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCi0JCS8qIEFib3J0IHRoZSB0cmFuc2Fj dGlvbiB3ZSBzdGFydGVkIGFib3ZlICovCi0JCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwor CS8qIE9wZW4gY29uZmxpY3QgbG9nIHRhYmxlIGFuZCBpbnNlcnQgdGhlIHR1cGxlICovCisJY29u ZmxpY3Rsb2dyZWwgPSBHZXRDb25mbGljdExvZ0Rlc3RBbmRUYWJsZSgmZGVzdCk7CisJQXNzZXJ0 KGNvbmZsaWN0bG9ncmVsKTsKIAotCQkvKgotCQkgKiBSZXBvcnQgdGhlIGVycm9yIGFzIGEgd2Fy bmluZy4gV2UgdXNlIFdBUk5JTkcgYmVjYXVzZSB3ZSBkb24ndCB3YW50Ci0JCSAqIHRoaXMgdG8g YmUgYSBmYXRhbCBlcnJvciBmb3IgdGhlIHdvcmtlciwgYW5kIHdlIHdhbnQgdG8gYWxsb3cgdGhl Ci0JCSAqIGNhbGxlcidzIG9yaWdpbmFsIGVycm9yIHRvIHJlbWFpbiBwcmltYXJ5LgotCQkgKi8K LQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJtc2coImNvdWxkIG5vdCBsb2cgY29uZmxpY3Qg dG8gdGFibGUgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCI6ICVzIiwKLQkJCQkJCU15U3Vic2NyaXB0 aW9uLT5uYW1lLCBlZGF0YS0+bWVzc2FnZSkpKTsKKwlJbnNlcnRDb25mbGljdExvZ1R1cGxlKGNv bmZsaWN0bG9ncmVsKTsKIAotCQlGcmVlRXJyb3JEYXRhKGVkYXRhKTsKKwl0YWJsZV9jbG9zZShj b25mbGljdGxvZ3JlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKLQkJLyoKLQkJICogRnJlZSB0aGUg Y29uZmxpY3QgbG9nIHR1cGxlIGFuZCBzZXQgaXQgdG8gTlVMTC4gVGhpcyBlbnN1cmVzIHdlCi0J CSAqIGRvbid0IHRyeSB0byBpbnNlcnQgdGhlIHNhbWUgcHJvYmxlbWF0aWMgdHVwbGUgYWdhaW4u Ci0JCSAqLwotCQlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9sb2dfdHVwbGUgIT0g TlVMTCkKLQkJewotCQkJaGVhcF9mcmVldHVwbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGlj dF9sb2dfdHVwbGUpOwotCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9sb2dfdHVwbGUg PSBOVUxMOwotCQl9Ci0JfQotCVBHX0VORF9UUlkoKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwor CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogfQogCiAvKgpAQCAtNTQ0LDYgKzU1NiwxOSBA QCBHZXRDb25mbGljdExvZ0Rlc3RBbmRUYWJsZShDb25mbGljdExvZ0Rlc3QgKmxvZ19kZXN0KQog CXJldHVybiB0YWJsZV9vcGVuKGNvbmZsaWN0bG9ncmVsaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwog fQogCisvKgorICogRXJyb3IgY29udGV4dCBjYWxsYmFjayBmb3IgZmFpbHVyZXMgd2hpbGUgaW5z ZXJ0aW5nIGludG8gdGhlIGNvbmZsaWN0IGxvZworICogdGFibGUuICBBZGRzIGEgbGluZSBpZGVu dGlmeWluZyB0aGUgY29uZmxpY3QgdGhhdCB3YXMgYmVpbmcgbG9nZ2VkLgorICovCitzdGF0aWMg dm9pZAorY29uZmxpY3RfbG9nX2luc2VydF9lcnJjb250ZXh0KHZvaWQgKmFyZykKK3sKKwljaGFy CSAgICpjdHggPSAoY2hhciAqKSBhcmc7CisKKwlpZiAoY3R4KQorCQllcnJjb250ZXh0KCIlcyIs IGN0eCk7Cit9CisKIC8qCiAgKiBJbnNlcnRDb25mbGljdExvZ1R1cGxlCiAgKgpAQCAtNTU0LDE1 ICs1NzksMzQgQEAgR2V0Q29uZmxpY3RMb2dEZXN0QW5kVGFibGUoQ29uZmxpY3RMb2dEZXN0ICps b2dfZGVzdCkKIHZvaWQKIEluc2VydENvbmZsaWN0TG9nVHVwbGUoUmVsYXRpb24gY29uZmxpY3Rs b2dyZWwpCiB7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKIAkvKiBBIHZh bGlkIHR1cGxlIG11c3QgYmUgcHJlcGFyZWQgYW5kIHN0b3JlZCBpbiBNeUxvZ2ljYWxSZXBXb3Jr ZXIuICovCiAJQXNzZXJ0KE15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX3R1cGxlICE9 IE5VTEwpOwogCisJLyoKKwkgKiBTZXQgdXAgYW4gZXJyb3IgY29udGV4dCBzbyB0aGF0IGEgZmFp bHVyZSB0byBpbnNlcnQgKGUuZy4gdGhlIGNvbmZsaWN0CisJICogbG9nIHRhYmxlIHdhcyBkcm9w cGVkLCBvciBhbiBvdXQtb2Ytc3BhY2UgZXJyb3IpIGNhcnJpZXMgaW5mb3JtYXRpb24KKwkgKiBp ZGVudGlmeWluZyB0aGUgY29uZmxpY3Qgd2Ugd2VyZSB0cnlpbmcgdG8gbG9nLgorCSAqLworCWVy cmNhbGxiYWNrLmNhbGxiYWNrID0gY29uZmxpY3RfbG9nX2luc2VydF9lcnJjb250ZXh0OworCWVy cmNhbGxiYWNrLmFyZyA9IE15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX2VycmNvbnRl eHQ7CisJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9y X2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisKIAloZWFwX2luc2VydChjb25mbGljdGxv Z3JlbCwgTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9sb2dfdHVwbGUsCiAJCQkJR2V0Q3Vy cmVudENvbW1hbmRJZCh0cnVlKSwgSEVBUF9JTlNFUlRfTk9fTE9HSUNBTCwgTlVMTCk7CiAKLQkv KiBGcmVlIGNvbmZsaWN0IGxvZyB0dXBsZS4gKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJy Y2FsbGJhY2sucHJldmlvdXM7CisKKwkvKiBGcmVlIHRoZSBjb25mbGljdCBsb2cgdHVwbGUgYW5k IGl0cyBjb250ZXh0IHN0cmluZy4gKi8KIAloZWFwX2ZyZWV0dXBsZShNeUxvZ2ljYWxSZXBXb3Jr ZXItPmNvbmZsaWN0X2xvZ190dXBsZSk7CiAJTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9s b2dfdHVwbGUgPSBOVUxMOworCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPmNvbmZsaWN0X2xvZ19l cnJjb250ZXh0KQorCXsKKwkJcGZyZWUoTXlMb2dpY2FsUmVwV29ya2VyLT5jb25mbGljdF9sb2df ZXJyY29udGV4dCk7CisJCU15TG9naWNhbFJlcFdvcmtlci0+Y29uZmxpY3RfbG9nX2VycmNvbnRl eHQgPSBOVUxMOworCX0KIH0KIAogLyoKQEAgLTEzODEsNSArMTQyNSwxNSBAQCBwcmVwYXJlX2Nv bmZsaWN0X2xvZ190dXBsZShFU3RhdGUgKmVzdGF0ZSwgUmVsYXRpb24gcmVsLAogCW9sZGN0eCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCU15TG9naWNhbFJlcFdvcmtl ci0+Y29uZmxpY3RfbG9nX3R1cGxlID0KIAkJaGVhcF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVz Y3IoY29uZmxpY3Rsb2dyZWwpLCB2YWx1ZXMsIG51bGxzKTsKKworCS8qCisJICogU3Rhc2ggYSBj b250ZXh0IHN0cmluZyBkZXNjcmliaW5nIHRoaXMgY29uZmxpY3QsIHNvIHRoYXQgaWYgaW5zZXJ0 aW5nCisJICogdGhlIHR1cGxlIGludG8gdGhlIGNvbmZsaWN0IGxvZyB0YWJsZSBmYWlscywgdGhl IHJlc3VsdGluZyBlcnJvciBjYXJyaWVzCisJICogZW5vdWdoIGNvbnRleHQgdG8gaWRlbnRpZnkg dGhlIGNvbmZsaWN0IChzZWUgSW5zZXJ0Q29uZmxpY3RMb2dUdXBsZSkuCisJICovCisJTXlMb2dp Y2FsUmVwV29ya2VyLT5jb25mbGljdF9sb2dfZXJyY29udGV4dCA9CisJCXBzcHJpbnRmKCJ3aGls ZSBsb2dnaW5nIGNvbmZsaWN0IFwiJXNcIiBkZXRlY3RlZCBvbiByZWxhdGlvbiBcIiVzXCIiLAor CQkJCSBDb25mbGljdFR5cGVOYW1lc1tjb25mbGljdF90eXBlXSwKKwkJCQkgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCAwNWJhNmQ4YjFhZC4u Njk0ODBjYmM4ODYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpA QCAtNTY1OCw2ICs1NjU4LDkgQEAgc3RhcnRfYXBwbHkoWExvZ1JlY1B0ciBvcmlnaW5fc3RhcnRw b3MpCiAJfQogCVBHX0NBVENIKCk7CiAJeworCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJ CUVycm9yRGF0YSAgKmVkYXRhOworCiAJCS8qCiAJCSAqIFJlc2V0IHRoZSBvcmlnaW4gc3RhdGUg dG8gcHJldmVudCB0aGUgYWR2YW5jZW1lbnQgb2Ygb3JpZ2luCiAJCSAqIHByb2dyZXNzIGlmIHdl IGZhaWwgdG8gYXBwbHkuIE90aGVyd2lzZSwgdGhpcyB3aWxsIHJlc3VsdCBpbgpAQCAtNTY3MSwx NSArNTY3NCwzMyBAQCBzdGFydF9hcHBseShYTG9nUmVjUHRyIG9yaWdpbl9zdGFydHBvcykKIAkJ ZWxzZQogCQl7CiAJCQkvKgotCQkJICogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFw cGx5aW5nIGNoYW5nZXMuIEFib3J0IHRoZQotCQkJICogY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0 aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNlbnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUuCisJ CQkgKiBTYXZlIHRoZSBlcnJvciBhbmQgcmVjb3ZlciB0byBhbiBpZGxlIHN0YXRlIHNvIHdlIGNh biBpbnNlcnQgdGhlCisJCQkgKiBkZWZlcnJlZCBjb25mbGljdCBsb2cgdHVwbGUgKGlmIGFueSkg YmVmb3JlIHJlLXRocm93aW5nLiAgQ29weQorCQkJICogdGhlIGVycm9yIGludG8gYSBsb25nLWxp dmVkIGNvbnRleHQgZmlyc3QsIGFzIGl0IG1heSBoYXZlIGJlZW4KKwkJCSAqIHJhaXNlZCB1bmRl ciBFcnJvckNvbnRleHQuICBBbHNvIHJlc2V0IHRoZSBlcnJvciBjb250ZXh0IHN0YWNrOgorCQkJ ICogdGhlIGNhbGxiYWNrcyBpbiBlZmZlY3Qgd2hlbiB0aGUgZXJyb3Igd2FzIHRocm93biBiZWxv bmcgdG8KKwkJCSAqIHVud291bmQgc3RhY2sgZnJhbWVzLCBhbmQgdGhlIGRlZmVycmVkIGluc2Vy dCBpbnN0YWxscyBpdHMgb3duLgogCQkJICovCisJCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKFRvcE1lbW9yeUNvbnRleHQpOworCQkJZWRhdGEgPSBDb3B5RXJyb3JEYXRhKCk7 CisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwkJCUZsdXNoRXJyb3JT dGF0ZSgpOworCQkJZXJyb3JfY29udGV4dF9zdGFjayA9IE5VTEw7CiAJCQlBYm9ydE91dE9mQW55 VHJhbnNhY3Rpb24oKTsKIAkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vi c2NyaXB0aW9uLT5vaWQpOworCisJCQkvKgorCQkJICogSW5zZXJ0IHRoZSBkZWZlcnJlZCBjb25m bGljdCBsb2cgdHVwbGUgaW4gaXRzIG93biB0cmFuc2FjdGlvbi4KKwkJCSAqIElmIHRoaXMgZmFp bHMsIHRoYXQgZXJyb3IgKGFubm90YXRlZCB3aXRoIHRoZSBjb25mbGljdCBjb250ZXh0LAorCQkJ ICogc2VlIEluc2VydENvbmZsaWN0TG9nVHVwbGUpIHByb3BhZ2F0ZXMgaW5zdGVhZCBvZiB0aGUg b3JpZ2luYWw7CisJCQkgKiBzdWNoIGZhaWx1cmVzIGFyZSBleHBlY3RlZCB0byBiZSByYXJlIGFu ZCBwZXJzaXN0ZW50IChlLmcuIG91dCBvZgorCQkJICogZGlzayBzcGFjZSkuCisJCQkgKi8KIAkJ CVByb2Nlc3NQZW5kaW5nQ29uZmxpY3RMb2dUdXBsZSgpOwogCi0JCQlQR19SRV9USFJPVygpOwor CQkJLyogUmUtdGhyb3cgdGhlIG9yaWdpbmFsIGVycm9yLiAqLworCQkJUmVUaHJvd0Vycm9yKGVk YXRhKTsKIAkJfQogCX0KIAlQR19FTkRfVFJZKCk7CkBAIC02MDQ2LDE0ICs2MDY3LDE5IEBAIERp c2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpCiAKIAlSRVNVTUVfSU5URVJSVVBUUygpOwog CisJLyoKKwkgKiBUaGUgZXJyb3IgY29udGV4dCBjYWxsYmFja3MgaW4gZWZmZWN0IHdoZW4gdGhl IGVycm9yIHdhcyB0aHJvd24gYmVsb25nCisJICogdG8gbm93LXVud291bmQgc3RhY2sgZnJhbWVz OyByZXNldCB0aGUgc3RhY2sgYmVmb3JlIHJ1bm5pbmcgZnVydGhlciBjb2RlCisJICogKGluY2x1 ZGluZyB0aGUgZGVmZXJyZWQgY29uZmxpY3QgbG9nIGluc2VydGlvbiwgd2hpY2ggaW5zdGFsbHMg aXRzIG93bikuCisJICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IE5VTEw7CisKIAkvKgogCSAq IFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgc2VxdWVuY2Ugc3luY2hyb25pemF0aW9u LCB0YWJsZQogCSAqIHN5bmNocm9uaXphdGlvbiwgb3IgYXBwbHkuCiAJICovCiAJcGdzdGF0X3Jl cG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCk7CiAKLQlQ cm9jZXNzUGVuZGluZ0NvbmZsaWN0TG9nVHVwbGUoKTsKLQogCS8qIERpc2FibGUgdGhlIHN1YnNj cmlwdGlvbiAqLwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKQEAgLTYwNzYsNiArNjEw MiwxOSBAQCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKQogCQkJZXJybXNnKCJzdWJz Y3JpcHRpb24gXCIlc1wiIGhhcyBiZWVuIGRpc2FibGVkIGJlY2F1c2Ugb2YgYW4gZXJyb3IiLAog CQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1lKSk7CiAKKwkvKgorCSAqIEluc2VydCB0aGUgZGVm ZXJyZWQgY29uZmxpY3QgbG9nIHR1cGxlIChpZiBhbnkpIG5vdyB0aGF0IHRoZQorCSAqIHN1YnNj cmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgY29tbWl0dGVkLiAgRG9pbmcgaXQgYWZ0ZXIg dGhlCisJICogZGlzYWJsZSBtZWFucyBhIGZhaWx1cmUgdG8gbG9nIHRoZSBjb25mbGljdCAodHJl YXRlZCBhcyBhIGhhcmQgZXJyb3IsCisJICogc2VlIFByb2Nlc3NQZW5kaW5nQ29uZmxpY3RMb2dU dXBsZSkgY2Fubm90IHByZXZlbnQgdGhlIHN1YnNjcmlwdGlvbiBmcm9tCisJICogYmVpbmcgZGlz YWJsZWQgYW5kIHNvIGNhbm5vdCBsZWF2ZSB0aGUgd29ya2VyIHJlc3RhcnRpbmcgYW5kIGZhaWxp bmcKKwkgKiBmb3JldmVyLiAgRG8gaXQgYmVmb3JlIHRoZSBkZWFkLXR1cGxlIHJldGVudGlvbiBj aGVjayBiZWxvdzogdGhhdCBjaGVjaworCSAqIG9ubHkgd2FybnMgdG9kYXksIGJ1dCBpdCB0YWtl cyBhbiBlbGV2ZWwgYW5kIGNvdWxkIHJhaXNlIGFuIGVycm9yLCB3aGljaAorCSAqIG11c3Qgbm90 IHByZXZlbnQgdGhlIGNvbmZsaWN0IGZyb20gYmVpbmcgcmVjb3JkZWQuICBUaGUgb3JpZ2luYWwg ZXJyb3IKKwkgKiB3YXMgYWxyZWFkeSByZXBvcnRlZCBhYm92ZS4KKwkgKi8KKwlQcm9jZXNzUGVu ZGluZ0NvbmZsaWN0TG9nVHVwbGUoKTsKKwogCS8qCiAJICogU2tpcCB0aGUgdHJhY2tfY29tbWl0 X3RpbWVzdGFtcCBjaGVjayB3aGVuIGRpc2FibGluZyB0aGUgd29ya2VyIGR1ZSB0bwogCSAqIGFu IGVycm9yLCBhcyB2ZXJpZnlpbmcgY29tbWl0IHRpbWVzdGFtcHMgaXMgdW5uZWNlc3NhcnkgaW4g dGhpcwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFs LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCA2YjY1 MjVkYzJlMi4uYzAwNTliMWI4MTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oCkBAIC0xMDMsNiArMTAzLDEzIEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBX b3JrZXIKIAkvKiBBIGNvbmZsaWN0IGxvZyB0dXBsZSB0aGF0IGlzIHByZXBhcmVkIGJ1dCBub3Qg eWV0IGluc2VydGVkLiAqLwogCUhlYXBUdXBsZQljb25mbGljdF9sb2dfdHVwbGU7CiAKKwkvKgor CSAqIEVycm9yLWNvbnRleHQgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNvbmZsaWN0IGFib3ZlLCB1 c2VkIHRvIGFubm90YXRlIGFueQorCSAqIGVycm9yIHJhaXNlZCB3aGlsZSBpbnNlcnRpbmcgY29u ZmxpY3RfbG9nX3R1cGxlIGludG8gdGhlIGNvbmZsaWN0IGxvZworCSAqIHRhYmxlLiAgQWxsb2Nh dGVkLCBsaWtlIGNvbmZsaWN0X2xvZ190dXBsZSwgaW4gQXBwbHlDb250ZXh0LgorCSAqLworCWNo YXIJICAgKmNvbmZsaWN0X2xvZ19lcnJjb250ZXh0OworCiAJLyogU3RhdHMuICovCiAJWExvZ1Jl Y1B0cglsYXN0X2xzbjsKIAlUaW1lc3RhbXBUeiBsYXN0X3NlbmRfdGltZTsKLS0gCjIuNTQuMAoK --000000000000214c720654c3ca39 Content-Type: text/plain; charset="US-ASCII"; name="v52-2-amit.fix_parallel_apply_logging.txt" Content-Disposition: attachment; filename="v52-2-amit.fix_parallel_apply_logging.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnuayh61 RnJvbSA4ODA2YTA3NjU2YzdhOTA2NjgxMzJkYzE3ZjA1MTE3NGYyYTYyYWU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IEthcGlsYSA8YWthcGlsYUBwb3N0Z3Jlc3FsLm9yZz4K RGF0ZTogRnJpLCAxOSBKdW4gMjAyNiAxNTo0MDowNyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjRd IERvbid0IHRlYXIgZG93biBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBiZWZvcmUgaXQgbG9ncyBp dHMKIGNvbmZsaWN0CgpXaGVuIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhpdHMgYW4gRVJST1It bGV2ZWwgY29uZmxpY3QgaXQgbG9ncyB0aGUKY29uZmxpY3QgdG8gdGhlIGNvbmZsaWN0IGxvZyB0 YWJsZSBpbiBhIG5ldyB0cmFuc2FjdGlvbiBpbiBpdHMgZXJyb3IgcGF0aCwKYWZ0ZXIgYWJvcnRp bmcgdGhlIGZhaWxlZCBhcHBseSB0cmFuc2FjdGlvbi4gIEJ1dCB0aGUgbGVhZGVyIGRldGVjdHMg d29ya2VyCmZhaWx1cmUgaW4gcGFfd2FpdF9mb3JfeGFjdF9maW5pc2goKSBieSB3YWl0aW5nIG9u IHRoZSB3b3JrZXIncyB0cmFuc2FjdGlvbgpsb2NrLCBhbmQgQWJvcnRPdXRPZkFueVRyYW5zYWN0 aW9uKCkgcmVsZWFzZXMgdGhhdCBsb2NrOiB0aGUgbGVhZGVyIHVuYmxvY2tzLApzZWVzIGEgbm9u LWZpbmlzaGVkIHN0YXRlLCByYWlzZXMgImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbG9naWNhbCBy ZXBsaWNhdGlvbgpwYXJhbGxlbCBhcHBseSB3b3JrZXIiLCBhbmQgdGVhcnMgdGhlIHdvcmtlciBk b3duIC0tIHdoaWNoIGNhbiBTSUdURVJNIGl0Cm1pZC1pbnNlcnQgYW5kIGxvc2UgdGhlIGNvbmZs aWN0IGxvZyByb3csIGJlc2lkZXMgYmVpbmcgYSBtaXNsZWFkaW5nIG1lc3NhZ2UuCgpGaXggdGhp cyBieSBhZGRpbmcgYSBQQVJBTExFTF9UUkFOU19FUlJPUiBzdGF0ZSB0aGF0IHRoZSB3b3JrZXIg c2V0cyBiZWZvcmUKYWJvcnRpbmcgKHdoaWxlIHRoZSBsZWFkZXIgaXMgc3RpbGwgYmxvY2tlZCBv biB0aGUgbG9jaywgc28gaXQgaXMgdmlzaWJsZSBvbmNlCnRoZSBsZWFkZXIgdW5ibG9ja3MpLiAg T24gc2VlaW5nIGl0LCB0aGUgbGVhZGVyIHdhaXRzIGZvciB0aGUgd29ya2VyIHRvIHJlcG9ydApp dHMgYWN0dWFsIGVycm9yIHZpYSB0aGUgZXJyb3IgcXVldWUgLS0gd2hpY2gga2VlcHMgdGhlIHdv cmtlciBhbGl2ZSBsb25nCmVub3VnaCB0byBmaW5pc2ggd3JpdGluZyB0aGUgY29uZmxpY3QgbG9n IHR1cGxlIGFuZCBsZXRzIHRoZSBsZWFkZXIgcmVwb3J0IHRoZQpyZWFsIGVycm9yIGluc3RlYWQg b2YgImxvc3QgY29ubmVjdGlvbiIuICBUaGUgb3JpZ2luYWwgbWVzc2FnZSByZW1haW5zIGFzIHRo ZQpmYWxsYmFjayBmb3IgYSB3b3JrZXIgdGhhdCBkaWVkIHdpdGhvdXQgc2lnbmFsbGluZzsgYXMg YSBzaWRlIGVmZmVjdCwKbm9uLWNvbmZsaWN0IHdvcmtlciBmYWlsdXJlcyBub3cgYWxzbyBzdXJm YWNlIHRoZSByZWFsIGVycm9yLgotLS0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFy YWxsZWx3b3JrZXIuYyB8IDM1ICsrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAyICsrCiAyIGZpbGVzIGNoYW5nZWQsIDM3 IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDQ4Y2I1NTU4MzY3Li5hM2Y1YjliMTIyZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFs bGVsd29ya2VyLmMKQEAgLTEwMTcsNiArMTAxNywxNyBAQCBQYXJhbGxlbEFwcGx5V29ya2VyTWFp bihEYXR1bSBtYWluX2FyZykKIAogCQlGbHVzaEVycm9yU3RhdGUoKTsKIAkJZXJyb3JfY29udGV4 dF9zdGFjayA9IE5VTEw7CisKKwkJLyoKKwkJICogVGVsbCB0aGUgbGVhZGVyIHdlIGZhaWxlZCBh bmQgYXJlIGFib3V0IHRvIHJlcG9ydCB0aGUgZXJyb3IgYW5kIGxvZworCQkgKiB0aGUgY29uZmxp Y3QuICBUaGlzIG11c3QgYmUgc2V0IGJlZm9yZSBBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKQor CQkgKiBiZWxvdyByZWxlYXNlcyB0aGUgdHJhbnNhY3Rpb24gbG9jayB0aGF0IHRoZSBsZWFkZXIg d2FpdHMgb24gaW4KKwkJICogcGFfd2FpdF9mb3JfeGFjdF9maW5pc2goKTsgb3RoZXJ3aXNlIHRo ZSBsZWFkZXIgd291bGQgc2VlIGEKKwkJICogbm9uLWZpbmlzaGVkIHN0YXRlLCBhc3N1bWUgdGhl IGNvbm5lY3Rpb24gd2FzIGxvc3QsIGFuZCB0ZWFyIHRoaXMKKwkJICogd29ya2VyIGRvd24gd2hp bGUgaXQgaXMgc3RpbGwgd3JpdGluZyB0aGUgY29uZmxpY3QgbG9nIHR1cGxlLgorCQkgKi8KKwkJ cGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJBTlNfRVJST1Ip OworCiAJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwogCiAJCS8qCkBAIC0xMzYxLDkgKzEz NzIsMzMgQEAgcGFfd2FpdF9mb3JfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvKQogCSAqIHJlbGVhc2VkLgogCSAqLwogCWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3aW5m by0+c2hhcmVkKSAhPSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwl7CisJCS8qCisJCSAqIElm IHRoZSB3b3JrZXIgc2lnbmFsbGVkIHRoYXQgaXQgZXJyb3JlZCAoUEFSQUxMRUxfVFJBTlNfRVJS T1IpLCBpdCBpcworCQkgKiBsb2dnaW5nIHRoZSBjb25mbGljdCBhbmQgd2lsbCByZXBvcnQgdGhl IGFjdHVhbCBlcnJvciB2aWEgdGhlIGVycm9yCisJCSAqIHF1ZXVlIGJlZm9yZSBleGl0aW5nLiAg V2FpdCBmb3IgdGhhdCByYXRoZXIgdGhhbiByZXBvcnRpbmcgYSBnZW5lcmljCisJCSAqIGxvc3Qg Y29ubmVjdGlvbjogQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBkcml2ZXMKKwkJICogUHJvY2Vzc1Bh cmFsbGVsQXBwbHlNZXNzYWdlcygpLCB3aGljaCByYWlzZXMgdGhlIHJlYWwgZXJyb3Igb24gdGhl CisJCSAqIHdvcmtlcidzIEVycm9yUmVzcG9uc2UgKG9yICJsb3N0IGNvbm5lY3Rpb24iIGlmIHRo ZSB3b3JrZXIgZGllZAorCQkgKiB3aXRob3V0IHJlcG9ydGluZykuICBXYWl0aW5nIGhlcmUgYWxz byBrZWVwcyB0aGUgd29ya2VyIGFsaXZlIGxvbmcKKwkJICogZW5vdWdoIHRvIGZpbmlzaCB3cml0 aW5nIHRoZSBjb25mbGljdCBsb2cgdHVwbGUuCisJCSAqLworCQl3aGlsZSAocGFfZ2V0X3hhY3Rf c3RhdGUod2luZm8tPnNoYXJlZCkgPT0gUEFSQUxMRUxfVFJBTlNfRVJST1IpCisJCXsKKwkJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJ CQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJ CQkJCQkJIDEwTCwKKwkJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NU QVRFX0NIQU5HRSk7CisKKwkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCX0KKwogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVf U1RBVEUpLAogCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbG9naWNhbCByZXBs aWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSkpOworCX0KIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggYzAwNTliMWI4MTAuLjc5Yzkw ZGRkZDg5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAt MTMxLDYgKzEzMSw4IEBAIHR5cGVkZWYgZW51bSBQYXJhbGxlbFRyYW5zU3RhdGUKIAlQQVJBTExF TF9UUkFOU19VTktOT1dOLAogCVBBUkFMTEVMX1RSQU5TX1NUQVJURUQsCiAJUEFSQUxMRUxfVFJB TlNfRklOSVNIRUQsCisJUEFSQUxMRUxfVFJBTlNfRVJST1IsCQkvKiB3b3JrZXIgZmFpbGVkOyBp dCB3aWxsIHJlcG9ydCB0aGUgZXJyb3IgKGFuZAorCQkJCQkJCQkgKiBsb2cgdGhlIGNvbmZsaWN0 LCBpZiBhbnkpIGJlZm9yZSBleGl0aW5nICovCiB9IFBhcmFsbGVsVHJhbnNTdGF0ZTsKIAogLyoK LS0gCjIuNTQuMAoK --000000000000214c720654c3ca39--