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 1vpIRq-005C2H-2N for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Feb 2026 04:00:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vpIRp-009ChJ-1M for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Feb 2026 04:00:29 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vpIRp-009ChA-0A for pgsql-hackers@lists.postgresql.org; Mon, 09 Feb 2026 04:00:28 +0000 Received: from mail-vk1-xa2b.google.com ([2607:f8b0:4864:20::a2b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vpIRm-00000001kwI-1Pye for pgsql-hackers@lists.postgresql.org; Mon, 09 Feb 2026 04:00:28 +0000 Received: by mail-vk1-xa2b.google.com with SMTP id 71dfb90a1353d-5670ea44187so1663905e0c.0 for ; Sun, 08 Feb 2026 20:00:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770609623; cv=none; d=google.com; s=arc-20240605; b=R7VSBHbfjGlYQfLKXiJhzI4ZSncFZ2HV1eJ36173H1xDJ77o8NWd10cwdt1kD6e36k BUJTgvKa8c8h/oCh1EWEXcQrrhC9YflpNPMRGd6JHdInyVGtCeWekqEQSd1VzrY063jw lWZJmj+DYQni14nWowqhOrnRSXDKceRqZjx6eVxilACjaR03RB9GACeSMbezIb8Pao8k XSbe8ghqrDptKzTfMhhhqJPAO0fNbNlvnTGPH3Iq3GrPX6bToDR13+767Fhd50WFsWBU qcXYIJplcx+Y5szl6Z+Vb9Uh7yeHfn6XvhQPiyNP6cz+ERb/gJQaMiNC14dmjufBb6jK vgrA== 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=19gKQOZO2wbRJ3ARgaDLpwirIf17PdFL6RHnumNvf00=; fh=kCk5mSmNetSftHVzsu5Tu+mu47QlSPrMvRWT+EWpm3c=; b=iGENmy52ajofvoZiFHSB/lMJe0KoEiEQSWF4/KGZfNDM6Bcy+mjTpA2UqmnosWqRD9 FDU7Qj3IZwPcOp+ipvPSaAVsVzewN3xHOtD0Sd68I5QtjPvV6I9u6Tkf31qwSHxkKX8U xGSKS0cp3O4yAGvUddc45aEsEQeJnD8SvZ62XzDBO8GWwWUHVGxBXjlJfvL0H37qm+mc rI+uJs5XHwUjxcIsxgJz0oVxTwa3thSzZEaUVET65qeuZBMmnIwm/8qh4G3p55WWijBq fCvoU5jEc9dsfemP1M6GjrMixRD1XyVN3bNWeIIz0Z1hL/wvGuZvqYSa4m92P9kIJ795 SEZw==; 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=20230601; t=1770609623; x=1771214423; 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=19gKQOZO2wbRJ3ARgaDLpwirIf17PdFL6RHnumNvf00=; b=SMk45UibXQIUfhOERNQ/C4bwWzrKNXHnnzpMlnmU512kMzeZKPLGeBq0B2bUpYmWT4 RhNBTKh7Xs5n0ehIr+jUzf5F6pyh4Mbc5o0Guns5W+IzF+07AGMznsTgZisjqw8FCOtP kwdaiZC90Ei7GegQ4vfdxZvnkH5RMrqZS123wnuuBtMaahyUYrD9QK/NO4GnZ//h4QUD 94EUUTxfpr1gv08l64gffvJpFKX28m/7z1DivgLSnDWkViDufmdBkGih5giHBX8Vdb79 R6wfj4secWANyqHTrveqAyLwD/BRs0+m9Y7D+XSI9GDlN4IAk7Iz3MMgVwDv7Ksf8tye vZ0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770609623; x=1771214423; 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=19gKQOZO2wbRJ3ARgaDLpwirIf17PdFL6RHnumNvf00=; b=Qd7Kaw3cUnIu7q5HD9aIOgmjOJLj2IngdVEVufnpG0hYsx/yumTVoU8hQBGmHUr/Fr 3eHrq9ORwG96/pR79moGdwBmCxKRmA66H16n68z6VQJi/hEt/ENDOfS0TV+Rl9z587KF g8n0q8L0PkiFpvm/XtHJOH93Gw1XXRyf1OoLwS4RvrN9OcFT0lVE06bnfQ4/zScJxUAt X4PBFDhNDQUQtTevYsNg182J6x8DH7lpu2c7YBKp6FyWyesDVLs8SczDyYCRam5/yg2G Cu/AUzYqRzfm//AtEYpV3MGVFPeCE2nXwN8kbVnvUkdRgKz4plrtWnptW/t27diQ3bya pT+g== X-Forwarded-Encrypted: i=1; AJvYcCU+LRfvpfc2s06BJETd8to6IN5D5GV/3kZW4ThYbXJrjGX92SoYDShKrc8G58i7llhWNFnVpj6goEETDiaA@lists.postgresql.org X-Gm-Message-State: AOJu0YyAAEGh5EkQnhDnTd9UqFnhrrYcacq2nmT6Z7jwudPhBdy3VIAP 4tP39/sXbmM/+juw7EgLTaHTejXtMiZ4eeyowyZ2Xo+GRag/mR+OEdiyzV8CJTV1DHFJEH9SFXq povlcnYQspfProVxaIasxqF6G0NtjSs8= X-Gm-Gg: AZuq6aJ+SgYQpcWYnjnoCjgyb1KUX2rhCYxO3LSLUEOiUhJmAO/lfcUOQiZfcD53h0h tj/8LgSSSUuqwJmvZQkBWCn+n2uVBmL9AzJCipYU1d0kG/Y3V1GakXD92FRL5cz6zTBpU+O1Cf+ ayickY/Fwjrr4U/BXbSryFr8wt6HKby1z0uOKDAbtQadsq/poq5KbxKWiGmxNAsWablY4n0nTyW VInrpY689cIHXq3/P1Edf9x4ZjnjWxNj++KRi5BKK8TSqzIInOVzforYSJ9Q0zoipHizHxOoc2/ 5o0qHcscKywOesHxy0uH15qihlu7VuC33FEGIZ7EuR2EdVIUVi48AmGUyM1eQokIjhdLDSeerZy ujYZLPCMmO8IRHqL+RD1vBMVpOTXzZNKweTbIJOL1a3jZscPL0ChaqNJ1gLhwa7Sqt9owh+g2IK oOQoFXoV+VJA== X-Received: by 2002:a05:6122:7d0:b0:55b:305b:4e41 with SMTP id 71dfb90a1353d-5670603d174mr2856426e0c.18.1770609623299; Sun, 08 Feb 2026 20:00:23 -0800 (PST) MIME-Version: 1.0 References: <901967e5-e5dc-42c6-b2bf-fb3a49d7e787@gmail.com> <4c540fe3-495c-4bbf-8dcf-2c1e2b88bc3d@gmail.com> In-Reply-To: From: jian he Date: Mon, 9 Feb 2026 11:59:46 +0800 X-Gm-Features: AZwV_QhkKRvKPr27lJ9uW1Men5TjOEGJVHJB9pkUwSbDPFtbFng7IxruM5GJQ-U Message-ID: Subject: Re: Change COPY ... ON_ERROR ignore to ON_ERROR ignore_row To: Matheus Alcantara Cc: torikoshia , Masahiko Sawada , vignesh C , Jim Jones , Kirill Reshke , Fujii Masao , "David G. Johnston" , Yugo NAGATA , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000a21a0d064a5c2d8b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a21a0d064a5c2d8b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Feb 6, 2026 at 8:58=E2=80=AFPM Matheus Alcantara wrote: > > > Thanks, overall the patch looks good to me. I'm attaching a diff with > just some small tweaks on documentation and error messages. Please see > and check if it's make sense. > In the function CopyFrom, we have: if (cstate->opts.on_error =3D=3D COPY_ON_ERROR_IGNORE && cstate->escontext->error_occurred) { cstate->escontext->error_occurred =3D false; pgstat_progress_update_param(PROGRESS_COPY_TUPLES_SKIPPED, cstate->num_errors); That means PROGRESS_COPY_TUPLES_SKIPPED applied for COPY_ON_ERROR_IGNORE on= ly. So Number of tuples skipped because they contain malformed data. This counter only advances when ignore is specified to the ON_ERROR option. should be ok. > I'm wondering if we should have an else if block on > CopyFromTextLikeOneRow() when cstate->cur_attval is NULL to handle > COPY_ON_ERROR_SET_NULL when log_verbosity is set to > COPY_LOG_VERBOSITY_VERBOSE > > if (cstate->opts.on_error =3D=3D COPY_ON_ERROR_IGNORE) > ereport(NOTICE, > errmsg("skipping row due to data type incompatibility at line= %" PRIu64 " for column \"%s\": null input", > cstate->cur_lineno, > cstate->cur_attname)); > + else if (cstate->opts.on_error =3D=3D COPY_ON_ERROR_SET_NULL) > + ereport(NOTICE, > + errmsg("setting to null due to data type incompatibility at= line %" PRIu64 " for column \"%s\": null input", > + cstate->cur_lineno, > + cstate->cur_attname)); > CopyFromTextLikeOneRow, we have: cstate->cur_attname =3D NameStr(att->attname); cstate->cur_attval =3D string; even if "string" is NULL (two InputFunctionCallSafe function call with "str" value as NULL), it will fail at ``` else if (string =3D=3D NULL) ereport(ERROR, errcode(ERRCODE_NOT_NULL_VIOLATION), errmsg("null value in column \"%s\" violates not-null constraint of domain %s", cstate->cur_attname, format_type_be(typioparams[m])), errdatatype(typioparams[m])); ``` so i think condition like: if (cstate->opts.log_verbosity =3D=3D COPY_LOG_VERBOSITY_VERBOSE && cstate->cur_attval =3D=3D NULL && cstate->opts.on_error =3D=3D COPY_ON_ERROR_SET_NULL) is not reachable. therefore I didn't add the ELSE IF block. inspired by your change, I further simplified the error handling code. -- jian https://www.enterprisedb.com/ --000000000000a21a0d064a5c2d8b Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0001-COPY-on_error-set_null.patch" Content-Disposition: attachment; filename="v23-0001-COPY-on_error-set_null.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlen5uct0 RnJvbSAxMTRlZWIwMzM4NTEwYjZjNTVkOGIwYzc2NTcyNDJjNmEyNzVlYjhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFN1biwgOCBGZWIgMjAyNiAyMzo0NzowMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIz IDEvMV0gQ09QWSAob25fZXJyb3Igc2V0X251bGwpCgpJZiBPTl9FUlJPUiBTRVRfTlVMTCBpcyBz cGVjaWZpZWQgZHVyaW5nIENPUFkgRlJPTSwgYW55IGRhdGEgdHlwZSBjb252ZXJzaW9uCmVycm9y cyB3aWxsIHJlc3VsdCBpbiB0aGUgYWZmZWN0ZWQgY29sdW1uIGJlaW5nIHNldCB0byBOVUxMLiBI b3dldmVyLCBjb2x1bW4ncwpub3QtbnVsbCBjb25zdHJhaW50cyBhcmUgc3RpbGwgZW5mb3JjZWQs IGF0dGVtcHRpbmcgdG8gc2V0IGEgTlVMTCB2YWx1ZSBpbiBzdWNoCmNvbHVtbnMgd2lsbCByYWlz ZSBhIGNvbnN0cmFpbnQgdmlvbGF0aW9uIGVycm9yLiAgVGhpcyBhcHBsaWVzIHRvIGNvbHVtbiBk YXRhCnR5cGUgaXMgYSBkb21haW4gd2l0aCBhIE5PVCBOVUxMIGNvbnN0cmFpbnQuCgpBdXRob3I6 IEppYW4gSGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KQXV0aG9yOiBLaXJpbGwgUmVz aGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgoKUmV2aWV3ZWQtYnk6CkZ1amlpIE1hc2FvIDxt YXNhby5mdWppaUBvc3MubnR0ZGF0YS5jb20+CkppbSBKb25lcyA8amltLmpvbmVzQHVuaS1tdWVu c3Rlci5kZT4KIkRhdmlkIEcuIEpvaG5zdG9uIiA8ZGF2aWQuZy5qb2huc3RvbkBnbWFpbC5jb20+ Cll1Z28gTkFHQVRBIDxuYWdhdGFAc3Jhb3NzLmNvLmpwPgp0b3Jpa29zaGlhIDx0b3Jpa29zaGlh QG9zcy5udHRkYXRhLmNvbT4KTWFzYWhpa28gU2F3YWRhIDxzYXdhZGEubXNoa0BnbWFpbC5jb20+ CkF0c3VzaGkgVG9yaWtvc2hpIDx0b3Jpa29zaGlhQG9zcy5udHRkYXRhLmNvbT4KTWF0aGV1cyBB bGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KCmRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vQ0FLRlF1d2F3eTFlNllSNFM9ait5N3BYcWdfRHcxV0JWcmd2Zj1CUDNkMV9h U2ZlXytRQG1haWwuZ21haWwuY29tCmNvbW1pdGZlc3QgZW50cnk6IGh0dHBzOi8vY29tbWl0ZmVz dC5wb3N0Z3Jlc3FsLm9yZy9wYXRjaC80ODEwCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcu c2dtbCAgICAgICAgICAgICB8ICA0ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAg ICAgICAgICAgIHwgMzUgKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAg ICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAg ICAgIHwgNDYgKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNl LmMgICAgIHwgODkgKysrKysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHku aCAgICAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRl cm5hbC5oIHwgIDcgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0ICAgICAg fCA1OCArKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbCAgICAg ICAgICAgfCA0MyArKysrKysrKysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDI1NCBpbnNlcnRpb25z KCspLCAzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmlu Zy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCBiNzdkMTg5YTUwMC4u ZGNmNmU2YTJmNDggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtNjI2Niw4ICs2MjY2LDggQEAgRlJP TSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KCkgQVMgYmFja2VuZGlkOwogICAgICAgPC9wYXJh PgogICAgICAgPHBhcmE+CiAgICAgICAgTnVtYmVyIG9mIHR1cGxlcyBza2lwcGVkIGJlY2F1c2Ug dGhleSBjb250YWluIG1hbGZvcm1lZCBkYXRhLgotICAgICAgIFRoaXMgY291bnRlciBvbmx5IGFk dmFuY2VzIHdoZW4gYSB2YWx1ZSBvdGhlciB0aGFuCi0gICAgICAgPGxpdGVyYWw+c3RvcDwvbGl0 ZXJhbD4gaXMgc3BlY2lmaWVkIHRvIHRoZSA8bGl0ZXJhbD5PTl9FUlJPUjwvbGl0ZXJhbD4KKyAg ICAgICBUaGlzIGNvdW50ZXIgb25seSBhZHZhbmNlcyB3aGVuCisgICAgICAgPGxpdGVyYWw+aWdu b3JlPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQgdG8gdGhlIDxsaXRlcmFsPk9OX0VSUk9SPC9saXRl cmFsPgogICAgICAgIG9wdGlvbi4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4K ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jb3B5LnNnbWwKaW5kZXggNTNiMGVhOGY1NzMuLmFjYzgwOGRiYjZlIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dt bApAQCAtNDEzLDIyICs0MTMsMzggQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgaW5w dXQgdmFsdWUgaW50byBpdHMgZGF0YSB0eXBlLgogICAgICAgQW4gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmVycm9yX2FjdGlvbjwvcmVwbGFjZWFibGU+IHZhbHVlIG9mCiAgICAgICA8 bGl0ZXJhbD5zdG9wPC9saXRlcmFsPiBtZWFucyBmYWlsIHRoZSBjb21tYW5kLCB3aGlsZQotICAg ICAgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBtZWFucyBkaXNjYXJkIHRoZSBpbnB1dCByb3cg YW5kIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb25lLgorICAgICAgPGxpdGVyYWw+aWdub3JlPC9s aXRlcmFsPiBtZWFucyBkaXNjYXJkIHRoZSBpbnB1dCByb3cgYW5kIGNvbnRpbnVlIHdpdGggdGhl IG5leHQgb25lLAorICAgICAgYW5kIDxsaXRlcmFsPnNldF9udWxsPC9saXRlcmFsPiBtZWFucyBy ZXBsYWNlIGZpZWxkIGNvbnRhaW5pbmcgaW52YWxpZAorICAgICAgaW5wdXQgdmFsdWUgd2l0aCA8 bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBhbmQgY29udGludWUgdG8gdGhlIG5leHQgZmllbGQuCiAg ICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5zdG9wPC9saXRlcmFsPi4KICAgICAgPC9wYXJh PgogICAgICA8cGFyYT4KLSAgICAgIFRoZSA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG9wdGlv biBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4KKyAg ICAgIFRoZSA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5zZXRfbnVsbDwv bGl0ZXJhbD4KKyAgICAgIG9wdGlvbnMgYXJlIGFwcGxpY2FibGUgb25seSBmb3IgPGNvbW1hbmQ+ Q09QWSBGUk9NPC9jb21tYW5kPgogICAgICAgd2hlbiB0aGUgPGxpdGVyYWw+Rk9STUFUPC9saXRl cmFsPiBpcyA8bGl0ZXJhbD50ZXh0PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5jc3Y8L2xpdGVyYWw+ LgogICAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIEZvciA8bGl0ZXJhbD5pZ25vcmU8 L2xpdGVyYWw+IG9wdGlvbiwgYSA8bGl0ZXJhbD5OT1RJQ0U8L2xpdGVyYWw+IG1lc3NhZ2UKKyAg ICAgIGNvbnRhaW5pbmcgdGhlIGlnbm9yZWQgcm93IGNvdW50IGlzIGVtaXR0ZWQgYXQgdGhlIGVu ZCBvZiB0aGUgPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPgorICAgICAgaWYgYXQgbGVhc3Qg b25lIHJvdyB3YXMgZGlzY2FyZGVkLgorICAgICAgRm9yIDxsaXRlcmFsPnNldF9udWxsPC9saXRl cmFsPiBvcHRpb24sIGEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPgorICAgICAgbWVzc2FnZSBp bmRpY2F0aW5nIHRoZSBudW1iZXIgb2Ygcm93cyB3aGVyZSBpbnZhbGlkIGlucHV0IHZhbHVlcyB3 ZXJlCisgICAgICByZXBsYWNlZCB3aXRoIG51bGwgaXMgZW1pdHRlZCBhdCB0aGUgZW5kIG9mIHRo ZSA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+CisgICAgICBpZiBhdCBsZWFzdCBvbmUgcm93 IHdhcyByZXBsYWNlZC4KKyAgICAgPC9wYXJhPgorCiAgICAgIDxwYXJhPgotICAgICAgQSA8bGl0 ZXJhbD5OT1RJQ0U8L2xpdGVyYWw+IG1lc3NhZ2UgY29udGFpbmluZyB0aGUgaWdub3JlZCByb3cg Y291bnQgaXMKLSAgICAgIGVtaXR0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgPGNvbW1hbmQ+Q09QWSBG Uk9NPC9jb21tYW5kPiBpZiBhdCBsZWFzdCBvbmUKLSAgICAgIHJvdyB3YXMgZGlzY2FyZGVkLiBX aGVuIDxsaXRlcmFsPkxPR19WRVJCT1NJVFk8L2xpdGVyYWw+IG9wdGlvbiBpcyBzZXQgdG8KLSAg ICAgIDxsaXRlcmFsPnZlcmJvc2U8L2xpdGVyYWw+LCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJh bD4gbWVzc2FnZQorICAgICAgV2hlbiA8bGl0ZXJhbD5MT0dfVkVSQk9TSVRZPC9saXRlcmFsPiBv cHRpb24gaXMgc2V0IHRvIDxsaXRlcmFsPnZlcmJvc2U8L2xpdGVyYWw+LAorICAgICAgZm9yIDxs aXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4gb3B0aW9uLCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJh bD4gbWVzc2FnZQogICAgICAgY29udGFpbmluZyB0aGUgbGluZSBvZiB0aGUgaW5wdXQgZmlsZSBh bmQgdGhlIGNvbHVtbiBuYW1lIHdob3NlIGlucHV0Ci0gICAgICBjb252ZXJzaW9uIGhhcyBmYWls ZWQgaXMgZW1pdHRlZCBmb3IgZWFjaCBkaXNjYXJkZWQgcm93LgorICAgICAgY29udmVyc2lvbiBo YXMgZmFpbGVkIGlzIGVtaXR0ZWQgZm9yIGVhY2ggZGlzY2FyZGVkIHJvdzsKKyAgICAgIGZvciA8 bGl0ZXJhbD5zZXRfbnVsbDwvbGl0ZXJhbD4gb3B0aW9uLCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0 ZXJhbD4KKyAgICAgIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgbGluZSBvZiB0aGUgaW5wdXQgZmls ZSBhbmQgdGhlIGNvbHVtbiBuYW1lIHdoZXJlCisgICAgICB2YWx1ZSB3YXMgcmVwbGFjZWQgd2l0 aCA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBmb3IgZWFjaCBpbnB1dCBjb252ZXJzaW9uCisgICAg ICBmYWlsdXJlLgogICAgICAgV2hlbiBpdCBpcyBzZXQgdG8gPGxpdGVyYWw+c2lsZW50PC9saXRl cmFsPiwgbm8gbWVzc2FnZSBpcyBlbWl0dGVkCi0gICAgICByZWdhcmRpbmcgaWdub3JlZCByb3dz LgorICAgICAgcmVnYXJkaW5nIGlucHV0IGNvbnZlcnNpb24gZmFpbGVkIHJvd3MuCiAgICAgIDwv cGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC00NzYsNyArNDky LDggQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgog ICAgICAgVGhpcyBpcyBjdXJyZW50bHkgdXNlZCBpbiA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1h bmQ+IGNvbW1hbmQgd2hlbgotICAgICAgPGxpdGVyYWw+T05fRVJST1I8L2xpdGVyYWw+IG9wdGlv biBpcyBzZXQgdG8gPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPi4KKyAgICAgIDxsaXRlcmFsPk9O X0VSUk9SPC9saXRlcmFsPiBvcHRpb24gaXMgc2V0IHRvIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJh bD4KKyAgICAgIG9yIDxsaXRlcmFsPnNldF9udWxsPC9saXRlcmFsPi4KICAgICAgIDwvcGFyYT4K ICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXgg MTU1YTc5YTcwYzUuLjZkZTBiNjQzZGExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC00NjksMTIgKzQ2 OSwxNCBAQCBkZWZHZXRDb3B5T25FcnJvckNob2ljZShEZWZFbGVtICpkZWYsIFBhcnNlU3RhdGUg KnBzdGF0ZSwgYm9vbCBpc19mcm9tKQogCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBk ZWYtPmxvY2F0aW9uKSkpOwogCiAJLyoKLQkgKiBBbGxvdyAic3RvcCIsIG9yICJpZ25vcmUiIHZh bHVlcy4KKwkgKiBBbGxvdyAic3RvcCIsICJpZ25vcmUiLCAic2V0X251bGwiIHZhbHVlcy4KIAkg Ki8KIAlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAic3RvcCIpID09IDApCiAJCXJldHVybiBDT1BZ X09OX0VSUk9SX1NUT1A7CiAJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgImlnbm9yZSIpID09IDAp CiAJCXJldHVybiBDT1BZX09OX0VSUk9SX0lHTk9SRTsKKwlpZiAocGdfc3RyY2FzZWNtcChzdmFs LCAic2V0X251bGwiKSA9PSAwKQorCQlyZXR1cm4gQ09QWV9PTl9FUlJPUl9TRVRfTlVMTDsKIAog CWVyZXBvcnQoRVJST1IsCiAJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKQEAgLTk4NCw3ICs5ODYsNyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNn KCJvbmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CiAKLQlp ZiAob3B0c19vdXQtPnJlamVjdF9saW1pdCAmJiAhb3B0c19vdXQtPm9uX2Vycm9yKQorCWlmIChv cHRzX291dC0+cmVqZWN0X2xpbWl0ICYmIG9wdHNfb3V0LT5vbl9lcnJvciAhPSBDT1BZX09OX0VS Uk9SX0lHTk9SRSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJLyotIHRyYW5zbGF0b3I6IGZpcnN0IGFuZCBzZWNvbmQg JXMgYXJlIHRoZSBuYW1lcyBvZiBDT1BZIG9wdGlvbiwgZS5nLgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9t LmMKaW5kZXggMjVlZTIwYjIzZGIuLjEyMTNmM2Q4ODMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9t LmMKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJ1dGlscy9wb3J0YWwuaCIKICNpbmNsdWRl ICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5jbHVkZSAidXRp bHMvdHlwY2FjaGUuaCIKIAogLyoKICAqIE5vIG1vcmUgdGhhbiB0aGlzIG1hbnkgdHVwbGVzIHBl ciBDb3B5TXVsdGlJbnNlcnRCdWZmZXIKQEAgLTE0NjcsMTQgKzE0NjgsMjIgQEAgQ29weUZyb20o Q29weUZyb21TdGF0ZSBjc3RhdGUpCiAJLyogRG9uZSwgY2xlYW4gdXAgKi8KIAllcnJvcl9jb250 ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CiAKLQlpZiAoY3N0YXRlLT5vcHRzLm9u X2Vycm9yICE9IENPUFlfT05fRVJST1JfU1RPUCAmJgotCQljc3RhdGUtPm51bV9lcnJvcnMgPiAw ICYmCisJaWYgKGNzdGF0ZS0+bnVtX2Vycm9ycyA+IDAgJiYKIAkJY3N0YXRlLT5vcHRzLmxvZ192 ZXJib3NpdHkgPj0gQ09QWV9MT0dfVkVSQk9TSVRZX0RFRkFVTFQpCi0JCWVyZXBvcnQoTk9USUNF LAotCQkJCWVycm1zZ19wbHVyYWwoIiUiIFBSSXU2NCAiIHJvdyB3YXMgc2tpcHBlZCBkdWUgdG8g ZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCi0JCQkJCQkJICAiJSIgUFJJdTY0ICIgcm93cyB3 ZXJlIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkiLAotCQkJCQkJCSAg Y3N0YXRlLT5udW1fZXJyb3JzLAotCQkJCQkJCSAgY3N0YXRlLT5udW1fZXJyb3JzKSk7CisJewor CQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfSUdOT1JFKQorCQkJ ZXJlcG9ydChOT1RJQ0UsCisJCQkJCWVycm1zZ19wbHVyYWwoIiUiIFBSSXU2NCAiIHJvdyB3YXMg c2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCisJCQkJCQkJCSAgIiUi IFBSSXU2NCAiIHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmls aXR5IiwKKwkJCQkJCQkJICBjc3RhdGUtPm51bV9lcnJvcnMsCisJCQkJCQkJCSAgY3N0YXRlLT5u dW1fZXJyb3JzKSk7CisJCWVsc2UgaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09O X0VSUk9SX1NFVF9OVUxMKQorCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCWVycm1zZ19wbHVyYWwo IiUiIFBSSXU2NCAiIHJvdyB3YXMgcmVwbGFjZWQgd2l0aCBudWxsIGR1ZSB0byBkYXRhIHR5cGUg aW5jb21wYXRpYmlsaXR5IiwKKwkJCQkJCQkJICAiJSIgUFJJdTY0ICIgcm93cyB3ZXJlIHJlcGxh Y2VkIHdpdGggbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCisJCQkJCQkJ CSAgY3N0YXRlLT5udW1fZXJyb3JzLAorCQkJCQkJCQkgIGNzdGF0ZS0+bnVtX2Vycm9ycykpOwor CX0KIAogCWlmIChiaXN0YXRlICE9IE5VTEwpCiAJCUZyZWVCdWxrSW5zZXJ0U3RhdGUoYmlzdGF0 ZSk7CkBAIC0xNjIyLDE1ICsxNjMxLDMyIEBAIEJlZ2luQ29weUZyb20oUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQljc3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsKIAogCQkv KgotCQkgKiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IENPUFlfT05fRVJST1JfSUdOT1JFLiBX ZSdsbCBhZGQgb3RoZXIKLQkJICogb3B0aW9ucyBsYXRlcgorCQkgKiBDdXJyZW50bHkgd2Ugb25s eSBzdXBwb3J0IENPUFlfT05fRVJST1JfSUdOT1JFLAorCQkgKiBDT1BZX09OX0VSUk9SX1NFVF9O VUxMLiBXZSdsbCBhZGQgb3RoZXIgb3B0aW9ucyBsYXRlcgogCQkgKi8KLQkJaWYgKGNzdGF0ZS0+ b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKKwkJaWYgKGNzdGF0ZS0+b3B0 cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSB8fAorCQkJY3N0YXRlLT5vcHRzLm9u X2Vycm9yID09IENPUFlfT05fRVJST1JfU0VUX05VTEwpCiAJCQljc3RhdGUtPmVzY29udGV4dC0+ ZGV0YWlsc193YW50ZWQgPSBmYWxzZTsKIAl9CiAJZWxzZQogCQljc3RhdGUtPmVzY29udGV4dCA9 IE5VTEw7CiAKKwlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfU0VU X05VTEwpCisJeworCQlpbnQJCQlhdHRyX2NvdW50ID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRu dW1saXN0KTsKKworCQljc3RhdGUtPmRvbWFpbl93aXRoX2NvbnN0cmFpbnQgPSBwYWxsb2MwX2Fy cmF5KGJvb2wsIGF0dHJfY291bnQpOworCisJCWZvcmVhY2hfaW50KGF0dG5vLCBjc3RhdGUtPmF0 dG51bWxpc3QpCisJCXsKKwkJCWludAkJCWkgPSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgoYXR0bm8p OworCisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0 dG5vIC0gMSk7CisKKwkJCWNzdGF0ZS0+ZG9tYWluX3dpdGhfY29uc3RyYWludFtpXSA9IERvbWFp bkhhc0NvbnN0cmFpbnRzKGF0dC0+YXR0dHlwaWQpOworCQl9CisJfQorCiAJLyogQ29udmVydCBG T1JDRV9OVUxMIG5hbWUgbGlzdCB0byBwZXItY29sdW1uIGZsYWdzLCBjaGVjayB2YWxpZGl0eSAq LwogCWNzdGF0ZS0+b3B0cy5mb3JjZV9udWxsX2ZsYWdzID0gKGJvb2wgKikgcGFsbG9jMChudW1f cGh5c19hdHRycyAqIHNpemVvZihib29sKSk7CiAJaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9udWxs X2FsbCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwppbmRleCA5NGQ2ZjQxNWEwNi4u YzM0ZGQ3ZmNkNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFy c2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKQEAgLTk1OCw2 ICs5NTgsNyBAQCBDb3B5RnJvbVRleHRMaWtlT25lUm93KENvcHlGcm9tU3RhdGUgY3N0YXRlLCBF eHByQ29udGV4dCAqZWNvbnRleHQsCiAJaW50CQkJZmxkY3Q7CiAJaW50CQkJZmllbGRubzsKIAlj aGFyCSAgICpzdHJpbmc7CisJYm9vbAkJY3VycmVudF9yb3dfZXJyb25lb3VzID0gZmFsc2U7CiAK IAl0dXBEZXNjID0gUmVsYXRpb25HZXREZXNjcihjc3RhdGUtPnJlbCk7CiAJYXR0cl9jb3VudCA9 IGxpc3RfbGVuZ3RoKGNzdGF0ZS0+YXR0bnVtbGlzdCk7CkBAIC0xMDM1LDcgKzEwMzYsOCBAQCBD b3B5RnJvbVRleHRMaWtlT25lUm93KENvcHlGcm9tU3RhdGUgY3N0YXRlLCBFeHByQ29udGV4dCAq ZWNvbnRleHQsCiAJCX0KIAogCQkvKgotCQkgKiBJZiBPTl9FUlJPUiBpcyBzcGVjaWZpZWQgd2l0 aCBJR05PUkUsIHNraXAgcm93cyB3aXRoIHNvZnQgZXJyb3JzCisJCSAqIElmIE9OX0VSUk9SIGlz IHNwZWNpZmllZCB3aXRoIElHTk9SRSwgc2tpcCByb3dzIHdpdGggc29mdCBlcnJvcnMuCisJCSAq IElmIE9OX0VSUk9SIGlzIHNwZWNpZmllZCB3aXRoIFNFVF9OVUxMLCB0cnkgdG8gcmVwbGFjZSB3 aXRoIG51bGwuCiAJCSAqLwogCQllbHNlIGlmICghSW5wdXRGdW5jdGlvbkNhbGxTYWZlKCZpbl9m dW5jdGlvbnNbbV0sCiAJCQkJCQkJCQkJc3RyaW5nLApAQCAtMTA0Niw3ICsxMDQ4LDU1IEBAIENv cHlGcm9tVGV4dExpa2VPbmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICpl Y29udGV4dCwKIAkJewogCQkJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5vbl9lcnJvciAhPSBDT1BZX09O X0VSUk9SX1NUT1ApOwogCi0JCQljc3RhdGUtPm51bV9lcnJvcnMrKzsKKwkJCWlmIChjc3RhdGUt Pm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05PUkUpCisJCQkJY3N0YXRlLT5udW1f ZXJyb3JzKys7CisJCQllbHNlIGlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9F UlJPUl9TRVRfTlVMTCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFJlc2V0IGVycm9yIHN0YXRlIHNv IHRoZSBzdWJzZXF1ZW50IElucHV0RnVuY3Rpb25DYWxsU2FmZQorCQkJCSAqIGNhbGwgKGZvciBk b21haW4gY29uc3RyYWludCBjaGVjaykgY2FuIHByb3Blcmx5IHJlcG9ydAorCQkJCSAqIHdoZXRo ZXIgaXQgc3VjY2VlZGVkIG9yIGZhaWxlZC4KKwkJCQkgKi8KKwkJCQljc3RhdGUtPmVzY29udGV4 dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsKKworCQkJCUFzc2VydChjc3RhdGUtPmRvbWFpbl93 aXRoX2NvbnN0cmFpbnQgIT0gTlVMTCk7CisKKwkJCQkvKgorCQkJCSAqIElmIHRoZSBjb2x1bW4g dHlwZSBpcyBhIGNvbnN0cmFpbmVkIGRvbWFpbiwgYW4gYWRkaXRpb25hbAorCQkJCSAqIElucHV0 RnVuY3Rpb25DYWxsU2FmZSBtYXkgYmUgbmVlZGVkIHRvIHJhaXNlIGVycm9yIGZvcgorCQkJCSAq IGRvbWFpbiBjb25zdHJhaW50IHZpb2xhdGlvbi4KKwkJCQkgKi8KKwkJCQlpZiAoIWNzdGF0ZS0+ ZG9tYWluX3dpdGhfY29uc3RyYWludFttXSB8fAorCQkJCQlJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUo JmluX2Z1bmN0aW9uc1ttXSwKKwkJCQkJCQkJCQkgIE5VTEwsCisJCQkJCQkJCQkJICB0eXBpb3Bh cmFtc1ttXSwKKwkJCQkJCQkJCQkgIGF0dC0+YXR0dHlwbW9kLAorCQkJCQkJCQkJCSAgKE5vZGUg KikgY3N0YXRlLT5lc2NvbnRleHQsCisJCQkJCQkJCQkJICAmdmFsdWVzW21dKSkKKwkJCQl7CisJ CQkJCW51bGxzW21dID0gdHJ1ZTsKKwkJCQkJdmFsdWVzW21dID0gKERhdHVtKSAwOworCQkJCX0K KwkJCQllbHNlCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX05P VF9OVUxMX1ZJT0xBVElPTiksCisJCQkJCQkJZXJybXNnKCJkb21haW4gJXMgZG9lcyBub3QgYWxs b3cgbnVsbCB2YWx1ZXMiLAorCQkJCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0eXBpb3BhcmFtc1tt XSkpLAorCQkJCQkJCWVycmRldGFpbCgiT05fRVJST1IgU0VUX05VTEwgY2Fubm90IGJlIGFwcGxp ZWQgYmVjYXVzZSBjb2x1bW4gXCIlc1wiIChkb21haW4gJXMpIGRvZXMgbm90IGFjY2VwdCBudWxs IHZhbHVlcy4iLAorCQkJCQkJCQkJICBjc3RhdGUtPmN1cl9hdHRuYW1lLAorCQkJCQkJCQkJICBm b3JtYXRfdHlwZV9iZSh0eXBpb3BhcmFtc1ttXSkpLAorCQkJCQkJCWVycmRhdGF0eXBlKHR5cGlv cGFyYW1zW21dKSk7CisKKwkJCQkvKgorCQkJCSAqIFdlIGNvdW50IG9ubHkgdGhlIG51bWJlciBv ZiByb3dzIChub3QgZmllbGRzKSB3aGVyZQorCQkJCSAqIE9OX0VSUk9SIFNFVF9OVUxMIHdhcyBh cHBsaWVkLgorCQkJCSAqLworCQkJCWlmICghY3VycmVudF9yb3dfZXJyb25lb3VzKQorCQkJCXsK KwkJCQkJY3VycmVudF9yb3dfZXJyb25lb3VzID0gdHJ1ZTsKKwkJCQkJY3N0YXRlLT5udW1fZXJy b3JzKys7CisJCQkJfQorCQkJfQogCiAJCQlpZiAoY3N0YXRlLT5vcHRzLmxvZ192ZXJib3NpdHkg PT0gQ09QWV9MT0dfVkVSQk9TSVRZX1ZFUkJPU0UpCiAJCQl7CkBAIC0xMDYzLDI0ICsxMTEzLDM3 IEBAIENvcHlGcm9tVGV4dExpa2VPbmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250 ZXh0ICplY29udGV4dCwKIAkJCQkJY2hhcgkgICAqYXR0dmFsOwogCiAJCQkJCWF0dHZhbCA9IENv cHlMaW1pdFByaW50b3V0TGVuZ3RoKGNzdGF0ZS0+Y3VyX2F0dHZhbCk7Ci0JCQkJCWVyZXBvcnQo Tk9USUNFLAotCQkJCQkJCWVycm1zZygic2tpcHBpbmcgcm93IGR1ZSB0byBkYXRhIHR5cGUgaW5j b21wYXRpYmlsaXR5IGF0IGxpbmUgJSIgUFJJdTY0ICIgZm9yIGNvbHVtbiBcIiVzXCI6IFwiJXNc IiIsCi0JCQkJCQkJCSAgIGNzdGF0ZS0+Y3VyX2xpbmVubywKLQkJCQkJCQkJICAgY3N0YXRlLT5j dXJfYXR0bmFtZSwKLQkJCQkJCQkJICAgYXR0dmFsKSk7CisKKwkJCQkJaWYgKGNzdGF0ZS0+b3B0 cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKKwkJCQkJCWVyZXBvcnQoTk9USUNF LAorCQkJCQkJCQllcnJtc2coInNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0 aWJpbGl0eSBhdCBsaW5lICUiIFBSSXU2NCAiIGZvciBjb2x1bW4gXCIlc1wiOiBcIiVzXCIiLAor CQkJCQkJCQkJICAgY3N0YXRlLT5jdXJfbGluZW5vLAorCQkJCQkJCQkJICAgY3N0YXRlLT5jdXJf YXR0bmFtZSwKKwkJCQkJCQkJCSAgIGF0dHZhbCkpOworCQkJCQllbHNlIGlmIChjc3RhdGUtPm9w dHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9TRVRfTlVMTCkKKwkJCQkJCWVyZXBvcnQoTk9U SUNFLAorCQkJCQkJCQllcnJtc2coInNldHRpbmcgdG8gbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGlu Y29tcGF0aWJpbGl0eSBhdCBsaW5lICUiIFBSSXU2NCAiIGZvciBjb2x1bW4gXCIlc1wiOiBcIiVz XCIiLAorCQkJCQkJCQkJICAgY3N0YXRlLT5jdXJfbGluZW5vLAorCQkJCQkJCQkJICAgY3N0YXRl LT5jdXJfYXR0bmFtZSwKKwkJCQkJCQkJCSAgIGF0dHZhbCkpOwogCQkJCQlwZnJlZShhdHR2YWwp OwogCQkJCX0KIAkJCQllbHNlCi0JCQkJCWVyZXBvcnQoTk9USUNFLAotCQkJCQkJCWVycm1zZygi c2tpcHBpbmcgcm93IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgJSIg UFJJdTY0ICIgZm9yIGNvbHVtbiBcIiVzXCI6IG51bGwgaW5wdXQiLAotCQkJCQkJCQkgICBjc3Rh dGUtPmN1cl9saW5lbm8sCi0JCQkJCQkJCSAgIGNzdGF0ZS0+Y3VyX2F0dG5hbWUpKTsKLQorCQkJ CXsKKwkJCQkJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9S RSkKKwkJCQkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkJCQllcnJtc2coInNraXBwaW5nIHJvdyBk dWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lICUiIFBSSXU2NCAiIGZvciBj b2x1bW4gXCIlc1wiOiBudWxsIGlucHV0IiwKKwkJCQkJCQkJCSAgIGNzdGF0ZS0+Y3VyX2xpbmVu bywKKwkJCQkJCQkJCSAgIGNzdGF0ZS0+Y3VyX2F0dG5hbWUpKTsKKwkJCQl9CiAJCQkJLyogcmVz ZXQgcmVsbmFtZV9vbmx5ICovCiAJCQkJY3N0YXRlLT5yZWxuYW1lX29ubHkgPSBmYWxzZTsKIAkJ CX0KIAotCQkJcmV0dXJuIHRydWU7CisJCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENP UFlfT05fRVJST1JfSUdOT1JFKQorCQkJCXJldHVybiB0cnVlOworCQkJZWxzZSBpZiAoY3N0YXRl LT5vcHRzLm9uX2Vycm9yID09IENPUFlfT05fRVJST1JfU0VUX05VTEwpCisJCQkJY29udGludWU7 CiAJCX0KIAogCQljc3RhdGUtPmN1cl9hdHRuYW1lID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4u YwppbmRleCA4YjkxYmMwMDA2Mi4uZTJjNzJiZDMwNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMK QEAgLTM0MjUsNyArMzQyNSw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lk LAogCiAJCQkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST00gZmlsZW5hbWUgV0lUSCAoT05fRVJS T1IgKi8KIAkJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJPTl9FUlJPUiIpKQotCQkJCUNPTVBMRVRF X1dJVEgoInN0b3AiLCAiaWdub3JlIik7CisJCQkJQ09NUExFVEVfV0lUSCgic3RvcCIsICJpZ25v cmUiLCAic2V0X251bGwiKTsKIAogCQkJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NIGZpbGVu YW1lIFdJVEggKExPR19WRVJCT1NJVFkgKi8KIAkJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJMT0df VkVSQk9TSVRZIikpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9z cmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXggNDNjMjU4MDUzOWYuLjg3NzIwMmFmNjdi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvY29weS5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgZW51bSBDb3B5T25F cnJvckNob2ljZQogewogCUNPUFlfT05fRVJST1JfU1RPUCA9IDAsCQkvKiBpbW1lZGlhdGVseSB0 aHJvdyBlcnJvcnMsIGRlZmF1bHQgKi8KIAlDT1BZX09OX0VSUk9SX0lHTk9SRSwJCS8qIGlnbm9y ZSBlcnJvcnMgKi8KKwlDT1BZX09OX0VSUk9SX1NFVF9OVUxMLAkJLyogc2V0IGVycm9yIGZpZWxk IHRvIG51bGwgKi8KIH0gQ29weU9uRXJyb3JDaG9pY2U7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvY29weWZyb21faW50ZXJuYWwuaAppbmRleCA4MjJlZjMzY2Y2OS4uZjg5MmMzNDMxNTcgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlmcm9tX2ludGVybmFsLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWZyb21faW50ZXJuYWwuaApAQCAtMTA4LDYgKzEwOCwx MyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5RnJvbVN0YXRlRGF0YQogCQkJCQkJCQkgKiBhdHQgKi8K IAlib29sCSAgICpkZWZhdWx0czsJCS8qIGlmIERFRkFVTFQgbWFya2VyIHdhcyBmb3VuZCBmb3IK IAkJCQkJCQkJICogY29ycmVzcG9uZGluZyBhdHQgKi8KKworCS8qCisJICogVHJ1ZSBpZiB0aGUg Y29ycmVzcG9uZGluZyBhdHRyaWJ1dGUncyBpcyBhIGNvbnN0cmFpbmVkIGRvbWFpbi4gVGhpcwor CSAqIHdpbGwgYmUgcG9wdWxhdGVkIG9ubHkgd2hlbiBPTl9FUlJPUiBpcyBTRVRfTlVMTCwgb3Ro ZXJ3aXNlIE5VTEwuCisJICovCisJYm9vbAkgICAqZG9tYWluX3dpdGhfY29uc3RyYWludDsKKwog CWJvb2wJCXZvbGF0aWxlX2RlZmV4cHJzOwkvKiBpcyBhbnkgb2YgZGVmZXhwcnMgdm9sYXRpbGU/ ICovCiAJTGlzdAkgICAqcmFuZ2VfdGFibGU7CS8qIHNpbmdsZSBlbGVtZW50IGxpc3Qgb2YgUmFu Z2VUYmxFbnRyeSAqLwogCUxpc3QJICAgKnJ0ZXBlcm1pbmZvczsJLyogc2luZ2xlIGVsZW1lbnQg bGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb3B5Mi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91 dAppbmRleCAzMTQ1YjMxNGU0OC4uMDQ1YzBmODEyNDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y29weTIub3V0CkBAIC04MSw2ICs4MSwxMCBAQCBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3Ig aWdub3JlLCBvbl9lcnJvciBpZ25vcmUpOwogRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRh bnQgb3B0aW9ucwogTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgaWdub3JlLCBv bl9lcnJvciBpZ25vcmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCitDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3Igc2V0X251bGwsIG9uX2Vycm9yIHNl dF9udWxsKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKK0xJTkUg MTogQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF9udWxsLCBvbl9lcnJvciBzZXRfbnVs bCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogQ09Q WSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgZGVmYXVsdCwgbG9nX3ZlcmJvc2l0eSB2ZXJi b3NlKTsKIEVSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKIExJTkUgMTog Q09QWSB4IGZyb20gc3RkaW4gKGxvZ192ZXJib3NpdHkgZGVmYXVsdCwgbG9nX3ZlcmJvc2l0eSB2 ZXJiLi4uCkBAIC05Miw2ICs5NiwxMCBAQCBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFS WSwgbnVsbCAneCcpOwogRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBOVUxMIGluIEJJTkFSWSBtb2Rl CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgaWdub3JlKTsKIEVS Uk9SOiAgb25seSBPTl9FUlJPUiBTVE9QIGlzIGFsbG93ZWQgaW4gQklOQVJZIG1vZGUKK0NPUFkg eCBmcm9tIHN0ZGluIChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciBzZXRfbnVsbCk7CitFUlJPUjog IG9ubHkgT05fRVJST1IgU1RPUCBpcyBhbGxvd2VkIGluIEJJTkFSWSBtb2RlCitDT1BZIHggZnJv bSBzdGRpbiAob25fZXJyb3Igc2V0X251bGwsIHJlamVjdF9saW1pdCAyKTsKK0VSUk9SOiAgQ09Q WSBSRUpFQ1RfTElNSVQgcmVxdWlyZXMgT05fRVJST1IgdG8gYmUgc2V0IHRvIElHTk9SRQogQ09Q WSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09QWSBPTl9F UlJPUiAidW5zdXBwb3J0ZWQiIG5vdCByZWNvZ25pemVkCiBMSU5FIDE6IENPUFkgeCBmcm9tIHN0 ZGluIChvbl9lcnJvciB1bnN1cHBvcnRlZCk7CkBAIC0xMjQsNiArMTMyLDEwIEBAIENPUFkgeCB0 byBzdGRvdXQgKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAg Q09QWSBPTl9FUlJPUiBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgVE8KIExJTkUgMTogQ09QWSB4 IHRvIHN0ZG91dCAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitDT1BZIHggdG8gc3Rkb3V0IChv bl9lcnJvciBzZXRfbnVsbCk7CitFUlJPUjogIENPUFkgT05fRVJST1IgY2Fubm90IGJlIHVzZWQg d2l0aCBDT1BZIFRPCitMSU5FIDE6IENPUFkgeCB0byBzdGRvdXQgKG9uX2Vycm9yIHNldF9udWxs KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXgogQ09QWSB4IGZyb20gc3RkaW4gKGxvZ192 ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwogRVJST1I6ICBDT1BZIExPR19WRVJCT1NJVFkgInVuc3Vw cG9ydGVkIiBub3QgcmVjb2duaXplZAogTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3Zl cmJvc2l0eSB1bnN1cHBvcnRlZCk7CkBAIC03ODIsNiArNzk0LDQ5IEBAIENPTlRFWFQ6ICBDT1BZ IGNoZWNrX2lnbl9lcnIKIE5PVElDRTogIHNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBlIGlu Y29tcGF0aWJpbGl0eSBhdCBsaW5lIDggZm9yIGNvbHVtbiAiayI6ICJhIgogQ09OVEVYVDogIENP UFkgY2hlY2tfaWduX2VycgogTk9USUNFOiAgNiByb3dzIHdlcmUgc2tpcHBlZCBkdWUgdG8gZGF0 YSB0eXBlIGluY29tcGF0aWJpbGl0eQorQ1JFQVRFIERPTUFJTiBkX2ludF9ub3RfbnVsbCBBUyBp bnRlZ2VyIE5PVCBOVUxMIENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlOIGRfaW50X3Bv c2l0aXZlX21heWJlX251bGwgQVMgaW50ZWdlciBDSEVDSyh2YWx1ZSA+IDApOworQ1JFQVRFIFRB QkxFIHRfb25fZXJyb3JfbnVsbCAoYSBkX2ludF9ub3RfbnVsbCwgYiBkX2ludF9wb3NpdGl2ZV9t YXliZV9udWxsLCBjIGludGVnZXIpOworXHBzZXQgbnVsbCBOVUxMCitDT1BZIHRfb25fZXJyb3Jf bnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxsKTsgLS1mYWlsCitFUlJPUjog IGRvbWFpbiBkX2ludF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworREVUQUlM OiAgT05fRVJST1IgU0VUX05VTEwgY2Fubm90IGJlIGFwcGxpZWQgYmVjYXVzZSBjb2x1bW4gImEi IChkb21haW4gZF9pbnRfbm90X251bGwpIGRvZXMgbm90IGFjY2VwdCBudWxsIHZhbHVlcy4KK0NP TlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAxLCBjb2x1bW4gYTogbnVsbCBpbnB1 dAorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfbnVs bCk7IC0tZmFpbAorRVJST1I6ICBkb21haW4gZF9pbnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cg bnVsbCB2YWx1ZXMKK0RFVEFJTDogIE9OX0VSUk9SIFNFVF9OVUxMIGNhbm5vdCBiZSBhcHBsaWVk IGJlY2F1c2UgY29sdW1uICJhIiAoZG9tYWluIGRfaW50X25vdF9udWxsKSBkb2VzIG5vdCBhY2Nl cHQgbnVsbCB2YWx1ZXMuCitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwsIGxpbmUgMSwg Y29sdW1uIGE6ICJzcyIKK0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25f ZXJyb3Igc2V0X251bGwpOyAtLWZhaWwKK0VSUk9SOiAgZG9tYWluIGRfaW50X25vdF9udWxsIGRv ZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitERVRBSUw6ICBPTl9FUlJPUiBTRVRfTlVMTCBjYW5u b3QgYmUgYXBwbGllZCBiZWNhdXNlIGNvbHVtbiAiYSIgKGRvbWFpbiBkX2ludF9ub3RfbnVsbCkg ZG9lcyBub3QgYWNjZXB0IG51bGwgdmFsdWVzLgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9u dWxsLCBsaW5lIDEsIGNvbHVtbiBhOiAiLTEiCistLWZhaWwsIGxlc3MgZGF0YS4KK0NPUFkgdF9v bl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAoZGVsaW1pdGVyICcsJywgb25fZXJyb3Igc2V0 X251bGwpOworRVJST1I6ICBtaXNzaW5nIGRhdGEgZm9yIGNvbHVtbiAiYyIKK0NPTlRFWFQ6ICBD T1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAxOiAiMSwxIgorLS1mYWlsLCBleHRyYSBkYXRhLgor Q09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBTVERJTiBXSVRIIChkZWxpbWl0ZXIgJywnLCBvbl9l cnJvciBzZXRfbnVsbCk7CitFUlJPUjogIGV4dHJhIGRhdGEgYWZ0ZXIgbGFzdCBleHBlY3RlZCBj b2x1bW4KK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwgbGluZSAxOiAiMSwyLDMsNCIK K0NPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X251bGws IGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7IC0tb2sKK05PVElDRTogIHNldHRpbmcgdG8gbnVsbCBk dWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBsaW5lIDEgZm9yIGNvbHVtbiAiYiI6 ICJ4MSIKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbAorTk9USUNFOiAgc2V0dGluZyB0 byBudWxsIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IGF0IGxpbmUgMSBmb3IgY29s dW1uICJjIjogInl4IgorQ09OVEVYVDogIENPUFkgdF9vbl9lcnJvcl9udWxsCitOT1RJQ0U6ICBz ZXR0aW5nIHRvIG51bGwgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkgYXQgbGluZSAy IGZvciBjb2x1bW4gImIiOiAiengiCitDT05URVhUOiAgQ09QWSB0X29uX2Vycm9yX251bGwKK05P VElDRTogIHNldHRpbmcgdG8gbnVsbCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBh dCBsaW5lIDMgZm9yIGNvbHVtbiAiYyI6ICJlYSIKK0NPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3Jf bnVsbAorTk9USUNFOiAgMyByb3dzIHdlcmUgcmVwbGFjZWQgd2l0aCBudWxsIGR1ZSB0byBkYXRh IHR5cGUgaW5jb21wYXRpYmlsaXR5CitTRUxFQ1QgKiBGUk9NIHRfb25fZXJyb3JfbnVsbCBPUkRF UiBCWSBhOworIGEgIHwgIGIgICB8ICBjICAgCistLS0tKy0tLS0tLSstLS0tLS0KKyAxMCB8IE5V TEwgfCBOVUxMCisgMTEgfCBOVUxMIHwgICAxMgorIDEzIHwgICAxNCB8IE5VTEwKKygzIHJvd3Mp CisKK1xwc2V0IG51bGwgJycKIC0tIHRlc3RzIGZvciBvbl9lcnJvciBvcHRpb24gd2l0aCBsb2df dmVyYm9zaXR5IGFuZCBudWxsIGNvbnN0cmFpbnQgdmlhIGRvbWFpbgogQ1JFQVRFIERPTUFJTiBk Y2hlY2tfaWduX2VycjIgdmFyY2hhcigxNSkgTk9UIE5VTEw7CiBDUkVBVEUgVEFCTEUgY2hlY2tf aWduX2VycjIgKG4gaW50LCBtIGludFtdLCBrIGludCwgbCBkY2hlY2tfaWduX2VycjIpOwpAQCAt ODQxLDYgKzg5Niw5IEBAIERST1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90YmxfdmlldzsKIERS T1AgVklFVyBpbnN0ZWFkX29mX2luc2VydF90Ymxfdmlld18yOwogRFJPUCBGVU5DVElPTiBmdW5f aW5zdGVhZF9vZl9pbnNlcnRfdGJsKCk7CiBEUk9QIFRBQkxFIGNoZWNrX2lnbl9lcnI7CitEUk9Q IFRBQkxFIHRfb25fZXJyb3JfbnVsbDsKK0RST1AgRE9NQUlOIGRfaW50X25vdF9udWxsOworRFJP UCBET01BSU4gZF9pbnRfcG9zaXRpdmVfbWF5YmVfbnVsbDsKIERST1AgVEFCTEUgY2hlY2tfaWdu X2VycjI7CiBEUk9QIERPTUFJTiBkY2hlY2tfaWduX2VycjI7CiBEUk9QIFRBQkxFIGhhcmRfZXJy OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weTIuc3FsCmluZGV4IDY2NDM1MTY3NTAwLi41ZTlmNmFmMmM1YyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NvcHkyLnNxbApAQCAtNjcsMTIgKzY3LDE1IEBAIENPUFkgeCBmcm9tIHN0ZGlu IChmb3JjZV9udWxsIChhKSwgZm9yY2VfbnVsbCAoYikpOwogQ09QWSB4IGZyb20gc3RkaW4gKGNv bnZlcnRfc2VsZWN0aXZlbHkgKGEpLCBjb252ZXJ0X3NlbGVjdGl2ZWx5IChiKSk7CiBDT1BZIHgg ZnJvbSBzdGRpbiAoZW5jb2RpbmcgJ3NxbF9hc2NpaScsIGVuY29kaW5nICdzcWxfYXNjaWknKTsK IENPUFkgeCBmcm9tIHN0ZGluIChvbl9lcnJvciBpZ25vcmUsIG9uX2Vycm9yIGlnbm9yZSk7CitD T1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3Igc2V0X251bGwsIG9uX2Vycm9yIHNldF9udWxsKTsK IENPUFkgeCBmcm9tIHN0ZGluIChsb2dfdmVyYm9zaXR5IGRlZmF1bHQsIGxvZ192ZXJib3NpdHkg dmVyYm9zZSk7CiAKIC0tIGluY29ycmVjdCBvcHRpb25zCiBDT1BZIHggZnJvbSBzdGRpbiAoZm9y bWF0IEJJTkFSWSwgZGVsaW1pdGVyICcsJyk7CiBDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJ TkFSWSwgbnVsbCAneCcpOwogQ09QWSB4IGZyb20gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vy cm9yIGlnbm9yZSk7CitDT1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IEJJTkFSWSwgb25fZXJyb3Ig c2V0X251bGwpOworQ09QWSB4IGZyb20gc3RkaW4gKG9uX2Vycm9yIHNldF9udWxsLCByZWplY3Rf bGltaXQgMik7CiBDT1BZIHggZnJvbSBzdGRpbiAob25fZXJyb3IgdW5zdXBwb3J0ZWQpOwogQ09Q WSB4IGZyb20gc3RkaW4gKGZvcm1hdCBURVhULCBmb3JjZV9xdW90ZShhKSk7CiBDT1BZIHggZnJv bSBzdGRpbiAoZm9ybWF0IFRFWFQsIGZvcmNlX3F1b3RlICopOwpAQCAtODcsNiArOTAsNyBAQCBD T1BZIHggZnJvbSBzdGRpbiAoZm9ybWF0IFRFWFQsIGZvcmNlX251bGwgKik7CiBDT1BZIHggdG8g c3Rkb3V0IChmb3JtYXQgQ1NWLCBmb3JjZV9udWxsKGEpKTsKIENPUFkgeCB0byBzdGRvdXQgKGZv cm1hdCBDU1YsIGZvcmNlX251bGwgKik7CiBDT1BZIHggdG8gc3Rkb3V0IChmb3JtYXQgQklOQVJZ LCBvbl9lcnJvciB1bnN1cHBvcnRlZCk7CitDT1BZIHggdG8gc3Rkb3V0IChvbl9lcnJvciBzZXRf bnVsbCk7CiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSB1bnN1cHBvcnRlZCk7CiBD T1BZIHggZnJvbSBzdGRpbiB3aXRoIChyZWplY3RfbGltaXQgMSk7CiBDT1BZIHggZnJvbSBzdGRp biB3aXRoIChvbl9lcnJvciBpZ25vcmUsIHJlamVjdF9saW1pdCAwKTsKQEAgLTU0MCw2ICs1NDQs NDIgQEAgYQl7Mn0JMgogOAl7OH0JOAogXC4KIAorQ1JFQVRFIERPTUFJTiBkX2ludF9ub3RfbnVs bCBBUyBpbnRlZ2VyIE5PVCBOVUxMIENIRUNLKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlOIGRf aW50X3Bvc2l0aXZlX21heWJlX251bGwgQVMgaW50ZWdlciBDSEVDSyh2YWx1ZSA+IDApOworQ1JF QVRFIFRBQkxFIHRfb25fZXJyb3JfbnVsbCAoYSBkX2ludF9ub3RfbnVsbCwgYiBkX2ludF9wb3Np dGl2ZV9tYXliZV9udWxsLCBjIGludGVnZXIpOworCitccHNldCBudWxsIE5VTEwKK0NPUFkgdF9v bl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X251bGwpOyAtLWZhaWwK K1xOCTExCTEzCitcLgorCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9u X2Vycm9yIHNldF9udWxsKTsgLS1mYWlsCitzcwkxMQkxNAorXC4KKworQ09QWSB0X29uX2Vycm9y X251bGwgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfbnVsbCk7IC0tZmFpbAorLTEJMTEJ MTMKK1wuCisKKy0tZmFpbCwgbGVzcyBkYXRhLgorQ09QWSB0X29uX2Vycm9yX251bGwgRlJPTSBT VERJTiBXSVRIIChkZWxpbWl0ZXIgJywnLCBvbl9lcnJvciBzZXRfbnVsbCk7CisxLDEKK1wuCist LWZhaWwsIGV4dHJhIGRhdGEuCitDT1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEgg KGRlbGltaXRlciAnLCcsIG9uX2Vycm9yIHNldF9udWxsKTsKKzEsMiwzLDQKK1wuCisKK0NPUFkg dF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X251bGwsIGxvZ192 ZXJib3NpdHkgdmVyYm9zZSk7IC0tb2sKKzEwCXgxCXl4CisxMQl6eAkxMgorMTMJMTQJZWEKK1wu CisKK1NFTEVDVCAqIEZST00gdF9vbl9lcnJvcl9udWxsIE9SREVSIEJZIGE7CisKK1xwc2V0IG51 bGwgJycKKwogLS0gdGVzdHMgZm9yIG9uX2Vycm9yIG9wdGlvbiB3aXRoIGxvZ192ZXJib3NpdHkg YW5kIG51bGwgY29uc3RyYWludCB2aWEgZG9tYWluCiBDUkVBVEUgRE9NQUlOIGRjaGVja19pZ25f ZXJyMiB2YXJjaGFyKDE1KSBOT1QgTlVMTDsKIENSRUFURSBUQUJMRSBjaGVja19pZ25fZXJyMiAo biBpbnQsIG0gaW50W10sIGsgaW50LCBsIGRjaGVja19pZ25fZXJyMik7CkBAIC02MDksNiArNjQ5 LDkgQEAgRFJPUCBWSUVXIGluc3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3OwogRFJPUCBWSUVXIGlu c3RlYWRfb2ZfaW5zZXJ0X3RibF92aWV3XzI7CiBEUk9QIEZVTkNUSU9OIGZ1bl9pbnN0ZWFkX29m X2luc2VydF90YmwoKTsKIERST1AgVEFCTEUgY2hlY2tfaWduX2VycjsKK0RST1AgVEFCTEUgdF9v bl9lcnJvcl9udWxsOworRFJPUCBET01BSU4gZF9pbnRfbm90X251bGw7CitEUk9QIERPTUFJTiBk X2ludF9wb3NpdGl2ZV9tYXliZV9udWxsOwogRFJPUCBUQUJMRSBjaGVja19pZ25fZXJyMjsKIERS T1AgRE9NQUlOIGRjaGVja19pZ25fZXJyMjsKIERST1AgVEFCTEUgaGFyZF9lcnI7Ci0tIAoyLjM0 LjEKCg== --000000000000a21a0d064a5c2d8b--