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.98.2) (envelope-from ) id 1xAV54-00000002gPh-1je0 for pgsql-hackers@arkaria.postgresql.org; Sat, 26 Sep 2026 16:16:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xAV52-00000004fCb-2uNm for pgsql-hackers@arkaria.postgresql.org; Sat, 26 Sep 2026 16:16:52 +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.98.2) (envelope-from ) id 1xAV51-00000004fCT-4184 for pgsql-hackers@lists.postgresql.org; Sat, 26 Sep 2026 16:16:52 +0000 Received: from mail-ed2-x0d.google.com ([2a00:1450:4864:33::d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1xAV4v-00000001NGj-3eX3 for pgsql-hackers@lists.postgresql.org; Sat, 26 Sep 2026 16:16:50 +0000 Received: by mail-ed2-x0d.google.com with SMTP id 4fb4d7f45d1cf-6ab4b93bbe9so791394a12.2 for ; Sat, 26 Sep 2026 09:16:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1790439403; x=1791044203; darn=lists.postgresql.org; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:content-type:from:to:cc:subject:date:message-id :reply-to:content-type; bh=LephMdWZX2i4/78cYuH0tjl2nQT/tayIMxbyBUnk05I=; b=RcKmPid54tZ+2NcJb+Dvf1LTLLYQEz8hmgi4KaCzqxy5IdI0e7IMuBiEkCD4FiuvHX 3IEzaoMTZ7C9ji3iWI++hjB66C/5joV5Noqd6OBDN04jHP+8D4SictdBEBJac7LcoOlB PAExCtTUHAcUwby+2nBEJm3j3r8/EDi+jphI5g7gM3V2AeKJsBdOjHZwIxwqvIe2rLU9 wnLlVNMsPi9tL842BGgAqXp0ozjPe583NWBmk7Lqa8/K0XWMAaWfjzRGYJiktTGkZV5W EKO2f4VP4YYiyanmYJ/1ttLqp6oEkBENOq1pxgIqkUlrXcQupa+MIDYEB/nBiXnzRq5+ 6SfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790439403; x=1791044203; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:content-type:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=LephMdWZX2i4/78cYuH0tjl2nQT/tayIMxbyBUnk05I=; b=zfN/6UsWk/B1w0dKWsef6PHZ7PwaWjcZX8OsPsuOAW+GylBi3g/7ZqxnXQmb+LZLxW TTJYuUrKqOeFz2b+jvl45Oolir6RbMznwbzf1S3sLYuVz0LyICjwZIHcXRcF/TliacZB dIBQrl95fycxP06H9XAWqu+HLlWv23zgBN3JwbFgvgAGZtz/pRnBzsYgdwbyE3Jod+8R njMD6EoAJ0hvuhIaX8wQgyyWLZx8ElFBPqLMweWK8D+74TpoKteHf9seD/85Nb9cczfG 7ehblxLXyE/3hT0eRbBMa5CXxcJYp4cFsox18BNTS87UAzTyjVc+ZSCWR5+lHOPB6c2i 21Qw== X-Forwarded-Encrypted: i=1; AKwUvBw1qtOIqxhSn76/r0irNoho3yD9memVlRiR2iuDA0Fcbp3Uljg98TvTEI+RFoDkVPHMNKJuIb7juyzS7Ma1@lists.postgresql.org X-Gm-Message-State: AFuF++mkxMh0FOsDJfCkHl67bnl1yAWEux5jygtA1f/HmQiKUPfAyaDA E6xZFjCJ2lSjOgxoZ+GrZaalfduesS0AVeUhfO6ErRXnlf23YndMwSKJvG+YZQ6aVEk= X-Gm-Gg: AYBFou1Dy/OaKENa0P/eXzlAijXZVSk3U9NdJlF1GAy5ToguGEp7BpqoreS5O25nKCd VrLNIMt3FQIOgwDDDgX5/8othFpu9fTGevP+ihwet8Z6+WeAPHIYXEnHUc7mEV/YswnNW38W4CP 1fo5a9VrtDgomK2+s6Nbb7RkZgPUnMADBvBnMaoEflMea0JPiDPKZ6JX4mYMmWL1TlXwWnRx28H xoEDoIep3wPxeBES1uMnay2iOaF8Q9rxllb8vWyWvMtVpl/iuVTxdi/a8r8bsWZ2dWlj4EEKTQh 35MPqUh5fG1uQqJ6CSr9MJhHUlh+O+ceL/9NtDqsaj5hljYDhXnvGEIa9fUcgZDWAdgvOOE2Stg BuDzqZ/l5HGqoev0fw7hAmP20tTwZs9hHyicfg4oX72JDpRs6G3SxqJavmBf1qWQIfXRHTQAexc Dyar1vH3V2IWMReJ9uEOML+gT9uOLCFVRHn09PoeLa44EjG4/hpRvYL+zegfHsyY3qTbYhv+n2W 00c2T5i8imyXAsKbSiiDo5+RT7A/Y5q+A== X-Received: by 2002:a17:907:9405:b0:c25:437:3dcf with SMTP id a640c23a62f3a-c2ac242d68emr793700266b.21.1790439403393; Sat, 26 Sep 2026 09:16:43 -0700 (PDT) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2ae77ab08csm252899166b.44.2026.09.26.09.16.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 26 Sep 2026 09:16:42 -0700 (PDT) Content-Type: multipart/mixed; boundary=99d59bca373b90013b8673636e0537001a806badfe94564292abc40dccdb Mime-Version: 1.0 Date: Sat, 26 Sep 2026 18:16:41 +0200 Message-Id: Cc: "Robert Haas" , "Tomas Vondra" , "Julien Rouhaud" , Subject: Re: Extension security improvement: Add support for extensions with an owned schema To: "Manu" , "Jelte Fennema-Nio" From: "Jelte Fennema-Nio" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: <179011073934.1743297.13790335223697741830@gmail.com> In-Reply-To: <179011073934.1743297.13790335223697741830@gmail.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --99d59bca373b90013b8673636e0537001a806badfe94564292abc40dccdb Content-Type: multipart/alternative; boundary=adb4803a9f80736d304643898c4ba6d801ba3fd4b0e5f1c2b9bd4228792c --adb4803a9f80736d304643898c4ba6d801ba3fd4b0e5f1c2b9bd4228792c Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Tue Sep 22, 2026 at 10:58 PM CEST, Manu wrote: >> I also think I changed the pg_upgrade to do the correct thing, but I'm >> not sure how to test this (even manually). Because part of it would >> only be relevant once we support upgrading from PG18. So for now the >> upgrade_code I haven't actually run. > > That is still true, and unfortunately that code does not work. =20 Thank you for testing the patch and finding these issues. And to be clear I had by this point tested this code manually (but that was a long time ago) and written regression tests that should catch these issues. > 1. pg_dump against any older server fails > ------------------------------------------ Yeah this version number bitrotted over time due to new releases without this patch in it. Fixed now. (this is a gap in our CI, but the buildfarm would have caught this quickly after commit) > 2. Every pg_dump of a database with an owned-schema extension warns > -------------------------------------------------------------------- > > pg_dump: warning: could not resolve dependency loop among these items: > pg_dump: detail: EXTENSION loopdemo_owned (ID 2 OID 16386) > pg_dump: detail: SCHEMA loopdemo_owned (ID 8 OID 16385) I think this was the best find. Fixed now. And I also included a separate patch that fails the test_pg_dump regression test if any warning is emitted by pg_dump/pg_restore so that CI will catch these kind of failures in the future. > 3. test_pg_dump cannot be run on its own any more > -------------------------------------------------- > > make -C src/test/modules/test_pg_dump check Fixed now (needed a small Makefile addition). I think I had only tested it with meson (and CI runs the full test suite not specific tests). --adb4803a9f80736d304643898c4ba6d801ba3fd4b0e5f1c2b9bd4228792c-- --99d59bca373b90013b8673636e0537001a806badfe94564292abc40dccdb Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v12-0001-Check-for-pg_dump-restore-warnings-in-test_pg_du.patch Content-Type: text/x-patch; charset=utf-8; name=v12-0001-Check-for-pg_dump-restore-warnings-in-test_pg_du.patch RnJvbSAxZGRlYTE5MmYwMzBmMWM1MjQ0Mzc1ZTMxMzE0YzYzNGUzZmE4OWQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTYXQsIDI2IFNlcCAyMDI2IDE0OjU0OjU0ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MTIgMS8yXSBDaGVjayBmb3IgcGdfZHVtcC9yZXN0b3JlIHdhcm5pbmdzIGluIHRlc3RfcGdfZHVt cAoKV2FybmluZ3MgYXJlIHVuZXhwZWN0ZWQgZHVyaW5nIHRoZSBwZ19kdW1wIHRlc3RzIGluIHRl c3RfcGdfZHVtcC4gVGhpcwptYWtlcyB0aGUgdGVzdCBmYWlsIHdoZW4gdGhleSBvY2N1ciBhbnl3 YXkuCi0tLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3BnX2R1bXAvdC8wMDFfYmFzZS5wbCB8IDE0 ICsrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcGdfZHVtcC90LzAw MV9iYXNlLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3BnX2R1bXAvdC8wMDFfYmFzZS5wbApp bmRleCAzZDY1Y2U0NDk3YS4uZGQ2YTBhM2M3M2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9wZ19kdW1wL3QvMDAxX2Jhc2UucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X3BnX2R1bXAvdC8wMDFfYmFzZS5wbApAQCAtOTM4LDEzICs5MzgsMTkgQEAgZm9yZWFjaCBteSAk cnVuIChzb3J0IGtleXMgJXBnZHVtcF9ydW5zKQogCQluZXh0OwogCX0KIAotCSRub2RlLT5jb21t YW5kX29rKFxAeyAkcGdkdW1wX3J1bnN7JHJ1bn0tPntkdW1wX2NtZH0gfSwKLQkJIiRydW46IHBn X2R1bXAgcnVucyIpOworCSRub2RlLT5jb21tYW5kX2NoZWNrc19hbGwoCisJCVxAeyAkcGdkdW1w X3J1bnN7JHJ1bn0tPntkdW1wX2NtZH0gfSwKKwkJMCwgW3FyL14vXSwKKwkJW3FyL14oPyEuKnBn X2R1bXA6IHdhcm5pbmc6KS9zXSwKKwkJIiRydW46IHBnX2R1bXAgcnVucyB3aXRob3V0IHdhcm5p bmdzIik7CiAKIAlpZiAoJHBnZHVtcF9ydW5zeyRydW59LT57cmVzdG9yZV9jbWR9KQogCXsKLQkJ JG5vZGUtPmNvbW1hbmRfb2soXEB7ICRwZ2R1bXBfcnVuc3skcnVufS0+e3Jlc3RvcmVfY21kfSB9 LAotCQkJIiRydW46IHBnX3Jlc3RvcmUgcnVucyIpOworCQkkbm9kZS0+Y29tbWFuZF9jaGVja3Nf YWxsKAorCQkJXEB7ICRwZ2R1bXBfcnVuc3skcnVufS0+e3Jlc3RvcmVfY21kfSB9LAorCQkJMCwg W3FyL14vXSwKKwkJCVtxci9eKD8hLipwZ19yZXN0b3JlOiB3YXJuaW5nOikvc10sCisJCQkiJHJ1 bjogcGdfcmVzdG9yZSBydW5zIHdpdGhvdXQgd2FybmluZ3MiKTsKIAl9CiAKIAlpZiAoJHBnZHVt cF9ydW5zeyRydW59LT57dGVzdF9rZXl9KQotLSAKMi41NS4wCgo= --99d59bca373b90013b8673636e0537001a806badfe94564292abc40dccdb Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v12-0002-Add-support-for-extensions-with-an-owned-schema.patch Content-Type: text/x-patch; charset=utf-8; name=v12-0002-Add-support-for-extensions-with-an-owned-schema.patch RnJvbSAxMjBhMDIwYWJkZmUwNGEzMjgwOTZkZGZmODE0YTc3OGIxNTdlMmQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBGcmksIDQgT2N0IDIwMjQgMjI6MzQ6NTEgKzAyMDAKU3ViamVjdDogW1BBVENIIHYx MiAyLzJdIEFkZCBzdXBwb3J0IGZvciBleHRlbnNpb25zIHdpdGggYW4gb3duZWQgc2NoZW1hCgpX cml0aW5nIHRoZSBzcWwgbWlncmF0aW9uIHNjcmlwdHMgdGhhdCBhcmUgcnVuIGJ5IENSRUFURSBF WFRFTlNJT04gYW5kCkFMVEVSIEVYVEVOU0lPTiBVUERBVEUgYXJlIHNlY3VyaXR5IG1pbmVmaWVs ZHMgZm9yIGV4dGVuc2lvbiBhdXRob3JzLgpPbmUgYmlnIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0 IHNlYXJjaF9wYXRoIGlzIHNldCB0byB0aGUgc2NoZW1hIG9mIHRoZQpleHRlbnNpb24gd2hpbGUg cnVubmluZyB0aGVzZSBzY3JpcHRzLCBhbmQgdGh1cyBpZiBhIHVzZXIgd2l0aCBsb3dlcgpwcml2 aWxlZ2VzIGNhbiBjcmVhdGUgZnVuY3Rpb25zIG9yIG9wZXJhdG9ycyBpbiB0aGF0IHNjaGVtYSB0 aGV5IGNhbiBkbwphbGwga2luZHMgb2Ygc2VhcmNoX3BhdGggY29uZnVzaW9uIGF0dGFja3MgaWYg bm90IGV2ZXJ5IGZ1bmN0aW9uIGFuZApvcGVyYXRvciB0aGF0IGlzIHVzZWQgaW4gdGhlIHNjcmlw dCBpcyBzY2hlbWEgcXVhbGlmaWVkLiBXaGlsZSBkb2luZwpzdWNoIHNjaGVtYSBxdWFsaWZpY2F0 aW9uIGlzIHBvc3NpYmxlLCBpdCByZWxpZXMgb24gdGhlIGF1dGhvciB0byBuZXZlcgptYWtlIGEg bWlzdGFrZSBpbiBhbnkgb2YgdGhlIHNxbCBmaWxlcy4gQW5kIHNhZGx5IGh1bWFucyBoYXZlIGEg dGVuZGVuY3kKdG8gbWFrZSBtaXN0YWtlcy4KClRoaXMgcGF0Y2ggYWRkcyBhIG5ldyAib3duZWRf c2NoZW1hIiBvcHRpb24gdG8gdGhlIGV4dGVuc2lvbiBjb250cm9sCmZpbGUgdGhhdCBjYW4gYmUg c2V0IHRvIHRydWUgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiB3YW50cyB0bwpvd24g dGhlIHNjaGVtYSBpbiB3aGljaCBpdCBpcyBpbnN0YWxsZWQuIFdoYXQgdGhhdCBtZWFucyBpcyB0 aGF0IHRoZQpzY2hlbWEgc2hvdWxkIG5vdCBleGlzdCBiZWZvcmUgY3JlYXRpbmcgdGhlIGV4dGVu c2lvbiwgYW5kIHdpbGwgYmUKY3JlYXRlZCBkdXJpbmcgZXh0ZW5zaW9uIGNyZWF0aW9uLiBUaGlz IHRodXMgZ2l2ZXMgdGhlIGV4dGVuc2lvbiBhdXRob3IKYW4gZWFzeSB3YXkgdG8gdXNlIGEgc2Fm ZSBzZWFyY2hfcGF0aCwgd2hpbGUgc3RpbGwgYWxsb3dpbmcgYWxsIG9iamVjdHMKdG8gYmUgZ3Jv dXBlZCB0b2dldGhlciBpbiBhIHNjaGVtYS4gVGhlIGltcGxlbWVudGF0aW9uIGFsc28gaGFzIHRo ZQpwbGVhc2FudCBzaWRlIGVmZmVjdCB0aGF0IHRoZSBzY2hlbWEgd2lsbCBiZSBhdXRvbWF0aWNh bGx5IGRyb3BwZWQgd2hlbgp0aGUgZXh0ZW5zaW9uIGlzIGRyb3BwZWQuCi0tLQogZG9jL3NyYy9z Z21sL2V4dGVuZC5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDM0ICsrCiBkb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9leHRlbnNpb24uc2dtbCAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAgICAgICB8IDQ1MCArKysrKysrKysrKysrLS0t LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyAgICB8ICA0NCAr LQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDY4ICsr LQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZXh0ZW5zaW9uLmggICAgICAgICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oICAgICAgICAgICAgICB8ICAgNCArLQogc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUgICAgIHwgIDEzICstCiAuLi4v ZXhwZWN0ZWQvdGVzdF9leHRlbnNpb25zLm91dCAgICAgICAgICAgICAgfCAxNjEgKysrKysrKwog c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvbWVzb24uYnVpbGQgIHwgIDExICsKIC4u Li90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZW5zaW9ucy5zcWwgICB8ICA3OSArKysKIC4u Li90ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC0tMS4xLnNxbCAgICAgICB8ICAgMyArCiAuLi4v dGVzdF9leHRfb3duZWRfc2NoZW1hLS0xLjAuc3FsICAgICAgICAgICAgfCAgIDIgKwogLi4uL3Rl c3RfZXh0X293bmVkX3NjaGVtYS5jb250cm9sICAgICAgICAgICAgIHwgICA1ICsKIC4uLmV4dF9v d25lZF9zY2hlbWFfbm9zdXBlcnVzZXItLTEuMC0tMS4xLnNxbCB8ICAgNSArCiAuLi50ZXN0X2V4 dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXItLTEuMC5zcWwgfCAgIDMgKwogLi4uL3Rlc3RfZXh0 X293bmVkX3NjaGVtYV9ub3N1cGVydXNlci5jb250cm9sIHwgICA1ICsKIC4uLnRlc3RfZXh0X293 bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4wLnNxbCB8ICAgMiArCiAuLi4vdGVzdF9leHRfb3du ZWRfc2NoZW1hX3JlbG9jYXRhYmxlLmNvbnRyb2wgfCAgIDQgKwogLi4uZXN0X2V4dF9vd25lZF9z Y2hlbWFfdHJ1c3RlZC0tMS4wLS0xLjEuc3FsIHwgICAzICsKIC4uLi90ZXN0X2V4dF9vd25lZF9z Y2hlbWFfdHJ1c3RlZC0tMS4wLnNxbCAgICB8ICAgMyArCiAuLi4vdGVzdF9leHRfb3duZWRfc2No ZW1hX3RydXN0ZWQuY29udHJvbCAgICAgfCAgIDUgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Bn X2R1bXAvTWFrZWZpbGUgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9wZ19k dW1wL3QvMDAxX2Jhc2UucGwgICB8ICAzMiArKwogMjYgZmlsZXMgY2hhbmdlZCwgODAzIGluc2Vy dGlvbnMoKyksIDE0NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC0tMS4xLnNx bAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rl c3RfZXh0X293bmVkX3NjaGVtYS0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYS5jb250cm9sCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9l eHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLS0xLjAtLTEuMS5zcWwKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hl bWFfbm9zdXBlcnVzZXItLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIuY29u dHJvbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25z L3Rlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4wLnNxbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3Nj aGVtYV9yZWxvY2F0YWJsZS5jb250cm9sCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQtLTEuMC0t MS4xLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkLS0xLjAuc3FsCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2No ZW1hX3RydXN0ZWQuY29udHJvbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9leHRlbmQuc2dt bCBiL2RvYy9zcmMvc2dtbC9leHRlbmQuc2dtbAppbmRleCA2M2M1ZWM2ZDFlYi4uZGRmYjRlYmZi ZjUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9leHRlbmQuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvZXh0ZW5kLnNnbWwKQEAgLTgxNCw2ICs4MTQsNDAgQEAgUkVUVVJOUyBhbnljb21wYXRpYmxl IEFTIC4uLgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAg PHZhcmxpc3RlbnRyeSBpZD0iZXh0ZW5kLWV4dGVuc2lvbnMtZmlsZXMtb3duZWQtc2NoZW1hIj4K KyAgICAgIDx0ZXJtPjx2YXJuYW1lPm93bmVkX3NjaGVtYTwvdmFybmFtZT4gKDx0eXBlPmJvb2xl YW48L3R5cGU+KTwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAg ICAgQW4gZXh0ZW5zaW9uIHNob3VsZCBzZXQgPGZpcnN0dGVybT5vd25lZF9zY2hlbWE8L2ZpcnN0 dGVybT4gdG8KKyAgICAgICAgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4gaW4gaXRzIGNvbnRyb2wg ZmlsZSBpZiB0aGUgZXh0ZW5zaW9uIHdhbnRzIGEKKyAgICAgICAgZGVkaWNhdGVkIHNjaGVtYSBm b3IgaXRzIG9iamVjdHMuIFN1Y2ggYSBzY2hlbWEgc2hvdWxkIG5vdCBleGlzdCB5ZXQgYXQKKyAg ICAgICAgdGhlIHRpbWUgb2YgZXh0ZW5zaW9uIGNyZWF0aW9uLCBhbmQgd2lsbCBiZSBjcmVhdGVk IGF1dG9tYXRpY2FsbHkgYnkKKyAgICAgICAgPGxpdGVyYWw+Q1JFQVRFIEVYVEVOU0lPTjwvbGl0 ZXJhbD4uIFRoZSBkZWZhdWx0IGlzCisgICAgICAgIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiwg aS5lLiwgdGhlIGV4dGVuc2lvbiBjYW4gYmUgaW5zdGFsbGVkIGludG8gYW4KKyAgICAgICAgZXhp c3Rpbmcgc2NoZW1hLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgSGF2 aW5nIGEgc2NoZW1hIG93bmVkIGJ5IHRoZSBleHRlbnNpb24gY2FuIG1ha2UgaXQgbXVjaCBlYXNp ZXIgdG8KKyAgICAgICAgcmVhc29uIGFib3V0IHBvc3NpYmxlIDxsaXRlcmFsPnNlYXJjaF9wYXRo PC9saXRlcmFsPiBpbmplY3Rpb24gYXR0YWNrcy4KKyAgICAgICAgRm9yIGluc3RhbmNlIHdpdGgg YW4gb3duZWQgc2NoZW1hLCBpdCBpcyBnZW5lcmFsbHkgc2FmZSB0byBzZXQgdGhlCisgICAgICAg IDxsaXRlcmFsPnNlYXJjaF9wYXRoPC9saXRlcmFsPiBvZiBhIDxsaXRlcmFsPlNFQ1VSSVRZIERF RklORVI8L2xpdGVyYWw+CisgICAgICAgIGZ1bmN0aW9uIHRvIHRoZSBzY2hlbWEgb2YgdGhlIGV4 dGVuc2lvbi4gV2hpbGUgd2l0aG91dCBhbiBvd25lZCBzY2hlbWEKKyAgICAgICAgaXQgbWlnaHQg bm90IGJlIHNhZmUgdG8gZG8gc28sIGJlY2F1c2UgYSBtYWxpY2lvdXMgdXNlciBjb3VsZCBpbnNl cnQKKyAgICAgICAgb2JqZWN0cyBpbiB0aGF0IHNjaGVtYSBhbmQgdGh1cyA8bGluaworICAgICAg ICBsaW5rZW5kPSJzcWwtY3JlYXRlZnVuY3Rpb24tc2VjdXJpdHkiPiBjYXVzZSBtYWxpY2lvdXMg dG8gYmUgZXhlY3V0ZWQKKyAgICAgICAgYXMgc3VwZXJ1c2VyPC9saW5rPi4gU2ltaWxhcmx5LCBo YXZpbmcgYW4gb3duZWQgc2NoZW1hIGNhbiBtYWtlIGl0IHNhZmUKKyAgICAgICAgYnkgZGVmYXVs dCB0byBleGVjdXRlIGdlbmVyYWwtcHVycG9zZSBTUUwgaW4gdGhlIGV4dGVuc2lvbiBzY3JpcHQs CisgICAgICAgIGJlY2F1c2UgdGhlIHNlYXJjaF9wYXRoIG5vdyBvbmx5IGNvbnRhaW5zIHRydXN0 ZWQgc2NoZW1hcy4gV2l0aG91dCBhbgorICAgICAgICBvd25lZCBzY2hlbWEgaXQncyA8bGluayBs aW5rZW5kPSJleHRlbmQtZXh0ZW5zaW9ucy1zZWN1cml0eS1zY3JpcHRzIj4KKyAgICAgICAgcmVj b21tZW5kZWQgdG8gbWFudWFsbHkgY2hhbmdlIHRoZSBzZWFyY2hfcGF0aDwvbGluaz4uCisgICAg ICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBBcGFydCBmcm9tIHRoZSBzZWN1cml0 eSBjb25zaWRlcmF0aW9ucywgaGF2aW5nIGFuIG93bmVkIHNjaGVtYSBjYW4gaGVscAorICAgICAg ICBwcmV2ZW50IG5hbWluZyBjb25mbGljdHMgYmV0d2VlbiBvYmplY3RzIG9mIGRpZmZlcmVudCBl eHRlbnNpb25zLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFy bGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImV4dGVuZC1leHRlbnNpb25zLWZp bGVzLXNjaGVtYSI+CiAgICAgICA8dGVybT48dmFybmFtZT5zY2hlbWE8L3Zhcm5hbWU+ICg8dHlw ZT5zdHJpbmc8L3R5cGU+KTwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX2V4dGVuc2lvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfZXh0ZW5zaW9uLnNnbWwKaW5kZXggNzEzYWJkOWM0OTQuLmFiMTI1ZDU2MjYzIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9leHRlbnNpb24uc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9leHRlbnNpb24uc2dtbApAQCAtMTA0LDcgKzEwNCwxMSBAQCBD UkVBVEUgRVhURU5TSU9OIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5leHRlbnNpb25fbmFtZQogICAgICAgIDxwYXJhPgogICAgICAgICBUaGUgbmFtZSBv ZiB0aGUgc2NoZW1hIGluIHdoaWNoIHRvIGluc3RhbGwgdGhlIGV4dGVuc2lvbidzCiAgICAgICAg IG9iamVjdHMsIGdpdmVuIHRoYXQgdGhlIGV4dGVuc2lvbiBhbGxvd3MgaXRzIGNvbnRlbnRzIHRv IGJlCi0gICAgICAgIHJlbG9jYXRlZC4gIFRoZSBuYW1lZCBzY2hlbWEgbXVzdCBhbHJlYWR5IGV4 aXN0LgorICAgICAgICByZWxvY2F0ZWQuIFdoZXRoZXIgdGhpcyBzY2hlbWEgc2hvdWxkIGFscmVh ZHkgZXhpc3Qgb3Igbm90IGRlcGVuZHMgb24KKyAgICAgICAgdGhlIHZhbHVlIG9mIDxsaXRlcmFs Pm93bmVkX3NjaGVtYTwvbGl0ZXJhbD4gaW4gdGhlIGV4dGVuc2lvbnMgY29udHJvbAorICAgICAg ICBmaWxlOiBJZiBpdCdzIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LCB0aGUgc2NoZW1hIG11c3QK KyAgICAgICAgPGVtcGhhc2lzPm5vdDwvZW1waGFzaXM+IGV4aXN0OyBpZiBpdCdzIDxsaXRlcmFs PmZhbHNlPC9saXRlcmFsPiBpdAorICAgICAgICBtdXN0IGV4aXN0LgogICAgICAgICBJZiBub3Qg c3BlY2lmaWVkLCBhbmQgdGhlIGV4dGVuc2lvbidzIGNvbnRyb2wgZmlsZSBkb2VzIG5vdCBzcGVj aWZ5IGEKICAgICAgICAgc2NoZW1hIGVpdGhlciwgdGhlIGN1cnJlbnQgZGVmYXVsdCBvYmplY3Qg Y3JlYXRpb24gc2NoZW1hIGlzIHVzZWQuCiAgICAgICAgPC9wYXJhPgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRl bnNpb24uYwppbmRleCA1ODU1NjY4YzVjYS4uMjE4MWFjZWFhNmQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 dGVuc2lvbi5jCkBAIC05NSw2ICs5NSw4IEBAIHR5cGVkZWYgc3RydWN0IEV4dGVuc2lvbkNvbnRy b2xGaWxlCiAJCQkJCQkJCQkgKiBNT0RVTEVfUEFUSE5BTUUgKi8KIAljaGFyCSAgICpjb21tZW50 OwkJLyogY29tbWVudCwgaWYgYW55ICovCiAJY2hhcgkgICAqc2NoZW1hOwkJCS8qIHRhcmdldCBz Y2hlbWEgKGFsbG93ZWQgaWYgIXJlbG9jYXRhYmxlKSAqLworCWJvb2wJCW93bmVkX3NjaGVtYTsJ LyogaWYgdGhlIHNjaGVtYSBzaG91bGQgYmUgb3duZWQgYnkgdGhlCisJCQkJCQkJCSAqIGV4dGVu c2lvbiAqLwogCWJvb2wJCXJlbG9jYXRhYmxlOwkvKiBpcyBBTFRFUiBFWFRFTlNJT04gU0VUIFND SEVNQSBzdXBwb3J0ZWQ/ICovCiAJYm9vbAkJc3VwZXJ1c2VyOwkJLyogbXVzdCBiZSBzdXBlcnVz ZXIgdG8gaW5zdGFsbD8gKi8KIAlib29sCQl0cnVzdGVkOwkJLyogYWxsb3cgYmVjb21pbmcgc3Vw ZXJ1c2VyIG9uIHRoZSBmbHk/ICovCkBAIC03OTQsNiArNzk2LDE0IEBAIHBhcnNlX2V4dGVuc2lv bl9jb250cm9sX2ZpbGUoRXh0ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wsCiAJCXsKIAkJCWNv bnRyb2wtPnNjaGVtYSA9IHBzdHJkdXAoaXRlbS0+dmFsdWUpOwogCQl9CisJCWVsc2UgaWYgKHN0 cmNtcChpdGVtLT5uYW1lLCAib3duZWRfc2NoZW1hIikgPT0gMCkKKwkJeworCQkJaWYgKCFwYXJz ZV9ib29sKGl0ZW0tPnZhbHVlLCAmY29udHJvbC0+b3duZWRfc2NoZW1hKSkKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CisJCQkJCQkgZXJybXNnKCJwYXJhbWV0ZXIgXCIlc1wiIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1 ZSIsCisJCQkJCQkJCWl0ZW0tPm5hbWUpKSk7CisJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGl0ZW0t Pm5hbWUsICJyZWxvY2F0YWJsZSIpID09IDApCiAJCXsKIAkJCWlmICghcGFyc2VfYm9vbChpdGVt LT52YWx1ZSwgJmNvbnRyb2wtPnJlbG9jYXRhYmxlKSkKQEAgLTEyMzcsNiArMTI0Nyw0NCBAQCBl eHRlbnNpb25faXNfdHJ1c3RlZChFeHRlbnNpb25Db250cm9sRmlsZSAqY29udHJvbCkKIAlyZXR1 cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBFbmZvcmNlIHN1cGVydXNlciByZXF1aXJlbWVudHMgZm9y IGV4dGVuc2lvbiBvcGVyYXRpb25zLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQg c3dpdGNoIHRvIHN1cGVydXNlciBmb3IgdHJ1c3RlZCBleHRlbnNpb25zLgorICogVGhyb3dzIGFu IGVycm9yIGlmIHN1cGVydXNlciBpcyByZXF1aXJlZCBidXQgbm90IGF2YWlsYWJsZS4KKyAqCisg KiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBjaG9vc2luZyB0aGUg YXBwcm9wcmlhdGUKKyAqIGNvbnRyb2wgZmlsZSAoaW5jbHVkaW5nIGFueSBzZWNvbmRhcnkgY29u dHJvbCBmaWxlcyBmb3IgdXBkYXRlcykuCisgKi8KK3N0YXRpYyBib29sCitjaGVja19leHRlbnNp b25fc3VwZXJ1c2VyX3JlcXVpcmVtZW50cyhFeHRlbnNpb25Db250cm9sRmlsZSAqY29udHJvbCwK KwkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmZyb21fdmVyc2lvbikKK3sKKwlpZiAoY29udHJvbC0+ c3VwZXJ1c2VyICYmICFzdXBlcnVzZXIoKSkKKwl7CisJCWlmIChleHRlbnNpb25faXNfdHJ1c3Rl ZChjb250cm9sKSkKKwkJCXJldHVybiB0cnVlOworCQllbHNlIGlmIChmcm9tX3ZlcnNpb24gPT0g TlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJ RU5UX1BSSVZJTEVHRSksCisJCQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVuaWVkIHRvIGNyZWF0 ZSBleHRlbnNpb24gXCIlc1wiIiwKKwkJCQkJCQljb250cm9sLT5uYW1lKSwKKwkJCQkJIGNvbnRy b2wtPnRydXN0ZWQKKwkJCQkJID8gZXJyaGludCgiTXVzdCBoYXZlIENSRUFURSBwcml2aWxlZ2Ug b24gY3VycmVudCBkYXRhYmFzZSB0byBjcmVhdGUgdGhpcyBleHRlbnNpb24uIikKKwkJCQkJIDog ZXJyaGludCgiTXVzdCBiZSBzdXBlcnVzZXIgdG8gY3JlYXRlIHRoaXMgZXh0ZW5zaW9uLiIpKSk7 CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZG SUNJRU5UX1BSSVZJTEVHRSksCisJCQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVuaWVkIHRvIHVw ZGF0ZSBleHRlbnNpb24gXCIlc1wiIiwKKwkJCQkJCQljb250cm9sLT5uYW1lKSwKKwkJCQkJIGNv bnRyb2wtPnRydXN0ZWQKKwkJCQkJID8gZXJyaGludCgiTXVzdCBoYXZlIENSRUFURSBwcml2aWxl Z2Ugb24gY3VycmVudCBkYXRhYmFzZSB0byB1cGRhdGUgdGhpcyBleHRlbnNpb24uIikKKwkJCQkJ IDogZXJyaGludCgiTXVzdCBiZSBzdXBlcnVzZXIgdG8gdXBkYXRlIHRoaXMgZXh0ZW5zaW9uLiIp KSk7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICogRXhlY3V0ZSB0aGUgYXBwcm9w cmlhdGUgc2NyaXB0IGZpbGUgZm9yIGluc3RhbGxpbmcgb3IgdXBkYXRpbmcgdGhlIGV4dGVuc2lv bgogICoKQEAgLTEyNjUsMjcgKzEzMTMsNyBAQCBleGVjdXRlX2V4dGVuc2lvbl9zY3JpcHQoT2lk IGV4dGVuc2lvbk9pZCwgRXh0ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wsCiAJICogaGVyZSBz byB0aGF0IHRoZSBjb250cm9sIGZsYWdzIGFyZSBjb3JyZWN0bHkgYXNzb2NpYXRlZCB3aXRoIHRo ZSByaWdodAogCSAqIHNjcmlwdChzKSBpZiB0aGV5IGhhcHBlbiB0byBiZSBzZXQgaW4gc2Vjb25k YXJ5IGNvbnRyb2wgZmlsZXMuCiAJICovCi0JaWYgKGNvbnRyb2wtPnN1cGVydXNlciAmJiAhc3Vw ZXJ1c2VyKCkpCi0JewotCQlpZiAoZXh0ZW5zaW9uX2lzX3RydXN0ZWQoY29udHJvbCkpCi0JCQlz d2l0Y2hfdG9fc3VwZXJ1c2VyID0gdHJ1ZTsKLQkJZWxzZSBpZiAoZnJvbV92ZXJzaW9uID09IE5V TEwpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVO VF9QUklWSUxFR0UpLAotCQkJCQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZCB0byBjcmVhdGUg ZXh0ZW5zaW9uIFwiJXNcIiIsCi0JCQkJCQkJY29udHJvbC0+bmFtZSksCi0JCQkJCSBjb250cm9s LT50cnVzdGVkCi0JCQkJCSA/IGVycmhpbnQoIk11c3QgaGF2ZSBDUkVBVEUgcHJpdmlsZWdlIG9u IGN1cnJlbnQgZGF0YWJhc2UgdG8gY3JlYXRlIHRoaXMgZXh0ZW5zaW9uLiIpCi0JCQkJCSA6IGVy cmhpbnQoIk11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSB0aGlzIGV4dGVuc2lvbi4iKSkpOwot CQllbHNlCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklD SUVOVF9QUklWSUxFR0UpLAotCQkJCQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZCB0byB1cGRh dGUgZXh0ZW5zaW9uIFwiJXNcIiIsCi0JCQkJCQkJY29udHJvbC0+bmFtZSksCi0JCQkJCSBjb250 cm9sLT50cnVzdGVkCi0JCQkJCSA/IGVycmhpbnQoIk11c3QgaGF2ZSBDUkVBVEUgcHJpdmlsZWdl IG9uIGN1cnJlbnQgZGF0YWJhc2UgdG8gdXBkYXRlIHRoaXMgZXh0ZW5zaW9uLiIpCi0JCQkJCSA6 IGVycmhpbnQoIk11c3QgYmUgc3VwZXJ1c2VyIHRvIHVwZGF0ZSB0aGlzIGV4dGVuc2lvbi4iKSkp OwotCX0KKwlzd2l0Y2hfdG9fc3VwZXJ1c2VyID0gY2hlY2tfZXh0ZW5zaW9uX3N1cGVydXNlcl9y ZXF1aXJlbWVudHMoY29udHJvbCwgZnJvbV92ZXJzaW9uKTsKIAogCWZpbGVuYW1lID0gZ2V0X2V4 dGVuc2lvbl9zY3JpcHRfZmlsZW5hbWUoY29udHJvbCwgZnJvbV92ZXJzaW9uLCB2ZXJzaW9uKTsK IApAQCAtMTgyNCw2ICsxODUyLDE2OSBAQCBmaW5kX2luc3RhbGxfcGF0aChMaXN0ICpldmlfbGlz dCwgRXh0ZW5zaW9uVmVyc2lvbkluZm8gKmV2aV90YXJnZXQsCiAJcmV0dXJuIGV2aV9zdGFydDsK IH0KIAorLyoKKyAqIENyZWF0ZSBhIHNjaGVtYSB3aXRoIHRoZSBnaXZlbiBuYW1lLCBhcyBwYXJ0 IG9mIENSRUFURSBFWFRFTlNJT04uCisgKi8KK3N0YXRpYyBPaWQKK0NyZWF0ZVNjaGVtYUZvckV4 dGVuc2lvbihjaGFyICpzY2hlbWFOYW1lKQoreworCVBhcnNlU3RhdGUgKnBzdGF0ZSA9IG1ha2Vf cGFyc2VzdGF0ZShOVUxMKTsKKwlDcmVhdGVTY2hlbWFTdG10ICpjc3N0bXQgPSBtYWtlTm9kZShD cmVhdGVTY2hlbWFTdG10KTsKKworCXBzdGF0ZS0+cF9zb3VyY2V0ZXh0ID0gIihnZW5lcmF0ZWQg Q1JFQVRFIFNDSEVNQSBjb21tYW5kKSI7CisKKwljc3N0bXQtPnNjaGVtYW5hbWUgPSBzY2hlbWFO YW1lOworCWNzc3RtdC0+YXV0aHJvbGUgPSBOVUxMOwkvKiB3aWxsIGJlIGNyZWF0ZWQgYnkgY3Vy cmVudCB1c2VyICovCisJY3NzdG10LT5zY2hlbWFFbHRzID0gTklMOworCWNzc3RtdC0+aWZfbm90 X2V4aXN0cyA9IGZhbHNlOworCisJQ3JlYXRlU2NoZW1hQ29tbWFuZChwc3RhdGUsIGNzc3RtdCwg LTEsIC0xKTsKKworCS8qCisJICogQ3JlYXRlU2NoZW1hQ29tbWFuZCBpbmNsdWRlcyBDb21tYW5k Q291bnRlckluY3JlbWVudCwgc28gbmV3IHNjaGVtYSBpcworCSAqIG5vdyB2aXNpYmxlLgorCSAq LworCXJldHVybiBnZXRfbmFtZXNwYWNlX29pZChzY2hlbWFOYW1lLCBmYWxzZSk7Cit9CisKKy8q CisgKiBDcmVhdGUgYW4gb3duZWQgc2NoZW1hIHdpdGggdGhlIGdpdmVuIG5hbWUsIGFzIHBhcnQg b2YgQ1JFQVRFIEVYVEVOU0lPTi4KKyAqIEVycm9ycyBpZiB0aGUgc2NoZW1hIGFscmVhZHkgZXhp c3RzLgorICovCitzdGF0aWMgT2lkCitDcmVhdGVPd25lZFNjaGVtYUZvckV4dGVuc2lvbihjaGFy ICpzY2hlbWFOYW1lKQoreworCS8qCisJICogQW4gb3duZWQgc2NoZW1hIG11c3QgYmUgY3JlYXRl ZCBieSB0aGUgZXh0ZW5zaW9uLCBzbyBhIHByZS1leGlzdGluZworCSAqIHNjaGVtYSB3aXRoIHRo ZSBzYW1lIG5hbWUgaXMgYW4gZXJyb3IuCisJICovCisJT2lkCQkJc2NoZW1hT2lkID0gZ2V0X25h bWVzcGFjZV9vaWQoc2NoZW1hTmFtZSwgdHJ1ZSk7CisKKwlpZiAoT2lkSXNWYWxpZChzY2hlbWFP aWQpKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FU RV9TQ0hFTUEpLAorCQkJCSBlcnJtc2coInNjaGVtYSBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLAor CQkJCQkJc2NoZW1hTmFtZSksCisJCQkJIGVycmhpbnQoIkRyb3Agc2NoZW1hIFwiJXNcIiBvciBz cGVjaWZ5IGFub3RoZXIgc2NoZW1hIHVzaW5nIENSRUFURSBFWFRFTlNJT04gLi4uIFNDSEVNQSAu Li4iLCBzY2hlbWFOYW1lKSkpOworCX0KKworCXJldHVybiBDcmVhdGVTY2hlbWFGb3JFeHRlbnNp b24oc2NoZW1hTmFtZSk7Cit9CisKKy8qCisgKiBHZXRzIG9yIGNyZWF0ZXMgdGhlIHNjaGVtYSB0 aGFuIGFuIGV4dGVuc2lvbiBzaG91bGQgYmUgY3JlYXRlZCBpbi4KKyAqCisgKiBSZXR1cm5zIHRo ZSBPSUQgb2YgdGhlIHNjaGVtYSBhbmQgdXBkYXRlcyBzY2hlbWFOYW1lIHRvIHRoZSBuYW1lIG9m IHRoZSBzY2hlbWEuCisgKi8KK3N0YXRpYyBPaWQKK0dldE9yQ3JlYXRlU2NoZW1hRm9yRXh0ZW5z aW9uKGNoYXIgKipzY2hlbWFOYW1lLCBFeHRlbnNpb25Db250cm9sRmlsZSAqY29udHJvbCwgYm9v bCBjYXNjYWRlKQoreworCS8qCisJICogVGhlIHNpbXBsZXN0IGNhc2UgaXMgd2hlbiB0aGUgdXNl ciBwcm92aWRlcyBhIHNjaGVtYSBuYW1lLgorCSAqLworCWlmICgqc2NoZW1hTmFtZSkKKwl7CisJ CU9pZAkJCXNjaGVtYU9pZDsKKworCQlpZiAoIWNvbnRyb2wtPm93bmVkX3NjaGVtYSkKKwkJewor CQkJLyoKKwkJCSAqIEZvciBub24tb3duZWQgc2NoZW1hcywgdGhpcyBzY2hlbWEgbXVzdCBhbHJl YWR5IGV4aXN0LiBXZSB3YW50CisJCQkgKiB0byBjaGVjayB0aGlzIG5vdywgc28gaXQgZmFpbHMg ZXZlbiBpZiB3ZSBiYWlsIG91dCBvZiB0aGlzCisJCQkgKiBibG9jayBkdWUgdG8gdGhlIENBU0NB REUgbG9naWMuCisJCQkgKi8KKwkJCXNjaGVtYU9pZCA9IGdldF9uYW1lc3BhY2Vfb2lkKCpzY2hl bWFOYW1lLCBmYWxzZSk7CisJCX0KKworCQlpZiAoY29udHJvbC0+c2NoZW1hICYmIHN0cmNtcChj b250cm9sLT5zY2hlbWEsICpzY2hlbWFOYW1lKSAhPSAwKQorCQl7CisJCQkvKgorCQkJICogVGhl IGV4dGVuc2lvbiBpcyBub3QgcmVsb2NhdGFibGUgYW5kIHRoZSBhdXRob3IgZ2F2ZSB1cyBhCisJ CQkgKiBzY2hlbWEgZm9yIGl0LgorCQkJICoKKwkJCSAqIFVubGVzcyBDQVNDQURFIHBhcmFtZXRl ciB3YXMgZ2l2ZW4sIGl0J3MgYW4gZXJyb3IgdG8gZ2l2ZSBhCisJCQkgKiBzY2hlbWEgZGlmZmVy ZW50IGZyb20gY29udHJvbC0+c2NoZW1hIGlmIGNvbnRyb2wtPnNjaGVtYSBpcworCQkJICogc3Bl Y2lmaWVkLgorCQkJICovCisJCQlpZiAoIWNhc2NhZGUpCisJCQl7CisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ CSBlcnJtc2coImV4dGVuc2lvbiBcIiVzXCIgbXVzdCBiZSBpbnN0YWxsZWQgaW4gc2NoZW1hIFwi JXNcIiIsCisJCQkJCQkJCWNvbnRyb2wtPm5hbWUsCisJCQkJCQkJCWNvbnRyb2wtPnNjaGVtYSks CisJCQkJCQkgZXJyaGludCgiRG8gbm90IHNwZWNpZnkgU0NIRU1BIHdoZW4gcnVubmluZyBDUkVB VEUgRVhURU5TSU9OIGZvciBleHRlbnNpb24gXCIlc1wiIiwgY29udHJvbC0+bmFtZSkpKTsKKwkJ CX0KKworCQkJLyoKKwkJCSAqIElmIHRoZSBzY2hlbWEgbWlzbWF0Y2hlcyBhbmQgQ0FTQ0FERSB3 YXMgZ2l2ZW4sIHdlIHByZXRlbmQgdGhlCisJCQkgKiB1c2VyIGRpZCBub3Qgc3BlY2lmeSBhIHNj aGVtYSBhbmQgdXNlIHRoZSBub3JtYWwgbG9naWMgYmVsb3cgdG8KKwkJCSAqIGdldCBvciBjcmVh dGUgdGhlIHNjaGVtYSBmcm9tIHRoZSBjb250cm9sIGZpbGUuCisJCQkgKi8KKwkJfQorCQllbHNl IGlmIChjb250cm9sLT5vd25lZF9zY2hlbWEpCisJCXsKKwkJCXJldHVybiBDcmVhdGVPd25lZFNj aGVtYUZvckV4dGVuc2lvbigqc2NoZW1hTmFtZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlyZXR1 cm4gc2NoZW1hT2lkOworCQl9CisJfQorCisJaWYgKGNvbnRyb2wtPnNjaGVtYSkKKwl7CisJCU9p ZAkJCXNjaGVtYU9pZDsKKworCQkqc2NoZW1hTmFtZSA9IGNvbnRyb2wtPnNjaGVtYTsKKworCQlp ZiAoY29udHJvbC0+b3duZWRfc2NoZW1hKQorCQl7CisJCQlyZXR1cm4gQ3JlYXRlT3duZWRTY2hl bWFGb3JFeHRlbnNpb24oY29udHJvbC0+c2NoZW1hKTsKKwkJfQorCisJCS8qIEZpbmQgb3IgY3Jl YXRlIHRoZSBzY2hlbWEgaW4gY2FzZSBpdCBkb2VzIG5vdCBleGlzdC4gKi8KKwkJc2NoZW1hT2lk ID0gZ2V0X25hbWVzcGFjZV9vaWQoY29udHJvbC0+c2NoZW1hLCB0cnVlKTsKKwkJaWYgKE9pZElz VmFsaWQoc2NoZW1hT2lkKSkKKwkJeworCQkJcmV0dXJuIHNjaGVtYU9pZDsKKwkJfQorCQlyZXR1 cm4gQ3JlYXRlU2NoZW1hRm9yRXh0ZW5zaW9uKGNvbnRyb2wtPnNjaGVtYSk7CisJfQorCisJaWYg KGNvbnRyb2wtPm93bmVkX3NjaGVtYSkKKwl7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9VTkRFRklORURfU0NIRU1BKSwKKwkJCQkgZXJybXNnKCJubyBzY2hlbWEgaGFz IGJlZW4gc2VsZWN0ZWQgdG8gY3JlYXRlIGluIikpKTsKKwl9CisKKwl7CisJCS8qCisJCSAqIE5l aXRoZXIgdXNlciBub3IgYXV0aG9yIG9mIHRoZSBleHRlbnNpb24gc3BlY2lmaWVkIHNjaGVtYTsg dXNlIHRoZQorCQkgKiBjdXJyZW50IGRlZmF1bHQgY3JlYXRpb24gbmFtZXNwYWNlLCB3aGljaCBp cyB0aGUgZmlyc3QgZXhwbGljaXQKKwkJICogZW50cnkgaW4gdGhlIHNlYXJjaF9wYXRoLgorCQkg Ki8KKwkJTGlzdAkgICAqc2VhcmNoX3BhdGggPSBmZXRjaF9zZWFyY2hfcGF0aChmYWxzZSk7CisJ CU9pZAkJCXNjaGVtYU9pZDsKKworCQlpZiAoc2VhcmNoX3BhdGggPT0gTklMKSAvKiBub3RoaW5n IHZhbGlkIGluIHNlYXJjaF9wYXRoPyAqLworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9VTkRFRklORURfU0NIRU1BKSwKKwkJCQkJIGVycm1zZygibm8gc2NoZW1hIGhh cyBiZWVuIHNlbGVjdGVkIHRvIGNyZWF0ZSBpbiIpKSk7CisJCXNjaGVtYU9pZCA9IGxpbml0aWFs X29pZChzZWFyY2hfcGF0aCk7CisJCSpzY2hlbWFOYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKHNj aGVtYU9pZCk7CisJCWlmICgqc2NoZW1hTmFtZSA9PSBOVUxMKQkvKiByZWNlbnRseS1kZWxldGVk IG5hbWVzcGFjZT8gKi8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf VU5ERUZJTkVEX1NDSEVNQSksCisJCQkJCSBlcnJtc2coIm5vIHNjaGVtYSBoYXMgYmVlbiBzZWxl Y3RlZCB0byBjcmVhdGUgaW4iKSkpOworCisJCWxpc3RfZnJlZShzZWFyY2hfcGF0aCk7CisJCXJl dHVybiBzY2hlbWFPaWQ7CisJfQorfQorCiAvKgogICogQ1JFQVRFIEVYVEVOU0lPTiB3b3JrZXIK ICAqCkBAIC0xODUzLDYgKzIwNDQsOSBAQCBDcmVhdGVFeHRlbnNpb25JbnRlcm5hbChjaGFyICpl eHRlbnNpb25OYW1lLAogCU9pZAkJCWV4dGVuc2lvbk9pZDsKIAlPYmplY3RBZGRyZXNzIGFkZHJl c3M7CiAJTGlzdENlbGwgICAqbGM7CisJYm9vbAkJc3dpdGNoX3RvX3N1cGVydXNlciA9IGZhbHNl OworCU9pZAkJCXNhdmVfdXNlcmlkID0gMDsKKwlpbnQJCQlzYXZlX3NlY19jb250ZXh0ID0gMDsK IAogCS8qCiAJICogUmVhZCB0aGUgcHJpbWFyeSBjb250cm9sIGZpbGUuICBOb3RlIHdlIGFzc3Vt ZSB0aGF0IGl0IGRvZXMgbm90IGNvbnRhaW4KQEAgLTE5MjEsODAgKzIxMTUsMjUgQEAgQ3JlYXRl RXh0ZW5zaW9uSW50ZXJuYWwoY2hhciAqZXh0ZW5zaW9uTmFtZSwKIAljb250cm9sID0gcmVhZF9l eHRlbnNpb25fYXV4X2NvbnRyb2xfZmlsZShwY29udHJvbCwgdmVyc2lvbk5hbWUpOwogCiAJLyoK LQkgKiBEZXRlcm1pbmUgdGhlIHRhcmdldCBzY2hlbWEgdG8gaW5zdGFsbCB0aGUgZXh0ZW5zaW9u IGludG8KKwkgKiBGb3IgdHJ1c3RlZCBleHRlbnNpb25zIHdpdGggb3duZWQgc2NoZW1hcywgd2Ug bmVlZCB0byBjcmVhdGUgdGhlIHNjaGVtYQorCSAqIGFzIHN1cGVydXNlciB0byBlbnN1cmUgcHJv cGVyIG93bmVyc2hpcC4KIAkgKi8KLQlpZiAoc2NoZW1hTmFtZSkKKwlpZiAoY29udHJvbC0+b3du ZWRfc2NoZW1hKQogCXsKLQkJLyogSWYgdGhlIHVzZXIgaXMgZ2l2aW5nIHVzIHRoZSBzY2hlbWEg bmFtZSwgaXQgbXVzdCBleGlzdCBhbHJlYWR5LiAqLwotCQlzY2hlbWFPaWQgPSBnZXRfbmFtZXNw YWNlX29pZChzY2hlbWFOYW1lLCBmYWxzZSk7Ci0JfQotCi0JaWYgKGNvbnRyb2wtPnNjaGVtYSAh PSBOVUxMKQotCXsKLQkJLyoKLQkJICogVGhlIGV4dGVuc2lvbiBpcyBub3QgcmVsb2NhdGFibGUg YW5kIHRoZSBhdXRob3IgZ2F2ZSB1cyBhIHNjaGVtYQotCQkgKiBmb3IgaXQuCi0JCSAqCi0JCSAq IFVubGVzcyBDQVNDQURFIHBhcmFtZXRlciB3YXMgZ2l2ZW4sIGl0J3MgYW4gZXJyb3IgdG8gZ2l2 ZSBhIHNjaGVtYQotCQkgKiBkaWZmZXJlbnQgZnJvbSBjb250cm9sLT5zY2hlbWEgaWYgY29udHJv bC0+c2NoZW1hIGlzIHNwZWNpZmllZC4KLQkJICovCi0JCWlmIChzY2hlbWFOYW1lICYmIHN0cmNt cChjb250cm9sLT5zY2hlbWEsIHNjaGVtYU5hbWUpICE9IDAgJiYKLQkJCSFjYXNjYWRlKQotCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAotCQkJCQkgZXJybXNnKCJleHRlbnNpb24gXCIlc1wiIG11c3QgYmUgaW5zdGFsbGVkIGlu IHNjaGVtYSBcIiVzXCIiLAotCQkJCQkJCWNvbnRyb2wtPm5hbWUsCi0JCQkJCQkJY29udHJvbC0+ c2NoZW1hKSkpOwotCi0JCS8qIEFsd2F5cyB1c2UgdGhlIHNjaGVtYSBmcm9tIGNvbnRyb2wgZmls ZSBmb3IgY3VycmVudCBleHRlbnNpb24uICovCi0JCXNjaGVtYU5hbWUgPSBjb250cm9sLT5zY2hl bWE7Ci0KLQkJLyogRmluZCBvciBjcmVhdGUgdGhlIHNjaGVtYSBpbiBjYXNlIGl0IGRvZXMgbm90 IGV4aXN0LiAqLwotCQlzY2hlbWFPaWQgPSBnZXRfbmFtZXNwYWNlX29pZChzY2hlbWFOYW1lLCB0 cnVlKTsKLQotCQlpZiAoIU9pZElzVmFsaWQoc2NoZW1hT2lkKSkKKwkJc3dpdGNoX3RvX3N1cGVy dXNlciA9IGNoZWNrX2V4dGVuc2lvbl9zdXBlcnVzZXJfcmVxdWlyZW1lbnRzKGNvbnRyb2wsIE5V TEwpOworCQlpZiAoc3dpdGNoX3RvX3N1cGVydXNlcikKIAkJewotCQkJUGFyc2VTdGF0ZSAqcHN0 YXRlID0gbWFrZV9wYXJzZXN0YXRlKE5VTEwpOwotCQkJQ3JlYXRlU2NoZW1hU3RtdCAqY3NzdG10 ID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hU3RtdCk7Ci0KLQkJCXBzdGF0ZS0+cF9zb3VyY2V0ZXh0 ID0gIihnZW5lcmF0ZWQgQ1JFQVRFIFNDSEVNQSBjb21tYW5kKSI7Ci0KLQkJCWNzc3RtdC0+c2No ZW1hbmFtZSA9IHNjaGVtYU5hbWU7Ci0JCQljc3N0bXQtPmF1dGhyb2xlID0gTlVMTDsJLyogd2ls bCBiZSBjcmVhdGVkIGJ5IGN1cnJlbnQgdXNlciAqLwotCQkJY3NzdG10LT5zY2hlbWFFbHRzID0g TklMOwotCQkJY3NzdG10LT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7Ci0KLQkJCUNyZWF0ZVNjaGVt YUNvbW1hbmQocHN0YXRlLCBjc3N0bXQsIC0xLCAtMSk7Ci0KLQkJCS8qCi0JCQkgKiBDcmVhdGVT Y2hlbWFDb21tYW5kIGluY2x1ZGVzIENvbW1hbmRDb3VudGVySW5jcmVtZW50LCBzbyBuZXcKLQkJ CSAqIHNjaGVtYSBpcyBub3cgdmlzaWJsZS4KLQkJCSAqLwotCQkJc2NoZW1hT2lkID0gZ2V0X25h bWVzcGFjZV9vaWQoc2NoZW1hTmFtZSwgZmFsc2UpOworCQkJR2V0VXNlcklkQW5kU2VjQ29udGV4 dCgmc2F2ZV91c2VyaWQsICZzYXZlX3NlY19jb250ZXh0KTsKKwkJCVNldFVzZXJJZEFuZFNlY0Nv bnRleHQoQk9PVFNUUkFQX1NVUEVSVVNFUklELAorCQkJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0 IHwgU0VDVVJJVFlfTE9DQUxfVVNFUklEX0NIQU5HRSk7CiAJCX0KIAl9Ci0JZWxzZSBpZiAoIU9p ZElzVmFsaWQoc2NoZW1hT2lkKSkKLQl7Ci0JCS8qCi0JCSAqIE5laXRoZXIgdXNlciBub3IgYXV0 aG9yIG9mIHRoZSBleHRlbnNpb24gc3BlY2lmaWVkIHNjaGVtYTsgdXNlIHRoZQotCQkgKiBjdXJy ZW50IGRlZmF1bHQgY3JlYXRpb24gbmFtZXNwYWNlLCB3aGljaCBpcyB0aGUgZmlyc3QgZXhwbGlj aXQKLQkJICogZW50cnkgaW4gdGhlIHNlYXJjaF9wYXRoLgotCQkgKi8KLQkJTGlzdAkgICAqc2Vh cmNoX3BhdGggPSBmZXRjaF9zZWFyY2hfcGF0aChmYWxzZSk7CiAKLQkJaWYgKHNlYXJjaF9wYXRo ID09IE5JTCkgLyogbm90aGluZyB2YWxpZCBpbiBzZWFyY2hfcGF0aD8gKi8KLQkJCWVyZXBvcnQo RVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1NDSEVNQSksCi0JCQkJCSBl cnJtc2coIm5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCB0byBjcmVhdGUgaW4iKSkpOwotCQlz Y2hlbWFPaWQgPSBsaW5pdGlhbF9vaWQoc2VhcmNoX3BhdGgpOwotCQlzY2hlbWFOYW1lID0gZ2V0 X25hbWVzcGFjZV9uYW1lKHNjaGVtYU9pZCk7Ci0JCWlmIChzY2hlbWFOYW1lID09IE5VTEwpIC8q IHJlY2VudGx5LWRlbGV0ZWQgbmFtZXNwYWNlPyAqLwotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfU0NIRU1BKSwKLQkJCQkJIGVycm1zZygibm8gc2No ZW1hIGhhcyBiZWVuIHNlbGVjdGVkIHRvIGNyZWF0ZSBpbiIpKSk7CisJc2NoZW1hT2lkID0gR2V0 T3JDcmVhdGVTY2hlbWFGb3JFeHRlbnNpb24oJnNjaGVtYU5hbWUsIGNvbnRyb2wsIGNhc2NhZGUp OwogCi0JCWxpc3RfZnJlZShzZWFyY2hfcGF0aCk7Ci0JfQorCS8qIFJlc3RvcmUgYXV0aGVudGlj YXRpb24gc3RhdGUgYWZ0ZXIgc2NoZW1hIGNyZWF0aW9uIGlmIG5lZWRlZCAqLworCWlmIChzd2l0 Y2hfdG9fc3VwZXJ1c2VyKQorCQlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBz YXZlX3NlY19jb250ZXh0KTsKIAogCS8qCiAJICogTWFrZSBub3RlIGlmIGEgdGVtcG9yYXJ5IG5h bWVzcGFjZSBoYXMgYmVlbiBhY2Nlc3NlZCBpbiB0aGlzCkBAIC0yMDQwLDYgKzIxNzksNyBAQCBD cmVhdGVFeHRlbnNpb25JbnRlcm5hbChjaGFyICpleHRlbnNpb25OYW1lLAogCSAqLwogCWFkZHJl c3MgPSBJbnNlcnRFeHRlbnNpb25UdXBsZShjb250cm9sLT5uYW1lLCBleHRvd25lciwKIAkJCQkJ CQkJICAgc2NoZW1hT2lkLCBjb250cm9sLT5yZWxvY2F0YWJsZSwKKwkJCQkJCQkJICAgY29udHJv bC0+b3duZWRfc2NoZW1hLAogCQkJCQkJCQkgICB2ZXJzaW9uTmFtZSwKIAkJCQkJCQkJICAgUG9p bnRlckdldERhdHVtKE5VTEwpLAogCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oTlVMTCksCkBA IC0yMjQ1LDcgKzIzODUsOCBAQCBDcmVhdGVFeHRlbnNpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBD cmVhdGVFeHRlbnNpb25TdG10ICpzdG10KQogICovCiBPYmplY3RBZGRyZXNzCiBJbnNlcnRFeHRl bnNpb25UdXBsZShjb25zdCBjaGFyICpleHROYW1lLCBPaWQgZXh0T3duZXIsCi0JCQkJCSBPaWQg c2NoZW1hT2lkLCBib29sIHJlbG9jYXRhYmxlLCBjb25zdCBjaGFyICpleHRWZXJzaW9uLAorCQkJ CQkgT2lkIHNjaGVtYU9pZCwgYm9vbCByZWxvY2F0YWJsZSwgYm9vbCBvd25lZFNjaGVtYSwKKwkJ CQkJIGNvbnN0IGNoYXIgKmV4dFZlcnNpb24sCiAJCQkJCSBEYXR1bSBleHRDb25maWcsIERhdHVt IGV4dENvbmRpdGlvbiwKIAkJCQkJIExpc3QgKnJlcXVpcmVkRXh0ZW5zaW9ucykKIHsKQEAgLTIy NzUsNiArMjQxNiw3IEBAIEluc2VydEV4dGVuc2lvblR1cGxlKGNvbnN0IGNoYXIgKmV4dE5hbWUs IE9pZCBleHRPd25lciwKIAl2YWx1ZXNbQW51bV9wZ19leHRlbnNpb25fZXh0b3duZXIgLSAxXSA9 IE9iamVjdElkR2V0RGF0dW0oZXh0T3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX2V4dGVuc2lvbl9l eHRuYW1lc3BhY2UgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oc2NoZW1hT2lkKTsKIAl2YWx1ZXNb QW51bV9wZ19leHRlbnNpb25fZXh0cmVsb2NhdGFibGUgLSAxXSA9IEJvb2xHZXREYXR1bShyZWxv Y2F0YWJsZSk7CisJdmFsdWVzW0FudW1fcGdfZXh0ZW5zaW9uX2V4dG93bmVkc2NoZW1hIC0gMV0g PSBCb29sR2V0RGF0dW0ob3duZWRTY2hlbWEpOwogCXZhbHVlc1tBbnVtX3BnX2V4dGVuc2lvbl9l eHR2ZXJzaW9uIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGV4dFZlcnNpb24pOwogCiAJaWYg KGV4dENvbmZpZyA9PSBQb2ludGVyR2V0RGF0dW0oTlVMTCkpCkBAIC0yMzE5LDYgKzI0NjEsMTcg QEAgSW5zZXJ0RXh0ZW5zaW9uVHVwbGUoY29uc3QgY2hhciAqZXh0TmFtZSwgT2lkIGV4dE93bmVy LAogCXJlY29yZF9vYmplY3RfYWRkcmVzc19kZXBlbmRlbmNpZXMoJm15c2VsZiwgcmVmb2Jqcywg REVQRU5ERU5DWV9OT1JNQUwpOwogCWZyZWVfb2JqZWN0X2FkZHJlc3NlcyhyZWZvYmpzKTsKIAor CWlmIChvd25lZFNjaGVtYSkKKwl7CisJCU9iamVjdEFkZHJlc3Mgc2NoZW1hQWRkcmVzcyA9IHsK KwkJCS5jbGFzc0lkID0gTmFtZXNwYWNlUmVsYXRpb25JZCwKKwkJCS5vYmplY3RJZCA9IHNjaGVt YU9pZCwKKwkJfTsKKworCQlyZWNvcmREZXBlbmRlbmN5T24oJnNjaGVtYUFkZHJlc3MsICZteXNl bGYsIERFUEVOREVOQ1lfRVhURU5TSU9OKTsKKwl9CisKKwogCS8qIFBvc3QgY3JlYXRpb24gaG9v ayBmb3IgbmV3IGV4dGVuc2lvbiAqLwogCUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKEV4dGVu c2lvblJlbGF0aW9uSWQsIGV4dGVuc2lvbk9pZCwgMCk7CiAKQEAgLTMyNTMsMTIgKzM0MDYsMTYg QEAgZXh0ZW5zaW9uX2NvbmZpZ19yZW1vdmUoT2lkIGV4dGVuc2lvbm9pZCwgT2lkIHRhYmxlb2lk KQogCiAvKgogICogRXhlY3V0ZSBBTFRFUiBFWFRFTlNJT04gU0VUIFNDSEVNQQorICoKKyAqIEZv ciBvd25lZCBzY2hlbWFzLCB0aGlzIGJvaWxzIGRvd24gdG8gY2hhbmdpbmcgdGhlIG5hbWUgb2Yg aXRzIHNjaGVtYS4gRm9yCisgKiBub24tb3duZWQgc2NoZW1hcyB0aGlzIHJlcXVpcmVzIG1vdmlu ZyBhbGwgdGhlIG1lbWJlciBvYmplY3RzIGludG8gdGhlIG5ldworICogc2NoZW1hLgogICovCiBP YmplY3RBZGRyZXNzCiBBbHRlckV4dGVuc2lvbk5hbWVzcGFjZShjb25zdCBjaGFyICpleHRlbnNp b25OYW1lLCBjb25zdCBjaGFyICpuZXdzY2hlbWEsIE9pZCAqb2xkc2NoZW1hKQogewogCU9pZAkJ CWV4dGVuc2lvbk9pZDsKLQlPaWQJCQluc3BPaWQ7CisJT2lkCQkJbnNwT2lkID0gSW52YWxpZE9p ZDsKIAlPaWQJCQlvbGROc3BPaWQ7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAlSZWxhdGlvbgll eHRSZWw7CkBAIC0zMjcxLDExICszNDI4LDEwIEBAIEFsdGVyRXh0ZW5zaW9uTmFtZXNwYWNlKGNv bnN0IGNoYXIgKmV4dGVuc2lvbk5hbWUsIGNvbnN0IGNoYXIgKm5ld3NjaGVtYSwgT2lkICpvCiAJ SGVhcFR1cGxlCWRlcFR1cDsKIAlPYmplY3RBZGRyZXNzZXMgKm9ianNNb3ZlZDsKIAlPYmplY3RB ZGRyZXNzIGV4dEFkZHI7CisJYm9vbAkJb3duZWRTY2hlbWE7CiAKIAlleHRlbnNpb25PaWQgPSBn ZXRfZXh0ZW5zaW9uX29pZChleHRlbnNpb25OYW1lLCBmYWxzZSk7CiAKLQluc3BPaWQgPSBMb29r dXBDcmVhdGlvbk5hbWVzcGFjZShuZXdzY2hlbWEpOwotCiAJLyoKIAkgKiBQZXJtaXNzaW9uIGNo ZWNrOiBtdXN0IG93biBleHRlbnNpb24uICBOb3RlIHRoYXQgd2UgZG9uJ3QgYm90aGVyIHRvCiAJ ICogY2hlY2sgb3duZXJzaGlwIG9mIHRoZSBpbmRpdmlkdWFsIG1lbWJlciBvYmplY3RzIC4uLgpA QCAtMzI4NCwyMiArMzQ0MCw2IEBAIEFsdGVyRXh0ZW5zaW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIg KmV4dGVuc2lvbk5hbWUsIGNvbnN0IGNoYXIgKm5ld3NjaGVtYSwgT2lkICpvCiAJCWFjbGNoZWNr X2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgT0JKRUNUX0VYVEVOU0lPTiwKIAkJCQkJICAgZXh0 ZW5zaW9uTmFtZSk7CiAKLQkvKiBQZXJtaXNzaW9uIGNoZWNrOiBtdXN0IGhhdmUgY3JlYXRpb24g cmlnaHRzIGluIHRhcmdldCBuYW1lc3BhY2UgKi8KLQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hl Y2soTmFtZXNwYWNlUmVsYXRpb25JZCwgbnNwT2lkLCBHZXRVc2VySWQoKSwgQUNMX0NSRUFURSk7 Ci0JaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKLQkJYWNsY2hlY2tfZXJyb3IoYWNscmVz dWx0LCBPQkpFQ1RfU0NIRU1BLCBuZXdzY2hlbWEpOwotCi0JLyoKLQkgKiBJZiB0aGUgc2NoZW1h IGlzIGN1cnJlbnRseSBhIG1lbWJlciBvZiB0aGUgZXh0ZW5zaW9uLCBkaXNhbGxvdyBtb3ZpbmcK LQkgKiB0aGUgZXh0ZW5zaW9uIGludG8gdGhlIHNjaGVtYS4gIFRoYXQgd291bGQgY3JlYXRlIGEg ZGVwZW5kZW5jeSBsb29wLgotCSAqLwotCWlmIChnZXRFeHRlbnNpb25PZk9iamVjdChOYW1lc3Bh Y2VSZWxhdGlvbklkLCBuc3BPaWQpID09IGV4dGVuc2lvbk9pZCkKLQkJZXJlcG9ydChFUlJPUiwK LQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK LQkJCQkgZXJybXNnKCJjYW5ub3QgbW92ZSBleHRlbnNpb24gXCIlc1wiIGludG8gc2NoZW1hIFwi JXNcIiAiCi0JCQkJCQkiYmVjYXVzZSB0aGUgZXh0ZW5zaW9uIGNvbnRhaW5zIHRoZSBzY2hlbWEi LAotCQkJCQkJZXh0ZW5zaW9uTmFtZSwgbmV3c2NoZW1hKSkpOwotCiAJLyogTG9jYXRlIHRoZSBw Z19leHRlbnNpb24gdHVwbGUgKi8KIAlleHRSZWwgPSB0YWJsZV9vcGVuKEV4dGVuc2lvblJlbGF0 aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCkBAIC0zMzIzLDE0ICszNDYzLDU2IEBAIEFsdGVy RXh0ZW5zaW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKmV4dGVuc2lvbk5hbWUsIGNvbnN0IGNoYXIg Km5ld3NjaGVtYSwgT2lkICpvCiAKIAlzeXN0YWJsZV9lbmRzY2FuKGV4dFNjYW4pOwogCisJb3du ZWRTY2hlbWEgPSBleHRGb3JtLT5leHRvd25lZHNjaGVtYTsKKwogCS8qCi0JICogSWYgdGhlIGV4 dGVuc2lvbiBpcyBhbHJlYWR5IGluIHRoZSB0YXJnZXQgc2NoZW1hLCBqdXN0IHNpbGVudGx5IGRv Ci0JICogbm90aGluZy4KKwkgKiBGb3Igbm9uLW93bmVkIHNjaGVtYXMsIHdlIHNob3VsZCBub3cg ZXZhbHVhdGUgaWYgdGhlIHRhcmdldCBzY2hlbWEgaXMgYQorCSAqIHZhbGlkIHRhcmdldC4gRm9y IG93bmVkIHNjaGVtYXMsIG5vIHN1Y2ggY2hlY2tzIGFyZSBuZWVkZWQsIGJlY2F1c2UKKwkgKiB3 ZSdsbCBzaW1wbHkgcmVuYW1lIHRoZSBleGlzdGluZyBzY2hlbWEuCiAJICovCi0JaWYgKGV4dEZv cm0tPmV4dG5hbWVzcGFjZSA9PSBuc3BPaWQpCisJaWYgKCFvd25lZFNjaGVtYSkKIAl7Ci0JCXRh YmxlX2Nsb3NlKGV4dFJlbCwgUm93RXhjbHVzaXZlTG9jayk7Ci0JCXJldHVybiBJbnZhbGlkT2Jq ZWN0QWRkcmVzczsKKwkJbnNwT2lkID0gTG9va3VwQ3JlYXRpb25OYW1lc3BhY2UobmV3c2NoZW1h KTsKKworCQkvKiBQZXJtaXNzaW9uIGNoZWNrOiBtdXN0IGhhdmUgY3JlYXRpb24gcmlnaHRzIGlu IHRhcmdldCBuYW1lc3BhY2UgKi8KKwkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKE5hbWVz cGFjZVJlbGF0aW9uSWQsIG5zcE9pZCwgR2V0VXNlcklkKCksIEFDTF9DUkVBVEUpOworCQlpZiAo YWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBP QkpFQ1RfU0NIRU1BLCBuZXdzY2hlbWEpOworCisJCS8qCisJCSAqIElmIHRoZSBzY2hlbWEgaXMg Y3VycmVudGx5IGEgbWVtYmVyIG9mIHRoZSBleHRlbnNpb24sIGRpc2FsbG93CisJCSAqIG1vdmlu ZyB0aGUgZXh0ZW5zaW9uIGludG8gdGhlIHNjaGVtYS4gIFRoYXQgd291bGQgY3JlYXRlIGEKKwkJ ICogZGVwZW5kZW5jeSBsb29wLgorCQkgKi8KKwkJaWYgKGdldEV4dGVuc2lvbk9mT2JqZWN0KE5h bWVzcGFjZVJlbGF0aW9uSWQsIG5zcE9pZCkgPT0gZXh0ZW5zaW9uT2lkKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCisJCQkJCSBlcnJtc2coImNhbm5vdCBtb3ZlIGV4dGVuc2lvbiBcIiVzXCIgaW50byBz Y2hlbWEgXCIlc1wiICIKKwkJCQkJCQkiYmVjYXVzZSB0aGUgZXh0ZW5zaW9uIGNvbnRhaW5zIHRo ZSBzY2hlbWEiLAorCQkJCQkJCWV4dGVuc2lvbk5hbWUsIG5ld3NjaGVtYSkpKTsKKworCQkvKgor CQkgKiBJZiB0aGUgZXh0ZW5zaW9uIGlzIGFscmVhZHkgaW4gdGhlIHRhcmdldCBzY2hlbWEsIGp1 c3Qgc2lsZW50bHkgZG8KKwkJICogbm90aGluZy4KKwkJICovCisJCWlmIChleHRGb3JtLT5leHRu YW1lc3BhY2UgPT0gbnNwT2lkKQorCQl7CisJCQl0YWJsZV9jbG9zZShleHRSZWwsIFJvd0V4Y2x1 c2l2ZUxvY2spOworCQkJcmV0dXJuIEludmFsaWRPYmplY3RBZGRyZXNzOworCQl9CisJfQorCWVs c2UKKwl7CisJCS8qCisJCSAqIElmIHRoZSBvd25lZCBzY2hlbWEgYWxyZWFkeSBoYXMgdGhlIHRh cmdldCBuYW1lLCBqdXN0IHNpbGVudGx5IGRvCisJCSAqIG5vdGhpbmcuIFdlIGNhbm5vdCBjb21w YXJlIG5hbWVzcGFjZSBPSURzIGxpa2UgdGhlIG5vbi1vd25lZCBjYXNlCisJCSAqIGRvZXMsIGJl Y2F1c2UgcmVuYW1pbmcgbWVhbnMgdGhlIHRhcmdldCBzY2hlbWEgZG9lc24ndCBleGlzdCB5ZXQu CisJCSAqLworCQlpZiAoc3RyY21wKGdldF9uYW1lc3BhY2VfbmFtZShleHRGb3JtLT5leHRuYW1l c3BhY2UpLCBuZXdzY2hlbWEpID09IDApCisJCXsKKwkJCXRhYmxlX2Nsb3NlKGV4dFJlbCwgUm93 RXhjbHVzaXZlTG9jayk7CisJCQlyZXR1cm4gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJCX0KIAl9 CiAKIAkvKiBDaGVjayBleHRlbnNpb24gaXMgc3VwcG9zZWQgdG8gYmUgcmVsb2NhdGFibGUgKi8K QEAgLTM0MDMsNiArMzU4NSwxMyBAQCBBbHRlckV4dGVuc2lvbk5hbWVzcGFjZShjb25zdCBjaGFy ICpleHRlbnNpb25OYW1lLCBjb25zdCBjaGFyICpuZXdzY2hlbWEsIE9pZCAqbwogCQkJfQogCQl9 CiAKKwkJLyoKKwkJICogV2UgZG9uJ3QgYWN0dWFsbHkgbW92ZSBhbnkgb2JqZWN0cyBmb3Igb3du ZWQgc2NoZW1hcyBiZWNhdXNlIHdlCisJCSAqIHNpbXBseSByZW5hbWUgdGhlIHNjaGVtYSB0aGF0 IHRoZXNlIG9iamVjdHMgYXJlIGFscmVhZHkgaW4uCisJCSAqLworCQlpZiAob3duZWRTY2hlbWEp CisJCQljb250aW51ZTsKKwogCQkvKgogCQkgKiBPdGhlcndpc2UsIGlnbm9yZSBub24tbWVtYmVy c2hpcCBkZXBlbmRlbmNpZXMuICAoQ3VycmVudGx5LCB0aGUKIAkJICogb25seSBvdGhlciBjYXNl IHdlIGNvdWxkIHNlZSBoZXJlIGlzIGEgbm9ybWFsIGRlcGVuZGVuY3kgZnJvbQpAQCAtMzQ0Niwx OCArMzYzNSwzNSBAQCBBbHRlckV4dGVuc2lvbk5hbWVzcGFjZShjb25zdCBjaGFyICpleHRlbnNp b25OYW1lLCBjb25zdCBjaGFyICpuZXdzY2hlbWEsIE9pZCAqbwogCiAJcmVsYXRpb25fY2xvc2Uo ZGVwUmVsLCBBY2Nlc3NTaGFyZUxvY2spOwogCi0JLyogTm93IGFkanVzdCBwZ19leHRlbnNpb24u ZXh0bmFtZXNwYWNlICovCi0JZXh0Rm9ybS0+ZXh0bmFtZXNwYWNlID0gbnNwT2lkOworCS8qIE5v dyBhY3R1YWxseSB1cGRhdGUgdGhlIHNjaGVtYSBvZiB0aGUgZXh0ZW5zaW9uLiAqLworCWlmIChv d25lZFNjaGVtYSkKKwl7CisJCS8qCisJCSAqIEZvciBvd25lZCBzY2hlbWFzLCB3ZSBzaW1wbHkg cmVuYW1lIHRoZSBzY2hlbWEuIFRoaXMgbWVhbnMgdGhhdCB3ZQorCQkgKiBkb24ndCBuZWVkIHRv IHVwZGF0ZSB0aGUgZXh0ZW5zaW9uIGl0cyBjYXRhbG9nIGVudHJ5LCBiZWNhdXNlIHRoZQorCQkg KiBvaWQgb2YgdGhlIHNjaGVtYSB3aWxsIHN0YXkgdGhlIHNhbWUuCisJCSAqLworCQlSZW5hbWVT Y2hlbWEoZ2V0X25hbWVzcGFjZV9uYW1lKG9sZE5zcE9pZCksIG5ld3NjaGVtYSk7CisJCXRhYmxl X2Nsb3NlKGV4dFJlbCwgUm93RXhjbHVzaXZlTG9jayk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJ CSAqIEZvciBub24tb3duZWQgc2NoZW1hcywgd2Ugbm93IGhhdmUgdG8gdXBkYXRlIHRoZSBleHRl bnNpb24ncyBzY2hlbWEKKwkJICogZW50cnksIGFuZCBhbHNvIHVwZGF0ZSB0aGUgZGVwZW5kZW5j aWVzLgorCQkgKi8KKwkJZXh0Rm9ybS0+ZXh0bmFtZXNwYWNlID0gbnNwT2lkOwogCi0JQ2F0YWxv Z1R1cGxlVXBkYXRlKGV4dFJlbCwgJmV4dFR1cC0+dF9zZWxmLCBleHRUdXApOworCQlDYXRhbG9n VHVwbGVVcGRhdGUoZXh0UmVsLCAmZXh0VHVwLT50X3NlbGYsIGV4dFR1cCk7CiAKLQl0YWJsZV9j bG9zZShleHRSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCQl0YWJsZV9jbG9zZShleHRSZWwsIFJv d0V4Y2x1c2l2ZUxvY2spOwogCi0JLyogdXBkYXRlIGRlcGVuZGVuY3kgdG8gcG9pbnQgdG8gdGhl IG5ldyBzY2hlbWEgKi8KLQlpZiAoY2hhbmdlRGVwZW5kZW5jeUZvcihFeHRlbnNpb25SZWxhdGlv bklkLCBleHRlbnNpb25PaWQsCi0JCQkJCQkJTmFtZXNwYWNlUmVsYXRpb25JZCwgb2xkTnNwT2lk LCBuc3BPaWQpICE9IDEpCi0JCWVsb2coRVJST1IsICJjb3VsZCBub3QgY2hhbmdlIHNjaGVtYSBk ZXBlbmRlbmN5IGZvciBleHRlbnNpb24gJXMiLAotCQkJIE5hbWVTdHIoZXh0Rm9ybS0+ZXh0bmFt ZSkpOworCQkvKiB1cGRhdGUgZGVwZW5kZW5jeSB0byBwb2ludCB0byB0aGUgbmV3IHNjaGVtYSAq LworCQlpZiAoY2hhbmdlRGVwZW5kZW5jeUZvcihFeHRlbnNpb25SZWxhdGlvbklkLCBleHRlbnNp b25PaWQsCisJCQkJCQkJCU5hbWVzcGFjZVJlbGF0aW9uSWQsIG9sZE5zcE9pZCwgbnNwT2lkKSAh PSAxKQorCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBjaGFuZ2Ugc2NoZW1hIGRlcGVuZGVuY3kg Zm9yIGV4dGVuc2lvbiAlcyIsCisJCQkJIE5hbWVTdHIoZXh0Rm9ybS0+ZXh0bmFtZSkpOworCX0K IAogCUludm9rZU9iamVjdFBvc3RBbHRlckhvb2soRXh0ZW5zaW9uUmVsYXRpb25JZCwgZXh0ZW5z aW9uT2lkLCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3Jh ZGVfc3VwcG9ydC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5j CmluZGV4IGY1MDE3MDIyZDJlLi42ZmNkMjc5ZDYwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9wZ191cGdyYWRlX3N1cHBvcnQuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNhdGFs b2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL2V4dGVuc2lvbi5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVt YWNtZHMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9s b2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCkBAIC0x OTYsMTIgKzE5NywxNCBAQCBEYXR1bQogYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX2VtcHR5X2V4dGVu c2lvbihQR19GVU5DVElPTl9BUkdTKQogewogCXRleHQJICAgKmV4dE5hbWU7Ci0JdGV4dAkgICAq c2NoZW1hTmFtZTsKKwljaGFyCSAgICpzY2hlbWFOYW1lOwogCWJvb2wJCXJlbG9jYXRhYmxlOwor CWJvb2wJCW93bmVkc2NoZW1hOwogCXRleHQJICAgKmV4dFZlcnNpb247CiAJRGF0dW0JCWV4dENv bmZpZzsKIAlEYXR1bQkJZXh0Q29uZGl0aW9uOwogCUxpc3QJICAgKnJlcXVpcmVkRXh0ZW5zaW9u czsKKwlPaWQJCQlzY2hlbWFPaWQ7CiAKIAlDSEVDS19JU19CSU5BUllfVVBHUkFERTsKIApAQCAt MjA5LDI4ICsyMTIsMzAgQEAgYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX2VtcHR5X2V4dGVuc2lvbihQ R19GVU5DVElPTl9BUkdTKQogCWlmIChQR19BUkdJU05VTEwoMCkgfHwKIAkJUEdfQVJHSVNOVUxM KDEpIHx8CiAJCVBHX0FSR0lTTlVMTCgyKSB8fAotCQlQR19BUkdJU05VTEwoMykpCisJCVBHX0FS R0lTTlVMTCgzKSB8fAorCQlQR19BUkdJU05VTEwoNCkpCiAJCWVsb2coRVJST1IsICJudWxsIGFy Z3VtZW50IHRvIGJpbmFyeV91cGdyYWRlX2NyZWF0ZV9lbXB0eV9leHRlbnNpb24gaXMgbm90IGFs bG93ZWQiKTsKIAogCWV4dE5hbWUgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKLQlzY2hlbWFOYW1l ID0gUEdfR0VUQVJHX1RFWFRfUFAoMSk7CisJc2NoZW1hTmFtZSA9IHRleHRfdG9fY3N0cmluZyhQ R19HRVRBUkdfVEVYVF9QUCgxKSk7CiAJcmVsb2NhdGFibGUgPSBQR19HRVRBUkdfQk9PTCgyKTsK LQlleHRWZXJzaW9uID0gUEdfR0VUQVJHX1RFWFRfUFAoMyk7CisJb3duZWRzY2hlbWEgPSBQR19H RVRBUkdfQk9PTCgzKTsKKwlleHRWZXJzaW9uID0gUEdfR0VUQVJHX1RFWFRfUFAoNCk7CiAKLQlp ZiAoUEdfQVJHSVNOVUxMKDQpKQorCWlmIChQR19BUkdJU05VTEwoNSkpCiAJCWV4dENvbmZpZyA9 IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKIAllbHNlCi0JCWV4dENvbmZpZyA9IFBHX0dFVEFSR19E QVRVTSg0KTsKKwkJZXh0Q29uZmlnID0gUEdfR0VUQVJHX0RBVFVNKDUpOwogCi0JaWYgKFBHX0FS R0lTTlVMTCg1KSkKKwlpZiAoUEdfQVJHSVNOVUxMKDYpKQogCQlleHRDb25kaXRpb24gPSBQb2lu dGVyR2V0RGF0dW0oTlVMTCk7CiAJZWxzZQotCQlleHRDb25kaXRpb24gPSBQR19HRVRBUkdfREFU VU0oNSk7CisJCWV4dENvbmRpdGlvbiA9IFBHX0dFVEFSR19EQVRVTSg2KTsKIAogCXJlcXVpcmVk RXh0ZW5zaW9ucyA9IE5JTDsKLQlpZiAoIVBHX0FSR0lTTlVMTCg2KSkKKwlpZiAoIVBHX0FSR0lT TlVMTCg3KSkKIAl7Ci0JCUFycmF5VHlwZSAgKnRleHRBcnJheSA9IFBHX0dFVEFSR19BUlJBWVRZ UEVfUCg2KTsKKwkJQXJyYXlUeXBlICAqdGV4dEFycmF5ID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9Q KDcpOwogCQlEYXR1bQkgICAqdGV4dERhdHVtczsKIAkJaW50CQkJbmRhdHVtczsKIAkJaW50CQkJ aTsKQEAgLTI0NSwxMCArMjUwLDI3IEBAIGJpbmFyeV91cGdyYWRlX2NyZWF0ZV9lbXB0eV9leHRl bnNpb24oUEdfRlVOQ1RJT05fQVJHUykKIAkJfQogCX0KIAorCWlmIChvd25lZHNjaGVtYSkKKwl7 CisJCVBhcnNlU3RhdGUgKnBzdGF0ZSA9IG1ha2VfcGFyc2VzdGF0ZShOVUxMKTsKKwkJQ3JlYXRl U2NoZW1hU3RtdCAqY3NzdG10ID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hU3RtdCk7CisKKwkJY3Nz dG10LT5zY2hlbWFuYW1lID0gc2NoZW1hTmFtZTsKKwkJY3NzdG10LT5hdXRocm9sZSA9IE5VTEw7 CS8qIHdpbGwgYmUgY3JlYXRlZCBieSBjdXJyZW50IHVzZXIgKi8KKwkJY3NzdG10LT5zY2hlbWFF bHRzID0gTklMOworCQljc3N0bXQtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKKwkJc2NoZW1hT2lk ID0gQ3JlYXRlU2NoZW1hQ29tbWFuZChwc3RhdGUsIGNzc3RtdCwgLTEsIC0xKTsKKwl9CisJZWxz ZQorCXsKKwkJc2NoZW1hT2lkID0gZ2V0X25hbWVzcGFjZV9vaWQoc2NoZW1hTmFtZSwgZmFsc2Up OworCX0KKwogCUluc2VydEV4dGVuc2lvblR1cGxlKHRleHRfdG9fY3N0cmluZyhleHROYW1lKSwK IAkJCQkJCSBHZXRVc2VySWQoKSwKLQkJCQkJCSBnZXRfbmFtZXNwYWNlX29pZCh0ZXh0X3RvX2Nz dHJpbmcoc2NoZW1hTmFtZSksIGZhbHNlKSwKKwkJCQkJCSBzY2hlbWFPaWQsCiAJCQkJCQkgcmVs b2NhdGFibGUsCisJCQkJCQkgb3duZWRzY2hlbWEsCiAJCQkJCQkgdGV4dF90b19jc3RyaW5nKGV4 dFZlcnNpb24pLAogCQkJCQkJIGV4dENvbmZpZywKIAkJCQkJCSBleHRDb25kaXRpb24sCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwppbmRleCAzODhjM2I5YzM0Ni4uYjk1NmY2ZGEwYTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMTky OCw2ICsxOTI4LDE5IEBAIGNoZWNrRXh0ZW5zaW9uTWVtYmVyc2hpcChEdW1wYWJsZU9iamVjdCAq ZG9iaiwgQXJjaGl2ZSAqZm91dCkKIAlpZiAoZXh0ID09IE5VTEwpCiAJCXJldHVybiBmYWxzZTsK IAorCS8qCisJICogSWYgdGhpcyBpcyB0aGUgIm93bmVkX3NjaGVtYSIgb2YgdGhlIGV4dGVuc2lv biwgdGhlbiB3ZSBkb24ndCB3YW50IHRvCisJICogY3JlYXRlIGl0IG1hbnVhbGx5LCBiZWNhdXNl IGl0IGdldHMgY3JlYXRlZCB0b2dldGhlciB3aXRoIHRoZQorCSAqIGV4dGVuc2lvbi4KKwkgKi8K KwlpZiAoZG9iai0+b2JqVHlwZSA9PSBET19OQU1FU1BBQ0UgJiYKKwkJZXh0LT5vd25lZHNjaGVt YSAmJiBzdHJjbXAoZXh0LT5uYW1lc3BhY2UsIGRvYmotPm5hbWUpID09IDApCisJeworCQlOYW1l c3BhY2VJbmZvICpuc2luZm8gPSAoTmFtZXNwYWNlSW5mbyAqKSBkb2JqOworCisJCW5zaW5mby0+ Y3JlYXRlID0gZmFsc2U7CisJfQorCiAJZG9iai0+ZXh0X21lbWJlciA9IHRydWU7CiAKIAkvKiBS ZWNvcmQgZGVwZW5kZW5jeSBzbyB0aGF0IGdldERlcGVuZGVuY2llcyBuZWVkbid0IGRlYWwgd2l0 aCB0aGF0ICovCkBAIC02MDAxLDcgKzYwMTQsNyBAQCBiaW5hcnlfdXBncmFkZV9leHRlbnNpb25f bWVtYmVyKFBRRXhwQnVmZmVyIHVwZ3JhZGVfYnVmZmVyLAogCQkJCQkJCQljb25zdCBjaGFyICpv YmpuYW1lLAogCQkJCQkJCQljb25zdCBjaGFyICpvYmpuYW1lc3BhY2UpCiB7Ci0JRHVtcGFibGVP YmplY3QgKmV4dG9iaiA9IE5VTEw7CisJRXh0ZW5zaW9uSW5mbyAqZXh0ID0gTlVMTDsKIAlpbnQJ CQlpOwogCiAJaWYgKCFkb2JqLT5leHRfbWVtYmVyKQpAQCAtNjAxNSwxOSArNjAyOCwzMyBAQCBi aW5hcnlfdXBncmFkZV9leHRlbnNpb25fbWVtYmVyKFBRRXhwQnVmZmVyIHVwZ3JhZGVfYnVmZmVy LAogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBkb2JqLT5uRGVwczsgaSsrKQogCXsKLQkJZXh0b2Jq ID0gZmluZE9iamVjdEJ5RHVtcElkKGRvYmotPmRlcGVuZGVuY2llc1tpXSk7CisJCUR1bXBhYmxl T2JqZWN0ICpleHRvYmogPSBmaW5kT2JqZWN0QnlEdW1wSWQoZG9iai0+ZGVwZW5kZW5jaWVzW2ld KTsKKwogCQlpZiAoZXh0b2JqICYmIGV4dG9iai0+b2JqVHlwZSA9PSBET19FWFRFTlNJT04pCisJ CXsKKwkJCWV4dCA9IChFeHRlbnNpb25JbmZvICopIGV4dG9iajsKIAkJCWJyZWFrOwotCQlleHRv YmogPSBOVUxMOworCQl9CiAJfQotCWlmIChleHRvYmogPT0gTlVMTCkKKwlpZiAoZXh0ID09IE5V TEwpCiAJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBwYXJlbnQgZXh0ZW5zaW9uIGZvciAlcyAl cyIsCiAJCQkJIG9ianR5cGUsIG9iam5hbWUpOwogCisJLyoKKwkgKiBJZiB0aGUgb2JqZWN0IGlz IHRoZSAib3duZWRfc2NoZW1hIiBvZiB0aGUgZXh0ZW5zaW9uLCB3ZSBkb24ndCBuZWVkIHRvCisJ ICogYWRkIGl0IHRvIHRoZSBleHRlbnNpb24gYmVjYXVzZSBpdCB3YXMgYWxyZWFkeSBtYWRlIGEg bWVtYmVyIG9mIHRoZQorCSAqIGV4dGVuc2lvbiB3aGVuIHRoZSBleHRlbnNpb24gd2FzIGNyZWF0 ZWQuCisJICovCisJaWYgKGRvYmotPm9ialR5cGUgPT0gRE9fTkFNRVNQQUNFICYmCisJCWV4dC0+ b3duZWRzY2hlbWEgJiYgc3RyY21wKGV4dC0+bmFtZXNwYWNlLCBkb2JqLT5uYW1lKSA9PSAwKQor CXsKKwkJcmV0dXJuOworCX0KKwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHVwZ3JhZGVfYnVmZmVy LAogCQkJCQkJICJcbi0tIEZvciBiaW5hcnkgdXBncmFkZSwgaGFuZGxlIGV4dGVuc2lvbiBtZW1i ZXJzaGlwIHRoZSBoYXJkIHdheVxuIik7CiAJYXBwZW5kUFFFeHBCdWZmZXIodXBncmFkZV9idWZm ZXIsICJBTFRFUiBFWFRFTlNJT04gJXMgQUREICVzICIsCi0JCQkJCSAgZm10SWQoZXh0b2JqLT5u YW1lKSwKKwkJCQkJICBmbXRJZChleHQtPmRvYmoubmFtZSksCiAJCQkJCSAgb2JqdHlwZSk7CiAJ aWYgKG9iam5hbWVzcGFjZSAmJiAqb2JqbmFtZXNwYWNlKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcih1 cGdyYWRlX2J1ZmZlciwgIiVzLiIsIGZtdElkKG9iam5hbWVzcGFjZSkpOwpAQCAtNjE4NCw2ICs2 MjExLDcgQEAgZ2V0RXh0ZW5zaW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bUV4dGVuc2lvbnMp CiAJaW50CQkJaV9leHRuYW1lOwogCWludAkJCWlfbnNwbmFtZTsKIAlpbnQJCQlpX2V4dHJlbG9j YXRhYmxlOworCWludAkJCWlfZXh0b3duZWRzY2hlbWE7CiAJaW50CQkJaV9leHR2ZXJzaW9uOwog CWludAkJCWlfZXh0Y29uZmlnOwogCWludAkJCWlfZXh0Y29uZGl0aW9uOwpAQCAtNjE5Miw3ICs2 MjIwLDE0IEBAIGdldEV4dGVuc2lvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1FeHRlbnNpb25z KQogCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJTRUxFQ1QgeC50YWJsZW9pZCwgeC5v aWQsICIKIAkJCQkJCSAieC5leHRuYW1lLCBuLm5zcG5hbWUsIHguZXh0cmVsb2NhdGFibGUsIHgu ZXh0dmVyc2lvbiwgeC5leHRjb25maWcsIHguZXh0Y29uZGl0aW9uICIKLQkJCQkJCSAiRlJPTSBw Z19leHRlbnNpb24geCAiCisJCSk7CisKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAyMDAw MDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCB4LmV4dG93bmVkc2NoZW1hICIp OworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIGZhbHNlIEFTIGV4dG93 bmVkc2NoZW1hICIpOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJGUk9NIHBnX2V4 dGVuc2lvbiB4ICIKIAkJCQkJCSAiSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IHguZXh0 bmFtZXNwYWNlIik7CiAKIAlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEs IFBHUkVTX1RVUExFU19PSyk7CkBAIC02MjA4LDYgKzYyNDMsNyBAQCBnZXRFeHRlbnNpb25zKEFy Y2hpdmUgKmZvdXQsIGludCAqbnVtRXh0ZW5zaW9ucykKIAlpX2V4dG5hbWUgPSBQUWZudW1iZXIo cmVzLCAiZXh0bmFtZSIpOwogCWlfbnNwbmFtZSA9IFBRZm51bWJlcihyZXMsICJuc3BuYW1lIik7 CiAJaV9leHRyZWxvY2F0YWJsZSA9IFBRZm51bWJlcihyZXMsICJleHRyZWxvY2F0YWJsZSIpOwor CWlfZXh0b3duZWRzY2hlbWEgPSBQUWZudW1iZXIocmVzLCAiZXh0b3duZWRzY2hlbWEiKTsKIAlp X2V4dHZlcnNpb24gPSBQUWZudW1iZXIocmVzLCAiZXh0dmVyc2lvbiIpOwogCWlfZXh0Y29uZmln ID0gUFFmbnVtYmVyKHJlcywgImV4dGNvbmZpZyIpOwogCWlfZXh0Y29uZGl0aW9uID0gUFFmbnVt YmVyKHJlcywgImV4dGNvbmRpdGlvbiIpOwpAQCAtNjIyMSw2ICs2MjU3LDcgQEAgZ2V0RXh0ZW5z aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bUV4dGVuc2lvbnMpCiAJCWV4dGluZm9baV0uZG9i ai5uYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2V4dG5hbWUpKTsKIAkJZXh0 aW5mb1tpXS5uYW1lc3BhY2UgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfbnNwbmFt ZSkpOwogCQlleHRpbmZvW2ldLnJlbG9jYXRhYmxlID0gKihQUWdldHZhbHVlKHJlcywgaSwgaV9l eHRyZWxvY2F0YWJsZSkpID09ICd0JzsKKwkJZXh0aW5mb1tpXS5vd25lZHNjaGVtYSA9ICooUFFn ZXR2YWx1ZShyZXMsIGksIGlfZXh0b3duZWRzY2hlbWEpKSA9PSAndCc7CiAJCWV4dGluZm9baV0u ZXh0dmVyc2lvbiA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9leHR2ZXJzaW9uKSk7 CiAJCWV4dGluZm9baV0uZXh0Y29uZmlnID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBp X2V4dGNvbmZpZykpOwogCQlleHRpbmZvW2ldLmV4dGNvbmRpdGlvbiA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaSwgaV9leHRjb25kaXRpb24pKTsKQEAgLTExODI1LDkgKzExODYyLDkgQEAg ZHVtcE5hbWVzcGFjZShBcmNoaXZlICpmb3V0LCBjb25zdCBOYW1lc3BhY2VJbmZvICpuc3BpbmZv KQogCXsKIAkJLyogc2VlIHNlbGVjdER1bXBhYmxlTmFtZXNwYWNlKCkgKi8KIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIoZGVscSwKLQkJCQkJCQkgIi0tICpub3QqIGRyb3BwaW5nIHNjaGVtYSwgc2lu Y2UgaW5pdGRiIGNyZWF0ZXMgaXRcbiIpOworCQkJCQkJCSAiLS0gKm5vdCogZHJvcHBpbmcgc2No ZW1hLCBzaW5jZSBpbml0ZGIgb3IgQ1JFQVRFIEVYVEVOU0lPTiBjcmVhdGVzIGl0XG4iKTsKIAkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocSwKLQkJCQkJCQkgIi0tICpub3QqIGNyZWF0aW5nIHNjaGVt YSwgc2luY2UgaW5pdGRiIGNyZWF0ZXMgaXRcbiIpOworCQkJCQkJCSAiLS0gKm5vdCogY3JlYXRp bmcgc2NoZW1hLCBzaW5jZSBpbml0ZGIgb3IgQ1JFQVRFIEVYVEVOU0lPTiBjcmVhdGVzIGl0XG4i KTsKIAl9CiAKIAlpZiAoZG9wdC0+YmluYXJ5X3VwZ3JhZGUpCkBAIC0xMTkzOSw2ICsxMTk3Niw3 IEBAIGR1bXBFeHRlbnNpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgRXh0ZW5zaW9uSW5mbyAqZXh0 aW5mbykKIAkJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHEsIGV4dGluZm8tPm5hbWVzcGFjZSwgZm91 dCk7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIsICIpOwogCQlhcHBlbmRQUUV4cEJ1ZmZl cihxLCAiJXMsICIsIGV4dGluZm8tPnJlbG9jYXRhYmxlID8gInRydWUiIDogImZhbHNlIik7CisJ CWFwcGVuZFBRRXhwQnVmZmVyKHEsICIlcywgIiwgZXh0aW5mby0+b3duZWRzY2hlbWEgPyAidHJ1 ZSIgOiAiZmFsc2UiKTsKIAkJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHEsIGV4dGluZm8tPmV4dHZl cnNpb24sIGZvdXQpOwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiLCAiKTsKIApAQCAtMjAy NDYsNiArMjAyODQsMjAgQEAgZ2V0RGVwZW5kZW5jaWVzKEFyY2hpdmUgKmZvdXQpCiAJCWlmIChk ZXB0eXBlID09ICd4JykKIAkJCWRvYmotPmRlcGVuZHNfb25fZXh0ID0gdHJ1ZTsKIAorCQkvKgor CQkgKiBBbiBleHRlbnNpb24gd2l0aCBhbiBvd25lZCBzY2hlbWEgZGVwZW5kcyBvbiBpdHMgc2No ZW1hLCBidXQgdGhhdAorCQkgKiBzY2hlbWEgaXMgYWxzbyBhIG1lbWJlciBvZiB0aGUgZXh0ZW5z aW9uLCBzbyBrZWVwaW5nIGJvdGgKKwkJICogZGVwZW5kZW5jaWVzIHdvdWxkIGNyZWF0ZSBhIGxv b3AuICBXZSBuZXZlciBhY3R1YWxseSBkdW1wIGEgQ1JFQVRFCisJCSAqIFNDSEVNQSBjb21tYW5k IGZvciBhbiBvd25lZCBzY2hlbWEgYW55d2F5LCBzbyB0aGUgZGVwZW5kZW5jeSBvZiB0aGUKKwkJ ICogZXh0ZW5zaW9uIG9uIHRoZSBzY2hlbWEgY2FuIGJlIGlnbm9yZWQuICBXZSBzdGlsbCBrZWVw IHRoZSBzY2hlbWEncworCQkgKiBkZXBlbmRlbmN5IG9uIHRoZSBleHRlbnNpb24gc28gdGhlIHNj aGVtYSdzIEFDTCBhbmQgY29tbWVudCBhcmUKKwkJICogZHVtcGVkIGFmdGVyIENSRUFURSBFWFRF TlNJT04gY3JlYXRlcyB0aGUgc2NoZW1hLgorCQkgKi8KKwkJaWYgKGRvYmotPm9ialR5cGUgPT0g RE9fRVhURU5TSU9OICYmCisJCQlyZWZkb2JqLT5vYmpUeXBlID09IERPX05BTUVTUEFDRSAmJgor CQkJKChFeHRlbnNpb25JbmZvICopIGRvYmopLT5vd25lZHNjaGVtYSkKKwkJCWNvbnRpbnVlOwor CiAJCS8qCiAJCSAqIE9yZGluYXJpbHksIHRhYmxlIHJvd3R5cGVzIGhhdmUgaW1wbGljaXQgZGVw ZW5kZW5jaWVzIG9uIHRoZWlyCiAJCSAqIHRhYmxlcy4gIEhvd2V2ZXIsIGZvciBhIGNvbXBvc2l0 ZSB0eXBlIHRoZSBpbXBsaWNpdCBkZXBlbmRlbmN5IGdvZXMKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDJiYmI1 ZDU3NzNiLi4wYmY1NGYwMGRlNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu aAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC0xOTUsNiArMTk1LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgX2V4dGVuc2lvbkluZm8KIAlEdW1wYWJsZU9iamVjdCBkb2JqOwogCWNoYXIJ ICAgKm5hbWVzcGFjZTsJCS8qIHNjaGVtYSBjb250YWluaW5nIGV4dGVuc2lvbidzIG9iamVjdHMg Ki8KIAlib29sCQlyZWxvY2F0YWJsZTsKKwlib29sCQlvd25lZHNjaGVtYTsKIAljaGFyCSAgICpl eHR2ZXJzaW9uOwogCWNoYXIJICAgKmV4dGNvbmZpZzsJCS8qIGluZm8gYWJvdXQgY29uZmlndXJh dGlvbiB0YWJsZXMgKi8KIAljaGFyCSAgICpleHRjb25kaXRpb247CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2V4dGVuc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19l eHRlbnNpb24uaAppbmRleCBjODcxMTQxODQzNS4uMjY5MzRmNWQ1ODkgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfZXh0ZW5zaW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19leHRlbnNpb24uaApAQCAtMzYsNiArMzYsNyBAQCBDQVRBTE9HKHBnX2V4dGVuc2lvbiwz MDc5LEV4dGVuc2lvblJlbGF0aW9uSWQpCiAJT2lkCQkJZXh0bmFtZXNwYWNlIEJLSV9MT09LVVAo cGdfbmFtZXNwYWNlKTsJLyogbmFtZXNwYWNlIG9mCiAJCQkJCQkJCQkJCQkJCSAqIGNvbnRhaW5l ZCBvYmplY3RzICovCiAJYm9vbAkJZXh0cmVsb2NhdGFibGU7IC8qIGlmIHRydWUsIGFsbG93IEFM VEVSIEVYVEVOU0lPTiBTRVQgU0NIRU1BICovCisJYm9vbAkJZXh0b3duZWRzY2hlbWE7IC8qIGlm IHRydWUsIHNjaGVtYSBpcyBvd25lZCBieSBleHRlbnNpb24gKi8KIAogI2lmZGVmIENBVEFMT0df VkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogZXh0 dmVyc2lvbiBtYXkgbmV2ZXIgYmUgbnVsbCwgYnV0IHRoZSBvdGhlcnMgY2FuIGJlLiAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggZjQ2NDI3MjU4ZTMuLjIxOWY4MmM2ZmEwIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKQEAgLTEyMDA4LDcgKzEyMDA4LDcgQEAKIHsgb2lkID0+ICczNTkx JywgZGVzY3IgPT4gJ2ZvciB1c2UgYnkgcGdfdXBncmFkZScsCiAgIHByb25hbWUgPT4gJ2JpbmFy eV91cGdyYWRlX2NyZWF0ZV9lbXB0eV9leHRlbnNpb24nLCBwcm9pc3N0cmljdCA9PiAnZicsCiAg IHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLCBwcm9yZXR0eXBlID0+ICd2 b2lkJywKLSAgcHJvYXJndHlwZXMgPT4gJ3RleHQgdGV4dCBib29sIHRleHQgX29pZCBfdGV4dCBf dGV4dCcsCisgIHByb2FyZ3R5cGVzID0+ICd0ZXh0IHRleHQgYm9vbCBib29sIHRleHQgX29pZCBf dGV4dCBfdGV4dCcsCiAgIHByb3NyYyA9PiAnYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX2VtcHR5X2V4 dGVuc2lvbicgfSwKIHsgb2lkID0+ICc0MDgzJywgZGVzY3IgPT4gJ2ZvciB1c2UgYnkgcGdfdXBn cmFkZScsCiAgIHByb25hbWUgPT4gJ2JpbmFyeV91cGdyYWRlX3NldF9yZWNvcmRfaW5pdF9wcml2 cycsIHByb3ZvbGF0aWxlID0+ICd2JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2V4dGVuc2lvbi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmgKaW5kZXggN2E3 NmJkZWJjZmEuLjAzMTY2Yjc1NTAyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9l eHRlbnNpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaApAQCAtMzgs NyArMzgsOSBAQCBleHRlcm4gT2JqZWN0QWRkcmVzcyBDcmVhdGVFeHRlbnNpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBDcmVhdGVFeHRlbnNpb25TdG10ICpzdAogZXh0ZXJuIHZvaWQgUmVtb3ZlRXh0 ZW5zaW9uQnlJZChPaWQgZXh0SWQpOwogCiBleHRlcm4gT2JqZWN0QWRkcmVzcyBJbnNlcnRFeHRl bnNpb25UdXBsZShjb25zdCBjaGFyICpleHROYW1lLCBPaWQgZXh0T3duZXIsCi0JCQkJCQkJCQkJ ICBPaWQgc2NoZW1hT2lkLCBib29sIHJlbG9jYXRhYmxlLCBjb25zdCBjaGFyICpleHRWZXJzaW9u LAorCQkJCQkJCQkJCSAgT2lkIHNjaGVtYU9pZCwgYm9vbCByZWxvY2F0YWJsZSwKKwkJCQkJCQkJ CQkgIGJvb2wgb3duZWRTY2hlbWEsCisJCQkJCQkJCQkJICBjb25zdCBjaGFyICpleHRWZXJzaW9u LAogCQkJCQkJCQkJCSAgRGF0dW0gZXh0Q29uZmlnLCBEYXR1bSBleHRDb25kaXRpb24sCiAJCQkJ CQkJCQkJICBMaXN0ICpyZXF1aXJlZEV4dGVuc2lvbnMpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9leHRlbnNpb25zL01ha2VmaWxlCmluZGV4IGQxYjBiODFlNWZkLi4wYzkxMzgzZDYyMiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUKQEAgLTEwLDcgKzEwLDkg QEAgRVhURU5TSU9OID0gdGVzdF9leHQxIHRlc3RfZXh0MiB0ZXN0X2V4dDMgdGVzdF9leHQ0IHRl c3RfZXh0NSB0ZXN0X2V4dDYgXAogICAgICAgICAgICAgdGVzdF9leHRfZXh0c2NoZW1hIFwKICAg ICAgICAgICAgIHRlc3RfZXh0X2V2dHRyaWcgXAogICAgICAgICAgICAgdGVzdF9leHRfc2V0X3Nj aGVtYSBcCi0gICAgICAgICAgICB0ZXN0X2V4dF9yZXFfc2NoZW1hMSB0ZXN0X2V4dF9yZXFfc2No ZW1hMiB0ZXN0X2V4dF9yZXFfc2NoZW1hMworICAgICAgICAgICAgdGVzdF9leHRfcmVxX3NjaGVt YTEgdGVzdF9leHRfcmVxX3NjaGVtYTIgdGVzdF9leHRfcmVxX3NjaGVtYTMgXAorICAgICAgICAg ICAgdGVzdF9leHRfb3duZWRfc2NoZW1hIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNl ciBcCisgICAgICAgICAgICB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZCB0ZXN0X2V4dF9v d25lZF9zY2hlbWFfcmVsb2NhdGFibGUKIAogT0JKUyA9IHRlc3RfZXh0Lm8KIApAQCAtMjgsNyAr MzAsMTQgQEAgREFUQSA9IHRlc3RfZXh0MS0tMS4wLnNxbCB0ZXN0X2V4dDItLTEuMC5zcWwgdGVz dF9leHQzLS0xLjAuc3FsIFwKICAgICAgICB0ZXN0X2V4dF9zZXRfc2NoZW1hLS0xLjAuc3FsIFwK ICAgICAgICB0ZXN0X2V4dF9yZXFfc2NoZW1hMS0tMS4wLnNxbCBcCiAgICAgICAgdGVzdF9leHRf cmVxX3NjaGVtYTItLTEuMC5zcWwgXAotICAgICAgIHRlc3RfZXh0X3JlcV9zY2hlbWEzLS0xLjAu c3FsCisgICAgICAgdGVzdF9leHRfcmVxX3NjaGVtYTMtLTEuMC5zcWwgXAorICAgICAgIHRlc3Rf ZXh0X293bmVkX3NjaGVtYS0tMS4wLnNxbCBcCisgICAgICAgdGVzdF9leHRfb3duZWRfc2NoZW1h LS0xLjAtLTEuMS5zcWwgXAorICAgICAgIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNl ci0tMS4wLnNxbCBcCisgICAgICAgdGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLS0x LjAtLTEuMS5zcWwgXAorICAgICAgIHRlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkLS0xLjAu c3FsIFwKKyAgICAgICB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZC0tMS4wLS0xLjEuc3Fs IFwKKyAgICAgICB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUtLTEuMC5zcWwKIAog UkVHUkVTUyA9IHRlc3RfZXh0ZW5zaW9ucyB0ZXN0X2V4dGRlcGVuZAogVEFQX1RFU1RTID0gMQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvZXhwZWN0ZWQvdGVz dF9leHRlbnNpb25zLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL2V4cGVj dGVkL3Rlc3RfZXh0ZW5zaW9ucy5vdXQKaW5kZXggMWI1ZGViZGVlYjEuLjcxMmQxZDhjOWEzIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9leHBlY3RlZC90ZXN0 X2V4dGVuc2lvbnMub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL2V4 cGVjdGVkL3Rlc3RfZXh0ZW5zaW9ucy5vdXQKQEAgLTksNiArOSw3IEBAIENSRUFURSBFWFRFTlNJ T04gdGVzdF9leHQxIFNDSEVNQSB0ZXN0X2V4dDsKIEVSUk9SOiAgc2NoZW1hICJ0ZXN0X2V4dCIg ZG9lcyBub3QgZXhpc3QKIENSRUFURSBFWFRFTlNJT04gdGVzdF9leHQxIFNDSEVNQSBoYXMkZG9s bGFyOwogRVJST1I6ICBleHRlbnNpb24gInRlc3RfZXh0MSIgbXVzdCBiZSBpbnN0YWxsZWQgaW4g c2NoZW1hICJ0ZXN0X2V4dDEiCitISU5UOiAgRG8gbm90IHNwZWNpZnkgU0NIRU1BIHdoZW4gcnVu bmluZyBDUkVBVEUgRVhURU5TSU9OIGZvciBleHRlbnNpb24gInRlc3RfZXh0MSIKIC0tIGZpbmFs bHkgc3VjY2VzcwogQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dDEgU0NIRU1BIGhhcyRkb2xsYXIg Q0FTQ0FERTsKIE5PVElDRTogIGluc3RhbGxpbmcgcmVxdWlyZWQgZXh0ZW5zaW9uICJ0ZXN0X2V4 dDIiCkBAIC02NjcsMyArNjY4LDE2MyBAQCBTRUxFQ1QgdGVzdF9zX2RlcC5kZXBfcmVxMigpOwog CiBEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9yZXFfc2NoZW1hMSBDQVNDQURFOwogTk9USUNFOiAg ZHJvcCBjYXNjYWRlcyB0byBleHRlbnNpb24gdGVzdF9leHRfcmVxX3NjaGVtYTIKKy0tCistLSBU ZXN0IG93bmVkIHNjaGVtYSBleHRlbnNpb25zCistLQorQ1JFQVRFIFNDSEVNQSB0ZXN0X2V4dF9v d25lZF9zY2hlbWE7CistLSBGYWlscyBmb3IgYW4gYWxyZWFkeSBleGlzdGluZyBzY2hlbWEgdG8g YmUgcHJvdmlkZWQKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hIFNDSEVN QSB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitFUlJPUjogIHNjaGVtYSAidGVzdF9leHRfb3duZWRf c2NoZW1hIiBhbHJlYWR5IGV4aXN0cworSElOVDogIERyb3Agc2NoZW1hICJ0ZXN0X2V4dF9vd25l ZF9zY2hlbWEiIG9yIHNwZWNpZnkgYW5vdGhlciBzY2hlbWEgdXNpbmcgQ1JFQVRFIEVYVEVOU0lP TiAuLi4gU0NIRU1BIC4uLgorLS0gRmFpbHMgYmVjYXVzZSBhIGRpZmZlcmVudCBzY2hlbWEgaXMg c2V0IGluIGNvbnRyb2wgZmlsZQorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hl bWEgU0NIRU1BIHRlc3Rfc2NoZW1hOworRVJST1I6ICBleHRlbnNpb24gInRlc3RfZXh0X293bmVk X3NjaGVtYSIgbXVzdCBiZSBpbnN0YWxsZWQgaW4gc2NoZW1hICJ0ZXN0X2V4dF9vd25lZF9zY2hl bWEiCitISU5UOiAgRG8gbm90IHNwZWNpZnkgU0NIRU1BIHdoZW4gcnVubmluZyBDUkVBVEUgRVhU RU5TSU9OIGZvciBleHRlbnNpb24gInRlc3RfZXh0X293bmVkX3NjaGVtYSIKK0RST1AgU0NIRU1B IHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRf c2NoZW1hOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitPYmplY3RzIGluIGV4dGVuc2lv biAidGVzdF9leHRfb3duZWRfc2NoZW1hIgorICAgICAgICAgICBPYmplY3QgZGVzY3JpcHRpb24g ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ZnVuY3Rpb24gdGVzdF9leHRfb3duZWRfc2NoZW1hLm93bmVkMSgpCisgc2NoZW1hIHRlc3RfZXh0 X293bmVkX3NjaGVtYQorKDIgcm93cykKKworLS0gVGVzdCBBTFRFUiBFWFRFTlNJT04gVVBEQVRF IHdpdGggb3duZWQgc2NoZW1hCitBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1h IFVQREFURSBUTyAnMS4xJzsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hOworT2JqZWN0cyBp biBleHRlbnNpb24gInRlc3RfZXh0X293bmVkX3NjaGVtYSIKKyAgICAgICAgICAgT2JqZWN0IGRl c2NyaXB0aW9uICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIGZ1bmN0aW9uIHRlc3RfZXh0X293bmVkX3NjaGVtYS5vd25lZDEoKQorIGZ1bmN0 aW9uIHRlc3RfZXh0X293bmVkX3NjaGVtYS5vd25lZDIoKQorIHNjaGVtYSB0ZXN0X2V4dF9vd25l ZF9zY2hlbWEKKygzIHJvd3MpCisKKy0tIFZlcmlmeSB0aGF0IHRoZSBvd25lZCBzY2hlbWEgaXMg ZHJvcHBlZCB0b2dldGhlciB3aXRoIHRoZSBleHRlbnNpb24KK0RST1AgRVhURU5TSU9OIHRlc3Rf ZXh0X293bmVkX3NjaGVtYTsKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIHBnX25hbWVzcGFjZSBXSEVS RSBuc3BuYW1lID0gJ3Rlc3RfZXh0X293bmVkX3NjaGVtYSc7CisgY291bnQgCistLS0tLS0tCisg ICAgIDAKKygxIHJvdykKKworLS0gVGVzdCBkcm9wIGJlaGF2aW9yIHdpdGggbm9uLWV4dGVuc2lv biBvYmplY3RzIGluIHRoZSBvd25lZCBzY2hlbWEKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRf b3duZWRfc2NoZW1hOworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYS5ub25f ZXh0X2Z1bmMoKSBSRVRVUk5TIGludCBMQU5HVUFHRSBTUUwgQVMgJCQgU0VMRUNUIDEgJCQ7Cist LSBGYWlscyBiZWNhdXNlIG9mIHRoZSBub24tZXh0ZW5zaW9uIG9iamVjdAorRFJPUCBFWFRFTlNJ T04gdGVzdF9leHRfb3duZWRfc2NoZW1hOworRVJST1I6ICBjYW5ub3QgZHJvcCBleHRlbnNpb24g dGVzdF9leHRfb3duZWRfc2NoZW1hIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQK K0RFVEFJTDogIGZ1bmN0aW9uIHRlc3RfZXh0X293bmVkX3NjaGVtYS5ub25fZXh0X2Z1bmMoKSBk ZXBlbmRzIG9uIHNjaGVtYSB0ZXN0X2V4dF9vd25lZF9zY2hlbWEKK0hJTlQ6ICBVc2UgRFJPUCAu Li4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCistLSBTdWNjZWVk cyBhbmQgY2FzY2FkZXMgdG8gdGhlIG5vbi1leHRlbnNpb24gb2JqZWN0CitEUk9QIEVYVEVOU0lP TiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMg dG8gZnVuY3Rpb24gdGVzdF9leHRfb3duZWRfc2NoZW1hLm5vbl9leHRfZnVuYygpCitDUkVBVEUg U0NIRU1BIGFscmVhZHlfZXhpc3Rpbmc7CistLSBGYWlscyBmb3IgYW4gYWxyZWFkeSBleGlzdGlu ZyBzY2hlbWEgdG8gYmUgcHJvdmlkZWQKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRf c2NoZW1hX3JlbG9jYXRhYmxlIFNDSEVNQSBhbHJlYWR5X2V4aXN0aW5nOworRVJST1I6ICBzY2hl bWEgImFscmVhZHlfZXhpc3RpbmciIGFscmVhZHkgZXhpc3RzCitISU5UOiAgRHJvcCBzY2hlbWEg ImFscmVhZHlfZXhpc3RpbmciIG9yIHNwZWNpZnkgYW5vdGhlciBzY2hlbWEgdXNpbmcgQ1JFQVRF IEVYVEVOU0lPTiAuLi4gU0NIRU1BIC4uLgorLS0gRmFpbHMgYmVjYXVzZSBubyBzY2hlbWEgaXMg c2V0IGluIGNvbnRyb2wgZmlsZQorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hl bWFfcmVsb2NhdGFibGU7CitFUlJPUjogIG5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCB0byBj cmVhdGUgaW4KK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRh YmxlIFNDSEVNQSB0ZXN0X3NjaGVtYTsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9j YXRhYmxlCitPYmplY3RzIGluIGV4dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9j YXRhYmxlIgorICAgICAgT2JqZWN0IGRlc2NyaXB0aW9uICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIGZ1bmN0aW9uIHRlc3Rfc2NoZW1hLm93bmVkMigpCisgc2NoZW1h IHRlc3Rfc2NoZW1hCisoMiByb3dzKQorCistLSBGYWlscyBiZWNhdXNlIHNjaGVtYSBhbHJlYWR5 IGV4aXN0cworQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJs ZSBTRVQgU0NIRU1BIGFscmVhZHlfZXhpc3Rpbmc7CitFUlJPUjogIHNjaGVtYSAiYWxyZWFkeV9l eGlzdGluZyIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9z Y2hlbWFfcmVsb2NhdGFibGUgU0VUIFNDSEVNQSBzb21lX290aGVyX25hbWU7CistLSBTZXR0aW5n IHRoZSBzY2hlbWEgdG8gdGhlIGN1cnJlbnQgb25lIGlzIGEgbm8tb3AKK0FMVEVSIEVYVEVOU0lP TiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUgU0VUIFNDSEVNQSBzb21lX290aGVy X25hbWU7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZQorT2JqZWN0cyBp biBleHRlbnNpb24gInRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSIKKyAgICAgICAg T2JqZWN0IGRlc2NyaXB0aW9uICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIGZ1bmN0aW9uIHNvbWVfb3RoZXJfbmFtZS5vd25lZDIoKQorIHNjaGVtYSBzb21l X290aGVyX25hbWUKKygyIHJvd3MpCisKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3Nj aGVtYV9yZWxvY2F0YWJsZTsKKy0tIFZlcmlmeSB0aGUgc2NoZW1hIHdhcyBkcm9wcGVkIHdpdGgg dGhlIGV4dGVuc2lvbgorRFJPUCBTQ0hFTUEgc29tZV9vdGhlcl9uYW1lOworRVJST1I6ICBzY2hl bWEgInNvbWVfb3RoZXJfbmFtZSIgZG9lcyBub3QgZXhpc3QKKy0tIFRlc3Qgb3duZWRfc2NoZW1h ICsgc3VwZXJ1c2VyPWZhbHNlIGV4dGVuc2lvbgorQ1JFQVRFIFVTRVIgcmVncmVzc190ZXN0X2V4 dF91c2VyOworLS0gVGhlIGRhdGFiYXNlIG5hbWUgZGlmZmVycyBiZXR3ZWVuIG1lc29uIGFuZCBh dXRvY29uZiBidWlsZHMsIHNvIHdlIGNhbid0CistLSBoYXJkY29kZSBpdCBpbiB0aGUgR1JBTlQv UkVWT0tFIHN0YXRlbWVudHMuCitETyAkJCBCRUdJTiBFWEVDVVRFIGZvcm1hdCgnR1JBTlQgQ1JF QVRFIE9OIERBVEFCQVNFICVJIFRPIHJlZ3Jlc3NfdGVzdF9leHRfdXNlcicsIGN1cnJlbnRfZGF0 YWJhc2UoKSk7IEVORCAkJDsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc190ZXN0 X2V4dF91c2VyOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBl cnVzZXI7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlcjsKK09iamVjdHMg aW4gZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIiCisgICAgICAg ICAgICAgICBPYmplY3QgZGVzY3JpcHRpb24gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZnVuY3Rpb24gdGVzdF9vd25l ZF9zY2hlbWFfbm9zdXBlcnVzZXIub3duZWQxKCkKKyBzY2hlbWEgdGVzdF9vd25lZF9zY2hlbWFf bm9zdXBlcnVzZXIKKygyIHJvd3MpCisKKy0tIENoZWNrIHRoYXQgc2NoZW1hIGlzIG93bmVkIGJ5 IHRoZSBjcmVhdGluZyB1c2VyIChub3QgYm9vdHN0cmFwIHN1cGVydXNlcikKK1NFTEVDVCBuLm5z cG5hbWUsIG4ubnNwb3duZXIgPSBjdXJyZW50X3VzZXI6OnJlZ3JvbGUgYXMgb3duZWRfYnlfY3Vy cmVudF91c2VyCitGUk9NIHBnX25hbWVzcGFjZSBuCitXSEVSRSBuLm5zcG5hbWUgPSAndGVzdF9v d25lZF9zY2hlbWFfbm9zdXBlcnVzZXInOworICAgICAgICAgICAgbnNwbmFtZSAgICAgICAgICAg IHwgb3duZWRfYnlfY3VycmVudF91c2VyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRlc3Rfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2Vy IHwgdAorKDEgcm93KQorCistLSBVcGdyYWRlcyBzaG91bGQgd29yayBmb3Igc3VwZXJ1c2VyPWZh bHNlIGV4dGVuc2lvbnMKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9z dXBlcnVzZXIgVVBEQVRFIFRPICcxLjEnOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9z dXBlcnVzZXI7CitPYmplY3RzIGluIGV4dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1hX25v c3VwZXJ1c2VyIgorICAgICAgICAgICAgICAgT2JqZWN0IGRlc2NyaXB0aW9uICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IGZ1bmN0aW9uIHRlc3Rfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLm93bmVkMSgpCisgZnVuY3Rp b24gdGVzdF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIub3duZWQyKCkKKyBzY2hlbWEgdGVzdF9v d25lZF9zY2hlbWFfbm9zdXBlcnVzZXIKKygzIHJvd3MpCisKK0RST1AgRVhURU5TSU9OIHRlc3Rf ZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlcjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TjsKKy0tIFRlc3Qgb3duZWRfc2NoZW1hICsgdHJ1c3RlZD10cnVlIGV4dGVuc2lvbgorU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Rlc3RfZXh0X3VzZXI7CitDUkVBVEUgRVhURU5T SU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkOworXGR4KyB0ZXN0X2V4dF9vd25lZF9z Y2hlbWFfdHJ1c3RlZDsKK09iamVjdHMgaW4gZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9zY2hl bWFfdHJ1c3RlZCIKKyAgICAgICAgICAgICBPYmplY3QgZGVzY3JpcHRpb24gICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZnVuY3Rp b24gdGVzdF9vd25lZF9zY2hlbWFfdHJ1c3RlZC5vd25lZDEoKQorIHNjaGVtYSB0ZXN0X293bmVk X3NjaGVtYV90cnVzdGVkCisoMiByb3dzKQorCistLSBDaGVjayB0aGF0IHNjaGVtYSBpcyBvd25l ZCBieSBib290c3RyYXAgc3VwZXJ1c2VyIGZvciB0cnVzdGVkIGV4dGVuc2lvbiwKKy0tIGV2ZW4g dGhvdWdoIHRoZSBleHRlbnNpb24gaXMgb3duZWQgYnkgcmVncmVzc190ZXN0X2V4dF91c2VyCitT RUxFQ1Qgbi5uc3BuYW1lLCBuLm5zcG93bmVyID0gMTAgYXMgb3duZWRfYnlfYm9vdHN0cmFwX3N1 cGVydXNlcgorRlJPTSBwZ19uYW1lc3BhY2UgbgorV0hFUkUgbi5uc3BuYW1lID0gJ3Rlc3Rfb3du ZWRfc2NoZW1hX3RydXN0ZWQnOworICAgICAgICAgIG5zcG5hbWUgICAgICAgICAgfCBvd25lZF9i eV9ib290c3RyYXBfc3VwZXJ1c2VyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRlc3Rfb3duZWRfc2NoZW1hX3RydXN0ZWQgfCB0 CisoMSByb3cpCisKKy0tIFVwZGF0aW5nIHRydXN0ZWQgZXh0ZW5zaW9ucyBzaG91bGQgd29yayBu b3JtYWxseQorQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkIFVQ REFURSBUTyAnMS4xJzsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQ7CitPYmpl Y3RzIGluIGV4dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQiCisgICAgICAg ICAgICAgT2JqZWN0IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGZ1bmN0aW9uIHRlc3Rfb3duZWRfc2NoZW1h X3RydXN0ZWQub3duZWQxKCkKKyBmdW5jdGlvbiB0ZXN0X293bmVkX3NjaGVtYV90cnVzdGVkLm93 bmVkMigpCisgc2NoZW1hIHRlc3Rfb3duZWRfc2NoZW1hX3RydXN0ZWQKKygzIHJvd3MpCisKK0RS T1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkOworUkVTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OOworRE8gJCQgQkVHSU4gRVhFQ1VURSBmb3JtYXQoJ1JFVk9LRSBDUkVB VEUgT04gREFUQUJBU0UgJUkgRlJPTSByZWdyZXNzX3Rlc3RfZXh0X3VzZXInLCBjdXJyZW50X2Rh dGFiYXNlKCkpOyBFTkQgJCQ7CitEUk9QIFVTRVIgcmVncmVzc190ZXN0X2V4dF91c2VyOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9tZXNvbi5idWlsZAppbmRleCAyYzdjZWEx ODllMi4uYmZmZjBiYzAxYmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRl bnNpb25zL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25z L21lc29uLmJ1aWxkCkBAIC00NCw2ICs0NCwxNyBAQCB0ZXN0X2luc3RhbGxfZGF0YSArPSBmaWxl cygKICAgJ3Rlc3RfZXh0X3JlcV9zY2hlbWEzLmNvbnRyb2wnLAogICAndGVzdF9leHRfc2V0X3Nj aGVtYS0tMS4wLnNxbCcsCiAgICd0ZXN0X2V4dF9zZXRfc2NoZW1hLmNvbnRyb2wnLAorICAndGVz dF9leHRfb3duZWRfc2NoZW1hLS0xLjAuc3FsJywKKyAgJ3Rlc3RfZXh0X293bmVkX3NjaGVtYS0t MS4wLS0xLjEuc3FsJywKKyAgJ3Rlc3RfZXh0X293bmVkX3NjaGVtYS5jb250cm9sJywKKyAgJ3Rl c3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlci0tMS4wLnNxbCcsCisgICd0ZXN0X2V4dF9v d25lZF9zY2hlbWFfbm9zdXBlcnVzZXItLTEuMC0tMS4xLnNxbCcsCisgICd0ZXN0X2V4dF9vd25l ZF9zY2hlbWFfbm9zdXBlcnVzZXIuY29udHJvbCcsCisgICd0ZXN0X2V4dF9vd25lZF9zY2hlbWFf dHJ1c3RlZC0tMS4wLnNxbCcsCisgICd0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZC0tMS4w LS0xLjEuc3FsJywKKyAgJ3Rlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkLmNvbnRyb2wnLAor ICAndGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlLS0xLjAuc3FsJywKKyAgJ3Rlc3Rf ZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS5jb250cm9sJywKICkKIAogdGVzdF9leHRfc291 cmNlcyA9IGZpbGVzKCd0ZXN0X2V4dC5jJykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9leHRlbnNpb25zL3NxbC90ZXN0X2V4dGVuc2lvbnMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZW5zaW9ucy5zcWwKaW5kZXggYjU4NzhmNmY4 MGYuLmQ0OTZkNzgxNmM5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5z aW9ucy9zcWwvdGVzdF9leHRlbnNpb25zLnNxbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRlbnNpb25zLnNxbApAQCAtMzAzLDMgKzMwMyw4MiBAQCBB TFRFUiBFWFRFTlNJT04gdGVzdF9leHRfcmVxX3NjaGVtYTEgU0VUIFNDSEVNQSB0ZXN0X3NfZGVw MjsgIC0tIG5vdyBvawogU0VMRUNUIHRlc3Rfc19kZXAyLmRlcF9yZXExKCk7CiBTRUxFQ1QgdGVz dF9zX2RlcC5kZXBfcmVxMigpOwogRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfcmVxX3NjaGVtYTEg Q0FTQ0FERTsKKworLS0KKy0tIFRlc3Qgb3duZWQgc2NoZW1hIGV4dGVuc2lvbnMKKy0tCisKK0NS RUFURSBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1hOworLS0gRmFpbHMgZm9yIGFuIGFscmVh ZHkgZXhpc3Rpbmcgc2NoZW1hIHRvIGJlIHByb3ZpZGVkCitDUkVBVEUgRVhURU5TSU9OIHRlc3Rf ZXh0X293bmVkX3NjaGVtYSBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1hOworLS0gRmFpbHMg YmVjYXVzZSBhIGRpZmZlcmVudCBzY2hlbWEgaXMgc2V0IGluIGNvbnRyb2wgZmlsZQorQ1JFQVRF IEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEgU0NIRU1BIHRlc3Rfc2NoZW1hOworRFJP UCBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1hOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4 dF9vd25lZF9zY2hlbWE7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKKy0tIFRlc3QgQUxU RVIgRVhURU5TSU9OIFVQREFURSB3aXRoIG93bmVkIHNjaGVtYQorQUxURVIgRVhURU5TSU9OIHRl c3RfZXh0X293bmVkX3NjaGVtYSBVUERBVEUgVE8gJzEuMSc7CitcZHgrIHRlc3RfZXh0X293bmVk X3NjaGVtYTsKKy0tIFZlcmlmeSB0aGF0IHRoZSBvd25lZCBzY2hlbWEgaXMgZHJvcHBlZCB0b2dl dGhlciB3aXRoIHRoZSBleHRlbnNpb24KK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3Nj aGVtYTsKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIHBnX25hbWVzcGFjZSBXSEVSRSBuc3BuYW1lID0g J3Rlc3RfZXh0X293bmVkX3NjaGVtYSc7CisKKy0tIFRlc3QgZHJvcCBiZWhhdmlvciB3aXRoIG5v bi1leHRlbnNpb24gb2JqZWN0cyBpbiB0aGUgb3duZWQgc2NoZW1hCitDUkVBVEUgRVhURU5TSU9O IHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2V4dF9vd25lZF9z Y2hlbWEubm9uX2V4dF9mdW5jKCkgUkVUVVJOUyBpbnQgTEFOR1VBR0UgU1FMIEFTICQkIFNFTEVD VCAxICQkOworLS0gRmFpbHMgYmVjYXVzZSBvZiB0aGUgbm9uLWV4dGVuc2lvbiBvYmplY3QKK0RS T1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKKy0tIFN1Y2NlZWRzIGFuZCBjYXNj YWRlcyB0byB0aGUgbm9uLWV4dGVuc2lvbiBvYmplY3QKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0 X293bmVkX3NjaGVtYSBDQVNDQURFOworCitDUkVBVEUgU0NIRU1BIGFscmVhZHlfZXhpc3Rpbmc7 CistLSBGYWlscyBmb3IgYW4gYWxyZWFkeSBleGlzdGluZyBzY2hlbWEgdG8gYmUgcHJvdmlkZWQK K0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIFNDSEVN QSBhbHJlYWR5X2V4aXN0aW5nOworLS0gRmFpbHMgYmVjYXVzZSBubyBzY2hlbWEgaXMgc2V0IGlu IGNvbnRyb2wgZmlsZQorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVs b2NhdGFibGU7CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0 YWJsZSBTQ0hFTUEgdGVzdF9zY2hlbWE7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxv Y2F0YWJsZQorLS0gRmFpbHMgYmVjYXVzZSBzY2hlbWEgYWxyZWFkeSBleGlzdHMKK0FMVEVSIEVY VEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUgU0VUIFNDSEVNQSBhbHJl YWR5X2V4aXN0aW5nOworQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxv Y2F0YWJsZSBTRVQgU0NIRU1BIHNvbWVfb3RoZXJfbmFtZTsKKy0tIFNldHRpbmcgdGhlIHNjaGVt YSB0byB0aGUgY3VycmVudCBvbmUgaXMgYSBuby1vcAorQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0 X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSBTRVQgU0NIRU1BIHNvbWVfb3RoZXJfbmFtZTsKK1xk eCsgdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlCitEUk9QIEVYVEVOU0lPTiB0ZXN0 X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGU7CistLSBWZXJpZnkgdGhlIHNjaGVtYSB3YXMg ZHJvcHBlZCB3aXRoIHRoZSBleHRlbnNpb24KK0RST1AgU0NIRU1BIHNvbWVfb3RoZXJfbmFtZTsK KworLS0gVGVzdCBvd25lZF9zY2hlbWEgKyBzdXBlcnVzZXI9ZmFsc2UgZXh0ZW5zaW9uCitDUkVB VEUgVVNFUiByZWdyZXNzX3Rlc3RfZXh0X3VzZXI7CistLSBUaGUgZGF0YWJhc2UgbmFtZSBkaWZm ZXJzIGJldHdlZW4gbWVzb24gYW5kIGF1dG9jb25mIGJ1aWxkcywgc28gd2UgY2FuJ3QKKy0tIGhh cmRjb2RlIGl0IGluIHRoZSBHUkFOVC9SRVZPS0Ugc3RhdGVtZW50cy4KK0RPICQkIEJFR0lOIEVY RUNVVEUgZm9ybWF0KCdHUkFOVCBDUkVBVEUgT04gREFUQUJBU0UgJUkgVE8gcmVncmVzc190ZXN0 X2V4dF91c2VyJywgY3VycmVudF9kYXRhYmFzZSgpKTsgRU5EICQkOworU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTiByZWdyZXNzX3Rlc3RfZXh0X3VzZXI7CitDUkVBVEUgRVhURU5TSU9OIHRlc3Rf ZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlcjsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1h X25vc3VwZXJ1c2VyOworLS0gQ2hlY2sgdGhhdCBzY2hlbWEgaXMgb3duZWQgYnkgdGhlIGNyZWF0 aW5nIHVzZXIgKG5vdCBib290c3RyYXAgc3VwZXJ1c2VyKQorU0VMRUNUIG4ubnNwbmFtZSwgbi5u c3Bvd25lciA9IGN1cnJlbnRfdXNlcjo6cmVncm9sZSBhcyBvd25lZF9ieV9jdXJyZW50X3VzZXIK K0ZST00gcGdfbmFtZXNwYWNlIG4KK1dIRVJFIG4ubnNwbmFtZSA9ICd0ZXN0X293bmVkX3NjaGVt YV9ub3N1cGVydXNlcic7CistLSBVcGdyYWRlcyBzaG91bGQgd29yayBmb3Igc3VwZXJ1c2VyPWZh bHNlIGV4dGVuc2lvbnMKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9z dXBlcnVzZXIgVVBEQVRFIFRPICcxLjEnOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9z dXBlcnVzZXI7CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVz ZXI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKKy0tIFRlc3Qgb3duZWRfc2NoZW1h ICsgdHJ1c3RlZD10cnVlIGV4dGVuc2lvbgorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3Rlc3RfZXh0X3VzZXI7CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVt YV90cnVzdGVkOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZDsKKy0tIENoZWNr IHRoYXQgc2NoZW1hIGlzIG93bmVkIGJ5IGJvb3RzdHJhcCBzdXBlcnVzZXIgZm9yIHRydXN0ZWQg ZXh0ZW5zaW9uLAorLS0gZXZlbiB0aG91Z2ggdGhlIGV4dGVuc2lvbiBpcyBvd25lZCBieSByZWdy ZXNzX3Rlc3RfZXh0X3VzZXIKK1NFTEVDVCBuLm5zcG5hbWUsIG4ubnNwb3duZXIgPSAxMCBhcyBv d25lZF9ieV9ib290c3RyYXBfc3VwZXJ1c2VyCitGUk9NIHBnX25hbWVzcGFjZSBuCitXSEVSRSBu Lm5zcG5hbWUgPSAndGVzdF9vd25lZF9zY2hlbWFfdHJ1c3RlZCc7CistLSBVcGRhdGluZyB0cnVz dGVkIGV4dGVuc2lvbnMgc2hvdWxkIHdvcmsgbm9ybWFsbHkKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0 X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZCBVUERBVEUgVE8gJzEuMSc7CitcZHgrIHRlc3RfZXh0 X293bmVkX3NjaGVtYV90cnVzdGVkOworRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2No ZW1hX3RydXN0ZWQ7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CitETyAkJCBCRUdJTiBF WEVDVVRFIGZvcm1hdCgnUkVWT0tFIENSRUFURSBPTiBEQVRBQkFTRSAlSSBGUk9NIHJlZ3Jlc3Nf dGVzdF9leHRfdXNlcicsIGN1cnJlbnRfZGF0YWJhc2UoKSk7IEVORCAkJDsKK0RST1AgVVNFUiBy ZWdyZXNzX3Rlc3RfZXh0X3VzZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC0tMS4xLnNxbCBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYS0tMS4wLS0xLjEu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hODdiZTFhYzk2Nwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3Rf ZXh0X293bmVkX3NjaGVtYS0tMS4wLS0xLjEuc3FsCkBAIC0wLDAgKzEsMyBAQAorLS0gVGVzdCBl eHRlbnNpb24gdXBncmFkZSBzY3JpcHQKK0NSRUFURSBGVU5DVElPTiBvd25lZDIoKSBSRVRVUk5T IHRleHQKKyAgTEFOR1VBR0UgU1FMIEFTICQkIFNFTEVDVCAnb3duZWQyJzo6dGV4dCAkJDsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVk X3NjaGVtYS0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3Rf ZXh0X293bmVkX3NjaGVtYS0tMS4wLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uNjcyYWI4ZTYwN2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwKQEAgLTAsMCAr MSwyIEBACitDUkVBVEUgRlVOQ1RJT04gb3duZWQxKCkgUkVUVVJOUyB0ZXh0CitMQU5HVUFHRSBT UUwgQVMgJCQgU0VMRUNUIDEgJCQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEuY29udHJvbCBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYS5jb250cm9sCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MzFjMzhkYWVmZAotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3Nj aGVtYS5jb250cm9sCkBAIC0wLDAgKzEsNSBAQAorY29tbWVudCA9ICdUZXN0IGV4dGVuc2lvbiB3 aXRoIGFuIG93bmVkIHNjaGVtYScKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCityZWxvY2F0YWJs ZSA9IGZhbHNlCitzY2hlbWEgPSB0ZXN0X2V4dF9vd25lZF9zY2hlbWEKK293bmVkX3NjaGVtYSA9 IHRydWUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3Rf ZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlci0tMS4wLS0xLjEuc3FsIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLS0x LjAtLTEuMS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU5YmE3 ODhkNzUxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lv bnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLS0xLjAtLTEuMS5zcWwKQEAgLTAs MCArMSw1IEBACistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRo ZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJBTFRFUiBFWFRFTlNJT04g dGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyIFVQREFURSBUTyAnMS4xJyIgdG8gbG9h ZCB0aGlzIGZpbGUuIFxxdWl0CisKK0NSRUFURSBGVU5DVElPTiBvd25lZDIoKSBSRVRVUk5TIHRl eHQKKyAgTEFOR1VBR0UgU1FMIEFTICQkIFNFTEVDVCAnb3duZWQyJzo6dGV4dCAkJDsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3Nj aGVtYV9ub3N1cGVydXNlci0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlci0tMS4wLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmMyMmM3Nzc1MTkKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hl bWFfbm9zdXBlcnVzZXItLTEuMC5zcWwKQEAgLTAsMCArMSwzIEBACistLSBUZXN0IGV4dGVuc2lv biB3aXRoIG93bmVkIHNjaGVtYSAoc3VwZXJ1c2VyPWZhbHNlKQorQ1JFQVRFIEZVTkNUSU9OIG93 bmVkMSgpIFJFVFVSTlMgdGV4dAorICBMQU5HVUFHRSBTUUwgQVMgJCQgU0VMRUNUICdvd25lZDEn Ojp0ZXh0ICQkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMv dGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIuY29u dHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2FhZDA5NjA5OTYK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0 X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIuY29udHJvbApAQCAtMCwwICsxLDUgQEAKK2Nv bW1lbnQgPSAnVGVzdCBleHRlbnNpb24gd2l0aCBvd25lZCBzY2hlbWEgKHN1cGVydXNlcj1mYWxz ZSknCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworc3VwZXJ1c2VyID0gZmFsc2UKK293bmVkX3Nj aGVtYSA9IHRydWUKK3NjaGVtYSA9ICd0ZXN0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlcicKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVk X3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRl bnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4wLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmZjY2FmNGFmODIKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9z Y2hlbWFfcmVsb2NhdGFibGUtLTEuMC5zcWwKQEAgLTAsMCArMSwyIEBACitDUkVBVEUgRlVOQ1RJ T04gb3duZWQyKCkgUkVUVVJOUyB0ZXh0CitMQU5HVUFHRSBTUUwgQVMgJCQgU0VMRUNUIDEgJCQ7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9v d25lZF9zY2hlbWFfcmVsb2NhdGFibGUuY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9l eHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS5jb250cm9sCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zY2RhMWUxMjM0MQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVk X3NjaGVtYV9yZWxvY2F0YWJsZS5jb250cm9sCkBAIC0wLDAgKzEsNCBAQAorY29tbWVudCA9ICdU ZXN0IGV4dGVuc2lvbiB3aXRoIGFuIG93bmVkIHNjaGVtYScKK2RlZmF1bHRfdmVyc2lvbiA9ICcx LjAnCityZWxvY2F0YWJsZSA9IHRydWUKK293bmVkX3NjaGVtYSA9IHRydWUKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV90 cnVzdGVkLS0xLjAtLTEuMS5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90 ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZC0tMS4wLS0xLjEuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hODdiZTFhYzk2NwotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV90 cnVzdGVkLS0xLjAtLTEuMS5zcWwKQEAgLTAsMCArMSwzIEBACistLSBUZXN0IGV4dGVuc2lvbiB1 cGdyYWRlIHNjcmlwdAorQ1JFQVRFIEZVTkNUSU9OIG93bmVkMigpIFJFVFVSTlMgdGV4dAorICBM QU5HVUFHRSBTUUwgQVMgJCQgU0VMRUNUICdvd25lZDInOjp0ZXh0ICQkOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX3Ry dXN0ZWQtLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4 dF9vd25lZF9zY2hlbWFfdHJ1c3RlZC0tMS4wLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNGU1NDEwYzE4NGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZC0tMS4w LnNxbApAQCAtMCwwICsxLDMgQEAKKy0tIFRlc3QgZXh0ZW5zaW9uIHdpdGggb3duZWQgc2NoZW1h ICh0cnVzdGVkPXRydWUpCitDUkVBVEUgRlVOQ1RJT04gb3duZWQxKCkgUkVUVVJOUyB0ZXh0Cisg IExBTkdVQUdFIFNRTCBBUyAkJCBTRUxFQ1QgJ293bmVkMSc6OnRleHQgJCQ7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFf dHJ1c3RlZC5jb250cm9sIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9l eHRfb3duZWRfc2NoZW1hX3RydXN0ZWQuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMjc3YjNmMTYwM2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZC5jb250 cm9sCkBAIC0wLDAgKzEsNSBAQAorY29tbWVudCA9ICdUZXN0IGV4dGVuc2lvbiB3aXRoIG93bmVk IHNjaGVtYSAodHJ1c3RlZD10cnVlKScKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCit0cnVzdGVk ID0gdHJ1ZQorb3duZWRfc2NoZW1hID0gdHJ1ZQorc2NoZW1hID0gJ3Rlc3Rfb3duZWRfc2NoZW1h X3RydXN0ZWQnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcGdfZHVtcC9NYWtl ZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9wZ19kdW1wL01ha2VmaWxlCmluZGV4IDYxMjNi OTk0ZjYwLi5jY2EzNGE5NWFhNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Bn X2R1bXAvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3BnX2R1bXAvTWFrZWZp bGUKQEAgLTksNiArOSw5IEBAIERBVEEgPSB0ZXN0X3BnX2R1bXAtLTEuMC5zcWwKIFJFR1JFU1Mg PSB0ZXN0X3BnX2R1bXAKIFRBUF9URVNUUyA9IDEKIAorIyBmb3IgdGVzdF9leHRfb3duZWRfc2No ZW1hCitFWFRSQV9JTlNUQUxMID0gc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMKKwog aWZkZWYgVVNFX1BHWFMKIFBHX0NPTkZJRyA9IHBnX2NvbmZpZwogUEdYUyA6PSAkKHNoZWxsICQo UEdfQ09ORklHKSAtLXBneHMpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcGdf ZHVtcC90LzAwMV9iYXNlLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3BnX2R1bXAvdC8wMDFf YmFzZS5wbAppbmRleCBkZDZhMGEzYzczZi4uN2U3MWM3ZjU4NjUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9wZ19kdW1wL3QvMDAxX2Jhc2UucGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3BnX2R1bXAvdC8wMDFfYmFzZS5wbApAQCAtMzgxLDYgKzM4MSwzOCBAQCBteSAl dGVzdHMgPSAoCiAJCX0sCiAJfSwKIAorCSdDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVk X3NjaGVtYScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gMSwKKwkJY3JlYXRlX3NxbCA9PiAnQ1JF QVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7JywKKwkJcmVnZXhwID0+IHFyL14K KwkJCVxRQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHRlc3RfZXh0X293bmVkX3NjaGVt YSBXSVRIIFNDSEVNQSB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7XEUKKwkJCVxuL3htLAorCQlsaWtl ID0+IHsKKwkJCSVmdWxsX3J1bnMsCisJCQlzY2hlbWFfb25seSA9PiAxLAorCQkJc2VjdGlvbl9w cmVfZGF0YSA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJYmluYXJ5X3VwZ3JhZGUgPT4g MSwKKwkJCXdpdGhfZXh0ZW5zaW9uID0+IDEsCisJCQl3aXRob3V0X2V4dGVuc2lvbiA9PiAxCisJ CX0KKwl9LAorCisJJ0NSRUFURSBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1hJyA9PiB7CisJ CXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1h O1xFCisJCQlcbi94bSwKKwkJbGlrZSA9PiB7fSwKKwl9LAorCisJJ0FMVEVSIEVYVEVOU0lPTiB0 ZXN0X2V4dF9vd25lZF9zY2hlbWEgQUREIFNDSEVNQSB0ZXN0X2V4dF9vd25lZF9zY2hlbWEnID0+ IHsKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVk X3NjaGVtYSBBREQgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTtcRQorCQkJXG4veG0sCisJ CWxpa2UgPT4ge30sCisJfSwKKwogCSdDUkVBVEUgUk9MRSByZWdyZXNzX2R1bXBfdGVzdF9yb2xl JyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiAxLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgUk9M RSByZWdyZXNzX2R1bXBfdGVzdF9yb2xlOycsCi0tIAoyLjU1LjAKCg== --99d59bca373b90013b8673636e0537001a806badfe94564292abc40dccdb--