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 1w2F2m-0007Jv-0o for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Mar 2026 21:00:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2F2l-00Cugd-0A for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Mar 2026 21:00:07 +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 1w2F2k-00CugV-0q for pgsql-hackers@lists.postgresql.org; Mon, 16 Mar 2026 21:00:06 +0000 Received: from mail-qv1-xf2c.google.com ([2607:f8b0:4864:20::f2c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2F2d-000000004bB-1sTF for pgsql-hackers@postgresql.org; Mon, 16 Mar 2026 21:00:05 +0000 Received: by mail-qv1-xf2c.google.com with SMTP id 6a1803df08f44-89c4f7f8650so23886456d6.0 for ; Mon, 16 Mar 2026 14:00:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1773694799; x=1774299599; darn=postgresql.org; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=KDSwMQUiG4uq28jVdhlT8E/5M5Mb5jrJaNObID5xXTI=; b=Zyq2FR379Luce7XZe25MKPhX8EmtH7GM4RrWZreaakzrqlShLI6k/jmcs0k31mwHYU nr2ZyKDcgTUAVTEeIMBxwkfkAHJ6Zeou/NwL/FVDlmergodndD6v7VdtZrPGVxeJw29f mbVZh6+1+iJTMSpQv2u0FZgtxBFhMBVX5hJyG16DjnzV+U1S4gpjUHEAqmmdRmnCT0sE FjH1UtLwNdcsapk49Hf++Rj4/47RMRfg3I5/rFI+0+eCrJ/qWI5r6aXgUCCmO/b1greg Xv2PyiYXfa5SaRA9AzM9zPrNcQh82tcm62d9Z90/gPlCqDcylZRQbXywHC1bBnLO43en W7yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773694799; x=1774299599; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=KDSwMQUiG4uq28jVdhlT8E/5M5Mb5jrJaNObID5xXTI=; b=lZfhJOEDf/3/B3PC3xx/B6xOW5cTt+0qFRW5qfztQOQCOeTjfwxV79Iplyd8M8UyFa HjgBtb0k9HUGpPQAghqWhBIs9AOqUJ4vvOKX77dJJBhyT7/zDZ35GGH1TNMXDaE/SUI7 vLrF5cCsU8dLJdrwTWr+uGVWBpP6/GDR+UILzg5+HrJfRcSHpIrY39oIrR9dA8e8QA+P b78P6YCmuNqFxYXh4YQxIQuT0pHCGYAa+cZg3M8UzOIwtJXDjo7kvMTpNTAYDkvpkX3L CzIozM2I5qi5nqHtt4SXuqxeLIc73koFrG8+KOO3lCwv6Bqjgds2QD/lLVhyCcSbzWuA D11Q== X-Forwarded-Encrypted: i=1; AJvYcCXMgzcH1VAD5AGQyBBYp+GpD2oySISlqWyQjL2b40w7/dgKbQg7ESpy5pcjNPcYKZ1HOHzNUMEMk/4DArwo@postgresql.org X-Gm-Message-State: AOJu0Ywg/n1uoLtO9gsJwNe2TMCpEpdNrHQPDJ0sTteMZkHkEXXY/SZr hnEuDM/JeNVvbacW7Hnr0gj3PGYoULy/L6CMwr33iRgdAMowxibXafpf1yaqcZnOV/A= X-Gm-Gg: ATEYQzzoO/DnHorKApGiHnYddnPwiaxqTh+AaM9nEkpe5wA+TqyyzM6GiWVRhAvMgfo 1P0gtUgYaizaEUjDT0DTyIgmBg8pEoC1ecCDCoiNJmhtRrP8I2EN/Cn+OhkKJtNMCBcvYUPdPkX pQcstMPOoGxxiI+ui2IQ0NZc3YrrrBUrxQuA7e8xPGTQKz/Sd2e/8ond9hCN8Ey/4Jdixj2RtdF iSEhsm6O0BW+WlA7CoZcc9YOOwYUvT2vPpBiTYAOQFWc3fn2KVrMHLd4Ci1CqgKLPOP1xpQjZR4 4LEd6ZzJJV75YGGtaJxWQCiY6fJh7EJkeID2VKXiBp4oqDhaLWIvbvAx5ngz19m6USMJFlRqFTJ CD3CMHbOZuTy1botmlWI8opQUo9qQi4+EztctZ05YooNfRuzj/CFGUml5TCLyJziE23D43FIZzj DoyaxWAiete/vR9IlRa23eFAMKimiVNA== X-Received: by 2002:a05:6214:1c41:b0:899:eba1:3c09 with SMTP id 6a1803df08f44-89a81f8bdf2mr216092756d6.39.1773694798724; Mon, 16 Mar 2026 13:59:58 -0700 (PDT) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id 6a1803df08f44-89c54068d77sm25579436d6.15.2026.03.16.13.59.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 16 Mar 2026 13:59:57 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------GLh2cGiqS4Dw7vWM4YzEsMH5" Message-ID: <964a3377-d957-4a06-ad02-8228aefa65fc@dunslane.net> Date: Mon, 16 Mar 2026 16:59:56 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Emitting JSON to file using COPY TO To: Masahiko Sawada , jian he Cc: Joe Conway , Junwang Zhao , Florents Tselai , "Andrey M. Borodin" , Dean Rasheed , Daniel Verite , Davin Shearer , PostgreSQL-development References: <74d3b4e2-d201-489d-9b9a-1a6d0eb492a6@dunslane.net> <6cbbf7f3-da4a-4201-98a6-4347a3c35db0@joeconway.com> <8154f8e2-7d9c-442f-a7cb-a5caf38f6a12@dunslane.net> <57db4b6e-51ba-4984-9343-bc62a3ee0b7c@dunslane.net> From: Andrew Dunstan Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------GLh2cGiqS4Dw7vWM4YzEsMH5 Content-Type: multipart/alternative; boundary="------------hdp3AuUyHEOdeWo5UWaxvIry" --------------hdp3AuUyHEOdeWo5UWaxvIry Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2026-03-16 Mo 2:24 PM, Masahiko Sawada wrote: > On Sun, Mar 8, 2026 at 8:49 PM jian he wrote: >> On Mon, Mar 9, 2026 at 3:44 AM Andrew Dunstan wrote: >>> Hmm. But should we be scribbling on slot->tts_tupleDescriptor like that? >>> How about something like this?: >>> >>> - * Full table or query without column list. Ensure the slot uses >>> - * cstate->tupDesc so that the datum is stamped with the right type; >>> - * for queries output type is RECORDOID this must be the blessed >>> - * descriptor so that composite_to_json can look it up via >>> - * lookup_rowtype_tupdesc. >>> + * Full table or query without column list. For queries, the slot's >>> + * TupleDesc may carry RECORDOID, which is not registered in the >>> type >>> + * cache and would cause composite_to_json's lookup_rowtype_tupdesc >>> + * call to fail. Build a HeapTuple stamped with the blessed >>> + * descriptor so the type can be looked up correctly. >>> */ >>> if (!cstate->rel && slot->tts_tupleDescriptor->tdtypeid == >>> RECORDOID) >>> - slot->tts_tupleDescriptor = cstate->queryDesc->tupDesc; >>> + { >>> + HeapTuple tup; >>> >>> - rowdata = ExecFetchSlotHeapTupleDatum(slot); >>> + tup = heap_form_tuple(cstate->tupDesc, >>> + slot->tts_values, >>> + slot->tts_isnull); >>> + rowdata = HeapTupleGetDatum(tup); >>> + } >>> + else >>> + { >>> + rowdata = ExecFetchSlotHeapTupleDatum(slot); >>> + } >>> >> This is better. I've tried to get rid of json_projvalues and json_projnulls. >> Just using heap_form_tuple, but it won't work. >> >> I incorporated the v28-0004 COPY column list into v9-0002. >> With this patch set, we added four fields to the struct CopyToStateData. >> >> + StringInfo json_buf; /* reusable buffer for JSON output, >> + * initialized in BeginCopyTo */ >> + TupleDesc tupDesc; /* Descriptor for JSON output; for a column >> + * list this is a projected descriptor */ >> + Datum *json_projvalues; /* pre-allocated projection values, or >> + * NULL */ >> + bool *json_projnulls; /* pre-allocated projection nulls, or NULL */ >> >> Using the script in >> https://www.postgresql.org/message-id/CACJufxFFZqxC3p4WjpTEi4riaJm%3DpADX%2Bpy0yQ0%3DRWTn5cqK3Q%40mail.gmail.com >> I tested it again on macOS and Linux, and there are no regressions for >> COPY TO with the TEXT and CSV formats. > I've reviewed the patch and have some comments: > > --- > I got a SEGV in the following scenario: > > postgres(1:1197708)=# create table test (a int, b text, c jsonb); > CREATE TABLE > postgres(1:1197708)=# copy test(a, b) to stdout with (format 'json' ); > TRAP: failed Assert("tupdesc->firstNonCachedOffsetAttr >= 0"), File: > "execTuples.c", Line: 2328, PID: 1197708 > postgres: masahiko postgres [local] COPY(ExceptionalCondition+0x9e) [0xbebe48] > postgres: masahiko postgres [local] COPY(BlessTupleDesc+0x2b) [0x729b50] > postgres: masahiko postgres [local] COPY(BeginCopyTo+0xc94) [0x637bdf] > postgres: masahiko postgres [local] COPY(DoCopy+0xb68) [0x62afbc] > postgres: masahiko postgres [local] > COPY(standard_ProcessUtility+0xa22) [0xa0ba48] > postgres: masahiko postgres [local] COPY(ProcessUtility+0x10e) [0xa0b01f] > postgres: masahiko postgres [local] COPY() [0xa09872] > postgres: masahiko postgres [local] COPY() [0xa09acf] > postgres: masahiko postgres [local] COPY(PortalRun+0x2c8) [0xa0901d] > postgres: masahiko postgres [local] COPY() [0xa02055] > postgres: masahiko postgres [local] COPY(PostgresMain+0xaf1) [0xa0724e] > postgres: masahiko postgres [local] COPY() [0x9fdab9] > postgres: masahiko postgres [local] > COPY(postmaster_child_launch+0x165) [0x905378] > postgres: masahiko postgres [local] COPY() [0x90b600] > postgres: masahiko postgres [local] COPY() [0x908e6a] > postgres: masahiko postgres [local] COPY(PostmasterMain+0x14fe) [0x90880c] > postgres: masahiko postgres [local] COPY(main+0x340) [0x7a1f9c] > > It seems to forget to call TupleDescFinalize(). And I think we need > some regression tests for this case. > > --- > + if (cstate->opts.format == COPY_FORMAT_JSON) > + { > + /* > + * If FORCE_ARRAY has been specified, send the opening bracket. > + */ > + if (cstate->opts.force_array) > + { > + CopySendChar(cstate, '['); > + CopySendTextLikeEndOfRow(cstate); > + } > + } > > We can conjunct the two if statement conditions. > Here's a v30 set that I hope fixes these issues. cheers andrew -- Andrew Dunstan EDB:https://www.enterprisedb.com --------------hdp3AuUyHEOdeWo5UWaxvIry Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit


On 2026-03-16 Mo 2:24 PM, Masahiko Sawada wrote:
On Sun, Mar 8, 2026 at 8:49 PM jian he <jian.universality@gmail.com> wrote:
On Mon, Mar 9, 2026 at 3:44 AM Andrew Dunstan <andrew@dunslane.net> wrote:
Hmm. But should we be scribbling on slot->tts_tupleDescriptor like that?
How about something like this?:

-        * Full table or query without column list.  Ensure the slot uses
-        * cstate->tupDesc so that the datum is stamped with the right type;
-        * for queries output type is RECORDOID this must be the blessed
-        * descriptor so that composite_to_json can look it up via
-        * lookup_rowtype_tupdesc.
+        * Full table or query without column list.  For queries, the slot's
+        * TupleDesc may carry RECORDOID, which is not registered in the
type
+        * cache and would cause composite_to_json's lookup_rowtype_tupdesc
+        * call to fail.  Build a HeapTuple stamped with the blessed
+        * descriptor so the type can be looked up correctly.
          */
         if (!cstate->rel && slot->tts_tupleDescriptor->tdtypeid ==
RECORDOID)
-           slot->tts_tupleDescriptor = cstate->queryDesc->tupDesc;
+       {
+           HeapTuple   tup;

-       rowdata = ExecFetchSlotHeapTupleDatum(slot);
+           tup = heap_form_tuple(cstate->tupDesc,
+                                 slot->tts_values,
+                                 slot->tts_isnull);
+           rowdata = HeapTupleGetDatum(tup);
+       }
+       else
+       {
+           rowdata = ExecFetchSlotHeapTupleDatum(slot);
+       }

This is better. I've tried to get rid of json_projvalues and json_projnulls.
Just using heap_form_tuple, but it won't work.

I incorporated the v28-0004 COPY column list into v9-0002.
With this patch set, we added four fields to the struct CopyToStateData.

+    StringInfo    json_buf;        /* reusable buffer for JSON output,
+                                 * initialized in BeginCopyTo */
+    TupleDesc    tupDesc;        /* Descriptor for JSON output; for a column
+                                 * list this is a projected descriptor */
+    Datum       *json_projvalues;    /* pre-allocated projection values, or
+                                     * NULL */
+    bool       *json_projnulls; /* pre-allocated projection nulls, or NULL */

Using the script in
https://www.postgresql.org/message-id/CACJufxFFZqxC3p4WjpTEi4riaJm%3DpADX%2Bpy0yQ0%3DRWTn5cqK3Q%40mail.gmail.com
I tested it again on macOS and Linux, and there are no regressions for
COPY TO with the TEXT and CSV formats.
I've reviewed the patch and have some comments:

---
I got a SEGV in the following scenario:

postgres(1:1197708)=# create table test (a int, b text, c jsonb);
CREATE TABLE
postgres(1:1197708)=# copy test(a, b) to stdout with (format 'json' );
TRAP: failed Assert("tupdesc->firstNonCachedOffsetAttr >= 0"), File:
"execTuples.c", Line: 2328, PID: 1197708
postgres: masahiko postgres [local] COPY(ExceptionalCondition+0x9e) [0xbebe48]
postgres: masahiko postgres [local] COPY(BlessTupleDesc+0x2b) [0x729b50]
postgres: masahiko postgres [local] COPY(BeginCopyTo+0xc94) [0x637bdf]
postgres: masahiko postgres [local] COPY(DoCopy+0xb68) [0x62afbc]
postgres: masahiko postgres [local]
COPY(standard_ProcessUtility+0xa22) [0xa0ba48]
postgres: masahiko postgres [local] COPY(ProcessUtility+0x10e) [0xa0b01f]
postgres: masahiko postgres [local] COPY() [0xa09872]
postgres: masahiko postgres [local] COPY() [0xa09acf]
postgres: masahiko postgres [local] COPY(PortalRun+0x2c8) [0xa0901d]
postgres: masahiko postgres [local] COPY() [0xa02055]
postgres: masahiko postgres [local] COPY(PostgresMain+0xaf1) [0xa0724e]
postgres: masahiko postgres [local] COPY() [0x9fdab9]
postgres: masahiko postgres [local]
COPY(postmaster_child_launch+0x165) [0x905378]
postgres: masahiko postgres [local] COPY() [0x90b600]
postgres: masahiko postgres [local] COPY() [0x908e6a]
postgres: masahiko postgres [local] COPY(PostmasterMain+0x14fe) [0x90880c]
postgres: masahiko postgres [local] COPY(main+0x340) [0x7a1f9c]

It seems to forget to call TupleDescFinalize(). And I think we need
some regression tests for this case.

---
+       if (cstate->opts.format == COPY_FORMAT_JSON)
+       {
+               /*
+                * If FORCE_ARRAY has been specified, send the opening bracket.
+                */
+               if (cstate->opts.force_array)
+               {
+                       CopySendChar(cstate, '[');
+                       CopySendTextLikeEndOfRow(cstate);
+               }
+       }

We can conjunct the two if statement conditions.


Here's a v30 set that I hope fixes these issues.


cheers


andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com
--------------hdp3AuUyHEOdeWo5UWaxvIry-- --------------GLh2cGiqS4Dw7vWM4YzEsMH5 Content-Type: text/x-patch; charset=UTF-8; name="v30-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Disposition: attachment; filename*0="v30-0001-introduce-CopyFormat-refactor-CopyFormatOptions.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSBmMDU4NzI3MzJhMzY1NDM2MmQ5MTYzNTRhMmVkZDA3MWFhMTMxMDk5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogTW9uLCAxNiBNYXIgMjAyNiAxNjo0OTowMSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjMwIDEvM10gaW50cm9kdWNlIENvcHlGb3JtYXQsIHJlZmFjdG9yIENvcHlGb3Jt YXRPcHRpb25zCgpDdXJyZW50bHksIHRoZSBDT1BZIGNvbW1hbmQgZm9ybWF0IGlzIGRldGVy bWluZWQgYnkgdHdvIGJvb2xlYW4gZmllbGRzCihiaW5hcnksIGNzdl9tb2RlKSBpbiBDb3B5 Rm9ybWF0T3B0aW9ucy4gIFRoaXMgYXBwcm9hY2gsIHdoaWxlCmZ1bmN0aW9uYWwsIGlzbid0 IGlkZWFsIGZvciBpbXBsZW1lbnRpbmcgb3RoZXIgZm9ybWF0cyBpbiB0aGUgZnV0dXJlLgoK VG8gc2ltcGxpZnkgYWRkaW5nIG5ldyBmb3JtYXRzLCBpbnRyb2R1Y2UgYSBDb3B5Rm9ybWF0 IGVudW0uICBUaGlzIG1ha2VzCnRoZSBjb2RlIGNsZWFuZXIgYW5kIG1vcmUgbWFpbnRhaW5h YmxlLCBhbGxvd2luZyBmb3IgZWFzaWVyIGludGVncmF0aW9uCm9mIGFkZGl0aW9uYWwgZm9y bWF0cyBkb3duIHRoZSBsaW5lLgoKQXV0aG9yOiBKb2VsIEphY29ic29uIDxqb2VsQGNvbXBp bGVyLm9yZz4KQXV0aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KRGlz Y3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUx2ZlVrQnhUWXk1dVdQRlZ3cGtfN2lp MnpnVDA3dDNkLXlSX2N5NHNmcnJMVSUzRGtjZyU0MG1haWwuZ21haWwuY29tCkRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vNmEwNDYyOGQtMGQ1My00MWQ5LTllMzUtNWE4ZGMz MDJjMzRjQGpvZWNvbndheS5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMg ICAgICAgICAgfCA1MCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAgfCAgNiArKy0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbXBhcnNlLmMgfCAgNyArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5dG8uYyAgICAgICAgfCAgOCArKy0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5o ICAgICAgICAgIHwgMTMgKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMzYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCmluZGV4IDYzYjg2ODAyYmEyLi4yZjQ2 YmU1MTZmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNTc2LDYgKzU3Niw4IEBAIFByb2Nl c3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCW9wdHNfb3V0ID0gcGFsbG9j MF9vYmplY3QoQ29weUZvcm1hdE9wdGlvbnMpOwogCiAJb3B0c19vdXQtPmZpbGVfZW5jb2Rp bmcgPSAtMTsKKwkvKiBkZWZhdWx0IGZvcm1hdCAqLworCW9wdHNfb3V0LT5mb3JtYXQgPSBD T1BZX0ZPUk1BVF9URVhUOwogCiAJLyogRXh0cmFjdCBvcHRpb25zIGZyb20gdGhlIHN0YXRl bWVudCBub2RlIHRyZWUgKi8KIAlmb3JlYWNoKG9wdGlvbiwgb3B0aW9ucykKQEAgLTU5MCwx MSArNTkyLDExIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAJCQlmb3JtYXRf c3BlY2lmaWVkID0gdHJ1ZTsKIAkJCWlmIChzdHJjbXAoZm10LCAidGV4dCIpID09IDApCi0J CQkJIC8qIGRlZmF1bHQgZm9ybWF0ICovIDsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID0gQ09Q WV9GT1JNQVRfVEVYVDsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJjc3YiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5jc3ZfbW9kZSA9IHRydWU7CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9 IENPUFlfRk9STUFUX0NTVjsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9 PSAwKQotCQkJCW9wdHNfb3V0LT5iaW5hcnkgPSB0cnVlOworCQkJCW9wdHNfb3V0LT5mb3Jt YXQgPSBDT1BZX0ZPUk1BVF9CSU5BUlk7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAt NzU0LDMxICs3NTYsMzEgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkgKiBDaGVjayBmb3IgaW5jb21wYXRpYmxlIG9wdGlvbnMgKG11c3QgZG8gdGhlc2Ug dGhyZWUgYmVmb3JlIGluc2VydGluZwogCSAqIGRlZmF1bHRzKQogCSAqLwotCWlmIChvcHRz X291dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWxpbSkKKwlpZiAob3B0c19vdXQtPmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRlbGltKQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJLyotIHRy YW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJS T1IgKi8KIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIs ICJERUxJTUlURVIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5iaW5hcnkgJiYgb3B0c19vdXQt Pm51bGxfcHJpbnQpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklO QVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3Bl Y2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpKTsKIAotCWlmIChvcHRzX291dC0+ YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQorCWlmIChvcHRzX291dC0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CiAJCQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVG QVVMVCIpKSk7CiAKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAqLwog CWlmICghb3B0c19vdXQtPmRlbGltKQotCQlvcHRzX291dC0+ZGVsaW0gPSBvcHRzX291dC0+ Y3N2X21vZGUgPyAiLCIgOiAiXHQiOworCQlvcHRzX291dC0+ZGVsaW0gPSAob3B0c19vdXQt PmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpID8gIiwiIDogIlx0IjsKIAogCWlmICghb3B0 c19vdXQtPm51bGxfcHJpbnQpCi0JCW9wdHNfb3V0LT5udWxsX3ByaW50ID0gb3B0c19vdXQt PmNzdl9tb2RlID8gIiIgOiAiXFxOIjsKKwkJb3B0c19vdXQtPm51bGxfcHJpbnQgPSAob3B0 c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpID8gIiIgOiAiXFxOIjsKIAlvcHRz X291dC0+bnVsbF9wcmludF9sZW4gPSBzdHJsZW4ob3B0c19vdXQtPm51bGxfcHJpbnQpOwog Ci0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBD T1BZX0ZPUk1BVF9DU1YpCiAJewogCQlpZiAoIW9wdHNfb3V0LT5xdW90ZSkKIAkJCW9wdHNf b3V0LT5xdW90ZSA9ICJcIiI7CkBAIC04MjYsNyArODI4LDcgQEAgUHJvY2Vzc0NvcHlPcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBmdXR1cmUtcHJvb2ZpbmcuICBMaWtld2lz ZSB3ZSBkaXNhbGxvdyBhbGwgZGlnaXRzIHRob3VnaCBvbmx5IG9jdGFsCiAJICogZGlnaXRz IGFyZSBhY3R1YWxseSBkYW5nZXJvdXMuCiAJICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21v ZGUgJiYKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYKIAkJ c3RyY2hyKCJcXC5hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLAogCQkJ ICAgb3B0c19vdXQtPmRlbGltWzBdKSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLApAQCAt ODM0LDQzICs4MzYsNDMgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkgZXJybXNnKCJDT1BZIGRlbGltaXRlciBjYW5ub3QgYmUgXCIlc1wiIiwgb3B0 c19vdXQtPmRlbGltKSkpOwogCiAJLyogQ2hlY2sgaGVhZGVyICovCi0JaWYgKG9wdHNfb3V0 LT5iaW5hcnkgJiYgb3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNF KQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRz X291dC0+aGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFMU0UpCiAJCWVyZXBvcnQoRVJS T1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkv Ki0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBP Tl9FUlJPUiAqLwogCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBt b2RlIiwgIkhFQURFUiIpKSk7CiAKIAkvKiBDaGVjayBxdW90ZSAqLwotCWlmICghb3B0c19v dXQtPmNzdl9tb2RlICYmIG9wdHNfb3V0LT5xdW90ZSAhPSBOVUxMKQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+cXVvdGUgIT0gTlVM TCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENP UFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiQ09QWSAlcyByZXF1 aXJlcyBDU1YgbW9kZSIsICJRVU9URSIpKSk7CiAKLQlpZiAob3B0c19vdXQtPmNzdl9tb2Rl ICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEpCisJaWYgKG9wdHNfb3V0LT5mb3Jt YXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkNPUFkgcXVvdGUgbXVzdCBiZSBhIHNpbmdsZSBv bmUtYnl0ZSBjaGFyYWN0ZXIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBv cHRzX291dC0+ZGVsaW1bMF0gPT0gb3B0c19vdXQtPnF1b3RlWzBdKQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+ZGVsaW1bMF0gPT0g b3B0c19vdXQtPnF1b3RlWzBdKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coIkNPUFkgZGVs aW1pdGVyIGFuZCBxdW90ZSBtdXN0IGJlIGRpZmZlcmVudCIpKSk7CiAKIAkvKiBDaGVjayBl c2NhcGUgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ZXNjYXBl ICE9IE5VTEwpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYm IG9wdHNfb3V0LT5lc2NhcGUgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9y OiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJ CQkJIGVycm1zZygiQ09QWSAlcyByZXF1aXJlcyBDU1YgbW9kZSIsICJFU0NBUEUiKSkpOwog Ci0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBzdHJsZW4ob3B0c19vdXQtPmVzY2FwZSkg IT0gMSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YgJiYgc3Ry bGVuKG9wdHNfb3V0LT5lc2NhcGUpICE9IDEpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkNP UFkgZXNjYXBlIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIikpKTsKIAog CS8qIENoZWNrIGZvcmNlX3F1b3RlICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYg KG9wdHNfb3V0LT5mb3JjZV9xdW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkK KwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgKG9wdHNfb3V0 LT5mb3JjZV9xdW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBl LmcuIE9OX0VSUk9SICovCkBAIC04ODQsOCArODg2LDggQEAgUHJvY2Vzc0NvcHlPcHRpb25z KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSJDT1BZIEZST00iKSkpOwogCiAJLyogQ2hl Y2sgZm9yY2Vfbm90bnVsbCAqLwotCWlmICghb3B0c19vdXQtPmNzdl9tb2RlICYmIChvcHRz X291dC0+Zm9yY2Vfbm90bnVsbCAhPSBOSUwgfHwKLQkJCQkJCQkJb3B0c19vdXQtPmZvcmNl X25vdG51bGxfYWxsKSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9D U1YgJiYgKG9wdHNfb3V0LT5mb3JjZV9ub3RudWxsICE9IE5JTCB8fAorCQkJCQkJCQkJCQkJ b3B0c19vdXQtPmZvcmNlX25vdG51bGxfYWxsKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xh dG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICov CkBAIC05MDAsOCArOTAyLDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJCQkJCSJDT1BZIFRPIikpKTsKIAogCS8qIENoZWNrIGZvcmNlX251bGwgKi8K LQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiAob3B0c19vdXQtPmZvcmNlX251bGwgIT0g TklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCisJaWYgKG9wdHNf b3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChvcHRzX291dC0+Zm9yY2VfbnVs bCAhPSBOSUwgfHwKKwkJCQkJCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9w dGlvbiwgZS5nLiBPTl9FUlJPUiAqLwpAQCAtOTI1LDcgKzkyNyw3IEBAIFByb2Nlc3NDb3B5 T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkiTlVMTCIpKSk7CiAKIAkvKiBE b24ndCBhbGxvdyB0aGUgQ1NWIHF1b3RlIGNoYXIgdG8gYXBwZWFyIGluIHRoZSBudWxsIHN0 cmluZy4gKi8KLQlpZiAob3B0c19vdXQtPmNzdl9tb2RlICYmCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmCiAJCXN0cmNocihvcHRzX291dC0+bnVsbF9w cmludCwgb3B0c19vdXQtPnF1b3RlWzBdKSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtOTYx LDcgKzk2Myw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkJIkRFRkFVTFQiKSkpOwogCiAJCS8qIERvbid0IGFsbG93IHRoZSBDU1YgcXVvdGUg Y2hhciB0byBhcHBlYXIgaW4gdGhlIGRlZmF1bHQgc3RyaW5nLiAqLwotCQlpZiAob3B0c19v dXQtPmNzdl9tb2RlICYmCisJCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFU X0NTViAmJgogCQkJc3RyY2hyKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50LCBvcHRzX291dC0+ cXVvdGVbMF0pICE9IE5VTEwpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCkBAIC05NzgsNyArOTgwLDcgQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJIGVycm1zZygiTlVM TCBzcGVjaWZpY2F0aW9uIGFuZCBERUZBVUxUIHNwZWNpZmljYXRpb24gY2Fubm90IGJlIHRo ZSBzYW1lIikpKTsKIAl9CiAJLyogQ2hlY2sgb25fZXJyb3IgKi8KLQlpZiAob3B0c19vdXQt PmJpbmFyeSAmJiBvcHRzX291dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKQor CWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291 dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJvbmx5 IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weWZyb20uYwppbmRleCA5NWY2Y2I0MTZhOS4uYTdmZTI5YTM2M2EgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtMTU2LDkgKzE1Niw5IEBAIHN0YXRpYyBjb25z dCBDb3B5RnJvbVJvdXRpbmUgQ29weUZyb21Sb3V0aW5lQmluYXJ5ID0gewogc3RhdGljIGNv bnN0IENvcHlGcm9tUm91dGluZSAqCiBDb3B5RnJvbUdldFJvdXRpbmUoY29uc3QgQ29weUZv cm1hdE9wdGlvbnMgKm9wdHMpCiB7Ci0JaWYgKG9wdHMtPmNzdl9tb2RlKQorCWlmIChvcHRz LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKQogCQlyZXR1cm4gJkNvcHlGcm9tUm91dGlu ZUNTVjsKLQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0cy0+Zm9ybWF0 ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5RnJvbVJvdXRpbmVCaW5h cnk7CiAKIAkvKiBkZWZhdWx0IGlzIHRleHQgKi8KQEAgLTI2Miw3ICsyNjIsNyBAQCBDb3B5 RnJvbUVycm9yQ2FsbGJhY2sodm9pZCAqYXJnKQogCQkJCSAgIGNzdGF0ZS0+Y3VyX3JlbG5h bWUpOwogCQlyZXR1cm47CiAJfQotCWlmIChjc3RhdGUtPm9wdHMuYmluYXJ5KQorCWlmIChj c3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAl7CiAJCS8qIGNh bid0IHVzZWZ1bGx5IGRpc3BsYXkgdGhlIGRhdGEgKi8KIAkJaWYgKGNzdGF0ZS0+Y3VyX2F0 dG5hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNl LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKaW5kZXggMDBlZTQx NTRiOGIuLjIwMGQ3YmM3OWNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5ZnJvbXBhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJz ZS5jCkBAIC0xNzQsNyArMTc0LDcgQEAgUmVjZWl2ZUNvcHlCZWdpbihDb3B5RnJvbVN0YXRl IGNzdGF0ZSkKIHsKIAlTdHJpbmdJbmZvRGF0YSBidWY7CiAJaW50CQkJbmF0dHMgPSBsaXN0 X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3QpOwotCWludDE2CQlmb3JtYXQgPSAoY3N0YXRl LT5vcHRzLmJpbmFyeSA/IDEgOiAwKTsKKwlpbnQxNgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0 cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZID8gMSA6IDApOwogCWludAkJCWk7CiAK IAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weUluUmVzcG9uc2UpOwpAQCAtNzUy LDcgKzc1Miw3IEBAIGJvb2wKIE5leHRDb3B5RnJvbVJhd0ZpZWxkcyhDb3B5RnJvbVN0YXRl IGNzdGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcykKIHsKIAlyZXR1cm4gTmV4 dENvcHlGcm9tUmF3RmllbGRzSW50ZXJuYWwoY3N0YXRlLCBmaWVsZHMsIG5maWVsZHMsCi0J CQkJCQkJCQkJIGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSk7CisJCQkJCQkJCQkJIGNzdGF0ZS0+ b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKTsKIH0KIAogLyoKQEAgLTc3OSw3ICs3 NzksOCBAQCBOZXh0Q29weUZyb21SYXdGaWVsZHNJbnRlcm5hbChDb3B5RnJvbVN0YXRlIGNz dGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcwogCWJvb2wJCWRvbmUgPSBmYWxz ZTsKIAogCS8qIG9ubHkgYXZhaWxhYmxlIGZvciB0ZXh0IG9yIGNzdiBpbnB1dCAqLwotCUFz c2VydCghY3N0YXRlLT5vcHRzLmJpbmFyeSk7CisJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5mb3Jt YXQgPT0gQ09QWV9GT1JNQVRfVEVYVCB8fAorCQkgICBjc3RhdGUtPm9wdHMuZm9ybWF0ID09 IENPUFlfRk9STUFUX0NTVik7CiAKIAkvKiBvbiBpbnB1dCBjaGVjayB0aGF0IHRoZSBoZWFk ZXIgbGluZSBpcyBjb3JyZWN0IGlmIG5lZWRlZCAqLwogCWlmIChjc3RhdGUtPmN1cl9saW5l bm8gPT0gMCAmJiBjc3RhdGUtPm9wdHMuaGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFM U0UpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IGQ2ZWY3Mjc1YTY0Li5iMGVlOTFmYzlj MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTE4Miw5ICsxODIsOSBAQCBzdGF0aWMg Y29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lQmluYXJ5ID0gewogc3RhdGljIGNv bnN0IENvcHlUb1JvdXRpbmUgKgogQ29weVRvR2V0Um91dGluZShjb25zdCBDb3B5Rm9ybWF0 T3B0aW9ucyAqb3B0cykKIHsKLQlpZiAob3B0cy0+Y3N2X21vZGUpCisJaWYgKG9wdHMtPmZv cm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJCXJldHVybiAmQ29weVRvUm91dGluZUNTVjsK LQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0cy0+Zm9ybWF0ID09IENP UFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQmluYXJ5OwogCiAJ LyogZGVmYXVsdCBpcyB0ZXh0ICovCkBAIC0yMjEsNyArMjIxLDcgQEAgQ29weVRvVGV4dExp a2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogCiAJCQlj b2xuYW1lID0gTmFtZVN0cihUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51bSAtIDEpLT5h dHRuYW1lKTsKIAotCQkJaWYgKGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSkKKwkJCWlmIChjc3Rh dGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAkJCQlDb3B5QXR0cmlidXRl T3V0Q1NWKGNzdGF0ZSwgY29sbmFtZSwgZmFsc2UpOwogCQkJZWxzZQogCQkJCUNvcHlBdHRy aWJ1dGVPdXRUZXh0KGNzdGF0ZSwgY29sbmFtZSk7CkBAIC0zOTgsNyArMzk4LDcgQEAgU2Vu ZENvcHlCZWdpbihDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJU3RyaW5nSW5mb0RhdGEgYnVm OwogCWludAkJCW5hdHRzID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKLQlp bnQxNgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0cy5iaW5hcnkgPyAxIDogMCk7CisJaW50MTYJ CWZvcm1hdCA9IChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSA/ IDEgOiAwKTsKIAlpbnQJCQlpOwogCiAJcHFfYmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0Nv cHlPdXRSZXNwb25zZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXggODc3MjAyYWY2N2IuLjI0 MzBmYjBiMmU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysr IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC00OSw2ICs0OSwxNiBAQCB0eXBl ZGVmIGVudW0gQ29weUxvZ1ZlcmJvc2l0eUNob2ljZQogCUNPUFlfTE9HX1ZFUkJPU0lUWV9W RVJCT1NFLCAvKiBsb2dzIGFkZGl0aW9uYWwgbWVzc2FnZXMgKi8KIH0gQ29weUxvZ1ZlcmJv c2l0eUNob2ljZTsKIAorLyoKKyAqIFJlcHJlc2VudHMgdGhlIGZvcm1hdCBvZiB0aGUgQ09Q WSBvcGVyYXRpb24uCisgKi8KK3R5cGVkZWYgZW51bSBDb3B5Rm9ybWF0Cit7CisJQ09QWV9G T1JNQVRfVEVYVCA9IDAsCisJQ09QWV9GT1JNQVRfQklOQVJZLAorCUNPUFlfRk9STUFUX0NT ViwKK30gQ29weUZvcm1hdDsKKwogLyoKICAqIEEgc3RydWN0IHRvIGhvbGQgQ09QWSBvcHRp b25zLCBpbiBhIHBhcnNlZCBmb3JtLiBBbGwgb2YgdGhlc2UgYXJlIHJlbGF0ZWQKICAqIHRv IGZvcm1hdHRpbmcsIGV4Y2VwdCBmb3IgJ2ZyZWV6ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5 IGJlbG9uZyBoZXJlLCBidXQKQEAgLTU5LDkgKzY5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ29w eUZvcm1hdE9wdGlvbnMKIAkvKiBwYXJhbWV0ZXJzIGZyb20gdGhlIENPUFkgY29tbWFuZCAq LwogCWludAkJCWZpbGVfZW5jb2Rpbmc7CS8qIGZpbGUgb3IgcmVtb3RlIHNpZGUncyBjaGFy YWN0ZXIgZW5jb2RpbmcsCiAJCQkJCQkJCSAqIC0xIGlmIG5vdCBzcGVjaWZpZWQgKi8KLQli b29sCQliaW5hcnk7CQkJLyogYmluYXJ5IGZvcm1hdD8gKi8KKwlDb3B5Rm9ybWF0CWZvcm1h dDsJCQkvKiBmb3JtYXQgb2YgdGhlIENPUFkgb3BlcmF0aW9uICovCiAJYm9vbAkJZnJlZXpl OwkJCS8qIGZyZWV6ZSByb3dzIG9uIGxvYWRpbmc/ICovCi0JYm9vbAkJY3N2X21vZGU7CQkv KiBDb21tYSBTZXBhcmF0ZWQgVmFsdWUgZm9ybWF0PyAqLwogCWludAkJCWhlYWRlcl9saW5l OwkvKiBudW1iZXIgb2YgbGluZXMgdG8gc2tpcCBvciBDT1BZX0hFQURFUl9YWFgKIAkJCQkJ CQkJICogdmFsdWUgKHNlZSB0aGUgYWJvdmUpICovCiAJY2hhcgkgICAqbnVsbF9wcmludDsJ CS8qIE5VTEwgbWFya2VyIHN0cmluZyAoc2VydmVyIGVuY29kaW5nISkgKi8KZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZWM4NTEzZDkwYjUuLjNiMmZjZWJjYjU0IDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNTI4LDYgKzUyOCw3IEBAIENvbnZlcnNp b25Mb2NhdGlvbgogQ29udmVydFJvd3R5cGVFeHByCiBDb29rZWRDb25zdHJhaW50CiBDb3B5 RGVzdAorQ29weUZvcm1hdAogQ29weUZvcm1hdE9wdGlvbnMKIENvcHlGcm9tUm91dGluZQog Q29weUZyb21TdGF0ZQotLSAKMi40My4wCgo= --------------GLh2cGiqS4Dw7vWM4YzEsMH5 Content-Type: text/x-patch; charset=UTF-8; name="v30-0002-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v30-0002-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 RnJvbSA5ZDEzZjQ1OGRlYTVjMzkxNDcwNWIwNmMwODI2YzM5M2QwMmNlYmNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogTW9uLCAxNiBNYXIgMjAyNiAxNjo1MDoyNCAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjMwIDIvM10ganNvbiBmb3JtYXQgZm9yIENPUFkgVE8KClRoaXMgaW50cm9kdWNl cyB0aGUgSlNPTiBmb3JtYXQgb3B0aW9uIGZvciB0aGUgQ09QWSBUTyBjb21tYW5kLCBhbGxv d2luZwp1c2VycyB0byBleHBvcnQgcXVlcnkgcmVzdWx0cyBvciB0YWJsZSBkYXRhIGRpcmVj dGx5IGFzIGEgc3RyZWFtIG9mIEpTT04Kb2JqZWN0cyAob25lIHBlciBsaW5lLCBOREpTT04g c3R5bGUpLgoKVGhlIEpTT04gZm9ybWF0IGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQgb25seSBm b3IgQ09QWSBUTyBvcGVyYXRpb25zOyBpdAppcyBub3QgYXZhaWxhYmxlIGZvciBDT1BZIEZS T00uCgpKU09OIGZvcm1hdCBpcyBpbmNvbXBhdGlibGUgd2l0aCBzb21lIHN0YW5kYXJkIHRl eHQvQ1NWIGZvcm1hdHRpbmcKb3B0aW9ucywgaW5jbHVkaW5nIEhFQURFUiwgREVGQVVMVCwg TlVMTCwgREVMSU1JVEVSLCBGT1JDRSBRVU9URSwKRk9SQ0UgTk9UIE5VTEwsIGFuZCBGT1JD RSBOVUxMLgoKQ29sdW1uIGxpc3Qgc3VwcG9ydCBpcyBpbmNsdWRlZDogd2hlbiBhIGNvbHVt biBsaXN0IGlzIHNwZWNpZmllZCwgb25seQp0aGUgbmFtZWQgY29sdW1ucyBhcmUgZW1pdHRl ZCBpbiBlYWNoIEpTT04gb2JqZWN0LgoKUmVncmVzc2lvbiB0ZXN0cyBjb3ZlcmluZyB2YWxp ZCBKU09OIGV4cG9ydHMgYW5kIGVycm9yIGhhbmRsaW5nIGZvcgppbmNvbXBhdGlibGUgb3B0 aW9ucyBoYXZlIGJlZW4gYWRkZWQgdG8gc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwu CgpBdXRob3I6IEpvZSBDb253YXkgPG1haWxAam9lY29ud2F5LmNvbT4KQXV0aG9yOiBqaWFu IGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkg TS4gQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRlYW0ucnU+ClJldmlld2VkLWJ5OiBEZWFuIFJh c2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBW ZXJpdGUgPGRhbmllbEBtYW5pdG91LW1haWwub3JnPgpSZXZpZXdlZC1ieTogRGF2aW4gU2hl YXJlciA8ZGF2aW5AYXBhY2hlLm9yZz4KUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2FkYSA8 c2F3YWRhLm1zaGtAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQWx2YXJvIEhlcnJlcmEgPGFs dmhlcnJlQGFsdmgubm8taXAub3JnPgpSZXZpZXdlZC1ieTogSnVud2FuZyBaaGFvIDx6aGp3 cGt1QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVu c2xhbmUubmV0PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTHZmVWtCeFRZ eTV1V1BGVndwa183aWkyemdUMDd0M2QteVJfY3k0c2ZyckxVJTNEa2NnJTQwbWFpbC5nbWFp bC5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS82YTA0NjI4ZC0wZDUzLTQx ZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29ud2F5LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9y ZWYvY29weS5zZ21sICAgICAgICAgfCAgMTMgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5LmMgICAgICAgIHwgIDQ5ICsrKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eXRvLmMgICAgICB8IDE2MiArKysrKysrKysrKysrKysrKysrKysrKysrKystLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICB8ICAgOCArKwogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb24uYyAgICAgICB8ICAgNSArLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9qc29uLmggICAgICAgICAgIHwgICAyICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgfCAxNDYgKysrKysrKysrKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsICAgICAgfCAg ODggKysrKysrKysrKysrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgNDQ1IGluc2VydGlvbnMo KyksIDMxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29w eS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggMGFkODkwZWY5NWYu Ljc1ZjU1YmJmNmY4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtMjI4LDEwICsyMjgsMTUgQEAg Q09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBs YWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgU2VsZWN0cyB0aGUgZGF0YSBmb3Jt YXQgdG8gYmUgcmVhZCBvciB3cml0dGVuOgogICAgICAgPGxpdGVyYWw+dGV4dDwvbGl0ZXJh bD4sCiAgICAgICA8bGl0ZXJhbD5jc3Y8L2xpdGVyYWw+IChDb21tYSBTZXBhcmF0ZWQgVmFs dWVzKSwKKyAgICAgIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IChKYXZhU2NyaXB0IE9iamVj dCBOb3RhdGlvbiksCiAgICAgICBvciA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+LgogICAg ICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+dGV4dDwvbGl0ZXJhbD4uCiAgICAgICBTZWUg PHhyZWYgbGlua2VuZD0ic3FsLWNvcHktZmlsZS1mb3JtYXRzIi8+IGJlbG93IGZvciBkZXRh aWxzLgogICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVGhlIDxsaXRlcmFsPmpz b248L2xpdGVyYWw+IG9wdGlvbiBpcyBhbGxvd2VkIG9ubHkgaW4KKyAgICAgIDxjb21tYW5k PkNPUFkgVE88L2NvbW1hbmQ+LgorICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgogCkBAIC0yNjYsNyArMjcxLDcgQEAgQ09QWSB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxy ZXBsYWNlYWJsZQogICAgICAgKGxpbmUpIG9mIHRoZSBmaWxlLiAgVGhlIGRlZmF1bHQgaXMg YSB0YWIgY2hhcmFjdGVyIGluIHRleHQgZm9ybWF0LAogICAgICAgYSBjb21tYSBpbiA8bGl0 ZXJhbD5DU1Y8L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgIFRoaXMgbXVzdCBiZSBhIHNpbmds ZSBvbmUtYnl0ZSBjaGFyYWN0ZXIuCi0gICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dl ZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gZm9ybWF0LgorICAgICAg VGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8 L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgPC9w YXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTI4MCw3ICsy ODUsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICBzdHJpbmcgaW4gPGxp dGVyYWw+Q1NWPC9saXRlcmFsPiBmb3JtYXQuIFlvdSBtaWdodCBwcmVmZXIgYW4KICAgICAg IGVtcHR5IHN0cmluZyBldmVuIGluIHRleHQgZm9ybWF0IGZvciBjYXNlcyB3aGVyZSB5b3Ug ZG9uJ3Qgd2FudCB0bwogICAgICAgZGlzdGluZ3Vpc2ggbnVsbHMgZnJvbSBlbXB0eSBzdHJp bmdzLgotICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2luZyA8bGl0 ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IGZvcm1hdC4KKyAgICAgIFRoaXMgb3B0aW9uIGlzIG5v dCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBvciA8bGl0 ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgIDwvcGFyYT4KIAogICAgICA8bm90 ZT4KQEAgLTMwMyw3ICszMDgsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAg ICBpcyBmb3VuZCBpbiB0aGUgaW5wdXQgZmlsZSwgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhl IGNvcnJlc3BvbmRpbmcgY29sdW1uCiAgICAgICB3aWxsIGJlIHVzZWQuCiAgICAgICBUaGlz IG9wdGlvbiBpcyBhbGxvd2VkIG9ubHkgaW4gPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5k PiwgYW5kIG9ubHkgd2hlbgotICAgICAgbm90IHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0 ZXJhbD4gZm9ybWF0LgorICAgICAgbm90IHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJh bD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICA8L3BhcmE+CiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMzMwLDcgKzMzNSw3IEBA IENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVw bGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIDxjb21tYW5kPkNPUFkgRlJPTTwv Y29tbWFuZD4gY29tbWFuZHMuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+Ci0gICAgICBU aGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwv bGl0ZXJhbD4gZm9ybWF0LgorICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hl biB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmpzb248L2xp dGVyYWw+IGZvcm1hdC4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zh cmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCAyZjQ2YmU1MTZmMi4uMjllMjJk OTFlY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTU5Nyw2ICs1OTcsOCBAQCBQcm9jZXNz Q29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCW9wdHNfb3V0LT5mb3JtYXQg PSBDT1BZX0ZPUk1BVF9DU1Y7CiAJCQllbHNlIGlmIChzdHJjbXAoZm10LCAiYmluYXJ5Iikg PT0gMCkKIAkJCQlvcHRzX291dC0+Zm9ybWF0ID0gQ09QWV9GT1JNQVRfQklOQVJZOworCQkJ ZWxzZSBpZiAoc3RyY21wKGZtdCwgImpzb24iKSA9PSAwKQorCQkJCW9wdHNfb3V0LT5mb3Jt YXQgPSBDT1BZX0ZPUk1BVF9KU09OOwogCQkJZWxzZQogCQkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTc1 NiwyMSArNzU4LDMyIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs CiAJICogQ2hlY2sgZm9yIGluY29tcGF0aWJsZSBvcHRpb25zIChtdXN0IGRvIHRoZXNlIHRo cmVlIGJlZm9yZSBpbnNlcnRpbmcKIAkgKiBkZWZhdWx0cykKIAkgKi8KLQlpZiAob3B0c19v dXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRlbGltKQor CWlmIChvcHRzX291dC0+ZGVsaW0gJiYKKwkJKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9G T1JNQVRfQklOQVJZIHx8CisJCSBvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pT T04pKQogCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VS Uk9SKSwKLQkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRp b24sIGUuZy4gT05fRVJST1IgKi8KLQkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBp biBCSU5BUlkgbW9kZSIsICJERUxJTUlURVIiKSkpOworCQkJCWVycmNvZGUoRVJSQ09ERV9T WU5UQVhfRVJST1IpLAorCQkJCW9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklO QVJZCisJCQkJPyBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwg IkRFTElNSVRFUiIpCisJCQkJOiBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpTT04g bW9kZSIsICJERUxJTUlURVIiKSk7CiAKLQlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZ X0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPm51bGxfcHJpbnQpCisJaWYgKG9wdHNfb3V0 LT5udWxsX3ByaW50ICYmCisJCShvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJ TkFSWSB8fAorCQkgb3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OKSkKIAkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0J CQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiTlVMTCIp KSk7CisJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJb3B0c19vdXQt PmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkKKwkJCQk/IGVycm1zZygiY2Fubm90IHNw ZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiTlVMTCIpCisJCQkJOiBlcnJtc2coImNhbm5v dCBzcGVjaWZ5ICVzIGluIEpTT04gbW9kZSIsICJOVUxMIikpOwogCi0JaWYgKG9wdHNfb3V0 LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5kZWZhdWx0X3By aW50KQorCWlmIChvcHRzX291dC0+ZGVmYXVsdF9wcmludCAmJgorCQkob3B0c19vdXQtPmZv cm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgfHwKKwkJIG9wdHNfb3V0LT5mb3JtYXQgPT0g Q09QWV9GT1JNQVRfSlNPTikpCiAJCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAotCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGlu IEJJTkFSWSBtb2RlIiwgIkRFRkFVTFQiKSkpOworCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAorCQkJCW9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZ CisJCQkJPyBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkRF RkFVTFQiKQorCQkJCTogZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09OIG1vZGUi LCAiREVGQVVMVCIpKTsKIAogCS8qIFNldCBkZWZhdWx0cyBmb3Igb21pdHRlZCBvcHRpb25z ICovCiAJaWYgKCFvcHRzX291dC0+ZGVsaW0pCkBAIC04MzYsMTEgKzg0OSwxNSBAQCBQcm9j ZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSBlcnJtc2coIkNPUFkg ZGVsaW1pdGVyIGNhbm5vdCBiZSBcIiVzXCIiLCBvcHRzX291dC0+ZGVsaW0pKSk7CiAKIAkv KiBDaGVjayBoZWFkZXIgKi8KLQlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1B VF9CSU5BUlkgJiYgb3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNF KQorCWlmIChvcHRzX291dC0+aGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFMU0UgJiYK KwkJKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZIHx8CisJCSBvcHRz X291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04pKQogCQllcmVwb3J0KEVSUk9SLAot CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQllcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJLyotIHRyYW5zbGF0b3I6 ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KLQkJ CQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJIRUFERVIi KSkpOworCQkJCW9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZCisJCQkJ PyBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkhFQURFUiIp CisJCQkJOiBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpTT04gbW9kZSIsICJIRUFE RVIiKSk7CiAKIAkvKiBDaGVjayBxdW90ZSAqLwogCWlmIChvcHRzX291dC0+Zm9ybWF0ICE9 IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+cXVvdGUgIT0gTlVMTCkKQEAgLTk0NCw2 ICs5NjEsMTIgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJ CQkgZXJybXNnKCJDT1BZICVzIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiLCAiRlJFRVpFIiwK IAkJCQkJCSJDT1BZIFRPIikpKTsKIAorCS8qIENoZWNrIGpzb24gZm9ybWF0ICovCisJaWYg KG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTiAmJiBpc19mcm9tKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCisJCQkJZXJybXNnKCJDT1BZICVzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yICVzIiwg IkZPUk1BVCBKU09OIiwgIkNPUFkgRlJPTSIpKTsKKwogCWlmIChvcHRzX291dC0+ZGVmYXVs dF9wcmludCkKIAl7CiAJCWlmICghaXNfZnJvbSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5k ZXggYjBlZTkxZmM5YzEuLmZmZTIyNjhmYmIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpA QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci90dXB0YWJs ZS5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgog I2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIK QEAgLTMzLDYgKzM0LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2ZkLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0aWxz L2pzb24uaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgpAQCAtODUsNiArODcsMTMg QEAgdHlwZWRlZiBzdHJ1Y3QgQ29weVRvU3RhdGVEYXRhCiAJTGlzdAkgICAqYXR0bnVtbGlz dDsJCS8qIGludGVnZXIgbGlzdCBvZiBhdHRudW1zIHRvIGNvcHkgKi8KIAljaGFyCSAgICpm aWxlbmFtZTsJCS8qIGZpbGVuYW1lLCBvciBOVUxMIGZvciBTVERPVVQgKi8KIAlib29sCQlp c19wcm9ncmFtOwkJLyogaXMgJ2ZpbGVuYW1lJyBhIHByb2dyYW0gdG8gcG9wZW4/ICovCisJ U3RyaW5nSW5mbwlqc29uX2J1ZjsJCS8qIHJldXNhYmxlIGJ1ZmZlciBmb3IgSlNPTiBvdXRw dXQsCisJCQkJCQkJCSAqIGluaXRpYWxpemVkIGluIEJlZ2luQ29weVRvICovCisJVHVwbGVE ZXNjCXR1cERlc2M7CQkvKiBEZXNjcmlwdG9yIGZvciBKU09OIG91dHB1dDsgZm9yIGEgY29s dW1uCisJCQkJCQkJCSAqIGxpc3QgdGhpcyBpcyBhIHByb2plY3RlZCBkZXNjcmlwdG9yICov CisJRGF0dW0JICAgKmpzb25fcHJvanZhbHVlczsJLyogcHJlLWFsbG9jYXRlZCBwcm9qZWN0 aW9uIHZhbHVlcywgb3IKKwkJCQkJCQkJCSAqIE5VTEwgKi8KKwlib29sCSAgICpqc29uX3By b2pudWxsczsgLyogcHJlLWFsbG9jYXRlZCBwcm9qZWN0aW9uIG51bGxzLCBvciBOVUxMICov CiAJY29weV9kYXRhX2Rlc3RfY2IgZGF0YV9kZXN0X2NiOyAvKiBmdW5jdGlvbiBmb3Igd3Jp dGluZyBkYXRhICovCiAKIAlDb3B5Rm9ybWF0T3B0aW9ucyBvcHRzOwpAQCAtMTMxLDYgKzE0 MCw3IEBAIHN0YXRpYyB2b2lkIENvcHlUb0NTVk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUs IFR1cGxlVGFibGVTbG90ICpzbG90KTsKIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlT25l Um93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJ CSBib29sIGlzX2Nzdik7CiBzdGF0aWMgdm9pZCBDb3B5VG9UZXh0TGlrZUVuZChDb3B5VG9T dGF0ZSBjc3RhdGUpOworc3RhdGljIHZvaWQgQ29weVRvSnNvbk9uZVJvdyhDb3B5VG9TdGF0 ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKIHN0YXRpYyB2b2lkIENvcHlUb0Jp bmFyeVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2MpOwogc3Rh dGljIHZvaWQgQ29weVRvQmluYXJ5T3V0RnVuYyhDb3B5VG9TdGF0ZSBjc3RhdGUsIE9pZCBh dHR0eXBpZCwgRm1nckluZm8gKmZpbmZvKTsKIHN0YXRpYyB2b2lkIENvcHlUb0JpbmFyeU9u ZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKQEAgLTE0 OSw5ICsxNTksNiBAQCBzdGF0aWMgdm9pZCBDb3B5U2VuZEludDE2KENvcHlUb1N0YXRlIGNz dGF0ZSwgaW50MTYgdmFsKTsKIAogLyoKICAqIENPUFkgVE8gcm91dGluZXMgZm9yIGJ1aWx0 LWluIGZvcm1hdHMuCi0gKgotICogQ1NWIGFuZCB0ZXh0IGZvcm1hdHMgc2hhcmUgdGhlIHNh bWUgVGV4dExpa2Ugcm91dGluZXMgZXhjZXB0IGZvciB0aGUKLSAqIG9uZS1yb3cgY2FsbGJh Y2suCiAgKi8KIAogLyogdGV4dCBmb3JtYXQgKi8KQEAgLTE3MCw2ICsxNzcsMTQgQEAgc3Rh dGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUNTViA9IHsKIAkuQ29weVRv RW5kID0gQ29weVRvVGV4dExpa2VFbmQsCiB9OwogCisvKiBqc29uIGZvcm1hdCAqLworc3Rh dGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUpzb24gPSB7CisJLkNvcHlU b1N0YXJ0ID0gQ29weVRvVGV4dExpa2VTdGFydCwKKwkuQ29weVRvT3V0RnVuYyA9IENvcHlU b1RleHRMaWtlT3V0RnVuYywKKwkuQ29weVRvT25lUm93ID0gQ29weVRvSnNvbk9uZVJvdywK KwkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCit9OworCiAvKiBiaW5hcnkgZm9y bWF0ICovCiBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lQmluYXJ5 ID0gewogCS5Db3B5VG9TdGFydCA9IENvcHlUb0JpbmFyeVN0YXJ0LApAQCAtMTg2LDEyICsy MDEsMTQgQEAgQ29weVRvR2V0Um91dGluZShjb25zdCBDb3B5Rm9ybWF0T3B0aW9ucyAqb3B0 cykKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQ1NWOwogCWVsc2UgaWYgKG9wdHMtPmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJCXJldHVybiAmQ29weVRvUm91dGluZUJpbmFy eTsKKwllbHNlIGlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJcmV0 dXJuICZDb3B5VG9Sb3V0aW5lSnNvbjsKIAogCS8qIGRlZmF1bHQgaXMgdGV4dCAqLwogCXJl dHVybiAmQ29weVRvUm91dGluZVRleHQ7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRo ZSBzdGFydCBjYWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NWIGZvcm1hdHMgKi8KKy8qIEltcGxl bWVudGF0aW9uIG9mIHRoZSBzdGFydCBjYWxsYmFjayBmb3IgdGV4dCwgQ1NWLCBhbmQganNv biBmb3JtYXRzICovCiBzdGF0aWMgdm9pZAogQ29weVRvVGV4dExpa2VTdGFydChDb3B5VG9T dGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogewpAQCAtMjEwLDYgKzIyNyw4IEBA IENvcHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVw RGVzYykKIAkJTGlzdENlbGwgICAqY3VyOwogCQlib29sCQloZHJfZGVsaW0gPSBmYWxzZTsK IAorCQlBc3NlcnQoY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OKTsK KwogCQlmb3JlYWNoKGN1ciwgY3N0YXRlLT5hdHRudW1saXN0KQogCQl7CiAJCQlpbnQJCQlh dHRudW0gPSBsZmlyc3RfaW50KGN1cik7CkBAIC0yMzIsNyArMjUxLDcgQEAgQ29weVRvVGV4 dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogfQog CiAvKgotICogSW1wbGVtZW50YXRpb24gb2YgdGhlIG91dGZ1bmMgY2FsbGJhY2sgZm9yIHRl eHQgYW5kIENTViBmb3JtYXRzLiBBc3NpZ24KKyAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBv dXRmdW5jIGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMuIEFzc2ln bgogICogdGhlIG91dHB1dCBmdW5jdGlvbiBkYXRhIHRvIHRoZSBnaXZlbiAqZmluZm8uCiAg Ki8KIHN0YXRpYyB2b2lkCkBAIC0zMDUsMTMgKzMyNCw3OSBAQCBDb3B5VG9UZXh0TGlrZU9u ZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsCiAJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNz dGF0ZSk7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sgZm9y IHRleHQgYW5kIENTViBmb3JtYXRzICovCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZW5k IGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMgKi8KIHN0YXRpYyB2 b2lkCiBDb3B5VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJLyogTm90 aGluZyB0byBkbyBoZXJlICovCiB9CiAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHBlci1yb3cg Y2FsbGJhY2sgZm9yIGpzb24gZm9ybWF0ICovCitzdGF0aWMgdm9pZAorQ29weVRvSnNvbk9u ZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQoreworCURh dHVtCQlyb3dkYXRhOworCisJcmVzZXRTdHJpbmdJbmZvKGNzdGF0ZS0+anNvbl9idWYpOwor CisJaWYgKGNzdGF0ZS0+anNvbl9wcm9qdmFsdWVzICE9IE5VTEwpCisJeworCQkvKgorCQkg KiBDb2x1bW4gbGlzdCBjYXNlOiBwcm9qZWN0IHNlbGVjdGVkIGNvbHVtbiB2YWx1ZXMgaW50 byBzZXF1ZW50aWFsCisJCSAqIHBvc2l0aW9ucyBtYXRjaGluZyB0aGUgY3VzdG9tIFR1cGxl RGVzYywgdGhlbiBmb3JtIGEgbmV3IHR1cGxlLgorCQkgKi8KKwkJSGVhcFR1cGxlCXR1cDsK KwkJaW50CQkJaSA9IDA7CisKKwkJZm9yZWFjaF9pbnQoYXR0bnVtLCBjc3RhdGUtPmF0dG51 bWxpc3QpCisJCXsKKwkJCWNzdGF0ZS0+anNvbl9wcm9qdmFsdWVzW2ldID0gc2xvdC0+dHRz X3ZhbHVlc1thdHRudW0gLSAxXTsKKwkJCWNzdGF0ZS0+anNvbl9wcm9qbnVsbHNbaV0gPSBz bG90LT50dHNfaXNudWxsW2F0dG51bSAtIDFdOworCQkJaSsrOworCQl9CisKKwkJdHVwID0g aGVhcF9mb3JtX3R1cGxlKGNzdGF0ZS0+dHVwRGVzYywKKwkJCQkJCQkgIGNzdGF0ZS0+anNv bl9wcm9qdmFsdWVzLAorCQkJCQkJCSAgY3N0YXRlLT5qc29uX3Byb2pudWxscyk7CisKKwkJ LyoKKwkJICogaGVhcF9mb3JtX3R1cGxlIGFscmVhZHkgc3RhbXBzIHRoZSBkYXR1bS1sZW5n dGgsIHR5cGUtaWQsIGFuZAorCQkgKiB0eXBlLW1vZCBmaWVsZHMgb24gdF9kYXRhLCBzbyB3 ZSBjYW4gdXNlIGl0IGRpcmVjdGx5IGFzIGEgY29tcG9zaXRlCisJCSAqIERhdHVtIHdpdGhv dXQgdGhlIGV4dHJhIHBhbGxvY21lbWNweSB0aGF0IGhlYXBfY29weV90dXBsZV9hc19kYXR1 bQorCQkgKiB3b3VsZCBkby4gIEFueSBUT0FTVCBwb2ludGVycyBpbiB0aGUgcHJvamVjdGVk IHZhbHVlcyB3aWxsIGJlCisJCSAqIGRldG9hc3RlZCBieSB0aGUgcGVyLWNvbHVtbiBvdXRw dXQgZnVuY3Rpb25zIGNhbGxlZCBmcm9tCisJCSAqIGNvbXBvc2l0ZV90b19qc29uLgorCQkg Ki8KKwkJcm93ZGF0YSA9IEhlYXBUdXBsZUdldERhdHVtKHR1cCk7CisJfQorCWVsc2UKKwl7 CisJCS8qCisJCSAqIEZ1bGwgdGFibGUgb3IgcXVlcnkgd2l0aG91dCBjb2x1bW4gbGlzdC4g IEZvciBxdWVyaWVzLCB0aGUgc2xvdCdzCisJCSAqIFR1cGxlRGVzYyBtYXkgY2FycnkgUkVD T1JET0lELCB3aGljaCBpcyBub3QgcmVnaXN0ZXJlZCBpbiB0aGUgdHlwZQorCQkgKiBjYWNo ZSBhbmQgd291bGQgY2F1c2UgY29tcG9zaXRlX3RvX2pzb24ncyBsb29rdXBfcm93dHlwZV90 dXBkZXNjCisJCSAqIGNhbGwgdG8gZmFpbC4gIEJ1aWxkIGEgSGVhcFR1cGxlIHN0YW1wZWQg d2l0aCB0aGUgYmxlc3NlZAorCQkgKiBkZXNjcmlwdG9yIHNvIHRoZSB0eXBlIGNhbiBiZSBs b29rZWQgdXAgY29ycmVjdGx5LgorCQkgKi8KKwkJaWYgKCFjc3RhdGUtPnJlbCAmJiBzbG90 LT50dHNfdHVwbGVEZXNjcmlwdG9yLT50ZHR5cGVpZCA9PSBSRUNPUkRPSUQpCisJCXsKKwkJ CUhlYXBUdXBsZQl0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoY3N0YXRlLT50dXBEZXNjLAorCQkJ CQkJCQkJCQkgIHNsb3QtPnR0c192YWx1ZXMsCisJCQkJCQkJCQkJCSAgc2xvdC0+dHRzX2lz bnVsbCk7CisKKwkJCXJvd2RhdGEgPSBIZWFwVHVwbGVHZXREYXR1bSh0dXApOworCQl9CisJ CWVsc2UKKwkJCXJvd2RhdGEgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlRGF0dW0oc2xvdCk7 CisJfQorCisJY29tcG9zaXRlX3RvX2pzb24ocm93ZGF0YSwgY3N0YXRlLT5qc29uX2J1Ziwg ZmFsc2UpOworCisJQ29weVNlbmREYXRhKGNzdGF0ZSwgY3N0YXRlLT5qc29uX2J1Zi0+ZGF0 YSwgY3N0YXRlLT5qc29uX2J1Zi0+bGVuKTsKKworCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJv dyhjc3RhdGUpOworfQorCiAvKgogICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YXJ0IGNh bGxiYWNrIGZvciBiaW5hcnkgZm9ybWF0LiBTZW5kIGEgaGVhZGVyCiAgKiBmb3IgYSBiaW5h cnkgY29weS4KQEAgLTQwMyw5ICs0ODgsMjMgQEAgU2VuZENvcHlCZWdpbihDb3B5VG9TdGF0 ZSBjc3RhdGUpCiAKIAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weU91dFJlc3Bv bnNlKTsKIAlwcV9zZW5kYnl0ZSgmYnVmLCBmb3JtYXQpOwkvKiBvdmVyYWxsIGZvcm1hdCAq LwotCXBxX3NlbmRpbnQxNigmYnVmLCBuYXR0cyk7Ci0JZm9yIChpID0gMDsgaSA8IG5hdHRz OyBpKyspCi0JCXBxX3NlbmRpbnQxNigmYnVmLCBmb3JtYXQpOyAvKiBwZXItY29sdW1uIGZv cm1hdHMgKi8KKwlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09O KQorCXsKKwkJcHFfc2VuZGludDE2KCZidWYsIG5hdHRzKTsKKwkJZm9yIChpID0gMDsgaSA8 IG5hdHRzOyBpKyspCisJCQlwcV9zZW5kaW50MTYoJmJ1ZiwgZm9ybWF0KTsgLyogcGVyLWNv bHVtbiBmb3JtYXRzICovCisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIEZvciBKU09OIGZv cm1hdCwgcmVwb3J0IG9uZSB0ZXh0LWZvcm1hdCBjb2x1bW4uICBFYWNoIENvcHlEYXRhCisJ CSAqIG1lc3NhZ2UgY29udGFpbnMgb25lIGNvbXBsZXRlIEpTT04gb2JqZWN0LCBub3QgaW5k aXZpZHVhbCBjb2x1bW4KKwkJICogdmFsdWVzLCBzbyB0aGUgcGVyLWNvbHVtbiBjb3VudCBp cyBhbHdheXMgMS4KKwkJICovCisJCXBxX3NlbmRpbnQxNigmYnVmLCAxKTsKKwkJcHFfc2Vu ZGludDE2KCZidWYsIDApOworCX0KKwogCXBxX2VuZG1lc3NhZ2UoJmJ1Zik7CiAJY3N0YXRl LT5jb3B5X2Rlc3QgPSBDT1BZX0ZST05URU5EOwogfQpAQCAtNTA3LDcgKzYwNiw3IEBAIENv cHlTZW5kRW5kT2ZSb3coQ29weVRvU3RhdGUgY3N0YXRlKQogfQogCiAvKgotICogV3JhcHBl ciBmdW5jdGlvbiBvZiBDb3B5U2VuZEVuZE9mUm93IGZvciB0ZXh0IGFuZCBDU1YgZm9ybWF0 cy4gU2VuZHMgdGhlCisgKiBXcmFwcGVyIGZ1bmN0aW9uIG9mIENvcHlTZW5kRW5kT2ZSb3cg Zm9yIHRleHQsIENTViwgYW5kIGpzb24gZm9ybWF0cy4gU2VuZHMgdGhlCiAgKiBsaW5lIHRl cm1pbmF0aW9uIGFuZCBkbyBjb21tb24gYXBwcm9wcmlhdGUgdGhpbmdzIGZvciB0aGUgZW5k IG9mIHJvdy4KICAqLwogc3RhdGljIGlubGluZSB2b2lkCkBAIC03NTAsNiArODQ5LDcgQEAg QmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJCXR1cERlc2MgPSBSZWxhdGlv bkdldERlc2NyKGNzdGF0ZS0+cmVsKTsKIAkJY3N0YXRlLT5wYXJ0aXRpb25zID0gY2hpbGRy ZW47CisJCWNzdGF0ZS0+dHVwRGVzYyA9IHR1cERlc2M7CiAJfQogCWVsc2UKIAl7CkBAIC04 ODYsMTEgKzk4Niw1MyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCUV4 ZWN1dG9yU3RhcnQoY3N0YXRlLT5xdWVyeURlc2MsIDApOwogCiAJCXR1cERlc2MgPSBjc3Rh dGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYzsKKwkJdHVwRGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1 cERlc2MpOworCQljc3RhdGUtPnR1cERlc2MgPSB0dXBEZXNjOwogCX0KIAogCS8qIEdlbmVy YXRlIG9yIGNvbnZlcnQgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvIHByb2Nlc3MgKi8KIAljc3Rh dGUtPmF0dG51bWxpc3QgPSBDb3B5R2V0QXR0bnVtcyh0dXBEZXNjLCBjc3RhdGUtPnJlbCwg YXR0bmFtZWxpc3QpOwogCisJLyogU2V0IHVwIEpTT04tc3BlY2lmaWMgc3RhdGUgKi8KKwlp ZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OKQorCXsKKwkJY3N0 YXRlLT5qc29uX2J1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CisKKwkJaWYgKGF0dG5hbWVsaXN0 ICE9IE5JTCAmJiByZWwpCisJCXsKKwkJCWludAkJCW5hdHRzID0gbGlzdF9sZW5ndGgoY3N0 YXRlLT5hdHRudW1saXN0KTsKKwkJCVR1cGxlRGVzYwlyZXN1bHREZXNjOworCisJCQkvKgor CQkJICogQnVpbGQgYSBUdXBsZURlc2MgZGVzY3JpYmluZyBvbmx5IHRoZSBzZWxlY3RlZCBj b2x1bW5zIHNvIHRoYXQKKwkJCSAqIGNvbXBvc2l0ZV90b19qc29uKCkgZW1pdHMgdGhlIHJp Z2h0IGNvbHVtbiBuYW1lcyBhbmQgdHlwZXMuCisJCQkgKi8KKwkJCXJlc3VsdERlc2MgPSBD cmVhdGVUZW1wbGF0ZVR1cGxlRGVzYyhuYXR0cyk7CisKKwkJCWZvcmVhY2hfaW50KGF0dG51 bSwgY3N0YXRlLT5hdHRudW1saXN0KQorCQkJeworCQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0 dHIgPSBUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51bSAtIDEpOworCisJCQkJVHVwbGVE ZXNjSW5pdEVudHJ5KHJlc3VsdERlc2MsCisJCQkJCQkJCSAgIGZvcmVhY2hfY3VycmVudF9p bmRleChhdHRudW0pICsgMSwKKwkJCQkJCQkJICAgTmFtZVN0cihhdHRyLT5hdHRuYW1lKSwK KwkJCQkJCQkJICAgYXR0ci0+YXR0dHlwaWQsCisJCQkJCQkJCSAgIGF0dHItPmF0dHR5cG1v ZCwKKwkJCQkJCQkJICAgYXR0ci0+YXR0bmRpbXMpOworCQkJfQorCisJCQlUdXBsZURlc2NG aW5hbGl6ZShyZXN1bHREZXNjKTsKKwkJCWNzdGF0ZS0+dHVwRGVzYyA9IEJsZXNzVHVwbGVE ZXNjKHJlc3VsdERlc2MpOworCisJCQkvKgorCQkJICogUHJlLWFsbG9jYXRlIGFycmF5cyBm b3IgcHJvamVjdGluZyBzZWxlY3RlZCBjb2x1bW4gdmFsdWVzCisJCQkgKiBpbnRvIHNlcXVl bnRpYWwgcG9zaXRpb25zIG1hdGNoaW5nIHRoZSBjdXN0b20gVHVwbGVEZXNjLgorCQkJICov CisJCQljc3RhdGUtPmpzb25fcHJvanZhbHVlcyA9IHBhbGxvY19hcnJheShEYXR1bSwgbmF0 dHMpOworCQkJY3N0YXRlLT5qc29uX3Byb2pudWxscyA9IHBhbGxvY19hcnJheShib29sLCBu YXR0cyk7CisJCX0KKwl9CisKIAludW1fcGh5c19hdHRycyA9IHR1cERlc2MtPm5hdHRzOwog CiAJLyogQ29udmVydCBGT1JDRV9RVU9URSBuYW1lIGxpc3QgdG8gcGVyLWNvbHVtbiBmbGFn cywgY2hlY2sgdmFsaWRpdHkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGYwMWY1NzM0ZmU5Li5j MDFiOWZjMzk5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0zNjE3LDYgKzM2MTcsMTAgQEAgY29w eV9vcHRfaXRlbToKIAkJCQl7CiAJCQkJCSQkID0gbWFrZURlZkVsZW0oImZvcm1hdCIsIChO b2RlICopIG1ha2VTdHJpbmcoImNzdiIpLCBAMSk7CiAJCQkJfQorCQkJfCBKU09OCisJCQkJ eworCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJmb3JtYXQiLCAoTm9kZSAqKSBtYWtlU3RyaW5n KCJqc29uIiksIEAxKTsKKwkJCQl9CiAJCQl8IEhFQURFUl9QCiAJCQkJewogCQkJCQkkJCA9 IG1ha2VEZWZFbGVtKCJoZWFkZXIiLCAoTm9kZSAqKSBtYWtlQm9vbGVhbih0cnVlKSwgQDEp OwpAQCAtMzY5OSw2ICszNzAzLDEwIEBAIGNvcHlfZ2VuZXJpY19vcHRfZWxlbToKIAkJCQl7 CiAJCQkJCSQkID0gbWFrZURlZkVsZW0oJDEsICQyLCBAMSk7CiAJCQkJfQorCQkJfCBGT1JN QVRfTEEgY29weV9nZW5lcmljX29wdF9hcmcKKwkJCQl7CisJCQkJCSQkID0gbWFrZURlZkVs ZW0oImZvcm1hdCIsICQyLCBAMSk7CisJCQkJfQogCQk7CiAKIGNvcHlfZ2VuZXJpY19vcHRf YXJnOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKaW5kZXggMGIxNjEzOTg0NjUuLmY2MDlkN2I5NDE3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKQEAgLTg2LDggKzg2LDYgQEAgdHlwZWRlZiBzdHJ1 Y3QgSnNvbkFnZ1N0YXRlCiAJSnNvblVuaXF1ZUJ1aWxkZXJTdGF0ZSB1bmlxdWVfY2hlY2s7 CiB9IEpzb25BZ2dTdGF0ZTsKIAotc3RhdGljIHZvaWQgY29tcG9zaXRlX3RvX2pzb24oRGF0 dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwKLQkJCQkJCQkgIGJvb2wgdXNlX2xp bmVfZmVlZHMpOwogc3RhdGljIHZvaWQgYXJyYXlfZGltX3RvX2pzb24oU3RyaW5nSW5mbyBy ZXN1bHQsIGludCBkaW0sIGludCBuZGltcywgaW50ICpkaW1zLAogCQkJCQkJCSAgY29uc3Qg RGF0dW0gKnZhbHMsIGNvbnN0IGJvb2wgKm51bGxzLCBpbnQgKnZhbGNvdW50LAogCQkJCQkJ CSAgSnNvblR5cGVDYXRlZ29yeSB0Y2F0ZWdvcnksIE9pZCBvdXRmdW5jb2lkLApAQCAtNTE3 LDggKzUxNSw5IEBAIGFycmF5X3RvX2pzb25faW50ZXJuYWwoRGF0dW0gYXJyYXksIFN0cmlu Z0luZm8gcmVzdWx0LCBib29sIHVzZV9saW5lX2ZlZWRzKQogCiAvKgogICogVHVybiBhIGNv bXBvc2l0ZSAvIHJlY29yZCBpbnRvIEpTT04uCisgKiBFeHBvcnRlZCBzbyBDT1BZIFRPIGNh biB1c2UgaXQuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBjb21wb3NpdGVfdG9fanNvbihE YXR1bSBjb21wb3NpdGUsIFN0cmluZ0luZm8gcmVzdWx0LCBib29sIHVzZV9saW5lX2ZlZWRz KQogewogCUhlYXBUdXBsZUhlYWRlciB0ZDsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRl eCAxOTlmYzY0ZGRmNS4uYWMzNmY0NTkxZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMK QEAgLTM0MjUsNyArMzQyNSw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJu X2lkLAogCiAJCQkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST018VE8gZmlsZW5hbWUgV0lU SCAoRk9STUFUICovCiAJCQllbHNlIGlmIChUYWlsTWF0Y2hlcygiRk9STUFUIikpCi0JCQkJ Q09NUExFVEVfV0lUSCgiYmluYXJ5IiwgImNzdiIsICJ0ZXh0Iik7CisJCQkJQ09NUExFVEVf V0lUSCgiYmluYXJ5IiwgImNzdiIsICJ0ZXh0IiwgImpzb24iKTsKIAogCQkJLyogQ29tcGxl dGUgQ09QWSA8c3RoPiBGUk9NfFRPIGZpbGVuYW1lIFdJVEggKEZSRUVaRSAqLwogCQkJZWxz ZSBpZiAoVGFpbE1hdGNoZXMoIkZSRUVaRSIpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCmluZGV4IDI0 MzBmYjBiMmU1Li4yYjViZWY2NzM4ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaApAQCAtNTcsNiAr NTcsNyBAQCB0eXBlZGVmIGVudW0gQ29weUZvcm1hdAogCUNPUFlfRk9STUFUX1RFWFQgPSAw LAogCUNPUFlfRk9STUFUX0JJTkFSWSwKIAlDT1BZX0ZPUk1BVF9DU1YsCisJQ09QWV9GT1JN QVRfSlNPTiwKIH0gQ29weUZvcm1hdDsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL2pzb24uaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaAppbmRleCBmOGNjNTJi MWU3OC4uMmY0YmU0MDUxOGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24u aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9qc29uLmgKQEAgLTE3LDYgKzE3LDggQEAKICNp bmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogCiAvKiBmdW5jdGlvbnMgaW4ganNvbi5jICov CitleHRlcm4gdm9pZCBjb21wb3NpdGVfdG9fanNvbihEYXR1bSBjb21wb3NpdGUsIFN0cmlu Z0luZm8gcmVzdWx0LAorCQkJCQkJCSAgYm9vbCB1c2VfbGluZV9mZWVkcyk7CiBleHRlcm4g dm9pZCBlc2NhcGVfanNvbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hhciAqc3RyKTsKIGV4 dGVybiB2b2lkIGVzY2FwZV9qc29uX3dpdGhfbGVuKFN0cmluZ0luZm8gYnVmLCBjb25zdCBj aGFyICpzdHIsIGludCBsZW4pOwogZXh0ZXJuIHZvaWQgZXNjYXBlX2pzb25fdGV4dChTdHJp bmdJbmZvIGJ1ZiwgY29uc3QgdGV4dCAqdHh0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv cHkub3V0CmluZGV4IGQwZDU2M2UwZmE4Li43ZjJkMmUwNjVmNiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NvcHkub3V0CkBAIC03Myw2ICs3MywxNTIgQEAgY29weSBjb3B5dGVzdDMg dG8gc3Rkb3V0IGNzdiBoZWFkZXI7CiBjMSwiY29sIHdpdGggLCBjb21tYSIsImNvbCB3aXRo ICIiIHF1b3RlIgogMSxhLDEKIDIsYiwyCistLS0gdGVzdCBjb3B5aW5nIGluIEpTT04gbW9k ZSB3aXRoIHZhcmlvdXMgc3R5bGVzCitjb3B5IChzZWxlY3QgMSB1bmlvbiBhbGwgc2VsZWN0 IDIpIHRvIHN0ZG91dCB3aXRoIChmb3JtYXQganNvbik7Cit7Ij9jb2x1bW4/IjoxfQoreyI/ Y29sdW1uPyI6Mn0KK2NvcHkgKHNlbGVjdCAxIGFzIGZvbyB1bmlvbiBhbGwgc2VsZWN0IDIp IHRvIHN0ZG91dCB3aXRoIChmb3JtYXQganNvbik7Cit7ImZvbyI6MX0KK3siZm9vIjoyfQor Y29weSAodmFsdWVzICgxKSwgKDIpKSBUTyBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24pOwor eyJjb2x1bW4xIjoxfQoreyJjb2x1bW4xIjoyfQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQg anNvbjsKK3sic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJjXHJcbmRlZiIsImZpbGxlciI6MX0K K3sic3R5bGUiOiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQoreyJzdHls ZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KK3sic3R5bGUiOiJlc2Nc XGFwZSIsInRlc3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVyIjo0fQorY29weSBjb3B5 dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKK3sic3R5bGUiOiJET1MiLCJ0ZXN0Ijoi YWJjXHJcbmRlZiIsImZpbGxlciI6MX0KK3sic3R5bGUiOiJVbml4IiwidGVzdCI6ImFiY1xu ZGVmIiwiZmlsbGVyIjoyfQoreyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZp bGxlciI6M30KK3sic3R5bGUiOiJlc2NcXGFwZSIsInRlc3QiOiJhXFxyXFxcclxcXG5cXG5i IiwiZmlsbGVyIjo0fQorY29weSAoc2VsZWN0ICogZnJvbSBjb3B5dGVzdCkgdG8gc3Rkb3V0 IChmb3JtYXQganNvbik7Cit7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJm aWxsZXIiOjF9Cit7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6 Mn0KK3sic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9Cit7InN0 eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0K Ky0tIGFsbCBvZiB0aGUgZm9sbG93aW5nIHNob3VsZCB5aWVsZCBlcnJvcgorY29weSBjb3B5 dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWxpbWl0ZXIgJ3wnKTsKK0VSUk9SOiAg Y2Fubm90IHNwZWNpZnkgREVMSU1JVEVSIGluIEpTT04gbW9kZQorY29weSBjb3B5dGVzdCB0 byBzdGRvdXQgKGZvcm1hdCBqc29uLCBudWxsICdcTicpOworRVJST1I6ICBjYW5ub3Qgc3Bl Y2lmeSBOVUxMIGluIEpTT04gbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1h dCBqc29uLCBkZWZhdWx0ICd8Jyk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IERFRkFVTFQg aW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGhl YWRlcik7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IEhFQURFUiBpbiBKU09OIG1vZGUKK2Nv cHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgaGVhZGVyIDEpOworRVJST1I6 ICBjYW5ub3Qgc3BlY2lmeSBIRUFERVIgaW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRv IHN0ZG91dCAoZm9ybWF0IGpzb24sIHF1b3RlICciJyk7CitFUlJPUjogIENPUFkgUVVPVEUg cmVxdWlyZXMgQ1NWIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNv biwgZXNjYXBlICciJyk7CitFUlJPUjogIENPUFkgRVNDQVBFIHJlcXVpcmVzIENTViBtb2Rl Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX3F1b3RlICop OworRVJST1I6ICBDT1BZIEZPUkNFX1FVT1RFIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNv cHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX25vdF9udWxsICopOworRVJS T1I6ICBDT1BZIEZPUkNFX05PVF9OVUxMIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0 ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX251bGwgKik7CitFUlJPUjogIENP UFkgRk9SQ0VfTlVMTCByZXF1aXJlcyBDU1YgbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRv dXQgKGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOworRVJST1I6ICBDT1BZIE9OX0VS Uk9SIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBUTworTElORSAxOiBjb3B5IGNvcHl0ZXN0 IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG9uX2Vycm9yIGlnbm9yZSk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorY29weSBjb3B5dGVzdCB0 byBzdGRvdXQgKGZvcm1hdCBqc29uLCByZWplY3RfbGltaXQgMSk7CitFUlJPUjogIENPUFkg UkVKRUNUX0xJTUlUIHJlcXVpcmVzIE9OX0VSUk9SIHRvIGJlIHNldCB0byBJR05PUkUKK2Nv cHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3JtYXQganNvbik7CitFUlJPUjogIENPUFkgRk9S TUFUIEpTT04gaXMgbm90IHN1cHBvcnRlZCBmb3IgQ09QWSBGUk9NCistLSBhbGwgb2YgdGhl IGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgorLS0gY29sdW1uIGxpc3Qgd2l0aCBqc29uIGZv cm1hdAorY29weSBjb3B5dGVzdCAoc3R5bGUsIHRlc3QsIGZpbGxlcikgdG8gc3Rkb3V0IChm b3JtYXQganNvbik7Cit7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxs ZXIiOjF9Cit7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0K K3sic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9Cit7InN0eWxl IjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KKy0t IGNvbHVtbiBsaXN0IHdpdGggZGl2ZXJzZSBkYXRhIHR5cGVzCitjcmVhdGUgdGVtcCB0YWJs ZSBjb3B5anNvbnRlc3RfdHlwZXMgKAorICAgIGlkIGludCwKKyAgICBqcyBqc29uLAorICAg IGpzYiBqc29uYiwKKyAgICBhcnIgaW50W10sCisgICAgbiBudW1lcmljKDEwLDIpLAorICAg IGIgYm9vbGVhbiwKKyAgICB0cyB0aW1lc3RhbXAsCisgICAgdCB0ZXh0KTsKK2luc2VydCBp bnRvIGNvcHlqc29udGVzdF90eXBlcyB2YWx1ZXMKKygxLCAneyJhIjoxfScsICd7ImIiOjJ9 JywgJ3sxLDIsM30nLCAzLjE0LCB0cnVlLAorICcyMDI0LTAxLTE1IDEwOjMwOjAwJywgJ2hl bGxvJyksCisoMiwgJ1sxLG51bGwsIngiXScsICd7Im5lc3RlZCI6eyJrIjoidiJ9fScsICd7 NCw1fScsIC05OS45OSwgZmFsc2UsCisgJzIwMjQtMDYtMzAgMjM6NTk6NTknLCAnd29ybGQn KSwKKygzLCAnbnVsbCcsICdudWxsJywgJ3t9JywgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCk7 CistLSBmdWxsIHRhYmxlCitjb3B5IGNvcHlqc29udGVzdF90eXBlcyB0byBzdGRvdXQgKGZv cm1hdCBqc29uKTsKK3siaWQiOjEsImpzIjp7ImEiOjF9LCJqc2IiOnsiYiI6IDJ9LCJhcnIi OlsxLDIsM10sIm4iOjMuMTQsImIiOnRydWUsInRzIjoiMjAyNC0wMS0xNVQxMDozMDowMCIs InQiOiJoZWxsbyJ9Cit7ImlkIjoyLCJqcyI6WzEsbnVsbCwieCJdLCJqc2IiOnsibmVzdGVk IjogeyJrIjogInYifX0sImFyciI6WzQsNV0sIm4iOi05OS45OSwiYiI6ZmFsc2UsInRzIjoi MjAyNC0wNi0zMFQyMzo1OTo1OSIsInQiOiJ3b3JsZCJ9Cit7ImlkIjozLCJqcyI6bnVsbCwi anNiIjpudWxsLCJhcnIiOltdLCJuIjpudWxsLCJiIjpudWxsLCJ0cyI6bnVsbCwidCI6bnVs bH0KKy0tIGNvbHVtbiBzdWJzZXRzIGV4ZXJjaXNpbmcgZWFjaCB0eXBlCitjb3B5IGNvcHlq c29udGVzdF90eXBlcyAoaWQsIGpzLCBqc2IpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOwor eyJpZCI6MSwianMiOnsiYSI6MX0sImpzYiI6eyJiIjogMn19Cit7ImlkIjoyLCJqcyI6WzEs bnVsbCwieCJdLCJqc2IiOnsibmVzdGVkIjogeyJrIjogInYifX19Cit7ImlkIjozLCJqcyI6 bnVsbCwianNiIjpudWxsfQorY29weSBjb3B5anNvbnRlc3RfdHlwZXMgKGlkLCBhcnIsIG4s IGIpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworeyJpZCI6MSwiYXJyIjpbMSwyLDNdLCJu IjozLjE0LCJiIjp0cnVlfQoreyJpZCI6MiwiYXJyIjpbNCw1XSwibiI6LTk5Ljk5LCJiIjpm YWxzZX0KK3siaWQiOjMsImFyciI6W10sIm4iOm51bGwsImIiOm51bGx9Citjb3B5IGNvcHlq c29udGVzdF90eXBlcyAoanNiLCB0KSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKK3sianNi Ijp7ImIiOiAyfSwidCI6ImhlbGxvIn0KK3sianNiIjp7Im5lc3RlZCI6IHsiayI6ICJ2In19 LCJ0Ijoid29ybGQifQoreyJqc2IiOm51bGwsInQiOm51bGx9Citjb3B5IGNvcHlqc29udGVz dF90eXBlcyAoaWQsIHRzKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKK3siaWQiOjEsInRz IjoiMjAyNC0wMS0xNVQxMDozMDowMCJ9Cit7ImlkIjoyLCJ0cyI6IjIwMjQtMDYtMzBUMjM6 NTk6NTkifQoreyJpZCI6MywidHMiOm51bGx9CistLSBzaW5nbGUgY29sdW1uOiBqc29uIGFu ZCBqc29uYgorY29weSBjb3B5anNvbnRlc3RfdHlwZXMgKGpzKSB0byBzdGRvdXQgKGZvcm1h dCBqc29uKTsKK3sianMiOnsiYSI6MX19Cit7ImpzIjpbMSxudWxsLCJ4Il19Cit7ImpzIjpu dWxsfQorY29weSBjb3B5anNvbnRlc3RfdHlwZXMgKGpzYikgdG8gc3Rkb3V0IChmb3JtYXQg anNvbik7Cit7ImpzYiI6eyJiIjogMn19Cit7ImpzYiI6eyJuZXN0ZWQiOiB7ImsiOiAidiJ9 fX0KK3sianNiIjpudWxsfQorZHJvcCB0YWJsZSBjb3B5anNvbnRlc3RfdHlwZXM7CistLSBl bWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29u dGVzdCAoCisgICAgaWQgYmlnc2VyaWFsLAorICAgIGYxIHRleHQsCisgICAgZjIgdGltZXN0 YW1wdHopOworaW5zZXJ0IGludG8gY29weWpzb250ZXN0CisgIHNlbGVjdCBnLmksCisgICAg ICAgICBDQVNFIFdIRU4gZy5pICUgMiA9IDAgVEhFTgorICAgICAgICAgICAnbGluZSB3aXRo ICcnIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAgRUxTRQorICAgICAgICAgICAn bGluZSB3aXRoICIgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTkQsCisgICAg ICAgICAnTW9uIEZlYiAxMCAxNzozMjowMSAxOTk3IFBTVCcKKyAgZnJvbSBnZW5lcmF0ZV9z ZXJpZXMoMSw1KSBhcyBnKGkpOworaW5zZXJ0IGludG8gY29weWpzb250ZXN0IChmMSkgdmFs dWVzCisoRSdhYWFcImJiYic6OnRleHQpLAorKEUnYWFhXFxiYmInOjp0ZXh0KSwKKyhFJ2Fh YVwvYmJiJzo6dGV4dCksCisoRSdhYWFcYmJiYic6OnRleHQpLAorKEUnYWFhXGZiYmInOjp0 ZXh0KSwKKyhFJ2FhYVxuYmJiJzo6dGV4dCksCisoRSdhYWFccmJiYic6OnRleHQpLAorKEUn YWFhXHRiYmInOjp0ZXh0KTsKK2NvcHkgY29weWpzb250ZXN0IHRvIHN0ZG91dCBqc29uOwor eyJpZCI6MSwiZjEiOiJsaW5lIHdpdGggXCIgaW4gaXQ6IDEiLCJmMiI6IjE5OTctMDItMTBU MTc6MzI6MDEtMDg6MDAifQoreyJpZCI6MiwiZjEiOiJsaW5lIHdpdGggJyBpbiBpdDogMiIs ImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjozLCJmMSI6ImxpbmUg d2l0aCBcIiBpbiBpdDogMyIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7 ImlkIjo0LCJmMSI6ImxpbmUgd2l0aCAnIGluIGl0OiA0IiwiZjIiOiIxOTk3LTAyLTEwVDE3 OjMyOjAxLTA4OjAwIn0KK3siaWQiOjUsImYxIjoibGluZSB3aXRoIFwiIGluIGl0OiA1Iiwi ZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjEsImYxIjoiYWFhXCJi YmIiLCJmMiI6bnVsbH0KK3siaWQiOjIsImYxIjoiYWFhXFxiYmIiLCJmMiI6bnVsbH0KK3si aWQiOjMsImYxIjoiYWFhL2JiYiIsImYyIjpudWxsfQoreyJpZCI6NCwiZjEiOiJhYWFcYmJi YiIsImYyIjpudWxsfQoreyJpZCI6NSwiZjEiOiJhYWFcZmJiYiIsImYyIjpudWxsfQoreyJp ZCI6NiwiZjEiOiJhYWFcbmJiYiIsImYyIjpudWxsfQoreyJpZCI6NywiZjEiOiJhYWFccmJi YiIsImYyIjpudWxsfQoreyJpZCI6OCwiZjEiOiJhYWFcdGJiYiIsImYyIjpudWxsfQogY3Jl YXRlIHRlbXAgdGFibGUgY29weXRlc3Q0ICgKIAljMSBpbnQsCiAJImNvbG5hbWUgd2l0aCB0 YWI6IAkiIHRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAppbmRleCA2NWNiZGFmN2YzZS4u NDA0ZjQzMjEwODUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCkBAIC04Miw2ICs4Miw5NCBA QCB0aGlzIGlzIGp1c3QgYSBsaW5lIGZ1bGwgb2YganVuayB0aGF0IHdvdWxkIGVycm9yIG91 dCBpZiBwYXJzZWQKIAogY29weSBjb3B5dGVzdDMgdG8gc3Rkb3V0IGNzdiBoZWFkZXI7CiAK Ky0tLSB0ZXN0IGNvcHlpbmcgaW4gSlNPTiBtb2RlIHdpdGggdmFyaW91cyBzdHlsZXMKK2Nv cHkgKHNlbGVjdCAxIHVuaW9uIGFsbCBzZWxlY3QgMikgdG8gc3Rkb3V0IHdpdGggKGZvcm1h dCBqc29uKTsKK2NvcHkgKHNlbGVjdCAxIGFzIGZvbyB1bmlvbiBhbGwgc2VsZWN0IDIpIHRv IHN0ZG91dCB3aXRoIChmb3JtYXQganNvbik7Citjb3B5ICh2YWx1ZXMgKDEpLCAoMikpIFRP IHN0ZG91dCB3aXRoIChmb3JtYXQganNvbik7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCBq c29uOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKK2NvcHkgKHNl bGVjdCAqIGZyb20gY29weXRlc3QpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworCistLSBh bGwgb2YgdGhlIGZvbGxvd2luZyBzaG91bGQgeWllbGQgZXJyb3IKK2NvcHkgY29weXRlc3Qg dG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZGVsaW1pdGVyICd8Jyk7Citjb3B5IGNvcHl0ZXN0 IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG51bGwgJ1xOJyk7Citjb3B5IGNvcHl0ZXN0IHRv IHN0ZG91dCAoZm9ybWF0IGpzb24sIGRlZmF1bHQgJ3wnKTsKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgaGVhZGVyKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0 IChmb3JtYXQganNvbiwgaGVhZGVyIDEpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBqc29uLCBxdW90ZSAnIicpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1h dCBqc29uLCBlc2NhcGUgJyInKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQg anNvbiwgZm9yY2VfcXVvdGUgKik7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24sIGZvcmNlX25vdF9udWxsICopOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBqc29uLCBmb3JjZV9udWxsICopOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQg KGZvcm1hdCBqc29uLCByZWplY3RfbGltaXQgMSk7Citjb3B5IGNvcHl0ZXN0IGZyb20gc3Rk aW4oZm9ybWF0IGpzb24pOworLS0gYWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQgZXJy b3IKKworLS0gY29sdW1uIGxpc3Qgd2l0aCBqc29uIGZvcm1hdAorY29weSBjb3B5dGVzdCAo c3R5bGUsIHRlc3QsIGZpbGxlcikgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7CisKKy0tIGNv bHVtbiBsaXN0IHdpdGggZGl2ZXJzZSBkYXRhIHR5cGVzCitjcmVhdGUgdGVtcCB0YWJsZSBj b3B5anNvbnRlc3RfdHlwZXMgKAorICAgIGlkIGludCwKKyAgICBqcyBqc29uLAorICAgIGpz YiBqc29uYiwKKyAgICBhcnIgaW50W10sCisgICAgbiBudW1lcmljKDEwLDIpLAorICAgIGIg Ym9vbGVhbiwKKyAgICB0cyB0aW1lc3RhbXAsCisgICAgdCB0ZXh0KTsKKworaW5zZXJ0IGlu dG8gY29weWpzb250ZXN0X3R5cGVzIHZhbHVlcworKDEsICd7ImEiOjF9JywgJ3siYiI6Mn0n LCAnezEsMiwzfScsIDMuMTQsIHRydWUsCisgJzIwMjQtMDEtMTUgMTA6MzA6MDAnLCAnaGVs bG8nKSwKKygyLCAnWzEsbnVsbCwieCJdJywgJ3sibmVzdGVkIjp7ImsiOiJ2In19JywgJ3s0 LDV9JywgLTk5Ljk5LCBmYWxzZSwKKyAnMjAyNC0wNi0zMCAyMzo1OTo1OScsICd3b3JsZCcp LAorKDMsICdudWxsJywgJ251bGwnLCAne30nLCBudWxsLCBudWxsLCBudWxsLCBudWxsKTsK KworLS0gZnVsbCB0YWJsZQorY29weSBjb3B5anNvbnRlc3RfdHlwZXMgdG8gc3Rkb3V0IChm b3JtYXQganNvbik7CisKKy0tIGNvbHVtbiBzdWJzZXRzIGV4ZXJjaXNpbmcgZWFjaCB0eXBl Citjb3B5IGNvcHlqc29udGVzdF90eXBlcyAoaWQsIGpzLCBqc2IpIHRvIHN0ZG91dCAoZm9y bWF0IGpzb24pOworY29weSBjb3B5anNvbnRlc3RfdHlwZXMgKGlkLCBhcnIsIG4sIGIpIHRv IHN0ZG91dCAoZm9ybWF0IGpzb24pOworY29weSBjb3B5anNvbnRlc3RfdHlwZXMgKGpzYiwg dCkgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Citjb3B5IGNvcHlqc29udGVzdF90eXBlcyAo aWQsIHRzKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKKworLS0gc2luZ2xlIGNvbHVtbjog anNvbiBhbmQganNvbmIKK2NvcHkgY29weWpzb250ZXN0X3R5cGVzIChqcykgdG8gc3Rkb3V0 IChmb3JtYXQganNvbik7Citjb3B5IGNvcHlqc29udGVzdF90eXBlcyAoanNiKSB0byBzdGRv dXQgKGZvcm1hdCBqc29uKTsKKworZHJvcCB0YWJsZSBjb3B5anNvbnRlc3RfdHlwZXM7CisK Ky0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycworY3JlYXRlIHRlbXAgdGFibGUgY29w eWpzb250ZXN0ICgKKyAgICBpZCBiaWdzZXJpYWwsCisgICAgZjEgdGV4dCwKKyAgICBmMiB0 aW1lc3RhbXB0eik7CisKK2luc2VydCBpbnRvIGNvcHlqc29udGVzdAorICBzZWxlY3QgZy5p LAorICAgICAgICAgQ0FTRSBXSEVOIGcuaSAlIDIgPSAwIFRIRU4KKyAgICAgICAgICAgJ2xp bmUgd2l0aCAnJyBpbiBpdDogJyB8fCBnLmk6OnRleHQKKyAgICAgICAgIEVMU0UKKyAgICAg ICAgICAgJ2xpbmUgd2l0aCAiIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAgRU5E LAorICAgICAgICAgJ01vbiBGZWIgMTAgMTc6MzI6MDEgMTk5NyBQU1QnCisgIGZyb20gZ2Vu ZXJhdGVfc2VyaWVzKDEsNSkgYXMgZyhpKTsKKworaW5zZXJ0IGludG8gY29weWpzb250ZXN0 IChmMSkgdmFsdWVzCisoRSdhYWFcImJiYic6OnRleHQpLAorKEUnYWFhXFxiYmInOjp0ZXh0 KSwKKyhFJ2FhYVwvYmJiJzo6dGV4dCksCisoRSdhYWFcYmJiYic6OnRleHQpLAorKEUnYWFh XGZiYmInOjp0ZXh0KSwKKyhFJ2FhYVxuYmJiJzo6dGV4dCksCisoRSdhYWFccmJiYic6OnRl eHQpLAorKEUnYWFhXHRiYmInOjp0ZXh0KTsKKworY29weSBjb3B5anNvbnRlc3QgdG8gc3Rk b3V0IGpzb247CisKIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHl0ZXN0NCAoCiAJYzEgaW50LAog CSJjb2xuYW1lIHdpdGggdGFiOiAJIiB0ZXh0KTsKLS0gCjIuNDMuMAoK --------------GLh2cGiqS4Dw7vWM4YzEsMH5 Content-Type: text/x-patch; charset=UTF-8; name="v30-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename*0="v30-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 RnJvbSA5ZTBhNjU1NzhlYjFkZTljOGQwNTIxYjI5MzFmYmU3NmFkNWYyYmNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogTW9uLCAxNiBNYXIgMjAyNiAxNjo1MToxMiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjMwIDMvM10gQWRkIG9wdGlvbiBmb3JjZV9hcnJheSBmb3IgQ09QWSBKU09OIEZP Uk1BVAoKVGhpcyBhZGRzIHRoZSBmb3JjZV9hcnJheSBvcHRpb24sIHdoaWNoIGlzIGF2YWls YWJsZSBleGNsdXNpdmVseQp3aGVuIHVzaW5nIENPUFkgVE8gd2l0aCB0aGUgSlNPTiBmb3Jt YXQuCgpXaGVuIGVuYWJsZWQsIHRoaXMgb3B0aW9uIHdyYXBzIHRoZSBvdXRwdXQgaW4gYSB0 b3AtbGV2ZWwgSlNPTiBhcnJheQooZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzIHdpdGgg Y29tbWEtc2VwYXJhdGVkIGVsZW1lbnRzKSwgbWFraW5nIHRoZQplbnRpcmUgcmVzdWx0IGEg dmFsaWQgc2luZ2xlIEpTT04gdmFsdWUuICBXaXRob3V0IHRoaXMgb3B0aW9uLCB0aGUKZGVm YXVsdCBiZWhhdmlvciBpcyB0byBvdXRwdXQgYSBzdHJlYW0gb2YgaW5kZXBlbmRlbnQgSlNP TiBvYmplY3RzLgoKQXR0ZW1wdGluZyB0byB1c2UgdGhpcyBvcHRpb24gd2l0aCBDT1BZIEZS T00gb3Igd2l0aCBmb3JtYXRzIG90aGVyIHRoYW4KSlNPTiB3aWxsIHJhaXNlIGFuIGVycm9y LgoKQXV0aG9yOiBKb2UgQ29ud2F5IDxtYWlsQGpvZWNvbndheS5jb20+CkF1dGhvcjogamlh biBoZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogSnVud2Fu ZyBaaGFvIDx6aGp3cGt1QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2Fk YSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogRmxvcmVudHMgVHNlbGFp IDxmbG9yZW50cy50c2VsYWlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0 YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0FMdmZVa0J4VFl5NXVXUEZWd3BrXzdpaTJ6Z1QwN3QzZC15Ul9jeTRzZnJyTFUlM0Rr Y2clNDBtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzZh MDQ2MjhkLTBkNTMtNDFkOS05ZTM1LTVhOGRjMzAyYzM0Y0Bqb2Vjb253YXkuY29tCi0tLQog ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICB8IDMwICsrKysrKysrKysrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgIHwgMTMgKysr KysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICB8IDM4ICsrKysr KysrKysrKysrKysrKysrKysrKysrKystLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgIHwg IDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dCB8IDM3ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbCAg ICAgIHwgMTMgKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygr KSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHku c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IDc1ZjU1YmJmNmY4Li5h Nzk1ODdmNzYxMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKQEAgLTQwLDYgKzQwLDcgQEAgQ09QWSB7 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJs ZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgIEhFQURFUiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJsZT4gfCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+aW50ZWdlcjwvcmVwbGFjZWFibGU+IHwgTUFUQ0ggXQogICAgIFFVT1RF ICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cXVvdGVfY2hhcmFjdGVyPC9yZXBs YWNlYWJsZT4nCiAgICAgRVNDQVBFICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZXNjYXBlX2NoYXJhY3RlcjwvcmVwbGFjZWFibGU+JworICAgIEZPUkNFX0FSUkFZIFsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCiAg ICAgRk9SQ0VfUVVPVEUgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAgIEZPUkNFX05PVF9O VUxMIHsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi5dICkgfCAqIH0KICAgICBGT1JDRV9OVUxMIHsgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAu Li5dICkgfCAqIH0KQEAgLTM2Niw2ICszNjcsMTkgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNl YWJsZQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxp c3RlbnRyeSBpZD0ic3FsLWNvcHktcGFyYW1zLWZvcmNlLWFycmF5Ij4KKyAgICA8dGVybT48 bGl0ZXJhbD5GT1JDRV9BUlJBWTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIEZvcmNlIG91dHB1dCBvZiBzcXVhcmUgYnJhY2tldHMgYXMg YXJyYXkgZGVjb3JhdGlvbnMgYXQgdGhlIGJlZ2lubmluZworICAgICAgYW5kIGVuZCBvZiBv dXRwdXQsIGFuZCBjb21tYXMgYmV0d2VlbiB0aGUgcm93cy4gSXQgaXMgYWxsb3dlZCBvbmx5 IGluCisgICAgICA8Y29tbWFuZD5DT1BZIFRPPC9jb21tYW5kPiwgYW5kIG9ubHkgd2hlbiB1 c2luZworICAgICAgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LiBUaGUgZGVmYXVs dCBpcworICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5 IGlkPSJzcWwtY29weS1wYXJhbXMtZm9yY2UtcXVvdGUiPgogICAgIDx0ZXJtPjxsaXRlcmFs PkZPUkNFX1FVT1RFPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CkBAIC0xMTAz LDYgKzExMTcsMjIgQEAgQ09QWSBjb3VudHJ5IFRPIFNURE9VVCAoREVMSU1JVEVSICd8Jyk7 CiA8L3Byb2dyYW1saXN0aW5nPgogICA8L3BhcmE+CiAKKzxwYXJhPgorICAgV2hlbiB0aGUg PGxpdGVyYWw+Rk9SQ0VfQVJSQVk8L2xpdGVyYWw+IG9wdGlvbiBpcyBlbmFibGVkLAorICAg dGhlIGVudGlyZSBvdXRwdXQgaXMgd3JhcHBlZCBpbiBhIHNpbmdsZSBKU09OIGFycmF5IHdp dGggcm93cyBzZXBhcmF0ZWQgYnkgY29tbWFzOgorPHByb2dyYW1saXN0aW5nPgorQ09QWSAo U0VMRUNUICogRlJPTSAoVkFMVUVTKDEpLCgyKSkgdmFsKGlkKSkgVE8gU1RET1VUICAoRk9S TUFUIEpTT04sIEZPUkNFX0FSUkFZKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CitUaGUgb3V0cHV0 IGlzIGFzIGZvbGxvd3M6Cis8c2NyZWVuPgorWworIHsiaWQiOjF9CisseyJpZCI6Mn0KK10K Kzwvc2NyZWVuPgorPC9wYXJhPgorCisKICAgPHBhcmE+CiAgICBUbyBjb3B5IGRhdGEgZnJv bSBhIGZpbGUgaW50byB0aGUgPGxpdGVyYWw+Y291bnRyeTwvbGl0ZXJhbD4gdGFibGU6CiA8 cHJvZ3JhbWxpc3Rpbmc+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggMjllMjJkOTFlY2QuLmU4 MzdmNDE3ZDBkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC01NjksNiArNTY5LDcgQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlib29sCQlvbl9lcnJvcl9z cGVjaWZpZWQgPSBmYWxzZTsKIAlib29sCQlsb2dfdmVyYm9zaXR5X3NwZWNpZmllZCA9IGZh bHNlOwogCWJvb2wJCXJlamVjdF9saW1pdF9zcGVjaWZpZWQgPSBmYWxzZTsKKwlib29sCQlm b3JjZV9hcnJheV9zcGVjaWZpZWQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpvcHRpb247CiAK IAkvKiBTdXBwb3J0IGV4dGVybmFsIHVzZSBmb3Igb3B0aW9uIHNhbml0eSBjaGVja2luZyAq LwpAQCAtNzI1LDYgKzcyNiwxMyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCQkJCQlkZWZlbC0+ZGVmbmFtZSksCiAJCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgZGVmZWwtPmxvY2F0aW9uKSkpOwogCQl9CisJCWVsc2UgaWYgKHN0 cmNtcChkZWZlbC0+ZGVmbmFtZSwgImZvcmNlX2FycmF5IikgPT0gMCkKKwkJeworCQkJaWYg KGZvcmNlX2FycmF5X3NwZWNpZmllZCkKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShk ZWZlbCwgcHN0YXRlKTsKKwkJCWZvcmNlX2FycmF5X3NwZWNpZmllZCA9IHRydWU7CisJCQlv cHRzX291dC0+Zm9yY2VfYXJyYXkgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJfQogCQll bHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJvbl9lcnJvciIpID09IDApCiAJCXsK IAkJCWlmIChvbl9lcnJvcl9zcGVjaWZpZWQpCkBAIC05NjcsNiArOTc1LDExIEBAIFByb2Nl c3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQllcnJtc2coIkNPUFkgJXMgaXMgbm90 IHN1cHBvcnRlZCBmb3IgJXMiLCAiRk9STUFUIEpTT04iLCAiQ09QWSBGUk9NIikpOwogCisJ aWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfSlNPTiAmJiBvcHRzX291dC0+ Zm9yY2VfYXJyYXkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coIkNPUFkgJXMgY2FuIG9ubHkg YmUgdXNlZCB3aXRoIEpTT04gbW9kZSIsICJGT1JDRV9BUlJBWSIpKTsKKwogCWlmIChvcHRz X291dC0+ZGVmYXVsdF9wcmludCkKIAl7CiAJCWlmICghaXNfZnJvbSkKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weXRvLmMKaW5kZXggZmZlMjI2OGZiYjAuLjEyODcyZjA0ZWVmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYwpAQCAtODcsNiArODcsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5VG9TdGF0 ZURhdGEKIAlMaXN0CSAgICphdHRudW1saXN0OwkJLyogaW50ZWdlciBsaXN0IG9mIGF0dG51 bXMgdG8gY29weSAqLwogCWNoYXIJICAgKmZpbGVuYW1lOwkJLyogZmlsZW5hbWUsIG9yIE5V TEwgZm9yIFNURE9VVCAqLwogCWJvb2wJCWlzX3Byb2dyYW07CQkvKiBpcyAnZmlsZW5hbWUn IGEgcHJvZ3JhbSB0byBwb3Blbj8gKi8KKwlib29sCQlqc29uX3Jvd19kZWxpbV9uZWVkZWQ7 CS8qIG5lZWQgZGVsaW1pdGVyIGJlZm9yZSBuZXh0IHJvdyAqLwogCVN0cmluZ0luZm8JanNv bl9idWY7CQkvKiByZXVzYWJsZSBidWZmZXIgZm9yIEpTT04gb3V0cHV0LAogCQkJCQkJCQkg KiBpbml0aWFsaXplZCBpbiBCZWdpbkNvcHlUbyAqLwogCVR1cGxlRGVzYwl0dXBEZXNjOwkJ LyogRGVzY3JpcHRvciBmb3IgSlNPTiBvdXRwdXQ7IGZvciBhIGNvbHVtbgpAQCAtMTQxLDYg KzE0Miw3IEBAIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlT25lUm93KENvcHlUb1N0YXRl IGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJCSBib29sIGlzX2Nzdik7 CiBzdGF0aWMgdm9pZCBDb3B5VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpOwog c3RhdGljIHZvaWQgQ29weVRvSnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxl VGFibGVTbG90ICpzbG90KTsKK3N0YXRpYyB2b2lkIENvcHlUb0pzb25FbmQoQ29weVRvU3Rh dGUgY3N0YXRlKTsKIHN0YXRpYyB2b2lkIENvcHlUb0JpbmFyeVN0YXJ0KENvcHlUb1N0YXRl IGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2MpOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5 T3V0RnVuYyhDb3B5VG9TdGF0ZSBjc3RhdGUsIE9pZCBhdHR0eXBpZCwgRm1nckluZm8gKmZp bmZvKTsKIHN0YXRpYyB2b2lkIENvcHlUb0JpbmFyeU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3Rh dGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKQEAgLTE4Miw3ICsxODQsNyBAQCBzdGF0aWMg Y29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lSnNvbiA9IHsKIAkuQ29weVRvU3Rh cnQgPSBDb3B5VG9UZXh0TGlrZVN0YXJ0LAogCS5Db3B5VG9PdXRGdW5jID0gQ29weVRvVGV4 dExpa2VPdXRGdW5jLAogCS5Db3B5VG9PbmVSb3cgPSBDb3B5VG9Kc29uT25lUm93LAotCS5D b3B5VG9FbmQgPSBDb3B5VG9UZXh0TGlrZUVuZCwKKwkuQ29weVRvRW5kID0gQ29weVRvSnNv bkVuZCwKIH07CiAKIC8qIGJpbmFyeSBmb3JtYXQgKi8KQEAgLTI0OCw2ICsyNTAsMTUgQEAg Q29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBE ZXNjKQogCiAJCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOwogCX0KKworCS8q CisJICogSWYgRk9SQ0VfQVJSQVkgaGFzIGJlZW4gc3BlY2lmaWVkLCBzZW5kIHRoZSBvcGVu aW5nIGJyYWNrZXQuCisJICovCisJaWYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9G T1JNQVRfSlNPTiAmJiBjc3RhdGUtPm9wdHMuZm9yY2VfYXJyYXkpCisJeworCQlDb3B5U2Vu ZENoYXIoY3N0YXRlLCAnWycpOworCQlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0YXRl KTsKKwl9CiB9CiAKIC8qCkBAIC0zMjQsMTMgKzMzNSwyNCBAQCBDb3B5VG9UZXh0TGlrZU9u ZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsCiAJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNz dGF0ZSk7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sgZm9y IHRleHQsIENTViwgYW5kIGpzb24gZm9ybWF0cyAqLworLyogSW1wbGVtZW50YXRpb24gb2Yg dGhlIGVuZCBjYWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NWIGZvcm1hdHMgKi8KIHN0YXRpYyB2 b2lkCiBDb3B5VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJLyogTm90 aGluZyB0byBkbyBoZXJlICovCiB9CiAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQg Y2FsbGJhY2sgZm9yIGpzb24gZm9ybWF0ICovCitzdGF0aWMgdm9pZAorQ29weVRvSnNvbkVu ZChDb3B5VG9TdGF0ZSBjc3RhdGUpCit7CisJaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJh eSkKKwl7CisJCUNvcHlTZW5kQ2hhcihjc3RhdGUsICddJyk7CisJCUNvcHlTZW5kVGV4dExp a2VFbmRPZlJvdyhjc3RhdGUpOworCX0KK30KKwogLyogSW1wbGVtZW50YXRpb24gb2YgcGVy LXJvdyBjYWxsYmFjayBmb3IganNvbiBmb3JtYXQgKi8KIHN0YXRpYyB2b2lkCiBDb3B5VG9K c29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCkBA IC0zOTIsNiArNDE0LDE4IEBAIENvcHlUb0pzb25PbmVSb3coQ29weVRvU3RhdGUgY3N0YXRl LCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAogCWNvbXBvc2l0ZV90b19qc29uKHJvd2RhdGEs IGNzdGF0ZS0+anNvbl9idWYsIGZhbHNlKTsKIAorCWlmIChjc3RhdGUtPm9wdHMuZm9yY2Vf YXJyYXkpCisJeworCQlpZiAoY3N0YXRlLT5qc29uX3Jvd19kZWxpbV9uZWVkZWQpCisJCQlD b3B5U2VuZENoYXIoY3N0YXRlLCAnLCcpOworCQllbHNlCisJCXsKKwkJCS8qIGZpcnN0IHJv dyBuZWVkcyBubyBkZWxpbWl0ZXIgKi8KKwkJCUNvcHlTZW5kQ2hhcihjc3RhdGUsICcgJyk7 CisJCQljc3RhdGUtPmpzb25fcm93X2RlbGltX25lZWRlZCA9IHRydWU7CisJCX0KKwl9CisK IAlDb3B5U2VuZERhdGEoY3N0YXRlLCBjc3RhdGUtPmpzb25fYnVmLT5kYXRhLCBjc3RhdGUt Pmpzb25fYnVmLT5sZW4pOwogCiAJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNzdGF0ZSk7 CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggYWMzNmY0NTkxZjcuLmY0NGExZjIyZWJm IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCBDb3B5 X2NvbW1vbl9vcHRpb25zLCAiREVGQVVMVCIsICJGT1JDRV9OT1RfTlVMTCIsICJGT1JDRV9O VUxMIiwgIkZSRUVaRSIsIFwKIAogLyogQ09QWSBUTyBvcHRpb25zICovCiAjZGVmaW5lIENv cHlfdG9fb3B0aW9ucyBcCi1Db3B5X2NvbW1vbl9vcHRpb25zLCAiRk9SQ0VfUVVPVEUiCitD b3B5X2NvbW1vbl9vcHRpb25zLCAiRk9SQ0VfUVVPVEUiLCAiRk9SQ0VfQVJSQVkiCiAKIC8q CiAgKiBUaGVzZSBvYmplY3QgdHlwZXMgd2VyZSBpbnRyb2R1Y2VkIGxhdGVyIHRoYW4gb3Vy IHN1cHBvcnQgY3V0b2ZmIG9mCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9j b3B5LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXggMmI1YmVmNjczOGUu LmFiZWNmZTUxMDk4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgK KysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC04OCw2ICs4OCw3IEBAIHR5 cGVkZWYgc3RydWN0IENvcHlGb3JtYXRPcHRpb25zCiAJTGlzdAkgICAqZm9yY2Vfbm90bnVs bDsJLyogbGlzdCBvZiBjb2x1bW4gbmFtZXMgKi8KIAlib29sCQlmb3JjZV9ub3RudWxsX2Fs bDsJLyogRk9SQ0VfTk9UX05VTEwgKj8gKi8KIAlib29sCSAgICpmb3JjZV9ub3RudWxsX2Zs YWdzOwkvKiBwZXItY29sdW1uIENTViBGTk4gZmxhZ3MgKi8KKwlib29sCQlmb3JjZV9hcnJh eTsJLyogYWRkIEpTT04gYXJyYXkgZGVjb3JhdGlvbnMgKi8KIAlMaXN0CSAgICpmb3JjZV9u dWxsOwkJLyogbGlzdCBvZiBjb2x1bW4gbmFtZXMgKi8KIAlib29sCQlmb3JjZV9udWxsX2Fs bDsgLyogRk9SQ0VfTlVMTCAqPyAqLwogCWJvb2wJICAgKmZvcmNlX251bGxfZmxhZ3M7CS8q IHBlci1jb2x1bW4gQ1NWIEZOIGZsYWdzICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NvcHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5 Lm91dAppbmRleCA3ZjJkMmUwNjVmNi4uMTcxNGZhYWIzOWMgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb3B5Lm91dApAQCAtODMsNiArODMsMTYgQEAgY29weSAoc2VsZWN0IDEgYXMg Zm9vIHVuaW9uIGFsbCBzZWxlY3QgMikgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsK IGNvcHkgKHZhbHVlcyAoMSksICgyKSkgVE8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsK IHsiY29sdW1uMSI6MX0KIHsiY29sdW1uMSI6Mn0KK2NvcHkgKHNlbGVjdCAxIHVuaW9uIGFs bCBzZWxlY3QgMikgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSB0 cnVlKTsKK1sKKyB7Ij9jb2x1bW4/IjoxfQorLHsiP2NvbHVtbj8iOjJ9CitdCitjb3B5ICh2 YWx1ZXMgKDEpLCAoMikpIFRPIHN0ZG91dCB3aXRoIChmb3JtYXQganNvbiwgZm9yY2VfYXJy YXkgdHJ1ZSk7CitbCisgeyJjb2x1bW4xIjoxfQorLHsiY29sdW1uMSI6Mn0KK10KIGNvcHkg Y29weXRlc3QgdG8gc3Rkb3V0IGpzb247CiB7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xy XG5kZWYiLCJmaWxsZXIiOjF9CiB7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIs ImZpbGxlciI6Mn0KQEAgLTEzNCw2ICsxNDQsMzMgQEAgY29weSBjb3B5dGVzdCAoc3R5bGUs IHRlc3QsIGZpbGxlcikgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7CiB7InN0eWxlIjoiVW5p eCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KIHsic3R5bGUiOiJNYWMiLCJ0ZXN0 IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9CiB7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0Ijoi YVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KKy0tIHNob3VsZCBmYWlsOiBmb3JjZV9h cnJheSByZXF1aXJlcyBqc29uIGZvcm1hdAorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBjc3YsIGZvcmNlX2FycmF5IHRydWUpOworRVJST1I6ICBDT1BZIEZPUkNFX0FSUkFZ IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBKU09OIG1vZGUKKy0tIGZvcmNlX2FycmF5IHZhcmlh bnRzCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5 KTsKK1sKKyB7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9 CisseyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9CisseyJz dHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KKyx7InN0eWxlIjoi ZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK10KK2Nv cHkgY29weXRlc3Qoc3R5bGUsIHRlc3QpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNl X2FycmF5IHRydWUpOworWworIHsic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJjXHJcbmRlZiJ9 CisseyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYifQorLHsic3R5bGUiOiJNYWMi LCJ0ZXN0IjoiYWJjXHJkZWYifQorLHsic3R5bGUiOiJlc2NcXGFwZSIsInRlc3QiOiJhXFxy XFxcclxcXG5cXG5iIn0KK10KK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNv biwgZm9yY2VfYXJyYXkgZmFsc2UpOworeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxu ZGVmIiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJm aWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjoz fQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxs ZXIiOjR9CistLSBmb3JjZV9hcnJheSB3aXRoIGVtcHR5IHJlc3VsdCBzZXQKK2NvcHkgKHNl bGVjdCAxIHdoZXJlIGZhbHNlKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJh eSk7CitbCitdCiAtLSBjb2x1bW4gbGlzdCB3aXRoIGRpdmVyc2UgZGF0YSB0eXBlcwogY3Jl YXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0X3R5cGVzICgKICAgICBpZCBpbnQsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NvcHkuc3FsCmluZGV4IDQwNGY0MzIxMDg1Li5lYWFkMjkwYjI1NyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY29weS5zcWwKQEAgLTg2LDYgKzg2LDggQEAgY29weSBjb3B5dGVzdDMgdG8g c3Rkb3V0IGNzdiBoZWFkZXI7CiBjb3B5IChzZWxlY3QgMSB1bmlvbiBhbGwgc2VsZWN0IDIp IHRvIHN0ZG91dCB3aXRoIChmb3JtYXQganNvbik7CiBjb3B5IChzZWxlY3QgMSBhcyBmb28g dW5pb24gYWxsIHNlbGVjdCAyKSB0byBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24pOwogY29w eSAodmFsdWVzICgxKSwgKDIpKSBUTyBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24pOworY29w eSAoc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAyKSB0byBzdGRvdXQgd2l0aCAoZm9ybWF0 IGpzb24sIGZvcmNlX2FycmF5IHRydWUpOworY29weSAodmFsdWVzICgxKSwgKDIpKSBUTyBz dGRvdXQgd2l0aCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IHRydWUpOwogY29weSBjb3B5 dGVzdCB0byBzdGRvdXQganNvbjsKIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQg anNvbik7CiBjb3B5IChzZWxlY3QgKiBmcm9tIGNvcHl0ZXN0KSB0byBzdGRvdXQgKGZvcm1h dCBqc29uKTsKQEAgLTEwOSw2ICsxMTEsMTcgQEAgY29weSBjb3B5dGVzdCBmcm9tIHN0ZGlu KGZvcm1hdCBqc29uKTsKIC0tIGNvbHVtbiBsaXN0IHdpdGgganNvbiBmb3JtYXQKIGNvcHkg Y29weXRlc3QgKHN0eWxlLCB0ZXN0LCBmaWxsZXIpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24p OwogCistLSBzaG91bGQgZmFpbDogZm9yY2VfYXJyYXkgcmVxdWlyZXMganNvbiBmb3JtYXQK K2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQgY3N2LCBmb3JjZV9hcnJheSB0cnVl KTsKKworLS0gZm9yY2VfYXJyYXkgdmFyaWFudHMKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0 IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkpOworY29weSBjb3B5dGVzdChzdHlsZSwgdGVz dCkgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgdHJ1ZSk7Citjb3B5IGNv cHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IGZhbHNlKTsKKwor LS0gZm9yY2VfYXJyYXkgd2l0aCBlbXB0eSByZXN1bHQgc2V0Citjb3B5IChzZWxlY3QgMSB3 aGVyZSBmYWxzZSkgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkpOworCiAt LSBjb2x1bW4gbGlzdCB3aXRoIGRpdmVyc2UgZGF0YSB0eXBlcwogY3JlYXRlIHRlbXAgdGFi bGUgY29weWpzb250ZXN0X3R5cGVzICgKICAgICBpZCBpbnQsCi0tIAoyLjQzLjAKCg== --------------GLh2cGiqS4Dw7vWM4YzEsMH5--