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 1voCUc-00GX0n-34 for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Feb 2026 03:26:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1voCUa-001pzA-1j for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Feb 2026 03:26:48 +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 1voCUZ-001pz1-2g for pgsql-hackers@lists.postgresql.org; Fri, 06 Feb 2026 03:26:48 +0000 Received: from mail-vs1-xe2e.google.com ([2607:f8b0:4864:20::e2e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1voCUV-00000000mQ1-1iiY for pgsql-hackers@postgresql.org; Fri, 06 Feb 2026 03:26:46 +0000 Received: by mail-vs1-xe2e.google.com with SMTP id ada2fe7eead31-5fa26e497abso217419137.3 for ; Thu, 05 Feb 2026 19:26:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770348402; cv=none; d=google.com; s=arc-20240605; b=PSu5KhqM0uWGBW8nz3KbkgDaiXw4kexpoPW1NqnPpsKhVjtNE+T/4x68Q/Ek/6puJ9 nmNGpXiXPFAI2gPlvlV9pKtdXN6TLcB8tXPsQIkDsbrRNbLijYGSw7nCDmpbC9yxSrId xGRmiGLaViQkEYqbTc3xiyaB3msm3hbSFyCLWL512wFrJ2zIxxuK+a9CiOc9QzBz23f+ rTTB6zqSFEXymWsLC9CpRs6DZ84HlU6FWpv8Zi+Ss58s/icNe4eZGPpP5/njiGDNChoq BDz5uIuXY/qTCPykSGPTsi/MurcqzypJwQJNxszt1Q6l47/XoWfHw5bdDv7UTPRTkOqv q+yQ== 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=dvUCVgE0yybu2LNkwx1RT0kIuD6/sqZ8Zs2CC5VDFCo=; fh=oCnEr5clJ+xO/4Eg0uw0iW3jKXaggY2fig7ZXInfS4Y=; b=Jwgy7skFvYRn9mEyjZdnD/HL09YZEjTX8WZLU7MutnF87Zme/w+Ul7K9Z5CDDX1j08 SHMd5nmHC1gRcwlNYmX2gr0sld2TvftLfUwBlQLLsV7CxbcZLxV0Tfy05tRqZEayHCxF cNTl7NreTk2IwC3qIPACxe6orcnkLXWwxWFCS4S8KZn7A3G2rw6wzpCzgVt8ghna0SKz iwz/0BwAulrxNF8TdTTnl8khuQoPdoRswrVE1DS6dlcWjd1LEC1pq1iYF0MUw/yfWwc2 qsY9GXxT6L5DQpDIEPo1aYwjnDY1BTLnDup+95psYvO/Y+mbiELwTPMNNrdl5NBotSWK pTtg==; 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=1770348402; x=1770953202; 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=dvUCVgE0yybu2LNkwx1RT0kIuD6/sqZ8Zs2CC5VDFCo=; b=ljB8p1lPDjrBWq8M11V3fWWuDHin60r3G2ybB13t1nP+NWX9KQftPtTOb4AzsBfGir 3LSp/FSkc2rUnN80wGFzBNia4RFBaMPCNVPJCpqJE3bYxOTFiXOWGYW8vEwolGQ85JNI wEEJXkjXKRWFCV96h5C7900nC619/qe7Bzv1Ojul8Ma32Q+XPTCZWDZGU5ZYDv9kLEgK 7HYLKsYtu6Y8MIWNi3fZSrCVF5D42vHWG8TUN2Hz35LQenVPKqHnluUxIkaS0oaD/peZ 2kYBnbGCeaJs1HhAuRctn2Mv2XjiRuQOgbSbASYPsD3rDltEWIUdVnj3j2PyIKGyMSQq 4OGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770348402; x=1770953202; 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=dvUCVgE0yybu2LNkwx1RT0kIuD6/sqZ8Zs2CC5VDFCo=; b=oXqMtNKOyA23QW0VbD4uubJindPUcPnW6yIrHygMATufWiaEcqE25OUrX9T9oxuUrl SGGntTUAvXzBPaRlwSyXr+2wG9T/n/P2hSNMOuFCHPFWkV+52jblHMEwQkckjtqTtR97 SuBC5WkwBrFFyw2eydl12m7M9sCWSwMRTLGPte6BtgMlTsXdJnfHrxv9y02qVYljBAYz VmyL/vPociTB+bqPYNAymCGtXNei36/phEOT7qe97imsGMNGLrh9NikU1S0FYgq2htmm CXNZ3Nh6Q6/2tMdXFeTupXtyP4IotlloWfRR1Otv6NEXOozuHCsUUyZv5iz4LofY/bcY eItA== X-Forwarded-Encrypted: i=1; AJvYcCXOyugAwgFrucdN+8uizcLmoaBYNRyljXmpY+cWD793uZe1CObiv417qgSc+G/tFntI1lKqdOwErSDkSC4E@postgresql.org X-Gm-Message-State: AOJu0YyL1V1Z2IPHoSRZ+ficKUxxVZcWzXH4N/LnR1b4dhcuyFCkErEd sBW1po1bFJEd4LjgONqcB/cnjUBnNtaEJeJL+JvJXvXpflTnE7DtJ3STka8GrjBf19YzL6Qa1Jt sFcDQ82MyIFWpq1C8Vm7bkXKG+KEtcko= X-Gm-Gg: AZuq6aIzKuFX+jmWfQRYUhyrdthr60YEjJO2rSzoBAogcP54lO5p7xXi+OU4eQY4n4j 4zc0L2fYOEVYVlTIh/kO+VEu9sSKxD6qvRqrMN4bmClSfhz9xSdQmh12tRQx2/JFLM9qliLbUQi JYfHOPJ3JfnzoOfXNcQIF9r4jGZFMIFkQcMXXfvuqBJp526k0aglqaklKxK5YeEKrAOef8lL2lp fcGJqosAMfErp1sEVOm1GOWQTiLSyOTCdBKhOGuknMQ9G6qvErNsSmTJZHEAhz9qYZ9R3i3ZcKL LWGKo5P02GgI2bbYDlRRPmyYzNle2S9gBKBBOVnMXGZzB3h4YchXX1iqp44wzlu7zWbsS+tAN2t MSqKC0hTJPxOI5mN5bR2O4VuN2zVdY4pU3YOYKegKwUY20V8kq81NOXygeK2mDwLjTlx7DjHuS2 nqUKnZBcE1Bw== X-Received: by 2002:a05:6102:5092:b0:5f5:3c96:983f with SMTP id ada2fe7eead31-5fae8a3ad9cmr399042137.1.1770348401987; Thu, 05 Feb 2026 19:26:41 -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: Fri, 6 Feb 2026 11:26:04 +0800 X-Gm-Features: AZwV_Qjgsz8EfuiRbwV35yitvnL9pJxlhEvwbAnPo7eSyIwkYhMnEgLboFm-B3s Message-ID: Subject: Re: Emitting JSON to file using COPY TO To: Florents Tselai Cc: Junwang Zhao , Joe Conway , "Andrey M. Borodin" , Dean Rasheed , Daniel Verite , Andrew Dunstan , Davin Shearer , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000a13c11064a1f5b1e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a13c11064a1f5b1e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 4, 2026 at 12:41=E2=80=AFAM Florents Tselai wrote: > > I (and others I assume) would really like to see this in 19; > glancing at the thread above and in the test cases I see this is in good = shape for comitter review. > No? > > If I were to add something it would be an example in copy.sgml > > When the FORCE_ARRAY option is enabled, > the entire output is wrapped in a JSON array and individual rows are s= eparated by commas: > > COPY (SELECT id, name FROM users) TO STDOUT (FORMAT JSON, FORCE_ARRAY); > > > [ > {"id": 1, "name": "Alice"} > ,{"id": 2, "name": "Bob"} > ,{"id": 3, "name": "Charlie"} > ] > > > v23-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch I've added: + + When the FORCE_ARRAY option is enabled, + the entire output is wrapped in a single JSON array with rows separated by commas: + +COPY (SELECT * FROM (VALUES(1),(2)) val(id)) TO STDOUT (FORMAT JSON, FORCE_ARRAY); + +The output is as follows: + +[ + {"id":1} +,{"id":2} +] + + + + > Also, apologies if that has been discussed already, > is there a good reason why didn't we just go with a simple "WRAP_ARRAY" ? > I don=E2=80=99t have a particular preference. If the consensus is that WRAP_ARRAY is better than FORCE_ARRAY, we can change it accordingly. -- jian https://www.enterprisedb.com/ --000000000000a13c11064a1f5b1e Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0002-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v23-0002-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlabosot1 RnJvbSA4OWEwYWIzMTIxNzM5YjAyNDNmZGZiODBmYzIyNDg0YzVmMWI2YzI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjEgSmFuIDIwMjYgMTg6NDM6MTQgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy MyAyLzNdIGpzb24gZm9ybWF0IGZvciBDT1BZIFRPCgpKU09OIGZvcm1hdCBpcyBvbmx5IHN1cHBv cnRlZCB3aXRoIHRoZSBDT1BZIFRPIG9wZXJhdGlvbi4gSXQgaXMgaW5jb21wYXRpYmxlCndpdGgg b3B0aW9ucyBzdWNoIGFzIEhFQURFUiwgREVGQVVMVCwgTlVMTCwgREVMSU1JVEVSLCBhbmQgc2V2 ZXJhbCBvdGhlcnMuIFRoaXMKaGFzIGJlZW4gdGhvcm91Z2hseSB0ZXN0ZWQgaW4gc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weS5zcWwKClRoZSBDb3B5Rm9ybWF0IGVudW0gd2FzIG9yaWdpbmFsbHkg Y29udHJpYnV0ZWQgYnkgSm9lbCBKYWNvYnNvbgpqb2VsQGNvbXBpbGVyLm9yZywgbGF0ZXIgcmVm YWN0b3JlZCBieSBKaWFuIEhlIHRvIGFkZHJlc3MgdmFyaW91cyBpc3N1ZXMsIGFuZApmdXJ0aGVy IGFkYXB0ZWQgYnkgSnVud2FuZyBaaGFvIHRvIHN1cHBvcnQgdGhlIG5ld2x5IGludHJvZHVjZWQg Q29weVRvUm91dGluZQpzdHJ1Y3QgKGNvbW1pdCAyZTQxMjdiNmQyKS4KCkF1dGhvcjogSm9lIENv bndheSA8bWFpbEBqb2Vjb253YXkuY29tPgpSZXZpZXdlZC1ieTogIkFuZHJleSBNLiBCb3JvZGlu IiA8eDRtbW1AeWFuZGV4LXRlYW0ucnU+LApSZXZpZXdlZC1ieTogRGVhbiBSYXNoZWVkIDxkZWFu LmEucmFzaGVlZEBnbWFpbC5jb20+LApSZXZpZXdlZC1ieTogRGFuaWVsIFZlcml0ZSA8ZGFuaWVs QG1hbml0b3UtbWFpbC5vcmc+LApSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0Bk dW5zbGFuZS5uZXQ+LApSZXZpZXdlZC1ieTogRGF2aW4gU2hlYXJlciA8ZGF2aW5AYXBhY2hlLm9y Zz4sClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNvbT4s ClJldmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5uby1pcC5vcmc+Cgpk aXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWky emdUMDd0M2QteVJfY3k0c2ZyckxVJTNEa2NnJTQwbWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjog aHR0cHM6Ly9wb3N0Z3IuZXMvbS82YTA0NjI4ZC0wZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNA am9lY29ud2F5LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sICAgICAgICAgfCAx MyArKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAgICAgICB8IDcyICsrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAg fCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkgICAgICAgICAgfCAgOCArKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jICAg ICAgIHwgIDUgKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgfCAgMiArLQog c3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0 aWxzL2pzb24uaCAgICAgICAgICAgfCAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv cHkub3V0IHwgNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9jb3B5LnNxbCAgICAgIHwgNDcgKysrKysrKysrKysrKysrKysrCiAxMCBmaWxlcyBj aGFuZ2VkLCAyNjggaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApp bmRleCA1M2IwZWE4ZjU3My4uMzIwZjVmMWVkZDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY29weS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCkBAIC0yMjgsMTAg KzIyOCwxNSBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICBTZWxlY3RzIHRoZSBkYXRh IGZvcm1hdCB0byBiZSByZWFkIG9yIHdyaXR0ZW46CiAgICAgICA8bGl0ZXJhbD50ZXh0PC9saXRl cmFsPiwKICAgICAgIDxsaXRlcmFsPmNzdjwvbGl0ZXJhbD4gKENvbW1hIFNlcGFyYXRlZCBWYWx1 ZXMpLAorICAgICAgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gKEphdmFTY3JpcHQgT2JqZWN0IE5v dGF0aW9uKSwKICAgICAgIG9yIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4uCiAgICAgICBUaGUg ZGVmYXVsdCBpcyA8bGl0ZXJhbD50ZXh0PC9saXRlcmFsPi4KICAgICAgIFNlZSA8eHJlZiBsaW5r ZW5kPSJzcWwtY29weS1maWxlLWZvcm1hdHMiLz4gYmVsb3cgZm9yIGRldGFpbHMuCiAgICAgIDwv cGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gb3B0 aW9uIGlzIGFsbG93ZWQgb25seSBpbgorICAgICAgPGNvbW1hbmQ+Q09QWSBUTzwvY29tbWFuZD4u CisgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKQEAg LTI2Niw3ICsyNzEsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICAobGluZSkgb2Yg dGhlIGZpbGUuICBUaGUgZGVmYXVsdCBpcyBhIHRhYiBjaGFyYWN0ZXIgaW4gdGV4dCBmb3JtYXQs CiAgICAgICBhIGNvbW1hIGluIDxsaXRlcmFsPkNTVjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICAg VGhpcyBtdXN0IGJlIGEgc2luZ2xlIG9uZS1ieXRlIGNoYXJhY3Rlci4KLSAgICAgIFRoaXMgb3B0 aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBm b3JtYXQuCisgICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRl cmFsPmJpbmFyeTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0Lgog ICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMjgw LDcgKzI4NSw3IEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVf bmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIHN0cmluZyBpbiA8bGl0 ZXJhbD5DU1Y8L2xpdGVyYWw+IGZvcm1hdC4gWW91IG1pZ2h0IHByZWZlciBhbgogICAgICAgZW1w dHkgc3RyaW5nIGV2ZW4gaW4gdGV4dCBmb3JtYXQgZm9yIGNhc2VzIHdoZXJlIHlvdSBkb24ndCB3 YW50IHRvCiAgICAgICBkaXN0aW5ndWlzaCBudWxscyBmcm9tIGVtcHR5IHN0cmluZ3MuCi0gICAg ICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwv bGl0ZXJhbD4gZm9ybWF0LgorICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1 c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+ IGZvcm1hdC4KICAgICAgPC9wYXJhPgogCiAgICAgIDxub3RlPgpAQCAtMzAzLDcgKzMwOCw3IEBA IENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFj ZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIGlzIGZvdW5kIGluIHRoZSBpbnB1dCBmaWxl LCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBjb2x1bW4KICAgICAgIHdp bGwgYmUgdXNlZC4KICAgICAgIFRoaXMgb3B0aW9uIGlzIGFsbG93ZWQgb25seSBpbiA8Y29tbWFu ZD5DT1BZIEZST008L2NvbW1hbmQ+LCBhbmQgb25seSB3aGVuCi0gICAgICBub3QgdXNpbmcgPGxp dGVyYWw+YmluYXJ5PC9saXRlcmFsPiBmb3JtYXQuCisgICAgICBub3QgdXNpbmcgPGxpdGVyYWw+ YmluYXJ5PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAg IDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0zMzAsNyAr MzM1LDcgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgPGNvbW1hbmQ+Q09QWSBGUk9N PC9jb21tYW5kPiBjb21tYW5kcy4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KLSAgICAgIFRo aXMgb3B0aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRl cmFsPiBmb3JtYXQuCisgICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5n IDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9y bWF0LgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5Pgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jCmluZGV4IDg4ZmFmY2M5OTQ5Li5mODNjNjMyYTA2OSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHkuYwpAQCAtNTk4LDYgKzU5OCw4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX0NTVjsKIAkJCWVsc2Ug aWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQogCQkJCW9wdHNfb3V0LT5mb3JtYXQgPSBD T1BZX0ZPUk1BVF9CSU5BUlk7CisJCQllbHNlIGlmIChzdHJjbXAoZm10LCAianNvbiIpID09IDAp CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX0pTT047CiAJCQllbHNlCiAJCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLApAQCAtNzU3LDIxICs3NTksNDIgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkgKiBDaGVjayBmb3IgaW5jb21wYXRpYmxlIG9wdGlvbnMgKG11c3QgZG8g dGhlc2UgdGhyZWUgYmVmb3JlIGluc2VydGluZwogCSAqIGRlZmF1bHRzKQogCSAqLwotCWlmIChv cHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVsaW0p Ci0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAot CQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBP Tl9FUlJPUiAqLwotCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2Rl IiwgIkRFTElNSVRFUiIpKSk7CisJaWYgKG9wdHNfb3V0LT5kZWxpbSkKKwl7CisJCWlmIChvcHRz X291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJLyotIHRyYW5zbGF0b3I6ICVz IGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KKwkJCQkJZXJy bXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJERUxJTUlURVIiKSk7CisJ CWVsc2UgaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJt c2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpTT04gbW9kZSIsICJERUxJTUlURVIiKSk7CisJfQog Ci0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0 LT5udWxsX3ByaW50KQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKLQkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9k ZSIsICJOVUxMIikpKTsKKwlpZiAob3B0c19vdXQtPm51bGxfcHJpbnQpCisJeworCQlpZiAob3B0 c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qg c3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpOworCQllbHNlIGlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQll cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lm eSAlcyBpbiBKU09OIG1vZGUiLCAiTlVMTCIpKTsKKwl9CiAKLQlpZiAob3B0c19vdXQtPmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRlZmF1bHRfcHJpbnQpCi0JCWVy ZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCSBl cnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkRFRkFVTFQiKSkpOwor CWlmIChvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKKwl7CisJCWlmIChvcHRzX291dC0+Zm9ybWF0 ID09IENPUFlfRk9STUFUX0JJTkFSWSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGlu IEJJTkFSWSBtb2RlIiwgIkRFRkFVTFQiKSk7CisJCWVsc2UgaWYgKG9wdHNfb3V0LT5mb3JtYXQg PT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpT T04gbW9kZSIsICJERUZBVUxUIikpOworCX0KIAogCS8qIFNldCBkZWZhdWx0cyBmb3Igb21pdHRl ZCBvcHRpb25zICovCiAJaWYgKCFvcHRzX291dC0+ZGVsaW0pCkBAIC04MzcsMTEgKzg2MCwxOCBA QCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSBlcnJtc2coIkNP UFkgZGVsaW1pdGVyIGNhbm5vdCBiZSBcIiVzXCIiLCBvcHRzX291dC0+ZGVsaW0pKSk7CiAKIAkv KiBDaGVjayBoZWFkZXIgKi8KLQlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9C SU5BUlkgJiYgb3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFKQotCQll cmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKLQkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUu Zy4gT05fRVJST1IgKi8KLQkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkg bW9kZSIsICJIRUFERVIiKSkpOworCWlmIChvcHRzX291dC0+aGVhZGVyX2xpbmUgIT0gQ09QWV9I RUFERVJfRkFMU0UpCisJeworCQlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9C SU5BUlkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKKwkJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENP UFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCisJCQkJCWVycm1zZygiY2Fubm90IHNwZWNpZnkg JXMgaW4gQklOQVJZIG1vZGUiLCAiSEVBREVSIikpOworCQllbHNlIGlmIChvcHRzX291dC0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0pTT04pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qgc3Bl Y2lmeSAlcyBpbiBKU09OIG1vZGUiLCAiSEVBREVSIikpOworCX0KIAogCS8qIENoZWNrIHF1b3Rl ICovCiAJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIG9wdHNfb3V0 LT5xdW90ZSAhPSBOVUxMKQpAQCAtOTQ1LDYgKzk3NSwxMiBAQCBQcm9jZXNzQ29weU9wdGlvbnMo UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSBlcnJtc2coIkNPUFkgJXMgY2Fubm90IGJlIHVzZWQg d2l0aCAlcyIsICJGUkVFWkUiLAogCQkJCQkJIkNPUFkgVE8iKSkpOwogCisJLyogQ2hlY2sganNv biBmb3JtYXQgKi8KKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OICYm IGlzX2Zyb20pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coIkNPUFkgJXMgbW9kZSBjYW5ub3QgYmUgdXNl ZCB3aXRoICVzIiwgImpzb24iLCAiQ09QWSBGUk9NIikpOworCiAJaWYgKG9wdHNfb3V0LT5kZWZh dWx0X3ByaW50KQogCXsKIAkJaWYgKCFpc19mcm9tKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCAw MzI1YTE2ZjgyYS4uZTFiMzM2NDY0MGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0yNiw2ICsy Niw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJleGVjdXRv ci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCisjaW5jbHVkZSAi ZnVuY2FwaS5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFm b3JtYXQuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtMzMsNiArMzQsNyBAQAogI2lu Y2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJ0Y29w L3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvanNvbi5oIgogI2luY2x1ZGUgInV0aWxzL2xz eXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMv cmVsLmgiCkBAIC0xMzAsNiArMTMyLDcgQEAgc3RhdGljIHZvaWQgQ29weVRvQ1NWT25lUm93KENv cHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogc3RhdGljIHZvaWQgQ29w eVRvVGV4dExpa2VPbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCwKIAkJCQkJCQkJIGJvb2wgaXNfY3N2KTsKIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlRW5k KENvcHlUb1N0YXRlIGNzdGF0ZSk7CitzdGF0aWMgdm9pZCBDb3B5VG9Kc29uT25lUm93KENvcHlU b1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogc3RhdGljIHZvaWQgQ29weVRv QmluYXJ5U3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYyk7CiBzdGF0 aWMgdm9pZCBDb3B5VG9CaW5hcnlPdXRGdW5jKENvcHlUb1N0YXRlIGNzdGF0ZSwgT2lkIGF0dHR5 cGlkLCBGbWdySW5mbyAqZmluZm8pOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5T25lUm93KENv cHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwpAQCAtMTQ5LDcgKzE1Miw3 IEBAIHN0YXRpYyB2b2lkIENvcHlTZW5kSW50MTYoQ29weVRvU3RhdGUgY3N0YXRlLCBpbnQxNiB2 YWwpOwogLyoKICAqIENPUFkgVE8gcm91dGluZXMgZm9yIGJ1aWx0LWluIGZvcm1hdHMuCiAgKgot ICogQ1NWIGFuZCB0ZXh0IGZvcm1hdHMgc2hhcmUgdGhlIHNhbWUgVGV4dExpa2Ugcm91dGluZXMg ZXhjZXB0IGZvciB0aGUKKyAqIENTViBhbmQgdGV4dCwganNvbiBmb3JtYXRzIHNoYXJlIHRoZSBz YW1lIFRleHRMaWtlIHJvdXRpbmVzIGV4Y2VwdCBmb3IgdGhlCiAgKiBvbmUtcm93IGNhbGxiYWNr LgogICovCiAKQEAgLTE2OSw2ICsxNzIsMTQgQEAgc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUg Q29weVRvUm91dGluZUNTViA9IHsKIAkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCiB9 OwogCisvKiBqc29uIGZvcm1hdCAqLworc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRv Um91dGluZUpzb24gPSB7CisJLkNvcHlUb1N0YXJ0ID0gQ29weVRvVGV4dExpa2VTdGFydCwKKwku Q29weVRvT3V0RnVuYyA9IENvcHlUb1RleHRMaWtlT3V0RnVuYywKKwkuQ29weVRvT25lUm93ID0g Q29weVRvSnNvbk9uZVJvdywKKwkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCit9Owor CiAvKiBiaW5hcnkgZm9ybWF0ICovCiBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9S b3V0aW5lQmluYXJ5ID0gewogCS5Db3B5VG9TdGFydCA9IENvcHlUb0JpbmFyeVN0YXJ0LApAQCAt MTg1LDEyICsxOTYsMTQgQEAgQ29weVRvR2V0Um91dGluZShjb25zdCBDb3B5Rm9ybWF0T3B0aW9u cyAqb3B0cykKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQ1NWOwogCWVsc2UgaWYgKG9wdHMtPmZv cm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJCXJldHVybiAmQ29weVRvUm91dGluZUJpbmFy eTsKKwllbHNlIGlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJcmV0dXJu ICZDb3B5VG9Sb3V0aW5lSnNvbjsKIAogCS8qIGRlZmF1bHQgaXMgdGV4dCAqLwogCXJldHVybiAm Q29weVRvUm91dGluZVRleHQ7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBj YWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NWIGZvcm1hdHMgKi8KKy8qIEltcGxlbWVudGF0aW9uIG9m IHRoZSBzdGFydCBjYWxsYmFjayBmb3IgdGV4dCwgQ1NWLCBhbmQganNvbiBmb3JtYXRzICovCiBz dGF0aWMgdm9pZAogQ29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxl RGVzYyB0dXBEZXNjKQogewpAQCAtMjA5LDYgKzIyMiw4IEBAIENvcHlUb1RleHRMaWtlU3RhcnQo Q29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKIAkJTGlzdENlbGwgICAqY3Vy OwogCQlib29sCQloZHJfZGVsaW0gPSBmYWxzZTsKIAorCQlBc3NlcnQoY3N0YXRlLT5vcHRzLmZv cm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OKTsKKwogCQlmb3JlYWNoKGN1ciwgY3N0YXRlLT5hdHRu dW1saXN0KQogCQl7CiAJCQlpbnQJCQlhdHRudW0gPSBsZmlyc3RfaW50KGN1cik7CkBAIC0yMzEs NyArMjQ2LDcgQEAgQ29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxl RGVzYyB0dXBEZXNjKQogfQogCiAvKgotICogSW1wbGVtZW50YXRpb24gb2YgdGhlIG91dGZ1bmMg Y2FsbGJhY2sgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzLiBBc3NpZ24KKyAqIEltcGxlbWVudGF0 aW9uIG9mIHRoZSBvdXRmdW5jIGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1h dHMuIEFzc2lnbgogICogdGhlIG91dHB1dCBmdW5jdGlvbiBkYXRhIHRvIHRoZSBnaXZlbiAqZmlu Zm8uCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0zMDQsMTMgKzMxOSw0NiBAQCBDb3B5VG9UZXh0TGlr ZU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsCiAJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNz dGF0ZSk7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sgZm9yIHRl eHQgYW5kIENTViBmb3JtYXRzICovCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZW5kIGNhbGxi YWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMgKi8KIHN0YXRpYyB2b2lkCiBDb3B5 VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJLyogTm90aGluZyB0byBkbyBo ZXJlICovCiB9CiAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHBlci1yb3cgY2FsbGJhY2sgZm9yIGpz b24gZm9ybWF0ICovCitzdGF0aWMgdm9pZAorQ29weVRvSnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBj c3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQoreworCURhdHVtCQlyb3dkYXRhOworCVN0cmlu Z0luZm8JcmVzdWx0OworCisJLyoKKwkgKiBJZiBDT1BZIFRPIHNvdXJjZSBkYXRhIGNvbWUgZnJv bSBxdWVyeSByYXRoZXIgdGhhbiBwbGFpbiB0YWJsZSwgd2UgbmVlZAorCSAqIGNvcHkgQ29weVRv U3RhdGUtPlF1ZXJ5RGVzYy0+VHVwbGVEZXNjIHRvIHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3Iu CisJICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgc2xvdCdzIFR1cGxlRGVzYyBtYXkg Y2hhbmdlIGR1cmluZyBxdWVyeQorCSAqIGV4ZWN1dGlvbiwgYW5kIHdlIGRlcGVuZCBvbiBpdCB3 aGVuIGNhbGxpbmcgY29tcG9zaXRlX3RvX2pzb24uCisJICovCisJaWYgKCFjc3RhdGUtPnJlbCkK Kwl7CisJCW1lbWNweShUdXBsZURlc2NBdHRyKHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IsIDAp LAorCQkJICAgVHVwbGVEZXNjQXR0cihjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYywgMCksCisJ CQkgICBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYy0+bmF0dHMgKiBzaXplb2YoRm9ybURhdGFf cGdfYXR0cmlidXRlKSk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBjc3RhdGUtPnF1ZXJ5RGVz Yy0+dHVwRGVzYy0+bmF0dHM7IGkrKykKKwkJCXBvcHVsYXRlX2NvbXBhY3RfYXR0cmlidXRlKHNs b3QtPnR0c190dXBsZURlc2NyaXB0b3IsIGkpOworCisJCUJsZXNzVHVwbGVEZXNjKHNsb3QtPnR0 c190dXBsZURlc2NyaXB0b3IpOworCX0KKwlyb3dkYXRhID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBs ZURhdHVtKHNsb3QpOworCXJlc3VsdCA9IG1ha2VTdHJpbmdJbmZvKCk7CisJY29tcG9zaXRlX3Rv X2pzb24ocm93ZGF0YSwgcmVzdWx0LCBmYWxzZSk7CisKKwlDb3B5U2VuZERhdGEoY3N0YXRlLCBy ZXN1bHQtPmRhdGEsIHJlc3VsdC0+bGVuKTsKKworCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhj c3RhdGUpOworfQorCiAvKgogICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YXJ0IGNhbGxiYWNr IGZvciBiaW5hcnkgZm9ybWF0LiBTZW5kIGEgaGVhZGVyCiAgKiBmb3IgYSBiaW5hcnkgY29weS4K QEAgLTQwMiw5ICs0NTAsMjEgQEAgU2VuZENvcHlCZWdpbihDb3B5VG9TdGF0ZSBjc3RhdGUpCiAK IAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weU91dFJlc3BvbnNlKTsKIAlwcV9zZW5k Ynl0ZSgmYnVmLCBmb3JtYXQpOwkvKiBvdmVyYWxsIGZvcm1hdCAqLwotCXBxX3NlbmRpbnQxNigm YnVmLCBuYXR0cyk7Ci0JZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCi0JCXBxX3NlbmRpbnQx NigmYnVmLCBmb3JtYXQpOyAvKiBwZXItY29sdW1uIGZvcm1hdHMgKi8KKwlpZiAoY3N0YXRlLT5v cHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OKQorCXsKKwkJcHFfc2VuZGludDE2KCZidWYs IG5hdHRzKTsKKwkJZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJCQlwcV9zZW5kaW50MTYo JmJ1ZiwgZm9ybWF0KTsgLyogcGVyLWNvbHVtbiBmb3JtYXRzICovCisJfQorCWVsc2UKKwl7CisJ CS8qCisJCSAqIEpTT04gZm9ybWF0IGlzIGFsd2F5cyBvbmUgbm9uLWJpbmFyeSBjb2x1bW4KKwkJ ICovCisJCXBxX3NlbmRpbnQxNigmYnVmLCAxKTsKKwkJcHFfc2VuZGludDE2KCZidWYsIDApOwor CX0KKwogCXBxX2VuZG1lc3NhZ2UoJmJ1Zik7CiAJY3N0YXRlLT5jb3B5X2Rlc3QgPSBDT1BZX0ZS T05URU5EOwogfQpAQCAtNTA2LDcgKzU2Niw3IEBAIENvcHlTZW5kRW5kT2ZSb3coQ29weVRvU3Rh dGUgY3N0YXRlKQogfQogCiAvKgotICogV3JhcHBlciBmdW5jdGlvbiBvZiBDb3B5U2VuZEVuZE9m Um93IGZvciB0ZXh0IGFuZCBDU1YgZm9ybWF0cy4gU2VuZHMgdGhlCisgKiBXcmFwcGVyIGZ1bmN0 aW9uIG9mIENvcHlTZW5kRW5kT2ZSb3cgZm9yIHRleHQsIENTViwgYW5kIGpzb24gZm9ybWF0cy4g U2VuZHMgdGhlCiAgKiBsaW5lIHRlcm1pbmF0aW9uIGFuZCBkbyBjb21tb24gYXBwcm9wcmlhdGUg dGhpbmdzIGZvciB0aGUgZW5kIG9mIHJvdy4KICAqLwogc3RhdGljIGlubGluZSB2b2lkCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQppbmRleCA3MTNlZTVjMTBhMi4uZjcwYTQ2NWJiNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMzYw OSw2ICszNjA5LDEwIEBAIGNvcHlfb3B0X2l0ZW06CiAJCQkJewogCQkJCQkkJCA9IG1ha2VEZWZF bGVtKCJmb3JtYXQiLCAoTm9kZSAqKSBtYWtlU3RyaW5nKCJjc3YiKSwgQDEpOwogCQkJCX0KKwkJ CXwgSlNPTgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlRGVmRWxlbSgiZm9ybWF0IiwgKE5vZGUgKikg bWFrZVN0cmluZygianNvbiIpLCBAMSk7CisJCQkJfQogCQkJfCBIRUFERVJfUAogCQkJCXsKIAkJ CQkJJCQgPSBtYWtlRGVmRWxlbSgiaGVhZGVyIiwgKE5vZGUgKikgbWFrZUJvb2xlYW4odHJ1ZSks IEAxKTsKQEAgLTM2OTEsNiArMzY5NSwxMCBAQCBjb3B5X2dlbmVyaWNfb3B0X2VsZW06CiAJCQkJ ewogCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCQxLCAkMiwgQDEpOwogCQkJCX0KKwkJCXwgRk9STUFU X0xBIGNvcHlfZ2VuZXJpY19vcHRfYXJnCisJCQkJeworCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJm b3JtYXQiLCAkMiwgQDEpOworCQkJCX0KIAkJOwogCiBjb3B5X2dlbmVyaWNfb3B0X2FyZzoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbi5jCmluZGV4IDBiMTYxMzk4NDY1Li5mNjA5ZDdiOTQxNyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbi5jCkBAIC04Niw4ICs4Niw2IEBAIHR5cGVkZWYgc3RydWN0IEpzb25BZ2dTdGF0ZQogCUpz b25VbmlxdWVCdWlsZGVyU3RhdGUgdW5pcXVlX2NoZWNrOwogfSBKc29uQWdnU3RhdGU7CiAKLXN0 YXRpYyB2b2lkIGNvbXBvc2l0ZV90b19qc29uKERhdHVtIGNvbXBvc2l0ZSwgU3RyaW5nSW5mbyBy ZXN1bHQsCi0JCQkJCQkJICBib29sIHVzZV9saW5lX2ZlZWRzKTsKIHN0YXRpYyB2b2lkIGFycmF5 X2RpbV90b19qc29uKFN0cmluZ0luZm8gcmVzdWx0LCBpbnQgZGltLCBpbnQgbmRpbXMsIGludCAq ZGltcywKIAkJCQkJCQkgIGNvbnN0IERhdHVtICp2YWxzLCBjb25zdCBib29sICpudWxscywgaW50 ICp2YWxjb3VudCwKIAkJCQkJCQkgIEpzb25UeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LCBPaWQgb3V0 ZnVuY29pZCwKQEAgLTUxNyw4ICs1MTUsOSBAQCBhcnJheV90b19qc29uX2ludGVybmFsKERhdHVt IGFycmF5LCBTdHJpbmdJbmZvIHJlc3VsdCwgYm9vbCB1c2VfbGluZV9mZWVkcykKIAogLyoKICAq IFR1cm4gYSBjb21wb3NpdGUgLyByZWNvcmQgaW50byBKU09OLgorICogRXhwb3J0ZWQgc28gQ09Q WSBUTyBjYW4gdXNlIGl0LgogICovCi1zdGF0aWMgdm9pZAordm9pZAogY29tcG9zaXRlX3RvX2pz b24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwgYm9vbCB1c2VfbGluZV9mZWVk cykKIHsKIAlIZWFwVHVwbGVIZWFkZXIgdGQ7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggOGI5 MWJjMDAwNjIuLjM3Y2I2NGQyYjcyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0zNDEzLDcg KzM0MTMsNyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAogCQkJLyog Q29tcGxldGUgQ09QWSA8c3RoPiBGUk9NfFRPIGZpbGVuYW1lIFdJVEggKEZPUk1BVCAqLwogCQkJ ZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkZPUk1BVCIpKQotCQkJCUNPTVBMRVRFX1dJVEgoImJpbmFy eSIsICJjc3YiLCAidGV4dCIpOworCQkJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjc3YiLCAi dGV4dCIsICJqc29uIik7CiAKIAkJCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBmaWxl bmFtZSBXSVRIIChGUkVFWkUgKi8KIAkJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJGUkVFWkUiKSkK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2NvcHkuaAppbmRleCA3YmU0MWQ5ZGExMi4uZmU4NWYwMmIxMTAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9j b3B5LmgKQEAgLTU2LDYgKzU2LDcgQEAgdHlwZWRlZiBlbnVtIENvcHlGb3JtYXQKIAlDT1BZX0ZP Uk1BVF9URVhUID0gMCwKIAlDT1BZX0ZPUk1BVF9CSU5BUlksCiAJQ09QWV9GT1JNQVRfQ1NWLAor CUNPUFlfRk9STUFUX0pTT04sCiB9IENvcHlGb3JtYXQ7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9qc29uLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29uLmgKaW5kZXggZjhj YzUyYjFlNzguLjJmNGJlNDA1MThkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29u LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oCkBAIC0xNyw2ICsxNyw4IEBACiAjaW5j bHVkZSAibGliL3N0cmluZ2luZm8uaCIKIAogLyogZnVuY3Rpb25zIGluIGpzb24uYyAqLworZXh0 ZXJuIHZvaWQgY29tcG9zaXRlX3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJl c3VsdCwKKwkJCQkJCQkgIGJvb2wgdXNlX2xpbmVfZmVlZHMpOwogZXh0ZXJuIHZvaWQgZXNjYXBl X2pzb24oU3RyaW5nSW5mbyBidWYsIGNvbnN0IGNoYXIgKnN0cik7CiBleHRlcm4gdm9pZCBlc2Nh cGVfanNvbl93aXRoX2xlbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hhciAqc3RyLCBpbnQgbGVu KTsKIGV4dGVybiB2b2lkIGVzY2FwZV9qc29uX3RleHQoU3RyaW5nSW5mbyBidWYsIGNvbnN0IHRl eHQgKnR4dCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAppbmRleCBkMGQ1NjNlMGZhOC4u MjdhMjhmZWU3N2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dApAQCAtNzMsNiArNzMs ODIgQEAgY29weSBjb3B5dGVzdDMgdG8gc3Rkb3V0IGNzdiBoZWFkZXI7CiBjMSwiY29sIHdpdGgg LCBjb21tYSIsImNvbCB3aXRoICIiIHF1b3RlIgogMSxhLDEKIDIsYiwyCistLS0gdGVzdCBjb3B5 aW5nIGluIEpTT04gbW9kZSB3aXRoIHZhcmlvdXMgc3R5bGVzCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCBqc29uOworeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjox fQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxl IjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHlsZSI6ImVzY1xcYXBl IiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9Citjb3B5IGNvcHl0ZXN0IHRv IHN0ZG91dCAoZm9ybWF0IGpzb24pOworeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVm IiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIi OjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHls ZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9CistLSBh bGwgb2YgdGhlIGZvbGxvd2luZyBzaG91bGQgeWllbGQgZXJyb3IKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgZGVsaW1pdGVyICd8Jyk7CitFUlJPUjogIGNhbm5vdCBzcGVj aWZ5IERFTElNSVRFUiBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQganNvbiwgbnVsbCAnXE4nKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgTlVMTCBpbiBKU09O IG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZGVmYXVsdCAnfCcp OworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBERUZBVUxUIGluIEpTT04gbW9kZQorY29weSBjb3B5 dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBoZWFkZXIpOworRVJST1I6ICBjYW5ub3Qgc3Bl Y2lmeSBIRUFERVIgaW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24sIGhlYWRlciAxKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgSEVBREVSIGluIEpTT04g bW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBxdW90ZSAnIicpOwor RVJST1I6ICBDT1BZIFFVT1RFIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCAoZm9ybWF0IGpzb24sIGVzY2FwZSAnIicpOworRVJST1I6ICBDT1BZIEVTQ0FQRSByZXF1 aXJlcyBDU1YgbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3Jj ZV9xdW90ZSAqKTsKK0VSUk9SOiAgQ09QWSBGT1JDRV9RVU9URSByZXF1aXJlcyBDU1YgbW9kZQor Y29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9ub3RfbnVsbCAqKTsK K0VSUk9SOiAgQ09QWSBGT1JDRV9OT1RfTlVMTCByZXF1aXJlcyBDU1YgbW9kZQorY29weSBjb3B5 dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9udWxsICopOworRVJST1I6ICBDT1BZ IEZPUkNFX05VTEwgcmVxdWlyZXMgQ1NWIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChm b3JtYXQganNvbiwgb25fZXJyb3IgaWdub3JlKTsKK0VSUk9SOiAgQ09QWSBPTl9FUlJPUiBjYW5u b3QgYmUgdXNlZCB3aXRoIENPUFkgVE8KK0xJTkUgMTogY29weSBjb3B5dGVzdCB0byBzdGRvdXQg KGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK2NvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3JtYXQg anNvbik7CitFUlJPUjogIENPUFkganNvbiBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBG Uk9NCistLSBhbGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgorLS0gZW1iZWRkZWQg ZXNjYXBlZCBjaGFyYWN0ZXJzCitjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRlc3QgKAorICAg IGlkIGJpZ3NlcmlhbCwKKyAgICBmMSB0ZXh0LAorICAgIGYyIHRpbWVzdGFtcHR6KTsKK2luc2Vy dCBpbnRvIGNvcHlqc29udGVzdAorICBzZWxlY3QgZy5pLAorICAgICAgICAgQ0FTRSBXSEVOIGcu aSAlIDIgPSAwIFRIRU4KKyAgICAgICAgICAgJ2xpbmUgd2l0aCAnJyBpbiBpdDogJyB8fCBnLmk6 OnRleHQKKyAgICAgICAgIEVMU0UKKyAgICAgICAgICAgJ2xpbmUgd2l0aCAiIGluIGl0OiAnIHx8 IGcuaTo6dGV4dAorICAgICAgICAgRU5ELAorICAgICAgICAgJ01vbiBGZWIgMTAgMTc6MzI6MDEg MTk5NyBQU1QnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgYXMgZyhpKTsKK2luc2VydCBp bnRvIGNvcHlqc29udGVzdCAoZjEpIHZhbHVlcworKEUnYWFhXCJiYmInOjp0ZXh0KSwKKyhFJ2Fh YVxcYmJiJzo6dGV4dCksCisoRSdhYWFcL2JiYic6OnRleHQpLAorKEUnYWFhXGJiYmInOjp0ZXh0 KSwKKyhFJ2FhYVxmYmJiJzo6dGV4dCksCisoRSdhYWFcbmJiYic6OnRleHQpLAorKEUnYWFhXHJi YmInOjp0ZXh0KSwKKyhFJ2FhYVx0YmJiJzo6dGV4dCk7Citjb3B5IGNvcHlqc29udGVzdCB0byBz dGRvdXQganNvbjsKK3siaWQiOjEsImYxIjoibGluZSB3aXRoIFwiIGluIGl0OiAxIiwiZjIiOiIx OTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjIsImYxIjoibGluZSB3aXRoICcgaW4g aXQ6IDIiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6MywiZjEiOiJs aW5lIHdpdGggXCIgaW4gaXQ6IDMiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQor eyJpZCI6NCwiZjEiOiJsaW5lIHdpdGggJyBpbiBpdDogNCIsImYyIjoiMTk5Ny0wMi0xMFQxNzoz MjowMS0wODowMCJ9Cit7ImlkIjo1LCJmMSI6ImxpbmUgd2l0aCBcIiBpbiBpdDogNSIsImYyIjoi MTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjoxLCJmMSI6ImFhYVwiYmJiIiwiZjIi Om51bGx9Cit7ImlkIjoyLCJmMSI6ImFhYVxcYmJiIiwiZjIiOm51bGx9Cit7ImlkIjozLCJmMSI6 ImFhYS9iYmIiLCJmMiI6bnVsbH0KK3siaWQiOjQsImYxIjoiYWFhXGJiYmIiLCJmMiI6bnVsbH0K K3siaWQiOjUsImYxIjoiYWFhXGZiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjYsImYxIjoiYWFhXG5i YmIiLCJmMiI6bnVsbH0KK3siaWQiOjcsImYxIjoiYWFhXHJiYmIiLCJmMiI6bnVsbH0KK3siaWQi OjgsImYxIjoiYWFhXHRiYmIiLCJmMiI6bnVsbH0KIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHl0ZXN0 NCAoCiAJYzEgaW50LAogCSJjb2xuYW1lIHdpdGggdGFiOiAJIiB0ZXh0KTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29w eS5zcWwKaW5kZXggNjVjYmRhZjdmM2UuLmE1NGFmNjM2MzE3IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9jb3B5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNx bApAQCAtODIsNiArODIsNTMgQEAgdGhpcyBpcyBqdXN0IGEgbGluZSBmdWxsIG9mIGp1bmsgdGhh dCB3b3VsZCBlcnJvciBvdXQgaWYgcGFyc2VkCiAKIGNvcHkgY29weXRlc3QzIHRvIHN0ZG91dCBj c3YgaGVhZGVyOwogCistLS0gdGVzdCBjb3B5aW5nIGluIEpTT04gbW9kZSB3aXRoIHZhcmlvdXMg c3R5bGVzCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCBqc29uOworY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uKTsKKworLS0gYWxsIG9mIHRoZSBmb2xsb3dpbmcgc2hvdWxkIHlp ZWxkIGVycm9yCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGRlbGltaXRl ciAnfCcpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBudWxsICdcTicp OworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWZhdWx0ICd8Jyk7Citj b3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGhlYWRlcik7Citjb3B5IGNvcHl0 ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGhlYWRlciAxKTsKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgcXVvdGUgJyInKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0 IChmb3JtYXQganNvbiwgZXNjYXBlICciJyk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9y bWF0IGpzb24sIGZvcmNlX3F1b3RlICopOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1h dCBqc29uLCBmb3JjZV9ub3RfbnVsbCAqKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQganNvbiwgZm9yY2VfbnVsbCAqKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQg anNvbiwgb25fZXJyb3IgaWdub3JlKTsKK2NvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3JtYXQg anNvbik7CistLSBhbGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgorCistLSBlbWJl ZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAo CisgICAgaWQgYmlnc2VyaWFsLAorICAgIGYxIHRleHQsCisgICAgZjIgdGltZXN0YW1wdHopOwor CitpbnNlcnQgaW50byBjb3B5anNvbnRlc3QKKyAgc2VsZWN0IGcuaSwKKyAgICAgICAgIENBU0Ug V0hFTiBnLmkgJSAyID0gMCBUSEVOCisgICAgICAgICAgICdsaW5lIHdpdGggJycgaW4gaXQ6ICcg fHwgZy5pOjp0ZXh0CisgICAgICAgICBFTFNFCisgICAgICAgICAgICdsaW5lIHdpdGggIiBpbiBp dDogJyB8fCBnLmk6OnRleHQKKyAgICAgICAgIEVORCwKKyAgICAgICAgICdNb24gRmViIDEwIDE3 OjMyOjAxIDE5OTcgUFNUJworICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUpIGFzIGcoaSk7CisK K2luc2VydCBpbnRvIGNvcHlqc29udGVzdCAoZjEpIHZhbHVlcworKEUnYWFhXCJiYmInOjp0ZXh0 KSwKKyhFJ2FhYVxcYmJiJzo6dGV4dCksCisoRSdhYWFcL2JiYic6OnRleHQpLAorKEUnYWFhXGJi YmInOjp0ZXh0KSwKKyhFJ2FhYVxmYmJiJzo6dGV4dCksCisoRSdhYWFcbmJiYic6OnRleHQpLAor KEUnYWFhXHJiYmInOjp0ZXh0KSwKKyhFJ2FhYVx0YmJiJzo6dGV4dCk7CisKK2NvcHkgY29weWpz b250ZXN0IHRvIHN0ZG91dCBqc29uOworCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5dGVzdDQgKAog CWMxIGludCwKIAkiY29sbmFtZSB3aXRoIHRhYjogCSIgdGV4dCk7Ci0tIAoyLjM0LjEKCg== --000000000000a13c11064a1f5b1e Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename="v23-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlabosop0 RnJvbSAzZjU3MDZjYTUxYjVjNDI0ZDY3OTkyNDUyMTAzOWI4NjQ1NDYyMTc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgNSBGZWIgMjAyNiAxNjozNzoyOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIz IDMvM10gQWRkIG9wdGlvbiBmb3JjZV9hcnJheSBmb3IgQ09QWSBKU09OIEZPUk1BVAoKZm9yY2Vf YXJyYXkgb3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgaW4gQ09QWSBUTyB3aXRoIEpTT04gZm9ybWF0 LiAgaXQgbWFrZSB0aGUKb3V0cHV0IGpzb24gb3V0cHV0IGJlaGF2ZSBsaWtlIGpzb24gYXJyYXkg dHlwZS4gIHJlZmFjdG9yZWQgYnkgSnVud2FuZyBaaGFvIHRvCmFkYXB0IHRoZSBuZXdseSBpbnRy b2R1Y2VkIENvcHlUb1JvdXRpbmUgc3RydWN0KDJlNDEyN2I2ZDIpLgoKQXV0aG9yOiBKb2UgQ29u d2F5IDxtYWlsQGpvZWNvbndheS5jb20+CmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v Q0FMdmZVa0J4VFl5NXVXUEZWd3BrXzdpaTJ6Z1QwN3QzZC15Ul9jeTRzZnJyTFUlM0RrY2clNDBt YWlsLmdtYWlsLmNvbQpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzZhMDQ2MjhkLTBk NTMtNDFkOS05ZTM1LTVhOGRjMzAyYzM0Y0Bqb2Vjb253YXkuY29tCi0tLQogZG9jL3NyYy9zZ21s L3JlZi9jb3B5LnNnbWwgICAgICAgICB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKwogc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAgICAgICB8IDEzICsrKysrKysrKysrCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysr KysrKystCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgIHwgIDIgKy0KIHNyYy9p bmNsdWRlL2NvbW1hbmRzL2NvcHkuaCAgICAgICAgfCAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NvcHkub3V0IHwgMjMgKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29weS5zcWwgICAgICB8ICA4ICsrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgMTEyIGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAppbmRleCAzMjBmNWYxZWRk NC4uYWZlYTljYWY1YWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCkBAIC00MCw2ICs0MCw3IEBAIENPUFkgeyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsg KCA8cmVwbGFjZWFibGUKICAgICBIRUFERVIgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmludGVnZXI8L3JlcGxhY2VhYmxlPiB8IE1BVENIIF0KICAgICBRVU9URSAnPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnF1b3RlX2NoYXJhY3RlcjwvcmVwbGFjZWFibGU+JwogICAgIEVT Q0FQRSAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVzY2FwZV9jaGFyYWN0ZXI8L3Jl cGxhY2VhYmxlPicKKyAgICBGT1JDRV9BUlJBWSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5ib29sZWFuPC9yZXBsYWNlYWJsZT4gXQogICAgIEZPUkNFX1FVT1RFIHsgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5d ICkgfCAqIH0KICAgICBGT1JDRV9OT1RfTlVMTCB7ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIHwgKiB9CiAgICAgRk9S Q0VfTlVMTCB7ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSApIHwgKiB9CkBAIC0zNjYsNiArMzY3LDE5IEBAIENPUFkgeyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsg KCA8cmVwbGFjZWFibGUKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAg IDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jb3B5LXBhcmFtcy1mb3JjZS1hcnJheSI+CisgICAgPHRl cm0+PGxpdGVyYWw+Rk9SQ0VfQVJSQVk8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBGb3JjZSBvdXRwdXQgb2Ygc3F1YXJlIGJyYWNrZXRzIGFzIGFy cmF5IGRlY29yYXRpb25zIGF0IHRoZSBiZWdpbm5pbmcKKyAgICAgIGFuZCBlbmQgb2Ygb3V0cHV0 LCBhbmQgY29tbWFzIGJldHdlZW4gdGhlIHJvd3MuIEl0IGlzIGFsbG93ZWQgb25seSBpbgorICAg ICAgPGNvbW1hbmQ+Q09QWSBUTzwvY29tbWFuZD4sIGFuZCBvbmx5IHdoZW4gdXNpbmcKKyAgICAg IDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IGZvcm1hdC4gVGhlIGRlZmF1bHQgaXMKKyAgICAgIDxs aXRlcmFsPmZhbHNlPC9saXRlcmFsPi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNvcHktcGFyYW1z LWZvcmNlLXF1b3RlIj4KICAgICA8dGVybT48bGl0ZXJhbD5GT1JDRV9RVU9URTwvbGl0ZXJhbD48 L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtMTA5MSw2ICsxMTA1LDIyIEBAIENPUFkgY291bnRy eSBUTyBTVERPVVQgKERFTElNSVRFUiAnfCcpOwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9wYXJh PgogCis8cGFyYT4KKyAgIFdoZW4gdGhlIDxsaXRlcmFsPkZPUkNFX0FSUkFZPC9saXRlcmFsPiBv cHRpb24gaXMgZW5hYmxlZCwKKyAgIHRoZSBlbnRpcmUgb3V0cHV0IGlzIHdyYXBwZWQgaW4gYSBz aW5nbGUgSlNPTiBhcnJheSB3aXRoIHJvd3Mgc2VwYXJhdGVkIGJ5IGNvbW1hczoKKzxwcm9ncmFt bGlzdGluZz4KK0NPUFkgKFNFTEVDVCAqIEZST00gKFZBTFVFUygxKSwoMikpIHZhbChpZCkpIFRP IFNURE9VVCAgKEZPUk1BVCBKU09OLCBGT1JDRV9BUlJBWSk7Cis8L3Byb2dyYW1saXN0aW5nPgor VGhlIG91dHB1dCBpcyBhcyBmb2xsb3dzOgorPHNjcmVlbj4KK1sKKyB7ImlkIjoxfQorLHsiaWQi OjJ9CitdCis8L3NjcmVlbj4KKzwvcGFyYT4KKworCiAgIDxwYXJhPgogICAgVG8gY29weSBkYXRh IGZyb20gYSBmaWxlIGludG8gdGhlIDxsaXRlcmFsPmNvdW50cnk8L2xpdGVyYWw+IHRhYmxlOgog PHByb2dyYW1saXN0aW5nPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCmluZGV4IGY4M2M2MzJhMDY5Li41ZDliMDhi ODIyYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNTcwLDYgKzU3MCw3IEBAIFByb2Nlc3NDb3B5T3B0 aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJYm9vbAkJb25fZXJyb3Jfc3BlY2lmaWVkID0gZmFs c2U7CiAJYm9vbAkJbG9nX3ZlcmJvc2l0eV9zcGVjaWZpZWQgPSBmYWxzZTsKIAlib29sCQlyZWpl Y3RfbGltaXRfc3BlY2lmaWVkID0gZmFsc2U7CisJYm9vbAkJZm9yY2VfYXJyYXlfc3BlY2lmaWVk ID0gZmFsc2U7CiAJTGlzdENlbGwgICAqb3B0aW9uOwogCiAJLyogU3VwcG9ydCBleHRlcm5hbCB1 c2UgZm9yIG9wdGlvbiBzYW5pdHkgY2hlY2tpbmcgKi8KQEAgLTcyNiw2ICs3MjcsMTMgQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJZGVmZWwtPmRlZm5h bWUpLAogCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRlZmVsLT5sb2NhdGlvbikp KTsKIAkJfQorCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJmb3JjZV9hcnJheSIp ID09IDApCisJCXsKKwkJCWlmIChmb3JjZV9hcnJheV9zcGVjaWZpZWQpCisJCQkJZXJyb3JDb25m bGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisJCQlmb3JjZV9hcnJheV9zcGVjaWZpZWQg PSB0cnVlOworCQkJb3B0c19vdXQtPmZvcmNlX2FycmF5ID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7 CisJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAib25fZXJyb3IiKSA9PSAw KQogCQl7CiAJCQlpZiAob25fZXJyb3Jfc3BlY2lmaWVkKQpAQCAtOTgxLDYgKzk4OSwxMSBAQCBQ cm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCWVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJZXJybXNnKCJDT1BZICVzIG1vZGUgY2Fu bm90IGJlIHVzZWQgd2l0aCAlcyIsICJqc29uIiwgIkNPUFkgRlJPTSIpKTsKIAorCWlmIChvcHRz X291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0pTT04gJiYgb3B0c19vdXQtPmZvcmNlX2FycmF5 KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksCisJCQkJZXJybXNnKCJDT1BZICVzIGNhbiBvbmx5IHVzZWQgd2l0aCBKU09OIG1v ZGUiLCAiRk9SQ0VfQVJSQVkiKSk7CisKIAlpZiAob3B0c19vdXQtPmRlZmF1bHRfcHJpbnQpCiAJ ewogCQlpZiAoIWlzX2Zyb20pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IGUxYjMzNjQ2NDBlLi5j OWY4ZjQ3MjFkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTg2LDYgKzg2LDEwIEBAIHR5cGVk ZWYgc3RydWN0IENvcHlUb1N0YXRlRGF0YQogCUxpc3QJICAgKmF0dG51bWxpc3Q7CQkvKiBpbnRl Z2VyIGxpc3Qgb2YgYXR0bnVtcyB0byBjb3B5ICovCiAJY2hhcgkgICAqZmlsZW5hbWU7CQkvKiBm aWxlbmFtZSwgb3IgTlVMTCBmb3IgU1RET1VUICovCiAJYm9vbAkJaXNfcHJvZ3JhbTsJCS8qIGlz ICdmaWxlbmFtZScgYSBwcm9ncmFtIHRvIHBvcGVuPyAqLworCisJLyogbmVlZCBkZWxpbWl0ZXIg dG8gc3RhcnQgbmV4dCBqc29uIGFycmF5IGVsZW1lbnQgKi8KKwlib29sCQlqc29uX3Jvd19kZWxp bV9uZWVkZWQ7CisKIAljb3B5X2RhdGFfZGVzdF9jYiBkYXRhX2Rlc3RfY2I7IC8qIGZ1bmN0aW9u IGZvciB3cml0aW5nIGRhdGEgKi8KIAogCUNvcHlGb3JtYXRPcHRpb25zIG9wdHM7CkBAIC0xMzMs NiArMTM3LDcgQEAgc3RhdGljIHZvaWQgQ29weVRvVGV4dExpa2VPbmVSb3coQ29weVRvU3RhdGUg Y3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJIGJvb2wgaXNfY3N2KTsKIHN0 YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlRW5kKENvcHlUb1N0YXRlIGNzdGF0ZSk7CiBzdGF0aWMg dm9pZCBDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3Qg KnNsb3QpOworc3RhdGljIHZvaWQgQ29weVRvSnNvbkVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpOwog c3RhdGljIHZvaWQgQ29weVRvQmluYXJ5U3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURl c2MgdHVwRGVzYyk7CiBzdGF0aWMgdm9pZCBDb3B5VG9CaW5hcnlPdXRGdW5jKENvcHlUb1N0YXRl IGNzdGF0ZSwgT2lkIGF0dHR5cGlkLCBGbWdySW5mbyAqZmluZm8pOwogc3RhdGljIHZvaWQgQ29w eVRvQmluYXJ5T25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3Qp OwpAQCAtMTc3LDcgKzE4Miw3IEBAIHN0YXRpYyBjb25zdCBDb3B5VG9Sb3V0aW5lIENvcHlUb1Jv dXRpbmVKc29uID0gewogCS5Db3B5VG9TdGFydCA9IENvcHlUb1RleHRMaWtlU3RhcnQsCiAJLkNv cHlUb091dEZ1bmMgPSBDb3B5VG9UZXh0TGlrZU91dEZ1bmMsCiAJLkNvcHlUb09uZVJvdyA9IENv cHlUb0pzb25PbmVSb3csCi0JLkNvcHlUb0VuZCA9IENvcHlUb1RleHRMaWtlRW5kLAorCS5Db3B5 VG9FbmQgPSBDb3B5VG9Kc29uRW5kLAogfTsKIAogLyogYmluYXJ5IGZvcm1hdCAqLwpAQCAtMjQz LDYgKzI0OCwxNiBAQCBDb3B5VG9UZXh0TGlrZVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVw bGVEZXNjIHR1cERlc2MpCiAKIAkJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNzdGF0ZSk7CiAJ fQorCisJLyoKKwkgKiBJZiBKU09OIGhhcyBiZWVuIHJlcXVlc3RlZCwgYW5kIEZPUkNFX0FSUkFZ IGhhcyBiZWVuIHNwZWNpZmllZCBzZW5kIHRoZQorCSAqIG9wZW5pbmcgYnJhY2tldC4KKwkgKi8K KwlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OICYmIGNzdGF0ZS0+ b3B0cy5mb3JjZV9hcnJheSkKKwl7CisJCUNvcHlTZW5kQ2hhcihjc3RhdGUsICdbJyk7CisJCUNv cHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOworCX0KIH0KIAogLyoKQEAgLTM1NCwxMSAr MzY5LDMxIEBAIENvcHlUb0pzb25PbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxl U2xvdCAqc2xvdCkKIAlyZXN1bHQgPSBtYWtlU3RyaW5nSW5mbygpOwogCWNvbXBvc2l0ZV90b19q c29uKHJvd2RhdGEsIHJlc3VsdCwgZmFsc2UpOwogCisJaWYgKGNzdGF0ZS0+anNvbl9yb3dfZGVs aW1fbmVlZGVkICYmIGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwkJQ29weVNlbmRDaGFyKGNz dGF0ZSwgJywnKTsKKwllbHNlIGlmIChjc3RhdGUtPm9wdHMuZm9yY2VfYXJyYXkpCisJeworCQkv KiBmaXJzdCByb3cgbmVlZHMgbm8gZGVsaW1pdGVyICovCisJCUNvcHlTZW5kQ2hhcihjc3RhdGUs ICcgJyk7CisJCWNzdGF0ZS0+anNvbl9yb3dfZGVsaW1fbmVlZGVkID0gdHJ1ZTsKKwl9CisKIAlD 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 --000000000000a13c11064a1f5b1e Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Disposition: attachment; filename="v23-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlabosov2 RnJvbSA5ZWE2NzkwMjkzZmJhMGY5MDdlOTJkMTg4YzkxNjEyYjdlZWE2MTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjEgSmFuIDIwMjYgMTg6Mzg6MjQgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy MyAxLzNdIGludHJvZHVjZSBDb3B5Rm9ybWF0IHJlZmFjdG9yIENvcHlGb3JtYXRPcHRpb25zCgpD 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= --000000000000a13c11064a1f5b1e--