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 1wFbvJ-005MCk-2P for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Apr 2026 18:03:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wFbvJ-00EhHA-0E for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Apr 2026 18:03:41 +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 1wFbvI-00EhH2-0f for pgsql-hackers@lists.postgresql.org; Wed, 22 Apr 2026 18:03:40 +0000 Received: from mail-dl1-x122f.google.com ([2607:f8b0:4864:20::122f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wFbvA-00000002HzJ-49fW for pgsql-hackers@lists.postgresql.org; Wed, 22 Apr 2026 18:03:38 +0000 Received: by mail-dl1-x122f.google.com with SMTP id a92af1059eb24-12c565dd3a7so6682805c88.1 for ; Wed, 22 Apr 2026 11:03:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776881012; cv=none; d=google.com; s=arc-20240605; b=DBXulYanSdNOPEf3KNI7YJvVOSxukAMGc6feJGo0pievy+wfN2qmeRw+0cZsPBb4cN /3wLWSaHnQeU8iHjSrPXa8HoH7eDSiGnS9corDJEaz+Pv6y+mYeRNEDgTd+jEA2aS35X QCS1saYb7gkIOvZvgTblZzYLKdnsrJ+OtIWGpYTQpVwb1Hhn/CQ2KaDlUGlEKS/mgfnc ZaSbN19kO0lwExy7AKS4i5Wi96VGgKs9NQx7wunqhXj5seAdEPSRQdXfEEH+0lipTYaO KMORXuJ7e7ZAdgMrvCGNTUwtmhFmoWdx3/XiWkGm5OV5Er9ED8sJxXvSMac5wak8uAfZ P6ew== 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=ZegZuWooGg7EQGPjCCF+Ii1iewG8w7BUlSQHLJOVVMM=; fh=L4oADVrqy6FSe6B4P5JNLH+f3VhfLgx2n68WWTqZGFE=; b=BW41CAn8L+qNPHt4E/isVHuv4lRmjVCziGcTm08zhzjLu6GzI9LIR4xwa5mFknvcDO qD3RUfLUCbMhjbPn/3eZXYqUI4GuDebTbzeKx6tpafeW2QQBcFyFZIDWwCop6ObbQMd4 6HV1As6Rn6dseS1EvE/nEP8f2XFzOSdME/B54X1JNrwAPcyuOrePp1Mjk+RcuIUFDTvJ OazwhMBzO8+oRal/Iv5rNBv4562D8RdO3i1p7QjDB8a4SnPTfjkySLZWfqFvx3KINZ2h PQrisve3oyIyYcBRHmVMRL/lhh8NdfUdni5Ek+aVcx8TA9xQIddfie+2QvcTQrware0M p+hA==; 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=illuminatedcomputing-com.20251104.gappssmtp.com; s=20251104; t=1776881012; x=1777485812; 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=ZegZuWooGg7EQGPjCCF+Ii1iewG8w7BUlSQHLJOVVMM=; b=FaAPaxGImNUpaFEyHysiDq5ds+IoBsVcA9PxoVsQRyxZaVl1z5jYoBH5UW+/yK9KUh C3AFnDVH0G2dhL7OQP0FFA3jG0bqOc/eAG3FrCaq9O6iGvqFkU6SZ2MYYgjyxeCYZRqQ 5c37RR94GDGXXKCoXBriAg+jPiomCJOKb5ul2ztHWzWKwoOGzBrYh+ATMFF4shNCANlu K8/c+OvmzBgPbaGzZu+yo7ftgEcaOSMEfxY85tss+UlaqCF3XZZsLNfOfb7d6wFTFhBg /KAhXSq0l96lzPApUPP1ZqYHhpSdXZLMBtBCCTjIwCeeTcLcp0SMKWGLvkIifYwBj8Lr Nw0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776881012; x=1777485812; 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=ZegZuWooGg7EQGPjCCF+Ii1iewG8w7BUlSQHLJOVVMM=; b=tTi3sscJ4kdO7nCYefYSgt9Pd/578OZLD2sw8YbJJ9ELfE3i48JT9hW77oLSjTU/Wg pGkLJuUpFircRnFJB4uIENiiM0fNAAbO/VAmQHihgDi1+AFkyrOSFT/ibDhUrbMGJS+5 oWOkIiBeR7fZAFtlz5mFLOsQQNmO404MNZ3K3xGOIBqbPsZgBuNL8VOPpqVzU01eog5p 1f0lYX3xpDA0PdkRgAbx2lNqEqtW93RrjsVhVOz2DUpzIPmUr7FO8k9J9qnH0HZyP6Hv 874A2amMdPx7igmEYEKiBMNGtzaLF76B+QeODkJSNAc8+Y5nHRFO0yVa0HOK3WRGScYp VbHg== X-Forwarded-Encrypted: i=1; AFNElJ+f9W4vQ6TR865eVQhbXcdmR2KccAJmSAx0p66feALKnmpIp9eNC6aFZyzPcwzyjuE54mqS8jRss0hXYkj5@lists.postgresql.org X-Gm-Message-State: AOJu0Yyqn2F9SmyeCT23O+w/iarFGJRKcArooYGjXOoQ+mvKVHq6AO/R Y8JZ8z+pFujAJlOV8ycjfZQR5PEu3VSCoeUVbqt6scSyUtcDn+58tQ9lzlLygRo3EZN8GzCp6kA YbahwgNwSj8B898JaoGJL0yQOTXpa1o93OlQf9XreVw== X-Gm-Gg: AeBDiesuhDFRljUO+/LQLxOIDY4I1bx4ntJfJIRuEbLkt30DWcEK1idW9aJdnBMAzuu vAkvPpqIDpxHlRJcncsF7Gn1rvSp7EdurxAavvuRHK8kCEURZ6XxixUivcVVJrIunEsd/Civ17Q mJ33LNWZowDeH6dN0RWIuMT/54wWv3QYWEtyEsW1DNfkdEhbgIrxXA9O/MzGrnslRyCsxJAsC5F iyWcGWTl08Jvrs430gmON6dbl1R5otQgKtRUSoxHIknGrPA2LJ/N0486svgmkZB7Q7uq2vvcuLc TL7eMQ/kEScIUWU= X-Received: by 2002:a05:7300:bc9a:b0:2d8:c521:c157 with SMTP id 5a478bee46e88-2e478a2f0b7mr12409886eec.18.1776881012057; Wed, 22 Apr 2026 11:03:32 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Paul A Jungwirth Date: Wed, 22 Apr 2026 11:03:18 -0700 X-Gm-Features: AQROBzBOZY4JY2GGNhBXv9bikLC5NEDIyAK848k0RipugO4ANwifFyndhZGITNo Message-ID: Subject: Re: FOR PORTION OF does not recompute GENERATED STORED columns that depend on the range column To: jian he Cc: SATYANARAYANA NARLAPURAM , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000088c32f065010595e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000088c32f065010595e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Apr 21, 2026 at 6:11=E2=80=AFPM jian he wrote: > > > I can't reproduce a segfault. I don't see how that code would lead to > > one. Can you share what you're doing to cause it? Simply running the > > regression tests doesn't do it for me. > > > > Sorry for the noise. After cleaning the cached build directory and > rebuilding, there is now no issue. > > +#include "nodes/print.h" > This should be removed from v5. Good catch! I removed that line in v7 (attached). I also included your test change to compute the range len by hand. Also a rebase was necessary after d3bba04154. Yours, --=20 Paul ~{:-) pj@illuminatedcomputing.com --00000000000088c32f065010595e Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0001-Fix-some-problems-with-UPDATE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v7-0001-Fix-some-problems-with-UPDATE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moad26bx0 RnJvbSA2Zjg3MzEwNTUyNTc0NDY1ZmIzNGQ1OGI1YzBkNGFkNTk5MDJlNWM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTAgQXByIDIwMjYgMTc6MDE6MTIgKzA4MDAKU3ViamVjdDogW1BBVENIIHY3 XSBGaXggc29tZSBwcm9ibGVtcyB3aXRoIFVQREFURSBGT1IgUE9SVElPTiBPRgoKLSBGaXhlZCBp bnNlcnRpbmcgbGVmdG92ZXJzIHdpdGggdHJhZGl0aW9uYWwgdGFibGUgaW5oZXJpdGFuY2UuIFNp bmNlIHRoZXJlIGlzCiAgbm8gdHVwbGUgcm91dGluZywgd2UgbXVzdCBhZGQgdGhlbSBkaXJlY3Rs eSB0byB0aGUgY2hpbGQgdGFibGUuIEFsc28gdGhpcwogIHByZXNlcnZlcyBleHRyYSBjb2x1bW5z IGluIHRoYXQgdGFibGUuCi0gQWRkZWQgRXhlY0luaXRGb3JQb3J0aW9uT2YuIFRoaXMgc2V0cyB1 cCBleGVjdXRvciBzdGF0ZSBmb3IgY2hpbGQgcGFydGl0aW9ucy4KICBQcmV2aW91c2x5IHdlIGRp ZCB0aGlzIGluIEV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMsIGJ1dCBkb2luZyBpdCBlYXJsaWVy IGxldHMKICB1cyB1c2UgdGhlIGNoaWxkLT5wYXJlbnQgYXR0ciBtYXBwaW5nIGluIHRoZSBmaXhl cyBiZWxvdy4KLSBNYWRlIHN1cmUgR0VORVJBVEVEIFNUT1JFRCBjb2x1bW5zIHRoYXQgZGVwZW5k IG9uIHRoZSBhcHBsaWNhdGlvbi10aW1lIGNvbHVtbgogIGdldCB1cGRhdGVkLiBXZSBleGNsdWRl IHRoYXQgY29sdW1uIGZyb20gdGhlIHVwZGF0ZWRDb2xzIGJpdG1hcHNldCwgYmVjYXVzZSBpdAog IGRvZXMgbm90IHJlcXVpcmUgcGVybWlzc2lvbnMuIEJ1dCB0aGVuIHdlIG11c3QgcmVtZW1iZXIg dG8gYWRkIGl0IGxhdGVyLiBUaGlzCiAgYWxzbyBmaXhlcyBhIHNpbWlsYXIgcHJvYmxlbSB3aXRo IFVQREFURSBPRiB0cmlnZ2Vycy4KLSBDbGFyaWZpZWQgYSBjb21tZW50IGFib3V0IHRoZSByYW5n ZXR5cGUgc3RvcmVkIGluIEZvclBvcnRpb25PZlN0YXRlLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9DQUhnK1FEY2Q9dDY5Z0xmOXlRZXhPMDdFSjJteDBaNzBORkhvNmg5NFgxRURB PWhNMGdAbWFpbC5nbWFpbC5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUhn K1FEY3NYc1VWYVorSndNMDJ5RFJRRWk9Y0xfclRIX1JPTERZZ094MDA0c1F1N0FAbWFpbC5nbWFp bC5jb20KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICB8 ICAzNCArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgIHwg MTQ1ICsrKysrKysrLS0tLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAg ICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yu b3V0IHwgMjIxICsrKysrKysrKysrKysrKy0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9w b3J0aW9uX29mLnNxbCAgICAgIHwgIDk0ICsrKysrKystCiA1IGZpbGVzIGNoYW5nZWQsIDM5OCBp bnNlcnRpb25zKCspLCA5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmlu ZGV4IDFlYjZiOWYxZjQwLi4zNjM4MzBmMDE1OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMK QEAgLTE0MDgsNiArMTQwOCw3IEBAIEJpdG1hcHNldCAqCiBFeGVjR2V0VXBkYXRlZENvbHMoUmVz dWx0UmVsSW5mbyAqcmVsaW5mbywgRVN0YXRlICplc3RhdGUpCiB7CiAJUlRFUGVybWlzc2lvbklu Zm8gKnBlcm1pbmZvID0gR2V0UmVzdWx0UlRFUGVybWlzc2lvbkluZm8ocmVsaW5mbywgZXN0YXRl KTsKKwlCaXRtYXBzZXQgKnVwZGF0ZWRDb2xzID0gcGVybWluZm8tPnVwZGF0ZWRDb2xzOwogCiAJ aWYgKHBlcm1pbmZvID09IE5VTEwpCiAJCXJldHVybiBOVUxMOwpAQCAtMTQxOCwxMCArMTQxOSwz OSBAQCBFeGVjR2V0VXBkYXRlZENvbHMoUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywgRVN0YXRlICpl c3RhdGUpCiAJCVR1cGxlQ29udmVyc2lvbk1hcCAqbWFwID0gRXhlY0dldFJvb3RUb0NoaWxkTWFw KHJlbGluZm8sIGVzdGF0ZSk7CiAKIAkJaWYgKG1hcCkKLQkJCXJldHVybiBleGVjdXRlX2F0dHJf bWFwX2NvbHMobWFwLT5hdHRyTWFwLCBwZXJtaW5mby0+dXBkYXRlZENvbHMpOworCQkJdXBkYXRl ZENvbHMgPSBleGVjdXRlX2F0dHJfbWFwX2NvbHMobWFwLT5hdHRyTWFwLCB1cGRhdGVkQ29scyk7 CiAJfQogCi0JcmV0dXJuIHBlcm1pbmZvLT51cGRhdGVkQ29sczsKKwkvKgorCSAqIEZvciBVUERB VEUgLi4uIEZPUiBQT1JUSU9OIE9GLCB0aGUgcmFuZ2UgY29sdW1uIGlzIGJlaW5nIG1vZGlmaWVk CisJICogKG5hcnJvd2VkIHZpYSBpbnRlcnNlY3Rpb24pLCBidXQgaXQgaXMgbm90IGluY2x1ZGVk IGluIHVwZGF0ZWRDb2xzCisJICogYmVjYXVzZSB0aGUgdXNlciBkb2VzIG5vdCBuZWVkIFVQREFU RSBwZXJtaXNzaW9uIG9uIGl0LiBOb3cgbWFudWFseQorCSAqIGFkZCBpdCB0byB1cGRhdGVkQ29s cy4gU2luY2UgcmlfZm9yUG9ydGlvbk9mLT5mcF9yYW5nZUF0dG5vIGlzIGFscmVhZHkKKwkgKiBt YXBwZWQgZm9yIHRoZSBjaGlsZCBwYXJ0aXRpb24sIHdlIGhhdmUgdG8gYWRkIGl0IGFmdGVyIHRo ZSBtYXBwaW5nIGp1c3QKKwkgKiBhYm92ZS4gQWxzbyB0aGF0IG1ha2VzIGl0IHVuc2FmZSB0byBt dXRhdGUgcGVybWluZm8uIFhYWDogQWx3YXlzIGFkZCB0aGUKKwkgKiB1bm1hcHBlZCBhdHRubyBp bnN0ZWFkIChiZWZvcmUgbWFwcGluZyksIGFuZCBtdXRhdGUgcGVybWluZm8sIHRvIGF2b2lkCisJ ICogcmVwZWF0ZWQgYWxsb2NhdGlvbnM/CisJICovCisJaWYgKHJlbGluZm8tPnJpX2ZvclBvcnRp b25PZikKKwl7CisJCUF0dHJOdW1iZXIJcmFuZ2VBdHRubyA9IHJlbGluZm8tPnJpX2ZvclBvcnRp b25PZi0+ZnBfcmFuZ2VBdHRubzsKKworCQlpZiAoIWJtc19pc19tZW1iZXIocmFuZ2VBdHRubyAt IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkgICB1cGRhdGVkQ29s cykpCisJCXsKKwkJCU1lbW9yeUNvbnRleHQgb2xkQ29udGV4dDsKKworCQkJb2xkQ29udGV4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CisKKwkJCXVwZGF0 ZWRDb2xzID0KKwkJCQlibXNfYWRkX21lbWJlcih1cGRhdGVkQ29scywKKwkJCQkJCQkgICByYW5n ZUF0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisKKwkJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRDb250ZXh0KTsKKwkJfQorCX0KKworCXJldHVybiB1cGRhdGVk Q29sczsKIH0KIAogLyogUmV0dXJuIGEgYml0bWFwIHJlcHJlc2VudGluZyBnZW5lcmF0ZWQgY29s dW1ucyBiZWluZyB1cGRhdGVkICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CmluZGV4IDRjYjA1N2NhNGY5Li44MWY1YWZjOWZiNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1vZGlmeVRhYmxlLmMKQEAgLTE5OCw2ICsxOTgsOCBAQCBzdGF0aWMgVHVwbGVUYWJsZVNsb3Qg KkV4ZWNNZXJnZU5vdE1hdGNoZWQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogc3RhdGlj IHZvaWQgRXhlY1NldHVwVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZShNb2RpZnlUYWJsZVN0YXRlICpt dHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSk7CiBzdGF0aWMgdm9pZCBmaXJlQlNUcmlnZ2VycyhNb2Rp ZnlUYWJsZVN0YXRlICpub2RlKTsKIHN0YXRpYyB2b2lkIGZpcmVBU1RyaWdnZXJzKE1vZGlmeVRh YmxlU3RhdGUgKm5vZGUpOworc3RhdGljIHZvaWQgRXhlY0luaXRGb3JQb3J0aW9uT2YoTW9kaWZ5 VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCSBSZXN1bHRSZWxJ bmZvICpyZXN1bHRSZWxJbmZvKTsKIAogCiAvKgpAQCAtMTQwOSw3ICsxNDExLDYgQEAgRXhlY0Zv clBvcnRpb25PZkxlZnRvdmVycyhNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJTW9kaWZ5 VGFibGVTdGF0ZSAqbXRzdGF0ZSA9IGNvbnRleHQtPm10c3RhdGU7CiAJTW9kaWZ5VGFibGUgKm5v ZGUgPSAoTW9kaWZ5VGFibGUgKikgbXRzdGF0ZS0+cHMucGxhbjsKIAlGb3JQb3J0aW9uT2ZFeHBy ICpmb3JQb3J0aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlLT5mb3JQb3J0aW9uT2Y7 Ci0JQXR0ck51bWJlcglyYW5nZUF0dG5vOwogCURhdHVtCQlvbGRSYW5nZTsKIAlUeXBlQ2FjaGVF bnRyeSAqdHlwY2FjaGU7CiAJRm9yUG9ydGlvbk9mU3RhdGUgKmZwb1N0YXRlOwpAQCAtMTQyNCwz NyArMTQyNSwxMCBAQCBFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4 dCAqY29udGV4dCwKIAlSZXR1cm5TZXRJbmZvIHJzaTsKIAlib29sCQlkaWRJbml0ID0gZmFsc2U7 CiAJYm9vbAkJc2hvdWxkRnJlZSA9IGZhbHNlOworCVJlc3VsdFJlbEluZm8gKnJvb3RSZWxJbmZv ID0gbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm87CiAKIAlMT0NBTF9GQ0lORk8oZmNpbmZvLCAy KTsKIAotCWlmICghcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mKQotCXsKLQkJLyoKLQkJ ICogSWYgd2UgZG9uJ3QgaGF2ZSBhIEZvclBvcnRpb25PZlN0YXRlIHlldCwgd2UgbXVzdCBiZSBh IHBhcnRpdGlvbgotCQkgKiBjaGlsZCBiZWluZyBoaXQgZm9yIHRoZSBmaXJzdCB0aW1lLiBNYWtl IGEgY29weSBmcm9tIHRoZSByb290LCB3aXRoCi0JCSAqIG91ciBvd24gVHVwbGVUYWJsZVNsb3Qu IFdlIGRvIHRoaXMgbGF6aWx5IHNvIHRoYXQgd2UgZG9uJ3QgcGF5IHRoZQotCQkgKiBwcmljZSBv ZiB1bnVzZWQgcGFydGl0aW9ucy4KLQkJICovCi0JCUZvclBvcnRpb25PZlN0YXRlICpsZWFmU3Rh dGUgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7Ci0KLQkJaWYgKCFtdHN0YXRlLT5yb290 UmVzdWx0UmVsSW5mbykKLQkJCWVsb2coRVJST1IsICJubyByb290IHJlbGF0aW9uIGJ1dCByaV9m b3JQb3J0aW9uT2YgaXMgdW5pbml0aWFsaXplZCIpOwotCi0JCWZwb1N0YXRlID0gbXRzdGF0ZS0+ cm9vdFJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZjsKLQkJQXNzZXJ0KGZwb1N0YXRlKTsK LQotCQlsZWFmU3RhdGUtPmZwX3JhbmdlTmFtZSA9IGZwb1N0YXRlLT5mcF9yYW5nZU5hbWU7Ci0J CWxlYWZTdGF0ZS0+ZnBfcmFuZ2VUeXBlID0gZnBvU3RhdGUtPmZwX3JhbmdlVHlwZTsKLQkJbGVh ZlN0YXRlLT5mcF9yYW5nZUF0dG5vID0gZnBvU3RhdGUtPmZwX3JhbmdlQXR0bm87Ci0JCWxlYWZT dGF0ZS0+ZnBfdGFyZ2V0UmFuZ2UgPSBmcG9TdGF0ZS0+ZnBfdGFyZ2V0UmFuZ2U7Ci0JCWxlYWZT dGF0ZS0+ZnBfTGVmdG92ZXIgPSBmcG9TdGF0ZS0+ZnBfTGVmdG92ZXI7Ci0JCS8qIEVhY2ggcGFy dGl0aW9uIG5lZWRzIGEgc2xvdCBtYXRjaGluZyBpdHMgdHVwbGUgZGVzY3JpcHRvciAqLwotCQls ZWFmU3RhdGUtPmZwX0V4aXN0aW5nID0KLQkJCXRhYmxlX3Nsb3RfY3JlYXRlKHJlc3VsdFJlbElu Zm8tPnJpX1JlbGF0aW9uRGVzYywKLQkJCQkJCQkgICZtdHN0YXRlLT5wcy5zdGF0ZS0+ZXNfdHVw bGVUYWJsZSk7Ci0KLQkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gbGVhZlN0YXRl OwotCX0KIAlmcG9TdGF0ZSA9IHJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAlvbGR0 dXBsZVNsb3QgPSBmcG9TdGF0ZS0+ZnBfRXhpc3Rpbmc7CiAJbGVmdG92ZXJTbG90ID0gZnBvU3Rh dGUtPmZwX0xlZnRvdmVyOwpAQCAtMTQ3NSwyMSArMTQ0OSwxMyBAQCBFeGVjRm9yUG9ydGlvbk9m TGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAlpZiAoIXRhYmxlX3R1cGxl X2ZldGNoX3Jvd192ZXJzaW9uKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywgdHVwbGVp ZCwgU25hcHNob3RBbnksIG9sZHR1cGxlU2xvdCkpCiAJCWVsb2coRVJST1IsICJmYWlsZWQgdG8g ZmV0Y2ggdHVwbGUgZm9yIEZPUiBQT1JUSU9OIE9GIik7CiAKLQkvKgotCSAqIEdldCB0aGUgb2xk IHJhbmdlIG9mIHRoZSByZWNvcmQgYmVpbmcgdXBkYXRlZC9kZWxldGVkLiBNdXN0IHJlYWQgd2l0 aAotCSAqIHRoZSBhdHRubyBvZiB0aGUgbGVhZiBwYXJ0aXRpb24gYmVpbmcgdXBkYXRlZC4KLQkg Ki8KLQotCXJhbmdlQXR0bm8gPSBmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubzsKLQlp ZiAocmVzdWx0UmVsSW5mby0+cmlfUm9vdFJlc3VsdFJlbEluZm8pCi0JCW1hcCA9IEV4ZWNHZXRD aGlsZFRvUm9vdE1hcChyZXN1bHRSZWxJbmZvKTsKLQlpZiAobWFwICE9IE5VTEwpCi0JCXJhbmdl QXR0bm8gPSBtYXAtPmF0dHJNYXAtPmF0dG51bXNbcmFuZ2VBdHRubyAtIDFdOwogCXNsb3RfZ2V0 YWxsYXR0cnMob2xkdHVwbGVTbG90KTsKIAotCWlmIChvbGR0dXBsZVNsb3QtPnR0c19pc251bGxb cmFuZ2VBdHRubyAtIDFdKQorCS8qIEdldCB0aGUgb2xkIHJhbmdlIG9mIHRoZSByZWNvcmQgYmVp bmcgdXBkYXRlZC9kZWxldGVkLiAqLworCisJaWYgKG9sZHR1cGxlU2xvdC0+dHRzX2lzbnVsbFtm cG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubyAtIDFdKQogCQllbG9nKEVSUk9SLCAiZm91bmQgYSBOVUxM IHJhbmdlIGluIGEgdGVtcG9yYWwgdGFibGUiKTsKLQlvbGRSYW5nZSA9IG9sZHR1cGxlU2xvdC0+ dHRzX3ZhbHVlc1tyYW5nZUF0dG5vIC0gMV07CisJb2xkUmFuZ2UgPSBvbGR0dXBsZVNsb3QtPnR0 c192YWx1ZXNbZnBvU3RhdGUtPmZwX3JhbmdlQXR0bm8gLSAxXTsKIAogCS8qCiAJICogR2V0IHRo ZSByYW5nZSdzIHR5cGUgY2FjaGUgZW50cnkuIFRoaXMgaXMgd29ydGggY2FjaGluZyBmb3IgdGhl IHdob2xlCkBAIC0xNTI3LDEyICsxNDkzLDIwIEBAIEV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMo TW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogCWZjaW5mby0+YXJnc1sxXS5pc251bGwgPSBm YWxzZTsKIAogCS8qCi0JICogSWYgdGhlcmUgYXJlIHBhcnRpdGlvbnMsIHdlIG11c3QgaW5zZXJ0 IGludG8gdGhlIHJvb3QgdGFibGUsIHNvIHdlIGdldAotCSAqIHR1cGxlIHJvdXRpbmcuIFdlIGFs cmVhZHkgc2V0IHVwIGxlZnRvdmVyU2xvdCB3aXRoIHRoZSByb290IHR1cGxlCi0JICogZGVzY3Jp cHRvci4KKwkgKiBGb3IgcGFydGl0aW9uZWQgdGFibGVzLCB3ZSBtdXN0IHJlYWQgbGVmdG92ZXJz IHdpdGggdGhlIHR1cGxlIGRlc2NyaXB0b3IKKwkgKiBvZiB0aGUgY2hpbGQgdGFibGUsIGJ1dCBp bnNlcnQgaW50byB0aGUgcm9vdCB0YWJsZSB0byBlbmFibGUgdHVwbGUKKwkgKiByb3V0aW5nLiAg U28gbGVmdG92ZXJTbG90IGlzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgcm9vdCdzIHR1cGxlCisJICog ZGVzY3JpcHRvci4gIEhvd2V2ZXIsIGZvciB0cmFkaXRpb25hbCB0YWJsZSBpbmhlcml0YW5jZSwg d2UgZG9uJ3QgbmVlZAorCSAqIHR1cGxlIHJvdXRpbmcgYW5kIGp1c3QgaW5zZXJ0IGRpcmVjdGx5 IGludG8gdGhlIGNoaWxkIHRhYmxlIHRvIHByZXNlcnZlCisJICogY2hpbGQtc3BlY2lmaWMgY29s dW1ucy4gIEluIHRoYXQgY2FzZSwgbGVmdG92ZXJTbG90IHVzZXMgdGhlIGNoaWxkJ3MKKwkgKiAo cmVzdWx0UmVsSW5mbykgdHVwbGUgZGVzY3JpcHRvci4KIAkgKi8KLQlpZiAocmVzdWx0UmVsSW5m by0+cmlfUm9vdFJlc3VsdFJlbEluZm8pCisJaWYgKHJvb3RSZWxJbmZvICYmCisJCXJvb3RSZWxJ bmZvLT5yaV9SZWxhdGlvbkRlc2MtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFKQorCXsKKwkJbWFwID0gRXhlY0dldENoaWxkVG9Sb290TWFwKHJlc3VsdFJlbElu Zm8pOwogCQlyZXN1bHRSZWxJbmZvID0gcmVzdWx0UmVsSW5mby0+cmlfUm9vdFJlc3VsdFJlbElu Zm87CisJfQogCiAJLyoKIAkgKiBJbnNlcnQgYSBsZWZ0b3ZlciBmb3IgZWFjaCB2YWx1ZSByZXR1 cm5lZCBieSB0aGUgd2l0aG91dF9wb3J0aW9uIGhlbHBlcgpAQCAtMTYwMSw4ICsxNTc1LDkgQEAg RXhlY0ZvclBvcnRpb25PZkxlZnRvdmVycyhNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJ CQlkaWRJbml0ID0gdHJ1ZTsKIAkJfQogCi0JCWxlZnRvdmVyU2xvdC0+dHRzX3ZhbHVlc1tmb3JQ b3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubyAtIDFdID0gbGVmdG92ZXI7Ci0JCWxlZnRvdmVy U2xvdC0+dHRzX2lzbnVsbFtmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubyAtIDFdID0g ZmFsc2U7CisJCWxlZnRvdmVyU2xvdC0+dHRzX3ZhbHVlc1tyZXN1bHRSZWxJbmZvLT5yaV9mb3JQ b3J0aW9uT2YtPmZwX3JhbmdlQXR0bm8gLSAxXSA9IGxlZnRvdmVyOworCQlsZWZ0b3ZlclNsb3Qt PnR0c19pc251bGxbcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mLT5mcF9yYW5nZUF0dG5v IC0gMV0gPSBmYWxzZTsKKwogCQlFeGVjTWF0ZXJpYWxpemVTbG90KGxlZnRvdmVyU2xvdCk7CiAK IAkJLyoKQEAgLTQ3NzcsNiArNDc1MiwxOCBAQCBFeGVjTW9kaWZ5VGFibGUoUGxhblN0YXRlICpw c3RhdGUpCiAJCQkJCQkJCQkJCQkJCSBmYWxzZSwgdHJ1ZSk7CiAJCX0KIAorCQkvKgorCQkgKiBJ ZiB3ZSBkb24ndCBoYXZlIGEgRm9yUG9ydGlvbk9mU3RhdGUgeWV0LCB3ZSBtdXN0IGJlIGEgcGFy dGl0aW9uCisJCSAqIGNoaWxkIGJlaW5nIGhpdCBmb3IgdGhlIGZpcnN0IHRpbWUuIE1ha2UgYSBj b3B5IGZyb20gdGhlIHJvb3QsIHdpdGgKKwkJICogb3VyIG93biBUdXBsZVRhYmxlU2xvdC4gV2Ug ZG8gdGhpcyBsYXppbHkgc28gdGhhdCB3ZSBkb24ndCBwYXkgdGhlCisJCSAqIHByaWNlIG9mIHVu dXNlZCBwYXJ0aXRpb25zLgorCQkgKi8KKwkJaWYgKCgoKE1vZGlmeVRhYmxlICopIGNvbnRleHQu bXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25PZikgJiYKKwkJCSFyZXN1bHRSZWxJbmZvLT5y aV9mb3JQb3J0aW9uT2YpCisJCXsKKwkJCUV4ZWNJbml0Rm9yUG9ydGlvbk9mKGNvbnRleHQubXRz dGF0ZSwgZXN0YXRlLCByZXN1bHRSZWxJbmZvKTsKKwkJfQorCiAJCS8qCiAJCSAqIElmIHJlc3Vs dFJlbEluZm8tPnJpX3VzZXNGZHdEaXJlY3RNb2RpZnkgaXMgdHJ1ZSwgYWxsIHdlIG5lZWQgdG8g ZG8KIAkJICogaGVyZSBpcyBjb21wdXRlIHRoZSBSRVRVUk5JTkcgZXhwcmVzc2lvbnMuCkBAIC01 ODYwLDMgKzU4NDcsNjcgQEAgRXhlY1JlU2Nhbk1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlU3RhdGUg Km5vZGUpCiAJICovCiAJZWxvZyhFUlJPUiwgIkV4ZWNSZVNjYW5Nb2RpZnlUYWJsZSBpcyBub3Qg aW1wbGVtZW50ZWQiKTsKIH0KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNJbml0Rm9yUG9ydGlvbk9m CisgKgorICoJCUluaXRpYWxpemVzIHJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZiBmb3Ig Y2hpbGQgdGFibGVzLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgdm9pZAorRXhlY0luaXRGb3JQ b3J0aW9uT2YoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsIFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCit7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJRm9y UG9ydGlvbk9mU3RhdGUgKmxlYWZTdGF0ZTsKKwlSZXN1bHRSZWxJbmZvICpyb290UmVsSW5mbyA9 IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvOworCUZvclBvcnRpb25PZlN0YXRlICpmcG9TdGF0 ZTsKKworCWlmICghcm9vdFJlbEluZm8pCisJCWVsb2coRVJST1IsICJubyByb290IHJlbGF0aW9u IGJ1dCByaV9mb3JQb3J0aW9uT2YgaXMgdW5pbml0aWFsaXplZCIpOworCisJZnBvU3RhdGUgPSBt dHN0YXRlLT5yb290UmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mOworCisJLyogVGhpbmdz IGJ1aWx0IGhlcmUgaGF2ZSB0byBsYXN0IGZvciB0aGUgcXVlcnkgZHVyYXRpb24uICovCisJb2xk Y3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKworCWxl YWZTdGF0ZSA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKworCWxlYWZTdGF0ZS0+ZnBf cmFuZ2VOYW1lID0gZnBvU3RhdGUtPmZwX3JhbmdlTmFtZTsKKwlsZWFmU3RhdGUtPmZwX3Jhbmdl VHlwZSA9IGZwb1N0YXRlLT5mcF9yYW5nZVR5cGU7CisJbGVhZlN0YXRlLT5mcF90YXJnZXRSYW5n ZSA9IGZwb1N0YXRlLT5mcF90YXJnZXRSYW5nZTsKKworCS8qCisJICogRm9yIHBhcnRpdGlvbmVk IHRhYmxlcyB3ZSBtdXN0IHJlYWQgdGhlIGxlZnRvdmVycyB1c2luZyB0aGUgY2hpbGQgdGFibGUn cworCSAqIHR1cGxlIGRlc2NyaXB0b3IsIGJ1dCB0aGVuIGluc2VydCB0aGVtIGludG8gdGhlIHJv b3QgdGFibGUgKHVzaW5nIGl0cworCSAqIHR1cGxlIGRlc2NyaXB0b3IpIHNvIHdlIGdldCB0dXBs ZSByb3V0aW5nLgorCSAqCisJICogRm9yIHRyYWRpdGlvbmFsIHRhYmxlIGluaGVyaXRhbmNlLCB3 ZSByZWFkIGFuZCBpbnNlcnQgZGlyZWN0bHkgaW50byB0aGlzCisJICogcmVzdWx0UmVsSW5mbzsg bm8gdHVwbGUgcm91dGluZyB0byB0aGUgcGFyZW50IGlzIHJlcXVpcmVkLgorCSAqLworCWlmIChy b290UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSkKKwl7CisJCVR1cGxlQ29udmVyc2lvbk1hcCAqbWFwID0gRXhlY0dl dENoaWxkVG9Sb290TWFwKHJlc3VsdFJlbEluZm8pOworCQlpZiAobWFwKQorCQkJbGVhZlN0YXRl LT5mcF9yYW5nZUF0dG5vID0gbWFwLT5hdHRyTWFwLT5hdHRudW1zW2Zwb1N0YXRlLT5mcF9yYW5n ZUF0dG5vIC0gMV07CisJCWVsc2UKKwkJCWxlYWZTdGF0ZS0+ZnBfcmFuZ2VBdHRubyA9IGZwb1N0 YXRlLT5mcF9yYW5nZUF0dG5vOworCQlsZWFmU3RhdGUtPmZwX0xlZnRvdmVyID0gZnBvU3RhdGUt PmZwX0xlZnRvdmVyOworCX0KKwllbHNlCisJeworCQlsZWFmU3RhdGUtPmZwX3JhbmdlQXR0bm8g PSBmcG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubzsKKwkJbGVhZlN0YXRlLT5mcF9MZWZ0b3ZlciA9CisJ CQlFeGVjSW5pdEV4dHJhVHVwbGVTbG90KG10c3RhdGUtPnBzLnN0YXRlLAorCQkJCQkJCQkgICBS ZWxhdGlvbkdldERlc2NyKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYyksCisJCQkJCQkJ CSAgICZUVFNPcHNWaXJ0dWFsKTsKKwl9CisKKwkvKiBFYWNoIHBhcnRpdGlvbiBuZWVkcyBhIHNs b3QgbWF0Y2hpbmcgaXRzIHR1cGxlIGRlc2NyaXB0b3IgKi8KKwlsZWFmU3RhdGUtPmZwX0V4aXN0 aW5nID0KKwkJdGFibGVfc2xvdF9jcmVhdGUocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNj LAorCQkJCQkJICAmbXRzdGF0ZS0+cHMuc3RhdGUtPmVzX3R1cGxlVGFibGUpOworCisJcmVzdWx0 UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gbGVhZlN0YXRlOworCisJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN4dCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDEzMzU5MTgwZDI1Li41 M2MxMzgzMTBkYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTQ3Nyw3ICs0NzcsOCBAQCB0eXBl ZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZTdGF0ZQogCU5vZGVUYWcJCXR5cGU7CiAKIAljaGFyCSAg ICpmcF9yYW5nZU5hbWU7CS8qIHRoZSBjb2x1bW4gbmFtZWQgaW4gRk9SIFBPUlRJT04gT0YgKi8K LQlPaWQJCQlmcF9yYW5nZVR5cGU7CS8qIHRoZSB0eXBlIG9mIHRoZSBGT1IgUE9SVElPTiBPRiBl eHByZXNzaW9uICovCisJT2lkCQkJZnBfcmFuZ2VUeXBlOwkvKiB0aGUgYmFzZSB0eXBlIChub3Qg ZG9tYWluKSBvZiB0aGUgRk9SCisJCQkJCQkJCSAqIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAqLwog CWludAkJCWZwX3JhbmdlQXR0bm87CS8qIHRoZSBhdHRubyBvZiB0aGUgcmFuZ2UgY29sdW1uICov CiAJRGF0dW0JCWZwX3RhcmdldFJhbmdlOyAvKiB0aGUgcmFuZ2UvbXVsdGlyYW5nZSBmcm9tIEZP UiBQT1JUSU9OIE9GICovCiAJVHlwZUNhY2hlRW50cnkgKmZwX2xlZnRvdmVyc3R5cGNhY2hlOwkv KiB0eXBlIGNhY2hlIGVudHJ5IG9mIHRoZSByYW5nZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dAppbmRleCAzMWY3NzJjNzIzZC4uMmVkY2Y5YWE3YjAg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CkBAIC0x MzY1LDYgKzEzNjUsOSBAQCAkJDsKIENSRUFURSBUUklHR0VSIGZwb19iZWZvcmVfc3RtdAogICBC RUZPUkUgSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAog ICBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNl LCBmYWxzZSk7CitDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3N0bXQxCisgIEJFRk9SRSBVUERB VEUgT0YgdmFsaWRfYXQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBTVEFURU1F TlQgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CiBDUkVBVEUg VFJJR0dFUiBmcG9fYWZ0ZXJfaW5zZXJ0X3N0bXQKICAgQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0 aW9uX29mX3Rlc3QKICAgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBf dHJpZ2dlcihmYWxzZSwgZmFsc2UpOwpAQCAtMTM3OCw2ICsxMzgxLDkgQEAgQ1JFQVRFIFRSSUdH RVIgZnBvX2FmdGVyX2RlbGV0ZV9zdG10CiBDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3Jvdwog ICBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVz dAogICBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBm YWxzZSk7CitDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3JvdzEKKyAgQkVGT1JFIFVQREFURSBP RiB2YWxpZF9hdCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVyBFWEVDVVRF IFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKIENSRUFURSBUUklHR0VSIGZw b19hZnRlcl9pbnNlcnRfcm93CiAgIEFGVEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0 CiAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZh bHNlKTsKQEAgLTEzOTQsOSArMTQwMCwxNSBAQCBVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAog Tk9USUNFOiAgZnBvX2JlZm9yZV9zdG10OiBCRUZPUkUgVVBEQVRFIFNUQVRFTUVOVDoKIE5PVElD RTogICAgb2xkOiA8TlVMTD4KIE5PVElDRTogICAgbmV3OiA8TlVMTD4KK05PVElDRTogIGZwb19i ZWZvcmVfc3RtdDE6IEJFRk9SRSBVUERBVEUgU1RBVEVNRU5UOgorTk9USUNFOiAgICBvbGQ6IDxO VUxMPgorTk9USUNFOiAgICBuZXc6IDxOVUxMPgogTk9USUNFOiAgZnBvX2JlZm9yZV9yb3c6IEJF Rk9SRSBVUERBVEUgUk9XOgogTk9USUNFOiAgICBvbGQ6IFsyMDE5LTAxLTAxLDIwMzAtMDEtMDEp CiBOT1RJQ0U6ICAgIG5ldzogWzIwMjEtMDEtMDEsMjAyMi0wMS0wMSkKK05PVElDRTogIGZwb19i ZWZvcmVfcm93MTogQkVGT1JFIFVQREFURSBST1c6CitOT1RJQ0U6ICAgIG9sZDogWzIwMTktMDEt MDEsMjAzMC0wMS0wMSkKK05PVElDRTogICAgbmV3OiBbMjAyMS0wMS0wMSwyMDIyLTAxLTAxKQog Tk9USUNFOiAgZnBvX2JlZm9yZV9zdG10OiBCRUZPUkUgSU5TRVJUIFNUQVRFTUVOVDoKIE5PVElD RTogICAgb2xkOiA8TlVMTD4KIE5PVElDRTogICAgbmV3OiA8TlVMTD4KQEAgLTE5ODYsNiArMTk5 OCw3IEBAIFNFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDIgT1JERVIgQlkgaWQsIHZh bGlkX2F0OwogRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0MjsKIERST1AgVFlQRSBteWRh dGVyYW5nZTsKIC0tIFRlc3QgRk9SIFBPUlRJT04gT0YgYWdhaW5zdCBhIHBhcnRpdGlvbmVkIHRh YmxlLgorLS0gSW5jbHVkZSBhIEdFTkVSQVRFRCBTVE9SRUQgY29sdW1uIHRvIHRlc3QgdXBkYXRl ZENvbHMgY29sdW1uIG1hcHBpbmcuCiAtLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIGhhcyB0aGUg c2FtZSBhdHRudW1zIGFzIHRoZSByb290CiAtLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIGhhcyB0 aGUgZGlmZmVyZW50IGF0dG51bXMgZnJvbSB0aGUgcm9vdAogLS0gdGVtcG9yYWxfcGFydGl0aW9u ZWRfNSBoYXMgdGhlIGRpZmZlcmVudCBhdHRudW1zIHRvbywgYnV0IHJldmVyc2VkCkBAIC0xOTkz LDI5ICsyMDA2LDM0IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCiAgIGlk IGludDRyYW5nZSwKICAgdmFsaWRfYXQgZGF0ZXJhbmdlLAogICBuYW1lIHRleHQsCisgIHJhbmdl X2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFs aWRfYXQpKSBTVE9SRUQsCiAgIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91cSBVTklR VUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAo aWQpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgUEFSVElUSU9OIE9GIHRl bXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwyKScsICdbMiwzKScpOwogQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3Bh cnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMyw0KScsICdbNCw1KScpOwogQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk IEZPUiBWQUxVRVMgSU4gKCdbNSw2KScsICdbNiw3KScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWQgREVUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zOwotQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xV TU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIERST1AgQ09M VU1OIGlkLCBEUk9QIENPTFVNTiB2YWxpZF9hdCBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNj YWRlcyB0byBjb2x1bW4gcmFuZ2VfbGVuIG9mIHRhYmxlIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMK IEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgQUREIENPTFVNTiBpZCBpbnQ0cmFu Z2UgTk9UIE5VTEwsIEFERCBDT0xVTU4gdmFsaWRfYXQgZGF0ZXJhbmdlIE5PVCBOVUxMOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBBREQgQ09MVU1OIHJhbmdlX2xlbiBpbnQg R0VORVJBVEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBT VE9SRUQ7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9O IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgRk9SIFZBTFVFUyBJTiAoJ1szLDQpJywgJ1s0LDUpJyk7 CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBERVRBQ0ggUEFSVElUSU9OIHRlbXBv cmFsX3BhcnRpdGlvbmVkXzU7Ci1BTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IERS T1AgQ09MVU1OIGlkLCBEUk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkXzUgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NB REU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIGNvbHVtbiByYW5nZV9sZW4gb2YgdGFibGUg dGVtcG9yYWxfcGFydGl0aW9uZWRfNQogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf NSBBREQgQ09MVU1OIHZhbGlkX2F0IGRhdGVyYW5nZSBOT1QgTlVMTCwgQUREIENPTFVNTiBpZCBp bnQ0cmFuZ2UgTk9UIE5VTEw7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IEFE RCBDT0xVTU4gcmFuZ2VfbGVuIGludCBHRU5FUkFURUQgQUxXQVlTIEFTICh1cHBlcih2YWxpZF9h dCkgLSBsb3dlcih2YWxpZF9hdCkpIFNUT1JFRDsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBGT1IgVkFMVUVT IElOICgnWzUsNiknLCAnWzYsNyknKTsKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk IChpZCwgdmFsaWRfYXQsIG5hbWUpIFZBTFVFUwogICAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDAw LTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ29uZScpLAogICAoJ1szLDQpJywgZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ3RocmVlJyksCiAgICgnWzUsNiknLCBkYXRlcmFu Z2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnZml2ZScpOwogU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZDsKLSAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwg bmFtZSAgCi0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQotIFsxLDIp IHwgWzIwMDAtMDEtMDEsMjAxMC0wMS0wMSkgfCBvbmUKLSBbMyw0KSB8IFsyMDAwLTAxLTAxLDIw MTAtMDEtMDEpIHwgdGhyZWUKLSBbNSw2KSB8IFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpIHwgZml2 ZQorICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICB8IHJhbmdlX2xlbiAK Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tCisg WzEsMikgfCBbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKSB8IG9uZSAgIHwgICAgICAzNjUzCisgWzMs NCkgfCBbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKSB8IHRocmVlIHwgICAgICAzNjUzCisgWzUsNikg fCBbMjAwMC0wMS0wMSwyMDEwLTAxLTAxKSB8IGZpdmUgIHwgICAgICAzNjUzCiAoMyByb3dzKQog CiAtLSBVcGRhdGUgd2l0aG91dCBtb3Zpbmcgd2l0aGluIHBhcnRpdGlvbiAxCkBAIC0yMDQ2LDU1 ICsyMDY0LDE2NiBAQCBVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAwMC0wNi0wMScgVE8gJzIwMDAtMAogICAgICAgaWQgPSAnWzMsNCkn CiAgIFdIRVJFIGlkID0gJ1s1LDYpJzsKIC0tIFVwZGF0ZSBhbGwgcGFydGl0aW9ucyBhdCBvbmNl IChlYWNoIHdpdGggbGVmdG92ZXJzKQotU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7Ci0gIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8ICBuYW1lICAgCi0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ci0gWzEsMikgfCBbMjAwMC0wMS0wMSwyMDAwLTAzLTAxKSB8IG9uZQotIFsxLDIpIHwgWzIwMDAt MDMtMDEsMjAwMC0wNC0wMSkgfCBvbmVeMQotIFsxLDIpIHwgWzIwMDAtMDQtMDEsMjAwMC0wNi0w MSkgfCBvbmUKLSBbMSwyKSB8IFsyMDAwLTA3LTAxLDIwMTAtMDEtMDEpIHwgb25lCi0gWzIsMykg fCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8IHRocmVlXjIKLSBbMyw0KSB8IFsyMDAwLTAxLTAx LDIwMDAtMDMtMDEpIHwgdGhyZWUKLSBbMyw0KSB8IFsyMDAwLTAzLTAxLDIwMDAtMDQtMDEpIHwg dGhyZWVeMQotIFszLDQpIHwgWzIwMDAtMDQtMDEsMjAwMC0wNi0wMSkgfCB0aHJlZQotIFszLDQp IHwgWzIwMDAtMDYtMDEsMjAwMC0wNy0wMSkgfCBmaXZlXjIKLSBbMyw0KSB8IFsyMDAwLTA3LTAx LDIwMTAtMDEtMDEpIHwgdGhyZWUKLSBbNCw1KSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpIHwg b25lXjIKLSBbNSw2KSB8IFsyMDAwLTAxLTAxLDIwMDAtMDMtMDEpIHwgZml2ZQotIFs1LDYpIHwg WzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBmaXZlXjEKLSBbNSw2KSB8IFsyMDAwLTA0LTAxLDIw MDAtMDYtMDEpIHwgZml2ZQotIFs1LDYpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCBmaXZl CitTRUxFQ1QgKiwgdXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCAgbmFtZSAgIHwgcmFuZ2VfbGVuIHwgP2NvbHVtbj8gCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyBbMSwyKSB8IFsyMDAwLTAxLTAxLDIwMDAtMDMtMDEpIHwgb25lICAgICB8ICAgICAgICA2 MCB8ICAgICAgIDYwCisgWzEsMikgfCBbMjAwMC0wMy0wMSwyMDAwLTA0LTAxKSB8IG9uZV4xICAg fCAgICAgICAgMzEgfCAgICAgICAzMQorIFsxLDIpIHwgWzIwMDAtMDQtMDEsMjAwMC0wNi0wMSkg fCBvbmUgICAgIHwgICAgICAgIDYxIHwgICAgICAgNjEKKyBbMSwyKSB8IFsyMDAwLTA3LTAxLDIw MTAtMDEtMDEpIHwgb25lICAgICB8ICAgICAgMzQ3MSB8ICAgICAzNDcxCisgWzIsMykgfCBbMjAw MC0wNi0wMSwyMDAwLTA3LTAxKSB8IHRocmVlXjIgfCAgICAgICAgMzAgfCAgICAgICAzMAorIFsz LDQpIHwgWzIwMDAtMDEtMDEsMjAwMC0wMy0wMSkgfCB0aHJlZSAgIHwgICAgICAgIDYwIHwgICAg ICAgNjAKKyBbMyw0KSB8IFsyMDAwLTAzLTAxLDIwMDAtMDQtMDEpIHwgdGhyZWVeMSB8ICAgICAg ICAzMSB8ICAgICAgIDMxCisgWzMsNCkgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IHRocmVl ICAgfCAgICAgICAgNjEgfCAgICAgICA2MQorIFszLDQpIHwgWzIwMDAtMDYtMDEsMjAwMC0wNy0w MSkgfCBmaXZlXjIgIHwgICAgICAgIDMwIHwgICAgICAgMzAKKyBbMyw0KSB8IFsyMDAwLTA3LTAx LDIwMTAtMDEtMDEpIHwgdGhyZWUgICB8ICAgICAgMzQ3MSB8ICAgICAzNDcxCisgWzQsNSkgfCBb MjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8IG9uZV4yICAgfCAgICAgICAgMzAgfCAgICAgICAzMAor IFs1LDYpIHwgWzIwMDAtMDEtMDEsMjAwMC0wMy0wMSkgfCBmaXZlICAgIHwgICAgICAgIDYwIHwg ICAgICAgNjAKKyBbNSw2KSB8IFsyMDAwLTAzLTAxLDIwMDAtMDQtMDEpIHwgZml2ZV4xICB8ICAg ICAgICAzMSB8ICAgICAgIDMxCisgWzUsNikgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IGZp dmUgICAgfCAgICAgICAgNjEgfCAgICAgICA2MQorIFs1LDYpIHwgWzIwMDAtMDctMDEsMjAxMC0w MS0wMSkgfCBmaXZlICAgIHwgICAgICAzNDcxIHwgICAgIDM0NzEKICgxNSByb3dzKQogCiBTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgT1JERVIgQlkgaWQsIHZhbGlkX2F0Owot ICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCAgbmFtZSAgIAotLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQotIFsxLDIpIHwgWzIwMDAtMDEtMDEsMjAw MC0wMy0wMSkgfCBvbmUKLSBbMSwyKSB8IFsyMDAwLTAzLTAxLDIwMDAtMDQtMDEpIHwgb25lXjEK LSBbMSwyKSB8IFsyMDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgb25lCi0gWzEsMikgfCBbMjAwMC0w Ny0wMSwyMDEwLTAxLTAxKSB8IG9uZQotIFsyLDMpIHwgWzIwMDAtMDYtMDEsMjAwMC0wNy0wMSkg fCB0aHJlZV4yCisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBuYW1lICAgfCBy YW5nZV9sZW4gCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgWzEsMikgfCBbMjAwMC0wMS0wMSwyMDAwLTAzLTAxKSB8IG9uZSAgICAgfCAg ICAgICAgNjAKKyBbMSwyKSB8IFsyMDAwLTAzLTAxLDIwMDAtMDQtMDEpIHwgb25lXjEgICB8ICAg ICAgICAzMQorIFsxLDIpIHwgWzIwMDAtMDQtMDEsMjAwMC0wNi0wMSkgfCBvbmUgICAgIHwgICAg ICAgIDYxCisgWzEsMikgfCBbMjAwMC0wNy0wMSwyMDEwLTAxLTAxKSB8IG9uZSAgICAgfCAgICAg IDM0NzEKKyBbMiwzKSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpIHwgdGhyZWVeMiB8ICAgICAg ICAzMAogKDUgcm93cykKIAogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIE9S REVSIEJZIGlkLCB2YWxpZF9hdDsKLSAgbmFtZSAgIHwgIGlkICAgfCAgICAgICAgdmFsaWRfYXQg ICAgICAgICAKLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSB0 aHJlZSAgIHwgWzMsNCkgfCBbMjAwMC0wMS0wMSwyMDAwLTAzLTAxKQotIHRocmVlXjEgfCBbMyw0 KSB8IFsyMDAwLTAzLTAxLDIwMDAtMDQtMDEpCi0gdGhyZWUgICB8IFszLDQpIHwgWzIwMDAtMDQt MDEsMjAwMC0wNi0wMSkKLSBmaXZlXjIgIHwgWzMsNCkgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAx KQotIHRocmVlICAgfCBbMyw0KSB8IFsyMDAwLTA3LTAxLDIwMTAtMDEtMDEpCi0gb25lXjIgICB8 IFs0LDUpIHwgWzIwMDAtMDYtMDEsMjAwMC0wNy0wMSkKKyAgbmFtZSAgIHwgIGlkICAgfCAgICAg ICAgdmFsaWRfYXQgICAgICAgICB8IHJhbmdlX2xlbiAKKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyB0aHJlZSAgIHwgWzMsNCkgfCBbMjAw MC0wMS0wMSwyMDAwLTAzLTAxKSB8ICAgICAgICA2MAorIHRocmVlXjEgfCBbMyw0KSB8IFsyMDAw LTAzLTAxLDIwMDAtMDQtMDEpIHwgICAgICAgIDMxCisgdGhyZWUgICB8IFszLDQpIHwgWzIwMDAt MDQtMDEsMjAwMC0wNi0wMSkgfCAgICAgICAgNjEKKyBmaXZlXjIgIHwgWzMsNCkgfCBbMjAwMC0w Ni0wMSwyMDAwLTA3LTAxKSB8ICAgICAgICAzMAorIHRocmVlICAgfCBbMyw0KSB8IFsyMDAwLTA3 LTAxLDIwMTAtMDEtMDEpIHwgICAgICAzNDcxCisgb25lXjIgICB8IFs0LDUpIHwgWzIwMDAtMDYt MDEsMjAwMC0wNy0wMSkgfCAgICAgICAgMzAKICg2IHJvd3MpCiAKIFNFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfNSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7Ci0gIG5hbWUgIHwgICAg ICAgIHZhbGlkX2F0ICAgICAgICAgfCAgaWQgICAKLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLQotIGZpdmUgICB8IFsyMDAwLTAxLTAxLDIwMDAtMDMtMDEpIHwgWzUs NikKLSBmaXZlXjEgfCBbMjAwMC0wMy0wMSwyMDAwLTA0LTAxKSB8IFs1LDYpCi0gZml2ZSAgIHwg WzIwMDAtMDQtMDEsMjAwMC0wNi0wMSkgfCBbNSw2KQotIGZpdmUgICB8IFsyMDAwLTA3LTAxLDIw MTAtMDEtMDEpIHwgWzUsNikKKyAgbmFtZSAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBp ZCAgIHwgcmFuZ2VfbGVuIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tCisgZml2ZSAgIHwgWzIwMDAtMDEtMDEsMjAwMC0wMy0wMSkgfCBbNSw2 KSB8ICAgICAgICA2MAorIGZpdmVeMSB8IFsyMDAwLTAzLTAxLDIwMDAtMDQtMDEpIHwgWzUsNikg fCAgICAgICAgMzEKKyBmaXZlICAgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IFs1LDYpIHwg ICAgICAgIDYxCisgZml2ZSAgIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCBbNSw2KSB8ICAg ICAgMzQ3MQogKDQgcm93cykKIAogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKKy0t IFVQREFURSBGT1IgUE9SVElPTiBPRiB3aXRoIGdlbmVyYXRlZCBzdG9yZWQgY29sdW1ucworLS0g VGhlIGdlbmVyYXRlZCBjb2x1bW4gZGVwZW5kcyBvbiB0aGUgcmFuZ2UgY29sdW1uLCBzbyBpdCBt dXN0IGJlCistLSByZWNvbXB1dGVkIHdoZW4gRk9SIFBPUlRJT04gT0YgbmFycm93cyB0aGUgcmFu Z2UuCitDUkVBVEUgVEFCTEUgZnBvX2dlbmVyYXRlZCAoCisgIGlkIGludCwKKyAgdmFsaWRfYXQg aW50NHJhbmdlLAorICByYW5nZV9sZW4gaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKHVwcGVyKHZh bGlkX2F0KSAtIGxvd2VyKHZhbGlkX2F0KSkgU1RPUkVELAorICByYW5nZV9sZW52IGludCBHRU5F UkFURUQgQUxXQVlTIEFTICh1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkpCispOwor SU5TRVJUIElOVE8gZnBvX2dlbmVyYXRlZCAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKDEsICdbMTAs MTAwKScpOworU0VMRUNUICogRlJPTSBmcG9fZ2VuZXJhdGVkIE9SREVSIEJZIHZhbGlkX2F0Owor IGlkIHwgdmFsaWRfYXQgfCByYW5nZV9sZW4gfCByYW5nZV9sZW52IAorLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAxIHwgWzEwLDEwMCkgfCAgICAgICAgOTAgfCAg ICAgICAgIDkwCisoMSByb3cpCisKK0NSRUFURSBUUklHR0VSIGZwb19iZWZvcmVfcm93MQorICBC RUZPUkUgVVBEQVRFIE9GIHZhbGlkX2F0IE9OIGZwb19nZW5lcmF0ZWQKKyAgRk9SIEVBQ0ggUk9X IEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOworQ1JFQVRFIFRS SUdHRVIgZnBvX2JlZm9yZV9yb3cyCisgIEJFRk9SRSBVUERBVEUgT0YgdmFsaWRfYXQgT04gZnBv X2dlbmVyYXRlZAorICBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90 cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CistLSBBZnRlciB0aGUgRk9SIFBPUlRJT04gT0YgKEZQTykg dXBkYXRlLCBhbGwgdGhyZWUgcmVzdWx0aW5nIHJvd3MKKy0tIChsZWZ0b3Zlci1iZWZvcmUsIHVw ZGF0ZWQsIGFuZCBsZWZ0b3Zlci1hZnRlcikgbXVzdCBjb250YWluIHRoZSBjb3JyZWN0CistLSB2 YWx1ZXMgZm9yIHJhbmdlX2xlbiBhbmQgcmFuZ2VfbGVudi4KKy0tIFRyaWdnZXJzIGZwb19iZWZv cmVfcm93MSBhbmQgZnBvX2JlZm9yZV9yb3cyIHNob3VsZCBhbHNvIGJlIGZpcmVkLgorVVBEQVRF IGZwb19nZW5lcmF0ZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAzMCBUTyA3MAor ICBTRVQgaWQgPSAyOworTk9USUNFOiAgZnBvX2JlZm9yZV9yb3cyOiBCRUZPUkUgVVBEQVRFIFNU QVRFTUVOVDoKK05PVElDRTogICAgb2xkOiA8TlVMTD4KK05PVElDRTogICAgbmV3OiA8TlVMTD4K K05PVElDRTogIGZwb19iZWZvcmVfcm93MTogQkVGT1JFIFVQREFURSBST1c6CitOT1RJQ0U6ICAg IG9sZDogWzEwLDEwMCkKK05PVElDRTogICAgbmV3OiBbMzAsNzApCitTRUxFQ1QgKiBGUk9NIGZw b19nZW5lcmF0ZWQgT1JERVIgQlkgdmFsaWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8IHJhbmdlX2xl biB8IHJhbmdlX2xlbnYgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgIDEgfCBbMTAsMzApICB8ICAgICAgICAyMCB8ICAgICAgICAgMjAKKyAgMiB8IFszMCw3MCkg IHwgICAgICAgIDQwIHwgICAgICAgICA0MAorICAxIHwgWzcwLDEwMCkgfCAgICAgICAgMzAgfCAg ICAgICAgIDMwCisoMyByb3dzKQorCistLSBBbHNvIHRlc3Qgd2l0aCBhIGdlbmVyYXRlZCBjb2x1 bW4gdGhhdCByZWZlcmVuY2VzIGJvdGggYSBTRVQgY29sdW1uCistLSBhbmQgdGhlIHJhbmdlIGNv bHVtbi4KK0RST1AgVEFCTEUgZnBvX2dlbmVyYXRlZDsKK0NSRUFURSBUQUJMRSBmcG9fZ2VuZXJh dGVkICgKKyAgaWQgaW50LAorICB2YWxpZF9hdCBpbnQ0cmFuZ2UsCisgIGlkX3BsdXNfbGVuIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChpZCArIHVwcGVyKHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlk X2F0KSkgU1RPUkVELAorICBpZF9wbHVzX2xlbnYgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGlk ICsgdXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKQorKTsKK0lOU0VSVCBJTlRPIGZw b19nZW5lcmF0ZWQgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgxLCAnWzEwLDEwMCknKTsKK1NFTEVD VCAqIEZST00gZnBvX2dlbmVyYXRlZCBPUkRFUiBCWSB2YWxpZF9hdDsKKyBpZCB8IHZhbGlkX2F0 IHwgaWRfcGx1c19sZW4gfCBpZF9wbHVzX2xlbnYgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLQorICAxIHwgWzEwLDEwMCkgfCAgICAgICAgICA5MSB8ICAgICAg ICAgICA5MQorKDEgcm93KQorCitVUERBVEUgZnBvX2dlbmVyYXRlZAorICBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIDMwIFRPIDcwCisgIFNFVCBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGZw b19nZW5lcmF0ZWQgT1JERVIgQlkgdmFsaWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8IGlkX3BsdXNf bGVuIHwgaWRfcGx1c19sZW52IAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0KKyAgMSB8IFsxMCwzMCkgIHwgICAgICAgICAgMjEgfCAgICAgICAgICAgMjEKKyAg MiB8IFszMCw3MCkgIHwgICAgICAgICAgNDIgfCAgICAgICAgICAgNDIKKyAgMSB8IFs3MCwxMDAp IHwgICAgICAgICAgMzEgfCAgICAgICAgICAgMzEKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgZnBv X2dlbmVyYXRlZDsKKy0tIFVQREFURSBGT1IgUE9SVElPTiBPRiB3aXRoIHRhYmxlIGluaGVyaXRh bmNlCistLSBMZWZ0b3ZlciByb3dzIG11c3Qgc3RheSBpbiB0aGUgY2hpbGQgdGFibGUsIHByZXNl cnZpbmcgY2hpbGQtc3BlY2lmaWMgY29sdW1ucy4KK0NSRUFURSBUQUJMRSBmcG9faW5oX3BhcmVu dCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQK Kyk7CitDUkVBVEUgVEFCTEUgZnBvX2luaF9jaGlsZCAoCisgIGRlc2NyaXB0aW9uIHRleHQKKykg SU5IRVJJVFMgKGZwb19pbmhfcGFyZW50KTsKK0lOU0VSVCBJTlRPIGZwb19pbmhfY2hpbGQgKGlk LCB2YWxpZF9hdCwgbmFtZSwgZGVzY3JpcHRpb24pIFZBTFVFUworICAoJ1sxLDIpJywgJ1syMDE4 LTAxLTAxLDIwMTktMDEtMDEpJywgJ29uZScsICdpbml0aWFsJyk7CistLSBVcGRhdGUgdGFyZ2V0 cyB0aGUgcGFyZW50OyB0aGUgbWF0Y2hpbmcgcm93IGxpdmVzIGluIHRoZSBjaGlsZC4KK1VQREFU RSBmcG9faW5oX3BhcmVudCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAx JyBUTyAnMjAxOC0xMC0wMScKKyAgU0VUIG5hbWUgPSAnb25lXjEnOworLS0gQWxsIHRocmVlIHJv d3Mgc2hvdWxkIGJlIGluIHRoZSBjaGlsZCwgd2l0aCBkZXNjcmlwdGlvbiBwcmVzZXJ2ZWQuCitT RUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gZnBvX2luaF9wYXJlbnQgT1JERVIgQlkg dmFsaWRfYXQ7CisgICB0YWJsZW9pZCAgICB8ICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgfCBuYW1lICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLQorIGZwb19pbmhfY2hpbGQgfCBbMSwyKSB8IFsyMDE4LTAxLTAxLDIwMTgt MDQtMDEpIHwgb25lCisgZnBvX2luaF9jaGlsZCB8IFsxLDIpIHwgWzIwMTgtMDQtMDEsMjAxOC0x MC0wMSkgfCBvbmVeMQorIGZwb19pbmhfY2hpbGQgfCBbMSwyKSB8IFsyMDE4LTEwLTAxLDIwMTkt MDEtMDEpIHwgb25lCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGZwb19pbmhfY2hpbGQgT1JE RVIgQlkgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUg IHwgZGVzY3JpcHRpb24gCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgWzEsMikgfCBbMjAxOC0wMS0wMSwyMDE4LTA0LTAxKSB8IG9uZSAg IHwgaW5pdGlhbAorIFsxLDIpIHwgWzIwMTgtMDQtMDEsMjAxOC0xMC0wMSkgfCBvbmVeMSB8IGlu aXRpYWwKKyBbMSwyKSB8IFsyMDE4LTEwLTAxLDIwMTktMDEtMDEpIHwgb25lICAgfCBpbml0aWFs CisoMyByb3dzKQorCistLSBObyByb3dzIHNob3VsZCBoYXZlIGxlYWtlZCBpbnRvIHRoZSBwYXJl bnQuCitTRUxFQ1QgKiBGUk9NIE9OTFkgZnBvX2luaF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7 CisgaWQgfCB2YWxpZF9hdCB8IG5hbWUgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tCisoMCByb3dz KQorCitEUk9QIFRBQkxFIGZwb19pbmhfcGFyZW50IENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNh c2NhZGVzIHRvIHRhYmxlIGZwb19pbmhfY2hpbGQKIFJFU0VUIGRhdGVzdHlsZTsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbAppbmRleCBkNDA2MmFjZjFkMS4uOGUwMGExODYz YTIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKQEAgLTkxMyw2ICs5 MTMsMTAgQEAgQ1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9zdG10CiAgIEJFRk9SRSBJTlNFUlQg T1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CiAgIEZPUiBFQUNIIFNU QVRFTUVOVCBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKIAor Q1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9zdG10MQorICBCRUZPUkUgVVBEQVRFIE9GIHZhbGlk X2F0IE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUg UFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOworCiBDUkVBVEUgVFJJR0dFUiBm cG9fYWZ0ZXJfaW5zZXJ0X3N0bXQKICAgQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rl c3QKICAgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihm YWxzZSwgZmFsc2UpOwpAQCAtOTMxLDYgKzkzNSwxMCBAQCBDUkVBVEUgVFJJR0dFUiBmcG9fYmVm b3JlX3JvdwogICBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9yX3BvcnRp b25fb2ZfdGVzdAogICBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2Vy KGZhbHNlLCBmYWxzZSk7CiAKK0NSRUFURSBUUklHR0VSIGZwb19iZWZvcmVfcm93MQorICBCRUZP UkUgVVBEQVRFIE9GIHZhbGlkX2F0IE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOworCiBDUkVB VEUgVFJJR0dFUiBmcG9fYWZ0ZXJfaW5zZXJ0X3JvdwogICBBRlRFUiBJTlNFUlQgT04gZm9yX3Bv cnRpb25fb2ZfdGVzdAogICBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmln Z2VyKGZhbHNlLCBmYWxzZSk7CkBAIC0xMjkyLDYgKzEzMDAsNyBAQCBEUk9QIFRBQkxFIGZvcl9w b3J0aW9uX29mX3Rlc3QyOwogRFJPUCBUWVBFIG15ZGF0ZXJhbmdlOwogCiAtLSBUZXN0IEZPUiBQ T1JUSU9OIE9GIGFnYWluc3QgYSBwYXJ0aXRpb25lZCB0YWJsZS4KKy0tIEluY2x1ZGUgYSBHRU5F UkFURUQgU1RPUkVEIGNvbHVtbiB0byB0ZXN0IHVwZGF0ZWRDb2xzIGNvbHVtbiBtYXBwaW5nLgog LS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBoYXMgdGhlIHNhbWUgYXR0bnVtcyBhcyB0aGUgcm9v dAogLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBoYXMgdGhlIGRpZmZlcmVudCBhdHRudW1zIGZy b20gdGhlIHJvb3QKIC0tIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgaGFzIHRoZSBkaWZmZXJlbnQg YXR0bnVtcyB0b28sIGJ1dCByZXZlcnNlZApAQCAtMTMwMCw2ICsxMzA5LDcgQEAgQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKICAgaWQgaW50NHJhbmdlLAogICB2YWxpZF9hdCBk YXRlcmFuZ2UsCiAgIG5hbWUgdGV4dCwKKyAgcmFuZ2VfbGVuIGludCBHRU5FUkFURUQgQUxXQVlT IEFTICh1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkpIFNUT1JFRCwKICAgQ09OU1RS QUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CiBDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZB TFVFUyBJTiAoJ1sxLDIpJywgJ1syLDMpJyk7CkBAIC0xMzA3LDEzICsxMzE3LDE1IEBAIENSRUFU RSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0 aXRpb25lZCBGT1IgVkFMVUVTCiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBQ QVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1s1LDYpJywg J1s2LDcpJyk7CiAKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIERFVEFDSCBQQVJU SVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfMzsKLUFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkXzMgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xVTU4gdmFs aWRfYXQgQ0FTQ0FERTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgQUREIENP TFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsIEFERCBDT0xVTU4gdmFsaWRfYXQgZGF0ZXJhbmdl IE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBBREQgQ09MVU1O IHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93 ZXIodmFsaWRfYXQpKSBTVE9SRUQ7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBB VFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgRk9SIFZBTFVFUyBJTiAoJ1sz LDQpJywgJ1s0LDUpJyk7CiAKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIERFVEFD SCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfNTsKLUFMVEVSIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkXzUgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xV TU4gdmFsaWRfYXQgQ0FTQ0FERTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUg QUREIENPTFVNTiB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9UIE5VTEwsIEFERCBDT0xVTU4gaWQgaW50 NHJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBBREQg Q09MVU1OIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQp IC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQ7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRp b25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRk9SIFZBTFVFUyBJ TiAoJ1s1LDYpJywgJ1s2LDcpJyk7CiAKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk IChpZCwgdmFsaWRfYXQsIG5hbWUpIFZBTFVFUwpAQCAtMTM1OCwxMSArMTM3MCw4NyBAQCBVUERB VEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAw MC0wNi0wMScgVE8gJzIwMDAtMAogCiAtLSBVcGRhdGUgYWxsIHBhcnRpdGlvbnMgYXQgb25jZSAo ZWFjaCB3aXRoIGxlZnRvdmVycykKIAotU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiwgdXBwZXIodmFsaWRfYXQpIC0gbG93 ZXIodmFsaWRfYXQpIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlk X2F0OwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIE9SREVSIEJZIGlkLCB2 YWxpZF9hdDsKIFNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgT1JERVIg QlkgaWQsIHZhbGlkX2F0OwogCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogCist LSBVUERBVEUgRk9SIFBPUlRJT04gT0Ygd2l0aCBnZW5lcmF0ZWQgc3RvcmVkIGNvbHVtbnMKKy0t IFRoZSBnZW5lcmF0ZWQgY29sdW1uIGRlcGVuZHMgb24gdGhlIHJhbmdlIGNvbHVtbiwgc28gaXQg bXVzdCBiZQorLS0gcmVjb21wdXRlZCB3aGVuIEZPUiBQT1JUSU9OIE9GIG5hcnJvd3MgdGhlIHJh bmdlLgorQ1JFQVRFIFRBQkxFIGZwb19nZW5lcmF0ZWQgKAorICBpZCBpbnQsCisgIHZhbGlkX2F0 IGludDRyYW5nZSwKKyAgcmFuZ2VfbGVuIGludCBHRU5FUkFURUQgQUxXQVlTIEFTICh1cHBlcih2 YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkpIFNUT1JFRCwKKyAgcmFuZ2VfbGVudiBpbnQgR0VO RVJBVEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKQorKTsK K0lOU0VSVCBJTlRPIGZwb19nZW5lcmF0ZWQgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgxLCAnWzEw LDEwMCknKTsKKworU0VMRUNUICogRlJPTSBmcG9fZ2VuZXJhdGVkIE9SREVSIEJZIHZhbGlkX2F0 OworCitDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3JvdzEKKyAgQkVGT1JFIFVQREFURSBPRiB2 YWxpZF9hdCBPTiBmcG9fZ2VuZXJhdGVkCisgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVS RSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKKworQ1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9y ZV9yb3cyCisgIEJFRk9SRSBVUERBVEUgT0YgdmFsaWRfYXQgT04gZnBvX2dlbmVyYXRlZAorICBG T1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBm YWxzZSk7CisKKy0tIEFmdGVyIHRoZSBGT1IgUE9SVElPTiBPRiAoRlBPKSB1cGRhdGUsIGFsbCB0 aHJlZSByZXN1bHRpbmcgcm93cworLS0gKGxlZnRvdmVyLWJlZm9yZSwgdXBkYXRlZCwgYW5kIGxl ZnRvdmVyLWFmdGVyKSBtdXN0IGNvbnRhaW4gdGhlIGNvcnJlY3QKKy0tIHZhbHVlcyBmb3IgcmFu Z2VfbGVuIGFuZCByYW5nZV9sZW52LgorLS0gVHJpZ2dlcnMgZnBvX2JlZm9yZV9yb3cxIGFuZCBm cG9fYmVmb3JlX3JvdzIgc2hvdWxkIGFsc28gYmUgZmlyZWQuCitVUERBVEUgZnBvX2dlbmVyYXRl ZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDMwIFRPIDcwCisgIFNFVCBpZCA9IDI7 CisKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRlZCBPUkRFUiBCWSB2YWxpZF9hdDsKKworLS0g QWxzbyB0ZXN0IHdpdGggYSBnZW5lcmF0ZWQgY29sdW1uIHRoYXQgcmVmZXJlbmNlcyBib3RoIGEg U0VUIGNvbHVtbgorLS0gYW5kIHRoZSByYW5nZSBjb2x1bW4uCitEUk9QIFRBQkxFIGZwb19nZW5l cmF0ZWQ7CitDUkVBVEUgVEFCTEUgZnBvX2dlbmVyYXRlZCAoCisgIGlkIGludCwKKyAgdmFsaWRf YXQgaW50NHJhbmdlLAorICBpZF9wbHVzX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoaWQg KyB1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkpIFNUT1JFRCwKKyAgaWRfcGx1c19s ZW52IGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpZCArIHVwcGVyKHZhbGlkX2F0KSAtIGxvd2Vy KHZhbGlkX2F0KSkKKyk7CisKK0lOU0VSVCBJTlRPIGZwb19nZW5lcmF0ZWQgKGlkLCB2YWxpZF9h dCkgVkFMVUVTICgxLCAnWzEwLDEwMCknKTsKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRlZCBP UkRFUiBCWSB2YWxpZF9hdDsKKworVVBEQVRFIGZwb19nZW5lcmF0ZWQKKyAgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAzMCBUTyA3MAorICBTRVQgaWQgPSAyOworU0VMRUNUICogRlJPTSBm cG9fZ2VuZXJhdGVkIE9SREVSIEJZIHZhbGlkX2F0OworRFJPUCBUQUJMRSBmcG9fZ2VuZXJhdGVk OworCisKKy0tIFVQREFURSBGT1IgUE9SVElPTiBPRiB3aXRoIHRhYmxlIGluaGVyaXRhbmNlCist LSBMZWZ0b3ZlciByb3dzIG11c3Qgc3RheSBpbiB0aGUgY2hpbGQgdGFibGUsIHByZXNlcnZpbmcg Y2hpbGQtc3BlY2lmaWMgY29sdW1ucy4KK0NSRUFURSBUQUJMRSBmcG9faW5oX3BhcmVudCAoCisg IGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQKKyk7CitD UkVBVEUgVEFCTEUgZnBvX2luaF9jaGlsZCAoCisgIGRlc2NyaXB0aW9uIHRleHQKKykgSU5IRVJJ VFMgKGZwb19pbmhfcGFyZW50KTsKK0lOU0VSVCBJTlRPIGZwb19pbmhfY2hpbGQgKGlkLCB2YWxp ZF9hdCwgbmFtZSwgZGVzY3JpcHRpb24pIFZBTFVFUworICAoJ1sxLDIpJywgJ1syMDE4LTAxLTAx LDIwMTktMDEtMDEpJywgJ29uZScsICdpbml0aWFsJyk7CisKKy0tIFVwZGF0ZSB0YXJnZXRzIHRo ZSBwYXJlbnQ7IHRoZSBtYXRjaGluZyByb3cgbGl2ZXMgaW4gdGhlIGNoaWxkLgorVVBEQVRFIGZw b19pbmhfcGFyZW50IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRP ICcyMDE4LTEwLTAxJworICBTRVQgbmFtZSA9ICdvbmVeMSc7CisKKy0tIEFsbCB0aHJlZSByb3dz IHNob3VsZCBiZSBpbiB0aGUgY2hpbGQsIHdpdGggZGVzY3JpcHRpb24gcHJlc2VydmVkLgorU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIGZwb19pbmhfcGFyZW50IE9SREVSIEJZIHZh bGlkX2F0OworU0VMRUNUICogRlJPTSBmcG9faW5oX2NoaWxkIE9SREVSIEJZIHZhbGlkX2F0Owor LS0gTm8gcm93cyBzaG91bGQgaGF2ZSBsZWFrZWQgaW50byB0aGUgcGFyZW50LgorU0VMRUNUICog RlJPTSBPTkxZIGZwb19pbmhfcGFyZW50IE9SREVSIEJZIHZhbGlkX2F0OworCitEUk9QIFRBQkxF IGZwb19pbmhfcGFyZW50IENBU0NBREU7CisKIFJFU0VUIGRhdGVzdHlsZTsKLS0gCjIuNDcuMwoK --00000000000088c32f065010595e--