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 1vl83V-007UwI-0Y for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Jan 2026 16:06:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vl82U-002FYM-0P for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Jan 2026 16:05:06 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vl82T-002FXv-22 for pgsql-hackers@lists.postgresql.org; Wed, 28 Jan 2026 16:05:06 +0000 Received: from mail-yx1-xb130.google.com ([2607:f8b0:4864:20::b130]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vl82R-00000000tsx-0t3s for pgsql-hackers@lists.postgresql.org; Wed, 28 Jan 2026 16:05:05 +0000 Received: by mail-yx1-xb130.google.com with SMTP id 956f58d0204a3-649605d3664so5478916d50.3 for ; Wed, 28 Jan 2026 08:05:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769616301; cv=none; d=google.com; s=arc-20240605; b=iir/w6j+JQ7JwmYRQotUznDExUhMHdqQcz5wSAIyCzfh34IlcydmBE8E+lyECn4qeJ L+u/0GABv+SK1Id1R0WGtQwer6hy/Dk62dpE7fqk4ytyAoMhD3Fr4yeJUav0MJ8Ql50m +4BW5a7Dlg5ovDuhPZ+M0YXfSpGZwXCKDDzv3FeUd1ksFM+E+dLvNBpwQQk82vKeM5/I H1cWHs6RyYTv98F5bQ9isL5o2t+LuskMhtzy+3E6TM8uwU3y/qRtQTLp9Opk4ZtQVmUG k+/NrKEI0CFMYsCw9jhPeKwIJV644NGyPlUFdwN5LHen7L44bNJS4N6KqcOZP8dwPETZ 1OpA== 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=NvTranoFcNj7JXtSFXhcrKfwnInoxhopCi9SZjCnuOA=; fh=CvtgDjjnAgslbIHioNeF0VcJIELANOoSrfkx8E6S+SE=; b=JurEDKcNvquOTzjjox7YWUxCgiNsXD1AjimgNcfDEG7cC2Wa9u7bsdLWnWSJ23EolE vX7xv5ky47Vx1XuFLiMpMP9D+77q6ydatc2DtQ4xxnr5dKunpFa1XugQvYmrbLUIbWcR bjgFpVMXAOR4mrp2q0IMWaoMrJBlQPGitjvstOHSLeMvH1lGcVsnj8ViRphrs/Mk2LBm /rs5romFskB8ggDdle+CYk0Wm0i9WfyoASMzzKij1UeQwiXv+TRvbCOB90umrPwOx3sG RtPFyip+xLKIHe86isUunZBxK2W3uxH2uj80BYHZtlFNfe21p/4kEc8IBzXKRO8RDwIp pOqA==; 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=percona.com; s=google; t=1769616301; x=1770221101; 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=NvTranoFcNj7JXtSFXhcrKfwnInoxhopCi9SZjCnuOA=; b=gC5z7GUcMz+bxQCQ/UEx8pd/68GFm4CyJXHshp5AwEpbTz0Ren5OmuAzo0M0KFwwMA izkHMHF9y6x/4KZxAXAH8+0KtpD95uD1+FuiBDR++YFZLi1YXZVXgsiYBreswVMLLRup 5y32XBzve82dIaP8RYuTyUwDlLjfCk1jOJ9+0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769616301; x=1770221101; 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=NvTranoFcNj7JXtSFXhcrKfwnInoxhopCi9SZjCnuOA=; b=AEx/U5lnwver9MBmCvKrS/3Mw6mLKBxUSYvsJLPAPu8Gt52jVjO6J5I48t6n/u4U/H 1BxylV77Lol7/OF3D+H+AfsmdE+dKOoOnlDwbDexKZmXfKtKqoQKRSkp0qQMIBgw+7aj 7ug+oiQlFhhzVb52fraX3PtyFzCqmr1LtqxBko1EA9BFSc7B8XlW6SPIBaIBB8HLfU8B S0BnGZC4pYyBMNVLdhrtrnRuTDT0MsXWuD15SkClDmbqYEn0Q++2aDbLuJ/PB7Ao2c4O k7lubwIzHmbFpY86xpYd2hD9qzSTpkGXSbUpONsHiBHcWzXtbmSlGN5TB8mnDO5Y9g2R vO/A== X-Forwarded-Encrypted: i=1; AJvYcCXAT+wC8vgtjwpk4/xNfXxObF9R4uoWr+2q2n3aK0+wsP0u4lp/716+DbnMKknNk1tnqM/pdoLG2Kk9Aziu@lists.postgresql.org X-Gm-Message-State: AOJu0Yx6UljiWe7/fpOFXHC+12ZOwkb/DPiJUOITxliu8XELZ7CL0PJe bdpYbMqw8dUc3KU1ebMtM3SSbhP3UgpUuhxSlOFJMhAdnJaiKhfyihDm0hwRk7OWBTQBcfVTxdK hePnvG48EYa0PvSyjU2Rumalq0X6L3Fz8thWCHmX9jC0o0P7InCVtRX6+y9eBVbYCayOSZ3/cfv wAKNz567Qnkk3BV3brsa6xTIb3C2gs85LalmtP8J6ynmMljVLyH3PWwuNKv/pgQ27+N01gLMwiq SVcfvHA5hFl2831z32GeW3PVccYqQXTVuc0buwfbTLGTI4ogoQuNLxJCu/mz+rUZ98= X-Gm-Gg: AZuq6aKkyocruZXnoYUF+sOFd9M9YTvmrI2ZH5gE63wXWuVv7wuXLEXyX6jyjaGWsND 0Kzx/CU7OE3/LNXiPXa08T17uyG+X6oWpkwRkO96Wdy5+ex7Su87IcK7A41MCi0s+JL2uVnx5yJ 3F6s1U7UCeotgpEcKeveIk62wgzd0qYbnOd/6qwX2Hc9e0keg2LoXT6OAo7pXMb2ImgbLp/f3u7 AZQmbYyFgyu5sgb41RBSoD57m+5PDvvo58gSDZjq3BmjQ6Pt5a25tktQyoIypBPDpREXUWLXIu7 Dr7JeyHzCOBcW8USCKGs6XS4ZSvAA0cyfcQNTJi9W+m7tIOJt53h9Uvs X-Received: by 2002:a53:d016:0:b0:649:32cc:18d2 with SMTP id 956f58d0204a3-6498fc6693emr3655059d50.78.1769616301038; Wed, 28 Jan 2026 08:05:01 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Zsolt Parragi Date: Wed, 28 Jan 2026 16:04:49 +0000 X-Gm-Features: AZwV_Qg5HdlBC991GJJPXGsmqApWWjW17DsAg4JZSL2AgbfFv16j6bBwlgzZFuQ Message-ID: Subject: Re: Custom oauth validator options To: Jacob Champion Cc: VASUKI M , PostgreSQL Hackers , david.g.johnston@gmail.com, Robert Haas , myon@debian.org Content-Type: multipart/mixed; boundary="00000000000004209e064974e7d0" X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: percona,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000004209e064974e7d0 Content-Type: text/plain; charset="UTF-8" I implemented a DefineCustomValidatorStringVariable PoC - I don't like it that much. It adds too much boilerplate code for a very specific feature. If you say we should go with a more limited approach, I think my earlier simple version is better, because it is simple. I'll also try to think about other approaches. And also let me go back to my concern that > Scoping validators to a specific prefix fixes the collision issue, but > it also goes in a different direction. I wrote this because of the simple "guc.some_name" example, as the fixed guc prefix - and previously I also looked into MarkGUCPrefixReserved, and I realized that there's no easy way to use that for enforcing prefixes for a library. And then I realized that maybe that needs an improvement, the behavior of MarkGUCPrefixReserved and DefineCustom*Variable seems like a legacy thing and not something that was intentionally designed that way. What do you think about the following patches? 0001: defines a new guc, guc_prefix_enforcement that potentially changes the behavior of prefix reservation. It has a few modes, based on which missing prefix reservations or variables defined outside the reserved prefix result in warnings or errors during library load time. This is unrelated to pgc_hba, and applies to all custom variables. 0002: the same patch as before, with your comment (su_backend, backend, suset, user can be set in pg_hba) addressed, and also always enforces proper prefix reservation for pg_hba variables using 0001. * We don't have to worry about collisions, because prefixes are always enforced in pg_hba, so people can't "redefine" the fixed key/value pairs or columns * It also introduces the idea of enforcing guc prefixes for extensions. In theory this setting should start with a relaxed default (I would say warning mode), and changed to strict in a later major version, enforcing proper guc rules by default. That way, third party extensions won't be able to define gucs like pam_use_hostname. I realize that 1. This is also scope creep 2. 0001 probably should be a separate thread/discussion But I first wanted to ask your opinion about the idea / what do you think about the interaction of the two patches. --00000000000004209e064974e7d0 Content-Type: application/octet-stream; name="0001-Guc-prefix-enforcement.patch" Content-Disposition: attachment; filename="0001-Guc-prefix-enforcement.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mky7tuha0 RnJvbSAyMjNjYjU5YjI1NThlZGNlZjM5ZTg4NDgyYzBlMGI0ZjA5M2JhNzViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQGNhbmNlbGxh ci5odT4KRGF0ZTogV2VkLCAyOCBKYW4gMjAyNiAxNTozODoyNSArMDEwMApTdWJqZWN0OiBbUEFU Q0ggMS8yXSBHdWMgcHJlZml4IGVuZm9yY2VtZW50CgpUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBu ZXcgZ3VjIHZhcmlhYmxlLCBndWNfcHJlZml4X2VuZm9yY2VtZW50LgpUaGlzIHZhcmlhYmxlIGFp bXMgdG8gZW5mb3JjZSBwcm9wZXIgbmFtaW5nL3N0cnVjdHVyaW5nIG9mIGd1Ywp2YXJpYWJsZXMs IGJ5IGNoZWNraW5nIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiogbGlicmFyaWVzIHNob3Vs ZCByZXNlcnZlIGF0IGxlYXN0IG9uZSBwcmVmaXggaWYgdGhleSBkZWZpbmUgZ3VjCiAgdmFyaWFi bGVzCiogaWYgYSBsaWJyYXJ5IGRlZmluZWQgb25lIG9yIG1vcmUgcHJlZml4ZXMsIGFsbCB2YXJp YWJsZXMgc2hvdWxkIGJlCiAgZGVmaW5lZCB3aXRoaW4gdGhvc2UgcHJlZml4ZXMKKiBsaWJyYXJp ZXMgc2hvdWxkbid0IGRlZmluZSB2YXJpYWJsZXMgaW4gcHJlZml4ZXMgcmVzZXJ2ZWQgYnkgb3Ro ZXIKICBsaWJyYXJpZXMgKGV2ZW4gaWYgdGhleSBkb24ndCByZXNlcnZlIGEgcHJlZml4KQoKSXQg aGFzCjQgcG9zc2libGUgdmFsdWVzOgoKKiBvZmYsIHdoaWNoIGlzIHRoZSBleGlzdGluZyBlYXJs aWVyIGJlaGF2aW9yLCBpdCBkb2VzIG5vdGhpbmcKKiB3YXJuaW5nLCBpbiB3aGljaCB2aW9sYXRp b24gb2YgYW55IG9mIHRoZSBhYm92ZSBjb25kaXRpb25zIHJlc3VsdHMgaW4KICBhbiBhcHByb3By aWF0ZSB3YXJuaW5nIG1lc3NhZ2UKKiBwcmVmaXgsIGluIHdoaWNoIGNhc2UgdGhlIGZpcnN0IGNv bmRpdGlvbiBpcyBzdGlsbCBvbmx5IGEgd2FybmluZywgYnV0CiAgdGhlIHNlY29uZCBhbmQgdGhp cmQgcmVzdWx0IGluIGFuIGVycm9yCiogc3RyaWN0LCBpbiB3aGljaCBjYXNlIGFueSB2aW9sYXRp b24gcmVzdWx0cyBpbiBhbiBlcnJvcgoKVGhlIGN1cnJlbnQgcGF0Y2ggc2V0cyB0aGUgZGVmYXVs dCBvZiB0aGlzIHZhbHVlIHRvIG9mZiAob3IgbWF5YmUgaXQKc2hvdWxkIGJlIHdhcm5pbmc/KSwg YW5kIGxhdGVyIG1ham9yIHZlcnNpb25zIGNhbiBpbmNyZWFzZSBpdCB0byBzdHJpY3QsCmFmdGVy IHdlIGFyZSBzdXJlIHRoYXQgbW9zdCBleHRlbnNpb25zIGZvbGxvdyB0aGVzZSBydWxlcyBwcm9w ZXJseS4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMgICAgICAgICAgICAgICAg fCAgMzggKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jICAgICAgICAgICAg IHwgICA0ICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgICAgICB8 IDE2NyArKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFt ZXRlcnMuZGF0ICAgICB8ICAgOSArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YyAgICAgICAgICAgfCAgMTMgKysKIHNyYy9pbmNsdWRlL2ZtZ3IuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9ndWMuaCAgICAgICAgICAgICAg ICAgICAgICAgfCAgMTcgKysKIHNyYy9pbmNsdWRlL3V0aWxzL2d1Y190YWJsZXMuaCAgICAgICAg ICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCAgICAgICAgICAgICAg ICAgIHwgICAxICsKIC4uLi90ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQvTWFrZWZpbGUgICAg ICB8ICAxNyArKwogLi4uL3Rlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVudC9tZXNvbi5idWlsZCAg IHwgIDgwICsrKysrKysrKwogLi4uL3QvMDAxX3ByZWZpeF9lbmZvcmNlbWVudC5wbCAgICAgICAg ICAgICAgIHwgMTYxICsrKysrKysrKysrKysrKysrCiAuLi4vdGVzdF9ndWNfbm9fcHJlZml4LmMg ICAgICAgICAgICAgICAgICAgICAgfCAgNDUgKysrKysKIC4uLi90ZXN0X2d1Y19ub19yZXNlcnZl LmMgICAgICAgICAgICAgICAgICAgICB8ICA0MiArKysrKwogLi4uL3Rlc3RfZ3VjX3ByZWZpeF9l bmZvcmNlbWVudC5jICAgICAgICAgICAgIHwgIDQ0ICsrKysrCiAuLi4vdGVzdF9ndWNfd3Jvbmdf cHJlZml4LmMgICAgICAgICAgICAgICAgICAgfCAgNDQgKysrKysKIDE3IGZpbGVzIGNoYW5nZWQs IDY4MiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L21vZHVsZXMvdGVzdF9ndWNfcHJlZml4X2VuZm9yY2VtZW50L01ha2VmaWxlCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1l bnQvbWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf Z3VjX3ByZWZpeF9lbmZvcmNlbWVudC90LzAwMV9wcmVmaXhfZW5mb3JjZW1lbnQucGwKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVu dC90ZXN0X2d1Y19ub19wcmVmaXguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVs ZXMvdGVzdF9ndWNfcHJlZml4X2VuZm9yY2VtZW50L3Rlc3RfZ3VjX25vX3Jlc2VydmUuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9ndWNfcHJlZml4X2VuZm9yY2Vt ZW50L3Rlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVudC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQvdGVzdF9ndWNfd3Jvbmdf cHJlZml4LmMKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMgYi9z cmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMKaW5kZXggZTYzNmNjODFjZjguLjQ0NDA4ZjJm Njk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvZm1nci9kZm1nci5jCkBAIC01OSw2ICs1OSwxMiBAQCBzdHJ1Y3QgRHlu YW1pY0ZpbGVMaXN0CiBzdGF0aWMgRHluYW1pY0ZpbGVMaXN0ICpmaWxlX2xpc3QgPSBOVUxMOwog c3RhdGljIER5bmFtaWNGaWxlTGlzdCAqZmlsZV90YWlsID0gTlVMTDsKIAorLyoKKyAqIFRyYWNr IHRoZSBsaWJyYXJ5IGN1cnJlbnRseSBiZWluZyBsb2FkZWQgKGR1cmluZyBfUEdfaW5pdCBleGVj dXRpb24pLgorICogVGhpcyBhbGxvd3MgR1VDIGNvZGUgdG8ga25vdyB3aGljaCBsaWJyYXJ5IGlz IGRlZmluaW5nIGN1c3RvbSB2YXJpYWJsZXMuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpjdXJy ZW50X2xvYWRpbmdfbGlicmFyeV9uYW1lID0gTlVMTDsKKwogLyogc3RhdCgpIGNhbGwgdW5kZXIg V2luMzIgcmV0dXJucyBhbiBzdF9pbm8gZmllbGQsIGJ1dCBpdCBoYXMgbm8gbWVhbmluZyAqLwog I2lmbmRlZiBXSU4zMgogI2RlZmluZSBTQU1FX0lOT0RFKEEsQikgKChBKS5zdF9pbm8gPT0gKEIp Lmlub2RlICYmIChBKS5zdF9kZXYgPT0gKEIpLmRldmljZSkKQEAgLTI5MywxMSArMjk5LDMzIEBA IGludGVybmFsX2xvYWRfbGlicmFyeShjb25zdCBjaGFyICpsaWJuYW1lKQogCiAJCS8qCiAJCSAq IElmIHRoZSBsaWJyYXJ5IGhhcyBhIF9QR19pbml0KCkgZnVuY3Rpb24sIGNhbGwgaXQuCisJCSAq CisJCSAqIFNldCBjdXJyZW50X2xvYWRpbmdfbGlicmFyeV9uYW1lIHNvIHRoYXQgR1VDIGNvZGUg Y2FuIHRyYWNrIHdoaWNoCisJCSAqIGxpYnJhcnkgaXMgZGVmaW5pbmcgY3VzdG9tIHZhcmlhYmxl cy4gVXNlIHRoZSBtb2R1bGUgbmFtZSBmcm9tIHRoZQorCQkgKiBtYWdpYyBibG9jayBpZiBhdmFp bGFibGUsIG90aGVyd2lzZSBleHRyYWN0IGZyb20gdGhlIGZpbGVuYW1lLgogCQkgKi8KIAkJUEdf aW5pdCA9IChQR19pbml0X3QpIGRsc3ltKGZpbGVfc2Nhbm5lci0+aGFuZGxlLCAiX1BHX2luaXQi KTsKIAkJaWYgKFBHX2luaXQpCisJCXsKKwkJCWlmIChmaWxlX3NjYW5uZXItPm1hZ2ljLT5uYW1l ICE9IE5VTEwpCisJCQkJY3VycmVudF9sb2FkaW5nX2xpYnJhcnlfbmFtZSA9IGZpbGVfc2Nhbm5l ci0+bWFnaWMtPm5hbWU7CisJCQllbHNlCisJCQl7CisJCQkJLyogRXh0cmFjdCBtb2R1bGUgbmFt ZSBmcm9tIGxpYnJhcnkgcGF0aCAqLworCQkJCWNvbnN0IGNoYXIgKmJhc2VuYW1lID0gc3RycmNo cihsaWJuYW1lLCAnLycpOworCisJCQkJaWYgKGJhc2VuYW1lKQorCQkJCQliYXNlbmFtZSsrOwor CQkJCWVsc2UKKwkJCQkJYmFzZW5hbWUgPSBsaWJuYW1lOworCQkJCWN1cnJlbnRfbG9hZGluZ19s aWJyYXJ5X25hbWUgPSBiYXNlbmFtZTsKKwkJCX0KKwogCQkJKCpQR19pbml0KSAoKTsKIAorCQkJ Y3VycmVudF9sb2FkaW5nX2xpYnJhcnlfbmFtZSA9IE5VTEw7CisJCX0KKwogCQkvKiBPSyB0byBs aW5rIGl0IGludG8gbGlzdCAqLwogCQlpZiAoZmlsZV9saXN0ID09IE5VTEwpCiAJCQlmaWxlX2xp c3QgPSBmaWxlX3NjYW5uZXI7CkBAIC03NDYsMyArNzc0LDEzIEBAIFJlc3RvcmVMaWJyYXJ5U3Rh dGUoY2hhciAqc3RhcnRfYWRkcmVzcykKIAkJc3RhcnRfYWRkcmVzcyArPSBzdHJsZW4oc3RhcnRf YWRkcmVzcykgKyAxOwogCX0KIH0KKworLyoKKyAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbGli cmFyeSBjdXJyZW50bHkgYmVpbmcgbG9hZGVkIChkdXJpbmcgX1BHX2luaXQpLAorICogb3IgTlVM TCBpZiBubyBsaWJyYXJ5IGlzIGN1cnJlbnRseSBiZWluZyBsb2FkZWQuCisgKi8KK2NvbnN0IGNo YXIgKgorZ2V0X2N1cnJlbnRfbG9hZGluZ19saWJyYXJ5X25hbWUodm9pZCkKK3sKKwlyZXR1cm4g Y3VycmVudF9sb2FkaW5nX2xpYnJhcnlfbmFtZTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvbWlzY2luaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQu YwppbmRleCA1NjNmMjAzNzRmZi4uYWFmZmU5NDNiMmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvbWlzY2luaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Np bml0LmMKQEAgLTE4NTYsNiArMTg1Niw4IEBAIHByb2Nlc3Nfc2hhcmVkX3ByZWxvYWRfbGlicmFy aWVzKHZvaWQpCiAJCQkJICAgZmFsc2UpOwogCXByb2Nlc3Nfc2hhcmVkX3ByZWxvYWRfbGlicmFy aWVzX2luX3Byb2dyZXNzID0gZmFsc2U7CiAJcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJp ZXNfZG9uZSA9IHRydWU7CisKKwljaGVja19ndWNfcHJlZml4X3Jlc2VydmF0aW9ucygpOwogfQog CiAvKgpAQCAtMTg3MCw2ICsxODcyLDggQEAgcHJvY2Vzc19zZXNzaW9uX3ByZWxvYWRfbGlicmFy aWVzKHZvaWQpCiAJbG9hZF9saWJyYXJpZXMobG9jYWxfcHJlbG9hZF9saWJyYXJpZXNfc3RyaW5n LAogCQkJCSAgICJsb2NhbF9wcmVsb2FkX2xpYnJhcmllcyIsCiAJCQkJICAgdHJ1ZSk7CisKKwlj aGVja19ndWNfcHJlZml4X3Jlc2VydmF0aW9ucygpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMK aW5kZXggYWU5ZDVmM2ZiNzAuLjFiZDU3M2E3ZTJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTMy LDYgKzMyLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImFjY2Vzcy94 bG9nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3MuaCIKKyNpbmNsdWRlICJmbWdy LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3BhcmFtZXRlcl9hY2wuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKQEAgLTc2LDYg Kzc3LDEyIEBACiAKIHN0YXRpYyBpbnQJR1VDX2NoZWNrX2VycmNvZGVfdmFsdWU7CiAKK3R5cGVk ZWYgc3RydWN0IFJlc2VydmVkR1VDUHJlZml4Cit7CisJY2hhcgkgICAqcHJlZml4OwkJCS8qIHRo ZSByZXNlcnZlZCBwcmVmaXggKGUuZy4sICJteWV4dCIpICovCisJY2hhcgkgICAqbGlicmFyeV9u YW1lOwkvKiBsaWJyYXJ5IHRoYXQgcmVzZXJ2ZWQgdGhpcyBwcmVmaXgsIG9yIE5VTEwgKi8KK30g UmVzZXJ2ZWRHVUNQcmVmaXg7CisKIHN0YXRpYyBMaXN0ICpyZXNlcnZlZF9jbGFzc19wcmVmaXgg PSBOSUw7CiAKIC8qIGdsb2JhbCB2YXJpYWJsZXMgZm9yIGNoZWNrIGhvb2sgc3VwcG9ydCAqLwpA QCAtMjU5LDYgKzI2Niw4IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VfYXV0b19jb25maWdfdmFsdWUo Q29uZmlnVmFyaWFibGUgKipoZWFkX3AsIENvbmZpZ1ZhcmlhYmxlICoqCiBzdGF0aWMgYm9vbCB2 YWxpZF9jdXN0b21fdmFyaWFibGVfbmFtZShjb25zdCBjaGFyICpuYW1lKTsKIHN0YXRpYyBib29s IGFzc2lnbmFibGVfY3VzdG9tX3ZhcmlhYmxlX25hbWUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBz a2lwX2Vycm9ycywKIAkJCQkJCQkJCQkJaW50IGVsZXZlbCk7CitzdGF0aWMgUmVzZXJ2ZWRHVUNQ cmVmaXggKmZpbmRfcmVzZXJ2ZWRfcHJlZml4X2Zvcl92YXJpYWJsZShjb25zdCBjaGFyICp2YXJu YW1lKTsKK3N0YXRpYyBib29sIGxpYnJhcnlfaGFzX3Jlc2VydmVkX3ByZWZpeChjb25zdCBjaGFy ICpsaWJyYXJ5X25hbWUpOwogc3RhdGljIHZvaWQgZG9fc2VyaWFsaXplKGNoYXIgKipkZXN0cHRy LCBTaXplICptYXhieXRlcywKIAkJCQkJCSBjb25zdCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1 dGVfcHJpbnRmKDMsIDQpOwogc3RhdGljIGJvb2wgY2FsbF9ib29sX2NoZWNrX2hvb2soY29uc3Qg c3RydWN0IGNvbmZpZ19nZW5lcmljICpjb25mLCBib29sICpuZXd2YWwsCkBAIC0xMDIyLDEwICsx MDMxLDEwIEBAIGFzc2lnbmFibGVfY3VzdG9tX3ZhcmlhYmxlX25hbWUoY29uc3QgY2hhciAqbmFt ZSwgYm9vbCBza2lwX2Vycm9ycywgaW50IGVsZXZlbCkKIAkJLyogLi4uIGFuZCBpdCBtdXN0IG5v dCBtYXRjaCBhbnkgcHJldmlvdXNseS1yZXNlcnZlZCBwcmVmaXggKi8KIAkJZm9yZWFjaChsYywg cmVzZXJ2ZWRfY2xhc3NfcHJlZml4KQogCQl7Ci0JCQljb25zdCBjaGFyICpyY3ByZWZpeCA9IGxm aXJzdChsYyk7CisJCQlSZXNlcnZlZEdVQ1ByZWZpeCAqcmVzZXJ2YXRpb24gPSAoUmVzZXJ2ZWRH VUNQcmVmaXggKikgbGZpcnN0KGxjKTsKIAotCQkJaWYgKHN0cmxlbihyY3ByZWZpeCkgPT0gY2xh c3NMZW4gJiYKLQkJCQlzdHJuY21wKG5hbWUsIHJjcHJlZml4LCBjbGFzc0xlbikgPT0gMCkKKwkJ CWlmIChzdHJsZW4ocmVzZXJ2YXRpb24tPnByZWZpeCkgPT0gY2xhc3NMZW4gJiYKKwkJCQlzdHJu Y21wKG5hbWUsIHJlc2VydmF0aW9uLT5wcmVmaXgsIGNsYXNzTGVuKSA9PSAwKQogCQkJewogCQkJ CWlmICghc2tpcF9lcnJvcnMpCiAJCQkJCWVyZXBvcnQoZWxldmVsLApAQCAtMTAzMyw3ICsxMDQy LDcgQEAgYXNzaWduYWJsZV9jdXN0b21fdmFyaWFibGVfbmFtZShjb25zdCBjaGFyICpuYW1lLCBi b29sIHNraXBfZXJyb3JzLCBpbnQgZWxldmVsKQogCQkJCQkJCSBlcnJtc2coImludmFsaWQgY29u ZmlndXJhdGlvbiBwYXJhbWV0ZXIgbmFtZSBcIiVzXCIiLAogCQkJCQkJCQkJbmFtZSksCiAJCQkJ CQkJIGVycmRldGFpbCgiXCIlc1wiIGlzIGEgcmVzZXJ2ZWQgcHJlZml4LiIsCi0JCQkJCQkJCQkg ICByY3ByZWZpeCkpKTsKKwkJCQkJCQkJCSAgIHJlc2VydmF0aW9uLT5wcmVmaXgpKSk7CiAJCQkJ cmV0dXJuIGZhbHNlOwogCQkJfQogCQl9CkBAIC00Nzg4LDYgKzQ3OTcsMTkgQEAgaW5pdF9jdXN0 b21fdmFyaWFibGUoY29uc3QgY2hhciAqbmFtZSwKIAlnZW4tPmZsYWdzID0gZmxhZ3M7CiAJZ2Vu LT52YXJ0eXBlID0gdHlwZTsKIAorCS8qCisJICogUmVjb3JkIHdoaWNoIGxpYnJhcnkgZGVmaW5l ZCB0aGlzIHZhcmlhYmxlLCBmb3IgR1VDIHByZWZpeCBlbmZvcmNlbWVudC4KKwkgKiBUaGlzIHdp bGwgYmUgTlVMTCBmb3IgdmFyaWFibGVzIGRlZmluZWQgb3V0c2lkZSBvZiBfUEdfaW5pdCBjb250 ZXh0LgorCSAqLworCXsKKwkJY29uc3QgY2hhciAqbGlicmFyeV9uYW1lID0gZ2V0X2N1cnJlbnRf bG9hZGluZ19saWJyYXJ5X25hbWUoKTsKKworCQlpZiAobGlicmFyeV9uYW1lKQorCQkJZ2VuLT5s aWJyYXJ5X25hbWUgPSBndWNfc3RyZHVwKEZBVEFMLCBsaWJyYXJ5X25hbWUpOworCQllbHNlCisJ CQlnZW4tPmxpYnJhcnlfbmFtZSA9IE5VTEw7CisJfQorCiAJcmV0dXJuIGdlbjsKIH0KIApAQCAt NTE0Myw2ICs1MTY1LDggQEAgRGVmaW5lQ3VzdG9tRW51bVZhcmlhYmxlKGNvbnN0IGNoYXIgKm5h bWUsCiAgKiBhbmQgdGhlbiBwcmV2ZW50cyBuZXcgb25lcyBmcm9tIGJlaW5nIGNyZWF0ZWQuCiAg KiBFeHRlbnNpb25zIHNob3VsZCBjYWxsIHRoaXMgYWZ0ZXIgdGhleSd2ZSBkZWZpbmVkIGFsbCBv ZiB0aGVpciBjdXN0b20KICAqIEdVQ3MsIHRvIGhlbHAgY2F0Y2ggbWlzc3BlbGxlZCBjb25maWct ZmlsZSBlbnRyaWVzLgorICoKKyAqIEFsc28gcmVjb3JkcyB0aGUgbGlicmFyeSB0aGF0IHJlc2Vy dmVkIHRoaXMgcHJlZml4IGZvciBlbmZvcmNlbWVudCBwdXJwb3Nlcy4KICAqLwogdm9pZAogTWFy a0dVQ1ByZWZpeFJlc2VydmVkKGNvbnN0IGNoYXIgKmNsYXNzTmFtZSkKQEAgLTUxNTEsNiArNTE3 NSw4IEBAIE1hcmtHVUNQcmVmaXhSZXNlcnZlZChjb25zdCBjaGFyICpjbGFzc05hbWUpCiAJSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKIAlHVUNIYXNoRW50cnkgKmhlbnRyeTsKIAlNZW1vcnlDb250 ZXh0IG9sZGNvbnRleHQ7CisJUmVzZXJ2ZWRHVUNQcmVmaXggKnJlc2VydmF0aW9uOworCWNvbnN0 IGNoYXIgKmxpYnJhcnlfbmFtZSA9IGdldF9jdXJyZW50X2xvYWRpbmdfbGlicmFyeV9uYW1lKCk7 CiAKIAkvKgogCSAqIENoZWNrIGZvciBleGlzdGluZyBwbGFjZWhvbGRlcnMuICBXZSBtdXN0IGFj dHVhbGx5IHJlbW92ZSBpbnZhbGlkCkBAIC01MTgzLDEyICs1MjA5LDE0MSBAQCBNYXJrR1VDUHJl Zml4UmVzZXJ2ZWQoY29uc3QgY2hhciAqY2xhc3NOYW1lKQogCQl9CiAJfQogCi0JLyogQW5kIHJl bWVtYmVyIHRoZSBuYW1lIHNvIHdlIGNhbiBwcmV2ZW50IGZ1dHVyZSBtaXN0YWtlcy4gKi8KKwkv KgorCSAqIFJlbWVtYmVyIHRoZSBwcmVmaXggYW5kIGl0cyBhc3NvY2lhdGVkIGxpYnJhcnkgc28g d2UgY2FuIHByZXZlbnQKKwkgKiBmdXR1cmUgbWlzdGFrZXMgYW5kIGVuZm9yY2UgcHJlZml4IG93 bmVyc2hpcC4KKwkgKi8KIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEdVQ01l bW9yeUNvbnRleHQpOwotCXJlc2VydmVkX2NsYXNzX3ByZWZpeCA9IGxhcHBlbmQocmVzZXJ2ZWRf Y2xhc3NfcHJlZml4LCBwc3RyZHVwKGNsYXNzTmFtZSkpOworCXJlc2VydmF0aW9uID0gKFJlc2Vy dmVkR1VDUHJlZml4ICopIHBhbGxvYyhzaXplb2YoUmVzZXJ2ZWRHVUNQcmVmaXgpKTsKKwlyZXNl cnZhdGlvbi0+cHJlZml4ID0gcHN0cmR1cChjbGFzc05hbWUpOworCWlmIChsaWJyYXJ5X25hbWUp CisJCXJlc2VydmF0aW9uLT5saWJyYXJ5X25hbWUgPSBwc3RyZHVwKGxpYnJhcnlfbmFtZSk7CisJ ZWxzZQorCQlyZXNlcnZhdGlvbi0+bGlicmFyeV9uYW1lID0gTlVMTDsKKwlyZXNlcnZlZF9jbGFz c19wcmVmaXggPSBsYXBwZW5kKHJlc2VydmVkX2NsYXNzX3ByZWZpeCwgcmVzZXJ2YXRpb24pOwog CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KIAorc3RhdGljIFJlc2VydmVk R1VDUHJlZml4ICoKK2ZpbmRfcmVzZXJ2ZWRfcHJlZml4X2Zvcl92YXJpYWJsZShjb25zdCBjaGFy ICp2YXJuYW1lKQoreworCUxpc3RDZWxsICAgKmxjOworCWNvbnN0IGNoYXIgKnNlcDsKKwlpbnQJ CQljbGFzc0xlbjsKKworCS8qIEZpbmQgdGhlIGNsYXNzIChwcmVmaXgpIHBvcnRpb24gb2YgdGhl IHZhcmlhYmxlIG5hbWUgKi8KKwlzZXAgPSBzdHJjaHIodmFybmFtZSwgR1VDX1FVQUxJRklFUl9T RVBBUkFUT1IpOworCWlmIChzZXAgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwljbGFzc0xl biA9IHNlcCAtIHZhcm5hbWU7CisKKwlmb3JlYWNoKGxjLCByZXNlcnZlZF9jbGFzc19wcmVmaXgp CisJeworCQlSZXNlcnZlZEdVQ1ByZWZpeCAqcmVzZXJ2YXRpb24gPSAoUmVzZXJ2ZWRHVUNQcmVm aXggKikgbGZpcnN0KGxjKTsKKworCQlpZiAoc3RybGVuKHJlc2VydmF0aW9uLT5wcmVmaXgpID09 IGNsYXNzTGVuICYmCisJCQlzdHJuY21wKHZhcm5hbWUsIHJlc2VydmF0aW9uLT5wcmVmaXgsIGNs YXNzTGVuKSA9PSAwKQorCQkJcmV0dXJuIHJlc2VydmF0aW9uOworCX0KKworCXJldHVybiBOVUxM OworfQorCitzdGF0aWMgYm9vbAorbGlicmFyeV9oYXNfcmVzZXJ2ZWRfcHJlZml4KGNvbnN0IGNo YXIgKmxpYnJhcnlfbmFtZSkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWlmIChsaWJyYXJ5X25h bWUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJZm9yZWFjaChsYywgcmVzZXJ2ZWRfY2xh c3NfcHJlZml4KQorCXsKKwkJUmVzZXJ2ZWRHVUNQcmVmaXggKnJlc2VydmF0aW9uID0gKFJlc2Vy dmVkR1VDUHJlZml4ICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHJlc2VydmF0aW9uLT5saWJyYXJ5 X25hbWUgIT0gTlVMTCAmJgorCQkJc3RyY21wKHJlc2VydmF0aW9uLT5saWJyYXJ5X25hbWUsIGxp YnJhcnlfbmFtZSkgPT0gMCkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsK K30KKworLyoKKyAqIENoZWNrIEdVQyBwcmVmaXggcmVzZXJ2YXRpb25zIGFmdGVyIGxpYnJhcnkg bG9hZGluZy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGF0OgorICogLSBJbiAi cHJlZml4IiBtb2RlOiBhbGwgY3VzdG9tIEdVQ3MgYXJlIGRlZmluZWQgdW5kZXIgYSByZXNlcnZl ZCBwcmVmaXgKKyAqIC0gSW4gInN0cmljdCIgbW9kZTogYWxsIGxpYnJhcmllcyB0aGF0IGRlZmlu ZSBjdXN0b20gR1VDcyBoYXZlIGNhbGxlZAorICogICBNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoKQor ICovCit2b2lkCitjaGVja19ndWNfcHJlZml4X3Jlc2VydmF0aW9ucyh2b2lkKQoreworCUhBU0hf U0VRX1NUQVRVUyBzdGF0dXM7CisJR1VDSGFzaEVudHJ5ICpoZW50cnk7CisKKwlpZiAoZ3VjX3By ZWZpeF9lbmZvcmNlbWVudCA9PSBHVUNfUFJFRklYX0VORk9SQ0VNRU5UX09GRikKKwkJcmV0dXJu OworCisJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNfaGFzaHRhYik7CisJd2hpbGUgKChoZW50 cnkgPSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK Kwl7CisJCXN0cnVjdCBjb25maWdfZ2VuZXJpYyAqZ2NvbmYgPSBoZW50cnktPmd1Y3ZhcjsKKwkJ UmVzZXJ2ZWRHVUNQcmVmaXggKnJlc2VydmF0aW9uOworCQlpbnQJCQlzdHJpY3RfZWxldmVsOwor CQlpbnQJCQlwcmVmaXhfZWxldmVsOworCQlib29sCQloYXNfcmVzZXJ2ZWRfcHJlZml4OworCisJ CS8qIFNraXAgcGxhY2Vob2xkZXJzIGFuZCBjb3JlIHZhcmlhYmxlcyAqLworCQlpZiAoZ2NvbmYt PmZsYWdzICYgR1VDX0NVU1RPTV9QTEFDRUhPTERFUikKKwkJCWNvbnRpbnVlOworCQlpZiAoZ2Nv bmYtPmxpYnJhcnlfbmFtZSA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJc3RyaWN0X2VsZXZl bCA9IChndWNfcHJlZml4X2VuZm9yY2VtZW50ID09IEdVQ19QUkVGSVhfRU5GT1JDRU1FTlRfU1RS SUNUKQorCQkJPyBGQVRBTCA6IFdBUk5JTkc7CisJCXByZWZpeF9lbGV2ZWwgPSAoZ3VjX3ByZWZp eF9lbmZvcmNlbWVudCA9PSBHVUNfUFJFRklYX0VORk9SQ0VNRU5UX1dBUk4pCisJCQk/IFdBUk5J TkcgOiBGQVRBTDsKKworCQloYXNfcmVzZXJ2ZWRfcHJlZml4ID0gbGlicmFyeV9oYXNfcmVzZXJ2 ZWRfcHJlZml4KGdjb25mLT5saWJyYXJ5X25hbWUpOworCQlpZiAoIWhhc19yZXNlcnZlZF9wcmVm aXgpCisJCXsKKwkJCWVyZXBvcnQoc3RyaWN0X2VsZXZlbCwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coImV4dGVuc2lvbiBcIiVz XCIgZGVmaW5lcyBHVUMgdmFyaWFibGVzIHdpdGhvdXQgY2FsbGluZyBNYXJrR1VDUHJlZml4UmVz ZXJ2ZWQoKSIsCisJCQkJCQkJZ2NvbmYtPmxpYnJhcnlfbmFtZSksCisJCQkJCSBlcnJkZXRhaWwo IlZhcmlhYmxlIFwiJXNcIiB3YXMgZGVmaW5lZCB3aXRob3V0IHByZWZpeCByZXNlcnZhdGlvbi4i LAorCQkJCQkJCSAgIGdjb25mLT5uYW1lKSwKKwkJCQkJIGVycmhpbnQoIkV4dGVuc2lvbnMgc2hv dWxkIGNhbGwgTWFya0dVQ1ByZWZpeFJlc2VydmVkKCkgYWZ0ZXIgZGVmaW5pbmcgdGhlaXIgR1VD IHZhcmlhYmxlcy4iKSkpOworCQl9CisKKwkJcmVzZXJ2YXRpb24gPSBmaW5kX3Jlc2VydmVkX3By ZWZpeF9mb3JfdmFyaWFibGUoZ2NvbmYtPm5hbWUpOworCisJCWlmIChyZXNlcnZhdGlvbiA9PSBO VUxMKQorCQl7CisJCQlpZiAoaGFzX3Jlc2VydmVkX3ByZWZpeCkKKwkJCXsKKwkJCQllcmVwb3J0 KHByZWZpeF9lbGV2ZWwsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVS X1ZBTFVFKSwKKwkJCQkJCSBlcnJtc2coImV4dGVuc2lvbiBcIiVzXCIgZGVmaW5lcyBHVUMgdmFy aWFibGUgXCIlc1wiIG91dHNpZGUgYW55IHJlc2VydmVkIHByZWZpeCIsCisJCQkJCQkJCWdjb25m LT5saWJyYXJ5X25hbWUsIGdjb25mLT5uYW1lKSwKKwkJCQkJCSBlcnJoaW50KCJFeHRlbnNpb25z IHNob3VsZCBjYWxsIE1hcmtHVUNQcmVmaXhSZXNlcnZlZCgpIHRvIHJlc2VydmUgYSBwcmVmaXgg Zm9yIHRoZWlyIHZhcmlhYmxlcy4iKSkpOworCQkJfQorCQl9CisJCWVsc2UgaWYgKHJlc2VydmF0 aW9uLT5saWJyYXJ5X25hbWUgIT0gTlVMTCAmJgorCQkJCSBzdHJjbXAocmVzZXJ2YXRpb24tPmxp YnJhcnlfbmFtZSwgZ2NvbmYtPmxpYnJhcnlfbmFtZSkgIT0gMCkKKwkJeworCQkJLyogVmFyaWFi bGUgaXMgdW5kZXIgYSBwcmVmaXggcmVzZXJ2ZWQgYnkgYSBkaWZmZXJlbnQgbGlicmFyeSAqLwor CQkJZXJlcG9ydChwcmVmaXhfZWxldmVsLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygiZXh0ZW5zaW9uIFwiJXNcIiBkZWZpbmVz IEdVQyB2YXJpYWJsZSBcIiVzXCIgdW5kZXIgcHJlZml4IHJlc2VydmVkIGJ5IFwiJXNcIiIsCisJ CQkJCQkJZ2NvbmYtPmxpYnJhcnlfbmFtZSwgZ2NvbmYtPm5hbWUsIHJlc2VydmF0aW9uLT5saWJy YXJ5X25hbWUpKSk7CisJCX0KKwl9Cit9CisKIAogLyoKICAqIFJldHVybiBhbiBhcnJheSBvZiBt b2RpZmllZCBHVUMgb3B0aW9ucyB0byBzaG93IGluIEVYUExBSU4uCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDdjNjBiMTI1NTY0Li5iMWVhNjEyMTIwNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKQEAgLTExNjAsNiAr MTE2MCwxNSBAQAogICBib290X3ZhbCA9PiAnZmFsc2UnLAogfSwKIAoreyBuYW1lID0+ICdndWNf cHJlZml4X2VuZm9yY2VtZW50JywgdHlwZSA9PiAnZW51bScsIGNvbnRleHQgPT4gJ1BHQ19TSUdI VVAnLCBncm91cCA9PiAnREVWRUxPUEVSX09QVElPTlMnLAorICBzaG9ydF9kZXNjID0+ICdFbmZv cmNlbWVudCBtb2RlIGZvciBHVUMgcHJlZml4IHJlc2VydmF0aW9ucy4nLAorICBsb25nX2Rlc2Mg PT4gJ0NvbnRyb2xzIHdoZXRoZXIgdmlvbGF0aW9ucyBvZiBHVUMgcHJlZml4IHJlc2VydmF0aW9u cyBnZW5lcmF0ZSB3YXJuaW5ncyBvciBlcnJvcnMuJywKKyAgZmxhZ3MgPT4gJ0dVQ19OT1RfSU5f U0FNUExFJywKKyAgdmFyaWFibGUgPT4gJ2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQnLAorICBib290 X3ZhbCA9PiAnR1VDX1BSRUZJWF9FTkZPUkNFTUVOVF9PRkYnLAorICBvcHRpb25zID0+ICdndWNf cHJlZml4X2VuZm9yY2VtZW50X29wdGlvbnMnLAorfSwKKwogeyBuYW1lID0+ICdoYXNoX21lbV9t dWx0aXBsaWVyJywgdHlwZSA9PiAncmVhbCcsIGNvbnRleHQgPT4gJ1BHQ19VU0VSU0VUJywgZ3Jv dXAgPT4gJ1JFU09VUkNFU19NRU0nLAogICBzaG9ydF9kZXNjID0+ICdNdWx0aXBsZSBvZiAid29y a19tZW0iIHRvIHVzZSBmb3IgaGFzaCB0YWJsZXMuJywKICAgZmxhZ3MgPT4gJ0dVQ19FWFBMQUlO JywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNzNmZjZhZDBhMzIuLjBjNDky ZmQ0ZmM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtNDkxLDYgKzQ5MSwx NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19lbnVtX2VudHJ5IGZpbGVfY29weV9tZXRo b2Rfb3B0aW9uc1tdID0gewogCXtOVUxMLCAwLCBmYWxzZX0KIH07CiAKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgZ3VjX3ByZWZpeF9lbmZvcmNlbWVudF9vcHRpb25zW10g PSB7CisJeyJvZmYiLCBHVUNfUFJFRklYX0VORk9SQ0VNRU5UX09GRiwgZmFsc2V9LAorCXsid2Fy biIsIEdVQ19QUkVGSVhfRU5GT1JDRU1FTlRfV0FSTiwgZmFsc2V9LAorCXsicHJlZml4IiwgR1VD X1BSRUZJWF9FTkZPUkNFTUVOVF9QUkVGSVgsIGZhbHNlfSwKKwl7InN0cmljdCIsIEdVQ19QUkVG SVhfRU5GT1JDRU1FTlRfU1RSSUNULCBmYWxzZX0sCisJe05VTEwsIDAsIGZhbHNlfQorfTsKKwor U3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihndWNfcHJlZml4X2VuZm9yY2VtZW50X29wdGlvbnMp ID09IChHVUNfUFJFRklYX0VORk9SQ0VNRU5UX1NUUklDVCArIDIpLAorCQkJCSAiYXJyYXkgbGVu Z3RoIG1pc21hdGNoIik7CisKIC8qCiAgKiBPcHRpb25zIGZvciBlbnVtIHZhbHVlcyBzdG9yZWQg aW4gb3RoZXIgbW9kdWxlcwogICovCkBAIC01ODEsNiArNTkyLDggQEAgaW50CQkJaHVnZV9wYWdl cyA9IEhVR0VfUEFHRVNfVFJZOwogaW50CQkJaHVnZV9wYWdlX3NpemU7CiBpbnQJCQlodWdlX3Bh Z2VzX3N0YXR1cyA9IEhVR0VfUEFHRVNfVU5LTk9XTjsKIAoraW50CQkJZ3VjX3ByZWZpeF9lbmZv cmNlbWVudCA9IEdVQ19QUkVGSVhfRU5GT1JDRU1FTlRfT0ZGOworCiAvKgogICogVGhlc2UgdmFy aWFibGVzIGFyZSBhbGwgZHVtbWllcyB0aGF0IGRvbid0IGRvIGFueXRoaW5nLCBleGNlcHQgaW4g c29tZQogICogY2FzZXMgcHJvdmlkZSB0aGUgdmFsdWUgZm9yIFNIT1cgdG8gZGlzcGxheS4gIFRo ZSByZWFsIHN0YXRlIGlzIGVsc2V3aGVyZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZm1nci5o IGIvc3JjL2luY2x1ZGUvZm1nci5oCmluZGV4IDIyZGQ2NTI2MTY5Li41YTRkZmZjNmUzMCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvZm1nci5oCisrKyBiL3NyYy9pbmNsdWRlL2ZtZ3IuaApAQCAt Nzk3LDYgKzc5Nyw3IEBAIGV4dGVybiB2b2lkIGdldF9sb2FkZWRfbW9kdWxlX2RldGFpbHMoRHlu YW1pY0ZpbGVMaXN0ICpkZnB0ciwKIAkJCQkJCQkJCSAgY29uc3QgY2hhciAqKm1vZHVsZV9uYW1l LAogCQkJCQkJCQkJICBjb25zdCBjaGFyICoqbW9kdWxlX3ZlcnNpb24pOwogZXh0ZXJuIHZvaWQg KipmaW5kX3JlbmRlenZvdXNfdmFyaWFibGUoY29uc3QgY2hhciAqdmFyTmFtZSk7CitleHRlcm4g Y29uc3QgY2hhciAqZ2V0X2N1cnJlbnRfbG9hZGluZ19saWJyYXJ5X25hbWUodm9pZCk7CiBleHRl cm4gU2l6ZSBFc3RpbWF0ZUxpYnJhcnlTdGF0ZVNwYWNlKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2Vy aWFsaXplTGlicmFyeVN0YXRlKFNpemUgbWF4c2l6ZSwgY2hhciAqc3RhcnRfYWRkcmVzcyk7CiBl eHRlcm4gdm9pZCBSZXN0b3JlTGlicmFyeVN0YXRlKGNoYXIgKnN0YXJ0X2FkZHJlc3MpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjLmggYi9zcmMvaW5jbHVkZS91dGlscy9ndWMu aAppbmRleCBiZjM5ODc4YzQzZS4uZWUwMmI5YWE5ODcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3V0aWxzL2d1Yy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2d1Yy5oCkBAIC0xMjYsNiArMTI2 LDIwIEBAIHR5cGVkZWYgZW51bQogCVBHQ19TX1NFU1NJT04sCQkJCS8qIFNFVCBjb21tYW5kICov CiB9IEd1Y1NvdXJjZTsKIAorLyoKKyAqIEVuZm9yY2VtZW50IG1vZGVzIGZvciBHVUMgcHJlZml4 IHJlc2VydmF0aW9ucy4KKyAqCisgKiBUaGlzIGNvbnRyb2xzIGhvdyBzdHJpY3RseSB3ZSBlbmZv cmNlIHRoYXQgZXh0ZW5zaW9ucyBjYWxsCisgKiBNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoKSBhbmQg b25seSBkZWZpbmUgR1VDcyB1bmRlciB0aGVpciByZXNlcnZlZCBwcmVmaXguCisgKi8KK3R5cGVk ZWYgZW51bQoreworCUdVQ19QUkVGSVhfRU5GT1JDRU1FTlRfT0ZGLAkJLyogbm8gZW5mb3JjZW1l bnQgKGVhcmxpZXIgYmVoYXZpb3IpICovCisJR1VDX1BSRUZJWF9FTkZPUkNFTUVOVF9XQVJOLAkv KiBlbWl0IHdhcm5pbmdzIG9uIHZpb2xhdGlvbnMgKi8KKwlHVUNfUFJFRklYX0VORk9SQ0VNRU5U X1BSRUZJWCwJLyogRVJST1IgaWYgR1VDIGRlZmluZWQgb3V0c2lkZSByZXNlcnZlZCBwcmVmaXgg Ki8KKwlHVUNfUFJFRklYX0VORk9SQ0VNRU5UX1NUUklDVCwJLyogRVJST1IgaWYgZXh0ZW5zaW9u IGRvZXNuJ3QgY2FsbCBNYXJrR1VDUHJlZml4UmVzZXJ2ZWQgKi8KK30gR3VjUHJlZml4RW5mb3Jj ZW1lbnQ7CisKIC8qCiAgKiBQYXJzaW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGUocykgd2lsbCBy ZXR1cm4gYSBsaXN0IG9mIG5hbWUtdmFsdWUgcGFpcnMKICAqIHdpdGggc291cmNlIGxvY2F0aW9u IGluZm8uICBXZSBhbHNvIGFidXNlIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgdG8gY2FycnkKQEAgLTI4 Nyw2ICszMDEsOCBAQCBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBsb2dfc3RhdGVtZW50X3N0YXRz OwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgbG9nX2J0cmVlX2J1aWxkX3N0YXRzOwogZXh0ZXJu IFBHRExMSU1QT1JUIGNoYXIgKmV2ZW50X3NvdXJjZTsKIAorZXh0ZXJuIFBHRExMSU1QT1JUIGlu dCBndWNfcHJlZml4X2VuZm9yY2VtZW50OworCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBjaGVj a19mdW5jdGlvbl9ib2RpZXM7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBjdXJyZW50X3JvbGVf aXNfc3VwZXJ1c2VyOwogCkBAIC00NTYsNiArNDcyLDcgQEAgZXh0ZXJuIGludAlzZXRfY29uZmln X3dpdGhfaGFuZGxlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbmZpZ19oYW5kbGUgKmhhbmRsZSwKIAkJ CQkJCQkJICAgR3VjQWN0aW9uIGFjdGlvbiwgYm9vbCBjaGFuZ2VWYWwsCiAJCQkJCQkJCSAgIGlu dCBlbGV2ZWwsIGJvb2wgaXNfcmVsb2FkKTsKIGV4dGVybiBjb25maWdfaGFuZGxlICpnZXRfY29u ZmlnX2hhbmRsZShjb25zdCBjaGFyICpuYW1lKTsKK2V4dGVybiB2b2lkIGNoZWNrX2d1Y19wcmVm aXhfcmVzZXJ2YXRpb25zKHZvaWQpOwogZXh0ZXJuIHZvaWQgQWx0ZXJTeXN0ZW1TZXRDb25maWdG aWxlKEFsdGVyU3lzdGVtU3RtdCAqYWx0ZXJzeXNzdG10KTsKIGV4dGVybiBjaGFyICpHZXRDb25m aWdPcHRpb25CeU5hbWUoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqKnZhcm5hbWUsCiAJ CQkJCQkJCSAgIGJvb2wgbWlzc2luZ19vayk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9ndWNfdGFibGVzLmggYi9zcmMvaW5jbHVkZS91dGlscy9ndWNfdGFibGVzLmgKaW5kZXggNzFh ODAxNjE5NjEuLjFiYmFhMDkyMTJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9ndWNf dGFibGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX3RhYmxlcy5oCkBAIC0yNzgsNiAr Mjc4LDggQEAgc3RydWN0IGNvbmZpZ19nZW5lcmljCiAJY2hhcgkgICAqc291cmNlZmlsZTsJCS8q IGZpbGUgY3VycmVudCBzZXR0aW5nIGlzIGZyb20gKE5VTEwgaWYgbm90CiAJCQkJCQkJCSAqIHNl dCBpbiBjb25maWcgZmlsZSkgKi8KIAlpbnQJCQlzb3VyY2VsaW5lOwkJLyogbGluZSBpbiBzb3Vy Y2UgZmlsZSAqLworCWNvbnN0IGNoYXIgKmxpYnJhcnlfbmFtZTsJLyogbGlicmFyeSB0aGF0IGRl ZmluZWQgdGhpcyB2YXJpYWJsZSwgb3IgTlVMTAorCQkJCQkJCQkgKiBmb3IgY29yZSB2YXJpYWJs ZXMgKi8KIAogCS8qIGZpZWxkcyBmb3Igc3BlY2lmaWMgdmFyaWFibGUgdHlwZXMgKi8KIAl1bmlv bgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVs ZXMvTWFrZWZpbGUKaW5kZXggNGM2ZDU2ZDk3ZDguLmJmODExZTJjYTdlIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUK QEAgLTI5LDYgKzI5LDkgQEAgU1VCRElSUyA9IFwKIAkJICB0ZXN0X2VzY2FwZSBcCiAJCSAgdGVz dF9leHRlbnNpb25zIFwKIAkJICB0ZXN0X2dpbnBvc3RpbmdsaXN0IFwKKwkJICB0ZXN0X2d1Y19w cmVmaXhfZW5mb3JjZW1lbnQgXAorCQkgIHRlc3RfaGJhX2d1YyBcCisJCSAgdGVzdF9oYmFfZ3Vj X2NvbnRleHRzIFwKIAkJICB0ZXN0X2ludDEyOCBcCiAJCSAgdGVzdF9pbnRlZ2Vyc2V0IFwKIAkJ ICB0ZXN0X2pzb25fcGFyc2VyIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24u YnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCmluZGV4IDFiMzFjNWI5OGQ2Li5k YTU0NTIxOWE5MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCkBAIC0yOSw2ICsyOSw3IEBAIHN1YmRpcign dGVzdF9kc21fcmVnaXN0cnknKQogc3ViZGlyKCd0ZXN0X2VzY2FwZScpCiBzdWJkaXIoJ3Rlc3Rf ZXh0ZW5zaW9ucycpCiBzdWJkaXIoJ3Rlc3RfZ2lucG9zdGluZ2xpc3QnKQorc3ViZGlyKCd0ZXN0 X2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQnKQogc3ViZGlyKCd0ZXN0X2ludDEyOCcpCiBzdWJkaXIo J3Rlc3RfaW50ZWdlcnNldCcpCiBzdWJkaXIoJ3Rlc3RfanNvbl9wYXJzZXInKQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQvTWFrZWZpbGUg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVudC9NYWtlZmlsZQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTI2NWM2ZWUzN2QKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVu dC9NYWtlZmlsZQpAQCAtMCwwICsxLDE3IEBACisjIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9ndWNf cHJlZml4X2VuZm9yY2VtZW50L01ha2VmaWxlCisKK01PRFVMRVMgPSB0ZXN0X2d1Y19wcmVmaXhf ZW5mb3JjZW1lbnQgdGVzdF9ndWNfbm9fcmVzZXJ2ZSB0ZXN0X2d1Y193cm9uZ19wcmVmaXggdGVz dF9ndWNfbm9fcHJlZml4CitQR0ZJTEVERVNDID0gInRlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVu dCAtIHRlc3QgbW9kdWxlIGZvciBHVUMgcHJlZml4IHJlc2VydmF0aW9uIGVuZm9yY2VtZW50Igor CitUQVBfVEVTVFMgPSAxCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcK K1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitl bHNlCitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVu dAordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3Ny Yy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWIt Z2xvYmFsLm1rCitlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2d1Y19w cmVmaXhfZW5mb3JjZW1lbnQvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZ3Vj X3ByZWZpeF9lbmZvcmNlbWVudC9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uY2NmNTlmNTMzMGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVudC9tZXNvbi5idWlsZApAQCAtMCwwICsx LDgwIEBACisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKworIyBNYWluIHRlc3QgbW9kdWxlIChnb29kIGJlaGF2aW9yKQordGVzdF9ndWNf cHJlZml4X2VuZm9yY2VtZW50X3NvdXJjZXMgPSBmaWxlcygKKyAgJ3Rlc3RfZ3VjX3ByZWZpeF9l bmZvcmNlbWVudC5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCisgIHRlc3Rf Z3VjX3ByZWZpeF9lbmZvcmNlbWVudF9zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3aW4z MnZlcl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAndGVzdF9ndWNfcHJlZml4X2Vu Zm9yY2VtZW50JywKKyAgICAnLS1GSUxFREVTQycsICd0ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1l bnQgLSB0ZXN0IG1vZHVsZSBmb3IgR1VDIHByZWZpeCByZXNlcnZhdGlvbiBlbmZvcmNlbWVudCcs XSkKK2VuZGlmCisKK3Rlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVudCA9IHNoYXJlZF9tb2R1bGUo J3Rlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVudCcsCisgIHRlc3RfZ3VjX3ByZWZpeF9lbmZvcmNl bWVudF9zb3VyY2VzLAorICBrd2FyZ3M6IHBnX3Rlc3RfbW9kX2FyZ3MsCispCit0ZXN0X2luc3Rh bGxfbGlicyArPSB0ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQKKworIyBUZXN0IG1vZHVsZSB3 aXRob3V0IHJlc2VydmF0aW9uCit0ZXN0X2d1Y19ub19yZXNlcnZlX3NvdXJjZXMgPSBmaWxlcygK KyAgJ3Rlc3RfZ3VjX25vX3Jlc2VydmUuYycsCispCisKK2lmIGhvc3Rfc3lzdGVtID09ICd3aW5k b3dzJworICB0ZXN0X2d1Y19ub19yZXNlcnZlX3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNz KHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCisgICAgJy0tTkFNRScsICd0ZXN0X2d1Y19ub19y ZXNlcnZlJywKKyAgICAnLS1GSUxFREVTQycsICd0ZXN0X2d1Y19ub19yZXNlcnZlIC0gdGVzdCBt b2R1bGUgd2l0aG91dCBwcmVmaXggcmVzZXJ2YXRpb24nLF0pCitlbmRpZgorCit0ZXN0X2d1Y19u b19yZXNlcnZlID0gc2hhcmVkX21vZHVsZSgndGVzdF9ndWNfbm9fcmVzZXJ2ZScsCisgIHRlc3Rf Z3VjX25vX3Jlc2VydmVfc291cmNlcywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAorKQor dGVzdF9pbnN0YWxsX2xpYnMgKz0gdGVzdF9ndWNfbm9fcmVzZXJ2ZQorCisjIFRlc3QgbW9kdWxl IHdpdGggd3JvbmcgcHJlZml4Cit0ZXN0X2d1Y193cm9uZ19wcmVmaXhfc291cmNlcyA9IGZpbGVz KAorICAndGVzdF9ndWNfd3JvbmdfcHJlZml4LmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9PSAn d2luZG93cycKKyAgdGVzdF9ndWNfd3JvbmdfcHJlZml4X3NvdXJjZXMgKz0gcmNfbGliX2dlbi5w cm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCisgICAgJy0tTkFNRScsICd0ZXN0X2d1 Y193cm9uZ19wcmVmaXgnLAorICAgICctLUZJTEVERVNDJywgJ3Rlc3RfZ3VjX3dyb25nX3ByZWZp eCAtIHRlc3QgbW9kdWxlIHdpdGggd3JvbmcgcHJlZml4IHJlc2VydmF0aW9uJyxdKQorZW5kaWYK KwordGVzdF9ndWNfd3JvbmdfcHJlZml4ID0gc2hhcmVkX21vZHVsZSgndGVzdF9ndWNfd3Jvbmdf cHJlZml4JywKKyAgdGVzdF9ndWNfd3JvbmdfcHJlZml4X3NvdXJjZXMsCisgIGt3YXJnczogcGdf dGVzdF9tb2RfYXJncywKKykKK3Rlc3RfaW5zdGFsbF9saWJzICs9IHRlc3RfZ3VjX3dyb25nX3By ZWZpeAorCisjIFRlc3QgbW9kdWxlIHdpdGggdmFyaWFibGUgd2l0aG91dCBwcmVmaXggKG5vIGRv dCkKK3Rlc3RfZ3VjX25vX3ByZWZpeF9zb3VyY2VzID0gZmlsZXMoCisgICd0ZXN0X2d1Y19ub19w cmVmaXguYycsCispCisKK2lmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJworICB0ZXN0X2d1Y19u b19wcmVmaXhfc291cmNlcyArPSByY19saWJfZ2VuLnByb2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJh X2FyZ3M6IFsKKyAgICAnLS1OQU1FJywgJ3Rlc3RfZ3VjX25vX3ByZWZpeCcsCisgICAgJy0tRklM RURFU0MnLCAndGVzdF9ndWNfbm9fcHJlZml4IC0gdGVzdCBtb2R1bGUgd2l0aCB2YXJpYWJsZSB3 aXRob3V0IHByZWZpeCcsXSkKK2VuZGlmCisKK3Rlc3RfZ3VjX25vX3ByZWZpeCA9IHNoYXJlZF9t b2R1bGUoJ3Rlc3RfZ3VjX25vX3ByZWZpeCcsCisgIHRlc3RfZ3VjX25vX3ByZWZpeF9zb3VyY2Vz LAorICBrd2FyZ3M6IHBnX3Rlc3RfbW9kX2FyZ3MsCispCit0ZXN0X2luc3RhbGxfbGlicyArPSB0 ZXN0X2d1Y19ub19wcmVmaXgKKwordGVzdHMgKz0geworICAnbmFtZSc6ICd0ZXN0X2d1Y19wcmVm aXhfZW5mb3JjZW1lbnQnLAorICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAg J2JkJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKKyAgJ3RhcCc6IHsKKyAgICAndGVzdHMn OiBbCisgICAgICAndC8wMDFfcHJlZml4X2VuZm9yY2VtZW50LnBsJywKKyAgICBdLAorICB9LAor fQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1l bnQvdC8wMDFfcHJlZml4X2VuZm9yY2VtZW50LnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2d1 Y19wcmVmaXhfZW5mb3JjZW1lbnQvdC8wMDFfcHJlZml4X2VuZm9yY2VtZW50LnBsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNzNmOWIxOGZhMQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9ndWNfcHJlZml4X2VuZm9yY2VtZW50L3QvMDAx X3ByZWZpeF9lbmZvcmNlbWVudC5wbApAQCAtMCwwICsxLDE2MSBAQAorIyBDb3B5cmlnaHQgKGMp IDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCBHVUMg cHJlZml4IHJlc2VydmF0aW9uIGVuZm9yY2VtZW50IG1vZGVzCisKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjCisjIFRl c3QgMTogRGVmYXVsdCBtb2RlIChvZmYpIC0gYWxsIGV4dGVuc2lvbnMgc2hvdWxkIGxvYWQgd2l0 aG91dCBlcnJvcnMKKyMKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCdtYWluJyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywgInNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyA9ICd0ZXN0X2d1Y19wcmVmaXhfZW5mb3Jj ZW1lbnQnIik7Ciskbm9kZS0+c3RhcnQ7CisKK215ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICdTSE9XIHRlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVudC50ZXN0X3Zhcicp OworaXMoJHJlc3VsdCwgJ2RlZmF1bHQnLCAnZ29vZCBleHRlbnNpb24gbG9hZHMgd2l0aCBkZWZh dWx0IGVuZm9yY2VtZW50IChvZmYpJyk7CisKKyRub2RlLT5zdG9wOworCisjCisjIFRlc3QgMjog d2FybiBtb2RlIHdpdGggZ29vZCBleHRlbnNpb24gLSBzaG91bGQgbG9hZCB3aXRoIG5vIHdhcm5p bmdzCisjCiskbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnd2Fybl9nb29k Jyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywg Imd1Y19wcmVmaXhfZW5mb3JjZW1lbnQgPSAnd2FybiciKTsKKyRub2RlLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywgInNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyA9ICd0ZXN0X2d1Y19w cmVmaXhfZW5mb3JjZW1lbnQnIik7Ciskbm9kZS0+c3RhcnQ7CisKKyRyZXN1bHQgPSAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTSE9XIHRlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVudC50 ZXN0X3ZhcicpOworaXMoJHJlc3VsdCwgJ2RlZmF1bHQnLCAnZ29vZCBleHRlbnNpb24gbG9hZHMg d2l0aCB3YXJuIGVuZm9yY2VtZW50Jyk7CisKKyMgVmVyaWZ5IG5vIHdhcm5pbmdzIHdlcmUgZW1p dHRlZAorbXkgJGxvZyA9ICRub2RlLT5sb2dmaWxlOworbXkgJGxvZ19jb250ZW50cyA9IHNsdXJw X2ZpbGUoJGxvZyk7Cit1bmxpa2UoJGxvZ19jb250ZW50cywgcXIvV0FSTklORy4qTWFya0dVQ1By ZWZpeFJlc2VydmVkLywKKwkgJ25vIHdhcm5pbmcgYWJvdXQgTWFya0dVQ1ByZWZpeFJlc2VydmVk IGZvciBnb29kIGV4dGVuc2lvbicpOwordW5saWtlKCRsb2dfY29udGVudHMsIHFyL1dBUk5JTkcu KnJlc2VydmVkIHByZWZpeC8sCisJICdubyB3YXJuaW5nIGFib3V0IHJlc2VydmVkIHByZWZpeCBm b3IgZ29vZCBleHRlbnNpb24nKTsKKworJG5vZGUtPnN0b3A7CisKKyMKKyMgVGVzdCAzOiB3YXJu IG1vZGUgd2l0aCBub19yZXNlcnZlIGV4dGVuc2lvbiAtIHNob3VsZCBsb2FkIHdpdGggd2Fybmlu ZworIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3dhcm5fbm9fcmVz ZXJ2ZScpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsICJndWNfcHJlZml4X2VuZm9yY2VtZW50ID0gJ3dhcm4nIik7Ciskbm9kZS0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsICJzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgPSAndGVzdF9n dWNfbm9fcmVzZXJ2ZSciKTsKKworIyBTdGFydCBzaG91bGQgc3VjY2VlZCBidXQgbG9nIHdhcm5p bmdzCiskbm9kZS0+c3RhcnQ7CiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnU0hPVyB0ZXN0X2d1Y19ub19yZXNlcnZlLnNvbWVfdmFyJyk7CitpcygkcmVzdWx0LCAnZGVm YXVsdCcsICdub19yZXNlcnZlIGV4dGVuc2lvbiBsb2FkcyB3aXRoIHdhcm4gZW5mb3JjZW1lbnQn KTsKKworIyBDaGVjayBsb2cgZm9yIHdhcm5pbmcKKyRsb2cgPSAkbm9kZS0+bG9nZmlsZTsKKyRs b2dfY29udGVudHMgPSBzbHVycF9maWxlKCRsb2cpOworbGlrZSgkbG9nX2NvbnRlbnRzLCBxci9X QVJOSU5HLip3aXRob3V0IGNhbGxpbmcgTWFya0dVQ1ByZWZpeFJlc2VydmVkLywKKwkgJ3dhcm4g bW9kZSBlbWl0cyB3YXJuaW5nIGZvciBleHRlbnNpb24gd2l0aG91dCBwcmVmaXggcmVzZXJ2YXRp b24nKTsKKworJG5vZGUtPnN0b3A7CisKKyMKKyMgVGVzdCA0OiBzdHJpY3QgbW9kZSB3aXRoIG5v X3Jlc2VydmUgZXh0ZW5zaW9uIC0gc2hvdWxkIGZhaWwgdG8gc3RhcnQKKyMKKyRub2RlID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdHJpY3Rfbm9fcmVzZXJ2ZScpOworJG5vZGUt PmluaXQ7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJndWNfcHJlZml4 X2VuZm9yY2VtZW50ID0gJ3N0cmljdCciKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywgInNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyA9ICd0ZXN0X2d1Y19ub19yZXNlcnZl JyIpOworCisjIFN0YXJ0IHNob3VsZCBmYWlsCitteSAkcmV0ID0gJG5vZGUtPnN0YXJ0KGZhaWxf b2sgPT4gMSk7CitpcygkcmV0LCAwLCAnc3RyaWN0IG1vZGUgcHJldmVudHMgc3RhcnR1cCB3aXRo IG5vbi1jb21wbGlhbnQgZXh0ZW5zaW9uJyk7CisKKyRsb2cgPSAkbm9kZS0+bG9nZmlsZTsKKyRs b2dfY29udGVudHMgPSBzbHVycF9maWxlKCRsb2cpOworbGlrZSgkbG9nX2NvbnRlbnRzLCBxci9G QVRBTC4qd2l0aG91dCBjYWxsaW5nIE1hcmtHVUNQcmVmaXhSZXNlcnZlZC8sCisJICdzdHJpY3Qg bW9kZSBlbWl0cyBlcnJvciBmb3IgZXh0ZW5zaW9uIHdpdGhvdXQgcHJlZml4IHJlc2VydmF0aW9u Jyk7CisKKyMKKyMgVGVzdCA1OiBwcmVmaXggbW9kZSB3aXRoIHdyb25nX3ByZWZpeCBleHRlbnNp b24gLSBzaG91bGQgZmFpbCB0byBzdGFydAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3ByZWZpeF93cm9uZycpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJndWNfcHJlZml4X2VuZm9yY2VtZW50ID0gJ3ByZWZp eCciKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgInNoYXJlZF9wcmVs b2FkX2xpYnJhcmllcyA9ICd0ZXN0X2d1Y193cm9uZ19wcmVmaXgnIik7CisKKyMgU3RhcnQgc2hv dWxkIGZhaWwKKyRyZXQgPSAkbm9kZS0+c3RhcnQoZmFpbF9vayA9PiAxKTsKK2lzKCRyZXQsIDAs ICdwcmVmaXggbW9kZSBwcmV2ZW50cyBzdGFydHVwIHdpdGggd3JvbmcgcHJlZml4IGV4dGVuc2lv bicpOworCiskbG9nID0gJG5vZGUtPmxvZ2ZpbGU7CiskbG9nX2NvbnRlbnRzID0gc2x1cnBfZmls ZSgkbG9nKTsKK2xpa2UoJGxvZ19jb250ZW50cywgcXIvRkFUQUwuKm91dHNpZGUgYW55IHJlc2Vy dmVkIHByZWZpeC8sCisJICdwcmVmaXggbW9kZSBlbWl0cyBlcnJvciBmb3IgZXh0ZW5zaW9uIGRl ZmluaW5nIEdVQyBvdXRzaWRlIHJlc2VydmVkIHByZWZpeCcpOworCisjCisjIFRlc3QgNjogd2Fy biBtb2RlIHdpdGggbm9fcHJlZml4IGV4dGVuc2lvbiAtIHNob3VsZCBsb2FkIHdpdGggd2Fybmlu ZworIyAoZXh0ZW5zaW9uIHJlc2VydmVzIGEgcHJlZml4IGJ1dCBkZWZpbmVzIHZhcmlhYmxlIHdp dGhvdXQgYW55IHByZWZpeCkKKyMKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCd3YXJuX25vX3ByZWZpeCcpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICJndWNfcHJlZml4X2VuZm9yY2VtZW50ID0gJ3dhcm4nIik7Cisk bm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJzaGFyZWRfcHJlbG9hZF9saWJy YXJpZXMgPSAndGVzdF9ndWNfbm9fcHJlZml4JyIpOworJG5vZGUtPnN0YXJ0OworCiskcmVzdWx0 ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0hPVyB0ZXN0X2d1Y19ub19wcmVmaXhf dmFyJyk7CitpcygkcmVzdWx0LCAnZGVmYXVsdCcsICdub19wcmVmaXggZXh0ZW5zaW9uIGxvYWRz IHdpdGggd2FybiBlbmZvcmNlbWVudCcpOworCiskbG9nID0gJG5vZGUtPmxvZ2ZpbGU7CiskbG9n X2NvbnRlbnRzID0gc2x1cnBfZmlsZSgkbG9nKTsKK2xpa2UoJGxvZ19jb250ZW50cywgcXIvV0FS TklORy4qb3V0c2lkZSBhbnkgcmVzZXJ2ZWQgcHJlZml4LywKKwkgJ3dhcm4gbW9kZSBlbWl0cyB3 YXJuaW5nIGZvciBleHRlbnNpb24gZGVmaW5pbmcgR1VDIHdpdGhvdXQgcHJlZml4Jyk7CisKKyRu b2RlLT5zdG9wOworCisjCisjIFRlc3QgNzogcHJlZml4IG1vZGUgd2l0aCBub19wcmVmaXggZXh0 ZW5zaW9uIC0gc2hvdWxkIGZhaWwgdG8gc3RhcnQKKyMgKGV4dGVuc2lvbiByZXNlcnZlcyBhIHBy ZWZpeCBidXQgZGVmaW5lcyB2YXJpYWJsZSB3aXRob3V0IGFueSBwcmVmaXgpCisjCiskbm9kZSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJlZml4X25vX3ByZWZpeCcpOworJG5v ZGUtPmluaXQ7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJndWNfcHJl Zml4X2VuZm9yY2VtZW50ID0gJ3ByZWZpeCciKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywgInNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyA9ICd0ZXN0X2d1Y19ub19wcmVm aXgnIik7CisKKyMgU3RhcnQgc2hvdWxkIGZhaWwKKyRyZXQgPSAkbm9kZS0+c3RhcnQoZmFpbF9v ayA9PiAxKTsKK2lzKCRyZXQsIDAsICdwcmVmaXggbW9kZSBwcmV2ZW50cyBzdGFydHVwIHdpdGgg dW5wcmVmaXhlZCB2YXJpYWJsZScpOworCiskbG9nID0gJG5vZGUtPmxvZ2ZpbGU7CiskbG9nX2Nv bnRlbnRzID0gc2x1cnBfZmlsZSgkbG9nKTsKK2xpa2UoJGxvZ19jb250ZW50cywgcXIvRkFUQUwu Km91dHNpZGUgYW55IHJlc2VydmVkIHByZWZpeC8sCisJICdwcmVmaXggbW9kZSBlbWl0cyBlcnJv ciBmb3IgZXh0ZW5zaW9uIGRlZmluaW5nIEdVQyB3aXRob3V0IHByZWZpeCcpOworCisjCisjIFRl c3QgODogdmVyaWZ5IGdvb2QgZXh0ZW5zaW9uIHdvcmtzIGluIHN0cmljdCBtb2RlCisjCiskbm9k ZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RyaWN0X2dvb2QnKTsKKyRub2Rl LT5pbml0OworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAiZ3VjX3ByZWZp eF9lbmZvcmNlbWVudCA9ICdzdHJpY3QnIik7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsICJzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgPSAndGVzdF9ndWNfcHJlZml4X2Vu Zm9yY2VtZW50JyIpOworJG5vZGUtPnN0YXJ0OworCiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnU0hPVyB0ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQudGVzdF92YXIn KTsKK2lzKCRyZXN1bHQsICdkZWZhdWx0JywgJ2dvb2QgZXh0ZW5zaW9uIGxvYWRzIHN1Y2Nlc3Nm dWxseSBpbiBzdHJpY3QgbW9kZScpOworCisjIFZlcmlmeSBubyB3YXJuaW5ncyBvciBlcnJvcnMg d2VyZSBlbWl0dGVkCiskbG9nID0gJG5vZGUtPmxvZ2ZpbGU7CiskbG9nX2NvbnRlbnRzID0gc2x1 cnBfZmlsZSgkbG9nKTsKK3VubGlrZSgkbG9nX2NvbnRlbnRzLCBxci8oV0FSTklOR3xGQVRBTCku Kk1hcmtHVUNQcmVmaXhSZXNlcnZlZC8sCisJICdubyB3YXJuaW5nL2Vycm9yIGFib3V0IE1hcmtH VUNQcmVmaXhSZXNlcnZlZCBmb3IgZ29vZCBleHRlbnNpb24gaW4gc3RyaWN0IG1vZGUnKTsKK3Vu bGlrZSgkbG9nX2NvbnRlbnRzLCBxci8oV0FSTklOR3xGQVRBTCkuKnJlc2VydmVkIHByZWZpeC8s CisJICdubyB3YXJuaW5nL2Vycm9yIGFib3V0IHJlc2VydmVkIHByZWZpeCBmb3IgZ29vZCBleHRl bnNpb24gaW4gc3RyaWN0IG1vZGUnKTsKKworJG5vZGUtPnN0b3A7CisKK2RvbmVfdGVzdGluZygp OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1l bnQvdGVzdF9ndWNfbm9fcHJlZml4LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZ3VjX3ByZWZp eF9lbmZvcmNlbWVudC90ZXN0X2d1Y19ub19wcmVmaXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNjEwYzllMTU0MzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVudC90ZXN0X2d1Y19ub19wcmVmaXgu YwpAQCAtMCwwICsxLDQ1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB0ZXN0X2d1Y19u b19wcmVmaXguYworICoJCVRlc3QgZXh0ZW5zaW9uIHRoYXQgZGVmaW5lcyBhIEdVQyB2YXJpYWJs ZSB3aXRob3V0IGEgcHJlZml4LgorICoKKyAqIFRoaXMgZXh0ZW5zaW9uIHJlc2VydmVzIGEgcHJl Zml4IGJ1dCBhbHNvIGRlZmluZXMgYSB2YXJpYWJsZSB3aXRob3V0CisgKiBhIHByZWZpeCwgd2hp Y2ggc2hvdWxkIGJlIGZsYWdnZWQgYnkgcHJlZml4IGVuZm9yY2VtZW50LgorICoKKyAqIENvcHly aWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisg KiBJREVOVElGSUNBVElPTgorICoJICBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZ3VjX3ByZWZpeF9l bmZvcmNlbWVudC90ZXN0X2d1Y19ub19wcmVmaXguYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1 ZGUgInV0aWxzL2d1Yy5oIgorCitQR19NT0RVTEVfTUFHSUNfRVhUKAorCS5uYW1lID0gInRlc3Rf Z3VjX25vX3ByZWZpeCIsCisJLnZlcnNpb24gPSBQR19WRVJTSU9OLAorKTsKKworc3RhdGljIGNo YXIgKnRlc3RfdmFyID0gTlVMTDsKKwordm9pZAorX1BHX2luaXQodm9pZCkKK3sKKwkvKiBEZWZp bmUgYSB2YXJpYWJsZSB3aXRob3V0IGFueSBwcmVmaXggKi8KKwlEZWZpbmVDdXN0b21TdHJpbmdW YXJpYWJsZSgidGVzdF9ndWNfbm9fcHJlZml4X3ZhciIsCisJCQkJCQkJICAgIlRlc3QgdmFyaWFi bGUgd2l0aG91dCBwcmVmaXgiLAorCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJICAgJnRlc3RfdmFy LAorCQkJCQkJCSAgICJkZWZhdWx0IiwKKwkJCQkJCQkgICBQR0NfU1VTRVQsCisJCQkJCQkJICAg MCwKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJICAgTlVMTCk7CisK KwlNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoInRlc3RfZ3VjX25vX3ByZWZpeCIpOworfQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQvdGVzdF9n dWNfbm9fcmVzZXJ2ZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2d1Y19wcmVmaXhfZW5mb3Jj ZW1lbnQvdGVzdF9ndWNfbm9fcmVzZXJ2ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5jNTc4ODdiYTg4YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9ndWNfcHJlZml4X2VuZm9yY2VtZW50L3Rlc3RfZ3VjX25vX3Jlc2VydmUuYwpAQCAt MCwwICsxLDQyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB0ZXN0X2d1Y19ub19yZXNl cnZlLmMKKyAqCQlUZXN0IG1vZHVsZSB0aGF0IGRlZmluZXMgR1VDcyB3aXRob3V0IGNhbGxpbmcg TWFya0dVQ1ByZWZpeFJlc2VydmVkCisgKgorICogVGhpcyBtb2R1bGUgaW50ZW50aW9uYWxseSBk b2VzIE5PVCBjYWxsIE1hcmtHVUNQcmVmaXhSZXNlcnZlZCgpIGFmdGVyCisgKiBkZWZpbmluZyBp dHMgY3VzdG9tIEdVQyB2YXJpYWJsZXMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisg KgkgIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9ndWNfcHJlZml4X2VuZm9yY2VtZW50L3Rlc3RfZ3Vj X25vX3Jlc2VydmUuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJw b3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgor CitQR19NT0RVTEVfTUFHSUNfRVhUKAorCS5uYW1lID0gInRlc3RfZ3VjX25vX3Jlc2VydmUiLAor CS52ZXJzaW9uID0gUEdfVkVSU0lPTiwKKyk7CisKK3N0YXRpYyBjaGFyICpub19yZXNlcnZlX3Zh ciA9IE5VTEw7CisKK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisJRGVmaW5lQ3VzdG9tU3RyaW5n VmFyaWFibGUoInRlc3RfZ3VjX25vX3Jlc2VydmUuc29tZV92YXIiLAorCQkJCQkJCSAgICJBIHZh cmlhYmxlIHdpdGhvdXQgcHJlZml4IHJlc2VydmF0aW9uIiwKKwkJCQkJCQkgICBOVUxMLAorCQkJ CQkJCSAgICZub19yZXNlcnZlX3ZhciwKKwkJCQkJCQkgICAiZGVmYXVsdCIsCisJCQkJCQkJICAg UEdDX1NVU0VULAorCQkJCQkJCSAgIDAsCisJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICBOVUxM LAorCQkJCQkJCSAgIE5VTEwpOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQvdGVzdF9ndWNfcHJlZml4X2VuZm9yY2VtZW50LmMgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZ3VjX3ByZWZpeF9lbmZvcmNlbWVudC90ZXN0X2d1Y19wcmVm aXhfZW5mb3JjZW1lbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MWNjYmJiMWZiOGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZ3Vj X3ByZWZpeF9lbmZvcmNlbWVudC90ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQuYwpAQCAtMCww ICsxLDQ0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB0ZXN0X2d1Y19wcmVmaXhfZW5m b3JjZW1lbnQuYworICoJCVRlc3QgZXh0ZW5zaW9uIHRoYXQgcHJvcGVybHkgcmVzZXJ2ZXMgaXRz IEdVQyBwcmVmaXguCisgKgorICogVGhpcyBleHRlbnNpb24gZGVmaW5lcyBhIEdVQyB2YXJpYWJs ZSBhbmQgY2FsbHMgTWFya0dVQ1ByZWZpeFJlc2VydmVkKCksCisgKiBkZW1vbnN0cmF0aW5nIGNv cnJlY3QgYmVoYXZpb3IuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9ndWNfcHJlZml4X2VuZm9yY2VtZW50L3Rlc3RfZ3VjX3ByZWZpeF9l bmZvcmNlbWVudC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBv c3RncmVzLmgiCisKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisK K1BHX01PRFVMRV9NQUdJQ19FWFQoCisJLm5hbWUgPSAidGVzdF9ndWNfcHJlZml4X2VuZm9yY2Vt ZW50IiwKKwkudmVyc2lvbiA9IFBHX1ZFUlNJT04sCispOworCitzdGF0aWMgY2hhciAqdGVzdF92 YXIgPSBOVUxMOworCit2b2lkCitfUEdfaW5pdCh2b2lkKQoreworCURlZmluZUN1c3RvbVN0cmlu Z1ZhcmlhYmxlKCJ0ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQudGVzdF92YXIiLAorCQkJCQkJ CSAgICJUZXN0IHZhcmlhYmxlIiwKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgICZ0ZXN0X3Zh ciwKKwkJCQkJCQkgICAiZGVmYXVsdCIsCisJCQkJCQkJICAgUEdDX1NVU0VULAorCQkJCQkJCSAg IDAsCisJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIE5VTEwpOwor CisJTWFya0dVQ1ByZWZpeFJlc2VydmVkKCJ0ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQiKTsK K30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9ndWNfcHJlZml4X2VuZm9yY2Vt ZW50L3Rlc3RfZ3VjX3dyb25nX3ByZWZpeC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2d1Y19w cmVmaXhfZW5mb3JjZW1lbnQvdGVzdF9ndWNfd3JvbmdfcHJlZml4LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRlOTRiMzY3YmI5Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2d1Y19wcmVmaXhfZW5mb3JjZW1lbnQvdGVzdF9ndWNfd3Jv bmdfcHJlZml4LmMKQEAgLTAsMCArMSw0NCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog dGVzdF9ndWNfd3JvbmdfcHJlZml4LmMKKyAqCQlUZXN0IG1vZHVsZSB0aGF0IHJlc2VydmVzIG9u ZSBwcmVmaXggYnV0IGRlZmluZXMgR1VDcyB1bmRlciBhbm90aGVyCisgKgorICogVGhpcyBtb2R1 bGUgcmVzZXJ2ZXMgdGhlIHByZWZpeCAidGVzdF9ndWNfd3JvbmciIGJ1dCBkZWZpbmVzIGEgdmFy aWFibGUKKyAqIHVuZGVyICJ0ZXN0X2d1Y19vdGhlciIuCisgKgorICogQ29weXJpZ2h0IChjKSAy MDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJ Q0FUSU9OCisgKgkgIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9ndWNfcHJlZml4X2VuZm9yY2VtZW50 L3Rlc3RfZ3VjX3dyb25nX3ByZWZpeC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKwor I2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAidXRp bHMvZ3VjLmgiCisKK1BHX01PRFVMRV9NQUdJQ19FWFQoCisJLm5hbWUgPSAidGVzdF9ndWNfd3Jv bmdfcHJlZml4IiwKKwkudmVyc2lvbiA9IFBHX1ZFUlNJT04sCispOworCitzdGF0aWMgY2hhciAq d3JvbmdfcHJlZml4X3ZhciA9IE5VTEw7CisKK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisJRGVm aW5lQ3VzdG9tU3RyaW5nVmFyaWFibGUoInRlc3RfZ3VjX290aGVyLnNvbWVfdmFyIiwKKwkJCQkJ CQkgICAiQSB2YXJpYWJsZSB1bmRlciBhIGRpZmZlcmVudCBwcmVmaXggdGhhbiByZXNlcnZlZCIs CisJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICAmd3JvbmdfcHJlZml4X3ZhciwKKwkJCQkJCQkg ICAiZGVmYXVsdCIsCisJCQkJCQkJICAgUEdDX1NVU0VULAorCQkJCQkJCSAgIDAsCisJCQkJCQkJ ICAgTlVMTCwKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIE5VTEwpOworCisJTWFya0dVQ1By ZWZpeFJlc2VydmVkKCJ0ZXN0X2d1Y193cm9uZyIpOworfQotLSAKMi40My4wCgo= --00000000000004209e064974e7d0 Content-Type: application/octet-stream; name="0002-Introduce-PGC_HBA-GUC-variables-settable-in-pg_hba.c.patch" Content-Disposition: attachment; filename="0002-Introduce-PGC_HBA-GUC-variables-settable-in-pg_hba.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mky7tuhq1 RnJvbSA1ZmMzOGQyZDkyMmMzZTIwMTIxMGE0MmU4NTQ2Y2JlYjE1ODc3NzFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpEYXRlOiBXZWQsIDcgSmFuIDIwMjYgMTk6MjU6MTEgKzAwMDAKU3ViamVjdDogW1BBVENI IDIvMl0gSW50cm9kdWNlIFBHQ19IQkE6IEdVQyB2YXJpYWJsZXMgc2V0dGFibGUgaW4gcGdfaGJh LmNvbmYKCkFkZCBhIG5ldyBHVUMgY29udGV4dCBsZXZlbCBQR0NfSEJBIHRoYXQgYWxsb3dzIGN1 c3RvbSB2YXJpYWJsZXMKdG8gYmUgc2V0IGJhc2VkIG9uIHdoaWNoIHBnX2hiYS5jb25mIGxpbmUg bWF0Y2hlcyBkdXJpbmcKYXV0aGVudGljYXRpb24uIFRoaXMgZW5hYmxlcyBhdXRoZW50aWNhdGlv biBwbHVnaW5zIGFuZCBleHRlbnNpb25zCnRvIHJlY2VpdmUgY29uZmlndXJhdGlvbiBwYXJhbWV0 ZXJzIHRoYXQgdmFyeSBiYXNlZCBvbiBIQkEgbWF0Y2hpbmcKcnVsZXMgKGNsaWVudCBhZGRyZXNz LCBkYXRhYmFzZSwgdXNlciwgYXV0aGVudGljYXRpb24gbWV0aG9kLCBldGMuKS4KCk1vdGl2YXRp b246CgpPQXV0aCBzdXBwb3J0IGludHJvZHVjZWQgc2V2ZXJhbCBPQXV0aC1zcGVjaWZpYyBjb25m aWd1cmF0aW9uCnBhcmFtZXRlcnMgdG8gcGdfaGJhLmNvbmYsIGFuZCBhZGRlZCBzdXBwb3J0IGZv ciB0aGlyZC1wYXJ0eQp2YWxpZGF0b3IgcGx1Z2lucy4gVGhlc2UgcGx1Z2lucyBvZnRlbiByZXF1 aXJlIGFkZGl0aW9uYWwKY29uZmlndXJhdGlvbiwgd2hpY2ggaXMgb25seSBwb3NzaWJsZSB3aXRo IEdVQyB2YXJpYWJsZXMuIEFzIHRoZXNlCnBsdWdpbnMgZXhlY3V0ZSBiZWZvcmUgYXV0aGVudGlj YXRpb24gY29tcGxldGVzLCB0aGV5IGNhbiBvbmx5CmRlcGVuZCBvbiBHVUMgdmFyaWFibGVzIGRl ZmluZWQgaW4gcG9zdGdyZXNxbC5jb25mIG9yCnBvc3RncmVzcWwuYXV0by5jb25mLgoKVGhpcyBs aW1pdGF0aW9uIGNyZWF0ZXMgYSBjb25maWd1cmF0aW9uIHByb2JsZW06IHBnX2hiYS5jb25mIGFs bG93cwphZG1pbmlzdHJhdG9ycyB0byBkZWZpbmUgc2V2ZXJhbCBkaWZmZXJlbnQgT0F1dGggY29u ZmlndXJhdGlvbnMgZm9yCmEgc2luZ2xlIFBvc3RncmVTUUwgaW5zdGFuY2UsIGJ1dCB2YWxpZGF0 b3IgcGx1Z2luLXNwZWNpZmljCnZhcmlhYmxlcyBjYW4gb25seSBiZSBjb25maWd1cmVkIG9uY2Ug cGVyIHNlcnZlci4KCldpdGggdGhlIGNoYW5nZXMgaW4gdGhpcyBjb21taXQsIHZhbGlkYXRvciBw bHVnaW5zIGNhbiBub3cgZGVmaW5lCnRoZWlyIEdVQyB2YXJpYWJsZXMgd2l0aCBQR0NfSEJBIGNv bnRleHQsIGFsbG93aW5nIGRpZmZlcmVudApzZXR0aW5ncyBwZXIgSEJBIGxpbmUuCgpBbm90aGVy IHVzZSBjYXNlIGlzIHRoYXQgZXh0ZW5zaW9ucyBsb2FkZWQgdmlhCnNoYXJlZF9wcmVsb2FkX2xp YnJhcmllcyBvciBzZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzIGNhbiBkZWZpbmUKdGhlc2UgdmFy aWFibGVzLCBhbGxvd2luZyBhZG1pbmlzdHJhdG9ycyB0byBjb25maWd1cmUKYXV0aGVudGljYXRp b24vYXV0aG9yaXphdGlvbi1yZWxhdGVkIHNldHRpbmdzIHBlciBIQkEgbGluZSwgZm9yCmV4YW1w bGUgdG8gaGVscCB3aXRoIHJvdyBsZXZlbCBzZWN1cml0eSBwb2xpY2llcy4KClVzZXIgaW50ZXJm YWNlOgoKVGhlIG5ldyBwYXJhbWV0ZXJzIHJldXNlIHRoZSBleGlzdGluZyBzeW50YXggb2YgcGdf aGJhLmNvbmY7IEdVQwp2YXJpYWJsZXMgY2FuIGJlIGRlZmluZWQgdGhlIHNhbWUgd2F5IGFzIGV4 aXN0aW5nIGhhcmRjb2RlZApwYXJhbWV0ZXJzOgoKICAgIGhvc3QgYWxsIGFsbCAxOTIuMTY4LjEu MC8yNCBvYXV0aCBteWV4dC5zZXR0aW5nPXZhbHVlMQogICAgaG9zdCBhbGwgYWxsIDAuMC4wLjAv MCAgICAgIG9hdXRoIG15ZXh0LnNldHRpbmc9dmFsdWUyCgpUaGlzIGFsc28gcHJvdmlkZXMgYW4g ZWFzeSBtaWdyYXRpb24gcGF0aCBpbiB0aGUgZnV0dXJlIHRvIGNvbnZlcnQKZXhpc3RpbmcgcGdf aGJhIHBhcmFtZXRlcnMgdG8gR1VDIHZhcmlhYmxlcy4KCkV4dGVuc2lvbiBpbnRlcmZhY2U6CgpX ZSBkZWZpbmUgYSBuZXcgR1VDIGNvbnRleHQsIFBHQ19IQkEsIGFuZCBhIG5ldyBzb3VyY2UsIFBH Q19TX0hCQS4KUEdDX0hCQSB2YXJpYWJsZXMgbXVzdCBiZSBkZWZpbmVkIGR1cmluZyBzaGFyZWRf cHJlbG9hZF9saWJyYXJpZXMKb3Igc2Vzc2lvbl9wcmVsb2FkX2xpYnJhcmllcy4gVGhpcyBlbnN1 cmVzIGFsbCBjdXN0b20gdmFyaWFibGVzCmFyZSByZWdpc3RlcmVkIGJlZm9yZSBjb25uZWN0aW9u cyBhcmUgYWNjZXB0ZWQuCgpQR0NfSEJBIHZhcmlhYmxlcyBjYW4gYmUgc2V0IGZyb206CiAgLSBw b3N0Z3Jlc3FsLmNvbmYKICAtIHBvc3RncmVzcWwuYXV0by5jb25mIChBTFRFUiBTWVNURU0pCiAg LSBwZ19oYmEuY29uZiAobmV3KQoKUEdDX0hCQSB2YXJpYWJsZXMgY2Fubm90IGJlIHNldCB2aWE6 CiAgLSBBTFRFUiBVU0VSIFNFVCAvIEFMVEVSIERBVEFCQVNFIFNFVAogIC0gU0VUIGNvbW1hbmQK ICAtIENvbm5lY3Rpb24gcGFyYW1ldGVycyAoUEdPUFRJT05TKQoKQWRkaXRpb25hbGx5IHRvIFBH Q19IQkEgdmFyaWFibGVzLCBTVV9CQUNLRU5ELCBCQUNLRU5ELCBTVVNFVCBhbmQgVVNFUgp2YXJp YWJsZXMgY2FuIGFsc28gYmUgc2V0IGluIHBnX2hiYS4KCkVycm9yIGhhbmRsaW5nIGNoYW5nZToK ClRoaXMgZmVhdHVyZSByZXF1aXJlcyBhIGJlaGF2aW9yIGNoYW5nZSBpbiBwZ19oYmEuY29uZiBl cnJvcgpoYW5kbGluZyB3aGljaCBtYXkgYWZmZWN0IHVzZXJzIG5vdCB1c2luZyB0aGUgbmV3IGZl YXR1cmUuCgpTaW5jZSB3ZSBhbGxvdyBib3RoIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyBhbmQK c2Vzc2lvbl9wcmVsb2FkX2xpYnJhcmllcyB0byBkZWZpbmUgUEdDX0hCQSB2YXJpYWJsZXMgKGVu YWJsaW5nCnVwZGF0ZXMgb2YgcG90ZW50aWFsbHkgc2VjdXJpdHktcmVsYXRlZCBsaWJyYXJpZXMg d2l0aG91dCBhIHNlcnZlcgpyZXN0YXJ0KSwgd2UgY2FuIG5vIGxvbmdlciByZWplY3QgdW5rbm93 biBwYXJhbWV0ZXJzIGluIHBnX2hiYS5jb25mCmF0IHBvc3RtYXN0ZXIgc3RhcnR1cC4KCkluc3Rl YWQsIHVua25vd24gcGFyYW1ldGVycyBhcmUgdHJlYXRlZCBhcyBwbGFjZWhvbGRlcnMgKHNpbWls YXIgdG8KY3VzdG9tIEdVQyB2YXJpYWJsZXMpIGFuZCBlcnJvciBoYW5kbGluZyBpcyBkZWxheWVk IHVudGlsIGFmdGVyCnNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMgY29tcGxldGVzLiBJZiBhbnkg cGxhY2Vob2xkZXIgSEJBCnZhcmlhYmxlcyByZW1haW4gdW5kZWZpbmVkIGF0IHRoYXQgcG9pbnQs IHRoZSBjb25uZWN0aW9uIGlzIGFib3J0ZWQKd2l0aCBhIEZBVEFMIGVycm9yLCBldmVuIGlmIGF1 dGhlbnRpY2F0aW9uIHByZXZpb3VzbHkgc3VjY2VlZGVkLgotLS0KIHNyYy9iYWNrZW5kL2xpYnBx L2hiYS5jICAgICAgICAgICAgICAgICAgICAgICB8ICA1OSArKysrKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2luaXQvbWlzY2luaXQuYyAgICAgICAgICAgICB8ICAgNyArCiBzcmMvYmFja2VuZC91dGls cy9pbml0L3Bvc3Rpbml0LmMgICAgICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgMTE1ICsrKysrKysrKysrCiBzcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv bGlicHEvaGJhLmggICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICsKIHNyYy9pbmNsdWRlL21p c2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS91dGls cy9ndWMuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvbW9kdWxlcy9t ZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9oYmFfZ3VjL01ha2VmaWxlICAgICAgICB8ICAyMSArKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2hiYV9ndWMvbWVzb24uYnVpbGQgICAgIHwgIDM1ICsrKysKIC4uLi90ZXN0X2hiYV9ndWMvdC8w MDFfaGJhX2d1Y192YXJpYWJsZXMucGwgICB8ICA1NiArKysrKysKIC4uLi90ZXN0X2hiYV9ndWMv dC8wMDJfaGJhX2d1Y19zb3VyY2VzLnBsICAgICB8IDE4NyArKysrKysrKysrKysrKysrKysKIC4u Li90ZXN0X2hiYV9ndWMvdC8wMDNfaGJhX2d1Y19wcmVjZWRlbmNlLnBsICB8IDEwNSArKysrKysr KysrCiAuLi4vdGVzdF9oYmFfZ3VjL3Rlc3RfaGJhX2d1Yy0tMS4wLnNxbCAgICAgICAgfCAgMjIg KysrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90ZXN0X2hiYV9ndWMuYyAgfCAgOTMg KysrKysrKysrCiAuLi4vbW9kdWxlcy90ZXN0X2hiYV9ndWMvdGVzdF9oYmFfZ3VjLmNvbmYgICAg fCAgIDMgKwogLi4uL21vZHVsZXMvdGVzdF9oYmFfZ3VjL3Rlc3RfaGJhX2d1Yy5jb250cm9sIHwg ICA1ICsKIC4uLi9tb2R1bGVzL3Rlc3RfaGJhX2d1Y19jb250ZXh0cy9NYWtlZmlsZSAgICB8ICAx OCArKwogLi4uL21vZHVsZXMvdGVzdF9oYmFfZ3VjX2NvbnRleHRzL21lc29uLmJ1aWxkIHwgIDI4 ICsrKwogLi4uL3QvMDAxX2NvbnRleHRfdmFsaWRhdGlvbi5wbCAgICAgICAgICAgICAgIHwgIDg1 ICsrKysrKysrCiAuLi4vdGVzdF9oYmFfZ3VjX2NvbnRleHRzLmMgICAgICAgICAgICAgICAgICAg fCAgODkgKysrKysrKysrCiAyMiBmaWxlcyBjaGFuZ2VkLCA5NDMgaW5zZXJ0aW9ucygrKSwgOSBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJh X2d1Yy9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9o YmFfZ3VjL21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2hiYV9ndWMvdC8wMDFfaGJhX2d1Y192YXJpYWJsZXMucGwKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90LzAwMl9oYmFfZ3VjX3NvdXJjZXMucGwK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90LzAwM19o YmFfZ3VjX3ByZWNlZGVuY2UucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L3Rlc3RfaGJhX2d1Yy90ZXN0X2hiYV9ndWMtLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90ZXN0X2hiYV9ndWMuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjL3Rlc3RfaGJhX2d1Yy5jb25mCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMvdGVzdF9oYmFf Z3VjLmNvbnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJh X2d1Y19jb250ZXh0cy9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVs ZXMvdGVzdF9oYmFfZ3VjX2NvbnRleHRzL21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4dHMvdC8wMDFfY29udGV4dF92YWxp ZGF0aW9uLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9n dWNfY29udGV4dHMvdGVzdF9oYmFfZ3VjX2NvbnRleHRzLmMKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9saWJwcS9oYmEuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2hiYS5jCmluZGV4IDg3ZWU1NDFl ODgwLi42ZmM0ZGViZjU2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvaGJhLmMKKysr IGIvc3JjL2JhY2tlbmQvbGlicHEvaGJhLmMKQEAgLTI1MDcsMTUgKzI1MDcsMjEgQEAgcGFyc2Vf aGJhX2F1dGhfb3B0KGNoYXIgKm5hbWUsIGNoYXIgKnZhbCwgSGJhTGluZSAqaGJhbGluZSwKIAl9 CiAJZWxzZQogCXsKLQkJZXJlcG9ydChlbGV2ZWwsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9DT05G SUdfRklMRV9FUlJPUiksCi0JCQkJIGVycm1zZygidW5yZWNvZ25pemVkIGF1dGhlbnRpY2F0aW9u IG9wdGlvbiBuYW1lOiBcIiVzXCIiLAotCQkJCQkJbmFtZSksCi0JCQkJIGVycmNvbnRleHQoImxp bmUgJWQgb2YgY29uZmlndXJhdGlvbiBmaWxlIFwiJXNcIiIsCi0JCQkJCQkJbGluZV9udW0sIGZp bGVfbmFtZSkpKTsKLQkJKmVycl9tc2cgPSBwc3ByaW50ZigidW5yZWNvZ25pemVkIGF1dGhlbnRp Y2F0aW9uIG9wdGlvbiBuYW1lOiBcIiVzXCIiLAotCQkJCQkJCW5hbWUpOwotCQlyZXR1cm4gZmFs c2U7CisJCS8qCisJCSAqIFVucmVjb2duaXplZCBvcHRpb24gbmFtZSAtIHRyZWF0IGl0IGFzIGEg cG90ZW50aWFsIEdVQyB2YXJpYWJsZS4KKwkJICogU3RvcmUgdGhlIG5hbWU9dmFsdWUgcGFpciBp biB0aGUgSGJhTGluZSdzIGd1Y19vcHRpb25zIGxpc3QuCisJCSAqIEFjdHVhbCB2YWxpZGF0aW9u IChjaGVja2luZyBpZiB0aGUgR1VDIGlzIGRlZmluZWQpIGhhcHBlbnMgYXQKKwkJICogY29ubmVj dGlvbiB0aW1lIGFmdGVyIHNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMgY29tcGxldGVzLgorCQkg Ki8KKwkJSGJhT3B0aW9uICAqb3B0OworCisJCW9wdCA9IHBhbGxvYyhzaXplb2YoSGJhT3B0aW9u KSk7CisJCW9wdC0+bmFtZSA9IHBzdHJkdXAobmFtZSk7CisJCW9wdC0+dmFsdWUgPSBwc3RyZHVw KHZhbCk7CisJCWhiYWxpbmUtPmd1Y19vcHRpb25zID0gbGFwcGVuZChoYmFsaW5lLT5ndWNfb3B0 aW9ucywgb3B0KTsKKworCQllbG9nKERFQlVHMiwgInBnX2hiYS5jb25mIGxpbmUgJWQ6IHN0b3Jp bmcgR1VDIG9wdGlvbiAlcyA9ICVzIiwKKwkJCSBsaW5lX251bSwgbmFtZSwgdmFsKTsKIAl9CiAJ cmV0dXJuIHRydWU7CiB9CkBAIC0zMTEzLDExICszMTE5LDQ0IEBAIGxvYWRfaWRlbnQodm9pZCkK IAogCiAKKy8qCisgKiBhcHBseV9oYmFfZ3VjX29wdGlvbnMKKyAqCQlBcHBseSBHVUMgdmFyaWFi bGUgc2V0dGluZ3MgZnJvbSB0aGUgbWF0Y2hlZCBIQkEgbGluZS4KKyAqCisgKiBUaGlzIGZ1bmN0 aW9uIHByb2Nlc3NlcyB0aGUgZ3VjX29wdGlvbnMgbGlzdCBmcm9tIHRoZSBtYXRjaGVkIHBnX2hi YS5jb25mCisgKiBsaW5lIGFuZCBhcHBsaWVzIGVhY2ggR1VDIHNldHRpbmcuIFZhcmlhYmxlcyB3 aWxsIGVpdGhlciBiZSBzZXQgKGlmIGFscmVhZHkKKyAqIGRlZmluZWQpIG9yIGNyZWF0ZSBwbGFj ZWhvbGRlcnMgKGlmIG5vdCB5ZXQgZGVmaW5lZCkuIFZhbGlkYXRpb24gb2YKKyAqIHVuZGVmaW5l ZCB2YXJpYWJsZXMgYW5kIGNvbnRleHQgY2hlY2tpbmcgaGFwcGVucyBsYXRlciwgYWZ0ZXIKKyAq IHNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMgY29tcGxldGVzIGluIHBvc3Rpbml0LmMuCisgKi8K K3N0YXRpYyB2b2lkCithcHBseV9oYmFfZ3VjX29wdGlvbnMoUG9ydCAqcG9ydCkKK3sKKwlMaXN0 Q2VsbCAgICpsYzsKKworCWlmIChwb3J0LT5oYmEtPmd1Y19vcHRpb25zID09IE5JTCkKKwkJcmV0 dXJuOworCisJZm9yZWFjaChsYywgcG9ydC0+aGJhLT5ndWNfb3B0aW9ucykKKwl7CisJCUhiYU9w dGlvbiAgKm9wdCA9IChIYmFPcHRpb24gKikgbGZpcnN0KGxjKTsKKworCQllbG9nKERFQlVHMiwg IkFwcGx5aW5nIEhCQSBHVUMgb3B0aW9uOiAlcyA9ICVzIiwgb3B0LT5uYW1lLCBvcHQtPnZhbHVl KTsKKworCQkodm9pZCkgc2V0X2NvbmZpZ19vcHRpb24ob3B0LT5uYW1lLCBvcHQtPnZhbHVlLAor CQkJCQkJCQkgUEdDX0hCQSwgUEdDX1NfSEJBLAorCQkJCQkJCQkgR1VDX0FDVElPTl9TRVQsIHRy dWUsIEVSUk9SLCBmYWxzZSk7CisJfQorfQorCiAvKgogICoJRGV0ZXJtaW5lIHdoYXQgYXV0aGVu dGljYXRpb24gbWV0aG9kIHNob3VsZCBiZSB1c2VkIHdoZW4gYWNjZXNzaW5nIGRhdGFiYXNlCiAg KgkiZGF0YWJhc2UiIGZyb20gZnJvbnRlbmQgInJhZGRyIiwgdXNlciAidXNlciIuICBSZXR1cm4g dGhlIG1ldGhvZCBhbmQKICAqCWFuIG9wdGlvbmFsIGFyZ3VtZW50IChzdG9yZWQgaW4gZmllbGRz IG9mICpwb3J0KSwgYW5kIFNUQVRVU19PSy4KICAqCisgKglBbHNvIGFwcGxpZXMgYWxsIEdVQyB2 YXJpYWJsZXMgZnJvbSB0aGUgbWF0Y2hlZCBIQkEgbGluZSwgYXMgdGhlc2UgdmFyaWFibGVzCisg KgltaWdodCBpbW1lZGlhdGVseSByZXF1aXJlZCBieSBhdXRoZW50aWNhdGlvbiBwbHVnaW5zLgor ICoKICAqCUlmIHRoZSBmaWxlIGRvZXMgbm90IGNvbnRhaW4gYW55IGVudHJ5IG1hdGNoaW5nIHRo ZSByZXF1ZXN0LCB3ZSByZXR1cm4KICAqCW1ldGhvZCA9IHVhSW1wbGljaXRSZWplY3QuCiAgKi8K QEAgLTMxMjUsNiArMzE2NCw4IEBAIHZvaWQKIGhiYV9nZXRhdXRobWV0aG9kKFBvcnQgKnBvcnQp CiB7CiAJY2hlY2tfaGJhKHBvcnQpOworCisJYXBwbHlfaGJhX2d1Y19vcHRpb25zKHBvcnQpOwog fQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYwppbmRleCBhYWZmZTk0M2IyYi4uMmE3MTRk MzA4Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKQEAgLTE3ODYsNiArMTc4NiwxMCBA QCBjaGFyCSAgICpsb2NhbF9wcmVsb2FkX2xpYnJhcmllc19zdHJpbmcgPSBOVUxMOwogYm9vbAkJ cHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNfaW5fcHJvZ3Jlc3MgPSBmYWxzZTsKIGJv b2wJCXByb2Nlc3Nfc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzX2RvbmUgPSBmYWxzZTsKIAorLyog RmxhZyB0ZWxsaW5nIHRoYXQgd2UgYXJlIGxvYWRpbmcgc2Vzc2lvbl9wcmVsb2FkX2xpYnJhcmll cyAqLworYm9vbAkJcHJvY2Vzc19zZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzX2luX3Byb2dyZXNz ID0gZmFsc2U7Citib29sCQlwcm9jZXNzX3Nlc3Npb25fcHJlbG9hZF9saWJyYXJpZXNfZG9uZSA9 IGZhbHNlOworCiBzaG1lbV9yZXF1ZXN0X2hvb2tfdHlwZSBzaG1lbV9yZXF1ZXN0X2hvb2sgPSBO VUxMOwogYm9vbAkJcHJvY2Vzc19zaG1lbV9yZXF1ZXN0c19pbl9wcm9ncmVzcyA9IGZhbHNlOwog CkBAIC0xODY2LDkgKzE4NzAsMTIgQEAgcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMo dm9pZCkKIHZvaWQKIHByb2Nlc3Nfc2Vzc2lvbl9wcmVsb2FkX2xpYnJhcmllcyh2b2lkKQogewor CXByb2Nlc3Nfc2Vzc2lvbl9wcmVsb2FkX2xpYnJhcmllc19pbl9wcm9ncmVzcyA9IHRydWU7CiAJ bG9hZF9saWJyYXJpZXMoc2Vzc2lvbl9wcmVsb2FkX2xpYnJhcmllc19zdHJpbmcsCiAJCQkJICAg InNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMiLAogCQkJCSAgIGZhbHNlKTsKKwlwcm9jZXNzX3Nl c3Npb25fcHJlbG9hZF9saWJyYXJpZXNfaW5fcHJvZ3Jlc3MgPSBmYWxzZTsKKwlwcm9jZXNzX3Nl c3Npb25fcHJlbG9hZF9saWJyYXJpZXNfZG9uZSA9IHRydWU7CiAJbG9hZF9saWJyYXJpZXMobG9j YWxfcHJlbG9hZF9saWJyYXJpZXNfc3RyaW5nLAogCQkJCSAgICJsb2NhbF9wcmVsb2FkX2xpYnJh cmllcyIsCiAJCQkJICAgdHJ1ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0 L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKaW5kZXggNTJj MDVhOWQxZDUuLmQzYmI4ODI0M2M2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0 L3Bvc3Rpbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCkBAIC0z Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfZGJfcm9sZV9zZXR0aW5nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJs ZXNwYWNlLmgiCisjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKICNpbmNsdWRlICJsaWJwcS9h dXRoLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEtYmUuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hh ci5oIgpAQCAtMTIyNSw2ICsxMjI2LDEzIEBAIEluaXRQb3N0Z3Jlcyhjb25zdCBjaGFyICppbl9k Ym5hbWUsIE9pZCBkYm9pZCwKIAlpZiAoKGZsYWdzICYgSU5JVF9QR19MT0FEX1NFU1NJT05fTElC UykgIT0gMCkKIAkJcHJvY2Vzc19zZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzKCk7CiAKKwkvKgor CSAqIE5vdyB0aGF0IHNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMgaGFzIGNvbXBsZXRlZCwgdmFs aWRhdGUgdGhhdCBhbGwKKwkgKiBHVUMgdmFyaWFibGVzIHNldCBmcm9tIHBnX2hiYS5jb25mIGFy ZSBwcm9wZXJseSBkZWZpbmVkIHdpdGggdGhlCisJICogY29ycmVjdCBjb250ZXh0LgorCSAqLwor CWNoZWNrX2hiYV9ndWNfdmFyaWFibGVzKCk7CisKIAkvKiBmaWxsIGluIHRoZSByZW1haW5kZXIg b2YgdGhpcyBlbnRyeSBpbiB0aGUgUGdCYWNrZW5kU3RhdHVzIGFycmF5ICovCiAJaWYgKCFib290 c3RyYXApCiAJCXBnc3RhdF9iZXN0YXJ0X2ZpbmFsKCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCAx YmQ1NzNhN2UyYS4uM2FlZjFhNGQ0OTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMzQwMyw2ICsz NDAzLDE3IEBAIHNldF9jb25maWdfd2l0aF9oYW5kbGUoY29uc3QgY2hhciAqbmFtZSwgY29uZmln X2hhbmRsZSAqaGFuZGxlLAogCQkJICogc2lnbmFscyB0byBpbmRpdmlkdWFsIGJhY2tlbmRzIG9u bHkuCiAJCQkgKi8KIAkJCWJyZWFrOworCQljYXNlIFBHQ19IQkE6CisJCQlpZiAoY29udGV4dCAh PSBQR0NfU0lHSFVQICYmIGNvbnRleHQgIT0gUEdDX1BPU1RNQVNURVIgJiYKKwkJCQlzb3VyY2Ug IT0gUEdDX1NfSEJBKQorCQkJeworCQkJCWVyZXBvcnQoZWxldmVsLAorCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9DQU5UX0NIQU5HRV9SVU5USU1FX1BBUkFNKSwKKwkJCQkJCSBlcnJtc2coInBhcmFt ZXRlciBcIiVzXCIgY2Fubm90IGJlIGNoYW5nZWQgbm93IiwKKwkJCQkJCQkJcmVjb3JkLT5uYW1l KSkpOworCQkJCXJldHVybiAwOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgUEdDX1NVX0JBQ0tF TkQ6CiAJCQlpZiAoY29udGV4dCA9PSBQR0NfQkFDS0VORCkKIAkJCXsKQEAgLTM0NTYsNiArMzQ2 Nyw3IEBAIHNldF9jb25maWdfd2l0aF9oYW5kbGUoY29uc3QgY2hhciAqbmFtZSwgY29uZmlnX2hh bmRsZSAqaGFuZGxlLAogCQkJZWxzZSBpZiAoY29udGV4dCAhPSBQR0NfUE9TVE1BU1RFUiAmJgog CQkJCQkgY29udGV4dCAhPSBQR0NfQkFDS0VORCAmJgogCQkJCQkgY29udGV4dCAhPSBQR0NfU1Vf QkFDS0VORCAmJgorCQkJCQkgY29udGV4dCAhPSBQR0NfSEJBICYmCiAJCQkJCSBzb3VyY2UgIT0g UEdDX1NfQ0xJRU5UKQogCQkJewogCQkJCWVyZXBvcnQoZWxldmVsLApAQCAtNDE2NCw2ICs0MTc2 LDg3IEBAIGdldF9jb25maWdfaGFuZGxlKGNvbnN0IGNoYXIgKm5hbWUpCiAJcmV0dXJuIE5VTEw7 CiB9CiAKKy8qCisgKiBjaGVja19oYmFfZ3VjX3ZhcmlhYmxlcworICoKKyAqIENoZWNrIGlmIGFu eSBHVUMgdmFyaWFibGVzIHNldCBmcm9tIHBnX2hiYS5jb25mIChzb3VyY2UgPSBQR0NfU19IQkEp CisgKiBhcmUgc3RpbGwgcGxhY2Vob2xkZXJzICh1bmRlZmluZWQpIG9yIGhhdmUgdGhlIHdyb25n IGNvbnRleHQuCisgKgorICogQWxzbyBlbmZvcmNlcyBzdHJpY3QgR1VDIHByZWZpeCByZXNlcnZh dGlvbiBmb3IgUEdDX0hCQSB2YXJpYWJsZXM6CisgKiBleHRlbnNpb25zIHRoYXQgZGVmaW5lIFBH Q19IQkEgdmFyaWFibGVzIE1VU1QgY2FsbCBNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoKQorICogYW5k IHRoZWlyIHZhcmlhYmxlcyBNVVNUIGJlIHVuZGVyIHRoZSByZXNlcnZlZCBwcmVmaXguIFRoaXMg aXMgYWx3YXlzCisgKiBlbmZvcmNlZCByZWdhcmRsZXNzIG9mIHRoZSBndWNfcHJlZml4X2VuZm9y Y2VtZW50IHNldHRpbmcsIGJlY2F1c2UKKyAqIFBHQ19IQkEgdmFyaWFibGVzIGNhbiBhZmZlY3Qg YXV0aGVudGljYXRpb24gc2VjdXJpdHkuCisgKgorICogRm9yIGVhY2ggaW52YWxpZCB2YXJpYWJs ZSwgd2UgZW1pdCBhIEZBVEFMIGVycm9yIHdpdGggYW4gYXBwcm9wcmlhdGUKKyAqIG1lc3NhZ2Ug ZXhwbGFpbmluZyB0aGUgcHJvYmxlbS4KKyAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYWZ0 ZXIgc2Vzc2lvbl9wcmVsb2FkX2xpYnJhcmllcyBjb21wbGV0ZXMgdG8KKyAqIGVuc3VyZSBleHRl bnNpb25zIGhhdmUgaGFkIGEgY2hhbmNlIHRvIGRlZmluZSB0aGVpciBQR0NfSEJBIHZhcmlhYmxl cy4KKyAqLwordm9pZAorY2hlY2tfaGJhX2d1Y192YXJpYWJsZXModm9pZCkKK3sKKwlIQVNIX1NF UV9TVEFUVVMgc3RhdHVzOworCUdVQ0hhc2hFbnRyeSAqaGVudHJ5OworCisJaGFzaF9zZXFfaW5p dCgmc3RhdHVzLCBndWNfaGFzaHRhYik7CisJd2hpbGUgKChoZW50cnkgPSAoR1VDSGFzaEVudHJ5 ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCXN0cnVjdCBjb25m aWdfZ2VuZXJpYyAqZ2NvbmYgPSBoZW50cnktPmd1Y3ZhcjsKKworCQlpZiAoZ2NvbmYtPnNvdXJj ZSAhPSBQR0NfU19IQkEpCisJCQljb250aW51ZTsKKworCQlpZiAoZ2NvbmYtPmZsYWdzICYgR1VD X0NVU1RPTV9QTEFDRUhPTERFUikKKwkJeworCQkJZXJlcG9ydChGQVRBTCwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX0FVVEhPUklaQVRJT05fU1BFQ0lGSUNBVElPTiksCisJCQkJCSBl cnJtc2coImF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZXJyb3IiKSwKKwkJCQkJIGVycmRl dGFpbCgicGdfaGJhLmNvbmYgcmVmZXJlbmNlcyB1bmRlZmluZWQgR1VDIHZhcmlhYmxlIFwiJXNc IiIsCisJCQkJCQkJICAgZ2NvbmYtPm5hbWUpLAorCQkJCQkgZXJyaGludCgiRW5zdXJlIHRoZSBl eHRlbnNpb24gZGVmaW5pbmcgdGhpcyB2YXJpYWJsZSBpcyBsb2FkZWQgaW4gc2Vzc2lvbl9wcmVs b2FkX2xpYnJhcmllcyBvciBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMuIikpKTsKKwkJfQorCisJ CWlmIChnY29uZi0+Y29udGV4dCA8IFBHQ19IQkEpCisJCXsKKwkJCWVyZXBvcnQoRkFUQUwsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfQ0FOVF9DSEFOR0VfUlVOVElNRV9QQVJBTSksCisJCQkJCSBl cnJtc2coInBhcmFtZXRlciBcIiVzXCIgY2Fubm90IGJlIHNldCBpbiBwZ19oYmEuY29uZiIsCisJ CQkJCQkJZ2NvbmYtPm5hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJPbmx5IHZhcmlhYmxlcyB3aXRo IGNvbnRleHQgUEdDX0hCQSBvciBiZWxvdyBjYW4gYmUgc2V0IGZyb20gcGdfaGJhLmNvbmYuIiks CisJCQkJCSBlcnJoaW50KCJUaGlzIHZhcmlhYmxlIGhhcyBjb250ZXh0IFwiJXNcIi4iLAorCQkJ CQkJCSBHdWNDb250ZXh0X05hbWVzW2djb25mLT5jb250ZXh0XSkpKTsKKwkJfQorCisJCWlmIChn Y29uZi0+bGlicmFyeV9uYW1lICE9IE5VTEwpCisJCXsKKwkJCVJlc2VydmVkR1VDUHJlZml4ICpy ZXNlcnZhdGlvbjsKKworCQkJcmVzZXJ2YXRpb24gPSBmaW5kX3Jlc2VydmVkX3ByZWZpeF9mb3Jf dmFyaWFibGUoZ2NvbmYtPm5hbWUpOworCisJCQlpZiAocmVzZXJ2YXRpb24gPT0gTlVMTCkKKwkJ CXsKKwkJCQllcmVwb3J0KEZBVEFMLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0FV VEhPUklaQVRJT05fU1BFQ0lGSUNBVElPTiksCisJCQkJCQkgZXJybXNnKCJhdXRoZW50aWNhdGlv biBjb25maWd1cmF0aW9uIGVycm9yIiksCisJCQkJCQkgZXJyZGV0YWlsKCJFeHRlbnNpb24gXCIl c1wiIGRlZmluZXMgUEdDX0hCQSB2YXJpYWJsZSBcIiVzXCIgd2l0aG91dCBhIHJlc2VydmVkIHBy ZWZpeC4iLAorCQkJCQkJCQkgICBnY29uZi0+bGlicmFyeV9uYW1lLCBnY29uZi0+bmFtZSksCisJ CQkJCQkgZXJyaGludCgiRXh0ZW5zaW9ucyB0aGF0IGRlZmluZSBQR0NfSEJBIHZhcmlhYmxlcyBt dXN0IGNhbGwgTWFya0dVQ1ByZWZpeFJlc2VydmVkKCkuIikpKTsKKwkJCX0KKwkJCWVsc2UgaWYg KHJlc2VydmF0aW9uLT5saWJyYXJ5X25hbWUgIT0gTlVMTCAmJgorCQkJCQkgc3RyY21wKHJlc2Vy dmF0aW9uLT5saWJyYXJ5X25hbWUsIGdjb25mLT5saWJyYXJ5X25hbWUpICE9IDApCisJCQl7CisJ CQkJZXJlcG9ydChGQVRBTCwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9BVVRIT1JJ WkFUSU9OX1NQRUNJRklDQVRJT04pLAorCQkJCQkJIGVycm1zZygiYXV0aGVudGljYXRpb24gY29u ZmlndXJhdGlvbiBlcnJvciIpLAorCQkJCQkJIGVycmRldGFpbCgiRXh0ZW5zaW9uIFwiJXNcIiBk ZWZpbmVzIFBHQ19IQkEgdmFyaWFibGUgXCIlc1wiIHVuZGVyIHByZWZpeCByZXNlcnZlZCBieSBc IiVzXCIuIiwKKwkJCQkJCQkJICAgZ2NvbmYtPmxpYnJhcnlfbmFtZSwgZ2NvbmYtPm5hbWUsIHJl c2VydmF0aW9uLT5saWJyYXJ5X25hbWUpKSk7CisJCQl9CisJCX0KKwl9Cit9CisKIAogLyoKICAq IFNldCB0aGUgZmllbGRzIGZvciBzb3VyY2UgZmlsZSBhbmQgbGluZSBudW1iZXIgdGhlIHNldHRp bmcgY2FtZSBmcm9tLgpAQCAtNDc2NSw2ICs0ODU4LDE5IEBAIGluaXRfY3VzdG9tX3ZhcmlhYmxl KGNvbnN0IGNoYXIgKm5hbWUsCiAJCSFwcm9jZXNzX3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllc19p bl9wcm9ncmVzcykKIAkJZWxvZyhGQVRBTCwgImNhbm5vdCBjcmVhdGUgUEdDX1BPU1RNQVNURVIg dmFyaWFibGVzIGFmdGVyIHN0YXJ0dXAiKTsKIAorCS8qCisJICogT25seSBhbGxvdyBjdXN0b20g UEdDX0hCQSB2YXJpYWJsZXMgdG8gYmUgY3JlYXRlZCBiZWZvcmUKKwkgKiBzZXNzaW9uX3ByZWxv YWRfbGlicmFyaWVzIGNvbXBsZXRlcy4gQWZ0ZXIgdGhhdCBwb2ludCwgYXV0aGVudGljYXRpb24K KwkgKiBoYXMgYWxyZWFkeSBvY2N1cnJlZCBhbmQgY2hlY2tfaGJhX2d1Y192YXJpYWJsZXMgaGFz IHZhbGlkYXRlZCBhbGwKKwkgKiBQR0NfSEJBIHZhcmlhYmxlcywgc28gZGVmaW5pbmcgbmV3IG9u ZXMgd291bGQgYnlwYXNzIHZhbGlkYXRpb24uCisJICovCisJaWYgKGNvbnRleHQgPT0gUEdDX0hC QSAmJiBwcm9jZXNzX3Nlc3Npb25fcHJlbG9hZF9saWJyYXJpZXNfZG9uZSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NU QVRFKSwKKwkJCQkgZXJybXNnKCJQR0NfSEJBIHZhcmlhYmxlcyBtdXN0IGJlIGRlZmluZWQgYmVm b3JlIHNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMgY29tcGxldGVzIiksCisJCQkJIGVycmRldGFp bCgiQXR0ZW1wdGVkIHRvIGRlZmluZSBcIiVzXCIgYWZ0ZXIgc2Vzc2lvbiBwcmVsb2FkIiwgbmFt ZSksCisJCQkJIGVycmhpbnQoIk1vdmUgdGhlIGV4dGVuc2lvbiBkZWZpbmluZyB0aGlzIHZhcmlh YmxlIHRvIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyBvciBzZXNzaW9uX3ByZWxvYWRfbGlicmFy aWVzIikpKTsKKwogCS8qCiAJICogV2UgY2FuJ3Qgc3VwcG9ydCBjdXN0b20gR1VDX0xJU1RfUVVP VEUgdmFyaWFibGVzLCBiZWNhdXNlIHRoZSB3cm9uZwogCSAqIHRoaW5ncyB3b3VsZCBoYXBwZW4g aWYgc3VjaCBhIHZhcmlhYmxlIHdlcmUgc2V0IG9yIHBnX2R1bXAnZCB3aGVuIHRoZQpAQCAtNjc1 OCw2ICs2ODY0LDE1IEBAIHZhbGlkYXRlX29wdGlvbl9hcnJheV9pdGVtKGNvbnN0IGNoYXIgKm5h bWUsIGNvbnN0IGNoYXIgKnZhbHVlLAogCQkJIChzdXBlcnVzZXIoKSB8fAogCQkJICBwZ19wYXJh bWV0ZXJfYWNsY2hlY2sobmFtZSwgR2V0VXNlcklkKCksIEFDTF9TRVQpID09IEFDTENIRUNLX09L KSkKIAkJIC8qIG9rICovIDsKKwllbHNlIGlmIChnY29uZi0+Y29udGV4dCA9PSBQR0NfSEJBKQor CXsKKwkJaWYgKHNraXBJZk5vUGVybWlzc2lvbnMpCisJCQlyZXR1cm4gZmFsc2U7CisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9DQU5UX0NIQU5HRV9SVU5USU1FX1BBUkFN KSwKKwkJCQkgZXJybXNnKCJwYXJhbWV0ZXIgXCIlc1wiIGNhbm5vdCBiZSBzZXQgYnkgQUxURVIg VVNFUiBvciBBTFRFUiBEQVRBQkFTRSIsIG5hbWUpLAorCQkJCSBlcnJoaW50KCJVc2UgcG9zdGdy ZXNxbC5jb25mLCBBTFRFUiBTWVNURU0sIG9yIHBnX2hiYS5jb25mIHRvIHNldCB0aGlzIHBhcmFt ZXRlci4iKSkpOworCX0KIAllbHNlIGlmIChza2lwSWZOb1Blcm1pc3Npb25zKQogCQlyZXR1cm4g ZmFsc2U7CiAJLyogaWYgYSBwZXJtaXNzaW9ucyBlcnJvciBzaG91bGQgYmUgdGhyb3duLCBsZXQg c2V0X2NvbmZpZ19vcHRpb24gZG8gaXQgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMK aW5kZXggMGM0OTJmZDRmYzkuLjU4Mzg2ZWNjNTg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYwpAQCAtNjcxLDYgKzY3MSw3IEBAIGNvbnN0IGNoYXIgKmNvbnN0IEd1Y0NvbnRleHRf TmFtZXNbXSA9CiAJW1BHQ19JTlRFUk5BTF0gPSAiaW50ZXJuYWwiLAogCVtQR0NfUE9TVE1BU1RF Ul0gPSAicG9zdG1hc3RlciIsCiAJW1BHQ19TSUdIVVBdID0gInNpZ2h1cCIsCisJW1BHQ19IQkFd ID0gImhiYSIsCiAJW1BHQ19TVV9CQUNLRU5EXSA9ICJzdXBlcnVzZXItYmFja2VuZCIsCiAJW1BH Q19CQUNLRU5EXSA9ICJiYWNrZW5kIiwKIAlbUEdDX1NVU0VUXSA9ICJzdXBlcnVzZXIiLApAQCAt Njk3LDYgKzY5OCw3IEBAIGNvbnN0IGNoYXIgKmNvbnN0IEd1Y1NvdXJjZV9OYW1lc1tdID0KIAlb UEdDX1NfVVNFUl0gPSAidXNlciIsCiAJW1BHQ19TX0RBVEFCQVNFX1VTRVJdID0gImRhdGFiYXNl IHVzZXIiLAogCVtQR0NfU19DTElFTlRdID0gImNsaWVudCIsCisJW1BHQ19TX0hCQV0gPSAicGdf aGJhLmNvbmYiLAogCVtQR0NfU19PVkVSUklERV0gPSAib3ZlcnJpZGUiLAogCVtQR0NfU19JTlRF UkFDVElWRV0gPSAiaW50ZXJhY3RpdmUiLAogCVtQR0NfU19URVNUXSA9ICJ0ZXN0IiwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL2hiYS5oIGIvc3JjL2luY2x1ZGUvbGlicHEvaGJhLmgK aW5kZXggN2I5M2JhNGE3MDkuLmUxODQ4YWQwM2QwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9s aWJwcS9oYmEuaAorKysgYi9zcmMvaW5jbHVkZS9saWJwcS9oYmEuaApAQCAtOTIsNiArOTIsMTIg QEAgdHlwZWRlZiBzdHJ1Y3QgQXV0aFRva2VuCiAJcmVnZXhfdCAgICAqcmVnZXg7CiB9IEF1dGhU b2tlbjsKIAordHlwZWRlZiBzdHJ1Y3QgSGJhT3B0aW9uCit7CisJY2hhcgkgICAqbmFtZTsKKwlj aGFyCSAgICp2YWx1ZTsKK30gSGJhT3B0aW9uOworCiB0eXBlZGVmIHN0cnVjdCBIYmFMaW5lCiB7 CiAJY2hhcgkgICAqc291cmNlZmlsZTsKQEAgLTE0MCw2ICsxNDYsNyBAQCB0eXBlZGVmIHN0cnVj dCBIYmFMaW5lCiAJY2hhcgkgICAqb2F1dGhfc2NvcGU7CiAJY2hhcgkgICAqb2F1dGhfdmFsaWRh dG9yOwogCWJvb2wJCW9hdXRoX3NraXBfdXNlcm1hcDsKKwlMaXN0CSAgICpndWNfb3B0aW9uczsK IH0gSGJhTGluZTsKIAogdHlwZWRlZiBzdHJ1Y3QgSWRlbnRMaW5lCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IGRiNTU5 YjM5YzRkLi4wYTVkZjYyZjk5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgK KysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTUxMiw2ICs1MTIsOCBAQCBleHRlcm4g dm9pZCBCYXNlSW5pdCh2b2lkKTsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIElnbm9yZVN5c3Rl bUluZGV4ZXM7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBwcm9jZXNzX3NoYXJlZF9wcmVsb2Fk X2xpYnJhcmllc19pbl9wcm9ncmVzczsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIHByb2Nlc3Nf c2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzX2RvbmU7CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBw cm9jZXNzX3Nlc3Npb25fcHJlbG9hZF9saWJyYXJpZXNfaW5fcHJvZ3Jlc3M7CitleHRlcm4gUEdE TExJTVBPUlQgYm9vbCBwcm9jZXNzX3Nlc3Npb25fcHJlbG9hZF9saWJyYXJpZXNfZG9uZTsKIGV4 dGVybiBQR0RMTElNUE9SVCBib29sIHByb2Nlc3Nfc2htZW1fcmVxdWVzdHNfaW5fcHJvZ3Jlc3M7 CiBleHRlcm4gUEdETExJTVBPUlQgY2hhciAqc2Vzc2lvbl9wcmVsb2FkX2xpYnJhcmllc19zdHJp bmc7CiBleHRlcm4gUEdETExJTVBPUlQgY2hhciAqc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzX3N0 cmluZzsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Yy5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvZ3VjLmgKaW5kZXggZWUwMmI5YWE5ODcuLjI2YmRhMjk0NDRiIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS91dGlscy9ndWMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9ndWMuaApAQCAt NzMsNiArNzMsNyBAQCB0eXBlZGVmIGVudW0KIAlQR0NfSU5URVJOQUwsCiAJUEdDX1BPU1RNQVNU RVIsCiAJUEdDX1NJR0hVUCwKKwlQR0NfSEJBLAogCVBHQ19TVV9CQUNLRU5ELAogCVBHQ19CQUNL RU5ELAogCVBHQ19TVVNFVCwKQEAgLTExNSw2ICsxMTYsNyBAQCB0eXBlZGVmIGVudW0KIAlQR0Nf U19FTlZfVkFSLAkJCQkvKiBwb3N0bWFzdGVyIGVudmlyb25tZW50IHZhcmlhYmxlICovCiAJUEdD X1NfRklMRSwJCQkJCS8qIHBvc3RncmVzcWwuY29uZiAqLwogCVBHQ19TX0FSR1YsCQkJCQkvKiBw b3N0bWFzdGVyIGNvbW1hbmQgbGluZSAqLworCVBHQ19TX0hCQSwJCQkJCS8qIGZyb20gcGdfaGJh LmNvbmYgKi8KIAlQR0NfU19HTE9CQUwsCQkJCS8qIGdsb2JhbCBpbi1kYXRhYmFzZSBzZXR0aW5n ICovCiAJUEdDX1NfREFUQUJBU0UsCQkJCS8qIHBlci1kYXRhYmFzZSBzZXR0aW5nICovCiAJUEdD X1NfVVNFUiwJCQkJCS8qIHBlci11c2VyIHNldHRpbmcgKi8KQEAgLTQ3Myw2ICs0NzUsNyBAQCBl eHRlcm4gaW50CXNldF9jb25maWdfd2l0aF9oYW5kbGUoY29uc3QgY2hhciAqbmFtZSwgY29uZmln X2hhbmRsZSAqaGFuZGxlLAogCQkJCQkJCQkgICBpbnQgZWxldmVsLCBib29sIGlzX3JlbG9hZCk7 CiBleHRlcm4gY29uZmlnX2hhbmRsZSAqZ2V0X2NvbmZpZ19oYW5kbGUoY29uc3QgY2hhciAqbmFt ZSk7CiBleHRlcm4gdm9pZCBjaGVja19ndWNfcHJlZml4X3Jlc2VydmF0aW9ucyh2b2lkKTsKK2V4 dGVybiB2b2lkIGNoZWNrX2hiYV9ndWNfdmFyaWFibGVzKHZvaWQpOwogZXh0ZXJuIHZvaWQgQWx0 ZXJTeXN0ZW1TZXRDb25maWdGaWxlKEFsdGVyU3lzdGVtU3RtdCAqYWx0ZXJzeXNzdG10KTsKIGV4 dGVybiBjaGFyICpHZXRDb25maWdPcHRpb25CeU5hbWUoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qg Y2hhciAqKnZhcm5hbWUsCiAJCQkJCQkJCSAgIGJvb2wgbWlzc2luZ19vayk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5i dWlsZAppbmRleCBkYTU0NTIxOWE5Mi4uZjBlNTFiYjRhNWQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZApA QCAtMzAsNiArMzAsOCBAQCBzdWJkaXIoJ3Rlc3RfZXNjYXBlJykKIHN1YmRpcigndGVzdF9leHRl bnNpb25zJykKIHN1YmRpcigndGVzdF9naW5wb3N0aW5nbGlzdCcpCiBzdWJkaXIoJ3Rlc3RfZ3Vj X3ByZWZpeF9lbmZvcmNlbWVudCcpCitzdWJkaXIoJ3Rlc3RfaGJhX2d1YycpCitzdWJkaXIoJ3Rl c3RfaGJhX2d1Y19jb250ZXh0cycpCiBzdWJkaXIoJ3Rlc3RfaW50MTI4JykKIHN1YmRpcigndGVz dF9pbnRlZ2Vyc2V0JykKIHN1YmRpcigndGVzdF9qc29uX3BhcnNlcicpCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9oYmFfZ3VjL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi4yYjg5MDg4ZTMzOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9oYmFfZ3VjL01ha2VmaWxlCkBAIC0wLDAgKzEsMjEgQEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2hiYV9ndWMvTWFrZWZpbGUKKworTU9EVUxFX2JpZyA9IHRlc3RfaGJhX2d1YworT0JKUyA9 IFwKKwkkKFdJTjMyUkVTKSBcCisJdGVzdF9oYmFfZ3VjLm8KK1BHRklMRURFU0MgPSAidGVzdF9o YmFfZ3VjIC0gdGVzdCBtb2R1bGUgZm9yIFBHQ19IQkEgR1VDIHZhcmlhYmxlcyIKKworRVhURU5T SU9OID0gdGVzdF9oYmFfZ3VjCitEQVRBID0gdGVzdF9oYmFfZ3VjLS0xLjAuc3FsCisKK2lmZGVm IFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NP TkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9t b2R1bGVzL3Rlc3RfaGJhX2d1YwordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUg JCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGly KS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2hiYV9ndWMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf aGJhX2d1Yy9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZDhiZjAyMzMwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf aGJhX2d1Yy9tZXNvbi5idWlsZApAQCAtMCwwICsxLDM1IEBACisjIENvcHlyaWdodCAoYykgMjAy NiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordGVzdF9oYmFfZ3VjX3Nv dXJjZXMgPSBmaWxlcygKKyAgJ3Rlc3RfaGJhX2d1Yy5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0g PT0gJ3dpbmRvd3MnCisgIHRlc3RfaGJhX2d1Y19zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vz cyh3aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAndGVzdF9oYmFfZ3Vj JywKKyAgICAnLS1GSUxFREVTQycsICd0ZXN0X2hiYV9ndWMgLSB0ZXN0IG1vZHVsZSBmb3IgUEdD X0hCQSBHVUMgdmFyaWFibGVzJyxdKQorZW5kaWYKKwordGVzdF9oYmFfZ3VjID0gc2hhcmVkX21v ZHVsZSgndGVzdF9oYmFfZ3VjJywKKyAgdGVzdF9oYmFfZ3VjX3NvdXJjZXMsCisgIGt3YXJnczog cGdfdGVzdF9tb2RfYXJncywKKykKK3Rlc3RfaW5zdGFsbF9saWJzICs9IHRlc3RfaGJhX2d1Ywor Cit0ZXN0X2luc3RhbGxfZGF0YSArPSBmaWxlcygKKyAgJ3Rlc3RfaGJhX2d1Yy5jb250cm9sJywK KyAgJ3Rlc3RfaGJhX2d1Yy0tMS4wLnNxbCcsCispCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAn dGVzdF9oYmFfZ3VjJywKKyAgJ3NkJzogbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCisgICdi ZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCisgICd0YXAnOiB7CisgICAgJ3Rlc3RzJzog WworICAgICAgJ3QvMDAxX2hiYV9ndWNfdmFyaWFibGVzLnBsJywKKyAgICAgICd0LzAwMl9oYmFf Z3VjX3NvdXJjZXMucGwnLAorICAgICAgJ3QvMDAzX2hiYV9ndWNfcHJlY2VkZW5jZS5wbCcsCisg ICAgXSwKKyAgfSwKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3Vj L3QvMDAxX2hiYV9ndWNfdmFyaWFibGVzLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9n dWMvdC8wMDFfaGJhX2d1Y192YXJpYWJsZXMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjYyNWYzYmUxZTUxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2hiYV9ndWMvdC8wMDFfaGJhX2d1Y192YXJpYWJsZXMucGwKQEAgLTAsMCArMSw1 NiBAQAorIyBUZXN0IFBHQ19IQkEgR1VDIHZhcmlhYmxlcyBpbiBwZ19oYmEuY29uZgorCit1c2Ug c3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9y ZTsKKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ21haW4nKTsK KyRub2RlLT5pbml0OworCiskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ InNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMgPSAndGVzdF9oYmFfZ3VjJyIpOworCitteSAkaGJh X2NvbmYgPSAkbm9kZS0+ZGF0YV9kaXIgLiAnL3BnX2hiYS5jb25mJzsKK29wZW4gbXkgJGhiYV9m aCwgJz4nLCAkaGJhX2NvbmYgb3IgZGllICJDb3VsZCBub3Qgb3BlbiAkaGJhX2NvbmY6ICQhIjsK K3ByaW50ICRoYmFfZmggIiMgVGVzdCBIQkEgY29uZmlndXJhdGlvbiB3aXRoIEdVQyB2YXJpYWJs ZXNcbiI7CitwcmludCAkaGJhX2ZoICJsb2NhbCBhbGwgYWxsIHRydXN0IHRlc3RfaGJhX2d1Yy5z dHJpbmdfdmFyPWZyb21faGJhIHRlc3RfaGJhX2d1Yy5pbnRfdmFyPTk5OVxuIjsKK2Nsb3NlICRo YmFfZmg7CisKKyRub2RlLT5zdGFydDsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NS RUFURSBFWFRFTlNJT04gdGVzdF9oYmFfZ3VjOycpOworbXkgJHJlc3VsdCA9ICRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGN1cnJlbnRfc2V0dGluZygndGVzdF9oYmFfZ3Vj LnN0cmluZ192YXInKSwgY3VycmVudF9zZXR0aW5nKCd0ZXN0X2hiYV9ndWMuaW50X3ZhcicpOyIK Kyk7CitpcygkcmVzdWx0LCAnZnJvbV9oYmF8OTk5JywKKwknR1VDIHZhcmlhYmxlcyBzZXQgZnJv bSBwZ19oYmEuY29uZiBhcmUgYWNjZXNzaWJsZScpOworCiskcmVzdWx0ID0gJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qgc291cmNlIEZST00gcGdfc2V0dGluZ3MgV0hFUkUg bmFtZSA9ICd0ZXN0X2hiYV9ndWMuc3RyaW5nX3Zhcic7IgorKTsKK2lzKCRyZXN1bHQsICdwZ19o YmEuY29uZicsCisJJ0dVQyB2YXJpYWJsZSBzb3VyY2Ugc2hvd3MgcGdfaGJhLmNvbmYnKTsKKwor bXkgJG5vZGVfbm9fZXh0ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub19leHRl bnNpb24nKTsKKyRub2RlX25vX2V4dC0+aW5pdDsKKworbXkgJGhiYV9jb25mX25vX2V4dCA9ICRu b2RlX25vX2V4dC0+ZGF0YV9kaXIgLiAnL3BnX2hiYS5jb25mJzsKK29wZW4gbXkgJGhiYV9ub19l eHRfZmgsICc+JywgJGhiYV9jb25mX25vX2V4dCBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICRoYmFf Y29uZl9ub19leHQ6ICQhIjsKK3ByaW50ICRoYmFfbm9fZXh0X2ZoICIjIFRlc3QgSEJBIGNvbmZp Z3VyYXRpb24gd2l0aCB1bmRlZmluZWQgR1VDIHZhcmlhYmxlc1xuIjsKK3ByaW50ICRoYmFfbm9f ZXh0X2ZoICJsb2NhbCBhbGwgYWxsIHRydXN0IHRlc3RfaGJhX2d1Yy51bmRlZmluZWRfdmFyPXZh bHVlXG4iOworY2xvc2UgJGhiYV9ub19leHRfZmg7CisKKyRub2RlX25vX2V4dC0+c3RhcnQ7CisK K215ICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX25vX2V4dC0+cHNxbCgncG9zdGdy ZXMnLCAnU0VMRUNUIDE7Jyk7Citpc250KCRyZXQsIDAsICdDb25uZWN0aW9uIHJlamVjdGVkIHdo ZW4gSEJBIEdVQyB2YXJpYWJsZSBpcyB1bmRlZmluZWQnKTsKK2xpa2UoJHN0ZGVyciwgcXIvYXV0 aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBlcnJvci8sCisJJ0Vycm9yIG1lc3NhZ2UgaW5kaWNh dGVzIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcHJvYmxlbScpOworbGlrZSgkc3RkZXJy LCBxci91bmRlZmluZWQgR1VDIHZhcmlhYmxlLywKKwknRXJyb3IgbWVzc2FnZSBtZW50aW9ucyB1 bmRlZmluZWQgR1VDIHZhcmlhYmxlJyk7CisKKyRub2RlX25vX2V4dC0+c3RvcDsKKyRub2RlLT5z dG9wOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9oYmFfZ3VjL3QvMDAyX2hiYV9ndWNfc291cmNlcy5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9oYmFfZ3VjL3QvMDAyX2hiYV9ndWNfc291cmNlcy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uZTc2MmI4YTk2ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90LzAwMl9oYmFfZ3VjX3NvdXJjZXMucGwKQEAgLTAsMCAr MSwxODcgQEAKKyMgVGVzdCB0aGF0IFBHQ19IQkEgdmFyaWFibGVzIGNhbiBvbmx5IGJlIHNldCBm cm9tIGFwcHJvcHJpYXRlIHNvdXJjZXMKKyMKKyMgUEdDX0hCQSB2YXJpYWJsZXMgc2hvdWxkIGJl IHNldHRhYmxlIGZyb206CisjIC0gcG9zdGdyZXNxbC5jb25mCisjIC0gcG9zdGdyZXNxbC5hdXRv LmNvbmYgKEFMVEVSIFNZU1RFTSkKKyMgLSBwZ19oYmEuY29uZgorIworIyBCdXQgTk9UIGZyb206 CisjIC0gQUxURVIgVVNFUiBTRVQKKyMgLSBBTFRFUiBEQVRBQkFTRSBTRVQKKyMgLSBDb25uZWN0 aW9uIHBhcmFtZXRlcnMgKFBHT1BUSU9OUykKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBG QVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgVGVzdCAxOiBQR0NfSEJB IHZhcmlhYmxlIENBTiBiZSBzZXQgaW4gcG9zdGdyZXNxbC5jb25mCit7CisJbXkgJG5vZGUgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ2NvbmZfYWxsb3dlZCcpOworCSRub2RlLT5p bml0OworCisJJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkic2Vzc2lv bl9wcmVsb2FkX2xpYnJhcmllcyA9ICd0ZXN0X2hiYV9ndWMnIik7CisKKwkkbm9kZS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCSJ0ZXN0X2hiYV9ndWMuc3RyaW5nX3ZhciA9ICdm cm9tX3Bvc3RncmVzcWxfY29uZiciKTsKKworCW15ICRoYmFfY29uZiA9ICRub2RlLT5kYXRhX2Rp ciAuICcvcGdfaGJhLmNvbmYnOworCW9wZW4gbXkgJGhiYV9maCwgJz4nLCAkaGJhX2NvbmYgb3Ig ZGllICJDb3VsZCBub3Qgb3BlbiAkaGJhX2NvbmY6ICQhIjsKKwlwcmludCAkaGJhX2ZoICJsb2Nh bCBhbGwgYWxsIHRydXN0XG4iOworCWNsb3NlICRoYmFfZmg7CisKKwkkbm9kZS0+c3RhcnQ7CisK KwlteSAkcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGN1 cnJlbnRfc2V0dGluZygndGVzdF9oYmFfZ3VjLnN0cmluZ192YXInKTsiKTsKKwlpcygkcmVzdWx0 LCAnZnJvbV9wb3N0Z3Jlc3FsX2NvbmYnLAorCQknUEdDX0hCQSB2YXJpYWJsZSBjYW4gYmUgc2V0 IGluIHBvc3RncmVzcWwuY29uZicpOworCisJJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBzb3VyY2UgRlJPTSBwZ19zZXR0aW5ncyBXSEVSRSBuYW1lID0g J3Rlc3RfaGJhX2d1Yy5zdHJpbmdfdmFyJzsiKTsKKwlpcygkcmVzdWx0LCAnY29uZmlndXJhdGlv biBmaWxlJywKKwkJJ1NvdXJjZSBzaG93cyBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHBvc3RncmVz cWwuY29uZiBzZXR0aW5nJyk7CisKKwkkbm9kZS0+c3RvcDsKK30KKworIyBUZXN0IDI6IFBHQ19I QkEgdmFyaWFibGUgQ0FOIGJlIHNldCB2aWEgQUxURVIgU1lTVEVNIChwb3N0Z3Jlc3FsLmF1dG8u Y29uZikKK3sKKwlteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnYWx0 ZXJfc3lzdGVtX2FsbG93ZWQnKTsKKwkkbm9kZS0+aW5pdDsKKworCSRub2RlLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKKwkJInNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMgPSAndGVz dF9oYmFfZ3VjJyIpOworCisJbXkgJGhiYV9jb25mID0gJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19o YmEuY29uZic7CisJb3BlbiBteSAkaGJhX2ZoLCAnPicsICRoYmFfY29uZiBvciBkaWUgIkNvdWxk IG5vdCBvcGVuICRoYmFfY29uZjogJCEiOworCXByaW50ICRoYmFfZmggImxvY2FsIGFsbCBhbGwg dHJ1c3RcbiI7CisJY2xvc2UgJGhiYV9maDsKKworCSRub2RlLT5zdGFydDsKKworCSRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkFMVEVSIFNZU1RFTSBTRVQgdGVzdF9oYmFfZ3VjLnN0 cmluZ192YXIgPSAnZnJvbV9hbHRlcl9zeXN0ZW0nOyIpOworCisJJG5vZGUtPnJlbG9hZDsKKwor CW15ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY3Vy cmVudF9zZXR0aW5nKCd0ZXN0X2hiYV9ndWMuc3RyaW5nX3ZhcicpOyIpOworCWlzKCRyZXN1bHQs ICdmcm9tX2FsdGVyX3N5c3RlbScsCisJCSdQR0NfSEJBIHZhcmlhYmxlIGNhbiBiZSBzZXQgdmlh IEFMVEVSIFNZU1RFTScpOworCisJJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBzb3VyY2UgRlJPTSBwZ19zZXR0aW5ncyBXSEVSRSBuYW1lID0gJ3Rlc3Rf aGJhX2d1Yy5zdHJpbmdfdmFyJzsiKTsKKwlpcygkcmVzdWx0LCAnY29uZmlndXJhdGlvbiBmaWxl JywKKwkJJ1NvdXJjZSBzaG93cyBjb25maWd1cmF0aW9uIGZpbGUgZm9yIEFMVEVSIFNZU1RFTSBz ZXR0aW5nJyk7CisKKwkkbm9kZS0+c3RvcDsKK30KKworIyBUZXN0IDM6IFBHQ19IQkEgdmFyaWFi bGUgQ0FOTk9UIGJlIHNldCB2aWEgQUxURVIgVVNFUiBTRVQKK3sKKwlteSAkbm9kZSA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnYWx0ZXJfdXNlcl9yZWplY3RlZCcpOworCSRub2Rl LT5pbml0OworCisJJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkic2Vz c2lvbl9wcmVsb2FkX2xpYnJhcmllcyA9ICd0ZXN0X2hiYV9ndWMnIik7CisKKwlteSAkaGJhX2Nv bmYgPSAkbm9kZS0+ZGF0YV9kaXIgLiAnL3BnX2hiYS5jb25mJzsKKwlvcGVuIG15ICRoYmFfZmgs ICc+JywgJGhiYV9jb25mIG9yIGRpZSAiQ291bGQgbm90IG9wZW4gJGhiYV9jb25mOiAkISI7CisJ cHJpbnQgJGhiYV9maCAibG9jYWwgYWxsIGFsbCB0cnVzdFxuIjsKKwljbG9zZSAkaGJhX2ZoOwor CisJJG5vZGUtPnN0YXJ0OworCisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRF IFVTRVIgdGVzdHVzZXI7Iik7CisKKwlteSAoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9k ZS0+cHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgVVNFUiB0ZXN0dXNlciBTRVQgdGVzdF9oYmFf Z3VjLnN0cmluZ192YXIgPSAnZnJvbV9hbHRlcl91c2VyJzsiKTsKKwlpc250KCRyZXQsIDAsICdB TFRFUiBVU0VSIFNFVCByZWplY3RlZCBmb3IgUEdDX0hCQSB2YXJpYWJsZScpOworCWxpa2UoJHN0 ZGVyciwgcXIvY2Fubm90IGJlIHNldCBieSBBTFRFUiBVU0VSIG9yIEFMVEVSIERBVEFCQVNFLywK KwkJJ0Vycm9yIG1lc3NhZ2UgaW5kaWNhdGVzIEFMVEVSIFVTRVIgaXMgbm90IGFsbG93ZWQgZm9y IFBHQ19IQkEnKTsKKworCSRub2RlLT5zdG9wOworfQorCisjIFRlc3QgNDogUEdDX0hCQSB2YXJp YWJsZSBDQU5OT1QgYmUgc2V0IHZpYSBBTFRFUiBEQVRBQkFTRSBTRVQKK3sKKwlteSAkbm9kZSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnYWx0ZXJfZGF0YWJhc2VfcmVqZWN0ZWQn KTsKKwkkbm9kZS0+aW5pdDsKKworCSRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywKKwkJInNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMgPSAndGVzdF9oYmFfZ3VjJyIpOworCisJ bXkgJGhiYV9jb25mID0gJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19oYmEuY29uZic7CisJb3BlbiBt eSAkaGJhX2ZoLCAnPicsICRoYmFfY29uZiBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICRoYmFfY29u ZjogJCEiOworCXByaW50ICRoYmFfZmggImxvY2FsIGFsbCBhbGwgdHJ1c3RcbiI7CisJY2xvc2Ug JGhiYV9maDsKKworCSRub2RlLT5zdGFydDsKKworCW15ICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJy KSA9ICRub2RlLT5wc3FsKCdwb3N0Z3JlcycsCisJCSJBTFRFUiBEQVRBQkFTRSBwb3N0Z3JlcyBT RVQgdGVzdF9oYmFfZ3VjLnN0cmluZ192YXIgPSAnZnJvbV9hbHRlcl9kYXRhYmFzZSc7Iik7CisJ aXNudCgkcmV0LCAwLCAnQUxURVIgREFUQUJBU0UgU0VUIHJlamVjdGVkIGZvciBQR0NfSEJBIHZh cmlhYmxlJyk7CisJbGlrZSgkc3RkZXJyLCBxci9jYW5ub3QgYmUgc2V0IGJ5IEFMVEVSIFVTRVIg b3IgQUxURVIgREFUQUJBU0UvLAorCQknRXJyb3IgbWVzc2FnZSBpbmRpY2F0ZXMgQUxURVIgREFU QUJBU0UgaXMgbm90IGFsbG93ZWQgZm9yIFBHQ19IQkEnKTsKKworCSRub2RlLT5zdG9wOworfQor CisjIFRlc3QgNTogUEdDX0hCQSB2YXJpYWJsZSBDQU5OT1QgYmUgc2V0IHZpYSBjb25uZWN0aW9u IHBhcmFtZXRlciAoUEdPUFRJT05TKQoreworCW15ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3Rlci0+bmV3KCdwZ29wdGlvbnNfcmVqZWN0ZWQnKTsKKwkkbm9kZS0+aW5pdDsKKworCSRu b2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJInNlc3Npb25fcHJlbG9hZF9s aWJyYXJpZXMgPSAndGVzdF9oYmFfZ3VjJyIpOworCisJbXkgJGhiYV9jb25mID0gJG5vZGUtPmRh dGFfZGlyIC4gJy9wZ19oYmEuY29uZic7CisJb3BlbiBteSAkaGJhX2ZoLCAnPicsICRoYmFfY29u ZiBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICRoYmFfY29uZjogJCEiOworCXByaW50ICRoYmFfZmgg ImxvY2FsIGFsbCBhbGwgdHJ1c3RcbiI7CisJY2xvc2UgJGhiYV9maDsKKworCSRub2RlLT5zdGFy dDsKKworCSMgQ29ubmVjdGlvbiBzdWNjZWVkcyBidXQgcGFyYW1ldGVyIGlzIG5vdCBzZXQgKGdl dHMgZGVmYXVsdCB2YWx1ZSkKKwlsb2NhbCAkRU5We1BHT1BUSU9OU30gPSAnLWMgdGVzdF9oYmFf Z3VjLnN0cmluZ192YXI9ZnJvbV9wZ29wdGlvbnMnOworCW15ICRyZXN1bHQgPSAkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY3VycmVudF9zZXR0aW5nKCd0ZXN0X2hiYV9n dWMuc3RyaW5nX3ZhcicpOyIpOworCWlzKCRyZXN1bHQsICdkZWZhdWx0X3ZhbHVlJywKKwkJJ1BH Q19IQkEgdmFyaWFibGUgZnJvbSBQR09QVElPTlMgaXMgbm90IHNldCwgdXNlcyBkZWZhdWx0IHZh bHVlJyk7CisKKwlteSAkbG9nZmlsZSA9ICRub2RlLT5sb2dmaWxlOworCW15ICRsb2dfY29udGVu dCA9IHNsdXJwX2ZpbGUoJGxvZ2ZpbGUpOworCWxpa2UoJGxvZ19jb250ZW50LCBxci9wYXJhbWV0 ZXIgInRlc3RfaGJhX2d1Y1wuc3RyaW5nX3ZhciIgY2Fubm90IGJlIGNoYW5nZWQgbm93LywKKwkJ J1dhcm5pbmcgbG9nZ2VkIHdoZW4gdHJ5aW5nIHRvIHNldCBQR0NfSEJBIHZpYSBQR09QVElPTlMn KTsKKworCSRub2RlLT5zdG9wOworfQorCisjIFRlc3QgNjogUEdDX0hCQSB2YXJpYWJsZSBDQU5O T1QgYmUgc2V0IHZpYSBTRVQgY29tbWFuZAoreworCW15ICRub2RlID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdzZXRfcmVqZWN0ZWQnKTsKKwkkbm9kZS0+aW5pdDsKKworCSRub2Rl LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJInNlc3Npb25fcHJlbG9hZF9saWJy YXJpZXMgPSAndGVzdF9oYmFfZ3VjJyIpOworCisJbXkgJGhiYV9jb25mID0gJG5vZGUtPmRhdGFf ZGlyIC4gJy9wZ19oYmEuY29uZic7CisJb3BlbiBteSAkaGJhX2ZoLCAnPicsICRoYmFfY29uZiBv ciBkaWUgIkNvdWxkIG5vdCBvcGVuICRoYmFfY29uZjogJCEiOworCXByaW50ICRoYmFfZmggImxv Y2FsIGFsbCBhbGwgdHJ1c3RcbiI7CisJY2xvc2UgJGhiYV9maDsKKworCSRub2RlLT5zdGFydDsK KworCW15ICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlLT5wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRVQgdGVzdF9oYmFfZ3VjLnN0cmluZ192YXIgPSAnZnJvbV9zZXQnOyIpOworCWlzbnQo JHJldCwgMCwgJ1NFVCBjb21tYW5kIHJlamVjdGVkIGZvciBQR0NfSEJBIHZhcmlhYmxlJyk7CisJ bGlrZSgkc3RkZXJyLCBxci9jYW5ub3QgYmUgY2hhbmdlZHxjYW5ub3QgYmUgc2V0LywKKwkJJ0Vy cm9yIG1lc3NhZ2UgaW5kaWNhdGVzIFNFVCBpcyBub3QgYWxsb3dlZCBmb3IgUEdDX0hCQScpOwor CisJJG5vZGUtPnN0b3A7Cit9CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMvdC8wMDNfaGJhX2d1Y19wcmVjZWRlbmNlLnBsIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMvdC8wMDNfaGJhX2d1Y19wcmVjZWRlbmNlLnBsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40YWZhYWQ5NWM3MwotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjL3QvMDAzX2hiYV9ndWNf cHJlY2VkZW5jZS5wbApAQCAtMCwwICsxLDEwNSBAQAorIyBUZXN0IHRoYXQgUEdDX0hCQSB2YXJp YWJsZXMgZnJvbSBwZ19oYmEuY29uZiByZXNwZWN0IGxpbmUgcHJlY2VkZW5jZQorIworIyBwZ19o YmEuY29uZiBpcyBldmFsdWF0ZWQgdG9wLXRvLWJvdHRvbSwgYW5kIHRoZSBmaXJzdCBtYXRjaGlu ZyBsaW5lIHdpbnMuCisjIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IEdVQyB2YWx1ZXMgYXJlIHRh a2VuIGZyb20gdGhlIGNvcnJlY3QgbWF0Y2hpbmcgbGluZS4KKwordXNlIHN0cmljdDsKK3VzZSB3 YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwor dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgVGVzdCAx OiBGaXJzdCBtYXRjaGluZyBsaW5lIHdpbnMgKHNhbWUgdXNlciwgc2FtZSBkYXRhYmFzZSwgc2Ft ZSBhdXRoIG1ldGhvZHMpCit7CisJbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ2ZpcnN0X21hdGNoX3dpbnMnKTsKKwkkbm9kZS0+aW5pdDsKKworCSRub2RlLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJInNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMg PSAndGVzdF9oYmFfZ3VjJyIpOworCisJbXkgJGhiYV9jb25mID0gJG5vZGUtPmRhdGFfZGlyIC4g Jy9wZ19oYmEuY29uZic7CisJb3BlbiBteSAkaGJhX2ZoLCAnPicsICRoYmFfY29uZiBvciBkaWUg IkNvdWxkIG5vdCBvcGVuICRoYmFfY29uZjogJCEiOworCXByaW50ICRoYmFfZmggImxvY2FsIGFs bCBhbGwgdHJ1c3QgdGVzdF9oYmFfZ3VjLnN0cmluZ192YXI9Zmlyc3RfbGluZVxuIjsKKwlwcmlu dCAkaGJhX2ZoICJsb2NhbCBhbGwgYWxsIHRydXN0IHRlc3RfaGJhX2d1Yy5zdHJpbmdfdmFyPXNl Y29uZF9saW5lXG4iOworCXByaW50ICRoYmFfZmggImxvY2FsIGFsbCBhbGwgdHJ1c3QgdGVzdF9o YmFfZ3VjLnN0cmluZ192YXI9dGhpcmRfbGluZVxuIjsKKwljbG9zZSAkaGJhX2ZoOworCisJJG5v ZGUtPnN0YXJ0OworCisJbXkgJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjdXJyZW50X3NldHRpbmcoJ3Rlc3RfaGJhX2d1Yy5zdHJpbmdfdmFyJyk7Iik7 CisJaXMoJHJlc3VsdCwgJ2ZpcnN0X2xpbmUnLAorCQknRmlyc3QgbWF0Y2hpbmcgSEJBIGxpbmUg d2lucyB3aGVuIG11bHRpcGxlIGxpbmVzIG1hdGNoJyk7CisKKwkkbm9kZS0+c3RvcDsKK30KKwor IyBUZXN0IDI6IERhdGFiYXNlLXNwZWNpZmljIEdVQyB2YWx1ZXMKK3sKKwlteSAkbm9kZSA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnZGF0YWJhc2Vfc3BlY2lmaWMnKTsKKwkkbm9k ZS0+aW5pdDsKKworCSRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJInNl c3Npb25fcHJlbG9hZF9saWJyYXJpZXMgPSAndGVzdF9oYmFfZ3VjJyIpOworCisJIyBDcmVhdGUg dGVzdCBkYXRhYmFzZXMKKwkkbm9kZS0+c3RhcnQ7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAnQ1JFQVRFIERBVEFCQVNFIHRlc3RkYjE7Jyk7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnQ1JFQVRFIERBVEFCQVNFIHRlc3RkYjI7Jyk7CisJJG5vZGUtPnN0b3A7CisKKwkj IENyZWF0ZSBwZ19oYmEuY29uZiB3aXRoIGRhdGFiYXNlLXNwZWNpZmljIHZhbHVlcworCW15ICRo YmFfY29uZiA9ICRub2RlLT5kYXRhX2RpciAuICcvcGdfaGJhLmNvbmYnOworCW9wZW4gbXkgJGhi YV9maCwgJz4nLCAkaGJhX2NvbmYgb3IgZGllICJDb3VsZCBub3Qgb3BlbiAkaGJhX2NvbmY6ICQh IjsKKwlwcmludCAkaGJhX2ZoICJsb2NhbCB0ZXN0ZGIxIGFsbCB0cnVzdCB0ZXN0X2hiYV9ndWMu c3RyaW5nX3Zhcj1mcm9tX3Rlc3RkYjFcbiI7CisJcHJpbnQgJGhiYV9maCAibG9jYWwgdGVzdGRi MiBhbGwgdHJ1c3QgdGVzdF9oYmFfZ3VjLnN0cmluZ192YXI9ZnJvbV90ZXN0ZGIyXG4iOworCXBy aW50ICRoYmFfZmggImxvY2FsIGFsbCBhbGwgdHJ1c3QgdGVzdF9oYmFfZ3VjLnN0cmluZ192YXI9 ZnJvbV93aWxkY2FyZFxuIjsKKwljbG9zZSAkaGJhX2ZoOworCisJJG5vZGUtPnN0YXJ0OworCisJ bXkgJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Rlc3RkYjEnLAorCQkiU0VMRUNUIGN1cnJl bnRfc2V0dGluZygndGVzdF9oYmFfZ3VjLnN0cmluZ192YXInKTsiKTsKKwlpcygkcmVzdWx0LCAn ZnJvbV90ZXN0ZGIxJywKKwkJJ0RhdGFiYXNlLXNwZWNpZmljIEdVQyB2YWx1ZSBhcHBsaWVkIGZv ciB0ZXN0ZGIxJyk7CisKKwkkcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgndGVzdGRiMicsCisJ CSJTRUxFQ1QgY3VycmVudF9zZXR0aW5nKCd0ZXN0X2hiYV9ndWMuc3RyaW5nX3ZhcicpOyIpOwor CWlzKCRyZXN1bHQsICdmcm9tX3Rlc3RkYjInLAorCQknRGF0YWJhc2Utc3BlY2lmaWMgR1VDIHZh bHVlIGFwcGxpZWQgZm9yIHRlc3RkYjInKTsKKworCSRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY3VycmVudF9zZXR0aW5nKCd0ZXN0X2hiYV9ndWMuc3Ry aW5nX3ZhcicpOyIpOworCWlzKCRyZXN1bHQsICdmcm9tX3dpbGRjYXJkJywKKwkJJ1dpbGRjYXJk IEdVQyB2YWx1ZSBhcHBsaWVkIGZvciBwb3N0Z3JlcyBkYXRhYmFzZScpOworCisJJG5vZGUtPnN0 b3A7Cit9CisKKyMgVGVzdCAzOiBFbXB0eS9ubyBHVUMgb3B0aW9ucyBvbiBmaXJzdCBtYXRjaCwg R1VDIG9wdGlvbnMgb24gbGF0ZXIgbGluZQorIyBUaGUgZmlyc3QgbWF0Y2hpbmcgbGluZSB3aW5z IGV2ZW4gaWYgaXQgaGFzIG5vIEdVQyBvcHRpb25zCit7CisJbXkgJG5vZGUgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vX2d1Y3NfZmlyc3QnKTsKKwkkbm9kZS0+aW5pdDsKKwor CSRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJInNlc3Npb25fcHJlbG9h ZF9saWJyYXJpZXMgPSAndGVzdF9oYmFfZ3VjJyIpOworCisJbXkgJGhiYV9jb25mID0gJG5vZGUt PmRhdGFfZGlyIC4gJy9wZ19oYmEuY29uZic7CisJb3BlbiBteSAkaGJhX2ZoLCAnPicsICRoYmFf Y29uZiBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICRoYmFfY29uZjogJCEiOworCXByaW50ICRoYmFf ZmggImxvY2FsIGFsbCBhbGwgdHJ1c3RcbiI7CisJcHJpbnQgJGhiYV9maCAibG9jYWwgYWxsIGFs bCB0cnVzdCB0ZXN0X2hiYV9ndWMuc3RyaW5nX3Zhcj1ub3RfdXNlZFxuIjsKKwljbG9zZSAkaGJh X2ZoOworCisJJG5vZGUtPnN0YXJ0OworCisJIyBTaG91bGQgZ2V0IGRlZmF1bHQgdmFsdWUgc2lu Y2UgZmlyc3QgbWF0Y2hpbmcgbGluZSBoYXMgbm8gR1VDIG9wdGlvbnMKKwlteSAkcmVzdWx0ID0g JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGN1cnJlbnRfc2V0dGluZygn dGVzdF9oYmFfZ3VjLnN0cmluZ192YXInKTsiKTsKKwlpcygkcmVzdWx0LCAnZGVmYXVsdF92YWx1 ZScsCisJCSdEZWZhdWx0IEdVQyB2YWx1ZSB3aGVuIGZpcnN0IG1hdGNoaW5nIGxpbmUgaGFzIG5v IEdVQyBvcHRpb25zJyk7CisKKwkkbm9kZS0+c3RvcDsKK30KKworZG9uZV90ZXN0aW5nKCk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90ZXN0X2hiYV9ndWMtLTEu MC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90ZXN0X2hiYV9ndWMtLTEuMC5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmViMjlkMTc0ZjUyCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMvdGVzdF9oYmFf Z3VjLS0xLjAuc3FsCkBAIC0wLDAgKzEsMjIgQEAKKy8qIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9o YmFfZ3VjL3Rlc3RfaGJhX2d1Yy0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQg aXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVj aG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3RfaGJhX2d1YyIgdG8gbG9hZCB0aGlzIGZpbGUu IFxxdWl0CisKKy0tIEZ1bmN0aW9uIHRvIGdldCBjdXJyZW50IHZhbHVlIG9mIHRlc3RfaGJhX2d1 Yy5zdHJpbmdfdmFyCitDUkVBVEUgRlVOQ1RJT04gZ2V0X3Rlc3RfaGJhX3N0cmluZygpCitSRVRV Uk5TIHRleHQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIFNUUklDVDsKKworLS0g RnVuY3Rpb24gdG8gZ2V0IGN1cnJlbnQgdmFsdWUgb2YgdGVzdF9oYmFfZ3VjLmludF92YXIKK0NS RUFURSBGVU5DVElPTiBnZXRfdGVzdF9oYmFfaW50KCkKK1JFVFVSTlMgaW50ZWdlcgorQVMgJ01P RFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOworCistLSBGdW5jdGlvbiB0byBnZXQg Y3VycmVudCB2YWx1ZSBvZiB0ZXN0X2hiYV9ndWMuYm9vbF92YXIKK0NSRUFURSBGVU5DVElPTiBn ZXRfdGVzdF9oYmFfYm9vbCgpCitSRVRVUk5TIGJvb2xlYW4KK0FTICdNT0RVTEVfUEFUSE5BTUUn CitMQU5HVUFHRSBDIFNUUklDVDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9o YmFfZ3VjL3Rlc3RfaGJhX2d1Yy5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMvdGVz dF9oYmFfZ3VjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc0YjRh NTU5YWM1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMv dGVzdF9oYmFfZ3VjLmMKQEAgLTAsMCArMSw5MyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor ICogdGVzdF9oYmFfZ3VjLmMKKyAqCQlUZXN0IG1vZHVsZSBmb3IgUEdDX0hCQSBHVUMgdmFyaWFi bGVzCisgKgorICogVGhpcyBtb2R1bGUgdGVzdHMgdGhlIFBHQ19IQkEgY29udGV4dCBsZXZlbCBm b3IgR1VDIHZhcmlhYmxlcywgd2hpY2gKKyAqIGFsbG93cyB2YXJpYWJsZXMgdG8gYmUgc2V0IGlu IHBnX2hiYS5jb25mIG9yIHBvc3RncmVzcWwuY29uZiBidXQgbm90CisgKiBieSBjbGllbnQgY29u bmVjdGlvbnMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy90ZXN0L21v ZHVsZXMvdGVzdF9oYmFfZ3VjL3Rlc3RfaGJhX2d1Yy5jCisgKgorICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKworUEdfTU9E VUxFX01BR0lDOworCitzdGF0aWMgY2hhciAqdGVzdF9oYmFfc3RyaW5nID0gTlVMTDsKK3N0YXRp YyBpbnQJdGVzdF9oYmFfaW50ID0gMDsKK3N0YXRpYyBib29sIHRlc3RfaGJhX2Jvb2wgPSBmYWxz ZTsKKworUEdfRlVOQ1RJT05fSU5GT19WMShnZXRfdGVzdF9oYmFfc3RyaW5nKTsKK1BHX0ZVTkNU SU9OX0lORk9fVjEoZ2V0X3Rlc3RfaGJhX2ludCk7CitQR19GVU5DVElPTl9JTkZPX1YxKGdldF90 ZXN0X2hiYV9ib29sKTsKKwordm9pZAorX1BHX2luaXQodm9pZCkKK3sKKwlEZWZpbmVDdXN0b21T dHJpbmdWYXJpYWJsZSgidGVzdF9oYmFfZ3VjLnN0cmluZ192YXIiLAorCQkJCQkJCSAgICJUZXN0 IFBHQ19IQkEgc3RyaW5nIHZhcmlhYmxlIiwKKwkJCQkJCQkgICAiVGhpcyB2YXJpYWJsZSBjYW4g b25seSBiZSBzZXQgaW4gcGdfaGJhLmNvbmYgb3IgcG9zdGdyZXNxbC5jb25mIiwKKwkJCQkJCQkg ICAmdGVzdF9oYmFfc3RyaW5nLAorCQkJCQkJCSAgICJkZWZhdWx0X3ZhbHVlIiwKKwkJCQkJCQkg ICBQR0NfSEJBLAorCQkJCQkJCSAgIDAsCisJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICBOVUxM LAorCQkJCQkJCSAgIE5VTEwpOworCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoInRlc3RfaGJh X2d1Yy5pbnRfdmFyIiwKKwkJCQkJCQkiVGVzdCBQR0NfSEJBIGludGVnZXIgdmFyaWFibGUiLAor CQkJCQkJCSJUaGlzIHZhcmlhYmxlIGNhbiBvbmx5IGJlIHNldCBpbiBwZ19oYmEuY29uZiBvciBw b3N0Z3Jlc3FsLmNvbmYiLAorCQkJCQkJCSZ0ZXN0X2hiYV9pbnQsCisJCQkJCQkJNDIsCisJCQkJ CQkJMCwKKwkJCQkJCQkxMDAwMCwKKwkJCQkJCQlQR0NfSEJBLAorCQkJCQkJCTAsCisJCQkJCQkJ TlVMTCwKKwkJCQkJCQlOVUxMLAorCQkJCQkJCU5VTEwpOworCisJRGVmaW5lQ3VzdG9tQm9vbFZh cmlhYmxlKCJ0ZXN0X2hiYV9ndWMuYm9vbF92YXIiLAorCQkJCQkJCSAiVGVzdCBQR0NfSEJBIGJv b2xlYW4gdmFyaWFibGUiLAorCQkJCQkJCSAiVGhpcyB2YXJpYWJsZSBjYW4gb25seSBiZSBzZXQg aW4gcGdfaGJhLmNvbmYgb3IgcG9zdGdyZXNxbC5jb25mIiwKKwkJCQkJCQkgJnRlc3RfaGJhX2Jv b2wsCisJCQkJCQkJIGZhbHNlLAorCQkJCQkJCSBQR0NfSEJBLAorCQkJCQkJCSAwLAorCQkJCQkJ CSBOVUxMLAorCQkJCQkJCSBOVUxMLAorCQkJCQkJCSBOVUxMKTsKKworCU1hcmtHVUNQcmVmaXhS ZXNlcnZlZCgidGVzdF9oYmFfZ3VjIik7Cit9CisKK0RhdHVtCitnZXRfdGVzdF9oYmFfc3RyaW5n KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJaWYgKHRlc3RfaGJhX3N0cmluZyA9PSBOVUxMKQorCQlQ R19SRVRVUk5fTlVMTCgpOworCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0KHRlc3Rf aGJhX3N0cmluZykpOworfQorCitEYXR1bQorZ2V0X3Rlc3RfaGJhX2ludChQR19GVU5DVElPTl9B UkdTKQoreworCVBHX1JFVFVSTl9JTlQzMih0ZXN0X2hiYV9pbnQpOworfQorCitEYXR1bQorZ2V0 X3Rlc3RfaGJhX2Jvb2woUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlQR19SRVRVUk5fQk9PTCh0ZXN0 X2hiYV9ib29sKTsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3Vj L3Rlc3RfaGJhX2d1Yy5jb25mIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMvdGVzdF9o YmFfZ3VjLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI5ZWU0 MzRhNzg0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMv dGVzdF9oYmFfZ3VjLmNvbmYKQEAgLTAsMCArMSwzIEBACisjIENvbmZpZ3VyYXRpb24gZm9yIHRl c3RfaGJhX2d1YyByZWdyZXNzaW9uIHRlc3RzCisjIExvYWQgaW4gc2Vzc2lvbl9wcmVsb2FkX2xp YnJhcmllcyB0byB0ZXN0IHRoZSBwcm9wZXIgdmFsaWRhdGlvbiBmbG93CitzZXNzaW9uX3ByZWxv YWRfbGlicmFyaWVzID0gJ3Rlc3RfaGJhX2d1YycKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9oYmFfZ3VjL3Rlc3RfaGJhX2d1Yy5jb250cm9sIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2hiYV9ndWMvdGVzdF9oYmFfZ3VjLmNvbnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjFmNGE5OTA2OWJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2hiYV9ndWMvdGVzdF9oYmFfZ3VjLmNvbnRyb2wKQEAgLTAsMCArMSw1IEBA CisjIHRlc3RfaGJhX2d1YyBleHRlbnNpb24KK2NvbW1lbnQgPSAnVGVzdCBtb2R1bGUgZm9yIFBH Q19IQkEgR1VDIHZhcmlhYmxlcycKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCittb2R1bGVfcGF0 aG5hbWUgPSAnJGxpYmRpci90ZXN0X2hiYV9ndWMnCityZWxvY2F0YWJsZSA9IHRydWUKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjX2NvbnRleHRzL01ha2VmaWxlIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4dHMvTWFrZWZpbGUKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdmODA1YjBhYmQ4Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4dHMvTWFrZWZpbGUKQEAg LTAsMCArMSwxOCBAQAorIyBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Y19jb250ZXh0cy9N YWtlZmlsZQorCitNT0RVTEVfYmlnID0gdGVzdF9oYmFfZ3VjX2NvbnRleHRzCitPQkpTID0gXAor CSQoV0lOMzJSRVMpIFwKKwl0ZXN0X2hiYV9ndWNfY29udGV4dHMubworUEdGSUxFREVTQyA9ICJ0 ZXN0X2hiYV9ndWNfY29udGV4dHMgLSB0ZXN0IG1vZHVsZSBmb3IgUEdDX0hCQSBjb250ZXh0IHZh bGlkYXRpb24iCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMg Oj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitz dWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Y19jb250ZXh0cwordG9wX2J1aWxk ZGlyID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5n bG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitl bmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4dHMv bWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Y19jb250ZXh0cy9tZXNv bi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTJjMGVlZWQy MjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Y19jb250 ZXh0cy9tZXNvbi5idWlsZApAQCAtMCwwICsxLDI4IEBACisjIENvcHlyaWdodCAoYykgMjAyNiwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordGVzdF9oYmFfZ3VjX2NvbnRl eHRzX3NvdXJjZXMgPSBmaWxlcygKKyAgJ3Rlc3RfaGJhX2d1Y19jb250ZXh0cy5jJywKKykKKwor aWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCisgIHRlc3RfaGJhX2d1Y19jb250ZXh0c19zb3Vy Y2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWworICAg ICctLU5BTUUnLCAndGVzdF9oYmFfZ3VjX2NvbnRleHRzJywKKyAgICAnLS1GSUxFREVTQycsICd0 ZXN0X2hiYV9ndWNfY29udGV4dHMgLSB0ZXN0IG1vZHVsZSBmb3IgUEdDX0hCQSBjb250ZXh0IHZh bGlkYXRpb24nLF0pCitlbmRpZgorCit0ZXN0X2hiYV9ndWNfY29udGV4dHMgPSBzaGFyZWRfbW9k dWxlKCd0ZXN0X2hiYV9ndWNfY29udGV4dHMnLAorICB0ZXN0X2hiYV9ndWNfY29udGV4dHNfc291 cmNlcywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAorKQordGVzdF9pbnN0YWxsX2xpYnMg Kz0gdGVzdF9oYmFfZ3VjX2NvbnRleHRzCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAndGVzdF9o YmFfZ3VjX2NvbnRleHRzJywKKyAgJ3NkJzogbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCisg ICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCisgICd0YXAnOiB7CisgICAgJ3Rlc3Rz JzogWworICAgICAgJ3QvMDAxX2NvbnRleHRfdmFsaWRhdGlvbi5wbCcsCisgICAgXSwKKyAgfSwK K30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjX2NvbnRleHRzL3Qv MDAxX2NvbnRleHRfdmFsaWRhdGlvbi5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3Vj X2NvbnRleHRzL3QvMDAxX2NvbnRleHRfdmFsaWRhdGlvbi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMzVkNTQwYzA0ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Y19jb250ZXh0cy90LzAwMV9jb250ZXh0X3ZhbGlkYXRp b24ucGwKQEAgLTAsMCArMSw4NSBAQAorIyBUZXN0IHRoYXQgb25seSB2YXJpYWJsZXMgd2l0aCBj b250ZXh0IFBHQ19IQkEgb3IgYmVsb3cgY2FuIGJlIHNldCBmcm9tIHBnX2hiYS5jb25mCisKK3Vz ZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpN b3JlOworCitzdWIgdGVzdF9oYmFfcmVqZWN0ZWQKK3sKKwlteSAoJG5vZGVfbmFtZSwgJHZhcl9u YW1lLCAkdGVzdF9kZXNjKSA9IEBfOworCisJbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJG5vZGVfbmFtZSk7CisJJG5vZGUtPmluaXQ7CisKKwkkbm9kZS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCSJzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgPSAn dGVzdF9oYmFfZ3VjX2NvbnRleHRzJyIpOworCisJbXkgJGhiYV9jb25mID0gJG5vZGUtPmRhdGFf ZGlyIC4gJy9wZ19oYmEuY29uZic7CisJb3BlbiBteSAkaGJhX2ZoLCAnPicsICRoYmFfY29uZiBv ciBkaWUgIkNvdWxkIG5vdCBvcGVuICRoYmFfY29uZjogJCEiOworCXByaW50ICRoYmFfZmggImxv Y2FsIGFsbCBhbGwgdHJ1c3QgdGVzdF9oYmFfZ3VjX2NvbnRleHRzLiR2YXJfbmFtZT1mcm9tX2hi YVxuIjsKKwljbG9zZSAkaGJhX2ZoOworCisJJG5vZGUtPnN0YXJ0OworCisJbXkgKCRyZXQsICRz dGRvdXQsICRzdGRlcnIpID0gJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCAxOycpOwor CWlzbnQoJHJldCwgMCwgJHRlc3RfZGVzYyk7CisJbGlrZSgkc3RkZXJyLCBxci9jYW5ub3QgYmUg Y2hhbmdlZHxjYW5ub3QgYmUgc2V0LywKKwkJJ0Vycm9yIG1lc3NhZ2UgaW5kaWNhdGVzIHZhcmlh YmxlIGNhbm5vdCBiZSBzZXQgZnJvbSBwZ19oYmEuY29uZicpOworCisJJG5vZGUtPnN0b3A7CisJ cmV0dXJuOworfQorCitzdWIgdGVzdF9oYmFfYWNjZXB0ZWQKK3sKKwlteSAoJG5vZGVfbmFtZSwg JHZhcl9uYW1lLCAkdGVzdF9kZXNjKSA9IEBfOworCisJbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJG5vZGVfbmFtZSk7CisJJG5vZGUtPmluaXQ7CisKKwkkbm9kZS0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCSJzaGFyZWRfcHJlbG9hZF9saWJyYXJp ZXMgPSAndGVzdF9oYmFfZ3VjX2NvbnRleHRzJyIpOworCisJbXkgJGhiYV9jb25mID0gJG5vZGUt PmRhdGFfZGlyIC4gJy9wZ19oYmEuY29uZic7CisJb3BlbiBteSAkaGJhX2ZoLCAnPicsICRoYmFf Y29uZiBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICRoYmFfY29uZjogJCEiOworCXByaW50ICRoYmFf ZmggImxvY2FsIGFsbCBhbGwgdHJ1c3QgdGVzdF9oYmFfZ3VjX2NvbnRleHRzLiR2YXJfbmFtZT1m cm9tX2hiYVxuIjsKKwljbG9zZSAkaGJhX2ZoOworCisJJG5vZGUtPnN0YXJ0OworCisJbXkgKCRy ZXQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywKKwkJIlNIT1cg dGVzdF9oYmFfZ3VjX2NvbnRleHRzLiR2YXJfbmFtZTsiKTsKKwlpcygkcmV0LCAwLCAkdGVzdF9k ZXNjKTsKKwlsaWtlKCRzdGRvdXQsIHFyL2Zyb21faGJhLywgJ1ZhcmlhYmxlIHdhcyBzZXQgdG8g dmFsdWUgZnJvbSBwZ19oYmEuY29uZicpOworCisJJG5vZGUtPnN0b3A7CisJcmV0dXJuOworfQor CisjIFRlc3QgMTogUEdDX1BPU1RNQVNURVIgdmFyaWFibGUgc2hvdWxkIE5PVCBiZSBzZXR0YWJs ZSBmcm9tIHBnX2hiYS5jb25mCit0ZXN0X2hiYV9yZWplY3RlZCgncG9zdG1hc3Rlcl9yZWplY3Rl ZCcsICdwb3N0bWFzdGVyX3ZhcicsCisJJ0Nvbm5lY3Rpb24gcmVqZWN0ZWQgd2hlbiB0cnlpbmcg dG8gc2V0IFBHQ19QT1NUTUFTVEVSIGZyb20gcGdfaGJhLmNvbmYnKTsKKworIyBUZXN0IDI6IFBH Q19TSUdIVVAgdmFyaWFibGUgc2hvdWxkIE5PVCBiZSBzZXR0YWJsZSBmcm9tIHBnX2hiYS5jb25m Cit0ZXN0X2hiYV9yZWplY3RlZCgnc2lnaHVwX3JlamVjdGVkJywgJ3NpZ2h1cF92YXInLAorCSdD b25uZWN0aW9uIHJlamVjdGVkIHdoZW4gdHJ5aW5nIHRvIHNldCBQR0NfU0lHSFVQIGZyb20gcGdf aGJhLmNvbmYnKTsKKworIyBUZXN0IDM6IFBHQ19TVV9CQUNLRU5EIHZhcmlhYmxlIFNIT1VMRCBi ZSBzZXR0YWJsZSBmcm9tIHBnX2hiYS5jb25mCit0ZXN0X2hiYV9hY2NlcHRlZCgnc3VfYmFja2Vu ZF9hY2NlcHRlZCcsICdzdV9iYWNrZW5kX3ZhcicsCisJJ0Nvbm5lY3Rpb24gYWNjZXB0ZWQgd2hl biBzZXR0aW5nIFBHQ19TVV9CQUNLRU5EIGZyb20gcGdfaGJhLmNvbmYnKTsKKworIyBUZXN0IDQ6 IFBHQ19CQUNLRU5EIHZhcmlhYmxlIFNIT1VMRCBiZSBzZXR0YWJsZSBmcm9tIHBnX2hiYS5jb25m Cit0ZXN0X2hiYV9hY2NlcHRlZCgnYmFja2VuZF9hY2NlcHRlZCcsICdiYWNrZW5kX3ZhcicsCisJ J0Nvbm5lY3Rpb24gYWNjZXB0ZWQgd2hlbiBzZXR0aW5nIFBHQ19CQUNLRU5EIGZyb20gcGdfaGJh LmNvbmYnKTsKKworIyBUZXN0IDU6IFBHQ19TVVNFVCB2YXJpYWJsZSBTSE9VTEQgYmUgc2V0dGFi bGUgZnJvbSBwZ19oYmEuY29uZgordGVzdF9oYmFfYWNjZXB0ZWQoJ3N1c2V0X2FjY2VwdGVkJywg J3N1c2V0X3ZhcicsCisJJ0Nvbm5lY3Rpb24gYWNjZXB0ZWQgd2hlbiBzZXR0aW5nIFBHQ19TVVNF VCBmcm9tIHBnX2hiYS5jb25mJyk7CisKKyMgVGVzdCA2OiBQR0NfVVNFUlNFVCB2YXJpYWJsZSBT SE9VTEQgYmUgc2V0dGFibGUgZnJvbSBwZ19oYmEuY29uZgordGVzdF9oYmFfYWNjZXB0ZWQoJ3Vz ZXJzZXRfYWNjZXB0ZWQnLCAndXNlcnNldF92YXInLAorCSdDb25uZWN0aW9uIGFjY2VwdGVkIHdo ZW4gc2V0dGluZyBQR0NfVVNFUlNFVCBmcm9tIHBnX2hiYS5jb25mJyk7CisKK2RvbmVfdGVzdGlu ZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4dHMv dGVzdF9oYmFfZ3VjX2NvbnRleHRzLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Y19j b250ZXh0cy90ZXN0X2hiYV9ndWNfY29udGV4dHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMDg1OWY3MDE3NGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfaGJhX2d1Y19jb250ZXh0cy90ZXN0X2hiYV9ndWNfY29udGV4dHMuYwpAQCAt MCwwICsxLDg5IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB0ZXN0X2hiYV9ndWNfY29u dGV4dHMuYworICoJCVRlc3QgbW9kdWxlIGZvciB2YWxpZGF0aW5nIFBHQ19IQkEgY29udGV4dCBy ZXN0cmljdGlvbnMKKyAqCisgKiBUaGlzIG1vZHVsZSBkZWZpbmVzIEdVQyB2YXJpYWJsZXMgd2l0 aCBkaWZmZXJlbnQgY29udGV4dCBsZXZlbHMgdG8gdGVzdAorICogdGhhdCBvbmx5IHZhcmlhYmxl cyB3aXRoIGNvbnRleHQgUEdDX0hCQSBvciBiZWxvdyBjYW4gYmUgc2V0IGZyb20gcGdfaGJhLmNv bmYuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy90ZXN0L21vZHVsZXMv dGVzdF9oYmFfZ3VjX2NvbnRleHRzL3Rlc3RfaGJhX2d1Y19jb250ZXh0cy5jCisgKgorICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJm bWdyLmgiCisjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisKK1BHX01PRFVMRV9NQUdJQzsKKworc3Rh dGljIGNoYXIgKnRlc3RfcG9zdG1hc3Rlcl92YXIgPSBOVUxMOworc3RhdGljIGNoYXIgKnRlc3Rf c2lnaHVwX3ZhciA9IE5VTEw7CitzdGF0aWMgY2hhciAqdGVzdF9zdV9iYWNrZW5kX3ZhciA9IE5V TEw7CitzdGF0aWMgY2hhciAqdGVzdF9iYWNrZW5kX3ZhciA9IE5VTEw7CitzdGF0aWMgY2hhciAq dGVzdF9zdXNldF92YXIgPSBOVUxMOworc3RhdGljIGNoYXIgKnRlc3RfdXNlcnNldF92YXIgPSBO VUxMOworCit2b2lkCitfUEdfaW5pdCh2b2lkKQoreworCURlZmluZUN1c3RvbVN0cmluZ1Zhcmlh YmxlKCJ0ZXN0X2hiYV9ndWNfY29udGV4dHMucG9zdG1hc3Rlcl92YXIiLAorCQkJCQkJCQkiVGVz dCBQR0NfUE9TVE1BU1RFUiB2YXJpYWJsZSIsCisJCQkJCQkJCSJUaGlzIHNob3VsZCBOT1QgYmUg c2V0dGFibGUgZnJvbSBwZ19oYmEuY29uZiIsCisJCQkJCQkJCSZ0ZXN0X3Bvc3RtYXN0ZXJfdmFy LAorCQkJCQkJCQkicG9zdG1hc3Rlcl9kZWZhdWx0IiwKKwkJCQkJCQkJUEdDX1BPU1RNQVNURVIs CisJCQkJCQkJCTAsCisJCQkJCQkJCU5VTEwsIE5VTEwsIE5VTEwpOworCisJRGVmaW5lQ3VzdG9t U3RyaW5nVmFyaWFibGUoInRlc3RfaGJhX2d1Y19jb250ZXh0cy5zaWdodXBfdmFyIiwKKwkJCQkJ CQkJIlRlc3QgUEdDX1NJR0hVUCB2YXJpYWJsZSIsCisJCQkJCQkJCSJUaGlzIHNob3VsZCBOT1Qg YmUgc2V0dGFibGUgZnJvbSBwZ19oYmEuY29uZiIsCisJCQkJCQkJCSZ0ZXN0X3NpZ2h1cF92YXIs CisJCQkJCQkJCSJzaWdodXBfZGVmYXVsdCIsCisJCQkJCQkJCVBHQ19TSUdIVVAsCisJCQkJCQkJ CTAsCisJCQkJCQkJCU5VTEwsIE5VTEwsIE5VTEwpOworCisJRGVmaW5lQ3VzdG9tU3RyaW5nVmFy aWFibGUoInRlc3RfaGJhX2d1Y19jb250ZXh0cy5zdV9iYWNrZW5kX3ZhciIsCisJCQkJCQkJCSJU ZXN0IFBHQ19TVV9CQUNLRU5EIHZhcmlhYmxlIiwKKwkJCQkJCQkJIlRoaXMgU0hPVUxEIGJlIHNl dHRhYmxlIGZyb20gcGdfaGJhLmNvbmYiLAorCQkJCQkJCQkmdGVzdF9zdV9iYWNrZW5kX3ZhciwK KwkJCQkJCQkJInN1X2JhY2tlbmRfZGVmYXVsdCIsCisJCQkJCQkJCVBHQ19TVV9CQUNLRU5ELAor CQkJCQkJCQkwLAorCQkJCQkJCQlOVUxMLCBOVUxMLCBOVUxMKTsKKworCURlZmluZUN1c3RvbVN0 cmluZ1ZhcmlhYmxlKCJ0ZXN0X2hiYV9ndWNfY29udGV4dHMuYmFja2VuZF92YXIiLAorCQkJCQkJ CQkiVGVzdCBQR0NfQkFDS0VORCB2YXJpYWJsZSIsCisJCQkJCQkJCSJUaGlzIFNIT1VMRCBiZSBz ZXR0YWJsZSBmcm9tIHBnX2hiYS5jb25mIiwKKwkJCQkJCQkJJnRlc3RfYmFja2VuZF92YXIsCisJ CQkJCQkJCSJiYWNrZW5kX2RlZmF1bHQiLAorCQkJCQkJCQlQR0NfQkFDS0VORCwKKwkJCQkJCQkJ MCwKKwkJCQkJCQkJTlVMTCwgTlVMTCwgTlVMTCk7CisKKwlEZWZpbmVDdXN0b21TdHJpbmdWYXJp YWJsZSgidGVzdF9oYmFfZ3VjX2NvbnRleHRzLnN1c2V0X3ZhciIsCisJCQkJCQkJCSJUZXN0IFBH Q19TVVNFVCB2YXJpYWJsZSIsCisJCQkJCQkJCSJUaGlzIFNIT1VMRCBiZSBzZXR0YWJsZSBmcm9t IHBnX2hiYS5jb25mIiwKKwkJCQkJCQkJJnRlc3Rfc3VzZXRfdmFyLAorCQkJCQkJCQkic3VzZXRf ZGVmYXVsdCIsCisJCQkJCQkJCVBHQ19TVVNFVCwKKwkJCQkJCQkJMCwKKwkJCQkJCQkJTlVMTCwg TlVMTCwgTlVMTCk7CisKKwlEZWZpbmVDdXN0b21TdHJpbmdWYXJpYWJsZSgidGVzdF9oYmFfZ3Vj X2NvbnRleHRzLnVzZXJzZXRfdmFyIiwKKwkJCQkJCQkJIlRlc3QgUEdDX1VTRVJTRVQgdmFyaWFi bGUiLAorCQkJCQkJCQkiVGhpcyBTSE9VTEQgYmUgc2V0dGFibGUgZnJvbSBwZ19oYmEuY29uZiIs CisJCQkJCQkJCSZ0ZXN0X3VzZXJzZXRfdmFyLAorCQkJCQkJCQkidXNlcnNldF9kZWZhdWx0IiwK KwkJCQkJCQkJUEdDX1VTRVJTRVQsCisJCQkJCQkJCTAsCisJCQkJCQkJCU5VTEwsIE5VTEwsIE5V TEwpOworCisJTWFya0dVQ1ByZWZpeFJlc2VydmVkKCJ0ZXN0X2hiYV9ndWNfY29udGV4dHMiKTsK K30KLS0gCjIuNDMuMAoK --00000000000004209e064974e7d0--