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.94.2) (envelope-from ) id 1vIGAG-001T0W-2h for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Nov 2025 00:53:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vIGAD-00Brtd-Qn for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Nov 2025 00:53:45 +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.94.2) (envelope-from ) id 1vIGAD-00BrtU-B7 for pgsql-hackers@lists.postgresql.org; Mon, 10 Nov 2025 00:53:45 +0000 Received: from mail-vk1-xa2f.google.com ([2607:f8b0:4864:20::a2f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vIGAA-006tKH-1J for pgsql-hackers@postgresql.org; Mon, 10 Nov 2025 00:53:45 +0000 Received: by mail-vk1-xa2f.google.com with SMTP id 71dfb90a1353d-559712e8914so2446249e0c.2 for ; Sun, 09 Nov 2025 16:53:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762736019; x=1763340819; 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=CXJpCXNehKRizgyCWfAZgbtFb6ug0gN10wM0RkVg6j8=; b=dp9XF9pUsZFvrVkC4/oLaZT4X3vyTM8Z48Q+VViShNrZKpZxBxt/h/CL7A+qvxxh3j RCXHK2qJR1snkB3FN7zw2M4fkVVGXUK2FnDgzS8pu4qDVZzHV2lKvSiDgvSeFoETOkK9 cUVp+Fy1zwIo3DqrEhR/xho3gHAqvmQtsFovOlNoP8VE5K/7H5bXE+4+AqbcFiwJnDpK bOT/RgLAD8fCpoQLtAk+ObnHt6dFS++X8W2f65ioiMqdwGHbf8EGP+OGN0QUAxKntNYa 1rdx6OsSaRINTiNLpvpKMxuqulCPB4KpUNG69hHFmX6RF36H5cPZtD/+4P4OnAJvKvsJ rNAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762736019; x=1763340819; 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=CXJpCXNehKRizgyCWfAZgbtFb6ug0gN10wM0RkVg6j8=; b=ExWIvVl1RRQsT7+ub48EJf4ny4iq6rG91GPtk+ev63mX4bplNnAEze7YHcAg3yJKPb KVssbrSajD+bVBVldLE0KGMJlHSH5ZH8j/MKKTFzFYlkccqq4ebaq/GA4OgIXEPbKRb4 S7PTWA8S9tfKXf2ErMWNxWCgRAlwMaPMvlBdIlh5AchYfuTTzwqlHY2L1/51ZI8HHUsJ /9k9+Ix+lnANm/DOg7bXMYuj7gpriBq7gYCXVvwnDf8/rn7bMsyP7zmPdQaPfuqYTdtB S47OXr3VlyqFjeBsRHGN5lWhMyWwbZv7zIbIf1yrfaK+cEZVXzIC/6cIU/yQccIl2ol3 /6LQ== X-Forwarded-Encrypted: i=1; AJvYcCUOw3y+5gscjMyCQBKQJ04pxO5oWYhXC7n1m4r/P+TGeZn/RLaYuwuDNTXk4o0NazLrEKFXXzAIiUNfvK2P@postgresql.org X-Gm-Message-State: AOJu0YyDEFzhTCgUpvWZ6CKzyfye892XnYr+MU/kk/SPiqz1TWV1S4sB bZAkql3RmP5VklF7ZigG5JK8WxzjW9gVyYKGHvwJ91IW1x3lbMatc01HbH+bMmos8kA0AVz9T4s KfFUYADtEUJ3GMFo34ljgMKM2go9zU0Y= X-Gm-Gg: ASbGncsr+p7LsGbWM7c+x5a2D53TkRL/DfJ80B+FOmEu1Dy34KCBTbDeYn2rZ53iv6B MSH4ZiZ9SxThUV9UtTCCrkNaKEeqQITsqh0G3DLcXIVwbbUNC0qVbacEoGo6tMp8L3pgfAO04Xf f5Z7GTmsdHuZ7wkvvkCyvBw1wu1iBETpQ91j/9QZMVkzgCqBhNmGZoOqy2ekpXd3a+lDj1zM6od 1yofybN4ouDZxYesngp5Xc4HhLmh/uEt60rGEfSXl4/8QLsTSPMhnXg2rPDGn6rkDfmwqSv8Reg sqWCHFGCS1D8JH8b/t82FVyKbMUnIh9beA57+ie+j3yzMCyGkbgGJS75dY878QhVWyGTJ0adJ8i thWSXZt2Ocfpu+wavZApIY4xPm//JXQFIyOPfBxk+M+2GV+C3Q+W4dbKtdHkqwJW9GziOvubimg == X-Google-Smtp-Source: AGHT+IHTcqkYsDPMb291Mr/Oc8ZSUnjn+dzehhK5Lammdkbsyt03+ccP9jp1wDMBYA+NvQaHU0eYtMfKy0RdfHsHp3k= X-Received: by 2002:a05:6122:1b0e:b0:559:6eb7:1438 with SMTP id 71dfb90a1353d-559b32ad598mr2075204e0c.12.1762736019580; Sun, 09 Nov 2025 16:53:39 -0800 (PST) MIME-Version: 1.0 References: <8620df11-96e4-4ca3-8f3c-33a479260961@joeconway.com> <4162f7f7-6fd6-4720-98e2-89f80e3de2ed@joeconway.com> <153b71b8-b6fb-4930-aaff-a7334cb3f6d6@joeconway.com> <8ef5f5d6-38db-4624-8eef-2d96c9eba9d4@joeconway.com> In-Reply-To: From: jian he Date: Mon, 10 Nov 2025 08:53:02 +0800 X-Gm-Features: AWmQ_bniUgK_zJ7bvp_IN_LC-y_040oJt2zZgCzpQfNd3ofjQPxkP1ELNJ3LYOg Message-ID: Subject: Re: Emitting JSON to file using COPY TO To: Junwang Zhao Cc: Joe Conway , "Andrey M. Borodin" , Dean Rasheed , Daniel Verite , Andrew Dunstan , Davin Shearer , PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000047c73a064332f642" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000047c73a064332f642 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Oct 1, 2025 at 2:16=E2=80=AFPM jian he wrote: > > hi. > v19 attached, same as v18. > repost it so that CFbot can pick up the latest patchset. hi. new patch attached, rebase only. --00000000000047c73a064332f642 Content-Type: text/x-patch; charset="US-ASCII"; name="v20-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Disposition: attachment; filename="v20-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhsfgqdg2 RnJvbSA5N2U2M2QyYjdkZTFmZWY4MjAzMDViMjc5ZDllNTYwMmM4MmRhYjUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTAgTm92IDIwMjUgMDg6Mzk6MzYgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy MCAxLzNdIGludHJvZHVjZSBDb3B5Rm9ybWF0IHJlZmFjdG9yIENvcHlGb3JtYXRPcHRpb25zCgpD dXJyZW50bHksIENPUFkgY29tbWFuZCBmb3JtYXQgaXMgZGV0ZXJtaW5lZCBieSB0d28gYm9vbGVh bnMsIGJpbmFyeSBhbmQKY3N2X21vZGUsIHdpdGhpbiBDb3B5Rm9ybWF0T3B0aW9ucy4gVGhpcyBh cHByb2FjaCwgd2hpbGUgZnVuY3Rpb25hbCwgaXNuJ3QgaWRlYWwKZm9yIGZ1dHVyZSBleHBhbnNp b24uCgpUbyBzaW1wbGlmeSBhZGRpbmcgbmV3IGZvcm1hdHMsIHdlJ3ZlIGludHJvZHVjZWQgYW4g ZW51bSBDb3B5Rm9ybWF0LiAgVGhpcyBtYWtlcwp0aGUgY29kZSBjbGVhbmVyIGFuZCBtb3JlIG1h aW50YWluYWJsZSwgYWxsb3dpbmcgZm9yIGVhc2llciBpbnRlZ3JhdGlvbiBvZgphZGRpdGlvbmFs IGZvcm1hdHMgZG93biB0aGUgbGluZS4KClRoZSBDb3B5Rm9ybWF0IGVudW0gd2FzIG9yaWdpbmFs bHkgY29udHJpYnV0ZWQgYnkgSm9lbCBKYWNvYnNvbgpqb2VsQGNvbXBpbGVyLm9yZywgbGF0ZXIg cmVmYWN0b3JlZCBieSBKaWFuIEhlIHRvIGFkZHJlc3MgdmFyaW91cyBpc3N1ZXMuCgpkaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWkyemdUMDd0 M2QteVJfY3k0c2ZyckxVJTNEa2NnJTQwbWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS82YTA0NjI4ZC0wZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29u d2F5LmNvbQotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyAgICAgICAgICB8IDUwICsr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9t LmMgICAgICB8ICA2ICsrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyB8 ICA3ICsrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICB8ICA4ICsrLS0t CiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgICAgfCAxMyArKysrKystLQogc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgIHwgIDEgKwogNiBmaWxlcyBjaGFuZ2Vk LCA0OSBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXgg MjhlODc4YzM2ODguLmQ2NzRhZGE5OGU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC01NjQsNiArNTY0 LDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJb3B0c19vdXQg PSAoQ29weUZvcm1hdE9wdGlvbnMgKikgcGFsbG9jMChzaXplb2YoQ29weUZvcm1hdE9wdGlvbnMp KTsKIAogCW9wdHNfb3V0LT5maWxlX2VuY29kaW5nID0gLTE7CisJLyogZGVmYXVsdCBmb3JtYXQg Ki8KKwlvcHRzX291dC0+Zm9ybWF0ID0gQ09QWV9GT1JNQVRfVEVYVDsKIAogCS8qIEV4dHJhY3Qg b3B0aW9ucyBmcm9tIHRoZSBzdGF0ZW1lbnQgbm9kZSB0cmVlICovCiAJZm9yZWFjaChvcHRpb24s IG9wdGlvbnMpCkBAIC01NzgsMTEgKzU4MCwxMSBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUp OwogCQkJZm9ybWF0X3NwZWNpZmllZCA9IHRydWU7CiAJCQlpZiAoc3RyY21wKGZtdCwgInRleHQi KSA9PSAwKQotCQkJCSAvKiBkZWZhdWx0IGZvcm1hdCAqLyA7CisJCQkJb3B0c19vdXQtPmZvcm1h dCA9IENPUFlfRk9STUFUX1RFWFQ7CiAJCQllbHNlIGlmIChzdHJjbXAoZm10LCAiY3N2IikgPT0g MCkKLQkJCQlvcHRzX291dC0+Y3N2X21vZGUgPSB0cnVlOworCQkJCW9wdHNfb3V0LT5mb3JtYXQg PSBDT1BZX0ZPUk1BVF9DU1Y7CiAJCQllbHNlIGlmIChzdHJjbXAoZm10LCAiYmluYXJ5IikgPT0g MCkKLQkJCQlvcHRzX291dC0+YmluYXJ5ID0gdHJ1ZTsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID0g Q09QWV9GT1JNQVRfQklOQVJZOwogCQkJZWxzZQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTc0MiwzMSArNzQ0 LDMxIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICogQ2hlY2sg Zm9yIGluY29tcGF0aWJsZSBvcHRpb25zIChtdXN0IGRvIHRoZXNlIHRocmVlIGJlZm9yZSBpbnNl cnRpbmcKIAkgKiBkZWZhdWx0cykKIAkgKi8KLQlpZiAob3B0c19vdXQtPmJpbmFyeSAmJiBvcHRz X291dC0+ZGVsaW0pCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZ ICYmIG9wdHNfb3V0LT5kZWxpbSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBh IENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiY2Fubm90IHNwZWNp ZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVMSU1JVEVSIikpKTsKIAotCWlmIChvcHRzX291dC0+ YmluYXJ5ICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09 IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+bnVsbF9wcmludCkKIAkJZXJlcG9ydChF UlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJIGVycm1zZygi Y2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiTlVMTCIpKSk7CiAKLQlpZiAob3B0 c19vdXQtPmJpbmFyeSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKKwlpZiAob3B0c19vdXQt PmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRlZmF1bHRfcHJpbnQp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAog CQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkRFRkFVTFQi KSkpOwogCiAJLyogU2V0IGRlZmF1bHRzIGZvciBvbWl0dGVkIG9wdGlvbnMgKi8KIAlpZiAoIW9w dHNfb3V0LT5kZWxpbSkKLQkJb3B0c19vdXQtPmRlbGltID0gb3B0c19vdXQtPmNzdl9tb2RlID8g IiwiIDogIlx0IjsKKwkJb3B0c19vdXQtPmRlbGltID0gKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09Q WV9GT1JNQVRfQ1NWKSA/ICIsIiA6ICJcdCI7CiAKIAlpZiAoIW9wdHNfb3V0LT5udWxsX3ByaW50 KQotCQlvcHRzX291dC0+bnVsbF9wcmludCA9IG9wdHNfb3V0LT5jc3ZfbW9kZSA/ICIiIDogIlxc TiI7CisJCW9wdHNfb3V0LT5udWxsX3ByaW50ID0gKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9G T1JNQVRfQ1NWKSA/ICIiIDogIlxcTiI7CiAJb3B0c19vdXQtPm51bGxfcHJpbnRfbGVuID0gc3Ry bGVuKG9wdHNfb3V0LT5udWxsX3ByaW50KTsKIAotCWlmIChvcHRzX291dC0+Y3N2X21vZGUpCisJ aWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKQogCXsKIAkJaWYgKCFvcHRz X291dC0+cXVvdGUpCiAJCQlvcHRzX291dC0+cXVvdGUgPSAiXCIiOwpAQCAtODE0LDcgKzgxNiw3 IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICogZnV0dXJlLXBy b29maW5nLiAgTGlrZXdpc2Ugd2UgZGlzYWxsb3cgYWxsIGRpZ2l0cyB0aG91Z2ggb25seSBvY3Rh bAogCSAqIGRpZ2l0cyBhcmUgYWN0dWFsbHkgZGFuZ2Vyb3VzLgogCSAqLwotCWlmICghb3B0c19v dXQtPmNzdl9tb2RlICYmCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NW ICYmCiAJCXN0cmNocigiXFwuYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IiwK IAkJCSAgIG9wdHNfb3V0LT5kZWxpbVswXSkgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKQEAg LTgyMiw0MyArODI0LDQzIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs CiAJCQkJIGVycm1zZygiQ09QWSBkZWxpbWl0ZXIgY2Fubm90IGJlIFwiJXNcIiIsIG9wdHNfb3V0 LT5kZWxpbSkpKTsKIAogCS8qIENoZWNrIGhlYWRlciAqLwotCWlmIChvcHRzX291dC0+YmluYXJ5 ICYmIG9wdHNfb3V0LT5oZWFkZXJfbGluZSAhPSBDT1BZX0hFQURFUl9GQUxTRSkKKwlpZiAob3B0 c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmhlYWRlcl9s aW5lICE9IENPUFlfSEVBREVSX0ZBTFNFKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJLyotIHRyYW5zbGF0b3I6ICVzIGlz IHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KIAkJCQkgZXJybXNn KCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJIRUFERVIiKSkpOwogCiAJLyog Q2hlY2sgcXVvdGUgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+cXVv dGUgIT0gTlVMTCkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYg b3B0c19vdXQtPnF1b3RlICE9IE5VTEwpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMg dGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwogCQkJCSBlcnJtc2co IkNPUFkgJXMgcmVxdWlyZXMgQ1NWIG1vZGUiLCAiUVVPVEUiKSkpOwogCi0JaWYgKG9wdHNfb3V0 LT5jc3ZfbW9kZSAmJiBzdHJsZW4ob3B0c19vdXQtPnF1b3RlKSAhPSAxKQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTViAmJiBzdHJsZW4ob3B0c19vdXQtPnF1b3RlKSAh PSAxKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJDT1BZIHF1b3RlIG11c3QgYmUgYSBzaW5nbGUgb25l LWJ5dGUgY2hhcmFjdGVyIikpKTsKIAotCWlmIChvcHRzX291dC0+Y3N2X21vZGUgJiYgb3B0c19v dXQtPmRlbGltWzBdID09IG9wdHNfb3V0LT5xdW90ZVswXSkKKwlpZiAob3B0c19vdXQtPmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9DU1YgJiYgb3B0c19vdXQtPmRlbGltWzBdID09IG9wdHNfb3V0LT5x dW90ZVswXSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKCJDT1BZIGRlbGltaXRlciBhbmQgcXVvdGUg bXVzdCBiZSBkaWZmZXJlbnQiKSkpOwogCiAJLyogQ2hlY2sgZXNjYXBlICovCi0JaWYgKCFvcHRz X291dC0+Y3N2X21vZGUgJiYgb3B0c19vdXQtPmVzY2FwZSAhPSBOVUxMKQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+ZXNjYXBlICE9IE5VTEwp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlv biwgZS5nLiBPTl9FUlJPUiAqLwogCQkJCSBlcnJtc2coIkNPUFkgJXMgcmVxdWlyZXMgQ1NWIG1v ZGUiLCAiRVNDQVBFIikpKTsKIAotCWlmIChvcHRzX291dC0+Y3N2X21vZGUgJiYgc3RybGVuKG9w dHNfb3V0LT5lc2NhcGUpICE9IDEpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JN QVRfQ1NWICYmIHN0cmxlbihvcHRzX291dC0+ZXNjYXBlKSAhPSAxKQogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJy bXNnKCJDT1BZIGVzY2FwZSBtdXN0IGJlIGEgc2luZ2xlIG9uZS1ieXRlIGNoYXJhY3RlciIpKSk7 CiAKIAkvKiBDaGVjayBmb3JjZV9xdW90ZSAqLwotCWlmICghb3B0c19vdXQtPmNzdl9tb2RlICYm IChvcHRzX291dC0+Zm9yY2VfcXVvdGUgfHwgb3B0c19vdXQtPmZvcmNlX3F1b3RlX2FsbCkpCisJ aWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChvcHRzX291dC0+Zm9y Y2VfcXVvdGUgfHwgb3B0c19vdXQtPmZvcmNlX3F1b3RlX2FsbCkpCiAJCWVyZXBvcnQoRVJST1Is CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJh bnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAq LwpAQCAtODcyLDggKzg3NCw4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCQkJCQkiQ09QWSBGUk9NIikpKTsKIAogCS8qIENoZWNrIGZvcmNlX25vdG51bGwgKi8K LQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiAob3B0c19vdXQtPmZvcmNlX25vdG51bGwgIT0g TklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9ub3RudWxsX2FsbCkpCisJaWYgKG9wdHNf b3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChvcHRzX291dC0+Zm9yY2Vfbm90bnVs bCAhPSBOSUwgfHwKKwkJCQkJCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9ub3RudWxsX2FsbCkpCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwg ZS5nLiBPTl9FUlJPUiAqLwpAQCAtODg4LDggKzg5MCw4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkiQ09QWSBUTyIpKSk7CiAKIAkvKiBDaGVjayBmb3Jj ZV9udWxsICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYgKG9wdHNfb3V0LT5mb3JjZV9u dWxsICE9IE5JTCB8fAotCQkJCQkJCQlvcHRzX291dC0+Zm9yY2VfbnVsbF9hbGwpKQorCWlmIChv cHRzX291dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiAob3B0c19vdXQtPmZvcmNlX251 bGwgIT0gTklMIHx8CisJCQkJCQkJCQkJCQlvcHRzX291dC0+Zm9yY2VfbnVsbF9hbGwpKQogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKIAkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUu Zy4gT05fRVJST1IgKi8KQEAgLTkxMyw3ICs5MTUsNyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJIk5VTEwiKSkpOwogCiAJLyogRG9uJ3QgYWxsb3cgdGhl IENTViBxdW90ZSBjaGFyIHRvIGFwcGVhciBpbiB0aGUgbnVsbCBzdHJpbmcuICovCi0JaWYgKG9w dHNfb3V0LT5jc3ZfbW9kZSAmJgorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFU X0NTViAmJgogCQlzdHJjaHIob3B0c19vdXQtPm51bGxfcHJpbnQsIG9wdHNfb3V0LT5xdW90ZVsw XSkgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTk0OSw3ICs5NTEsNyBAQCBQcm9jZXNzQ29weU9wdGlv bnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSJERUZBVUxUIikpKTsKIAogCQkvKiBEb24n dCBhbGxvdyB0aGUgQ1NWIHF1b3RlIGNoYXIgdG8gYXBwZWFyIGluIHRoZSBkZWZhdWx0IHN0cmlu Zy4gKi8KLQkJaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJgorCQlpZiAob3B0c19vdXQtPmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9DU1YgJiYKIAkJCXN0cmNocihvcHRzX291dC0+ZGVmYXVsdF9wcmlu dCwgb3B0c19vdXQtPnF1b3RlWzBdKSAhPSBOVUxMKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLApAQCAtOTY2LDcgKzk2OCw3 IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCSBlcnJtc2co Ik5VTEwgc3BlY2lmaWNhdGlvbiBhbmQgREVGQVVMVCBzcGVjaWZpY2F0aW9uIGNhbm5vdCBiZSB0 aGUgc2FtZSIpKSk7CiAJfQogCS8qIENoZWNrIG9uX2Vycm9yICovCi0JaWYgKG9wdHNfb3V0LT5i aW5hcnkgJiYgb3B0c19vdXQtPm9uX2Vycm9yICE9IENPUFlfT05fRVJST1JfU1RPUCkKKwlpZiAo b3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPm9uX2Vy cm9yICE9IENPUFlfT05fRVJST1JfU1RPUCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJIGVycm1zZygib25seSBPTl9FUlJPUiBTVE9Q IGlzIGFsbG93ZWQgaW4gQklOQVJZIG1vZGUiKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5k ZXggMTI3ODE5NjNiNGYuLmJhMzFiMjI3ZDVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKQEAg LTE1NSw5ICsxNTUsOSBAQCBzdGF0aWMgY29uc3QgQ29weUZyb21Sb3V0aW5lIENvcHlGcm9tUm91 dGluZUJpbmFyeSA9IHsKIHN0YXRpYyBjb25zdCBDb3B5RnJvbVJvdXRpbmUgKgogQ29weUZyb21H ZXRSb3V0aW5lKGNvbnN0IENvcHlGb3JtYXRPcHRpb25zICpvcHRzKQogewotCWlmIChvcHRzLT5j c3ZfbW9kZSkKKwlpZiAob3B0cy0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAkJcmV0dXJu ICZDb3B5RnJvbVJvdXRpbmVDU1Y7Ci0JZWxzZSBpZiAob3B0cy0+YmluYXJ5KQorCWVsc2UgaWYg KG9wdHMtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJCXJldHVybiAmQ29weUZyb21S b3V0aW5lQmluYXJ5OwogCiAJLyogZGVmYXVsdCBpcyB0ZXh0ICovCkBAIC0yNjEsNyArMjYxLDcg QEAgQ29weUZyb21FcnJvckNhbGxiYWNrKHZvaWQgKmFyZykKIAkJCQkgICBjc3RhdGUtPmN1cl9y ZWxuYW1lKTsKIAkJcmV0dXJuOwogCX0KLQlpZiAoY3N0YXRlLT5vcHRzLmJpbmFyeSkKKwlpZiAo Y3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJewogCQkvKiBjYW4n dCB1c2VmdWxseSBkaXNwbGF5IHRoZSBkYXRhICovCiAJCWlmIChjc3RhdGUtPmN1cl9hdHRuYW1l KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCmluZGV4IGIxYWU5N2I4MzNkLi41Nzhl NmMwYzlhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwpAQCAtMTcxLDcgKzE3 MSw3IEBAIFJlY2VpdmVDb3B5QmVnaW4oQ29weUZyb21TdGF0ZSBjc3RhdGUpCiB7CiAJU3RyaW5n SW5mb0RhdGEgYnVmOwogCWludAkJCW5hdHRzID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1s aXN0KTsKLQlpbnQxNgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0cy5iaW5hcnkgPyAxIDogMCk7CisJ aW50MTYJCWZvcm1hdCA9IChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFS WSA/IDEgOiAwKTsKIAlpbnQJCQlpOwogCiAJcHFfYmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0Nv cHlJblJlc3BvbnNlKTsKQEAgLTc0Nyw3ICs3NDcsNyBAQCBib29sCiBOZXh0Q29weUZyb21SYXdG aWVsZHMoQ29weUZyb21TdGF0ZSBjc3RhdGUsIGNoYXIgKioqZmllbGRzLCBpbnQgKm5maWVsZHMp CiB7CiAJcmV0dXJuIE5leHRDb3B5RnJvbVJhd0ZpZWxkc0ludGVybmFsKGNzdGF0ZSwgZmllbGRz LCBuZmllbGRzLAotCQkJCQkJCQkJCSBjc3RhdGUtPm9wdHMuY3N2X21vZGUpOworCQkJCQkJCQkJ CSBjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVik7CiB9CiAKIC8qCkBAIC03 NzQsNyArNzc0LDggQEAgTmV4dENvcHlGcm9tUmF3RmllbGRzSW50ZXJuYWwoQ29weUZyb21TdGF0 ZSBjc3RhdGUsIGNoYXIgKioqZmllbGRzLCBpbnQgKm5maWVsZHMKIAlib29sCQlkb25lID0gZmFs c2U7CiAKIAkvKiBvbmx5IGF2YWlsYWJsZSBmb3IgdGV4dCBvciBjc3YgaW5wdXQgKi8KLQlBc3Nl cnQoIWNzdGF0ZS0+b3B0cy5iaW5hcnkpOworCUFzc2VydChjc3RhdGUtPm9wdHMuZm9ybWF0ID09 IENPUFlfRk9STUFUX1RFWFQgfHwKKwkJICAgY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZP Uk1BVF9DU1YpOwogCiAJLyogb24gaW5wdXQgY2hlY2sgdGhhdCB0aGUgaGVhZGVyIGxpbmUgaXMg Y29ycmVjdCBpZiBuZWVkZWQgKi8KIAlpZiAoY3N0YXRlLT5jdXJfbGluZW5vID09IDAgJiYgY3N0 YXRlLT5vcHRzLmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFKQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 dG8uYwppbmRleCBjZWY0NTI1ODRlNS4uYzk3ZjA0NjBiM2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5j CkBAIC0xODEsOSArMTgxLDkgQEAgc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91 dGluZUJpbmFyeSA9IHsKIHN0YXRpYyBjb25zdCBDb3B5VG9Sb3V0aW5lICoKIENvcHlUb0dldFJv dXRpbmUoY29uc3QgQ29weUZvcm1hdE9wdGlvbnMgKm9wdHMpCiB7Ci0JaWYgKG9wdHMtPmNzdl9t b2RlKQorCWlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKQogCQlyZXR1cm4gJkNv cHlUb1JvdXRpbmVDU1Y7Ci0JZWxzZSBpZiAob3B0cy0+YmluYXJ5KQorCWVsc2UgaWYgKG9wdHMt PmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJCXJldHVybiAmQ29weVRvUm91dGluZUJp bmFyeTsKIAogCS8qIGRlZmF1bHQgaXMgdGV4dCAqLwpAQCAtMjIwLDcgKzIyMCw3IEBAIENvcHlU b1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKIAog CQkJY29sbmFtZSA9IE5hbWVTdHIoVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBhdHRudW0gLSAxKS0+ YXR0bmFtZSk7CiAKLQkJCWlmIChjc3RhdGUtPm9wdHMuY3N2X21vZGUpCisJCQlpZiAoY3N0YXRl LT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJCQkJQ29weUF0dHJpYnV0ZU91dENT Vihjc3RhdGUsIGNvbG5hbWUsIGZhbHNlKTsKIAkJCWVsc2UKIAkJCQlDb3B5QXR0cmlidXRlT3V0 VGV4dChjc3RhdGUsIGNvbG5hbWUpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIFNlbmRDb3B5QmVnaW4o Q29weVRvU3RhdGUgY3N0YXRlKQogewogCVN0cmluZ0luZm9EYXRhIGJ1ZjsKIAlpbnQJCQluYXR0 cyA9IGxpc3RfbGVuZ3RoKGNzdGF0ZS0+YXR0bnVtbGlzdCk7Ci0JaW50MTYJCWZvcm1hdCA9IChj c3RhdGUtPm9wdHMuYmluYXJ5ID8gMSA6IDApOworCWludDE2CQlmb3JtYXQgPSAoY3N0YXRlLT5v cHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgPyAxIDogMCk7CiAJaW50CQkJaTsKIAog CXBxX2JlZ2lubWVzc2FnZSgmYnVmLCBQcU1zZ19Db3B5T3V0UmVzcG9uc2UpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29w eS5oCmluZGV4IDU0MTE3NmUxOTgwLi42ODY2NTMyMzNiMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaApAQCAt NDgsNiArNDgsMTYgQEAgdHlwZWRlZiBlbnVtIENvcHlMb2dWZXJib3NpdHlDaG9pY2UKIAlDT1BZ X0xPR19WRVJCT1NJVFlfVkVSQk9TRSwgLyogbG9ncyBhZGRpdGlvbmFsIG1lc3NhZ2VzICovCiB9 IENvcHlMb2dWZXJib3NpdHlDaG9pY2U7CiAKKy8qCisgKiBSZXByZXNlbnRzIHRoZSBmb3JtYXQg b2YgdGhlIENPUFkgb3BlcmF0aW9uLgorICovCit0eXBlZGVmIGVudW0gQ29weUZvcm1hdAorewor CUNPUFlfRk9STUFUX1RFWFQgPSAwLAorCUNPUFlfRk9STUFUX0JJTkFSWSwKKwlDT1BZX0ZPUk1B VF9DU1YsCit9IENvcHlGb3JtYXQ7CisKIC8qCiAgKiBBIHN0cnVjdCB0byBob2xkIENPUFkgb3B0 aW9ucywgaW4gYSBwYXJzZWQgZm9ybS4gQWxsIG9mIHRoZXNlIGFyZSByZWxhdGVkCiAgKiB0byBm b3JtYXR0aW5nLCBleGNlcHQgZm9yICdmcmVlemUnLCB3aGljaCBkb2Vzbid0IHJlYWxseSBiZWxv bmcgaGVyZSwgYnV0CkBAIC01OCw5ICs2OCw4IEBAIHR5cGVkZWYgc3RydWN0IENvcHlGb3JtYXRP cHRpb25zCiAJLyogcGFyYW1ldGVycyBmcm9tIHRoZSBDT1BZIGNvbW1hbmQgKi8KIAlpbnQJCQlm aWxlX2VuY29kaW5nOwkvKiBmaWxlIG9yIHJlbW90ZSBzaWRlJ3MgY2hhcmFjdGVyIGVuY29kaW5n LAogCQkJCQkJCQkgKiAtMSBpZiBub3Qgc3BlY2lmaWVkICovCi0JYm9vbAkJYmluYXJ5OwkJCS8q IGJpbmFyeSBmb3JtYXQ/ICovCisJQ29weUZvcm1hdAlmb3JtYXQ7CQkJLyogZm9ybWF0IG9mIHRo ZSBDT1BZIG9wZXJhdGlvbiAqLwogCWJvb2wJCWZyZWV6ZTsJCQkvKiBmcmVlemUgcm93cyBvbiBs b2FkaW5nPyAqLwotCWJvb2wJCWNzdl9tb2RlOwkJLyogQ29tbWEgU2VwYXJhdGVkIFZhbHVlIGZv cm1hdD8gKi8KIAlpbnQJCQloZWFkZXJfbGluZTsJLyogbnVtYmVyIG9mIGxpbmVzIHRvIHNraXAg b3IgQ09QWV9IRUFERVJfWFhYCiAJCQkJCQkJCSAqIHZhbHVlIChzZWUgdGhlIGFib3ZlKSAqLwog CWNoYXIJICAgKm51bGxfcHJpbnQ7CQkvKiBOVUxMIG1hcmtlciBzdHJpbmcgKHNlcnZlciBlbmNv ZGluZyEpICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBi L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDQzMjUwOTI3N2M5Li4yNTZi NTAwMGFmNCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysr IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTUxNiw2ICs1MTYsNyBAQCBD b252ZXJzaW9uTG9jYXRpb24KIENvbnZlcnRSb3d0eXBlRXhwcgogQ29va2VkQ29uc3RyYWludAog Q29weURlc3QKK0NvcHlGb3JtYXQKIENvcHlGb3JtYXRPcHRpb25zCiBDb3B5RnJvbVJvdXRpbmUK IENvcHlGcm9tU3RhdGUKLS0gCjIuMzQuMQoK --00000000000047c73a064332f642 Content-Type: text/x-patch; charset="US-ASCII"; name="v20-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename="v20-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhsfgqd60 RnJvbSBlNDJlMzYxMThmNzNmYTFhOThmNjk4MDMxZTNmMWY3Y2JiOTE1MGNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMzAgSnVsIDIwMjUgMTk6NTA6NDEgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy MCAzLzNdIEFkZCBvcHRpb24gZm9yY2VfYXJyYXkgZm9yIENPUFkgSlNPTiBGT1JNQVQKCmZvcmNl X2FycmF5IG9wdGlvbiBjYW4gb25seSBiZSB1c2VkIGluIENPUFkgVE8gd2l0aCBKU09OIGZvcm1h dC4gIGl0IG1ha2UgdGhlCm91dHB1dCBqc29uIG91dHB1dCBiZWhhdmUgbGlrZSBqc29uIGFycmF5 IHR5cGUuICByZWZhY3RvcmVkIGJ5IEp1bndhbmcgWmhhbyB0bwphZGFwdCB0aGUgbmV3bHkgaW50 cm9kdWNlZCBDb3B5VG9Sb3V0aW5lIHN0cnVjdCgyZTQxMjdiNmQyKS4KCkF1dGhvcjogSm9lIENv bndheSA8bWFpbEBqb2Vjb253YXkuY29tPgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t L0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWkyemdUMDd0M2QteVJfY3k0c2ZyckxVJTNEa2NnJTQw bWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS82YTA0NjI4ZC0w ZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29ud2F5LmNvbQotLS0KIGRvYy9zcmMvc2dt bC9yZWYvY29weS5zZ21sICAgICAgICAgfCAxNCArKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jICAgICAgICB8IDEzICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYyAgICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2NvbW1h bmRzL2NvcHkuaCAgICAgICAgfCAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHku b3V0IHwgMjMgKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5z cWwgICAgICB8ICA4ICsrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IDJkNmQ2ODAyY2JkLi5kOGQ5ZmIxNzNi NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9jb3B5LnNnbWwKQEAgLTQwLDYgKzQwLDcgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJs ZQogICAgIEhFQURFUiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9y ZXBsYWNlYWJsZT4gfCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW50ZWdlcjwvcmVw bGFjZWFibGU+IHwgTUFUQ0ggXQogICAgIFFVT1RFICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cXVvdGVfY2hhcmFjdGVyPC9yZXBsYWNlYWJsZT4nCiAgICAgRVNDQVBFICc8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXNjYXBlX2NoYXJhY3RlcjwvcmVwbGFjZWFibGU+Jwor ICAgIEZPUkNFX0FSUkFZIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48 L3JlcGxhY2VhYmxlPiBdCiAgICAgRk9SQ0VfUVVPVEUgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAg IEZPUkNFX05PVF9OVUxMIHsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgfCAqIH0KICAgICBGT1JDRV9OVUxMIHsgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBb LCAuLi5dICkgfCAqIH0KQEAgLTM2Niw2ICszNjcsMTkgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJs ZQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT48bGl0ZXJhbD5GT1JDRV9BUlJBWTwvbGl0ZXJhbD48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEZvcmNlIG91dHB1dCBvZiBzcXVhcmUgYnJh Y2tldHMgYXMgYXJyYXkgZGVjb3JhdGlvbnMgYXQgdGhlIGJlZ2lubmluZworICAgICAgYW5kIGVu ZCBvZiBvdXRwdXQsIGFuZCBjb21tYXMgYmV0d2VlbiB0aGUgcm93cy4gSXQgaXMgYWxsb3dlZCBv bmx5IGluCisgICAgICA8Y29tbWFuZD5DT1BZIFRPPC9jb21tYW5kPiwgYW5kIG9ubHkgd2hlbiB1 c2luZworICAgICAgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LiBUaGUgZGVmYXVsdCBp cworICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0 ZXJtPjxsaXRlcmFsPkZPUkNFX1FVT1RFPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+ CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5LmMKaW5kZXggMGVjOWIyMmQyMGYuLjZmOWFlM2ZiZmQ3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weS5jCkBAIC01NTcsNiArNTU3LDcgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAlib29sCQlvbl9lcnJvcl9zcGVjaWZpZWQgPSBmYWxzZTsKIAlib29sCQlsb2df dmVyYm9zaXR5X3NwZWNpZmllZCA9IGZhbHNlOwogCWJvb2wJCXJlamVjdF9saW1pdF9zcGVjaWZp ZWQgPSBmYWxzZTsKKwlib29sCQlmb3JjZV9hcnJheV9zcGVjaWZpZWQgPSBmYWxzZTsKIAlMaXN0 Q2VsbCAgICpvcHRpb247CiAKIAkvKiBTdXBwb3J0IGV4dGVybmFsIHVzZSBmb3Igb3B0aW9uIHNh bml0eSBjaGVja2luZyAqLwpAQCAtNzEzLDYgKzcxNCwxMyBAQCBQcm9jZXNzQ29weU9wdGlvbnMo UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQlkZWZlbC0+ZGVmbmFtZSksCiAJCQkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGVmZWwtPmxvY2F0aW9uKSkpOwogCQl9CisJCWVsc2Ug aWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImZvcmNlX2FycmF5IikgPT0gMCkKKwkJeworCQkJ aWYgKGZvcmNlX2FycmF5X3NwZWNpZmllZCkKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShk ZWZlbCwgcHN0YXRlKTsKKwkJCWZvcmNlX2FycmF5X3NwZWNpZmllZCA9IHRydWU7CisJCQlvcHRz X291dC0+Zm9yY2VfYXJyYXkgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJfQogCQllbHNlIGlm IChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJvbl9lcnJvciIpID09IDApCiAJCXsKIAkJCWlmIChv bl9lcnJvcl9zcGVjaWZpZWQpCkBAIC05NjgsNiArOTc2LDExIEBAIFByb2Nlc3NDb3B5T3B0aW9u cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKIAkJCQllcnJtc2coIkNPUFkgJXMgbW9kZSBjYW5ub3QgYmUgdXNlZCB3aXRo ICVzIiwgImpzb24iLCAiQ09QWSBGUk9NIikpOwogCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0g Q09QWV9GT1JNQVRfSlNPTiAmJiBvcHRzX291dC0+Zm9yY2VfYXJyYXkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQll cnJtc2coIkNPUFkgJXMgY2FuIG9ubHkgdXNlZCB3aXRoIEpTT04gbW9kZSIsICJGT1JDRV9BUlJB WSIpKTsKKwogCWlmIChvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKIAl7CiAJCWlmICghaXNfZnJv bSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggYWNjZjM0ZTFhNjAuLmI1OGM1YmRmOTg3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYwpAQCAtODYsNiArODYsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weVRv U3RhdGVEYXRhCiAJTGlzdAkgICAqYXR0bnVtbGlzdDsJCS8qIGludGVnZXIgbGlzdCBvZiBhdHRu dW1zIHRvIGNvcHkgKi8KIAljaGFyCSAgICpmaWxlbmFtZTsJCS8qIGZpbGVuYW1lLCBvciBOVUxM IGZvciBTVERPVVQgKi8KIAlib29sCQlpc19wcm9ncmFtOwkJLyogaXMgJ2ZpbGVuYW1lJyBhIHBy b2dyYW0gdG8gcG9wZW4/ICovCisKKwkvKiBuZWVkIGRlbGltaXRlciB0byBzdGFydCBuZXh0IGpz b24gYXJyYXkgZWxlbWVudCAqLworCWJvb2wJCWpzb25fcm93X2RlbGltX25lZWRlZDsKKwogCWNv cHlfZGF0YV9kZXN0X2NiIGRhdGFfZGVzdF9jYjsgLyogZnVuY3Rpb24gZm9yIHdyaXRpbmcgZGF0 YSAqLwogCiAJQ29weUZvcm1hdE9wdGlvbnMgb3B0czsKQEAgLTEzMyw2ICsxMzcsNyBAQCBzdGF0 aWMgdm9pZCBDb3B5VG9UZXh0TGlrZU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFi bGVTbG90ICpzbG90LAogCQkJCQkJCQkgYm9vbCBpc19jc3YpOwogc3RhdGljIHZvaWQgQ29weVRv VGV4dExpa2VFbmQoQ29weVRvU3RhdGUgY3N0YXRlKTsKIHN0YXRpYyB2b2lkIENvcHlUb0pzb25P bmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CitzdGF0aWMg dm9pZCBDb3B5VG9Kc29uRW5kKENvcHlUb1N0YXRlIGNzdGF0ZSk7CiBzdGF0aWMgdm9pZCBDb3B5 VG9CaW5hcnlTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKTsKIHN0 YXRpYyB2b2lkIENvcHlUb0JpbmFyeU91dEZ1bmMoQ29weVRvU3RhdGUgY3N0YXRlLCBPaWQgYXR0 dHlwaWQsIEZtZ3JJbmZvICpmaW5mbyk7CiBzdGF0aWMgdm9pZCBDb3B5VG9CaW5hcnlPbmVSb3co Q29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CkBAIC0xNzcsNyArMTgy LDcgQEAgc3RhdGljIGNvbnN0IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUpzb24gPSB7CiAJ LkNvcHlUb1N0YXJ0ID0gQ29weVRvVGV4dExpa2VTdGFydCwKIAkuQ29weVRvT3V0RnVuYyA9IENv cHlUb1RleHRMaWtlT3V0RnVuYywKIAkuQ29weVRvT25lUm93ID0gQ29weVRvSnNvbk9uZVJvdywK LQkuQ29weVRvRW5kID0gQ29weVRvVGV4dExpa2VFbmQsCisJLkNvcHlUb0VuZCA9IENvcHlUb0pz b25FbmQsCiB9OwogCiAvKiBiaW5hcnkgZm9ybWF0ICovCkBAIC0yNDMsNiArMjQ4LDE2IEBAIENv cHlUb1RleHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykK IAogCQlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0YXRlKTsKIAl9CisKKwkvKgorCSAqIElm IEpTT04gaGFzIGJlZW4gcmVxdWVzdGVkLCBhbmQgRk9SQ0VfQVJSQVkgaGFzIGJlZW4gc3BlY2lm aWVkIHNlbmQgdGhlCisJICogb3BlbmluZyBicmFja2V0LgorCSAqLworCWlmIChjc3RhdGUtPm9w dHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04gJiYgY3N0YXRlLT5vcHRzLmZvcmNlX2FycmF5 KQorCXsKKwkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ1snKTsKKwkJQ29weVNlbmRUZXh0TGlrZUVu ZE9mUm93KGNzdGF0ZSk7CisJfQogfQogCiAvKgpAQCAtMzU0LDExICszNjksMzEgQEAgQ29weVRv SnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQogCXJl c3VsdCA9IG1ha2VTdHJpbmdJbmZvKCk7CiAJY29tcG9zaXRlX3RvX2pzb24ocm93ZGF0YSwgcmVz dWx0LCBmYWxzZSk7CiAKKwlpZiAoY3N0YXRlLT5qc29uX3Jvd19kZWxpbV9uZWVkZWQgJiYgY3N0 YXRlLT5vcHRzLmZvcmNlX2FycmF5KQorCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnLCcpOworCWVs c2UgaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwl7CisJCS8qIGZpcnN0IHJvdyBuZWVk cyBubyBkZWxpbWl0ZXIgKi8KKwkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJyAnKTsKKwkJY3N0YXRl LT5qc29uX3Jvd19kZWxpbV9uZWVkZWQgPSB0cnVlOworCX0KKwogCUNvcHlTZW5kRGF0YShjc3Rh dGUsIHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4pOwogCiAJQ29weVNlbmRUZXh0TGlrZUVuZE9m Um93KGNzdGF0ZSk7CiB9CiAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sg Zm9yIGpzb24gZm9ybWF0ICovCitzdGF0aWMgdm9pZAorQ29weVRvSnNvbkVuZChDb3B5VG9TdGF0 ZSBjc3RhdGUpCit7CisJaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwl7CisJCUNvcHlT ZW5kQ2hhcihjc3RhdGUsICddJyk7CisJCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhjc3RhdGUp OworCX0KK30KKwogLyoKICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBjYWxsYmFjayBm b3IgYmluYXJ5IGZvcm1hdC4gU2VuZCBhIGhlYWRlcgogICogZm9yIGEgYmluYXJ5IGNvcHkuCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmluLmMKaW5kZXggMGZkMDZhMzEyMDEuLmU1NTBhYTM4YTI1IDEwMDY0NAot LS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jCkBAIC0xMjMyLDcgKzEyMzIsNyBAQCBDb3B5X2NvbW1vbl9vcHRpb25z LCAiREVGQVVMVCIsICJGT1JDRV9OT1RfTlVMTCIsICJGT1JDRV9OVUxMIiwgIkZSRUVaRSIsIFwK IAogLyogQ09QWSBUTyBvcHRpb25zICovCiAjZGVmaW5lIENvcHlfdG9fb3B0aW9ucyBcCi1Db3B5 X2NvbW1vbl9vcHRpb25zLCAiRk9SQ0VfUVVPVEUiCitDb3B5X2NvbW1vbl9vcHRpb25zLCAiRk9S Q0VfUVVPVEUiLCAiRk9SQ0VfQVJSQVkiCiAKIC8qCiAgKiBUaGVzZSBvYmplY3QgdHlwZXMgd2Vy ZSBpbnRyb2R1Y2VkIGxhdGVyIHRoYW4gb3VyIHN1cHBvcnQgY3V0b2ZmIG9mCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 LmgKaW5kZXggODVhZWRjMjY3ZDYuLjcyNzRiMGQzY2E1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC04 Nyw2ICs4Nyw3IEBAIHR5cGVkZWYgc3RydWN0IENvcHlGb3JtYXRPcHRpb25zCiAJTGlzdAkgICAq Zm9yY2Vfbm90bnVsbDsJLyogbGlzdCBvZiBjb2x1bW4gbmFtZXMgKi8KIAlib29sCQlmb3JjZV9u b3RudWxsX2FsbDsJLyogRk9SQ0VfTk9UX05VTEwgKj8gKi8KIAlib29sCSAgICpmb3JjZV9ub3Ru dWxsX2ZsYWdzOwkvKiBwZXItY29sdW1uIENTViBGTk4gZmxhZ3MgKi8KKwlib29sCQlmb3JjZV9h cnJheTsJLyogYWRkIEpTT04gYXJyYXkgZGVjb3JhdGlvbnMgKi8KIAlMaXN0CSAgICpmb3JjZV9u dWxsOwkJLyogbGlzdCBvZiBjb2x1bW4gbmFtZXMgKi8KIAlib29sCQlmb3JjZV9udWxsX2FsbDsg LyogRk9SQ0VfTlVMTCAqPyAqLwogCWJvb2wJICAgKmZvcmNlX251bGxfZmxhZ3M7CS8qIHBlci1j b2x1bW4gQ1NWIEZOIGZsYWdzICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NvcHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAppbmRleCAx MDMzMzM1N2Q2OC4uOGJlY2M3MGVlN2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29weS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dApA QCAtMTEyLDYgKzExMiwyOSBAQCBMSU5FIDE6IGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQganNvbiwgb25fZXJyb3IgaWdub3JlKTsKIGNvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3Jt YXQganNvbik7CiBFUlJPUjogIENPUFkganNvbiBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09Q WSBGUk9NCiAtLSBhbGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgorLS1FcnJvcgor Y29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBjc3YsIGZvcmNlX2FycmF5IHRydWUpOwor RVJST1I6ICBDT1BZIEZPUkNFX0FSUkFZIGNhbiBvbmx5IHVzZWQgd2l0aCBKU09OIG1vZGUKKy0t b2sKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkpOwor WworIHsic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJjXHJcbmRlZiIsImZpbGxlciI6MX0KKyx7InN0 eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KKyx7InN0eWxlIjoiTWFj IiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQorLHsic3R5bGUiOiJlc2NcXGFwZSIsInRl c3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVyIjo0fQorXQorY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSB0cnVlKTsKK1sKKyB7InN0eWxlIjoiRE9T IiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9CisseyJzdHlsZSI6IlVuaXgiLCJ0ZXN0 IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9CisseyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRl ZiIsImZpbGxlciI6M30KKyx7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxu XFxuYiIsImZpbGxlciI6NH0KK10KK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNv biwgZm9yY2VfYXJyYXkgZmFsc2UpOworeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVm IiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIi OjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHls ZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9CiAtLSBl bWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVz dCAoCiAgICAgaWQgYmlnc2VyaWFsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y29weS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAppbmRleCA4MDc5OWUyZWFk OS4uNmExNGNmYzZlNjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCkBAIC0xMDEsNiArMTAxLDE0IEBA IGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgb25fZXJyb3IgaWdub3JlKTsK IGNvcHkgY29weXRlc3QgZnJvbSBzdGRpbihmb3JtYXQganNvbik7CiAtLSBhbGwgb2YgdGhlIGFi b3ZlIHNob3VsZCB5aWVsZCBlcnJvcgogCistLUVycm9yCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91 dCAoZm9ybWF0IGNzdiwgZm9yY2VfYXJyYXkgdHJ1ZSk7CisKKy0tb2sKK2NvcHkgY29weXRlc3Qg dG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkpOworY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSB0cnVlKTsKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgZmFsc2UpOworCiAtLSBlbWJlZGRlZCBl c2NhcGVkIGNoYXJhY3RlcnMKIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCiAgICAg aWQgYmlnc2VyaWFsLAotLSAKMi4zNC4xCgo= --00000000000047c73a064332f642 Content-Type: text/x-patch; charset="US-ASCII"; name="v20-0002-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v20-0002-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhsfgqdc1 RnJvbSAwODk2MzBmMGY0NzA2YjMxYzRjODg2ZDAzM2UxNWFkMjA3NjFkZDZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTAgTm92IDIwMjUgMDg6NDA6MjYgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy MCAyLzNdIGpzb24gZm9ybWF0IGZvciBDT1BZIFRPCgpKU09OIGZvcm1hdCBpcyBvbmx5IHN1cHBv cnRlZCB3aXRoIHRoZSBDT1BZIFRPIG9wZXJhdGlvbi4gSXQgaXMgaW5jb21wYXRpYmxlCndpdGgg b3B0aW9ucyBzdWNoIGFzIEhFQURFUiwgREVGQVVMVCwgTlVMTCwgREVMSU1JVEVSLCBhbmQgc2V2 ZXJhbCBvdGhlcnMuIFRoaXMKaGFzIGJlZW4gdGhvcm91Z2hseSB0ZXN0ZWQgaW4gc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weS5zcWwKClRoZSBDb3B5Rm9ybWF0IGVudW0gd2FzIG9yaWdpbmFsbHkg Y29udHJpYnV0ZWQgYnkgSm9lbCBKYWNvYnNvbgpqb2VsQGNvbXBpbGVyLm9yZywgbGF0ZXIgcmVm YWN0b3JlZCBieSBKaWFuIEhlIHRvIGFkZHJlc3MgdmFyaW91cyBpc3N1ZXMsIGFuZApmdXJ0aGVy IGFkYXB0ZWQgYnkgSnVud2FuZyBaaGFvIHRvIHN1cHBvcnQgdGhlIG5ld2x5IGludHJvZHVjZWQg Q29weVRvUm91dGluZQpzdHJ1Y3QgKGNvbW1pdCAyZTQxMjdiNmQyKS4KCkF1dGhvcjogSm9lIENv bndheSA8bWFpbEBqb2Vjb253YXkuY29tPgpSZXZpZXdlZC1ieTogIkFuZHJleSBNLiBCb3JvZGlu IiA8eDRtbW1AeWFuZGV4LXRlYW0ucnU+LApSZXZpZXdlZC1ieTogRGVhbiBSYXNoZWVkIDxkZWFu LmEucmFzaGVlZEBnbWFpbC5jb20+LApSZXZpZXdlZC1ieTogRGFuaWVsIFZlcml0ZSA8ZGFuaWVs QG1hbml0b3UtbWFpbC5vcmc+LApSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0Bk dW5zbGFuZS5uZXQ+LApSZXZpZXdlZC1ieTogRGF2aW4gU2hlYXJlciA8ZGF2aW5AYXBhY2hlLm9y Zz4sClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNvbT4s ClJldmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5uby1pcC5vcmc+Cgpk aXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWky emdUMDd0M2QteVJfY3k0c2ZyckxVJTNEa2NnJTQwbWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjog aHR0cHM6Ly9wb3N0Z3IuZXMvbS82YTA0NjI4ZC0wZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNA am9lY29ud2F5LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sICAgICAgICAgfCAx MyArKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAgICAgICB8IDcyICsrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAg fCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkgICAgICAgICAgfCAgOCArKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jICAg ICAgIHwgIDUgKy0KIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgfCAgMiArLQog c3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0 aWxzL2pzb24uaCAgICAgICAgICAgfCAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv cHkub3V0IHwgNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9jb3B5LnNxbCAgICAgIHwgNDcgKysrKysrKysrKysrKysrKysrCiAxMCBmaWxlcyBj aGFuZ2VkLCAyNjggaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApp bmRleCBmZGMyNGIzNmJiOC4uMmQ2ZDY4MDJjYmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY29weS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCkBAIC0yMjgsMTAg KzIyOCwxNSBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICBTZWxlY3RzIHRoZSBkYXRh IGZvcm1hdCB0byBiZSByZWFkIG9yIHdyaXR0ZW46CiAgICAgICA8bGl0ZXJhbD50ZXh0PC9saXRl cmFsPiwKICAgICAgIDxsaXRlcmFsPmNzdjwvbGl0ZXJhbD4gKENvbW1hIFNlcGFyYXRlZCBWYWx1 ZXMpLAorICAgICAgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gKEphdmFTY3JpcHQgT2JqZWN0IE5v dGF0aW9uKSwKICAgICAgIG9yIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4uCiAgICAgICBUaGUg ZGVmYXVsdCBpcyA8bGl0ZXJhbD50ZXh0PC9saXRlcmFsPi4KICAgICAgIFNlZSA8eHJlZiBsaW5r ZW5kPSJzcWwtY29weS1maWxlLWZvcm1hdHMiLz4gYmVsb3cgZm9yIGRldGFpbHMuCiAgICAgIDwv cGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gb3B0 aW9uIGlzIGFsbG93ZWQgb25seSBpbgorICAgICAgPGNvbW1hbmQ+Q09QWSBUTzwvY29tbWFuZD4u CisgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKQEAg LTI2Niw3ICsyNzEsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICAobGluZSkgb2Yg dGhlIGZpbGUuICBUaGUgZGVmYXVsdCBpcyBhIHRhYiBjaGFyYWN0ZXIgaW4gdGV4dCBmb3JtYXQs CiAgICAgICBhIGNvbW1hIGluIDxsaXRlcmFsPkNTVjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICAg VGhpcyBtdXN0IGJlIGEgc2luZ2xlIG9uZS1ieXRlIGNoYXJhY3Rlci4KLSAgICAgIFRoaXMgb3B0 aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBm b3JtYXQuCisgICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRl cmFsPmJpbmFyeTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0Lgog ICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMjgw LDcgKzI4NSw3IEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVf bmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIHN0cmluZyBpbiA8bGl0 ZXJhbD5DU1Y8L2xpdGVyYWw+IGZvcm1hdC4gWW91IG1pZ2h0IHByZWZlciBhbgogICAgICAgZW1w dHkgc3RyaW5nIGV2ZW4gaW4gdGV4dCBmb3JtYXQgZm9yIGNhc2VzIHdoZXJlIHlvdSBkb24ndCB3 YW50IHRvCiAgICAgICBkaXN0aW5ndWlzaCBudWxscyBmcm9tIGVtcHR5IHN0cmluZ3MuCi0gICAg ICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwv bGl0ZXJhbD4gZm9ybWF0LgorICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1 c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+ IGZvcm1hdC4KICAgICAgPC9wYXJhPgogCiAgICAgIDxub3RlPgpAQCAtMzAzLDcgKzMwOCw3IEBA IENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFj ZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIGlzIGZvdW5kIGluIHRoZSBpbnB1dCBmaWxl LCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBjb2x1bW4KICAgICAgIHdp bGwgYmUgdXNlZC4KICAgICAgIFRoaXMgb3B0aW9uIGlzIGFsbG93ZWQgb25seSBpbiA8Y29tbWFu ZD5DT1BZIEZST008L2NvbW1hbmQ+LCBhbmQgb25seSB3aGVuCi0gICAgICBub3QgdXNpbmcgPGxp dGVyYWw+YmluYXJ5PC9saXRlcmFsPiBmb3JtYXQuCisgICAgICBub3QgdXNpbmcgPGxpdGVyYWw+ YmluYXJ5PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAg IDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0zMzAsNyAr MzM1LDcgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgPGNvbW1hbmQ+Q09QWSBGUk9N PC9jb21tYW5kPiBjb21tYW5kcy4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KLSAgICAgIFRo aXMgb3B0aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRl cmFsPiBmb3JtYXQuCisgICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5n IDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9y bWF0LgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5Pgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jCmluZGV4IGQ2NzRhZGE5OGU0Li4wZWM5YjIyZDIwZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHkuYwpAQCAtNTg1LDYgKzU4NSw4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX0NTVjsKIAkJCWVsc2Ug aWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQogCQkJCW9wdHNfb3V0LT5mb3JtYXQgPSBD T1BZX0ZPUk1BVF9CSU5BUlk7CisJCQllbHNlIGlmIChzdHJjbXAoZm10LCAianNvbiIpID09IDAp CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX0pTT047CiAJCQllbHNlCiAJCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLApAQCAtNzQ0LDIxICs3NDYsNDIgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkgKiBDaGVjayBmb3IgaW5jb21wYXRpYmxlIG9wdGlvbnMgKG11c3QgZG8g dGhlc2UgdGhyZWUgYmVmb3JlIGluc2VydGluZwogCSAqIGRlZmF1bHRzKQogCSAqLwotCWlmIChv cHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVsaW0p Ci0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAot CQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBP Tl9FUlJPUiAqLwotCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2Rl IiwgIkRFTElNSVRFUiIpKSk7CisJaWYgKG9wdHNfb3V0LT5kZWxpbSkKKwl7CisJCWlmIChvcHRz X291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJLyotIHRyYW5zbGF0b3I6ICVz IGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KKwkJCQkJZXJy bXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJERUxJTUlURVIiKSk7CisJ CWVsc2UgaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJt c2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpTT04gbW9kZSIsICJERUxJTUlURVIiKSk7CisJfQog Ci0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0 LT5udWxsX3ByaW50KQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKLQkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9k ZSIsICJOVUxMIikpKTsKKwlpZiAob3B0c19vdXQtPm51bGxfcHJpbnQpCisJeworCQlpZiAob3B0 c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qg c3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpOworCQllbHNlIGlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQll cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lm eSAlcyBpbiBKU09OIG1vZGUiLCAiTlVMTCIpKTsKKwl9CiAKLQlpZiAob3B0c19vdXQtPmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRlZmF1bHRfcHJpbnQpCi0JCWVy ZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCSBl cnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkRFRkFVTFQiKSkpOwor CWlmIChvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKKwl7CisJCWlmIChvcHRzX291dC0+Zm9ybWF0 ID09IENPUFlfRk9STUFUX0JJTkFSWSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGlu IEJJTkFSWSBtb2RlIiwgIkRFRkFVTFQiKSk7CisJCWVsc2UgaWYgKG9wdHNfb3V0LT5mb3JtYXQg PT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpT T04gbW9kZSIsICJERUZBVUxUIikpOworCX0KIAogCS8qIFNldCBkZWZhdWx0cyBmb3Igb21pdHRl ZCBvcHRpb25zICovCiAJaWYgKCFvcHRzX291dC0+ZGVsaW0pCkBAIC04MjQsMTEgKzg0NywxOCBA QCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSBlcnJtc2coIkNP UFkgZGVsaW1pdGVyIGNhbm5vdCBiZSBcIiVzXCIiLCBvcHRzX291dC0+ZGVsaW0pKSk7CiAKIAkv KiBDaGVjayBoZWFkZXIgKi8KLQlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9C SU5BUlkgJiYgb3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFKQotCQll cmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKLQkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUu Zy4gT05fRVJST1IgKi8KLQkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkg bW9kZSIsICJIRUFERVIiKSkpOworCWlmIChvcHRzX291dC0+aGVhZGVyX2xpbmUgIT0gQ09QWV9I RUFERVJfRkFMU0UpCisJeworCQlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9C SU5BUlkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKKwkJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENP UFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCisJCQkJCWVycm1zZygiY2Fubm90IHNwZWNpZnkg JXMgaW4gQklOQVJZIG1vZGUiLCAiSEVBREVSIikpOworCQllbHNlIGlmKG9wdHNfb3V0LT5mb3Jt YXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQllcnJtc2coImNhbm5vdCBzcGVj aWZ5ICVzIGluIEpTT04gbW9kZSIsICJIRUFERVIiKSk7CisJfQogCiAJLyogQ2hlY2sgcXVvdGUg Ki8KIAlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgb3B0c19vdXQt PnF1b3RlICE9IE5VTEwpCkBAIC05MzIsNiArOTYyLDEyIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJIGVycm1zZygiQ09QWSAlcyBjYW5ub3QgYmUgdXNlZCB3 aXRoICVzIiwgIkZSRUVaRSIsCiAJCQkJCQkiQ09QWSBUTyIpKSk7CiAKKwkvKiBDaGVjayBqc29u IGZvcm1hdCAqLworCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04gJiYg aXNfZnJvbSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiQ09QWSAlcyBtb2RlIGNhbm5vdCBiZSB1c2Vk IHdpdGggJXMiLCAianNvbiIsICJDT1BZIEZST00iKSk7CisKIAlpZiAob3B0c19vdXQtPmRlZmF1 bHRfcHJpbnQpCiAJewogCQlpZiAoIWlzX2Zyb20pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IGM5 N2YwNDYwYjNlLi5hY2NmMzRlMWE2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTI2LDYgKzI2 LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImV4ZWN1dG9y L2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJm dW5jYXBpLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZv cm1hdC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCkBAIC0zMyw2ICszNCw3IEBACiAjaW5j bHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInRjb3Av dGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29uLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9y ZWwuaCIKQEAgLTEzMCw2ICsxMzIsNyBAQCBzdGF0aWMgdm9pZCBDb3B5VG9DU1ZPbmVSb3coQ29w eVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CiBzdGF0aWMgdm9pZCBDb3B5 VG9UZXh0TGlrZU9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90 LAogCQkJCQkJCQkgYm9vbCBpc19jc3YpOwogc3RhdGljIHZvaWQgQ29weVRvVGV4dExpa2VFbmQo Q29weVRvU3RhdGUgY3N0YXRlKTsKK3N0YXRpYyB2b2lkIENvcHlUb0pzb25PbmVSb3coQ29weVRv U3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CiBzdGF0aWMgdm9pZCBDb3B5VG9C aW5hcnlTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKTsKIHN0YXRp YyB2b2lkIENvcHlUb0JpbmFyeU91dEZ1bmMoQ29weVRvU3RhdGUgY3N0YXRlLCBPaWQgYXR0dHlw aWQsIEZtZ3JJbmZvICpmaW5mbyk7CiBzdGF0aWMgdm9pZCBDb3B5VG9CaW5hcnlPbmVSb3coQ29w eVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CkBAIC0xNDksNyArMTUyLDcg QEAgc3RhdGljIHZvaWQgQ29weVNlbmRJbnQxNihDb3B5VG9TdGF0ZSBjc3RhdGUsIGludDE2IHZh bCk7CiAvKgogICogQ09QWSBUTyByb3V0aW5lcyBmb3IgYnVpbHQtaW4gZm9ybWF0cy4KICAqCi0g KiBDU1YgYW5kIHRleHQgZm9ybWF0cyBzaGFyZSB0aGUgc2FtZSBUZXh0TGlrZSByb3V0aW5lcyBl eGNlcHQgZm9yIHRoZQorICogQ1NWIGFuZCB0ZXh0LCBqc29uIGZvcm1hdHMgc2hhcmUgdGhlIHNh bWUgVGV4dExpa2Ugcm91dGluZXMgZXhjZXB0IGZvciB0aGUKICAqIG9uZS1yb3cgY2FsbGJhY2su CiAgKi8KIApAQCAtMTY5LDYgKzE3MiwxNCBAQCBzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBD b3B5VG9Sb3V0aW5lQ1NWID0gewogCS5Db3B5VG9FbmQgPSBDb3B5VG9UZXh0TGlrZUVuZCwKIH07 CiAKKy8qIGpzb24gZm9ybWF0ICovCitzdGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9S b3V0aW5lSnNvbiA9IHsKKwkuQ29weVRvU3RhcnQgPSBDb3B5VG9UZXh0TGlrZVN0YXJ0LAorCS5D b3B5VG9PdXRGdW5jID0gQ29weVRvVGV4dExpa2VPdXRGdW5jLAorCS5Db3B5VG9PbmVSb3cgPSBD b3B5VG9Kc29uT25lUm93LAorCS5Db3B5VG9FbmQgPSBDb3B5VG9UZXh0TGlrZUVuZCwKK307CisK IC8qIGJpbmFyeSBmb3JtYXQgKi8KIHN0YXRpYyBjb25zdCBDb3B5VG9Sb3V0aW5lIENvcHlUb1Jv dXRpbmVCaW5hcnkgPSB7CiAJLkNvcHlUb1N0YXJ0ID0gQ29weVRvQmluYXJ5U3RhcnQsCkBAIC0x ODUsMTIgKzE5NiwxNCBAQCBDb3B5VG9HZXRSb3V0aW5lKGNvbnN0IENvcHlGb3JtYXRPcHRpb25z ICpvcHRzKQogCQlyZXR1cm4gJkNvcHlUb1JvdXRpbmVDU1Y7CiAJZWxzZSBpZiAob3B0cy0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQmluYXJ5 OworCWVsc2UgaWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OKQorCQlyZXR1cm4g JkNvcHlUb1JvdXRpbmVKc29uOwogCiAJLyogZGVmYXVsdCBpcyB0ZXh0ICovCiAJcmV0dXJuICZD b3B5VG9Sb3V0aW5lVGV4dDsKIH0KIAotLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YXJ0IGNh bGxiYWNrIGZvciB0ZXh0IGFuZCBDU1YgZm9ybWF0cyAqLworLyogSW1wbGVtZW50YXRpb24gb2Yg dGhlIHN0YXJ0IGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMgKi8KIHN0 YXRpYyB2b2lkCiBDb3B5VG9UZXh0TGlrZVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVE ZXNjIHR1cERlc2MpCiB7CkBAIC0yMDksNiArMjIyLDggQEAgQ29weVRvVGV4dExpa2VTdGFydChD b3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogCQlMaXN0Q2VsbCAgICpjdXI7 CiAJCWJvb2wJCWhkcl9kZWxpbSA9IGZhbHNlOwogCisJCUFzc2VydChjc3RhdGUtPm9wdHMuZm9y bWF0ICE9IENPUFlfRk9STUFUX0pTT04pOworCiAJCWZvcmVhY2goY3VyLCBjc3RhdGUtPmF0dG51 bWxpc3QpCiAJCXsKIAkJCWludAkJCWF0dG51bSA9IGxmaXJzdF9pbnQoY3VyKTsKQEAgLTIzMSw3 ICsyNDYsNyBAQCBDb3B5VG9UZXh0TGlrZVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVE ZXNjIHR1cERlc2MpCiB9CiAKIC8qCi0gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgb3V0ZnVuYyBj YWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NWIGZvcm1hdHMuIEFzc2lnbgorICogSW1wbGVtZW50YXRp b24gb2YgdGhlIG91dGZ1bmMgY2FsbGJhY2sgZm9yIHRleHQsIENTViwgYW5kIGpzb24gZm9ybWF0 cy4gQXNzaWduCiAgKiB0aGUgb3V0cHV0IGZ1bmN0aW9uIGRhdGEgdG8gdGhlIGdpdmVuICpmaW5m by4KICAqLwogc3RhdGljIHZvaWQKQEAgLTMwNCwxMyArMzE5LDQ2IEBAIENvcHlUb1RleHRMaWtl T25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwKIAlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0 YXRlKTsKIH0KIAotLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGVuZCBjYWxsYmFjayBmb3IgdGV4 dCBhbmQgQ1NWIGZvcm1hdHMgKi8KKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJh Y2sgZm9yIHRleHQsIENTViwgYW5kIGpzb24gZm9ybWF0cyAqLwogc3RhdGljIHZvaWQKIENvcHlU b1RleHRMaWtlRW5kKENvcHlUb1N0YXRlIGNzdGF0ZSkKIHsKIAkvKiBOb3RoaW5nIHRvIGRvIGhl cmUgKi8KIH0KIAorLyogSW1wbGVtZW50YXRpb24gb2YgcGVyLXJvdyBjYWxsYmFjayBmb3IganNv biBmb3JtYXQgKi8KK3N0YXRpYyB2b2lkCitDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNz dGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCit7CisJRGF0dW0JCXJvd2RhdGE7CisJU3RyaW5n SW5mbwlyZXN1bHQ7CisKKwkvKgorCSAqIElmIENPUFkgVE8gc291cmNlIGRhdGEgY29tZSBmcm9t IHF1ZXJ5IHJhdGhlciB0aGFuIHBsYWluIHRhYmxlLCB3ZSBuZWVkCisJICogY29weSBDb3B5VG9T dGF0ZS0+UXVlcnlEZXNjLT5UdXBsZURlc2MgdG8gc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvci4K KwkgKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBzbG90J3MgVHVwbGVEZXNjIG1heSBj aGFuZ2UgZHVyaW5nIHF1ZXJ5CisJICogZXhlY3V0aW9uLCBhbmQgd2UgZGVwZW5kIG9uIGl0IHdo ZW4gY2FsbGluZyBjb21wb3NpdGVfdG9fanNvbi4KKwkgKi8KKwlpZiAoIWNzdGF0ZS0+cmVsKQor CXsKKwkJbWVtY3B5KFR1cGxlRGVzY0F0dHIoc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgMCks CisJCQkgICBUdXBsZURlc2NBdHRyKGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjLCAwKSwKKwkJ CSAgIGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjLT5uYXR0cyAqIHNpemVvZihGb3JtRGF0YV9w Z19hdHRyaWJ1dGUpKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IGNzdGF0ZS0+cXVlcnlEZXNj LT50dXBEZXNjLT5uYXR0czsgaSsrKQorCQkJcG9wdWxhdGVfY29tcGFjdF9hdHRyaWJ1dGUoc2xv dC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgaSk7CisKKwkJQmxlc3NUdXBsZURlc2Moc2xvdC0+dHRz X3R1cGxlRGVzY3JpcHRvcik7CisJfQorCXJvd2RhdGEgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxl RGF0dW0oc2xvdCk7CisJcmVzdWx0ID0gbWFrZVN0cmluZ0luZm8oKTsKKwljb21wb3NpdGVfdG9f anNvbihyb3dkYXRhLCByZXN1bHQsIGZhbHNlKTsKKworCUNvcHlTZW5kRGF0YShjc3RhdGUsIHJl c3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4pOworCisJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNz dGF0ZSk7Cit9CisKIC8qCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhcnQgY2FsbGJhY2sg Zm9yIGJpbmFyeSBmb3JtYXQuIFNlbmQgYSBoZWFkZXIKICAqIGZvciBhIGJpbmFyeSBjb3B5LgpA QCAtNDAyLDkgKzQ1MCwyMSBAQCBTZW5kQ29weUJlZ2luKENvcHlUb1N0YXRlIGNzdGF0ZSkKIAog CXBxX2JlZ2lubWVzc2FnZSgmYnVmLCBQcU1zZ19Db3B5T3V0UmVzcG9uc2UpOwogCXBxX3NlbmRi eXRlKCZidWYsIGZvcm1hdCk7CS8qIG92ZXJhbGwgZm9ybWF0ICovCi0JcHFfc2VuZGludDE2KCZi dWYsIG5hdHRzKTsKLQlmb3IgKGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKLQkJcHFfc2VuZGludDE2 KCZidWYsIGZvcm1hdCk7IC8qIHBlci1jb2x1bW4gZm9ybWF0cyAqLworCWlmIChjc3RhdGUtPm9w dHMuZm9ybWF0ICE9IENPUFlfRk9STUFUX0pTT04pCisJeworCQlwcV9zZW5kaW50MTYoJmJ1Ziwg bmF0dHMpOworCQlmb3IgKGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKKwkJCXBxX3NlbmRpbnQxNigm YnVmLCBmb3JtYXQpOyAvKiBwZXItY29sdW1uIGZvcm1hdHMgKi8KKwl9CisJZWxzZQorCXsKKwkJ LyoKKwkJICogSlNPTiBmb3JtYXQgaXMgYWx3YXlzIG9uZSBub24tYmluYXJ5IGNvbHVtbgorCQkg Ki8KKwkJcHFfc2VuZGludDE2KCZidWYsIDEpOworCQlwcV9zZW5kaW50MTYoJmJ1ZiwgMCk7CisJ fQorCiAJcHFfZW5kbWVzc2FnZSgmYnVmKTsKIAljc3RhdGUtPmNvcHlfZGVzdCA9IENPUFlfRlJP TlRFTkQ7CiB9CkBAIC01MDQsNyArNTY0LDcgQEAgQ29weVNlbmRFbmRPZlJvdyhDb3B5VG9TdGF0 ZSBjc3RhdGUpCiB9CiAKIC8qCi0gKiBXcmFwcGVyIGZ1bmN0aW9uIG9mIENvcHlTZW5kRW5kT2ZS b3cgZm9yIHRleHQgYW5kIENTViBmb3JtYXRzLiBTZW5kcyB0aGUKKyAqIFdyYXBwZXIgZnVuY3Rp b24gb2YgQ29weVNlbmRFbmRPZlJvdyBmb3IgdGV4dCwgQ1NWLCBhbmQganNvbiBmb3JtYXRzLiBT ZW5kcyB0aGUKICAqIGxpbmUgdGVybWluYXRpb24gYW5kIGRvIGNvbW1vbiBhcHByb3ByaWF0ZSB0 aGluZ3MgZm9yIHRoZSBlbmQgb2Ygcm93LgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CmluZGV4IDU3ZmUwMTg2NTQ3Li43Y2JkYWRjOThhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0zNTU3 LDYgKzM1NTcsMTAgQEAgY29weV9vcHRfaXRlbToKIAkJCQl7CiAJCQkJCSQkID0gbWFrZURlZkVs ZW0oImZvcm1hdCIsIChOb2RlICopIG1ha2VTdHJpbmcoImNzdiIpLCBAMSk7CiAJCQkJfQorCQkJ fCBKU09OCisJCQkJeworCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJmb3JtYXQiLCAoTm9kZSAqKSBt YWtlU3RyaW5nKCJqc29uIiksIEAxKTsKKwkJCQl9CiAJCQl8IEhFQURFUl9QCiAJCQkJewogCQkJ CQkkJCA9IG1ha2VEZWZFbGVtKCJoZWFkZXIiLCAoTm9kZSAqKSBtYWtlQm9vbGVhbih0cnVlKSwg QDEpOwpAQCAtMzYzOSw2ICszNjQzLDEwIEBAIGNvcHlfZ2VuZXJpY19vcHRfZWxlbToKIAkJCQl7 CiAJCQkJCSQkID0gbWFrZURlZkVsZW0oJDEsICQyLCBAMSk7CiAJCQkJfQorCQkJfCBGT1JNQVRf TEEgY29weV9nZW5lcmljX29wdF9hcmcKKwkJCQl7CisJCQkJCSQkID0gbWFrZURlZkVsZW0oImZv cm1hdCIsICQyLCBAMSk7CisJCQkJfQogCQk7CiAKIGNvcHlfZ2VuZXJpY19vcHRfYXJnOgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uLmMKaW5kZXggMDZkZDYyZjAwMDguLjY0N2FkYWZkMjI3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uLmMKQEAgLTg2LDggKzg2LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbkFnZ1N0YXRlCiAJSnNv blVuaXF1ZUJ1aWxkZXJTdGF0ZSB1bmlxdWVfY2hlY2s7CiB9IEpzb25BZ2dTdGF0ZTsKIAotc3Rh dGljIHZvaWQgY29tcG9zaXRlX3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJl c3VsdCwKLQkJCQkJCQkgIGJvb2wgdXNlX2xpbmVfZmVlZHMpOwogc3RhdGljIHZvaWQgYXJyYXlf ZGltX3RvX2pzb24oU3RyaW5nSW5mbyByZXN1bHQsIGludCBkaW0sIGludCBuZGltcywgaW50ICpk aW1zLAogCQkJCQkJCSAgY29uc3QgRGF0dW0gKnZhbHMsIGNvbnN0IGJvb2wgKm51bGxzLCBpbnQg KnZhbGNvdW50LAogCQkJCQkJCSAgSnNvblR5cGVDYXRlZ29yeSB0Y2F0ZWdvcnksIE9pZCBvdXRm dW5jb2lkLApAQCAtNTE3LDggKzUxNSw5IEBAIGFycmF5X3RvX2pzb25faW50ZXJuYWwoRGF0dW0g YXJyYXksIFN0cmluZ0luZm8gcmVzdWx0LCBib29sIHVzZV9saW5lX2ZlZWRzKQogCiAvKgogICog VHVybiBhIGNvbXBvc2l0ZSAvIHJlY29yZCBpbnRvIEpTT04uCisgKiBFeHBvcnRlZCBzbyBDT1BZ IFRPIGNhbiB1c2UgaXQuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBjb21wb3NpdGVfdG9fanNv bihEYXR1bSBjb21wb3NpdGUsIFN0cmluZ0luZm8gcmVzdWx0LCBib29sIHVzZV9saW5lX2ZlZWRz KQogewogCUhlYXBUdXBsZUhlYWRlciB0ZDsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCAzMTZh MmRhZmJmMS4uMGZkMDZhMzEyMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTMzNzYsNyAr MzM3Niw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCS8qIENvbXBs ZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBbUFJPR1JBTV0gPHN0aD4gV0lUSCAoRk9STUFUICovCiAJ ZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST018VE8iLCBNYXRj aEFueUV4Y2VwdCgiUFJPR1JBTSIpLCAiV0lUSCIsICIoIiwgIkZPUk1BVCIpIHx8CiAJCQkgTWF0 Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST018VE8iLCAiUFJPR1JBTSIsIE1hdGNo QW55LCAiV0lUSCIsICIoIiwgIkZPUk1BVCIpKQotCQlDT01QTEVURV9XSVRIKCJiaW5hcnkiLCAi Y3N2IiwgInRleHQiKTsKKwkJQ09NUExFVEVfV0lUSCgiYmluYXJ5IiwgImNzdiIsICJ0ZXh0Iiwg Impzb24iKTsKIAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTSBbUFJPR1JBTV0gZmlsZW5h bWUgV0lUSCAoT05fRVJST1IgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1h dGNoQW55LCAiRlJPTSIsIE1hdGNoQW55RXhjZXB0KCJQUk9HUkFNIiksICJXSVRIIiwgIigiLCAi T05fRVJST1IiKSB8fApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCmluZGV4IDY4NjY1MzIzM2IyLi44NWFlZGMyNjdk NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2NvcHkuaApAQCAtNTYsNiArNTYsNyBAQCB0eXBlZGVmIGVudW0gQ29weUZv cm1hdAogCUNPUFlfRk9STUFUX1RFWFQgPSAwLAogCUNPUFlfRk9STUFUX0JJTkFSWSwKIAlDT1BZ X0ZPUk1BVF9DU1YsCisJQ09QWV9GT1JNQVRfSlNPTiwKIH0gQ29weUZvcm1hdDsKIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pz b24uaAppbmRleCA0OWJiZGE3YWMwNi4uMWZhOGUyY2U4ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL2pzb24uaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9qc29uLmgKQEAgLTE3LDYg KzE3LDggQEAKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogCiAvKiBmdW5jdGlvbnMgaW4g anNvbi5jICovCitleHRlcm4gdm9pZCBjb21wb3NpdGVfdG9fanNvbihEYXR1bSBjb21wb3NpdGUs IFN0cmluZ0luZm8gcmVzdWx0LAorCQkJCQkJCSAgYm9vbCB1c2VfbGluZV9mZWVkcyk7CiBleHRl cm4gdm9pZCBlc2NhcGVfanNvbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hhciAqc3RyKTsKIGV4 dGVybiB2b2lkIGVzY2FwZV9qc29uX3dpdGhfbGVuKFN0cmluZ0luZm8gYnVmLCBjb25zdCBjaGFy ICpzdHIsIGludCBsZW4pOwogZXh0ZXJuIHZvaWQgZXNjYXBlX2pzb25fdGV4dChTdHJpbmdJbmZv IGJ1ZiwgY29uc3QgdGV4dCAqdHh0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29weS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CmluZGV4 IDI0ZTBmNDcyZjE0Li4xMDMzMzM1N2Q2OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb3B5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0 CkBAIC03Myw2ICs3Myw4MiBAQCBjb3B5IGNvcHl0ZXN0MyB0byBzdGRvdXQgY3N2IGhlYWRlcjsK IGMxLCJjb2wgd2l0aCAsIGNvbW1hIiwiY29sIHdpdGggIiIgcXVvdGUiCiAxLGEsMQogMixiLDIK Ky0tLSB0ZXN0IGNvcHlpbmcgaW4gSlNPTiBtb2RlIHdpdGggdmFyaW91cyBzdHlsZXMKK2NvcHkg Y29weXRlc3QgdG8gc3Rkb3V0IGpzb247Cit7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5k ZWYiLCJmaWxsZXIiOjF9Cit7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxl ciI6Mn0KK3sic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9Cit7InN0 eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK2Nv cHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Cit7InN0eWxlIjoiRE9TIiwidGVz dCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9Cit7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNc bmRlZiIsImZpbGxlciI6Mn0KK3sic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxs ZXIiOjN9Cit7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZp bGxlciI6NH0KKy0tIGFsbCBvZiB0aGUgZm9sbG93aW5nIHNob3VsZCB5aWVsZCBlcnJvcgorY29w eSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWxpbWl0ZXIgJ3wnKTsKK0VSUk9S OiAgY2Fubm90IHNwZWNpZnkgREVMSU1JVEVSIGluIEpTT04gbW9kZQorY29weSBjb3B5dGVzdCB0 byBzdGRvdXQgKGZvcm1hdCBqc29uLCBudWxsICdcTicpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lm eSBOVUxMIGluIEpTT04gbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29u LCBkZWZhdWx0ICd8Jyk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IERFRkFVTFQgaW4gSlNPTiBt b2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGhlYWRlcik7CitFUlJP UjogIGNhbm5vdCBzcGVjaWZ5IEhFQURFUiBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgaGVhZGVyIDEpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBI RUFERVIgaW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24s IHF1b3RlICciJyk7CitFUlJPUjogIENPUFkgUVVPVEUgcmVxdWlyZXMgQ1NWIG1vZGUKK2NvcHkg Y29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZXNjYXBlICciJyk7CitFUlJPUjogIENP UFkgRVNDQVBFIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9y bWF0IGpzb24sIGZvcmNlX3F1b3RlICopOworRVJST1I6ICBDT1BZIEZPUkNFX1FVT1RFIHJlcXVp cmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNl X25vdF9udWxsICopOworRVJST1I6ICBDT1BZIEZPUkNFX05PVF9OVUxMIHJlcXVpcmVzIENTViBt b2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX251bGwgKik7 CitFUlJPUjogIENPUFkgRk9SQ0VfTlVMTCByZXF1aXJlcyBDU1YgbW9kZQorY29weSBjb3B5dGVz dCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOworRVJST1I6ICBDT1BZ IE9OX0VSUk9SIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBUTworTElORSAxOiBjb3B5IGNvcHl0 ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIG9uX2Vycm9yIGlnbm9yZSk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorY29weSBjb3B5dGVzdCBmcm9t IHN0ZGluKGZvcm1hdCBqc29uKTsKK0VSUk9SOiAgQ09QWSBqc29uIG1vZGUgY2Fubm90IGJlIHVz ZWQgd2l0aCBDT1BZIEZST00KKy0tIGFsbCBvZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVycm9y CistLSBlbWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlq c29udGVzdCAoCisgICAgaWQgYmlnc2VyaWFsLAorICAgIGYxIHRleHQsCisgICAgZjIgdGltZXN0 YW1wdHopOworaW5zZXJ0IGludG8gY29weWpzb250ZXN0CisgIHNlbGVjdCBnLmksCisgICAgICAg ICBDQVNFIFdIRU4gZy5pICUgMiA9IDAgVEhFTgorICAgICAgICAgICAnbGluZSB3aXRoICcnIGlu IGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAgRUxTRQorICAgICAgICAgICAnbGluZSB3aXRo ICIgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTkQsCisgICAgICAgICAnTW9uIEZl YiAxMCAxNzozMjowMSAxOTk3IFBTVCcKKyAgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBhcyBn KGkpOworaW5zZXJ0IGludG8gY29weWpzb250ZXN0IChmMSkgdmFsdWVzCisoRSdhYWFcImJiYic6 OnRleHQpLAorKEUnYWFhXFxiYmInOjp0ZXh0KSwKKyhFJ2FhYVwvYmJiJzo6dGV4dCksCisoRSdh YWFcYmJiYic6OnRleHQpLAorKEUnYWFhXGZiYmInOjp0ZXh0KSwKKyhFJ2FhYVxuYmJiJzo6dGV4 dCksCisoRSdhYWFccmJiYic6OnRleHQpLAorKEUnYWFhXHRiYmInOjp0ZXh0KTsKK2NvcHkgY29w eWpzb250ZXN0IHRvIHN0ZG91dCBqc29uOworeyJpZCI6MSwiZjEiOiJsaW5lIHdpdGggXCIgaW4g aXQ6IDEiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6MiwiZjEiOiJs aW5lIHdpdGggJyBpbiBpdDogMiIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7 ImlkIjozLCJmMSI6ImxpbmUgd2l0aCBcIiBpbiBpdDogMyIsImYyIjoiMTk5Ny0wMi0xMFQxNzoz MjowMS0wODowMCJ9Cit7ImlkIjo0LCJmMSI6ImxpbmUgd2l0aCAnIGluIGl0OiA0IiwiZjIiOiIx OTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjUsImYxIjoibGluZSB3aXRoIFwiIGlu IGl0OiA1IiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjEsImYxIjoi YWFhXCJiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjIsImYxIjoiYWFhXFxiYmIiLCJmMiI6bnVsbH0K K3siaWQiOjMsImYxIjoiYWFhL2JiYiIsImYyIjpudWxsfQoreyJpZCI6NCwiZjEiOiJhYWFcYmJi YiIsImYyIjpudWxsfQoreyJpZCI6NSwiZjEiOiJhYWFcZmJiYiIsImYyIjpudWxsfQoreyJpZCI6 NiwiZjEiOiJhYWFcbmJiYiIsImYyIjpudWxsfQoreyJpZCI6NywiZjEiOiJhYWFccmJiYiIsImYy IjpudWxsfQoreyJpZCI6OCwiZjEiOiJhYWFcdGJiYiIsImYyIjpudWxsfQogY3JlYXRlIHRlbXAg dGFibGUgY29weXRlc3Q0ICgKIAljMSBpbnQsCiAJImNvbG5hbWUgd2l0aCB0YWI6IAkiIHRleHQp OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9jb3B5LnNxbAppbmRleCA2NzZhOGIzNDJiNS4uODA3OTllMmVhZDkgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NvcHkuc3FsCkBAIC04Miw2ICs4Miw1MyBAQCB0aGlzIGlzIGp1c3QgYSBsaW5lIGZ1 bGwgb2YganVuayB0aGF0IHdvdWxkIGVycm9yIG91dCBpZiBwYXJzZWQKIAogY29weSBjb3B5dGVz dDMgdG8gc3Rkb3V0IGNzdiBoZWFkZXI7CiAKKy0tLSB0ZXN0IGNvcHlpbmcgaW4gSlNPTiBtb2Rl IHdpdGggdmFyaW91cyBzdHlsZXMKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IGpzb247Citjb3B5 IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworCistLSBhbGwgb2YgdGhlIGZvbGxv d2luZyBzaG91bGQgeWllbGQgZXJyb3IKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQg anNvbiwgZGVsaW1pdGVyICd8Jyk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpz b24sIG51bGwgJ1xOJyk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGRl ZmF1bHQgJ3wnKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgaGVhZGVy KTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgaGVhZGVyIDEpOworY29w eSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBxdW90ZSAnIicpOworY29weSBjb3B5 dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBlc2NhcGUgJyInKTsKK2NvcHkgY29weXRlc3Qg dG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfcXVvdGUgKik7Citjb3B5IGNvcHl0ZXN0IHRv IHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX25vdF9udWxsICopOworY29weSBjb3B5dGVzdCB0 byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9udWxsICopOworY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOworY29weSBjb3B5dGVzdCBmcm9t IHN0ZGluKGZvcm1hdCBqc29uKTsKKy0tIGFsbCBvZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVy cm9yCisKKy0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycworY3JlYXRlIHRlbXAgdGFibGUg Y29weWpzb250ZXN0ICgKKyAgICBpZCBiaWdzZXJpYWwsCisgICAgZjEgdGV4dCwKKyAgICBmMiB0 aW1lc3RhbXB0eik7CisKK2luc2VydCBpbnRvIGNvcHlqc29udGVzdAorICBzZWxlY3QgZy5pLAor ICAgICAgICAgQ0FTRSBXSEVOIGcuaSAlIDIgPSAwIFRIRU4KKyAgICAgICAgICAgJ2xpbmUgd2l0 aCAnJyBpbiBpdDogJyB8fCBnLmk6OnRleHQKKyAgICAgICAgIEVMU0UKKyAgICAgICAgICAgJ2xp bmUgd2l0aCAiIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAgRU5ELAorICAgICAgICAg J01vbiBGZWIgMTAgMTc6MzI6MDEgMTk5NyBQU1QnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEs NSkgYXMgZyhpKTsKKworaW5zZXJ0IGludG8gY29weWpzb250ZXN0IChmMSkgdmFsdWVzCisoRSdh YWFcImJiYic6OnRleHQpLAorKEUnYWFhXFxiYmInOjp0ZXh0KSwKKyhFJ2FhYVwvYmJiJzo6dGV4 dCksCisoRSdhYWFcYmJiYic6OnRleHQpLAorKEUnYWFhXGZiYmInOjp0ZXh0KSwKKyhFJ2FhYVxu YmJiJzo6dGV4dCksCisoRSdhYWFccmJiYic6OnRleHQpLAorKEUnYWFhXHRiYmInOjp0ZXh0KTsK KworY29weSBjb3B5anNvbnRlc3QgdG8gc3Rkb3V0IGpzb247CisKIGNyZWF0ZSB0ZW1wIHRhYmxl IGNvcHl0ZXN0NCAoCiAJYzEgaW50LAogCSJjb2xuYW1lIHdpdGggdGFiOiAJIiB0ZXh0KTsKLS0g CjIuMzQuMQoK --00000000000047c73a064332f642--