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 1vpIGb-0058r7-0m for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Feb 2026 03:48:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vpIGa-009Adu-0W for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Feb 2026 03:48:51 +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 1vpIGZ-009Adk-1R for pgsql-hackers@lists.postgresql.org; Mon, 09 Feb 2026 03:48:51 +0000 Received: from mail-vs1-xe35.google.com ([2607:f8b0:4864:20::e35]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vpIGU-00000001DYP-3BOt for pgsql-hackers@postgresql.org; Mon, 09 Feb 2026 03:48:50 +0000 Received: by mail-vs1-xe35.google.com with SMTP id ada2fe7eead31-5eea9f9c29bso1576239137.2 for ; Sun, 08 Feb 2026 19:48:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770608926; cv=none; d=google.com; s=arc-20240605; b=CYxTu9rKReThBgor7WTNQR0L849utvjW9a9mxbvHl+7Sq1tTC7G/YzjCHw2Nxdowxr 4M4GH/NQd5A/+AIe6rccyO+ALjkmvtaPHUzs/h4LuTf0xM6Yd5i3BCQj4/SNdaBAsQn9 m162JqDy+ao1/zvGFz+7BVrlRUeNxsPa1AU9kxB4eJR0CeuDL7SZStJEZ2UUDJdAOCDI HM3Jv+kOD5DbZSYTmAmpj0GvyiFEkrMCqcs0OXaReySLHKMPAYyHZZLW1P4nM9ycsv69 TjxdHS3VV4OYFQjY85WOqOZW7RY9/cEu9sTBxdNDkXf6OiEwm6SZ0g6sUsAwp8QnPvgv zcrA== 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=Zv1qHw5ccvc0ff/aGsXkNuY/lXLbQXsfADHFjSuGTMc=; fh=M6srkyGuBDKX7wafjzL7Xorck/LlP3SvDJy8oKqRVHM=; b=IbrOUsxo8JbgrQNtqHWPURzClqPMgGiemZyPnOgZN2RQwrqMdFvuNinrDz6qAfQCro OoRVTXWNqDau8D84o7v2MKm/wjz/fTy0AemymrcPIjGmfeHMc9gOWyQeeRG7QrF2teTl Z03oacxFjXxgMSfkbDFXEgQP9RQtab25AOuEmvRZ9PedJqyVKXsiYkm9g3ybrdJql/Cn qoVNHBJC/ahV0cuR0aojyWMLAwhNW/tAzYJAubsoyf8USkvj0g9jZnxJs9JHrDFSXkz9 RGGYUkzg7vo9xuyuWxkLiSYPR8IDT6DubokNGfH4+YWXTtQ1oF3VMHbibYqcI1YD0Q0G Z6tQ==; darn=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=1770608926; x=1771213726; darn=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=Zv1qHw5ccvc0ff/aGsXkNuY/lXLbQXsfADHFjSuGTMc=; b=fouhgTi7LEo2rzdzoa+ZGfq7Mj8i0eW2ccKKCbVeVmUO61YAmGscfqDpFBsU31GknL rU66LOetMfz+bypCkFGATg4zzI9LnqwvB35NrEyS/QXR49nJohcl+E7+VjjFdbHEwTLP uGB/QPlAcpcVcv/Ist87wO/7MWia41sDv/m3k9TxQt84kFFNiv6+9hnaBiBmjb69MEmp eZFOgwC5LzxShC3dXIwXbKwvCvbfV3Q6TYE2PoGShR5e7HbpRRg/Pvi6emYEg5cN6Vk9 TL767/PQ/gIBp5mGikOnwjzQb486bR4a4kt1VaS/usWKL5BjI+pd4PdYtrXZIEy2DyW2 iCJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770608926; x=1771213726; 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=Zv1qHw5ccvc0ff/aGsXkNuY/lXLbQXsfADHFjSuGTMc=; b=vjHC5zML22Q8zVNi3Oai9rXK4XJRE6AUm9tYKtxNhq3tC29BbNuNK9HpsEq5uLFcBM t4zA0ZOZ8aab6LQ0cEOtkRHIJaMp63ISa8FlIXa33vE2h07iiCHeEMYuCoswgxFSYJ3O qOHCk9JpLw5IKMOihjjWaUIc76cM1M/+8OXL4vPwz8OX0tDq5jqmVxoxW9DUCHFUibGm AQiOV6XQ7g6081Ar6PYwSkDRHIQPDsl6FQ1Yr6v+FhJxOYwi/dRxYugPXHVyfvkWis4u TDAhuf2q3Fqx9GG6oxHLE14cyEDl+UVm1E+DhwwkXugj2aZI/ADWcWEQ6zCwTcytFI2C Fe0A== X-Forwarded-Encrypted: i=1; AJvYcCWI9u2c8oykcHRemgFXyELaJ240CM5rdbE1c23ZTT9eHOaipl/qOmc2WKaid5o+zxXN1LXLZPPVvbk/uCm6@postgresql.org X-Gm-Message-State: AOJu0YyKUwTWiduXQXzYMDTjEymsjHWzZTRNNx10+Sj0O19/MRl3yCHq WhtXKs4g+85lDPlYetMWrh6ew8CMZIA80XS2Cp1WfLFhAGHGLoBCT9Q4Otz4tDmRVpKT0aU2RFm SxamcWmYMDq6QcC9gjK+T0cAdDpVg0vM= X-Gm-Gg: AZuq6aLKcWv0/RilhCRbfBP+vITVsa8GEd6Q+0BlcpOdnXu6nGIUZ0du/+UNGXMW5+b eXHO4C74hTqpGhlGzYn5roItiLDsCHguPtQ2Uy0fLku+ku/Lrxw4/e61LszTeDjauURa08y0Sra rBslS86bxxkP5lIC1JP57k1dZ/9l7Mg86VJSETZM7E46pKwpF4yuN6AzsH6ccQ2Y19H7v/I/XbG DDoEpineqo99ROSrl08dpNLK7gb5YbzvKFZ081vTFpgMay2kT0AFrl8Ngp32HJa9Uit7pwMFFnj ks1SgkNagQJ/fvhbQR41AuqaauwSdSfkWqqahQadaB3TsQSFLuVkhLiOY0dBnkklBYTLWOr9Sos 9XLzr31enjU0FcW2VjsU1ltgFZ8hOlbfTjH71dOeCVa/asQswZXjQ0Apd5K4v0AkKAoC4fGmTB6 9dVbTrvgNOSQ== X-Received: by 2002:a05:6102:2929:b0:5f9:4f33:2883 with SMTP id ada2fe7eead31-5fae8bee2femr3349743137.28.1770608925745; Sun, 08 Feb 2026 19:48:45 -0800 (PST) MIME-Version: 1.0 References: <8620df11-96e4-4ca3-8f3c-33a479260961@joeconway.com> <4162f7f7-6fd6-4720-98e2-89f80e3de2ed@joeconway.com> <153b71b8-b6fb-4930-aaff-a7334cb3f6d6@joeconway.com> <8ef5f5d6-38db-4624-8eef-2d96c9eba9d4@joeconway.com> In-Reply-To: From: jian he Date: Mon, 9 Feb 2026 11:48:09 +0800 X-Gm-Features: AZwV_Qh2rqVXVFYMNfpA_zhU6I0zmUITzJQtyO2Z4GjTfNoHWLIJWpbqjU1DiEQ Message-ID: Subject: Re: Emitting JSON to file using COPY TO To: Junwang Zhao Cc: Florents Tselai , Joe Conway , "Andrey M. Borodin" , Dean Rasheed , Daniel Verite , Andrew Dunstan , Davin Shearer , PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000000e4edf064a5c0416" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000e4edf064a5c0416 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Feb 7, 2026 at 9:27=E2=80=AFPM Junwang Zhao wro= te: > > Here are some comments on v23: > > 0001: The refactor looks straightforward to me. Introducing a format > field should make future extensions easier. One suggestion is that we > could add some helper macros around format, for example: > > #define IS_FORMAT_CSV(format) (format =3D=3D COPY_FORMAT_CSV) > #define IS_FORMAT_TEXT_LIKE(format) \ > (format =3D=3D COPY_FORMAT_TEXT || format =3D=3D COPY_FORMAT_CSV) > > I think this would improve readability. Personally, I don't like marcos.... > > 0002: Since you have moved the `CopyFormat enum` into 0001, the > following commit msg should be rephrased. > > The CopyFormat enum was originally contributed by Joel Jacobson > joel@compiler.org, later refactored by Jian He to address various issues,= and > further adapted by Junwang Zhao to support the newly introduced CopyToRou= tine > struct (commit 2e4127b6d2). > > - if (opts_out->format =3D=3D COPY_FORMAT_BINARY && opts_out->delim) > - ereport(ERROR, > - (errcode(ERRCODE_SYNTAX_ERROR), > - /*- translator: %s is the name of a COPY option, e.g. ON_ERROR */ > - errmsg("cannot specify %s in BINARY mode", "DELIMITER"))); > + if (opts_out->delim) > + { > + if (opts_out->format =3D=3D COPY_FORMAT_BINARY) > + ereport(ERROR, > + errcode(ERRCODE_SYNTAX_ERROR), > + /*- translator: %s is the name of a COPY option, e.g. ON_ERROR */ > + errmsg("cannot specify %s in BINARY mode", "DELIMITER")); > + else if (opts_out->format =3D=3D COPY_FORMAT_JSON) > + ereport(ERROR, > + errcode(ERRCODE_SYNTAX_ERROR), > + errmsg("cannot specify %s in JSON mode", "DELIMITER")); > + } > > Can we add a function that converts CopyFormat to a string? Treating > CopyFormat as %s in error messages would make the code shorter. > However, I'm not sure whether this aligns with translation > conventions, correct me if I'm wrong. > I don=E2=80=99t think this is worth the added complexity. That said, I tried to simplify the code and changed it to: if (opts_out->delim && (opts_out->format =3D=3D COPY_FORMAT_BINARY || opts_out->format =3D=3D COPY_FORMAT_JSON)) ereport(ERROR, errcode(ERRCODE_SYNTAX_ERROR), opts_out->format =3D=3D COPY_FORMAT_BINARY ? errmsg("cannot specify %s in BINARY mode", "DELIMITER") : errmsg("cannot specify %s in JSON mode", "DELIMITER")); > - * CSV and text formats share the same TextLike routines except for the > + * CSV and text, json formats share the same TextLike routines except fo= r the > > I'd suggest rewording to `CSV, text and json ...`. The same applied to > other parts in this patch. > sure. > 0003: The commit message includes some changes(adapt the newly > introduced CopyToRoutine) that actually belong to 0002; it would be > better to remove them from this commit. > 0002 commit message: """ This introduces the JSON format option for the COPY TO command, allowing us= ers to export query results or table data directly as a single JSON object or a stream of JSON objects. The JSON format is currently supported only for COPY TO operations; it is not available for COPY FROM. JSON format is incompatible with some standard text/CSV parsing or formatting options, including: - HEADER - DEFAULT - NULL - DELIMITER - FORCE QUOTE / FORCE NOT NULL Regression tests covering valid JSON exports and error handling for incompatible options have been added to src/test/regress/sql/copy.sql. """ 0003 commit message: """ Add option force_array for COPY JSON FORMAT This adds the force_array option, which is available exclusively when using COPY TO with the JSON format. When enabled, this option wraps the output in a top-level JSON array (enclosed in square brackets with comma-separated elements), making the entire result a valid single JSON value. Without this option, the default behavior is to output a stream of independent JSON objects. Attempting to use this option with COPY FROM or with formats other than JSON will raise an error. """ > + if (cstate->json_row_delim_needed && cstate->opts.force_array) > + CopySendChar(cstate, ','); > + else if (cstate->opts.force_array) > + { > + /* first row needs no delimiter */ > + CopySendChar(cstate, ' '); > + cstate->json_row_delim_needed =3D true; > + } > > can we do this: > > if (cstate->opts.force_array) > { > if (cstate->json_row_delim_needed) > CopySendChar(cstate, ','); > else > { > /* first row needs no delimiter */ > CopySendChar(cstate, ' '); > cstate->json_row_delim_needed =3D true; > } > } > good suggestion. If more people think WRAP_ARRAY is better than FORCE_ARRAY, we can switch to it accordingly. The change itself is quite straightforward. -- jian https://www.enterprisedb.com --0000000000000e4edf064a5c0416 Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Disposition: attachment; filename="v24-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlemt5k12 RnJvbSAxY2RlMmIxYjdkNWE4ZTkxNTBkOTBlY2Y0ODA3ZGE3ZGNhOTM0ZGFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjEgSmFuIDIwMjYgMTg6Mzg6MjQgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NCAxLzNdIGludHJvZHVjZSBDb3B5Rm9ybWF0IHJlZmFjdG9yIENvcHlGb3JtYXRPcHRpb25zCgpD dXJyZW50bHksIENPUFkgY29tbWFuZCBmb3JtYXQgaXMgZGV0ZXJtaW5lZCBieSB0d28gYm9vbGVh bnMgKGJpbmFyeSwgY3N2X21vZGUpCmZpZWxkcyBpbiBDb3B5Rm9ybWF0T3B0aW9ucyBUaGlzIGFw cHJvYWNoLCB3aGlsZSBmdW5jdGlvbmFsLCBpc24ndCBpZGVhbCBmb3IKZnV0dXJlIG90aGVyIGlt cGxlbWVudCBvdGhlciBmb3JtYXQuCgpUbyBzaW1wbGlmeSBhZGRpbmcgbmV3IGZvcm1hdHMsIHdl J3ZlIGludHJvZHVjZWQgYW4gZW51bSBDb3B5Rm9ybWF0LiBUaGlzIG1ha2VzCnRoZSBjb2RlIGNs ZWFuZXIgYW5kIG1vcmUgbWFpbnRhaW5hYmxlLCBhbGxvd2luZyBmb3IgZWFzaWVyIGludGVncmF0 aW9uIG9mCmFkZGl0aW9uYWwgZm9ybWF0cyBkb3duIHRoZSBsaW5lLgoKVGhlIENvcHlGb3JtYXQg ZW51bSB3YXMgb3JpZ2luYWxseSBjb250cmlidXRlZCBieSBKb2VsIEphY29ic29uIDxqb2VsQGNv bXBpbGVyLm9yZz4sCmxhdGVyIHJlZmFjdG9yZWQgYnkgSmlhbiBIZSB0byBhZGRyZXNzIHZhcmlv dXMgaXNzdWVzLgoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUx2ZlVrQnhUWXk1 dVdQRlZ3cGtfN2lpMnpnVDA3dDNkLXlSX2N5NHNmcnJMVSUzRGtjZyU0MG1haWwuZ21haWwuY29t CmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNmEwNDYyOGQtMGQ1My00MWQ5LTllMzUt NWE4ZGMzMDJjMzRjQGpvZWNvbndheS5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 LmMgICAgICAgICAgfCA1MCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAgfCAgNiArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5ZnJvbXBhcnNlLmMgfCAgNyArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YyAgICAgICAgfCAgOCArKy0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAgICAg IHwgMTMgKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICB8ICAx ICsKIDYgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jCmluZGV4IDE1NWE3OWE3MGM1Li44OGZhZmNjOTk0OSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHkuYwpAQCAtNTc3LDYgKzU3Nyw4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJCW9wdHNfb3V0ID0gcGFsbG9jMF9vYmplY3QoQ29weUZvcm1hdE9wdGlvbnMpOwog CiAJb3B0c19vdXQtPmZpbGVfZW5jb2RpbmcgPSAtMTsKKwkvKiBkZWZhdWx0IGZvcm1hdCAqLwor CW9wdHNfb3V0LT5mb3JtYXQgPSBDT1BZX0ZPUk1BVF9URVhUOwogCiAJLyogRXh0cmFjdCBvcHRp b25zIGZyb20gdGhlIHN0YXRlbWVudCBub2RlIHRyZWUgKi8KIAlmb3JlYWNoKG9wdGlvbiwgb3B0 aW9ucykKQEAgLTU5MSwxMSArNTkzLDExIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAJ CQlmb3JtYXRfc3BlY2lmaWVkID0gdHJ1ZTsKIAkJCWlmIChzdHJjbXAoZm10LCAidGV4dCIpID09 IDApCi0JCQkJIC8qIGRlZmF1bHQgZm9ybWF0ICovIDsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID0g Q09QWV9GT1JNQVRfVEVYVDsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJjc3YiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5jc3ZfbW9kZSA9IHRydWU7CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENP UFlfRk9STUFUX0NTVjsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5iaW5hcnkgPSB0cnVlOworCQkJCW9wdHNfb3V0LT5mb3JtYXQgPSBDT1BZ X0ZPUk1BVF9CSU5BUlk7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtNzU1LDMxICs3NTcsMzEg QEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBDaGVjayBmb3Ig aW5jb21wYXRpYmxlIG9wdGlvbnMgKG11c3QgZG8gdGhlc2UgdGhyZWUgYmVmb3JlIGluc2VydGlu ZwogCSAqIGRlZmF1bHRzKQogCSAqLwotCWlmIChvcHRzX291dC0+YmluYXJ5ICYmIG9wdHNfb3V0 LT5kZWxpbSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYg b3B0c19vdXQtPmRlbGltKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09Q WSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAl cyBpbiBCSU5BUlkgbW9kZSIsICJERUxJTUlURVIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5iaW5h cnkgJiYgb3B0c19vdXQtPm51bGxfcHJpbnQpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09Q WV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJjYW5u b3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpKTsKIAotCWlmIChvcHRzX291 dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQorCWlmIChvcHRzX291dC0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJ IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVGQVVMVCIpKSk7 CiAKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAqLwogCWlmICghb3B0c19v dXQtPmRlbGltKQotCQlvcHRzX291dC0+ZGVsaW0gPSBvcHRzX291dC0+Y3N2X21vZGUgPyAiLCIg OiAiXHQiOworCQlvcHRzX291dC0+ZGVsaW0gPSAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZP Uk1BVF9DU1YpID8gIiwiIDogIlx0IjsKIAogCWlmICghb3B0c19vdXQtPm51bGxfcHJpbnQpCi0J CW9wdHNfb3V0LT5udWxsX3ByaW50ID0gb3B0c19vdXQtPmNzdl9tb2RlID8gIiIgOiAiXFxOIjsK KwkJb3B0c19vdXQtPm51bGxfcHJpbnQgPSAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1B VF9DU1YpID8gIiIgOiAiXFxOIjsKIAlvcHRzX291dC0+bnVsbF9wcmludF9sZW4gPSBzdHJsZW4o b3B0c19vdXQtPm51bGxfcHJpbnQpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSkKKwlpZiAo b3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJewogCQlpZiAoIW9wdHNfb3V0 LT5xdW90ZSkKIAkJCW9wdHNfb3V0LT5xdW90ZSA9ICJcIiI7CkBAIC04MjcsNyArODI5LDcgQEAg UHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBmdXR1cmUtcHJvb2Zp bmcuICBMaWtld2lzZSB3ZSBkaXNhbGxvdyBhbGwgZGlnaXRzIHRob3VnaCBvbmx5IG9jdGFsCiAJ ICogZGlnaXRzIGFyZSBhY3R1YWxseSBkYW5nZXJvdXMuCiAJICovCi0JaWYgKCFvcHRzX291dC0+ Y3N2X21vZGUgJiYKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYK IAkJc3RyY2hyKCJcXC5hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLAogCQkJ ICAgb3B0c19vdXQtPmRlbGltWzBdKSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLApAQCAtODM1 LDQzICs4MzcsNDMgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJ CQkgZXJybXNnKCJDT1BZIGRlbGltaXRlciBjYW5ub3QgYmUgXCIlc1wiIiwgb3B0c19vdXQtPmRl bGltKSkpOwogCiAJLyogQ2hlY2sgaGVhZGVyICovCi0JaWYgKG9wdHNfb3V0LT5iaW5hcnkgJiYg b3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFKQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+aGVhZGVyX2xpbmUg IT0gQ09QWV9IRUFERVJfRkFMU0UpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhl IG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwogCQkJCSBlcnJtc2coImNh bm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkhFQURFUiIpKSk7CiAKIAkvKiBDaGVj ayBxdW90ZSAqLwotCWlmICghb3B0c19vdXQtPmNzdl9tb2RlICYmIG9wdHNfb3V0LT5xdW90ZSAh PSBOVUxMKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiBvcHRz X291dC0+cXVvdGUgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUg bmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiQ09Q WSAlcyByZXF1aXJlcyBDU1YgbW9kZSIsICJRVU9URSIpKSk7CiAKLQlpZiAob3B0c19vdXQtPmNz dl9tb2RlICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEpCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkJCSBlcnJtc2coIkNPUFkgcXVvdGUgbXVzdCBiZSBhIHNpbmdsZSBvbmUtYnl0 ZSBjaGFyYWN0ZXIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ ZGVsaW1bMF0gPT0gb3B0c19vdXQtPnF1b3RlWzBdKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09 IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+ZGVsaW1bMF0gPT0gb3B0c19vdXQtPnF1b3Rl WzBdKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coIkNPUFkgZGVsaW1pdGVyIGFuZCBxdW90ZSBtdXN0 IGJlIGRpZmZlcmVudCIpKSk7CiAKIAkvKiBDaGVjayBlc2NhcGUgKi8KLQlpZiAoIW9wdHNfb3V0 LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ZXNjYXBlICE9IE5VTEwpCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIG9wdHNfb3V0LT5lc2NhcGUgIT0gTlVMTCkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBl LmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiQ09QWSAlcyByZXF1aXJlcyBDU1YgbW9kZSIs ICJFU0NBUEUiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBzdHJsZW4ob3B0c19v dXQtPmVzY2FwZSkgIT0gMSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9D U1YgJiYgc3RybGVuKG9wdHNfb3V0LT5lc2NhcGUpICE9IDEpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2co IkNPUFkgZXNjYXBlIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIikpKTsKIAog CS8qIENoZWNrIGZvcmNlX3F1b3RlICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYgKG9w dHNfb3V0LT5mb3JjZV9xdW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkKKwlpZiAo b3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgKG9wdHNfb3V0LT5mb3JjZV9x dW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xh dG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCkBA IC04ODUsOCArODg3LDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJCSJDT1BZIEZST00iKSkpOwogCiAJLyogQ2hlY2sgZm9yY2Vfbm90bnVsbCAqLwotCWlm ICghb3B0c19vdXQtPmNzdl9tb2RlICYmIChvcHRzX291dC0+Zm9yY2Vfbm90bnVsbCAhPSBOSUwg fHwKLQkJCQkJCQkJb3B0c19vdXQtPmZvcmNlX25vdG51bGxfYWxsKSkKKwlpZiAob3B0c19vdXQt PmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgKG9wdHNfb3V0LT5mb3JjZV9ub3RudWxsICE9 IE5JTCB8fAorCQkJCQkJCQkJCQkJb3B0c19vdXQtPmZvcmNlX25vdG51bGxfYWxsKSkKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcu IE9OX0VSUk9SICovCkBAIC05MDEsOCArOTAzLDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSJDT1BZIFRPIikpKTsKIAogCS8qIENoZWNrIGZvcmNlX251 bGwgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiAob3B0c19vdXQtPmZvcmNlX251bGwg IT0gTklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCisJaWYgKG9wdHNf b3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChvcHRzX291dC0+Zm9yY2VfbnVsbCAh PSBOSUwgfHwKKwkJCQkJCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAog CQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBP Tl9FUlJPUiAqLwpAQCAtOTI2LDcgKzkyOCw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJCQkiTlVMTCIpKSk7CiAKIAkvKiBEb24ndCBhbGxvdyB0aGUgQ1NW IHF1b3RlIGNoYXIgdG8gYXBwZWFyIGluIHRoZSBudWxsIHN0cmluZy4gKi8KLQlpZiAob3B0c19v dXQtPmNzdl9tb2RlICYmCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NW ICYmCiAJCXN0cmNocihvcHRzX291dC0+bnVsbF9wcmludCwgb3B0c19vdXQtPnF1b3RlWzBdKSAh PSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLApAQCAtOTYyLDcgKzk2NCw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJIkRFRkFVTFQiKSkpOwogCiAJCS8qIERvbid0IGFs bG93IHRoZSBDU1YgcXVvdGUgY2hhciB0byBhcHBlYXIgaW4gdGhlIGRlZmF1bHQgc3RyaW5nLiAq LwotCQlpZiAob3B0c19vdXQtPmNzdl9tb2RlICYmCisJCWlmIChvcHRzX291dC0+Zm9ybWF0ID09 IENPUFlfRk9STUFUX0NTViAmJgogCQkJc3RyY2hyKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50LCBv cHRzX291dC0+cXVvdGVbMF0pICE9IE5VTEwpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCkBAIC05NzksNyArOTgxLDcgQEAg UHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJIGVycm1zZygiTlVM TCBzcGVjaWZpY2F0aW9uIGFuZCBERUZBVUxUIHNwZWNpZmljYXRpb24gY2Fubm90IGJlIHRoZSBz YW1lIikpKTsKIAl9CiAJLyogQ2hlY2sgb25fZXJyb3IgKi8KLQlpZiAob3B0c19vdXQtPmJpbmFy eSAmJiBvcHRzX291dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKQorCWlmIChvcHRz X291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+b25fZXJyb3Ig IT0gQ09QWV9PTl9FUlJPUl9TVE9QKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJvbmx5IE9OX0VSUk9SIFNUT1AgaXMg YWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwppbmRleCAy NWVlMjBiMjNkYi4uMGM3M2IwMjU5YzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHlmcm9tLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtMTU1 LDkgKzE1NSw5IEBAIHN0YXRpYyBjb25zdCBDb3B5RnJvbVJvdXRpbmUgQ29weUZyb21Sb3V0aW5l QmluYXJ5ID0gewogc3RhdGljIGNvbnN0IENvcHlGcm9tUm91dGluZSAqCiBDb3B5RnJvbUdldFJv dXRpbmUoY29uc3QgQ29weUZvcm1hdE9wdGlvbnMgKm9wdHMpCiB7Ci0JaWYgKG9wdHMtPmNzdl9t b2RlKQorCWlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKQogCQlyZXR1cm4gJkNv cHlGcm9tUm91dGluZUNTVjsKLQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0 cy0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5RnJvbVJvdXRp bmVCaW5hcnk7CiAKIAkvKiBkZWZhdWx0IGlzIHRleHQgKi8KQEAgLTI2MSw3ICsyNjEsNyBAQCBD b3B5RnJvbUVycm9yQ2FsbGJhY2sodm9pZCAqYXJnKQogCQkJCSAgIGNzdGF0ZS0+Y3VyX3JlbG5h bWUpOwogCQlyZXR1cm47CiAJfQotCWlmIChjc3RhdGUtPm9wdHMuYmluYXJ5KQorCWlmIChjc3Rh dGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAl7CiAJCS8qIGNhbid0IHVz ZWZ1bGx5IGRpc3BsYXkgdGhlIGRhdGEgKi8KIAkJaWYgKGNzdGF0ZS0+Y3VyX2F0dG5hbWUpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKaW5kZXggOTRkNmY0MTVhMDYuLjBkOTE5OWY1 Y2U4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCkBAIC0xNzEsNyArMTcxLDcg QEAgUmVjZWl2ZUNvcHlCZWdpbihDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIHsKIAlTdHJpbmdJbmZv RGF0YSBidWY7CiAJaW50CQkJbmF0dHMgPSBsaXN0X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3Qp OwotCWludDE2CQlmb3JtYXQgPSAoY3N0YXRlLT5vcHRzLmJpbmFyeSA/IDEgOiAwKTsKKwlpbnQx NgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZID8g MSA6IDApOwogCWludAkJCWk7CiAKIAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weUlu UmVzcG9uc2UpOwpAQCAtNzQ5LDcgKzc0OSw3IEBAIGJvb2wKIE5leHRDb3B5RnJvbVJhd0ZpZWxk cyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcykKIHsK IAlyZXR1cm4gTmV4dENvcHlGcm9tUmF3RmllbGRzSW50ZXJuYWwoY3N0YXRlLCBmaWVsZHMsIG5m aWVsZHMsCi0JCQkJCQkJCQkJIGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSk7CisJCQkJCQkJCQkJIGNz dGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKTsKIH0KIAogLyoKQEAgLTc3Niw3 ICs3NzYsOCBAQCBOZXh0Q29weUZyb21SYXdGaWVsZHNJbnRlcm5hbChDb3B5RnJvbVN0YXRlIGNz dGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcwogCWJvb2wJCWRvbmUgPSBmYWxzZTsK IAogCS8qIG9ubHkgYXZhaWxhYmxlIGZvciB0ZXh0IG9yIGNzdiBpbnB1dCAqLwotCUFzc2VydCgh Y3N0YXRlLT5vcHRzLmJpbmFyeSk7CisJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09Q WV9GT1JNQVRfVEVYVCB8fAorCQkgICBjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFU X0NTVik7CiAKIAkvKiBvbiBpbnB1dCBjaGVjayB0aGF0IHRoZSBoZWFkZXIgbGluZSBpcyBjb3Jy ZWN0IGlmIG5lZWRlZCAqLwogCWlmIChjc3RhdGUtPmN1cl9saW5lbm8gPT0gMCAmJiBjc3RhdGUt Pm9wdHMuaGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFMU0UpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5j CmluZGV4IDljZWVmZjZkOTllLi4wMzI1YTE2ZjgyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAg LTE4MSw5ICsxODEsOSBAQCBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5l QmluYXJ5ID0gewogc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgKgogQ29weVRvR2V0Um91dGlu ZShjb25zdCBDb3B5Rm9ybWF0T3B0aW9ucyAqb3B0cykKIHsKLQlpZiAob3B0cy0+Y3N2X21vZGUp CisJaWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJCXJldHVybiAmQ29weVRv Um91dGluZUNTVjsKLQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0cy0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQmluYXJ5 OwogCiAJLyogZGVmYXVsdCBpcyB0ZXh0ICovCkBAIC0yMjAsNyArMjIwLDcgQEAgQ29weVRvVGV4 dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogCiAJCQlj b2xuYW1lID0gTmFtZVN0cihUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51bSAtIDEpLT5hdHRu YW1lKTsKIAotCQkJaWYgKGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSkKKwkJCWlmIChjc3RhdGUtPm9w dHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAkJCQlDb3B5QXR0cmlidXRlT3V0Q1NWKGNz dGF0ZSwgY29sbmFtZSwgZmFsc2UpOwogCQkJZWxzZQogCQkJCUNvcHlBdHRyaWJ1dGVPdXRUZXh0 KGNzdGF0ZSwgY29sbmFtZSk7CkBAIC0zOTcsNyArMzk3LDcgQEAgU2VuZENvcHlCZWdpbihDb3B5 VG9TdGF0ZSBjc3RhdGUpCiB7CiAJU3RyaW5nSW5mb0RhdGEgYnVmOwogCWludAkJCW5hdHRzID0g bGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKLQlpbnQxNgkJZm9ybWF0ID0gKGNzdGF0 ZS0+b3B0cy5iaW5hcnkgPyAxIDogMCk7CisJaW50MTYJCWZvcm1hdCA9IChjc3RhdGUtPm9wdHMu Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSA/IDEgOiAwKTsKIAlpbnQJCQlpOwogCiAJcHFf YmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0NvcHlPdXRSZXNwb25zZSk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgK aW5kZXggNDNjMjU4MDUzOWYuLjdiZTQxZDlkYTEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC00OCw2 ICs0OCwxNiBAQCB0eXBlZGVmIGVudW0gQ29weUxvZ1ZlcmJvc2l0eUNob2ljZQogCUNPUFlfTE9H X1ZFUkJPU0lUWV9WRVJCT1NFLCAvKiBsb2dzIGFkZGl0aW9uYWwgbWVzc2FnZXMgKi8KIH0gQ29w eUxvZ1ZlcmJvc2l0eUNob2ljZTsKIAorLyoKKyAqIFJlcHJlc2VudHMgdGhlIGZvcm1hdCBvZiB0 aGUgQ09QWSBvcGVyYXRpb24uCisgKi8KK3R5cGVkZWYgZW51bSBDb3B5Rm9ybWF0Cit7CisJQ09Q WV9GT1JNQVRfVEVYVCA9IDAsCisJQ09QWV9GT1JNQVRfQklOQVJZLAorCUNPUFlfRk9STUFUX0NT ViwKK30gQ29weUZvcm1hdDsKKwogLyoKICAqIEEgc3RydWN0IHRvIGhvbGQgQ09QWSBvcHRpb25z LCBpbiBhIHBhcnNlZCBmb3JtLiBBbGwgb2YgdGhlc2UgYXJlIHJlbGF0ZWQKICAqIHRvIGZvcm1h dHRpbmcsIGV4Y2VwdCBmb3IgJ2ZyZWV6ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBo ZXJlLCBidXQKQEAgLTU4LDkgKzY4LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlv bnMKIAkvKiBwYXJhbWV0ZXJzIGZyb20gdGhlIENPUFkgY29tbWFuZCAqLwogCWludAkJCWZpbGVf ZW5jb2Rpbmc7CS8qIGZpbGUgb3IgcmVtb3RlIHNpZGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcsCiAJ CQkJCQkJCSAqIC0xIGlmIG5vdCBzcGVjaWZpZWQgKi8KLQlib29sCQliaW5hcnk7CQkJLyogYmlu YXJ5IGZvcm1hdD8gKi8KKwlDb3B5Rm9ybWF0CWZvcm1hdDsJCQkvKiBmb3JtYXQgb2YgdGhlIENP UFkgb3BlcmF0aW9uICovCiAJYm9vbAkJZnJlZXplOwkJCS8qIGZyZWV6ZSByb3dzIG9uIGxvYWRp bmc/ICovCi0JYm9vbAkJY3N2X21vZGU7CQkvKiBDb21tYSBTZXBhcmF0ZWQgVmFsdWUgZm9ybWF0 PyAqLwogCWludAkJCWhlYWRlcl9saW5lOwkvKiBudW1iZXIgb2YgbGluZXMgdG8gc2tpcCBvciBD T1BZX0hFQURFUl9YWFgKIAkJCQkJCQkJICogdmFsdWUgKHNlZSB0aGUgYWJvdmUpICovCiAJY2hh cgkgICAqbnVsbF9wcmludDsJCS8qIE5VTEwgbWFya2VyIHN0cmluZyAoc2VydmVyIGVuY29kaW5n ISkgKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggOWY1ZWU4ZmQ0ODIuLmQwNjFlNTVk MWU4IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNTI3LDYgKzUyNyw3IEBAIENvbnZl cnNpb25Mb2NhdGlvbgogQ29udmVydFJvd3R5cGVFeHByCiBDb29rZWRDb25zdHJhaW50CiBDb3B5 RGVzdAorQ29weUZvcm1hdAogQ29weUZvcm1hdE9wdGlvbnMKIENvcHlGcm9tUm91dGluZQogQ29w eUZyb21TdGF0ZQotLSAKMi4zNC4xCgo= --0000000000000e4edf064a5c0416 Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename="v24-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlemt5ji0 RnJvbSBkNmE0MTY2ZmQ1ZDY4OTk4OTViMjIzNTk0YTk0OTdhZGNkZmYzZjUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgOSBGZWIgMjAyNiAxMToxNDoxNSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjI0 IDMvM10gQWRkIG9wdGlvbiBmb3JjZV9hcnJheSBmb3IgQ09QWSBKU09OIEZPUk1BVAoKVGhpcyBh ZGRzIHRoZSBmb3JjZV9hcnJheSBvcHRpb24sIHdoaWNoIGlzIGF2YWlsYWJsZSBleGNsdXNpdmVs eQp3aGVuIHVzaW5nIENPUFkgVE8gd2l0aCB0aGUgSlNPTiBmb3JtYXQuCgpXaGVuIGVuYWJsZWQs IHRoaXMgb3B0aW9uIHdyYXBzIHRoZSBvdXRwdXQgaW4gYSB0b3AtbGV2ZWwgSlNPTiBhcnJheQoo ZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzIHdpdGggY29tbWEtc2VwYXJhdGVkIGVsZW1lbnRz KSwgbWFraW5nIHRoZQplbnRpcmUgcmVzdWx0IGEgdmFsaWQgc2luZ2xlIEpTT04gdmFsdWUuIFdp dGhvdXQgdGhpcyBvcHRpb24sIHRoZSBkZWZhdWx0CmJlaGF2aW9yIGlzIHRvIG91dHB1dCBhIHN0 cmVhbSBvZiBpbmRlcGVuZGVudCBKU09OIG9iamVjdHMuCgpBdHRlbXB0aW5nIHRvIHVzZSB0aGlz IG9wdGlvbiB3aXRoIENPUFkgRlJPTSBvciB3aXRoIGZvcm1hdHMgb3RoZXIgdGhhbgpKU09OIHdp bGwgcmFpc2UgYW4gZXJyb3IuCgpBdXRob3I6IEpvZSBDb253YXkgPG1haWxAam9lY29ud2F5LmNv bT4KUmV2aWV3ZWQtYnk6IEp1bndhbmcgWmhhbyA8emhqd3BrdUBnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNvbT4sClJldmlld2VkLWJ5 OiBGbG9yZW50cyBUc2VsYWkgPGZsb3JlbnRzLnRzZWxhaUBnbWFpbC5jb20+ClJldmlld2VkLWJ5 OiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+CgpkaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tL0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWkyemdUMDd0M2QteVJfY3k0 c2ZyckxVJTNEa2NnJTQwbWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS82YTA0NjI4ZC0wZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29ud2F5LmNvbQot LS0KIGRvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sICAgICAgICAgfCAzMCArKysrKysrKysrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgIHwgMTMgKysrKysr KysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICB8IDQwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICB8 ICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgIHwgIDEgKwogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dCB8IDIzICsrKysrKysrKysrKysrKysrCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbCAgICAgIHwgIDggKysrKysrCiA3IGZpbGVzIGNoYW5n ZWQsIDExNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXgg MzIwZjVmMWVkZDQuLmFmZWE5Y2FmNWFkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Nv cHkuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtNDAsNiArNDAsNyBA QCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxh Y2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgSEVBREVSIFsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiB8IDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5pbnRlZ2VyPC9yZXBsYWNlYWJsZT4gfCBNQVRDSCBdCiAgICAgUVVPVEUgJzxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5xdW90ZV9jaGFyYWN0ZXI8L3JlcGxhY2VhYmxl PicKICAgICBFU0NBUEUgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lc2NhcGVfY2hh cmFjdGVyPC9yZXBsYWNlYWJsZT4nCisgICAgRk9SQ0VfQVJSQVkgWyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBGT1JDRV9RVU9URSB7 ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJs ZT4gWywgLi4uXSApIHwgKiB9CiAgICAgRk9SQ0VfTk9UX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICog fQogICAgIEZPUkNFX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQpAQCAtMzY2LDYgKzM2NywxOSBA QCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxh Y2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVu dHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY29weS1wYXJhbXMtZm9yY2UtYXJyYXki PgorICAgIDx0ZXJtPjxsaXRlcmFsPkZPUkNFX0FSUkFZPC9saXRlcmFsPjwvdGVybT4KKyAgICA8 bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRm9yY2Ugb3V0cHV0IG9mIHNxdWFyZSBicmFj a2V0cyBhcyBhcnJheSBkZWNvcmF0aW9ucyBhdCB0aGUgYmVnaW5uaW5nCisgICAgICBhbmQgZW5k IG9mIG91dHB1dCwgYW5kIGNvbW1hcyBiZXR3ZWVuIHRoZSByb3dzLiBJdCBpcyBhbGxvd2VkIG9u bHkgaW4KKyAgICAgIDxjb21tYW5kPkNPUFkgVE88L2NvbW1hbmQ+LCBhbmQgb25seSB3aGVuIHVz aW5nCisgICAgICA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuIFRoZSBkZWZhdWx0IGlz CisgICAgICA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1j b3B5LXBhcmFtcy1mb3JjZS1xdW90ZSI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Rk9SQ0VfUVVPVEU8 L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTEwOTEsNiArMTEwNSwyMiBAQCBD T1BZIGNvdW50cnkgVE8gU1RET1VUIChERUxJTUlURVIgJ3wnKTsKIDwvcHJvZ3JhbWxpc3Rpbmc+ CiAgIDwvcGFyYT4KIAorPHBhcmE+CisgICBXaGVuIHRoZSA8bGl0ZXJhbD5GT1JDRV9BUlJBWTwv bGl0ZXJhbD4gb3B0aW9uIGlzIGVuYWJsZWQsCisgICB0aGUgZW50aXJlIG91dHB1dCBpcyB3cmFw cGVkIGluIGEgc2luZ2xlIEpTT04gYXJyYXkgd2l0aCByb3dzIHNlcGFyYXRlZCBieSBjb21tYXM6 Cis8cHJvZ3JhbWxpc3Rpbmc+CitDT1BZIChTRUxFQ1QgKiBGUk9NIChWQUxVRVMoMSksKDIpKSB2 YWwoaWQpKSBUTyBTVERPVVQgIChGT1JNQVQgSlNPTiwgRk9SQ0VfQVJSQVkpOworPC9wcm9ncmFt bGlzdGluZz4KK1RoZSBvdXRwdXQgaXMgYXMgZm9sbG93czoKKzxzY3JlZW4+CitbCisgeyJpZCI6 MX0KKyx7ImlkIjoyfQorXQorPC9zY3JlZW4+Cis8L3BhcmE+CisKKwogICA8cGFyYT4KICAgIFRv IGNvcHkgZGF0YSBmcm9tIGEgZmlsZSBpbnRvIHRoZSA8bGl0ZXJhbD5jb3VudHJ5PC9saXRlcmFs PiB0YWJsZToKIDxwcm9ncmFtbGlzdGluZz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCBmMTZjYTk4ODEy Ni4uODQxYTg0ODQ4Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTU3MCw2ICs1NzAsNyBAQCBQcm9j ZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCWJvb2wJCW9uX2Vycm9yX3NwZWNp ZmllZCA9IGZhbHNlOwogCWJvb2wJCWxvZ192ZXJib3NpdHlfc3BlY2lmaWVkID0gZmFsc2U7CiAJ Ym9vbAkJcmVqZWN0X2xpbWl0X3NwZWNpZmllZCA9IGZhbHNlOworCWJvb2wJCWZvcmNlX2FycmF5 X3NwZWNpZmllZCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKm9wdGlvbjsKIAogCS8qIFN1cHBvcnQg ZXh0ZXJuYWwgdXNlIGZvciBvcHRpb24gc2FuaXR5IGNoZWNraW5nICovCkBAIC03MjYsNiArNzI3 LDEzIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCWRl ZmVsLT5kZWZuYW1lKSwKIAkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkZWZlbC0+ bG9jYXRpb24pKSk7CiAJCX0KKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiZm9y Y2VfYXJyYXkiKSA9PSAwKQorCQl7CisJCQlpZiAoZm9yY2VfYXJyYXlfc3BlY2lmaWVkKQorCQkJ CWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUpOworCQkJZm9yY2VfYXJyYXlf c3BlY2lmaWVkID0gdHJ1ZTsKKwkJCW9wdHNfb3V0LT5mb3JjZV9hcnJheSA9IGRlZkdldEJvb2xl YW4oZGVmZWwpOworCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgIm9uX2Vy cm9yIikgPT0gMCkKIAkJewogCQkJaWYgKG9uX2Vycm9yX3NwZWNpZmllZCkKQEAgLTk2OCw2ICs5 NzYsMTEgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCWVycm1zZygiQ09QWSAl cyBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiLCAianNvbiIsICJDT1BZIEZST00iKSk7CiAK KwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OICYmIG9wdHNfb3V0LT5m b3JjZV9hcnJheSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiQ09QWSAlcyBjYW4gb25seSB1c2VkIHdp dGggSlNPTiBtb2RlIiwgIkZPUkNFX0FSUkFZIikpOworCiAJaWYgKG9wdHNfb3V0LT5kZWZhdWx0 X3ByaW50KQogCXsKIAkJaWYgKCFpc19mcm9tKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCA3MjBj ZTAyNjdiZi4uMzNlN2MzMGM3NjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC04Niw2ICs4Niwx MCBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5VG9TdGF0ZURhdGEKIAlMaXN0CSAgICphdHRudW1saXN0 OwkJLyogaW50ZWdlciBsaXN0IG9mIGF0dG51bXMgdG8gY29weSAqLwogCWNoYXIJICAgKmZpbGVu YW1lOwkJLyogZmlsZW5hbWUsIG9yIE5VTEwgZm9yIFNURE9VVCAqLwogCWJvb2wJCWlzX3Byb2dy YW07CQkvKiBpcyAnZmlsZW5hbWUnIGEgcHJvZ3JhbSB0byBwb3Blbj8gKi8KKworCS8qIG5lZWQg ZGVsaW1pdGVyIHRvIHN0YXJ0IG5leHQganNvbiBhcnJheSBlbGVtZW50ICovCisJYm9vbAkJanNv bl9yb3dfZGVsaW1fbmVlZGVkOworCiAJY29weV9kYXRhX2Rlc3RfY2IgZGF0YV9kZXN0X2NiOyAv KiBmdW5jdGlvbiBmb3Igd3JpdGluZyBkYXRhICovCiAKIAlDb3B5Rm9ybWF0T3B0aW9ucyBvcHRz OwpAQCAtMTMzLDYgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlT25lUm93KENv cHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJCSBib29sIGlz X2Nzdik7CiBzdGF0aWMgdm9pZCBDb3B5VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUp Owogc3RhdGljIHZvaWQgQ29weVRvSnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxl VGFibGVTbG90ICpzbG90KTsKK3N0YXRpYyB2b2lkIENvcHlUb0pzb25FbmQoQ29weVRvU3RhdGUg Y3N0YXRlKTsKIHN0YXRpYyB2b2lkIENvcHlUb0JpbmFyeVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0 ZSwgVHVwbGVEZXNjIHR1cERlc2MpOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5T3V0RnVuYyhD b3B5VG9TdGF0ZSBjc3RhdGUsIE9pZCBhdHR0eXBpZCwgRm1nckluZm8gKmZpbmZvKTsKIHN0YXRp YyB2b2lkIENvcHlUb0JpbmFyeU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVT bG90ICpzbG90KTsKQEAgLTE3Nyw3ICsxODIsNyBAQCBzdGF0aWMgY29uc3QgQ29weVRvUm91dGlu ZSBDb3B5VG9Sb3V0aW5lSnNvbiA9IHsKIAkuQ29weVRvU3RhcnQgPSBDb3B5VG9UZXh0TGlrZVN0 YXJ0LAogCS5Db3B5VG9PdXRGdW5jID0gQ29weVRvVGV4dExpa2VPdXRGdW5jLAogCS5Db3B5VG9P bmVSb3cgPSBDb3B5VG9Kc29uT25lUm93LAotCS5Db3B5VG9FbmQgPSBDb3B5VG9UZXh0TGlrZUVu ZCwKKwkuQ29weVRvRW5kID0gQ29weVRvSnNvbkVuZCwKIH07CiAKIC8qIGJpbmFyeSBmb3JtYXQg Ki8KQEAgLTI0Myw2ICsyNDgsMTYgQEAgQ29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBj c3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogCiAJCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhj c3RhdGUpOwogCX0KKworCS8qCisJICogSWYgSlNPTiBoYXMgYmVlbiByZXF1ZXN0ZWQsIGFuZCBG T1JDRV9BUlJBWSBoYXMgYmVlbiBzcGVjaWZpZWQgc2VuZCB0aGUKKwkgKiBvcGVuaW5nIGJyYWNr ZXQuCisJICovCisJaWYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTiAm JiBjc3RhdGUtPm9wdHMuZm9yY2VfYXJyYXkpCisJeworCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAn WycpOworCQlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0YXRlKTsKKwl9CiB9CiAKIC8qCkBA IC0zNTQsMTEgKzM2OSwzNCBAQCBDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwg VHVwbGVUYWJsZVNsb3QgKnNsb3QpCiAJcmVzdWx0ID0gbWFrZVN0cmluZ0luZm8oKTsKIAljb21w b3NpdGVfdG9fanNvbihyb3dkYXRhLCByZXN1bHQsIGZhbHNlKTsKIAorCWlmIChjc3RhdGUtPm9w dHMuZm9yY2VfYXJyYXkpCisJeworCQlpZiAoY3N0YXRlLT5qc29uX3Jvd19kZWxpbV9uZWVkZWQp CisJCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnLCcpOworCQllbHNlCisJCXsKKwkJCS8qIGZpcnN0 IHJvdyBuZWVkcyBubyBkZWxpbWl0ZXIgKi8KKwkJCUNvcHlTZW5kQ2hhcihjc3RhdGUsICcgJyk7 CisJCQljc3RhdGUtPmpzb25fcm93X2RlbGltX25lZWRlZCA9IHRydWU7CisJCX0KKwl9CisKIAlD b3B5U2VuZERhdGEoY3N0YXRlLCByZXN1bHQtPmRhdGEsIHJlc3VsdC0+bGVuKTsKIAogCUNvcHlT ZW5kVGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOwogfQogCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0 aGUgZW5kIGNhbGxiYWNrIGZvciBqc29uIGZvcm1hdCAqLworc3RhdGljIHZvaWQKK0NvcHlUb0pz b25FbmQoQ29weVRvU3RhdGUgY3N0YXRlKQoreworCWlmIChjc3RhdGUtPm9wdHMuZm9yY2VfYXJy YXkpCisJeworCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnXScpOworCQlDb3B5U2VuZFRleHRMaWtl RW5kT2ZSb3coY3N0YXRlKTsKKwl9Cit9CisKIC8qCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUg c3RhcnQgY2FsbGJhY2sgZm9yIGJpbmFyeSBmb3JtYXQuIFNlbmQgYSBoZWFkZXIKICAqIGZvciBh IGJpbmFyeSBjb3B5LgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j IGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDM3Y2I2NGQyYjcyLi5hNjEw ZWY2MDNmNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBi L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgQ29w eV9jb21tb25fb3B0aW9ucywgIkRFRkFVTFQiLCAiRk9SQ0VfTk9UX05VTEwiLCAiRk9SQ0VfTlVM TCIsICJGUkVFWkUiLCBcCiAKIC8qIENPUFkgVE8gb3B0aW9ucyAqLwogI2RlZmluZSBDb3B5X3Rv X29wdGlvbnMgXAotQ29weV9jb21tb25fb3B0aW9ucywgIkZPUkNFX1FVT1RFIgorQ29weV9jb21t b25fb3B0aW9ucywgIkZPUkNFX1FVT1RFIiwgIkZPUkNFX0FSUkFZIgogCiAvKgogICogVGhlc2Ug b2JqZWN0IHR5cGVzIHdlcmUgaW50cm9kdWNlZCBsYXRlciB0aGFuIG91ciBzdXBwb3J0IGN1dG9m ZiBvZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvY29weS5oCmluZGV4IGZlODVmMDJiMTEwLi5iMmE2OGZhNjQwNyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2NvcHkuaApAQCAtODcsNiArODcsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5Rm9ybWF0T3B0 aW9ucwogCUxpc3QJICAgKmZvcmNlX25vdG51bGw7CS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICov CiAJYm9vbAkJZm9yY2Vfbm90bnVsbF9hbGw7CS8qIEZPUkNFX05PVF9OVUxMICo/ICovCiAJYm9v bAkgICAqZm9yY2Vfbm90bnVsbF9mbGFnczsJLyogcGVyLWNvbHVtbiBDU1YgRk5OIGZsYWdzICov CisJYm9vbAkJZm9yY2VfYXJyYXk7CS8qIGFkZCBKU09OIGFycmF5IGRlY29yYXRpb25zICovCiAJ TGlzdAkgICAqZm9yY2VfbnVsbDsJCS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICovCiAJYm9vbAkJ Zm9yY2VfbnVsbF9hbGw7IC8qIEZPUkNFX05VTEwgKj8gKi8KIAlib29sCSAgICpmb3JjZV9udWxs X2ZsYWdzOwkvKiBwZXItY29sdW1uIENTViBGTiBmbGFncyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y29weS5vdXQKaW5kZXggMjdhMjhmZWU3N2IuLjg2NTMyYTIxZWVkIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29weS5vdXQKQEAgLTExMiw2ICsxMTIsMjkgQEAgTElORSAxOiBjb3B5IGNvcHl0ZXN0 IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG9uX2Vycm9yIGlnbm9yZSk7CiBjb3B5IGNvcHl0ZXN0 IGZyb20gc3RkaW4oZm9ybWF0IGpzb24pOwogRVJST1I6ICBDT1BZIGpzb24gbW9kZSBjYW5ub3Qg YmUgdXNlZCB3aXRoIENPUFkgRlJPTQogLS0gYWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQg ZXJyb3IKKy0tRXJyb3IKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQgY3N2LCBmb3Jj ZV9hcnJheSB0cnVlKTsKK0VSUk9SOiAgQ09QWSBGT1JDRV9BUlJBWSBjYW4gb25seSB1c2VkIHdp dGggSlNPTiBtb2RlCistLW9rCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24s IGZvcmNlX2FycmF5KTsKK1sKKyB7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJm aWxsZXIiOjF9CisseyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9 CisseyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KKyx7InN0eWxl IjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK10KK2Nv cHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgdHJ1ZSk7Citb CisgeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQorLHsic3R5 bGUiOiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQorLHsic3R5bGUiOiJNYWMi LCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9CisseyJzdHlsZSI6ImVzY1xcYXBlIiwidGVz dCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9CitdCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IGZhbHNlKTsKK3sic3R5bGUiOiJET1MiLCJ0 ZXN0IjoiYWJjXHJcbmRlZiIsImZpbGxlciI6MX0KK3sic3R5bGUiOiJVbml4IiwidGVzdCI6ImFi Y1xuZGVmIiwiZmlsbGVyIjoyfQoreyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZp bGxlciI6M30KK3sic3R5bGUiOiJlc2NcXGFwZSIsInRlc3QiOiJhXFxyXFxcclxcXG5cXG5iIiwi ZmlsbGVyIjo0fQogLS0gZW1iZWRkZWQgZXNjYXBlZCBjaGFyYWN0ZXJzCiBjcmVhdGUgdGVtcCB0 YWJsZSBjb3B5anNvbnRlc3QgKAogICAgIGlkIGJpZ3NlcmlhbCwKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwK aW5kZXggYTU0YWY2MzYzMTcuLjZiYzhjNGYwMWQ2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jb3B5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbApAQCAt MTAxLDYgKzEwMSwxNCBAQCBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG9u X2Vycm9yIGlnbm9yZSk7CiBjb3B5IGNvcHl0ZXN0IGZyb20gc3RkaW4oZm9ybWF0IGpzb24pOwog LS0gYWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQgZXJyb3IKIAorLS1FcnJvcgorY29weSBj b3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBjc3YsIGZvcmNlX2FycmF5IHRydWUpOworCistLW9r Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5KTsKK2Nv cHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgdHJ1ZSk7Citj b3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IGZhbHNlKTsK KwogLS0gZW1iZWRkZWQgZXNjYXBlZCBjaGFyYWN0ZXJzCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5 anNvbnRlc3QgKAogICAgIGlkIGJpZ3NlcmlhbCwKLS0gCjIuMzQuMQoK --0000000000000e4edf064a5c0416 Content-Type: text/x-patch; charset="US-ASCII"; name="v24-0002-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v24-0002-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlemt5jv1 RnJvbSAzZjg3ODEyOTgxOTQ3OGJlM2VjZWFkM2NmZmQ2NGYyOGRlOTU3NzVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgOSBGZWIgMjAyNiAxMTowMDowNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjI0 IDIvM10ganNvbiBmb3JtYXQgZm9yIENPUFkgVE8KClRoaXMgaW50cm9kdWNlcyB0aGUgSlNPTiBm b3JtYXQgb3B0aW9uIGZvciB0aGUgQ09QWSBUTyBjb21tYW5kLCBhbGxvd2luZyB1c2Vycwp0byBl eHBvcnQgcXVlcnkgcmVzdWx0cyBvciB0YWJsZSBkYXRhIGRpcmVjdGx5IGFzIGEgc2luZ2xlIEpT T04gb2JqZWN0IG9yIGEKc3RyZWFtIG9mIEpTT04gb2JqZWN0cy4KClRoZSBKU09OIGZvcm1hdCBp cyBjdXJyZW50bHkgc3VwcG9ydGVkIG9ubHkgZm9yIENPUFkgVE8gb3BlcmF0aW9uczsgaXQKaXMg bm90IGF2YWlsYWJsZSBmb3IgQ09QWSBGUk9NLgoKSlNPTiBmb3JtYXQgaXMgaW5jb21wYXRpYmxl IHdpdGggc29tZSBzdGFuZGFyZCB0ZXh0L0NTViBwYXJzaW5nIG9yIGZvcm1hdHRpbmcgb3B0aW9u cywKaW5jbHVkaW5nOgotIEhFQURFUgotIERFRkFVTFQKLSBOVUxMCi0gREVMSU1JVEVSCi0gRk9S Q0UgUVVPVEUgLyBGT1JDRSBOT1QgTlVMTAoKUmVncmVzc2lvbiB0ZXN0cyBjb3ZlcmluZyB2YWxp ZCBKU09OIGV4cG9ydHMgYW5kIGVycm9yIGhhbmRsaW5nIGZvcgppbmNvbXBhdGlibGUgb3B0aW9u cyBoYXZlIGJlZW4gYWRkZWQgdG8gc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwuCgpBdXRo b3I6IEpvZSBDb253YXkgPG1haWxAam9lY29ud2F5LmNvbT4KQXV0aG9yOiBqaWFuIGhlIDxqaWFu LnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiAiQW5kcmV5IE0uIEJvcm9kaW4i IDx4NG1tbUB5YW5kZXgtdGVhbS5ydT4sClJldmlld2VkLWJ5OiBEZWFuIFJhc2hlZWQgPGRlYW4u YS5yYXNoZWVkQGdtYWlsLmNvbT4sClJldmlld2VkLWJ5OiBEYW5pZWwgVmVyaXRlIDxkYW5pZWxA bWFuaXRvdS1tYWlsLm9yZz4sClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1 bnNsYW5lLm5ldD4sClJldmlld2VkLWJ5OiBEYXZpbiBTaGVhcmVyIDxkYXZpbkBhcGFjaGUub3Jn PiwKUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2FkYSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPiwK UmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJhIDxhbHZoZXJyZUBhbHZoLm5vLWlwLm9yZz4KUmV2 aWV3ZWQtYnk6IEp1bndhbmcgWmhhbyA8emhqd3BrdUBnbWFpbC5jb20+CgpkaXNjdXNzaW9uOiBo dHRwczovL3Bvc3Rnci5lcy9tL0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWkyemdUMDd0M2QteVJf Y3k0c2ZyckxVJTNEa2NnJTQwbWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS82YTA0NjI4ZC0wZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29ud2F5LmNv bQotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sICAgICAgICAgfCAxMyArKystLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAgICAgICB8IDQ5ICsrKysrKysrKysrKysrLS0tLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgfCA3NiArKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgfCAgOCAr KysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jICAgICAgIHwgIDUgKy0KIHNyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMv Y29weS5oICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2pzb24uaCAgICAgICAgICAg fCAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0IHwgNzYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbCAgICAg IHwgNDcgKysrKysrKysrKysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAyNTAgaW5zZXJ0aW9u cygrKSwgMjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5 LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAppbmRleCA1M2IwZWE4ZjU3My4uMzIw ZjVmMWVkZDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCkBAIC0yMjgsMTAgKzIyOCwxNSBAQCBDT1BZIHsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICgg PHJlcGxhY2VhYmxlCiAgICAgICBTZWxlY3RzIHRoZSBkYXRhIGZvcm1hdCB0byBiZSByZWFkIG9y IHdyaXR0ZW46CiAgICAgICA8bGl0ZXJhbD50ZXh0PC9saXRlcmFsPiwKICAgICAgIDxsaXRlcmFs PmNzdjwvbGl0ZXJhbD4gKENvbW1hIFNlcGFyYXRlZCBWYWx1ZXMpLAorICAgICAgPGxpdGVyYWw+ anNvbjwvbGl0ZXJhbD4gKEphdmFTY3JpcHQgT2JqZWN0IE5vdGF0aW9uKSwKICAgICAgIG9yIDxs aXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4uCiAgICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD50 ZXh0PC9saXRlcmFsPi4KICAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJzcWwtY29weS1maWxlLWZv cm1hdHMiLz4gYmVsb3cgZm9yIGRldGFpbHMuCiAgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+Cisg ICAgICBUaGUgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gb3B0aW9uIGlzIGFsbG93ZWQgb25seSBp bgorICAgICAgPGNvbW1hbmQ+Q09QWSBUTzwvY29tbWFuZD4uCisgICAgIDwvcGFyYT4KICAgICA8 L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTI2Niw3ICsyNzEsNyBAQCBDT1BZ IHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PiBbICggPHJlcGxhY2VhYmxlCiAgICAgICAobGluZSkgb2YgdGhlIGZpbGUuICBUaGUgZGVmYXVs dCBpcyBhIHRhYiBjaGFyYWN0ZXIgaW4gdGV4dCBmb3JtYXQsCiAgICAgICBhIGNvbW1hIGluIDxs aXRlcmFsPkNTVjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICAgVGhpcyBtdXN0IGJlIGEgc2luZ2xl IG9uZS1ieXRlIGNoYXJhY3Rlci4KLSAgICAgIFRoaXMgb3B0aW9uIGlzIG5vdCBhbGxvd2VkIHdo ZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBmb3JtYXQuCisgICAgICBUaGlzIG9w dGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4g b3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICA8L3BhcmE+CiAgICAgPC9s aXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMjgwLDcgKzI4NSw3IEBAIENPUFkgeyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsg KCA8cmVwbGFjZWFibGUKICAgICAgIHN0cmluZyBpbiA8bGl0ZXJhbD5DU1Y8L2xpdGVyYWw+IGZv cm1hdC4gWW91IG1pZ2h0IHByZWZlciBhbgogICAgICAgZW1wdHkgc3RyaW5nIGV2ZW4gaW4gdGV4 dCBmb3JtYXQgZm9yIGNhc2VzIHdoZXJlIHlvdSBkb24ndCB3YW50IHRvCiAgICAgICBkaXN0aW5n dWlzaCBudWxscyBmcm9tIGVtcHR5IHN0cmluZ3MuCi0gICAgICBUaGlzIG9wdGlvbiBpcyBub3Qg YWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gZm9ybWF0LgorICAg ICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8 L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgPC9wYXJh PgogCiAgICAgIDxub3RlPgpAQCAtMzAzLDcgKzMwOCw3IEBAIENPUFkgeyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFi bGUKICAgICAgIGlzIGZvdW5kIGluIHRoZSBpbnB1dCBmaWxlLCB0aGUgZGVmYXVsdCB2YWx1ZSBv ZiB0aGUgY29ycmVzcG9uZGluZyBjb2x1bW4KICAgICAgIHdpbGwgYmUgdXNlZC4KICAgICAgIFRo aXMgb3B0aW9uIGlzIGFsbG93ZWQgb25seSBpbiA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+ LCBhbmQgb25seSB3aGVuCi0gICAgICBub3QgdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFs PiBmb3JtYXQuCisgICAgICBub3QgdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBvciA8 bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0zMzAsNyArMzM1LDcgQEAgQ09QWSB7IDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxy ZXBsYWNlYWJsZQogICAgICAgPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPiBjb21tYW5kcy4K ICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KLSAgICAgIFRoaXMgb3B0aW9uIGlzIG5vdCBhbGxv d2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBmb3JtYXQuCisgICAgICBU aGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0 ZXJhbD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICA8L3BhcmE+CiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCmluZGV4IDg4 ZmFmY2M5OTQ5Li5mMTZjYTk4ODEyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNTk4LDYgKzU5OCw4 IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJb3B0c19vdXQt PmZvcm1hdCA9IENPUFlfRk9STUFUX0NTVjsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5h cnkiKSA9PSAwKQogCQkJCW9wdHNfb3V0LT5mb3JtYXQgPSBDT1BZX0ZPUk1BVF9CSU5BUlk7CisJ CQllbHNlIGlmIChzdHJjbXAoZm10LCAianNvbiIpID09IDApCisJCQkJb3B0c19vdXQtPmZvcm1h dCA9IENPUFlfRk9STUFUX0pTT047CiAJCQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtNzU3LDIxICs3 NTksMzIgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBDaGVj ayBmb3IgaW5jb21wYXRpYmxlIG9wdGlvbnMgKG11c3QgZG8gdGhlc2UgdGhyZWUgYmVmb3JlIGlu c2VydGluZwogCSAqIGRlZmF1bHRzKQogCSAqLwotCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENP UFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVsaW0pCisJaWYgKG9wdHNfb3V0LT5kZWxp bSAmJgorCQkob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgfHwKKwkJIG9w dHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikpCiAJCWVyZXBvcnQoRVJST1IsCi0J CQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkvKi0gdHJhbnNsYXRvcjogJXMg aXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwotCQkJCSBlcnJt c2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkRFTElNSVRFUiIpKSk7CisJ CQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJb3B0c19vdXQtPmZvcm1hdCA9 PSBDT1BZX0ZPUk1BVF9CSU5BUlkKKwkJCQk/IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4g QklOQVJZIG1vZGUiLCAiREVMSU1JVEVSIikKKwkJCQk6IGVycm1zZygiY2Fubm90IHNwZWNpZnkg JXMgaW4gSlNPTiBtb2RlIiwgIkRFTElNSVRFUiIpKTsKIAotCWlmIChvcHRzX291dC0+Zm9ybWF0 ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+bnVsbF9wcmludCkKKwlpZiAob3B0 c19vdXQtPm51bGxfcHJpbnQgJiYKKwkJKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRf QklOQVJZIHx8CisJCSBvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04pKQogCQll cmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkg ZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpKTsKKwkJ CQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID09 IENPUFlfRk9STUFUX0JJTkFSWQorCQkJCT8gZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBC SU5BUlkgbW9kZSIsICJOVUxMIikKKwkJCQk6IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4g SlNPTiBtb2RlIiwgIk5VTEwiKSk7CiAKLQlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZP Uk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRlZmF1bHRfcHJpbnQpCisJaWYgKG9wdHNfb3V0LT5k ZWZhdWx0X3ByaW50ICYmCisJCShvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFS WSB8fAorCQkgb3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OKSkKIAkJZXJlcG9y dChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJIGVycm1z ZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVGQVVMVCIpKSk7CisJCQkJ ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJb3B0c19vdXQtPmZvcm1hdCA9PSBD T1BZX0ZPUk1BVF9CSU5BUlkKKwkJCQk/IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklO QVJZIG1vZGUiLCAiREVGQVVMVCIpCisJCQkJOiBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGlu IEpTT04gbW9kZSIsICJERUZBVUxUIikpOwogCiAJLyogU2V0IGRlZmF1bHRzIGZvciBvbWl0dGVk IG9wdGlvbnMgKi8KIAlpZiAoIW9wdHNfb3V0LT5kZWxpbSkKQEAgLTgzNywxMSArODUwLDE1IEBA IFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJIGVycm1zZygiQ09Q WSBkZWxpbWl0ZXIgY2Fubm90IGJlIFwiJXNcIiIsIG9wdHNfb3V0LT5kZWxpbSkpKTsKIAogCS8q IENoZWNrIGhlYWRlciAqLwotCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJ TkFSWSAmJiBvcHRzX291dC0+aGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFMU0UpCisJaWYg KG9wdHNfb3V0LT5oZWFkZXJfbGluZSAhPSBDT1BZX0hFQURFUl9GQUxTRSAmJgorCQkob3B0c19v dXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgfHwKKwkJIG9wdHNfb3V0LT5mb3JtYXQg PT0gQ09QWV9GT1JNQVRfSlNPTikpCiAJCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBD T1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwotCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5 ICVzIGluIEJJTkFSWSBtb2RlIiwgIkhFQURFUiIpKSk7CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9 PSBDT1BZX0ZPUk1BVF9CSU5BUlkKKwkJCQk/IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4g QklOQVJZIG1vZGUiLCAiSEVBREVSIikKKwkJCQk6IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMg aW4gSlNPTiBtb2RlIiwgIkhFQURFUiIpKTsKIAogCS8qIENoZWNrIHF1b3RlICovCiAJaWYgKG9w dHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIG9wdHNfb3V0LT5xdW90ZSAhPSBO VUxMKQpAQCAtOTQ1LDYgKzk2MiwxMiBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCSBlcnJtc2coIkNPUFkgJXMgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIsICJG UkVFWkUiLAogCQkJCQkJIkNPUFkgVE8iKSkpOwogCisJLyogQ2hlY2sganNvbiBmb3JtYXQgKi8K KwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OICYmIGlzX2Zyb20pCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKKwkJCQllcnJtc2coIkNPUFkgJXMgbW9kZSBjYW5ub3QgYmUgdXNlZCB3aXRoICVzIiwg Impzb24iLCAiQ09QWSBGUk9NIikpOworCiAJaWYgKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQog CXsKIAkJaWYgKCFpc19mcm9tKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCAwMzI1YTE2ZjgyYS4u NzIwY2UwMjY3YmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j bHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCisjaW5jbHVkZSAiZnVuY2FwaS5oIgog I2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNp bmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgInBnc3Rh dC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90Lmgi CisjaW5jbHVkZSAidXRpbHMvanNvbi5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCkBAIC0x MzAsNiArMTMyLDcgQEAgc3RhdGljIHZvaWQgQ29weVRvQ1NWT25lUm93KENvcHlUb1N0YXRlIGNz dGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogc3RhdGljIHZvaWQgQ29weVRvVGV4dExpa2VP bmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJ IGJvb2wgaXNfY3N2KTsKIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlRW5kKENvcHlUb1N0YXRl IGNzdGF0ZSk7CitzdGF0aWMgdm9pZCBDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0 ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5U3RhcnQo Q29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYyk7CiBzdGF0aWMgdm9pZCBDb3B5 VG9CaW5hcnlPdXRGdW5jKENvcHlUb1N0YXRlIGNzdGF0ZSwgT2lkIGF0dHR5cGlkLCBGbWdySW5m byAqZmluZm8pOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5T25lUm93KENvcHlUb1N0YXRlIGNz dGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwpAQCAtMTQ5LDcgKzE1Miw3IEBAIHN0YXRpYyB2 b2lkIENvcHlTZW5kSW50MTYoQ29weVRvU3RhdGUgY3N0YXRlLCBpbnQxNiB2YWwpOwogLyoKICAq IENPUFkgVE8gcm91dGluZXMgZm9yIGJ1aWx0LWluIGZvcm1hdHMuCiAgKgotICogQ1NWIGFuZCB0 ZXh0IGZvcm1hdHMgc2hhcmUgdGhlIHNhbWUgVGV4dExpa2Ugcm91dGluZXMgZXhjZXB0IGZvciB0 aGUKKyAqIENTViwgdGV4dCBhbmQganNvbiBmb3JtYXRzIHNoYXJlIHRoZSBzYW1lIFRleHRMaWtl IHJvdXRpbmVzIGV4Y2VwdCBmb3IgdGhlCiAgKiBvbmUtcm93IGNhbGxiYWNrLgogICovCiAKQEAg LTE2OSw2ICsxNzIsMTQgQEAgc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGlu ZUNTViA9IHsKIAkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCiB9OwogCisvKiBqc29u IGZvcm1hdCAqLworc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUpzb24g PSB7CisJLkNvcHlUb1N0YXJ0ID0gQ29weVRvVGV4dExpa2VTdGFydCwKKwkuQ29weVRvT3V0RnVu YyA9IENvcHlUb1RleHRMaWtlT3V0RnVuYywKKwkuQ29weVRvT25lUm93ID0gQ29weVRvSnNvbk9u ZVJvdywKKwkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCit9OworCiAvKiBiaW5hcnkg Zm9ybWF0ICovCiBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lQmluYXJ5 ID0gewogCS5Db3B5VG9TdGFydCA9IENvcHlUb0JpbmFyeVN0YXJ0LApAQCAtMTg1LDEyICsxOTYs MTQgQEAgQ29weVRvR2V0Um91dGluZShjb25zdCBDb3B5Rm9ybWF0T3B0aW9ucyAqb3B0cykKIAkJ cmV0dXJuICZDb3B5VG9Sb3V0aW5lQ1NWOwogCWVsc2UgaWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZ X0ZPUk1BVF9CSU5BUlkpCiAJCXJldHVybiAmQ29weVRvUm91dGluZUJpbmFyeTsKKwllbHNlIGlm IChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJcmV0dXJuICZDb3B5VG9Sb3V0 aW5lSnNvbjsKIAogCS8qIGRlZmF1bHQgaXMgdGV4dCAqLwogCXJldHVybiAmQ29weVRvUm91dGlu ZVRleHQ7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBjYWxsYmFjayBmb3Ig dGV4dCBhbmQgQ1NWIGZvcm1hdHMgKi8KKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBj YWxsYmFjayBmb3IgdGV4dCwgQ1NWLCBhbmQganNvbiBmb3JtYXRzICovCiBzdGF0aWMgdm9pZAog Q29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNj KQogewpAQCAtMjA5LDYgKzIyMiw4IEBAIENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUg Y3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKIAkJTGlzdENlbGwgICAqY3VyOwogCQlib29sCQlo ZHJfZGVsaW0gPSBmYWxzZTsKIAorCQlBc3NlcnQoY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZ X0ZPUk1BVF9KU09OKTsKKwogCQlmb3JlYWNoKGN1ciwgY3N0YXRlLT5hdHRudW1saXN0KQogCQl7 CiAJCQlpbnQJCQlhdHRudW0gPSBsZmlyc3RfaW50KGN1cik7CkBAIC0yMzEsNyArMjQ2LDcgQEAg Q29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNj KQogfQogCiAvKgotICogSW1wbGVtZW50YXRpb24gb2YgdGhlIG91dGZ1bmMgY2FsbGJhY2sgZm9y IHRleHQgYW5kIENTViBmb3JtYXRzLiBBc3NpZ24KKyAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBv dXRmdW5jIGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMuIEFzc2lnbgog ICogdGhlIG91dHB1dCBmdW5jdGlvbiBkYXRhIHRvIHRoZSBnaXZlbiAqZmluZm8uCiAgKi8KIHN0 YXRpYyB2b2lkCkBAIC0zMDQsMTMgKzMxOSw0NiBAQCBDb3B5VG9UZXh0TGlrZU9uZVJvdyhDb3B5 VG9TdGF0ZSBjc3RhdGUsCiAJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNzdGF0ZSk7CiB9CiAK LS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sgZm9yIHRleHQgYW5kIENTViBm b3JtYXRzICovCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZW5kIGNhbGxiYWNrIGZvciB0ZXh0 LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMgKi8KIHN0YXRpYyB2b2lkCiBDb3B5VG9UZXh0TGlrZUVu ZChDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJLyogTm90aGluZyB0byBkbyBoZXJlICovCiB9CiAK Ky8qIEltcGxlbWVudGF0aW9uIG9mIHBlci1yb3cgY2FsbGJhY2sgZm9yIGpzb24gZm9ybWF0ICov CitzdGF0aWMgdm9pZAorQ29weVRvSnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxl VGFibGVTbG90ICpzbG90KQoreworCURhdHVtCQlyb3dkYXRhOworCVN0cmluZ0luZm8JcmVzdWx0 OworCisJLyoKKwkgKiBJZiBDT1BZIFRPIHNvdXJjZSBkYXRhIGNvbWUgZnJvbSBxdWVyeSByYXRo ZXIgdGhhbiBwbGFpbiB0YWJsZSwgd2UgbmVlZAorCSAqIGNvcHkgQ29weVRvU3RhdGUtPlF1ZXJ5 RGVzYy0+VHVwbGVEZXNjIHRvIHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IuCisJICogVGhpcyBp cyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgc2xvdCdzIFR1cGxlRGVzYyBtYXkgY2hhbmdlIGR1cmlu ZyBxdWVyeQorCSAqIGV4ZWN1dGlvbiwgYW5kIHdlIGRlcGVuZCBvbiBpdCB3aGVuIGNhbGxpbmcg Y29tcG9zaXRlX3RvX2pzb24uCisJICovCisJaWYgKCFjc3RhdGUtPnJlbCkKKwl7CisJCW1lbWNw eShUdXBsZURlc2NBdHRyKHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IsIDApLAorCQkJICAgVHVw bGVEZXNjQXR0cihjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYywgMCksCisJCQkgICBjc3RhdGUt PnF1ZXJ5RGVzYy0+dHVwRGVzYy0+bmF0dHMgKiBzaXplb2YoRm9ybURhdGFfcGdfYXR0cmlidXRl KSk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYy0+ bmF0dHM7IGkrKykKKwkJCXBvcHVsYXRlX2NvbXBhY3RfYXR0cmlidXRlKHNsb3QtPnR0c190dXBs ZURlc2NyaXB0b3IsIGkpOworCisJCUJsZXNzVHVwbGVEZXNjKHNsb3QtPnR0c190dXBsZURlc2Ny aXB0b3IpOworCX0KKwlyb3dkYXRhID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZURhdHVtKHNsb3Qp OworCXJlc3VsdCA9IG1ha2VTdHJpbmdJbmZvKCk7CisJY29tcG9zaXRlX3RvX2pzb24ocm93ZGF0 YSwgcmVzdWx0LCBmYWxzZSk7CisKKwlDb3B5U2VuZERhdGEoY3N0YXRlLCByZXN1bHQtPmRhdGEs IHJlc3VsdC0+bGVuKTsKKworCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOworfQor CiAvKgogICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YXJ0IGNhbGxiYWNrIGZvciBiaW5hcnkg Zm9ybWF0LiBTZW5kIGEgaGVhZGVyCiAgKiBmb3IgYSBiaW5hcnkgY29weS4KQEAgLTQwMiw5ICs0 NTAsMjEgQEAgU2VuZENvcHlCZWdpbihDb3B5VG9TdGF0ZSBjc3RhdGUpCiAKIAlwcV9iZWdpbm1l c3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weU91dFJlc3BvbnNlKTsKIAlwcV9zZW5kYnl0ZSgmYnVmLCBm b3JtYXQpOwkvKiBvdmVyYWxsIGZvcm1hdCAqLwotCXBxX3NlbmRpbnQxNigmYnVmLCBuYXR0cyk7 Ci0JZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCi0JCXBxX3NlbmRpbnQxNigmYnVmLCBmb3Jt YXQpOyAvKiBwZXItY29sdW1uIGZvcm1hdHMgKi8KKwlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCAh PSBDT1BZX0ZPUk1BVF9KU09OKQorCXsKKwkJcHFfc2VuZGludDE2KCZidWYsIG5hdHRzKTsKKwkJ Zm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJCQlwcV9zZW5kaW50MTYoJmJ1ZiwgZm9ybWF0 KTsgLyogcGVyLWNvbHVtbiBmb3JtYXRzICovCisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIEpT T04gZm9ybWF0IGlzIGFsd2F5cyBvbmUgbm9uLWJpbmFyeSBjb2x1bW4KKwkJICovCisJCXBxX3Nl bmRpbnQxNigmYnVmLCAxKTsKKwkJcHFfc2VuZGludDE2KCZidWYsIDApOworCX0KKwogCXBxX2Vu ZG1lc3NhZ2UoJmJ1Zik7CiAJY3N0YXRlLT5jb3B5X2Rlc3QgPSBDT1BZX0ZST05URU5EOwogfQpA QCAtNTA2LDcgKzU2Niw3IEBAIENvcHlTZW5kRW5kT2ZSb3coQ29weVRvU3RhdGUgY3N0YXRlKQog fQogCiAvKgotICogV3JhcHBlciBmdW5jdGlvbiBvZiBDb3B5U2VuZEVuZE9mUm93IGZvciB0ZXh0 IGFuZCBDU1YgZm9ybWF0cy4gU2VuZHMgdGhlCisgKiBXcmFwcGVyIGZ1bmN0aW9uIG9mIENvcHlT ZW5kRW5kT2ZSb3cgZm9yIHRleHQsIENTViwgYW5kIGpzb24gZm9ybWF0cy4gU2VuZHMgdGhlCiAg KiBsaW5lIHRlcm1pbmF0aW9uIGFuZCBkbyBjb21tb24gYXBwcm9wcmlhdGUgdGhpbmdzIGZvciB0 aGUgZW5kIG9mIHJvdy4KICAqLwogc3RhdGljIGlubGluZSB2b2lkCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA3 MTNlZTVjMTBhMi4uZjcwYTQ2NWJiNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMzYwOSw2ICszNjA5LDEw IEBAIGNvcHlfb3B0X2l0ZW06CiAJCQkJewogCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJmb3JtYXQi LCAoTm9kZSAqKSBtYWtlU3RyaW5nKCJjc3YiKSwgQDEpOwogCQkJCX0KKwkJCXwgSlNPTgorCQkJ CXsKKwkJCQkJJCQgPSBtYWtlRGVmRWxlbSgiZm9ybWF0IiwgKE5vZGUgKikgbWFrZVN0cmluZygi anNvbiIpLCBAMSk7CisJCQkJfQogCQkJfCBIRUFERVJfUAogCQkJCXsKIAkJCQkJJCQgPSBtYWtl RGVmRWxlbSgiaGVhZGVyIiwgKE5vZGUgKikgbWFrZUJvb2xlYW4odHJ1ZSksIEAxKTsKQEAgLTM2 OTEsNiArMzY5NSwxMCBAQCBjb3B5X2dlbmVyaWNfb3B0X2VsZW06CiAJCQkJewogCQkJCQkkJCA9 IG1ha2VEZWZFbGVtKCQxLCAkMiwgQDEpOwogCQkJCX0KKwkJCXwgRk9STUFUX0xBIGNvcHlfZ2Vu ZXJpY19vcHRfYXJnCisJCQkJeworCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJmb3JtYXQiLCAkMiwg QDEpOworCQkJCX0KIAkJOwogCiBjb3B5X2dlbmVyaWNfb3B0X2FyZzoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5j CmluZGV4IDBiMTYxMzk4NDY1Li5mNjA5ZDdiOTQxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCkBAIC04 Niw4ICs4Niw2IEBAIHR5cGVkZWYgc3RydWN0IEpzb25BZ2dTdGF0ZQogCUpzb25VbmlxdWVCdWls ZGVyU3RhdGUgdW5pcXVlX2NoZWNrOwogfSBKc29uQWdnU3RhdGU7CiAKLXN0YXRpYyB2b2lkIGNv bXBvc2l0ZV90b19qc29uKERhdHVtIGNvbXBvc2l0ZSwgU3RyaW5nSW5mbyByZXN1bHQsCi0JCQkJ CQkJICBib29sIHVzZV9saW5lX2ZlZWRzKTsKIHN0YXRpYyB2b2lkIGFycmF5X2RpbV90b19qc29u KFN0cmluZ0luZm8gcmVzdWx0LCBpbnQgZGltLCBpbnQgbmRpbXMsIGludCAqZGltcywKIAkJCQkJ CQkgIGNvbnN0IERhdHVtICp2YWxzLCBjb25zdCBib29sICpudWxscywgaW50ICp2YWxjb3VudCwK IAkJCQkJCQkgIEpzb25UeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LCBPaWQgb3V0ZnVuY29pZCwKQEAg LTUxNyw4ICs1MTUsOSBAQCBhcnJheV90b19qc29uX2ludGVybmFsKERhdHVtIGFycmF5LCBTdHJp bmdJbmZvIHJlc3VsdCwgYm9vbCB1c2VfbGluZV9mZWVkcykKIAogLyoKICAqIFR1cm4gYSBjb21w b3NpdGUgLyByZWNvcmQgaW50byBKU09OLgorICogRXhwb3J0ZWQgc28gQ09QWSBUTyBjYW4gdXNl IGl0LgogICovCi1zdGF0aWMgdm9pZAordm9pZAogY29tcG9zaXRlX3RvX2pzb24oRGF0dW0gY29t cG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwgYm9vbCB1c2VfbGluZV9mZWVkcykKIHsKIAlIZWFw VHVwbGVIZWFkZXIgdGQ7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggOGI5MWJjMDAwNjIuLjM3 Y2I2NGQyYjcyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysr IGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0zNDEzLDcgKzM0MTMsNyBAQCBt YXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAogCQkJLyogQ29tcGxldGUgQ09Q WSA8c3RoPiBGUk9NfFRPIGZpbGVuYW1lIFdJVEggKEZPUk1BVCAqLwogCQkJZWxzZSBpZiAoVGFp bE1hdGNoZXMoIkZPUk1BVCIpKQotCQkJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjc3YiLCAi dGV4dCIpOworCQkJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjc3YiLCAidGV4dCIsICJqc29u Iik7CiAKIAkJCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBmaWxlbmFtZSBXSVRIIChG UkVFWkUgKi8KIAkJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJGUkVFWkUiKSkKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHku aAppbmRleCA3YmU0MWQ5ZGExMi4uZmU4NWYwMmIxMTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2NvcHkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKQEAgLTU2 LDYgKzU2LDcgQEAgdHlwZWRlZiBlbnVtIENvcHlGb3JtYXQKIAlDT1BZX0ZPUk1BVF9URVhUID0g MCwKIAlDT1BZX0ZPUk1BVF9CSU5BUlksCiAJQ09QWV9GT1JNQVRfQ1NWLAorCUNPUFlfRk9STUFU X0pTT04sCiB9IENvcHlGb3JtYXQ7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9qc29uLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29uLmgKaW5kZXggZjhjYzUyYjFlNzguLjJm NGJlNDA1MThkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29uLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvanNvbi5oCkBAIC0xNyw2ICsxNyw4IEBACiAjaW5jbHVkZSAibGliL3N0 cmluZ2luZm8uaCIKIAogLyogZnVuY3Rpb25zIGluIGpzb24uYyAqLworZXh0ZXJuIHZvaWQgY29t cG9zaXRlX3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwKKwkJCQkJ CQkgIGJvb2wgdXNlX2xpbmVfZmVlZHMpOwogZXh0ZXJuIHZvaWQgZXNjYXBlX2pzb24oU3RyaW5n SW5mbyBidWYsIGNvbnN0IGNoYXIgKnN0cik7CiBleHRlcm4gdm9pZCBlc2NhcGVfanNvbl93aXRo X2xlbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hhciAqc3RyLCBpbnQgbGVuKTsKIGV4dGVybiB2 b2lkIGVzY2FwZV9qc29uX3RleHQoU3RyaW5nSW5mbyBidWYsIGNvbnN0IHRleHQgKnR4dCk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAppbmRleCBkMGQ1NjNlMGZhOC4uMjdhMjhmZWU3N2Ig MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dApAQCAtNzMsNiArNzMsODIgQEAgY29weSBj b3B5dGVzdDMgdG8gc3Rkb3V0IGNzdiBoZWFkZXI7CiBjMSwiY29sIHdpdGggLCBjb21tYSIsImNv bCB3aXRoICIiIHF1b3RlIgogMSxhLDEKIDIsYiwyCistLS0gdGVzdCBjb3B5aW5nIGluIEpTT04g bW9kZSB3aXRoIHZhcmlvdXMgc3R5bGVzCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCBqc29uOwor eyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6 IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwidGVz dCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFc XHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9y bWF0IGpzb24pOworeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjox fQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxl IjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHlsZSI6ImVzY1xcYXBl IiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9CistLSBhbGwgb2YgdGhlIGZv bGxvd2luZyBzaG91bGQgeWllbGQgZXJyb3IKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQganNvbiwgZGVsaW1pdGVyICd8Jyk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IERFTElNSVRF UiBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgbnVs bCAnXE4nKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgTlVMTCBpbiBKU09OIG1vZGUKK2NvcHkg Y29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZGVmYXVsdCAnfCcpOworRVJST1I6ICBj YW5ub3Qgc3BlY2lmeSBERUZBVUxUIGluIEpTT04gbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRv dXQgKGZvcm1hdCBqc29uLCBoZWFkZXIpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBIRUFERVIg aW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGhlYWRl ciAxKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgSEVBREVSIGluIEpTT04gbW9kZQorY29weSBj b3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBxdW90ZSAnIicpOworRVJST1I6ICBDT1BZ IFFVT1RFIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24sIGVzY2FwZSAnIicpOworRVJST1I6ICBDT1BZIEVTQ0FQRSByZXF1aXJlcyBDU1YgbW9k ZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9xdW90ZSAqKTsK K0VSUk9SOiAgQ09QWSBGT1JDRV9RVU9URSByZXF1aXJlcyBDU1YgbW9kZQorY29weSBjb3B5dGVz dCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9ub3RfbnVsbCAqKTsKK0VSUk9SOiAgQ09Q WSBGT1JDRV9OT1RfTlVMTCByZXF1aXJlcyBDU1YgbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRv dXQgKGZvcm1hdCBqc29uLCBmb3JjZV9udWxsICopOworRVJST1I6ICBDT1BZIEZPUkNFX05VTEwg cmVxdWlyZXMgQ1NWIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwg b25fZXJyb3IgaWdub3JlKTsKK0VSUk9SOiAgQ09QWSBPTl9FUlJPUiBjYW5ub3QgYmUgdXNlZCB3 aXRoIENPUFkgVE8KK0xJTkUgMTogY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29u LCBvbl9lcnJvciBpZ25vcmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK2NvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3JtYXQganNvbik7CitFUlJP UjogIENPUFkganNvbiBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBGUk9NCistLSBhbGwg b2YgdGhlIGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgorLS0gZW1iZWRkZWQgZXNjYXBlZCBjaGFy YWN0ZXJzCitjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRlc3QgKAorICAgIGlkIGJpZ3Nlcmlh bCwKKyAgICBmMSB0ZXh0LAorICAgIGYyIHRpbWVzdGFtcHR6KTsKK2luc2VydCBpbnRvIGNvcHlq c29udGVzdAorICBzZWxlY3QgZy5pLAorICAgICAgICAgQ0FTRSBXSEVOIGcuaSAlIDIgPSAwIFRI RU4KKyAgICAgICAgICAgJ2xpbmUgd2l0aCAnJyBpbiBpdDogJyB8fCBnLmk6OnRleHQKKyAgICAg ICAgIEVMU0UKKyAgICAgICAgICAgJ2xpbmUgd2l0aCAiIGluIGl0OiAnIHx8IGcuaTo6dGV4dAor ICAgICAgICAgRU5ELAorICAgICAgICAgJ01vbiBGZWIgMTAgMTc6MzI6MDEgMTk5NyBQU1QnCisg IGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgYXMgZyhpKTsKK2luc2VydCBpbnRvIGNvcHlqc29u dGVzdCAoZjEpIHZhbHVlcworKEUnYWFhXCJiYmInOjp0ZXh0KSwKKyhFJ2FhYVxcYmJiJzo6dGV4 dCksCisoRSdhYWFcL2JiYic6OnRleHQpLAorKEUnYWFhXGJiYmInOjp0ZXh0KSwKKyhFJ2FhYVxm YmJiJzo6dGV4dCksCisoRSdhYWFcbmJiYic6OnRleHQpLAorKEUnYWFhXHJiYmInOjp0ZXh0KSwK KyhFJ2FhYVx0YmJiJzo6dGV4dCk7Citjb3B5IGNvcHlqc29udGVzdCB0byBzdGRvdXQganNvbjsK K3siaWQiOjEsImYxIjoibGluZSB3aXRoIFwiIGluIGl0OiAxIiwiZjIiOiIxOTk3LTAyLTEwVDE3 OjMyOjAxLTA4OjAwIn0KK3siaWQiOjIsImYxIjoibGluZSB3aXRoICcgaW4gaXQ6IDIiLCJmMiI6 IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6MywiZjEiOiJsaW5lIHdpdGggXCIg aW4gaXQ6IDMiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6NCwiZjEi OiJsaW5lIHdpdGggJyBpbiBpdDogNCIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9 Cit7ImlkIjo1LCJmMSI6ImxpbmUgd2l0aCBcIiBpbiBpdDogNSIsImYyIjoiMTk5Ny0wMi0xMFQx NzozMjowMS0wODowMCJ9Cit7ImlkIjoxLCJmMSI6ImFhYVwiYmJiIiwiZjIiOm51bGx9Cit7Imlk IjoyLCJmMSI6ImFhYVxcYmJiIiwiZjIiOm51bGx9Cit7ImlkIjozLCJmMSI6ImFhYS9iYmIiLCJm MiI6bnVsbH0KK3siaWQiOjQsImYxIjoiYWFhXGJiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjUsImYx IjoiYWFhXGZiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjYsImYxIjoiYWFhXG5iYmIiLCJmMiI6bnVs bH0KK3siaWQiOjcsImYxIjoiYWFhXHJiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjgsImYxIjoiYWFh XHRiYmIiLCJmMiI6bnVsbH0KIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHl0ZXN0NCAoCiAJYzEgaW50 LAogCSJjb2xuYW1lIHdpdGggdGFiOiAJIiB0ZXh0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NvcHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKaW5kZXgg NjVjYmRhZjdmM2UuLmE1NGFmNjM2MzE3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb3B5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbApAQCAtODIsNiAr ODIsNTMgQEAgdGhpcyBpcyBqdXN0IGEgbGluZSBmdWxsIG9mIGp1bmsgdGhhdCB3b3VsZCBlcnJv ciBvdXQgaWYgcGFyc2VkCiAKIGNvcHkgY29weXRlc3QzIHRvIHN0ZG91dCBjc3YgaGVhZGVyOwog CistLS0gdGVzdCBjb3B5aW5nIGluIEpTT04gbW9kZSB3aXRoIHZhcmlvdXMgc3R5bGVzCitjb3B5 IGNvcHl0ZXN0IHRvIHN0ZG91dCBqc29uOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1h dCBqc29uKTsKKworLS0gYWxsIG9mIHRoZSBmb2xsb3dpbmcgc2hvdWxkIHlpZWxkIGVycm9yCitj b3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGRlbGltaXRlciAnfCcpOworY29w eSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBudWxsICdcTicpOworY29weSBjb3B5 dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWZhdWx0ICd8Jyk7Citjb3B5IGNvcHl0ZXN0 IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGhlYWRlcik7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91 dCAoZm9ybWF0IGpzb24sIGhlYWRlciAxKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQganNvbiwgcXVvdGUgJyInKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNv biwgZXNjYXBlICciJyk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZv cmNlX3F1b3RlICopOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3Jj ZV9ub3RfbnVsbCAqKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9y Y2VfbnVsbCAqKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgb25fZXJy b3IgaWdub3JlKTsKK2NvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3JtYXQganNvbik7CistLSBh bGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgorCistLSBlbWJlZGRlZCBlc2NhcGVk IGNoYXJhY3RlcnMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCisgICAgaWQgYmln c2VyaWFsLAorICAgIGYxIHRleHQsCisgICAgZjIgdGltZXN0YW1wdHopOworCitpbnNlcnQgaW50 byBjb3B5anNvbnRlc3QKKyAgc2VsZWN0IGcuaSwKKyAgICAgICAgIENBU0UgV0hFTiBnLmkgJSAy ID0gMCBUSEVOCisgICAgICAgICAgICdsaW5lIHdpdGggJycgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0 CisgICAgICAgICBFTFNFCisgICAgICAgICAgICdsaW5lIHdpdGggIiBpbiBpdDogJyB8fCBnLmk6 OnRleHQKKyAgICAgICAgIEVORCwKKyAgICAgICAgICdNb24gRmViIDEwIDE3OjMyOjAxIDE5OTcg UFNUJworICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUpIGFzIGcoaSk7CisKK2luc2VydCBpbnRv IGNvcHlqc29udGVzdCAoZjEpIHZhbHVlcworKEUnYWFhXCJiYmInOjp0ZXh0KSwKKyhFJ2FhYVxc YmJiJzo6dGV4dCksCisoRSdhYWFcL2JiYic6OnRleHQpLAorKEUnYWFhXGJiYmInOjp0ZXh0KSwK KyhFJ2FhYVxmYmJiJzo6dGV4dCksCisoRSdhYWFcbmJiYic6OnRleHQpLAorKEUnYWFhXHJiYmIn Ojp0ZXh0KSwKKyhFJ2FhYVx0YmJiJzo6dGV4dCk7CisKK2NvcHkgY29weWpzb250ZXN0IHRvIHN0 ZG91dCBqc29uOworCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5dGVzdDQgKAogCWMxIGludCwKIAki Y29sbmFtZSB3aXRoIHRhYjogCSIgdGV4dCk7Ci0tIAoyLjM0LjEKCg== --0000000000000e4edf064a5c0416--