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 1vyReK-0007Oa-2g for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Mar 2026 09:39:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vyReJ-004UW1-10 for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Mar 2026 09:39:11 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vyReI-004UVr-2u for pgsql-hackers@lists.postgresql.org; Fri, 06 Mar 2026 09:39:11 +0000 Received: from mail-ua1-x92e.google.com ([2607:f8b0:4864:20::92e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vyReG-00000001A6g-1bMS for pgsql-hackers@postgresql.org; Fri, 06 Mar 2026 09:39:11 +0000 Received: by mail-ua1-x92e.google.com with SMTP id a1e0cc1a2514c-94de68feaf4so5509006241.0 for ; Fri, 06 Mar 2026 01:39:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772789947; cv=none; d=google.com; s=arc-20240605; b=jrd8XdrSH6ev1DgfpiMRY9BKzqbBr3Y84AI3gXHv8NAw3w6NbauDaqOPLqJaXrKlpK AxPuyin24Zg5Ag/bJ6DxnKnXalVHVUg/kO4Xt/VBqs5Ye2emGeDFq6EwTpgjs8RUJI1V GhFe++Dq/SY+q2qJAhEGKZFosFshpOe6ZjCsRyOhtFk/lt3gdUEzgv9SSXruGxch+Dtl 0PF3c+ayUYI9yvOoSCSBcmpNZKpkq2+/ZKjjxTdcVndEkMCVBluR6KNtZMeHqwYTGbML AdYLXFh6uZx71EvRA0wwheoCcLHCfjwITw4VqfYsLo8JIA7WcT60ZtQo51K7hCDibShY NlTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=7/ANHnVy/iBJTeR9oEbsiCwSr2PW8i5p4TkKxfsLIy8=; fh=JLWiYslNo0GzbgJ6kIJ+i0s/uMcKH7t+HQLJR5SWNME=; b=P/f7XuvCCRAFwkyij5abzRQLczGT1vfPdb1r/5kfcwVosJKFieloyYOurpANDqtY8F 5D0blkwseDHY9w5zjqrHatT4OmoiIvP7SvKj6JE19J377ibhVgCyytj8sRS5YPl6/ep7 ozz7Jg+G8+2Fj6iCe9Vab8BddaVakbyyVpbTvZQXXR6jzrUx73JTyKMaal0Utnr1z4VY v645HfvI1i9LKRwFH0K+dSK7cfOci7chogw3QdWjm80zYwWakMbj0PrtDeJYC+BSxW3C 8p4LNwifx8z2gK7gZhqfctvumosKMXCMul6xdIwVU0naI9CFzTirynOXsSGp54WSFTNu hjpw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772789947; x=1773394747; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=7/ANHnVy/iBJTeR9oEbsiCwSr2PW8i5p4TkKxfsLIy8=; b=hsT9bj1SC//Yob7OMXMX4Bgg+gGhj/f8keLbjrzfdskTI8i6f25hNRRnn9r3mI4Yms 4UzeaiFSseWwoeHqS1VReJk6aamax8bpsfgJHLC2mae6zHmAv1pubFHdFR3LAxZkOcaJ wBoNhTWheLVwsNeIp+7YamKQXf08em1E/EBcp7Bq9Z4JQgN/auwdDkmv4ygiaaZ1URTR tT+eumKF281eGIkeVq9ybcOq1rv4ahjchVX0NUeIvnDkIkxj3kEoTQuOMP+keahMO2h/ SPz0BXVtW1g2vI7tyOAbgjDsCLUpfuuYbvq6VDMDsUGyAzsLGSHQ/rzMsmyqXL6avBnU Chzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772789947; x=1773394747; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=7/ANHnVy/iBJTeR9oEbsiCwSr2PW8i5p4TkKxfsLIy8=; b=nLLWkHG47PO5T9JbtAlLesYSqoa1zshbcyoFhipdkg2kg5IY51FQl7q2+5o1vbw6Hz uw1JvLjPLrO8vZIzBMQ+vBM1iq35+85fyZnf0/bUDHQgaXEHbbhNZWiSdbJWYbpMuk8c oj1KdcrXgtMDOjoOmXWjOxrdVE0oH1sjVPTZOEIK9d3U8gdOnBxtTnp9mpQ3NtLH6/Xm VYZO7ehVI0IPdhbEnmHIh7F/mobpnh6w4m5U/VcIOCwLPsCfkGWTiBCsx6R5evBAQlqZ +MDHtgp4NHj6lfDf+QeVKb0IaV/3gdOYD9yeEtHKqgG3NjvP8yfVu03gF0bPJAcJXxp2 Rzgg== X-Forwarded-Encrypted: i=1; AJvYcCVrPhprEFRcmWOZY65qF6ZIWQgDb+1ZgmxK2+IIdb6TTlRJeAgeNQI8gBgL6dlX6topPx2Gz+KZK3A9Nlt9@postgresql.org X-Gm-Message-State: AOJu0YwC4GQ59RpTgMVu81xSpuIBBohx7xFeRt66ovJDLFNbtT3jZW/T +wZRbVeAS8NiIn6shj37cwiMHOvfMVnMnc16GBPW73uxOUVB8PAdEgk4ZIQ4qlrclkcWqOp9JiL ruIitu1oYQkf+DWVqtu2D+vpg/TROm1w= X-Gm-Gg: ATEYQzyEK/xGuaZ3hQMOJMvn50TwRxrpODE/tgNTkGpO8KERTtzNeZ8p6DHVYK+MEpF riABMMqMMVbe1xeUEh6si2Zu4LCAaypGaJ2L7Q04g2Mcw0hhrwZcn7uzcfkynE6Z1hYuodXcVeH xRFdPq6EujxYg7nJJw+7hpbM+aK7hWDZq51NLLCkYcSyunzdIkWn1+HeqWSjQCnesxJjeOQkhFa YS/PdLr0Q5BLfaJ7fSeaOVonTUvdqAaqDCjlzOcsO1Gux9qXuIi46gQYRDcmh8Irhc13JrbEoQ2 0lVMyqn4LdwhT1ShnleXr589m5pmOQ+5aIxxUjQDFeWm5C/6wl1W3K5MMeah0VBO4w3U/TYJ/OF 89K8PwokUf5SmXHaWmkx4GEukUEGFweaar9+45hAFIQ67Nej9zPMVeNsQpOj1jNHhQfiLr+BIsU wmCOrxdBpFxOhraP+ePjYp X-Received: by 2002:a05:6102:3e82:b0:5ff:ca6e:c897 with SMTP id ada2fe7eead31-5ffe6124f1emr596197137.25.1772789946897; Fri, 06 Mar 2026 01:39:06 -0800 (PST) MIME-Version: 1.0 References: <74d3b4e2-d201-489d-9b9a-1a6d0eb492a6@dunslane.net> <6cbbf7f3-da4a-4201-98a6-4347a3c35db0@joeconway.com> <8154f8e2-7d9c-442f-a7cb-a5caf38f6a12@dunslane.net> In-Reply-To: <8154f8e2-7d9c-442f-a7cb-a5caf38f6a12@dunslane.net> From: jian he Date: Fri, 6 Mar 2026 17:38:30 +0800 X-Gm-Features: AaiRm53C8ZeZOxmUPkN88gKmsurCHOG7FO0PflMcMwC94dY-EHrdEIte0YnSEug Message-ID: Subject: Re: Emitting JSON to file using COPY TO To: Andrew Dunstan Cc: Joe Conway , Junwang Zhao , Florents Tselai , "Andrey M. Borodin" , Dean Rasheed , Daniel Verite , Davin Shearer , PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000000c006b064c57d33d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000c006b064c57d33d Content-Type: text/plain; charset="UTF-8" COPY (SELECT 1 UNION ALL SELECT 2) TO stdout WITH (format json); still fails with v25-0002, json_tupledesc_ready is not helpful. I think I figured it out. We need to use BlessTupleDesc in BeginCopyTo. Then let slot->tts_tupleDescriptor point to cstate->queryDesc->tupDesc in CopyToJsonOneRow * CSV, text and json formats share the same TextLike routines except for the * one-row callback. This comment is not useful, I want to delete it. CopyToTextLikeStart + /* JSON-specific initialization */ + if (cstate->opts.format == COPY_FORMAT_JSON) + { + MemoryContext oldcxt; + + /* Allocate reusable JSON output buffer in long-lived context */ + oldcxt = MemoryContextSwitchTo(cstate->copycontext); + initStringInfo(&cstate->json_buf); + MemoryContextSwitchTo(oldcxt); + } We ca just add cstate->json_buf = makeStringInfo(); in BeginCopyTo. v25-0004-COPY-TO-JSON-build-JSON-per-column-support-colum.patch added several fields to the CopyToStateData. Actually, there is a simpler way (construct a new Tupdesc and let composite_to_json do the job), please see my v26-0004. -- jian https://www.enterprisedb.com/ --0000000000000c006b064c57d33d Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename="v26-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmepc4vb0 RnJvbSA2MWVhNmE0OTJlZjkwMGJmODc0NTQ1NTg0N2UyZDljZmZiMzk2MTUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgNiBNYXIgMjAyNiAxNDo0Nzo1OCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjI2 IDMvNF0gQWRkIG9wdGlvbiBmb3JjZV9hcnJheSBmb3IgQ09QWSBKU09OIEZPUk1BVAoKVGhpcyBh ZGRzIHRoZSBmb3JjZV9hcnJheSBvcHRpb24sIHdoaWNoIGlzIGF2YWlsYWJsZSBleGNsdXNpdmVs eQp3aGVuIHVzaW5nIENPUFkgVE8gd2l0aCB0aGUgSlNPTiBmb3JtYXQuCgpXaGVuIGVuYWJsZWQs IHRoaXMgb3B0aW9uIHdyYXBzIHRoZSBvdXRwdXQgaW4gYSB0b3AtbGV2ZWwgSlNPTiBhcnJheQoo ZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzIHdpdGggY29tbWEtc2VwYXJhdGVkIGVsZW1lbnRz KSwgbWFraW5nIHRoZQplbnRpcmUgcmVzdWx0IGEgdmFsaWQgc2luZ2xlIEpTT04gdmFsdWUuIFdp dGhvdXQgdGhpcyBvcHRpb24sIHRoZSBkZWZhdWx0CmJlaGF2aW9yIGlzIHRvIG91dHB1dCBhIHN0 cmVhbSBvZiBpbmRlcGVuZGVudCBKU09OIG9iamVjdHMuCgpBdHRlbXB0aW5nIHRvIHVzZSB0aGlz IG9wdGlvbiB3aXRoIENPUFkgRlJPTSBvciB3aXRoIGZvcm1hdHMgb3RoZXIgdGhhbgpKU09OIHdp bGwgcmFpc2UgYW4gZXJyb3IuCgpBdXRob3I6IEpvZSBDb253YXkgPG1haWxAam9lY29ud2F5LmNv bT4KQXV0aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBKdW53YW5nIFpoYW8gPHpoandwa3VAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTWFzYWhp a28gU2F3YWRhIDxzYXdhZGEubXNoa0BnbWFpbC5jb20+LApSZXZpZXdlZC1ieTogRmxvcmVudHMg VHNlbGFpIDxmbG9yZW50cy50c2VsYWlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1 bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWkyemdUMDd0M2QteVJfY3k0c2ZyckxVJTNEa2Nn JTQwbWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS82YTA0NjI4 ZC0wZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29ud2F5LmNvbQotLS0KIGRvYy9zcmMv c2dtbC9yZWYvY29weS5zZ21sICAgICAgICAgfCAzMCArKysrKysrKysrKysrKysrKysrKysrCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgIHwgMTMgKysrKysrKysrKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICB8IDQxICsrKysrKysrKysrKysrKysrKysrKysr KysrKystLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICB8ICAyICstCiBzcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgIHwgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb3B5Lm91dCB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weS5zcWwgICAgICB8IDEwICsrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQs IDEyNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggNzVm NTViYmY2ZjguLmE3OTU4N2Y3NjEzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHku c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtNDAsNiArNDAsNyBAQCBD T1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgSEVBREVSIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiB8IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5pbnRlZ2VyPC9yZXBsYWNlYWJsZT4gfCBNQVRDSCBdCiAgICAgUVVPVEUgJzxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5xdW90ZV9jaGFyYWN0ZXI8L3JlcGxhY2VhYmxlPicK ICAgICBFU0NBUEUgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lc2NhcGVfY2hhcmFj dGVyPC9yZXBsYWNlYWJsZT4nCisgICAgRk9SQ0VfQVJSQVkgWyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBGT1JDRV9RVU9URSB7ICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4g WywgLi4uXSApIHwgKiB9CiAgICAgRk9SQ0VfTk9UX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQog ICAgIEZPUkNFX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQpAQCAtMzY2LDYgKzM2NywxOSBAQCBD T1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY29weS1wYXJhbXMtZm9yY2UtYXJyYXkiPgor ICAgIDx0ZXJtPjxsaXRlcmFsPkZPUkNFX0FSUkFZPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRm9yY2Ugb3V0cHV0IG9mIHNxdWFyZSBicmFja2V0 cyBhcyBhcnJheSBkZWNvcmF0aW9ucyBhdCB0aGUgYmVnaW5uaW5nCisgICAgICBhbmQgZW5kIG9m IG91dHB1dCwgYW5kIGNvbW1hcyBiZXR3ZWVuIHRoZSByb3dzLiBJdCBpcyBhbGxvd2VkIG9ubHkg aW4KKyAgICAgIDxjb21tYW5kPkNPUFkgVE88L2NvbW1hbmQ+LCBhbmQgb25seSB3aGVuIHVzaW5n CisgICAgICA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuIFRoZSBkZWZhdWx0IGlzCisg ICAgICA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jb3B5 LXBhcmFtcy1mb3JjZS1xdW90ZSI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Rk9SQ0VfUVVPVEU8L2xp dGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTExMDMsNiArMTExNywyMiBAQCBDT1BZ IGNvdW50cnkgVE8gU1RET1VUIChERUxJTUlURVIgJ3wnKTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAg IDwvcGFyYT4KIAorPHBhcmE+CisgICBXaGVuIHRoZSA8bGl0ZXJhbD5GT1JDRV9BUlJBWTwvbGl0 ZXJhbD4gb3B0aW9uIGlzIGVuYWJsZWQsCisgICB0aGUgZW50aXJlIG91dHB1dCBpcyB3cmFwcGVk IGluIGEgc2luZ2xlIEpTT04gYXJyYXkgd2l0aCByb3dzIHNlcGFyYXRlZCBieSBjb21tYXM6Cis8 cHJvZ3JhbWxpc3Rpbmc+CitDT1BZIChTRUxFQ1QgKiBGUk9NIChWQUxVRVMoMSksKDIpKSB2YWwo aWQpKSBUTyBTVERPVVQgIChGT1JNQVQgSlNPTiwgRk9SQ0VfQVJSQVkpOworPC9wcm9ncmFtbGlz dGluZz4KK1RoZSBvdXRwdXQgaXMgYXMgZm9sbG93czoKKzxzY3JlZW4+CitbCisgeyJpZCI6MX0K Kyx7ImlkIjoyfQorXQorPC9zY3JlZW4+Cis8L3BhcmE+CisKKwogICA8cGFyYT4KICAgIFRvIGNv cHkgZGF0YSBmcm9tIGEgZmlsZSBpbnRvIHRoZSA8bGl0ZXJhbD5jb3VudHJ5PC9saXRlcmFsPiB0 YWJsZToKIDxwcm9ncmFtbGlzdGluZz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCAyOWMxMjFjN2YwOC4u ODQyNTRkNDZhNjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTU2OSw2ICs1NjksNyBAQCBQcm9jZXNz Q29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCWJvb2wJCW9uX2Vycm9yX3NwZWNpZmll ZCA9IGZhbHNlOwogCWJvb2wJCWxvZ192ZXJib3NpdHlfc3BlY2lmaWVkID0gZmFsc2U7CiAJYm9v bAkJcmVqZWN0X2xpbWl0X3NwZWNpZmllZCA9IGZhbHNlOworCWJvb2wJCWZvcmNlX2FycmF5X3Nw ZWNpZmllZCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKm9wdGlvbjsKIAogCS8qIFN1cHBvcnQgZXh0 ZXJuYWwgdXNlIGZvciBvcHRpb24gc2FuaXR5IGNoZWNraW5nICovCkBAIC03MjUsNiArNzI2LDEz IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCWRlZmVs LT5kZWZuYW1lKSwKIAkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkZWZlbC0+bG9j YXRpb24pKSk7CiAJCX0KKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiZm9yY2Vf YXJyYXkiKSA9PSAwKQorCQl7CisJCQlpZiAoZm9yY2VfYXJyYXlfc3BlY2lmaWVkKQorCQkJCWVy cm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUpOworCQkJZm9yY2VfYXJyYXlfc3Bl Y2lmaWVkID0gdHJ1ZTsKKwkJCW9wdHNfb3V0LT5mb3JjZV9hcnJheSA9IGRlZkdldEJvb2xlYW4o ZGVmZWwpOworCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgIm9uX2Vycm9y IikgPT0gMCkKIAkJewogCQkJaWYgKG9uX2Vycm9yX3NwZWNpZmllZCkKQEAgLTk2Nyw2ICs5NzUs MTEgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCWVycm1zZygiQ09QWSAlcyBt b2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiLCAiSlNPTiIsICJDT1BZIEZST00iKSk7CiAKKwlp ZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OICYmIG9wdHNfb3V0LT5mb3Jj ZV9hcnJheSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiQ09QWSAlcyBjYW4gb25seSBiZSB1c2VkIHdp dGggSlNPTiBtb2RlIiwgIkZPUkNFX0FSUkFZIikpOworCiAJaWYgKG9wdHNfb3V0LT5kZWZhdWx0 X3ByaW50KQogCXsKIAkJaWYgKCFpc19mcm9tKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCBlODcz MTBlYzVhMC4uNGVhNDRkYWVlMGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC04Niw2ICs4Niw3 IEBAIHR5cGVkZWYgc3RydWN0IENvcHlUb1N0YXRlRGF0YQogCUxpc3QJICAgKmF0dG51bWxpc3Q7 CQkvKiBpbnRlZ2VyIGxpc3Qgb2YgYXR0bnVtcyB0byBjb3B5ICovCiAJY2hhcgkgICAqZmlsZW5h bWU7CQkvKiBmaWxlbmFtZSwgb3IgTlVMTCBmb3IgU1RET1VUICovCiAJYm9vbAkJaXNfcHJvZ3Jh bTsJCS8qIGlzICdmaWxlbmFtZScgYSBwcm9ncmFtIHRvIHBvcGVuPyAqLworCWJvb2wJCWpzb25f cm93X2RlbGltX25lZWRlZDsJLyogbmVlZCBkZWxpbWl0ZXIgYmVmb3JlIG5leHQgcm93ICovCiAJ U3RyaW5nSW5mbwlqc29uX2J1ZjsJCS8qIHJldXNhYmxlIGJ1ZmZlciBmb3IgSlNPTiBvdXRwdXQs IGl0IGlzCiAJCQkJCQkJCSAqIGluaXRsaWF6ZWQgaW4gQmVnaW5Db3B5VG8gICovCiAJY29weV9k YXRhX2Rlc3RfY2IgZGF0YV9kZXN0X2NiOyAvKiBmdW5jdGlvbiBmb3Igd3JpdGluZyBkYXRhICov CkBAIC0xMzUsNiArMTM2LDcgQEAgc3RhdGljIHZvaWQgQ29weVRvVGV4dExpa2VPbmVSb3coQ29w eVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJIGJvb2wgaXNf Y3N2KTsKIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlRW5kKENvcHlUb1N0YXRlIGNzdGF0ZSk7 CiBzdGF0aWMgdm9pZCBDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVU YWJsZVNsb3QgKnNsb3QpOworc3RhdGljIHZvaWQgQ29weVRvSnNvbkVuZChDb3B5VG9TdGF0ZSBj c3RhdGUpOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5U3RhcnQoQ29weVRvU3RhdGUgY3N0YXRl LCBUdXBsZURlc2MgdHVwRGVzYyk7CiBzdGF0aWMgdm9pZCBDb3B5VG9CaW5hcnlPdXRGdW5jKENv cHlUb1N0YXRlIGNzdGF0ZSwgT2lkIGF0dHR5cGlkLCBGbWdySW5mbyAqZmluZm8pOwogc3RhdGlj IHZvaWQgQ29weVRvQmluYXJ5T25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNs b3QgKnNsb3QpOwpAQCAtMTc2LDcgKzE3OCw3IEBAIHN0YXRpYyBjb25zdCBDb3B5VG9Sb3V0aW5l IENvcHlUb1JvdXRpbmVKc29uID0gewogCS5Db3B5VG9TdGFydCA9IENvcHlUb1RleHRMaWtlU3Rh cnQsCiAJLkNvcHlUb091dEZ1bmMgPSBDb3B5VG9UZXh0TGlrZU91dEZ1bmMsCiAJLkNvcHlUb09u ZVJvdyA9IENvcHlUb0pzb25PbmVSb3csCi0JLkNvcHlUb0VuZCA9IENvcHlUb1RleHRMaWtlRW5k LAorCS5Db3B5VG9FbmQgPSBDb3B5VG9Kc29uRW5kLAogfTsKIAogLyogYmluYXJ5IGZvcm1hdCAq LwpAQCAtMjQyLDYgKzI0NCwxOCBAQCBDb3B5VG9UZXh0TGlrZVN0YXJ0KENvcHlUb1N0YXRlIGNz dGF0ZSwgVHVwbGVEZXNjIHR1cERlc2MpCiAKIAkJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNz dGF0ZSk7CiAJfQorCisJaWYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNP TikKKwl7CisJCS8qCisJCSAqIElmIEZPUkNFX0FSUkFZIGhhcyBiZWVuIHNwZWNpZmllZCwgc2Vu ZCB0aGUgb3BlbmluZyBicmFja2V0LgorCQkgKi8KKwkJaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9h cnJheSkKKwkJeworCQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ1snKTsKKwkJCUNvcHlTZW5kVGV4 dExpa2VFbmRPZlJvdyhjc3RhdGUpOworCQl9CisJfQogfQogCiAvKgpAQCAtMzE4LDEzICszMzIs MjQgQEAgQ29weVRvVGV4dExpa2VPbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLAogCUNvcHlTZW5k VGV4dExpa2VFbmRPZlJvdyhjc3RhdGUpOwogfQogCi0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUg ZW5kIGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMgKi8KKy8qIEltcGxl bWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzICov CiBzdGF0aWMgdm9pZAogQ29weVRvVGV4dExpa2VFbmQoQ29weVRvU3RhdGUgY3N0YXRlKQogewog CS8qIE5vdGhpbmcgdG8gZG8gaGVyZSAqLwogfQogCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUg ZW5kIGNhbGxiYWNrIGZvciBqc29uIGZvcm1hdCAqLworc3RhdGljIHZvaWQKK0NvcHlUb0pzb25F bmQoQ29weVRvU3RhdGUgY3N0YXRlKQoreworCWlmIChjc3RhdGUtPm9wdHMuZm9yY2VfYXJyYXkp CisJeworCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnXScpOworCQlDb3B5U2VuZFRleHRMaWtlRW5k T2ZSb3coY3N0YXRlKTsKKwl9Cit9CisKIC8qIEltcGxlbWVudGF0aW9uIG9mIHBlci1yb3cgY2Fs bGJhY2sgZm9yIGpzb24gZm9ybWF0ICovCiBzdGF0aWMgdm9pZAogQ29weVRvSnNvbk9uZVJvdyhD b3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQpAQCAtMzQ1LDYgKzM3MCwx OCBAQCBDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3Qg KnNsb3QpCiAJcm93ZGF0YSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGVEYXR1bShzbG90KTsKIAlj b21wb3NpdGVfdG9fanNvbihyb3dkYXRhLCBjc3RhdGUtPmpzb25fYnVmLCBmYWxzZSk7CiAKKwlp ZiAoY3N0YXRlLT5vcHRzLmZvcmNlX2FycmF5KQorCXsKKwkJaWYgKGNzdGF0ZS0+anNvbl9yb3df ZGVsaW1fbmVlZGVkKQorCQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJywnKTsKKwkJZWxzZQorCQl7 CisJCQkvKiBmaXJzdCByb3cgbmVlZHMgbm8gZGVsaW1pdGVyICovCisJCQlDb3B5U2VuZENoYXIo Y3N0YXRlLCAnICcpOworCQkJY3N0YXRlLT5qc29uX3Jvd19kZWxpbV9uZWVkZWQgPSB0cnVlOwor CQl9CisJfQorCiAJQ29weVNlbmREYXRhKGNzdGF0ZSwgY3N0YXRlLT5qc29uX2J1Zi0+ZGF0YSwg Y3N0YXRlLT5qc29uX2J1Zi0+bGVuKTsKIAogCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3Rh dGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDBkOTY0OWMxZjBhLi40YjE4Y2M2ZTJjZCAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgQ29weV9jb21tb25f b3B0aW9ucywgIkRFRkFVTFQiLCAiRk9SQ0VfTk9UX05VTEwiLCAiRk9SQ0VfTlVMTCIsICJGUkVF WkUiLCBcCiAKIC8qIENPUFkgVE8gb3B0aW9ucyAqLwogI2RlZmluZSBDb3B5X3RvX29wdGlvbnMg XAotQ29weV9jb21tb25fb3B0aW9ucywgIkZPUkNFX1FVT1RFIgorQ29weV9jb21tb25fb3B0aW9u cywgIkZPUkNFX1FVT1RFIiwgIkZPUkNFX0FSUkFZIgogCiAvKgogICogVGhlc2Ugb2JqZWN0IHR5 cGVzIHdlcmUgaW50cm9kdWNlZCBsYXRlciB0aGFuIG91ciBzdXBwb3J0IGN1dG9mZiBvZgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvY29weS5oCmluZGV4IDJiNWJlZjY3MzhlLi5hYmVjZmU1MTA5OCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHku aApAQCAtODgsNiArODgsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5Rm9ybWF0T3B0aW9ucwogCUxp c3QJICAgKmZvcmNlX25vdG51bGw7CS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICovCiAJYm9vbAkJ Zm9yY2Vfbm90bnVsbF9hbGw7CS8qIEZPUkNFX05PVF9OVUxMICo/ICovCiAJYm9vbAkgICAqZm9y Y2Vfbm90bnVsbF9mbGFnczsJLyogcGVyLWNvbHVtbiBDU1YgRk5OIGZsYWdzICovCisJYm9vbAkJ Zm9yY2VfYXJyYXk7CS8qIGFkZCBKU09OIGFycmF5IGRlY29yYXRpb25zICovCiAJTGlzdAkgICAq Zm9yY2VfbnVsbDsJCS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICovCiAJYm9vbAkJZm9yY2VfbnVs bF9hbGw7IC8qIEZPUkNFX05VTEwgKj8gKi8KIAlib29sCSAgICpmb3JjZV9udWxsX2ZsYWdzOwkv KiBwZXItY29sdW1uIENTViBGTiBmbGFncyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb3B5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQK aW5kZXggNDMyNGUzZTQ5NjEuLjMwOWEzM2NhMmU3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NvcHkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29w eS5vdXQKQEAgLTgwLDYgKzgwLDE2IEBAIGNvcHkgKHNlbGVjdCAxIHVuaW9uIGFsbCBzZWxlY3Qg MikgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsKIGNvcHkgKHZhbHVlcyAoMSksICgyKSkg VE8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsKIHsiY29sdW1uMSI6MX0KIHsiY29sdW1uMSI6 Mn0KK2NvcHkgKHNlbGVjdCAxIHVuaW9uIGFsbCBzZWxlY3QgMikgdG8gc3Rkb3V0IHdpdGggKGZv cm1hdCBqc29uLCBmb3JjZV9hcnJheSB0cnVlKTsKK1sKKyB7Ij9jb2x1bW4/IjoxfQorLHsiP2Nv bHVtbj8iOjJ9CitdCitjb3B5ICh2YWx1ZXMgKDEpLCAoMikpIFRPIHN0ZG91dCB3aXRoIChmb3Jt YXQganNvbiwgZm9yY2VfYXJyYXkgdHJ1ZSk7CitbCisgeyJjb2x1bW4xIjoxfQorLHsiY29sdW1u MSI6Mn0KK10KIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IGpzb247CiB7InN0eWxlIjoiRE9TIiwi dGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9CiB7InN0eWxlIjoiVW5peCIsInRlc3QiOiJh YmNcbmRlZiIsImZpbGxlciI6Mn0KQEAgLTEyMiw2ICsxMzIsMjkgQEAgRVJST1I6ICBDT1BZIEpT T04gbW9kZSBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgRlJPTQogY29weSBjb3B5dGVzdCAoc3R5 bGUpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOwogRVJST1I6ICBjb2x1bW4gc2VsZWN0aW9uIGlz IG5vdCBzdXBwb3J0ZWQgaW4gSlNPTiBtb2RlCiAtLSBhbGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5 aWVsZCBlcnJvcgorLS0gc2hvdWxkIGZhaWw6IGZvcmNlX2FycmF5IHJlcXVpcmVzIGpzb24gZm9y bWF0Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGNzdiwgZm9yY2VfYXJyYXkgdHJ1 ZSk7CitFUlJPUjogIENPUFkgRk9SQ0VfQVJSQVkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIEpTT04g bW9kZQorLS0gZm9yY2VfYXJyYXkgdmFyaWFudHMKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChm b3JtYXQganNvbiwgZm9yY2VfYXJyYXkpOworWworIHsic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJj XHJcbmRlZiIsImZpbGxlciI6MX0KKyx7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIs ImZpbGxlciI6Mn0KKyx7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjoz fQorLHsic3R5bGUiOiJlc2NcXGFwZSIsInRlc3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVy Ijo0fQorXQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJh eSB0cnVlKTsKK1sKKyB7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIi OjF9CisseyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9CisseyJz dHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KKyx7InN0eWxlIjoiZXNj XFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK10KK2NvcHkgY29w eXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgZmFsc2UpOworeyJzdHls ZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgi LCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFi Y1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxy XFxcblxcbmIiLCJmaWxsZXIiOjR9CiAtLSBlbWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKIGNy ZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCiAgICAgaWQgYmlnc2VyaWFsLApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb3B5LnNxbAppbmRleCA0ZTlmNzQ1MzdmOC4uOGEyMDkwN2RkNGMgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nv cHkuc3FsCkBAIC04NSw2ICs4NSw4IEBAIGNvcHkgY29weXRlc3QzIHRvIHN0ZG91dCBjc3YgaGVh ZGVyOwogLS0tIHRlc3QgY29weWluZyBpbiBKU09OIG1vZGUgd2l0aCB2YXJpb3VzIHN0eWxlcwog Y29weSAoc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAyKSB0byBzdGRvdXQgd2l0aCAoZm9ybWF0 IGpzb24pOwogY29weSAodmFsdWVzICgxKSwgKDIpKSBUTyBzdGRvdXQgd2l0aCAoZm9ybWF0IGpz b24pOworY29weSAoc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAyKSB0byBzdGRvdXQgd2l0aCAo Zm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IHRydWUpOworY29weSAodmFsdWVzICgxKSwgKDIpKSBU TyBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IHRydWUpOwogY29weSBjb3B5 dGVzdCB0byBzdGRvdXQganNvbjsKIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNv bik7CiAKQEAgLTEwNSw2ICsxMDcsMTQgQEAgY29weSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1h dCBqc29uKTsKIGNvcHkgY29weXRlc3QgKHN0eWxlKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsK IC0tIGFsbCBvZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVycm9yCiAKKy0tIHNob3VsZCBmYWls OiBmb3JjZV9hcnJheSByZXF1aXJlcyBqc29uIGZvcm1hdAorY29weSBjb3B5dGVzdCB0byBzdGRv dXQgKGZvcm1hdCBjc3YsIGZvcmNlX2FycmF5IHRydWUpOworCistLSBmb3JjZV9hcnJheSB2YXJp YW50cworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSk7 Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IHRydWUp OworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSBmYWxz ZSk7CisKIC0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycwogY3JlYXRlIHRlbXAgdGFibGUg Y29weWpzb250ZXN0ICgKICAgICBpZCBiaWdzZXJpYWwsCi0tIAoyLjM0LjEKCg== --0000000000000c006b064c57d33d Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0004-COPY-TO-JSON-support-column-lists.patch" Content-Disposition: attachment; filename="v26-0004-COPY-TO-JSON-support-column-lists.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmepc4vo3 RnJvbSBjNTMxNzM3NjQxYjdjMDk1MWIyOWI4MDE0NDM2MjE2OGQxZjk2YWExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgNiBNYXIgMjAyNiAxNzozMDoyMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjI2 IDQvNF0gQ09QWSBUTyBKU09OIHN1cHBvcnQgY29sdW1uIGxpc3RzCgpBdXRob3I6IEFuZHJldyBE dW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogamlhbiBoZSA8amlhbi51 bml2ZXJzYWxpdHlAZ21haWwuY29tPgoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9D QUx2ZlVrQnhUWXk1dVdQRlZ3cGtfN2lpMnpnVDA3dDNkLXlSX2N5NHNmcnJMVSUzRGtjZyU0MG1h aWwuZ21haWwuY29tCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNmEwNDYyOGQtMGQ1 My00MWQ5LTllMzUtNWE4ZGMzMDJjMzRjQGpvZWNvbndheS5jb20KLS0tCiBzcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYyAgICAgIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0IHwgMTUgKysrKysrKy0tCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbCAgICAgIHwgIDUgKystCiAzIGZpbGVzIGNoYW5nZWQs IDYzIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5k ZXggNGVhNDRkYWVlMGEuLmE0NWVmNmJjYWIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtODks NiArODksOCBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5VG9TdGF0ZURhdGEKIAlib29sCQlqc29uX3Jv d19kZWxpbV9uZWVkZWQ7CS8qIG5lZWQgZGVsaW1pdGVyIGJlZm9yZSBuZXh0IHJvdyAqLwogCVN0 cmluZ0luZm8JanNvbl9idWY7CQkvKiByZXVzYWJsZSBidWZmZXIgZm9yIEpTT04gb3V0cHV0LCBp dCBpcwogCQkJCQkJCQkgKiBpbml0bGlhemVkIGluIEJlZ2luQ29weVRvICAqLworCVR1cGxlRGVz Ywl0dXBEZXNjOwkJLyogRGVzY3JpcHRvciBmb3IgdGhlIENPUFkgVE8gY29sdW1uIGxpc3QuCisJ CQkJCQkJCSAqIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgZm9yIEpTT04gb3V0cHV0LiAqLwogCWNv cHlfZGF0YV9kZXN0X2NiIGRhdGFfZGVzdF9jYjsgLyogZnVuY3Rpb24gZm9yIHdyaXRpbmcgZGF0 YSAqLwogCiAJQ29weUZvcm1hdE9wdGlvbnMgb3B0czsKQEAgLTM1OSwxMSArMzYxLDE3IEBAIENv cHlUb0pzb25PbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkK IAkvKgogCSAqIGNvbXBvc2l0ZV90b19qc29uKCkgcmVxdWlyZXMgYSBzdGFibGUgVHVwbGVEZXNj LiBUaGUgc2xvdCdzIGRlc2NyaXB0b3IKIAkgKiAoc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvcikg bWF5IGNoYW5nZSBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBhIFNFTEVDVAotCSAqIHF1ZXJ5LCB1 c2luZyBjc3RhdGUtPnF1ZXJ5RGVzYyBpbnN0ZWFkLiBObyBuZWVkIHdvcnJ5IHRoaXMgaWYgQ09Q WSBUTwotCSAqIGlzIGRpcmVjdGx5IGZyb20gYSB0YWJsZS4KKwkgKiBxdWVyeSwgdXNpbmcgY3N0 YXRlLT5xdWVyeURlc2MgaW5zdGVhZC4KKwkgKgorCSAqIE5vIG5lZWQgd29ycnkgdGhpcyBpZiBD T1BZIFRPIGlzIGRpcmVjdGx5IGZyb20gYSB0YWJsZSwgaG93ZWV2ZXIgd2hlbiBhCisJICogZGly ZWN0IENPUFkgVE8gZnJvbSBhIHRhYmxlIHdpdGggYSBzdWJzZXQgb2YgY29sdW1ucyBpbiBKU09O IG1vZGUsIHRoZQorCSAqIGRlZmF1bHQgc2xvdCdzIGRlc2NyaXB0b3IgaXMgb2J2aW91c2x5IG5v dCBPSywgdXNlIHRoZSBkZWRpY2F0ZWQKKwkgKiBUdXBsZURlc2MgY29uc3RydWN0ZWQgaW4gQmVn aW5Db3B5VE8uCiAJICovCi0JaWYgKCFjc3RhdGUtPnJlbCkKLQkJc2xvdC0+dHRzX3R1cGxlRGVz Y3JpcHRvciA9IGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjOworCWlmIChjc3RhdGUtPnJlbCAm JiAoUmVsYXRpb25HZXREZXNjcihjc3RhdGUtPnJlbCkgIT0gY3N0YXRlLT50dXBEZXNjKSkKKwkJ UmVsZWFzZVR1cGxlRGVzYyhzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yKTsKKworCXNsb3QtPnR0 c190dXBsZURlc2NyaXB0b3IgPSBjc3RhdGUtPnR1cERlc2M7CiAKIAlyZXNldFN0cmluZ0luZm8o Y3N0YXRlLT5qc29uX2J1Zik7CiAKQEAgLTgzOSw2ICs4NDcsNyBAQCBCZWdpbkNvcHlUbyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAKIAkJdHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoY3N0YXRlLT5y ZWwpOwogCQljc3RhdGUtPnBhcnRpdGlvbnMgPSBjaGlsZHJlbjsKKwkJY3N0YXRlLT50dXBEZXNj ID0gdHVwRGVzYzsKIAl9CiAJZWxzZQogCXsKQEAgLTk3Niw2ICs5ODUsNyBAQCBCZWdpbkNvcHlU byhQYXJzZVN0YXRlICpwc3RhdGUsCiAKIAkJdHVwRGVzYyA9IGNzdGF0ZS0+cXVlcnlEZXNjLT50 dXBEZXNjOwogCQl0dXBEZXNjID0gQmxlc3NUdXBsZURlc2ModHVwRGVzYyk7CisJCWNzdGF0ZS0+ dHVwRGVzYyA9IHR1cERlc2M7CiAJfQogCiAJLyogR2VuZXJhdGUgb3IgY29udmVydCBsaXN0IG9m IGF0dHJpYnV0ZXMgdG8gcHJvY2VzcyAqLwpAQCAtOTg2LDEwICs5OTYsMzggQEAgQmVnaW5Db3B5 VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCXsKIAkJY3N0YXRlLT5qc29uX2J1ZiA9IG1ha2VTdHJp bmdJbmZvKCk7CiAKLQkJaWYgKGF0dG5hbWVsaXN0ICE9IE5JTCkKLQkJCWVyZXBvcnQoRVJST1Is Ci0JCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQllcnJt c2coImNvbHVtbiBzZWxlY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBKU09OIG1vZGUiKSk7CisJ CWlmIChhdHRuYW1lbGlzdCAhPSBOSUwgJiYgcmVsKQorCQl7CisJCQljaGFyCSAgICphdHRuYW1l OworCQkJT2lkCQkJYXR0dHlwaWQ7CisJCQlpbnQzMgkJYXR0dHlwbW9kOworCQkJaW50CQkJYXR0 ZGltOworCQkJVHVwbGVEZXNjCXJlc3VsdERlc2M7CisKKwkJCS8qCisJCQkgKiBhbGxvY2F0ZSBh IG5ldyB0dXBsZSBkZXNjcmlwdG9yCisJCQkgKi8KKwkJCXJlc3VsdERlc2MgPSBDcmVhdGVUZW1w bGF0ZVR1cGxlRGVzYyhsaXN0X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3QpKTsKKworCQkJZm9y ZWFjaF9pbnQoYXR0bnVtLCBjc3RhdGUtPmF0dG51bWxpc3QpCisJCQl7CisJCQkJRm9ybV9wZ19h dHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodHVwRGVzYywgYXR0bnVtIC0gMSk7CisKKwkJ CQlhdHRuYW1lID0gTmFtZVN0cihhdHRyLT5hdHRuYW1lKTsKKwkJCQlhdHR0eXBpZCA9IGF0dHIt PmF0dHR5cGlkOworCQkJCWF0dHR5cG1vZCA9IGF0dHItPmF0dHR5cG1vZDsKKwkJCQlhdHRkaW0g PSBhdHRyLT5hdHRuZGltczsKKworCQkJCVR1cGxlRGVzY0luaXRFbnRyeShyZXN1bHREZXNjLAor CQkJCQkJCQkgICBmb3JlYWNoX2N1cnJlbnRfaW5kZXgoYXR0bnVtKSArIDEsCisJCQkJCQkJCSAg IGF0dG5hbWUsCisJCQkJCQkJCSAgIGF0dHR5cGlkLAorCQkJCQkJCQkgICBhdHR0eXBtb2QsCisJ CQkJCQkJCSAgIGF0dGRpbSk7CisJCQl9CisKKwkJCWNzdGF0ZS0+dHVwRGVzYyA9IEJsZXNzVHVw bGVEZXNjKHJlc3VsdERlc2MpOworCQl9CiAJfQogCiAJbnVtX3BoeXNfYXR0cnMgPSB0dXBEZXNj LT5uYXR0czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CmluZGV4IDMwOWEzM2NhMmU3Li4z ZmZiMDhiZmFkYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CkBAIC0xMjksOCArMTI5 LDYgQEAgY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCByZWplY3RfbGltaXQg MSk7CiBFUlJPUjogIENPUFkgUkVKRUNUX0xJTUlUIHJlcXVpcmVzIE9OX0VSUk9SIHRvIGJlIHNl dCB0byBJR05PUkUKIGNvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3JtYXQganNvbik7CiBFUlJP UjogIENPUFkgSlNPTiBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBGUk9NCi1jb3B5IGNv cHl0ZXN0IChzdHlsZSkgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Ci1FUlJPUjogIGNvbHVtbiBz ZWxlY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBKU09OIG1vZGUKIC0tIGFsbCBvZiB0aGUgYWJv dmUgc2hvdWxkIHlpZWxkIGVycm9yCiAtLSBzaG91bGQgZmFpbDogZm9yY2VfYXJyYXkgcmVxdWly ZXMganNvbiBmb3JtYXQKIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQgY3N2LCBmb3Jj ZV9hcnJheSB0cnVlKTsKQEAgLTE1NSw2ICsxNTMsMTkgQEAgY29weSBjb3B5dGVzdCB0byBzdGRv dXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSBmYWxzZSk7CiB7InN0eWxlIjoiVW5peCIsInRl c3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KIHsic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJk ZWYiLCJmaWxsZXIiOjN9CiB7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxu XFxuYiIsImZpbGxlciI6NH0KKy0tIGNvbHVtbiBsaXN0IHdpdGgganNvbiBmb3JtYXQKK2NvcHkg Y29weXRlc3QgKHN0eWxlLCBmaWxsZXIpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworeyJzdHls ZSI6IkRPUyIsImZpbGxlciI6MTY2NzM5MTc2M30KK3sic3R5bGUiOiJVbml4IiwiZmlsbGVyIjox NzAxMDU1MDc1fQoreyJzdHlsZSI6Ik1hYyIsImZpbGxlciI6MTY2NzM5MTc2MX0KK3sic3R5bGUi OiJlc2NcXGFwZSIsImZpbGxlciI6MTkxODY1Njc5MX0KK2NvcHkgY29weXRlc3QgKHN0eWxlLCBm aWxsZXIpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sICBmb3JjZV9hcnJheSB0cnVlKTsKK1sKKyB7 InN0eWxlIjoiRE9TIiwiZmlsbGVyIjoxNjY3MzkxNzYzfQorLHsic3R5bGUiOiJVbml4IiwiZmls bGVyIjoxNzAxMDU1MDc1fQorLHsic3R5bGUiOiJNYWMiLCJmaWxsZXIiOjE2NjczOTE3NjF9Ciss eyJzdHlsZSI6ImVzY1xcYXBlIiwiZmlsbGVyIjoxOTE4NjU2NzkxfQorXQogLS0gZW1iZWRkZWQg ZXNjYXBlZCBjaGFyYWN0ZXJzCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRlc3QgKAogICAg IGlkIGJpZ3NlcmlhbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKaW5kZXggOGEyMDkwN2RkNGMuLmRhZTk3 YmViYjdkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbApAQCAtMTA0LDcgKzEwNCw2IEBAIGNvcHkgY29w eXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfbnVsbCAqKTsKIGNvcHkgY29weXRl c3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgb25fZXJyb3IgaWdub3JlKTsKIGNvcHkgY29weXRl c3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgcmVqZWN0X2xpbWl0IDEpOwogY29weSBjb3B5dGVz dCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKLWNvcHkgY29weXRlc3QgKHN0eWxlKSB0byBzdGRv dXQgKGZvcm1hdCBqc29uKTsKIC0tIGFsbCBvZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVycm9y CiAKIC0tIHNob3VsZCBmYWlsOiBmb3JjZV9hcnJheSByZXF1aXJlcyBqc29uIGZvcm1hdApAQCAt MTE1LDYgKzExNCwxMCBAQCBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZv cmNlX2FycmF5KTsKIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2Vf YXJyYXkgdHJ1ZSk7CiBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNl X2FycmF5IGZhbHNlKTsKIAorLS0gY29sdW1uIGxpc3Qgd2l0aCBqc29uIGZvcm1hdAorY29weSBj b3B5dGVzdCAoc3R5bGUsIGZpbGxlcikgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Citjb3B5IGNv cHl0ZXN0IChzdHlsZSwgZmlsbGVyKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCAgZm9yY2VfYXJy YXkgdHJ1ZSk7CisKIC0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycwogY3JlYXRlIHRlbXAg dGFibGUgY29weWpzb250ZXN0ICgKICAgICBpZCBiaWdzZXJpYWwsCi0tIAoyLjM0LjEKCg== --0000000000000c006b064c57d33d Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0002-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v26-0002-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmepc4vg1 RnJvbSA3MjQ0MTMxZjQ3MTAyMjhmM2UzOTk4NTI0ZGNkOTMwZTM0OWUwMGJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgNiBNYXIgMjAyNiAxNDozMjo0OCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjI2 IDIvNF0ganNvbiBmb3JtYXQgZm9yIENPUFkgVE8KClRoaXMgaW50cm9kdWNlcyB0aGUgSlNPTiBm b3JtYXQgb3B0aW9uIGZvciB0aGUgQ09QWSBUTyBjb21tYW5kLCBhbGxvd2luZyB1c2Vycwp0byBl eHBvcnQgcXVlcnkgcmVzdWx0cyBvciB0YWJsZSBkYXRhIGRpcmVjdGx5IGFzIGEgc2luZ2xlIEpT T04gb2JqZWN0IG9yIGEKc3RyZWFtIG9mIEpTT04gb2JqZWN0cy4KClRoZSBKU09OIGZvcm1hdCBp cyBjdXJyZW50bHkgc3VwcG9ydGVkIG9ubHkgZm9yIENPUFkgVE8gb3BlcmF0aW9uczsgaXQKaXMg bm90IGF2YWlsYWJsZSBmb3IgQ09QWSBGUk9NLgoKSlNPTiBmb3JtYXQgaXMgaW5jb21wYXRpYmxl IHdpdGggc29tZSBzdGFuZGFyZCB0ZXh0L0NTViBwYXJzaW5nIG9yIGZvcm1hdHRpbmcgb3B0aW9u cywKaW5jbHVkaW5nOgotIEhFQURFUgotIERFRkFVTFQKLSBOVUxMCi0gREVMSU1JVEVSCi0gRk9S Q0UgUVVPVEUgLyBGT1JDRSBOT1QgTlVMTAoKUmVncmVzc2lvbiB0ZXN0cyBjb3ZlcmluZyB2YWxp ZCBKU09OIGV4cG9ydHMgYW5kIGVycm9yIGhhbmRsaW5nIGZvcgppbmNvbXBhdGlibGUgb3B0aW9u cyBoYXZlIGJlZW4gYWRkZWQgdG8gc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwuCgpBdXRo b3I6IEpvZSBDb253YXkgPG1haWxAam9lY29ud2F5LmNvbT4KQXV0aG9yOiBqaWFuIGhlIDxqaWFu LnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiAiQW5kcmV5IE0uIEJvcm9kaW4i IDx4NG1tbUB5YW5kZXgtdGVhbS5ydT4sClJldmlld2VkLWJ5OiBEZWFuIFJhc2hlZWQgPGRlYW4u YS5yYXNoZWVkQGdtYWlsLmNvbT4sClJldmlld2VkLWJ5OiBEYW5pZWwgVmVyaXRlIDxkYW5pZWxA bWFuaXRvdS1tYWlsLm9yZz4sClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1 bnNsYW5lLm5ldD4sClJldmlld2VkLWJ5OiBEYXZpbiBTaGVhcmVyIDxkYXZpbkBhcGFjaGUub3Jn PiwKUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2FkYSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPiwK UmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJhIDxhbHZoZXJyZUBhbHZoLm5vLWlwLm9yZz4KUmV2 aWV3ZWQtYnk6IEp1bndhbmcgWmhhbyA8emhqd3BrdUBnbWFpbC5jb20+CgpkaXNjdXNzaW9uOiBo dHRwczovL3Bvc3Rnci5lcy9tL0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWkyemdUMDd0M2QteVJf Y3k0c2ZyckxVJTNEa2NnJTQwbWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS82YTA0NjI4ZC0wZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29ud2F5LmNv bQotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sICAgICAgICAgfCAxMyArKystLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAgICAgICB8IDQ5ICsrKysrKysrKysrKy0tLS0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgIHwgODUgKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgfCAgOCArKysK IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMgICAgICAgfCAgNSArLQogc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 LmggICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oICAgICAgICAgICB8ICAy ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgfCA4NiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsICAgICAgfCA1 MSArKysrKysrKysrKysrKysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDI3MSBpbnNlcnRpb25zKCsp LCAzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IDBhZDg5MGVmOTVmLi43NWY1NWJi ZjZmOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9jb3B5LnNnbWwKQEAgLTIyOCwxMCArMjI4LDE1IEBAIENPUFkgeyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVw bGFjZWFibGUKICAgICAgIFNlbGVjdHMgdGhlIGRhdGEgZm9ybWF0IHRvIGJlIHJlYWQgb3Igd3Jp dHRlbjoKICAgICAgIDxsaXRlcmFsPnRleHQ8L2xpdGVyYWw+LAogICAgICAgPGxpdGVyYWw+Y3N2 PC9saXRlcmFsPiAoQ29tbWEgU2VwYXJhdGVkIFZhbHVlcyksCisgICAgICA8bGl0ZXJhbD5qc29u PC9saXRlcmFsPiAoSmF2YVNjcmlwdCBPYmplY3QgTm90YXRpb24pLAogICAgICAgb3IgPGxpdGVy YWw+YmluYXJ5PC9saXRlcmFsPi4KICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPnRleHQ8 L2xpdGVyYWw+LgogICAgICAgU2VlIDx4cmVmIGxpbmtlbmQ9InNxbC1jb3B5LWZpbGUtZm9ybWF0 cyIvPiBiZWxvdyBmb3IgZGV0YWlscy4KICAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAg IFRoZSA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBvcHRpb24gaXMgYWxsb3dlZCBvbmx5IGluCisg ICAgICA8Y29tbWFuZD5DT1BZIFRPPC9jb21tYW5kPi4KKyAgICAgPC9wYXJhPgogICAgIDwvbGlz dGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtMjY2LDcgKzI3MSw3IEBAIENPUFkgeyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsg KCA8cmVwbGFjZWFibGUKICAgICAgIChsaW5lKSBvZiB0aGUgZmlsZS4gIFRoZSBkZWZhdWx0IGlz IGEgdGFiIGNoYXJhY3RlciBpbiB0ZXh0IGZvcm1hdCwKICAgICAgIGEgY29tbWEgaW4gPGxpdGVy YWw+Q1NWPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgICBUaGlzIG11c3QgYmUgYSBzaW5nbGUgb25l LWJ5dGUgY2hhcmFjdGVyLgotICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1 c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IGZvcm1hdC4KKyAgICAgIFRoaXMgb3B0aW9u IGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBvciA8 bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0yODAsNyArMjg1LDcgQEAgQ09QWSB7IDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxy ZXBsYWNlYWJsZQogICAgICAgc3RyaW5nIGluIDxsaXRlcmFsPkNTVjwvbGl0ZXJhbD4gZm9ybWF0 LiBZb3UgbWlnaHQgcHJlZmVyIGFuCiAgICAgICBlbXB0eSBzdHJpbmcgZXZlbiBpbiB0ZXh0IGZv cm1hdCBmb3IgY2FzZXMgd2hlcmUgeW91IGRvbid0IHdhbnQgdG8KICAgICAgIGRpc3Rpbmd1aXNo IG51bGxzIGZyb20gZW1wdHkgc3RyaW5ncy4KLSAgICAgIFRoaXMgb3B0aW9uIGlzIG5vdCBhbGxv d2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBmb3JtYXQuCisgICAgICBU aGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0 ZXJhbD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICA8L3BhcmE+CiAK ICAgICAgPG5vdGU+CkBAIC0zMDMsNyArMzA4LDcgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQog ICAgICAgaXMgZm91bmQgaW4gdGhlIGlucHV0IGZpbGUsIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRo ZSBjb3JyZXNwb25kaW5nIGNvbHVtbgogICAgICAgd2lsbCBiZSB1c2VkLgogICAgICAgVGhpcyBv cHRpb24gaXMgYWxsb3dlZCBvbmx5IGluIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4sIGFu ZCBvbmx5IHdoZW4KLSAgICAgIG5vdCB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IGZv cm1hdC4KKyAgICAgIG5vdCB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IG9yIDxsaXRl cmFsPmpzb248L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+ CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTMzMCw3ICszMzUsNyBAQCBDT1BZIHsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxh Y2VhYmxlCiAgICAgICA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+IGNvbW1hbmRzLgogICAg ICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQg d2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IGZvcm1hdC4KKyAgICAgIFRoaXMg b3B0aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFs PiBvciA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgIDwvcGFyYT4KICAgICA8 L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggMmY0NmJl NTE2ZjIuLjI5YzEyMWM3ZjA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC01OTcsNiArNTk3LDggQEAg UHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQlvcHRzX291dC0+Zm9y bWF0ID0gQ09QWV9GT1JNQVRfQ1NWOwogCQkJZWxzZSBpZiAoc3RyY21wKGZtdCwgImJpbmFyeSIp ID09IDApCiAJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX0JJTkFSWTsKKwkJCWVs c2UgaWYgKHN0cmNtcChmbXQsICJqc29uIikgPT0gMCkKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID0g Q09QWV9GT1JNQVRfSlNPTjsKIAkJCWVsc2UKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC03NTYsMjEgKzc1OCwz MiBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCSAqIENoZWNrIGZv ciBpbmNvbXBhdGlibGUgb3B0aW9ucyAobXVzdCBkbyB0aGVzZSB0aHJlZSBiZWZvcmUgaW5zZXJ0 aW5nCiAJICogZGVmYXVsdHMpCiAJICovCi0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9G T1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5kZWxpbSkKKwlpZiAob3B0c19vdXQtPmRlbGltICYm CisJCShvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSB8fAorCQkgb3B0c19v dXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OKSkKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQko ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0 aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCi0JCQkJIGVycm1zZygi Y2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVMSU1JVEVSIikpKTsKKwkJCQll cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID09IENP UFlfRk9STUFUX0JJTkFSWQorCQkJCT8gZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5B UlkgbW9kZSIsICJERUxJTUlURVIiKQorCQkJCTogZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBp biBKU09OIG1vZGUiLCAiREVMSU1JVEVSIikpOwogCi0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0g Q09QWV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQorCWlmIChvcHRzX291 dC0+bnVsbF9wcmludCAmJgorCQkob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5B UlkgfHwKKwkJIG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikpCiAJCWVyZXBv cnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCSBlcnJt c2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIk5VTEwiKSkpOworCQkJCWVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCW9wdHNfb3V0LT5mb3JtYXQgPT0gQ09Q WV9GT1JNQVRfQklOQVJZCisJCQkJPyBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFS WSBtb2RlIiwgIk5VTEwiKQorCQkJCTogZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09O IG1vZGUiLCAiTlVMTCIpKTsKIAotCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFU X0JJTkFSWSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKKwlpZiAob3B0c19vdXQtPmRlZmF1 bHRfcHJpbnQgJiYKKwkJKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZIHx8 CisJCSBvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04pKQogCQllcmVwb3J0KEVS Uk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkgZXJybXNnKCJj YW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJERUZBVUxUIikpKTsKKwkJCQllcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID09IENPUFlf Rk9STUFUX0JJTkFSWQorCQkJCT8gZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkg bW9kZSIsICJERUZBVUxUIikKKwkJCQk6IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gSlNP TiBtb2RlIiwgIkRFRkFVTFQiKSk7CiAKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0 aW9ucyAqLwogCWlmICghb3B0c19vdXQtPmRlbGltKQpAQCAtODM2LDExICs4NDksMTUgQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkgZXJybXNnKCJDT1BZIGRl bGltaXRlciBjYW5ub3QgYmUgXCIlc1wiIiwgb3B0c19vdXQtPmRlbGltKSkpOwogCiAJLyogQ2hl Y2sgaGVhZGVyICovCi0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZ ICYmIG9wdHNfb3V0LT5oZWFkZXJfbGluZSAhPSBDT1BZX0hFQURFUl9GQUxTRSkKKwlpZiAob3B0 c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFICYmCisJCShvcHRzX291dC0+ Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSB8fAorCQkgb3B0c19vdXQtPmZvcm1hdCA9PSBD T1BZX0ZPUk1BVF9KU09OKSkKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkg b3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCi0JCQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMg aW4gQklOQVJZIG1vZGUiLCAiSEVBREVSIikpKTsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID09IENP UFlfRk9STUFUX0JJTkFSWQorCQkJCT8gZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5B UlkgbW9kZSIsICJIRUFERVIiKQorCQkJCTogZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBK U09OIG1vZGUiLCAiSEVBREVSIikpOwogCiAJLyogQ2hlY2sgcXVvdGUgKi8KIAlpZiAob3B0c19v dXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgb3B0c19vdXQtPnF1b3RlICE9IE5VTEwp CkBAIC05NDQsNiArOTYxLDEyIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCQkJIGVycm1zZygiQ09QWSAlcyBjYW5ub3QgYmUgdXNlZCB3aXRoICVzIiwgIkZSRUVa RSIsCiAJCQkJCQkiQ09QWSBUTyIpKSk7CiAKKwkvKiBDaGVjayBqc29uIGZvcm1hdCAqLworCWlm IChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04gJiYgaXNfZnJvbSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAorCQkJCWVycm1zZygiQ09QWSAlcyBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiLCAiSlNP TiIsICJDT1BZIEZST00iKSk7CisKIAlpZiAob3B0c19vdXQtPmRlZmF1bHRfcHJpbnQpCiAJewog CQlpZiAoIWlzX2Zyb20pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IDAzMjVhMTZmODJhLi5lODcz MTBlYzVhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl ICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAj aW5jbHVkZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5j bHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1 ZGUgIm1iL3BnX3djaGFyLmgiCkBAIC0zMyw2ICszNCw3IEBACiAjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNp bmNsdWRlICJ1dGlscy9qc29uLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKQEAgLTg0LDYg Kzg2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weVRvU3RhdGVEYXRhCiAJTGlzdAkgICAqYXR0bnVt bGlzdDsJCS8qIGludGVnZXIgbGlzdCBvZiBhdHRudW1zIHRvIGNvcHkgKi8KIAljaGFyCSAgICpm aWxlbmFtZTsJCS8qIGZpbGVuYW1lLCBvciBOVUxMIGZvciBTVERPVVQgKi8KIAlib29sCQlpc19w cm9ncmFtOwkJLyogaXMgJ2ZpbGVuYW1lJyBhIHByb2dyYW0gdG8gcG9wZW4/ICovCisJU3RyaW5n SW5mbwlqc29uX2J1ZjsJCS8qIHJldXNhYmxlIGJ1ZmZlciBmb3IgSlNPTiBvdXRwdXQsIGl0IGlz CisJCQkJCQkJCSAqIGluaXRsaWF6ZWQgaW4gQmVnaW5Db3B5VG8gICovCiAJY29weV9kYXRhX2Rl c3RfY2IgZGF0YV9kZXN0X2NiOyAvKiBmdW5jdGlvbiBmb3Igd3JpdGluZyBkYXRhICovCiAKIAlD b3B5Rm9ybWF0T3B0aW9ucyBvcHRzOwpAQCAtMTMwLDYgKzEzNCw3IEBAIHN0YXRpYyB2b2lkIENv cHlUb0NTVk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsK IHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVw bGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJCSBib29sIGlzX2Nzdik7CiBzdGF0aWMgdm9pZCBD b3B5VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpOworc3RhdGljIHZvaWQgQ29weVRv SnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKIHN0 YXRpYyB2b2lkIENvcHlUb0JpbmFyeVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNj IHR1cERlc2MpOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5T3V0RnVuYyhDb3B5VG9TdGF0ZSBj c3RhdGUsIE9pZCBhdHR0eXBpZCwgRm1nckluZm8gKmZpbmZvKTsKIHN0YXRpYyB2b2lkIENvcHlU b0JpbmFyeU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsK QEAgLTE0OCw5ICsxNTMsNiBAQCBzdGF0aWMgdm9pZCBDb3B5U2VuZEludDE2KENvcHlUb1N0YXRl IGNzdGF0ZSwgaW50MTYgdmFsKTsKIAogLyoKICAqIENPUFkgVE8gcm91dGluZXMgZm9yIGJ1aWx0 LWluIGZvcm1hdHMuCi0gKgotICogQ1NWIGFuZCB0ZXh0IGZvcm1hdHMgc2hhcmUgdGhlIHNhbWUg VGV4dExpa2Ugcm91dGluZXMgZXhjZXB0IGZvciB0aGUKLSAqIG9uZS1yb3cgY2FsbGJhY2suCiAg Ki8KIAogLyogdGV4dCBmb3JtYXQgKi8KQEAgLTE2OSw2ICsxNzEsMTQgQEAgc3RhdGljIGNvbnN0 IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUNTViA9IHsKIAkuQ29weVRvRW5kID0gQ29weVRv VGV4dExpa2VFbmQsCiB9OwogCisvKiBqc29uIGZvcm1hdCAqLworc3RhdGljIGNvbnN0IENvcHlU b1JvdXRpbmUgQ29weVRvUm91dGluZUpzb24gPSB7CisJLkNvcHlUb1N0YXJ0ID0gQ29weVRvVGV4 dExpa2VTdGFydCwKKwkuQ29weVRvT3V0RnVuYyA9IENvcHlUb1RleHRMaWtlT3V0RnVuYywKKwku Q29weVRvT25lUm93ID0gQ29weVRvSnNvbk9uZVJvdywKKwkuQ29weVRvRW5kID0gQ29weVRvVGV4 dExpa2VFbmQsCit9OworCiAvKiBiaW5hcnkgZm9ybWF0ICovCiBzdGF0aWMgY29uc3QgQ29weVRv Um91dGluZSBDb3B5VG9Sb3V0aW5lQmluYXJ5ID0gewogCS5Db3B5VG9TdGFydCA9IENvcHlUb0Jp bmFyeVN0YXJ0LApAQCAtMTg1LDEyICsxOTUsMTQgQEAgQ29weVRvR2V0Um91dGluZShjb25zdCBD b3B5Rm9ybWF0T3B0aW9ucyAqb3B0cykKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQ1NWOwogCWVs c2UgaWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJCXJldHVybiAmQ29w eVRvUm91dGluZUJpbmFyeTsKKwllbHNlIGlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRf SlNPTikKKwkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lSnNvbjsKIAogCS8qIGRlZmF1bHQgaXMgdGV4 dCAqLwogCXJldHVybiAmQ29weVRvUm91dGluZVRleHQ7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9u IG9mIHRoZSBzdGFydCBjYWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NWIGZvcm1hdHMgKi8KKy8qIElt cGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBjYWxsYmFjayBmb3IgdGV4dCwgQ1NWLCBhbmQganNv biBmb3JtYXRzICovCiBzdGF0aWMgdm9pZAogQ29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0 ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogewpAQCAtMjA5LDYgKzIyMSw4IEBAIENvcHlU b1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKIAkJ TGlzdENlbGwgICAqY3VyOwogCQlib29sCQloZHJfZGVsaW0gPSBmYWxzZTsKIAorCQlBc3NlcnQo Y3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OKTsKKwogCQlmb3JlYWNoKGN1 ciwgY3N0YXRlLT5hdHRudW1saXN0KQogCQl7CiAJCQlpbnQJCQlhdHRudW0gPSBsZmlyc3RfaW50 KGN1cik7CkBAIC0yMzEsNyArMjQ1LDcgQEAgQ29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0 ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogfQogCiAvKgotICogSW1wbGVtZW50YXRpb24g b2YgdGhlIG91dGZ1bmMgY2FsbGJhY2sgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzLiBBc3NpZ24K KyAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBvdXRmdW5jIGNhbGxiYWNrIGZvciB0ZXh0LCBDU1Ys IGFuZCBqc29uIGZvcm1hdHMuIEFzc2lnbgogICogdGhlIG91dHB1dCBmdW5jdGlvbiBkYXRhIHRv IHRoZSBnaXZlbiAqZmluZm8uCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0zMDQsMTMgKzMxOCwzOCBA QCBDb3B5VG9UZXh0TGlrZU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsCiAJQ29weVNlbmRUZXh0 TGlrZUVuZE9mUm93KGNzdGF0ZSk7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQg Y2FsbGJhY2sgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzICovCisvKiBJbXBsZW1lbnRhdGlvbiBv ZiB0aGUgZW5kIGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMgKi8KIHN0 YXRpYyB2b2lkCiBDb3B5VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJLyog Tm90aGluZyB0byBkbyBoZXJlICovCiB9CiAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHBlci1yb3cg Y2FsbGJhY2sgZm9yIGpzb24gZm9ybWF0ICovCitzdGF0aWMgdm9pZAorQ29weVRvSnNvbk9uZVJv dyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQoreworCURhdHVtCQly b3dkYXRhOworCisJLyoKKwkgKiBjb21wb3NpdGVfdG9fanNvbigpIHJlcXVpcmVzIGEgc3RhYmxl IFR1cGxlRGVzYy4gVGhlIHNsb3QncyBkZXNjcmlwdG9yCisJICogKHNsb3QtPnR0c190dXBsZURl c2NyaXB0b3IpIG1heSBjaGFuZ2UgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYSBTRUxFQ1QKKwkg KiBxdWVyeSwgdXNpbmcgY3N0YXRlLT5xdWVyeURlc2MgaW5zdGVhZC4gTm8gbmVlZCB3b3JyeSB0 aGlzIGlmIENPUFkgVE8KKwkgKiBpcyBkaXJlY3RseSBmcm9tIGEgdGFibGUuCisJICovCisJaWYg KCFjc3RhdGUtPnJlbCkKKwkJc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciA9IGNzdGF0ZS0+cXVl cnlEZXNjLT50dXBEZXNjOworCisJcmVzZXRTdHJpbmdJbmZvKGNzdGF0ZS0+anNvbl9idWYpOwor CisJcm93ZGF0YSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGVEYXR1bShzbG90KTsKKwljb21wb3Np dGVfdG9fanNvbihyb3dkYXRhLCBjc3RhdGUtPmpzb25fYnVmLCBmYWxzZSk7CisKKwlDb3B5U2Vu ZERhdGEoY3N0YXRlLCBjc3RhdGUtPmpzb25fYnVmLT5kYXRhLCBjc3RhdGUtPmpzb25fYnVmLT5s ZW4pOworCisJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNzdGF0ZSk7Cit9CisKIC8qCiAgKiBJ bXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhcnQgY2FsbGJhY2sgZm9yIGJpbmFyeSBmb3JtYXQuIFNl bmQgYSBoZWFkZXIKICAqIGZvciBhIGJpbmFyeSBjb3B5LgpAQCAtNDAyLDkgKzQ0MSwyMyBAQCBT ZW5kQ29weUJlZ2luKENvcHlUb1N0YXRlIGNzdGF0ZSkKIAogCXBxX2JlZ2lubWVzc2FnZSgmYnVm LCBQcU1zZ19Db3B5T3V0UmVzcG9uc2UpOwogCXBxX3NlbmRieXRlKCZidWYsIGZvcm1hdCk7CS8q IG92ZXJhbGwgZm9ybWF0ICovCi0JcHFfc2VuZGludDE2KCZidWYsIG5hdHRzKTsKLQlmb3IgKGkg PSAwOyBpIDwgbmF0dHM7IGkrKykKLQkJcHFfc2VuZGludDE2KCZidWYsIGZvcm1hdCk7IC8qIHBl ci1jb2x1bW4gZm9ybWF0cyAqLworCWlmIChjc3RhdGUtPm9wdHMuZm9ybWF0ICE9IENPUFlfRk9S TUFUX0pTT04pCisJeworCQlwcV9zZW5kaW50MTYoJmJ1ZiwgbmF0dHMpOworCQlmb3IgKGkgPSAw OyBpIDwgbmF0dHM7IGkrKykKKwkJCXBxX3NlbmRpbnQxNigmYnVmLCBmb3JtYXQpOyAvKiBwZXIt Y29sdW1uIGZvcm1hdHMgKi8KKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogRm9yIEpTT04gZm9y bWF0LCByZXBvcnQgb25lIHRleHQtZm9ybWF0IGNvbHVtbi4gIEVhY2ggQ29weURhdGEKKwkJICog bWVzc2FnZSBjb250YWlucyBvbmUgY29tcGxldGUgSlNPTiBvYmplY3QsIG5vdCBpbmRpdmlkdWFs IGNvbHVtbgorCQkgKiB2YWx1ZXMsIHNvIHRoZSBwZXItY29sdW1uIGNvdW50IGlzIGFsd2F5cyAx LgorCQkgKi8KKwkJcHFfc2VuZGludDE2KCZidWYsIDEpOworCQlwcV9zZW5kaW50MTYoJmJ1Ziwg MCk7CisJfQorCiAJcHFfZW5kbWVzc2FnZSgmYnVmKTsKIAljc3RhdGUtPmNvcHlfZGVzdCA9IENP UFlfRlJPTlRFTkQ7CiB9CkBAIC01MDYsNyArNTU5LDcgQEAgQ29weVNlbmRFbmRPZlJvdyhDb3B5 VG9TdGF0ZSBjc3RhdGUpCiB9CiAKIC8qCi0gKiBXcmFwcGVyIGZ1bmN0aW9uIG9mIENvcHlTZW5k RW5kT2ZSb3cgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzLiBTZW5kcyB0aGUKKyAqIFdyYXBwZXIg ZnVuY3Rpb24gb2YgQ29weVNlbmRFbmRPZlJvdyBmb3IgdGV4dCwgQ1NWLCBhbmQganNvbiBmb3Jt YXRzLiBTZW5kcyB0aGUKICAqIGxpbmUgdGVybWluYXRpb24gYW5kIGRvIGNvbW1vbiBhcHByb3By aWF0ZSB0aGluZ3MgZm9yIHRoZSBlbmQgb2Ygcm93LgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQK QEAgLTg4NSwxMSArOTM4LDIzIEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJ RXhlY3V0b3JTdGFydChjc3RhdGUtPnF1ZXJ5RGVzYywgMCk7CiAKIAkJdHVwRGVzYyA9IGNzdGF0 ZS0+cXVlcnlEZXNjLT50dXBEZXNjOworCQl0dXBEZXNjID0gQmxlc3NUdXBsZURlc2ModHVwRGVz Yyk7CiAJfQogCiAJLyogR2VuZXJhdGUgb3IgY29udmVydCBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8g cHJvY2VzcyAqLwogCWNzdGF0ZS0+YXR0bnVtbGlzdCA9IENvcHlHZXRBdHRudW1zKHR1cERlc2Ms IGNzdGF0ZS0+cmVsLCBhdHRuYW1lbGlzdCk7CiAKKwkvKiBKU09OIG91dHB1dHMgd2hvbGUgcm93 czsgYSBjb2x1bW4gbGlzdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgKi8KKwlpZiAoY3N0YXRlLT5vcHRz LmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OKQorCXsKKwkJY3N0YXRlLT5qc29uX2J1ZiA9IG1h a2VTdHJpbmdJbmZvKCk7CisKKwkJaWYgKGF0dG5hbWVsaXN0ICE9IE5JTCkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJ CQllcnJtc2coImNvbHVtbiBzZWxlY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBKU09OIG1vZGUi KSk7CisJfQorCiAJbnVtX3BoeXNfYXR0cnMgPSB0dXBEZXNjLT5uYXR0czsKIAogCS8qIENvbnZl cnQgRk9SQ0VfUVVPVEUgbmFtZSBsaXN0IHRvIHBlci1jb2x1bW4gZmxhZ3MsIGNoZWNrIHZhbGlk aXR5ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQppbmRleCAzYzNlMjQzMjRhOC4uNDBhZDkwNzM5MDEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQpAQCAtMzYxMiw2ICszNjEyLDEwIEBAIGNvcHlfb3B0X2l0ZW06CiAJCQkJewogCQkJCQkk JCA9IG1ha2VEZWZFbGVtKCJmb3JtYXQiLCAoTm9kZSAqKSBtYWtlU3RyaW5nKCJjc3YiKSwgQDEp OwogCQkJCX0KKwkJCXwgSlNPTgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlRGVmRWxlbSgiZm9ybWF0 IiwgKE5vZGUgKikgbWFrZVN0cmluZygianNvbiIpLCBAMSk7CisJCQkJfQogCQkJfCBIRUFERVJf UAogCQkJCXsKIAkJCQkJJCQgPSBtYWtlRGVmRWxlbSgiaGVhZGVyIiwgKE5vZGUgKikgbWFrZUJv b2xlYW4odHJ1ZSksIEAxKTsKQEAgLTM2OTQsNiArMzY5OCwxMCBAQCBjb3B5X2dlbmVyaWNfb3B0 X2VsZW06CiAJCQkJewogCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCQxLCAkMiwgQDEpOwogCQkJCX0K KwkJCXwgRk9STUFUX0xBIGNvcHlfZ2VuZXJpY19vcHRfYXJnCisJCQkJeworCQkJCQkkJCA9IG1h a2VEZWZFbGVtKCJmb3JtYXQiLCAkMiwgQDEpOworCQkJCX0KIAkJOwogCiBjb3B5X2dlbmVyaWNf b3B0X2FyZzoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbi5jCmluZGV4IDBiMTYxMzk4NDY1Li5mNjA5ZDdiOTQxNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbi5jCkBAIC04Niw4ICs4Niw2IEBAIHR5cGVkZWYgc3RydWN0IEpzb25B Z2dTdGF0ZQogCUpzb25VbmlxdWVCdWlsZGVyU3RhdGUgdW5pcXVlX2NoZWNrOwogfSBKc29uQWdn U3RhdGU7CiAKLXN0YXRpYyB2b2lkIGNvbXBvc2l0ZV90b19qc29uKERhdHVtIGNvbXBvc2l0ZSwg U3RyaW5nSW5mbyByZXN1bHQsCi0JCQkJCQkJICBib29sIHVzZV9saW5lX2ZlZWRzKTsKIHN0YXRp YyB2b2lkIGFycmF5X2RpbV90b19qc29uKFN0cmluZ0luZm8gcmVzdWx0LCBpbnQgZGltLCBpbnQg bmRpbXMsIGludCAqZGltcywKIAkJCQkJCQkgIGNvbnN0IERhdHVtICp2YWxzLCBjb25zdCBib29s ICpudWxscywgaW50ICp2YWxjb3VudCwKIAkJCQkJCQkgIEpzb25UeXBlQ2F0ZWdvcnkgdGNhdGVn b3J5LCBPaWQgb3V0ZnVuY29pZCwKQEAgLTUxNyw4ICs1MTUsOSBAQCBhcnJheV90b19qc29uX2lu dGVybmFsKERhdHVtIGFycmF5LCBTdHJpbmdJbmZvIHJlc3VsdCwgYm9vbCB1c2VfbGluZV9mZWVk cykKIAogLyoKICAqIFR1cm4gYSBjb21wb3NpdGUgLyByZWNvcmQgaW50byBKU09OLgorICogRXhw b3J0ZWQgc28gQ09QWSBUTyBjYW4gdXNlIGl0LgogICovCi1zdGF0aWMgdm9pZAordm9pZAogY29t cG9zaXRlX3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwgYm9vbCB1 c2VfbGluZV9mZWVkcykKIHsKIAlIZWFwVHVwbGVIZWFkZXIgdGQ7CmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKaW5kZXggZjhjMDg2NWNhODkuLjBkOTY0OWMxZjBhIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j CkBAIC0zNDI1LDcgKzM0MjUsNyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9p ZCwKIAogCQkJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NfFRPIGZpbGVuYW1lIFdJVEggKEZP Uk1BVCAqLwogCQkJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkZPUk1BVCIpKQotCQkJCUNPTVBMRVRF X1dJVEgoImJpbmFyeSIsICJjc3YiLCAidGV4dCIpOworCQkJCUNPTVBMRVRFX1dJVEgoImJpbmFy eSIsICJjc3YiLCAidGV4dCIsICJqc29uIik7CiAKIAkJCS8qIENvbXBsZXRlIENPUFkgPHN0aD4g RlJPTXxUTyBmaWxlbmFtZSBXSVRIIChGUkVFWkUgKi8KIAkJCWVsc2UgaWYgKFRhaWxNYXRjaGVz KCJGUkVFWkUiKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAppbmRleCAyNDMwZmIwYjJlNS4uMmI1YmVmNjczOGUg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAorKysgYi9zcmMvaW5jbHVk ZS9jb21tYW5kcy9jb3B5LmgKQEAgLTU3LDYgKzU3LDcgQEAgdHlwZWRlZiBlbnVtIENvcHlGb3Jt YXQKIAlDT1BZX0ZPUk1BVF9URVhUID0gMCwKIAlDT1BZX0ZPUk1BVF9CSU5BUlksCiAJQ09QWV9G T1JNQVRfQ1NWLAorCUNPUFlfRk9STUFUX0pTT04sCiB9IENvcHlGb3JtYXQ7CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29uLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29u LmgKaW5kZXggZjhjYzUyYjFlNzguLjJmNGJlNDA1MThkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9qc29uLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oCkBAIC0xNyw2ICsx Nyw4IEBACiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKIAogLyogZnVuY3Rpb25zIGluIGpz b24uYyAqLworZXh0ZXJuIHZvaWQgY29tcG9zaXRlX3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBT dHJpbmdJbmZvIHJlc3VsdCwKKwkJCQkJCQkgIGJvb2wgdXNlX2xpbmVfZmVlZHMpOwogZXh0ZXJu IHZvaWQgZXNjYXBlX2pzb24oU3RyaW5nSW5mbyBidWYsIGNvbnN0IGNoYXIgKnN0cik7CiBleHRl cm4gdm9pZCBlc2NhcGVfanNvbl93aXRoX2xlbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hhciAq c3RyLCBpbnQgbGVuKTsKIGV4dGVybiB2b2lkIGVzY2FwZV9qc29uX3RleHQoU3RyaW5nSW5mbyBi dWYsIGNvbnN0IHRleHQgKnR4dCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NvcHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAppbmRleCBk MGQ1NjNlMGZhOC4uNDMyNGUzZTQ5NjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29weS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dApA QCAtNzMsNiArNzMsOTIgQEAgY29weSBjb3B5dGVzdDMgdG8gc3Rkb3V0IGNzdiBoZWFkZXI7CiBj MSwiY29sIHdpdGggLCBjb21tYSIsImNvbCB3aXRoICIiIHF1b3RlIgogMSxhLDEKIDIsYiwyCist LS0gdGVzdCBjb3B5aW5nIGluIEpTT04gbW9kZSB3aXRoIHZhcmlvdXMgc3R5bGVzCitjb3B5IChz ZWxlY3QgMSB1bmlvbiBhbGwgc2VsZWN0IDIpIHRvIHN0ZG91dCB3aXRoIChmb3JtYXQganNvbik7 Cit7Ij9jb2x1bW4/IjoxfQoreyI/Y29sdW1uPyI6Mn0KK2NvcHkgKHZhbHVlcyAoMSksICgyKSkg VE8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsKK3siY29sdW1uMSI6MX0KK3siY29sdW1uMSI6 Mn0KK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IGpzb247Cit7InN0eWxlIjoiRE9TIiwidGVzdCI6 ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9Cit7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRl ZiIsImZpbGxlciI6Mn0KK3sic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIi OjN9Cit7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxl ciI6NH0KK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Cit7InN0eWxlIjoi RE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9Cit7InN0eWxlIjoiVW5peCIsInRl c3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KK3sic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJk ZWYiLCJmaWxsZXIiOjN9Cit7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxu XFxuYiIsImZpbGxlciI6NH0KKy0tIGFsbCBvZiB0aGUgZm9sbG93aW5nIHNob3VsZCB5aWVsZCBl cnJvcgorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWxpbWl0ZXIgJ3wn KTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgREVMSU1JVEVSIGluIEpTT04gbW9kZQorY29weSBj b3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBudWxsICdcTicpOworRVJST1I6ICBjYW5u b3Qgc3BlY2lmeSBOVUxMIGluIEpTT04gbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBqc29uLCBkZWZhdWx0ICd8Jyk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IERFRkFVTFQg aW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGhlYWRl cik7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IEhFQURFUiBpbiBKU09OIG1vZGUKK2NvcHkgY29w eXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgaGVhZGVyIDEpOworRVJST1I6ICBjYW5ub3Qg c3BlY2lmeSBIRUFERVIgaW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9y bWF0IGpzb24sIHF1b3RlICciJyk7CitFUlJPUjogIENPUFkgUVVPVEUgcmVxdWlyZXMgQ1NWIG1v ZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZXNjYXBlICciJyk7CitF UlJPUjogIENPUFkgRVNDQVBFIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX3F1b3RlICopOworRVJST1I6ICBDT1BZIEZPUkNFX1FV T1RFIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpz b24sIGZvcmNlX25vdF9udWxsICopOworRVJST1I6ICBDT1BZIEZPUkNFX05PVF9OVUxMIHJlcXVp cmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNl X251bGwgKik7CitFUlJPUjogIENPUFkgRk9SQ0VfTlVMTCByZXF1aXJlcyBDU1YgbW9kZQorY29w eSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOworRVJS T1I6ICBDT1BZIE9OX0VSUk9SIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBUTworTElORSAxOiBj b3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG9uX2Vycm9yIGlnbm9yZSk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorY29weSBjb3B5 dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCByZWplY3RfbGltaXQgMSk7CitFUlJPUjogIENP UFkgUkVKRUNUX0xJTUlUIHJlcXVpcmVzIE9OX0VSUk9SIHRvIGJlIHNldCB0byBJR05PUkUKK2Nv cHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3JtYXQganNvbik7CitFUlJPUjogIENPUFkgSlNPTiBt b2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBGUk9NCitjb3B5IGNvcHl0ZXN0IChzdHlsZSkg dG8gc3Rkb3V0IChmb3JtYXQganNvbik7CitFUlJPUjogIGNvbHVtbiBzZWxlY3Rpb24gaXMgbm90 IHN1cHBvcnRlZCBpbiBKU09OIG1vZGUKKy0tIGFsbCBvZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxk IGVycm9yCistLSBlbWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKK2NyZWF0ZSB0ZW1wIHRhYmxl IGNvcHlqc29udGVzdCAoCisgICAgaWQgYmlnc2VyaWFsLAorICAgIGYxIHRleHQsCisgICAgZjIg dGltZXN0YW1wdHopOworaW5zZXJ0IGludG8gY29weWpzb250ZXN0CisgIHNlbGVjdCBnLmksCisg ICAgICAgICBDQVNFIFdIRU4gZy5pICUgMiA9IDAgVEhFTgorICAgICAgICAgICAnbGluZSB3aXRo ICcnIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAgRUxTRQorICAgICAgICAgICAnbGlu ZSB3aXRoICIgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTkQsCisgICAgICAgICAn TW9uIEZlYiAxMCAxNzozMjowMSAxOTk3IFBTVCcKKyAgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1 KSBhcyBnKGkpOworaW5zZXJ0IGludG8gY29weWpzb250ZXN0IChmMSkgdmFsdWVzCisoRSdhYWFc ImJiYic6OnRleHQpLAorKEUnYWFhXFxiYmInOjp0ZXh0KSwKKyhFJ2FhYVwvYmJiJzo6dGV4dCks CisoRSdhYWFcYmJiYic6OnRleHQpLAorKEUnYWFhXGZiYmInOjp0ZXh0KSwKKyhFJ2FhYVxuYmJi Jzo6dGV4dCksCisoRSdhYWFccmJiYic6OnRleHQpLAorKEUnYWFhXHRiYmInOjp0ZXh0KTsKK2Nv cHkgY29weWpzb250ZXN0IHRvIHN0ZG91dCBqc29uOworeyJpZCI6MSwiZjEiOiJsaW5lIHdpdGgg XCIgaW4gaXQ6IDEiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6Miwi ZjEiOiJsaW5lIHdpdGggJyBpbiBpdDogMiIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODow MCJ9Cit7ImlkIjozLCJmMSI6ImxpbmUgd2l0aCBcIiBpbiBpdDogMyIsImYyIjoiMTk5Ny0wMi0x MFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjo0LCJmMSI6ImxpbmUgd2l0aCAnIGluIGl0OiA0Iiwi ZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjUsImYxIjoibGluZSB3aXRo IFwiIGluIGl0OiA1IiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjEs ImYxIjoiYWFhXCJiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjIsImYxIjoiYWFhXFxiYmIiLCJmMiI6 bnVsbH0KK3siaWQiOjMsImYxIjoiYWFhL2JiYiIsImYyIjpudWxsfQoreyJpZCI6NCwiZjEiOiJh YWFcYmJiYiIsImYyIjpudWxsfQoreyJpZCI6NSwiZjEiOiJhYWFcZmJiYiIsImYyIjpudWxsfQor eyJpZCI6NiwiZjEiOiJhYWFcbmJiYiIsImYyIjpudWxsfQoreyJpZCI6NywiZjEiOiJhYWFccmJi YiIsImYyIjpudWxsfQoreyJpZCI6OCwiZjEiOiJhYWFcdGJiYiIsImYyIjpudWxsfQogY3JlYXRl IHRlbXAgdGFibGUgY29weXRlc3Q0ICgKIAljMSBpbnQsCiAJImNvbG5hbWUgd2l0aCB0YWI6IAki IHRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAppbmRleCA2NWNiZGFmN2YzZS4uNGU5Zjc0NTM3Zjgg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCkBAIC04Miw2ICs4Miw1NyBAQCB0aGlzIGlzIGp1c3QgYSBs aW5lIGZ1bGwgb2YganVuayB0aGF0IHdvdWxkIGVycm9yIG91dCBpZiBwYXJzZWQKIAogY29weSBj b3B5dGVzdDMgdG8gc3Rkb3V0IGNzdiBoZWFkZXI7CiAKKy0tLSB0ZXN0IGNvcHlpbmcgaW4gSlNP TiBtb2RlIHdpdGggdmFyaW91cyBzdHlsZXMKK2NvcHkgKHNlbGVjdCAxIHVuaW9uIGFsbCBzZWxl Y3QgMikgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsKK2NvcHkgKHZhbHVlcyAoMSksICgy KSkgVE8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0 IGpzb247Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworCistLSBhbGwg b2YgdGhlIGZvbGxvd2luZyBzaG91bGQgeWllbGQgZXJyb3IKK2NvcHkgY29weXRlc3QgdG8gc3Rk b3V0IChmb3JtYXQganNvbiwgZGVsaW1pdGVyICd8Jyk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91 dCAoZm9ybWF0IGpzb24sIG51bGwgJ1xOJyk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9y bWF0IGpzb24sIGRlZmF1bHQgJ3wnKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQg anNvbiwgaGVhZGVyKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgaGVh ZGVyIDEpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBxdW90ZSAnIicp OworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBlc2NhcGUgJyInKTsKK2Nv cHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfcXVvdGUgKik7Citjb3B5 IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX25vdF9udWxsICopOworY29w eSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9udWxsICopOworY29weSBj b3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOworY29weSBj b3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCByZWplY3RfbGltaXQgMSk7Citjb3B5IGNv cHl0ZXN0IGZyb20gc3RkaW4oZm9ybWF0IGpzb24pOworY29weSBjb3B5dGVzdCAoc3R5bGUpIHRv IHN0ZG91dCAoZm9ybWF0IGpzb24pOworLS0gYWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQg ZXJyb3IKKworLS0gZW1iZWRkZWQgZXNjYXBlZCBjaGFyYWN0ZXJzCitjcmVhdGUgdGVtcCB0YWJs ZSBjb3B5anNvbnRlc3QgKAorICAgIGlkIGJpZ3NlcmlhbCwKKyAgICBmMSB0ZXh0LAorICAgIGYy IHRpbWVzdGFtcHR6KTsKKworaW5zZXJ0IGludG8gY29weWpzb250ZXN0CisgIHNlbGVjdCBnLmks CisgICAgICAgICBDQVNFIFdIRU4gZy5pICUgMiA9IDAgVEhFTgorICAgICAgICAgICAnbGluZSB3 aXRoICcnIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAgRUxTRQorICAgICAgICAgICAn bGluZSB3aXRoICIgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTkQsCisgICAgICAg ICAnTW9uIEZlYiAxMCAxNzozMjowMSAxOTk3IFBTVCcKKyAgZnJvbSBnZW5lcmF0ZV9zZXJpZXMo MSw1KSBhcyBnKGkpOworCitpbnNlcnQgaW50byBjb3B5anNvbnRlc3QgKGYxKSB2YWx1ZXMKKyhF J2FhYVwiYmJiJzo6dGV4dCksCisoRSdhYWFcXGJiYic6OnRleHQpLAorKEUnYWFhXC9iYmInOjp0 ZXh0KSwKKyhFJ2FhYVxiYmJiJzo6dGV4dCksCisoRSdhYWFcZmJiYic6OnRleHQpLAorKEUnYWFh XG5iYmInOjp0ZXh0KSwKKyhFJ2FhYVxyYmJiJzo6dGV4dCksCisoRSdhYWFcdGJiYic6OnRleHQp OworCitjb3B5IGNvcHlqc29udGVzdCB0byBzdGRvdXQganNvbjsKKwogY3JlYXRlIHRlbXAgdGFi bGUgY29weXRlc3Q0ICgKIAljMSBpbnQsCiAJImNvbG5hbWUgd2l0aCB0YWI6IAkiIHRleHQpOwot LSAKMi4zNC4xCgo= --0000000000000c006b064c57d33d Content-Type: text/x-patch; charset="US-ASCII"; name="v26-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Disposition: attachment; filename="v26-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmepc4vk2 RnJvbSBlNDc0N2ZmOGE4N2U3OWVkYjhmZDNiNzc3OGJjYmU4YTNhNmU4NWY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjEgSmFuIDIwMjYgMTg6Mzg6MjQgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NiAxLzRdIGludHJvZHVjZSBDb3B5Rm9ybWF0IHJlZmFjdG9yIENvcHlGb3JtYXRPcHRpb25zCgpD dXJyZW50bHksIENPUFkgY29tbWFuZCBmb3JtYXQgaXMgZGV0ZXJtaW5lZCBieSB0d28gYm9vbGVh bnMgKGJpbmFyeSwgY3N2X21vZGUpCmZpZWxkcyBpbiBDb3B5Rm9ybWF0T3B0aW9ucyBUaGlzIGFw cHJvYWNoLCB3aGlsZSBmdW5jdGlvbmFsLCBpc24ndCBpZGVhbCBmb3IKZnV0dXJlIG90aGVyIGlt cGxlbWVudCBvdGhlciBmb3JtYXQuCgpUbyBzaW1wbGlmeSBhZGRpbmcgbmV3IGZvcm1hdHMsIHdl J3ZlIGludHJvZHVjZWQgYW4gZW51bSBDb3B5Rm9ybWF0LiBUaGlzIG1ha2VzCnRoZSBjb2RlIGNs ZWFuZXIgYW5kIG1vcmUgbWFpbnRhaW5hYmxlLCBhbGxvd2luZyBmb3IgZWFzaWVyIGludGVncmF0 aW9uIG9mCmFkZGl0aW9uYWwgZm9ybWF0cyBkb3duIHRoZSBsaW5lLgoKVGhlIENvcHlGb3JtYXQg ZW51bSB3YXMgb3JpZ2luYWxseSBjb250cmlidXRlZCBieSBKb2VsIEphY29ic29uIDxqb2VsQGNv bXBpbGVyLm9yZz4sCmxhdGVyIHJlZmFjdG9yZWQgYnkgSmlhbiBIZSB0byBhZGRyZXNzIHZhcmlv dXMgaXNzdWVzLgoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUx2ZlVrQnhUWXk1 dVdQRlZ3cGtfN2lpMnpnVDA3dDNkLXlSX2N5NHNmcnJMVSUzRGtjZyU0MG1haWwuZ21haWwuY29t CmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNmEwNDYyOGQtMGQ1My00MWQ5LTllMzUt NWE4ZGMzMDJjMzRjQGpvZWNvbndheS5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 LmMgICAgICAgICAgfCA1MCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAgfCAgNiArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5ZnJvbXBhcnNlLmMgfCAgNyArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YyAgICAgICAgfCAgOCArKy0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAgICAg IHwgMTMgKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICB8ICAx ICsKIDYgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jCmluZGV4IDYzYjg2ODAyYmEyLi4yZjQ2YmU1MTZmMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHkuYwpAQCAtNTc2LDYgKzU3Niw4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJCW9wdHNfb3V0ID0gcGFsbG9jMF9vYmplY3QoQ29weUZvcm1hdE9wdGlvbnMpOwog CiAJb3B0c19vdXQtPmZpbGVfZW5jb2RpbmcgPSAtMTsKKwkvKiBkZWZhdWx0IGZvcm1hdCAqLwor CW9wdHNfb3V0LT5mb3JtYXQgPSBDT1BZX0ZPUk1BVF9URVhUOwogCiAJLyogRXh0cmFjdCBvcHRp b25zIGZyb20gdGhlIHN0YXRlbWVudCBub2RlIHRyZWUgKi8KIAlmb3JlYWNoKG9wdGlvbiwgb3B0 aW9ucykKQEAgLTU5MCwxMSArNTkyLDExIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAJ CQlmb3JtYXRfc3BlY2lmaWVkID0gdHJ1ZTsKIAkJCWlmIChzdHJjbXAoZm10LCAidGV4dCIpID09 IDApCi0JCQkJIC8qIGRlZmF1bHQgZm9ybWF0ICovIDsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID0g Q09QWV9GT1JNQVRfVEVYVDsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJjc3YiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5jc3ZfbW9kZSA9IHRydWU7CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENP UFlfRk9STUFUX0NTVjsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5iaW5hcnkgPSB0cnVlOworCQkJCW9wdHNfb3V0LT5mb3JtYXQgPSBDT1BZ X0ZPUk1BVF9CSU5BUlk7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtNzU0LDMxICs3NTYsMzEg QEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBDaGVjayBmb3Ig aW5jb21wYXRpYmxlIG9wdGlvbnMgKG11c3QgZG8gdGhlc2UgdGhyZWUgYmVmb3JlIGluc2VydGlu ZwogCSAqIGRlZmF1bHRzKQogCSAqLwotCWlmIChvcHRzX291dC0+YmluYXJ5ICYmIG9wdHNfb3V0 LT5kZWxpbSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYg b3B0c19vdXQtPmRlbGltKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09Q WSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAl cyBpbiBCSU5BUlkgbW9kZSIsICJERUxJTUlURVIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5iaW5h cnkgJiYgb3B0c19vdXQtPm51bGxfcHJpbnQpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09Q WV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJjYW5u b3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpKTsKIAotCWlmIChvcHRzX291 dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQorCWlmIChvcHRzX291dC0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJ IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVGQVVMVCIpKSk7 CiAKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAqLwogCWlmICghb3B0c19v dXQtPmRlbGltKQotCQlvcHRzX291dC0+ZGVsaW0gPSBvcHRzX291dC0+Y3N2X21vZGUgPyAiLCIg OiAiXHQiOworCQlvcHRzX291dC0+ZGVsaW0gPSAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZP Uk1BVF9DU1YpID8gIiwiIDogIlx0IjsKIAogCWlmICghb3B0c19vdXQtPm51bGxfcHJpbnQpCi0J CW9wdHNfb3V0LT5udWxsX3ByaW50ID0gb3B0c19vdXQtPmNzdl9tb2RlID8gIiIgOiAiXFxOIjsK KwkJb3B0c19vdXQtPm51bGxfcHJpbnQgPSAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1B VF9DU1YpID8gIiIgOiAiXFxOIjsKIAlvcHRzX291dC0+bnVsbF9wcmludF9sZW4gPSBzdHJsZW4o b3B0c19vdXQtPm51bGxfcHJpbnQpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSkKKwlpZiAo b3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJewogCQlpZiAoIW9wdHNfb3V0 LT5xdW90ZSkKIAkJCW9wdHNfb3V0LT5xdW90ZSA9ICJcIiI7CkBAIC04MjYsNyArODI4LDcgQEAg UHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBmdXR1cmUtcHJvb2Zp bmcuICBMaWtld2lzZSB3ZSBkaXNhbGxvdyBhbGwgZGlnaXRzIHRob3VnaCBvbmx5IG9jdGFsCiAJ ICogZGlnaXRzIGFyZSBhY3R1YWxseSBkYW5nZXJvdXMuCiAJICovCi0JaWYgKCFvcHRzX291dC0+ Y3N2X21vZGUgJiYKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYK IAkJc3RyY2hyKCJcXC5hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLAogCQkJ ICAgb3B0c19vdXQtPmRlbGltWzBdKSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLApAQCAtODM0 LDQzICs4MzYsNDMgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJ CQkgZXJybXNnKCJDT1BZIGRlbGltaXRlciBjYW5ub3QgYmUgXCIlc1wiIiwgb3B0c19vdXQtPmRl bGltKSkpOwogCiAJLyogQ2hlY2sgaGVhZGVyICovCi0JaWYgKG9wdHNfb3V0LT5iaW5hcnkgJiYg b3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFKQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+aGVhZGVyX2xpbmUg IT0gQ09QWV9IRUFERVJfRkFMU0UpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhl IG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwogCQkJCSBlcnJtc2coImNh bm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkhFQURFUiIpKSk7CiAKIAkvKiBDaGVj ayBxdW90ZSAqLwotCWlmICghb3B0c19vdXQtPmNzdl9tb2RlICYmIG9wdHNfb3V0LT5xdW90ZSAh PSBOVUxMKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiBvcHRz X291dC0+cXVvdGUgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUg bmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiQ09Q WSAlcyByZXF1aXJlcyBDU1YgbW9kZSIsICJRVU9URSIpKSk7CiAKLQlpZiAob3B0c19vdXQtPmNz dl9tb2RlICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEpCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkJCSBlcnJtc2coIkNPUFkgcXVvdGUgbXVzdCBiZSBhIHNpbmdsZSBvbmUtYnl0 ZSBjaGFyYWN0ZXIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ ZGVsaW1bMF0gPT0gb3B0c19vdXQtPnF1b3RlWzBdKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09 IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+ZGVsaW1bMF0gPT0gb3B0c19vdXQtPnF1b3Rl WzBdKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coIkNPUFkgZGVsaW1pdGVyIGFuZCBxdW90ZSBtdXN0 IGJlIGRpZmZlcmVudCIpKSk7CiAKIAkvKiBDaGVjayBlc2NhcGUgKi8KLQlpZiAoIW9wdHNfb3V0 LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ZXNjYXBlICE9IE5VTEwpCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIG9wdHNfb3V0LT5lc2NhcGUgIT0gTlVMTCkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBl LmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiQ09QWSAlcyByZXF1aXJlcyBDU1YgbW9kZSIs ICJFU0NBUEUiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBzdHJsZW4ob3B0c19v dXQtPmVzY2FwZSkgIT0gMSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9D U1YgJiYgc3RybGVuKG9wdHNfb3V0LT5lc2NhcGUpICE9IDEpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2co IkNPUFkgZXNjYXBlIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIikpKTsKIAog CS8qIENoZWNrIGZvcmNlX3F1b3RlICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYgKG9w dHNfb3V0LT5mb3JjZV9xdW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkKKwlpZiAo b3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgKG9wdHNfb3V0LT5mb3JjZV9x dW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xh dG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCkBA IC04ODQsOCArODg2LDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJCSJDT1BZIEZST00iKSkpOwogCiAJLyogQ2hlY2sgZm9yY2Vfbm90bnVsbCAqLwotCWlm ICghb3B0c19vdXQtPmNzdl9tb2RlICYmIChvcHRzX291dC0+Zm9yY2Vfbm90bnVsbCAhPSBOSUwg fHwKLQkJCQkJCQkJb3B0c19vdXQtPmZvcmNlX25vdG51bGxfYWxsKSkKKwlpZiAob3B0c19vdXQt PmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgKG9wdHNfb3V0LT5mb3JjZV9ub3RudWxsICE9 IE5JTCB8fAorCQkJCQkJCQkJCQkJb3B0c19vdXQtPmZvcmNlX25vdG51bGxfYWxsKSkKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcu IE9OX0VSUk9SICovCkBAIC05MDAsOCArOTAyLDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSJDT1BZIFRPIikpKTsKIAogCS8qIENoZWNrIGZvcmNlX251 bGwgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiAob3B0c19vdXQtPmZvcmNlX251bGwg IT0gTklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCisJaWYgKG9wdHNf b3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChvcHRzX291dC0+Zm9yY2VfbnVsbCAh PSBOSUwgfHwKKwkJCQkJCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAog CQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBP Tl9FUlJPUiAqLwpAQCAtOTI1LDcgKzkyNyw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJCQkiTlVMTCIpKSk7CiAKIAkvKiBEb24ndCBhbGxvdyB0aGUgQ1NW IHF1b3RlIGNoYXIgdG8gYXBwZWFyIGluIHRoZSBudWxsIHN0cmluZy4gKi8KLQlpZiAob3B0c19v dXQtPmNzdl9tb2RlICYmCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NW ICYmCiAJCXN0cmNocihvcHRzX291dC0+bnVsbF9wcmludCwgb3B0c19vdXQtPnF1b3RlWzBdKSAh PSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLApAQCAtOTYxLDcgKzk2Myw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJIkRFRkFVTFQiKSkpOwogCiAJCS8qIERvbid0IGFs bG93IHRoZSBDU1YgcXVvdGUgY2hhciB0byBhcHBlYXIgaW4gdGhlIGRlZmF1bHQgc3RyaW5nLiAq LwotCQlpZiAob3B0c19vdXQtPmNzdl9tb2RlICYmCisJCWlmIChvcHRzX291dC0+Zm9ybWF0ID09 IENPUFlfRk9STUFUX0NTViAmJgogCQkJc3RyY2hyKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50LCBv cHRzX291dC0+cXVvdGVbMF0pICE9IE5VTEwpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCkBAIC05NzgsNyArOTgwLDcgQEAg UHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJIGVycm1zZygiTlVM TCBzcGVjaWZpY2F0aW9uIGFuZCBERUZBVUxUIHNwZWNpZmljYXRpb24gY2Fubm90IGJlIHRoZSBz YW1lIikpKTsKIAl9CiAJLyogQ2hlY2sgb25fZXJyb3IgKi8KLQlpZiAob3B0c19vdXQtPmJpbmFy eSAmJiBvcHRzX291dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKQorCWlmIChvcHRz X291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+b25fZXJyb3Ig IT0gQ09QWV9PTl9FUlJPUl9TVE9QKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJvbmx5IE9OX0VSUk9SIFNUT1AgaXMg YWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwppbmRleCAy ZjQyZjU1ZTIyOS4uNGQ5Mjc0MTAxNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHlmcm9tLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtMTU2 LDkgKzE1Niw5IEBAIHN0YXRpYyBjb25zdCBDb3B5RnJvbVJvdXRpbmUgQ29weUZyb21Sb3V0aW5l QmluYXJ5ID0gewogc3RhdGljIGNvbnN0IENvcHlGcm9tUm91dGluZSAqCiBDb3B5RnJvbUdldFJv dXRpbmUoY29uc3QgQ29weUZvcm1hdE9wdGlvbnMgKm9wdHMpCiB7Ci0JaWYgKG9wdHMtPmNzdl9t b2RlKQorCWlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKQogCQlyZXR1cm4gJkNv cHlGcm9tUm91dGluZUNTVjsKLQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0 cy0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5RnJvbVJvdXRp bmVCaW5hcnk7CiAKIAkvKiBkZWZhdWx0IGlzIHRleHQgKi8KQEAgLTI2Miw3ICsyNjIsNyBAQCBD b3B5RnJvbUVycm9yQ2FsbGJhY2sodm9pZCAqYXJnKQogCQkJCSAgIGNzdGF0ZS0+Y3VyX3JlbG5h bWUpOwogCQlyZXR1cm47CiAJfQotCWlmIChjc3RhdGUtPm9wdHMuYmluYXJ5KQorCWlmIChjc3Rh dGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAl7CiAJCS8qIGNhbid0IHVz ZWZ1bGx5IGRpc3BsYXkgdGhlIGRhdGEgKi8KIAkJaWYgKGNzdGF0ZS0+Y3VyX2F0dG5hbWUpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKaW5kZXggZmJkMTMzNTNlZmMuLmMzNjY4NzRi ZDk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCkBAIC0xNzIsNyArMTcyLDcg QEAgUmVjZWl2ZUNvcHlCZWdpbihDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIHsKIAlTdHJpbmdJbmZv RGF0YSBidWY7CiAJaW50CQkJbmF0dHMgPSBsaXN0X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3Qp OwotCWludDE2CQlmb3JtYXQgPSAoY3N0YXRlLT5vcHRzLmJpbmFyeSA/IDEgOiAwKTsKKwlpbnQx NgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZID8g MSA6IDApOwogCWludAkJCWk7CiAKIAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weUlu UmVzcG9uc2UpOwpAQCAtNzUwLDcgKzc1MCw3IEBAIGJvb2wKIE5leHRDb3B5RnJvbVJhd0ZpZWxk cyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcykKIHsK IAlyZXR1cm4gTmV4dENvcHlGcm9tUmF3RmllbGRzSW50ZXJuYWwoY3N0YXRlLCBmaWVsZHMsIG5m aWVsZHMsCi0JCQkJCQkJCQkJIGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSk7CisJCQkJCQkJCQkJIGNz dGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKTsKIH0KIAogLyoKQEAgLTc3Nyw3 ICs3NzcsOCBAQCBOZXh0Q29weUZyb21SYXdGaWVsZHNJbnRlcm5hbChDb3B5RnJvbVN0YXRlIGNz dGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcwogCWJvb2wJCWRvbmUgPSBmYWxzZTsK IAogCS8qIG9ubHkgYXZhaWxhYmxlIGZvciB0ZXh0IG9yIGNzdiBpbnB1dCAqLwotCUFzc2VydCgh Y3N0YXRlLT5vcHRzLmJpbmFyeSk7CisJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09Q WV9GT1JNQVRfVEVYVCB8fAorCQkgICBjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFU X0NTVik7CiAKIAkvKiBvbiBpbnB1dCBjaGVjayB0aGF0IHRoZSBoZWFkZXIgbGluZSBpcyBjb3Jy ZWN0IGlmIG5lZWRlZCAqLwogCWlmIChjc3RhdGUtPmN1cl9saW5lbm8gPT0gMCAmJiBjc3RhdGUt Pm9wdHMuaGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFMU0UpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5j CmluZGV4IDljZWVmZjZkOTllLi4wMzI1YTE2ZjgyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAg LTE4MSw5ICsxODEsOSBAQCBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5l QmluYXJ5ID0gewogc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgKgogQ29weVRvR2V0Um91dGlu ZShjb25zdCBDb3B5Rm9ybWF0T3B0aW9ucyAqb3B0cykKIHsKLQlpZiAob3B0cy0+Y3N2X21vZGUp CisJaWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJCXJldHVybiAmQ29weVRv Um91dGluZUNTVjsKLQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0cy0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQmluYXJ5 OwogCiAJLyogZGVmYXVsdCBpcyB0ZXh0ICovCkBAIC0yMjAsNyArMjIwLDcgQEAgQ29weVRvVGV4 dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogCiAJCQlj b2xuYW1lID0gTmFtZVN0cihUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51bSAtIDEpLT5hdHRu YW1lKTsKIAotCQkJaWYgKGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSkKKwkJCWlmIChjc3RhdGUtPm9w dHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAkJCQlDb3B5QXR0cmlidXRlT3V0Q1NWKGNz dGF0ZSwgY29sbmFtZSwgZmFsc2UpOwogCQkJZWxzZQogCQkJCUNvcHlBdHRyaWJ1dGVPdXRUZXh0 KGNzdGF0ZSwgY29sbmFtZSk7CkBAIC0zOTcsNyArMzk3LDcgQEAgU2VuZENvcHlCZWdpbihDb3B5 VG9TdGF0ZSBjc3RhdGUpCiB7CiAJU3RyaW5nSW5mb0RhdGEgYnVmOwogCWludAkJCW5hdHRzID0g bGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKLQlpbnQxNgkJZm9ybWF0ID0gKGNzdGF0 ZS0+b3B0cy5iaW5hcnkgPyAxIDogMCk7CisJaW50MTYJCWZvcm1hdCA9IChjc3RhdGUtPm9wdHMu Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSA/IDEgOiAwKTsKIAlpbnQJCQlpOwogCiAJcHFf YmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0NvcHlPdXRSZXNwb25zZSk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgK aW5kZXggODc3MjAyYWY2N2IuLjI0MzBmYjBiMmU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC00OSw2 ICs0OSwxNiBAQCB0eXBlZGVmIGVudW0gQ29weUxvZ1ZlcmJvc2l0eUNob2ljZQogCUNPUFlfTE9H X1ZFUkJPU0lUWV9WRVJCT1NFLCAvKiBsb2dzIGFkZGl0aW9uYWwgbWVzc2FnZXMgKi8KIH0gQ29w eUxvZ1ZlcmJvc2l0eUNob2ljZTsKIAorLyoKKyAqIFJlcHJlc2VudHMgdGhlIGZvcm1hdCBvZiB0 aGUgQ09QWSBvcGVyYXRpb24uCisgKi8KK3R5cGVkZWYgZW51bSBDb3B5Rm9ybWF0Cit7CisJQ09Q WV9GT1JNQVRfVEVYVCA9IDAsCisJQ09QWV9GT1JNQVRfQklOQVJZLAorCUNPUFlfRk9STUFUX0NT ViwKK30gQ29weUZvcm1hdDsKKwogLyoKICAqIEEgc3RydWN0IHRvIGhvbGQgQ09QWSBvcHRpb25z LCBpbiBhIHBhcnNlZCBmb3JtLiBBbGwgb2YgdGhlc2UgYXJlIHJlbGF0ZWQKICAqIHRvIGZvcm1h dHRpbmcsIGV4Y2VwdCBmb3IgJ2ZyZWV6ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBo ZXJlLCBidXQKQEAgLTU5LDkgKzY5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlv bnMKIAkvKiBwYXJhbWV0ZXJzIGZyb20gdGhlIENPUFkgY29tbWFuZCAqLwogCWludAkJCWZpbGVf ZW5jb2Rpbmc7CS8qIGZpbGUgb3IgcmVtb3RlIHNpZGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcsCiAJ CQkJCQkJCSAqIC0xIGlmIG5vdCBzcGVjaWZpZWQgKi8KLQlib29sCQliaW5hcnk7CQkJLyogYmlu YXJ5IGZvcm1hdD8gKi8KKwlDb3B5Rm9ybWF0CWZvcm1hdDsJCQkvKiBmb3JtYXQgb2YgdGhlIENP UFkgb3BlcmF0aW9uICovCiAJYm9vbAkJZnJlZXplOwkJCS8qIGZyZWV6ZSByb3dzIG9uIGxvYWRp bmc/ICovCi0JYm9vbAkJY3N2X21vZGU7CQkvKiBDb21tYSBTZXBhcmF0ZWQgVmFsdWUgZm9ybWF0 PyAqLwogCWludAkJCWhlYWRlcl9saW5lOwkvKiBudW1iZXIgb2YgbGluZXMgdG8gc2tpcCBvciBD T1BZX0hFQURFUl9YWFgKIAkJCQkJCQkJICogdmFsdWUgKHNlZSB0aGUgYWJvdmUpICovCiAJY2hh cgkgICAqbnVsbF9wcmludDsJCS8qIE5VTEwgbWFya2VyIHN0cmluZyAoc2VydmVyIGVuY29kaW5n ISkgKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNzdlM2MwNDE0NGUuLjgzOTliZTk3 ZmQ1IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNTI4LDYgKzUyOCw3IEBAIENvbnZl cnNpb25Mb2NhdGlvbgogQ29udmVydFJvd3R5cGVFeHByCiBDb29rZWRDb25zdHJhaW50CiBDb3B5 RGVzdAorQ29weUZvcm1hdAogQ29weUZvcm1hdE9wdGlvbnMKIENvcHlGcm9tUm91dGluZQogQ29w eUZyb21TdGF0ZQotLSAKMi4zNC4xCgo= --0000000000000c006b064c57d33d--