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 1w7TSb-005Lu7-1D for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 07:24:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7TSZ-008RaF-2W for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 07:24:24 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w7TSY-008Ra7-2U for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 07:24:23 +0000 Received: from mail-vk1-xa2a.google.com ([2607:f8b0:4864:20::a2a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7TST-00000001vpZ-40CG for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 07:24:22 +0000 Received: by mail-vk1-xa2a.google.com with SMTP id 71dfb90a1353d-56b7e5dfd25so4695688e0c.1 for ; Tue, 31 Mar 2026 00:24:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774941857; cv=none; d=google.com; s=arc-20240605; b=kZegxSXqY/ef5mwJaBoewaxnFOUNTqJxBkebRA8VtwIluOn3Sw3vm6SvyJHHWAwMgJ XBR0Vx2Dfg9wL3Y3t72SFfLF60jbXS+Yq0Jjbezu0d4P3V4g81CMesmM3MKDWTULsCtq 7rZ7VaR9U2kl02+/QBTwtJbBwfNvkJ2pcLuEINm+O2WXr3Im8wdjvOj0PyWz7qLAHGD5 WP2mIeyAqSEn/x/k0MGAr0H/vejYCB9I2cCMnrLZH/eznRKO2NslibrqDJKZWOncphI8 pUXG2cn+9tsWFXrrpffQu/XuY+l22aPU0xumPWn8etFDPChkBCZvau8mvnzqUgZaNcl1 AoVg== 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=vCNj1ixaOXUK/yPoQKJx5EayEEBZfp127XtDyLIoIL0=; fh=l+Wb68NlSZhbl0jbrkAB8G17VLKgB/fJuKROwY23Kss=; b=bF05frNXTI3RbLENYROV6ux37m4u06tSD5HI3l5IQFt870yFPFhbxHaAJDc5yNzi71 zyOTaDeCLBv7mSWffqdkMT/OPbzlgeIVvHPbF5RkDinpAXAxoooovqB5iY7rxsNqelDJ iWsDrpk3ndKHsNlE4QuE0lnbVIQRSvKaBswGBJbSTQdcSiOkKCQwqJt1sQTxZIiYSpMN l4O46VJcQvJpfxVZ15PdFM5qjpWkcmLtXdMivIPqcbpcPDGwxWzHFCj4vo2ys7R/gkFw ZDdw/Mhv64bKJcoFC+AbmFb8i0aH7ZldzJJo5ltkdahDtLeVFsIq1kg3UAkRpvwIbv8R GEsg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774941857; x=1775546657; 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=vCNj1ixaOXUK/yPoQKJx5EayEEBZfp127XtDyLIoIL0=; b=CM25ZeiUdFRLFhHf6w1VUnDbBg2WsHuYRG+V86P2/hcH/FT8FnY9MctskljvInAygR JO6VO1ARCZmM40I8reHZaPalBiGzrLqn9OkiKnThBRmKsf2+V455x+QbEHZzzshrt38u VYszT5CA137tZWXoI7R9CO11ic6PS3lj7XWx5de8ROE04wCD61YctqW5nH3sN+b94/lc aEqtfgsp9V/tsOMhsA5hXgaPfeMr4FBpILrLj0lXN7IJ9OmnkK7EG68wbldqpO+ffi67 D00AyGAZO/S6mme6KFuRzy5Dv3ug/uV9RzS8AVqPNpG5lhsxrwpFpGbudlGnYlIpfoIw wuAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774941857; x=1775546657; 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=vCNj1ixaOXUK/yPoQKJx5EayEEBZfp127XtDyLIoIL0=; b=A8dP9faDkC+P/bOSYPfkgIp+UbFHYqqb8LO0fa0/F5tpQButHkB0jIgnJenS114vq5 RMJDfxe4KBFwfi+XW06sj6TnMekDjfHW8q24m+kk7/p/B+gCOUjWUyId72MP7Y8IjnUH PxG597niOVDaM42kn0S0fi+77fwudZvjfnamQu4cdzB4Ol71bjAGRdEMdoyN0bb5L9Dz FB/JTviBEmZHxIjQyMGYM9tKlr/EL5H0wZj3l6/HFpgzYKjXauaEOxUwnXzHis+zbpUS SzGxvFOpQrJZGi6wLmWxx6siOnWq1YVWnYEiEv0SGfmhlo25+y1JUlP+Yhf1wepKFbVl m8fw== X-Forwarded-Encrypted: i=1; AJvYcCUZ4WuQqJxcHOddhbCL2F8WCVL+CczfEP3eF6u0fF/MW+3Udqg0v0Hfq/PG+61mqdjLRngjS3fIlOca63ke@lists.postgresql.org X-Gm-Message-State: AOJu0YxPpLn09lrq4bezT+gDYuzIa6x0p0KJKBwl7kZ5e8qRNMvNcsu3 PEdM8+DeNJNLBJHSMRVy2vDViGIYLQyEAv0ui8jLaT5uNiay3ySrs8SZrFvACiLbh67rbKBw4gC HQslbBSf++yrnbmfddmUOd1XcLFTA/r8= X-Gm-Gg: ATEYQzxnBkguJo8LXjqmrzQhMXfMRxHbEd5UKe5wLsulQQfulMkJOcEUb9mCGdD/aKN dXIKvXzNfZY4pnyYdt5zEvqicG6ol4duDWXyaIPIgZ+h1G6tYNvmtv4SBzfR0DNm8S6VgyMiE7e TYMaoyOa/5EbJ4dsCSTkoAQO9K0TYz3sBGpIK3WHo0LGN3Iib8J0c6Hv/kXbb/ee0aOSaYYyrfK TiNH9Rr/U5u4M90yW0e7neM5+/gg+gsMU3g+4VDixJ145YOZ3Iqwvljx89TwpFizntqlE7NfcXw nf2ZUCOnDoOJzsKLTEAAVAaYHJcoPF+fib9eJYS9ofVio2XUGywTPZpnIIUvI8wI2CUplpwDsQm wlkY5qNR9ORLNfTaS+zTXnEO1B24TrQHwOPUnDAWycenCaFSnTpK6mJTbW/KQDUb2cPdKaB+C46 7cF0IgKVozTfHofPjyaMaPWYgSrsfc7Zkr X-Received: by 2002:a67:e7c6:0:b0:604:df34:b769 with SMTP id ada2fe7eead31-6054fe413d0mr893420137.14.1774941857197; Tue, 31 Mar 2026 00:24:17 -0700 (PDT) MIME-Version: 1.0 References: <5ae9578e-f25e-49c5-97ab-ad27bc2050b5@eisentraut.org> <5221f892-e1d5-4943-a3dc-5c9c7bdf4924@eisentraut.org> In-Reply-To: From: jian he Date: Tue, 31 Mar 2026 15:23:40 +0800 X-Gm-Features: AQROBzB0VSrexBI0xjrKsNPbbEIIVa1WABTUbBtwdPf2TsAqEF0TShB7_EnN0fk Message-ID: Subject: Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions To: Amul Sul Cc: Peter Eisentraut , Corey Huinker , Kirill Reshke , Vik Fearing , Isaac Morland , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000e56064064e4cdadc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e56064064e4cdadc Content-Type: text/plain; charset="UTF-8" hi. src4=# explain (verbose, costs off) SELECT CAST('a' AS int DEFAULT 2 ON CONVERSION ERROR); QUERY PLAN ----------------------------------------------------------- Result Output: CAST( AS integer DEFAULT 2 ON CONVERSION ERROR) Query Identifier: 2101562107364949876 (3 rows) The above v26 output is not good, the attached file fixes this issue. I also polished the comments and more regression tests. The main big change compare to v26 is in preprocess_aggrefs_walker. --- a/src/backend/optimizer/prep/prepagg.c +++ b/src/backend/optimizer/prep/prepagg.c @@ -358,6 +358,17 @@ preprocess_aggrefs_walker(Node *node, PlannerInfo *root) */ return false; } + if (IsA(node, SafeTypeCastExpr)) + { + SafeTypeCastExpr *castexpr = (SafeTypeCastExpr *) node; + + /* + * "source" may also contain an Aggref node, but since it is kept only + * for deparsing purposes, we must not recurse into it when processing + * aggregate nodes here. + */ + return expression_tree_walker((Node *) castexpr->castexpr, preprocess_aggrefs_walker, root); + } Assert(!IsA(node, SubLink)); return expression_tree_walker(node, preprocess_aggrefs_walker, root); } -- jian https://www.enterprisedb.com/ --000000000000e56064064e4cdadc Content-Type: text/x-patch; charset="US-ASCII"; name="v27-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v27-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mneaipwi1 RnJvbSA0MjEwYWI0MDg2MjdjNjAxNjBmYWU0YzU1YjJiMzFmODc0YWY5NTE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMzAgTWFyIDIwMjYgMjI6Mjg6NTggKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NyAxLzJdIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgdGV4dCB0byBvdGhlciB0eXBlcyBwZXIKIHBn X2Nhc3QKCnNlbGVjdCBjYXN0c291cmNlOjpyZWd0eXBlLCBjYXN0dGFyZ2V0OjpyZWd0eXBlLCBj YXN0ZnVuYywKY2FzdGNvbnRleHQsY2FzdG1ldGhvZCwgcHAucHJvc3JjLCBwcC5wcm9uYW1lIGZy b20gcGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAKb24gcHAub2lkID0gcGMuY2FzdGZ1bmMgYW5k IHBjLmNhc3RmdW5jID4gMAphbmQgY2FzdHNvdXJjZTo6cmVndHlwZSA9ICd0ZXh0Jzo6cmVndHlw ZQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCBjYXN0dGFyZ2V0 IHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgICBwcm9zcmMgICAgIHwg cHJvbmFtZQotLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KIHRleHQgICAgICAgfCBy ZWdjbGFzcyAgIHwgICAgIDEwNzkgfCBpICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X3Jl Z2NsYXNzIHwgcmVnY2xhc3MKIHRleHQgICAgICAgfCAiY2hhciIgICAgIHwgICAgICA5NDQgfCBh ICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X2NoYXIgICAgIHwgY2hhcgogdGV4dCAgICAg ICB8IG5hbWUgICAgICAgfCAgICAgIDQwNyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IHRl eHRfbmFtZSAgICAgfCBuYW1lCiB0ZXh0ICAgICAgIHwgeG1sICAgICAgICB8ICAgICAyODk2IHwg ZSAgICAgICAgICAgfCBmICAgICAgICAgIHwgdGV4dHRveG1sICAgICB8IHhtbAooNCByb3dzKQoK QWxyZWFkeSBlcnJvciBzYWZlOiB0ZXh0X25hbWUsIHRleHRfY2hhciwgdGV4dHRveG1sLgoKQXV0 aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IEFtdWwgU3Vs IDxzdWxhbXVsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1aW5rZXIgPGNvcmV5Lmh1 aW5rZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1m djFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNv bQpDb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTk0 MQotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgfCA0NiArKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMgfCAx MyArKysrKysrLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIHwgMTAgKysrKyst LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCB8ICA2ICsrKysrCiBzcmMvaW5jbHVk ZS91dGlscy92YXJsZW5hLmggICAgIHwgIDEgKwogNSBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRp b25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L25hbWVzcGFjZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwppbmRleCA1NmI4 N2Q4NzhlOC4uMGY2M2M4MjZlODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFt ZXNwYWNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwpAQCAtNDQyLDYg KzQ0MiwxNiBAQCBPaWQKIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5nZVZhciAq cmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJIHVpbnQzMiBmbGFncywKIAkJCQkJ CSBSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmNhbGxiYWNrX2FyZykK K3sKKwlyZXR1cm4gUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkU2FmZShyZWxhdGlvbiwgbG9ja21v ZGUsIGZsYWdzLAorCQkJCQkJCQkJCWNhbGxiYWNrLCBjYWxsYmFja19hcmcsCisJCQkJCQkJCQkJ TlVMTCk7Cit9CisKK09pZAorUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkU2FmZShjb25zdCBSYW5n ZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLCB1aW50MzIgZmxhZ3MsCisJCQkJCQkJ IFJhbmdlVmFyR2V0UmVsaWRDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqY2FsbGJhY2tfYXJnLAor CQkJCQkJCSBOb2RlICplc2NvbnRleHQpCiB7CiAJdWludDY0CQlpbnZhbF9jb3VudDsKIAlPaWQJ CQlyZWxJZDsKQEAgLTQ1OCw3ICs0NjgsNyBAQCBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQoY29u c3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAlpZiAocmVsYXRpb24t PmNhdGFsb2duYW1lKQogCXsKIAkJaWYgKHN0cmNtcChyZWxhdGlvbi0+Y2F0YWxvZ25hbWUsIGdl dF9kYXRhYmFzZV9uYW1lKE15RGF0YWJhc2VJZCkpICE9IDApCi0JCQllcmVwb3J0KEVSUk9SLAor CQkJZXJldHVybihlc2NvbnRleHQsIEludmFsaWRPaWQsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVycm1zZygiY3Jvc3MtZGF0YWJhc2UgcmVm ZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiBcIiVzLiVzLiVzXCIiLAogCQkJCQkJCXJlbGF0 aW9uLT5jYXRhbG9nbmFtZSwgcmVsYXRpb24tPnNjaGVtYW5hbWUsCkBAIC01MTUsNyArNTI1LDcg QEAgUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKGNvbnN0IFJhbmdlVmFyICpyZWxhdGlvbiwgTE9D S01PREUgbG9ja21vZGUsCiAJCQkJCSAqIHJldHVybiBJbnZhbGlkT2lkLgogCQkJCQkgKi8KIAkJ CQkJaWYgKG5hbWVzcGFjZUlkICE9IG15VGVtcE5hbWVzcGFjZSkKLQkJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQllcmV0dXJuKGVzY29udGV4dCwgSW52YWxpZE9pZCwKIAkJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1RBQkxFX0RFRklOSVRJT04pLAogCQkJCQkJCQkgZXJybXNnKCJ0 ZW1wb3JhcnkgdGFibGVzIGNhbm5vdCBzcGVjaWZ5IGEgc2NoZW1hIG5hbWUiKSkpOwogCQkJCX0K QEAgLTU5NSwxNCArNjA1LDIwIEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5n ZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCQl7CiAJCQlpbnQJCQllbGV2ZWwg PSAoZmxhZ3MgJiBSVlJfU0tJUF9MT0NLRUQpID8gREVCVUcxIDogRVJST1I7CiAKLQkJCWlmIChy ZWxhdGlvbi0+c2NoZW1hbmFtZSkKKwkJCWlmIChlc2NvbnRleHQgPT0gTlVMTCkKIAkJCQllcmVw b3J0KGVsZXZlbCwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfTE9DS19OT1RfQVZBSUxBQkxFKSwK KwkJCQkJCSByZWxhdGlvbi0+c2NoZW1hbmFtZSA/CiAJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg b2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlcy4lc1wiIiwKLQkJCQkJCQkJcmVsYXRpb24tPnNj aGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSkpOworCQkJCQkJCQlyZWxhdGlvbi0+c2NoZW1h bmFtZSwgcmVsYXRpb24tPnJlbG5hbWUpIDoKKwkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBvYnRh aW4gbG9jayBvbiByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSkp KTsKIAkJCWVsc2UKLQkJCQllcmVwb3J0KGVsZXZlbCwKKwkJCQllcmV0dXJuKGVzY29udGV4dCwg SW52YWxpZE9pZCwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfTE9DS19OT1RfQVZBSUxBQkxFKSwK KwkJCQkJCSByZWxhdGlvbi0+c2NoZW1hbmFtZSA/CisJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg b2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlcy4lc1wiIiwKKwkJCQkJCQkJcmVsYXRpb24tPnNj aGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSA6CiAJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg b2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJCQkJcmVsYXRpb24tPnJlbG5h bWUpKSk7CiAKQEAgLTYyOCwxNCArNjQ0LDIwIEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChj b25zdCBSYW5nZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCXsKIAkJaW50CQkJ ZWxldmVsID0gbWlzc2luZ19vayA/IERFQlVHMSA6IEVSUk9SOwogCi0JCWlmIChyZWxhdGlvbi0+ c2NoZW1hbmFtZSkKKwkJaWYgKGVzY29udGV4dCA9PSBOVUxMKQogCQkJZXJlcG9ydChlbGV2ZWws CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKKwkJCQkJIHJlbGF0aW9u LT5zY2hlbWFuYW1lID8KIAkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlcy4lc1wiIGRvZXMgbm90 IGV4aXN0IiwKLQkJCQkJCQlyZWxhdGlvbi0+c2NoZW1hbmFtZSwgcmVsYXRpb24tPnJlbG5hbWUp KSk7CisJCQkJCQkJcmVsYXRpb24tPnNjaGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSA6CisJ CQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJcmVs YXRpb24tPnJlbG5hbWUpKSk7CiAJCWVsc2UKLQkJCWVyZXBvcnQoZWxldmVsLAorCQkJZXJldHVy bihlc2NvbnRleHQsIEludmFsaWRPaWQsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X1RBQkxFKSwKKwkJCQkJIHJlbGF0aW9uLT5zY2hlbWFuYW1lID8KKwkJCQkJIGVycm1zZygicmVs YXRpb24gXCIlcy4lc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlyZWxhdGlvbi0+c2NoZW1h bmFtZSwgcmVsYXRpb24tPnJlbG5hbWUpIDoKIAkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlc1wi IGRvZXMgbm90IGV4aXN0IiwKIAkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSkpKTsKIAl9CkBAIC0z NjI0LDYgKzM2NDYsMTIgQEAgZ2V0X25hbWVzcGFjZV9vaWQoY29uc3QgY2hhciAqbnNwbmFtZSwg Ym9vbCBtaXNzaW5nX29rKQogICovCiBSYW5nZVZhciAqCiBtYWtlUmFuZ2VWYXJGcm9tTmFtZUxp c3QoY29uc3QgTGlzdCAqbmFtZXMpCit7CisJcmV0dXJuIG1ha2VSYW5nZVZhckZyb21OYW1lTGlz dFNhZmUobmFtZXMsIE5VTEwpOworfQorCitSYW5nZVZhciAqCittYWtlUmFuZ2VWYXJGcm9tTmFt ZUxpc3RTYWZlKGNvbnN0IExpc3QgKm5hbWVzLCBOb2RlICplc2NvbnRleHQpCiB7CiAJUmFuZ2VW YXIgICAqcmVsID0gbWFrZVJhbmdlVmFyKE5VTEwsIE5VTEwsIC0xKTsKIApAQCAtMzY0Miw3ICsz NjcwLDcgQEAgbWFrZVJhbmdlVmFyRnJvbU5hbWVMaXN0KGNvbnN0IExpc3QgKm5hbWVzKQogCQkJ cmVsLT5yZWxuYW1lID0gc3RyVmFsKGx0aGlyZChuYW1lcykpOwogCQkJYnJlYWs7CiAJCWRlZmF1 bHQ6Ci0JCQllcmVwb3J0KEVSUk9SLAorCQkJZXJldHVybihlc2NvbnRleHQsIE5VTEwsCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkJIGVycm1zZygiaW1wcm9wZXIg cmVsYXRpb24gbmFtZSAodG9vIG1hbnkgZG90dGVkIG5hbWVzKTogJXMiLAogCQkJCQkJCU5hbWVM aXN0VG9TdHJpbmcobmFtZXMpKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JlZ3Byb2MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKaW5kZXggZWUzNGQx ZDg1ZjguLjYwNGUxOWExY2I5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmVn cHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKQEAgLTE5MDEsMTIg KzE5MDEsMTkgQEAgdGV4dF9yZWdjbGFzcyhQR19GVU5DVElPTl9BUkdTKQogCXRleHQJICAgKnJl bG5hbWUgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKIAlPaWQJCQlyZXN1bHQ7CiAJUmFuZ2VWYXIg ICAqcnY7CisJTGlzdAkgICAqbmFtZWxpc3Q7CiAKLQlydiA9IG1ha2VSYW5nZVZhckZyb21OYW1l TGlzdCh0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdChyZWxuYW1lKSk7CisJbmFtZWxpc3QgPSB0ZXh0 VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUocmVsbmFtZSwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAo U09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgp OworCisJcnYgPSBtYWtlUmFuZ2VWYXJGcm9tTmFtZUxpc3RTYWZlKG5hbWVsaXN0LCBmY2luZm8t PmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJ CVBHX1JFVFVSTl9OVUxMKCk7CiAKIAkvKiBXZSBtaWdodCBub3QgZXZlbiBoYXZlIHBlcm1pc3Np b25zIG9uIHRoaXMgcmVsYXRpb247IGRvbid0IGxvY2sgaXQuICovCi0JcmVzdWx0ID0gUmFuZ2VW YXJHZXRSZWxpZChydiwgTm9Mb2NrLCBmYWxzZSk7Ci0KKwlyZXN1bHQgPSBSYW5nZVZhckdldFJl bGlkRXh0ZW5kZWRTYWZlKHJ2LCBOb0xvY2ssIDAsIE5VTEwsIE5VTEwsCisJCQkJCQkJCQkJICBm Y2luZm8tPmNvbnRleHQpOwogCVBHX1JFVFVSTl9PSUQocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKaW5kZXggN2IxZWU2MWJkZTYuLjU2ZGEzZDdiNDQwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKQEAgLTI3MTcsNiArMjcxNywxMiBAQCBuYW1lX3RleHQoUEdfRlVOQ1RJT05f QVJHUykKICAqLwogTGlzdCAqCiB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFs KQoreworCXJldHVybiB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dHZhbCwgTlVMTCk7 Cit9CisKK0xpc3QgKgordGV4dFRvUXVhbGlmaWVkTmFtZUxpc3RTYWZlKHRleHQgKnRleHR2YWws IE5vZGUgKmVzY29udGV4dCkKIHsKIAljaGFyCSAgICpyYXduYW1lOwogCUxpc3QJICAgKnJlc3Vs dCA9IE5JTDsKQEAgLTI3MjgsMTIgKzI3MzQsMTIgQEAgdGV4dFRvUXVhbGlmaWVkTmFtZUxpc3Qo dGV4dCAqdGV4dHZhbCkKIAlyYXduYW1lID0gdGV4dF90b19jc3RyaW5nKHRleHR2YWwpOwogCiAJ aWYgKCFTcGxpdElkZW50aWZpZXJTdHJpbmcocmF3bmFtZSwgJy4nLCAmbmFtZWxpc3QpKQotCQll cmVwb3J0KEVSUk9SLAorCQllcmV0dXJuKGVzY29udGV4dCwgTklMLAogCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9OQU1FKSwKIAkJCQkgZXJybXNnKCJpbnZhbGlkIG5hbWUgc3ludGF4Iikp KTsKIAogCWlmIChuYW1lbGlzdCA9PSBOSUwpCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4o ZXNjb250ZXh0LCBOSUwsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX05BTUUpLAogCQkJ CSBlcnJtc2coImludmFsaWQgbmFtZSBzeW50YXgiKSkpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2Uu aAppbmRleCA5NDUzYTNlNDkzMi4uN2YzMTQxYmEyN2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvbmFtZXNwYWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2Uu aApAQCAtMTAzLDYgKzEwMywxMSBAQCBleHRlcm4gT2lkCVJhbmdlVmFyR2V0UmVsaWRFeHRlbmRl ZChjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUs IHVpbnQzMiBmbGFncywKIAkJCQkJCQkJCSBSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJh Y2ssCiAJCQkJCQkJCQkgdm9pZCAqY2FsbGJhY2tfYXJnKTsKK2V4dGVybiBPaWQgUmFuZ2VWYXJH ZXRSZWxpZEV4dGVuZGVkU2FmZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCisJCQkJCQkJCQkJ TE9DS01PREUgbG9ja21vZGUsIHVpbnQzMiBmbGFncywKKwkJCQkJCQkJCQlSYW5nZVZhckdldFJl bGlkQ2FsbGJhY2sgY2FsbGJhY2ssCisJCQkJCQkJCQkJdm9pZCAqY2FsbGJhY2tfYXJnLAorCQkJ CQkJCQkJCU5vZGUgKmVzY29udGV4dCk7CiBleHRlcm4gT2lkCVJhbmdlVmFyR2V0Q3JlYXRpb25O YW1lc3BhY2UoY29uc3QgUmFuZ2VWYXIgKm5ld1JlbGF0aW9uKTsKIGV4dGVybiBPaWQJUmFuZ2VW YXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKFJhbmdlVmFyICpyZWxhdGlvbiwKIAkJCQkJ CQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSwKQEAgLTE2OCw2ICsxNzMsNyBAQCBleHRlcm4gT2lk CUxvb2t1cENyZWF0aW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKm5zcG5hbWUpOwogZXh0ZXJuIHZv aWQgQ2hlY2tTZXROYW1lc3BhY2UoT2lkIG9sZE5zcE9pZCwgT2lkIG5zcE9pZCk7CiBleHRlcm4g T2lkCVF1YWxpZmllZE5hbWVHZXRDcmVhdGlvbk5hbWVzcGFjZShjb25zdCBMaXN0ICpuYW1lcywg Y2hhciAqKm9iam5hbWVfcCk7CiBleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZyb21OYW1l TGlzdChjb25zdCBMaXN0ICpuYW1lcyk7CitleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZy b21OYW1lTGlzdFNhZmUoY29uc3QgTGlzdCAqbmFtZXMsIE5vZGUgKmVzY29udGV4dCk7CiBleHRl cm4gY2hhciAqTmFtZUxpc3RUb1N0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiBleHRlcm4gY2hh ciAqTmFtZUxpc3RUb1F1b3RlZFN0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3ZhcmxlbmEuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Zhcmxl bmEuaAppbmRleCA0YjMyNTc0YTA3NS4uNWJjNzhhYTAyYzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3ZhcmxlbmEuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy92YXJsZW5hLmgKQEAg LTI3LDYgKzI3LDcgQEAgZXh0ZXJuIGludAl2YXJzdHJfbGV2ZW5zaHRlaW5fbGVzc19lcXVhbChj b25zdCBjaGFyICpzb3VyY2UsIGludCBzbGVuLAogCQkJCQkJCQkJCSAgaW50IGluc19jLCBpbnQg ZGVsX2MsIGludCBzdWJfYywKIAkJCQkJCQkJCQkgIGludCBtYXhfZCwgYm9vbCB0cnVzdGVkKTsK IGV4dGVybiBMaXN0ICp0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFsKTsKK2V4 dGVybiBMaXN0ICp0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dCAqdGV4dHZhbCwgTm9k ZSAqZXNjb250ZXh0KTsKIGV4dGVybiBib29sIFNwbGl0SWRlbnRpZmllclN0cmluZyhjaGFyICpy YXdzdHJpbmcsIGNoYXIgc2VwYXJhdG9yLAogCQkJCQkJCQkgIExpc3QgKipuYW1lbGlzdCk7CiBl eHRlcm4gYm9vbCBTcGxpdERpcmVjdG9yaWVzU3RyaW5nKGNoYXIgKnJhd3N0cmluZywgY2hhciBz ZXBhcmF0b3IsCi0tIAoyLjM0LjEKCg== --000000000000e56064064e4cdadc Content-Type: text/x-patch; charset="US-ASCII"; name="v27-0002-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Disposition: attachment; filename="v27-0002-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mneaipw50 RnJvbSAxY2YxMzU5YWVmZDlhNmU4NGRhMGU3NGI3MGYwOWE4ZDk4YjkwNjZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMzEgTWFyIDIwMjYgMTU6MTM6MTYgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy NyAyLzJdIENBU1QoZXhwciBBUyBuZXd0eXBlIERFRkFVTFQgZXhwciBPTiBDT05WRVJTSU9OCiBF UlJPUikKCkludHJvZHVjZSBTUUwtc3RhbmRhcmQgc2FmZSB0eXBlIGNhc3Qgc3ludGF4OgogICAg Q0FTVChleHByIEFTIG5ld3R5cGUgREVGQVVMVCBleHByIE9OIENPTlZFUlNJT04gRVJST1IpClRo aXMgYWxsb3cgdXNlcnMgdG8gc3BlY2lmeSBhIGRlZmF1bHQgZmFsbGJhY2sgZXhwcmVzc2lvbiBp ZiBhIHR5cGUgY29udmVyc2lvbgpmYWlscywgcmF0aGVyIHRoYW4gcmFpc2luZyBhbiBlcnJvci4K CldpdGggdGhpcyBwYXRjaHNldCwgYWxtb3N0IGFsbCBvZiB0aGUgY2FzdCBmdW5jdGlvbnMgaW4g cGdfY2FzdC5jYXN0ZnVuYyBhcmUgbm93CmVycm9yLXNhZmUuICBDb2VyY2VWaWFJTyBhbmQgQ29l cmNlVG9Eb21haW4gd2VyZSBhbHJlYWR5IGVycm9yLXNhZmUgaW4gdGhlIEhFQUQsCnNlZSBbMF0s IHRoaXMgcGF0Y2ggZXh0ZW5kcyBlcnJvci1zYWZlIGJlaGF2aW9yIHRvIEFycmF5Q29lcmNlRXhw ci4KCkV4YW1wbGU6CiAgICAtLSBSZXR1cm5zICcyMDExLTAxLTAxJyBpbnN0ZWFkIG9mIHRocm93 aW5nIGFuIGludmFsaWQgaW5wdXQgc3ludGF4IGVycm9yLgogICAgU0VMRUNUIENBU1QoJzEnIEFT IGRhdGUgREVGQVVMVCAnMjAxMS0wMS0wMScgT04gQ09OVkVSU0lPTiBFUlJPUik7CgojIEJ1bXBz IGNhdHZlcnNpb24gcmVxdWlyZWQKClswXTogaHR0cHM6Ly9naXQucG9zdGdyZXNxbC5vcmcvY2dp dC9wb3N0Z3Jlc3FsLmdpdC9jb21taXQvP2lkPWFhYWY5NDQ5ZWM2YmU2MmNiMGQzMGVkMzU4OGRj Mzg0ZjU2Mjc0YgoKQXV0aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1 aW5rZXIgPGNvcmV5Lmh1aW5rZXJAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hr ZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJh IDxtYXRoZXVzc3NpbHY5N0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0FEa0xNPWZ2MUpmWTRVZmEtamN3d05ialFpeE5WaXNrUThqWnUzVHpfcDY1NmlfNGhRQG1h aWwuZ21haWwuY29tCkNvbW1pdGZlc3Q6IGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9y Zy9wYXRjaC81OTQxCi0tLQogY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0Lm91dCAgICAg ICAgICAgIHwgICAgNSArCiBjb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHRfMS5vdXQgICAg ICAgICAgfCAgICA1ICsKIGNvbnRyaWIvY2l0ZXh0L3NxbC9jaXRleHQuc3FsICAgICAgICAgICAg ICAgICB8ICAgIDIgKwogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0 ICAgIHwgICAyNCArLQogY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVjdC5zcWwg ICAgIHwgICAgNSArCiBkb2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwgICAgICAgICAgICAgICAgICAg ICAgfCAgIDMyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAgICAgICAg ICB8ICAgNTggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgICAgICAg ICB8ICAgMjkgKwogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgICAgICAgICAg IHwgICA1NiArCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAg fCAgIDUzICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBhZ2cuYyAgICAgICAgICB8 ICAgMTEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jICAgICAgICAgIHwg ICA5OCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwg ICAyMyArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAgICAgICAgICAgICAgfCAg ICA5ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYyAgICAgICAgICAgICB8ICAx NDIgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgICAgICAgICB8ICAz NTMgKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgICAgICAgICAgICAgICB8 ICAgIDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jICAgICAgICAgICAgIHwg ICAgMyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYyAgICAgICAgICAgICAgIHwg ICAxOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAg ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jICAgICAgICAgICAgfCAg ICA5ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAg MjUgKwogc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMgICAgICAgICAgICAgICAgIHwgICAx MyArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgICAgICAgICAgfCAgICA3 ICsKIHNyYy9pbmNsdWRlL2ZtZ3IuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMg Kwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAyMSAr CiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgICAxICsK IHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMzMgKwog c3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oICAgICAgICAgICAgIHwgICAgMiArLQog c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NvZXJjZS5oICAgICAgICAgICAgIHwgICAxNiArLQog c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgICAgICAgIHwgICAgMiArCiBz cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oICAgICAgICAgICAgICAgfCAgICAyICsKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY2FzdC5vdXQgICAgICAgICAgICB8IDExNzIgKysrKysr KysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0ICAg ICB8ICAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVpdmNsYXNzLm91dCAgICAg IHwgICAxOSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbC5vdXQgICAgICAgICAgICAg fCAgICA2ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzEub3V0ICAgICAgICAgICB8 ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwg ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY2FzdC5zcWwgICAgICAgICAgICAgICAgIHwg IDQ0MiArKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfY2FzdC5zcWwgICAgICAg ICAgfCAgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VxdWl2Y2xhc3Muc3FsICAgICAgICAg ICB8ICAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwveG1sLnNxbCAgICAgICAgICAgICAgICAg IHwgICAgMiArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAg fCAgICAyICsKIDQzIGZpbGVzIGNoYW5nZWQsIDI2MzAgaW5zZXJ0aW9ucygrKSwgOTQgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jYXN0 Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nhc3Quc3FsCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0Lm91dCBiL2NvbnRyaWIv Y2l0ZXh0L2V4cGVjdGVkL2NpdGV4dC5vdXQKaW5kZXggOGMwYmY1NGYwZjMuLjczYTNmOTIzYjA3 IDEwMDY0NAotLS0gYS9jb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHQub3V0CisrKyBiL2Nv bnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dC5vdXQKQEAgLTEwLDYgKzEwLDExIEBAIFdIRVJF IG9wYy5vaWQgPj0gMTYzODQgQU5EIE5PVCBhbXZhbGlkYXRlKG9wYy5vaWQpOwogLS0tLS0tLS0r LS0tLS0tLS0tCiAoMCByb3dzKQogCitTRUxFQ1QgQ0FTVCgnYWJjJzo6YnBjaGFyIEFTIGNpdGV4 dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGNh bm5vdCBjYXN0IHR5cGUgY2hhcmFjdGVyIHRvIGNpdGV4dCB3aGVuIERFRkFVTFQgZXhwcmVzc2lv biBpcyBzcGVjaWZpZWQgaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgorTElORSAxOiBT RUxFQ1QgQ0FTVCgnYWJjJzo6YnBjaGFyIEFTIGNpdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0kuLi4KKyAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgU2FmZSB0eXBlIGNhc3QgZm9y IHVzZXItZGVmaW5lZCB0eXBlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQuCiAtLSBUZXN0IHRoZSBv cGVyYXRvcnMgYW5kIGluZGV4aW5nIGZ1bmN0aW9ucwogLS0gVGVzdCA9IGFuZCA8Pi4KIFNFTEVD VCAnYSc6OmNpdGV4dCA9ICdhJzo6Y2l0ZXh0IEFTIHQ7CmRpZmYgLS1naXQgYS9jb250cmliL2Np dGV4dC9leHBlY3RlZC9jaXRleHRfMS5vdXQgYi9jb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRl eHRfMS5vdXQKaW5kZXggYzVlNWYxODBmMmIuLjI4Nzg4YWRmMjZkIDEwMDY0NAotLS0gYS9jb250 cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHRfMS5vdXQKKysrIGIvY29udHJpYi9jaXRleHQvZXhw ZWN0ZWQvY2l0ZXh0XzEub3V0CkBAIC0xMCw2ICsxMCwxMSBAQCBXSEVSRSBvcGMub2lkID49IDE2 Mzg0IEFORCBOT1QgYW12YWxpZGF0ZShvcGMub2lkKTsKIC0tLS0tLS0tKy0tLS0tLS0tLQogKDAg cm93cykKIAorU0VMRUNUIENBU1QoJ2FiYyc6OmJwY2hhciBBUyBjaXRleHQgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBl IGNoYXJhY3RlciB0byBjaXRleHQgd2hlbiBERUZBVUxUIGV4cHJlc3Npb24gaXMgc3BlY2lmaWVk IGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2Fi Yyc6OmJwY2hhciBBUyBjaXRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJLi4uCisgICAgICAg ICAgICAgICAgICAgIF4KK0RFVEFJTDogIFNhZmUgdHlwZSBjYXN0IGZvciB1c2VyLWRlZmluZWQg dHlwZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLgogLS0gVGVzdCB0aGUgb3BlcmF0b3JzIGFuZCBp bmRleGluZyBmdW5jdGlvbnMKIC0tIFRlc3QgPSBhbmQgPD4uCiBTRUxFQ1QgJ2EnOjpjaXRleHQg PSAnYSc6OmNpdGV4dCBBUyB0OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9jaXRleHQvc3FsL2NpdGV4 dC5zcWwgYi9jb250cmliL2NpdGV4dC9zcWwvY2l0ZXh0LnNxbAppbmRleCBhYTFjZjlhYmQ1Yy4u YzgyMGIwYmQ0ZDkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY2l0ZXh0L3NxbC9jaXRleHQuc3FsCisr KyBiL2NvbnRyaWIvY2l0ZXh0L3NxbC9jaXRleHQuc3FsCkBAIC05LDYgKzksOCBAQCBTRUxFQ1Qg YW1uYW1lLCBvcGNuYW1lCiBGUk9NIHBnX29wY2xhc3Mgb3BjIExFRlQgSk9JTiBwZ19hbSBhbSBP TiBhbS5vaWQgPSBvcGNtZXRob2QKIFdIRVJFIG9wYy5vaWQgPj0gMTYzODQgQU5EIE5PVCBhbXZh bGlkYXRlKG9wYy5vaWQpOwogCitTRUxFQ1QgQ0FTVCgnYWJjJzo6YnBjaGFyIEFTIGNpdGV4dCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCisKIC0tIFRlc3QgdGhl IG9wZXJhdG9ycyBhbmQgaW5kZXhpbmcgZnVuY3Rpb25zCiAKIC0tIFRlc3QgPSBhbmQgPD4uCmRp ZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0 IGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvc2VsZWN0Lm91dAppbmRleCBh MDY5MTE5Yzc5MC4uODRmMTA4MTBmNzIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0 ZW1lbnRzL2V4cGVjdGVkL3NlbGVjdC5vdXQKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvZXhwZWN0ZWQvc2VsZWN0Lm91dApAQCAtNzMsNiArNzMsMjUgQEAgU0VMRUNUIDEgQVMgImlu dCIgT0ZGU0VUIDIgRkVUQ0ggRklSU1QgMyBST1cgT05MWTsKIC0tLS0tCiAoMCByb3dzKQogCist LSBlcnJvciBzYWZlIHR5cGUgY2FzdAorU0VMRUNUIENBU1QoJ2EnIEFTIGludCBERUZBVUxUIDIg T04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50NCAKKy0tLS0tLQorICAgIDIKKygxIHJvdykKKwor U0VMRUNUIENBU1QoJzEyJyBBUyBudW1lcmljIERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyBudW1lcmljIAorLS0tLS0tLS0tCisgICAgICAxMgorKDEgcm93KQorCitTRUxFQ1QgQ0FT VCgnMTInIEFTIG51bWVyaWMoMTApIERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBu dW1lcmljIAorLS0tLS0tLS0tCisgICAgICAxMgorKDEgcm93KQorCiAtLSBESVNUSU5DVCBhbmQg T1JERVIgQlkgcGF0dGVybnMKIC0tIFRyeSBzb21lIHF1ZXJ5IHBlcm11dGF0aW9ucyB3aGljaCBv bmNlIHByb2R1Y2VkIGlkZW50aWNhbCBxdWVyeSBJRHMKIFNFTEVDVCBESVNUSU5DVCAxIEFTICJp bnQiOwpAQCAtMjIyLDYgKzI0MSw5IEBAIFNFTEVDVCBjYWxscywgcm93cywgcXVlcnkgRlJPTSBw Z19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CiAgICAgIDIgfCAg ICAyIHwgU0VMRUNUICQxIEFTICJpbnQiIE9SREVSIEJZIDEKICAgICAgMSB8ICAgIDIgfCBTRUxF Q1QgJDEgQVMgaSBVTklPTiBTRUxFQ1QgJDIgT1JERVIgQlkgaQogICAgICAxIHwgICAgMSB8IFNF TEVDVCAkMSB8fCAkMgorICAgICAxIHwgICAgMSB8IFNFTEVDVCBDQVNUKCQxIEFTIGludCBERUZB VUxUICQyIE9OIENPTlZFUlNJT04gRVJST1IpCisgICAgIDEgfCAgICAxIHwgU0VMRUNUIENBU1Qo JDEgQVMgbnVtZXJpYyBERUZBVUxUICQyIE9OIENPTlZFUlNJT04gRVJST1IpCisgICAgIDEgfCAg ICAxIHwgU0VMRUNUIENBU1QoJDEgQVMgbnVtZXJpYygxMCkgREVGQVVMVCAkMiBPTiBDT05WRVJT SU9OIEVSUk9SKQogICAgICAyIHwgICAgMiB8IFNFTEVDVCBESVNUSU5DVCAkMSBBUyAiaW50Igog ICAgICAwIHwgICAgMCB8IFNFTEVDVCBjYWxscywgcm93cywgcXVlcnkgRlJPTSBwZ19zdGF0X3N0 YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyIKICAgICAgMSB8ICAgIDEgfCBTRUxF Q1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdApAQCAtMjMwLDcg KzI1Miw3IEBAIFNFTEVDVCBjYWxscywgcm93cywgcXVlcnkgRlJPTSBwZ19zdGF0X3N0YXRlbWVu dHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CiAgICAgICAgfCAgICAgIHwgKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKICAgICAgICB8ICAgICAgfCAgIFNFTEVDVCBmIEZST00gdCBPUkRFUiBCWSBm CiAgICAgIDEgfCAgICAxIHwgc2VsZWN0ICQxOjpqc29uYiA/ICQyCi0oMTcgcm93cykKKygyMCBy b3dzKQogCiBTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMg dDsKICB0IApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVj dC5zcWwgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvc2VsZWN0LnNxbAppbmRleCBh MTBkNjE4YzAzNC4uNGJlOTc5NzdiYTYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0 ZW1lbnRzL3NxbC9zZWxlY3Quc3FsCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3Nx bC9zZWxlY3Quc3FsCkBAIC0yNSw2ICsyNSwxMSBAQCBTRUxFQ1QgMSBBUyAiaW50IiBMSU1JVCAz IE9GRlNFVCAzOwogU0VMRUNUIDEgQVMgImludCIgT0ZGU0VUIDEgRkVUQ0ggRklSU1QgMiBST1cg T05MWTsKIFNFTEVDVCAxIEFTICJpbnQiIE9GRlNFVCAyIEZFVENIIEZJUlNUIDMgUk9XIE9OTFk7 CiAKKy0tIGVycm9yIHNhZmUgdHlwZSBjYXN0CitTRUxFQ1QgQ0FTVCgnYScgQVMgaW50IERFRkFV TFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcxMicgQVMgbnVtZXJpYyBE RUZBVUxUIDIgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMTInIEFTIG51bWVy aWMoMTApIERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKwogLS0gRElTVElOQ1QgYW5k IE9SREVSIEJZIHBhdHRlcm5zCiAtLSBUcnkgc29tZSBxdWVyeSBwZXJtdXRhdGlvbnMgd2hpY2gg b25jZSBwcm9kdWNlZCBpZGVudGljYWwgcXVlcnkgSURzCiBTRUxFQ1QgRElTVElOQ1QgMSBBUyAi aW50IjsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbCBiL2RvYy9zcmMvc2dt bC9zeW50YXguc2dtbAppbmRleCA2NzQ4Mjk5Njg2MS4uYWEwZmMxZWY4MWMgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwK QEAgLTIwNzEsNiArMjA3MSwxMCBAQCBDQVNUICggPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3Jl cGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+CiAgICAgVGhlIDxs aXRlcmFsPkNBU1Q8L2xpdGVyYWw+IHN5bnRheCBjb25mb3JtcyB0byBTUUw7IHRoZSBzeW50YXgg d2l0aAogICAgIDxsaXRlcmFsPjo6PC9saXRlcmFsPiBpcyBoaXN0b3JpY2FsIDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4KICAgICB1c2FnZS4KKyAgICBUaGUgZGVmYXVsdCBi ZWhhdmlvciB3aGVuIG5vIDxsaXRlcmFsPk9OIENPTlZFUlNJT04gRVJST1I8L2xpdGVyYWw+IGNs YXVzZSBpcyBzcGVjaWZpZWQgaXMgZXF1aXZhbGVudCB0bzoKKzxzeW5vcHNpcz4KK0NBU1QgKCA8 cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT50eXBl PC9yZXBsYWNlYWJsZT4gRVJST1IgT04gQ09OVkVSU0lPTiBFUlJPUiApCis8L3N5bm9wc2lzPgog ICAgPC9wYXJhPgogCiAgICA8cGFyYT4KQEAgLTIxMjUsNiArMjEyOSwzNCBAQCBDQVNUICggPHJl cGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dHlwZTwv cmVwbGFjZWFibGU+CiAgICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVjYXN0Ii8+LgogICAg IDwvcGFyYT4KICAgIDwvbm90ZT4KKworIDxzZWN0MyBpZD0ic3FsLXN5bnRheC10eXBlLWNhc3Rz LXNhZmUiPgorICA8dGl0bGU+U2FmZSBUeXBlIENhc3Q8L3RpdGxlPgorICAgPHBhcmE+CisgICAg QSB0eXBlIGNhc3QgbWF5IG9jY2FzaW9uYWxseSBmYWlsLiBUbyBndWFyZCBhZ2FpbnN0IHN1Y2gg ZmFpbHVyZXMsIHlvdSBjYW4KKyAgICBwcm92aWRlIGFuIDxsaXRlcmFsPk9OIENPTlZFUlNJT04g RVJST1I8L2xpdGVyYWw+IGNsYXVzZSB0byBoYW5kbGUgcG90ZW50aWFsIGVycm9ycy4KKyAgICBU aGUgc3ludGF4IGZvciBzYWZlIHR5cGUgY2FzdCBpczoKKzxzeW5vcHNpcz4KK0NBU1QgKCA8cmVw bGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZT50eXBlPC9y ZXBsYWNlYWJsZT4gREVGQVVMVCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ IE9OIENPTlZFUlNJT04gRVJST1IgKQorPC9zeW5vcHNpcz4KKyAgICBJZiB0aGUgdHlwZSBjYXN0 IGZhaWxzLCBhbiBlcnJvciBpcyBub3QgcmFpc2VkLiAgSW5zdGVhZCwgZXZhbHVhdGlvbiBmYWxs cworICAgIGJhY2sgdG8gdGhlIGRlZmF1bHQgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxh Y2VhYmxlPiBzcGVjaWZpZWQgaW4gdGhlCisgICAgPGxpdGVyYWw+T04gQ09OVkVSU0lPTiBFUlJP UjwvbGl0ZXJhbD4gY2xhdXNlLgorICAgIEF0IHByZXNlbnQsIHRoaXMgb25seSBzdXBwb3J0IGJ1 aWx0LWluIHR5cGUgY2FzdHMsIHNlZSA8eHJlZiBsaW5rZW5kPSJjYXRhbG9nLXBnLWNhc3QiLz4u CisgICAgVXNlci1kZWZpbmVkIHR5cGUgY2FzdHMgY3JlYXRlZCB3aXRoIDxsaW5rIGxpbmtlbmQ9 InNxbC1jcmVhdGVjYXN0Ij5DUkVBVEUgQ0FTVDwvbGluaz4KKyAgICBhcmUgbm90IHN1cHBvcnRl ZC4KKyAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgU29tZSBleGFtcGxlczoKKzxzY3JlZW4+ CitTRUxFQ1QgQ0FTVChURVhUICdlcnJvcicgQVMgaW50ZWdlciBERUZBVUxUIDMgT04gQ09OVkVS U0lPTiBFUlJPUik7Cis8bGluZWFubm90YXRpb24+UmVzdWx0OiA8L2xpbmVhbm5vdGF0aW9uPjxj b21wdXRlcm91dHB1dD4zPC9jb21wdXRlcm91dHB1dD4KK1NFTEVDVCBDQVNUKFRFWFQgJ2Vycm9y JyBBUyBudW1lcmljIERFRkFVTFQgMS4xIE9OIENPTlZFUlNJT04gRVJST1IpOworPGxpbmVhbm5v dGF0aW9uPlJlc3VsdDogPC9saW5lYW5ub3RhdGlvbj48Y29tcHV0ZXJvdXRwdXQ+MS4xPC9jb21w dXRlcm91dHB1dD4KKzwvc2NyZWVuPgorICAgIDwvcGFyYT4KKyAgPC9zZWN0Mz4KICAgPC9zZWN0 Mj4KIAogICA8c2VjdDIgaWQ9InNxbC1zeW50YXgtY29sbGF0ZS1leHBycyI+CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHIuYwppbmRleCA3NzIyOTE0MWIzOC4uODRhNDhlOGUzZjYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHIuYwpAQCAtOTksNiArOTksOSBAQCBzdGF0aWMgdm9pZCBFeGVjQnVpbGRBZ2dUcmFu c0NhbGwoRXhwclN0YXRlICpzdGF0ZSwgQWdnU3RhdGUgKmFnZ3N0YXRlLAogc3RhdGljIHZvaWQg RXhlY0luaXRKc29uRXhwcihKc29uRXhwciAqanNleHByLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJ CQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCwKIAkJCQkJCQkgRXhwckV2YWxTdGVwICpz Y3JhdGNoKTsKK3N0YXRpYyB2b2lkIEV4ZWNJbml0U2FmZVR5cGVDYXN0RXhwcihTYWZlVHlwZUNh c3RFeHByICpzdGNleHByLCBFeHByU3RhdGUgKnN0YXRlLAorCQkJCQkJCQkJIERhdHVtICpyZXN2 LCBib29sICpyZXNudWxsLAorCQkJCQkJCQkJIEV4cHJFdmFsU3RlcCAqc2NyYXRjaCk7CiBzdGF0 aWMgdm9pZCBFeGVjSW5pdEpzb25Db2VyY2lvbihFeHByU3RhdGUgKnN0YXRlLCBKc29uUmV0dXJu aW5nICpyZXR1cm5pbmcsCiAJCQkJCQkJCSBFcnJvclNhdmVDb250ZXh0ICplc2NvbnRleHQsIGJv b2wgb21pdF9xdW90ZXMsCiAJCQkJCQkJCSBib29sIGV4aXN0c19jb2VyY2UsCkBAIC0xNzM0LDYg KzE3MzcsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwK IAogCQkJCWVsZW1zdGF0ZS0+aW5uZXJtb3N0X2Nhc2V2YWwgPSBwYWxsb2Nfb2JqZWN0KERhdHVt KTsKIAkJCQllbGVtc3RhdGUtPmlubmVybW9zdF9jYXNlbnVsbCA9IHBhbGxvY19vYmplY3QoYm9v bCk7CisJCQkJZWxlbXN0YXRlLT5lc2NvbnRleHQgPSBzdGF0ZS0+ZXNjb250ZXh0OwogCiAJCQkJ RXhlY0luaXRFeHByUmVjKGFjb2VyY2UtPmVsZW1leHByLCBlbGVtc3RhdGUsCiAJCQkJCQkJCSZl bGVtc3RhdGUtPnJlc3ZhbHVlLCAmZWxlbXN0YXRlLT5yZXNudWxsKTsKQEAgLTIyMDksNiArMjIx MywxNSBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJ CQlicmVhazsKIAkJCX0KIAorCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlT YWZlVHlwZUNhc3RFeHByICpzdGNleHByID0gY2FzdE5vZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9k ZSk7CisKKwkJCQlFeGVjSW5pdFNhZmVUeXBlQ2FzdEV4cHIoc3RjZXhwciwgc3RhdGUsIHJlc3Ys IHJlc251bGwsICZzY3JhdGNoKTsKKworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2UgVF9Db2Fs ZXNjZUV4cHI6CiAJCQl7CiAJCQkJQ29hbGVzY2VFeHByICpjb2FsZXNjZSA9IChDb2FsZXNjZUV4 cHIgKikgbm9kZTsKQEAgLTI3NjksNyArMjc4Miw4IEBAIEV4ZWNJbml0RnVuYyhFeHByRXZhbFN0 ZXAgKnNjcmF0Y2gsIEV4cHIgKm5vZGUsIExpc3QgKmFyZ3MsIE9pZCBmdW5jaWQsCiAKIAkvKiBJ bml0aWFsaXplIGZ1bmN0aW9uIGNhbGwgcGFyYW1ldGVyIHN0cnVjdHVyZSB0b28gKi8KIAlJbml0 RnVuY3Rpb25DYWxsSW5mb0RhdGEoKmZjaW5mbywgZmxpbmZvLAotCQkJCQkJCSBuYXJncywgaW5w dXRjb2xsaWQsIE5VTEwsIE5VTEwpOworCQkJCQkJCSBuYXJncywgaW5wdXRjb2xsaWQsCisJCQkJ CQkJIChOb2RlICopIHN0YXRlLT5lc2NvbnRleHQsIE5VTEwpOwogCiAJLyogS2VlcCBleHRyYSBj b3BpZXMgb2YgdGhpcyBpbmZvIHRvIHNhdmUgYW4gaW5kaXJlY3Rpb24gYXQgcnVudGltZSAqLwog CXNjcmF0Y2gtPmQuZnVuYy5mbl9hZGRyID0gZmxpbmZvLT5mbl9hZGRyOwpAQCAtNDc3MCw2ICs0 Nzg0LDQ4IEBAIEV4ZWNCdWlsZFBhcmFtU2V0RXF1YWwoVHVwbGVEZXNjIGRlc2MsCiAJcmV0dXJu IHN0YXRlOwogfQogCisvKgorICogUHVzaCBzdGVwcyB0byBldmFsdWF0ZSBhIFNhZmVUeXBlQ2Fz dEV4cHIgYW5kIGl0cyB2YXJpb3VzIHN1YnNpZGlhcnkKKyAqIGV4cHJlc3Npb25zLgorICovCitz dGF0aWMgdm9pZAorRXhlY0luaXRTYWZlVHlwZUNhc3RFeHByKFNhZmVUeXBlQ2FzdEV4cHIgKnN0 Y2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCisJCQkJCQkgRGF0dW0gKnJlc3YsIGJvb2wgKnJlc251 bGwsCisJCQkJCQkgRXhwckV2YWxTdGVwICpzY3JhdGNoKQoreworCS8qCisJICogQ29lcmNpb24g dG8gdGhlIHRhcmdldCB0eXBlIGZhaWxlZC4gRmFsbGluZyBiYWNrIHRvIHRoZSBERUZBVUxUCisJ ICogZXhwcmVzc2lvbiBmcm9tIHRoZSBPTiBDT05WRVJTSU9OIEVSUk9SIGNsYXVzZSB0byBmaW5p c2guCisJICovCisJaWYgKHN0Y2V4cHItPmNhc3RleHByID09IE5VTEwpCisJeworCQlFeGVjSW5p dEV4cHJSZWMoc3RjZXhwci0+ZGVmZXhwciwgc3RhdGUsIHJlc3YsIHJlc251bGwpOworCisJCXJl dHVybjsKKwl9CisJZWxzZQorCXsKKwkJU2FmZVR5cGVDYXN0U3RhdGUgKnN0Y3N0YXRlID0gcGFs bG9jMF9vYmplY3QoU2FmZVR5cGVDYXN0U3RhdGUpOworCQlFcnJvclNhdmVDb250ZXh0ICpzYXZl ZF9lc2NvbnRleHQgPSBzdGF0ZS0+ZXNjb250ZXh0OworCisJCXN0Y3N0YXRlLT5zdGNleHByID0g c3RjZXhwcjsKKwkJc3Rjc3RhdGUtPmVzY29udGV4dC50eXBlID0gVF9FcnJvclNhdmVDb250ZXh0 OworCQlzdGF0ZS0+ZXNjb250ZXh0ID0gJnN0Y3N0YXRlLT5lc2NvbnRleHQ7CisKKwkJLyogZXZh bHVhdGUgYXJndW1lbnQgZXhwcmVzc2lvbiBpbnRvIHN0ZXAncyByZXN1bHQgYXJlYSAqLworCQlF eGVjSW5pdEV4cHJSZWMoc3RjZXhwci0+Y2FzdGV4cHIsIHN0YXRlLCByZXN2LCByZXNudWxsKTsK KwkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9TQUZFVFlQRV9DQVNUOworCQlzY3JhdGNoLT5kLnN0 Y2V4cHIuc3Rjc3RhdGUgPSBzdGNzdGF0ZTsKKwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2Ny YXRjaCk7CisKKwkJLyogZXZhbHVhdGUgREVGQVVMVCBleHByZXNzaW9uIHVzaW5nIHRoZSBwcmlv ciBzdGF0ZS0+ZXNjb250ZXh0ICovCisJCXN0YXRlLT5lc2NvbnRleHQgPSBzYXZlZF9lc2NvbnRl eHQ7CisJCUV4ZWNJbml0RXhwclJlYyhzdGNzdGF0ZS0+c3RjZXhwci0+ZGVmZXhwciwgc3RhdGUs IHJlc3YsIHJlc251bGwpOworCisJCXN0Y3N0YXRlLT5qdW1wX2VuZCA9IHN0YXRlLT5zdGVwc19s ZW47CisJfQorfQorCiAvKgogICogUHVzaCBzdGVwcyB0byBldmFsdWF0ZSBhIEpzb25FeHByIGFu ZCBpdHMgdmFyaW91cyBzdWJzaWRpYXJ5IGV4cHJlc3Npb25zLgogICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCA0MzExNjQzMWVkZi4uNzllYmUwMjU0ZmQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtNTcwLDYgKzU3MCw3IEBAIEV4ZWNJ bnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAq aXNudWxsKQogCQkmJkNBU0VfRUVPUF9YTUxFWFBSLAogCQkmJkNBU0VfRUVPUF9KU09OX0NPTlNU UlVDVE9SLAogCQkmJkNBU0VfRUVPUF9JU19KU09OLAorCQkmJkNBU0VfRUVPUF9TQUZFVFlQRV9D QVNULAogCQkmJkNBU0VfRUVPUF9KU09ORVhQUl9QQVRILAogCQkmJkNBU0VfRUVPUF9KU09ORVhQ Ul9DT0VSQ0lPTiwKIAkJJiZDQVNFX0VFT1BfSlNPTkVYUFJfQ09FUkNJT05fRklOSVNILApAQCAt MTkyOCw2ICsxOTI5LDI4IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJD b250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJRUVPX05FWFQoKTsKIAkJfQogCisJ CUVFT19DQVNFKEVFT1BfU0FGRVRZUEVfQ0FTVCkKKwkJeworCQkJU2FmZVR5cGVDYXN0U3RhdGUg KnN0Y3N0YXRlID0gb3AtPmQuc3RjZXhwci5zdGNzdGF0ZTsKKworCQkJaWYgKCFTT0ZUX0VSUk9S X09DQ1VSUkVEKCZzdGNzdGF0ZS0+ZXNjb250ZXh0KSkKKwkJCQlFRU9fSlVNUChzdGNzdGF0ZS0+ anVtcF9lbmQpOworCQkJZWxzZQorCQkJeworCQkJCSpvcC0+cmVzdmFsdWUgPSAoRGF0dW0pIDA7 CisJCQkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKKworCQkJCS8qCisJCQkJICogUmVzZXQgZm9yIG5l eHQgdXNlIHN1Y2ggYXMgZm9yIGNhdGNoaW5nIGVycm9ycyB3aGVuCisJCQkJICogY29lcmNpbmcg YSBleHByZXNzaW9uLgorCQkJCSAqLworCQkJCXN0Y3N0YXRlLT5lc2NvbnRleHQuZXJyb3Jfb2Nj dXJyZWQgPSBmYWxzZTsKKwkJCQlzdGNzdGF0ZS0+ZXNjb250ZXh0LmRldGFpbHNfd2FudGVkID0g ZmFsc2U7CisKKwkJCQlFRU9fTkVYVCgpOworCQkJfQorCQl9CisKIAkJRUVPX0NBU0UoRUVPUF9K U09ORVhQUl9QQVRIKQogCQl7CiAJCQkvKiB0b28gY29tcGxleCBmb3IgYW4gaW5saW5lIGltcGxl bWVudGF0aW9uICovCkBAIC0zNjQ2LDYgKzM2NjksMTIgQEAgRXhlY0V2YWxBcnJheUNvZXJjZShF eHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQp CiAJCQkJCQkJICBlY29udGV4dCwKIAkJCQkJCQkgIG9wLT5kLmFycmF5Y29lcmNlLnJlc3VsdGVs ZW10eXBlLAogCQkJCQkJCSAgb3AtPmQuYXJyYXljb2VyY2UuYW1zdGF0ZSk7CisKKwlpZiAoU09G VF9FUlJPUl9PQ0NVUlJFRChvcC0+ZC5hcnJheWNvZXJjZS5lbGVtZXhwcnN0YXRlLT5lc2NvbnRl eHQpKQorCXsKKwkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkgMDsKKwkJKm9wLT5yZXNudWxsID0g dHJ1ZTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZt aml0X2V4cHIuYyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCmluZGV4IDY1 MGYxZDQyYTkzLi4yMzNiZDJhZTI3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0v bGx2bWppdF9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMK QEAgLTIyNTYsNiArMjI1Niw2MiBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHByU3RhdGUgKnN0YXRl KQogCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wbm8gKyAxXSk7CiAJCQkJYnJlYWs7CiAK KwkJCWNhc2UgRUVPUF9TQUZFVFlQRV9DQVNUOgorCQkJCXsKKwkJCQkJU2FmZVR5cGVDYXN0U3Rh dGUgKnN0Y3N0YXRlID0gb3AtPmQuc3RjZXhwci5zdGNzdGF0ZTsKKwkJCQkJTExWTUJhc2ljQmxv Y2tSZWYgYl9ub2Vycm9yOworCQkJCQlMTFZNQmFzaWNCbG9ja1JlZiBiX2Vycm9yOworCQkJCQlM TFZNVmFsdWVSZWYgdl9lcnJvcl9vY2N1cnJlZF9wOworCQkJCQlMTFZNVmFsdWVSZWYgdl9kZXRh aWxzX3dhbnRlZF9wOworCQkJCQlMTFZNVmFsdWVSZWYgdl9lcnJvcl9vY2N1cnJlZDsKKworCQkJ CQliX25vZXJyb3IgPSBsX2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8gKyAxXSwKKwkJCQkJCQkJ CQkJICAib3AuJWQubm9lcnJvciIsIG9wbm8pOworCQkJCQliX2Vycm9yID0gbF9iYl9iZWZvcmVf dihvcGJsb2Nrc1tvcG5vICsgMV0sCisJCQkJCQkJCQkJCSJvcC4lZC5lcnJvciIsIG9wbm8pOwor CisJCQkJCS8qIEdldCBwb2ludGVyIHRvIGVycm9yX29jY3VycmVkIGZpZWxkICovCisJCQkJCXZf ZXJyb3Jfb2NjdXJyZWRfcCA9IGxfcHRyX2NvbnN0KCZzdGNzdGF0ZS0+ZXNjb250ZXh0LmVycm9y X29jY3VycmVkLAorCQkJCQkJCQkJCQkJCSBsX3B0cihUeXBlU3RvcmFnZUJvb2wpKTsKKworCQkJ CQkvKiBMb2FkIGVycm9yX29jY3VycmVkIGF0IHJ1bnRpbWUgKi8KKwkJCQkJdl9lcnJvcl9vY2N1 cnJlZCA9IGxfbG9hZChiLCBUeXBlU3RvcmFnZUJvb2wsIHZfZXJyb3Jfb2NjdXJyZWRfcCwgIiIp OworCisJCQkJCS8qIEJyYW5jaCBiYXNlZCBvbiBlcnJvcl9vY2N1cnJlZDogbm8gZXJyb3IgLT4g anVtcF9lbmQgKi8KKwkJCQkJTExWTUJ1aWxkQ29uZEJyKGIsCisJCQkJCQkJCQlMTFZNQnVpbGRJ Q21wKGIsIExMVk1JbnRFUSwgdl9lcnJvcl9vY2N1cnJlZCwKKwkJCQkJCQkJCQkJCSAgbF9zYm9v bF9jb25zdCgwKSwgIiIpLAorCQkJCQkJCQkJYl9ub2Vycm9yLAorCQkJCQkJCQkJYl9lcnJvcik7 CisKKwkJCQkJLyogTm8gZXJyb3I6IGp1bXAgdG8gZW5kICovCisJCQkJCUxMVk1Qb3NpdGlvbkJ1 aWxkZXJBdEVuZChiLCBiX25vZXJyb3IpOworCQkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tz dGNzdGF0ZS0+anVtcF9lbmRdKTsKKworCQkJCQkvKiBFcnJvciBvY2N1cnJlZDogc2V0IG51bGws IHJlc2V0IGZsYWdzLCBldmFsdWF0ZSBkZWZhdWx0ICovCisJCQkJCUxMVk1Qb3NpdGlvbkJ1aWxk ZXJBdEVuZChiLCBiX2Vycm9yKTsKKworCQkJCQkvKiBzZXQgcmVzbnVsbCB0byB0cnVlICovCisJ CQkJCUxMVk1CdWlsZFN0b3JlKGIsIGxfc2Jvb2xfY29uc3QoMSksIHZfcmVzbnVsbHApOworCisJ CQkJCS8qIHJlc2V0IHJlc3ZhbHVlICovCisJCQkJCUxMVk1CdWlsZFN0b3JlKGIsIGxfZGF0dW1f Y29uc3QoMCksIHZfcmVzdmFsdWVwKTsKKworCQkJCQkvKgorCQkJCQkgKiBSZXNldCBmb3IgbmV4 dCB1c2Ugc3VjaCBhcyBmb3IgY2F0Y2hpbmcgZXJyb3JzIHdoZW4KKwkJCQkJICogY29lcmNpbmcg YSBleHByZXNzaW9uLgorCQkJCQkgKi8KKwkJCQkJTExWTUJ1aWxkU3RvcmUoYiwgbF9zYm9vbF9j b25zdCgwKSwgdl9lcnJvcl9vY2N1cnJlZF9wKTsKKworCQkJCQl2X2RldGFpbHNfd2FudGVkX3Ag PSBsX3B0cl9jb25zdCgmc3Rjc3RhdGUtPmVzY29udGV4dC5kZXRhaWxzX3dhbnRlZCwKKwkJCQkJ CQkJCQkJCQkgbF9wdHIoVHlwZVN0b3JhZ2VCb29sKSk7CisJCQkJCUxMVk1CdWlsZFN0b3JlKGIs IGxfc2Jvb2xfY29uc3QoMCksIHZfZGV0YWlsc193YW50ZWRfcCk7CisKKwkJCQkJTExWTUJ1aWxk QnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKworCQkJCQlicmVhazsKKwkJCQl9CisKIAkJCWNh c2UgRUVPUF9KU09ORVhQUl9QQVRIOgogCQkJCXsKIAkJCQkJSnNvbkV4cHJTdGF0ZSAqanNlc3Rh dGUgPSBvcC0+ZC5qc29uZXhwci5qc2VzdGF0ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25v ZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggNmE4 NTAzNDljZjcuLmI1ZTg5YjdmNjBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2Rl RnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjA2LDYgKzIw Niw5IEBAIGV4cHJUeXBlKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9Sb3dDb21wYXJlRXhw cjoKIAkJCXR5cGUgPSBCT09MT0lEOwogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RF eHByOgorCQkJdHlwZSA9ICgoY29uc3QgU2FmZVR5cGVDYXN0RXhwciAqKSBleHByKS0+cmVzdWx0 dHlwZTsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgogCQkJdHlwZSA9ICgoY29u c3QgQ29hbGVzY2VFeHByICopIGV4cHIpLT5jb2FsZXNjZXR5cGU7CiAJCQlicmVhazsKQEAgLTQ1 Myw2ICs0NTYsOCBAQCBleHByVHlwbW9kKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQkJcmV0dXJuIHR5 cG1vZDsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXJl dHVybiAoKGNvbnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikgZXhwciktPnJlc3VsdHR5cG1vZDsKIAkJ Y2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCXsKIAkJCQkvKgpAQCAtOTcwLDYgKzk3NSw5IEBAIGV4 cHJDb2xsYXRpb24oY29uc3QgTm9kZSAqZXhwcikKIAkJCS8qIFJvd0NvbXBhcmVFeHByJ3MgcmVz dWx0IGlzIGJvb2xlYW4gLi4uICovCiAJCQljb2xsID0gSW52YWxpZE9pZDsJLyogLi4uIHNvIGl0 IGhhcyBubyBjb2xsYXRpb24gKi8KIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhw cjoKKwkJCWNvbGwgPSAoKGNvbnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikgZXhwciktPnJlc3VsdGNv bGxpZDsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgogCQkJY29sbCA9ICgoY29u c3QgQ29hbGVzY2VFeHByICopIGV4cHIpLT5jb2FsZXNjZWNvbGxpZDsKIAkJCWJyZWFrOwpAQCAt MTI0MCw2ICsxMjQ4LDkgQEAgZXhwclNldENvbGxhdGlvbihOb2RlICpleHByLCBPaWQgY29sbGF0 aW9uKQogCQkJLyogUm93Q29tcGFyZUV4cHIncyByZXN1bHQgaXMgYm9vbGVhbiAuLi4gKi8KIAkJ CUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsgLyogLi4uIHNvIG5ldmVyIHNldCBhIGNv bGxhdGlvbiAqLwogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJKChT YWZlVHlwZUNhc3RFeHByICopIGV4cHIpLT5yZXN1bHRjb2xsaWQgPSBjb2xsYXRpb247CisJCQli cmVhazsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCSgoQ29hbGVzY2VFeHByICopIGV4cHIp LT5jb2FsZXNjZWNvbGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFrOwpAQCAtMTU1OCw2ICsxNTY5 LDkgQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQkvKiBqdXN0IHVzZSBsZWZ0 bW9zdCBhcmd1bWVudCdzIGxvY2F0aW9uICovCiAJCQlsb2MgPSBleHByTG9jYXRpb24oKE5vZGUg KikgKChjb25zdCBSb3dDb21wYXJlRXhwciAqKSBleHByKS0+bGFyZ3MpOwogCQkJYnJlYWs7CisJ CWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJbG9jID0gKChjb25zdCBTYWZlVHlwZUNhc3RF eHByICopIGV4cHIpLT5sb2NhdGlvbjsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29hbGVzY2VFeHBy OgogCQkJLyogQ09BTEVTQ0Uga2V5d29yZCBzaG91bGQgYWx3YXlzIGJlIHRoZSBmaXJzdCB0aGlu ZyAqLwogCQkJbG9jID0gKChjb25zdCBDb2FsZXNjZUV4cHIgKikgZXhwciktPmxvY2F0aW9uOwpA QCAtMjMzMyw2ICsyMzQ3LDE4IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpu b2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5 cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpzdGNleHByID0gY2FzdE5v ZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisKKwkJCQlpZiAoV0FMSyhzdGNleHByLT5zb3Vy Y2UpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhzdGNleHByLT5jYXN0ZXhwcikp CisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKHN0Y2V4cHItPmRlZmV4cHIpKQorCQkJ CQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgog CQkJcmV0dXJuIFdBTEsoKChDb2FsZXNjZUV4cHIgKikgbm9kZSktPmFyZ3MpOwogCQljYXNlIFRf TWluTWF4RXhwcjoKQEAgLTMzNjgsNiArMzM5NCwxOSBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRv cl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CiAJCQl9CiAJ CQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJU2FmZVR5cGVD YXN0RXhwciAqc3RjZXhwciA9IGNhc3ROb2RlKFNhZmVUeXBlQ2FzdEV4cHIsIG5vZGUpOworCQkJ CVNhZmVUeXBlQ2FzdEV4cHIgKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2RlLCBzdGNl eHByLCBTYWZlVHlwZUNhc3RFeHByKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+c291cmNlLCBzdGNl eHByLT5zb3VyY2UsIEV4cHIgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmNhc3RleHByLCBzdGNl eHByLT5jYXN0ZXhwciwgRXhwciAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+ZGVmZXhwciwgc3Rj ZXhwci0+ZGVmZXhwciwgRXhwciAqKTsKKworCQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOwor CQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQl7CiAJCQkJQ29hbGVz Y2VFeHByICpjb2FsZXNjZWV4cHIgPSAoQ29hbGVzY2VFeHByICopIG5vZGU7CkBAIC00NTA0LDYg KzQ1NDMsMjAgQEAgcmF3X2V4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAog CQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQlpZiAoV0FMSyh0Yy0+dHlwZU5hbWUpKQogCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyh0Yy0+ZGVmZXhwcikpCisJCQkJCXJldHVybiB0cnVlOwor CQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJeworCQkJCVNh ZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIgPSBjYXN0Tm9kZShTYWZlVHlwZUNhc3RFeHByLCBub2Rl KTsKKworCQkJCWlmIChXQUxLKHN0Y2V4cHItPnNvdXJjZSkpCisJCQkJCXJldHVybiB0cnVlOwor CQkJCWlmIChXQUxLKHN0Y2V4cHItPmNhc3RleHByKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJ aWYgKFdBTEsoc3RjZXhwci0+ZGVmZXhwcikpCisJCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJ YnJlYWs7CiAJCWNhc2UgVF9Db2xsYXRlQ2xhdXNlOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3ByZXAvcHJlcGFnZy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJl cGFnZy5jCmluZGV4IDM3MzdjYzE1YmExLi4wZjI0OTQxNDdiZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wcmVwL3ByZXBhZ2cuYwpAQCAtMzU4LDYgKzM1OCwxNyBAQCBwcmVwcm9jZXNzX2FnZ3JlZnNf d2Fsa2VyKE5vZGUgKm5vZGUsIFBsYW5uZXJJbmZvICpyb290KQogCQkgKi8KIAkJcmV0dXJuIGZh bHNlOwogCX0KKwlpZiAoSXNBKG5vZGUsIFNhZmVUeXBlQ2FzdEV4cHIpKQorCXsKKwkJU2FmZVR5 cGVDYXN0RXhwciAqY2FzdGV4cHIgPSAoU2FmZVR5cGVDYXN0RXhwciAqKSBub2RlOworCisJCS8q CisJCSAqICJzb3VyY2UiIG1heSBhbHNvIGNvbnRhaW4gYW4gQWdncmVmIG5vZGUsIGJ1dCBzaW5j ZSBpdCBpcyBrZXB0IG9ubHkKKwkJICogZm9yIGRlcGFyc2luZyBwdXJwb3Nlcywgd2UgbXVzdCBu b3QgcmVjdXJzZSBpbnRvIGl0IHdoZW4gcHJvY2Vzc2luZworCQkgKiBhZ2dyZWdhdGUgbm9kZXMg aGVyZS4KKwkJICovCisJCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKChOb2RlICopIGNh c3RleHByLT5jYXN0ZXhwciwgcHJlcHJvY2Vzc19hZ2dyZWZzX3dhbGtlciwgcm9vdCk7CisJfQog CUFzc2VydCghSXNBKG5vZGUsIFN1YkxpbmspKTsKIAlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dh bGtlcihub2RlLCBwcmVwcm9jZXNzX2FnZ3JlZnNfd2Fsa2VyLCByb290KTsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL2NsYXVzZXMuYwppbmRleCA5ZmIyNjZkMDg5ZC4uZDYwZTljODRiOTcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKQEAgLTY5LDYgKzY5LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QKIAlMaXN0CSAgICphY3RpdmVfZm5zOwogCU5vZGUJICAgKmNhc2VfdmFsOwogCWJv b2wJCWVzdGltYXRlOworCUVycm9yU2F2ZUNvbnRleHQgKmVzY29udGV4dDsKIH0gZXZhbF9jb25z dF9leHByZXNzaW9uc19jb250ZXh0OwogCiB0eXBlZGVmIHN0cnVjdApAQCAtMjQ5Miw2ICsyNDkz LDEwIEBAIHJvd3R5cGVfZmllbGRfbWF0Y2hlcyhPaWQgcm93dHlwZWlkLCBpbnQgZmllbGRudW0s CiAgKiBOT1RFOiBhbm90aGVyIGNyaXRpY2FsIGVmZmVjdCBpcyB0aGF0IGFueSBmdW5jdGlvbiBj YWxscyB0aGF0IHJlcXVpcmUKICAqIGRlZmF1bHQgYXJndW1lbnRzIHdpbGwgYmUgZXhwYW5kZWQs IGFuZCBuYW1lZC1hcmd1bWVudCBjYWxscyB3aWxsIGJlCiAgKiBjb252ZXJ0ZWQgdG8gcG9zaXRp b25hbCBub3RhdGlvbi4gIFRoZSBleGVjdXRvciB3b24ndCBoYW5kbGUgZWl0aGVyLgorICoKKyAq IE5PVEU6IElmIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfY29udGV4dC0+ZXNjb250ZXh0IGlzIG5v dCBOVUxMLCB0aGUKKyAqIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGluIGFuIGVycm9yLXNhZmUg bWFubmVyLiBJbiB0aGlzIGNhc2UsIHRoZQorICogZnVuY3Rpb24gd2lsbCByZXR1cm4gTlVMTCBp bnN0ZWFkIG9mIHRocm93aW5nIGFuIGVycm9yLgogICotLS0tLS0tLS0tLS0tLS0tLS0tLQogICov CiBOb2RlICoKQEAgLTI1MDcsNiArMjUxMiw3IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoUGxh bm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUpCiAJY29udGV4dC5hY3RpdmVfZm5zID0gTklMOwkv KiBub3RoaW5nIGJlaW5nIHJlY3Vyc2l2ZWx5IHNpbXBsaWZpZWQgKi8KIAljb250ZXh0LmNhc2Vf dmFsID0gTlVMTDsJLyogbm8gQ0FTRSBiZWluZyBleGFtaW5lZCAqLwogCWNvbnRleHQuZXN0aW1h dGUgPSBmYWxzZTsJLyogc2FmZSB0cmFuc2Zvcm1hdGlvbnMgb25seSAqLworCWNvbnRleHQuZXNj b250ZXh0ID0gTlVMTDsJLyogZm9yIGVycm9yLXNhZmUgZXhwcmVzc2lvbiBldmFsdWF0aW9uICov CiAJcmV0dXJuIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihub2RlLCAmY29udGV4dCk7 CiB9CiAKQEAgLTI2NDYsNiArMjY1Miw3IEBAIGVzdGltYXRlX2V4cHJlc3Npb25fdmFsdWUoUGxh bm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUpCiAJY29udGV4dC5hY3RpdmVfZm5zID0gTklMOwkv KiBub3RoaW5nIGJlaW5nIHJlY3Vyc2l2ZWx5IHNpbXBsaWZpZWQgKi8KIAljb250ZXh0LmNhc2Vf dmFsID0gTlVMTDsJLyogbm8gQ0FTRSBiZWluZyBleGFtaW5lZCAqLwogCWNvbnRleHQuZXN0aW1h dGUgPSB0cnVlOwkvKiB1bnNhZmUgdHJhbnNmb3JtYXRpb25zIE9LICovCisJY29udGV4dC5lc2Nv bnRleHQgPSBOVUxMOwkvKiBmb3IgZXJyb3Itc2FmZSBleHByZXNzaW9uIGV2YWx1YXRpb24gKi8K IAlyZXR1cm4gZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKG5vZGUsICZjb250ZXh0KTsK IH0KIApAQCAtMjY3MSwxMSArMjY3OCwxMiBAQCBlc3RpbWF0ZV9leHByZXNzaW9uX3ZhbHVlKFBs YW5uZXJJbmZvICpyb290LCBOb2RlICpub2RlKQogCSghZXhwcmVzc2lvbl90cmVlX3dhbGtlcigo Tm9kZSAqKSAobm9kZSksIGNvbnRhaW5fbm9uX2NvbnN0X3dhbGtlciwgTlVMTCkpCiAKIC8qIEdl bmVyaWMgbWFjcm8gZm9yIGFwcGx5aW5nIGV2YWx1YXRlX2V4cHIgKi8KLSNkZWZpbmUgZWNlX2V2 YWx1YXRlX2V4cHIobm9kZSkgXAorI2RlZmluZSBlY2VfZXZhbHVhdGVfZXhwcihub2RlLCBlc2Nv bnRleHQpIFwKIAkoKE5vZGUgKikgZXZhbHVhdGVfZXhwcigoRXhwciAqKSAobm9kZSksIFwKIAkJ CQkJCQlleHByVHlwZSgoTm9kZSAqKSAobm9kZSkpLCBcCiAJCQkJCQkJZXhwclR5cG1vZCgoTm9k ZSAqKSAobm9kZSkpLCBcCi0JCQkJCQkJZXhwckNvbGxhdGlvbigoTm9kZSAqKSAobm9kZSkpKSkK KwkJCQkJCQlleHByQ29sbGF0aW9uKChOb2RlICopIChub2RlKSksIFwKKwkJCQkJCQkoTm9kZSAq KSBlc2NvbnRleHQpKQogCiAvKgogICogUmVjdXJzaXZlIGd1dHMgb2YgZXZhbF9jb25zdF9leHBy ZXNzaW9ucy9lc3RpbWF0ZV9leHByZXNzaW9uX3ZhbHVlCkBAIC0zMTM2LDcgKzMxNDQsNyBAQCBl dmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAogCQkJCWlmICghaGFz X25vbmNvbnN0X2lucHV0ICYmCiAJCQkJCWVjZV9mdW5jdGlvbl9pc19zYWZlKGV4cHItPm9wZnVu Y2lkLCBjb250ZXh0KSkKLQkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKGV4cHIpOworCQkJ CQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoZXhwciwgY29udGV4dC0+ZXNjb250ZXh0KTsKIAog CQkJCXJldHVybiAoTm9kZSAqKSBleHByOwogCQkJfQpAQCAtMzE1Niw3ICszMTY0LDcgQEAgZXZh bF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJICovCiAJCQkJaWYg KGVjZV9hbGxfYXJndW1lbnRzX2NvbnN0KHNhb3ApICYmCiAJCQkJCWVjZV9mdW5jdGlvbl9pc19z YWZlKHNhb3AtPm9wZnVuY2lkLCBjb250ZXh0KSkKLQkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9l eHByKHNhb3ApOworCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoc2FvcCwgY29udGV4dC0+ ZXNjb250ZXh0KTsKIAkJCQlyZXR1cm4gKE5vZGUgKikgc2FvcDsKIAkJCX0KIAkJY2FzZSBUX0Jv b2xFeHByOgpAQCAtMzI2Nyw2ICszMjc1LDQzIEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0 YXRvcihOb2RlICpub2RlLAogCQkJCQkJCQkJCQkJICBjb3B5T2JqZWN0KGp2ZS0+Zm9ybWF0KSk7 CiAJCQl9CiAKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJU2FmZVR5cGVD YXN0RXhwciAqc3RjID0gY2FzdE5vZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisJCQkJU2Fm ZVR5cGVDYXN0RXhwciAqbmV3ZXhwciA9IG1ha2VOb2RlKFNhZmVUeXBlQ2FzdEV4cHIpOworCisJ CQkJTm9kZQkgICAqY2FzdGV4cHIgPSAoTm9kZSAqKSBzdGMtPmNhc3RleHByOworCQkJCU5vZGUJ ICAgKmRlZmV4cHIgPSAoTm9kZSAqKSBzdGMtPmRlZmV4cHI7CisKKwkJCQljb250ZXh0LT5lc2Nv bnRleHQgPSBtYWtlTm9kZShFcnJvclNhdmVDb250ZXh0KTsKKwkJCQljb250ZXh0LT5lc2NvbnRl eHQtPnR5cGUgPSBUX0Vycm9yU2F2ZUNvbnRleHQ7CisJCQkJY29udGV4dC0+ZXNjb250ZXh0LT5l cnJvcl9vY2N1cnJlZCA9IGZhbHNlOworCisJCQkJY2FzdGV4cHIgPSBldmFsX2NvbnN0X2V4cHJl c3Npb25zX211dGF0b3IoY2FzdGV4cHIsCisJCQkJCQkJCQkJCQkJCSAgY29udGV4dCk7CisKKwkJ CQlwZnJlZShjb250ZXh0LT5lc2NvbnRleHQpOworCQkJCWNvbnRleHQtPmVzY29udGV4dCA9IE5V TEw7CisKKwkJCQlkZWZleHByID0gZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKGRlZmV4 cHIsCisJCQkJCQkJCQkJCQkJCSBjb250ZXh0KTsKKworCQkJCS8qCisJCQkJICogTm8gbmVlZCB0 byBmb2xkICJzb3VyY2UiIHRvIGEgY29uc3RhbnQuIFRoZSBleGVjdXRvciBkb2VzCisJCQkJICog bm90IHVzZSBpdCwgc2VlIEV4ZWNJbml0U2FmZVR5cGVDYXN0RXhwci4gQWRkaXRpb25hbGx5LAor CQkJCSAqIGNhc3RleHByIGV4cHJlc3Npb24gdHJlZSBtYXkgYWxyZWFkeSBjb250YWluIHRoZSAi c291cmNlIgorCQkJCSAqIG5vZGUuCisJCQkJICovCisJCQkJbmV3ZXhwci0+c291cmNlID0gc3Rj LT5zb3VyY2U7CisJCQkJbmV3ZXhwci0+Y2FzdGV4cHIgPSAoRXhwciAqKSBjYXN0ZXhwcjsKKwkJ CQluZXdleHByLT5kZWZleHByID0gKEV4cHIgKikgZGVmZXhwcjsKKwkJCQluZXdleHByLT5yZXN1 bHR0eXBlID0gc3RjLT5yZXN1bHR0eXBlOworCQkJCW5ld2V4cHItPnJlc3VsdHR5cG1vZCA9IHN0 Yy0+cmVzdWx0dHlwbW9kOworCQkJCW5ld2V4cHItPnJlc3VsdGNvbGxpZCA9IHN0Yy0+cmVzdWx0 Y29sbGlkOworCisJCQkJcmV0dXJuIChOb2RlICopIG5ld2V4cHI7CisJCQl9CisKIAkJY2FzZSBU X1N1YlBsYW46CiAJCWNhc2UgVF9BbHRlcm5hdGl2ZVN1YlBsYW46CiAKQEAgLTMzODQsNiArMzQy OSw3IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJewog CQkJCUFycmF5Q29lcmNlRXhwciAqYWMgPSBtYWtlTm9kZShBcnJheUNvZXJjZUV4cHIpOwogCQkJ CU5vZGUJICAgKnNhdmVfY2FzZV92YWw7CisJCQkJRXhwcgkgICAqc2ltcGxlID0gTlVMTDsKIAog CQkJCS8qCiAJCQkJICogQ29weSB0aGUgbm9kZSBhbmQgY29uc3Qtc2ltcGxpZnkgaXRzIGFyZ3Vt ZW50cy4gIFdlIGNhbid0CkBAIC0zMzkxLDkgKzM0MzcsMTAgQEAgZXZhbF9jb25zdF9leHByZXNz aW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJICogd2l0aCBjYXNlX3ZhbCBvbmx5IHdoaWxl IHByb2Nlc3NpbmcgdGhlIGVsZW1leHByLgogCQkJCSAqLwogCQkJCW1lbWNweShhYywgbm9kZSwg c2l6ZW9mKEFycmF5Q29lcmNlRXhwcikpOwotCQkJCWFjLT5hcmcgPSAoRXhwciAqKQotCQkJCQll dmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoKE5vZGUgKikgYWMtPmFyZywKLQkJCQkJCQkJ CQkJCSAgIGNvbnRleHQpOworCQkJCXNpbXBsZSA9IChFeHByICopIGV2YWxfY29uc3RfZXhwcmVz c2lvbnNfbXV0YXRvcigoTm9kZSAqKSBhYy0+YXJnLAorCQkJCQkJCQkJCQkJCQkJCSBjb250ZXh0 KTsKKwkJCQlpZiAoc2ltcGxlKQorCQkJCQlhYy0+YXJnID0gc2ltcGxlOwogCiAJCQkJLyoKIAkJ CQkgKiBTZXQgdXAgZm9yIHRoZSBDYXNlVGVzdEV4cHIgbm9kZSBjb250YWluZWQgaW4gdGhlIGVs ZW1leHByLgpAQCAtMzQwMiw5ICszNDQ5LDEwIEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0 YXRvcihOb2RlICpub2RlLAogCQkJCXNhdmVfY2FzZV92YWwgPSBjb250ZXh0LT5jYXNlX3ZhbDsK IAkJCQljb250ZXh0LT5jYXNlX3ZhbCA9IE5VTEw7CiAKLQkJCQlhYy0+ZWxlbWV4cHIgPSAoRXhw ciAqKQotCQkJCQlldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoKE5vZGUgKikgYWMtPmVs ZW1leHByLAotCQkJCQkJCQkJCQkJICAgY29udGV4dCk7CisJCQkJc2ltcGxlID0gKEV4cHIgKikg ZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKChOb2RlICopIGFjLT5lbGVtZXhwciwKKwkJ CQkJCQkJCQkJCQkJCQkgY29udGV4dCk7CisJCQkJaWYgKHNpbXBsZSkKKwkJCQkJYWMtPmVsZW1l eHByID0gc2ltcGxlOwogCiAJCQkJY29udGV4dC0+Y2FzZV92YWwgPSBzYXZlX2Nhc2VfdmFsOwog CkBAIC0zNDE5LDcgKzM0NjcsNyBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9k ZSAqbm9kZSwKIAkJCQlpZiAoYWMtPmFyZyAmJiBJc0EoYWMtPmFyZywgQ29uc3QpICYmCiAJCQkJ CWFjLT5lbGVtZXhwciAmJiAhSXNBKGFjLT5lbGVtZXhwciwgQ29lcmNlVG9Eb21haW4pICYmCiAJ CQkJCSFjb250YWluX211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIGFjLT5lbGVtZXhwcikpCi0J CQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihhYyk7CisJCQkJCXJldHVybiBlY2VfZXZhbHVh dGVfZXhwcihhYywgY29udGV4dC0+ZXNjb250ZXh0KTsKIAogCQkJCXJldHVybiAoTm9kZSAqKSBh YzsKIAkJCX0KQEAgLTM2MTUsNyArMzY2Myw3IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0 YXRvcihOb2RlICpub2RlLAogCQkJCW5vZGUgPSBlY2VfZ2VuZXJpY19wcm9jZXNzaW5nKG5vZGUp OwogCQkJCS8qIElmIGFsbCBhcmd1bWVudHMgYXJlIENvbnN0cywgd2UgY2FuIGZvbGQgdG8gYSBj b25zdGFudCAqLwogCQkJCWlmIChlY2VfYWxsX2FyZ3VtZW50c19jb25zdChub2RlKSkKLQkJCQkJ cmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKG5vZGUpOworCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRl X2V4cHIobm9kZSwgY29udGV4dC0+ZXNjb250ZXh0KTsKIAkJCQlyZXR1cm4gbm9kZTsKIAkJCX0K IAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKQEAgLTM2OTgsNyArMzc0Niw4IEBAIGV2YWxfY29uc3Rf ZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCQlyZXR1cm4gKE5vZGUgKikgZXZh bHVhdGVfZXhwcigoRXhwciAqKSBzdmYsCiAJCQkJCQkJCQkJCQkgIHN2Zi0+dHlwZSwKIAkJCQkJ CQkJCQkJCSAgc3ZmLT50eXBtb2QsCi0JCQkJCQkJCQkJCQkgIEludmFsaWRPaWQpOworCQkJCQkJ CQkJCQkJICBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkJICBOVUxMKTsKIAkJCQllbHNlCiAJCQkJ CXJldHVybiBjb3B5T2JqZWN0KChOb2RlICopIHN2Zik7CiAJCQl9CkBAIC0zNzk1LDcgKzM4NDQs NyBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQkJCQkJ CQkJICBuZXdmc2VsZWN0LT5yZXN1bHR0eXBlLAogCQkJCQkJCQkJCQkgIG5ld2ZzZWxlY3QtPnJl c3VsdHR5cG1vZCwKIAkJCQkJCQkJCQkJICBuZXdmc2VsZWN0LT5yZXN1bHRjb2xsaWQpKQotCQkJ CQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKG5ld2ZzZWxlY3QpOworCQkJCQkJcmV0dXJuIGVj ZV9ldmFsdWF0ZV9leHByKG5ld2ZzZWxlY3QsIGNvbnRleHQtPmVzY29udGV4dCk7CiAJCQkJfQog CQkJCXJldHVybiAoTm9kZSAqKSBuZXdmc2VsZWN0OwogCQkJfQpAQCAtNDEyNSw3ICs0MTc0LDcg QEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJbmV3Y3Jl LT5hcmcgPSAoRXhwciAqKSBhcmc7CiAKIAkJCQlpZiAoYXJnICE9IE5VTEwgJiYgSXNBKGFyZywg Q29uc3QpKQotCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoKE5vZGUgKikgbmV3Y3JlKTsK KwkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKChOb2RlICopIG5ld2NyZSwgY29udGV4dC0+ ZXNjb250ZXh0KTsKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3Y3JlOwogCQkJfQogCQlkZWZhdWx0 OgpAQCAtNDUyNSw2ICs0NTc0LDkgQEAgc2ltcGxpZnlfZnVuY3Rpb24oT2lkIGZ1bmNpZCwgT2lk IHJlc3VsdF90eXBlLCBpbnQzMiByZXN1bHRfdHlwbW9kLAogCQkJCQkJCQlhcmdzLCBmdW5jdmFy aWFkaWMsCiAJCQkJCQkJCWZ1bmNfdHVwbGUsIGNvbnRleHQpOwogCisJaWYgKFNPRlRfRVJST1Jf T0NDVVJSRUQoY29udGV4dC0+ZXNjb250ZXh0KSAmJiBuZXdleHByICE9IE5VTEwpCisJCWVsb2co RVJST1IsICJldmFsdWF0ZV9mdW5jdGlvbiBmYWlsZWQsIGJ1dCBuZXdleHByIGlzIG5vdCBOVUxM Iik7CisKIAlpZiAoIW5ld2V4cHIgJiYgYWxsb3dfbm9uX2NvbnN0ICYmIE9pZElzVmFsaWQoZnVu Y19mb3JtLT5wcm9zdXBwb3J0KSkKIAl7CiAJCS8qCkBAIC01MjI5LDcgKzUyODEsNyBAQCBldmFs dWF0ZV9mdW5jdGlvbihPaWQgZnVuY2lkLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90 eXBtb2QsCiAJbmV3ZXhwci0+bG9jYXRpb24gPSAtMTsKIAogCXJldHVybiBldmFsdWF0ZV9leHBy KChFeHByICopIG5ld2V4cHIsIHJlc3VsdF90eXBlLCByZXN1bHRfdHlwbW9kLAotCQkJCQkJIHJl c3VsdF9jb2xsaWQpOworCQkJCQkJIHJlc3VsdF9jb2xsaWQsIChOb2RlICopIGNvbnRleHQtPmVz Y29udGV4dCk7CiB9CiAKIC8qCkBAIC01NjgzLDEwICs1NzM1LDEzIEBAIHNxbF9pbmxpbmVfZXJy b3JfY2FsbGJhY2sodm9pZCAqYXJnKQogICoKICAqIFdlIHVzZSB0aGUgZXhlY3V0b3IncyByb3V0 aW5lIEV4ZWNFdmFsRXhwcigpIHRvIGF2b2lkIGR1cGxpY2F0aW9uIG9mCiAgKiBjb2RlIGFuZCBl bnN1cmUgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUgZXhlY3V0b3Igd291bGQgZ2V0Lgor ICoKKyAqIFdoZW4gZXNjb250ZXh0IGlzIG5vbi1OVUxMLCBzYWZlbHkgZXZhbHVhdGVzIHRoZSBj b25zdGFudCBleHByZXNzaW9uLgorICogUmV0dXJucyBOVUxMIG9uIGZhaWx1cmUgcmF0aGVyIHRo YW4gdGhyb3dpbmcgYW4gZXJyb3IuCiAgKi8KIEV4cHIgKgogZXZhbHVhdGVfZXhwcihFeHByICpl eHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90eXBtb2QsCi0JCQkgIE9pZCByZXN1 bHRfY29sbGF0aW9uKQorCQkJICBPaWQgcmVzdWx0X2NvbGxhdGlvbiwgTm9kZSAqZXNjb250ZXh0 KQogewogCUVTdGF0ZQkgICAqZXN0YXRlOwogCUV4cHJTdGF0ZSAgKmV4cHJzdGF0ZTsKQEAgLTU3 MTEsNyArNTc2Niw3IEBAIGV2YWx1YXRlX2V4cHIoRXhwciAqZXhwciwgT2lkIHJlc3VsdF90eXBl LCBpbnQzMiByZXN1bHRfdHlwbW9kLAogCSAqIFByZXBhcmUgZXhwciBmb3IgZXhlY3V0aW9uLiAg KE5vdGU6IHdlIGNhbid0IHVzZSBFeGVjUHJlcGFyZUV4cHIKIAkgKiBiZWNhdXNlIGl0J2QgcmVz dWx0IGluIHJlY3Vyc2l2ZWx5IGludm9raW5nIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMuKQogCSAq LwotCWV4cHJzdGF0ZSA9IEV4ZWNJbml0RXhwcihleHByLCBOVUxMKTsKKwlleHByc3RhdGUgPSBF eGVjSW5pdEV4cHJXaXRoQ29udGV4dChleHByLCBOVUxMLCBlc2NvbnRleHQpOwogCiAJLyoKIAkg KiBBbmQgZXZhbHVhdGUgaXQuCkBAIC01NzMxLDYgKzU3ODYsMTMgQEAgZXZhbHVhdGVfZXhwcihF eHByICpleHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90eXBtb2QsCiAJLyogR2V0 IGJhY2sgdG8gb3V0ZXIgbWVtb3J5IGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY29udGV4dCk7CiAKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChleHByc3RhdGUtPmVzY29u dGV4dCkpCisJeworCQlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOworCisJCXJldHVybiBOVUxM OworCX0KKwogCS8qCiAJICogTXVzdCBjb3B5IHJlc3VsdCBvdXQgb2Ygc3ViLWNvbnRleHQgdXNl ZCBieSBleHByZXNzaW9uIGV2YWwuCiAJICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDBmZWE3MjZjZGQ1Li4y YWMwNDU2NWFmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0xNTgsNiArMTU4LDggQEAgc3RhdGljIHZvaWQg dXBkYXRlUmF3U3RtdEVuZChSYXdTdG10ICpycywgaW50IGVuZF9sb2NhdGlvbik7CiBzdGF0aWMg Tm9kZSAqbWFrZUNvbHVtblJlZihjaGFyICpjb2xuYW1lLCBMaXN0ICppbmRpcmVjdGlvbiwKIAkJ CQkJCSAgIGludCBsb2NhdGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIE5v ZGUgKm1ha2VUeXBlQ2FzdChOb2RlICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwgaW50IGxvY2F0 aW9uKTsKK3N0YXRpYyBOb2RlICptYWtlVHlwZUNhc3RXaXRoRGVmYXVsdChOb2RlICphcmcsIFR5 cGVOYW1lICp0eXBlbmFtZSwKKwkJCQkJCQkJCSBOb2RlICpyYXdfZGVmYXVsdCwgaW50IGxvY2F0 aW9uKTsKIHN0YXRpYyBOb2RlICptYWtlU3RyaW5nQ29uc3RDYXN0KGNoYXIgKnN0ciwgaW50IGxv Y2F0aW9uLCBUeXBlTmFtZSAqdHlwZW5hbWUpOwogc3RhdGljIE5vZGUgKm1ha2VJbnRDb25zdChp bnQgdmFsLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2VGbG9hdENvbnN0KGNoYXIg KnN0ciwgaW50IGxvY2F0aW9uKTsKQEAgLTE2Njg3LDYgKzE2Njg5LDEyIEBAIGZ1bmNfZXhwcl9j b21tb25fc3ViZXhwcjoKIAkJCQl9CiAJCQl8IENBU1QgJygnIGFfZXhwciBBUyBUeXBlbmFtZSAn KScKIAkJCQl7ICQkID0gbWFrZVR5cGVDYXN0KCQzLCAkNSwgQDEpOyB9CisJCQl8IENBU1QgJygn IGFfZXhwciBBUyBUeXBlbmFtZSBFUlJPUl9QIE9OIENPTlZFUlNJT05fUCBFUlJPUl9QICcpJwor CQkJCXsgJCQgPSBtYWtlVHlwZUNhc3QoJDMsICQ1LCBAMSk7IH0KKwkJCXwgQ0FTVCAnKCcgYV9l eHByIEFTIFR5cGVuYW1lIE5VTExfUCBPTiBDT05WRVJTSU9OX1AgRVJST1JfUCAnKScKKwkJCQl7 ICQkID0gbWFrZVR5cGVDYXN0V2l0aERlZmF1bHQoJDMsICQ1LCBtYWtlTnVsbEFDb25zdCgtMSks IEAxKTsgfQorCQkJfCBDQVNUICcoJyBhX2V4cHIgQVMgVHlwZW5hbWUgREVGQVVMVCBhX2V4cHIg T04gQ09OVkVSU0lPTl9QIEVSUk9SX1AgJyknCisJCQkJeyAkJCA9IG1ha2VUeXBlQ2FzdFdpdGhE ZWZhdWx0KCQzLCAkNSwgJDcsIEAxKTsgfQogCQkJfCBFWFRSQUNUICcoJyBleHRyYWN0X2xpc3Qg JyknCiAJCQkJewogCQkJCQkkJCA9IChOb2RlICopIG1ha2VGdW5jQ2FsbChTeXN0ZW1GdW5jTmFt ZSgiZXh0cmFjdCIpLApAQCAtMTk4NDgsMTAgKzE5ODU2LDI1IEBAIG1ha2VUeXBlQ2FzdChOb2Rl ICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwgaW50IGxvY2F0aW9uKQogCiAJbi0+YXJnID0gYXJn OwogCW4tPnR5cGVOYW1lID0gdHlwZW5hbWU7CisJbi0+ZGVmZXhwciA9IE5VTEw7CiAJbi0+bG9j YXRpb24gPSBsb2NhdGlvbjsKIAlyZXR1cm4gKE5vZGUgKikgbjsKIH0KIAorc3RhdGljIE5vZGUg KgorbWFrZVR5cGVDYXN0V2l0aERlZmF1bHQoTm9kZSAqYXJnLCBUeXBlTmFtZSAqdHlwZW5hbWUs IE5vZGUgKmRlZmV4cHIsCisJCQkJCQlpbnQgbG9jYXRpb24pCit7CisJVHlwZUNhc3QgICAqbiA9 IG1ha2VOb2RlKFR5cGVDYXN0KTsKKworCW4tPmFyZyA9IGFyZzsKKwluLT50eXBlTmFtZSA9IHR5 cGVuYW1lOworCW4tPmRlZmV4cHIgPSBkZWZleHByOworCW4tPmxvY2F0aW9uID0gbG9jYXRpb247 CisKKwlyZXR1cm4gKE5vZGUgKikgbjsKK30KKwogc3RhdGljIE5vZGUgKgogbWFrZVN0cmluZ0Nv bnN0Q2FzdChjaGFyICpzdHIsIGludCBsb2NhdGlvbiwgVHlwZU5hbWUgKnR5cGVuYW1lKQogewpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IDYwNzZlOTM3M2MxLi4wN2M3MzUyMWRmMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9hZ2cuYwpAQCAtNDkxLDYgKzQ5MSwxMiBAQCBjaGVja19hZ2dsZXZlbHNfYW5k X2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCQllcnIgPSBf KCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBjaGVjayBjb25zdHJhaW50 cyIpOwogCiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUOgorCQkJaWYg KGlzQWdnKQorCQkJCWVyciA9IF8oImFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2Vk IGluIENBU1QgREVGQVVMVCBleHByZXNzaW9ucyIpOworCQkJZWxzZQorCQkJCWVyciA9IF8oImdy b3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBU1QgREVGQVVMVCBleHByZXNz aW9ucyIpOworCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQlj YXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgogCkBAIC05OTIsNiArOTk4LDkgQEAgdHJh bnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVu YywKIAkJY2FzZSBFWFBSX0tJTkRfRE9NQUlOX0NIRUNLOgogCQkJZXJyID0gXygid2luZG93IGZ1 bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gY2hlY2sgY29uc3RyYWludHMiKTsKIAkJCWJyZWFr OworCQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CisJCQllcnIgPSBfKCJ3aW5kb3cgZnVu Y3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKKwkJ CWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJ TkRfRlVOQ1RJT05fREVGQVVMVDoKIAkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJlIG5v dCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2Vy Y2UuYwppbmRleCA5MTNjYTUzNjY2Zi4uOGJkNzlmZDViZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf Y29lcmNlLmMKQEAgLTM3LDE0ICszNywxNiBAQCBzdGF0aWMgTm9kZSAqY29lcmNlX3R5cGVfdHlw bW9kKE5vZGUgKm5vZGUsCiAJCQkJCQkJCU9pZCB0YXJnZXRUeXBlSWQsIGludDMyIHRhcmdldFR5 cE1vZCwKIAkJCQkJCQkJQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zv cm1hdCwKIAkJCQkJCQkJaW50IGxvY2F0aW9uLAotCQkJCQkJCQlib29sIGhpZGVJbnB1dENvZXJj aW9uKTsKKwkJCQkJCQkJYm9vbCBoaWRlSW5wdXRDb2VyY2lvbiwKKwkJCQkJCQkJTm9kZSAqZXNj b250ZXh0KTsKIHN0YXRpYyB2b2lkIGhpZGVfY29lcmNpb25fbm9kZShOb2RlICpub2RlKTsKIHN0 YXRpYyBOb2RlICpidWlsZF9jb2VyY2lvbl9leHByZXNzaW9uKE5vZGUgKm5vZGUsCiAJCQkJCQkJ CQkgICBDb2VyY2lvblBhdGhUeXBlIHBhdGh0eXBlLAogCQkJCQkJCQkJICAgT2lkIGZ1bmNJZCwK IAkJCQkJCQkJCSAgIE9pZCB0YXJnZXRUeXBlSWQsIGludDMyIHRhcmdldFR5cE1vZCwKIAkJCQkJ CQkJCSAgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsCi0J CQkJCQkJCQkgICBpbnQgbG9jYXRpb24pOworCQkJCQkJCQkJICAgaW50IGxvY2F0aW9uLAorCQkJ CQkJCQkJICAgTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBOb2RlICpjb2VyY2VfcmVjb3JkX3Rv X2NvbXBsZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCQkJCQkJICBPaWQg dGFyZ2V0VHlwZUlkLAogCQkJCQkJCQkJICBDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsCkBAIC04 MSw2ICs4MywyOCBAQCBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpleHByLCBPaWQgZXhwcnR5cGUsCiAJCQkJCSAgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0 LAogCQkJCQkgIENvZXJjaW9uRm9ybSBjZm9ybWF0LAogCQkJCQkgIGludCBsb2NhdGlvbikKK3sK KwlyZXR1cm4gY29lcmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKHBzdGF0ZSwgZXhwciwgZXhw cnR5cGUsCisJCQkJCQkJCQkJICB0YXJnZXR0eXBlLCB0YXJnZXR0eXBtb2QsCisJCQkJCQkJCQkJ ICBjY29udGV4dCwKKwkJCQkJCQkJCQkgIGNmb3JtYXQsCisJCQkJCQkJCQkJICBsb2NhdGlvbiwK KwkJCQkJCQkJCQkgIE5VTEwpOworfQorCisvKgorICogZXNjb250ZXh0OiBJZiBub24tTlVMTCwg c2FmZWx5IGNvZXJjZXMgJ2V4cHInIHRvIHRoZSB0YXJnZXQgdHlwZQorICogd2l0aG91dCByYWlz aW5nIGFuIGVycm9yLiBSZXR1cm5zIE5VTEwgaWYgdGhlIGNvZXJjaW9uIGZhaWxzLgorICoKKyAq IFNlZSAnY29lcmNlX3RvX3RhcmdldF90eXBlJyBhYm92ZSBmb3IgZGV0YWlscyBvbiBvdGhlciBw YXJhbWV0ZXJzLgorICovCitOb2RlICoKK2NvZXJjZV90b190YXJnZXRfdHlwZV9leHRlbmRlZChQ YXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIE9pZCBleHBydHlwZSwKKwkJCQkJCQkgICBP aWQgdGFyZ2V0dHlwZSwgaW50MzIgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCSAgIENvZXJjaW9uQ29u dGV4dCBjY29udGV4dCwKKwkJCQkJCQkgICBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwKKwkJCQkJCQkg ICBpbnQgbG9jYXRpb24sCisJCQkJCQkJICAgTm9kZSAqZXNjb250ZXh0KQogewogCU5vZGUJICAg KnJlc3VsdDsKIAlOb2RlCSAgICpvcmlnZXhwcjsKQEAgLTEwMiw5ICsxMjYsMTUgQEAgY29lcmNl X3RvX3RhcmdldF90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgT2lkIGV4cHJ0 eXBlLAogCXdoaWxlIChleHByICYmIElzQShleHByLCBDb2xsYXRlRXhwcikpCiAJCWV4cHIgPSAo Tm9kZSAqKSAoKENvbGxhdGVFeHByICopIGV4cHIpLT5hcmc7CiAKLQlyZXN1bHQgPSBjb2VyY2Vf dHlwZShwc3RhdGUsIGV4cHIsIGV4cHJ0eXBlLAotCQkJCQkJIHRhcmdldHR5cGUsIHRhcmdldHR5 cG1vZCwKLQkJCQkJCSBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24pOworCXJlc3VsdCA9IGNv ZXJjZV90eXBlX2V4dGVuZGVkKHBzdGF0ZSwgZXhwciwgZXhwcnR5cGUsCisJCQkJCQkJCSAgdGFy Z2V0dHlwZSwgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkgIGNjb250ZXh0LAorCQkJCQkJCQkgIGNm b3JtYXQsCisJCQkJCQkJCSAgbG9jYXRpb24sCisJCQkJCQkJCSAgZXNjb250ZXh0KTsKKworCWlm IChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpCisJCXJldHVybiBOVUxMOwogCiAJLyoK IAkgKiBJZiB0aGUgdGFyZ2V0IGlzIGEgZml4ZWQtbGVuZ3RoIHR5cGUsIGl0IG1heSBuZWVkIGEg bGVuZ3RoIGNvZXJjaW9uIGFzCkBAIC0xMTQsNyArMTQ0LDExIEBAIGNvZXJjZV90b190YXJnZXRf dHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIE9pZCBleHBydHlwZSwKIAlyZXN1 bHQgPSBjb2VyY2VfdHlwZV90eXBtb2QocmVzdWx0LAogCQkJCQkJCQl0YXJnZXR0eXBlLCB0YXJn ZXR0eXBtb2QsCiAJCQkJCQkJCWNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKLQkJCQkJCQkJ KHJlc3VsdCAhPSBleHByICYmICFJc0EocmVzdWx0LCBDb25zdCkpKTsKKwkJCQkJCQkJKHJlc3Vs dCAhPSBleHByICYmICFJc0EocmVzdWx0LCBDb25zdCkpLAorCQkJCQkJCQllc2NvbnRleHQpOwor CisJaWYgKHJlc3VsdCA9PSBOVUxMKQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KKwkJZWxvZyhF UlJPUiwgImZhaWxlZCB0byBjb2VyY2UgdHlwZSBtb2RpZmllciBhcyBleHBlY3RlZCIpOwogCiAJ aWYgKGV4cHIgIT0gb3JpZ2V4cHIgJiYgdHlwZV9pc19jb2xsYXRhYmxlKHRhcmdldHR5cGUpKQog CXsKQEAgLTE1OCw2ICsxOTIsMTggQEAgTm9kZSAqCiBjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpw c3RhdGUsIE5vZGUgKm5vZGUsCiAJCQlPaWQgaW5wdXRUeXBlSWQsIE9pZCB0YXJnZXRUeXBlSWQs IGludDMyIHRhcmdldFR5cGVNb2QsCiAJCQlDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsIENvZXJj aW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24pCit7CisJcmV0dXJuIGNvZXJjZV90eXBlX2V4 dGVuZGVkKHBzdGF0ZSwgbm9kZSwKKwkJCQkJCQkJaW5wdXRUeXBlSWQsIHRhcmdldFR5cGVJZCwg dGFyZ2V0VHlwZU1vZCwKKwkJCQkJCQkJY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uLAorCQkJ CQkJCQlOVUxMKTsKK30KKworTm9kZSAqCitjb2VyY2VfdHlwZV9leHRlbmRlZChQYXJzZVN0YXRl ICpwc3RhdGUsIE5vZGUgKm5vZGUsCisJCQkJCSBPaWQgaW5wdXRUeXBlSWQsIE9pZCB0YXJnZXRU eXBlSWQsIGludDMyIHRhcmdldFR5cGVNb2QsCisJCQkJCSBDb2VyY2lvbkNvbnRleHQgY2NvbnRl eHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24sCisJCQkJCSBOb2RlICplc2Nv bnRleHQpCiB7CiAJTm9kZQkgICAqcmVzdWx0OwogCUNvZXJjaW9uUGF0aFR5cGUgcGF0aHR5cGU7 CkBAIC0yNTYsNiArMzAyLDcgQEAgY29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2Rl ICpub2RlLAogCQlpbnQzMgkJaW5wdXRUeXBlTW9kOwogCQlUeXBlCQliYXNlVHlwZTsKIAkJUGFy c2VDYWxsYmFja1N0YXRlIHBjYnN0YXRlOworCQljaGFyCSAgICpzdHJpbmcgPSBOVUxMOwogCiAJ CS8qCiAJCSAqIElmIHRoZSB0YXJnZXQgdHlwZSBpcyBhIGRvbWFpbiwgd2Ugd2FudCB0byBjYWxs IGl0cyBiYXNlIHR5cGUncwpAQCAtMzA5LDEzICszNTYsMjEgQEAgY29lcmNlX3R5cGUoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkgKiBhcyBDU1RSSU5HLgogCQkgKi8KIAkJaWYg KCFjb24tPmNvbnN0aXNudWxsKQotCQkJbmV3Y29uLT5jb25zdHZhbHVlID0gc3RyaW5nVHlwZURh dHVtKGJhc2VUeXBlLAotCQkJCQkJCQkJCQkJIERhdHVtR2V0Q1N0cmluZyhjb24tPmNvbnN0dmFs dWUpLAotCQkJCQkJCQkJCQkJIGlucHV0VHlwZU1vZCk7Ci0JCWVsc2UKLQkJCW5ld2Nvbi0+Y29u c3R2YWx1ZSA9IHN0cmluZ1R5cGVEYXR1bShiYXNlVHlwZSwKLQkJCQkJCQkJCQkJCSBOVUxMLAot CQkJCQkJCQkJCQkJIGlucHV0VHlwZU1vZCk7CisJCQlzdHJpbmcgPSBEYXR1bUdldENTdHJpbmco Y29uLT5jb25zdHZhbHVlKTsKKworCQlpZiAoIXN0cmluZ1R5cGVEYXR1bVNhZmUoYmFzZVR5cGUs CisJCQkJCQkJCSBzdHJpbmcsCisJCQkJCQkJCSBpbnB1dFR5cGVNb2QsCisJCQkJCQkJCSBlc2Nv bnRleHQsCisJCQkJCQkJCSAmbmV3Y29uLT5jb25zdHZhbHVlKSkKKwkJeworCQkJLyogVU5LTk9X TiBDb25zdCBjYW5ub3QgY29lcmNlIHRvIHRhcmdldFR5cGUsIGV4aXQgbm93ICovCisJCQljYW5j ZWxfcGFyc2VyX2VycnBvc2l0aW9uX2NhbGxiYWNrKCZwY2JzdGF0ZSk7CisKKwkJCVJlbGVhc2VT eXNDYWNoZShiYXNlVHlwZSk7CisKKwkJCXJldHVybiBOVUxMOworCQl9CiAKIAkJLyoKIAkJICog SWYgaXQncyBhIHZhcmxlbmEgdmFsdWUsIGZvcmNlIGl0IHRvIGJlIGluIG5vbi1leHBhbmRlZApA QCAtMzY0LDcgKzQxOSw4IEBAIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq bm9kZSwKIAkJCQkJCQkJCSAgYmFzZVR5cGVJZCwgYmFzZVR5cGVNb2QsCiAJCQkJCQkJCQkgIHRh cmdldFR5cGVJZCwKIAkJCQkJCQkJCSAgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uLAotCQkJ CQkJCQkJICBmYWxzZSk7CisJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJICBlc2NvbnRleHQp OwogCiAJCVJlbGVhc2VTeXNDYWNoZShiYXNlVHlwZSk7CiAKQEAgLTM5Nyw5ICs0NTMsMTEgQEAg Y29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkgKi8KIAkJQ29s bGF0ZUV4cHIgKmNvbGwgPSAoQ29sbGF0ZUV4cHIgKikgbm9kZTsKIAotCQlyZXN1bHQgPSBjb2Vy Y2VfdHlwZShwc3RhdGUsIChOb2RlICopIGNvbGwtPmFyZywKLQkJCQkJCQkgaW5wdXRUeXBlSWQs IHRhcmdldFR5cGVJZCwgdGFyZ2V0VHlwZU1vZCwKLQkJCQkJCQkgY2NvbnRleHQsIGNmb3JtYXQs IGxvY2F0aW9uKTsKKwkJcmVzdWx0ID0gY29lcmNlX3R5cGVfZXh0ZW5kZWQocHN0YXRlLCAoTm9k ZSAqKSBjb2xsLT5hcmcsCisJCQkJCQkJCQkgIGlucHV0VHlwZUlkLCB0YXJnZXRUeXBlSWQsIHRh cmdldFR5cGVNb2QsCisJCQkJCQkJCQkgIGNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKKwkJ CQkJCQkJCSAgZXNjb250ZXh0KTsKKwogCQlpZiAodHlwZV9pc19jb2xsYXRhYmxlKHRhcmdldFR5 cGVJZCkpCiAJCXsKIAkJCUNvbGxhdGVFeHByICpuZXdjb2xsID0gbWFrZU5vZGUoQ29sbGF0ZUV4 cHIpOwpAQCAtNDMyLDcgKzQ5MCw4IEBAIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Tm9kZSAqbm9kZSwKIAkJCSAqLwogCQkJcmVzdWx0ID0gYnVpbGRfY29lcmNpb25fZXhwcmVzc2lv bihub2RlLCBwYXRodHlwZSwgZnVuY0lkLAogCQkJCQkJCQkJCQkgICBiYXNlVHlwZUlkLCBiYXNl VHlwZU1vZCwKLQkJCQkJCQkJCQkJICAgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uKTsKKwkJ CQkJCQkJCQkJICAgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uLAorCQkJCQkJCQkJCQkgICBl c2NvbnRleHQpOwogCiAJCQkvKgogCQkJICogSWYgZG9tYWluLCBjb2VyY2UgdG8gdGhlIGRvbWFp biB0eXBlIGFuZCByZWxhYmVsIHdpdGggZG9tYWluCkBAIC00NDIsNyArNTAxLDggQEAgY29lcmNl X3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCXJlc3VsdCA9IGNvZXJj ZV90b19kb21haW4ocmVzdWx0LCBiYXNlVHlwZUlkLCBiYXNlVHlwZU1vZCwKIAkJCQkJCQkJCQkg IHRhcmdldFR5cGVJZCwKIAkJCQkJCQkJCQkgIGNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwK LQkJCQkJCQkJCQkgIHRydWUpOworCQkJCQkJCQkJCSAgdHJ1ZSwKKwkJCQkJCQkJCQkgIGVzY29u dGV4dCk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC00NTgsNyArNTE4LDkgQEAgY29lcmNlX3R5cGUo UGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJcmVzdWx0ID0gY29lcmNlX3RvX2Rv bWFpbihub2RlLCBiYXNlVHlwZUlkLCBiYXNlVHlwZU1vZCwKIAkJCQkJCQkJCSAgdGFyZ2V0VHlw ZUlkLAogCQkJCQkJCQkJICBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24sCi0JCQkJCQkJCQkg IGZhbHNlKTsKKwkJCQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkgIGVzY29udGV4dCk7CisKIAkJ CWlmIChyZXN1bHQgPT0gbm9kZSkKIAkJCXsKIAkJCQkvKgpAQCAtNjc1LDcgKzczNyw4IEBAIGNh bl9jb2VyY2VfdHlwZShpbnQgbmFyZ3MsIGNvbnN0IE9pZCAqaW5wdXRfdHlwZWlkcywgY29uc3Qg T2lkICp0YXJnZXRfdHlwZWlkcywKIE5vZGUgKgogY29lcmNlX3RvX2RvbWFpbihOb2RlICphcmcs IE9pZCBiYXNlVHlwZUlkLCBpbnQzMiBiYXNlVHlwZU1vZCwgT2lkIHR5cGVJZCwKIAkJCQkgQ29l cmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwgaW50IGxvY2F0aW9u LAotCQkJCSBib29sIGhpZGVJbnB1dENvZXJjaW9uKQorCQkJCSBib29sIGhpZGVJbnB1dENvZXJj aW9uLAorCQkJCSBOb2RlICplc2NvbnRleHQpCiB7CiAJQ29lcmNlVG9Eb21haW4gKnJlc3VsdDsK IApAQCAtNzA1LDcgKzc2OCwxMCBAQCBjb2VyY2VfdG9fZG9tYWluKE5vZGUgKmFyZywgT2lkIGJh c2VUeXBlSWQsIGludDMyIGJhc2VUeXBlTW9kLCBPaWQgdHlwZUlkLAogCSAqLwogCWFyZyA9IGNv ZXJjZV90eXBlX3R5cG1vZChhcmcsIGJhc2VUeXBlSWQsIGJhc2VUeXBlTW9kLAogCQkJCQkJCSBj Y29udGV4dCwgQ09FUkNFX0lNUExJQ0lUX0NBU1QsIGxvY2F0aW9uLAotCQkJCQkJCSBmYWxzZSk7 CisJCQkJCQkJIGZhbHNlLAorCQkJCQkJCSBlc2NvbnRleHQpOworCWlmIChhcmcgPT0gTlVMTCkJ CQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJCWVsb2coRVJST1IsICJmYWlsZWQgdG8gY29lcmNl IHR5cGUgbW9kaWZpZXIgYXMgZXhwZWN0ZWQiKTsKIAogCS8qCiAJICogTm93IGJ1aWxkIHRoZSBk b21haW4gY29lcmNpb24gbm9kZS4gIFRoaXMgcmVwcmVzZW50cyBydW4tdGltZSBjaGVja2luZwpA QCAtNzUyLDcgKzgxOCw4IEBAIHN0YXRpYyBOb2RlICoKIGNvZXJjZV90eXBlX3R5cG1vZChOb2Rl ICpub2RlLCBPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBNb2QsCiAJCQkJICAgQ29l cmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwKIAkJCQkgICBpbnQg bG9jYXRpb24sCi0JCQkJICAgYm9vbCBoaWRlSW5wdXRDb2VyY2lvbikKKwkJCQkgICBib29sIGhp ZGVJbnB1dENvZXJjaW9uLAorCQkJCSAgIE5vZGUgKmVzY29udGV4dCkKIHsKIAlDb2VyY2lvblBh dGhUeXBlIHBhdGh0eXBlOwogCU9pZAkJCWZ1bmNJZDsKQEAgLTc3OSw3ICs4NDYsOCBAQCBjb2Vy Y2VfdHlwZV90eXBtb2QoTm9kZSAqbm9kZSwgT2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0 VHlwTW9kLAogCXsKIAkJbm9kZSA9IGJ1aWxkX2NvZXJjaW9uX2V4cHJlc3Npb24obm9kZSwgcGF0 aHR5cGUsIGZ1bmNJZCwKIAkJCQkJCQkJCQkgdGFyZ2V0VHlwZUlkLCB0YXJnZXRUeXBNb2QsCi0J CQkJCQkJCQkJIGNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbik7CisJCQkJCQkJCQkJIGNjb250 ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKKwkJCQkJCQkJCQkgZXNjb250ZXh0KTsKIAl9CiAJZWxz ZQogCXsKQEAgLTg0MCw3ICs5MDgsOCBAQCBidWlsZF9jb2VyY2lvbl9leHByZXNzaW9uKE5vZGUg Km5vZGUsCiAJCQkJCQkgIE9pZCBmdW5jSWQsCiAJCQkJCQkgIE9pZCB0YXJnZXRUeXBlSWQsIGlu dDMyIHRhcmdldFR5cE1vZCwKIAkJCQkJCSAgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2Vy Y2lvbkZvcm0gY2Zvcm1hdCwKLQkJCQkJCSAgaW50IGxvY2F0aW9uKQorCQkJCQkJICBpbnQgbG9j YXRpb24sCisJCQkJCQkgIE5vZGUgKmVzY29udGV4dCkKIHsKIAlpbnQJCQluYXJncyA9IDA7CiAK QEAgLTk1MCwxNCArMTAxOSwxNSBAQCBidWlsZF9jb2VyY2lvbl9leHByZXNzaW9uKE5vZGUgKm5v ZGUsCiAJCXRhcmdldEVsZW1lbnRUeXBlID0gZ2V0X2VsZW1lbnRfdHlwZSh0YXJnZXRUeXBlSWQp OwogCQlBc3NlcnQoT2lkSXNWYWxpZCh0YXJnZXRFbGVtZW50VHlwZSkpOwogCi0JCWVsZW1leHBy ID0gY29lcmNlX3RvX3RhcmdldF90eXBlKE5VTEwsCi0JCQkJCQkJCQkJIChOb2RlICopIGN0ZXN0 LAotCQkJCQkJCQkJCSBjdGVzdC0+dHlwZUlkLAotCQkJCQkJCQkJCSB0YXJnZXRFbGVtZW50VHlw ZSwKLQkJCQkJCQkJCQkgdGFyZ2V0VHlwTW9kLAotCQkJCQkJCQkJCSBjY29udGV4dCwKLQkJCQkJ CQkJCQkgY2Zvcm1hdCwKLQkJCQkJCQkJCQkgbG9jYXRpb24pOworCQllbGVtZXhwciA9IGNvZXJj ZV90b190YXJnZXRfdHlwZV9leHRlbmRlZChOVUxMLAorCQkJCQkJCQkJCQkJICAoTm9kZSAqKSBj dGVzdCwKKwkJCQkJCQkJCQkJCSAgY3Rlc3QtPnR5cGVJZCwKKwkJCQkJCQkJCQkJCSAgdGFyZ2V0 RWxlbWVudFR5cGUsCisJCQkJCQkJCQkJCQkgIHRhcmdldFR5cE1vZCwKKwkJCQkJCQkJCQkJCSAg Y2NvbnRleHQsCisJCQkJCQkJCQkJCQkgIGNmb3JtYXQsCisJCQkJCQkJCQkJCQkgIGxvY2F0aW9u LAorCQkJCQkJCQkJCQkJICBlc2NvbnRleHQpOwogCQlpZiAoZWxlbWV4cHIgPT0gTlVMTCkJLyog c2hvdWxkbid0IGhhcHBlbiAqLwogCQkJZWxvZyhFUlJPUiwgImZhaWxlZCB0byBjb2VyY2UgYXJy YXkgZWxlbWVudCB0eXBlIGFzIGV4cGVjdGVkIik7CiAKQEAgLTExNDAsNyArMTIxMCw4IEBAIGNv ZXJjZV9yZWNvcmRfdG9fY29tcGxleChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJ CQkJCQkJCWJhc2VUeXBlSWQsIGJhc2VUeXBlTW9kLAogCQkJCQkJCQl0YXJnZXRUeXBlSWQsCiAJ CQkJCQkJCWNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKLQkJCQkJCQkJZmFsc2UpOworCQkJ CQkJCQlmYWxzZSwKKwkJCQkJCQkJTlVMTCk7CiAJfQogCiAJcmV0dXJuIChOb2RlICopIHJvd2V4 cHI7CkBAIC0xMjk1LDcgKzEzNjYsOCBAQCBjb2VyY2VfbnVsbF90b19kb21haW4oT2lkIHR5cGlk LCBpbnQzMiB0eXBtb2QsIE9pZCBjb2xsYXRpb24sCiAJCQkJCQkJCSAgQ09FUkNJT05fSU1QTElD SVQsCiAJCQkJCQkJCSAgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCiAJCQkJCQkJCSAgLTEsCi0JCQkJ CQkJCSAgZmFsc2UpOworCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkgIE5VTEwpOwogCXJldHVy biByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHBy LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDMxMmRmZGMxODJhLi44 M2FkYzU5ODU2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xNyw2ICsxNyw3IEBACiAK ICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19h Z2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2Nhc3QuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9t YWtlZnVuY3MuaCIKQEAgLTM4LDYgKzM5LDcgQEAKICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCiAj aW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIK KyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5o IgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMveG1sLmgiCkBA IC02Miw3ICs2NCw4IEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1NdWx0aUFzc2lnblJlZihQYXJz ZVN0YXRlICpwc3RhdGUsIE11bHRpQXNzaWduUmVmICptYXJlZik7CiBzdGF0aWMgTm9kZSAqdHJh bnNmb3JtQ2FzZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDYXNlRXhwciAqYyk7CiBzdGF0aWMg Tm9kZSAqdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1Ymxp bmspOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUs IEFfQXJyYXlFeHByICphLAotCQkJCQkJCQlPaWQgYXJyYXlfdHlwZSwgT2lkIGVsZW1lbnRfdHlw ZSwgaW50MzIgdHlwbW9kKTsKKwkJCQkJCQkJT2lkIGFycmF5X3R5cGUsIE9pZCBlbGVtZW50X3R5 cGUsIGludDMyIHR5cG1vZCwKKwkJCQkJCQkJTm9kZSAqZXNjb250ZXh0KTsKIHN0YXRpYyBOb2Rl ICp0cmFuc2Zvcm1Sb3dFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUm93RXhwciAqciwgYm9vbCBh bGxvd0RlZmF1bHQpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUNvYWxlc2NlRXhwcihQYXJzZVN0 YXRlICpwc3RhdGUsIENvYWxlc2NlRXhwciAqYyk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtTWlu TWF4RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE1pbk1heEV4cHIgKm0pOwpAQCAtNzgsNiArODEs MTEgQEAgc3RhdGljIE5vZGUgKnRyYW5zZm9ybVdob2xlUm93UmVmKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkJCQkJICBpbnQgc3VibGV2ZWxzX3VwLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5v ZGUgKnRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlv biAqaW5kKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1UeXBlQ2FzdChQYXJzZVN0YXRlICpwc3Rh dGUsIFR5cGVDYXN0ICp0Yyk7CitzdGF0aWMgdm9pZCBDb2VyY2lvbkVycm9yU2FmZUNoZWNrKFBh cnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqY2FzdGV4cHIsCisJCQkJCQkJCSAgIE5vZGUgKnNvdXJj ZSwgT2lkIGlucHV0VHlwZSwgT2lkIHRhcmdldFR5cGUpOworc3RhdGljIHZvaWQgQ29lcmNpb25F cnJvclNhZmVfSW50ZXJuYWwoT2lkIGlucHV0VHlwZSwgT2lkIHRhcmdldFR5cGUsCisJCQkJCQkJ CQkgICBib29sICplcnJvcnNhZmVfY29lcmNpb24sCisJCQkJCQkJCQkgICBib29sICp1c2VyZGVm aW5lZCk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQ29sbGF0ZUNsYXVzZShQYXJzZVN0YXRlICpw c3RhdGUsIENvbGxhdGVDbGF1c2UgKmMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUpzb25PYmpl Y3RDb25zdHJ1Y3RvcihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCUpzb25PYmplY3RD b25zdHJ1Y3RvciAqY3Rvcik7CkBAIC0xNjYsNyArMTc0LDcgQEAgdHJhbnNmb3JtRXhwclJlY3Vy c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCiAJCWNhc2UgVF9BX0FycmF5RXhw cjoKIAkJCXJlc3VsdCA9IHRyYW5zZm9ybUFycmF5RXhwcihwc3RhdGUsIChBX0FycmF5RXhwciAq KSBleHByLAotCQkJCQkJCQkJCUludmFsaWRPaWQsIEludmFsaWRPaWQsIC0xKTsKKwkJCQkJCQkJ CQlJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLCAtMSwgTlVMTCk7CiAJCQlicmVhazsKIAogCQljYXNl IFRfVHlwZUNhc3Q6CkBAIC01NjYsNiArNTc0LDcgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCQljYXNlIEVYUFJfS0lORF9WQUxVRVNf U0lOR0xFOgogCQljYXNlIEVYUFJfS0lORF9DSEVDS19DT05TVFJBSU5UOgogCQljYXNlIEVYUFJf S0lORF9ET01BSU5fQ0hFQ0s6CisJCWNhc2UgRVhQUl9LSU5EX0NBU1RfREVGQVVMVDoKIAkJY2Fz ZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfSU5ERVhfRVhQ UkVTU0lPTjoKIAkJY2FzZSBFWFBSX0tJTkRfSU5ERVhfUFJFRElDQVRFOgpAQCAtMTg0MCw2ICsx ODQ5LDkgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1 YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX0RPTUFJTl9DSEVDSzoKIAkJCWVyciA9IF8oImNhbm5v dCB1c2Ugc3VicXVlcnkgaW4gY2hlY2sgY29uc3RyYWludCIpOwogCQkJYnJlYWs7CisJCWNhc2Ug RVhQUl9LSU5EX0NBU1RfREVGQVVMVDoKKwkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkg aW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lO RF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKIAkJ CWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gREVGQVVMVCBleHByZXNzaW9uIik7CkBA IC0yMDMwLDEwICsyMDQyLDE1IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRl LCBTdWJMaW5rICpzdWJsaW5rKQogICogSWYgdGhlIGNhbGxlciBzcGVjaWZpZXMgdGhlIHRhcmdl dCB0eXBlLCB0aGUgcmVzdWx0aW5nIGFycmF5IHdpbGwKICAqIGJlIG9mIGV4YWN0bHkgdGhhdCB0 eXBlLiAgT3RoZXJ3aXNlIHdlIHRyeSB0byBpbmZlciBhIGNvbW1vbiB0eXBlCiAgKiBmb3IgdGhl IGVsZW1lbnRzIHVzaW5nIHNlbGVjdF9jb21tb25fdHlwZSgpLgorICoKKyAqIGVzY29udGV4dCAo RXJyb3JTYXZlQ29udGV4dCAqKSBpcyB0eXBpY2FsbHkgTlVMTCwgZXhjZXB0IGR1cmluZyBwYXJz ZSBhbmFseXNpcyBmb3IKKyAqIENBU1QoLi4uIERFRkFVTFQgLi4uIE9OIENPTlZFUlNJT04gRVJS T1IpLiBXaGVuIHByb3ZpZGVkLAorICogRXJyb3JTYXZlQ29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQg c2hvdWxkIGJlIGluaXRpYWxpemVkIHRvIGZhbHNlLiBJdCBpcyBzZXQKKyAqIHRvIHRydWUgaWYg Y29lcmNpbmcgYXJyYXkgZWxlbWVudHMgZmFpbHMuCiAgKi8KIHN0YXRpYyBOb2RlICoKIHRyYW5z Zm9ybUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlFeHByICphLAotCQkJCSAg IE9pZCBhcnJheV90eXBlLCBPaWQgZWxlbWVudF90eXBlLCBpbnQzMiB0eXBtb2QpCisJCQkJICAg T2lkIGFycmF5X3R5cGUsIE9pZCBlbGVtZW50X3R5cGUsIGludDMyIHR5cG1vZCwgTm9kZSAqZXNj b250ZXh0KQogewogCUFycmF5RXhwciAgKm5ld2EgPSBtYWtlTm9kZShBcnJheUV4cHIpOwogCUxp c3QJICAgKm5ld2VsZW1zID0gTklMOwpAQCAtMjA2NCw5ICsyMDgxLDEwIEBAIHRyYW5zZm9ybUFy cmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlFeHByICphLAogCQkJCQkJCQkJICAo QV9BcnJheUV4cHIgKikgZSwKIAkJCQkJCQkJCSAgYXJyYXlfdHlwZSwKIAkJCQkJCQkJCSAgZWxl bWVudF90eXBlLAotCQkJCQkJCQkJICB0eXBtb2QpOworCQkJCQkJCQkJICB0eXBtb2QsCisJCQkJ CQkJCQkgIGVzY29udGV4dCk7CiAJCQkvKiB3ZSBjZXJ0YWlubHkgaGF2ZSBhbiBhcnJheSBoZXJl ICovCi0JCQlBc3NlcnQoYXJyYXlfdHlwZSA9PSBJbnZhbGlkT2lkIHx8IGFycmF5X3R5cGUgPT0g ZXhwclR5cGUobmV3ZSkpOworCQkJQXNzZXJ0KGVzY29udGV4dCB8fCBhcnJheV90eXBlID09IElu dmFsaWRPaWQgfHwgYXJyYXlfdHlwZSA9PSBleHByVHlwZShuZXdlKSk7CiAJCQluZXdhLT5tdWx0 aWRpbXMgPSB0cnVlOwogCQl9CiAJCWVsc2UKQEAgLTIxMDcsNiArMjEyNSw4IEBAIHRyYW5zZm9y bUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlFeHByICphLAogCX0KIAllbHNl CiAJeworCQlBc3NlcnQoZXNjb250ZXh0ID09IE5VTEwpOworCiAJCS8qIENhbid0IGhhbmRsZSBh biBlbXB0eSBhcnJheSB3aXRob3V0IGEgdGFyZ2V0IHR5cGUgKi8KIAkJaWYgKG5ld2VsZW1zID09 IE5JTCkKIAkJCWVyZXBvcnQoRVJST1IsCkBAIC0yMTU3LDI0ICsyMTc3LDU1IEBAIHRyYW5zZm9y bUFycmF5RXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlFeHByICphLAogCWZvcmVhY2go ZWxlbWVudCwgbmV3ZWxlbXMpCiAJewogCQlOb2RlCSAgICplID0gKE5vZGUgKikgbGZpcnN0KGVs ZW1lbnQpOwotCQlOb2RlCSAgICpuZXdlOworCQlOb2RlCSAgICpuZXdlID0gTlVMTDsKIAogCQlp ZiAoY29lcmNlX2hhcmQpCiAJCXsKLQkJCW5ld2UgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0 YXRlLCBlLAotCQkJCQkJCQkJCSBleHByVHlwZShlKSwKLQkJCQkJCQkJCQkgY29lcmNlX3R5cGUs Ci0JCQkJCQkJCQkJIHR5cG1vZCwKLQkJCQkJCQkJCQkgQ09FUkNJT05fRVhQTElDSVQsCi0JCQkJ CQkJCQkJIENPRVJDRV9FWFBMSUNJVF9DQVNULAotCQkJCQkJCQkJCSAtMSk7Ci0JCQlpZiAobmV3 ZSA9PSBOVUxMKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0NB Tk5PVF9DT0VSQ0UpLAotCQkJCQkJIGVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAlcyIs Ci0JCQkJCQkJCWZvcm1hdF90eXBlX2JlKGV4cHJUeXBlKGUpKSwKLQkJCQkJCQkJZm9ybWF0X3R5 cGVfYmUoY29lcmNlX3R5cGUpKSwKLQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBl eHByTG9jYXRpb24oZSkpKSk7CisJCQkvKgorCQkJICogQ2Fubm90IGNvZXJjZSwganVzdCBhcHBl bmQgdGhlIHRyYW5zZm9ybWVkIGVsZW1lbnQgZXhwcmVzc2lvbgorCQkJICogdG8gdGhlIGxpc3Qu CisJCQkgKi8KKwkJCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpCisJCQkJbmV3 ZSA9IGU7CisJCQllbHNlCisJCQl7CisJCQkJTm9kZQkgICAqZWNvcHkgPSBOVUxMOworCisJCQkJ aWYgKGVzY29udGV4dCkKKwkJCQkJZWNvcHkgPSBjb3B5T2JqZWN0KGUpOworCisJCQkJbmV3ZSA9 IGNvZXJjZV90b190YXJnZXRfdHlwZV9leHRlbmRlZChwc3RhdGUsIGUsCisJCQkJCQkJCQkJCQkJ ICBleHByVHlwZShlKSwKKwkJCQkJCQkJCQkJCQkgIGNvZXJjZV90eXBlLAorCQkJCQkJCQkJCQkJ CSAgdHlwbW9kLAorCQkJCQkJCQkJCQkJCSAgQ09FUkNJT05fRVhQTElDSVQsCisJCQkJCQkJCQkJ CQkJICBDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKKwkJCQkJCQkJCQkJCQkgIC0xLAorCQkJCQkJCQkJ CQkJCSAgZXNjb250ZXh0KTsKKwkJCQlpZiAobmV3ZSA9PSBOVUxMKQorCQkJCXsKKwkJCQkJLyoK KwkJCQkJICogQ2Fubm90IGNvZXJjZS4gUmFpc2UgYW4gZXJyb3Igb3IgYXBwZW5kIHRoZSB0cmFu c2Zvcm1lZAorCQkJCQkgKiBlbGVtZW50IHRvIHRoZSBsaXN0LiBBbHNvLCBzZXQKKwkJCQkJICog ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCB0byB0cnVlIHNvIHRoZSBjYWxsZXIgY2FuCisJCQkJ CSAqIG5vdGljZSB0aGF0IGFycmF5IGNvZXJjaW9uIGZhaWxlZC4KKwkJCQkJICovCisJCQkJCWlm ICghZXNjb250ZXh0KQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9DQU5OT1RfQ09FUkNFKSwKKwkJCQkJCQkJIGVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAl cyB0byAlcyIsCisJCQkJCQkJCQkJZm9ybWF0X3R5cGVfYmUoZXhwclR5cGUoZSkpLAorCQkJCQkJ CQkJCWZvcm1hdF90eXBlX2JlKGNvZXJjZV90eXBlKSksCisJCQkJCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZSkpKSk7CisJCQkJCWVsc2UKKwkJCQkJeworCQkJ CQkJRXJyb3JTYXZlQ29udGV4dCAqY29udGV4dCA9IGNhc3ROb2RlKEVycm9yU2F2ZUNvbnRleHQs IGVzY29udGV4dCk7CisKKwkJCQkJCW5ld2UgPSBlY29weTsKKwkJCQkJCWNvbnRleHQtPmVycm9y X29jY3VycmVkID0gdHJ1ZTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KIAkJfQogCQllbHNlCiAJCQlu ZXdlID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwgZSwKQEAgLTI3MjMsMTcgKzI3NzQs NjYgQEAgdHJhbnNmb3JtV2hvbGVSb3dSZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5hbWVz cGFjZUl0ZW0gKm5zaXRlbSwKIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybVR5cGVDYXN0KFBhcnNl U3RhdGUgKnBzdGF0ZSwgVHlwZUNhc3QgKnRjKQogewotCU5vZGUJICAgKnJlc3VsdDsKKwlTYWZl VHlwZUNhc3RFeHByICpzdGM7CisJTm9kZQkgICAqY2FzdGV4cHIgPSBOVUxMOworCU5vZGUJICAg KmRlZmV4cHIgPSBOVUxMOwogCU5vZGUJICAgKmFyZyA9IHRjLT5hcmc7CisJTm9kZQkgICAqc291 cmNlOwogCU5vZGUJICAgKmV4cHI7CiAJT2lkCQkJaW5wdXRUeXBlOwogCU9pZAkJCXRhcmdldFR5 cGU7CisJT2lkCQkJdGFyZ2V0VHlwZWNvbGw7CiAJaW50MzIJCXRhcmdldFR5cG1vZDsKIAlpbnQJ CQlsb2NhdGlvbjsKKwlFcnJvclNhdmVDb250ZXh0ICplc2NvbnRleHQgPSBtYWtlTm9kZShFcnJv clNhdmVDb250ZXh0KTsKKworCWVzY29udGV4dC0+dHlwZSA9IFRfRXJyb3JTYXZlQ29udGV4dDsK Kwllc2NvbnRleHQtPmVycm9yX29jY3VycmVkID0gZmFsc2U7CisJZXNjb250ZXh0LT5kZXRhaWxz X3dhbnRlZCA9IGZhbHNlOwogCiAJLyogTG9vayB1cCB0aGUgdHlwZSBuYW1lIGZpcnN0ICovCiAJ dHlwZW5hbWVUeXBlSWRBbmRNb2QocHN0YXRlLCB0Yy0+dHlwZU5hbWUsICZ0YXJnZXRUeXBlLCAm dGFyZ2V0VHlwbW9kKTsKIAorCXRhcmdldFR5cGVjb2xsID0gZ2V0X3R5cGNvbGxhdGlvbih0YXJn ZXRUeXBlKTsKKworCS8qIGxvb2tpbmcgYXQgREVGQVVMVCBleHByZXNzaW9uICovCisJaWYgKHRj LT5kZWZleHByKQorCXsKKwkJT2lkCQkJZGVmQ29sbDsKKworCQlkZWZleHByID0gdHJhbnNmb3Jt RXhwcihwc3RhdGUsIHRjLT5kZWZleHByLCBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUKTsKKworCQlk ZWZleHByID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgZGVmZXhwciwgZXhwclR5cGUo ZGVmZXhwciksCisJCQkJCQkJCQkJdGFyZ2V0VHlwZSwgdGFyZ2V0VHlwbW9kLAorCQkJCQkJCQkJ CUNPRVJDSU9OX0VYUExJQ0lULAorCQkJCQkJCQkJCUNPRVJDRV9FWFBMSUNJVF9DQVNULAorCQkJ CQkJCQkJCWV4cHJMb2NhdGlvbihkZWZleHByKSk7CisJCWlmIChkZWZleHByID09IE5VTEwpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfQ0FOTk9UX0NPRVJDRSksCisJ CQkJCWVycm1zZygiY2Fubm90IGNvZXJjZSAlcyBleHByZXNzaW9uIHRvIHR5cGUgJXMiLAorCQkJ CQkJICAgIkNBU1QgREVGQVVMVCIsCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0YXJnZXRUeXBl KSksCisJCQkJCXBhcnNlcl9jb2VyY2lvbl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlv bih0Yy0+ZGVmZXhwciksIGRlZmV4cHIpKTsKKworCQlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKHBz dGF0ZSwgZGVmZXhwcik7CisKKwkJLyoKKwkJICogVGhlIGNvbGxhdGlvbiBvZiBERUZBVUxUIGV4 cHJlc3Npb24gbXVzdCBtYXRjaCB0aGUgY29sbGF0aW9uIG9mIHRoZQorCQkgKiB0YXJnZXQgdHlw ZS4KKwkJICovCisJCWRlZkNvbGwgPSBleHByQ29sbGF0aW9uKGRlZmV4cHIpOworCisJCWlmICh0 YXJnZXRUeXBlY29sbCAhPSBkZWZDb2xsKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29k ZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJZXJybXNnKCJjb2xsYXRpb24gb2Yg Q0FTVCBERUZBVUxUIGV4cHJlc3Npb24gY29uZmxpY3RzIHdpdGggdGFyZ2V0IHR5cGUgY29sbGF0 aW9uIiksCisJCQkJCWVycmRldGFpbCgiXCIlc1wiIHZlcnN1cyBcIiVzXCIiLAorCQkJCQkJCSAg Z2V0X2NvbGxhdGlvbl9uYW1lKGRlZkNvbGwpLAorCQkJCQkJCSAgZ2V0X2NvbGxhdGlvbl9uYW1l KHRhcmdldFR5cGVjb2xsKSksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJM b2NhdGlvbihkZWZleHByKSkpOworCX0KKwogCS8qCiAJICogSWYgdGhlIHN1YmplY3Qgb2YgdGhl IHR5cGVjYXN0IGlzIGFuIEFSUkFZW10gY29uc3RydWN0IGFuZCB0aGUgdGFyZ2V0CiAJICogdHlw ZSBpcyBhbiBhcnJheSB0eXBlLCB3ZSBpbnZva2UgdHJhbnNmb3JtQXJyYXlFeHByKCkgZGlyZWN0 bHkgc28gdGhhdApAQCAtMjc2Miw3ICsyODYyLDggQEAgdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VT dGF0ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpCiAJCQkJCQkJCQkgIChBX0FycmF5RXhwciAqKSBh cmcsCiAJCQkJCQkJCQkgIHRhcmdldEJhc2VUeXBlLAogCQkJCQkJCQkJICBlbGVtZW50VHlwZSwK LQkJCQkJCQkJCSAgdGFyZ2V0QmFzZVR5cG1vZCk7CisJCQkJCQkJCQkgIHRhcmdldEJhc2VUeXBt b2QsCisJCQkJCQkJCQkgIGRlZmV4cHIgPyAoTm9kZSAqKSBlc2NvbnRleHQgOiBOVUxMKTsKIAkJ fQogCQllbHNlCiAJCQlleHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBhcmcpOwpA QCAtMjc4MywyMCArMjg4NCwyMDIgQEAgdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBUeXBlQ2FzdCAqdGMpCiAJaWYgKGxvY2F0aW9uIDwgMCkKIAkJbG9jYXRpb24gPSB0Yy0+ dHlwZU5hbWUtPmxvY2F0aW9uOwogCi0JcmVzdWx0ID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBz dGF0ZSwgZXhwciwgaW5wdXRUeXBlLAotCQkJCQkJCQkgICB0YXJnZXRUeXBlLCB0YXJnZXRUeXBt b2QsCi0JCQkJCQkJCSAgIENPRVJDSU9OX0VYUExJQ0lULAotCQkJCQkJCQkgICBDT0VSQ0VfRVhQ TElDSVRfQ0FTVCwKLQkJCQkJCQkJICAgbG9jYXRpb24pOwotCWlmIChyZXN1bHQgPT0gTlVMTCkK KwkvKgorCSAqIGNvZXJjZV90b190YXJnZXRfdHlwZV9leHRlbmRlZCBpcyB1bmxpa2VseSB0byBt b2RpZnkgdGhlIHNvdXJjZQorCSAqIGV4cHJlc3Npb24sIGJ1dCB3ZSBzdGlsbCBjcmVhdGUgYSBj b3B5IGJlZm9yZWhhbmQuIFRoaXMgYWxsb3dzCisJICogU2FmZVR5cGVDYXN0RXhwciB0byByZWNl aXZlIHRoZSB0cmFuc2Zvcm1lZCBzb3VyY2UgZXhwcmVzc2lvbgorCSAqIHVuY2hhbmdlZC4KKwkg Ki8KKwlzb3VyY2UgPSBkZWZleHByID8gY29weU9iamVjdChleHByKSA6IGV4cHI7CisKKwlpZiAo IVNPRlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0KSkKKwl7CisJCWNhc3RleHByID0gY29lcmNl X3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKHBzdGF0ZSwgZXhwciwgaW5wdXRUeXBlLAorCQkJCQkJ CQkJCQkJICB0YXJnZXRUeXBlLCB0YXJnZXRUeXBtb2QsCisJCQkJCQkJCQkJCQkgIENPRVJDSU9O X0VYUExJQ0lULAorCQkJCQkJCQkJCQkJICBDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKKwkJCQkJCQkJ CQkJCSAgbG9jYXRpb24sCisJCQkJCQkJCQkJCQkgIGRlZmV4cHIgPyAoTm9kZSAqKSBlc2NvbnRl eHQgOiBOVUxMKTsKKworCQkvKgorCQkgKiBObyBERUZBVUxUIGV4cHJlc3Npb24sIGV4aXQgbm93 IG9yIGVycm9yIG91dCBpbiBjYXNlIG9mIGNvZXJjaW9uCisJCSAqIGZhaWx1cmUKKwkJICovCisJ CWlmICghZGVmZXhwcikKKwkJeworCQkJaWYgKGNhc3RleHByKQorCQkJCXJldHVybiBjYXN0ZXhw cjsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0NBTk5PVF9DT0VS Q0UpLAorCQkJCQllcnJtc2coImNhbm5vdCBjYXN0IHR5cGUgJXMgdG8gJXMiLAorCQkJCQkJICAg Zm9ybWF0X3R5cGVfYmUoaW5wdXRUeXBlKSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHRhcmdl dFR5cGUpKSwKKwkJCQkJcGFyc2VyX2NvZXJjaW9uX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRp b24sIGV4cHIpKTsKKwkJfQorCX0KKworCS8qIEZ1cnRoZXIgY2hlY2sgZm9yIENBU1QoLi4uIERF RkFVTFQgLi4uIE9OIENPTlZFUlNJT04gRVJST1IpICovCisJQ29lcmNpb25FcnJvclNhZmVDaGVj ayhwc3RhdGUsIGNhc3RleHByLCBzb3VyY2UsIGlucHV0VHlwZSwKKwkJCQkJCSAgIHRhcmdldFR5 cGUpOworCisJc3RjID0gbWFrZU5vZGUoU2FmZVR5cGVDYXN0RXhwcik7CisJc3RjLT5zb3VyY2Ug PSAoRXhwciAqKSBzb3VyY2U7CisJc3RjLT5jYXN0ZXhwciA9IChFeHByICopIGNhc3RleHByOwor CXN0Yy0+ZGVmZXhwciA9IChFeHByICopIGRlZmV4cHI7CisJc3RjLT5yZXN1bHR0eXBlID0gdGFy Z2V0VHlwZTsKKwlzdGMtPnJlc3VsdHR5cG1vZCA9IHRhcmdldFR5cG1vZDsKKwlzdGMtPnJlc3Vs dGNvbGxpZCA9IHRhcmdldFR5cGVjb2xsOworCXN0Yy0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKwor CXJldHVybiAoTm9kZSAqKSBzdGM7Cit9CisKKy8qCisgKiBDaGVjayB0eXBlIGNvZXJjaW9uIGlz IGVycm9yIHNhZmUgb3Igbm90LiAgSWYgbm90IHRoZW4gcmVwb3J0IGVycm9yCisgKi8KK3N0YXRp YyB2b2lkCitDb2VyY2lvbkVycm9yU2FmZUNoZWNrKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq Y2FzdGV4cHIsIE5vZGUgKnNvdXJjZSwKKwkJCQkJICAgT2lkIGlucHV0VHlwZSwgT2lkIHRhcmdl dFR5cGUpCit7CisJYm9vbAkJZXJyb3JzYWZlX2NvZXJjaW9uID0gdHJ1ZTsKKwlib29sCQl1c2Vy ZGVmaW5lZCA9IGZhbHNlOworCisJLyoKKwkgKiBCaW5hcnkgY29lcmNpb24gY2FzdCBpcyBlcnJv ci1zYWZlLCBDb2VyY2VWaWFJTyBjYW4gYWxzbyBiZSBldmFsdWF0ZWQKKwkgKiBpbiBhbiBlcnJv ci1zYWZlIG1hbm5lci4gU2tpcCB0aGVzZSBjYXNlcy4KKwkgKi8KKwlpZiAoY2FzdGV4cHIgPT0g TlVMTCB8fAorCQlJc0JpbmFyeUNvZXJjaWJsZShpbnB1dFR5cGUsIHRhcmdldFR5cGUpIHx8CisJ CUlzQShjYXN0ZXhwciwgQ29lcmNlVmlhSU8pKQorCQlyZXR1cm47CisKKwlDb2VyY2lvbkVycm9y U2FmZV9JbnRlcm5hbChpbnB1dFR5cGUsIHRhcmdldFR5cGUsCisJCQkJCQkJICAgJmVycm9yc2Fm ZV9jb2VyY2lvbiwKKwkJCQkJCQkgICAmdXNlcmRlZmluZWQpOworCisJaWYgKCFlcnJvcnNhZmVf Y29lcmNpb24pCiAJCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9DQU5OT1Rf Q09FUkNFKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgY2FzdCB0eXBlICVzIHRvICVzIiwKLQkJCQkJ CWZvcm1hdF90eXBlX2JlKGlucHV0VHlwZSksCi0JCQkJCQlmb3JtYXRfdHlwZV9iZSh0YXJnZXRU eXBlKSksCi0JCQkJIHBhcnNlcl9jb2VyY2lvbl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9u LCBleHByKSkpOworCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAor CQkJCWVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAlcyB3aGVuICVzIGV4cHJlc3Npb24g aXMgc3BlY2lmaWVkIGluICVzIiwKKwkJCQkJICAgZm9ybWF0X3R5cGVfYmUoaW5wdXRUeXBlKSwK KwkJCQkJICAgZm9ybWF0X3R5cGVfYmUodGFyZ2V0VHlwZSksCisJCQkJCSAgICJERUZBVUxUIiwK KwkJCQkJICAgIkNBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IiKSwKKwkJCQl1c2VyZGVmaW5l ZAorCQkJCT8gZXJyZGV0YWlsKCJTYWZlIHR5cGUgY2FzdCBmb3IgdXNlci1kZWZpbmVkIHR5cGVz IGFyZSBub3QgeWV0IHN1cHBvcnRlZC4iKQorCQkJCTogZXJyZGV0YWlsKCJFeHBsaWNpdCBjYXN0 IGlzIGRlZmluZWQgYnV0IGRlZmluaXRpb24gaXMgbm90IGVycm9yIHNhZmUuIiksCisJCQkJcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHNvdXJjZSkpKTsKK30KIAotCXJl dHVybiByZXN1bHQ7CitzdGF0aWMgdm9pZAorQ29lcmNpb25FcnJvclNhZmVfSW50ZXJuYWwoT2lk IGlucHV0VHlwZSwgT2lkIHRhcmdldFR5cGUsCisJCQkJCQkgICBib29sICplcnJvcnNhZmVfY29l cmNpb24sIGJvb2wgKnVzZXJkZWZpbmVkKQoreworCUhlYXBUdXBsZQl0dXBsZTsKKworCWNoYXIJ CWlucHV0X3R5cHR5cGUgPSBnZXRfdHlwdHlwZShpbnB1dFR5cGUpOworCWNoYXIJCXRhcmdldF90 eXB0eXBlID0gZ2V0X3R5cHR5cGUodGFyZ2V0VHlwZSk7CisKKwkvKiBzaW5jZSB0aGlzIGZ1bmN0 aW9uIHJlY3Vyc2VzLCBpdCBjb3VsZCBiZSBkcml2ZW4gdG8gc3RhY2sgb3ZlcmZsb3cgKi8KKwlj aGVja19zdGFja19kZXB0aCgpOworCisJQXNzZXJ0KGVycm9yc2FmZV9jb2VyY2lvbiAhPSBOVUxM KTsKKwlBc3NlcnQodXNlcmRlZmluZWQgIT0gTlVMTCk7CisKKwlpZiAoISgqZXJyb3JzYWZlX2Nv ZXJjaW9uKSkKKwkJcmV0dXJuOworCisJaWYgKGlucHV0X3R5cHR5cGUgPT0gVFlQVFlQRV9ET01B SU4gJiYKKwkJdGFyZ2V0X3R5cHR5cGUgPT0gVFlQVFlQRV9ET01BSU4pCisJeworCQlDb2VyY2lv bkVycm9yU2FmZV9JbnRlcm5hbChnZXRCYXNlVHlwZShpbnB1dFR5cGUpLAorCQkJCQkJCQkgICBn ZXRCYXNlVHlwZSh0YXJnZXRUeXBlKSwKKwkJCQkJCQkJICAgZXJyb3JzYWZlX2NvZXJjaW9uLAor CQkJCQkJCQkgICB1c2VyZGVmaW5lZCk7CisJCXJldHVybjsKKwl9CisJZWxzZSBpZiAoaW5wdXRf dHlwdHlwZSA9PSBUWVBUWVBFX0RPTUFJTikKKwl7CisJCUNvZXJjaW9uRXJyb3JTYWZlX0ludGVy bmFsKGdldEJhc2VUeXBlKGlucHV0VHlwZSksCisJCQkJCQkJCSAgIHRhcmdldFR5cGUsCisJCQkJ CQkJCSAgIGVycm9yc2FmZV9jb2VyY2lvbiwKKwkJCQkJCQkJICAgdXNlcmRlZmluZWQpOworCQly ZXR1cm47CisJfQorCWVsc2UgaWYgKHRhcmdldF90eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOKQor CXsKKwkJQ29lcmNpb25FcnJvclNhZmVfSW50ZXJuYWwoaW5wdXRUeXBlLAorCQkJCQkJCQkgICBn ZXRCYXNlVHlwZSh0YXJnZXRUeXBlKSwKKwkJCQkJCQkJICAgZXJyb3JzYWZlX2NvZXJjaW9uLAor CQkJCQkJCQkgICB1c2VyZGVmaW5lZCk7CisJCXJldHVybjsKKwl9CisJZWxzZSBpZiAoKGlucHV0 X3R5cHR5cGUgIT0gVFlQVFlQRV9CQVNFICYmIGlucHV0VHlwZSA+IEZpcnN0VW5waW5uZWRPYmpl Y3RJZCkKKwkJCSB8fCAodGFyZ2V0X3R5cHR5cGUgIT0gVFlQVFlQRV9CQVNFICYmIHRhcmdldFR5 cGUgPiBGaXJzdFVucGlubmVkT2JqZWN0SWQpKQorCXsKKwkJLyoKKwkJICogQ29tcG9zaXRlLXRv LWNvbXBvc2l0ZSBjYXN0aW5nIGlzIG5vdCBpbXBsZW1lbnRlZCwgc28gZXJyb3Itc2FmZQorCQkg KiBjYXN0IGJldHdlZW4gdGhlbSBzaG91bGQgbm90IGJlIHBvc3NpYmxlOyB3ZSBmb3JiaWQgaXQg aGVyZS4KKwkJICoKKwkJICogT3VyIHR5cGUgc3lzdGVtIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkg Y2FzdCBhIHVzZXItZGVmaW5lZCByYW5nZQorCQkgKiB0eXBlIHRvIGFuIGJ1aWx0LWluIHJhbmdl IHR5cGUsIGV2ZW4gaWYgdGhlaXIgYmFzZSBlbGVtZW50IHR5cGVzCisJCSAqIGFyZSB0aGUgc2Ft ZS4gVGhlcmUgbWF5IGJlIGNvbXBsZXggZWRnZSBjYXNlcyB0byBjb25zaWRlciwgc2FmZXIgdG8K KwkJICogc2ltcGx5IGRpc2FsbG93IGVycm9yLXNhZmUgY2FzdGluZyBmb3IgdGhlbSBub3cuCisJ CSAqLworCQkqZXJyb3JzYWZlX2NvZXJjaW9uID0gZmFsc2U7CisKKwkJcmV0dXJuOworCX0KKwll bHNlCisJeworCQlPaWQJCQlpbnB1dF90eXBlbGVtID0gZ2V0X2VsZW1lbnRfdHlwZShpbnB1dFR5 cGUpOworCQlPaWQJCQl0YXJnZXRfdHlwZWxlbSA9IGdldF9lbGVtZW50X3R5cGUodGFyZ2V0VHlw ZSk7CisKKwkJaWYgKE9pZElzVmFsaWQoaW5wdXRfdHlwZWxlbSkgJiYgT2lkSXNWYWxpZCh0YXJn ZXRfdHlwZWxlbSkpCisJCXsKKwkJCS8qIHJlY3Vyc2UgaW50byBhcnJheSBlbGVtZW50IHR5cGUg Ki8KKwkJCUNvZXJjaW9uRXJyb3JTYWZlX0ludGVybmFsKGlucHV0X3R5cGVsZW0sCisJCQkJCQkJ CQkgICB0YXJnZXRfdHlwZWxlbSwKKwkJCQkJCQkJCSAgIGVycm9yc2FmZV9jb2VyY2lvbiwKKwkJ CQkJCQkJCSAgIHVzZXJkZWZpbmVkKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKworCS8qCisJICog Q2FzdHMgc291cmNlIGRhdGEgdHlwZSBhcyBNT05FWSBhcmUgbm90IGVycm9yIHNhZmUuCisJICov CisJaWYgKGlucHV0VHlwZSA9PSBNT05FWU9JRCkKKwl7CisJCSplcnJvcnNhZmVfY29lcmNpb24g PSBmYWxzZTsKKwkJcmV0dXJuOworCX0KKworCWlmIChpbnB1dFR5cGUgIT0gdGFyZ2V0VHlwZSkK Kwl7CisJCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKENBU1RTT1VSQ0VUQVJHRVQsCisJCQkJCQkJ CU9iamVjdElkR2V0RGF0dW0oaW5wdXRUeXBlKSwKKwkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bSh0 YXJnZXRUeXBlKSk7CisKKwkJLyoKKwkJICogQSBwZ19jYXN0IGVudHJ5IG1pZ2h0IG5vdCBleGlz dCBmb3IgdGhpcyBzcGVjaWZpYyBjYXN0OyBmb3IKKwkJICogZXhhbXBsZSwgd2hlbiB1c2luZyBD b2VyY2VWaWFJTy4KKwkJICovCisJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJewor CQkJRm9ybV9wZ19jYXN0IGNhc3RGb3JtID0gKEZvcm1fcGdfY2FzdCkgR0VUU1RSVUNUKHR1cGxl KTsKKworCQkJaWYgKGNhc3RGb3JtLT5jYXN0ZnVuYyA+IEZpcnN0VW5waW5uZWRPYmplY3RJZCkK KwkJCXsKKwkJCQkqZXJyb3JzYWZlX2NvZXJjaW9uID0gZmFsc2U7CisJCQkJKnVzZXJkZWZpbmVk ID0gdHJ1ZTsKKwkJCX0KKwkJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJCX0KKwkJZWxzZSBp ZiAoaW5wdXRUeXBlID4gRmlyc3RVbnBpbm5lZE9iamVjdElkIHx8IHRhcmdldFR5cGUgPiBGaXJz dFVucGlubmVkT2JqZWN0SWQpCisJCQkqZXJyb3JzYWZlX2NvZXJjaW9uID0gZmFsc2U7CisJfQog fQogCiAvKgpAQCAtMzIxMiw2ICszNDk1LDggQEAgUGFyc2VFeHByS2luZE5hbWUoUGFyc2VFeHBy S2luZCBleHByS2luZCkKIAkJY2FzZSBFWFBSX0tJTkRfQ0hFQ0tfQ09OU1RSQUlOVDoKIAkJY2Fz ZSBFWFBSX0tJTkRfRE9NQUlOX0NIRUNLOgogCQkJcmV0dXJuICJDSEVDSyI7CisJCWNhc2UgRVhQ Ul9LSU5EX0NBU1RfREVGQVVMVDoKKwkJCXJldHVybiAiQ0FTVCBERUZBVUxUIjsKIAkJY2FzZSBF WFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFV TFQ6CiAJCQlyZXR1cm4gIkRFRkFVTFQiOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXggOGRi ZDQxYTM1NDguLjM1OWE2OTRmZTA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTI3NDMs NiArMjc0Myw5IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNlbWVudChQYXJzZVN0YXRlICpwc3RhdGUs IE5vZGUgKmxhc3Rfc3JmLCBpbnQgbG9jYXRpb24pCiAJCWNhc2UgRVhQUl9LSU5EX0RPTUFJTl9D SEVDSzoKIAkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dl ZCBpbiBjaGVjayBjb25zdHJhaW50cyIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX0NB U1RfREVGQVVMVDoKKwkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3Qg YWxsb3dlZCBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKKwkJCWJyZWFrOwogCQljYXNl IEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVG QVVMVDoKIAkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dl ZCBpbiBERUZBVUxUIGV4cHJlc3Npb25zIik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdGFyZ2V0LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKaW5k ZXggNTQxZmVmNWYxODMuLjdjZDE5NzBiYzk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5j CkBAIC04NDUsNyArODQ1LDggQEAgdHJhbnNmb3JtQXNzaWdubWVudEluZGlyZWN0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQlDT0VSQ0lPTl9JTVBMSUNJVCwKIAkJCQkJCQkJCQlD T0VSQ0VfSU1QTElDSVRfQ0FTVCwKIAkJCQkJCQkJCQlsb2NhdGlvbiwKLQkJCQkJCQkJCQlmYWxz ZSk7CisJCQkJCQkJCQkJZmFsc2UsCisJCQkJCQkJCQkJTlVMTCk7CiAKIAkJCXJldHVybiAoTm9k ZSAqKSBmc3RvcmU7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90 eXBlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jCmluZGV4IGJiN2VjY2RlOWZk Li4yODNkZmMyZWU5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUu YworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jCkBAIC02NjAsNiArNjYwLDI0 IEBAIHN0cmluZ1R5cGVEYXR1bShUeXBlIHRwLCBjaGFyICpzdHJpbmcsIGludDMyIGF0dHR5cG1v ZCkKIAlyZXR1cm4gT2lkSW5wdXRGdW5jdGlvbkNhbGwodHlwaW5wdXQsIHN0cmluZywgdHlwaW9w YXJhbSwgYXR0dHlwbW9kKTsKIH0KIAorLyoKKyAqIEVycm9yLXNhZmUgdmVyc2lvbiBvZiBzdHJp bmdUeXBlRGF0dW0uCisgKgorICogUmV0dXJucyB0cnVlIGlmICJzdHJpbmciIGlzIGEgdmFsaWQg cmVwcmVzZW50YXRpb24gb2YgdHlwZSAidHAiLgorICogT24gc3VjY2VzcywgdGhlIGludGVybmFs IERhdHVtIHJlcHJlc2VudGF0aW9uIGlzIHdyaXR0ZW4gdG8gInJlc3VsdCIuCisgKi8KK2Jvb2wK K3N0cmluZ1R5cGVEYXR1bVNhZmUoVHlwZSB0cCwgY2hhciAqc3RyaW5nLCBpbnQzMiBhdHR0eXBt b2QsCisJCQkJCU5vZGUgKmVzY29udGV4dCwgRGF0dW0gKnJlc3VsdCkKK3sKKwlGb3JtX3BnX3R5 cGUgdHlwZm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0cCk7CisJT2lkCQkJdHlwaW5w dXQgPSB0eXBmb3JtLT50eXBpbnB1dDsKKwlPaWQJCQl0eXBpb3BhcmFtID0gZ2V0VHlwZUlPUGFy YW0odHApOworCisJcmV0dXJuIE9pZElucHV0RnVuY3Rpb25DYWxsU2FmZSh0eXBpbnB1dCwgc3Ry aW5nLCB0eXBpb3BhcmFtLCBhdHR0eXBtb2QsCisJCQkJCQkJCQllc2NvbnRleHQsIHJlc3VsdCk7 Cit9CisKIC8qCiAgKiBHaXZlbiBhIHR5cGVpZCwgcmV0dXJuIHRoZSB0eXBlJ3MgdHlwcmVsaWQg KGFzc29jaWF0ZWQgcmVsYXRpb24pLCBpZiBhbnkuCiAgKiBSZXR1cm5zIEludmFsaWRPaWQgaWYg dHlwZSBpcyBub3QgYSBjb21wb3NpdGUgdHlwZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5j CmluZGV4IDlhOTE4ZTE0YWE3Li4xMDMxOGZjNDk5MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRp bGNtZC5jCkBAIC00OTUxLDcgKzQ5NTEsNyBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25Cb3VuZFZhbHVl KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqdmFsLAogCQlhc3NpZ25fZXhwcl9jb2xsYXRpb25z KHBzdGF0ZSwgdmFsdWUpOwogCQl2YWx1ZSA9IChOb2RlICopIGV4cHJlc3Npb25fcGxhbm5lcigo RXhwciAqKSB2YWx1ZSk7CiAJCXZhbHVlID0gKE5vZGUgKikgZXZhbHVhdGVfZXhwcigoRXhwciAq KSB2YWx1ZSwgY29sVHlwZSwgY29sVHlwbW9kLAotCQkJCQkJCQkJICAgcGFydENvbGxhdGlvbik7 CisJCQkJCQkJCQkgICBwYXJ0Q29sbGF0aW9uLCBOVUxMKTsKIAkJaWYgKCFJc0EodmFsdWUsIENv bnN0KSkKIAkJCWVsb2coRVJST1IsICJjb3VsZCBub3QgZXZhbHVhdGUgcGFydGl0aW9uIGJvdW5k IGV4cHJlc3Npb24iKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJy YXlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYwppbmRleCA3MzRl NWZlYTQ1ZS4uZGJmZTVmNGE3OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9h cnJheWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYwpAQCAt MzI5NCw2ICszMjk0LDE1IEBAIGFycmF5X21hcChEYXR1bSBhcnJheWQsCiAJCS8qIEFwcGx5IHRo ZSBnaXZlbiBleHByZXNzaW9uIHRvIHNvdXJjZSBlbGVtZW50ICovCiAJCXZhbHVlc1tpXSA9IEV4 ZWNFdmFsRXhwcihleHByc3RhdGUsIGVjb250ZXh0LCAmbnVsbHNbaV0pOwogCisJCS8qIEV4aXQg ZWFybHkgaWYgZXZhbHVhdGlvbiBmYWlsZWQgKi8KKwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQo ZXhwcnN0YXRlLT5lc2NvbnRleHQpKQorCQl7CisJCQlwZnJlZSh2YWx1ZXMpOworCQkJcGZyZWUo bnVsbHMpOworCisJCQlyZXR1cm4gKERhdHVtKSAwOworCQl9CisKIAkJaWYgKG51bGxzW2ldKQog CQkJaGFzbnVsbHMgPSB0cnVlOwogCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5k ZXggN2JjMTI1ODllNDAuLmY2ODk3N2ZjMjllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j CkBAIC0xMTEwNiw2ICsxMTEwNiwzMSBAQCBnZXRfcnVsZV9leHByKE5vZGUgKm5vZGUsIGRlcGFy c2VfY29udGV4dCAqY29udGV4dCwKIAkJCX0KIAkJCWJyZWFrOwogCisJCWNhc2UgVF9TYWZlVHlw ZUNhc3RFeHByOgorCQkJeworCQkJCVNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIgPSBjYXN0Tm9k ZShTYWZlVHlwZUNhc3RFeHByLCBub2RlKTsKKworCQkJCS8qCisJCQkJICogV2UgY2Fubm90IGRl cGFyc2UgY2FzdGV4cHIgZGlyZWN0bHksIHNpbmNlCisJCQkJICogdHJhbnNmb3JtVHlwZUNhc3Qg bWF5IGhhdmUgYWxyZWFkeSBjb25zdGFudC1mb2xkZWQgaXQgaW50bworCQkJCSAqIGEgQ29uc3Rh bnQuIEluc3RlYWQsIHdlIGNhbiB1c2UgInNvdXJjZSIgYW5kICJkZWZleHByIiB0bworCQkJCSAq IHJlY29uc3RydWN0IHRoZSBDQVNUIERFRkFVTFQgY2xhdXNlLgorCQkJCSAqLworCQkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiQ0FTVCgiKTsKKwkJCQlnZXRfcnVsZV9leHByKChOb2Rl ICopIHN0Y2V4cHItPnNvdXJjZSwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCQkJCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAiIEFTICVzICIsCisJCQkJCQkJCSBmb3JtYXRfdHlwZV93aXRoX3R5 cGVtb2Qoc3RjZXhwci0+cmVzdWx0dHlwZSwKKwkJCQkJCQkJCQkJCQkJICBzdGNleHByLT5yZXN1 bHR0eXBtb2QpKTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiREVGQVVMVCAi KTsKKworCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgc3RjZXhwci0+ZGVmZXhwciwgY29udGV4 dCwgc2hvd2ltcGxpY2l0KTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIE9O IENPTlZFUlNJT04gRVJST1IpIik7CisJCQl9CisJCQlicmVhazsKKwogCQljYXNlIFRfSnNvbkV4 cHI6CiAJCQl7CiAJCQkJSnNvbkV4cHIgICAqamV4cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvZm1nci9mbWdyLmMKaW5kZXggYmZlY2ViN2E5MmYuLjkwNjg2YWUyMGY5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9m bWdyL2ZtZ3IuYwpAQCAtMTc2MCw2ICsxNzYwLDE5IEBAIE9pZElucHV0RnVuY3Rpb25DYWxsKE9p ZCBmdW5jdGlvbklkLCBjaGFyICpzdHIsIE9pZCB0eXBpb3BhcmFtLCBpbnQzMiB0eXBtb2QpCiAJ cmV0dXJuIElucHV0RnVuY3Rpb25DYWxsKCZmbGluZm8sIHN0ciwgdHlwaW9wYXJhbSwgdHlwbW9k KTsKIH0KIAorLyogZXJyb3Itc2FmZSB2ZXJzaW9uIG9mIE9pZElucHV0RnVuY3Rpb25DYWxsICov Citib29sCitPaWRJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoT2lkIGZ1bmN0aW9uSWQsIGNoYXIgKnN0 ciwgT2lkIHR5cGlvcGFyYW0sCisJCQkJCQkgaW50MzIgdHlwbW9kLCBOb2RlICplc2NvbnRleHQs CisJCQkJCQkgRGF0dW0gKnJlc3VsdCkKK3sKKwlGbWdySW5mbwlmbGluZm87CisKKwlmbWdyX2lu Zm8oZnVuY3Rpb25JZCwgJmZsaW5mbyk7CisJcmV0dXJuIElucHV0RnVuY3Rpb25DYWxsU2FmZSgm ZmxpbmZvLCBzdHIsIHR5cGlvcGFyYW0sIHR5cG1vZCwKKwkJCQkJCQkJIGVzY29udGV4dCwgcmVz dWx0KTsKK30KKwogY2hhciAqCiBPaWRPdXRwdXRGdW5jdGlvbkNhbGwoT2lkIGZ1bmN0aW9uSWQs IERhdHVtIHZhbCkKIHsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHBy LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCmluZGV4IGFhOWIzNjFmYTMxLi5m YTlkYjhmZDY4NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCkBAIC0yNjUsNiArMjY1LDcgQEAg dHlwZWRlZiBlbnVtIEV4cHJFdmFsT3AKIAlFRU9QX1hNTEVYUFIsCiAJRUVPUF9KU09OX0NPTlNU UlVDVE9SLAogCUVFT1BfSVNfSlNPTiwKKwlFRU9QX1NBRkVUWVBFX0NBU1QsCiAJRUVPUF9KU09O RVhQUl9QQVRILAogCUVFT1BfSlNPTkVYUFJfQ09FUkNJT04sCiAJRUVPUF9KU09ORVhQUl9DT0VS Q0lPTl9GSU5JU0gsCkBAIC03NTAsNiArNzUxLDEyIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFs U3RlcAogCQkJSnNvbklzUHJlZGljYXRlICpwcmVkOwkvKiBvcmlnaW5hbCBleHByZXNzaW9uIG5v ZGUgKi8KIAkJfQkJCWlzX2pzb247CiAKKwkJLyogZm9yIEVFT1BfU0FGRVRZUEVfQ0FTVCAqLwor CQlzdHJ1Y3QKKwkJeworCQkJc3RydWN0IFNhZmVUeXBlQ2FzdFN0YXRlICpzdGNzdGF0ZTsKKwkJ fQkJCXN0Y2V4cHI7CisKIAkJLyogZm9yIEVFT1BfSlNPTkVYUFJfUEFUSCAqLwogCQlzdHJ1Y3QK IAkJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZm1nci5oIGIvc3JjL2luY2x1ZGUvZm1nci5o CmluZGV4IDEwZDAyYmRiNzlmLi44ZTNlNTFkYzIyOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Zm1nci5oCisrKyBiL3NyYy9pbmNsdWRlL2ZtZ3IuaApAQCAtNzUyLDYgKzc1Miw5IEBAIGV4dGVy biBib29sIERpcmVjdElucHV0RnVuY3Rpb25DYWxsU2FmZShQR0Z1bmN0aW9uIGZ1bmMsIGNoYXIg KnN0ciwKIAkJCQkJCQkJCQlEYXR1bSAqcmVzdWx0KTsKIGV4dGVybiBEYXR1bSBPaWRJbnB1dEZ1 bmN0aW9uQ2FsbChPaWQgZnVuY3Rpb25JZCwgY2hhciAqc3RyLAogCQkJCQkJCQkgIE9pZCB0eXBp b3BhcmFtLCBpbnQzMiB0eXBtb2QpOworZXh0ZXJuIGJvb2wgT2lkSW5wdXRGdW5jdGlvbkNhbGxT YWZlKE9pZCBmdW5jdGlvbklkLCBjaGFyICpzdHIsIE9pZCB0eXBpb3BhcmFtLAorCQkJCQkJCQkJ IGludDMyIHR5cG1vZCwgTm9kZSAqZXNjb250ZXh0LAorCQkJCQkJCQkJIERhdHVtICpyZXN1bHQp OwogZXh0ZXJuIGNoYXIgKk91dHB1dEZ1bmN0aW9uQ2FsbChGbWdySW5mbyAqZmxpbmZvLCBEYXR1 bSB2YWwpOwogZXh0ZXJuIGNoYXIgKk9pZE91dHB1dEZ1bmN0aW9uQ2FsbChPaWQgZnVuY3Rpb25J ZCwgRGF0dW0gdmFsKTsKIGV4dGVybiBEYXR1bSBSZWNlaXZlRnVuY3Rpb25DYWxsKEZtZ3JJbmZv ICpmbGluZm8sIFN0cmluZ0luZm8gYnVmLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA2ODRlMzk4 ZjgyNC4uM2VlMDM5ZGFjZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xMDcxLDYgKzEwNzEs MjcgQEAgdHlwZWRlZiBzdHJ1Y3QgRG9tYWluQ29uc3RyYWludFN0YXRlCiAJRXhwclN0YXRlICAq Y2hlY2tfZXhwcnN0YXRlOwkvKiBjaGVja19leHByJ3MgZXZhbCBzdGF0ZSwgb3IgTlVMTCAqLwog fSBEb21haW5Db25zdHJhaW50U3RhdGU7CiAKK3R5cGVkZWYgc3RydWN0IFNhZmVUeXBlQ2FzdFN0 YXRlCit7CisJU2FmZVR5cGVDYXN0RXhwciAqc3RjZXhwcjsKKworCS8qCisJICogQWRkcmVzcyB0 byBqdW1wIHRvIHdoZW4gc2tpcHBpbmcgYWxsIHRoZSBzdGVwcyB0byBldmFsdWF0ZSB0aGUgZGVm YXVsdAorCSAqIGV4cHJlc3Npb24uCisJICovCisJaW50CQkJanVtcF9lbmQ7CisKKwkvKgorCSAq IEZvciBlcnJvci1zYWZlIGV2YWx1YXRpb24gb2YgY29lcmNpb25zLiBBIHBvaW50ZXIgdG8gdGhp cyBpcyBwYXNzZWQgdG8KKwkgKiBFeGVjSW5pdEV4cHJSZWMoKSB3aGVuIGluaXRpYWxpemluZyB0 aGUgY29lcmNpb24gZXhwcmVzc2lvbnMsIHNlZQorCSAqIEV4ZWNJbml0U2FmZVR5cGVDYXN0RXhw ci4KKwkgKgorCSAqIFJlc2V0IGZvciBlYWNoIGV2YWx1YXRpb24gb2YgRUVPUF9TQUZFVFlQRV9D QVNULgorCSAqLworCUVycm9yU2F2ZUNvbnRleHQgZXNjb250ZXh0OworCit9IFNhZmVUeXBlQ2Fz dFN0YXRlOworCiAvKgogICogU3RhdGUgZm9yIEpzb25FeHByIGV2YWx1YXRpb24sIHRvbyBiaWcg dG8gaW5saW5lLgogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBkZjQzMTIyMGFjNS4uYmEy N2UwYTcxNGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTM5Nyw2ICszOTcsNyBAQCB0eXBl ZGVmIHN0cnVjdCBUeXBlQ2FzdAogCU5vZGVUYWcJCXR5cGU7CiAJTm9kZQkgICAqYXJnOwkJCS8q IHRoZSBleHByZXNzaW9uIGJlaW5nIGNhc3RlZCAqLwogCVR5cGVOYW1lICAgKnR5cGVOYW1lOwkJ LyogdGhlIHRhcmdldCB0eXBlICovCisJTm9kZQkgICAqZGVmZXhwcjsJCS8qIERFRkFVTFQgZXhw cmVzc2lvbiAqLwogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0x IGlmIHVua25vd24gKi8KIH0gVHlwZUNhc3Q7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggZjVi NmI0NTY2NGEuLjJhMjJlNjQ2MDQ1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtNzcwLDYgKzc3 MCwzOSBAQCB0eXBlZGVmIGVudW0gQ29lcmNpb25Gb3JtCiAJQ09FUkNFX1NRTF9TWU5UQVgsCQkJ LyogZGlzcGxheSB3aXRoIFNRTC1tYW5kYXRlZCBzcGVjaWFsIHN5bnRheCAqLwogfSBDb2VyY2lv bkZvcm07CiAKKy8qCisgKiBTYWZlVHlwZUNhc3RFeHByIC0KKyAqCQlUcmFuc2Zvcm1lZCByZXBy ZXNlbnRhdGlvbiBvZgorICogCQlDQVNUKGV4cHIgQVMgdHlwZW5hbWUgREVGQVVMVCBleHByIE9O IENPTlZFUlNJT04gRVJST1IpCisgKiAJCUNBU1QoZXhwciBBUyB0eXBlbmFtZSBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpCisgKi8KK3R5cGVkZWYgc3RydWN0IFNhZmVUeXBlQ2FzdEV4cHIKK3sK KwlFeHByCQl4cHI7CisKKwkvKgorCSAqIFRoZSBwYXJzZWQgYW5kIHRyYW5zZm9ybWVkIHNvdXJj ZSBleHByZXNzaW9uLgorCSAqCisJICogVGhpcyBpcyBtYWlubHkgdXNlZCBmb3IgZGVwYXJzaW5n LiBJbiBjYXNlcyBsaWtlICJDQVNUKDEgQVMgZGF0ZQorCSAqIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSIsIHdoZXJlIHRoZSBjYXN0ZXhwciBldmFsdWF0ZXMgdG8KKwkgKiBOVUxM LCB3ZSBuZWVkIHRoaXMgZmllbGQgdG8gcmVjb25zdHJ1Y3QgdGhlIG9yaWdpbmFsIHF1ZXJ5Lgor CSAqLworCUV4cHIJICAgKnNvdXJjZTsKKworCS8qIHRyYW5zZm9ybWVkIGNhc3QgZXhwcmVzc2lv biwgTlVMTCBtZWFucyBjYW5ub3QgY29lcmNlIHRvIHRhcmdldCB0eXBlICovCisJRXhwcgkgICAq Y2FzdGV4cHIgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOworCS8qIEZhbGwtYmFj ayB0byB0aGUgZGVmYXVsdCBleHByZXNzaW9uIGlmIGNhc3QgZXZhbHVhdGlvbiBmYWlscyAqLwor CUV4cHIJICAgKmRlZmV4cHI7CisJLyogdGFyZ2V0IHR5cGUgT2lkICovCisJT2lkCQkJcmVzdWx0 dHlwZTsKKwkvKiB0YXJnZXQgdHlwZSBtb2RpZmllciAqLworCWludDMyCQlyZXN1bHR0eXBtb2Q7 CisJLyogT0lEIG9mIGNvbGxhdGlvbiwgb3IgSW52YWxpZE9pZCBpZiBub25lICovCisJT2lkCQkJ cmVzdWx0Y29sbGlkOworCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCisJ UGFyc2VMb2MJbG9jYXRpb247Cit9IFNhZmVUeXBlQ2FzdEV4cHI7CisKIC8qCiAgKiBGdW5jRXhw ciAtIGV4cHJlc3Npb24gbm9kZSBmb3IgYSBmdW5jdGlvbiBjYWxsCiAgKgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVy L29wdGltaXplci5oCmluZGV4IGU4YjQwOWFmYjdmLi5iNjg2YmUwNDliOSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGlt aXplci9vcHRpbWl6ZXIuaApAQCAtMTUxLDcgKzE1MSw3IEBAIGV4dGVybiB2b2lkIGNvbnZlcnRf c2FvcF90b19oYXNoZWRfc2FvcChOb2RlICpub2RlKTsKIGV4dGVybiBOb2RlICplc3RpbWF0ZV9l eHByZXNzaW9uX3ZhbHVlKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpub2RlKTsKIAogZXh0ZXJu IEV4cHIgKmV2YWx1YXRlX2V4cHIoRXhwciAqZXhwciwgT2lkIHJlc3VsdF90eXBlLCBpbnQzMiBy ZXN1bHRfdHlwbW9kLAotCQkJCQkJICAgT2lkIHJlc3VsdF9jb2xsYXRpb24pOworCQkJCQkJICAg T2lkIHJlc3VsdF9jb2xsYXRpb24sIE5vZGUgKmVzY29udGV4dCk7CiAKIGV4dGVybiBib29sIHZh cl9pc19ub25udWxsYWJsZShQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2YXIsCiAJCQkJCQkJICAg Tm90TnVsbFNvdXJjZSBzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX2NvZXJjZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NvZXJjZS5oCmluZGV4IGFh YmFjZDQ5YjY1Li4xMjY0NGYxNDZiZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX2NvZXJjZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9jb2VyY2UuaApAQCAt NDMsMTUgKzQzLDI5IEBAIGV4dGVybiBOb2RlICpjb2VyY2VfdG9fdGFyZ2V0X3R5cGUoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkgICBDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsCiAJCQkJ CQkJCSAgIENvZXJjaW9uRm9ybSBjZm9ybWF0LAogCQkJCQkJCQkgICBpbnQgbG9jYXRpb24pOwor ZXh0ZXJuIE5vZGUgKmNvZXJjZV90b190YXJnZXRfdHlwZV9leHRlbmRlZChQYXJzZVN0YXRlICpw c3RhdGUsCisJCQkJCQkJCQkJCU5vZGUgKmV4cHIsCisJCQkJCQkJCQkJCU9pZCBleHBydHlwZSwK KwkJCQkJCQkJCQkJT2lkIHRhcmdldHR5cGUsCisJCQkJCQkJCQkJCWludDMyIHRhcmdldHR5cG1v ZCwKKwkJCQkJCQkJCQkJQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LAorCQkJCQkJCQkJCQlDb2Vy Y2lvbkZvcm0gY2Zvcm1hdCwKKwkJCQkJCQkJCQkJaW50IGxvY2F0aW9uLAorCQkJCQkJCQkJCQlO b2RlICplc2NvbnRleHQpOwogZXh0ZXJuIGJvb2wgY2FuX2NvZXJjZV90eXBlKGludCBuYXJncywg Y29uc3QgT2lkICppbnB1dF90eXBlaWRzLCBjb25zdCBPaWQgKnRhcmdldF90eXBlaWRzLAogCQkJ CQkJCUNvZXJjaW9uQ29udGV4dCBjY29udGV4dCk7CiBleHRlcm4gTm9kZSAqY29lcmNlX3R5cGUo UGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCQkJIE9pZCBpbnB1dFR5cGVJZCwg T2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwZU1vZCwKIAkJCQkJCSBDb2VyY2lvbkNv bnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24pOworZXh0 ZXJuIE5vZGUgKmNvZXJjZV90eXBlX2V4dGVuZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq bm9kZSwKKwkJCQkJCQkJICBPaWQgaW5wdXRUeXBlSWQsIE9pZCB0YXJnZXRUeXBlSWQsIGludDMy IHRhcmdldFR5cGVNb2QsCisJCQkJCQkJCSAgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2Vy Y2lvbkZvcm0gY2Zvcm1hdCwgaW50IGxvY2F0aW9uLAorCQkJCQkJCQkgIE5vZGUgKmVzY29udGV4 dCk7CiBleHRlcm4gTm9kZSAqY29lcmNlX3RvX2RvbWFpbihOb2RlICphcmcsIE9pZCBiYXNlVHlw ZUlkLCBpbnQzMiBiYXNlVHlwZU1vZCwKIAkJCQkJCQkgIE9pZCB0eXBlSWQsCiAJCQkJCQkJICBD b2VyY2lvbkNvbnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRp b24sCi0JCQkJCQkJICBib29sIGhpZGVJbnB1dENvZXJjaW9uKTsKKwkJCQkJCQkgIGJvb2wgaGlk ZUlucHV0Q29lcmNpb24sCisJCQkJCQkJICBOb2RlICplc2NvbnRleHQpOwogCiBleHRlcm4gTm9k ZSAqY29lcmNlX3RvX2Jvb2xlYW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJ CQkJCSAgIGNvbnN0IGNoYXIgKmNvbnN0cnVjdE5hbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgK aW5kZXggZmMyY2JlYjIwODMuLjcyNmMxZmNkMGUyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgK QEAgLTY3LDYgKzY3LDggQEAgdHlwZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlFWFBSX0tJTkRf VkFMVUVTX1NJTkdMRSwJLyogc2luZ2xlLXJvdyBWQUxVRVMgKGluIElOU0VSVCBvbmx5KSAqLwog CUVYUFJfS0lORF9DSEVDS19DT05TVFJBSU5ULCAvKiBDSEVDSyBjb25zdHJhaW50IGZvciBhIHRh YmxlICovCiAJRVhQUl9LSU5EX0RPTUFJTl9DSEVDSywJCS8qIENIRUNLIGNvbnN0cmFpbnQgZm9y IGEgZG9tYWluICovCisJRVhQUl9LSU5EX0NBU1RfREVGQVVMVCwJCS8qIGRlZmF1bHQgZXhwcmVz c2lvbiBpbiBDQVNUIERFRkFVTFQgT04KKwkJCQkJCQkJICogQ09OVkVSU0lPTiBFUlJPUiAqLwog CUVYUFJfS0lORF9DT0xVTU5fREVGQVVMVCwJLyogZGVmYXVsdCB2YWx1ZSBmb3IgYSB0YWJsZSBj b2x1bW4gKi8KIAlFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVCwgLyogZGVmYXVsdCBwYXJhbWV0 ZXIgdmFsdWUgZm9yIGZ1bmN0aW9uICovCiAJRVhQUl9LSU5EX0lOREVYX0VYUFJFU1NJT04sIC8q IGluZGV4IGV4cHJlc3Npb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV90eXBlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oCmluZGV4IGEzMzU4MDdi MGIwLi5lMzAzYTEwNzNjMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3R5 cGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oCkBAIC00Nyw2ICs0Nyw4 IEBAIGV4dGVybiBjaGFyICp0eXBlVHlwZU5hbWUoVHlwZSB0KTsKIGV4dGVybiBPaWQJdHlwZVR5 cGVSZWxpZChUeXBlIHR5cCk7CiBleHRlcm4gT2lkCXR5cGVUeXBlQ29sbGF0aW9uKFR5cGUgdHlw KTsKIGV4dGVybiBEYXR1bSBzdHJpbmdUeXBlRGF0dW0oVHlwZSB0cCwgY2hhciAqc3RyaW5nLCBp bnQzMiBhdHR0eXBtb2QpOworZXh0ZXJuIGJvb2wgc3RyaW5nVHlwZURhdHVtU2FmZShUeXBlIHRw LCBjaGFyICpzdHJpbmcsIGludDMyIGF0dHR5cG1vZCwKKwkJCQkJCQkJTm9kZSAqZXNjb250ZXh0 LCBEYXR1bSAqcmVzdWx0KTsKIAogZXh0ZXJuIE9pZAl0eXBlaWRUeXBlUmVsaWQoT2lkIHR5cGVf aWQpOwogZXh0ZXJuIE9pZAl0eXBlT3JEb21haW5UeXBlUmVsaWQoT2lkIHR5cGVfaWQpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jYXN0Lm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY2FzdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmU1NzQwZDJmNWJjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jYXN0Lm91dApAQCAtMCwwICsxLDExNzIgQEAKK1NFVCBleHRyYV9mbG9hdF9kaWdp dHMgPSAwOworU0VUIGxjX21vbmV0YXJ5IFRPICJDIjsKKy0tIENBU1QgREVGQVVMVCBPTiBDT05W RVJTSU9OIEVSUk9SCitTRUxFQ1QgQ0FTVChCJzAxJyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyBkYXRlIAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBD QVNUKEJJVCcwMScgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg ZGF0ZSAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChUUlVFIEFTIGRhdGUgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGRhdGUgCistLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIENBU1QoMS4xIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworIGRhdGUgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMSBBUyBk YXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBkYXRlIAorLS0tLS0tCisg CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKDExMTEgQVMgImNoYXIiIERFRkFVTFQgJ0EnIE9OIENP TlZFUlNJT04gRVJST1IpOworIGNoYXIgCistLS0tLS0KKyBBCisoMSByb3cpCisKK1NFTEVDVCBD QVNUKCdkZWYnOjp0ZXh0IEFTIGludGVnZXIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworIGludDQgCistLS0tLS0KKyAgICAgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcyJzo6 anNvbmIgQVMgdGV4dCBERUZBVUxUICdmYWxsYmFjaycgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg dGV4dCAKKy0tLS0tLQorIDIKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzEnIENPTExBVEUgIkMi IHx8ICdoJyBBUyB0ZXh0IERFRkFVTFQgJ2ZhbGxiYWNrJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsK KyB0ZXh0IAorLS0tLS0tCisgMWgKKygxIHJvdykKKworU0VMRUNUIENBU1QoY29uY2F0KCcxJyBj b2xsYXRlICJDIiwgJ2gnKSBBUyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworIGNvbmNhdCAKKy0tLS0tLS0tCisgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKDY1 NTM2IEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDIgCist LS0tLS0KKyAgICAgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGludDgoNjU1MzYpIEFTIGludDIg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDggCistLS0tLS0KKyAgICAg CisoMSByb3cpCisKKy0tIHNvdXJjZSBleHByZXNzaW9uIGlzIGEgdW5rbm93biBjb25zdAorVkFM VUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBFUlJPUiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7 IC0tIGVycm9yCitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6 ICJlcnJvciIKK0xJTkUgMTogVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBFUlJPUiBP TiBDT05WRVJTSU9OIEVSUk9SKSk7CisgICAgICAgICAgICAgICAgICAgICBeCitWQUxVRVMgKENB U1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikpOworIGNvbHVt bjEgCistLS0tLS0tLS0KKyAgICAgICAgCisoMSByb3cpCisKK1ZBTFVFUyAoQ0FTVCgnZXJyb3In IEFTIGludGVnZXIgREVGQVVMVCA0MiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CisgY29sdW1uMSAK Ky0tLS0tLS0tLQorICAgICAgNDIKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBE RUZBVUxUIDE4IE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDQgCistLS0tLS0KKyAgIDE4Ciso MSByb3cpCisKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCBzdW0oMSkgT04gQ09OVkVS U0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5v dCBhbGxvd2VkIGluIENBU1QgREVGQVVMVCBleHByZXNzaW9ucworTElORSAxOiBTRUxFQ1QgQ0FT VCgnYScgYXMgaW50IERFRkFVTFQgc3VtKDEpIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1QoJ2EnIGFzIGlu dCBERUZBVUxUIHN1bSgxKSBvdmVyKCkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitF UlJPUjogIHdpbmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBU1QgREVGQVVMVCBl eHByZXNzaW9ucworTElORSAxOiBTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgc3VtKDEp IG92ZXIoKSBPTiBDT05WRVJTSU9OIEUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAoU0VMRUNUIE5VTEwp IE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBjYW5ub3QgdXNlIHN1YnF1 ZXJ5IGluIENBU1QgREVGQVVMVCBleHByZXNzaW9uCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBh cyBpbnQgREVGQVVMVCAoU0VMRUNUIE5VTEwpIE9OIENPTlZFUlNJT04gRS4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBE RUZBVUxUICdiJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgaW52YWxp ZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImIiCitMSU5FIDE6IFNFTEVDVCBDQVNU KCdhJyBhcyBpbnQgREVGQVVMVCAnYicgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCgnYSc6OmludCBhcyBp bnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBp bnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiYSIKK0xJTkUgMTogU0VMRUNU IENBU1QoJ2EnOjppbnQgYXMgaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SLi4u CisgICAgICAgICAgICAgICAgICAgIF4KKy0tIHRoZSBkZWZhdWx0IGV4cHJlc3Npb27igJlzIGNv bGxhdGlvbiBzaG91bGQgbWF0Y2ggdGFyZ2V0IHR5cGUgY29sbGF0aW9uCitWQUxVRVMgKENBU1Qo J2Vycm9yJyBBUyB0ZXh0IERFRkFVTFQgJzEnIENPTExBVEUgIkMiIE9OIENPTlZFUlNJT04gRVJS T1IpKTsKK0VSUk9SOiAgY29sbGF0aW9uIG9mIENBU1QgREVGQVVMVCBleHByZXNzaW9uIGNvbmZs aWN0cyB3aXRoIHRhcmdldCB0eXBlIGNvbGxhdGlvbgorTElORSAxOiBWQUxVRVMgKENBU1QoJ2Vy cm9yJyBBUyB0ZXh0IERFRkFVTFQgJzEnIENPTExBVEUgIkMiIE9OIENPTlYuLi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogICJDIiB2ZXJz dXMgImRlZmF1bHQiCitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnQydmVjdG9yIERFRkFVTFQg JzEgMycgIE9OIENPTlZFUlNJT04gRVJST1IpKTsKKyBjb2x1bW4xIAorLS0tLS0tLS0tCisgMSAz CisoMSByb3cpCisKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludDJ2ZWN0b3JbXSBERUZBVUxU ICd7MSAzfScgIE9OIENPTlZFUlNJT04gRVJST1IpKTsKKyBjb2x1bW4xIAorLS0tLS0tLS0tCisg eyIxIDMifQorKDEgcm93KQorCistLSBzb3VyY2UgZXhwcmVzc2lvbiBjb250YWluIHN1YnF1ZXJ5 CitTRUxFQ1QgQ0FTVCgoU0VMRUNUIGIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSksIChWQUxV RVMoJ0gnKSkgcyhiKSkKKyAgICAgICAgICAgIEFTIGludDJ2ZWN0b3JbXSBERUZBVUxUICd7MSAz fScgIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgIGIgICAgCistLS0tLS0tLS0KKyB7IjEgMyJ9 CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKChTRUxFQ1QgQVJSQVkoKFNFTEVDVCBiIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDIpIGcsIChWQUxVRVMoJ0gnKSkgcyhiKSkpKQorICAgICAgICAgICAg QVMgSU5UW10KKyAgICAgICAgICAgIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK KyBhcnJheSAKKy0tLS0tLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIEZVTkNUSU9OIHJldF9pbnQ4 KCkgUkVUVVJOUyBCSUdJTlQgQVMKKyQkCitCRUdJTiBSRVRVUk4gMjE0NzQ4MzY0ODsgRU5EOwor JCQKK0xBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFOworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBE RUZBVUxUIHJldF9pbnQ4KCkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjog IGludGVnZXIgb3V0IG9mIHJhbmdlCitTRUxFQ1QgQ0FTVCgnYScgYXMgZGF0ZSBERUZBVUxUIHJl dF9pbnQ4KCkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGNhbm5vdCBj b2VyY2UgQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24gdG8gdHlwZSBkYXRlCitMSU5FIDE6IFNFTEVD VCBDQVNUKCdhJyBhcyBkYXRlIERFRkFVTFQgcmV0X2ludDgoKSBPTiBDT05WRVJTSU9OIEVSUi4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIERFRkFVTFQg ZXhwcmVzc2lvbiBjYW5ub3QgYmUgc2V0LXJldHVybmluZworQ1JFQVRFIEZVTkNUSU9OIHJldF9z ZXRpbnQoKSBSRVRVUk5TIFNFVE9GIGludGVnZXIgQVMKKyQkCitCRUdJTiBSRVRVUk4gUVVFUlkg RVhFQ1VURSAnc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAxJzsgRU5EOworJCQKK0xBTkdVQUdF IHBscGdzcWwgSU1NVVRBQkxFOworQ1JFQVRFIFRBQkxFIHRjYXN0MChhIElOVCwgYiBpbnQpOwor SU5TRVJUIElOVE8gdGNhc3QwIFZBTFVFUygxLDIpLCAoNjU1MzYsMyk7CitTRVQgaml0X2Fib3Zl X2Nvc3QgPSAwOworU0VMRUNUIENBU1QoYSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBGUk9NIHRjYXN0MDsKKyBhIAorLS0tCisgMQorICAKKygyIHJvd3MpCisKK1NF VCBqaXRfYWJvdmVfY29zdCBUTyBERUZBVUxUOworU0VMRUNUIENBU1QoYSBBUyBpbnQyIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MDsKKyBhIAorLS0tCisgMQor ICAKKygyIHJvd3MpCisKK1NFTEVDVCBDQVNUKFJPVygxLDIpIEFTIHRjYXN0MCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDAgYXMgdDsKK0VSUk9SOiAgY2Fubm90 IGNhc3QgdHlwZSByZWNvcmQgdG8gdGNhc3QwIHdoZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNw ZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBD QVNUKFJPVygxLDIpIEFTIHRjYXN0MCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUi4uLgor ICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBFeHBsaWNpdCBjYXN0IGlzIGRlZmluZWQg YnV0IGRlZmluaXRpb24gaXMgbm90IGVycm9yIHNhZmUuCitEUk9QIFRBQkxFIHRjYXN0MDsKK1NF TEVDVCBDQVNUKDEyLjExMSBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlOworIHRvX251bWVyaWNfc2NhbGUgCistLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxMi4xCisoMSByb3cpCisKK0NSRUFURSBUQUJM RSB0Y2FzdChhIHRleHRbXSwgYiBpbnQgR0VORVJBVEVEIEJZIERFRkFVTFQgQVMgSURFTlRJVFkp OworSU5TRVJUIElOVE8gdGNhc3QgVkFMVUVTICgnezEyfScpLCAoJ3sxLGEsIGJ9JyksICgne3sx LDJ9LCB7YyxkfX0nKSwgKCd7MTN9Jyk7CitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQg cmV0X3NldGludCgpIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3Q7IC0tIGVycm9yCitF UlJPUjogIHNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQVNUIERF RkFVTFQgZXhwcmVzc2lvbnMKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxU IHJldF9zZXRpbnQoKSBPTiBDT05WRVJTSU9OIEVSLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCh0IEFTIHRleHRbXSBERUZBVUxUICd7MjEs MjIsICcgfHwgYiB8fCAnfScgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdCBhcyB0Owor ICAgICB0ICAgICAKKy0tLS0tLS0tLS0tCisgezIxLDIyLDF9CisgezIxLDIyLDJ9CisgezIxLDIy LDN9CisgezIxLDIyLDR9CisoNCByb3dzKQorCitTRUxFQ1QgQ0FTVCh0LmEgQVMgaW50W10gREVG QVVMVCAnezIxLDIyfSc6OmludFtdIHx8IGIgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2Fz dCBhcyB0OworICAgICBhICAgICAKKy0tLS0tLS0tLS0tCisgezEyfQorIHsyMSwyMiwyfQorIHsy MSwyMiwzfQorIHsxM30KKyg0IHJvd3MpCisKKy0tIFRlc3QgbmVzdGVkIHR5cGUgY2FzdHM7IGFs bCBleHByZXNzaW9ucyB3aWxsIGJlIGV2YWx1YXRlZCBpbiBhbiBlcnJvci1zYWZlIG1hbm5lcgor Q1JFQVRFIERPTUFJTiBkX25vdGEgQVMgdGV4dCBDSEVDSyAoVkFMVUUgPD4gJ2EnKTsKK0NSRUFU RSBUQUJMRSB0Y2FzdDEoYSB0ZXh0LCBiIHRleHRbXSwgYyBpbnQsIGQgaW50OCwgZSBpbnQ4W10p OworSU5TRVJUIElOVE8gdGNhc3QxKGEsIGIsIGQsIGUpIHZhbHVlcygnYScsICd7YX0nLCAyMTQ3 NDgzNjQ4LCAnezIxNDc0ODM2NDh9Jyk7CitTRUxFQ1QgQ0FTVCAoQ0FTVChhIEFTIGludCkgQVMg dGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgYSAK Ky0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVCgnYScgQVMgaW50KSBBUyB0ZXh0 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsgIC0tIGVycm9y CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJhIgorTElO RSAxOiBTRUxFQ1QgQ0FTVCAoQ0FTVCgnYScgQVMgaW50KSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBP TiBDT05WRVIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1QgKENB U1QoJ2EnOjp0ZXh0IEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgRlJPTSB0Y2FzdDE7IC0tIG9rCisgdGV4dCAKKy0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCAoQ0FTVChhIEFTIGRfbm90YSkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgYSAKKy0tLQorIAorKDEgcm93KQorCitTRUxF Q1QgQ0FTVCAoQ0FTVCgnYScgQVMgZF9ub3RhKSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyB0ZXh0IAorLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCBDQVNUIChDQVNUKGQgQVMgaW50KSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyBkIAorLS0tCisgCisoMSByb3cpCisKK1NFTEVD VCBDQVNUIChDQVNUKCcyMTQ3NDgzNjQ4Jzo6aW50OCBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworIHRleHQgCistLS0tLS0KKyAK KygxIHJvdykKKworU0VMRUNUIENBU1QgKENBU1QoJ3thfSc6OnRleHRbXSBBUyBpbnRbXSkgQVMg dGV4dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyB0 ZXh0IAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUIChDQVNUKGIgQVMgaW50W10p IEFTIHRleHRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7 CisgYiAKKy0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVChiIEFTIGRfbm90YVtd KSBBUyB0ZXh0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3Qx OworIGIgCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QgKENBU1QoZSBBUyBpbnRbXSkg QVMgdGV4dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsK KyBlIAorLS0tCisgCisoMSByb3cpCisKKy0tIHRlc3QgbmVzdGVkIEFycmF5Q29lcmNlRXhwciBj b25zdGFudCBmb2xkaW5nCitTRUxFQ1QgQ0FTVCgne2F9Jzo6dGV4dFtdIEFTIGludFtdIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyBpbnQ0IAorLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKENBU1QoJ3thfSc6OnRleHRbXSBBUyBkYXRlW10p IEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsK KyBpbnQ0IAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCgneycgfHwgc3VtKDEg KyAyKSB8fCAnfScpOjppbnRbXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgRlJPTSAoVkFMVUVTICgxKSwgKDIpKSBzdWI7CisgaW50NCAKKy0tLS0tLQorIHs2fQor KDEgcm93KQorCitTRUxFQ1QgQ0FTVCgoJ3snIHx8IHN1bSgxICsgMikgT1ZFUiAoKSB8fCAnfScp OjppbnRbXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSAo VkFMVUVTICgxKSwgKDIpKSBzdWI7CisgaW50NCAKKy0tLS0tLQorIHs2fQorIHs2fQorKDIgcm93 cykKKworLS0gdGVzdCB3aXRoIHVzZXItZGVmaW5lZCB0eXBlLCBkb21haW4sIGFycmF5IG92ZXIg ZG9tYWluLCBkb21haW4gb3ZlciBhcnJheQorQ1JFQVRFIERPTUFJTiBkX2ludDQyIGFzIGludCBj aGVjayAodmFsdWUgPSA0MikgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlOIGRfaW50NDJhcnIgYXMg ZF9pbnQ0MltdOworQ1JFQVRFIERPTUFJTiBkX2ludDQyYXJyMSBhcyBkX2ludDQyYXJyOworQ1JF QVRFIERPTUFJTiBkX2ludDggYXMgaW50OCBjaGVjayAodmFsdWUgPiAwKTsKK0NSRUFURSBET01B SU4gZF9pbnQ4YXJyIGFzIGRfaW50OFtdOworQ1JFQVRFIERPTUFJTiBkX2NoYXIzX25vdF9udWxs IGFzIGNoYXIoMykgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlOIGRfdmFyY2hhciBhcyB2YXJjaGFy KDMpIE5PVCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX2ludF9hcnIgYXMgaW50W10gY2hlY2sgKHZh bHVlID0gJ3s0MSwgNDN9JykgTk9UIE5VTEw7CitDUkVBVEUgVFlQRSBjb21wX2RvbWFpbl93aXRo X3R5cG1vZCBBUyAoYSBkX2NoYXIzX25vdF9udWxsLCBiIGludCk7CitDUkVBVEUgVFlQRSBjb21w MiBBUyAoYSBkX3ZhcmNoYXIpOworQ1JFQVRFIERPTUFJTiBkX251bWVyaWMgYXMgbnVtZXJpYyg0 LDQpOworU0VMRUNUIENBU1QoMS4wOjpmbG9hdDQgQVMgZF9udW1lcmljIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyBkX251bWVyaWMgCistLS0tLS0tLS0tLQorICAgICAgICAg IAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnezEuMH0nIEFTIG51bWVyaWMoNCwxKVtdIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBudW1lcmljIAorLS0tLS0tLS0tCisgezEu MH0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJ3swLjEsIDEuMH0nIEFTIGRfbnVtZXJpY1tdIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBkX251bWVyaWMgCistLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxMSBBUyBkX2ludDQyIERFRkFVTFQgNDEgT04g Q09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gZF9p bnQ0MiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJkX2ludDQyX2NoZWNrIgorU0VMRUNUIENB U1QoTlVMTCBBUyBkX2ludDQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0g ZXJyb3IKK0VSUk9SOiAgZG9tYWluIGRfaW50NDIgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMK K1NFTEVDVCBDQVNUKDExIEFTIGRfaW50NDIgREVGQVVMVCA0MiBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyBkX2ludDQyIAorLS0tLS0tLS0tCisgICAgICA0MgorKDEgcm93KQorCitTRUxFQ1QgQ0FT VChOVUxMIEFTIGRfaW50NDIgREVGQVVMVCA0MiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBkX2lu dDQyIAorLS0tLS0tLS0tCisgICAgICA0MgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChBUlJBWVs0 Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OCBERUZBVUxUICcxJyBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyBhcnJheSAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChBUlJB WVs0Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OFtdIERFRkFVTFQgJ3sxfScgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0tCisgezQyfQorKDEgcm93KQorCitTRUxFQ1QgQ0FT VChBUlJBWVs0Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OGFyciBERUZBVUxUICd7MX0nIE9OIENP TlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQorIHs0Mn0KKygxIHJvdykKKworU0VM RUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBkX2ludDhhcnJbXSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCBDQVNUKEFSUkFZWzQyLDQxXSBBUyBkX2ludDQyW10gREVGQVVMVCAnezQyLCA0Mn0n IE9OIENPTlZFUlNJT04gRVJST1IpOworICBhcnJheSAgCistLS0tLS0tLS0KKyB7NDIsNDJ9Ciso MSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLDQxXSBBUyBkX2ludF9hcnIgREVGQVVMVCAn ezQxLCA0M30nIE9OIENPTlZFUlNJT04gRVJST1IpOworICBhcnJheSAgCistLS0tLS0tLS0KKyB7 NDEsNDN9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLCA0MV06OmRfaW50NDJhcnIx IEFTIGRfaW50OGFyciBERUZBVUxUICd7MSwyLDN9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAg YXJyYXkgIAorLS0tLS0tLS0tCisgezEsMiwzfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChBUlJB WVs0MiwgNDFdIEFTIGRfaW50NDJhcnIxIERFRkFVTFQgJ3s0MiwgNDJ9JyBPTiBDT05WRVJTSU9O IEVSUk9SKTsKKyAgYXJyYXkgIAorLS0tLS0tLS0tCisgezQyLDQyfQorKDEgcm93KQorCitTRUxF Q1QKKyAgICBDQVNUKENBU1QoQVJSQVlbQ0FTVChBUlJBWVs0MiwgNDJdIEFTIGRfaW50NDJhcnIp XSBBUyBkX2ludDQyYXJyMVtdKSBBUyBkX2ludDhhcnJbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgICAgYXJyYXkgICAgCistLS0tLS0tLS0tLS0tCisgeyJ7NDIsNDJ9In0K KygxIHJvdykKKworU0VMRUNUIENBU1QoJyhOVUxMKScgQVMgY29tcDIgREVGQVVMVCAnKDEyMzIp JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgdmFsdWUgdG9vIGxvbmcg Zm9yIHR5cGUgY2hhcmFjdGVyIHZhcnlpbmcoMykKK0xJTkUgMTogU0VMRUNUIENBU1QoJyhOVUxM KScgQVMgY29tcDIgREVGQVVMVCAnKDEyMzIpJyBPTiBDT05WRVJTSU9OLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1QoJyhOVUxM KScgQVMgY29tcDIgREVGQVVMVCAnKDEyMyknIE9OIENPTlZFUlNJT04gRVJST1IpOworIGNvbXAy IAorLS0tLS0tLQorICgxMjMpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoLDQyKScgQVMgY29t cF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor IGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKE5VTEwsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5 cG1vZCBERUZBVUxUICcoMSwyKScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgY29tcF9kb21haW5f d2l0aF90eXBtb2QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKCIxICAiLDIpCisoMSBy b3cpCisKK1NFTEVDVCBDQVNUKCcoTlVMTCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9k IERFRkFVTFQgJygxMjM0LDIpJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9S OiAgdmFsdWUgdG9vIGxvbmcgZm9yIHR5cGUgY2hhcmFjdGVyKDMpCitMSU5FIDE6IC4uLlNUKCco TlVMTCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFVTFQgJygxMjM0LDIpJy4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK1NFTEVDVCBDQVNUKFJPVyhOVUxMLDQyKSBBUyBjb21wX2RvbWFpbl93aXRoX3R5 cG1vZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjog IGNhbm5vdCBjYXN0IHR5cGUgcmVjb3JkIHRvIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIHdoZW4g REVGQVVMVCBleHByZXNzaW9uIGlzIHNwZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9O IEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKFJPVyhOVUxMLDQyKSBBUyBjb21wX2RvbWFpbl93 aXRoX3R5cG1vZCBERUZBVUxUIC4uLgorICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBF eHBsaWNpdCBjYXN0IGlzIGRlZmluZWQgYnV0IGRlZmluaXRpb24gaXMgbm90IGVycm9yIHNhZmUu CistLSB0ZXN0IGFycmF5IGNvZXJjZQorU0VMRUNUIENBU1QoYXJyYXlbJ2EnOjp0ZXh0XSBBUyBp bnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGFycmF5WydhJ10gQVMgaW50W10gREVGQVVMVCBB UlJBWVsxXSBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyB7MX0KKygx IHJvdykKKworU0VMRUNUIENBU1QoYXJyYXlbMTEuMTJdIEFTIGRhdGVbXSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCBDQVNUKGFycmF5WzExMTExMTExMTExMTExMTExXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCBDQVNUKGFycmF5W1snYWJjJ10sWzQ1Nl1dIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNU IENBU1QoJ3sxMjMsYWJjLDQ1Nn0nIEFTIGludFtdIERFRkFVTFQgJ3stNzg5fScgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgIGludDQgIAorLS0tLS0tLS0KKyB7LTc4OX0KKygxIHJvdykKKworU0VM RUNUIENBU1QoJ3syMzQsZGVmLDU2N30nOjp0ZXh0W10gQVMgaW50ZWdlcltdIERFRkFVTFQgJ3st MTAxMX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworICBpbnQ0ICAgCistLS0tLS0tLS0KKyB7LTEw MTF9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZW1snMSddLCBbJ3RocmVlJ10sWydhJ11d IEFTIGludFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAK Ky0tLS0tLS0KKyB7MSwyfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnLCAnMidd LCBbJ3RocmVlJywgJ2EnXV0gQVMgaW50W10gREVGQVVMVCAnezIxLDIyfScgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgIGFycmF5ICAKKy0tLS0tLS0tLQorIHsyMSwyMn0KKygxIHJvdykKKworLS0g ZXJyb3I6IGB0aHJlZSc6OmludGAgd2lsbCBmYWlsIGVhcmxpZXIKK1NFTEVDVCBDQVNUKEFSUkFZ W1snMScsICcyJ10sIFsndGhyZWUnOjppbnQsICdhJ11dIEFTIGludFtdIERFRkFVTFQgJ3syMSwy Mn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBm b3IgdHlwZSBpbnRlZ2VyOiAidGhyZWUiCitMSU5FIDE6IFNFTEVDVCBDQVNUKEFSUkFZW1snMScs ICcyJ10sIFsndGhyZWUnOjppbnQsICdhJ11dIEFTIGludFtdIC4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1QoQVJSQVlbMSwgJ3RocmVlJzo6 aW50XSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK0VS Uk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogInRocmVlIgorTElO RSAxOiBTRUxFQ1QgQ0FTVChBUlJBWVsxLCAndGhyZWUnOjppbnRdIEFTIGludFtdIERFRkFVTFQg J3syMSwyMn0uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gc2FmZSBjYXN0 IHdpdGggZ2VvbWV0cnkgZGF0YSB0eXBlCitTRUxFQ1QgQ0FTVCgnKDEsMiknOjpwb2ludCBBUyBi b3ggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICBib3ggICAgIAorLS0t LS0tLS0tLS0tLQorICgxLDIpLCgxLDIpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdbKE5hTiwx KSwoTmFOLGluZmluaXR5KV0nOjpsc2VnIEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyAgICAgcG9pbnQgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyAoTmFOLElu ZmluaXR5KQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWygxZSszMDAsSW5maW5pdHkpLCgxZSsz MDAsSW5maW5pdHkpXSc6OmxzZWcgQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworICAgICAgIHBvaW50ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxZSsz MDAsSW5maW5pdHkpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdbKDEsMiksKDMsNCldJzo6cGF0 aCBhcyBwb2x5Z29uIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBwb2x5Z29u IAorLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoTmFOLDEuMCxOYU4saW5m aW5pdHkpJzo6Ym94IEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK KyAgICAgcG9pbnQgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyAoTmFOLEluZmluaXR5KQorKDEg cm93KQorCitTRUxFQ1QgQ0FTVCgnKDIuMCwyLjAsMC4wLDAuMCknOjpib3ggQVMgbHNlZyBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgIGxzZWcgICAgICAKKy0tLS0tLS0t LS0tLS0tLQorIFsoMiwyKSwoMCwwKV0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJygyLjAsMi4w LDAuMCwwLjApJzo6Ym94IEFTIHBvbHlnb24gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworICAgICAgICAgIHBvbHlnb24gICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAoKDAsMCksKDAsMiksKDIsMiksKDIsMCkpCisoMSByb3cpCisKK1NFTEVDVCBDQVNU KCcoMi4wLDIuMCwwLjAsMC4wKSc6OmJveCBBUyBwYXRoIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyBwYXRoIAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCco Mi4wLGluZmluaXR5LE5hTixpbmZpbml0eSknOjpib3ggQVMgY2lyY2xlIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgY2lyY2xlICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyA8KE5hTixJbmZpbml0eSksTmFOPgorKDEgcm93KQorCitTRUxFQ1QgQ0FT VCgnKE5hTiwwLjApLCgyLjAsNC4wKSwoMC4wLGluZmluaXR5KSc6OnBvbHlnb24gQVMgcG9pbnQg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICBwb2ludCAgICAgIAorLS0t LS0tLS0tLS0tLS0tLQorIChOYU4sSW5maW5pdHkpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCco Mi4wLDAuMCksKDIuMCw0LjApLCgwLjAsMC4wKSc6OnBvbHlnb24gQVMgcGF0aCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgIHBhdGggICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICgoMiwwKSwoMiw0KSwoMCwwKSkKKygxIHJvdykKKworU0VMRUNUIENB U1QoJygyLjAsMC4wKSwoMi4wLDQuMCksKDAuMCwwLjApJzo6cG9seWdvbiBBUyBib3ggREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICBib3ggICAgIAorLS0tLS0tLS0tLS0t LQorICgyLDQpLCgwLDApCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoTmFOLGluZmluaXR5KSwo Mi4wLDQuMCksKDAuMCxpbmZpbml0eSknOjpwb2x5Z29uIEFTIGNpcmNsZSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgIGNpcmNsZSAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgPChOYU4sSW5maW5pdHkpLE5hTj4KKygxIHJvdykKKworU0VMRUNUIENB U1QoJzwoNSwxKSwzPic6OmNpcmNsZSBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgcG9pbnQgCistLS0tLS0tCisgKDUsMSkKKygxIHJvdykKKworU0VMRUNUIENB U1QoJzwoMyw1KSwwPic6OmNpcmNsZSBhcyBib3ggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworICAgICBib3ggICAgIAorLS0tLS0tLS0tLS0tLQorICgzLDUpLCgzLDUpCisoMSBy b3cpCisKK1NFTEVDVCBDQVNUKCc8KDMsNSksMD4nOjpjaXJjbGUgYXMgcG9seWdvbiBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgcG9seWdvbiAKKy0tLS0tLS0tLQorIAorKDEg cm93KQorCistLSBzYWZlIGNhc3Qgd2l0aCBtb25leSBkYXRhIHR5cGUKKy0tIGNhc3QgZnJvbSBt b25leSB0byBvdGhlciB0eXBlIGlzIG5vdCBlcnJvciBzYWZlCitTRUxFQ1QgQ0FTVCgnMTIzNDU2 Nzg5MDEyMzQ1Njc4Jzo6bnVtZXJpYyBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgbW9uZXkgCistLS0tLS0tCisgICAgICAKKygxIHJvdykKKworU0VMRUNUIENB U1QoJzEyMzQ1Njc4OTAxMjM0NTY3OCc6OmludDggQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworIG1vbmV5IAorLS0tLS0tLQorICAgICAgCisoMSByb3cpCisKK1NF TEVDVCBDQVNUKCcyMTQ3NDgzNjQ3Jzo6aW50NCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CisgICAgICAgbW9uZXkgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t CisgJDIsMTQ3LDQ4Myw2NDcuMDAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJy0yMTQ3NDgzNjQ4 Jzo6aW50NCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAg ICAgbW9uZXkgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtJDIsMTQ3LDQ4Myw2NDgu MDAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJy0wJzo6aW50NCBBUyBNT05FWSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbW9uZXkgCistLS0tLS0tCisgJDAuMDAKKygxIHJv dykKKworU0VMRUNUIENBU1QoTlVMTDo6bW9uZXkgQVMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgbW9uZXkgdG8gbnVt ZXJpYyB3aGVuIERFRkFVTFQgZXhwcmVzc2lvbiBpcyBzcGVjaWZpZWQgaW4gQ0FTVCAuLi4gT04g Q09OVkVSU0lPTiBFUlJPUgorTElORSAxOiBTRUxFQ1QgQ0FTVChOVUxMOjptb25leSBBUyBudW1l cmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU8uLi4KKyAgICAgICAgICAgICAgICAgICAgXgor REVUQUlMOiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVkIGJ1dCBkZWZpbml0aW9uIGlzIG5vdCBl cnJvciBzYWZlLgorU0VMRUNUIENBU1QoTlVMTDo6bW9uZXlbXSBBUyBudW1lcmljW10gREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIG1v bmV5W10gdG8gbnVtZXJpY1tdIHdoZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNwZWNpZmllZCBp biBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKE5VTEw6 Om1vbmV5W10gQVMgbnVtZXJpY1tdIERFRkFVTFQgTlVMTCBPTiBDT05WRS4uLgorICAgICAgICAg ICAgICAgICAgICBeCitERVRBSUw6ICBFeHBsaWNpdCBjYXN0IGlzIGRlZmluZWQgYnV0IGRlZmlu aXRpb24gaXMgbm90IGVycm9yIHNhZmUuCistLSBzYWZlIGNhc3QgZnJvbSBib29sZWFuIHR5cGUg dG8gb3RoZXIgZGF0YSB0eXBlcworU0VMRUNUIENBU1QodHJ1ZSBBUyBudW1lcmljIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBudW1lcmljIAorLS0tLS0tLS0tCisgICAgICAg IAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChmYWxzZSBBUyBpbnQgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworIGludDQgCistLS0tLS0KKyAgICAwCisoMSByb3cpCisKK1NFTEVD VCBDQVNUKGZhbHNlIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor IHRleHQgIAorLS0tLS0tLQorIGZhbHNlCisoMSByb3cpCisKKy0tIHNhZmUgY2FzdCBmcm9tIGJ5 dGVhIHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcworU0VMRUNUIENBU1QgKCdceDExMjIzMzQ0NTU2 Njc3ODg5OSc6OmJ5dGVhIEFTIGludDggREVGQVVMVCAxOSBPTiBDT05WRVJTSU9OIEVSUk9SKTsK KyBpbnQ4IAorLS0tLS0tCisgICAxOQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnXHgxMjM0NTY3 ODlBJzo6Ynl0ZWEgQVMgaW50NCBERUZBVUxUIDIwIE9OIENPTlZFUlNJT04gRVJST1IpOworIGlu dDQgCistLS0tLS0KKyAgIDIwCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdceDEyMzQ1Nic6OmJ5 dGVhIEFTIGludDIgREVGQVVMVCAyMSBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQyIAorLS0t LS0tCisgICAyMQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnXHgxMjM0NTY3ODkwYWJjZGVmJzo6 Ynl0ZWEgQVMgdXVpZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgdXVpZCAK Ky0tLS0tLQorIAorKDEgcm93KQorCistLSBzYWZlIGNhc3QgZnJvbSB1dWlkIHR5cGUgdG8gb3Ro ZXIgZGF0YSB0eXBlcworU0VMRUNUIENBU1QoJzViMzUzODBhLTcxNDMtNDkxMi05YjU1LWYzMjI2 OTljNjc3MCc6OnV1aWQgQVMgYnl0ZWEgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworICAgICAgICAgICAgICAgYnl0ZWEgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBceDViMzUzODBhNzE0MzQ5MTI5YjU1ZjMyMjY5OWM2Nzcw CisoMSByb3cpCisKKy0tIHNhZmUgY2FzdCByZWxhdGVkIHRvIG5ldHdvcmsgYWRkcmVzcyBkYXRh IHR5cGUKK1NFTEVDVCBDQVNUKCcxOTIuMTY4LjEueCcgYXMgaW5ldCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CisgaW5ldCAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVCgnMTkyLjE2OC4xLjIvMzAnIGFzIGNpZHIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworIGNpZHIgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzIyOjAw OjVjOjA4OjU1OjA4OjAxOjAyJzo6bWFjYWRkcjggYXMgbWFjYWRkciBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CisgbWFjYWRkciAKKy0tLS0tLS0tLQorIAorKDEgcm93KQorCist LSBzYWZlIGNhc3QgZnJvbSBiaXQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FT VCgnMTExMTExMTExMTAwMDAxJzo6Yml0KDEwMCkgQVMgSU5UIERFRkFVTFQgMjIgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgaW50NCAKKy0tLS0tLQorICAgMjIKKygxIHJvdykKKworU0VMRUNUIENB U1QgKCcxMTExMTExMTExMDAwMDEnOjpiaXQoMTAwKSBBUyBJTlQ4IERFRkFVTFQgMjMgT04gQ09O VkVSU0lPTiBFUlJPUik7CisgaW50OCAKKy0tLS0tLQorICAgMjMKKygxIHJvdykKKworLS0gc2Fm ZSBjYXN0IHJlbGF0ZWQgdG8gb2lkIGRhdGEgdHlwZQorU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDE6 OmJpZ2ludCBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIG9pZCAK Ky0tLS0tCisgICAgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTAxOjpiaWdpbnQg QVMgcmVncHJvYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgcmVncHJvYyAK Ky0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkwMTo6YmlnaW50 IEFTIHJlZ3Byb2NlZHVyZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgcmVn cHJvY2VkdXJlIAorLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMTIz NDU2Nzg5MDE6OmJpZ2ludCBBUyByZWdjbGFzcyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CisgcmVnY2xhc3MgCistLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNU KDEyMzQ1Njc4OTA6OmJpZ2ludCBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworICAgIG9pZCAgICAgCistLS0tLS0tLS0tLS0KKyAxMjM0NTY3ODkwCisoMSByb3cpCisK K1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTA6OmJpZ2ludCBBUyByZWdyb2xlIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgcmVncm9sZSAgIAorLS0tLS0tLS0tLS0tCisgMTIzNDU2 Nzg5MAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkwOjpiaWdpbnQgQVMgcmVnbmFt ZXNwYWNlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyByZWduYW1lc3BhY2Ug CistLS0tLS0tLS0tLS0tLQorIDEyMzQ1Njc4OTAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMTIz NDU2Nzg5MDo6YmlnaW50IEFTIHJlZ2RhdGFiYXNlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsKKyByZWdkYXRhYmFzZSAKKy0tLS0tLS0tLS0tLS0KKyAxMjM0NTY3ODkwCisoMSBy b3cpCisKKy0tIHNhZmUgY2FzdCBmcm9tIHRleHQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitT RUxFQ1QgQ0FTVCgnYS5iLmMuZCc6OnRleHQgYXMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworIHJlZ2NsYXNzIAorLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitD UkVBVEUgVEFCTEUgdGVzdF9zYWZlY2FzdDAoY29sMCB0ZXh0LCBjb2wxIGpzb25iKTsKK0lOU0VS VCBJTlRPIHRlc3Rfc2FmZWNhc3QwIFZBTFVFUyAoJzx2YWx1ZT5vbmU8L3ZhbHVlJywgJyJ0ZXN0 IicpOworU0VMRUNUIGNvbDAgYXMgdGV4dCwKKyAgICAgICBDQVNUKGNvbDAgQVMgcmVnY2xhc3Mg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3JlZ2NsYXNzLAorICAgICAg IENBU1QoY29sMCBBUyByZWdjbGFzcyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg SVMgTlVMTCBhcyBleHBlY3RfdHJ1ZSwKKyAgICAgICBDQVNUKGNvbDAgQVMgImNoYXIiICBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fY2hhciwKKyAgICAgICBDQVNUKGNv bDAgQVMgbmFtZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbmFtZQor RlJPTSB0ZXN0X3NhZmVjYXN0MDsKKyAgICAgICB0ZXh0ICAgICAgICB8IHRvX3JlZ2NsYXNzIHwg ZXhwZWN0X3RydWUgfCB0b19jaGFyIHwgICAgICB0b19uYW1lICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLQorIDx2YWx1ZT5vbmU8L3ZhbHVlIHwgICAgICAgICAgICAgfCB0ICAgICAgICAgICB8 IDwgICAgICAgfCA8dmFsdWU+b25lPC92YWx1ZQorKDEgcm93KQorCistLSBzYWZlIHR5cGUgY2Fz dCBmb3IganNvbmIgZGF0YSB0eXBlCitTRUxFQ1QgY29sMSBhcyBqc29uYiwKKyAgICAgICBDQVNU KGNvbDEgQVMgaW50ZWdlciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f aW50ZWdlciwKKyAgICAgICBDQVNUKGNvbDEgQVMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDEgQVMgYmlnaW50 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENB U1QoY29sMSBBUyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDEgQVMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wxIEFTIGJvb2xlYW4g REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Jvb2wsCisgICAgICAgQ0FT VChjb2wxIEFTIHNtYWxsaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19zbWFsbGludAorRlJPTSB0ZXN0X3NhZmVjYXN0MDsKKyBqc29uYiAgfCB0b19pbnRlZ2VyIHwg dG9fbnVtZXJpYyB8IHRvX2ludDggfCB0b19mbG9hdDQgfCB0b19mbG9hdDggfCB0b19ib29sIHwg dG9fc21hbGxpbnQgCistLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorICJ0ZXN0 IiB8ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICB8ICAgICAg ICAgICB8ICAgICAgICAgfCAgICAgICAgICAgIAorKDEgcm93KQorCistLSB0ZXN0IENBU1QgREVG QVVMVCBleHByZXNzaW9uIG11dGFiaWxpdHkKK0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBP TiB0ZXN0X3NhZmVjYXN0MCgoQ0FTVChjb2wxIGFzIGludCBERUZBVUxUIHJhbmRvbShtaW49PjEs IG1heD0+MSkgT04gQ09OVkVSU0lPTiBFUlJPUikpKTsgLS0gZXJyb3IKK0VSUk9SOiAgZnVuY3Rp b25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitMSU5FIDE6 IENSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MCgoQ0FTVChjb2wx IGFzIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorQ1JFQVRFIElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3QwKChD QVNUKGNvbDEgYXMgeGlkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSkpOyAtLSBl cnJvcgorRVJST1I6ICBkYXRhIHR5cGUgeGlkIGhhcyBubyBkZWZhdWx0IG9wZXJhdG9yIGNsYXNz IGZvciBhY2Nlc3MgbWV0aG9kICJidHJlZSIKK0hJTlQ6ICBZb3UgbXVzdCBzcGVjaWZ5IGFuIG9w ZXJhdG9yIGNsYXNzIGZvciB0aGUgaW5kZXggb3IgZGVmaW5lIGEgZGVmYXVsdCBvcGVyYXRvciBj bGFzcyBmb3IgdGhlIGRhdGEgdHlwZS4KK0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0 ZXN0X3NhZmVjYXN0MCgoQ0FTVChjb2wxIGFzIGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikpKTsgLS0gb2sKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoJ2Nhc3RfZXJyb3JfaWR4 Jzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQ1JFQVRFIElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHB1YmxpYy50ZXN0X3NhZmVjYXN0MCBV U0lORyBidHJlZSAoKENBU1QoY29sMSBBUyBpbnRlZ2VyIERFRkFVTFQgTlVMTDo6aW50ZWdlciBP TiBDT05WRVJTSU9OIEVSUk9SKSkpCisoMSByb3cpCisKKy0tIHNhZmUgY2FzdCBiZXR3ZWVlbiBy YW5nZSBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgnWzEsMl0nOjppbnQ0cmFuZ2UgQVMgaW50NG11 bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDRtdWx0aXJh bmdlIAorLS0tLS0tLS0tLS0tLS0tLQorIHtbMSwzKX0KKygxIHJvdykKKworU0VMRUNUIENBU1Qo J1sxLDJdJzo6aW50OHJhbmdlIEFTIGludDhtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKyBpbnQ4bXVsdGlyYW5nZSAKKy0tLS0tLS0tLS0tLS0tLS0KKyB7WzEs Myl9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdbMSwyXSc6Om51bXJhbmdlICBBUyBudW1tdWx0 aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBudW1tdWx0aXJhbmdl IAorLS0tLS0tLS0tLS0tLS0tCisge1sxLDJdfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWy1p bmZpbml0eSxpbmZpbml0eV0nOjpkYXRlcmFuZ2UgQVMgZGF0ZW11bHRpcmFuZ2UgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICBkYXRlbXVsdGlyYW5nZSAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7Wy1pbmZpbml0eSxpbmZpbml0eV19CisoMSByb3cpCisK K1NFTEVDVCBDQVNUKCdbLWluZmluaXR5LGluZmluaXR5XSc6OnRzcmFuZ2UgQVMgdHNtdWx0aXJh bmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgIHRzbXVsdGlyYW5n ZSAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1staW5maW5pdHksaW5maW5pdHld fQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjp0c3R6cmFu Z2UgQVMgdHN0em11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor ICAgICB0c3R6bXVsdGlyYW5nZSAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7Wy1p bmZpbml0eSxpbmZpbml0eV19CisoMSByb3cpCisKKy0tIHNhZmUgY2FzdCBiZXR3ZWVlbiBudW1l cmljIGRhdGEgdHlwZXMKK0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVjYXN0MSgKKyAgY29sMSBmbG9h dDQsIGNvbDIgZmxvYXQ4LCBjb2wzIG51bWVyaWMsIGNvbDQgbnVtZXJpY1tdLAorICBjb2w1IGlu dDIgZGVmYXVsdCAzMjc2NywKKyAgY29sNiBpbnQ0IGRlZmF1bHQgMzI3NjgsCisgIGNvbDcgaW50 OCBkZWZhdWx0IDQyOTQ5NjcyOTYpOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDEgVkFMVUVT KCcxMS4xMjM0JywgJzExLjEyMzQnLCAnOTIyMzM3MjAzNjg1NDc3NTgwOCcsICd7MTEuMTIzNH0n OjpudW1lcmljW10pOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDEgVkFMVUVTKCdpbmYnLCAn aW5mJywgJ2luZicsICd7MTEuMTIzNCwgMTIsIGluZiwgTmFOfSc6Om51bWVyaWNbXSk7CitJTlNF UlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJy1pbmYnLCAnLWluZicsICctaW5mJywgJ3sx MS4xMjM0LCAxMiwgLWluZiwgTmFOfSc6Om51bWVyaWNbXSk7CitJTlNFUlQgSU5UTyB0ZXN0X3Nh ZmVjYXN0MSBWQUxVRVMoJ05hTicsICdOYU4nLCAnTmFOJywgJ3sxMS4xMjM0LCAxMiwgLWluZiwg TmFOfSc6Om51bWVyaWNbXSk7CitTRUxFQ1QgY29sNSBhcyBpbnQyLAorICAgICAgIENBU1QoY29s NSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAor ICAgICAgIENBU1QoY29sNSBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sNSBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDUgYXMgaW50OCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNv bDUgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9h dDQsCisgICAgICAgQ0FTVChjb2w1IGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sNSBhcyBudW1lcmljIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1Qo Y29sNSBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworIGludDIgIHwgdG9faW50 MiB8IHRvX2ludDQgfCB0b19vaWQgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgdG9fZmxvYXQ4IHwg dG9fbnVtZXJpYyB8IHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyAzMjc2NyB8ICAgMzI3NjcgfCAgIDMyNzY3IHwgIDMyNzY3 IHwgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAgMzI3NjcgfCAgICAgICAg ICAzMjc2Ny4wCisgMzI3NjcgfCAgIDMyNzY3IHwgICAzMjc2NyB8ICAzMjc2NyB8ICAgMzI3Njcg fCAgICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgIDMyNzY3IHwgICAgICAgICAgMzI3NjcuMAor IDMyNzY3IHwgICAzMjc2NyB8ICAgMzI3NjcgfCAgMzI3NjcgfCAgIDMyNzY3IHwgICAgIDMyNzY3 IHwgICAgIDMyNzY3IHwgICAgICAzMjc2NyB8ICAgICAgICAgIDMyNzY3LjAKKyAzMjc2NyB8ICAg MzI3NjcgfCAgIDMyNzY3IHwgIDMyNzY3IHwgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAzMjc2 NyB8ICAgICAgMzI3NjcgfCAgICAgICAgICAzMjc2Ny4wCisoNCByb3dzKQorCitTRUxFQ1QgY29s NiBhcyBpbnQ0LAorICAgICAgIENBU1QoY29sNiBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sNiBBUyBpbnQ0IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29s NiBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAg ICAgICBDQVNUKGNvbDYgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDYgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2w2IGFzIGZsb2F0 OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAg IENBU1QoY29sNiBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sNiBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rf c2FmZWNhc3QxOworIGludDQgIHwgdG9faW50MiB8IHRvX2ludDQgfCB0b19vaWQgfCB0b19pbnQ4 IHwgdG9fZmxvYXQ0IHwgdG9fZmxvYXQ4IHwgdG9fbnVtZXJpYyB8IHRvX251bWVyaWNfc2NhbGUg CistLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAzMjc2OCB8 ICAgICAgICAgfCAgIDMyNzY4IHwgIDMyNzY4IHwgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAz Mjc2OCB8ICAgICAgMzI3NjggfCAgICAgICAgICAzMjc2OC4wCisgMzI3NjggfCAgICAgICAgIHwg ICAzMjc2OCB8ICAzMjc2OCB8ICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAg IDMyNzY4IHwgICAgICAgICAgMzI3NjguMAorIDMyNzY4IHwgICAgICAgICB8ICAgMzI3NjggfCAg MzI3NjggfCAgIDMyNzY4IHwgICAgIDMyNzY4IHwgICAgIDMyNzY4IHwgICAgICAzMjc2OCB8ICAg ICAgICAgIDMyNzY4LjAKKyAzMjc2OCB8ICAgICAgICAgfCAgIDMyNzY4IHwgIDMyNzY4IHwgICAz Mjc2OCB8ICAgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAgMzI3NjggfCAgICAgICAgICAzMjc2 OC4wCisoNCByb3dzKQorCitTRUxFQ1QgY29sNyBhcyBpbnQ4LAorICAgICAgIENBU1QoY29sNyBB UyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAg ICAgIENBU1QoY29sNyBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sNyBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDcgYXMgaW50OCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDcg YXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQs CisgICAgICAgQ0FTVChjb2w3IGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sNyBhcyBudW1lcmljIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29s NyBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworICAgIGludDggICAgfCB0b19p bnQyIHwgdG9faW50NCB8IHRvX29pZCB8ICB0b19pbnQ4ICAgfCAgdG9fZmxvYXQ0ICB8IHRvX2Zs b2F0OCAgfCB0b19udW1lcmljIHwgdG9fbnVtZXJpY19zY2FsZSAKKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgNDI5NDk2NzI5NiB8ICAg ICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgNDI5NDk2NzI5NiB8IDQuMjk0OTdlKzA5IHwgNDI5 NDk2NzI5NiB8IDQyOTQ5NjcyOTYgfCAgICAgICAgICAgICAgICAgCisgNDI5NDk2NzI5NiB8ICAg ICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgNDI5NDk2NzI5NiB8IDQuMjk0OTdlKzA5IHwgNDI5 NDk2NzI5NiB8IDQyOTQ5NjcyOTYgfCAgICAgICAgICAgICAgICAgCisgNDI5NDk2NzI5NiB8ICAg ICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgNDI5NDk2NzI5NiB8IDQuMjk0OTdlKzA5IHwgNDI5 NDk2NzI5NiB8IDQyOTQ5NjcyOTYgfCAgICAgICAgICAgICAgICAgCisgNDI5NDk2NzI5NiB8ICAg ICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgNDI5NDk2NzI5NiB8IDQuMjk0OTdlKzA5IHwgNDI5 NDk2NzI5NiB8IDQyOTQ5NjcyOTYgfCAgICAgICAgICAgICAgICAgCisoNCByb3dzKQorCitTRUxF Q1QgY29sMyBhcyBudW1lcmljLAorICAgICAgIENBU1QoY29sMyBBUyBpbnQyIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sMyBBUyBp bnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAg IENBU1QoY29sMyBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X29pZCwKKyAgICAgICBDQVNUKGNvbDMgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDMgYXMgZmxvYXQ0IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wz IGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4 LAorICAgICAgIENBU1QoY29sMyBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sMyBhcyBudW1lcmljKDEwLDEp IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitG Uk9NIHRlc3Rfc2FmZWNhc3QxOworICAgICAgIG51bWVyaWMgICAgICAgfCB0b19pbnQyIHwgdG9f aW50NCB8IHRvX29pZCB8IHRvX2ludDggfCAgdG9fZmxvYXQ0ICB8ICAgICAgdG9fZmxvYXQ4ICAg ICAgIHwgICAgIHRvX251bWVyaWMgICAgICB8IHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0KKyA5MjIzMzcyMDM2ODU0Nzc1ODA4IHwgICAgICAgICB8ICAgICAgICAg fCAgICAgICAgfCAgICAgICAgIHwgOS4yMjMzN2UrMTggfCA5LjIyMzM3MjAzNjg1NDc4ZSsxOCB8 IDkyMjMzNzIwMzY4NTQ3NzU4MDggfCAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBJbmZp bml0eSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgIEluZmluaXR5 IHwgICAgICAgICAgICAgSW5maW5pdHkgfCAgICAgICAgICAgIEluZmluaXR5IHwgICAgICAgICAg ICAgICAgIAorICAgICAgICAgICAtSW5maW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAg ICB8ICAgICAgICAgfCAgIC1JbmZpbml0eSB8ICAgICAgICAgICAgLUluZmluaXR5IHwgICAgICAg ICAgIC1JbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgTmFOIHwg ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgICAgICAgICBOYU4gfCAgICAg ICAgICAgICAgICAgIE5hTiB8ICAgICAgICAgICAgICAgICBOYU4gfCAgICAgICAgICAgICAgTmFO CisoNCByb3dzKQorCitTRUxFQ1QgY29sNCBhcyBudW1fYXJyLAorICAgICAgIENBU1QoY29sNCBB UyBpbnQyW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGludDJhcnIsCisg ICAgICAgQ0FTVChjb2w0IEFTIGludDRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgaW50NGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgaW50OFtdIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyBpbnQ4YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBmbG9h dDRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgZjRhcnIsCisgICAgICAg Q0FTVChjb2w0IGFzIGZsb2F0OFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyBmOGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgbnVtZXJpYygxMCwxKVtdIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBudW1hcnIKK0ZST00gdGVzdF9zYWZlY2FzdDE7Cisg ICAgICAgICAgbnVtX2FyciAgICAgICAgICAgfCBpbnQyYXJyIHwgaW50NGFyciB8IGludDhhcnIg fCAgICAgICAgICAgZjRhcnIgICAgICAgICAgICB8ICAgICAgICAgICBmOGFyciAgICAgICAgICAg IHwgbnVtYXJyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyB7MTEuMTIzNH0gICAgICAgICAgICAgICAgICB8IHsx MX0gICAgfCB7MTF9ICAgIHwgezExfSAgICB8IHsxMS4xMjM0fSAgICAgICAgICAgICAgICAgIHwg ezExLjEyMzR9ICAgICAgICAgICAgICAgICAgfCB7MTEuMX0KKyB7MTEuMTIzNCwxMixJbmZpbml0 eSxOYU59ICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8IHsxMS4xMjM0LDEyLEluZmlu aXR5LE5hTn0gIHwgezExLjEyMzQsMTIsSW5maW5pdHksTmFOfSAgfCAKKyB7MTEuMTIzNCwxMiwt SW5maW5pdHksTmFOfSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8IHsxMS4xMjM0LDEy LC1JbmZpbml0eSxOYU59IHwgezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCAKKyB7MTEuMTIz NCwxMiwtSW5maW5pdHksTmFOfSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8IHsxMS4x MjM0LDEyLC1JbmZpbml0eSxOYU59IHwgezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCAKKyg0 IHJvd3MpCisKK1NFTEVDVCBjb2wxIGFzIGZsb2F0NCwKKyAgICAgICBDQVNUKGNvbDEgQVMgaW50 MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBD QVNUKGNvbDEgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f aW50NCwKKyAgICAgICBDQVNUKGNvbDEgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2wxIGFzIGludDggREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wxIGFzIGZs b2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAg ICAgIENBU1QoY29sMSBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDEgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDEgYXMg bnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVt ZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyAgZmxvYXQ0ICAgfCB0b19pbnQyIHwg dG9faW50NCB8IHRvX29pZCB8IHRvX2ludDggfCB0b19mbG9hdDQgfCAgICB0b19mbG9hdDggICAg IHwgdG9fbnVtZXJpYyB8IHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgMTEuMTIzNCB8ICAgICAgMTEg fCAgICAgIDExIHwgICAgICAgIHwgICAgICAxMSB8ICAgMTEuMTIzNCB8IDExLjEyMzM5OTczNDQ5 NzEgfCAgICAxMS4xMjM0IHwgICAgICAgICAgICAgMTEuMQorICBJbmZpbml0eSB8ICAgICAgICAg fCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICBJbmZpbml0eSB8ICAgICAgICAgSW5maW5p dHkgfCAgIEluZmluaXR5IHwgICAgICAgICAgICAgICAgIAorIC1JbmZpbml0eSB8ICAgICAgICAg fCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8IC1JbmZpbml0eSB8ICAgICAgICAtSW5maW5p dHkgfCAgLUluZmluaXR5IHwgICAgICAgICAgICAgICAgIAorICAgICAgIE5hTiB8ICAgICAgICAg fCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgIE5hTiB8ICAgICAgICAgICAgICBO YU4gfCAgICAgICAgTmFOIHwgICAgICAgICAgICAgIE5hTgorKDQgcm93cykKKworU0VMRUNUIGNv bDIgYXMgZmxvYXQ4LAorICAgICAgIENBU1QoY29sMiBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sMiBBUyBpbnQ0IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1Qo Y29sMiBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwK KyAgICAgICBDQVNUKGNvbDIgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDIgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wyIGFzIGZs b2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAg ICAgIENBU1QoY29sMiBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sMiBhcyBudW1lcmljKDEwLDEpIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRl c3Rfc2FmZWNhc3QxOworICBmbG9hdDggICB8IHRvX2ludDIgfCB0b19pbnQ0IHwgdG9fb2lkIHwg dG9faW50OCB8IHRvX2Zsb2F0NCB8IHRvX2Zsb2F0OCB8IHRvX251bWVyaWMgfCB0b19udW1lcmlj X3NjYWxlIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorICAgMTEuMTIzNCB8ICAgICAgMTEgfCAgICAgIDExIHwgICAgICAgIHwgICAgICAxMSB8ICAg MTEuMTIzNCB8ICAgMTEuMTIzNCB8ICAgIDExLjEyMzQgfCAgICAgICAgICAgICAxMS4xCisgIElu ZmluaXR5IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgIEluZmluaXR5 IHwgIEluZmluaXR5IHwgICBJbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAtSW5maW5pdHkg fCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAtSW5maW5pdHkgfCAtSW5m aW5pdHkgfCAgLUluZmluaXR5IHwgICAgICAgICAgICAgICAgIAorICAgICAgIE5hTiB8ICAgICAg ICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgIE5hTiB8ICAgICAgIE5hTiB8 ICAgICAgICBOYU4gfCAgICAgICAgICAgICAgTmFOCisoNCByb3dzKQorCistLSBzYWZlIHR5cGUg Y2FzdCBmb3IgdHlwZSBkYXRlL3RpbWVzdGFtcC90aW1lc3RhbXB0ei9pbnRlcnZhbAorQ1JFQVRF IFRBQkxFIHRlc3Rfc2FmZWNhc3QyKAorICBjb2wwIGRhdGUsIGNvbDEgdGltZXN0YW1wLCBjb2wy IHRpbWVzdGFtcHR6LAorICBjb2wzIGludGVydmFsLCBjb2w0IHRpbWUsIGNvbDUgdGltZXR6KTsK K0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QyIFZBTFVFUworKCctaW5maW5pdHknLCAnLWluZmlu aXR5JywgJy1pbmZpbml0eScsICctaW5maW5pdHknLAorICAnMjAwMy0wMy0wNyAxNTozNjozOSBB bWVyaWNhL05ld19Zb3JrJywgJzIwMDMtMDctMDcgMTU6MzY6MzkgQW1lcmljYS9OZXdfWW9yaycp LAorKCctaW5maW5pdHknLCAnaW5maW5pdHknLCAnaW5maW5pdHknLCAnaW5maW5pdHknLCAnMTE6 NTk6NTkuOTkgUE0nLCAnMTE6NTk6NTkuOTkgUE0gUERUJyk7CitTRUxFQ1QgY29sMCBhcyBkYXRl LAorICAgICAgIENBU1QoY29sMCBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wwIEFTIGRhdGUg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FT VChjb2wwIEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3Rp bWVzLAorICAgICAgIENBU1QoY29sMCBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXN0YW1wKDIp IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUK K0ZST00gdGVzdF9zYWZlY2FzdDI7CisgICBkYXRlICAgIHwgdG9fdGltZXN0YW1wdHogfCAgdG9f ZGF0ZSAgfCB0b190aW1lcyB8IHRvX3RpbWV0eiB8IHRvX3RpbWVzdGFtcF9zY2FsZSAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLQorIC1pbmZpbml0eSB8IC1pbmZpbml0eSAgICAgIHwgLWlu ZmluaXR5IHwgICAgICAgICAgfCAgICAgICAgICAgfCAtaW5maW5pdHkKKyAtaW5maW5pdHkgfCAt aW5maW5pdHkgICAgICB8IC1pbmZpbml0eSB8ICAgICAgICAgIHwgICAgICAgICAgIHwgLWluZmlu aXR5CisoMiByb3dzKQorCitTRUxFQ1QgY29sMSBhcyB0aW1lc3RhbXAsCisgICAgICAgQ0FTVChj b2wxIEFTIHRpbWVzdGFtcHR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b190aW1lc3RhbXB0eiwKKyAgICAgICBDQVNUKGNvbDEgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZGF0ZSwKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FT VChjb2wxIEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f dGltZXR6LAorICAgICAgIENBU1QoY29sMSBBUyB0aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVj YXN0MjsKKyB0aW1lc3RhbXAgfCB0b190aW1lc3RhbXB0eiB8ICB0b19kYXRlICB8IHRvX3RpbWVz IHwgdG9fdGltZXR6IHwgdG9fdGltZXN0YW1wX3NjYWxlIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tCisgLWluZmluaXR5IHwgLWluZmluaXR5ICAgICAgfCAtaW5maW5pdHkgfCAgICAgICAg ICB8ICAgICAgICAgICB8IC1pbmZpbml0eQorIGluZmluaXR5ICB8IGluZmluaXR5ICAgICAgIHwg aW5maW5pdHkgIHwgICAgICAgICAgfCAgICAgICAgICAgfCBpbmZpbml0eQorKDIgcm93cykKKwor U0VMRUNUIGNvbDIgYXMgdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWVzdGFt cHR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwK KyAgICAgICBDQVNUKGNvbDIgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fZGF0ZSwKKyAgICAgICBDQVNUKGNvbDIgQVMgdGltZSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWV0 eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAg IENBU1QoY29sMiBBUyB0aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX3RpbWVzdGFtcF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKyB0aW1lc3Rh bXB0eiB8IHRvX3RpbWVzdGFtcHR6IHwgIHRvX2RhdGUgIHwgdG9fdGltZXMgfCB0b190aW1ldHog fCB0b190aW1lc3RhbXBfc2NhbGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLQorIC1p bmZpbml0eSAgIHwgLWluZmluaXR5ICAgICAgfCAtaW5maW5pdHkgfCAgICAgICAgICB8ICAgICAg ICAgICB8IC1pbmZpbml0eQorIGluZmluaXR5ICAgIHwgaW5maW5pdHkgICAgICAgfCBpbmZpbml0 eSAgfCAgICAgICAgICB8ICAgICAgICAgICB8IGluZmluaXR5CisoMiByb3dzKQorCitTRUxFQ1Qg Y29sMyBhcyBpbnRlcnZhbCwKKyAgICAgICBDQVNUKGNvbDMgQVMgdGltZXN0YW1wdHogREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENB U1QoY29sMyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19k YXRlLAorICAgICAgIENBU1QoY29sMyBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDMgQVMgdGltZXR6IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wz IEFTIHRpbWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f dGltZXN0YW1wX3NjYWxlLAorICAgICAgIENBU1QoY29sMyBBUyBpbnRlcnZhbCgyKSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVz dF9zYWZlY2FzdDI7CisgaW50ZXJ2YWwgIHwgdG9fdGltZXN0YW1wdHogfCB0b19kYXRlIHwgdG9f dGltZXMgfCB0b190aW1ldHogfCB0b190aW1lc3RhbXBfc2NhbGUgfCB0b19pbnRlcnZhbF9zY2Fs ZSAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIC1pbmZp bml0eSB8ICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgIHwgLWluZmluaXR5CisgaW5maW5pdHkgIHwgICAgICAgICAgICAg ICAgfCAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg fCBpbmZpbml0eQorKDIgcm93cykKKworU0VMRUNUIGNvbDQgYXMgdGltZSwKKyAgICAgICBDQVNU KGNvbDQgQVMgdGltZSgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f dGltZXMsCisgICAgICAgQ0FTVChjb2w0IEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgSVMgTk9UIE5VTEwgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sNCBB UyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50 ZXJ2YWwsCisgICAgICAgQ0FTVChjb2w0IEFTIGludGVydmFsKDIpIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0 MjsKKyAgICB0aW1lICAgICB8ICB0b190aW1lcyAgIHwgdG9fdGltZXR6IHwgICAgICAgICAgdG9f aW50ZXJ2YWwgICAgICAgICAgfCAgICAgICB0b19pbnRlcnZhbF9zY2FsZSAgICAgICAKKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxNTozNjozOSAgICB8 IDE1OjM2OjM5ICAgIHwgdCAgICAgICAgIHwgQCAxNSBob3VycyAzNiBtaW5zIDM5IHNlY3MgICAg fCBAIDE1IGhvdXJzIDM2IG1pbnMgMzkgc2VjcworIDIzOjU5OjU5Ljk5IHwgMjM6NTk6NTkuOTkg fCB0ICAgICAgICAgfCBAIDIzIGhvdXJzIDU5IG1pbnMgNTkuOTkgc2VjcyB8IEAgMjMgaG91cnMg NTkgbWlucyA1OS45OSBzZWNzCisoMiByb3dzKQorCitTRUxFQ1QgY29sNSBhcyB0aW1ldHosCisg ICAgICAgQ0FTVChjb2w1IEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX3RpbWUsCisgICAgICAgQ0FTVChjb2w1IEFTIHRpbWUoMikgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVfc2NhbGUsCisgICAgICAgQ0FTVChjb2w1IEFT IHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAor ICAgICAgIENBU1QoY29sNSBBUyB0aW1ldHooNikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX3RpbWV0el9zY2FsZSwKKyAgICAgICBDQVNUKGNvbDUgQVMgaW50ZXJ2YWwg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsLAorICAgICAg IENBU1QoY29sNSBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisgICAgIHRpbWV0 eiAgICAgfCAgIHRvX3RpbWUgICB8IHRvX3RpbWVfc2NhbGUgfCAgIHRvX3RpbWV0eiAgICB8IHRv X3RpbWV0el9zY2FsZSB8IHRvX2ludGVydmFsIHwgdG9faW50ZXJ2YWxfc2NhbGUgCistLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgMTU6 MzY6MzktMDQgICAgfCAxNTozNjozOSAgICB8IDE1OjM2OjM5ICAgICAgfCAxNTozNjozOS0wNCAg ICB8IDE1OjM2OjM5LTA0ICAgICB8ICAgICAgICAgICAgIHwgCisgMjM6NTk6NTkuOTktMDcgfCAy Mzo1OTo1OS45OSB8IDIzOjU5OjU5Ljk5ICAgfCAyMzo1OTo1OS45OS0wNyB8IDIzOjU5OjU5Ljk5 LTA3ICB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCistLSB0ZXN0IGRlcGFyc2UKK1NFVCBk YXRlc3R5bGUgVE8gSVNPLCBZTUQ7CitDUkVBVEUgVklFVyBzYWZlY2FzdHZpZXcgQVMKK1NFTEVD VCBDQVNUKCcxMjM0JyBhcyBjaGFyKDMpIERFRkFVTFQgLTExMTEgT04gQ09OVkVSU0lPTiBFUlJP UiksCisgICAgICAgQ0FTVCgxIGFzIGRhdGUgREVGQVVMVCAoKCcyMDI1LURlYy0wNic6OmRhdGUg KyByYW5kb20obWluPT4xLCBtYXg9PjE6OmludCkpKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBj YXN0MCwKKyAgICAgICBDQVNUKEFSUkFZW1snMSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGludFtd IERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MSwKKyAgICAgICBD QVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnLCAnYSddXSBBUyBkYXRlW10gREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QyLAorICAgICAgIENBU1QoQVJSQVlbJ3Ro cmVlJ10gQVMgSU5UW10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNh c3QzOworXHN2IHNhZmVjYXN0dmlldworQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuc2Fm ZWNhc3R2aWV3IEFTCisgU0VMRUNUIENBU1QoJzEyMzQnIEFTIGNoYXJhY3RlcigzKSBERUZBVUxU ICctMTExMSc6OmludGVnZXI6OmNoYXJhY3RlcigzKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBBUyBi cGNoYXIsCisgICAgQ0FTVCgxIEFTIGRhdGUgREVGQVVMVCAnMjAyNS0xMi0wNic6OmRhdGUgKyBy YW5kb20obWluID0+IDEsIG1heCA9PiAxKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBBUyBjYXN0MCwK KyAgICBDQVNUKEFSUkFZW0FSUkFZWzFdLCBBUlJBWVsndGhyZWUnXSwgQVJSQVlbJ2EnXV0gQVMg aW50ZWdlcltdIERFRkFVTFQgJ3sxLDJ9Jzo6aW50ZWdlcltdIE9OIENPTlZFUlNJT04gRVJST1Ip IEFTIGNhc3QxLAorICAgIENBU1QoQVJSQVlbQVJSQVlbJzEnLCAnMiddLCBBUlJBWVsndGhyZWUn LCAnYSddXSBBUyBkYXRlW10gREVGQVVMVCBOVUxMOjpkYXRlW10gT04gQ09OVkVSU0lPTiBFUlJP UikgQVMgY2FzdDIsCisgICAgQ0FTVChBUlJBWVsndGhyZWUnXSBBUyBpbnRlZ2VyW10gREVGQVVM VCAnezEsMn0nOjppbnRlZ2VyW10gT04gQ09OVkVSU0lPTiBFUlJPUikgQVMgY2FzdDMKK1NFTEVD VCAqIEZST00gc2FmZWNhc3R2aWV3OworIGJwY2hhciB8ICAgY2FzdDAgICAgfCBjYXN0MSB8IGNh c3QyIHwgY2FzdDMgCistLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0KKyAxMjMgICAgfCAyMDI1LTEyLTA3IHwgezEsMn0gfCAgICAgICB8IHsxLDJ9CisoMSByb3cp CisKK0NSRUFURSBWSUVXIHNhZmVjYXN0dmlldzEgQVMKK1NFTEVDVCBDQVNUKEFSUkFZW1snMSdd LCBbJ3RocmVlJ10sWydhJ11dIEFTIGRfaW50X2FycgorICAgICAgICAgICAgREVGQVVMVCAnezQx LDQzfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDEsCisgICAgICAgQ0FTVChBUlJBWVtb JzEnLCAnMicsIDEuMV0sIFsndGhyZWUnLCB0cnVlLCBCJzAxJ11dIEFTIGRfaW50X2FycgorICAg ICAgICAgICAgREVGQVVMVCAnezQxLDQzfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDI7 Citcc3Ygc2FmZWNhc3R2aWV3MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuc2FmZWNh c3R2aWV3MSBBUworIFNFTEVDVCBDQVNUKEFSUkFZW0FSUkFZWzFdLCBBUlJBWVsndGhyZWUnXSwg QVJSQVlbJ2EnXV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgJ3s0MSw0M30nOjppbnRlZ2VyW106OmRf aW50X2FyciBPTiBDT05WRVJTSU9OIEVSUk9SKSBBUyBjYXN0MSwKKyAgICBDQVNUKEFSUkFZW0FS UkFZWzEsIDIsIDEuMTo6aW50ZWdlcl0sIEFSUkFZWyd0aHJlZScsIHRydWUsICcwMSc6OiJiaXQi XV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgJ3s0MSw0M30nOjppbnRlZ2VyW106OmRfaW50X2FyciBP TiBDT05WRVJTSU9OIEVSUk9SKSBBUyBjYXN0MgorU0VMRUNUICogRlJPTSBzYWZlY2FzdHZpZXcx OworICBjYXN0MSAgfCAgY2FzdDIgIAorLS0tLS0tLS0tKy0tLS0tLS0tLQorIHs0MSw0M30gfCB7 NDEsNDN9CisoMSByb3cpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIENB U1QoJzEnIHx8ICdhJyBBUyBpbnQgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVz dWx0CisgICBPdXRwdXQ6IENBU1QoKCcxJzo6dGV4dCB8fCAnYSc6OnRleHQpIEFTIGludGVnZXIg REVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpCisoMiByb3dzKQorCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBDQVNUKCdhJyBBUyBpbnQgREVGQVVMVCAyIE9OIENPTlZF UlNJT04gRVJST1IpOworICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IENBU1QoJ2En IEFTIGludGVnZXIgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpCisoMiByb3dzKQorCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJywg MS4xXSwgWyd0aHJlZScsIHRydWUsIEInMDEnXV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBS ZXN1bHQKKyAgIE91dHB1dDogQ0FTVChBUlJBWVtBUlJBWVsxLCAyLCAoMS4xKTo6aW50ZWdlcl0s IEFSUkFZWyd0aHJlZScsIHRydWUsICcwMSc6OiJiaXQiXV0gQVMgZF9pbnRfYXJyIERFRkFVTFQg KE5VTEw6OmludGVnZXJbXSk6OmRfaW50X2FyciBPTiBDT05WRVJTSU9OIEVSUk9SKQorKDIgcm93 cykKKworUkVTRVQgZGF0ZXN0eWxlOworRFJPUCBWSUVXIHNhZmVjYXN0dmlldzsKK0RST1AgVklF VyBzYWZlY2FzdHZpZXcxOworRFJPUCBUQUJMRSB0ZXN0X3NhZmVjYXN0MDsKK0RST1AgVEFCTEUg dGVzdF9zYWZlY2FzdDE7CitEUk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3QyOworRFJPUCBUQUJMRSB0 Y2FzdDsKK0RST1AgVEFCTEUgdGNhc3QxOworRFJPUCBGVU5DVElPTiByZXRfaW50ODsKK0RST1Ag RlVOQ1RJT04gcmV0X3NldGludDsKK0RST1AgVFlQRSBjb21wX2RvbWFpbl93aXRoX3R5cG1vZDsK K0RST1AgVFlQRSBjb21wMjsKK0RST1AgRE9NQUlOIGRfbm90YTsKK0RST1AgRE9NQUlOIGRfdmFy Y2hhcjsKK0RST1AgRE9NQUlOIGRfaW50OGFycjsKK0RST1AgRE9NQUlOIGRfaW50ODsKK0RST1Ag RE9NQUlOIGRfaW50NDJhcnIxOworRFJPUCBET01BSU4gZF9pbnQ0MmFycjsKK0RST1AgRE9NQUlO IGRfaW50NDI7CitEUk9QIERPTUFJTiBkX2NoYXIzX25vdF9udWxsOworRFJPUCBET01BSU4gZF9u dW1lcmljOworUkVTRVQgZXh0cmFfZmxvYXRfZGlnaXRzOworUkVTRVQgbGNfbW9uZXRhcnk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9jYXN0Lm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0CmluZGV4IDBlNjk2NDRiY2Ey Li4yOGM4ODBiMTBlMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVh dGVfY2FzdC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfY2FzdC5v dXQKQEAgLTg4LDYgKzg4LDExIEBAIFNFTEVDVCAxMjM0OjppbnQ0OjpjYXN0dGVzdHR5cGU7IC0t IFNob3VsZCB3b3JrIG5vdwogIGJhcjEyMzQKICgxIHJvdykKIAorU0VMRUNUIENBU1QoMTIzNDo6 aW50NCBBUyBjYXN0dGVzdHR5cGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAt LSBlcnJvcgorRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIGludGVnZXIgdG8gY2FzdHRlc3R0eXBl IHdoZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNwZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05W RVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKDEyMzQ6OmludDQgQVMgY2FzdHRlc3R0 eXBlIERFRkFVTFQgTlVMTCBPTiBDT05WRS4uLgorICAgICAgICAgICAgICAgICAgICBeCitERVRB SUw6ICBTYWZlIHR5cGUgY2FzdCBmb3IgdXNlci1kZWZpbmVkIHR5cGVzIGFyZSBub3QgeWV0IHN1 cHBvcnRlZC4KIC0tIGNoZWNrIGRlcGVuZGVuY2llcyBnZW5lcmF0ZWQgZm9yIHRoYXQKIFNFTEVD VCBwZ19kZXNjcmliZV9vYmplY3QoY2xhc3NpZCwgb2JqaWQsIG9ianN1YmlkKSBhcyBvYmosCiAg ICAgICAgcGdfZGVzY3JpYmVfb2JqZWN0KHJlZmNsYXNzaWQsIHJlZm9iamlkLCByZWZvYmpzdWJp ZCkgYXMgb2JqcmVmLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVp dmNsYXNzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXF1aXZjbGFzcy5vdXQKaW5k ZXggYWQ4YWIyOTRmZjYuLjNhZjczN2MyMjBhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2VxdWl2Y2xhc3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv ZXF1aXZjbGFzcy5vdXQKQEAgLTk1LDYgKzk1LDI1IEBAIGNyZWF0ZSBmdW5jdGlvbiBpbnQ4YWxp YXMxY21wKGludDgsIGludDhhbGlhczEpIHJldHVybnMgaW50CiAgIHN0cmljdCBpbW11dGFibGUg bGFuZ3VhZ2UgaW50ZXJuYWwgYXMgJ2J0aW50OGNtcCc7CiBhbHRlciBvcGVyYXRvciBmYW1pbHkg aW50ZWdlcl9vcHMgdXNpbmcgYnRyZWUgYWRkCiAgIGZ1bmN0aW9uIDEgaW50OGFsaWFzMWNtcCAo aW50OCwgaW50OGFsaWFzMSk7CistLSBpbnQ4YWxpYXMyIGJpbmFyeS1jb2VyY2libGUgdG8gaW50 OCwgdGhpcyBzaG91bGQgbm90IGZhaWwKK3NlbGVjdCBjYXN0KCcxJzo6aW50OCBhcyBpbnQ4YWxp YXMyIGRlZmF1bHQgbnVsbCBvbiBjb252ZXJzaW9uIGVycm9yKTsKKyBpbnQ4YWxpYXMyIAorLS0t LS0tLS0tLS0tCisgMQorKDEgcm93KQorCitzZWxlY3QgY2FzdCgnMSc6OmludDhhbGlhczIgYXMg aW50OCBkZWZhdWx0IG51bGwgb24gY29udmVyc2lvbiBlcnJvcik7CisgaW50OCAKKy0tLS0tLQor ICAgIDEKKygxIHJvdykKKworc2VsZWN0IGNhc3QoJ2EnIGFzIGludDhhbGlhczIgZGVmYXVsdCBu dWxsIG9uIGNvbnZlcnNpb24gZXJyb3IpOworIGludDhhbGlhczIgCistLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKwogY3JlYXRlIHRhYmxlIGVjMCAoZmYgaW50OCBwcmltYXJ5IGtleSwgZjEgaW50 OCwgZjIgaW50OCk7CiBjcmVhdGUgdGFibGUgZWMxIChmZiBpbnQ4IHByaW1hcnkga2V5LCBmMSBp bnQ4YWxpYXMxLCBmMiBpbnQ4YWxpYXMyKTsKIGNyZWF0ZSB0YWJsZSBlYzIgKHhmIGludDggcHJp bWFyeSBrZXksIHgxIGludDhhbGlhczEsIHgyIGludDhhbGlhczIpOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC94bWwub3V0CmluZGV4IDEwM2EyMmEzYjFkLi44MTVhNWU4ODk5ZiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQveG1sLm91dApAQCAtMTgsNiArMTgsMTIgQEAgU0VMRUNUICogRlJPTSB4bWx0ZXN0Owog ICAyIHwgPHZhbHVlPnR3bzwvdmFsdWU+CiAoMiByb3dzKQogCitTRUxFQ1QgQ0FTVCgnPHdyb25n Jzo6dGV4dCBBUyB4bWwgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3ht bDsKKyB0b194bWwgCistLS0tLS0tLQorIAorKDEgcm93KQorCiAtLSB0ZXN0IG5vbi10aHJvd2lu ZyBBUEksIHRvbwogU0VMRUNUIHBnX2lucHV0X2lzX3ZhbGlkKCc8dmFsdWU+b25lPC92YWx1ZT4n LCAneG1sJyk7CiAgcGdfaW5wdXRfaXNfdmFsaWQgCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3htbF8xLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzEu b3V0CmluZGV4IDczYzQxMTExOGEzLi42OWFlYTgzMzE2OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC94bWxfMS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC94bWxfMS5vdXQKQEAgLTIyLDYgKzIyLDkgQEAgU0VMRUNUICogRlJPTSB4bWx0ZXN0OwogLS0t LSstLS0tLS0KICgwIHJvd3MpCiAKK1NFTEVDVCBDQVNUKCc8d3JvbmcnOjp0ZXh0IEFTIHhtbCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9feG1sOworRVJST1I6ICB1bnN1 cHBvcnRlZCBYTUwgZmVhdHVyZQorREVUQUlMOiAgVGhpcyBmdW5jdGlvbmFsaXR5IHJlcXVpcmVz IHRoZSBzZXJ2ZXIgdG8gYmUgYnVpbHQgd2l0aCBsaWJ4bWwgc3VwcG9ydC4KIC0tIHRlc3Qgbm9u LXRocm93aW5nIEFQSSwgdG9vCiBTRUxFQ1QgcGdfaW5wdXRfaXNfdmFsaWQoJzx2YWx1ZT5vbmU8 L3ZhbHVlPicsICd4bWwnKTsKIEVSUk9SOiAgdW5zdXBwb3J0ZWQgWE1MIGZlYXR1cmUKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdy ZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDczNGRhMDU3YzM0Li5mZGFjZmVhZThlYyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMTUsNyArMTE1LDcgQEAgdGVzdDoganNv biBqc29uYiBqc29uX2VuY29kaW5nIGpzb25wYXRoIGpzb25wYXRoX2VuY29kaW5nIGpzb25iX2pz b25wYXRoIHNxbGpzb24KICMgTkI6IHRlbXAuc3FsIGRvZXMgcmVjb25uZWN0cyB3aGljaCB0cmFu c2llbnRseSB1c2VzIDIgY29ubmVjdGlvbnMsCiAjIHNvIGtlZXAgdGhpcyBwYXJhbGxlbCBncm91 cCB0byBhdCBtb3N0IDE5IHRlc3RzCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBsYW5jYWNoZSBsaW1p dCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9u IHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlzbSByb3d0eXBlcyByZXR1 cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwKK3Rlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3Fs IGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRydW5jYXRl IGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlzbSByb3d0eXBlcyByZXR1cm5pbmcgbGFy Z2VvYmplY3Qgd2l0aCB4bWwgY2FzdAogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBv ZiBwYXJhbGxlbCB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY2FzdC5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jYXN0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uMGUyOGQxNzNlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9jYXN0LnNxbApAQCAtMCwwICsxLDQ0MiBAQAorU0VUIGV4dHJhX2Zsb2F0 X2RpZ2l0cyA9IDA7CitTRVQgbGNfbW9uZXRhcnkgVE8gIkMiOworCistLSBDQVNUIERFRkFVTFQg T04gQ09OVkVSU0lPTiBFUlJPUgorU0VMRUNUIENBU1QoQicwMScgQVMgZGF0ZSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChCSVQnMDEnIEFTIGRhdGUgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoVFJVRSBBUyBkYXRl IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKDEuMSBBUyBk YXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKDEgQVMg ZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxMTEx IEFTICJjaGFyIiBERUZBVUxUICdBJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KCdkZWYnOjp0ZXh0IEFTIGludGVnZXIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworU0VMRUNUIENBU1QoJzInOjpqc29uYiBBUyB0ZXh0IERFRkFVTFQgJ2ZhbGxiYWNrJyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcxJyBDT0xMQVRFICJDIiB8fCAnaCcgQVMg dGV4dCBERUZBVUxUICdmYWxsYmFjaycgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VChjb25jYXQoJzEnIGNvbGxhdGUgIkMiLCAnaCcpIEFTIGludCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCg2NTUzNiBBUyBpbnQyIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKGludDgoNjU1MzYpIEFTIGludDIgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBzb3VyY2UgZXhwcmVzc2lvbiBp cyBhIHVua25vd24gY29uc3QKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludGVnZXIgRVJST1Ig T04gQ09OVkVSU0lPTiBFUlJPUikpOyAtLSBlcnJvcgorVkFMVUVTIChDQVNUKCdlcnJvcicgQVMg aW50ZWdlciBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpKTsKK1ZBTFVFUyAoQ0FTVCgnZXJyb3In IEFTIGludGVnZXIgREVGQVVMVCA0MiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CitTRUxFQ1QgQ0FT VCgnYScgYXMgaW50IERFRkFVTFQgMTggT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VCgnYScgYXMgaW50IERFRkFVTFQgc3VtKDEpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJv cgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHN1bSgxKSBvdmVyKCkgT04gQ09OVkVS U0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgKFNF TEVDVCBOVUxMKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKCdh JyBhcyBpbnQgREVGQVVMVCAnYicgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxF Q1QgQ0FTVCgnYSc6OmludCBhcyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OyAtLSBlcnJvcgorCistLSB0aGUgZGVmYXVsdCBleHByZXNzaW9u4oCZcyBjb2xsYXRpb24gc2hv dWxkIG1hdGNoIHRhcmdldCB0eXBlIGNvbGxhdGlvbgorVkFMVUVTIChDQVNUKCdlcnJvcicgQVMg dGV4dCBERUZBVUxUICcxJyBDT0xMQVRFICJDIiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CisKK1ZB TFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludDJ2ZWN0b3IgREVGQVVMVCAnMSAzJyAgT04gQ09OVkVS U0lPTiBFUlJPUikpOworVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50MnZlY3RvcltdIERFRkFV TFQgJ3sxIDN9JyAgT04gQ09OVkVSU0lPTiBFUlJPUikpOworCistLSBzb3VyY2UgZXhwcmVzc2lv biBjb250YWluIHN1YnF1ZXJ5CitTRUxFQ1QgQ0FTVCgoU0VMRUNUIGIgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMSksIChWQUxVRVMoJ0gnKSkgcyhiKSkKKyAgICAgICAgICAgIEFTIGludDJ2ZWN0 b3JbXSBERUZBVUxUICd7MSAzfScgIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1Qo KFNFTEVDVCBBUlJBWSgoU0VMRUNUIGIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMikgZywgKFZB TFVFUygnSCcpKSBzKGIpKSkpCisgICAgICAgICAgICBBUyBJTlRbXQorICAgICAgICAgICAgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCitDUkVBVEUgRlVOQ1RJT04gcmV0X2lu dDgoKSBSRVRVUk5TIEJJR0lOVCBBUworJCQKK0JFR0lOIFJFVFVSTiAyMTQ3NDgzNjQ4OyBFTkQ7 CiskJAorTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEU7CisKK1NFTEVDVCBDQVNUKCdhJyBhcyBp bnQgREVGQVVMVCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorU0VM RUNUIENBU1QoJ2EnIGFzIGRhdGUgREVGQVVMVCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04gRVJS T1IpOyAtLSBlcnJvcgorCistLSBERUZBVUxUIGV4cHJlc3Npb24gY2Fubm90IGJlIHNldC1yZXR1 cm5pbmcKK0NSRUFURSBGVU5DVElPTiByZXRfc2V0aW50KCkgUkVUVVJOUyBTRVRPRiBpbnRlZ2Vy IEFTCiskJAorQkVHSU4gUkVUVVJOIFFVRVJZIEVYRUNVVEUgJ3NlbGVjdCAxIHVuaW9uIGFsbCBz ZWxlY3QgMSc7IEVORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRTsKKworQ1JFQVRF IFRBQkxFIHRjYXN0MChhIElOVCwgYiBpbnQpOworSU5TRVJUIElOVE8gdGNhc3QwIFZBTFVFUygx LDIpLCAoNjU1MzYsMyk7CitTRVQgaml0X2Fib3ZlX2Nvc3QgPSAwOworU0VMRUNUIENBU1QoYSBB UyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MDsKK1NF VCBqaXRfYWJvdmVfY29zdCBUTyBERUZBVUxUOworU0VMRUNUIENBU1QoYSBBUyBpbnQyIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MDsKK1NFTEVDVCBDQVNUKFJP VygxLDIpIEFTIHRjYXN0MCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0 Y2FzdDAgYXMgdDsKK0RST1AgVEFCTEUgdGNhc3QwOworCitTRUxFQ1QgQ0FTVCgxMi4xMTEgYXMg bnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVt ZXJpY19zY2FsZTsKKworQ1JFQVRFIFRBQkxFIHRjYXN0KGEgdGV4dFtdLCBiIGludCBHRU5FUkFU RUQgQlkgREVGQVVMVCBBUyBJREVOVElUWSk7CitJTlNFUlQgSU5UTyB0Y2FzdCBWQUxVRVMgKCd7 MTJ9JyksICgnezEsYSwgYn0nKSwgKCd7ezEsMn0sIHtjLGR9fScpLCAoJ3sxM30nKTsKK1NFTEVD VCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCByZXRfc2V0aW50KCkgT04gQ09OVkVSU0lPTiBFUlJP UikgRlJPTSB0Y2FzdDsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKHQgQVMgdGV4dFtdIERFRkFVTFQg J3syMSwyMiwgJyB8fCBiIHx8ICd9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0IGFz IHQ7CitTRUxFQ1QgQ0FTVCh0LmEgQVMgaW50W10gREVGQVVMVCAnezIxLDIyfSc6OmludFtdIHx8 IGIgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdCBhcyB0OworCistLSBUZXN0IG5lc3Rl ZCB0eXBlIGNhc3RzOyBhbGwgZXhwcmVzc2lvbnMgd2lsbCBiZSBldmFsdWF0ZWQgaW4gYW4gZXJy b3Itc2FmZSBtYW5uZXIKK0NSRUFURSBET01BSU4gZF9ub3RhIEFTIHRleHQgQ0hFQ0sgKFZBTFVF IDw+ICdhJyk7CitDUkVBVEUgVEFCTEUgdGNhc3QxKGEgdGV4dCwgYiB0ZXh0W10sIGMgaW50LCBk IGludDgsIGUgaW50OFtdKTsKK0lOU0VSVCBJTlRPIHRjYXN0MShhLCBiLCBkLCBlKSB2YWx1ZXMo J2EnLCAne2F9JywgMjE0NzQ4MzY0OCwgJ3syMTQ3NDgzNjQ4fScpOworU0VMRUNUIENBU1QgKENB U1QoYSBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZS T00gdGNhc3QxOworU0VMRUNUIENBU1QgKENBU1QoJ2EnIEFTIGludCkgQVMgdGV4dCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7ICAtLSBlcnJvcgorU0VMRUNU IENBU1QgKENBU1QoJ2EnOjp0ZXh0IEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7IC0tIG9rCitTRUxFQ1QgQ0FTVCAoQ0FTVChhIEFT IGRfbm90YSkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0 Y2FzdDE7CitTRUxFQ1QgQ0FTVCAoQ0FTVCgnYScgQVMgZF9ub3RhKSBBUyB0ZXh0IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKworU0VMRUNUIENBU1QgKENB U1QoZCBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZS T00gdGNhc3QxOworU0VMRUNUIENBU1QgKENBU1QoJzIxNDc0ODM2NDgnOjppbnQ4IEFTIGludCkg QVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisK K1NFTEVDVCBDQVNUIChDQVNUKCd7YX0nOjp0ZXh0W10gQVMgaW50W10pIEFTIHRleHRbXSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FTVCAo Q0FTVChiIEFTIGludFtdKSBBUyB0ZXh0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIEZST00gdGNhc3QxOworU0VMRUNUIENBU1QgKENBU1QoYiBBUyBkX25vdGFbXSkgQVMgdGV4 dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKK1NFTEVD VCBDQVNUIChDQVNUKGUgQVMgaW50W10pIEFTIHRleHRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisKKy0tIHRlc3QgbmVzdGVkIEFycmF5Q29lcmNlRXhw ciBjb25zdGFudCBmb2xkaW5nCitTRUxFQ1QgQ0FTVCgne2F9Jzo6dGV4dFtdIEFTIGludFtdIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKK1NFTEVDVCBDQVNU KENBU1QoJ3thfSc6OnRleHRbXSBBUyBkYXRlW10pIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKK1NFTEVDVCBDQVNUKCgneycgfHwgc3VtKDEg KyAyKSB8fCAnfScpOjppbnRbXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgRlJPTSAoVkFMVUVTICgxKSwgKDIpKSBzdWI7CitTRUxFQ1QgQ0FTVCgoJ3snIHx8IHN1 bSgxICsgMikgT1ZFUiAoKSB8fCAnfScpOjppbnRbXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgRlJPTSAoVkFMVUVTICgxKSwgKDIpKSBzdWI7CisKKy0tIHRlc3Qg d2l0aCB1c2VyLWRlZmluZWQgdHlwZSwgZG9tYWluLCBhcnJheSBvdmVyIGRvbWFpbiwgZG9tYWlu IG92ZXIgYXJyYXkKK0NSRUFURSBET01BSU4gZF9pbnQ0MiBhcyBpbnQgY2hlY2sgKHZhbHVlID0g NDIpIE5PVCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX2ludDQyYXJyIGFzIGRfaW50NDJbXTsKK0NS RUFURSBET01BSU4gZF9pbnQ0MmFycjEgYXMgZF9pbnQ0MmFycjsKK0NSRUFURSBET01BSU4gZF9p bnQ4IGFzIGludDggY2hlY2sgKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlOIGRfaW50OGFyciBh cyBkX2ludDhbXTsKK0NSRUFURSBET01BSU4gZF9jaGFyM19ub3RfbnVsbCBhcyBjaGFyKDMpIE5P VCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX3ZhcmNoYXIgYXMgdmFyY2hhcigzKSBOT1QgTlVMTDsK K0NSRUFURSBET01BSU4gZF9pbnRfYXJyIGFzIGludFtdIGNoZWNrICh2YWx1ZSA9ICd7NDEsIDQz fScpIE5PVCBOVUxMOworQ1JFQVRFIFRZUEUgY29tcF9kb21haW5fd2l0aF90eXBtb2QgQVMgKGEg ZF9jaGFyM19ub3RfbnVsbCwgYiBpbnQpOworQ1JFQVRFIFRZUEUgY29tcDIgQVMgKGEgZF92YXJj aGFyKTsKK0NSRUFURSBET01BSU4gZF9udW1lcmljIGFzIG51bWVyaWMoNCw0KTsKKworU0VMRUNU IENBU1QoMS4wOjpmbG9hdDQgQVMgZF9udW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsKK1NFTEVDVCBDQVNUKCd7MS4wfScgQVMgbnVtZXJpYyg0LDEpW10gREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ3swLjEsIDEuMH0nIEFTIGRf bnVtZXJpY1tdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworU0VMRUNUIENB U1QoMTEgQVMgZF9pbnQ0MiBERUZBVUxUIDQxIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJv cgorU0VMRUNUIENBU1QoTlVMTCBBUyBkX2ludDQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKDExIEFTIGRfaW50NDIgREVGQVVMVCA0MiBP TiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKE5VTEwgQVMgZF9pbnQ0MiBERUZBVUxU IDQyIE9OIENPTlZFUlNJT04gRVJST1IpOworCitTRUxFQ1QgQ0FTVChBUlJBWVs0Ml06OmRfaW50 NDJhcnIxIEFTIGRfaW50OCBERUZBVUxUICcxJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVD VCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4W10gREVGQVVMVCAnezF9JyBP TiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFycjEg QVMgZF9pbnQ4YXJyIERFRkFVTFQgJ3sxfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1Qg Q0FTVChBUlJBWVs0Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OGFycltdIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKworU0VMRUNUIENBU1QoQVJSQVlbNDIsNDFdIEFTIGRfaW50 NDJbXSBERUZBVUxUICd7NDIsIDQyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VChBUlJBWVs0Miw0MV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgJ3s0MSwgNDN9JyBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLCA0MV06OmRfaW50NDJhcnIxIEFTIGRf aW50OGFyciBERUZBVUxUICd7MSwyLDN9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBD QVNUKEFSUkFZWzQyLCA0MV0gQVMgZF9pbnQ0MmFycjEgREVGQVVMVCAnezQyLCA0Mn0nIE9OIENP TlZFUlNJT04gRVJST1IpOworU0VMRUNUCisgICAgQ0FTVChDQVNUKEFSUkFZW0NBU1QoQVJSQVlb NDIsIDQyXSBBUyBkX2ludDQyYXJyKV0gQVMgZF9pbnQ0MmFycjFbXSkgQVMgZF9pbnQ4YXJyW10g REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCitTRUxFQ1QgQ0FTVCgnKE5VTEwp JyBBUyBjb21wMiBERUZBVUxUICcoMTIzMiknIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJv cgorU0VMRUNUIENBU1QoJyhOVUxMKScgQVMgY29tcDIgREVGQVVMVCAnKDEyMyknIE9OIENPTlZF UlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJygsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5 cG1vZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5V TEwsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUICcoMSwyKScgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5VTEwsNDIpJyBBUyBjb21wX2RvbWFpbl93 aXRoX3R5cG1vZCBERUZBVUxUICcoMTIzNCwyKScgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVy cm9yCitTRUxFQ1QgQ0FTVChST1coTlVMTCw0MikgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2Qg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorCistLSB0ZXN0IGFy cmF5IGNvZXJjZQorU0VMRUNUIENBU1QoYXJyYXlbJ2EnOjp0ZXh0XSBBUyBpbnRbXSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChhcnJheVsnYSddIEFTIGlu dFtdIERFRkFVTFQgQVJSQVlbMV0gT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChh cnJheVsxMS4xMl0gQVMgZGF0ZVtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK K1NFTEVDVCBDQVNUKGFycmF5WzExMTExMTExMTExMTExMTExXSBBUyBpbnRbXSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChhcnJheVtbJ2FiYyddLFs0NTZd XSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VCgnezEyMyxhYmMsNDU2fScgQVMgaW50W10gREVGQVVMVCAney03ODl9JyBPTiBDT05WRVJTSU9O IEVSUk9SKTsKK1NFTEVDVCBDQVNUKCd7MjM0LGRlZiw1Njd9Jzo6dGV4dFtdIEFTIGludGVnZXJb XSBERUZBVUxUICd7LTEwMTF9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFS UkFZW1snMSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGludFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUn LCAnYSddXSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsK Ky0tIGVycm9yOiBgdGhyZWUnOjppbnRgIHdpbGwgZmFpbCBlYXJsaWVyCitTRUxFQ1QgQ0FTVChB UlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJzo6aW50LCAnYSddXSBBUyBpbnRbXSBERUZBVUxUICd7 MjEsMjJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZWzEsICd0aHJl ZSc6OmludF0gQVMgaW50W10gREVGQVVMVCAnezIxLDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisKKy0tIHNhZmUgY2FzdCB3aXRoIGdlb21ldHJ5IGRhdGEgdHlwZQorU0VMRUNUIENBU1QoJygx LDIpJzo6cG9pbnQgQVMgYm94IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NF TEVDVCBDQVNUKCdbKE5hTiwxKSwoTmFOLGluZmluaXR5KV0nOjpsc2VnIEFTIHBvaW50IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdbKDFlKzMwMCxJbmZp bml0eSksKDFlKzMwMCxJbmZpbml0eSldJzo6bHNlZyBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWygxLDIpLCgzLDQpXSc6OnBhdGggYXMg cG9seWdvbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgn KE5hTiwxLjAsTmFOLGluZmluaXR5KSc6OmJveCBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIuMCwyLjAsMC4wLDAuMCknOjpib3ggQVMg bHNlZyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIu MCwyLjAsMC4wLDAuMCknOjpib3ggQVMgcG9seWdvbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIuMCwyLjAsMC4wLDAuMCknOjpib3ggQVMgcGF0aCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIuMCxpbmZp bml0eSxOYU4saW5maW5pdHkpJzo6Ym94IEFTIGNpcmNsZSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5hTiwwLjApLCgyLjAsNC4wKSwoMC4wLGluZmlu aXR5KSc6OnBvbHlnb24gQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworU0VMRUNUIENBU1QoJygyLjAsMC4wKSwoMi4wLDQuMCksKDAuMCwwLjApJzo6cG9seWdvbiBB UyBwYXRoIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCco Mi4wLDAuMCksKDIuMCw0LjApLCgwLjAsMC4wKSc6OnBvbHlnb24gQVMgYm94IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoTmFOLGluZmluaXR5KSwoMi4w LDQuMCksKDAuMCxpbmZpbml0eSknOjpwb2x5Z29uIEFTIGNpcmNsZSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnPCg1LDEpLDM+Jzo6Y2lyY2xlIEFTIHBv aW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCc8KDMs NSksMD4nOjpjaXJjbGUgYXMgYm94IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK K1NFTEVDVCBDQVNUKCc8KDMsNSksMD4nOjpjaXJjbGUgYXMgcG9seWdvbiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIHNhZmUgY2FzdCB3aXRoIG1vbmV5IGRhdGEgdHlw ZQorLS0gY2FzdCBmcm9tIG1vbmV5IHRvIG90aGVyIHR5cGUgaXMgbm90IGVycm9yIHNhZmUKK1NF TEVDVCBDQVNUKCcxMjM0NTY3ODkwMTIzNDU2NzgnOjpudW1lcmljIEFTIE1PTkVZIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcxMjM0NTY3ODkwMTIzNDU2 NzgnOjppbnQ4IEFTIE1PTkVZIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NF TEVDVCBDQVNUKCcyMTQ3NDgzNjQ3Jzo6aW50NCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnLTIxNDc0ODM2NDgnOjppbnQ0IEFTIE1PTkVZ IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCctMCc6Omlu dDQgQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENB U1QoTlVMTDo6bW9uZXkgQVMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CitTRUxFQ1QgQ0FTVChOVUxMOjptb25leVtdIEFTIG51bWVyaWNbXSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIHNhZmUgY2FzdCBmcm9tIGJvb2xlYW4gdHlwZSB0 byBvdGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCh0cnVlIEFTIG51bWVyaWMgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoZmFsc2UgQVMgaW50IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKGZhbHNlIEFTIHRleHQg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBzYWZlIGNhc3QgZnJvbSBi eXRlYSB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUICgnXHgxMTIyMzM0NDU1 NjY3Nzg4OTknOjpieXRlYSBBUyBpbnQ4IERFRkFVTFQgMTkgT04gQ09OVkVSU0lPTiBFUlJPUik7 CitTRUxFQ1QgQ0FTVCgnXHgxMjM0NTY3ODlBJzo6Ynl0ZWEgQVMgaW50NCBERUZBVUxUIDIwIE9O IENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1x4MTIzNDU2Jzo6Ynl0ZWEgQVMgaW50 MiBERUZBVUxUIDIxIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1x4MTIzNDU2 Nzg5MGFiY2RlZic6OmJ5dGVhIEFTIHV1aWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworCistLSBzYWZlIGNhc3QgZnJvbSB1dWlkIHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcwor U0VMRUNUIENBU1QoJzViMzUzODBhLTcxNDMtNDkxMi05YjU1LWYzMjI2OTljNjc3MCc6OnV1aWQg QVMgYnl0ZWEgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBzYWZlIGNh c3QgcmVsYXRlZCB0byBuZXR3b3JrIGFkZHJlc3MgZGF0YSB0eXBlCitTRUxFQ1QgQ0FTVCgnMTky LjE2OC4xLngnIGFzIGluZXQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VM RUNUIENBU1QoJzE5Mi4xNjguMS4yLzMwJyBhcyBjaWRyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcyMjowMDo1YzowODo1NTowODowMTowMic6Om1hY2Fk ZHI4IGFzIG1hY2FkZHIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBz YWZlIGNhc3QgZnJvbSBiaXQgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgn MTExMTExMTExMTAwMDAxJzo6Yml0KDEwMCkgQVMgSU5UIERFRkFVTFQgMjIgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVCAoJzExMTExMTExMTEwMDAwMSc6OmJpdCgxMDApIEFTIElO VDggREVGQVVMVCAyMyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc2FmZSBjYXN0IHJlbGF0 ZWQgdG8gb2lkIGRhdGEgdHlwZQorU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDE6OmJpZ2ludCBBUyBv aWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoMTIzNDU2 Nzg5MDE6OmJpZ2ludCBBUyByZWdwcm9jIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKK1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTAxOjpiaWdpbnQgQVMgcmVncHJvY2VkdXJlIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTAxOjpi aWdpbnQgQVMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VM RUNUIENBU1QoMTIzNDU2Nzg5MDo6YmlnaW50IEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkwOjpiaWdpbnQgQVMgcmVncm9sZSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkw OjpiaWdpbnQgQVMgcmVnbmFtZXNwYWNlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKK1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTA6OmJpZ2ludCBBUyByZWdkYXRhYmFzZSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIHNhZmUgY2FzdCBmcm9tIHRleHQgdHlw ZSB0byBvdGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgnYS5iLmMuZCc6OnRleHQgYXMgcmVn Y2xhc3MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworQ1JFQVRFIFRBQkxFIHRl c3Rfc2FmZWNhc3QwKGNvbDAgdGV4dCwgY29sMSBqc29uYik7CitJTlNFUlQgSU5UTyB0ZXN0X3Nh ZmVjYXN0MCBWQUxVRVMgKCc8dmFsdWU+b25lPC92YWx1ZScsICcidGVzdCInKTsKKworU0VMRUNU IGNvbDAgYXMgdGV4dCwKKyAgICAgICBDQVNUKGNvbDAgQVMgcmVnY2xhc3MgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3JlZ2NsYXNzLAorICAgICAgIENBU1QoY29sMCBB UyByZWdjbGFzcyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgSVMgTlVMTCBhcyBl eHBlY3RfdHJ1ZSwKKyAgICAgICBDQVNUKGNvbDAgQVMgImNoYXIiICBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fY2hhciwKKyAgICAgICBDQVNUKGNvbDAgQVMgbmFtZSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbmFtZQorRlJPTSB0ZXN0X3Nh ZmVjYXN0MDsKKworLS0gc2FmZSB0eXBlIGNhc3QgZm9yIGpzb25iIGRhdGEgdHlwZQorU0VMRUNU IGNvbDEgYXMganNvbmIsCisgICAgICAgQ0FTVChjb2wxIEFTIGludGVnZXIgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVnZXIsCisgICAgICAgQ0FTVChjb2wxIEFT IG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMs CisgICAgICAgQ0FTVChjb2wxIEFTIGJpZ2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDEgQVMgZmxvYXQ0IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wxIEFT IGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAor ICAgICAgIENBU1QoY29sMSBBUyBib29sZWFuIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19ib29sLAorICAgICAgIENBU1QoY29sMSBBUyBzbWFsbGludCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fc21hbGxpbnQKK0ZST00gdGVzdF9zYWZlY2Fz dDA7CisKKy0tIHRlc3QgQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24gbXV0YWJpbGl0eQorQ1JFQVRF IElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3QwKChDQVNUKGNvbDEgYXMgaW50 IERFRkFVTFQgcmFuZG9tKG1pbj0+MSwgbWF4PT4xKSBPTiBDT05WRVJTSU9OIEVSUk9SKSkpOyAt LSBlcnJvcgorQ1JFQVRFIElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3QwKChD QVNUKGNvbDEgYXMgeGlkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSkpOyAtLSBl cnJvcgorQ1JFQVRFIElOREVYIGNhc3RfZXJyb3JfaWR4IE9OIHRlc3Rfc2FmZWNhc3QwKChDQVNU KGNvbDEgYXMgaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSkpOyAtLSBvawor U0VMRUNUIHBnX2dldF9pbmRleGRlZignY2FzdF9lcnJvcl9pZHgnOjpyZWdjbGFzcyk7CisKKy0t IHNhZmUgY2FzdCBiZXR3ZWVlbiByYW5nZSBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCgnWzEsMl0n OjppbnQ0cmFuZ2UgQVMgaW50NG11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworU0VMRUNUIENBU1QoJ1sxLDJdJzo6aW50OHJhbmdlIEFTIGludDhtdWx0aXJhbmdl IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdbMSwyXSc6 Om51bXJhbmdlICBBUyBudW1tdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKK1NFTEVDVCBDQVNUKCdbLWluZmluaXR5LGluZmluaXR5XSc6OmRhdGVyYW5nZSBBUyBk YXRlbXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1Qg Q0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjp0c3JhbmdlIEFTIHRzbXVsdGlyYW5nZSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxp bmZpbml0eV0nOjp0c3R6cmFuZ2UgQVMgdHN0em11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworCistLSBzYWZlIGNhc3QgYmV0d2VlZW4gbnVtZXJpYyBkYXRhIHR5 cGVzCitDUkVBVEUgVEFCTEUgdGVzdF9zYWZlY2FzdDEoCisgIGNvbDEgZmxvYXQ0LCBjb2wyIGZs b2F0OCwgY29sMyBudW1lcmljLCBjb2w0IG51bWVyaWNbXSwKKyAgY29sNSBpbnQyIGRlZmF1bHQg MzI3NjcsCisgIGNvbDYgaW50NCBkZWZhdWx0IDMyNzY4LAorICBjb2w3IGludDggZGVmYXVsdCA0 Mjk0OTY3Mjk2KTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVFUygnMTEuMTIzNCcs ICcxMS4xMjM0JywgJzkyMjMzNzIwMzY4NTQ3NzU4MDgnLCAnezExLjEyMzR9Jzo6bnVtZXJpY1td KTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVFUygnaW5mJywgJ2luZicsICdpbmYn LCAnezExLjEyMzQsIDEyLCBpbmYsIE5hTn0nOjpudW1lcmljW10pOworSU5TRVJUIElOVE8gdGVz dF9zYWZlY2FzdDEgVkFMVUVTKCctaW5mJywgJy1pbmYnLCAnLWluZicsICd7MTEuMTIzNCwgMTIs IC1pbmYsIE5hTn0nOjpudW1lcmljW10pOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDEgVkFM VUVTKCdOYU4nLCAnTmFOJywgJ05hTicsICd7MTEuMTIzNCwgMTIsIC1pbmYsIE5hTn0nOjpudW1l cmljW10pOworCitTRUxFQ1QgY29sNSBhcyBpbnQyLAorICAgICAgIENBU1QoY29sNSBBUyBpbnQy IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENB U1QoY29sNSBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19p bnQ0LAorICAgICAgIENBU1QoY29sNSBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDUgYXMgaW50OCBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDUgYXMgZmxv YXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAg ICAgQ0FTVChjb2w1IGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sNSBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sNSBhcyBu dW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1l cmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCitTRUxFQ1QgY29sNiBhcyBpbnQ0LAor ICAgICAgIENBU1QoY29sNiBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sNiBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sNiBBUyBvaWQgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNv bDYgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwK KyAgICAgICBDQVNUKGNvbDYgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2w2IGFzIGZsb2F0OCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sNiBh cyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmlj LAorICAgICAgIENBU1QoY29sNiBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOwor CitTRUxFQ1QgY29sNyBhcyBpbnQ4LAorICAgICAgIENBU1QoY29sNyBBUyBpbnQyIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sNyBB UyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAg ICAgIENBU1QoY29sNyBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDcgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDcgYXMgZmxvYXQ0IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChj b2w3IGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxv YXQ4LAorICAgICAgIENBU1QoY29sNyBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sNyBhcyBudW1lcmljKDEw LDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxl CitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCitTRUxFQ1QgY29sMyBhcyBudW1lcmljLAorICAgICAg IENBU1QoY29sMyBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19pbnQyLAorICAgICAgIENBU1QoY29sMyBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1QoY29sMyBBUyBvaWQgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDMgYXMg aW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAg ICBDQVNUKGNvbDMgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wzIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMyBhcyBudW1l cmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAg ICAgIENBU1QoY29sMyBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCitTRUxF Q1QgY29sNCBhcyBudW1fYXJyLAorICAgICAgIENBU1QoY29sNCBBUyBpbnQyW10gREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGludDJhcnIsCisgICAgICAgQ0FTVChjb2w0IEFT IGludDRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgaW50NGFyciwKKyAg ICAgICBDQVNUKGNvbDQgYXMgaW50OFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyBpbnQ4YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBmbG9hdDRbXSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgZjRhcnIsCisgICAgICAgQ0FTVChjb2w0IGFzIGZsb2F0 OFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBmOGFyciwKKyAgICAgICBD QVNUKGNvbDQgYXMgbnVtZXJpYygxMCwxKVtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyBudW1hcnIKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisKK1NFTEVDVCBjb2wxIGFzIGZs b2F0NCwKKyAgICAgICBDQVNUKGNvbDEgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDEgQVMgaW50NCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDEgQVMg b2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAg Q0FTVChjb2wxIGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2ludDgsCisgICAgICAgQ0FTVChjb2wxIGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sMSBhcyBmbG9hdDggREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNU KGNvbDEgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f bnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDEgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVj YXN0MTsKKworU0VMRUNUIGNvbDIgYXMgZmxvYXQ4LAorICAgICAgIENBU1QoY29sMiBBUyBpbnQy IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENB U1QoY29sMiBBUyBpbnQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19p bnQ0LAorICAgICAgIENBU1QoY29sMiBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX29pZCwKKyAgICAgICBDQVNUKGNvbDIgYXMgaW50OCBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDIgYXMgZmxv YXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAg ICAgQ0FTVChjb2wyIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMiBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sMiBhcyBu dW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1l cmljX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCistLSBzYWZlIHR5cGUgY2FzdCBmb3Ig dHlwZSBkYXRlL3RpbWVzdGFtcC90aW1lc3RhbXB0ei9pbnRlcnZhbAorQ1JFQVRFIFRBQkxFIHRl c3Rfc2FmZWNhc3QyKAorICBjb2wwIGRhdGUsIGNvbDEgdGltZXN0YW1wLCBjb2wyIHRpbWVzdGFt cHR6LAorICBjb2wzIGludGVydmFsLCBjb2w0IHRpbWUsIGNvbDUgdGltZXR6KTsKK0lOU0VSVCBJ TlRPIHRlc3Rfc2FmZWNhc3QyIFZBTFVFUworKCctaW5maW5pdHknLCAnLWluZmluaXR5JywgJy1p bmZpbml0eScsICctaW5maW5pdHknLAorICAnMjAwMy0wMy0wNyAxNTozNjozOSBBbWVyaWNhL05l d19Zb3JrJywgJzIwMDMtMDctMDcgMTU6MzY6MzkgQW1lcmljYS9OZXdfWW9yaycpLAorKCctaW5m aW5pdHknLCAnaW5maW5pdHknLCAnaW5maW5pdHknLCAnaW5maW5pdHknLCAnMTE6NTk6NTkuOTkg UE0nLCAnMTE6NTk6NTkuOTkgUE0gUERUJyk7CisKK1NFTEVDVCBjb2wwIGFzIGRhdGUsCisgICAg ICAgQ0FTVChjb2wwIEFTIHRpbWVzdGFtcHR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBDQVNUKGNvbDAgQVMgZGF0ZSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZGF0ZSwKKyAgICAgICBDQVNUKGNvbDAg QVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXMsCisg ICAgICAgQ0FTVChjb2wwIEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sMCBBUyB0aW1lc3RhbXAoMikgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcF9zY2FsZQorRlJPTSB0 ZXN0X3NhZmVjYXN0MjsKKworU0VMRUNUIGNvbDEgYXMgdGltZXN0YW1wLAorICAgICAgIENBU1Qo Y29sMSBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wxIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wxIEFTIHRpbWUg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENB U1QoY29sMSBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUKK0ZST00gdGVzdF9zYWZl Y2FzdDI7CisKK1NFTEVDVCBjb2wyIGFzIHRpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMiBB UyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGlt ZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wyIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWUgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29s MiBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0 eiwKKyAgICAgICBDQVNUKGNvbDIgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7 CisKK1NFTEVDVCBjb2wzIGFzIGludGVydmFsLAorICAgICAgIENBU1QoY29sMyBBUyB0aW1lc3Rh bXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wdHos CisgICAgICAgQ0FTVChjb2wzIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWUgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29sMyBBUyB0aW1l dHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAg ICBDQVNUKGNvbDMgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUsCisgICAgICAgQ0FTVChjb2wzIEFTIGludGVydmFs KDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbF9zY2Fs ZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKworU0VMRUNUIGNvbDQgYXMgdGltZSwKKyAgICAgICBD QVNUKGNvbDQgQVMgdGltZSgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fdGltZXMsCisgICAgICAgQ0FTVChjb2w0IEFTIHRpbWV0eiBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgSVMgTk9UIE5VTEwgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29s NCBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f aW50ZXJ2YWwsCisgICAgICAgQ0FTVChjb2w0IEFTIGludGVydmFsKDIpIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVj YXN0MjsKKworU0VMRUNUIGNvbDUgYXMgdGltZXR6LAorICAgICAgIENBU1QoY29sNSBBUyB0aW1l IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lLAorICAgICAgIENB U1QoY29sNSBBUyB0aW1lKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b190aW1lX3NjYWxlLAorICAgICAgIENBU1QoY29sNSBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDUgQVMgdGlt ZXR6KDYpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHpfc2Nh bGUsCisgICAgICAgQ0FTVChjb2w1IEFTIGludGVydmFsIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbCwKKyAgICAgICBDQVNUKGNvbDUgQVMgaW50ZXJ2YWwo MikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsX3NjYWxl CitGUk9NIHRlc3Rfc2FmZWNhc3QyOworCistLSB0ZXN0IGRlcGFyc2UKK1NFVCBkYXRlc3R5bGUg VE8gSVNPLCBZTUQ7CitDUkVBVEUgVklFVyBzYWZlY2FzdHZpZXcgQVMKK1NFTEVDVCBDQVNUKCcx MjM0JyBhcyBjaGFyKDMpIERFRkFVTFQgLTExMTEgT04gQ09OVkVSU0lPTiBFUlJPUiksCisgICAg ICAgQ0FTVCgxIGFzIGRhdGUgREVGQVVMVCAoKCcyMDI1LURlYy0wNic6OmRhdGUgKyByYW5kb20o bWluPT4xLCBtYXg9PjE6OmludCkpKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MCwKKyAg ICAgICBDQVNUKEFSUkFZW1snMSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGludFtdIERFRkFVTFQg J3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MSwKKyAgICAgICBDQVNUKEFSUkFZ W1snMScsICcyJ10sIFsndGhyZWUnLCAnYSddXSBBUyBkYXRlW10gREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIGNhc3QyLAorICAgICAgIENBU1QoQVJSQVlbJ3RocmVlJ10gQVMg SU5UW10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QzOworXHN2 IHNhZmVjYXN0dmlldworU0VMRUNUICogRlJPTSBzYWZlY2FzdHZpZXc7CisKK0NSRUFURSBWSUVX IHNhZmVjYXN0dmlldzEgQVMKK1NFTEVDVCBDQVNUKEFSUkFZW1snMSddLCBbJ3RocmVlJ10sWydh J11dIEFTIGRfaW50X2FycgorICAgICAgICAgICAgREVGQVVMVCAnezQxLDQzfScgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgY2FzdDEsCisgICAgICAgQ0FTVChBUlJBWVtbJzEnLCAnMicsIDEuMV0s IFsndGhyZWUnLCB0cnVlLCBCJzAxJ11dIEFTIGRfaW50X2FycgorICAgICAgICAgICAgREVGQVVM VCAnezQxLDQzfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDI7Citcc3Ygc2FmZWNhc3R2 aWV3MQorU0VMRUNUICogRlJPTSBzYWZlY2FzdHZpZXcxOworCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIFNFTEVDVCBDQVNUKCcxJyB8fCAnYScgQVMgaW50IERFRkFVTFQgMiBPTiBDT05W RVJTSU9OIEVSUk9SKTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIENBU1Qo J2EnIEFTIGludCBERUZBVUxUIDIgT04gQ09OVkVSU0lPTiBFUlJPUik7CitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJywgMS4xXSwgWyd0aHJl ZScsIHRydWUsIEInMDEnXV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsKKworUkVTRVQgZGF0ZXN0eWxlOworCitEUk9QIFZJRVcgc2FmZWNhc3R2aWV3Owor RFJPUCBWSUVXIHNhZmVjYXN0dmlldzE7CitEUk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3QwOworRFJP UCBUQUJMRSB0ZXN0X3NhZmVjYXN0MTsKK0RST1AgVEFCTEUgdGVzdF9zYWZlY2FzdDI7CitEUk9Q IFRBQkxFIHRjYXN0OworRFJPUCBUQUJMRSB0Y2FzdDE7CitEUk9QIEZVTkNUSU9OIHJldF9pbnQ4 OworRFJPUCBGVU5DVElPTiByZXRfc2V0aW50OworRFJPUCBUWVBFIGNvbXBfZG9tYWluX3dpdGhf dHlwbW9kOworRFJPUCBUWVBFIGNvbXAyOworRFJPUCBET01BSU4gZF9ub3RhOworRFJPUCBET01B SU4gZF92YXJjaGFyOworRFJPUCBET01BSU4gZF9pbnQ4YXJyOworRFJPUCBET01BSU4gZF9pbnQ4 OworRFJPUCBET01BSU4gZF9pbnQ0MmFycjE7CitEUk9QIERPTUFJTiBkX2ludDQyYXJyOworRFJP UCBET01BSU4gZF9pbnQ0MjsKK0RST1AgRE9NQUlOIGRfY2hhcjNfbm90X251bGw7CitEUk9QIERP TUFJTiBkX251bWVyaWM7CitSRVNFVCBleHRyYV9mbG9hdF9kaWdpdHM7CitSRVNFVCBsY19tb25l dGFyeTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9jYXN0LnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9jYXN0LnNxbAppbmRleCAzMjE4Nzg1M2NjNy4u MGExNWE3OTVkODcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9jYXN0 LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfY2FzdC5zcWwKQEAgLTYyLDYg KzYyLDcgQEAgJCQgU0VMRUNUICgnYmFyJzo6dGV4dCB8fCAkMTo6dGV4dCk7ICQkOwogCiBDUkVB VEUgQ0FTVCAoaW50NCBBUyBjYXN0dGVzdHR5cGUpIFdJVEggRlVOQ1RJT04gYmFyX2ludDRfdGV4 dChpbnQ0KSBBUyBJTVBMSUNJVDsKIFNFTEVDVCAxMjM0OjppbnQ0OjpjYXN0dGVzdHR5cGU7IC0t IFNob3VsZCB3b3JrIG5vdworU0VMRUNUIENBU1QoMTIzNDo6aW50NCBBUyBjYXN0dGVzdHR5cGUg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgogCiAtLSBjaGVjayBk ZXBlbmRlbmNpZXMgZ2VuZXJhdGVkIGZvciB0aGF0CiBTRUxFQ1QgcGdfZGVzY3JpYmVfb2JqZWN0 KGNsYXNzaWQsIG9iamlkLCBvYmpzdWJpZCkgYXMgb2JqLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZXF1aXZjbGFzcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lcXVpdmNs YXNzLnNxbAppbmRleCA3ZmMyMTU5MzQ5Yi4uOTZlNmY3M2M3YjYgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2VxdWl2Y2xhc3Muc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2VxdWl2Y2xhc3Muc3FsCkBAIC05OCw2ICs5OCwxMSBAQCBjcmVhdGUgZnVuY3Rpb24gaW50OGFs aWFzMWNtcChpbnQ4LCBpbnQ4YWxpYXMxKSByZXR1cm5zIGludAogYWx0ZXIgb3BlcmF0b3IgZmFt aWx5IGludGVnZXJfb3BzIHVzaW5nIGJ0cmVlIGFkZAogICBmdW5jdGlvbiAxIGludDhhbGlhczFj bXAgKGludDgsIGludDhhbGlhczEpOwogCistLSBpbnQ4YWxpYXMyIGJpbmFyeS1jb2VyY2libGUg dG8gaW50OCwgdGhpcyBzaG91bGQgbm90IGZhaWwKK3NlbGVjdCBjYXN0KCcxJzo6aW50OCBhcyBp bnQ4YWxpYXMyIGRlZmF1bHQgbnVsbCBvbiBjb252ZXJzaW9uIGVycm9yKTsKK3NlbGVjdCBjYXN0 KCcxJzo6aW50OGFsaWFzMiBhcyBpbnQ4IGRlZmF1bHQgbnVsbCBvbiBjb252ZXJzaW9uIGVycm9y KTsKK3NlbGVjdCBjYXN0KCdhJyBhcyBpbnQ4YWxpYXMyIGRlZmF1bHQgbnVsbCBvbiBjb252ZXJz aW9uIGVycm9yKTsKKwogY3JlYXRlIHRhYmxlIGVjMCAoZmYgaW50OCBwcmltYXJ5IGtleSwgZjEg aW50OCwgZjIgaW50OCk7CiBjcmVhdGUgdGFibGUgZWMxIChmZiBpbnQ4IHByaW1hcnkga2V5LCBm MSBpbnQ4YWxpYXMxLCBmMiBpbnQ4YWxpYXMyKTsKIGNyZWF0ZSB0YWJsZSBlYzIgKHhmIGludDgg cHJpbWFyeSBrZXksIHgxIGludDhhbGlhczEsIHgyIGludDhhbGlhczIpOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwveG1sLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3htbC5z cWwKaW5kZXggMGVhNGY1MDg4MzcuLmRmM2EwNmY0ZDgyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC94bWwuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3htbC5zcWwKQEAg LTksNiArOSw4IEBAIElOU0VSVCBJTlRPIHhtbHRlc3QgVkFMVUVTICgzLCAnPHdyb25nJyk7CiAK IFNFTEVDVCAqIEZST00geG1sdGVzdDsKIAorU0VMRUNUIENBU1QoJzx3cm9uZyc6OnRleHQgQVMg eG1sIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b194bWw7CisKIC0tIHRl c3Qgbm9uLXRocm93aW5nIEFQSSwgdG9vCiBTRUxFQ1QgcGdfaW5wdXRfaXNfdmFsaWQoJzx2YWx1 ZT5vbmU8L3ZhbHVlPicsICd4bWwnKTsKIFNFTEVDVCBwZ19pbnB1dF9pc192YWxpZCgnPHZhbHVl Pm9uZTwvJywgJ3htbCcpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBlM2MxMDA3YWJk Zi4uODM1NDk5MTMwYWUgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yNzQxLDYgKzI3 NDEsOCBAQCBTVFJMRU4KIFNWCiBTWU5DSFJPTklaQVRJT05fQkFSUklFUgogU1lTVEVNX0lORk8K K1NhZmVUeXBlQ2FzdEV4cHIKK1NhZmVUeXBlQ2FzdFN0YXRlCiBTYW1wbGVTY2FuCiBTYW1wbGVT Y2FuR2V0U2FtcGxlU2l6ZV9mdW5jdGlvbgogU2FtcGxlU2NhblN0YXRlCi0tIAoyLjM0LjEKCg== --000000000000e56064064e4cdadc--