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 1vqTgF-00BYGH-1S for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Feb 2026 10:12:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vqTgE-007oZi-22 for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Feb 2026 10:12:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vqTgD-007oWz-2t for pgsql-hackers@lists.postgresql.org; Thu, 12 Feb 2026 10:12:15 +0000 Received: from mail-yx1-xb132.google.com ([2607:f8b0:4864:20::b132]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vqTgB-00000000GX5-3yyJ for pgsql-hackers@lists.postgresql.org; Thu, 12 Feb 2026 10:12:13 +0000 Received: by mail-yx1-xb132.google.com with SMTP id 956f58d0204a3-649d589ab0fso1290439d50.2 for ; Thu, 12 Feb 2026 02:12:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770891132; cv=none; d=google.com; s=arc-20240605; b=ZVizUjuzHdmMpdysoyUGxWUQTNC6tsuo8eJbsD9UDdtTdqDrLFO0YSsyczLUIwSYiA QQzey3pM9tKit0boHo5Ck7etVLFq3jbOOYESMZsSOvvYjA8XV63dRAo2f0ZG5ZiT3JUG L3YTtiyFcJY0yPXcmd6YMfAW5fcDAilKC41QInVXS6YAIKqAFwkJ4o9xHd7Njr7i2b7l uTin+gLIAhXq3cRUEwoN/dqQmA35gkQJPAPa0Vi783QcFhjEB+ShQe84KxhStqt2/sPY +zGKbMSIf5rJEK0US30OxIAQ8ciARYRQJnk9GB1RPbbWkhEpKEGpS7sDoVZ4jyZ2dB6t miXA== 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=9yEKyKI1dSjkW0batl50kj9vGkON7inDlpo2SoCg0tI=; fh=DM93uH3yrF4DPPX8Y9V5dMqy4/x8ZfJipUK5QQFIBhE=; b=dOO6PydQ/6E0Wd3pVv37bRCg40ZoxnFgIhEZrVa4kStHs7RPfiOLwz03VvivdSxXO7 dha+Q6RJI42ussLcJKGLFsBFIve0Cv38S8QcIyo6skGV3JRhulZQsUl43NR4hXzcp0J6 cg+x1GMvqj2lf8u4Yt6+OuQnBI0rgBNVkbaSrPmrAroI/csdwyVeiOkCRHnzQ+tu28Ym nv5K7RsF2yt2uu1JgNcGcwv97Sj437+yM+b2fkiZcxS2AVxyZLyScj4AFzst5+RvtOW2 lO+zR76Mh5hFqEKpMdhescPm3hE9r3oAQ0YkgSIPCGJjAXc9lJIKw/u+xiF7Wgp5pwZV VJUQ==; darn=lists.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=1770891132; x=1771495932; darn=lists.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=9yEKyKI1dSjkW0batl50kj9vGkON7inDlpo2SoCg0tI=; b=UwfpE3WcM2y91yd+Q79OWXQbXdbyZNljWVWJjoamCAa9NJOxaS5XeAMsJLj/Mzf99M nN7ArVd7jsD+ks05ZyZ3nGX+x+MfgIBKwwccGwh1TXkbakJnn8jCTTUWulrT8OgEg+uo TwG5GpKvlzTrhuoxwV5591xrF+jwts8osGlj9NVX0f3UoddyaTpG7gTjsFGWkLne4I9x PLNfNw49zN8kWeDSGxrBFxNeZ2QB1OxfgrKEW56/FOb81ExyRnDatXg/lXhDwNKE3Tga lfhtBfUvsPTkrg6if9GW0uZcScXdZ8ri5hgL2lRYx27TS8dHACE406mgZvvcB6wJbOpR qH1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770891132; x=1771495932; 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=9yEKyKI1dSjkW0batl50kj9vGkON7inDlpo2SoCg0tI=; b=CKMhmf5hIbNB8GvmhBLQt2vGgy3Y3B2cQXu6njVVLDme42ZUnMFoTBRKyIa/jLlXaJ XLCf8g47u6jNbJSbXjFMa9mJhe9Pm/N+QUYfR0OxWo/J5GKxrpxLDhl4YYfz26W5nfah nMFge91sRzCc8iGJCu6A1nbK7bWUBvFZDYjKyWsxJ3k1vJ+bK6523zddMpNGCihNm4Ra sSqgX3/hDopVgUCjTY84Z/kcYUNm1dYTKjB3dzV8/HSyOlRyZS1nx26iObhRwmqtPmWk P9Js7Sj1j5BRePT6PA7vrLA1GSUugBCE69nvJYG2qXykFrONb0nyfFqB6FgWbCxlOoJh CRIQ== X-Gm-Message-State: AOJu0YxgnhokRWSgWMI9Fkrh1r+1NPIJSRKrDeBMiAuJUfIC8ufIz/fV zwKliRvZuvaXcyRrASJFsF0AXeUisU5K6qqUtVl1nU/1iMbYaX8iLZEYQeTrRQtLHBBD8U1c5NS p4SlMNh/XXtDZJiRd9Y7ZM+1W4U2Q8FQ= X-Gm-Gg: AZuq6aLat26bGE4E1dMgYXas1z/OpnDaDgpM2fZTyYOwbrBOeQ79rNk7p/hgaqDhdnP KmHrVOCQ8UvUpfoBdXl9eVPUvdb/CRragZgRXngYgdUAF6iHI1hAZCR9YnXr8CWH1RFhJu8BoF4 PP7TEG+SYhogSYurFbszXZDaTf4X8JAjzWzXtBMa0UVA4SieKpoX62lV3ngjl7+iN1FYPkw4yP2 +Crv8oQMUVKDyaKAFdlk/16heJvy4uMx08WI0Rg8NlbrsEjaPmHX6qrrYIZW3JRGGltHS7Abzxv xh6sdQhz+c1yOfiCC28mTrd5zUFCoKKwAhumj5hI9EqHk1zrVSh5iRDiwnxdWYA= X-Received: by 2002:a05:690c:660e:b0:796:4486:b7f5 with SMTP id 00721157ae682-7972f0c2885mr19044047b3.2.1770891131927; Thu, 12 Feb 2026 02:12:11 -0800 (PST) MIME-Version: 1.0 References: <5dbba701-c93b-4625-b35b-76d52131535e@gmail.com> <176953843500.1247419.17388294117341687241.pgcf@coridan.postgresql.org> In-Reply-To: From: Florin Irion Date: Thu, 12 Feb 2026 14:11:55 +0400 X-Gm-Features: AZwV_QgO5QQM9KopPljQa5EjT8cn6GOPup9G0D2emeohoeIsLatVo3tPTL6O9aA Message-ID: Subject: Re: [PATCH] pg_get_domain_ddl: DDL reconstruction function for CREATE DOMAIN statement To: Haritabh Gupta Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000daf18d064a9db897" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000daf18d064a9db897 Content-Type: multipart/alternative; boundary="000000000000daf18b064a9db895" --000000000000daf18b064a9db895 Content-Type: text/plain; charset="UTF-8" Hello, New patch rebased on current master attached. Cheers, -- * Florin Irion * * https://www.enterprisedb.com * --000000000000daf18b064a9db895 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
= Hello,

New patch rebased on current master attached.

Cheers,

--
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0Florin Irion=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
--000000000000daf18b064a9db895-- --000000000000daf18d064a9db897 Content-Type: application/octet-stream; name="v7-0001-Add-pg_get_domain_ddl-function-to-reconstruct-CRE.patch" Content-Disposition: attachment; filename="v7-0001-Add-pg_get_domain_ddl-function-to-reconstruct-CRE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mljatftk0 RnJvbSA5NDM5NjE0MGU4ZGM3MDIxNGVmYWMwNzM0ZjUxN2RkZDM5NWJiZTVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGbG9yaW4gSXJpb24gPGZsb3Jpbi5pcmlvbkBlbnRlcnByaXNl ZGIuY29tPgpEYXRlOiBUaHUsIDE4IFNlcCAyMDI1IDE4OjUyOjQzICswMjAwClN1YmplY3Q6IFtQ QVRDSCB2N10gQWRkIHBnX2dldF9kb21haW5fZGRsKCkgZnVuY3Rpb24gdG8gcmVjb25zdHJ1Y3Qg Q1JFQVRFCiBET01BSU4gc3RhdGVtZW50cwpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJp dAoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHN5c3RlbSBmdW5jdGlvbiBwZ19nZXRfZG9t YWluX2RkbCgpIHRoYXQKcmVjb25zdHJ1Y3RzIHRoZSBDUkVBVEUgRE9NQUlOIHN0YXRlbWVudCBm b3IgYSBnaXZlbiBkb21haW4uIFRoZSBmdW5jdGlvbgp0YWtlcyBhIHJlZ3R5cGUgcGFyYW1ldGVy IGFuZCByZXR1cm5zIHRoZSBjb21wbGV0ZSBEREwgc3RhdGVtZW50IGluY2x1ZGluZwp0aGUgZG9t YWluIG5hbWUsIGJhc2UgdHlwZSwgZGVmYXVsdCB2YWx1ZSwgYW5kIGFsbCBhc3NvY2lhdGVkIGNv bnN0cmFpbnRzLgoKVGhlIGZ1bmN0aW9uIGZvbGxvd3MgdGhlIHNhbWUgcGF0dGVybiBhcyBvdGhl ciBEREwgcmVjb25zdHJ1Y3Rpb24gZnVuY3Rpb25zCmxpa2UgcGdfZ2V0X2Z1bmN0aW9uZGVmKCkg YW5kIHBnX2dldF9jb25zdHJhaW50ZGVmKCksIHByb3ZpZGluZyBhCmRlY29tcGlsZWQgcmVjb25z dHJ1Y3Rpb24gcmF0aGVyIHRoYW4gdGhlIG9yaWdpbmFsIGNvbW1hbmQgdGV4dC4KCktleSBmZWF0 dXJlczoKKiBTdXBwb3J0cyBkb21haW5zIHdpdGggZGVmYXVsdCB2YWx1ZXMKKiBJbmNsdWRlcyBh bGwgZG9tYWluIGNvbnN0cmFpbnRzIChDSEVDSywgTk9UIE5VTEwpCiogTk9UIFZBTElEIGNvbnN0 cmFpbnQgYXJlIGhhbmRsZWQgd2l0aCBhbiBleHRyYSBBTFRFUiBjb21tYW5kLgoqIFByb3Blcmx5 IHF1b3RlcyBpZGVudGlmaWVycyBhbmQgc2NoZW1hIG5hbWVzCiogSGFuZGxlcyBjb21wbGV4IGNv bnN0cmFpbnQgZXhwcmVzc2lvbnMKKiBwcmV0dHkgcHJpbnRpbmcgc3VwcG9ydAoqIHdhcm4gYWdh aW5zdCBjb25mbGljdGluZyBidWlsdC1pbiBuYW1lcwoqIFVzZXMgR0VUX0RETF9QUkVUVFlfRkxB R1MgbWFjcm8gZm9yIGNvbnNpc3RlbnQgcHJldHR5LXByaW50aW5nIGJlaGF2aW9yCgpBIG5ldyBk b2N1bWVudGF0aW9uIHNlY3Rpb24gIkdldCBPYmplY3QgRERMIEZ1bmN0aW9ucyIgaGFzIGJlZW4g Y3JlYXRlZAp0byBncm91cCBEREwgcmVjb25zdHJ1Y3Rpb24gZnVuY3Rpb25zLCBzdGFydGluZyB3 aXRoIHBnX2dldF9kb21haW5fZGRsKCkuClRoaXMgcHJvdmlkZXMgYSBmb3VuZGF0aW9uIGZvciBm dXR1cmUgRERMIGZ1bmN0aW9ucyBmb3Igb3RoZXIgb2JqZWN0IHR5cGVzLgoKQ29tcHJlaGVuc2l2 ZSByZWdyZXNzaW9uIHRlc3RzIGFyZSBpbmNsdWRlZCBjb3ZlcmluZyB2YXJpb3VzIGRvbWFpbgpj b25maWd1cmF0aW9ucy4gSW4gYSBzZXBhcmF0ZSBmaWxlIHNxbC9vYmplY3RfZGRsLnNxbCB3aGVy ZSBtb3JlCiJnZXRfb2JqZWN0X2RkbCIgZnVuY3Rpb25zIGNhbiBiZSB0ZXN0ZWQgaW4gdGhlIGZ1 dHVyZS4KClJlZmVyZW5jZTogUEctMTUxCkF1dGhvcjogRmxvcmluIElyaW9uIDxmbG9yaW4uaXJp b25AZW50ZXJwcmlzZWRiLmNvbT4KQXV0aG9yOiBUaW0gV2FpemVuZWdnZXIgPHRpbS53YWl6ZW5l Z2dlckBlbnRlcnByaXNlZGIuY29tPgpSZXZpZXdlZC1ieTogw4FsdmFybyBIZXJyZXJhIGFsdmhl cnJlQGFsdmgubm8taXAub3JnClJldmlld2VkLWJ5OiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0 eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29t PgpSZXZpZXdlZC1ieTogTmVpbCBDaGVuIDxjYXJwZW50ZXIubmFpbC5jekBnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBNYW4gWmVuZyA8emVuZ21hbkBoYWxvZGJ0ZWNoLmNvbT4KUmV2aWV3ZWQtYnk6 IEhhcml0YWJoIDxHdXB0YSBoYXJpdGFiaDE5OTJAZ21haWwuY29tPgotLS0KIGRvYy9zcmMvc2dt bC9mdW5jL2Z1bmMtaW5mby5zZ21sICAgICAgICAgfCAgNTMgKysrKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbCB8ICAgNiArCiBzcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMgICAgICAgIHwgMjQ1ICsrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9vYmplY3RfZGRsLm91dCB8IDM0OCArKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvb2JqZWN0X2RkbC5zcWwgICAgICB8IDE0NSArKysrKysrKysrCiA3IGZpbGVzIGNo YW5nZWQsIDgwMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vYmplY3RfZGRsLm91dAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29iamVjdF9kZGwuc3FsCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5j LWluZm8uc2dtbAppbmRleCAyOTRmNDVlODJhMy4uZWIxMjhmZWRlMDkgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1 bmMtaW5mby5zZ21sCkBAIC0zODQ1LDQgKzM4NDUsNTcgQEAgYWNsICAgICAgfCB7cG9zdGdyZXM9 YXJ3ZER4dG0vcG9zdGdyZXMsZm9vPXIvcG9zdGdyZXN9CiAKICAgPC9zZWN0Mj4KIAorICA8c2Vj dDIgaWQ9ImZ1bmN0aW9ucy1nZXQtb2JqZWN0LWRkbCI+CisgICA8dGl0bGU+R2V0IE9iamVjdCBE REwgRnVuY3Rpb25zPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgVGhlIGZ1bmN0aW9ucyBzaG93 biBpbiA8eHJlZiBsaW5rZW5kPSJmdW5jdGlvbnMtZ2V0LW9iamVjdC1kZGwtdGFibGUiLz4KKyAg ICBwcmludCB0aGUgRERMIHN0YXRlbWVudHMgZm9yIHZhcmlvdXMgZGF0YWJhc2Ugb2JqZWN0cy4K KyAgICAoVGhpcyBpcyBhIGRlY29tcGlsZWQgcmVjb25zdHJ1Y3Rpb24sIG5vdCB0aGUgb3JpZ2lu YWwgdGV4dAorICAgIG9mIHRoZSBjb21tYW5kLikKKyAgIDwvcGFyYT4KKworICAgPHRhYmxlIGlk PSJmdW5jdGlvbnMtZ2V0LW9iamVjdC1kZGwtdGFibGUiPgorICAgIDx0aXRsZT5HZXQgT2JqZWN0 IERETCBGdW5jdGlvbnM8L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgIDx0aGVh ZD4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgRnVuY3Rpb24KKyAgICAgICA8L3Bh cmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgPC90aGVhZD4KKworICAgICA8dGJvZHk+CisgICAg ICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8cHJpbWFy eT5wZ19nZXRfZG9tYWluX2RkbDwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAg ICAgIDxmdW5jdGlvbj5wZ19nZXRfZG9tYWluX2RkbDwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj5k b21haW48L3BhcmFtZXRlcj4gPHR5cGU+cmVndHlwZTwvdHlwZT4KKyAgICAgICAgIDxvcHRpb25h bD4sIDxwYXJhbWV0ZXI+cHJldHR5PC9wYXJhbWV0ZXI+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDwv b3B0aW9uYWw+KQorICAgICAgICA8cmV0dXJudmFsdWU+dGV4dDwvcmV0dXJudmFsdWU+CisgICAg ICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZWNvbnN0cnVjdHMgdGhlIGNyZWF0 aW5nIGNvbW1hbmQgZm9yIGEgZG9tYWluLgorICAgICAgICBUaGUgcmVzdWx0IGlzIGEgY29tcGxl dGUgPGNvbW1hbmQ+Q1JFQVRFIERPTUFJTjwvY29tbWFuZD4gc3RhdGVtZW50LgorICAgICAgIDwv cGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxwYXJhbWV0ZXI+ZG9tYWluPC9wYXJh bWV0ZXI+IHBhcmFtZXRlciB1c2VzIHR5cGUgPHR5cGU+cmVndHlwZTwvdHlwZT4sCisgICAgICAg IHdoaWNoIGZvbGxvd3MgdGhlIHN0YW5kYXJkIDx2YXJuYW1lPnNlYXJjaF9wYXRoPC92YXJuYW1l PiBmb3IgdHlwZSBuYW1lCisgICAgICAgIHJlc29sdXRpb24uIElmIGEgZG9tYWluIG5hbWUgY29u ZmxpY3RzIHdpdGggYSBidWlsdC1pbiB0eXBlIG5hbWUKKyAgICAgICAgKGZvciBleGFtcGxlLCBh IGRvbWFpbiBuYW1lZCA8bGl0ZXJhbD5pbnQ8L2xpdGVyYWw+KSwgeW91IG11c3QgdXNlIGEKKyAg ICAgICAgc2NoZW1hLXF1YWxpZmllZCBuYW1lIChmb3IgZXhhbXBsZSwgPGxpdGVyYWw+J3B1Ymxp Yy5pbnQnOjpyZWd0eXBlPC9saXRlcmFsPikKKyAgICAgICAgdG8gcmVmZXJlbmNlIHRoZSBkb21h aW4uCisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgPC90Ym9keT4K KyAgICA8L3Rncm91cD4KKyAgIDwvdGFibGU+CisKKyAgPC9zZWN0Mj4KKwogICA8L3NlY3QxPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbCBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKaW5kZXggZWI5ZTMxYWUxYmYu LmMzMDNhZmZhZGNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5j dGlvbnMuc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwK QEAgLTY1Nyw2ICs2NTcsMTIgQEAgTEFOR1VBR0UgSU5URVJOQUwKIFNUUklDVCBWT0xBVElMRSBQ QVJBTExFTCBVTlNBRkUKIEFTICdwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1cCc7 CiAKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OCisgcGdfZ2V0X2RvbWFpbl9kZGwoZG9tYWlu X25hbWUgcmVndHlwZSwgcHJldHR5IGJvb2wgREVGQVVMVCBmYWxzZSkKKyBSRVRVUk5TIHRleHQK KyBMQU5HVUFHRSBpbnRlcm5hbAorQVMgJ3BnX2dldF9kb21haW5fZGRsX2V4dCc7CisKIC0tCiAt LSBUaGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgZnVuY3Rpb25zIG1lYW4gdGhhdCBhbnlvbmUg Y2FuIGV4ZWN1dGUgdGhlbS4KIC0tIEEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBzaG91bGRuJ3QgYmUg ZXhlY3V0YWJsZSBieSBqdXN0IGFueW9uZSwgYnV0IHJhdGhlcgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1 dGlscy5jCmluZGV4IGI1YTdhZDkwNjZlLi4yOWZjYjE1NDMzOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYwpAQCAtOTQsNiArOTQsMTEgQEAKIAkoKHByZXR0eSkgPyAoUFJFVFRZRkxBR19Q QVJFTiB8IFBSRVRUWUZMQUdfSU5ERU5UIHwgUFJFVFRZRkxBR19TQ0hFTUEpIFwKIAkgOiBQUkVU VFlGTEFHX0lOREVOVCkKIAorLyogQ29udmVyc2lvbiBvZiAiYm9vbCBwcmV0dHkiIG9wdGlvbiBm b3IgRERMIHN0YXRlbWVudHMgKDAgd2hlbiBmYWxzZSkgKi8KKyNkZWZpbmUgR0VUX0RETF9QUkVU VFlfRkxBR1MocHJldHR5KSBcCisJKChwcmV0dHkpID8gKFBSRVRUWUZMQUdfUEFSRU4gfCBQUkVU VFlGTEFHX0lOREVOVCB8IFBSRVRUWUZMQUdfU0NIRU1BKSBcCisJIDogMCkKKwogLyogRGVmYXVs dCBsaW5lIGxlbmd0aCBmb3IgcHJldHR5LXByaW50IHdyYXBwaW5nOiAwIG1lYW5zIHdyYXAgYWx3 YXlzICovCiAjZGVmaW5lIFdSQVBfQ09MVU1OX0RFRkFVTFQJCTAKIApAQCAtNTQ2LDYgKzU1MSwx MSBAQCBzdGF0aWMgdm9pZCBnZXRfanNvbl90YWJsZV9uZXN0ZWRfY29sdW1ucyhUYWJsZUZ1bmMg KnRmLCBKc29uVGFibGVQbGFuICpwbGFuLAogCQkJCQkJCQkJCSAgZGVwYXJzZV9jb250ZXh0ICpj b250ZXh0LAogCQkJCQkJCQkJCSAgYm9vbCBzaG93aW1wbGljaXQsCiAJCQkJCQkJCQkJICBib29s IG5lZWRjb21tYSk7CitzdGF0aWMgdm9pZCBnZXRfZm9ybWF0dGVkX3N0cmluZyhTdHJpbmdJbmZv IGJ1ZiwKKwkJCQkJCQkJIGludCBwcmV0dHlGbGFncywKKwkJCQkJCQkJIGludCBub09mVGFiQ2hh cnMsCisJCQkJCQkJCSBjb25zdCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDQs IDUpOworc3RhdGljIGNoYXIgKnBnX2dldF9kb21haW5fZGRsX3dvcmtlcihPaWQgZG9tYWluX29p ZCwgaW50IHByZXR0eUZsYWdzKTsKIAogI2RlZmluZSBvbmx5X21hcmtlcihydGUpICAoKHJ0ZSkt PmluaCA/ICIiIDogIk9OTFkgIikKIApAQCAtMTM3NDEsMyArMTM3NTEsMjM4IEBAIGdldF9yYW5n ZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5kX2RhdHVtcykKIAogCXJldHVybiBidWYuZGF0 YTsKIH0KKworLyoKKyAqIGdldF9mb3JtYXR0ZWRfc3RyaW5nCisgKgorICogUmV0dXJuIGEgZm9y bWF0dGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZy4KKyAqCisgKiBwcmV0dHlGbGFncyAtIElmIHBy ZXR0eSBpcyB0cnVlLCB0aGUgb3V0cHV0IGluY2x1ZGVzIHRhYnMgKFx0KSBhbmQgbmV3bGluZXMg KFxuKS4KKyAqIG5vT2ZUYWJDaGFycyAtIGluZGVudCB3aXRoIHNwZWNpZmllZCBubyBvZiB0YWJz LgorICogZm10IC0gcHJpbnRmLXN0eWxlIGZvcm1hdCBzdHJpbmcgdXNlZCBieSBhcHBlbmRTdHJp bmdJbmZvVkEuCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfZm9ybWF0dGVkX3N0cmluZyhTdHJpbmdJ bmZvIGJ1ZiwgaW50IHByZXR0eUZsYWdzLCBpbnQgbm9PZlRhYkNoYXJzLCBjb25zdCBjaGFyICpm bXQsLi4uKQoreworCXZhX2xpc3QJCWFyZ3M7CisKKwlpZiAocHJldHR5RmxhZ3MgJiBQUkVUVFlG TEFHX0lOREVOVCkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJ1xuJyk7CisJCS8q IEluZGVudCB3aXRoIHRhYnMgKi8KKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBub09mVGFiQ2hhcnM7 IGkrKykKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnXHQnKTsKKwkJfQorCX0K KwllbHNlCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKKworCXZhX3N0YXJ0KGFy Z3MsIGZtdCk7CisJYXBwZW5kU3RyaW5nSW5mb1ZBKGJ1ZiwgZm10LCBhcmdzKTsKKwl2YV9lbmQo YXJncyk7Cit9CisKKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBzY2FuIGRvbWFpbiBjb25z dHJhaW50cworICovCitzdGF0aWMgdm9pZAorc2Nhbl9kb21haW5fY29uc3RyYWludHMoT2lkIGRv bWFpbl9vaWQsIExpc3QgKip2YWxpZGNvbnMsIExpc3QgKippbnZhbGlkY29ucykKK3sKKwlSZWxh dGlvbgljb25zdHJhaW50UmVsOworCVN5c1NjYW5EZXNjIHNzY2FuOworCVNjYW5LZXlEYXRhIHNr ZXk7CisJSGVhcFR1cGxlCWNvbnN0cmFpbnRUdXA7CisKKwkqdmFsaWRjb25zID0gTklMOworCSpp bnZhbGlkY29ucyA9IE5JTDsKKworCWNvbnN0cmFpbnRSZWwgPSB0YWJsZV9vcGVuKENvbnN0cmFp bnRSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJU2NhbktleUluaXQoJnNrZXksCisJ CQkJQW51bV9wZ19jb25zdHJhaW50X2NvbnR5cGlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJl ciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKGRvbWFpbl9vaWQpKTsKKworCXNzY2Fu ID0gc3lzdGFibGVfYmVnaW5zY2FuKGNvbnN0cmFpbnRSZWwsCisJCQkJCQkJICAgQ29uc3RyYWlu dFR5cGlkSW5kZXhJZCwKKwkJCQkJCQkgICB0cnVlLAorCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJ ICAgMSwKKwkJCQkJCQkgICAmc2tleSk7CisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZChjb25z dHJhaW50VHVwID0gc3lzdGFibGVfZ2V0bmV4dChzc2NhbikpKQorCXsKKwkJRm9ybV9wZ19jb25z dHJhaW50IGNvbiA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjb25zdHJhaW50VHVw KTsKKworCQlpZiAoY29uLT5jb252YWxpZGF0ZWQpCisJCQkqdmFsaWRjb25zID0gbGFwcGVuZF9v aWQoKnZhbGlkY29ucywgY29uLT5vaWQpOworCQllbHNlCisJCQkqaW52YWxpZGNvbnMgPSBsYXBw ZW5kX29pZCgqaW52YWxpZGNvbnMsIGNvbi0+b2lkKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2Fu KHNzY2FuKTsKKwl0YWJsZV9jbG9zZShjb25zdHJhaW50UmVsLCBBY2Nlc3NTaGFyZUxvY2spOwor CisJLyogU29ydCBjb25zdHJhaW50cyBieSBPSUQgZm9yIHN0YWJsZSBvdXRwdXQgKi8KKwlpZiAo bGlzdF9sZW5ndGgoKnZhbGlkY29ucykgPiAxKQorCQlsaXN0X3NvcnQoKnZhbGlkY29ucywgbGlz dF9vaWRfY21wKTsKKwlpZiAobGlzdF9sZW5ndGgoKmludmFsaWRjb25zKSA+IDEpCisJCWxpc3Rf c29ydCgqaW52YWxpZGNvbnMsIGxpc3Rfb2lkX2NtcCk7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVu Y3Rpb24gdG8gYnVpbGQgQ1JFQVRFIERPTUFJTiBzdGF0ZW1lbnQKKyAqLworc3RhdGljIHZvaWQK K2J1aWxkX2NyZWF0ZV9kb21haW5fc3RhdGVtZW50KFN0cmluZ0luZm8gYnVmLCBGb3JtX3BnX3R5 cGUgdHlwRm9ybSwKKwkJCQkJCQkgIE5vZGUgKmRlZmF1bHRFeHByLCBMaXN0ICp2YWxpZENvbnN0 cmFpbnRzLCBpbnQgcHJldHR5RmxhZ3MpCit7CisJSGVhcFR1cGxlCWJhc2VUeXBlVHVwbGU7CisJ Rm9ybV9wZ190eXBlIGJhc2VUeXBlRm9ybTsKKwlPaWQJCQliYXNlQ29sbGF0aW9uID0gSW52YWxp ZE9pZDsKKwlMaXN0Q2VsbCAgICpsYzsKKworCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiQ1JFQVRF IERPTUFJTiAlcyBBUyAlcyIsCisJCQkJCSBnZW5lcmF0ZV9xdWFsaWZpZWRfdHlwZV9uYW1lKHR5 cEZvcm0tPm9pZCksCisJCQkJCSBnZW5lcmF0ZV9xdWFsaWZpZWRfdHlwZV9uYW1lKHR5cEZvcm0t PnR5cGJhc2V0eXBlKSk7CisKKwkvKiBBZGQgY29sbGF0aW9uIGlmIGl0IGRpZmZlcnMgZnJvbSBi YXNlIHR5cGUncyBjb2xsYXRpb24gKi8KKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3JtLT50eXBjb2xs YXRpb24pKQorCXsKKwkJLyogR2V0IGJhc2UgdHlwZSdzIGNvbGxhdGlvbiBmb3IgY29tcGFyaXNv biAqLworCQliYXNlVHlwZVR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElk R2V0RGF0dW0odHlwRm9ybS0+dHlwYmFzZXR5cGUpKTsKKwkJaWYgKEhlYXBUdXBsZUlzVmFsaWQo YmFzZVR5cGVUdXBsZSkpCisJCXsKKwkJCWJhc2VUeXBlRm9ybSA9IChGb3JtX3BnX3R5cGUpIEdF VFNUUlVDVChiYXNlVHlwZVR1cGxlKTsKKwkJCWJhc2VDb2xsYXRpb24gPSBiYXNlVHlwZUZvcm0t PnR5cGNvbGxhdGlvbjsKKwkJCVJlbGVhc2VTeXNDYWNoZShiYXNlVHlwZVR1cGxlKTsKKwkJfQor CisJCS8qIE9ubHkgYWRkIENPTExBVEUgaWYgZG9tYWluJ3MgY29sbGF0aW9uIGRpZmZlcnMgZnJv bSBiYXNlIHR5cGUncyAqLworCQlpZiAodHlwRm9ybS0+dHlwY29sbGF0aW9uICE9IGJhc2VDb2xs YXRpb24pCisJCXsKKwkJCWdldF9mb3JtYXR0ZWRfc3RyaW5nKGJ1ZiwgcHJldHR5RmxhZ3MsIDEs ICJDT0xMQVRFICVzIiwKKwkJCQkJCQkJIGdlbmVyYXRlX2NvbGxhdGlvbl9uYW1lKHR5cEZvcm0t PnR5cGNvbGxhdGlvbikpOworCQl9CisJfQorCisJLyogQWRkIGRlZmF1bHQgdmFsdWUgaWYgcHJl c2VudCAqLworCWlmIChkZWZhdWx0RXhwciAhPSBOVUxMKQorCXsKKwkJY2hhcgkgICAqZGVmYXVs dFZhbHVlID0gZGVwYXJzZV9leHByZXNzaW9uX3ByZXR0eShkZWZhdWx0RXhwciwgTklMLCBmYWxz ZSwgZmFsc2UsIHByZXR0eUZsYWdzLCAwKTsKKworCQlnZXRfZm9ybWF0dGVkX3N0cmluZyhidWYs IHByZXR0eUZsYWdzLCAxLCAiREVGQVVMVCAlcyIsIGRlZmF1bHRWYWx1ZSk7CisJfQorCisJLyog QWRkIHZhbGlkIGNvbnN0cmFpbnRzICovCisJZm9yZWFjaChsYywgdmFsaWRDb25zdHJhaW50cykK Kwl7CisJCU9pZAkJCWNvbnN0cmFpbnRPaWQgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJSGVhcFR1cGxl CWNvbnN0cmFpbnRUdXA7CisJCUZvcm1fcGdfY29uc3RyYWludCBjb247CisJCWNoYXIJICAgKmNv bnN0cmFpbnREZWY7CisKKwkJLyogTG9vayB1cCB0aGUgY29uc3RyYWludCBpbmZvICovCisJCWNv bnN0cmFpbnRUdXAgPSBTZWFyY2hTeXNDYWNoZTEoQ09OU1RST0lELCBPYmplY3RJZEdldERhdHVt KGNvbnN0cmFpbnRPaWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNvbnN0cmFpbnRUdXAp KQorCQkJY29udGludWU7CQkJLyogY29uc3RyYWludCB3YXMgZHJvcHBlZCBjb25jdXJyZW50bHkg Ki8KKworCQljb24gPSAoRm9ybV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY29uc3RyYWludFR1 cCk7CisJCWNvbnN0cmFpbnREZWYgPSBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoY29uc3Ry YWludE9pZCwgZmFsc2UsIHByZXR0eUZsYWdzLCB0cnVlKTsKKworCQlnZXRfZm9ybWF0dGVkX3N0 cmluZyhidWYsIHByZXR0eUZsYWdzLCAxLCAiQ09OU1RSQUlOVCAlcyIsCisJCQkJCQkJIHF1b3Rl X2lkZW50aWZpZXIoTmFtZVN0cihjb24tPmNvbm5hbWUpKSk7CisJCWdldF9mb3JtYXR0ZWRfc3Ry aW5nKGJ1ZiwgcHJldHR5RmxhZ3MsIDIsICIlcyIsIGNvbnN0cmFpbnREZWYpOworCisJCVJlbGVh c2VTeXNDYWNoZShjb25zdHJhaW50VHVwKTsKKwl9CisKKwlhcHBlbmRTdHJpbmdJbmZvQ2hhcihi dWYsICc7Jyk7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gdG8gYWRkIEFMVEVSIERPTUFJ TiBzdGF0ZW1lbnRzIGZvciBpbnZhbGlkIGNvbnN0cmFpbnRzCisgKi8KK3N0YXRpYyB2b2lkCith ZGRfYWx0ZXJfZG9tYWluX3N0YXRlbWVudHMoU3RyaW5nSW5mbyBidWYsIExpc3QgKmludmFsaWRD b25zdHJhaW50cywgaW50IHByZXR0eUZsYWdzKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9y ZWFjaChsYywgaW52YWxpZENvbnN0cmFpbnRzKQorCXsKKwkJT2lkCQkJY29uc3RyYWludE9pZCA9 IGxmaXJzdF9vaWQobGMpOworCQljaGFyCSAgICphbHRlclN0bXQgPSBwZ19nZXRfY29uc3RyYWlu dGRlZl93b3JrZXIoY29uc3RyYWludE9pZCwgdHJ1ZSwgcHJldHR5RmxhZ3MsIHRydWUpOworCisJ CWlmIChhbHRlclN0bXQpCisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIlxuJXM7IiwgYWx0ZXJT dG10KTsKKwl9Cit9CisKKy8qCisgKiBwZ19nZXRfZG9tYWluX2RkbF9leHQgLSBHZXQgQ1JFQVRF IERPTUFJTiBzdGF0ZW1lbnQgZm9yIGEgZG9tYWluIHdpdGggcHJldHR5LXByaW50IG9wdGlvbgor ICovCitEYXR1bQorcGdfZ2V0X2RvbWFpbl9kZGxfZXh0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJ T2lkCQkJZG9tYWluX29pZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJYm9vbAkJcHJldHR5ID0gUEdf R0VUQVJHX0JPT0woMSk7CisJY2hhcgkgICAqcmVzOworCWludAkJCXByZXR0eUZsYWdzOworCisJ cHJldHR5RmxhZ3MgPSBHRVRfRERMX1BSRVRUWV9GTEFHUyhwcmV0dHkpOworCisJcmVzID0gcGdf Z2V0X2RvbWFpbl9kZGxfd29ya2VyKGRvbWFpbl9vaWQsIHByZXR0eUZsYWdzKTsKKwlpZiAocmVz ID09IE5VTEwpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisJUEdfUkVUVVJOX1RFWFRfUChzdHJpbmdf dG9fdGV4dChyZXMpKTsKK30KKworCisKK3N0YXRpYyBjaGFyICoKK3BnX2dldF9kb21haW5fZGRs X3dvcmtlcihPaWQgZG9tYWluX29pZCwgaW50IHByZXR0eUZsYWdzKQoreworCVN0cmluZ0luZm9E YXRhIGJ1ZjsKKwlIZWFwVHVwbGUJdHlwZVR1cGxlOworCUZvcm1fcGdfdHlwZSB0eXBGb3JtOwor CU5vZGUJICAgKmRlZmF1bHRFeHByOworCUxpc3QJICAgKnZhbGlkQ29uc3RyYWludHM7CisJTGlz dAkgICAqaW52YWxpZENvbnN0cmFpbnRzOworCisJLyogTG9vayB1cCB0aGUgZG9tYWluIGluIHBn X3R5cGUgKi8KKwl0eXBlVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRH ZXREYXR1bShkb21haW5fb2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR5cGVUdXBsZSkp CisJCXJldHVybiBOVUxMOworCisJdHlwRm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0 eXBlVHVwbGUpOworCisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGFjdHVhbGx5IGEgZG9tYWluICov CisJaWYgKHR5cEZvcm0tPnR5cHR5cGUgIT0gVFlQVFlQRV9ET01BSU4pCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1z ZygiXCIlc1wiIGlzIG5vdCBhIGRvbWFpbiIsIGZvcm1hdF90eXBlX2JlKGRvbWFpbl9vaWQpKSwK KwkJCQkgZXJyaGludCgiVXNlIGEgc2NoZW1hLXF1YWxpZmllZCBuYW1lIGlmIHRoZSBkb21haW4g bmFtZSBjb25mbGljdHMgd2l0aCBhIGJ1aWx0LWluIG5hbWUuIikpKTsKKworCS8qIEdldCBkZWZh dWx0IGV4cHJlc3Npb24gKi8KKwlkZWZhdWx0RXhwciA9IGdldF90eXBkZWZhdWx0KGRvbWFpbl9v aWQpOworCisJLyogU2NhbiBmb3IgdmFsaWQgYW5kIGludmFsaWQgY29uc3RyYWludHMgKi8KKwlz Y2FuX2RvbWFpbl9jb25zdHJhaW50cyhkb21haW5fb2lkLCAmdmFsaWRDb25zdHJhaW50cywgJmlu dmFsaWRDb25zdHJhaW50cyk7CisKKwkvKiBCdWlsZCB0aGUgRERMIHN0YXRlbWVudCAqLworCWlu aXRTdHJpbmdJbmZvKCZidWYpOworCWJ1aWxkX2NyZWF0ZV9kb21haW5fc3RhdGVtZW50KCZidWYs IHR5cEZvcm0sIGRlZmF1bHRFeHByLCB2YWxpZENvbnN0cmFpbnRzLCBwcmV0dHlGbGFncyk7CisK KwkvKiBBZGQgQUxURVIgRE9NQUlOIHN0YXRlbWVudHMgZm9yIGludmFsaWQgY29uc3RyYWludHMg Ki8KKwlpZiAobGlzdF9sZW5ndGgoaW52YWxpZENvbnN0cmFpbnRzKSA+IDApCisJCWFkZF9hbHRl cl9kb21haW5fc3RhdGVtZW50cygmYnVmLCBpbnZhbGlkQ29uc3RyYWludHMsIHByZXR0eUZsYWdz KTsKKworCS8qIENsZWFudXAgKi8KKwlsaXN0X2ZyZWUodmFsaWRDb25zdHJhaW50cyk7CisJbGlz dF9mcmVlKGludmFsaWRDb25zdHJhaW50cyk7CisJUmVsZWFzZVN5c0NhY2hlKHR5cGVUdXBsZSk7 CisKKwlyZXR1cm4gYnVmLmRhdGE7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA4M2Y2 NTAxZGYzOC4uOTk2NThjMTc3ODEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtODUzMSw2 ICs4NTMxLDkgQEAKIHsgb2lkID0+ICcyNTA4JywgZGVzY3IgPT4gJ2NvbnN0cmFpbnQgZGVzY3Jp cHRpb24gd2l0aCBwcmV0dHktcHJpbnQgb3B0aW9uJywKICAgcHJvbmFtZSA9PiAncGdfZ2V0X2Nv bnN0cmFpbnRkZWYnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ3RleHQnLAog ICBwcm9hcmd0eXBlcyA9PiAnb2lkIGJvb2wnLCBwcm9zcmMgPT4gJ3BnX2dldF9jb25zdHJhaW50 ZGVmX2V4dCcgfSwKK3sgb2lkID0+ICc4MDI0JywgZGVzY3IgPT4gJ2dldCBDUkVBVEUgc3RhdGVt ZW50IGZvciBET01BSU4gd2l0aCBwcmV0dHkgb3B0aW9uJywKKyAgcHJvbmFtZSA9PiAncGdfZ2V0 X2RvbWFpbl9kZGwnLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKKyAgcHJvYXJndHlwZXMgPT4gJ3Jl Z3R5cGUgYm9vbCcsIHByb3NyYyA9PiAncGdfZ2V0X2RvbWFpbl9kZGxfZXh0JyB9LAogeyBvaWQg PT4gJzI1MDknLAogICBkZXNjciA9PiAnZGVwYXJzZSBhbiBlbmNvZGVkIGV4cHJlc3Npb24gd2l0 aCBwcmV0dHktcHJpbnQgb3B0aW9uJywKICAgcHJvbmFtZSA9PiAncGdfZ2V0X2V4cHInLCBwcm92 b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ3RleHQnLApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9vYmplY3RfZGRsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvb2JqZWN0X2RkbC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjEyNDFiODlhNzcwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9vYmplY3RfZGRsLm91dApAQCAtMCwwICsxLDM0OCBAQAorLS0KKy0tIFRlc3QgZm9yIHRo ZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIGdldCBvYmplY3QgRERMOgorLS0gLSBwZ19nZXRfZG9t YWluX2RkbAorLS0KK0NSRUFURSBET01BSU4gcmVncmVzc191c19wb3N0YWxfY29kZSBBUyBURVhU CisgICAgREVGQVVMVCAnMDAwMDAnCisgICAgQ09OU1RSQUlOVCByZWdyZXNzX3VzX3Bvc3RhbF9j b2RlX2NoZWNrCisgICAgICAgIENIRUNLICgKKyAgICAgICAgICAgIFZBTFVFIH4gJ15cZHs1fSQn CisgICAgT1IgVkFMVUUgfiAnXlxkezV9LVxkezR9JCcKKyAgICApOworU0VMRUNUIHBnX2dldF9k b21haW5fZGRsKCdyZWdyZXNzX3VzX3Bvc3RhbF9jb2RlJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVi bGljLnJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUgQVMgcGdfY2F0YWxvZy50ZXh0IERFRkFVTFQgJzAw MDAwJzo6dGV4dCBDT05TVFJBSU5UIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGVfY2hlY2sgQ0hFQ0sg KCgoVkFMVUUgfiAnXlxkezV9JCc6OnRleHQpIE9SIChWQUxVRSB+ICdeXGR7NX0tXGR7NH0kJzo6 dGV4dCkpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3Vz X3Bvc3RhbF9jb2RlJywgcHJldHR5ID0+IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMu cmVncmVzc191c19wb3N0YWxfY29kZSBBUyBwZ19jYXRhbG9nLnRleHQgREVGQVVMVCAnMDAwMDAn Ojp0ZXh0IENPTlNUUkFJTlQgcmVncmVzc191c19wb3N0YWxfY29kZV9jaGVjayBDSEVDSyAoKChW QUxVRSB+ICdeXGR7NX0kJzo6dGV4dCkgT1IgKFZBTFVFIH4gJ15cZHs1fS1cZHs0fSQnOjp0ZXh0 KSkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdXNfcG9z dGFsX2NvZGUnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfdXNfcG9z dGFsX2NvZGUgQVMgcGdfY2F0YWxvZy50ZXh0IERFRkFVTFQgJzAwMDAwJzo6dGV4dCBDT05TVFJB SU5UIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGVfY2hlY2sgQ0hFQ0sgKCgoVkFMVUUgfiAnXlxkezV9 JCc6OnRleHQpIE9SIChWQUxVRSB+ICdeXGR7NX0tXGR7NH0kJzo6dGV4dCkpKTsKKygxIHJvdykK KworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3VzX3Bvc3RhbF9jb2RlJywgcHJl dHR5ID0+IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2Rv bWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc191c19wb3N0YWxfY29k ZSBBUyBwZ19jYXRhbG9nLnRleHQgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgREVGQVVM VCAnMDAwMDAnOjp0ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgIENPTlNUUkFJTlQgcmVncmVzc191c19wb3N0YWxfY29kZV9j aGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAg IENIRUNLIChWQUxVRSB+ICdeXGR7NX0kJzo6dGV4dCBPUiBWQUxVRSB+ICdeXGR7NX0tXGR7NH0k Jzo6dGV4dCk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc191 c19wb3N0YWxfY29kZScsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc191c19w b3N0YWxfY29kZSBBUyBwZ19jYXRhbG9nLnRleHQgICAgICAgICAgICAgICAgICAgKworICAgICAg ICAgREVGQVVMVCAnMDAwMDAnOjp0ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIENPTlNUUkFJTlQgcmVncmVzc191c19wb3N0 YWxfY29kZV9jaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgIENIRUNLIChWQUxVRSB+ICdeXGR7NX0kJzo6dGV4dCBPUiBWQUxVRSB+ICdeXGR7 NX0tXGR7NH0kJzo6dGV4dCk7CisoMSByb3cpCisKK0NSRUFURSBET01BSU4gcmVncmVzc19kb21h aW5fbm90X251bGwgQVMgSU5UIE5PVCBOVUxMOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdy ZWdyZXNzX2RvbWFpbl9ub3RfbnVsbCcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBw dWJsaWMucmVncmVzc19kb21haW5fbm90X251bGwgQVMgcGdfY2F0YWxvZy5pbnQ0IENPTlNUUkFJ TlQgcmVncmVzc19kb21haW5fbm90X251bGxfbm90X251bGwgTk9UIE5VTEw7CisoMSByb3cpCisK K1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbm90X251bGwnLCBwcmV0 dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5y ZWdyZXNzX2RvbWFpbl9ub3RfbnVsbCBBUyBwZ19jYXRhbG9nLmludDQrCisgICAgICAgICBDT05T VFJBSU5UIHJlZ3Jlc3NfZG9tYWluX25vdF9udWxsX25vdF9udWxsICAgICAgICAgICAgKworICAg ICAgICAgICAgICAgICBOT1QgTlVMTDsKKygxIHJvdykKKworQ1JFQVRFIERPTUFJTiByZWdyZXNz X2RvbWFpbl9jaGVjayBBUyBJTlQKKyAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfYSBDSEVDSyAoVkFM VUUgPCAxMDApCisgICAgQ09OU1RSQUlOVCByZWdyZXNzX2IgQ0hFQ0sgKFZBTFVFID4gMTApOwor U0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9jaGVjaycpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX2NoZWNrIEFTIHBn X2NhdGFsb2cuaW50NCBDT05TVFJBSU5UIHJlZ3Jlc3NfYSBDSEVDSyAoKFZBTFVFIDwgMTAwKSkg Q09OU1RSQUlOVCByZWdyZXNzX2IgQ0hFQ0sgKChWQUxVRSA+IDEwKSk7CisoMSByb3cpCisKK1NF TEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fY2hlY2snLCBwcmV0dHkgPT4g dHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFp bl9jaGVjayBBUyBwZ19jYXRhbG9nLmludDQrCisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3Nf YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICBDSEVD SyAoVkFMVUUgPCAxMDApICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIENPTlNU UkFJTlQgcmVncmVzc19iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgIENIRUNLIChWQUxVRSA+IDEwKTsKKygxIHJvdykKKworQ1JFQVRFIERPTUFJTiAi cmVncmVzc19kb21haW4gd2l0aCBzcGFjZSIgQVMgSU5UCisgICAgQ09OU1RSQUlOVCByZWdyZXNz X2EgQ0hFQ0sgKFZBTFVFIDwgMTAwKQorICAgIENPTlNUUkFJTlQgInJlZ3Jlc3NfQ29uc3RyYWlu dCBCIiBDSEVDSyAoVkFMVUUgPiAxMCkKKyAgICBDT05TVFJBSU5UICJyZWdyZXNzX0NvbnN0cmFp bnRDIiBDSEVDSyAoVkFMVUUgIT0gNTUpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCcicmVn cmVzc19kb21haW4gd2l0aCBzcGFjZSInKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy4icmVncmVzc19kb21h aW4gd2l0aCBzcGFjZSIgQVMgcGdfY2F0YWxvZy5pbnQ0IENPTlNUUkFJTlQgcmVncmVzc19hIENI RUNLICgoVkFMVUUgPCAxMDApKSBDT05TVFJBSU5UICJyZWdyZXNzX0NvbnN0cmFpbnQgQiIgQ0hF Q0sgKChWQUxVRSA+IDEwKSkgQ09OU1RSQUlOVCAicmVncmVzc19Db25zdHJhaW50QyIgQ0hFQ0sg KChWQUxVRSA8PiA1NSkpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJyJy ZWdyZXNzX2RvbWFpbiB3aXRoIHNwYWNlIicsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMuInJlZ3Jlc3NfZG9tYWluIHdp dGggc3BhY2UiIEFTIHBnX2NhdGFsb2cuaW50NCsKKyAgICAgICAgIENPTlNUUkFJTlQgcmVncmVz c19hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAg ICAgICBDSEVDSyAoVkFMVUUgPCAxMDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICBDT05TVFJBSU5UICJyZWdyZXNzX0NvbnN0cmFpbnQgQiIgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFID4gMTApICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgQ09OU1RSQUlOVCAicmVncmVz c19Db25zdHJhaW50QyIgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgIENIRUNLIChWQUxVRSA8PiA1NSk7CisoMSByb3cpCisKKy0tIFRlc3QgZXJyb3IgY2FzZXMK K1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19ub25leGlzdGVudF9kb21haW4nOjpy ZWd0eXBlKTsgIC0tIHNob3VsZCBmYWlsCitFUlJPUjogIHR5cGUgInJlZ3Jlc3Nfbm9uZXhpc3Rl bnRfZG9tYWluIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9k ZGwoJ3JlZ3Jlc3Nfbm9uZXhpc3RlbnRfZG9tYWluJzo6cmVndHkuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbChOVUxMKTsgIC0t IHNob3VsZCByZXR1cm4gTlVMTAorIHBnX2dldF9kb21haW5fZGRsIAorLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoTlVMTCwgcHJldHR5 ID0+IHRydWUpOyAgLS0gc2hvdWxkIHJldHVybiBOVUxMCisgcGdfZ2V0X2RvbWFpbl9kZGwgCist LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2Rk bCgncGdfY2xhc3MnKTsgIC0tIHNob3VsZCBmYWlsIC0gbm90IGEgZG9tYWluCitFUlJPUjogICJw Z19jbGFzcyIgaXMgbm90IGEgZG9tYWluCitISU5UOiAgVXNlIGEgc2NoZW1hLXF1YWxpZmllZCBu YW1lIGlmIHRoZSBkb21haW4gbmFtZSBjb25mbGljdHMgd2l0aCBhIGJ1aWx0LWluIG5hbWUuCitT RUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ2ludGVnZXInKTsgIC0tIHNob3VsZCBmYWlsIC0gbm90 IGEgZG9tYWluCitFUlJPUjogICJpbnRlZ2VyIiBpcyBub3QgYSBkb21haW4KK0hJTlQ6ICBVc2Ug YSBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgaWYgdGhlIGRvbWFpbiBuYW1lIGNvbmZsaWN0cyB3aXRo IGEgYnVpbHQtaW4gbmFtZS4KKy0tIFRlc3QgZG9tYWlucyB3aXRoIG5vIGNvbnN0cmFpbnRzCitD UkVBVEUgRE9NQUlOIHJlZ3Jlc3Nfc2ltcGxlX2RvbWFpbiBBUyB0ZXh0OworU0VMRUNUIHBnX2dl dF9kb21haW5fZGRsKCdyZWdyZXNzX3NpbXBsZV9kb21haW4nKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX3NpbXBsZV9kb21haW4gQVMgcGdfY2F0YWxv Zy50ZXh0OworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nfc2lt cGxlX2RvbWFpbicsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgcGdf Z2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUg RE9NQUlOIHB1YmxpYy5yZWdyZXNzX3NpbXBsZV9kb21haW4gQVMgcGdfY2F0YWxvZy50ZXh0Owor KDEgcm93KQorCistLSBUZXN0IGRvbWFpbiBvdmVyIGFub3RoZXIgZG9tYWluCitDUkVBVEUgRE9N QUlOIHJlZ3Jlc3NfYmFzZV9kb21haW4gQVMgdmFyY2hhcigxMCk7CitDUkVBVEUgRE9NQUlOIHJl Z3Jlc3NfZGVyaXZlZF9kb21haW4gQVMgcmVncmVzc19iYXNlX2RvbWFpbiBDSEVDSyAoTEVOR1RI KFZBTFVFKSA+IDMpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2Rlcml2ZWRf ZG9tYWluJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5y ZWdyZXNzX2Rlcml2ZWRfZG9tYWluIEFTIHB1YmxpYy5yZWdyZXNzX2Jhc2VfZG9tYWluIENPTlNU UkFJTlQgcmVncmVzc19kZXJpdmVkX2RvbWFpbl9jaGVjayBDSEVDSyAoKGxlbmd0aCgoVkFMVUUp Ojp0ZXh0KSA+IDMpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdy ZXNzX2Rlcml2ZWRfZG9tYWluJywgcHJldHR5ID0+IHRydWUpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2Rlcml2 ZWRfZG9tYWluIEFTIHB1YmxpYy5yZWdyZXNzX2Jhc2VfZG9tYWluKworICAgICAgICAgQ09OU1RS QUlOVCByZWdyZXNzX2Rlcml2ZWRfZG9tYWluX2NoZWNrICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICAgICAgICAgIENIRUNLIChsZW5ndGgoVkFMVUU6OnRleHQpID4gMyk7Ciso MSByb3cpCisKKy0tIFRlc3QgZG9tYWluIHdpdGggY29tcGxleCBkZWZhdWx0IGV4cHJlc3Npb25z CitDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc190ZXN0X3NlcTsKK0NSRUFURSBET01BSU4gcmVncmVz c19zZXFfZG9tYWluIEFTIGludCBERUZBVUxUIG5leHR2YWwoJ3JlZ3Jlc3NfdGVzdF9zZXEnKTsK K1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19zZXFfZG9tYWluJyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1 YmxpYy5yZWdyZXNzX3NlcV9kb21haW4gQVMgcGdfY2F0YWxvZy5pbnQ0IERFRkFVTFQgbmV4dHZh bCgncmVncmVzc190ZXN0X3NlcSc6OnJlZ2NsYXNzKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dl dF9kb21haW5fZGRsKCdyZWdyZXNzX3NlcV9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisgICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3Nfc2VxX2RvbWFpbiBBUyBwZ19jYXRh bG9nLmludDQrCisgICAgICAgICBERUZBVUxUIG5leHR2YWwoJ3JlZ3Jlc3NfdGVzdF9zZXEnOjpy ZWdjbGFzcyk7CisoMSByb3cpCisKKy0tIFRlc3QgZG9tYWluIHdpdGggYSByZW5hbWVkIHNlcXVl bmNlIGFzIGRlZmF1bHQgZXhwcmVzc2lvbgorQUxURVIgU0VRVUVOQ0UgcmVncmVzc190ZXN0X3Nl cSBSRU5BTUUgVE8gcmVncmVzc190ZXN0X3NlcV9yZW5hbWVkOworU0VMRUNUIHBnX2dldF9kb21h aW5fZGRsKCdyZWdyZXNzX3NlcV9kb21haW4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1Ymxp Yy5yZWdyZXNzX3NlcV9kb21haW4gQVMgcGdfY2F0YWxvZy5pbnQ0IERFRkFVTFQgbmV4dHZhbCgn cmVncmVzc190ZXN0X3NlcV9yZW5hbWVkJzo6cmVnY2xhc3MpOworKDEgcm93KQorCistLSBUZXN0 IGRvbWFpbiB3aXRoIHR5cGUgbW9kaWZpZXJzCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfcHJlY2lz ZV9udW1lcmljIEFTIG51bWVyaWMoMTAsMikgREVGQVVMVCAwLjAwOworU0VMRUNUIHBnX2dldF9k b21haW5fZGRsKCdyZWdyZXNzX3ByZWNpc2VfbnVtZXJpYycpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1 YmxpYy5yZWdyZXNzX3ByZWNpc2VfbnVtZXJpYyBBUyBwZ19jYXRhbG9nLiJudW1lcmljIiBERUZB VUxUIDAuMDA7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19w cmVjaXNlX251bWVyaWMnLCBwcmV0dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19wcmVjaXNlX251bWVyaWMgQVMg cGdfY2F0YWxvZy4ibnVtZXJpYyIrCisgICAgICAgICBERUZBVUxUIDAuMDA7CisoMSByb3cpCisK Ky0tIFRlc3QgZG9tYWluIG92ZXIgYXJyYXkgdHlwZQorQ1JFQVRFIERPTUFJTiByZWdyZXNzX2lu dF9hcnJheV9kb21haW4gQVMgaW50W10gQ0hFQ0sgKGFycmF5X2xlbmd0aChWQUxVRSwgMSkgPD0g NSk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfaW50X2FycmF5X2RvbWFpbicp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfaW50X2FycmF5 X2RvbWFpbiBBUyBwZ19jYXRhbG9nLl9pbnQ0IENPTlNUUkFJTlQgcmVncmVzc19pbnRfYXJyYXlf ZG9tYWluX2NoZWNrIENIRUNLICgoYXJyYXlfbGVuZ3RoKFZBTFVFLCAxKSA8PSA1KSk7CisoMSBy b3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19pbnRfYXJyYXlfZG9tYWlu JywgcHJldHR5ID0+IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21h aW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01B SU4gcHVibGljLnJlZ3Jlc3NfaW50X2FycmF5X2RvbWFpbiBBUyBwZ19jYXRhbG9nLl9pbnQ0Kwor ICAgICAgICAgQ09OU1RSQUlOVCByZWdyZXNzX2ludF9hcnJheV9kb21haW5fY2hlY2sgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAgICAgICBDSEVDSyAoYXJyYXlfbGVuZ3RoKFZBTFVFLCAx KSA8PSA1KTsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gaW4gbm9uLXB1YmxpYyBzY2hlbWEK K0NSRUFURSBTQ0hFTUEgcmVncmVzc190ZXN0X3NjaGVtYTsKK0NSRUFURSBET01BSU4gcmVncmVz c190ZXN0X3NjaGVtYS5yZWdyZXNzX3NjaGVtYV9kb21haW4gQVMgdGV4dCBERUZBVUxUICd0ZXN0 JzsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc190ZXN0X3NjaGVtYS5yZWdyZXNz X3NjaGVtYV9kb21haW4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBE T01BSU4gcmVncmVzc190ZXN0X3NjaGVtYS5yZWdyZXNzX3NjaGVtYV9kb21haW4gQVMgcGdfY2F0 YWxvZy50ZXh0IERFRkFVTFQgJ3Rlc3QnOjp0ZXh0OworKDEgcm93KQorCistLSBUZXN0IGRvbWFp biB3aXRoIG11bHRpcGxlIGNvbnN0cmFpbnQgdHlwZXMgY29tYmluZWQKK0NSRUFURSBET01BSU4g cmVncmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbiBBUyB2YXJjaGFyKDUwKQorICAgIE5PVCBOVUxM CisgICAgREVGQVVMVCAnZGVmYXVsdF92YWx1ZScKKyAgICBDSEVDSyAoTEVOR1RIKFZBTFVFKSA+ PSA1KQorICAgIENIRUNLIChWQUxVRSAhfiAnXlxzKiQnKTsgIC0tIG5vdCBqdXN0IHdoaXRlc3Bh Y2UKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19jb21wcmVoZW5zaXZlX2RvbWFp bicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2NvbXBy ZWhlbnNpdmVfZG9tYWluIEFTIHBnX2NhdGFsb2cuInZhcmNoYXIiIERFRkFVTFQgJ2RlZmF1bHRf dmFsdWUnOjpjaGFyYWN0ZXIgdmFyeWluZyBDT05TVFJBSU5UIHJlZ3Jlc3NfY29tcHJlaGVuc2l2 ZV9kb21haW5fbm90X251bGwgTk9UIE5VTEwgQ09OU1RSQUlOVCByZWdyZXNzX2NvbXByZWhlbnNp dmVfZG9tYWluX2NoZWNrIENIRUNLICgobGVuZ3RoKChWQUxVRSk6OnRleHQpID49IDUpKSBDT05T VFJBSU5UIHJlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW5fY2hlY2sxIENIRUNLICgoKFZBTFVF KTo6dGV4dCAhfiAnXlxzKiQnOjp0ZXh0KSk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9t YWluX2RkbCgncmVncmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbicsIHByZXR0eSA9PiB0cnVlKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBw dWJsaWMucmVncmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbiBBUyBwZ19jYXRhbG9nLiJ2YXJjaGFy IisKKyAgICAgICAgIERFRkFVTFQgJ2RlZmF1bHRfdmFsdWUnOjpjaGFyYWN0ZXIgdmFyeWluZyAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgQ09OU1RSQUlOVCByZWdyZXNzX2NvbXBy ZWhlbnNpdmVfZG9tYWluX25vdF9udWxsICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAg ICAgIE5PVCBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgIENPTlNUUkFJTlQgcmVncmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbl9j aGVjayAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICBDSEVDSyAobGVuZ3Ro KFZBTFVFOjp0ZXh0KSA+PSA1KSAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICBD T05TVFJBSU5UIHJlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW5fY2hlY2sxICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFOjp0ZXh0ICF+ICdeXHMqJCc6 OnRleHQpOworKDEgcm93KQorCistLSBUZXN0IGRvbWFpbiBvdmVyIGNvbXBvc2l0ZSB0eXBlCitD UkVBVEUgVFlQRSByZWdyZXNzX2FkZHJlc3NfdHlwZSBBUyAoc3RyZWV0IHRleHQsIGNpdHkgdGV4 dCwgemlwY29kZSB0ZXh0KTsKK0NSRUFURSBET01BSU4gcmVncmVzc19hZGRyZXNzX2RvbWFpbiBB UyByZWdyZXNzX2FkZHJlc3NfdHlwZSBDSEVDSyAoKFZBTFVFKS56aXBjb2RlIH4gJ15cZHs1fSQn KTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19hZGRyZXNzX2RvbWFpbicpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBw dWJsaWMucmVncmVzc19hZGRyZXNzX2RvbWFpbiBBUyBwdWJsaWMucmVncmVzc19hZGRyZXNzX3R5 cGUgQ09OU1RSQUlOVCByZWdyZXNzX2FkZHJlc3NfZG9tYWluX2NoZWNrIENIRUNLICgoKFZBTFVF KS56aXBjb2RlIH4gJ15cZHs1fSQnOjp0ZXh0KSk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRf ZG9tYWluX2RkbCgncmVncmVzc19hZGRyZXNzX2RvbWFpbicsIHByZXR0eSA9PiB0cnVlKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1 YmxpYy5yZWdyZXNzX2FkZHJlc3NfZG9tYWluIEFTIHB1YmxpYy5yZWdyZXNzX2FkZHJlc3NfdHlw ZSsKKyAgICAgICAgIENPTlNUUkFJTlQgcmVncmVzc19hZGRyZXNzX2RvbWFpbl9jaGVjayAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKChWQUxVRSku emlwY29kZSB+ICdeXGR7NX0kJzo6dGV4dCk7CisoMSByb3cpCisKKy0tIFRlc3QgZG9tYWluIHdp dGggTk9UIFZBTElEIGNvbnN0cmFpbnQKK0NSRUFURSBET01BSU4gcmVncmVzc19kb21haW5fbm90 X3ZhbGlkIEFTIGludDsKK0FMVEVSIERPTUFJTiByZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQgQURE IENPTlNUUkFJTlQgY2hlY2tfcG9zaXRpdmUgQ0hFQ0sgKFZBTFVFID4gMCkgTk9UIFZBTElEOwor U0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQnKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5f ZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01B SU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX25vdF92YWxpZCBBUyBwZ19jYXRhbG9nLmludDQ7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyBBTFRFUiBET01BSU4gcHVi bGljLnJlZ3Jlc3NfZG9tYWluX25vdF92YWxpZCBBREQgQ09OU1RSQUlOVCBjaGVja19wb3NpdGl2 ZSBDSEVDSyAoKFZBTFVFID4gMCkpIE5PVCBWQUxJRDsKKygxIHJvdykKKworU0VMRUNUIHBnX2dl dF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQnLCBwcmV0dHkgPT4gdHJ1ZSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21h aW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01B SU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX25vdF92YWxpZCBBUyBwZ19jYXRhbG9nLmludDQ7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgQUxURVIgRE9NQUlOIHB1Ymxp Yy5yZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQgQUREIENPTlNUUkFJTlQgY2hlY2tfcG9zaXRpdmUg Q0hFQ0sgKFZBTFVFID4gMCkgTk9UIFZBTElEOworKDEgcm93KQorCistLSBUZXN0IGRvbWFpbiB3 aXRoIG1peCBvZiB2YWxpZCBhbmQgbm90IHZhbGlkIGNvbnN0cmFpbnRzCitDUkVBVEUgRE9NQUlO IHJlZ3Jlc3NfZG9tYWluX21peGVkIEFTIGludCBDSEVDSyAoVkFMVUUgIT0gMCk7CitBTFRFUiBE T01BSU4gcmVncmVzc19kb21haW5fbWl4ZWQgQUREIENPTlNUUkFJTlQgY2hlY2tfcmFuZ2UgQ0hF Q0sgKFZBTFVFIEJFVFdFRU4gMSBBTkQgMTAwKSBOT1QgVkFMSUQ7CitTRUxFQ1QgcGdfZ2V0X2Rv bWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX21peGVkJyk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBD UkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl9taXhlZCBBUyBwZ19jYXRhbG9nLmlu dDQgQ09OU1RSQUlOVCByZWdyZXNzX2RvbWFpbl9taXhlZF9jaGVjayBDSEVDSyAoKFZBTFVFIDw+ IDApKTsrCisgQUxURVIgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl9taXhlZCBBREQgQ09O U1RSQUlOVCBjaGVja19yYW5nZSBDSEVDSyAoKChWQUxVRSA+PSAxKSBBTkQgKFZBTFVFIDw9IDEw MCkpKSBOT1QgVkFMSUQ7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVn cmVzc19kb21haW5fbWl4ZWQnLCBwcmV0dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9N QUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl9taXhlZCBBUyBwZ19jYXRhbG9nLmludDQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICBDT05TVFJBSU5UIHJlZ3Jlc3NfZG9tYWluX21peGVkX2NoZWNrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICAgICAgICAgICBDSEVDSyAoVkFMVUUgPD4gMCk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyBBTFRFUiBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX21peGVkIEFERCBDT05TVFJBSU5U IGNoZWNrX3JhbmdlIENIRUNLIChWQUxVRSA+PSAxIEFORCBWQUxVRSA8PSAxMDApIE5PVCBWQUxJ RDsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gd2l0aCBjb2xsYXRpb24KK0NSRUFURSBET01B SU4gcmVncmVzc19kb21haW5fd2l0aF9jb2xsYXRlIEFTIHRleHQgQ09MTEFURSAiQyI7CitTRUxF Q1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX3dpdGhfY29sbGF0ZScpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFU RSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX3dpdGhfY29sbGF0ZSBBUyBwZ19jYXRhbG9n LnRleHQgQ09MTEFURSAiQyI7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgn cmVncmVzc19kb21haW5fd2l0aF9jb2xsYXRlJywgcHJldHR5ID0+IHRydWUpOworICAgICAgICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl93 aXRoX2NvbGxhdGUgQVMgcGdfY2F0YWxvZy50ZXh0KworICAgICAgICAgQ09MTEFURSAiQyI7Ciso MSByb3cpCisKKy0tIFRlc3QgZG9tYWluIHRoYXQgc2hhZG93cyBhIGJ1aWx0LWluIHR5cGUgbmFt ZSAobXVzdCB1c2Ugc2NoZW1hLXF1YWxpZmllZCBuYW1lKQorQ1JFQVRFIERPTUFJTiBwdWJsaWMu aW50IEFTIHBnX2NhdGFsb2cuaW50NDsKKy0tIFRoaXMgc2hvdWxkIGZhaWwgYmVjYXVzZSAnaW50 JyByZXNvbHZlcyB0byBwZ19jYXRhbG9nLmludDQsIG5vdCBwdWJsaWMuaW50CitTRUxFQ1QgcGdf Z2V0X2RvbWFpbl9kZGwoJ2ludCcpOyAgLS0gc2hvdWxkIGZhaWwKK0VSUk9SOiAgImludGVnZXIi IGlzIG5vdCBhIGRvbWFpbgorSElOVDogIFVzZSBhIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSBpZiB0 aGUgZG9tYWluIG5hbWUgY29uZmxpY3RzIHdpdGggYSBidWlsdC1pbiBuYW1lLgorLS0gVGhpcyBz aG91bGQgd29yayB3aXRoIHNjaGVtYS1xdWFsaWZpZWQgbmFtZQorU0VMRUNUIHBnX2dldF9kb21h aW5fZGRsKCdwdWJsaWMuaW50Jyk7CisgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLiJpbnQiIEFTIHBnX2NhdGFsb2cuaW50NDsK KygxIHJvdykKKworLS0gQ2xlYW51cAorRFJPUCBET01BSU4gcmVncmVzc191c19wb3N0YWxfY29k ZTsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX25vdF9udWxsOworRFJPUCBET01BSU4gcmVn cmVzc19kb21haW5fY2hlY2s7CitEUk9QIERPTUFJTiAicmVncmVzc19kb21haW4gd2l0aCBzcGFj ZSI7CitEUk9QIERPTUFJTiByZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluOworRFJPUCBET01B SU4gcmVncmVzc190ZXN0X3NjaGVtYS5yZWdyZXNzX3NjaGVtYV9kb21haW47CitEUk9QIFNDSEVN QSByZWdyZXNzX3Rlc3Rfc2NoZW1hOworRFJPUCBET01BSU4gcmVncmVzc19hZGRyZXNzX2RvbWFp bjsKK0RST1AgVFlQRSByZWdyZXNzX2FkZHJlc3NfdHlwZTsKK0RST1AgRE9NQUlOIHJlZ3Jlc3Nf aW50X2FycmF5X2RvbWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfcHJlY2lzZV9udW1lcmljOwor RFJPUCBET01BSU4gcmVncmVzc19zZXFfZG9tYWluOworRFJPUCBTRVFVRU5DRSByZWdyZXNzX3Rl c3Rfc2VxX3JlbmFtZWQ7CitEUk9QIERPTUFJTiByZWdyZXNzX2Rlcml2ZWRfZG9tYWluOworRFJP UCBET01BSU4gcmVncmVzc19iYXNlX2RvbWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3Nfc2ltcGxl X2RvbWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX25vdF92YWxpZDsKK0RST1AgRE9N QUlOIHJlZ3Jlc3NfZG9tYWluX21peGVkOworRFJPUCBET01BSU4gcmVncmVzc19kb21haW5fd2l0 aF9jb2xsYXRlOworRFJPUCBET01BSU4gcHVibGljLmludDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCmluZGV4IDU0OWU5YjJkN2JlLi41MmIyNGFiODA2ZSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCkBAIC0yOCw3ICsyOCw3IEBAIHRlc3Q6IHN0cmluZ3MgbWQ1IG51bWVyb2xv Z3kgcG9pbnQgbHNlZyBsaW5lIGJveCBwYXRoIHBvbHlnb24gY2lyY2xlIGRhdGUgdGltZSB0CiAj IGdlb21ldHJ5IGRlcGVuZHMgb24gcG9pbnQsIGxzZWcsIGxpbmUsIGJveCwgcGF0aCwgcG9seWdv biwgY2lyY2xlCiAjIGhvcm9sb2d5IGRlcGVuZHMgb24gZGF0ZSwgdGltZSwgdGltZXR6LCB0aW1l c3RhbXAsIHRpbWVzdGFtcHR6LCBpbnRlcnZhbAogIyAtLS0tLS0tLS0tCi10ZXN0OiBnZW9tZXRy eSBob3JvbG9neSB0c3R5cGVzIHJlZ2V4IHR5cGVfc2FuaXR5IG9wcl9zYW5pdHkgbWlzY19zYW5p dHkgY29tbWVudHMgZXhwcmVzc2lvbnMgdW5pY29kZSB4aWQgbXZjYyBkYXRhYmFzZSBzdGF0c19p bXBvcnQgcGdfbmRpc3RpbmN0IHBnX2RlcGVuZGVuY2llcyBvaWQ4IGVuY29kaW5nIGV1Y19rcgor dGVzdDogZ2VvbWV0cnkgaG9yb2xvZ3kgdHN0eXBlcyByZWdleCB0eXBlX3Nhbml0eSBvcHJfc2Fu aXR5IG1pc2Nfc2FuaXR5IGNvbW1lbnRzIGV4cHJlc3Npb25zIHVuaWNvZGUgeGlkIG12Y2MgZGF0 YWJhc2Ugc3RhdHNfaW1wb3J0IHBnX25kaXN0aW5jdCBwZ19kZXBlbmRlbmNpZXMgb2lkOCBlbmNv ZGluZyBldWNfa3Igb2JqZWN0X2RkbAogCiAjIC0tLS0tLS0tLS0KICMgTG9hZCBodWdlIGFtb3Vu dHMgb2YgZGF0YQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb2JqZWN0X2RkbC5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vYmplY3RfZGRsLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGViMGU1Yjg2ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9vYmplY3RfZGRsLnNxbApAQCAtMCwwICsxLDE0NSBAQAorLS0K Ky0tIFRlc3QgZm9yIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIGdldCBvYmplY3QgRERMOgor LS0gLSBwZ19nZXRfZG9tYWluX2RkbAorLS0KKworQ1JFQVRFIERPTUFJTiByZWdyZXNzX3VzX3Bv c3RhbF9jb2RlIEFTIFRFWFQKKyAgICBERUZBVUxUICcwMDAwMCcKKyAgICBDT05TVFJBSU5UIHJl Z3Jlc3NfdXNfcG9zdGFsX2NvZGVfY2hlY2sKKyAgICAgICAgQ0hFQ0sgKAorICAgICAgICAgICAg VkFMVUUgfiAnXlxkezV9JCcKKyAgICBPUiBWQUxVRSB+ICdeXGR7NX0tXGR7NH0kJworICAgICk7 CisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc191c19wb3N0YWxfY29kZScpOwor U0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3VzX3Bvc3RhbF9jb2RlJywgcHJldHR5 ID0+IGZhbHNlKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc191c19wb3N0YWxf Y29kZScsIGZhbHNlKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc191c19wb3N0 YWxfY29kZScsIHByZXR0eSA9PiB0cnVlKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVn cmVzc191c19wb3N0YWxfY29kZScsIHRydWUpOworCisKK0NSRUFURSBET01BSU4gcmVncmVzc19k b21haW5fbm90X251bGwgQVMgSU5UIE5PVCBOVUxMOworCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9k ZGwoJ3JlZ3Jlc3NfZG9tYWluX25vdF9udWxsJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwo J3JlZ3Jlc3NfZG9tYWluX25vdF9udWxsJywgcHJldHR5ID0+IHRydWUpOworCisKK0NSRUFURSBE T01BSU4gcmVncmVzc19kb21haW5fY2hlY2sgQVMgSU5UCisgICAgQ09OU1RSQUlOVCByZWdyZXNz X2EgQ0hFQ0sgKFZBTFVFIDwgMTAwKQorICAgIENPTlNUUkFJTlQgcmVncmVzc19iIENIRUNLIChW QUxVRSA+IDEwKTsKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9j aGVjaycpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9jaGVjaycs IHByZXR0eSA9PiB0cnVlKTsKKworCitDUkVBVEUgRE9NQUlOICJyZWdyZXNzX2RvbWFpbiB3aXRo IHNwYWNlIiBBUyBJTlQKKyAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfYSBDSEVDSyAoVkFMVUUgPCAx MDApCisgICAgQ09OU1RSQUlOVCAicmVncmVzc19Db25zdHJhaW50IEIiIENIRUNLIChWQUxVRSA+ IDEwKQorICAgIENPTlNUUkFJTlQgInJlZ3Jlc3NfQ29uc3RyYWludEMiIENIRUNLIChWQUxVRSAh PSA1NSk7CisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgnInJlZ3Jlc3NfZG9tYWluIHdpdGgg c3BhY2UiJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJyJyZWdyZXNzX2RvbWFpbiB3aXRo IHNwYWNlIicsIHByZXR0eSA9PiB0cnVlKTsKKworLS0gVGVzdCBlcnJvciBjYXNlcworU0VMRUNU IHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX25vbmV4aXN0ZW50X2RvbWFpbic6OnJlZ3R5cGUp OyAgLS0gc2hvdWxkIGZhaWwKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbChOVUxMKTsgIC0tIHNo b3VsZCByZXR1cm4gTlVMTAorU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKE5VTEwsIHByZXR0eSA9 PiB0cnVlKTsgIC0tIHNob3VsZCByZXR1cm4gTlVMTAorU0VMRUNUIHBnX2dldF9kb21haW5fZGRs KCdwZ19jbGFzcycpOyAgLS0gc2hvdWxkIGZhaWwgLSBub3QgYSBkb21haW4KK1NFTEVDVCBwZ19n ZXRfZG9tYWluX2RkbCgnaW50ZWdlcicpOyAgLS0gc2hvdWxkIGZhaWwgLSBub3QgYSBkb21haW4K KworLS0gVGVzdCBkb21haW5zIHdpdGggbm8gY29uc3RyYWludHMKK0NSRUFURSBET01BSU4gcmVn cmVzc19zaW1wbGVfZG9tYWluIEFTIHRleHQ7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3Jl Z3Jlc3Nfc2ltcGxlX2RvbWFpbicpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNz X3NpbXBsZV9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIG92ZXIg YW5vdGhlciBkb21haW4KK0NSRUFURSBET01BSU4gcmVncmVzc19iYXNlX2RvbWFpbiBBUyB2YXJj aGFyKDEwKTsKK0NSRUFURSBET01BSU4gcmVncmVzc19kZXJpdmVkX2RvbWFpbiBBUyByZWdyZXNz X2Jhc2VfZG9tYWluIENIRUNLIChMRU5HVEgoVkFMVUUpID4gMyk7CitTRUxFQ1QgcGdfZ2V0X2Rv bWFpbl9kZGwoJ3JlZ3Jlc3NfZGVyaXZlZF9kb21haW4nKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWlu X2RkbCgncmVncmVzc19kZXJpdmVkX2RvbWFpbicsIHByZXR0eSA9PiB0cnVlKTsKKworLS0gVGVz dCBkb21haW4gd2l0aCBjb21wbGV4IGRlZmF1bHQgZXhwcmVzc2lvbnMKK0NSRUFURSBTRVFVRU5D RSByZWdyZXNzX3Rlc3Rfc2VxOworQ1JFQVRFIERPTUFJTiByZWdyZXNzX3NlcV9kb21haW4gQVMg aW50IERFRkFVTFQgbmV4dHZhbCgncmVncmVzc190ZXN0X3NlcScpOworU0VMRUNUIHBnX2dldF9k b21haW5fZGRsKCdyZWdyZXNzX3NlcV9kb21haW4nKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2Rk bCgncmVncmVzc19zZXFfZG9tYWluJywgcHJldHR5ID0+IHRydWUpOworCistLSBUZXN0IGRvbWFp biB3aXRoIGEgcmVuYW1lZCBzZXF1ZW5jZSBhcyBkZWZhdWx0IGV4cHJlc3Npb24KK0FMVEVSIFNF UVVFTkNFIHJlZ3Jlc3NfdGVzdF9zZXEgUkVOQU1FIFRPIHJlZ3Jlc3NfdGVzdF9zZXFfcmVuYW1l ZDsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19zZXFfZG9tYWluJyk7CisKKy0t IFRlc3QgZG9tYWluIHdpdGggdHlwZSBtb2RpZmllcnMKK0NSRUFURSBET01BSU4gcmVncmVzc19w cmVjaXNlX251bWVyaWMgQVMgbnVtZXJpYygxMCwyKSBERUZBVUxUIDAuMDA7CitTRUxFQ1QgcGdf Z2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfcHJlY2lzZV9udW1lcmljJyk7CitTRUxFQ1QgcGdfZ2V0 X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfcHJlY2lzZV9udW1lcmljJywgcHJldHR5ID0+IHRydWUpOwor CistLSBUZXN0IGRvbWFpbiBvdmVyIGFycmF5IHR5cGUKK0NSRUFURSBET01BSU4gcmVncmVzc19p bnRfYXJyYXlfZG9tYWluIEFTIGludFtdIENIRUNLIChhcnJheV9sZW5ndGgoVkFMVUUsIDEpIDw9 IDUpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2ludF9hcnJheV9kb21haW4n KTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19pbnRfYXJyYXlfZG9tYWluJywg cHJldHR5ID0+IHRydWUpOworCistLSBUZXN0IGRvbWFpbiBpbiBub24tcHVibGljIHNjaGVtYQor Q1JFQVRFIFNDSEVNQSByZWdyZXNzX3Rlc3Rfc2NoZW1hOworQ1JFQVRFIERPTUFJTiByZWdyZXNz X3Rlc3Rfc2NoZW1hLnJlZ3Jlc3Nfc2NoZW1hX2RvbWFpbiBBUyB0ZXh0IERFRkFVTFQgJ3Rlc3Qn OworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3Rlc3Rfc2NoZW1hLnJlZ3Jlc3Nf c2NoZW1hX2RvbWFpbicpOworCistLSBUZXN0IGRvbWFpbiB3aXRoIG11bHRpcGxlIGNvbnN0cmFp bnQgdHlwZXMgY29tYmluZWQKK0NSRUFURSBET01BSU4gcmVncmVzc19jb21wcmVoZW5zaXZlX2Rv bWFpbiBBUyB2YXJjaGFyKDUwKQorICAgIE5PVCBOVUxMCisgICAgREVGQVVMVCAnZGVmYXVsdF92 YWx1ZScKKyAgICBDSEVDSyAoTEVOR1RIKFZBTFVFKSA+PSA1KQorICAgIENIRUNLIChWQUxVRSAh fiAnXlxzKiQnKTsgIC0tIG5vdCBqdXN0IHdoaXRlc3BhY2UKK1NFTEVDVCBwZ19nZXRfZG9tYWlu X2RkbCgncmVncmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbicpOworU0VMRUNUIHBnX2dldF9kb21h aW5fZGRsKCdyZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluJywgcHJldHR5ID0+IHRydWUpOwor CistLSBUZXN0IGRvbWFpbiBvdmVyIGNvbXBvc2l0ZSB0eXBlCitDUkVBVEUgVFlQRSByZWdyZXNz X2FkZHJlc3NfdHlwZSBBUyAoc3RyZWV0IHRleHQsIGNpdHkgdGV4dCwgemlwY29kZSB0ZXh0KTsK K0NSRUFURSBET01BSU4gcmVncmVzc19hZGRyZXNzX2RvbWFpbiBBUyByZWdyZXNzX2FkZHJlc3Nf dHlwZSBDSEVDSyAoKFZBTFVFKS56aXBjb2RlIH4gJ15cZHs1fSQnKTsKK1NFTEVDVCBwZ19nZXRf ZG9tYWluX2RkbCgncmVncmVzc19hZGRyZXNzX2RvbWFpbicpOworU0VMRUNUIHBnX2dldF9kb21h aW5fZGRsKCdyZWdyZXNzX2FkZHJlc3NfZG9tYWluJywgcHJldHR5ID0+IHRydWUpOworCistLSBU ZXN0IGRvbWFpbiB3aXRoIE5PVCBWQUxJRCBjb25zdHJhaW50CitDUkVBVEUgRE9NQUlOIHJlZ3Jl c3NfZG9tYWluX25vdF92YWxpZCBBUyBpbnQ7CitBTFRFUiBET01BSU4gcmVncmVzc19kb21haW5f bm90X3ZhbGlkIEFERCBDT05TVFJBSU5UIGNoZWNrX3Bvc2l0aXZlIENIRUNLIChWQUxVRSA+IDAp IE5PVCBWQUxJRDsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbm90 X3ZhbGlkJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX25vdF92 YWxpZCcsIHByZXR0eSA9PiB0cnVlKTsKKworLS0gVGVzdCBkb21haW4gd2l0aCBtaXggb2YgdmFs aWQgYW5kIG5vdCB2YWxpZCBjb25zdHJhaW50cworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2RvbWFp bl9taXhlZCBBUyBpbnQgQ0hFQ0sgKFZBTFVFICE9IDApOworQUxURVIgRE9NQUlOIHJlZ3Jlc3Nf ZG9tYWluX21peGVkIEFERCBDT05TVFJBSU5UIGNoZWNrX3JhbmdlIENIRUNLIChWQUxVRSBCRVRX RUVOIDEgQU5EIDEwMCkgTk9UIFZBTElEOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdy ZXNzX2RvbWFpbl9taXhlZCcpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2Rv bWFpbl9taXhlZCcsIHByZXR0eSA9PiB0cnVlKTsKKworLS0gVGVzdCBkb21haW4gd2l0aCBjb2xs YXRpb24KK0NSRUFURSBET01BSU4gcmVncmVzc19kb21haW5fd2l0aF9jb2xsYXRlIEFTIHRleHQg Q09MTEFURSAiQyI7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX3dp dGhfY29sbGF0ZScpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl93 aXRoX2NvbGxhdGUnLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIHRoYXQgc2hh ZG93cyBhIGJ1aWx0LWluIHR5cGUgbmFtZSAobXVzdCB1c2Ugc2NoZW1hLXF1YWxpZmllZCBuYW1l KQorQ1JFQVRFIERPTUFJTiBwdWJsaWMuaW50IEFTIHBnX2NhdGFsb2cuaW50NDsKKy0tIFRoaXMg c2hvdWxkIGZhaWwgYmVjYXVzZSAnaW50JyByZXNvbHZlcyB0byBwZ19jYXRhbG9nLmludDQsIG5v dCBwdWJsaWMuaW50CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ2ludCcpOyAgLS0gc2hvdWxk IGZhaWwKKy0tIFRoaXMgc2hvdWxkIHdvcmsgd2l0aCBzY2hlbWEtcXVhbGlmaWVkIG5hbWUKK1NF TEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncHVibGljLmludCcpOworCistLSBDbGVhbnVwCitEUk9Q IERPTUFJTiByZWdyZXNzX3VzX3Bvc3RhbF9jb2RlOworRFJPUCBET01BSU4gcmVncmVzc19kb21h aW5fbm90X251bGw7CitEUk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl9jaGVjazsKK0RST1AgRE9N QUlOICJyZWdyZXNzX2RvbWFpbiB3aXRoIHNwYWNlIjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfY29t cHJlaGVuc2l2ZV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX3Rlc3Rfc2NoZW1hLnJlZ3Jl c3Nfc2NoZW1hX2RvbWFpbjsKK0RST1AgU0NIRU1BIHJlZ3Jlc3NfdGVzdF9zY2hlbWE7CitEUk9Q IERPTUFJTiByZWdyZXNzX2FkZHJlc3NfZG9tYWluOworRFJPUCBUWVBFIHJlZ3Jlc3NfYWRkcmVz c190eXBlOworRFJPUCBET01BSU4gcmVncmVzc19pbnRfYXJyYXlfZG9tYWluOworRFJPUCBET01B SU4gcmVncmVzc19wcmVjaXNlX251bWVyaWM7CitEUk9QIERPTUFJTiByZWdyZXNzX3NlcV9kb21h aW47CitEUk9QIFNFUVVFTkNFIHJlZ3Jlc3NfdGVzdF9zZXFfcmVuYW1lZDsKK0RST1AgRE9NQUlO IHJlZ3Jlc3NfZGVyaXZlZF9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX2Jhc2VfZG9tYWlu OworRFJPUCBET01BSU4gcmVncmVzc19zaW1wbGVfZG9tYWluOworRFJPUCBET01BSU4gcmVncmVz c19kb21haW5fbm90X3ZhbGlkOworRFJPUCBET01BSU4gcmVncmVzc19kb21haW5fbWl4ZWQ7CitE Uk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl93aXRoX2NvbGxhdGU7CitEUk9QIERPTUFJTiBwdWJs aWMuaW50OwotLSAKMi40NS4xCgo= --000000000000daf18d064a9db897--