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 1wbrEH-002tlS-0M for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jun 2026 02:51:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wbrEG-009EpS-0E for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jun 2026 02:51:12 +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 1wbrEF-009EpK-0K for pgsql-hackers@lists.postgresql.org; Tue, 23 Jun 2026 02:51:11 +0000 Received: from mail-vs1-xe31.google.com ([2607:f8b0:4864:20::e31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wbrE9-00000001gBN-3jCH for pgsql-hackers@lists.postgresql.org; Tue, 23 Jun 2026 02:51:09 +0000 Received: by mail-vs1-xe31.google.com with SMTP id ada2fe7eead31-6c25b040555so3908947137.1 for ; Mon, 22 Jun 2026 19:51:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782183065; cv=none; d=google.com; s=arc-20240605; b=D2IDwlac+9w2W64erBJqDtJS/M6LoA8D3WzoslpqbujPCGIIGl69HC88y6zmts90QF MPqWiA8e11V22F5E/E4VJZbBsHOV9easd9bGyEwRnZ06Q1HSke+ROvHnYomYL13T6V0n 80NllcQT9VFs+rqXK76SrZ10eOxkHZOWNFn3YCn4578RHYHrjKnPzW9WP1UIiwF3pZOl HvkiQ2EAORPdsIaWvbmwIhZ8Yxcp8B6RiFbDdBjtRD/e3VLHPp5cViKArYMvXyLfZWza zKH2PSD1c9QNTeK9NprTEXhsmbZTmyw4syUDM0h4GgScTWuaAnR0xX1b65H/HJcEbrac X5qA== 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=P4wixSednk99oXLQtRXjDJM3zNgWOO2jWf6GbMmTpgY=; fh=Q/tGq5+LwXnygRWehF/9xrGW5VabUO7Mj6oavNllwE4=; b=fk4ov1OSZVo2DtERw0DMiwKkBrWtQnxGKA/zyyYKpZB0alDukkYqXttjJsX1zejfBY e1dkeTHC3iWhCm8lraIWElVpGwrfVxfBooZ6mfQDbVvM51vccQ9BfFyeigFYkB0RwipV mLVFS8rcEvElpBUt01ebw+SwtVyiEbwJpuMcHY9Re4bYyb1qs4tHwRPEjEwkiqwAoNjw RAY42vf6RaGR5vSP617agAE/JFt9FL61zlPc8SkjgYJsZfw/HF0eGAFfOMUPmeMvrcvh mqTO8k8o54TuXJvPPC3eFNFAm29xz6OByuJ2fuvJsOE2+TorQfQbINFRLP0bUYQh/FF1 59ew==; 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=1782183065; x=1782787865; 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=P4wixSednk99oXLQtRXjDJM3zNgWOO2jWf6GbMmTpgY=; b=IdjG2wERC0k3g4agToj3e8Sj8+oFHiuogDmqYfQipCdx+9jMTqEkVbtzYjKsQNu8+U Y8s6bkBE64dsVeTfi8Hjl1i0P0tZx6ZcB55NrKfHNXSdVrmz2SojXXhVFKGWUb5E9Mll Ij3KdaIcVtBnxMRBXWXbKpMSEI4dOshIDa2AJn+eT2R+oFNBYbEmRqzru0A1j8xvU0lJ gHiLNgN319FK698GHo15hSKHt81/Ls4lydaf2dPeHMBu+VjT4IV+CvRhNE1hZVmppIQH XU/QcgFTwhgSmzjHV/Y4XX3TzLKUfgrnLkhD8e8ExhEc32cCO4nVcFLVWlbdX6Z5j/Cy 18Lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782183065; x=1782787865; 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=P4wixSednk99oXLQtRXjDJM3zNgWOO2jWf6GbMmTpgY=; b=AvNw0/88dIfl4KwKKv/tKLRtTSO/SkmysjKSFlvXl+yo0TMrdgGuMe8v/L+dc+VAgS gswGsH2tKgvQ7f0XAWDQqmDJva5pCNGH7bL53Ed7zUjFoPwsd33vzzx0J+KPOe0Hh1ZI WKl96cUALJoveyht2bS1Ewy/hwcAOz86TZQ2udFJV1/Y1v26LUj7xW9k3YS9Qp6SMXEZ Hptrr2EdNfbhtSqyuuF+SNigJXFFqcWtaebRqG/UZICc/U/KAzqhYZiDV66U0adgnUED YedjUB3q/8Efr/Csh2Aku7pM42zKOfjrMfwvDZVUuXy+C2q0V1k1ggtIT9AzVDjH6SAe lhag== X-Forwarded-Encrypted: i=1; AFNElJ9UAF6+J0TW2M73r8/B8fyBcToeuHWb9l1yhXMWhNb0ALEVUzQZB05SIOMfMrfyx76tf3q61aPX5pkcefcq@lists.postgresql.org X-Gm-Message-State: AOJu0Yyb/ejFeBL8lfpd0w0eQyd5oEFhr5e2krRBmIfev+jH+r0oKvlS L9n/kYPlbfGgipQYTu2RQypQjcvJPayO7pOhCV5Z3gEOYcpjLz6pvEFF9AqsDneVTWCNWnE5OX0 MU8hfRuQrxmy7ZuLMAQLajJxDAEQlOtM= X-Gm-Gg: AfdE7clyZ6pKc95JFtjRaeurvBv1TfN3t/7TQH80exZ625ulCRk8Cpsk5lJjQNNZ3Eg MgrdELobJyYulq3Ma8LBa35otlgMMRoMRkiYEfQHBr0KHR0KKKQKXUaqgYWklvAQzWSQB0DFRPJ goiqRLojPnsLvO5dE/mGuZ6lm1HLsGX3ktBpvkb/S4v3I6mvTPDy+Uc8SpSXrS3Nbx211mlfPg3 6xq6h4gWnNIAcjK4yxtRW6SqcY/S5RYoUbTyvluoAAtS/vzLDJZG3JUpfB3ilg023L0xYBA48Oq BhANS9J1rkV5UKZxAnt652KT4JvwBYuzbeyqT8sYdhWrE/SqS0UUkx2oeP6GHXYfy3bnVCKXhZM aRb/pWs0c8Pb/ldibZ9ItrvPBmV859MLTvj0kv2MCwzrOnfrqBW3h+WwqI3tfIXT6s6FLH+qA7A cIp2+n6iJfLvAW6FHe1K6ZfaN5sg== X-Received: by 2002:a05:6102:94c:b0:728:aa5f:dc5f with SMTP id ada2fe7eead31-72fd805baa5mr421506137.25.1782183064282; Mon, 22 Jun 2026 19:51:04 -0700 (PDT) MIME-Version: 1.0 References: <5ae9578e-f25e-49c5-97ab-ad27bc2050b5@eisentraut.org> <5221f892-e1d5-4943-a3dc-5c9c7bdf4924@eisentraut.org> <4e00626a-66ca-45af-9866-30d022523b37@postgresfriends.org> In-Reply-To: From: jian he Date: Tue, 23 Jun 2026 10:50:25 +0800 X-Gm-Features: AVVi8CdGab_7vey48tZQSeLQEdVw3fKWgQvme2jDo1_Ohl1ijEJWzvYrUBfXZGs Message-ID: Subject: Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions To: Corey Huinker Cc: Vik Fearing , Amul Sul , Peter Eisentraut , Kirill Reshke , Isaac Morland , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000078cb380654e2d4b8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000078cb380654e2d4b8 Content-Type: text/plain; charset="UTF-8" Hi, In subquery_planner -> preprocess_expression -> eval_const_expressions, we attempt to evaluate certain constant expressions in an error-safe manner by introducing an ErrorSaveContext in eval_const_expressions_context. However, this may introduce consistency issues, since not all functions are error-safe. Consider the following two queries: SELECT CAST(65536 AS int2 DEFAULT NULL ON CONVERSION ERROR); SELECT CAST(65536/0 AS int2 DEFAULT NULL ON CONVERSION ERROR); ERROR: division by zero The first query returns NULL, while the second throws an error. Should we accept this inconsistency, or make the first query error out too? Similarly, should we reject uncastable CASTs, like `CAST(NULL::date AS int2)`? More broadly, the patch involved significant effort (refactoring) in parsing (transformTypeCast), planning (eval_const_expressions) to ensure expressions do not fail. These efforts cannot ensure that all operations are error-safe, therefore there will be consistency issues. ---------------------------------------------------------------- [1] explains why SQL-language functions are inherently not error-safe. This raises the question: how should we handle user-defined cast functions in CAST(expr AS target_type DEFAULT defexpr ON CONVERSION ERROR)? There are three options: Option 1: Disallow them entirely. Reject any cast expression backed by a user-defined function at parse time. Option 2: Allow them with documented caveats. Permit user-defined cast functions, but explicitly document the limitations: - SQL-language functions are inherently incapable of error-safe execution. - C-language functions must ensure that all their subroutines are also error-safe. - It is the user's responsibility to ensure the cast function is error-safe; if it is not, errors will propagate as normal rather than being caught by the DEFAULT clause. Option 2 means that CAST(expr AS target_type DEFAULT defexpr ON CONVERSION ERROR) does not check if the underlying cast function actually supports error-safe operations. Option 3: Disallow SQL-language functions, but allow C-language and Internal-language functions. Also document that you must ensure the C function is error-safe if you want it to catch the error. Currently, we are using Option 1. Anyway, I rebased the patch and added comments in a few places that I realized were necessary in hindsight. [1]: https://postgr.es/m/CACJufxHM2e3DQmbRdDZvWyG3ZCLyOg6XFifvOz_TGy1tGw7NHw@mail.gmail.com -- jian https://www.enterprisedb.com/ --00000000000078cb380654e2d4b8 Content-Type: text/x-patch; charset="US-ASCII"; name="v30-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v30-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqq1i38f1 RnJvbSA4ODk2N2FjYzE2MThmNzk0ODU1MzJmMjUzMWM1OTNlNzExNmI4ODExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgMTggSnVuIDIwMjYgMjA6MDk6MDEgKzA4MDAKU3ViamVjdDogW1BBVENIIHYz MCAxLzJdIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgdGV4dCB0byBvdGhlciB0eXBlcyBwZXIKIHBn 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 L3JlZ3Byb2MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKaW5kZXggNjRmMjkz ZjRlOTguLmFkN2E0ZDUyZDI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmVn cHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKQEAgLTE5MDEsMTIg KzE5MDEsMTkgQEAgdGV4dF9yZWdjbGFzcyhQR19GVU5DVElPTl9BUkdTKQogCXRleHQJICAgKnJl bG5hbWUgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKIAlPaWQJCQlyZXN1bHQ7CiAJUmFuZ2VWYXIg ICAqcnY7CisJTGlzdAkgICAqbmFtZWxpc3Q7CiAKLQlydiA9IG1ha2VSYW5nZVZhckZyb21OYW1l TGlzdCh0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdChyZWxuYW1lKSk7CisJbmFtZWxpc3QgPSB0ZXh0 VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUocmVsbmFtZSwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAo U09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgp OworCisJcnYgPSBtYWtlUmFuZ2VWYXJGcm9tTmFtZUxpc3RTYWZlKG5hbWVsaXN0LCBmY2luZm8t PmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJ CVBHX1JFVFVSTl9OVUxMKCk7CiAKIAkvKiBXZSBtaWdodCBub3QgZXZlbiBoYXZlIHBlcm1pc3Np b25zIG9uIHRoaXMgcmVsYXRpb247IGRvbid0IGxvY2sgaXQuICovCi0JcmVzdWx0ID0gUmFuZ2VW YXJHZXRSZWxpZChydiwgTm9Mb2NrLCBmYWxzZSk7Ci0KKwlyZXN1bHQgPSBSYW5nZVZhckdldFJl bGlkRXh0ZW5kZWRTYWZlKHJ2LCBOb0xvY2ssIDAsIE5VTEwsIE5VTEwsCisJCQkJCQkJCQkJICBm Y2luZm8tPmNvbnRleHQpOwogCVBHX1JFVFVSTl9PSUQocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKaW5kZXggMGM2ZDNiYTRkMjIuLmMzMjYzYWQ5OTRjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKQEAgLTI3MjAsNiArMjcyMCwxMiBAQCBuYW1lX3RleHQoUEdfRlVOQ1RJT05f QVJHUykKICAqLwogTGlzdCAqCiB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFs KQoreworCXJldHVybiB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dHZhbCwgTlVMTCk7 Cit9CisKK0xpc3QgKgordGV4dFRvUXVhbGlmaWVkTmFtZUxpc3RTYWZlKHRleHQgKnRleHR2YWws IE5vZGUgKmVzY29udGV4dCkKIHsKIAljaGFyCSAgICpyYXduYW1lOwogCUxpc3QJICAgKnJlc3Vs dCA9IE5JTDsKQEAgLTI3MzEsMTIgKzI3MzcsMTIgQEAgdGV4dFRvUXVhbGlmaWVkTmFtZUxpc3Qo 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 bmEuaAppbmRleCBmZThkOGE1ODk1Mi4uYzRkNDI5MmViMWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3ZhcmxlbmEuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy92YXJsZW5hLmgKQEAg LTI3LDYgKzI3LDcgQEAgZXh0ZXJuIGludAl2YXJzdHJfbGV2ZW5zaHRlaW5fbGVzc19lcXVhbChj b25zdCBjaGFyICpzb3VyY2UsIGludCBzbGVuLAogCQkJCQkJCQkJCSAgaW50IGluc19jLCBpbnQg ZGVsX2MsIGludCBzdWJfYywKIAkJCQkJCQkJCQkgIGludCBtYXhfZCwgYm9vbCB0cnVzdGVkKTsK IGV4dGVybiBMaXN0ICp0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFsKTsKK2V4 dGVybiBMaXN0ICp0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dCAqdGV4dHZhbCwgTm9k ZSAqZXNjb250ZXh0KTsKIGV4dGVybiBjaGFyICpzY2FuX3F1b3RlZF9pZGVudGlmaWVyKGNoYXIg KiplbmRwLCBjaGFyICoqbmV4dHApOwogZXh0ZXJuIGNoYXIgKnNjYW5faWRlbnRpZmllcihjaGFy ICoqZW5kcCwgY2hhciAqKm5leHRwLCBjaGFyIHNlcGFyYXRvciwKIAkJCQkJCQkgYm9vbCBkb3du Y2FzZV91bnF1b3RlZCk7Ci0tIAoyLjM0LjEKCg== --00000000000078cb380654e2d4b8 Content-Type: text/x-patch; charset="UTF-8"; name="v30-0002-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Disposition: attachment; filename="v30-0002-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqq1i3800 RnJvbSAyNzBkNGU5NTMzZWYyMTMyNGRkZWQ2MTM2ZjdlMjc5NTlkM2E0YzUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjMgSnVuIDIwMjYgMTA6NDE6MjAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYz MCAyLzJdIENBU1QoZXhwciBBUyBuZXd0eXBlIERFRkFVTFQgZXhwciBPTiBDT05WRVJTSU9OCiBF UlJPUikKCkludHJvZHVjZSBTUUwtc3RhbmRhcmQgc2FmZSB0eXBlIGNhc3Qgc3ludGF4OgogICAg Q0FTVChleHByIEFTIG5ld3R5cGUgREVGQVVMVCBleHByIE9OIENPTlZFUlNJT04gRVJST1IpCgpU aGlzIGFsbG93IHVzZXJzIHRvIHNwZWNpZnkgYSBkZWZhdWx0IGZhbGxiYWNrIGV4cHJlc3Npb24g aWYgYSB0eXBlIGNvbnZlcnNpb24KZmFpbHMsIHJhdGhlciB0aGFuIHJhaXNpbmcgYW4gZXJyb3Iu CldpdGggdGhpcyBwYXRjaHNldCwgYWxtb3N0IGFsbCBvZiB0aGUgY2FzdCBmdW5jdGlvbnMgaW4g cGdfY2FzdC5jYXN0ZnVuYyBhcmUgbm93CmVycm9yLXNhZmUuICBDb2VyY2VWaWFJTyBhbmQgQ29l cmNlVG9Eb21haW4gd2VyZSBhbHJlYWR5IGVycm9yLXNhZmUgaW4gdGhlIEhFQUQsCnNlZSBbMF0s IHRoaXMgcGF0Y2ggZXh0ZW5kcyBlcnJvci1zYWZlIGJlaGF2aW9yIHRvIEFycmF5Q29lcmNlRXhw ci4KCiMgQnVtcHMgY2F0dmVyc2lvbiByZXF1aXJlZAoKWzBdOiBodHRwczovL2dpdC5wb3N0Z3Jl c3FsLm9yZy9jZ2l0L3Bvc3RncmVzcWwuZ2l0L2NvbW1pdC8/aWQ9YWFhZjk0NDllYzZiZTYyY2Iw ZDMwZWQzNTg4ZGMzODRmNTYyNzRiCgpBdXRob3I6IGppYW4gaGUgPGppYW4udW5pdmVyc2FsaXR5 QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFtdWwgU3VsIDxzdWxhbXVsQGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1i eTogQ29yZXkgSHVpbmtlciA8Y29yZXkuaHVpbmtlckBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBL aXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTWF0aGV1 cyBBbGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS9DQURrTE09ZnYxSmZZNFVmYS1qY3d3TmJqUWl4TlZpc2tROGpadTNUel9w NjU2aV80aFFAbWFpbC5nbWFpbC5jb20KQ29tbWl0ZmVzdDogaHR0cHM6Ly9jb21taXRmZXN0LnBv c3RncmVzcWwub3JnL3BhdGNoLzU5NDEKLS0tCiBjb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRl eHQub3V0ICAgICAgICAgICAgfCAgICA1ICsKIGNvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4 dF8xLm91dCAgICAgICAgICB8ICAgIDUgKwogY29udHJpYi9jaXRleHQvc3FsL2NpdGV4dC5zcWwg ICAgICAgICAgICAgICAgIHwgICAgMiArCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVk L3NlbGVjdC5vdXQgICAgfCAgIDI0ICstCiBjb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwv c2VsZWN0LnNxbCAgICAgfCAgICA1ICsKIGRvYy9zcmMvc2dtbC9zeW50YXguc2dtbCAgICAgICAg ICAgICAgICAgICAgICB8ICAgMzkgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAg ICAgICAgICAgICAgIHwgICA5NyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRl cnAuYyAgICAgICAgIHwgICAzNSArCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIu YyAgICAgICAgICAgfCAgIDU2ICsKIHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAg ICAgICAgICAgICB8ICAgNTMgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGFnZy5j ICAgICAgICAgIHwgICAxNSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMg ICAgICAgICAgfCAgMTAxICstCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAg ICAgICAgICAgfCAgIDIxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyAgICAgICAg ICAgICAgICB8ICAgIDkgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvZXJjZS5jICAgICAg ICAgICAgIHwgIDE0MiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAg ICAgICAgIHwgIDM3MCArKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAg ICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgICAg ICAgICAgICAgfCAgICAzICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jICAgICAg ICAgICAgICAgfCAgIDIyICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAg ICAgICAgICB8ICAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMgICAg ICAgICAgICB8ICAgIDkgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAg ICAgICAgIHwgICAyNSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgICAg ICAgICAgfCAgICA3ICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAg ICAgICB8ICAgIDIgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAg ICAgIHwgICAyMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAg ICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAg ICB8ICAgMzQgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oICAgICAgICAgICAg IHwgICAgMiArLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NvZXJjZS5oICAgICAgICAgICAg IHwgICAxNiArLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgICAgICAg IHwgICAgMiArCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oICAgICAgICAgICAgICAg fCAgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY2FzdC5vdXQgICAgICAgICAgICB8 IDExODUgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRl X2Nhc3Qub3V0ICAgICB8ICAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVpdmNs YXNzLm91dCAgICAgIHwgICAxOSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbC5vdXQg ICAgICAgICAgICAgfCAgICA2ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUg ICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nhc3Quc3FsICAgICAg ICAgICAgICAgICB8ICA0NTMgKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Nh c3Quc3FsICAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9lcXVpdmNsYXNz LnNxbCAgICAgICAgICAgfCAgICA1ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3htbC5zcWwgICAg ICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICAgICAgIHwgICAgMiArCiA0MSBmaWxlcyBjaGFuZ2VkLCAyNzE1IGluc2VydGlvbnMo KyksIDk1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY2FzdC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9jYXN0LnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dC5v dXQgYi9jb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHQub3V0CmluZGV4IDhjMGJmNTRmMGYz Li42OTY0OWMyYzVlMiAxMDA2NDQKLS0tIGEvY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0 Lm91dAorKysgYi9jb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHQub3V0CkBAIC0xMCw2ICsx MCwxMSBAQCBXSEVSRSBvcGMub2lkID49IDE2Mzg0IEFORCBOT1QgYW12YWxpZGF0ZShvcGMub2lk KTsKIC0tLS0tLS0tKy0tLS0tLS0tLQogKDAgcm93cykKIAorU0VMRUNUIENBU1QoJ2FiYyc6OmJw Y2hhciBBUyBjaXRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJv cgorRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIGNoYXJhY3RlciB0byBjaXRleHQgd2l0aCBERUZB VUxUIGV4cHJlc3Npb24gaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgorTElORSAxOiBT RUxFQ1QgQ0FTVCgnYWJjJzo6YnBjaGFyIEFTIGNpdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0kuLi4KKyAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgU2FmZSB0eXBlIGNhc3RzIGZv ciB1c2VyLWRlZmluZWQgdHlwZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLgogLS0gVGVzdCB0aGUg b3BlcmF0b3JzIGFuZCBpbmRleGluZyBmdW5jdGlvbnMKIC0tIFRlc3QgPSBhbmQgPD4uCiBTRUxF Q1QgJ2EnOjpjaXRleHQgPSAnYSc6OmNpdGV4dCBBUyB0OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9j aXRleHQvZXhwZWN0ZWQvY2l0ZXh0XzEub3V0IGIvY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0 ZXh0XzEub3V0CmluZGV4IGM1ZTVmMTgwZjJiLi44OTY5MzlkMzVjZSAxMDA2NDQKLS0tIGEvY29u dHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0XzEub3V0CisrKyBiL2NvbnRyaWIvY2l0ZXh0L2V4 cGVjdGVkL2NpdGV4dF8xLm91dApAQCAtMTAsNiArMTAsMTEgQEAgV0hFUkUgb3BjLm9pZCA+PSAx NjM4NCBBTkQgTk9UIGFtdmFsaWRhdGUob3BjLm9pZCk7CiAtLS0tLS0tLSstLS0tLS0tLS0KICgw IHJvd3MpCiAKK1NFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlw ZSBjaGFyYWN0ZXIgdG8gY2l0ZXh0IHdpdGggREVGQVVMVCBleHByZXNzaW9uIGluIENBU1QgLi4u IE9OIENPTlZFUlNJT04gRVJST1IKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2FiYyc6OmJwY2hhciBB UyBjaXRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJLi4uCisgICAgICAgICAgICAgICAgICAg IF4KK0RFVEFJTDogIFNhZmUgdHlwZSBjYXN0cyBmb3IgdXNlci1kZWZpbmVkIHR5cGVzIGFyZSBu b3QgeWV0IHN1cHBvcnRlZC4KIC0tIFRlc3QgdGhlIG9wZXJhdG9ycyBhbmQgaW5kZXhpbmcgZnVu Y3Rpb25zCiAtLSBUZXN0ID0gYW5kIDw+LgogU0VMRUNUICdhJzo6Y2l0ZXh0ID0gJ2EnOjpjaXRl eHQgQVMgdDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY2l0ZXh0L3NxbC9jaXRleHQuc3FsIGIvY29u dHJpYi9jaXRleHQvc3FsL2NpdGV4dC5zcWwKaW5kZXggYWExY2Y5YWJkNWMuLmM4MjBiMGJkNGQ5 IDEwMDY0NAotLS0gYS9jb250cmliL2NpdGV4dC9zcWwvY2l0ZXh0LnNxbAorKysgYi9jb250cmli L2NpdGV4dC9zcWwvY2l0ZXh0LnNxbApAQCAtOSw2ICs5LDggQEAgU0VMRUNUIGFtbmFtZSwgb3Bj bmFtZQogRlJPTSBwZ19vcGNsYXNzIG9wYyBMRUZUIEpPSU4gcGdfYW0gYW0gT04gYW0ub2lkID0g b3BjbWV0aG9kCiBXSEVSRSBvcGMub2lkID49IDE2Mzg0IEFORCBOT1QgYW12YWxpZGF0ZShvcGMu b2lkKTsKIAorU0VMRUNUIENBU1QoJ2FiYyc6OmJwY2hhciBBUyBjaXRleHQgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorCiAtLSBUZXN0IHRoZSBvcGVyYXRvcnMg YW5kIGluZGV4aW5nIGZ1bmN0aW9ucwogCiAtLSBUZXN0ID0gYW5kIDw+LgpkaWZmIC0tZ2l0IGEv Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvc2VsZWN0Lm91dCBiL2NvbnRyaWIv cGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3NlbGVjdC5vdXQKaW5kZXggYTA2OTExOWM3OTAu Ljg0ZjEwODEwZjcyIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBl Y3RlZC9zZWxlY3Qub3V0CisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVk L3NlbGVjdC5vdXQKQEAgLTczLDYgKzczLDI1IEBAIFNFTEVDVCAxIEFTICJpbnQiIE9GRlNFVCAy IEZFVENIIEZJUlNUIDMgUk9XIE9OTFk7CiAtLS0tLQogKDAgcm93cykKIAorLS0gZXJyb3Igc2Fm ZSB0eXBlIGNhc3QKK1NFTEVDVCBDQVNUKCdhJyBBUyBpbnQgREVGQVVMVCAyIE9OIENPTlZFUlNJ T04gRVJST1IpOworIGludDQgCistLS0tLS0KKyAgICAyCisoMSByb3cpCisKK1NFTEVDVCBDQVNU KCcxMicgQVMgbnVtZXJpYyBERUZBVUxUIDIgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbnVtZXJp YyAKKy0tLS0tLS0tLQorICAgICAgMTIKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzEyJyBBUyBu dW1lcmljKDEwKSBERUZBVUxUIDIgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbnVtZXJpYyAKKy0t LS0tLS0tLQorICAgICAgMTIKKygxIHJvdykKKwogLS0gRElTVElOQ1QgYW5kIE9SREVSIEJZIHBh dHRlcm5zCiAtLSBUcnkgc29tZSBxdWVyeSBwZXJtdXRhdGlvbnMgd2hpY2ggb25jZSBwcm9kdWNl ZCBpZGVudGljYWwgcXVlcnkgSURzCiBTRUxFQ1QgRElTVElOQ1QgMSBBUyAiaW50IjsKQEAgLTIy Miw2ICsyNDEsOSBAQCBTRUxFQ1QgY2FsbHMsIHJvd3MsIHF1ZXJ5IEZST00gcGdfc3RhdF9zdGF0 ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogICAgICAyIHwgICAgMiB8IFNFTEVD VCAkMSBBUyAiaW50IiBPUkRFUiBCWSAxCiAgICAgIDEgfCAgICAyIHwgU0VMRUNUICQxIEFTIGkg VU5JT04gU0VMRUNUICQyIE9SREVSIEJZIGkKICAgICAgMSB8ICAgIDEgfCBTRUxFQ1QgJDEgfHwg JDIKKyAgICAgMSB8ICAgIDEgfCBTRUxFQ1QgQ0FTVCgkMSBBUyBpbnQgREVGQVVMVCAkMiBPTiBD T05WRVJTSU9OIEVSUk9SKQorICAgICAxIHwgICAgMSB8IFNFTEVDVCBDQVNUKCQxIEFTIG51bWVy aWMgREVGQVVMVCAkMiBPTiBDT05WRVJTSU9OIEVSUk9SKQorICAgICAxIHwgICAgMSB8IFNFTEVD VCBDQVNUKCQxIEFTIG51bWVyaWMoMTApIERFRkFVTFQgJDIgT04gQ09OVkVSU0lPTiBFUlJPUikK ICAgICAgMiB8ICAgIDIgfCBTRUxFQ1QgRElTVElOQ1QgJDEgQVMgImludCIKICAgICAgMCB8ICAg IDAgfCBTRUxFQ1QgY2FsbHMsIHJvd3MsIHF1ZXJ5IEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9S REVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiCiAgICAgIDEgfCAgICAxIHwgU0VMRUNUIHBnX3N0YXRf c3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQKQEAgLTIzMCw3ICsyNTIsNyBAQCBT RUxFQ1QgY2FsbHMsIHJvd3MsIHF1ZXJ5IEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZ IHF1ZXJ5IENPTExBVEUgIkMiOwogICAgICAgIHwgICAgICB8ICkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CiAgICAgICAgfCAgICAgIHwgICBTRUxFQ1QgZiBGUk9NIHQgT1JERVIgQlkgZgogICAgICAxIHwg ICAgMSB8IHNlbGVjdCAkMTo6anNvbmIgPyAkMgotKDE3IHJvd3MpCisoMjAgcm93cykKIAogU0VM RUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CiAgdCAKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9zZWxlY3Quc3FsIGIvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVjdC5zcWwKaW5kZXggYTEwZDYxOGMwMzQu LjRiZTk3OTc3YmE2IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwv c2VsZWN0LnNxbAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvc2VsZWN0LnNx bApAQCAtMjUsNiArMjUsMTEgQEAgU0VMRUNUIDEgQVMgImludCIgTElNSVQgMyBPRkZTRVQgMzsK IFNFTEVDVCAxIEFTICJpbnQiIE9GRlNFVCAxIEZFVENIIEZJUlNUIDIgUk9XIE9OTFk7CiBTRUxF Q1QgMSBBUyAiaW50IiBPRkZTRVQgMiBGRVRDSCBGSVJTVCAzIFJPVyBPTkxZOwogCistLSBlcnJv ciBzYWZlIHR5cGUgY2FzdAorU0VMRUNUIENBU1QoJ2EnIEFTIGludCBERUZBVUxUIDIgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMTInIEFTIG51bWVyaWMgREVGQVVMVCAyIE9O IENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzEyJyBBUyBudW1lcmljKDEwKSBERUZB VUxUIDIgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKIC0tIERJU1RJTkNUIGFuZCBPUkRFUiBCWSBw YXR0ZXJucwogLS0gVHJ5IHNvbWUgcXVlcnkgcGVybXV0YXRpb25zIHdoaWNoIG9uY2UgcHJvZHVj ZWQgaWRlbnRpY2FsIHF1ZXJ5IElEcwogU0VMRUNUIERJU1RJTkNUIDEgQVMgImludCI7CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3ludGF4LnNn bWwKaW5kZXggNjc0ODI5OTY4NjEuLjg2Y2E5Mzg0OTYyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvc3ludGF4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCkBAIC0yMTI1LDYg KzIxMjUsNDUgQEAgQ0FTVCAoIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4g QVMgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPgogICAgICA8eHJlZiBsaW5rZW5kPSJz cWwtY3JlYXRlY2FzdCIvPi4KICAgICA8L3BhcmE+CiAgICA8L25vdGU+CisKKyAgIDxzZWN0MyBp ZD0ic3FsLXN5bnRheC10eXBlLWNhc3RzLXNhZmUiPgorICAgIDx0aXRsZT5TYWZlIFR5cGUgQ2Fz dHM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgIEEgdHlwZSBjYXN0IG1heSBvY2Nhc2lvbmFs bHkgZmFpbCBhdCBydW4gdGltZS4gIFRvIGd1YXJkIGFnYWluc3Qgc3VjaAorICAgICBmYWlsdXJl cywgeW91IGNhbiBwcm92aWRlIGFuIDxsaXRlcmFsPk9OIENPTlZFUlNJT04gRVJST1I8L2xpdGVy YWw+CisgICAgIGNsYXVzZSB0byBjb250cm9sIHdoYXQgaGFwcGVucyB3aGVuIGEgY2FzdCBmYWls cy4gIFRoZSBhdmFpbGFibGUgZm9ybXMKKyAgICAgYXJlOgorPHN5bm9wc2lzPgorQ0FTVCAoIDxy ZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gQVMgPHJlcGxhY2VhYmxlPnR5cGU8 L3JlcGxhY2VhYmxlPiBERUZBVUxUIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJs ZT4gT04gQ09OVkVSU0lPTiBFUlJPUiApCitDQVNUICggPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248 L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IEVSUk9SIE9O IENPTlZFUlNJT04gRVJST1IgKQorPC9zeW5vcHNpcz4KKyAgICAgV2l0aCA8bGl0ZXJhbD5ERUZB VUxUIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gT04gQ09OVkVSU0lPTiBF UlJPUjwvbGl0ZXJhbD4sCisgICAgIHRoZSBkZWZhdWx0IDxyZXBsYWNlYWJsZT5leHByZXNzaW9u PC9yZXBsYWNlYWJsZT4gaXMgZXZhbHVhdGVkIGFuZAorICAgICByZXR1cm5lZCBpbnN0ZWFkLiAg VGhlIDxsaXRlcmFsPkVSUk9SIE9OIENPTlZFUlNJT04gRVJST1I8L2xpdGVyYWw+CisgICAgIGZv cm0gcmFpc2VzIGFuIGVycm9yIG9uIGZhaWx1cmUsIHdoaWNoIGlzIGFsc28gdGhlIGRlZmF1bHQg YmVoYXZpb3IKKyAgICAgd2hlbiBubyA8bGl0ZXJhbD5PTiBDT05WRVJTSU9OIEVSUk9SPC9saXRl cmFsPiBjbGF1c2UgaXMgc3BlY2lmaWVkLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAg ICBBdCBwcmVzZW50LCB0aGlzIG9ubHkgc3VwcG9ydHMgYnVpbHQtaW4gdHlwZSBjYXN0cyBsaXN0 ZWQgaW4KKyAgICAgPHhyZWYgbGlua2VuZD0iY2F0YWxvZy1wZy1jYXN0Ii8+LiAgVXNlci1kZWZp bmVkIHR5cGUgY2FzdHMgY3JlYXRlZAorICAgICB3aXRoIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVh dGVjYXN0Ij5DUkVBVEUgQ0FTVDwvbGluaz4gYXJlIG5vdAorICAgICBzdXBwb3J0ZWQuCisgICAg PC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFNvbWUgZXhhbXBsZXM6Cis8c2NyZWVuPgorU0VM RUNUIENBU1QoJ25vdC1hLWRhdGUnIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworPGxpbmVhbm5vdGF0aW9uPlJlc3VsdDogPC9saW5lYW5ub3RhdGlvbj48Y29tcHV0 ZXJvdXRwdXQ+TlVMTDwvY29tcHV0ZXJvdXRwdXQ+CitTRUxFQ1QgQ0FTVCgnbm90LWEtZGF0ZScg QVMgZGF0ZSBERUZBVUxUICcxOTcwLTAxLTAxJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKzxsaW5l YW5ub3RhdGlvbj5SZXN1bHQ6IDwvbGluZWFubm90YXRpb24+PGNvbXB1dGVyb3V0cHV0PjE5NzAt MDEtMDE8L2NvbXB1dGVyb3V0cHV0PgorU0VMRUNUIENBU1QoVEVYVCAnZXJyb3InIEFTIGludGVn ZXIgREVGQVVMVCAzIE9OIENPTlZFUlNJT04gRVJST1IpOworPGxpbmVhbm5vdGF0aW9uPlJlc3Vs dDogPC9saW5lYW5ub3RhdGlvbj48Y29tcHV0ZXJvdXRwdXQ+MzwvY29tcHV0ZXJvdXRwdXQ+Cis8 L3NjcmVlbj4KKyAgICA8L3BhcmE+CisgICA8L3NlY3QzPgogICA8L3NlY3QyPgogCiAgIDxzZWN0 MiBpZD0ic3FsLXN5bnRheC1jb2xsYXRlLWV4cHJzIj4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmlu ZGV4IGNmZWE3ZTE2MGMyLi4zMjdjYjU0NDQ0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCkBA IC05OSw2ICs5OSw5IEBAIHN0YXRpYyB2b2lkIEV4ZWNCdWlsZEFnZ1RyYW5zQ2FsbChFeHByU3Rh dGUgKnN0YXRlLCBBZ2dTdGF0ZSAqYWdnc3RhdGUsCiBzdGF0aWMgdm9pZCBFeGVjSW5pdEpzb25F eHByKEpzb25FeHByICpqc2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCQkJIERhdHVtICpy ZXN2LCBib29sICpyZXNudWxsLAogCQkJCQkJCSBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gpOworc3Rh dGljIHZvaWQgRXhlY0luaXRTYWZlVHlwZUNhc3RFeHByKFNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4 cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCisJCQkJCQkJCQkgRGF0dW0gKnJlc3YsIGJvb2wgKnJlc251 bGwsCisJCQkJCQkJCQkgRXhwckV2YWxTdGVwICpzY3JhdGNoKTsKIHN0YXRpYyB2b2lkIEV4ZWNJ bml0SnNvbkNvZXJjaW9uKEV4cHJTdGF0ZSAqc3RhdGUsIEpzb25SZXR1cm5pbmcgKnJldHVybmlu ZywKIAkJCQkJCQkJIEVycm9yU2F2ZUNvbnRleHQgKmVzY29udGV4dCwgYm9vbCBvbWl0X3F1b3Rl cywKIAkJCQkJCQkJIGJvb2wgZXhpc3RzX2NvZXJjZSwKQEAgLTE0MSw2ICsxNDQsMjYgQEAgc3Rh dGljIHZvaWQgRXhlY0luaXRKc29uQ29lcmNpb24oRXhwclN0YXRlICpzdGF0ZSwgSnNvblJldHVy bmluZyAqcmV0dXJuaW5nLAogICovCiBFeHByU3RhdGUgKgogRXhlY0luaXRFeHByKEV4cHIgKm5v ZGUsIFBsYW5TdGF0ZSAqcGFyZW50KQoreworCXJldHVybiBFeGVjSW5pdEV4cHJXaXRoQ29udGV4 dChub2RlLCBwYXJlbnQsIE5VTEwpOworfQorCisvKgorICogRXhlY0luaXRFeHByV2l0aENvbnRl eHQ6IHNhbWUgYXMgRXhlY0luaXRFeHByLCBidXQgd2l0aCBhbiBvcHRpb25hbAorICogRXJyb3JT YXZlQ29udGV4dCBmb3Igc29mdCBlcnJvciBoYW5kbGluZy4KKyAqCisgKiBXaGVuICdlc2NvbnRl eHQnIGlzIG5vbi1OVUxMLCBleHByZXNzaW9uIG5vZGVzIHRoYXQgc3VwcG9ydCBzb2Z0IGVycm9y cworICogKGN1cnJlbnRseSBDb2VyY2VUb0RvbWFpbidzIE5PVCBOVUxMIGFuZCBDSEVDSyBjb25z dHJhaW50IHN0ZXBzKSB3aWxsIHVzZQorICogZXJyc2F2ZSgpIGluc3RlYWQgb2YgZXJlcG9ydCgp LCBhbGxvd2luZyB0aGUgY2FsbGVyIHRvIGRldGVjdCBhbmQgaGFuZGxlCisgKiBmYWlsdXJlcyB3 aXRob3V0IGEgdHJhbnNhY3Rpb24gYWJvcnQuCisgKgorICogVGhlIGVzY29udGV4dCBtdXN0IGJl IHByb3ZpZGVkIGF0IGluaXRpYWxpemF0aW9uIHRpbWUgKG5vdCBhZnRlciksIGJlY2F1c2UKKyAq IGl0IGlzIGNvcGllZCBpbnRvIHBlci1zdGVwIGRhdGEgZHVyaW5nIGV4cHJlc3Npb24gY29tcGls YXRpb24uCisgKgorICogTm90IGFsbCBleHByZXNzaW9uIG5vZGUgdHlwZXMgc3VwcG9ydCBzb2Z0 IGVycm9ycy4gIElmIGluIGRvdWJ0LCBwYXNzIE5VTEwuCisgKi8KK0V4cHJTdGF0ZSAqCitFeGVj SW5pdEV4cHJXaXRoQ29udGV4dChFeHByICpub2RlLCBQbGFuU3RhdGUgKnBhcmVudCwgTm9kZSAq ZXNjb250ZXh0KQogewogCUV4cHJTdGF0ZSAgKnN0YXRlOwogCUV4cHJFdmFsU3RlcCBzY3JhdGNo ID0gezB9OwpAQCAtMTU0LDYgKzE3Nyw3IEBAIEV4ZWNJbml0RXhwcihFeHByICpub2RlLCBQbGFu U3RhdGUgKnBhcmVudCkKIAlzdGF0ZS0+ZXhwciA9IG5vZGU7CiAJc3RhdGUtPnBhcmVudCA9IHBh cmVudDsKIAlzdGF0ZS0+ZXh0X3BhcmFtcyA9IE5VTEw7CisJc3RhdGUtPmVzY29udGV4dCA9IChF cnJvclNhdmVDb250ZXh0ICopIGVzY29udGV4dDsKIAogCS8qIEluc2VydCBzZXR1cCBzdGVwcyBh cyBuZWVkZWQgKi8KIAlFeGVjQ3JlYXRlRXhwclNldHVwU3RlcHMoc3RhdGUsIChOb2RlICopIG5v ZGUpOwpAQCAtNzYzLDYgKzc4NywxOCBAQCBFeGVjQnVpbGRVcGRhdGVQcm9qZWN0aW9uKExpc3Qg KnRhcmdldExpc3QsCiAgKi8KIEV4cHJTdGF0ZSAqCiBFeGVjUHJlcGFyZUV4cHIoRXhwciAqbm9k ZSwgRVN0YXRlICplc3RhdGUpCit7CisJcmV0dXJuIEV4ZWNQcmVwYXJlRXhwcldpdGhDb250ZXh0 KG5vZGUsIGVzdGF0ZSwgTlVMTCk7Cit9CisKKy8qCisgKiBFeGVjUHJlcGFyZUV4cHJXaXRoQ29u dGV4dDogc2FtZSBhcyBFeGVjUHJlcGFyZUV4cHIsIGJ1dCB3aXRoIGFuIG9wdGlvbmFsCisgKiBF cnJvclNhdmVDb250ZXh0IGZvciBzb2Z0IGVycm9yIGhhbmRsaW5nLgorICoKKyAqIFNlZSBFeGVj SW5pdEV4cHJXaXRoQ29udGV4dCBmb3IgZGV0YWlscyBvbiB0aGUgZXNjb250ZXh0IHBhcmFtZXRl ci4KKyAqLworRXhwclN0YXRlICoKK0V4ZWNQcmVwYXJlRXhwcldpdGhDb250ZXh0KEV4cHIgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBOb2RlICplc2NvbnRleHQpCiB7CiAJRXhwclN0YXRlICAqcmVz dWx0OwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKQEAgLTc3MSw3ICs4MDcsNyBAQCBFeGVj UHJlcGFyZUV4cHIoRXhwciAqbm9kZSwgRVN0YXRlICplc3RhdGUpCiAKIAlub2RlID0gZXhwcmVz c2lvbl9wbGFubmVyKG5vZGUpOwogCi0JcmVzdWx0ID0gRXhlY0luaXRFeHByKG5vZGUsIE5VTEwp OworCXJlc3VsdCA9IEV4ZWNJbml0RXhwcldpdGhDb250ZXh0KG5vZGUsIE5VTEwsIGVzY29udGV4 dCk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKQEAgLTE3MDEsNiAr MTczNyw3IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAog CiAJCQkJZWxlbXN0YXRlLT5pbm5lcm1vc3RfY2FzZXZhbCA9IHBhbGxvY19vYmplY3QoRGF0dW0p OwogCQkJCWVsZW1zdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gcGFsbG9jX29iamVjdChib29s KTsKKwkJCQllbGVtc3RhdGUtPmVzY29udGV4dCA9IHN0YXRlLT5lc2NvbnRleHQ7CiAKIAkJCQlF eGVjSW5pdEV4cHJSZWMoYWNvZXJjZS0+ZWxlbWV4cHIsIGVsZW1zdGF0ZSwKIAkJCQkJCQkJJmVs ZW1zdGF0ZS0+cmVzdmFsdWUsICZlbGVtc3RhdGUtPnJlc251bGwpOwpAQCAtMjE3Niw2ICsyMjEz LDE2IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJ CWJyZWFrOwogCQkJfQogCisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJeworCQkJCVNh ZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIgPSBjYXN0Tm9kZShTYWZlVHlwZUNhc3RFeHByLCBub2Rl KTsKKworCQkJCUV4ZWNJbml0U2FmZVR5cGVDYXN0RXhwcihzdGNleHByLCBzdGF0ZSwgcmVzdiwg cmVzbnVsbCwKKwkJCQkJCQkJCQkgJnNjcmF0Y2gpOworCisJCQkJYnJlYWs7CisJCQl9CisKIAkJ Y2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCXsKIAkJCQlDb2FsZXNjZUV4cHIgKmNvYWxlc2NlID0g KENvYWxlc2NlRXhwciAqKSBub2RlOwpAQCAtMjczNiw3ICsyNzgzLDggQEAgRXhlY0luaXRGdW5j KEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwgRXhwciAqbm9kZSwgTGlzdCAqYXJncywgT2lkIGZ1bmNp ZCwKIAogCS8qIEluaXRpYWxpemUgZnVuY3Rpb24gY2FsbCBwYXJhbWV0ZXIgc3RydWN0dXJlIHRv byAqLwogCUluaXRGdW5jdGlvbkNhbGxJbmZvRGF0YSgqZmNpbmZvLCBmbGluZm8sCi0JCQkJCQkJ IG5hcmdzLCBpbnB1dGNvbGxpZCwgTlVMTCwgTlVMTCk7CisJCQkJCQkJIG5hcmdzLCBpbnB1dGNv bGxpZCwKKwkJCQkJCQkgKE5vZGUgKikgc3RhdGUtPmVzY29udGV4dCwgTlVMTCk7CiAKIAkvKiBL ZWVwIGV4dHJhIGNvcGllcyBvZiB0aGlzIGluZm8gdG8gc2F2ZSBhbiBpbmRpcmVjdGlvbiBhdCBy dW50aW1lICovCiAJc2NyYXRjaC0+ZC5mdW5jLmZuX2FkZHIgPSBmbGluZm8tPmZuX2FkZHI7CkBA IC00NzM3LDYgKzQ3ODUsNTEgQEAgRXhlY0J1aWxkUGFyYW1TZXRFcXVhbChUdXBsZURlc2MgZGVz YywKIAlyZXR1cm4gc3RhdGU7CiB9CiAKKy8qCisgKiBQdXNoIHN0ZXBzIHRvIGV2YWx1YXRlIGEg U2FmZVR5cGVDYXN0RXhwciBhbmQgaXRzIHZhcmlvdXMgc3Vic2lkaWFyeQorICogZXhwcmVzc2lv bnMuCisgKi8KK3N0YXRpYyB2b2lkCitFeGVjSW5pdFNhZmVUeXBlQ2FzdEV4cHIoU2FmZVR5cGVD YXN0RXhwciAqc3RjZXhwciwgRXhwclN0YXRlICpzdGF0ZSwKKwkJCQkJCSBEYXR1bSAqcmVzdiwg Ym9vbCAqcmVzbnVsbCwKKwkJCQkJCSBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gpCit7CisJLyoKKwkg KiBJZiB0aGVyZSdzIG5vIGNhc3QgZXhwcmVzc2lvbiAoY2FzdGV4cHIgPT0gTlVMTCksIG9ubHkg dGhlIERFRkFVTFQKKwkgKiBleHByZXNzaW9uIG5lZWRzIHRvIGJlIGV2YWx1YXRlZDsgc2V0IGl0 IHVwIGFuZCByZXR1cm4gZWFybHkuCisJICovCisJaWYgKHN0Y2V4cHItPmNhc3RleHByID09IE5V TEwpCisJeworCQlFeGVjSW5pdEV4cHJSZWMoc3RjZXhwci0+ZGVmZXhwciwgc3RhdGUsIHJlc3Ys IHJlc251bGwpOworCisJCXJldHVybjsKKwl9CisJZWxzZQorCXsKKwkJU2FmZVR5cGVDYXN0U3Rh dGUgKnN0Y3N0YXRlID0gcGFsbG9jMF9vYmplY3QoU2FmZVR5cGVDYXN0U3RhdGUpOworCQlFcnJv clNhdmVDb250ZXh0ICpzYXZlZF9lc2NvbnRleHQgPSBzdGF0ZS0+ZXNjb250ZXh0OworCisJCXN0 Y3N0YXRlLT5zdGNleHByID0gc3RjZXhwcjsKKwkJc3Rjc3RhdGUtPmVzY29udGV4dC50eXBlID0g VF9FcnJvclNhdmVDb250ZXh0OworCQlzdGNzdGF0ZS0+ZXNjb250ZXh0LmVycm9yX29jY3VycmVk ID0gZmFsc2U7CisJCXN0Y3N0YXRlLT5lc2NvbnRleHQuZGV0YWlsc193YW50ZWQgPSBmYWxzZTsK KwkJc3Rjc3RhdGUtPmVzY29udGV4dC5lcnJvcl9kYXRhID0gTlVMTDsKKwkJc3RhdGUtPmVzY29u dGV4dCA9ICZzdGNzdGF0ZS0+ZXNjb250ZXh0OworCisJCS8qIGV2YWx1YXRlIGFyZ3VtZW50IGV4 cHJlc3Npb24gaW50byBzdGVwJ3MgcmVzdWx0IGFyZWEgKi8KKwkJRXhlY0luaXRFeHByUmVjKHN0 Y2V4cHItPmNhc3RleHByLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisJCXNjcmF0Y2gtPm9wY29k ZSA9IEVFT1BfU0FGRVRZUEVfQ0FTVDsKKwkJc2NyYXRjaC0+ZC5zdGNleHByLnN0Y3N0YXRlID0g c3Rjc3RhdGU7CisJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCisJCS8qIGV2 YWx1YXRlIERFRkFVTFQgZXhwcmVzc2lvbiB1c2luZyB0aGUgcHJpb3Igc3RhdGUtPmVzY29udGV4 dCAqLworCQlzdGF0ZS0+ZXNjb250ZXh0ID0gc2F2ZWRfZXNjb250ZXh0OworCQlFeGVjSW5pdEV4 cHJSZWMoc3Rjc3RhdGUtPnN0Y2V4cHItPmRlZmV4cHIsIHN0YXRlLCByZXN2LCByZXNudWxsKTsK KworCQlzdGNzdGF0ZS0+anVtcF9lbmQgPSBzdGF0ZS0+c3RlcHNfbGVuOworCX0KK30KKwogLyoK ICAqIFB1c2ggc3RlcHMgdG8gZXZhbHVhdGUgYSBKc29uRXhwciBhbmQgaXRzIHZhcmlvdXMgc3Vi c2lkaWFyeSBleHByZXNzaW9ucy4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJw LmMKaW5kZXggMDYzNGFmOTY0YTkuLmVkMjMxZDczN2M5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNFeHBySW50ZXJwLmMKQEAgLTU3OCw2ICs1NzgsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3Rh dGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNF X0VFT1BfWE1MRVhQUiwKIAkJJiZDQVNFX0VFT1BfSlNPTl9DT05TVFJVQ1RPUiwKIAkJJiZDQVNF X0VFT1BfSVNfSlNPTiwKKwkJJiZDQVNFX0VFT1BfU0FGRVRZUEVfQ0FTVCwKIAkJJiZDQVNFX0VF T1BfSlNPTkVYUFJfUEFUSCwKIAkJJiZDQVNFX0VFT1BfSlNPTkVYUFJfQ09FUkNJT04sCiAJCSYm Q0FTRV9FRU9QX0pTT05FWFBSX0NPRVJDSU9OX0ZJTklTSCwKQEAgLTE5MzYsNiArMTkzNywyOCBA QCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQs IGJvb2wgKmlzbnVsbCkKIAkJCUVFT19ORVhUKCk7CiAJCX0KIAorCQlFRU9fQ0FTRShFRU9QX1NB RkVUWVBFX0NBU1QpCisJCXsKKwkJCVNhZmVUeXBlQ2FzdFN0YXRlICpzdGNzdGF0ZSA9IG9wLT5k LnN0Y2V4cHIuc3Rjc3RhdGU7CisKKwkJCWlmICghU09GVF9FUlJPUl9PQ0NVUlJFRCgmc3Rjc3Rh dGUtPmVzY29udGV4dCkpCisJCQkJRUVPX0pVTVAoc3Rjc3RhdGUtPmp1bXBfZW5kKTsKKwkJCWVs c2UKKwkJCXsKKwkJCQkqb3AtPnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkJCSpvcC0+cmVzbnVs bCA9IHRydWU7CisKKwkJCQkvKgorCQkJCSAqIFR5cGUgY2FzdCBlcnJvciBvY2N1cnJlZC4gUmVz ZXQgdGhlIEVycm9yU2F2ZUNvbnRleHQgc28KKwkJCQkgKiBpdCdzIHJlYWR5IGZvciB0aGUgbmV4 dCBjb2VyY2lvbiBldmFsdWF0aW9uIGF0dGVtcHQuCisJCQkJICovCisJCQkJc3Rjc3RhdGUtPmVz Y29udGV4dC5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOworCQkJCXN0Y3N0YXRlLT5lc2NvbnRleHQu ZGV0YWlsc193YW50ZWQgPSBmYWxzZTsKKworCQkJCUVFT19ORVhUKCk7CisJCQl9CisJCX0KKwog CQlFRU9fQ0FTRShFRU9QX0pTT05FWFBSX1BBVEgpCiAJCXsKIAkJCS8qIHRvbyBjb21wbGV4IGZv ciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8KQEAgLTM2NTQsNiArMzY3NywxOCBAQCBFeGVj RXZhbEFycmF5Q29lcmNlKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJD b250ZXh0ICplY29udGV4dCkKIAkJCQkJCQkgIGVjb250ZXh0LAogCQkJCQkJCSAgb3AtPmQuYXJy YXljb2VyY2UucmVzdWx0ZWxlbXR5cGUsCiAJCQkJCQkJICBvcC0+ZC5hcnJheWNvZXJjZS5hbXN0 YXRlKTsKKworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKG9wLT5kLmFycmF5Y29lcmNlLmVsZW1l eHByc3RhdGUtPmVzY29udGV4dCkpCisJeworCQkqb3AtPnJlc3ZhbHVlID0gKERhdHVtKSAwOwor CQkqb3AtPnJlc251bGwgPSB0cnVlOworCisJCS8qCisJCSAqIEEgc29mdCBlcnJvciBvY2N1cnJl ZC4gVGhlIGNhbGxlciBtYXkgbmVlZCB0byByZXNldAorCQkgKiBFeHByU3RhdGUuRXJyb3JTYXZl Q29udGV4dC5lcnJvcl9vY2N1cnJlZCBmb3IgdGhlIG5leHQgZXZhbHVhdGlvbi4KKwkJICogQ3Vy cmVudGx5LCBFRU9QX1NBRkVUWVBFX0NBU1Qgd2lsbCBkbyB0aGF0LgorCQkgKi8KKwl9CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyBiL3Ny Yy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCmluZGV4IDBlMTYwYjg1MDJjLi5hZjkz ZGQwODRhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMK KysrIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKQEAgLTIyNTgsNiArMjI1 OCw2MiBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHByU3RhdGUgKnN0YXRlKQogCQkJCUxMVk1CdWls ZEJyKGIsIG9wYmxvY2tzW29wbm8gKyAxXSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgRUVPUF9T QUZFVFlQRV9DQVNUOgorCQkJCXsKKwkJCQkJU2FmZVR5cGVDYXN0U3RhdGUgKnN0Y3N0YXRlID0g b3AtPmQuc3RjZXhwci5zdGNzdGF0ZTsKKwkJCQkJTExWTUJhc2ljQmxvY2tSZWYgYl9ub2Vycm9y OworCQkJCQlMTFZNQmFzaWNCbG9ja1JlZiBiX2Vycm9yOworCQkJCQlMTFZNVmFsdWVSZWYgdl9l cnJvcl9vY2N1cnJlZF9wOworCQkJCQlMTFZNVmFsdWVSZWYgdl9kZXRhaWxzX3dhbnRlZF9wOwor CQkJCQlMTFZNVmFsdWVSZWYgdl9lcnJvcl9vY2N1cnJlZDsKKworCQkJCQliX25vZXJyb3IgPSBs X2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8gKyAxXSwKKwkJCQkJCQkJCQkJICAib3AuJWQubm9l cnJvciIsIG9wbm8pOworCQkJCQliX2Vycm9yID0gbF9iYl9iZWZvcmVfdihvcGJsb2Nrc1tvcG5v ICsgMV0sCisJCQkJCQkJCQkJCSJvcC4lZC5lcnJvciIsIG9wbm8pOworCisJCQkJCS8qIEdldCBw b2ludGVyIHRvIGVycm9yX29jY3VycmVkIGZpZWxkICovCisJCQkJCXZfZXJyb3Jfb2NjdXJyZWRf cCA9IGxfcHRyX2NvbnN0KCZzdGNzdGF0ZS0+ZXNjb250ZXh0LmVycm9yX29jY3VycmVkLAorCQkJ CQkJCQkJCQkJCSBsX3B0cihUeXBlU3RvcmFnZUJvb2wpKTsKKworCQkJCQkvKiBMb2FkIGVycm9y X29jY3VycmVkIGF0IHJ1bnRpbWUgKi8KKwkJCQkJdl9lcnJvcl9vY2N1cnJlZCA9IGxfbG9hZChi LCBUeXBlU3RvcmFnZUJvb2wsIHZfZXJyb3Jfb2NjdXJyZWRfcCwgIiIpOworCisJCQkJCS8qIEJy YW5jaCBiYXNlZCBvbiBlcnJvcl9vY2N1cnJlZDogbm8gZXJyb3IgLT4ganVtcF9lbmQgKi8KKwkJ CQkJTExWTUJ1aWxkQ29uZEJyKGIsCisJCQkJCQkJCQlMTFZNQnVpbGRJQ21wKGIsIExMVk1JbnRF USwgdl9lcnJvcl9vY2N1cnJlZCwKKwkJCQkJCQkJCQkJCSAgbF9zYm9vbF9jb25zdCgwKSwgIiIp LAorCQkJCQkJCQkJYl9ub2Vycm9yLAorCQkJCQkJCQkJYl9lcnJvcik7CisKKwkJCQkJLyogTm8g ZXJyb3I6IGp1bXAgdG8gZW5kICovCisJCQkJCUxMVk1Qb3NpdGlvbkJ1aWxkZXJBdEVuZChiLCBi X25vZXJyb3IpOworCQkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tzdGNzdGF0ZS0+anVtcF9l bmRdKTsKKworCQkJCQkvKiBFcnJvciBvY2N1cnJlZDogc2V0IG51bGwsIHJlc2V0IGZsYWdzLCBl dmFsdWF0ZSBkZWZhdWx0ICovCisJCQkJCUxMVk1Qb3NpdGlvbkJ1aWxkZXJBdEVuZChiLCBiX2Vy cm9yKTsKKworCQkJCQkvKiBzZXQgcmVzbnVsbCB0byB0cnVlICovCisJCQkJCUxMVk1CdWlsZFN0 b3JlKGIsIGxfc2Jvb2xfY29uc3QoMSksIHZfcmVzbnVsbHApOworCisJCQkJCS8qIHJlc2V0IHJl c3ZhbHVlICovCisJCQkJCUxMVk1CdWlsZFN0b3JlKGIsIGxfZGF0dW1fY29uc3QoMCksIHZfcmVz dmFsdWVwKTsKKworCQkJCQkvKgorCQkJCQkgKiBSZXNldCBmb3IgbmV4dCB1c2Ugc3VjaCBhcyBm b3IgY2F0Y2hpbmcgZXJyb3JzIHdoZW4KKwkJCQkJICogY29lcmNpbmcgYSBleHByZXNzaW9uLgor CQkJCQkgKi8KKwkJCQkJTExWTUJ1aWxkU3RvcmUoYiwgbF9zYm9vbF9jb25zdCgwKSwgdl9lcnJv cl9vY2N1cnJlZF9wKTsKKworCQkJCQl2X2RldGFpbHNfd2FudGVkX3AgPSBsX3B0cl9jb25zdCgm c3Rjc3RhdGUtPmVzY29udGV4dC5kZXRhaWxzX3dhbnRlZCwKKwkJCQkJCQkJCQkJCQkgbF9wdHIo VHlwZVN0b3JhZ2VCb29sKSk7CisJCQkJCUxMVk1CdWlsZFN0b3JlKGIsIGxfc2Jvb2xfY29uc3Qo MCksIHZfZGV0YWlsc193YW50ZWRfcCk7CisKKwkJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nb b3BubyArIDFdKTsKKworCQkJCQlicmVhazsKKwkJCQl9CisKIAkJCWNhc2UgRUVPUF9KU09ORVhQ Ul9QQVRIOgogCQkJCXsKIAkJCQkJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUgPSBvcC0+ZC5qc29u ZXhwci5qc2VzdGF0ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggMmEyZTAwYjM3MmUuLmQ0NmVm MWE4N2U0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9z cmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjA2LDYgKzIwNiw5IEBAIGV4cHJUeXBl KGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9Sb3dDb21wYXJlRXhwcjoKIAkJCXR5cGUgPSBC T09MT0lEOwogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJdHlwZSA9 ICgoY29uc3QgU2FmZVR5cGVDYXN0RXhwciAqKSBleHByKS0+cmVzdWx0dHlwZTsKKwkJCWJyZWFr OwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgogCQkJdHlwZSA9ICgoY29uc3QgQ29hbGVzY2VFeHBy ICopIGV4cHIpLT5jb2FsZXNjZXR5cGU7CiAJCQlicmVhazsKQEAgLTQ1Myw2ICs0NTYsOCBAQCBl eHByVHlwbW9kKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQkJcmV0dXJuIHR5cG1vZDsKIAkJCX0KIAkJ CWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXJldHVybiAoKGNvbnN0IFNh ZmVUeXBlQ2FzdEV4cHIgKikgZXhwciktPnJlc3VsdHR5cG1vZDsKIAkJY2FzZSBUX0NvYWxlc2Nl RXhwcjoKIAkJCXsKIAkJCQkvKgpAQCAtOTcwLDYgKzk3NSw5IEBAIGV4cHJDb2xsYXRpb24oY29u c3QgTm9kZSAqZXhwcikKIAkJCS8qIFJvd0NvbXBhcmVFeHByJ3MgcmVzdWx0IGlzIGJvb2xlYW4g Li4uICovCiAJCQljb2xsID0gSW52YWxpZE9pZDsJLyogLi4uIHNvIGl0IGhhcyBubyBjb2xsYXRp b24gKi8KIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCWNvbGwgPSAo KGNvbnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikgZXhwciktPnJlc3VsdGNvbGxpZDsKKwkJCWJyZWFr OwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgogCQkJY29sbCA9ICgoY29uc3QgQ29hbGVzY2VFeHBy ICopIGV4cHIpLT5jb2FsZXNjZWNvbGxpZDsKIAkJCWJyZWFrOwpAQCAtMTI0OCw2ICsxMjU2LDkg QEAgZXhwclNldENvbGxhdGlvbihOb2RlICpleHByLCBPaWQgY29sbGF0aW9uKQogCQkJLyogUm93 Q29tcGFyZUV4cHIncyByZXN1bHQgaXMgYm9vbGVhbiAuLi4gKi8KIAkJCUFzc2VydCghT2lkSXNW YWxpZChjb2xsYXRpb24pKTsgLyogLi4uIHNvIG5ldmVyIHNldCBhIGNvbGxhdGlvbiAqLwogCQkJ YnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJKChTYWZlVHlwZUNhc3RFeHBy ICopIGV4cHIpLT5yZXN1bHRjb2xsaWQgPSBjb2xsYXRpb247CisJCQlicmVhazsKIAkJY2FzZSBU X0NvYWxlc2NlRXhwcjoKIAkJCSgoQ29hbGVzY2VFeHByICopIGV4cHIpLT5jb2FsZXNjZWNvbGxp ZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFrOwpAQCAtMTU2OSw2ICsxNTgwLDkgQEAgZXhwckxvY2F0 aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQkvKiBqdXN0IHVzZSBsZWZ0bW9zdCBhcmd1bWVudCdz IGxvY2F0aW9uICovCiAJCQlsb2MgPSBleHByTG9jYXRpb24oKE5vZGUgKikgKChjb25zdCBSb3dD b21wYXJlRXhwciAqKSBleHByKS0+bGFyZ3MpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlw ZUNhc3RFeHByOgorCQkJbG9jID0gKChjb25zdCBTYWZlVHlwZUNhc3RFeHByICopIGV4cHIpLT5s b2NhdGlvbjsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgogCQkJLyogQ09BTEVT Q0Uga2V5d29yZCBzaG91bGQgYWx3YXlzIGJlIHRoZSBmaXJzdCB0aGluZyAqLwogCQkJbG9jID0g KChjb25zdCBDb2FsZXNjZUV4cHIgKikgZXhwciktPmxvY2F0aW9uOwpAQCAtMjM0NSw2ICsyMzU5 LDE4IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQkJCQlyZXR1 cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJ CXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpzdGNleHByID0gY2FzdE5vZGUoU2FmZVR5cGVDYXN0 RXhwciwgbm9kZSk7CisKKwkJCQlpZiAoV0FMSyhzdGNleHByLT5zb3VyY2UpKQorCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhzdGNleHByLT5jYXN0ZXhwcikpCisJCQkJCXJldHVybiB0 cnVlOworCQkJCWlmIChXQUxLKHN0Y2V4cHItPmRlZmV4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsK KwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgogCQkJcmV0dXJuIFdBTEso KChDb2FsZXNjZUV4cHIgKikgbm9kZSktPmFyZ3MpOwogCQljYXNlIFRfTWluTWF4RXhwcjoKQEAg LTM0MDQsNiArMzQzMCwxOSBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcl9pbXBsKE5vZGUgKm5v ZGUsCiAJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2Fz ZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAqc3RjZXhw ciA9IGNhc3ROb2RlKFNhZmVUeXBlQ2FzdEV4cHIsIG5vZGUpOworCQkJCVNhZmVUeXBlQ2FzdEV4 cHIgKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2RlLCBzdGNleHByLCBTYWZlVHlwZUNh c3RFeHByKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+c291cmNlLCBzdGNleHByLT5zb3VyY2UsIEV4 cHIgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmNhc3RleHByLCBzdGNleHByLT5jYXN0ZXhwciwg RXhwciAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+ZGVmZXhwciwgc3RjZXhwci0+ZGVmZXhwciwg RXhwciAqKTsKKworCQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOworCQkJfQorCQkJYnJlYWs7 CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQl7CiAJCQkJQ29hbGVzY2VFeHByICpjb2FsZXNj ZWV4cHIgPSAoQ29hbGVzY2VFeHByICopIG5vZGU7CkBAIC00NTgxLDYgKzQ2MjAsMjAgQEAgcmF3 X2V4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1 ZTsKIAkJCQlpZiAoV0FMSyh0Yy0+dHlwZU5hbWUpKQogCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlp ZiAoV0FMSyh0Yy0+ZGVmZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7 CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJeworCQkJCVNhZmVUeXBlQ2FzdEV4cHIg KnN0Y2V4cHIgPSBjYXN0Tm9kZShTYWZlVHlwZUNhc3RFeHByLCBub2RlKTsKKworCQkJCWlmIChX QUxLKHN0Y2V4cHItPnNvdXJjZSkpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKHN0 Y2V4cHItPmNhc3RleHByKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoc3RjZXhw ci0+ZGVmZXhwcikpCisJCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7CiAJCWNhc2Ug VF9Db2xsYXRlQ2xhdXNlOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAv cHJlcGFnZy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGFnZy5jCmluZGV4IDM3 MzdjYzE1YmExLi5iZWVjNzUxMTJkYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3ByZXAvcHJlcGFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBhZ2cu YwpAQCAtMzU4LDYgKzM1OCwyMSBAQCBwcmVwcm9jZXNzX2FnZ3JlZnNfd2Fsa2VyKE5vZGUgKm5v ZGUsIFBsYW5uZXJJbmZvICpyb290KQogCQkgKi8KIAkJcmV0dXJuIGZhbHNlOwogCX0KKwlpZiAo SXNBKG5vZGUsIFNhZmVUeXBlQ2FzdEV4cHIpKQorCXsKKwkJU2FmZVR5cGVDYXN0RXhwciAqY2Fz dGV4cHIgPSAoU2FmZVR5cGVDYXN0RXhwciAqKSBub2RlOworCisJCS8qCisJCSAqIFNhZmVUeXBl Q2FzdEV4cHItPnNvdXJjZSBtYXkgYWxzbyBjb250YWluIGFuIEFnZ3JlZiBub2RlLCBidXQgc2lu Y2UKKwkJICogaXQgaXMga2VwdCBvbmx5IGZvciBkZXBhcnNpbmcgcHVycG9zZXMsIHdlIG11c3Qg bm90IHJlY3Vyc2UgaW50byBpdAorCQkgKiB3aGVuIHByb2Nlc3NpbmcgYWdncmVnYXRlIG5vZGVz IGhlcmUuCisJCSAqCisJCSAqIFdlIGFscmVhZHkgcHJldmVudCBkZWZleHByIGZyb20gY29udGFp bmluZyBhZ2dyZWdhdGUgZnVuY3Rpb25zLgorCQkgKi8KKwkJcmV0dXJuIGV4cHJlc3Npb25fdHJl ZV93YWxrZXIoKE5vZGUgKikgY2FzdGV4cHItPmNhc3RleHByLAorCQkJCQkJCQkJICBwcmVwcm9j ZXNzX2FnZ3JlZnNfd2Fsa2VyLAorCQkJCQkJCQkJICByb290KTsKKwl9CiAJQXNzZXJ0KCFJc0Eo bm9kZSwgU3ViTGluaykpOwogCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIHBy ZXByb2Nlc3NfYWdncmVmc193YWxrZXIsIHJvb3QpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv Y2xhdXNlcy5jCmluZGV4IDAxOTk3ZTIyMjY2Li4zOTAyMDVkYjJlYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL2NsYXVzZXMuYwpAQCAtNzEsNiArNzEsNyBAQCB0eXBlZGVmIHN0cnVjdAogCUxp c3QJICAgKmFjdGl2ZV9mbnM7CiAJTm9kZQkgICAqY2FzZV92YWw7CiAJYm9vbAkJZXN0aW1hdGU7 CisJRXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0OwogfSBldmFsX2NvbnN0X2V4cHJlc3Npb25z X2NvbnRleHQ7CiAKIHR5cGVkZWYgc3RydWN0CkBAIC0yNDk0LDYgKzI0OTUsMTAgQEAgcm93dHlw ZV9maWVsZF9tYXRjaGVzKE9pZCByb3d0eXBlaWQsIGludCBmaWVsZG51bSwKICAqIE5PVEU6IGFu b3RoZXIgY3JpdGljYWwgZWZmZWN0IGlzIHRoYXQgYW55IGZ1bmN0aW9uIGNhbGxzIHRoYXQgcmVx dWlyZQogICogZGVmYXVsdCBhcmd1bWVudHMgd2lsbCBiZSBleHBhbmRlZCwgYW5kIG5hbWVkLWFy Z3VtZW50IGNhbGxzIHdpbGwgYmUKICAqIGNvbnZlcnRlZCB0byBwb3NpdGlvbmFsIG5vdGF0aW9u LiAgVGhlIGV4ZWN1dG9yIHdvbid0IGhhbmRsZSBlaXRoZXIuCisgKgorICogTk9URTogSWYgZXZh bF9jb25zdF9leHByZXNzaW9uc19jb250ZXh0LT5lc2NvbnRleHQgaXMgbm90IE5VTEwsIHRoZQor ICogZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgaW4gYW4gZXJyb3Itc2FmZSBtYW5uZXIuIEluIGNh c2Ugb2YgZmFpbHVyZSwgaXQKKyAqIG1heSByZXR1cm4gTlVMTCBpbnN0ZWFkIG9mIHRocm93aW5n IGFuIGVycm9yLgogICotLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBOb2RlICoKQEAgLTI1MDks NiArMjUxNCw3IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoUGxhbm5lckluZm8gKnJvb3QsIE5v ZGUgKm5vZGUpCiAJY29udGV4dC5hY3RpdmVfZm5zID0gTklMOwkvKiBub3RoaW5nIGJlaW5nIHJl Y3Vyc2l2ZWx5IHNpbXBsaWZpZWQgKi8KIAljb250ZXh0LmNhc2VfdmFsID0gTlVMTDsJLyogbm8g Q0FTRSBiZWluZyBleGFtaW5lZCAqLwogCWNvbnRleHQuZXN0aW1hdGUgPSBmYWxzZTsJLyogc2Fm ZSB0cmFuc2Zvcm1hdGlvbnMgb25seSAqLworCWNvbnRleHQuZXNjb250ZXh0ID0gTlVMTDsJLyog Zm9yIGVycm9yLXNhZmUgZXhwcmVzc2lvbiBldmFsdWF0aW9uICovCiAJcmV0dXJuIGV2YWxfY29u c3RfZXhwcmVzc2lvbnNfbXV0YXRvcihub2RlLCAmY29udGV4dCk7CiB9CiAKQEAgLTI2NTEsNiAr MjY1Nyw3IEBAIGVzdGltYXRlX2V4cHJlc3Npb25fdmFsdWUoUGxhbm5lckluZm8gKnJvb3QsIE5v ZGUgKm5vZGUpCiAJY29udGV4dC5hY3RpdmVfZm5zID0gTklMOwkvKiBub3RoaW5nIGJlaW5nIHJl Y3Vyc2l2ZWx5IHNpbXBsaWZpZWQgKi8KIAljb250ZXh0LmNhc2VfdmFsID0gTlVMTDsJLyogbm8g Q0FTRSBiZWluZyBleGFtaW5lZCAqLwogCWNvbnRleHQuZXN0aW1hdGUgPSB0cnVlOwkvKiB1bnNh ZmUgdHJhbnNmb3JtYXRpb25zIE9LICovCisJY29udGV4dC5lc2NvbnRleHQgPSBOVUxMOwkvKiBm b3IgZXJyb3Itc2FmZSBleHByZXNzaW9uIGV2YWx1YXRpb24gKi8KIAlyZXR1cm4gZXZhbF9jb25z dF9leHByZXNzaW9uc19tdXRhdG9yKG5vZGUsICZjb250ZXh0KTsKIH0KIApAQCAtMjY3NiwxMSAr MjY4MywxMiBAQCBlc3RpbWF0ZV9leHByZXNzaW9uX3ZhbHVlKFBsYW5uZXJJbmZvICpyb290LCBO b2RlICpub2RlKQogCSghZXhwcmVzc2lvbl90cmVlX3dhbGtlcigoTm9kZSAqKSAobm9kZSksIGNv bnRhaW5fbm9uX2NvbnN0X3dhbGtlciwgTlVMTCkpCiAKIC8qIEdlbmVyaWMgbWFjcm8gZm9yIGFw cGx5aW5nIGV2YWx1YXRlX2V4cHIgKi8KLSNkZWZpbmUgZWNlX2V2YWx1YXRlX2V4cHIobm9kZSkg XAorI2RlZmluZSBlY2VfZXZhbHVhdGVfZXhwcihub2RlLCBlc2NvbnRleHQpIFwKIAkoKE5vZGUg KikgZXZhbHVhdGVfZXhwcigoRXhwciAqKSAobm9kZSksIFwKIAkJCQkJCQlleHByVHlwZSgoTm9k ZSAqKSAobm9kZSkpLCBcCiAJCQkJCQkJZXhwclR5cG1vZCgoTm9kZSAqKSAobm9kZSkpLCBcCi0J CQkJCQkJZXhwckNvbGxhdGlvbigoTm9kZSAqKSAobm9kZSkpKSkKKwkJCQkJCQlleHByQ29sbGF0 aW9uKChOb2RlICopIChub2RlKSksIFwKKwkJCQkJCQkoTm9kZSAqKSBlc2NvbnRleHQpKQogCiAv KgogICogUmVjdXJzaXZlIGd1dHMgb2YgZXZhbF9jb25zdF9leHByZXNzaW9ucy9lc3RpbWF0ZV9l eHByZXNzaW9uX3ZhbHVlCkBAIC0zMTQxLDcgKzMxNDksNyBAQCBldmFsX2NvbnN0X2V4cHJlc3Np b25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAogCQkJCWlmICghaGFzX25vbmNvbnN0X2lucHV0ICYm CiAJCQkJCWVjZV9mdW5jdGlvbl9pc19zYWZlKGV4cHItPm9wZnVuY2lkLCBjb250ZXh0KSkKLQkJ CQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKGV4cHIpOworCQkJCQlyZXR1cm4gZWNlX2V2YWx1 YXRlX2V4cHIoZXhwciwgY29udGV4dC0+ZXNjb250ZXh0KTsKIAogCQkJCXJldHVybiAoTm9kZSAq KSBleHByOwogCQkJfQpAQCAtMzE2MSw3ICszMTY5LDcgQEAgZXZhbF9jb25zdF9leHByZXNzaW9u c19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJICovCiAJCQkJaWYgKGVjZV9hbGxfYXJndW1lbnRz X2NvbnN0KHNhb3ApICYmCiAJCQkJCWVjZV9mdW5jdGlvbl9pc19zYWZlKHNhb3AtPm9wZnVuY2lk LCBjb250ZXh0KSkKLQkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKHNhb3ApOworCQkJCQly ZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoc2FvcCwgY29udGV4dC0+ZXNjb250ZXh0KTsKIAkJCQly ZXR1cm4gKE5vZGUgKikgc2FvcDsKIAkJCX0KIAkJY2FzZSBUX0Jvb2xFeHByOgpAQCAtMzI4NSw2 ICszMjkzLDQyIEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAog CQkJCQkJCQkJCQkJCQkgIGNvbnRleHQpOwogCQkJfQogCQkJYnJlYWs7CisKKwkJY2FzZSBUX1Nh ZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAqc3RjID0gY2FzdE5v ZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisJCQkJTm9kZQkgICAqY2FzdGV4cHIgPSAoTm9k ZSAqKSBzdGMtPmNhc3RleHByOworCQkJCU5vZGUJICAgKmRlZmV4cHIgPSAoTm9kZSAqKSBzdGMt PmRlZmV4cHI7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAqbmV3ZXhwciA9IG1ha2VOb2RlKFNhZmVU eXBlQ2FzdEV4cHIpOworCisJCQkJY29udGV4dC0+ZXNjb250ZXh0ID0gbWFrZU5vZGUoRXJyb3JT YXZlQ29udGV4dCk7CisJCQkJY29udGV4dC0+ZXNjb250ZXh0LT50eXBlID0gVF9FcnJvclNhdmVD b250ZXh0OworCQkJCWNvbnRleHQtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsK KworCQkJCWNhc3RleHByID0gZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKGNhc3RleHBy LAorCQkJCQkJCQkJCQkJCQkgIGNvbnRleHQpOworCQkJCWNvbnRleHQtPmVzY29udGV4dCA9IE5V TEw7CisKKwkJCQlkZWZleHByID0gZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKGRlZmV4 cHIsCisJCQkJCQkJCQkJCQkJCSBjb250ZXh0KTsKKworCQkJCS8qCisJCQkJICogTm8gbmVlZCB0 byBmb2xkICJzb3VyY2UiIHRvIGEgY29uc3RhbnQuIFRoZSBleGVjdXRvciBkb2VzCisJCQkJICog bm90IHVzZSBpdCwgc2VlIEV4ZWNJbml0U2FmZVR5cGVDYXN0RXhwci4gQWRkaXRpb25hbGx5LAor CQkJCSAqIGNhc3RleHByIGV4cHJlc3Npb24gdHJlZSBtYXkgYWxyZWFkeSBjb250YWluIHRoZSAi c291cmNlIgorCQkJCSAqIG5vZGUuCisJCQkJICovCisJCQkJbmV3ZXhwci0+c291cmNlID0gc3Rj LT5zb3VyY2U7CisJCQkJbmV3ZXhwci0+Y2FzdGV4cHIgPSAoRXhwciAqKSBjYXN0ZXhwcjsKKwkJ CQluZXdleHByLT5kZWZleHByID0gKEV4cHIgKikgZGVmZXhwcjsKKwkJCQluZXdleHByLT5yZXN1 bHR0eXBlID0gc3RjLT5yZXN1bHR0eXBlOworCQkJCW5ld2V4cHItPnJlc3VsdHR5cG1vZCA9IHN0 Yy0+cmVzdWx0dHlwbW9kOworCQkJCW5ld2V4cHItPnJlc3VsdGNvbGxpZCA9IHN0Yy0+cmVzdWx0 Y29sbGlkOworCQkJCW5ld2V4cHItPmxvY2F0aW9uID0gc3RjLT5sb2NhdGlvbjsKKworCQkJCXJl dHVybiAoTm9kZSAqKSBuZXdleHByOworCQkJfQorCiAJCWNhc2UgVF9TdWJQbGFuOgogCQljYXNl IFRfQWx0ZXJuYXRpdmVTdWJQbGFuOgogCkBAIC0zNDAyLDYgKzM0NDYsNyBAQCBldmFsX2NvbnN0 X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCXsKIAkJCQlBcnJheUNvZXJjZUV4 cHIgKmFjID0gbWFrZU5vZGUoQXJyYXlDb2VyY2VFeHByKTsKIAkJCQlOb2RlCSAgICpzYXZlX2Nh c2VfdmFsOworCQkJCUV4cHIJICAgKnNpbXBsZSA9IE5VTEw7CiAKIAkJCQkvKgogCQkJCSAqIENv cHkgdGhlIG5vZGUgYW5kIGNvbnN0LXNpbXBsaWZ5IGl0cyBhcmd1bWVudHMuICBXZSBjYW4ndApA QCAtMzQwOSw5ICszNDU0LDEwIEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihOb2Rl ICpub2RlLAogCQkJCSAqIHdpdGggY2FzZV92YWwgb25seSB3aGlsZSBwcm9jZXNzaW5nIHRoZSBl bGVtZXhwci4KIAkJCQkgKi8KIAkJCQltZW1jcHkoYWMsIG5vZGUsIHNpemVvZihBcnJheUNvZXJj ZUV4cHIpKTsKLQkJCQlhYy0+YXJnID0gKEV4cHIgKikKLQkJCQkJZXZhbF9jb25zdF9leHByZXNz aW9uc19tdXRhdG9yKChOb2RlICopIGFjLT5hcmcsCi0JCQkJCQkJCQkJCQkgICBjb250ZXh0KTsK KwkJCQlzaW1wbGUgPSAoRXhwciAqKSBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoKE5v ZGUgKikgYWMtPmFyZywKKwkJCQkJCQkJCQkJCQkJCQkgY29udGV4dCk7CisJCQkJaWYgKHNpbXBs ZSkKKwkJCQkJYWMtPmFyZyA9IHNpbXBsZTsKIAogCQkJCS8qCiAJCQkJICogU2V0IHVwIGZvciB0 aGUgQ2FzZVRlc3RFeHByIG5vZGUgY29udGFpbmVkIGluIHRoZSBlbGVtZXhwci4KQEAgLTM0MjAs OSArMzQ2NiwxMCBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwK IAkJCQlzYXZlX2Nhc2VfdmFsID0gY29udGV4dC0+Y2FzZV92YWw7CiAJCQkJY29udGV4dC0+Y2Fz ZV92YWwgPSBOVUxMOwogCi0JCQkJYWMtPmVsZW1leHByID0gKEV4cHIgKikKLQkJCQkJZXZhbF9j b25zdF9leHByZXNzaW9uc19tdXRhdG9yKChOb2RlICopIGFjLT5lbGVtZXhwciwKLQkJCQkJCQkJ CQkJCSAgIGNvbnRleHQpOworCQkJCXNpbXBsZSA9IChFeHByICopIGV2YWxfY29uc3RfZXhwcmVz c2lvbnNfbXV0YXRvcigoTm9kZSAqKSBhYy0+ZWxlbWV4cHIsCisJCQkJCQkJCQkJCQkJCQkJIGNv bnRleHQpOworCQkJCWlmIChzaW1wbGUpCisJCQkJCWFjLT5lbGVtZXhwciA9IHNpbXBsZTsKIAog CQkJCWNvbnRleHQtPmNhc2VfdmFsID0gc2F2ZV9jYXNlX3ZhbDsKIApAQCAtMzQzNyw3ICszNDg0 LDEyIEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCWlm IChhYy0+YXJnICYmIElzQShhYy0+YXJnLCBDb25zdCkgJiYKIAkJCQkJYWMtPmVsZW1leHByICYm ICFJc0EoYWMtPmVsZW1leHByLCBDb2VyY2VUb0RvbWFpbikgJiYKIAkJCQkJIWNvbnRhaW5fbXV0 YWJsZV9mdW5jdGlvbnMoKE5vZGUgKikgYWMtPmVsZW1leHByKSkKLQkJCQkJcmV0dXJuIGVjZV9l dmFsdWF0ZV9leHByKGFjKTsKKwkJCQl7CisJCQkJCXNpbXBsZSA9ICAoRXhwciAqKSBlY2VfZXZh bHVhdGVfZXhwcihhYywgY29udGV4dC0+ZXNjb250ZXh0KTsKKworCQkJCQlpZiAoc2ltcGxlKQor CQkJCQkJcmV0dXJuIChOb2RlICopIHNpbXBsZTsKKwkJCQl9CiAKIAkJCQlyZXR1cm4gKE5vZGUg KikgYWM7CiAJCQl9CkBAIC0zNjMzLDcgKzM2ODUsNyBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25z X211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQlub2RlID0gZWNlX2dlbmVyaWNfcHJvY2Vzc2luZyhu b2RlKTsKIAkJCQkvKiBJZiBhbGwgYXJndW1lbnRzIGFyZSBDb25zdHMsIHdlIGNhbiBmb2xkIHRv IGEgY29uc3RhbnQgKi8KIAkJCQlpZiAoZWNlX2FsbF9hcmd1bWVudHNfY29uc3Qobm9kZSkpCi0J CQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihub2RlKTsKKwkJCQkJcmV0dXJuIGVjZV9ldmFs dWF0ZV9leHByKG5vZGUsIGNvbnRleHQtPmVzY29udGV4dCk7CiAJCQkJcmV0dXJuIG5vZGU7CiAJ CQl9CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CkBAIC0zNzE2LDcgKzM3NjgsOCBAQCBldmFsX2Nv bnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIChOb2RlICop IGV2YWx1YXRlX2V4cHIoKEV4cHIgKikgc3ZmLAogCQkJCQkJCQkJCQkJICBzdmYtPnR5cGUsCiAJ CQkJCQkJCQkJCQkgIHN2Zi0+dHlwbW9kLAotCQkJCQkJCQkJCQkJICBJbnZhbGlkT2lkKTsKKwkJ CQkJCQkJCQkJCSAgSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJCSAgTlVMTCk7CiAJCQkJZWxzZQog CQkJCQlyZXR1cm4gY29weU9iamVjdCgoTm9kZSAqKSBzdmYpOwogCQkJfQpAQCAtMzgxMyw3ICsz ODY2LDcgQEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQkJ CQkJCQkJCSAgbmV3ZnNlbGVjdC0+cmVzdWx0dHlwZSwKIAkJCQkJCQkJCQkJICBuZXdmc2VsZWN0 LT5yZXN1bHR0eXBtb2QsCiAJCQkJCQkJCQkJCSAgbmV3ZnNlbGVjdC0+cmVzdWx0Y29sbGlkKSkK LQkJCQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihuZXdmc2VsZWN0KTsKKwkJCQkJCXJldHVy biBlY2VfZXZhbHVhdGVfZXhwcihuZXdmc2VsZWN0LCBjb250ZXh0LT5lc2NvbnRleHQpOwogCQkJ CX0KIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3ZnNlbGVjdDsKIAkJCX0KQEAgLTQxNDMsNyArNDE5 Niw3IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCW5l d2NyZS0+YXJnID0gKEV4cHIgKikgYXJnOwogCiAJCQkJaWYgKGFyZyAhPSBOVUxMICYmIElzQShh cmcsIENvbnN0KSkKLQkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKChOb2RlICopIG5ld2Ny ZSk7CisJCQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcigoTm9kZSAqKSBuZXdjcmUsIGNvbnRl eHQtPmVzY29udGV4dCk7CiAJCQkJcmV0dXJuIChOb2RlICopIG5ld2NyZTsKIAkJCX0KIAkJZGVm YXVsdDoKQEAgLTQ1NDMsNiArNDU5Niw4IEBAIHNpbXBsaWZ5X2Z1bmN0aW9uKE9pZCBmdW5jaWQs IE9pZCByZXN1bHRfdHlwZSwgaW50MzIgcmVzdWx0X3R5cG1vZCwKIAkJCQkJCQkJYXJncywgZnVu Y3ZhcmlhZGljLAogCQkJCQkJCQlmdW5jX3R1cGxlLCBjb250ZXh0KTsKIAorCUFzc2VydCghKFNP RlRfRVJST1JfT0NDVVJSRUQoY29udGV4dC0+ZXNjb250ZXh0KSAmJiBuZXdleHByICE9IE5VTEwp KTsKKwogCWlmICghbmV3ZXhwciAmJiBhbGxvd19ub25fY29uc3QgJiYgT2lkSXNWYWxpZChmdW5j X2Zvcm0tPnByb3N1cHBvcnQpKQogCXsKIAkJLyoKQEAgLTUyNjgsNyArNTMyMyw3IEBAIGV2YWx1 YXRlX2Z1bmN0aW9uKE9pZCBmdW5jaWQsIE9pZCByZXN1bHRfdHlwZSwgaW50MzIgcmVzdWx0X3R5 cG1vZCwKIAluZXdleHByLT5sb2NhdGlvbiA9IC0xOwogCiAJcmV0dXJuIGV2YWx1YXRlX2V4cHIo KEV4cHIgKikgbmV3ZXhwciwgcmVzdWx0X3R5cGUsIHJlc3VsdF90eXBtb2QsCi0JCQkJCQkgcmVz dWx0X2NvbGxpZCk7CisJCQkJCQkgcmVzdWx0X2NvbGxpZCwgKE5vZGUgKikgY29udGV4dC0+ZXNj b250ZXh0KTsKIH0KIAogLyoKQEAgLTU3MjIsMTAgKzU3NzcsMTMgQEAgc3FsX2lubGluZV9lcnJv cl9jYWxsYmFjayh2b2lkICphcmcpCiAgKgogICogV2UgdXNlIHRoZSBleGVjdXRvcidzIHJvdXRp bmUgRXhlY0V2YWxFeHByKCkgdG8gYXZvaWQgZHVwbGljYXRpb24gb2YKICAqIGNvZGUgYW5kIGVu c3VyZSB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZSBleGVjdXRvciB3b3VsZCBnZXQuCisg KgorICogV2hlbiBlc2NvbnRleHQgaXMgbm9uLU5VTEwsIHNhZmVseSBldmFsdWF0ZXMgdGhlIGNv bnN0YW50IGV4cHJlc3Npb24uCisgKiBSZXR1cm5zIE5VTEwgb24gZmFpbHVyZSByYXRoZXIgdGhh biB0aHJvd2luZyBhbiBlcnJvci4KICAqLwogRXhwciAqCiBldmFsdWF0ZV9leHByKEV4cHIgKmV4 cHIsIE9pZCByZXN1bHRfdHlwZSwgaW50MzIgcmVzdWx0X3R5cG1vZCwKLQkJCSAgT2lkIHJlc3Vs dF9jb2xsYXRpb24pCisJCQkgIE9pZCByZXN1bHRfY29sbGF0aW9uLCBOb2RlICplc2NvbnRleHQp CiB7CiAJRVN0YXRlCSAgICplc3RhdGU7CiAJRXhwclN0YXRlICAqZXhwcnN0YXRlOwpAQCAtNTc1 MCw3ICs1ODA4LDcgQEAgZXZhbHVhdGVfZXhwcihFeHByICpleHByLCBPaWQgcmVzdWx0X3R5cGUs IGludDMyIHJlc3VsdF90eXBtb2QsCiAJICogUHJlcGFyZSBleHByIGZvciBleGVjdXRpb24uICAo Tm90ZTogd2UgY2FuJ3QgdXNlIEV4ZWNQcmVwYXJlRXhwcgogCSAqIGJlY2F1c2UgaXQnZCByZXN1 bHQgaW4gcmVjdXJzaXZlbHkgaW52b2tpbmcgZXZhbF9jb25zdF9leHByZXNzaW9ucy4pCiAJICov Ci0JZXhwcnN0YXRlID0gRXhlY0luaXRFeHByKGV4cHIsIE5VTEwpOworCWV4cHJzdGF0ZSA9IEV4 ZWNJbml0RXhwcldpdGhDb250ZXh0KGV4cHIsIE5VTEwsIGVzY29udGV4dCk7CiAKIAkvKgogCSAq IEFuZCBldmFsdWF0ZSBpdC4KQEAgLTU3NzAsNiArNTgyOCwxMyBAQCBldmFsdWF0ZV9leHByKEV4 cHIgKmV4cHIsIE9pZCByZXN1bHRfdHlwZSwgaW50MzIgcmVzdWx0X3R5cG1vZCwKIAkvKiBHZXQg YmFjayB0byBvdXRlciBtZW1vcnkgY29udGV4dCAqLwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjb250ZXh0KTsKIAorCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGV4cHJzdGF0ZS0+ZXNjb250 ZXh0KSkKKwl7CisJCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisKKwkJcmV0dXJuIE5VTEw7 CisJfQorCiAJLyoKIAkgKiBNdXN0IGNvcHkgcmVzdWx0IG91dCBvZiBzdWItY29udGV4dCB1c2Vk IGJ5IGV4cHJlc3Npb24gZXZhbC4KIAkgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggZmY0ZTEzODhjNTUuLjQ3 ZjgxY2VkNGM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTE1OCw2ICsxNTgsOCBAQCBzdGF0aWMgdm9pZCB1 cGRhdGVSYXdTdG10RW5kKFJhd1N0bXQgKnJzLCBpbnQgZW5kX2xvY2F0aW9uKTsKIHN0YXRpYyBO b2RlICptYWtlQ29sdW1uUmVmKGNoYXIgKmNvbG5hbWUsIExpc3QgKmluZGlyZWN0aW9uLAogCQkJ CQkJICAgaW50IGxvY2F0aW9uLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgTm9k ZSAqbWFrZVR5cGVDYXN0KE5vZGUgKmFyZywgVHlwZU5hbWUgKnR5cGVuYW1lLCBpbnQgbG9jYXRp b24pOworc3RhdGljIE5vZGUgKm1ha2VUeXBlQ2FzdFdpdGhEZWZhdWx0KE5vZGUgKmFyZywgVHlw ZU5hbWUgKnR5cGVuYW1lLAorCQkJCQkJCQkJIE5vZGUgKnJhd19kZWZhdWx0LCBpbnQgbG9jYXRp b24pOwogc3RhdGljIE5vZGUgKm1ha2VTdHJpbmdDb25zdENhc3QoY2hhciAqc3RyLCBpbnQgbG9j YXRpb24sIFR5cGVOYW1lICp0eXBlbmFtZSk7CiBzdGF0aWMgTm9kZSAqbWFrZUludENvbnN0KGlu dCB2YWwsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqbWFrZUZsb2F0Q29uc3QoY2hhciAq c3RyLCBpbnQgbG9jYXRpb24pOwpAQCAtMTY3ODcsNiArMTY3ODksMTAgQEAgZnVuY19leHByX2Nv bW1vbl9zdWJleHByOgogCQkJCX0KIAkJCXwgQ0FTVCAnKCcgYV9leHByIEFTIFR5cGVuYW1lICcp JwogCQkJCXsgJCQgPSBtYWtlVHlwZUNhc3QoJDMsICQ1LCBAMSk7IH0KKwkJCXwgQ0FTVCAnKCcg YV9leHByIEFTIFR5cGVuYW1lIEVSUk9SX1AgT04gQ09OVkVSU0lPTl9QIEVSUk9SX1AgJyknCisJ CQkJeyAkJCA9IG1ha2VUeXBlQ2FzdCgkMywgJDUsIEAxKTsgfQorCQkJfCBDQVNUICcoJyBhX2V4 cHIgQVMgVHlwZW5hbWUgREVGQVVMVCBhX2V4cHIgT04gQ09OVkVSU0lPTl9QIEVSUk9SX1AgJykn CisJCQkJeyAkJCA9IG1ha2VUeXBlQ2FzdFdpdGhEZWZhdWx0KCQzLCAkNSwgJDcsIEAxKTsgfQog CQkJfCBFWFRSQUNUICcoJyBleHRyYWN0X2xpc3QgJyknCiAJCQkJewogCQkJCQkkJCA9IChOb2Rl ICopIG1ha2VGdW5jQ2FsbChTeXN0ZW1GdW5jTmFtZSgiZXh0cmFjdCIpLApAQCAtMTk5NTAsMTAg KzE5OTU2LDI1IEBAIG1ha2VUeXBlQ2FzdChOb2RlICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwg aW50IGxvY2F0aW9uKQogCiAJbi0+YXJnID0gYXJnOwogCW4tPnR5cGVOYW1lID0gdHlwZW5hbWU7 CisJbi0+ZGVmZXhwciA9IE5VTEw7CiAJbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKIAlyZXR1cm4g KE5vZGUgKikgbjsKIH0KIAorc3RhdGljIE5vZGUgKgorbWFrZVR5cGVDYXN0V2l0aERlZmF1bHQo Tm9kZSAqYXJnLCBUeXBlTmFtZSAqdHlwZW5hbWUsIE5vZGUgKmRlZmV4cHIsCisJCQkJCQlpbnQg bG9jYXRpb24pCit7CisJVHlwZUNhc3QgICAqbiA9IG1ha2VOb2RlKFR5cGVDYXN0KTsKKworCW4t PmFyZyA9IGFyZzsKKwluLT50eXBlTmFtZSA9IHR5cGVuYW1lOworCW4tPmRlZmV4cHIgPSBkZWZl eHByOworCW4tPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwlyZXR1cm4gKE5vZGUgKikgbjsKK30K Kwogc3RhdGljIE5vZGUgKgogbWFrZVN0cmluZ0NvbnN0Q2FzdChjaGFyICpzdHIsIGludCBsb2Nh dGlvbiwgVHlwZU5hbWUgKnR5cGVuYW1lKQogewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2FnZy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IGFj YjkzMzM5MmRlLi43YzBkNDkwYmZmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwpAQCAtNDkxLDYg KzQ5MSwxMiBAQCBjaGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTm9kZSAqZXhwcikKIAkJCQllcnIgPSBfKCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBu b3QgYWxsb3dlZCBpbiBjaGVjayBjb25zdHJhaW50cyIpOwogCiAJCQlicmVhazsKKwkJY2FzZSBF WFBSX0tJTkRfQ0FTVF9ERUZBVUxUOgorCQkJaWYgKGlzQWdnKQorCQkJCWVyciA9IF8oImFnZ3Jl Z2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBU1QgREVGQVVMVCBleHByZXNzaW9u cyIpOworCQkJZWxzZQorCQkJCWVyciA9IF8oImdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBh bGxvd2VkIGluIENBU1QgREVGQVVMVCBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAJCWNhc2Ug RVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZB VUxUOgogCkBAIC05OTksNiArMTAwNSw5IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNl U3RhdGUgKnBzdGF0ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9LSU5EX0RPTUFJ Tl9DSEVDSzoKIAkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGlu IGNoZWNrIGNvbnN0cmFpbnRzIik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfQ0FTVF9E RUZBVUxUOgorCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g Q0FTVCBERUZBVUxUIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRf Q09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CiAJCQll cnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZBVUxUIGV4cHJl c3Npb25zIik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29lcmNlLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29lcmNlLmMKaW5kZXggM2I5MmFlMmE5MjAuLmFk ZWYzNzRjNzY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29lcmNlLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvZXJjZS5jCkBAIC0zNywxNCArMzcsMTYg QEAgc3RhdGljIE5vZGUgKmNvZXJjZV90eXBlX3R5cG1vZChOb2RlICpub2RlLAogCQkJCQkJCQlP aWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBNb2QsCiAJCQkJCQkJCUNvZXJjaW9uQ29u dGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsCiAJCQkJCQkJCWludCBsb2NhdGlv biwKLQkJCQkJCQkJYm9vbCBoaWRlSW5wdXRDb2VyY2lvbik7CisJCQkJCQkJCWJvb2wgaGlkZUlu cHV0Q29lcmNpb24sCisJCQkJCQkJCU5vZGUgKmVzY29udGV4dCk7CiBzdGF0aWMgdm9pZCBoaWRl X2NvZXJjaW9uX25vZGUoTm9kZSAqbm9kZSk7CiBzdGF0aWMgTm9kZSAqYnVpbGRfY29lcmNpb25f ZXhwcmVzc2lvbihOb2RlICpub2RlLAogCQkJCQkJCQkJICAgQ29lcmNpb25QYXRoVHlwZSBwYXRo dHlwZSwKIAkJCQkJCQkJCSAgIE9pZCBmdW5jSWQsCiAJCQkJCQkJCQkgICBPaWQgdGFyZ2V0VHlw ZUlkLCBpbnQzMiB0YXJnZXRUeXBNb2QsCiAJCQkJCQkJCQkgICBDb2VyY2lvbkNvbnRleHQgY2Nv bnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LAotCQkJCQkJCQkJICAgaW50IGxvY2F0aW9uKTsK KwkJCQkJCQkJCSAgIGludCBsb2NhdGlvbiwKKwkJCQkJCQkJCSAgIE5vZGUgKmVzY29udGV4dCk7 CiBzdGF0aWMgTm9kZSAqY29lcmNlX3JlY29yZF90b19jb21wbGV4KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqbm9kZSwKIAkJCQkJCQkJCSAgT2lkIHRhcmdldFR5cGVJZCwKIAkJCQkJCQkJCSAg Q29lcmNpb25Db250ZXh0IGNjb250ZXh0LApAQCAtODEsNiArODMsMjggQEAgY29lcmNlX3RvX3Rh cmdldF90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgT2lkIGV4cHJ0eXBlLAog CQkJCQkgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwKIAkJCQkJICBDb2VyY2lvbkZvcm0gY2Zv cm1hdCwKIAkJCQkJICBpbnQgbG9jYXRpb24pCit7CisJcmV0dXJuIGNvZXJjZV90b190YXJnZXRf dHlwZV9leHRlbmRlZChwc3RhdGUsIGV4cHIsIGV4cHJ0eXBlLAorCQkJCQkJCQkJCSAgdGFyZ2V0 dHlwZSwgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkJCSAgY2NvbnRleHQsCisJCQkJCQkJCQkJICBj Zm9ybWF0LAorCQkJCQkJCQkJCSAgbG9jYXRpb24sCisJCQkJCQkJCQkJICBOVUxMKTsKK30KKwor LyoKKyAqIGVzY29udGV4dDogSWYgbm9uLU5VTEwsIHNhZmVseSBjb2VyY2VzICdleHByJyB0byB0 aGUgdGFyZ2V0IHR5cGUKKyAqIHdpdGhvdXQgcmFpc2luZyBhbiBlcnJvci4gUmV0dXJucyBOVUxM IGlmIHRoZSBjb2VyY2lvbiBmYWlscy4KKyAqCisgKiBTZWUgJ2NvZXJjZV90b190YXJnZXRfdHlw ZScgYWJvdmUgZm9yIGRldGFpbHMgb24gb3RoZXIgcGFyYW1ldGVycy4KKyAqLworTm9kZSAqCitj b2VyY2VfdG9fdGFyZ2V0X3R5cGVfZXh0ZW5kZWQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpl eHByLCBPaWQgZXhwcnR5cGUsCisJCQkJCQkJICAgT2lkIHRhcmdldHR5cGUsIGludDMyIHRhcmdl dHR5cG1vZCwKKwkJCQkJCQkgICBDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsCisJCQkJCQkJICAg Q29lcmNpb25Gb3JtIGNmb3JtYXQsCisJCQkJCQkJICAgaW50IGxvY2F0aW9uLAorCQkJCQkJCSAg IE5vZGUgKmVzY29udGV4dCkKIHsKIAlOb2RlCSAgICpyZXN1bHQ7CiAJTm9kZQkgICAqb3JpZ2V4 cHI7CkBAIC0xMDIsOSArMTI2LDE1IEBAIGNvZXJjZV90b190YXJnZXRfdHlwZShQYXJzZVN0YXRl ICpwc3RhdGUsIE5vZGUgKmV4cHIsIE9pZCBleHBydHlwZSwKIAl3aGlsZSAoZXhwciAmJiBJc0Eo ZXhwciwgQ29sbGF0ZUV4cHIpKQogCQlleHByID0gKE5vZGUgKikgKChDb2xsYXRlRXhwciAqKSBl eHByKS0+YXJnOwogCi0JcmVzdWx0ID0gY29lcmNlX3R5cGUocHN0YXRlLCBleHByLCBleHBydHlw ZSwKLQkJCQkJCSB0YXJnZXR0eXBlLCB0YXJnZXR0eXBtb2QsCi0JCQkJCQkgY2NvbnRleHQsIGNm b3JtYXQsIGxvY2F0aW9uKTsKKwlyZXN1bHQgPSBjb2VyY2VfdHlwZV9leHRlbmRlZChwc3RhdGUs IGV4cHIsIGV4cHJ0eXBlLAorCQkJCQkJCQkgIHRhcmdldHR5cGUsIHRhcmdldHR5cG1vZCwKKwkJ CQkJCQkJICBjY29udGV4dCwKKwkJCQkJCQkJICBjZm9ybWF0LAorCQkJCQkJCQkgIGxvY2F0aW9u LAorCQkJCQkJCQkgIGVzY29udGV4dCk7CisKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChlc2Nv bnRleHQpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSWYgdGhlIHRhcmdldCBpcyBhIGZp eGVkLWxlbmd0aCB0eXBlLCBpdCBtYXkgbmVlZCBhIGxlbmd0aCBjb2VyY2lvbiBhcwpAQCAtMTE0 LDcgKzE0NCwxMSBAQCBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpleHByLCBPaWQgZXhwcnR5cGUsCiAJcmVzdWx0ID0gY29lcmNlX3R5cGVfdHlwbW9kKHJl c3VsdCwKIAkJCQkJCQkJdGFyZ2V0dHlwZSwgdGFyZ2V0dHlwbW9kLAogCQkJCQkJCQljY29udGV4 dCwgY2Zvcm1hdCwgbG9jYXRpb24sCi0JCQkJCQkJCShyZXN1bHQgIT0gZXhwciAmJiAhSXNBKHJl c3VsdCwgQ29uc3QpKSk7CisJCQkJCQkJCShyZXN1bHQgIT0gZXhwciAmJiAhSXNBKHJlc3VsdCwg Q29uc3QpKSwKKwkJCQkJCQkJZXNjb250ZXh0KTsKKworCWlmIChyZXN1bHQgPT0gTlVMTCkJCQkv KiBzaG91bGRuJ3QgaGFwcGVuICovCisJCWVsb2coRVJST1IsICJmYWlsZWQgdG8gY29lcmNlIHR5 cGUgbW9kaWZpZXIgYXMgZXhwZWN0ZWQiKTsKIAogCWlmIChleHByICE9IG9yaWdleHByICYmIHR5 cGVfaXNfY29sbGF0YWJsZSh0YXJnZXR0eXBlKSkKIAl7CkBAIC0xNTgsNiArMTkyLDE4IEBAIE5v ZGUgKgogY29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJT2lk IGlucHV0VHlwZUlkLCBPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBlTW9kLAogCQkJ Q29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwgaW50IGxvY2F0 aW9uKQoreworCXJldHVybiBjb2VyY2VfdHlwZV9leHRlbmRlZChwc3RhdGUsIG5vZGUsCisJCQkJ CQkJCWlucHV0VHlwZUlkLCB0YXJnZXRUeXBlSWQsIHRhcmdldFR5cGVNb2QsCisJCQkJCQkJCWNj b250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKKwkJCQkJCQkJTlVMTCk7Cit9CisKK05vZGUgKgor Y29lcmNlX3R5cGVfZXh0ZW5kZWQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAorCQkJ CQkgT2lkIGlucHV0VHlwZUlkLCBPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBlTW9k LAorCQkJCQkgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwg aW50IGxvY2F0aW9uLAorCQkJCQkgTm9kZSAqZXNjb250ZXh0KQogewogCU5vZGUJICAgKnJlc3Vs dDsKIAlDb2VyY2lvblBhdGhUeXBlIHBhdGh0eXBlOwpAQCAtMjU2LDYgKzMwMiw3IEBAIGNvZXJj ZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbm9kZSwKIAkJaW50MzIJCWlucHV0VHlw ZU1vZDsKIAkJVHlwZQkJYmFzZVR5cGU7CiAJCVBhcnNlQ2FsbGJhY2tTdGF0ZSBwY2JzdGF0ZTsK KwkJY2hhcgkgICAqc3RyaW5nID0gTlVMTDsKIAogCQkvKgogCQkgKiBJZiB0aGUgdGFyZ2V0IHR5 cGUgaXMgYSBkb21haW4sIHdlIHdhbnQgdG8gY2FsbCBpdHMgYmFzZSB0eXBlJ3MKQEAgLTMwOSwx MyArMzU2LDIxIEBAIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbm9kZSwK IAkJICogYXMgQ1NUUklORy4KIAkJICovCiAJCWlmICghY29uLT5jb25zdGlzbnVsbCkKLQkJCW5l d2Nvbi0+Y29uc3R2YWx1ZSA9IHN0cmluZ1R5cGVEYXR1bShiYXNlVHlwZSwKLQkJCQkJCQkJCQkJ CSBEYXR1bUdldENTdHJpbmcoY29uLT5jb25zdHZhbHVlKSwKLQkJCQkJCQkJCQkJCSBpbnB1dFR5 cGVNb2QpOwotCQllbHNlCi0JCQluZXdjb24tPmNvbnN0dmFsdWUgPSBzdHJpbmdUeXBlRGF0dW0o YmFzZVR5cGUsCi0JCQkJCQkJCQkJCQkgTlVMTCwKLQkJCQkJCQkJCQkJCSBpbnB1dFR5cGVNb2Qp OworCQkJc3RyaW5nID0gRGF0dW1HZXRDU3RyaW5nKGNvbi0+Y29uc3R2YWx1ZSk7CisKKwkJaWYg KCFzdHJpbmdUeXBlRGF0dW1TYWZlKGJhc2VUeXBlLAorCQkJCQkJCQkgc3RyaW5nLAorCQkJCQkJ CQkgaW5wdXRUeXBlTW9kLAorCQkJCQkJCQkgZXNjb250ZXh0LAorCQkJCQkJCQkgJm5ld2Nvbi0+ Y29uc3R2YWx1ZSkpCisJCXsKKwkJCS8qIFVOS05PV04gQ29uc3QgY2Fubm90IGNvZXJjZSB0byB0 YXJnZXRUeXBlLCBleGl0IG5vdyAqLworCQkJY2FuY2VsX3BhcnNlcl9lcnJwb3NpdGlvbl9jYWxs YmFjaygmcGNic3RhdGUpOworCisJCQlSZWxlYXNlU3lzQ2FjaGUoYmFzZVR5cGUpOworCisJCQly ZXR1cm4gTlVMTDsKKwkJfQogCiAJCS8qCiAJCSAqIElmIGl0J3MgYSB2YXJsZW5hIHZhbHVlLCBm b3JjZSBpdCB0byBiZSBpbiBub24tZXhwYW5kZWQKQEAgLTM2NCw3ICs0MTksOCBAQCBjb2VyY2Vf dHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCQkJCQkJCQkgIGJhc2VUeXBl SWQsIGJhc2VUeXBlTW9kLAogCQkJCQkJCQkJICB0YXJnZXRUeXBlSWQsCiAJCQkJCQkJCQkgIGNj b250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKLQkJCQkJCQkJCSAgZmFsc2UpOworCQkJCQkJCQkJ ICBmYWxzZSwKKwkJCQkJCQkJCSAgZXNjb250ZXh0KTsKIAogCQlSZWxlYXNlU3lzQ2FjaGUoYmFz ZVR5cGUpOwogCkBAIC0zOTcsOSArNDUzLDExIEBAIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTm9kZSAqbm9kZSwKIAkJICovCiAJCUNvbGxhdGVFeHByICpjb2xsID0gKENvbGxhdGVF eHByICopIG5vZGU7CiAKLQkJcmVzdWx0ID0gY29lcmNlX3R5cGUocHN0YXRlLCAoTm9kZSAqKSBj b2xsLT5hcmcsCi0JCQkJCQkJIGlucHV0VHlwZUlkLCB0YXJnZXRUeXBlSWQsIHRhcmdldFR5cGVN b2QsCi0JCQkJCQkJIGNjb250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbik7CisJCXJlc3VsdCA9IGNv ZXJjZV90eXBlX2V4dGVuZGVkKHBzdGF0ZSwgKE5vZGUgKikgY29sbC0+YXJnLAorCQkJCQkJCQkJ ICBpbnB1dFR5cGVJZCwgdGFyZ2V0VHlwZUlkLCB0YXJnZXRUeXBlTW9kLAorCQkJCQkJCQkJICBj Y29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24sCisJCQkJCQkJCQkgIGVzY29udGV4dCk7CisKIAkJ aWYgKHR5cGVfaXNfY29sbGF0YWJsZSh0YXJnZXRUeXBlSWQpKQogCQl7CiAJCQlDb2xsYXRlRXhw ciAqbmV3Y29sbCA9IG1ha2VOb2RlKENvbGxhdGVFeHByKTsKQEAgLTQzMiw3ICs0OTAsOCBAQCBj b2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCQkgKi8KIAkJCXJl c3VsdCA9IGJ1aWxkX2NvZXJjaW9uX2V4cHJlc3Npb24obm9kZSwgcGF0aHR5cGUsIGZ1bmNJZCwK IAkJCQkJCQkJCQkJICAgYmFzZVR5cGVJZCwgYmFzZVR5cGVNb2QsCi0JCQkJCQkJCQkJCSAgIGNj b250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbik7CisJCQkJCQkJCQkJCSAgIGNjb250ZXh0LCBjZm9y bWF0LCBsb2NhdGlvbiwKKwkJCQkJCQkJCQkJICAgZXNjb250ZXh0KTsKIAogCQkJLyoKIAkJCSAq IElmIGRvbWFpbiwgY29lcmNlIHRvIHRoZSBkb21haW4gdHlwZSBhbmQgcmVsYWJlbCB3aXRoIGRv bWFpbgpAQCAtNDQyLDcgKzUwMSw4IEBAIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Tm9kZSAqbm9kZSwKIAkJCQlyZXN1bHQgPSBjb2VyY2VfdG9fZG9tYWluKHJlc3VsdCwgYmFzZVR5 cGVJZCwgYmFzZVR5cGVNb2QsCiAJCQkJCQkJCQkJICB0YXJnZXRUeXBlSWQsCiAJCQkJCQkJCQkJ ICBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24sCi0JCQkJCQkJCQkJICB0cnVlKTsKKwkJCQkJ CQkJCQkgIHRydWUsCisJCQkJCQkJCQkJICBlc2NvbnRleHQpOwogCQl9CiAJCWVsc2UKIAkJewpA QCAtNDU4LDcgKzUxOCw5IEBAIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq bm9kZSwKIAkJCXJlc3VsdCA9IGNvZXJjZV90b19kb21haW4obm9kZSwgYmFzZVR5cGVJZCwgYmFz ZVR5cGVNb2QsCiAJCQkJCQkJCQkgIHRhcmdldFR5cGVJZCwKIAkJCQkJCQkJCSAgY2NvbnRleHQs IGNmb3JtYXQsIGxvY2F0aW9uLAotCQkJCQkJCQkJICBmYWxzZSk7CisJCQkJCQkJCQkgIGZhbHNl LAorCQkJCQkJCQkJICBlc2NvbnRleHQpOworCiAJCQlpZiAocmVzdWx0ID09IG5vZGUpCiAJCQl7 CiAJCQkJLyoKQEAgLTY3NSw3ICs3MzcsOCBAQCBjYW5fY29lcmNlX3R5cGUoaW50IG5hcmdzLCBj b25zdCBPaWQgKmlucHV0X3R5cGVpZHMsIGNvbnN0IE9pZCAqdGFyZ2V0X3R5cGVpZHMsCiBOb2Rl ICoKIGNvZXJjZV90b19kb21haW4oTm9kZSAqYXJnLCBPaWQgYmFzZVR5cGVJZCwgaW50MzIgYmFz ZVR5cGVNb2QsIE9pZCB0eXBlSWQsCiAJCQkJIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29l cmNpb25Gb3JtIGNmb3JtYXQsIGludCBsb2NhdGlvbiwKLQkJCQkgYm9vbCBoaWRlSW5wdXRDb2Vy Y2lvbikKKwkJCQkgYm9vbCBoaWRlSW5wdXRDb2VyY2lvbiwKKwkJCQkgTm9kZSAqZXNjb250ZXh0 KQogewogCUNvZXJjZVRvRG9tYWluICpyZXN1bHQ7CiAKQEAgLTcwNSw3ICs3NjgsMTAgQEAgY29l cmNlX3RvX2RvbWFpbihOb2RlICphcmcsIE9pZCBiYXNlVHlwZUlkLCBpbnQzMiBiYXNlVHlwZU1v ZCwgT2lkIHR5cGVJZCwKIAkgKi8KIAlhcmcgPSBjb2VyY2VfdHlwZV90eXBtb2QoYXJnLCBiYXNl VHlwZUlkLCBiYXNlVHlwZU1vZCwKIAkJCQkJCQkgY2NvbnRleHQsIENPRVJDRV9JTVBMSUNJVF9D QVNULCBsb2NhdGlvbiwKLQkJCQkJCQkgZmFsc2UpOworCQkJCQkJCSBmYWxzZSwKKwkJCQkJCQkg ZXNjb250ZXh0KTsKKwlpZiAoYXJnID09IE5VTEwpCQkJLyogc2hvdWxkbid0IGhhcHBlbiAqLwor CQllbG9nKEVSUk9SLCAiZmFpbGVkIHRvIGNvZXJjZSB0eXBlIG1vZGlmaWVyIGFzIGV4cGVjdGVk Iik7CiAKIAkvKgogCSAqIE5vdyBidWlsZCB0aGUgZG9tYWluIGNvZXJjaW9uIG5vZGUuICBUaGlz IHJlcHJlc2VudHMgcnVuLXRpbWUgY2hlY2tpbmcKQEAgLTc1Miw3ICs4MTgsOCBAQCBzdGF0aWMg Tm9kZSAqCiBjb2VyY2VfdHlwZV90eXBtb2QoTm9kZSAqbm9kZSwgT2lkIHRhcmdldFR5cGVJZCwg aW50MzIgdGFyZ2V0VHlwTW9kLAogCQkJCSAgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29l cmNpb25Gb3JtIGNmb3JtYXQsCiAJCQkJICAgaW50IGxvY2F0aW9uLAotCQkJCSAgIGJvb2wgaGlk ZUlucHV0Q29lcmNpb24pCisJCQkJICAgYm9vbCBoaWRlSW5wdXRDb2VyY2lvbiwKKwkJCQkgICBO b2RlICplc2NvbnRleHQpCiB7CiAJQ29lcmNpb25QYXRoVHlwZSBwYXRodHlwZTsKIAlPaWQJCQlm dW5jSWQ7CkBAIC03NzksNyArODQ2LDggQEAgY29lcmNlX3R5cGVfdHlwbW9kKE5vZGUgKm5vZGUs IE9pZCB0YXJnZXRUeXBlSWQsIGludDMyIHRhcmdldFR5cE1vZCwKIAl7CiAJCW5vZGUgPSBidWls ZF9jb2VyY2lvbl9leHByZXNzaW9uKG5vZGUsIHBhdGh0eXBlLCBmdW5jSWQsCiAJCQkJCQkJCQkJ IHRhcmdldFR5cGVJZCwgdGFyZ2V0VHlwTW9kLAotCQkJCQkJCQkJCSBjY29udGV4dCwgY2Zvcm1h dCwgbG9jYXRpb24pOworCQkJCQkJCQkJCSBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24sCisJ CQkJCQkJCQkJIGVzY29udGV4dCk7CiAJfQogCWVsc2UKIAl7CkBAIC04NDAsNyArOTA4LDggQEAg YnVpbGRfY29lcmNpb25fZXhwcmVzc2lvbihOb2RlICpub2RlLAogCQkJCQkJICBPaWQgZnVuY0lk LAogCQkJCQkJICBPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBNb2QsCiAJCQkJCQkg IENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsCi0JCQkJCQkg IGludCBsb2NhdGlvbikKKwkJCQkJCSAgaW50IGxvY2F0aW9uLAorCQkJCQkJICBOb2RlICplc2Nv bnRleHQpCiB7CiAJaW50CQkJbmFyZ3MgPSAwOwogCkBAIC05NTAsMTQgKzEwMTksMTUgQEAgYnVp bGRfY29lcmNpb25fZXhwcmVzc2lvbihOb2RlICpub2RlLAogCQl0YXJnZXRFbGVtZW50VHlwZSA9 IGdldF9lbGVtZW50X3R5cGUodGFyZ2V0VHlwZUlkKTsKIAkJQXNzZXJ0KE9pZElzVmFsaWQodGFy Z2V0RWxlbWVudFR5cGUpKTsKIAotCQllbGVtZXhwciA9IGNvZXJjZV90b190YXJnZXRfdHlwZShO VUxMLAotCQkJCQkJCQkJCSAoTm9kZSAqKSBjdGVzdCwKLQkJCQkJCQkJCQkgY3Rlc3QtPnR5cGVJ ZCwKLQkJCQkJCQkJCQkgdGFyZ2V0RWxlbWVudFR5cGUsCi0JCQkJCQkJCQkJIHRhcmdldFR5cE1v ZCwKLQkJCQkJCQkJCQkgY2NvbnRleHQsCi0JCQkJCQkJCQkJIGNmb3JtYXQsCi0JCQkJCQkJCQkJ IGxvY2F0aW9uKTsKKwkJZWxlbWV4cHIgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGVfZXh0ZW5kZWQo TlVMTCwKKwkJCQkJCQkJCQkJCSAgKE5vZGUgKikgY3Rlc3QsCisJCQkJCQkJCQkJCQkgIGN0ZXN0 LT50eXBlSWQsCisJCQkJCQkJCQkJCQkgIHRhcmdldEVsZW1lbnRUeXBlLAorCQkJCQkJCQkJCQkJ ICB0YXJnZXRUeXBNb2QsCisJCQkJCQkJCQkJCQkgIGNjb250ZXh0LAorCQkJCQkJCQkJCQkJICBj Zm9ybWF0LAorCQkJCQkJCQkJCQkJICBsb2NhdGlvbiwKKwkJCQkJCQkJCQkJCSAgZXNjb250ZXh0 KTsKIAkJaWYgKGVsZW1leHByID09IE5VTEwpCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KIAkJCWVs b2coRVJST1IsICJmYWlsZWQgdG8gY29lcmNlIGFycmF5IGVsZW1lbnQgdHlwZSBhcyBleHBlY3Rl ZCIpOwogCkBAIC0xMTM5LDcgKzEyMDksOCBAQCBjb2VyY2VfcmVjb3JkX3RvX2NvbXBsZXgoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCQkJCQliYXNlVHlwZUlkLCBiYXNlVHlw ZU1vZCwKIAkJCQkJCQkJdGFyZ2V0VHlwZUlkLAogCQkJCQkJCQljY29udGV4dCwgY2Zvcm1hdCwg bG9jYXRpb24sCi0JCQkJCQkJCWZhbHNlKTsKKwkJCQkJCQkJZmFsc2UsCisJCQkJCQkJCU5VTEwp OwogCX0KIAogCXJldHVybiAoTm9kZSAqKSByb3dleHByOwpAQCAtMTI5NCw3ICsxMzY1LDggQEAg Y29lcmNlX251bGxfdG9fZG9tYWluKE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBPaWQgY29sbGF0 aW9uLAogCQkJCQkJCQkgIENPRVJDSU9OX0lNUExJQ0lULAogCQkJCQkJCQkgIENPRVJDRV9JTVBM SUNJVF9DQVNULAogCQkJCQkJCQkgIC0xLAotCQkJCQkJCQkgIGZhbHNlKTsKKwkJCQkJCQkJICBm YWxzZSwKKwkJCQkJCQkJICBOVUxMKTsKIAlyZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYwppbmRleCA5YWRjOWQ0YzBmNi4uYWYxNzViMGU4YmYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYwpAQCAtMTcsNiArMTcsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0 YWlscy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYWdncmVnYXRlLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ19jYXN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0zOCw2ICszOSw3 IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3htbC5oIgpAQCAtNjIsNyArNjQsOCBAQCBzdGF0aWMgTm9k ZSAqdHJhbnNmb3JtTXVsdGlBc3NpZ25SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBNdWx0aUFzc2ln blJlZiAqbWFyZWYpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUNhc2VFeHByKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQ2FzZUV4cHIgKmMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybVN1YkxpbmsoUGFy c2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zv cm1BcnJheUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0FycmF5RXhwciAqYSwKLQkJCQkJCQkJ T2lkIGFycmF5X3R5cGUsIE9pZCBlbGVtZW50X3R5cGUsIGludDMyIHR5cG1vZCk7CisJCQkJCQkJ CU9pZCBhcnJheV90eXBlLCBPaWQgZWxlbWVudF90eXBlLCBpbnQzMiB0eXBtb2QsCisJCQkJCQkJ CU5vZGUgKmVzY29udGV4dCk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtUm93RXhwcihQYXJzZVN0 YXRlICpwc3RhdGUsIFJvd0V4cHIgKnIsIGJvb2wgYWxsb3dEZWZhdWx0KTsKIHN0YXRpYyBOb2Rl ICp0cmFuc2Zvcm1Db2FsZXNjZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2FsZXNjZUV4cHIg KmMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybU1pbk1heEV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRl LCBNaW5NYXhFeHByICptKTsKQEAgLTc4LDYgKzgxLDExIEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zv cm1XaG9sZVJvd1JlZihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCSAgaW50IHN1YmxldmVs c191cCwgaW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1JbmRpcmVjdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCk7CiBzdGF0aWMgTm9kZSAqdHJh bnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpOworc3RhdGlj IHZvaWQgQ29lcmNpb25FcnJvclNhZmVDaGVjayhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmNh c3RleHByLAorCQkJCQkJCQkgICBOb2RlICpzb3VyY2UsIE9pZCBpbnB1dFR5cGUsIE9pZCB0YXJn ZXRUeXBlKTsKK3N0YXRpYyB2b2lkIENvZXJjaW9uRXJyb3JTYWZlX0ludGVybmFsKE9pZCBpbnB1 dFR5cGUsIE9pZCB0YXJnZXRUeXBlLAorCQkJCQkJCQkJICAgYm9vbCAqZXJyb3JzYWZlX2NvZXJj aW9uLAorCQkJCQkJCQkJICAgYm9vbCAqdXNlcmRlZmluZWQpOwogc3RhdGljIE5vZGUgKnRyYW5z Zm9ybUNvbGxhdGVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2xsYXRlQ2xhdXNlICpjKTsK IHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uT2JqZWN0Q29uc3RydWN0b3IoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCQkJCQkJCQlKc29uT2JqZWN0Q29uc3RydWN0b3IgKmN0b3IpOwpAQCAtMTY2 LDcgKzE3NCw3IEBAIHRyYW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9k ZSAqZXhwcikKIAogCQljYXNlIFRfQV9BcnJheUV4cHI6CiAJCQlyZXN1bHQgPSB0cmFuc2Zvcm1B cnJheUV4cHIocHN0YXRlLCAoQV9BcnJheUV4cHIgKikgZXhwciwKLQkJCQkJCQkJCQlJbnZhbGlk T2lkLCBJbnZhbGlkT2lkLCAtMSk7CisJCQkJCQkJCQkJSW52YWxpZE9pZCwgSW52YWxpZE9pZCwg LTEsIE5VTEwpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBUX1R5cGVDYXN0OgpAQCAtNTY2LDYgKzU3 NCw3IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAq Y3JlZikKIAkJY2FzZSBFWFBSX0tJTkRfVkFMVUVTX1NJTkdMRToKIAkJY2FzZSBFWFBSX0tJTkRf Q0hFQ0tfQ09OU1RSQUlOVDoKIAkJY2FzZSBFWFBSX0tJTkRfRE9NQUlOX0NIRUNLOgorCQljYXNl IEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFV TFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0lOREVYX0VYUFJFU1NJT046CiAJCWNhc2UgRVhQUl9LSU5E X0lOREVYX1BSRURJQ0FURToKQEAgLTE4NDksNiArMTg1OCw5IEBAIHRyYW5zZm9ybVN1Ykxpbmso UGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKQogCQljYXNlIEVYUFJfS0lORF9E T01BSU5fQ0hFQ0s6CiAJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIGNoZWNrIGNv bnN0cmFpbnQiKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CisJ CQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIENBU1QgREVGQVVMVCBleHByZXNzaW9u Iik7CisJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2Ug RVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CiAJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1 ZXJ5IGluIERFRkFVTFQgZXhwcmVzc2lvbiIpOwpAQCAtMjA0MiwxMCArMjA1NCwxNSBAQCB0cmFu c2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKICAqIElm IHRoZSBjYWxsZXIgc3BlY2lmaWVzIHRoZSB0YXJnZXQgdHlwZSwgdGhlIHJlc3VsdGluZyBhcnJh eSB3aWxsCiAgKiBiZSBvZiBleGFjdGx5IHRoYXQgdHlwZS4gIE90aGVyd2lzZSB3ZSB0cnkgdG8g aW5mZXIgYSBjb21tb24gdHlwZQogICogZm9yIHRoZSBlbGVtZW50cyB1c2luZyBzZWxlY3RfY29t bW9uX3R5cGUoKS4KKyAqCisgKiBlc2NvbnRleHQgKEVycm9yU2F2ZUNvbnRleHQgKikgaXMgdHlw aWNhbGx5IE5VTEwsIGV4Y2VwdCBkdXJpbmcgcGFyc2UgYW5hbHlzaXMgZm9yCisgKiBDQVNUKC4u LiBERUZBVUxUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SKS4gV2hlbiBwcm92aWRlZCwKKyAqIHRo ZSBlcnJvcl9vY2N1cnJlZCBmaWVsZCBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG8gZmFsc2UuIEl0 IGlzIHNldAorICogdG8gdHJ1ZSBpZiBjb2VyY2luZyBhcnJheSBlbGVtZW50cyBmYWlscy4KICAq Lwogc3RhdGljIE5vZGUgKgogdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwg QV9BcnJheUV4cHIgKmEsCi0JCQkJICAgT2lkIGFycmF5X3R5cGUsIE9pZCBlbGVtZW50X3R5cGUs IGludDMyIHR5cG1vZCkKKwkJCQkgICBPaWQgYXJyYXlfdHlwZSwgT2lkIGVsZW1lbnRfdHlwZSwg aW50MzIgdHlwbW9kLCBOb2RlICplc2NvbnRleHQpCiB7CiAJQXJyYXlFeHByICAqbmV3YSA9IG1h a2VOb2RlKEFycmF5RXhwcik7CiAJTGlzdAkgICAqbmV3ZWxlbXMgPSBOSUw7CkBAIC0yMDc2LDkg KzIwOTMsMTAgQEAgdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9BcnJh eUV4cHIgKmEsCiAJCQkJCQkJCQkgIChBX0FycmF5RXhwciAqKSBlLAogCQkJCQkJCQkJICBhcnJh eV90eXBlLAogCQkJCQkJCQkJICBlbGVtZW50X3R5cGUsCi0JCQkJCQkJCQkgIHR5cG1vZCk7CisJ CQkJCQkJCQkgIHR5cG1vZCwKKwkJCQkJCQkJCSAgZXNjb250ZXh0KTsKIAkJCS8qIHdlIGNlcnRh aW5seSBoYXZlIGFuIGFycmF5IGhlcmUgKi8KLQkJCUFzc2VydChhcnJheV90eXBlID09IEludmFs aWRPaWQgfHwgYXJyYXlfdHlwZSA9PSBleHByVHlwZShuZXdlKSk7CisJCQlBc3NlcnQoZXNjb250 ZXh0IHx8IGFycmF5X3R5cGUgPT0gSW52YWxpZE9pZCB8fCBhcnJheV90eXBlID09IGV4cHJUeXBl KG5ld2UpKTsKIAkJCW5ld2EtPm11bHRpZGltcyA9IHRydWU7CiAJCX0KIAkJZWxzZQpAQCAtMjEx OSw2ICsyMTM3LDggQEAgdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9B cnJheUV4cHIgKmEsCiAJfQogCWVsc2UKIAl7CisJCUFzc2VydChlc2NvbnRleHQgPT0gTlVMTCk7 CisKIAkJLyogQ2FuJ3QgaGFuZGxlIGFuIGVtcHR5IGFycmF5IHdpdGhvdXQgYSB0YXJnZXQgdHlw ZSAqLwogCQlpZiAobmV3ZWxlbXMgPT0gTklMKQogCQkJZXJlcG9ydChFUlJPUiwKQEAgLTIxNjks MjQgKzIxODksNTUgQEAgdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9B cnJheUV4cHIgKmEsCiAJZm9yZWFjaChlbGVtZW50LCBuZXdlbGVtcykKIAl7CiAJCU5vZGUJICAg KmUgPSAoTm9kZSAqKSBsZmlyc3QoZWxlbWVudCk7Ci0JCU5vZGUJICAgKm5ld2U7CisJCU5vZGUJ ICAgKm5ld2UgPSBOVUxMOwogCiAJCWlmIChjb2VyY2VfaGFyZCkKIAkJewotCQkJbmV3ZSA9IGNv ZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIGUsCi0JCQkJCQkJCQkJIGV4cHJUeXBlKGUpLAot CQkJCQkJCQkJCSBjb2VyY2VfdHlwZSwKLQkJCQkJCQkJCQkgdHlwbW9kLAotCQkJCQkJCQkJCSBD T0VSQ0lPTl9FWFBMSUNJVCwKLQkJCQkJCQkJCQkgQ09FUkNFX0VYUExJQ0lUX0NBU1QsCi0JCQkJ CQkJCQkJIC0xKTsKLQkJCWlmIChuZXdlID09IE5VTEwpCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJCShlcnJjb2RlKEVSUkNPREVfQ0FOTk9UX0NPRVJDRSksCi0JCQkJCQkgZXJybXNnKCJjYW5u b3QgY2FzdCB0eXBlICVzIHRvICVzIiwKLQkJCQkJCQkJZm9ybWF0X3R5cGVfYmUoZXhwclR5cGUo ZSkpLAotCQkJCQkJCQlmb3JtYXRfdHlwZV9iZShjb2VyY2VfdHlwZSkpLAotCQkJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihlKSkpKTsKKwkJCS8qCisJCQkgKiBD YW5ub3QgY29lcmNlLCBqdXN0IGFwcGVuZCB0aGUgdHJhbnNmb3JtZWQgZWxlbWVudCBleHByZXNz aW9uCisJCQkgKiB0byB0aGUgbGlzdC4KKwkJCSAqLworCQkJaWYgKFNPRlRfRVJST1JfT0NDVVJS RUQoZXNjb250ZXh0KSkKKwkJCQluZXdlID0gZTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlOb2RlCSAg ICplY29weSA9IE5VTEw7CisKKwkJCQlpZiAoZXNjb250ZXh0KQorCQkJCQllY29weSA9IGNvcHlP YmplY3QoZSk7CisKKwkJCQluZXdlID0gY29lcmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKHBz dGF0ZSwgZSwKKwkJCQkJCQkJCQkJCQkgIGV4cHJUeXBlKGUpLAorCQkJCQkJCQkJCQkJCSAgY29l cmNlX3R5cGUsCisJCQkJCQkJCQkJCQkJICB0eXBtb2QsCisJCQkJCQkJCQkJCQkJICBDT0VSQ0lP Tl9FWFBMSUNJVCwKKwkJCQkJCQkJCQkJCQkgIENPRVJDRV9FWFBMSUNJVF9DQVNULAorCQkJCQkJ CQkJCQkJCSAgLTEsCisJCQkJCQkJCQkJCQkJICBlc2NvbnRleHQpOworCQkJCWlmIChuZXdlID09 IE5VTEwpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBDYW5ub3QgY29lcmNlLiBSYWlzZSBhbiBl cnJvciBvciBhcHBlbmQgdGhlIHRyYW5zZm9ybWVkCisJCQkJCSAqIGVsZW1lbnQgdG8gdGhlIGxp c3QuIEFsc28gc2V0IGVycm9yX29jY3VycmVkIHRvIHRydWUKKwkJCQkJICogKGluIGNhc2UgY29l cmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkIGRpZG4ndCkgc28KKwkJCQkJICogY2FsbGVyIHdp bGwgbm90aWNlIGFycmF5IGNvZXJjaW9uIGZhaWxlZC4KKwkJCQkJICovCisJCQkJCWlmICghZXNj b250ZXh0KQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9D QU5OT1RfQ09FUkNFKSwKKwkJCQkJCQkJIGVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAl cyIsCisJCQkJCQkJCQkJZm9ybWF0X3R5cGVfYmUoZXhwclR5cGUoZSkpLAorCQkJCQkJCQkJCWZv cm1hdF90eXBlX2JlKGNvZXJjZV90eXBlKSksCisJCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBleHByTG9jYXRpb24oZSkpKSk7CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJRXJy b3JTYXZlQ29udGV4dCAqY29udGV4dCA9IGNhc3ROb2RlKEVycm9yU2F2ZUNvbnRleHQsIGVzY29u dGV4dCk7CisKKwkJCQkJCW5ld2UgPSBlY29weTsKKwkJCQkJCWNvbnRleHQtPmVycm9yX29jY3Vy cmVkID0gdHJ1ZTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KIAkJfQogCQllbHNlCiAJCQluZXdlID0g Y29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwgZSwKQEAgLTI3MzUsMTcgKzI3ODYsNjcgQEAg dHJhbnNmb3JtV2hvbGVSb3dSZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5hbWVzcGFjZUl0 ZW0gKm5zaXRlbSwKIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybVR5cGVDYXN0KFBhcnNlU3RhdGUg KnBzdGF0ZSwgVHlwZUNhc3QgKnRjKQogewotCU5vZGUJICAgKnJlc3VsdDsKKwlTYWZlVHlwZUNh c3RFeHByICpzdGM7CisJTm9kZQkgICAqY2FzdGV4cHIgPSBOVUxMOworCU5vZGUJICAgKmRlZmV4 cHIgPSBOVUxMOwogCU5vZGUJICAgKmFyZyA9IHRjLT5hcmc7CisJTm9kZQkgICAqc291cmNlOwog CU5vZGUJICAgKmV4cHI7CiAJT2lkCQkJaW5wdXRUeXBlOwogCU9pZAkJCXRhcmdldFR5cGU7CisJ T2lkCQkJdGFyZ2V0VHlwZWNvbGw7CiAJaW50MzIJCXRhcmdldFR5cG1vZDsKIAlpbnQJCQlsb2Nh dGlvbjsKKwlFcnJvclNhdmVDb250ZXh0ICplc2NvbnRleHQgPSBOVUxMOwogCiAJLyogTG9vayB1 cCB0aGUgdHlwZSBuYW1lIGZpcnN0ICovCiAJdHlwZW5hbWVUeXBlSWRBbmRNb2QocHN0YXRlLCB0 Yy0+dHlwZU5hbWUsICZ0YXJnZXRUeXBlLCAmdGFyZ2V0VHlwbW9kKTsKIAorCXRhcmdldFR5cGVj b2xsID0gZ2V0X3R5cGNvbGxhdGlvbih0YXJnZXRUeXBlKTsKKworCS8qIGxvb2tpbmcgYXQgREVG QVVMVCBleHByZXNzaW9uICovCisJaWYgKHRjLT5kZWZleHByKQorCXsKKwkJT2lkCQkJZGVmQ29s bDsKKworCQllc2NvbnRleHQgPSBtYWtlTm9kZShFcnJvclNhdmVDb250ZXh0KTsKKwkJZXNjb250 ZXh0LT50eXBlID0gVF9FcnJvclNhdmVDb250ZXh0OworCQllc2NvbnRleHQtPmVycm9yX29jY3Vy cmVkID0gZmFsc2U7CisJCWVzY29udGV4dC0+ZGV0YWlsc193YW50ZWQgPSBmYWxzZTsKKworCQlk ZWZleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIHRjLT5kZWZleHByLCBFWFBSX0tJTkRfQ0FT VF9ERUZBVUxUKTsKKworCQlkZWZleHByID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwg ZGVmZXhwciwgZXhwclR5cGUoZGVmZXhwciksCisJCQkJCQkJCQkJdGFyZ2V0VHlwZSwgdGFyZ2V0 VHlwbW9kLAorCQkJCQkJCQkJCUNPRVJDSU9OX0VYUExJQ0lULCBDT0VSQ0VfRVhQTElDSVRfQ0FT VCwKKwkJCQkJCQkJCQlleHByTG9jYXRpb24oZGVmZXhwcikpOworCisJCWlmIChkZWZleHByID09 IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfQ0FOTk9UX0NP RVJDRSksCisJCQkJCWVycm1zZygiY2Fubm90IGNvZXJjZSAlcyBleHByZXNzaW9uIHRvIHR5cGUg JXMiLAorCQkJCQkJICAgIkNBU1QgREVGQVVMVCIsCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0 YXJnZXRUeXBlKSksCisJCQkJCXBhcnNlcl9jb2VyY2lvbl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4 cHJMb2NhdGlvbih0Yy0+ZGVmZXhwciksIGRlZmV4cHIpKTsKKworCQlhc3NpZ25fZXhwcl9jb2xs YXRpb25zKHBzdGF0ZSwgZGVmZXhwcik7CisKKwkJLyoKKwkJICogVGhlIGNvbGxhdGlvbiBvZiBE RUZBVUxUIGV4cHJlc3Npb24gbXVzdCBtYXRjaCB0aGUgY29sbGF0aW9uIG9mIHRoZQorCQkgKiB0 YXJnZXQgdHlwZS4KKwkJICovCisJCWRlZkNvbGwgPSBleHByQ29sbGF0aW9uKGRlZmV4cHIpOwor CisJCWlmICh0YXJnZXRUeXBlY29sbCAhPSBkZWZDb2xsKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJZXJybXNnKCJjb2xs YXRpb24gb2YgQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24gY29uZmxpY3RzIHdpdGggdGFyZ2V0IHR5 cGUgY29sbGF0aW9uIiksCisJCQkJCWVycmRldGFpbCgiXCIlc1wiIHZlcnN1cyBcIiVzXCIiLAor CQkJCQkJCSAgZ2V0X2NvbGxhdGlvbl9uYW1lKGRlZkNvbGwpLAorCQkJCQkJCSAgZ2V0X2NvbGxh dGlvbl9uYW1lKHRhcmdldFR5cGVjb2xsKSksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGV4cHJMb2NhdGlvbihkZWZleHByKSkpOworCX0KKwogCS8qCiAJICogSWYgdGhlIHN1Ympl Y3Qgb2YgdGhlIHR5cGVjYXN0IGlzIGFuIEFSUkFZW10gY29uc3RydWN0IGFuZCB0aGUgdGFyZ2V0 CiAJICogdHlwZSBpcyBhbiBhcnJheSB0eXBlLCB3ZSBpbnZva2UgdHJhbnNmb3JtQXJyYXlFeHBy KCkgZGlyZWN0bHkgc28gdGhhdApAQCAtMjc3NCw3ICsyODc1LDggQEAgdHJhbnNmb3JtVHlwZUNh c3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpCiAJCQkJCQkJCQkgIChBX0FycmF5 RXhwciAqKSBhcmcsCiAJCQkJCQkJCQkgIHRhcmdldEJhc2VUeXBlLAogCQkJCQkJCQkJICBlbGVt ZW50VHlwZSwKLQkJCQkJCQkJCSAgdGFyZ2V0QmFzZVR5cG1vZCk7CisJCQkJCQkJCQkgIHRhcmdl dEJhc2VUeXBtb2QsCisJCQkJCQkJCQkgIChOb2RlICopIGVzY29udGV4dCk7CiAJCX0KIAkJZWxz ZQogCQkJZXhwciA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgYXJnKTsKQEAgLTI3OTUs MjAgKzI4OTcsMjE4IEBAIHRyYW5zZm9ybVR5cGVDYXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVHlw ZUNhc3QgKnRjKQogCWlmIChsb2NhdGlvbiA8IDApCiAJCWxvY2F0aW9uID0gdGMtPnR5cGVOYW1l LT5sb2NhdGlvbjsKIAotCXJlc3VsdCA9IGNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIGV4 cHIsIGlucHV0VHlwZSwKLQkJCQkJCQkJICAgdGFyZ2V0VHlwZSwgdGFyZ2V0VHlwbW9kLAotCQkJ CQkJCQkgICBDT0VSQ0lPTl9FWFBMSUNJVCwKLQkJCQkJCQkJICAgQ09FUkNFX0VYUExJQ0lUX0NB U1QsCi0JCQkJCQkJCSAgIGxvY2F0aW9uKTsKLQlpZiAocmVzdWx0ID09IE5VTEwpCisJLyoKKwkg KiBjb2VyY2VfdG9fdGFyZ2V0X3R5cGVfZXh0ZW5kZWQgbWF5IG1vZGlmeSB0aGUgc291cmNlIGV4 cHJlc3Npb24sIHNvIHdlCisJICogc3RpbGwgY3JlYXRlIGEgY29weSBiZWZvcmVoYW5kLiBUaGlz IGFsbG93cyBTYWZlVHlwZUNhc3RFeHByIHRvIHJlY2VpdmUKKwkgKiB0aGUgdHJhbnNmb3JtZWQg c291cmNlIGV4cHJlc3Npb24gdW5jaGFuZ2VkLgorCSAqLworCXNvdXJjZSA9IGRlZmV4cHIgPyBj b3B5T2JqZWN0KGV4cHIpIDogZXhwcjsKKworCWlmICghU09GVF9FUlJPUl9PQ0NVUlJFRChlc2Nv bnRleHQpKQorCXsKKwkJY2FzdGV4cHIgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGVfZXh0ZW5kZWQo cHN0YXRlLCBleHByLCBpbnB1dFR5cGUsCisJCQkJCQkJCQkJCQkgIHRhcmdldFR5cGUsIHRhcmdl dFR5cG1vZCwKKwkJCQkJCQkJCQkJCSAgQ09FUkNJT05fRVhQTElDSVQsCisJCQkJCQkJCQkJCQkg IENPRVJDRV9FWFBMSUNJVF9DQVNULAorCQkJCQkJCQkJCQkJICBsb2NhdGlvbiwKKwkJCQkJCQkJ CQkJCSAgKE5vZGUgKikgZXNjb250ZXh0KTsKKworCQkvKgorCQkgKiBObyBERUZBVUxUIGV4cHJl c3Npb24sIGV4aXQgbm93IG9yIGVycm9yIG91dCBpbiBjYXNlIG9mIGNvZXJjaW9uCisJCSAqIGZh aWx1cmUKKwkJICovCisJCWlmICghZGVmZXhwcikKKwkJeworCQkJaWYgKGNhc3RleHByKQorCQkJ CXJldHVybiBjYXN0ZXhwcjsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJD T0RFX0NBTk5PVF9DT0VSQ0UpLAorCQkJCQllcnJtc2coImNhbm5vdCBjYXN0IHR5cGUgJXMgdG8g JXMiLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoaW5wdXRUeXBlKSwKKwkJCQkJCSAgIGZvcm1h dF90eXBlX2JlKHRhcmdldFR5cGUpKSwKKwkJCQkJcGFyc2VyX2NvZXJjaW9uX2VycnBvc2l0aW9u KHBzdGF0ZSwgbG9jYXRpb24sIGV4cHIpKTsKKwkJfQorCX0KKworCS8qIEZ1cnRoZXIgY2hlY2sg Zm9yIENBU1QoLi4uIERFRkFVTFQgLi4uIE9OIENPTlZFUlNJT04gRVJST1IpICovCisJQ29lcmNp b25FcnJvclNhZmVDaGVjayhwc3RhdGUsIGNhc3RleHByLCBzb3VyY2UsIGlucHV0VHlwZSwKKwkJ CQkJCSAgIHRhcmdldFR5cGUpOworCisJc3RjID0gbWFrZU5vZGUoU2FmZVR5cGVDYXN0RXhwcik7 CisJc3RjLT5zb3VyY2UgPSAoRXhwciAqKSBzb3VyY2U7CisJc3RjLT5jYXN0ZXhwciA9IChFeHBy ICopIGNhc3RleHByOworCXN0Yy0+ZGVmZXhwciA9IChFeHByICopIGRlZmV4cHI7CisJc3RjLT5y ZXN1bHR0eXBlID0gdGFyZ2V0VHlwZTsKKwlzdGMtPnJlc3VsdHR5cG1vZCA9IHRhcmdldFR5cG1v ZDsKKwlzdGMtPnJlc3VsdGNvbGxpZCA9IHRhcmdldFR5cGVjb2xsOworCXN0Yy0+bG9jYXRpb24g PSBsb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKSBzdGM7Cit9CisKKy8qCisgKiBDaGVjayB3 aGV0aGVyIGEgdHlwZSBjb2VyY2lvbiBpcyBlcnJvci1zYWZlLiBJZiBub3QsIHJlcG9ydCBhbiBl cnJvci4KKyAqLworc3RhdGljIHZvaWQKK0NvZXJjaW9uRXJyb3JTYWZlQ2hlY2soUGFyc2VTdGF0 ZSAqcHN0YXRlLCBOb2RlICpjYXN0ZXhwciwgTm9kZSAqc291cmNlLAorCQkJCQkgICBPaWQgaW5w dXRUeXBlLCBPaWQgdGFyZ2V0VHlwZSkKK3sKKwlib29sCQllcnJvcnNhZmVfY29lcmNpb24gPSB0 cnVlOworCWJvb2wJCXVzZXJkZWZpbmVkID0gZmFsc2U7CisKKwkvKgorCSAqIEJpbmFyeSBjb2Vy Y2lvbiBjYXN0IGlzIGVycm9yLXNhZmUsIENvZXJjZVZpYUlPIGNhbiBhbHNvIGJlIGV2YWx1YXRl ZAorCSAqIGluIGFuIGVycm9yLXNhZmUgbWFubmVyLiBTa2lwIHRoZXNlIGNhc2VzLgorCSAqLwor CWlmIChjYXN0ZXhwciA9PSBOVUxMIHx8CisJCUlzQmluYXJ5Q29lcmNpYmxlKGlucHV0VHlwZSwg dGFyZ2V0VHlwZSkgfHwKKwkJSXNBKGNhc3RleHByLCBDb2VyY2VWaWFJTykpCisJCXJldHVybjsK KworCUNvZXJjaW9uRXJyb3JTYWZlX0ludGVybmFsKGlucHV0VHlwZSwgdGFyZ2V0VHlwZSwKKwkJ CQkJCQkgICAmZXJyb3JzYWZlX2NvZXJjaW9uLAorCQkJCQkJCSAgICZ1c2VyZGVmaW5lZCk7CisK KwlpZiAoIWVycm9yc2FmZV9jb2VyY2lvbikKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29k ZShFUlJDT0RFX0NBTk5PVF9DT0VSQ0UpLAotCQkJCSBlcnJtc2coImNhbm5vdCBjYXN0IHR5cGUg JXMgdG8gJXMiLAotCQkJCQkJZm9ybWF0X3R5cGVfYmUoaW5wdXRUeXBlKSwKLQkJCQkJCWZvcm1h dF90eXBlX2JlKHRhcmdldFR5cGUpKSwKLQkJCQkgcGFyc2VyX2NvZXJjaW9uX2VycnBvc2l0aW9u KHBzdGF0ZSwgbG9jYXRpb24sIGV4cHIpKSk7CisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCJjYW5ub3QgY2FzdCB0eXBlICVzIHRvICVzIHdp dGggREVGQVVMVCBleHByZXNzaW9uIGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IiLAor CQkJCQkgICBmb3JtYXRfdHlwZV9iZShpbnB1dFR5cGUpLAorCQkJCQkgICBmb3JtYXRfdHlwZV9i ZSh0YXJnZXRUeXBlKSksCisJCQkJdXNlcmRlZmluZWQKKwkJCQk/IGVycmRldGFpbCgiU2FmZSB0 eXBlIGNhc3RzIGZvciB1c2VyLWRlZmluZWQgdHlwZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLiIp CisJCQkJOiBlcnJkZXRhaWwoIkV4cGxpY2l0IGNhc3QgaXMgZGVmaW5lZCBidXQgZGVmaW5pdGlv biBpcyBub3QgZXJyb3Igc2FmZS4iKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBl eHByTG9jYXRpb24oc291cmNlKSkpOworfQogCi0JcmV0dXJuIHJlc3VsdDsKKy8qCisgKiBSZWN1 cnNpb24gaXMgcmVxdWlyZWQgaGVyZSBiZWNhdXNlIHR5cGUgY2FzdHMgbWF5IGludm9sdmUgYXJy YXlzIG92ZXIgZG9tYWlucworICogb3IgZG9tYWlucyBvdmVyIGFycmF5cywgc28gd2UgbmVlZCBy ZXN1cnNlIHRvIHRoZSBiYXNlIGVsZW1lbnQgdHlwZSBmb3IgYm90aAorICogdGhlIGlucHV0IGFu ZCB0YXJnZXQgdHlwZXMuCisgKi8KK3N0YXRpYyB2b2lkCitDb2VyY2lvbkVycm9yU2FmZV9JbnRl cm5hbChPaWQgaW5wdXRUeXBlLCBPaWQgdGFyZ2V0VHlwZSwKKwkJCQkJCSAgIGJvb2wgKmVycm9y c2FmZV9jb2VyY2lvbiwgYm9vbCAqdXNlcmRlZmluZWQpCit7CisJY2hhcgkJaW5wdXRfdHlwdHlw ZSA9IGdldF90eXB0eXBlKGlucHV0VHlwZSk7CisJY2hhcgkJdGFyZ2V0X3R5cHR5cGUgPSBnZXRf dHlwdHlwZSh0YXJnZXRUeXBlKTsKKwlIZWFwVHVwbGUJdHVwbGU7CisKKwlBc3NlcnQoZXJyb3Jz YWZlX2NvZXJjaW9uICE9IE5VTEwpOworCUFzc2VydCh1c2VyZGVmaW5lZCAhPSBOVUxMKTsKKwor CWlmICghKCplcnJvcnNhZmVfY29lcmNpb24pKQorCQlyZXR1cm47CisKKwlpZiAoaW5wdXRfdHlw dHlwZSA9PSBUWVBUWVBFX0RPTUFJTiAmJgorCQl0YXJnZXRfdHlwdHlwZSA9PSBUWVBUWVBFX0RP TUFJTikKKwl7CisJCUNvZXJjaW9uRXJyb3JTYWZlX0ludGVybmFsKGdldEJhc2VUeXBlKGlucHV0 VHlwZSksCisJCQkJCQkJCSAgIGdldEJhc2VUeXBlKHRhcmdldFR5cGUpLAorCQkJCQkJCQkgICBl cnJvcnNhZmVfY29lcmNpb24sCisJCQkJCQkJCSAgIHVzZXJkZWZpbmVkKTsKKwkJcmV0dXJuOwor CX0KKwllbHNlIGlmIChpbnB1dF90eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOKQorCXsKKwkJQ29l cmNpb25FcnJvclNhZmVfSW50ZXJuYWwoZ2V0QmFzZVR5cGUoaW5wdXRUeXBlKSwKKwkJCQkJCQkJ ICAgdGFyZ2V0VHlwZSwKKwkJCQkJCQkJICAgZXJyb3JzYWZlX2NvZXJjaW9uLAorCQkJCQkJCQkg ICB1c2VyZGVmaW5lZCk7CisJCXJldHVybjsKKwl9CisJZWxzZSBpZiAodGFyZ2V0X3R5cHR5cGUg PT0gVFlQVFlQRV9ET01BSU4pCisJeworCQlDb2VyY2lvbkVycm9yU2FmZV9JbnRlcm5hbChpbnB1 dFR5cGUsCisJCQkJCQkJCSAgIGdldEJhc2VUeXBlKHRhcmdldFR5cGUpLAorCQkJCQkJCQkgICBl cnJvcnNhZmVfY29lcmNpb24sCisJCQkJCQkJCSAgIHVzZXJkZWZpbmVkKTsKKwkJcmV0dXJuOwor CX0KKwllbHNlIGlmICgoaW5wdXRfdHlwdHlwZSAhPSBUWVBUWVBFX0JBU0UgJiYgaW5wdXRUeXBl ID4gRmlyc3RVbnBpbm5lZE9iamVjdElkKQorCQkJIHx8ICh0YXJnZXRfdHlwdHlwZSAhPSBUWVBU WVBFX0JBU0UgJiYgdGFyZ2V0VHlwZSA+IEZpcnN0VW5waW5uZWRPYmplY3RJZCkpCisJeworCQkv KgorCQkgKiBDb21wb3NpdGUtdG8tY29tcG9zaXRlIGNhc3RpbmcgaXMgbm90IGltcGxlbWVudGVk LCBzbyBlcnJvci1zYWZlCisJCSAqIGNhc3RpbmcgYmV0d2VlbiBjb21wb3NpdGUgdHlwZXMgaXMg bm90IHBvc3NpYmxlIGFuZCBpcyBmb3JiaWRkZW4KKwkJICogaGVyZS4KKwkJICoKKwkJICogQWRk aXRpb25hbGx5LCBvdXIgdHlwZSBzeXN0ZW0gZG9lcyBub3QgYXV0b21hdGljYWxseSBjYXN0IGEK KwkJICogdXNlci1kZWZpbmVkIHJhbmdlIHR5cGUgdG8gYSBidWlsdC1pbiByYW5nZSB0eXBlLCBl dmVuIHdoZW4gdGhlaXIKKwkJICogYmFzZSBlbGVtZW50IHR5cGVzIG1hdGNoLiBEdWUgdG8gcG90 ZW50aWFsIGVkZ2UgY2FzZXMsIGVycm9yLXNhZmUKKwkJICogY2FzdGluZyBmb3Igc3VjaCB0eXBl cyBpcyBkaXNhbGxvd2VkLgorCQkgKi8KKwkJKmVycm9yc2FmZV9jb2VyY2lvbiA9IGZhbHNlOwor CisJCXJldHVybjsKKwl9CisJZWxzZQorCXsKKwkJT2lkCQkJaW5wdXRfdHlwZWxlbSA9IGdldF9l bGVtZW50X3R5cGUoaW5wdXRUeXBlKTsKKwkJT2lkCQkJdGFyZ2V0X3R5cGVsZW0gPSBnZXRfZWxl bWVudF90eXBlKHRhcmdldFR5cGUpOworCisJCWlmIChPaWRJc1ZhbGlkKGlucHV0X3R5cGVsZW0p ICYmIE9pZElzVmFsaWQodGFyZ2V0X3R5cGVsZW0pKQorCQl7CisJCQkvKiBSZWN1cnNlIGludG8g dGhlIGFycmF5IGVsZW1lbnQgdHlwZXMuICovCisJCQlDb2VyY2lvbkVycm9yU2FmZV9JbnRlcm5h bChpbnB1dF90eXBlbGVtLAorCQkJCQkJCQkJICAgdGFyZ2V0X3R5cGVsZW0sCisJCQkJCQkJCQkg ICBlcnJvcnNhZmVfY29lcmNpb24sCisJCQkJCQkJCQkgICB1c2VyZGVmaW5lZCk7CisJCQlyZXR1 cm47CisJCX0KKworCQkvKgorCQkgKiBJdCBpcyB1bmxpa2VseSB0aGF0IGFuIGFycmF5IGNhbiBi ZSBjb2VyY2VkIHRvIGEgbm9uLWFycmF5LCBvciB2aWNlCisJCSAqIHZlcnNhLiBDdXJyZW50bHks IHRoaXMgb25seSBvY2N1cnMgd2hlbiB0aGUgdGFyZ2V0IHR5cGUgaXMgdGV4dCwKKwkJICogcmVz dWx0aW5nIGluIGEgQ29lcmNlVmlhSU8gY2FzdCBleHByZXNzaW9u4oCUd2hpY2ggaXMgYWxyZWFk eQorCQkgKiBoYW5kbGVkIGJ5IENvZXJjaW9uRXJyb3JTYWZlQ2hlY2suCisJCSAqLworCX0KKwor CS8qCisJICogQ2FzdHMgZnJvbSBNT05FWSBzb3VyY2UgdHlwZSBhcmUgbm90IGVycm9yIHNhZmUu CisJICovCisJaWYgKGlucHV0VHlwZSA9PSBNT05FWU9JRCkKKwl7CisJCSplcnJvcnNhZmVfY29l cmNpb24gPSBmYWxzZTsKKworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBJbiBjYXNlIHByZWl2 b3VzIGxvZ2ljIGRpZG4ndCBmaWd1cmUgb3V0IHRoYXQgdGhlIHJlYWwgZWxlbWVudCBiYXNlCisJ ICogdHlwZSBpcyBpZGVudGl0Y2FsIHRoZW4gb2J2b3VzbHksIHRoZXkgYXJlIGVycm9yIHNhZmUu CisJICovCisJaWYgKGlucHV0VHlwZSA9PSB0YXJnZXRUeXBlKQorCQlyZXR1cm47CisJZWxzZQor CXsKKwkJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoQ0FTVFNPVVJDRVRBUkdFVCwKKwkJCQkJCQkJ T2JqZWN0SWRHZXREYXR1bShpbnB1dFR5cGUpLAorCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKHRh cmdldFR5cGUpKTsKKworCQkvKgorCQkgKiBBIHBnX2Nhc3QgZW50cnkgbWlnaHQgbm90IGV4aXN0 IGZvciB0aGlzIHNwZWNpZmljIGNhc3Q7IGZvcgorCQkgKiBleGFtcGxlLCB3aGVuIHVzaW5nIENv ZXJjZVZpYUlPLgorCQkgKi8KKwkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQl7CisJ CQlGb3JtX3BnX2Nhc3QgY2FzdEZvcm0gPSAoRm9ybV9wZ19jYXN0KSBHRVRTVFJVQ1QodHVwbGUp OworCisJCQlpZiAoY2FzdEZvcm0tPmNhc3RmdW5jID4gRmlyc3RVbnBpbm5lZE9iamVjdElkKQor CQkJeworCQkJCSplcnJvcnNhZmVfY29lcmNpb24gPSBmYWxzZTsKKwkJCQkqdXNlcmRlZmluZWQg PSB0cnVlOworCQkJfQorCQkJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKwkJfQorCQllbHNlIGlm IChpbnB1dFR5cGUgPiBGaXJzdFVucGlubmVkT2JqZWN0SWQgfHwgdGFyZ2V0VHlwZSA+IEZpcnN0 VW5waW5uZWRPYmplY3RJZCkKKwkJeworCQkJKmVycm9yc2FmZV9jb2VyY2lvbiA9IGZhbHNlOwor CQkJKnVzZXJkZWZpbmVkID0gdHJ1ZTsKKwkJfQorCX0KIH0KIAogLyoKQEAgLTMyMjQsNiArMzUy NCw4IEBAIFBhcnNlRXhwcktpbmROYW1lKFBhcnNlRXhwcktpbmQgZXhwcktpbmQpCiAJCWNhc2Ug RVhQUl9LSU5EX0NIRUNLX0NPTlNUUkFJTlQ6CiAJCWNhc2UgRVhQUl9LSU5EX0RPTUFJTl9DSEVD SzoKIAkJCXJldHVybiAiQ0hFQ0siOworCQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CisJ CQlyZXR1cm4gIkNBU1QgREVGQVVMVCI7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxU OgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgogCQkJcmV0dXJuICJERUZBVUxU IjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IDg2MDc2N2E1MmVlLi4wOTUyZDBlNGFkNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYworKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0yNzQ2LDYgKzI3NDYsOSBAQCBjaGVja19zcmZf Y2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0X3NyZiwgaW50IGxv Y2F0aW9uKQogCQljYXNlIEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6CiAJCQllcnIgPSBfKCJzZXQt cmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gY2hlY2sgY29uc3RyYWludHMi KTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CisJCQllcnIgPSBf KCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxU IGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFV TFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CiAJCQllcnIgPSBfKCJzZXQt cmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGQVVMVCBleHByZXNzaW9u cyIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4IDZhODYyZDVhNGY5Li4zNWQ5OWZk YWMwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpAQCAtODQ1LDcgKzg0NSw4IEBAIHRy YW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJ CQkJQ09FUkNJT05fSU1QTElDSVQsCiAJCQkJCQkJCQkJQ09FUkNFX0lNUExJQ0lUX0NBU1QsCiAJ CQkJCQkJCQkJbG9jYXRpb24sCi0JCQkJCQkJCQkJZmFsc2UpOworCQkJCQkJCQkJCWZhbHNlLAor CQkJCQkJCQkJCU5VTEwpOwogCiAJCQlyZXR1cm4gKE5vZGUgKikgZnN0b3JlOwogCQl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3R5cGUuYwppbmRleCBiYjdlY2NkZTlmZC4uYmJmMzlkYWM2MTkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90eXBlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3R5cGUuYwpAQCAtNjYwLDYgKzY2MCwyOCBAQCBzdHJpbmdUeXBlRGF0dW0oVHlw ZSB0cCwgY2hhciAqc3RyaW5nLCBpbnQzMiBhdHR0eXBtb2QpCiAJcmV0dXJuIE9pZElucHV0RnVu Y3Rpb25DYWxsKHR5cGlucHV0LCBzdHJpbmcsIHR5cGlvcGFyYW0sIGF0dHR5cG1vZCk7CiB9CiAK Ky8qCisgKiBFcnJvci1zYWZlIHZlcnNpb24gb2Ygc3RyaW5nVHlwZURhdHVtLgorICoKKyAqIFJl dHVybnMgdHJ1ZSBpZiAic3RyaW5nIiBpcyBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHR5cGUg InRwIi4KKyAqIE9uIHN1Y2Nlc3MsIHRoZSBpbnRlcm5hbCBEYXR1bSByZXByZXNlbnRhdGlvbiBp cyB3cml0dGVuIHRvICJyZXN1bHQiLgorICovCitib29sCitzdHJpbmdUeXBlRGF0dW1TYWZlKFR5 cGUgdHAsIGNoYXIgKnN0cmluZywgaW50MzIgYXR0dHlwbW9kLAorCQkJCQlOb2RlICplc2NvbnRl eHQsIERhdHVtICpyZXN1bHQpCit7CisJRm1nckluZm8JZmxpbmZvOworCisJRm9ybV9wZ190eXBl IHR5cGZvcm0gPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHApOworCU9pZAkJCXR5cGlucHV0 ID0gdHlwZm9ybS0+dHlwaW5wdXQ7CisJT2lkCQkJdHlwaW9wYXJhbSA9IGdldFR5cGVJT1BhcmFt KHRwKTsKKworCWZtZ3JfaW5mbyh0eXBpbnB1dCwgJmZsaW5mbyk7CisKKwlyZXR1cm4gSW5wdXRG dW5jdGlvbkNhbGxTYWZlKCZmbGluZm8sIHN0cmluZywgdHlwaW9wYXJhbSwgYXR0dHlwbW9kLAor CQkJCQkJCQkgZXNjb250ZXh0LCByZXN1bHQpOworfQorCiAvKgogICogR2l2ZW4gYSB0eXBlaWQs IHJldHVybiB0aGUgdHlwZSdzIHR5cHJlbGlkIChhc3NvY2lhdGVkIHJlbGF0aW9uKSwgaWYgYW55 LgogICogUmV0dXJucyBJbnZhbGlkT2lkIGlmIHR5cGUgaXMgbm90IGEgY29tcG9zaXRlIHR5cGUu CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCBhMDQ5Y2M2N2VkNi4uYTcyODRmNDg0 MjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtNTE5Niw3ICs1MTk2LDcgQEAg dHJhbnNmb3JtUGFydGl0aW9uQm91bmRWYWx1ZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnZh bCwKIAkJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIHZhbHVlKTsKIAkJdmFsdWUgPSAo Tm9kZSAqKSBleHByZXNzaW9uX3BsYW5uZXIoKEV4cHIgKikgdmFsdWUpOwogCQl2YWx1ZSA9IChO b2RlICopIGV2YWx1YXRlX2V4cHIoKEV4cHIgKikgdmFsdWUsIGNvbFR5cGUsIGNvbFR5cG1vZCwK LQkJCQkJCQkJCSAgIHBhcnRDb2xsYXRpb24pOworCQkJCQkJCQkJICAgcGFydENvbGxhdGlvbiwg TlVMTCk7CiAJCWlmICghSXNBKHZhbHVlLCBDb25zdCkpCiAJCQllbG9nKEVSUk9SLCAiY291bGQg bm90IGV2YWx1YXRlIHBhcnRpdGlvbiBib3VuZCBleHByZXNzaW9uIik7CiAJfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9hcnJheWZ1bmNzLmMKaW5kZXggMTNlZWQyMmRkNmEuLjcwNTIzMjQ4ZjU2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMKQEAgLTMyOTQsNiArMzI5NCwxNSBAQCBhcnJheV9tYXAo RGF0dW0gYXJyYXlkLAogCQkvKiBBcHBseSB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiB0byBzb3VyY2Ug ZWxlbWVudCAqLwogCQl2YWx1ZXNbaV0gPSBFeGVjRXZhbEV4cHIoZXhwcnN0YXRlLCBlY29udGV4 dCwgJm51bGxzW2ldKTsKIAorCQkvKiBFeGl0IGVhcmx5IGlmIGV2YWx1YXRpb24gZmFpbGVkICov CisJCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGV4cHJzdGF0ZS0+ZXNjb250ZXh0KSkKKwkJewor CQkJcGZyZWUodmFsdWVzKTsKKwkJCXBmcmVlKG51bGxzKTsKKworCQkJcmV0dXJuIChEYXR1bSkg MDsKKwkJfQorCiAJCWlmIChudWxsc1tpXSkKIAkJCWhhc251bGxzID0gdHJ1ZTsKIAkJZWxzZQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDg4ZGU1YzA0ODFjLi4yZTQ3ZWMyMTg1NSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTExMTQsNiArMTExMTQsMzEgQEAgZ2V0 X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQl9CiAJ CQlicmVhazsKIAorCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlw ZUNhc3RFeHByICpzdGNleHByID0gY2FzdE5vZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisK KwkJCQkvKgorCQkJCSAqIENhbm5vdCBkZXBhcnNlIGNhc3RleHByIGRpcmVjdGx5LCBiZWN1YXNl IHRyYW5zZm9ybVR5cGVDYXN0CisJCQkJICogbWF5IGhhdmUgYWxyZWFkeSBjb25zdGFudC1mb2xk ZWQgdGhlIGNhc3QgZXhwcmVzc2lvbiBpbnRvIGEKKwkJCQkgKiBjb25zdGFudC4gSW5zdGVhZCwg dXNlICJzb3VyY2UiIGFuZCAiZGVmZXhwciIgdG8KKwkJCQkgKiByZWNvbnN0cnVjdCB0aGUgQ0FT VCBERUZBVUxUIGNsYXVzZS4KKwkJCQkgKi8KKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1 ZiwgIkNBU1QoIik7CisJCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBzdGNleHByLT5zb3VyY2Us IGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBB UyAlcyAiLAorCQkJCQkJCQkgZm9ybWF0X3R5cGVfd2l0aF90eXBlbW9kKHN0Y2V4cHItPnJlc3Vs dHR5cGUsCisJCQkJCQkJCQkJCQkJCSAgc3RjZXhwci0+cmVzdWx0dHlwbW9kKSk7CisKKwkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkRFRkFVTFQgIik7CisKKwkJCQlnZXRfcnVsZV9l eHByKChOb2RlICopIHN0Y2V4cHItPmRlZmV4cHIsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisK KwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBPTiBDT05WRVJTSU9OIEVSUk9SKSIp OworCQkJfQorCQkJYnJlYWs7CisKIAkJY2FzZSBUX0pzb25FeHByOgogCQkJewogCQkJCUpzb25F eHByICAgKmpleHByID0gKEpzb25FeHByICopIG5vZGU7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApp bmRleCBjNjFiM2Q2MjRkNS4uZmFmNjk3NmIwNDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApA QCAtMjY1LDYgKzI2NSw3IEBAIHR5cGVkZWYgZW51bSBFeHByRXZhbE9wCiAJRUVPUF9YTUxFWFBS LAogCUVFT1BfSlNPTl9DT05TVFJVQ1RPUiwKIAlFRU9QX0lTX0pTT04sCisJRUVPUF9TQUZFVFlQ RV9DQVNULAogCUVFT1BfSlNPTkVYUFJfUEFUSCwKIAlFRU9QX0pTT05FWFBSX0NPRVJDSU9OLAog CUVFT1BfSlNPTkVYUFJfQ09FUkNJT05fRklOSVNILApAQCAtNzU0LDYgKzc1NSwxMiBAQCB0eXBl ZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAKIAkJCUpzb25Jc1ByZWRpY2F0ZSAqcHJlZDsJLyogb3Jp Z2luYWwgZXhwcmVzc2lvbiBub2RlICovCiAJCX0JCQlpc19qc29uOwogCisJCS8qIGZvciBFRU9Q X1NBRkVUWVBFX0NBU1QgKi8KKwkJc3RydWN0CisJCXsKKwkJCXN0cnVjdCBTYWZlVHlwZUNhc3RT dGF0ZSAqc3Rjc3RhdGU7CisJCX0JCQlzdGNleHByOworCiAJCS8qIGZvciBFRU9QX0pTT05FWFBS X1BBVEggKi8KIAkJc3RydWN0CiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IDY1MGJh YWIzZWZjLi4zM2JiZGJmZWZmYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0zMzIsNiAr MzMyLDcgQEAgRXhlY1Byb2NOb2RlKFBsYW5TdGF0ZSAqbm9kZSkKICAqIHByb3RvdHlwZXMgZnJv bSBmdW5jdGlvbnMgaW4gZXhlY0V4cHIuYwogICovCiBleHRlcm4gRXhwclN0YXRlICpFeGVjSW5p dEV4cHIoRXhwciAqbm9kZSwgUGxhblN0YXRlICpwYXJlbnQpOworZXh0ZXJuIEV4cHJTdGF0ZSAq RXhlY0luaXRFeHByV2l0aENvbnRleHQoRXhwciAqbm9kZSwgUGxhblN0YXRlICpwYXJlbnQsIE5v ZGUgKmVzY29udGV4dCk7CiBleHRlcm4gRXhwclN0YXRlICpFeGVjSW5pdEV4cHJXaXRoUGFyYW1z KEV4cHIgKm5vZGUsIFBhcmFtTGlzdEluZm8gZXh0X3BhcmFtcyk7CiBleHRlcm4gRXhwclN0YXRl ICpFeGVjSW5pdFF1YWwoTGlzdCAqcXVhbCwgUGxhblN0YXRlICpwYXJlbnQpOwogZXh0ZXJuIEV4 cHJTdGF0ZSAqRXhlY0luaXRDaGVjayhMaXN0ICpxdWFsLCBQbGFuU3RhdGUgKnBhcmVudCk7CkBA IC0zODAsNiArMzgxLDcgQEAgZXh0ZXJuIFByb2plY3Rpb25JbmZvICpFeGVjQnVpbGRVcGRhdGVQ cm9qZWN0aW9uKExpc3QgKnRhcmdldExpc3QsCiAJCQkJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3Qg KnNsb3QsCiAJCQkJCQkJCQkJCQkgUGxhblN0YXRlICpwYXJlbnQpOwogZXh0ZXJuIEV4cHJTdGF0 ZSAqRXhlY1ByZXBhcmVFeHByKEV4cHIgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlKTsKK2V4dGVybiBF eHByU3RhdGUgKkV4ZWNQcmVwYXJlRXhwcldpdGhDb250ZXh0KEV4cHIgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBOb2RlICplc2NvbnRleHQpOwogZXh0ZXJuIEV4cHJTdGF0ZSAqRXhlY1ByZXBhcmVR dWFsKExpc3QgKnF1YWwsIEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiBFeHByU3RhdGUgKkV4ZWNQ cmVwYXJlQ2hlY2soTGlzdCAqcXVhbCwgRVN0YXRlICplc3RhdGUpOwogZXh0ZXJuIExpc3QgKkV4 ZWNQcmVwYXJlRXhwckxpc3QoTGlzdCAqbm9kZXMsIEVTdGF0ZSAqZXN0YXRlKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKaW5kZXggNTNjMTM4MzEwZGIuLjJkYzk1YWFhYTMzIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaApAQCAtMTA5Niw2ICsxMDk2LDI3IEBAIHR5cGVkZWYgc3RydWN0IERvbWFpbkNvbnN0cmFp bnRTdGF0ZQogCUV4cHJTdGF0ZSAgKmNoZWNrX2V4cHJzdGF0ZTsJLyogY2hlY2tfZXhwcidzIGV2 YWwgc3RhdGUsIG9yIE5VTEwgKi8KIH0gRG9tYWluQ29uc3RyYWludFN0YXRlOwogCit0eXBlZGVm IHN0cnVjdCBTYWZlVHlwZUNhc3RTdGF0ZQoreworCVNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHI7 CisKKwkvKgorCSAqIFRoZSBqdW1wIHRhcmdldCB1c2VkIHRvIHNraXAgYWxsIHJlbWFpbmluZyBz dGVwcyB3aGVuIHRoZSBkZWZhdWx0CisJICogZXhwcmVzc2lvbiBldmFsdWF0aW9uIGlzIGJ5cGFz c2VkLgorCSAqLworCWludAkJCWp1bXBfZW5kOworCisJLyoKKwkgKiBFcnJvci1zYWZlIGNvbnRl eHQgZm9yIHR5cGUgY29lcmNpb24gZXZhbHVhdGlvbi4gQSBwb2ludGVyIHRvIHRoaXMgaXMKKwkg KiBwYXNzZWQgdG8gRXhlY0luaXRFeHByUmVjKCkgZHVyaW5nIHR5cGUgY29lcmNpb24gZXhwcmVz c2lvbgorCSAqIGluaXRpYWxpemF0aW9uIChzZWUgRXhlY0luaXRTYWZlVHlwZUNhc3RFeHByKS4K KwkgKgorCSAqIEF0IHJ1bnRpbWUsIHRoaXMgaXMgcmVzZXQgYmVmb3JlIGVhY2ggZXZhbHVhdGlv biBvZiBFRU9QX1NBRkVUWVBFX0NBU1QuCisJICovCisJRXJyb3JTYXZlQ29udGV4dCBlc2NvbnRl eHQ7CisKK30gU2FmZVR5cGVDYXN0U3RhdGU7CisKIC8qCiAgKiBTdGF0ZSBmb3IgSnNvbkV4cHIg ZXZhbHVhdGlvbiwgdG9vIGJpZyB0byBpbmxpbmUuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmlu ZGV4IDQxMzNjNDA0YTZiLi42NDFmZjI5YzZkNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAt NDAyLDYgKzQwMiw3IEBAIHR5cGVkZWYgc3RydWN0IFR5cGVDYXN0CiAJTm9kZVRhZwkJdHlwZTsK IAlOb2RlCSAgICphcmc7CQkJLyogdGhlIGV4cHJlc3Npb24gYmVpbmcgY2FzdGVkICovCiAJVHlw ZU5hbWUgICAqdHlwZU5hbWU7CQkvKiB0aGUgdGFyZ2V0IHR5cGUgKi8KKwlOb2RlCSAgICpkZWZl eHByOwkJLyogREVGQVVMVCBleHByZXNzaW9uICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0 b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBUeXBlQ2FzdDsKIApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9w cmltbm9kZXMuaAppbmRleCBiYjA1YWVlYmVlNC4uYmI0Y2MzN2VmOWMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oCkBAIC03NjAsNiArNzYwLDQwIEBAIHR5cGVkZWYgZW51bSBDb2VyY2lvbkZvcm0KIAlD T0VSQ0VfU1FMX1NZTlRBWCwJCQkvKiBkaXNwbGF5IHdpdGggU1FMLW1hbmRhdGVkIHNwZWNpYWwg c3ludGF4ICovCiB9IENvZXJjaW9uRm9ybTsKIAorLyoKKyAqIFNhZmVUeXBlQ2FzdEV4cHIgLQor ICoJCVRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mCisgKiAJCUNBU1QoZXhwciBBUyB0eXBl bmFtZSBERUZBVUxUIGV4cHIgT04gQ09OVkVSU0lPTiBFUlJPUikKKyAqLwordHlwZWRlZiBzdHJ1 Y3QgU2FmZVR5cGVDYXN0RXhwcgoreworCUV4cHIJCXhwcjsKKworCS8qCisJICogVGhlIHRyYW5z Zm9ybWVkIHNvdXJjZSBleHByZXNzaW9uLgorCSAqCisJICogQ2FzZXMgbGlrZSBgYENBU1QoMSBB UyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKWBgIHdoZXJlCisJICogdGhl IGNhc3RleHByIGV2YWx1YXRlcyB0byBOVUxMLCB3ZSBuZWVkIHRoaXMgZmllbGQgdG8gcmVjb25z dHJ1Y3QgdGhlCisJICogb3JpZ2luYWwgcXVlcnkuCisJICovCisJRXhwcgkgICAqc291cmNlOwor CisJLyoKKwkgKiB0cmFuc2Zvcm1lZCBjYXN0IGV4cHJlc3Npb24sIE5VTEwgbWVhbnMgY2Fubm90 IGNvZXJjZSB0byB0YXJnZXQgdHlwZQorCSAqLworCUV4cHIJICAgKmNhc3RleHByIHBnX25vZGVf YXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwkvKiBGYWxsLWJhY2sgdG8gdGhlIGRlZmF1bHQg ZXhwcmVzc2lvbiBpZiBjYXN0IGV2YWx1YXRpb24gZmFpbHMgKi8KKwlFeHByCSAgICpkZWZleHBy OworCS8qIHRhcmdldCB0eXBlIE9pZCAqLworCU9pZAkJCXJlc3VsdHR5cGU7CisJLyogdGFyZ2V0 IHR5cGUgbW9kaWZpZXIgKi8KKwlpbnQzMgkJcmVzdWx0dHlwbW9kOworCS8qIE9JRCBvZiBjb2xs YXRpb24sIG9yIEludmFsaWRPaWQgaWYgbm9uZSAqLworCU9pZAkJCXJlc3VsdGNvbGxpZDsKKwkv KiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworCVBhcnNlTG9jCWxvY2F0aW9u OworfSBTYWZlVHlwZUNhc3RFeHByOworCiAvKgogICogRnVuY0V4cHIgLSBleHByZXNzaW9uIG5v ZGUgZm9yIGEgZnVuY3Rpb24gY2FsbAogICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvb3B0aW1pemVyLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKaW5k ZXggY2I2MjQxZTJiZGQuLmZiODFlZDZlNTUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvb3B0aW1pemVyLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5o CkBAIC0xNTEsNyArMTUxLDcgQEAgZXh0ZXJuIHZvaWQgY29udmVydF9zYW9wX3RvX2hhc2hlZF9z YW9wKE5vZGUgKm5vZGUpOwogZXh0ZXJuIE5vZGUgKmVzdGltYXRlX2V4cHJlc3Npb25fdmFsdWUo UGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUpOwogCiBleHRlcm4gRXhwciAqZXZhbHVhdGVf ZXhwcihFeHByICpleHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90eXBtb2QsCi0J CQkJCQkgICBPaWQgcmVzdWx0X2NvbGxhdGlvbik7CisJCQkJCQkgICBPaWQgcmVzdWx0X2NvbGxh dGlvbiwgTm9kZSAqZXNjb250ZXh0KTsKIAogZXh0ZXJuIGJvb2wgdmFyX2lzX25vbm51bGxhYmxl KFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhciwKIAkJCQkJCQkgICBOb3ROdWxsU291cmNlIHNv dXJjZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmggYi9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmgKaW5kZXggYWFiYWNkNDliNjUuLjEyNjQ0 ZjE0NmJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmgKKysr IGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NvZXJjZS5oCkBAIC00MywxNSArNDMsMjkgQEAg ZXh0ZXJuIE5vZGUgKmNvZXJjZV90b190YXJnZXRfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkJCSAgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwKIAkJCQkJCQkJICAgQ29lcmNpb25G b3JtIGNmb3JtYXQsCiAJCQkJCQkJCSAgIGludCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqY29l cmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkJ CQkJTm9kZSAqZXhwciwKKwkJCQkJCQkJCQkJT2lkIGV4cHJ0eXBlLAorCQkJCQkJCQkJCQlPaWQg dGFyZ2V0dHlwZSwKKwkJCQkJCQkJCQkJaW50MzIgdGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkJCQlD b2VyY2lvbkNvbnRleHQgY2NvbnRleHQsCisJCQkJCQkJCQkJCUNvZXJjaW9uRm9ybSBjZm9ybWF0 LAorCQkJCQkJCQkJCQlpbnQgbG9jYXRpb24sCisJCQkJCQkJCQkJCU5vZGUgKmVzY29udGV4dCk7 CiBleHRlcm4gYm9vbCBjYW5fY29lcmNlX3R5cGUoaW50IG5hcmdzLCBjb25zdCBPaWQgKmlucHV0 X3R5cGVpZHMsIGNvbnN0IE9pZCAqdGFyZ2V0X3R5cGVpZHMsCiAJCQkJCQkJQ29lcmNpb25Db250 ZXh0IGNjb250ZXh0KTsKIGV4dGVybiBOb2RlICpjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3Rh dGUsIE5vZGUgKm5vZGUsCiAJCQkJCQkgT2lkIGlucHV0VHlwZUlkLCBPaWQgdGFyZ2V0VHlwZUlk LCBpbnQzMiB0YXJnZXRUeXBlTW9kLAogCQkJCQkJIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwg Q29lcmNpb25Gb3JtIGNmb3JtYXQsIGludCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqY29lcmNl X3R5cGVfZXh0ZW5kZWQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAorCQkJCQkJCQkg IE9pZCBpbnB1dFR5cGVJZCwgT2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwZU1vZCwK KwkJCQkJCQkJICBDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0 LCBpbnQgbG9jYXRpb24sCisJCQkJCQkJCSAgTm9kZSAqZXNjb250ZXh0KTsKIGV4dGVybiBOb2Rl ICpjb2VyY2VfdG9fZG9tYWluKE5vZGUgKmFyZywgT2lkIGJhc2VUeXBlSWQsIGludDMyIGJhc2VU eXBlTW9kLAogCQkJCQkJCSAgT2lkIHR5cGVJZCwKIAkJCQkJCQkgIENvZXJjaW9uQ29udGV4dCBj Y29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsIGludCBsb2NhdGlvbiwKLQkJCQkJCQkgIGJv b2wgaGlkZUlucHV0Q29lcmNpb24pOworCQkJCQkJCSAgYm9vbCBoaWRlSW5wdXRDb2VyY2lvbiwK KwkJCQkJCQkgIE5vZGUgKmVzY29udGV4dCk7CiAKIGV4dGVybiBOb2RlICpjb2VyY2VfdG9fYm9v bGVhbihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCQkJCQkJICAgY29uc3QgY2hh ciAqY29uc3RydWN0TmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf bm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBmN2Y0YmE2YzJh OC4uNDcyNTY3Njk2ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2Rl LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtNjgsNiArNjgsOCBA QCB0eXBlZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9WQUxVRVNfU0lOR0xFLAkv KiBzaW5nbGUtcm93IFZBTFVFUyAoaW4gSU5TRVJUIG9ubHkpICovCiAJRVhQUl9LSU5EX0NIRUNL X0NPTlNUUkFJTlQsIC8qIENIRUNLIGNvbnN0cmFpbnQgZm9yIGEgdGFibGUgKi8KIAlFWFBSX0tJ TkRfRE9NQUlOX0NIRUNLLAkJLyogQ0hFQ0sgY29uc3RyYWludCBmb3IgYSBkb21haW4gKi8KKwlF WFBSX0tJTkRfQ0FTVF9ERUZBVUxULAkJLyogZGVmYXVsdCBleHByZXNzaW9uIGluIENBU1QgREVG QVVMVCBPTgorCQkJCQkJCQkgKiBDT05WRVJTSU9OIEVSUk9SICovCiAJRVhQUl9LSU5EX0NPTFVN Tl9ERUZBVUxULAkvKiBkZWZhdWx0IHZhbHVlIGZvciBhIHRhYmxlIGNvbHVtbiAqLwogCUVYUFJf S0lORF9GVU5DVElPTl9ERUZBVUxULCAvKiBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBmb3IgZnVu Y3Rpb24gKi8KIAlFWFBSX0tJTkRfSU5ERVhfRVhQUkVTU0lPTiwgLyogaW5kZXggZXhwcmVzc2lv biAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3R5cGUuaCBiL3NyYy9p bmNsdWRlL3BhcnNlci9wYXJzZV90eXBlLmgKaW5kZXggYTMzNTgwN2IwYjAuLmUzMDNhMTA3M2Mx IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oCisrKyBiL3NyYy9p bmNsdWRlL3BhcnNlci9wYXJzZV90eXBlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgZXh0ZXJuIGNoYXIg KnR5cGVUeXBlTmFtZShUeXBlIHQpOwogZXh0ZXJuIE9pZAl0eXBlVHlwZVJlbGlkKFR5cGUgdHlw KTsKIGV4dGVybiBPaWQJdHlwZVR5cGVDb2xsYXRpb24oVHlwZSB0eXApOwogZXh0ZXJuIERhdHVt IHN0cmluZ1R5cGVEYXR1bShUeXBlIHRwLCBjaGFyICpzdHJpbmcsIGludDMyIGF0dHR5cG1vZCk7 CitleHRlcm4gYm9vbCBzdHJpbmdUeXBlRGF0dW1TYWZlKFR5cGUgdHAsIGNoYXIgKnN0cmluZywg aW50MzIgYXR0dHlwbW9kLAorCQkJCQkJCQlOb2RlICplc2NvbnRleHQsIERhdHVtICpyZXN1bHQp OwogCiBleHRlcm4gT2lkCXR5cGVpZFR5cGVSZWxpZChPaWQgdHlwZV9pZCk7CiBleHRlcm4gT2lk CXR5cGVPckRvbWFpblR5cGVSZWxpZChPaWQgdHlwZV9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9j YXN0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDBhZmNlMmJj OTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0 CkBAIC0wLDAgKzEsMTE4NSBAQAorU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0cyA9IDA7CitTRVQgbGNf bW9uZXRhcnkgVE8gIkMiOworLS0gQ0FTVCBERUZBVUxUIE9OIENPTlZFUlNJT04gRVJST1IKK1NF TEVDVCBDQVNUKEInMDEnIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworIGRhdGUgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoQklUJzAxJyBBUyBk YXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBkYXRlIAorLS0tLS0tCisg CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKFRSVUUgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CisgZGF0ZSAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FT VCgxLjEgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZGF0ZSAK Ky0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxIEFTIGRhdGUgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOworIGRhdGUgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VM RUNUIENBU1QoMTExMSBBUyAiY2hhciIgREVGQVVMVCAnQScgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgY2hhciAKKy0tLS0tLQorIEEKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ2RlZic6OnRleHQg QVMgaW50ZWdlciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50NCAKKy0t LS0tLQorICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzInOjpqc29uYiBBUyB0ZXh0IERF RkFVTFQgJ2ZhbGxiYWNrJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyB0ZXh0IAorLS0tLS0tCisg MgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnMScgQ09MTEFURSAiQyIgfHwgJ2gnIEFTIHRleHQg REVGQVVMVCAnZmFsbGJhY2snIE9OIENPTlZFUlNJT04gRVJST1IpOworIHRleHQgCistLS0tLS0K KyAxaAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChjb25jYXQoJzEnIGNvbGxhdGUgIkMiLCAnaCcp IEFTIGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgY29uY2F0IAorLS0t LS0tLS0KKyAgICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1QoNjU1MzYgQVMgaW50MiBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50MiAKKy0tLS0tLQorICAgICAKKygx IHJvdykKKworU0VMRUNUIENBU1QoaW50OCg2NTUzNikgQVMgaW50MiBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CisgaW50OCAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworLS0g c291cmNlIGV4cHJlc3Npb24gaXMgYSB1bmtub3duIGNvbnN0CitWQUxVRVMgKENBU1QoJ2Vycm9y JyBBUyBpbnRlZ2VyIEVSUk9SIE9OIENPTlZFUlNJT04gRVJST1IpKTsgLS0gZXJyb3IKK0VSUk9S OiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImVycm9yIgorTElORSAx OiBWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIEVSUk9SIE9OIENPTlZFUlNJT04gRVJS T1IpKTsKKyAgICAgICAgICAgICAgICAgICAgIF4KK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGlu dGVnZXIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpKTsKKyBjb2x1bW4xIAorLS0t LS0tLS0tCisgICAgICAgIAorKDEgcm93KQorCitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRl Z2VyIERFRkFVTFQgNDIgT04gQ09OVkVSU0lPTiBFUlJPUikpOworIGNvbHVtbjEgCistLS0tLS0t LS0KKyAgICAgIDQyCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAx OCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ0IAorLS0tLS0tCisgICAxOAorKDEgcm93KQor CitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgc3VtKDEpIE9OIENPTlZFUlNJT04gRVJS T1IpOyAtLSBlcnJvcgorRVJST1I6ICBhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dl ZCBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbnMKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFz IGludCBERUZBVUxUIHN1bSgxKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVM VCBzdW0oMSkgb3ZlcigpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICB3 aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lv bnMKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHN1bSgxKSBvdmVyKCkg T04gQ09OVkVSU0lPTiBFLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgKFNFTEVDVCBOVUxMKSBPTiBDT05W RVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBD QVNUIERFRkFVTFQgZXhwcmVzc2lvbgorTElORSAxOiBTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERF RkFVTFQgKFNFTEVDVCBOVUxMKSBPTiBDT05WRVJTSU9OIEUuLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAn YicgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGludmFsaWQgaW5wdXQg c3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJiIgorTElORSAxOiBTRUxFQ1QgQ0FTVCgnYScgYXMg aW50IERFRkFVTFQgJ2InIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIENBU1QoJ2EnOjppbnQgYXMgaW50IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgaW52YWxpZCBp bnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImEiCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdh Jzo6aW50IGFzIGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUi4uLgorICAgICAg ICAgICAgICAgICAgICBeCistLSB0aGUgZGVmYXVsdCBleHByZXNzaW9u4oCZcyBjb2xsYXRpb24g c2hvdWxkIG1hdGNoIHRhcmdldCB0eXBlIGNvbGxhdGlvbgorVkFMVUVTIChDQVNUKCdlcnJvcicg QVMgdGV4dCBERUZBVUxUICcxJyBDT0xMQVRFICJDIiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CitF UlJPUjogIGNvbGxhdGlvbiBvZiBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbiBjb25mbGljdHMgd2l0 aCB0YXJnZXQgdHlwZSBjb2xsYXRpb24KK0xJTkUgMTogVkFMVUVTIChDQVNUKCdlcnJvcicgQVMg dGV4dCBERUZBVUxUICcxJyBDT0xMQVRFICJDIiBPTiBDT05WLi4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICAiQyIgdmVyc3VzICJkZWZh dWx0IgorVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50MnZlY3RvciBERUZBVUxUICcxIDMnICBP TiBDT05WRVJTSU9OIEVSUk9SKSk7CisgY29sdW1uMSAKKy0tLS0tLS0tLQorIDEgMworKDEgcm93 KQorCitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnQydmVjdG9yW10gREVGQVVMVCAnezEgM30n ICBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CisgY29sdW1uMSAKKy0tLS0tLS0tLQorIHsiMSAzIn0K KygxIHJvdykKKworLS0gc291cmNlIGV4cHJlc3Npb24gY29udGFpbiBzdWJxdWVyeQorU0VMRUNU IENBU1QoKFNFTEVDVCBiIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEpLCAoVkFMVUVTKCdIJykp IHMoYikpCisgICAgICAgICAgICBBUyBpbnQydmVjdG9yW10gREVGQVVMVCAnezEgM30nICBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyAgICBiICAgIAorLS0tLS0tLS0tCisgeyIxIDMifQorKDEgcm93 KQorCitTRUxFQ1QgQ0FTVCgoU0VMRUNUIEFSUkFZKChTRUxFQ1QgYiBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAyKSBnLCAoVkFMVUVTKCdIJykpIHMoYikpKSkKKyAgICAgICAgICAgIEFTIElOVFtd CisgICAgICAgICAgICBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkg CistLS0tLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBGVU5DVElPTiByZXRfaW50OCgpIFJFVFVS TlMgQklHSU5UIEFTCiskJAorQkVHSU4gUkVUVVJOIDIxNDc0ODM2NDg7IEVORDsKKyQkCitMQU5H VUFHRSBwbHBnc3FsIElNTVVUQUJMRTsKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCBy ZXRfaW50OCgpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBpbnRlZ2Vy IG91dCBvZiByYW5nZQorU0VMRUNUIENBU1QoJ2EnIGFzIGRhdGUgREVGQVVMVCByZXRfaW50OCgp IE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBjYW5ub3QgY29lcmNlIENB U1QgREVGQVVMVCBleHByZXNzaW9uIHRvIHR5cGUgZGF0ZQorTElORSAxOiBTRUxFQ1QgQ0FTVCgn YScgYXMgZGF0ZSBERUZBVUxUIHJldF9pbnQ4KCkgT04gQ09OVkVSU0lPTiBFUlIuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBERUZBVUxUIGV4cHJlc3Np b24gY2Fubm90IGJlIHNldC1yZXR1cm5pbmcKK0NSRUFURSBGVU5DVElPTiByZXRfc2V0aW50KCkg UkVUVVJOUyBTRVRPRiBpbnRlZ2VyIEFTCiskJAorQkVHSU4gUkVUVVJOIFFVRVJZIEVYRUNVVEUg J3NlbGVjdCAxIHVuaW9uIGFsbCBzZWxlY3QgMSc7IEVORDsKKyQkCitMQU5HVUFHRSBwbHBnc3Fs IElNTVVUQUJMRTsKK0NSRUFURSBUQUJMRSB0Y2FzdDAoYSBJTlQsIGIgaW50KTsKK0lOU0VSVCBJ TlRPIHRjYXN0MCBWQUxVRVMoMSwyKSwgKDY1NTM2LDMpOworU0VUIGppdF9hYm92ZV9jb3N0ID0g MDsKK1NFTEVDVCBDQVNUKGEgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgRlJPTSB0Y2FzdDA7CisgYSAKKy0tLQorIDEKKyAgCisoMiByb3dzKQorCitTRVQgaml0X2Fi b3ZlX2Nvc3QgVE8gREVGQVVMVDsKK1NFTEVDVCBDQVNUKGEgQVMgaW50MiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDA7CisgYSAKKy0tLQorIDEKKyAgCisoMiBy b3dzKQorCitTRUxFQ1QgQ0FTVChST1coMSwyKSBBUyB0Y2FzdDAgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QwIGFzIHQ7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5 cGUgcmVjb3JkIHRvIHRjYXN0MCB3aXRoIERFRkFVTFQgZXhwcmVzc2lvbiBpbiBDQVNUIC4uLiBP TiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKFJPVygxLDIpIEFTIHRjYXN0 MCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUi4uLgorICAgICAgICAgICAgICAgICAgICBe CitERVRBSUw6ICBFeHBsaWNpdCBjYXN0IGlzIGRlZmluZWQgYnV0IGRlZmluaXRpb24gaXMgbm90 IGVycm9yIHNhZmUuCitEUk9QIFRBQkxFIHRjYXN0MDsKK1NFTEVDVCBDQVNUKDEyLjExMSBhcyBu dW1lcmljKDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1l cmljX3NjYWxlOworIHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAxMi4xCisoMSByb3cpCisKK0NSRUFURSBUQUJMRSB0Y2FzdChhIHRleHRbXSwgYiBp bnQgR0VORVJBVEVEIEJZIERFRkFVTFQgQVMgSURFTlRJVFkpOworSU5TRVJUIElOVE8gdGNhc3Qg VkFMVUVTICgnezEyfScpLCAoJ3sxLGEsIGJ9JyksICgne3sxLDJ9LCB7YyxkfX0nKSwgKCd7MTN9 Jyk7CitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgcmV0X3NldGludCgpIE9OIENPTlZF UlNJT04gRVJST1IpIEZST00gdGNhc3Q7IC0tIGVycm9yCitFUlJPUjogIHNldC1yZXR1cm5pbmcg ZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbnMKK0xJ TkUgMTogU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHJldF9zZXRpbnQoKSBPTiBDT05W RVJTSU9OIEVSLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitT RUxFQ1QgQ0FTVCh0IEFTIHRleHRbXSBERUZBVUxUICd7MjEsMjIsICcgfHwgYiB8fCAnfScgT04g Q09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdCBhcyB0OworICAgICB0ICAgICAKKy0tLS0tLS0t LS0tCisgezIxLDIyLDF9CisgezIxLDIyLDJ9CisgezIxLDIyLDN9CisgezIxLDIyLDR9CisoNCBy b3dzKQorCitTRUxFQ1QgQ0FTVCh0LmEgQVMgaW50W10gREVGQVVMVCAnezIxLDIyfSc6OmludFtd IHx8IGIgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdCBhcyB0OworICAgICBhICAgICAK Ky0tLS0tLS0tLS0tCisgezEyfQorIHsyMSwyMiwyfQorIHsyMSwyMiwzfQorIHsxM30KKyg0IHJv d3MpCisKK0NSRUFURSBET01BSU4gZGRvbWFpbiBBUyBudW1lcmljIENIRUNLICgoMS8gKFZBTFVF IC0gMSkpID4gMCk7CitTRUxFQ1QgQ0FTVCAoJzEnIEFTIGRkb21haW4gREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvCitTRUxFQ1QgQ0FT VCAoMSBBUyBkZG9tYWluIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK0VSUk9S OiAgZGl2aXNpb24gYnkgemVybworQ1JFQVRFIFZJRVcgdmRkb21haW4gQVMgU0VMRUNUIENBU1Qg KDEgQVMgZGRvbWFpbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Citcc3YgdmRk b21haW4KK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnZkZG9tYWluIEFTCisgU0VMRUNU IENBU1QoMSBBUyBkZG9tYWluIERFRkFVTFQgTlVMTDo6bnVtZXJpYzo6ZGRvbWFpbiBPTiBDT05W RVJTSU9OIEVSUk9SKSBBUyBkZG9tYWluCitEUk9QIFZJRVcgdmRkb21haW47CistLSBUZXN0IG5l c3RlZCB0eXBlIGNhc3RzOyBhbGwgc3ViLWV4cHJlc3Npb25zIHdpbGwgYmUgZXZhbHVhdGVkIGlu IGFuIGVycm9yLXNhZmUgbWFubmVyIHRvby4KK0NSRUFURSBET01BSU4gZF9ub3RhIEFTIHRleHQg Q0hFQ0sgKFZBTFVFIDw+ICdhJyk7CitDUkVBVEUgVEFCTEUgdGNhc3QxKGEgdGV4dCwgYiB0ZXh0 W10sIGMgaW50LCBkIGludDgsIGUgaW50OFtdKTsKK0lOU0VSVCBJTlRPIHRjYXN0MShhLCBiLCBk LCBlKSB2YWx1ZXMoJ2EnLCAne2F9JywgMjE0NzQ4MzY0OCwgJ3syMTQ3NDgzNjQ4fScpOworU0VM RUNUIENBU1QgKENBU1QoYSBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIEZST00gdGNhc3QxOworIGEgCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENB U1QgKENBU1QoJ2EnIEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgRlJPTSB0Y2FzdDE7ICAtLSBlcnJvcgorRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRh eCBmb3IgdHlwZSBpbnRlZ2VyOiAiYSIKK0xJTkUgMTogU0VMRUNUIENBU1QgKENBU1QoJ2EnIEFT IGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSLi4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK1NFTEVDVCBDQVNUIChDQVNUKCdhJzo6dGV4dCBBUyBpbnQpIEFTIHRleHQg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOyAtLSBvaworIHRl eHQgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QgKENBU1QoYSBBUyBkX25vdGEp IEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOwor IGEgCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QgKENBU1QoJ2EnIEFTIGRfbm90YSkg QVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7Cisg dGV4dCAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVChkIEFTIGludCkg QVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7Cisg ZCAKKy0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVCgnMjE0NzQ4MzY0OCc6Omlu dDggQVMgaW50KSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9N IHRjYXN0MTsKKyB0ZXh0IAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUIChDQVNU KCd7YX0nOjp0ZXh0W10gQVMgaW50W10pIEFTIHRleHRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgdGV4dCAKKy0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCAoQ0FTVChiIEFTIGludFtdKSBBUyB0ZXh0W10gREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworIGIgCistLS0KKyAKKygxIHJvdykKKworU0VM RUNUIENBU1QgKENBU1QoYiBBUyBkX25vdGFbXSkgQVMgdGV4dFtdIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyBiIAorLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCBDQVNUIChDQVNUKGUgQVMgaW50W10pIEFTIHRleHRbXSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgZSAKKy0tLQorIAorKDEgcm93KQorCistLSB0 ZXN0IG5lc3RlZCBBcnJheUNvZXJjZUV4cHIgY29uc3RhbnQgZm9sZGluZworU0VMRUNUIENBU1Qo J3thfSc6OnRleHRbXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg RlJPTSB0Y2FzdDE7CisgaW50NCAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChD QVNUKCd7YX0nOjp0ZXh0W10gQVMgZGF0ZVtdKSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgaW50NCAKKy0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgQ0FTVCgoJ3snIHx8IHN1bSgxICsgMikgfHwgJ30nKTo6aW50W10gQVMgaW50W10g REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gKFZBTFVFUyAoMSksICgyKSkg c3ViOworIGludDQgCistLS0tLS0KKyB7Nn0KKygxIHJvdykKKworU0VMRUNUIENBU1QoKCd7JyB8 fCBzdW0oMSArIDIpIE9WRVIgKCkgfHwgJ30nKTo6aW50W10gQVMgaW50W10gREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gKFZBTFVFUyAoMSksICgyKSkgc3ViOworIGludDQg CistLS0tLS0KKyB7Nn0KKyB7Nn0KKygyIHJvd3MpCisKKy0tIHRlc3Qgd2l0aCB1c2VyLWRlZmlu ZWQgdHlwZSwgZG9tYWluLCBhcnJheSBvdmVyIGRvbWFpbiwgZG9tYWluIG92ZXIgYXJyYXkKK0NS RUFURSBET01BSU4gZF9pbnQ0MiBhcyBpbnQgY2hlY2sgKHZhbHVlID0gNDIpIE5PVCBOVUxMOwor Q1JFQVRFIERPTUFJTiBkX2ludDQyYXJyIGFzIGRfaW50NDJbXTsKK0NSRUFURSBET01BSU4gZF9p bnQ0MmFycjEgYXMgZF9pbnQ0MmFycjsKK0NSRUFURSBET01BSU4gZF9pbnQ4IGFzIGludDggY2hl Y2sgKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlOIGRfaW50OGFyciBhcyBkX2ludDhbXTsKK0NS RUFURSBET01BSU4gZF9jaGFyM19ub3RfbnVsbCBhcyBjaGFyKDMpIE5PVCBOVUxMOworQ1JFQVRF IERPTUFJTiBkX3ZhcmNoYXIgYXMgdmFyY2hhcigzKSBOT1QgTlVMTDsKK0NSRUFURSBET01BSU4g ZF9pbnRfYXJyIGFzIGludFtdIGNoZWNrICh2YWx1ZSA9ICd7NDEsIDQzfScpIE5PVCBOVUxMOwor Q1JFQVRFIFRZUEUgY29tcF9kb21haW5fd2l0aF90eXBtb2QgQVMgKGEgZF9jaGFyM19ub3RfbnVs bCwgYiBpbnQpOworQ1JFQVRFIFRZUEUgY29tcDIgQVMgKGEgZF92YXJjaGFyKTsKK0NSRUFURSBE T01BSU4gZF9udW1lcmljIGFzIG51bWVyaWMoNCw0KTsKK1NFTEVDVCBDQVNUKDEuMDo6ZmxvYXQ0 IEFTIGRfbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZF9udW1l cmljIAorLS0tLS0tLS0tLS0KKyAgICAgICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ3sx LjB9JyBBUyBudW1lcmljKDQsMSlbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgbnVtZXJpYyAKKy0tLS0tLS0tLQorIHsxLjB9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCd7 MC4xLCAxLjB9JyBBUyBkX251bWVyaWNbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CisgZF9udW1lcmljIAorLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1Qo MTEgQVMgZF9pbnQ0MiBERUZBVUxUIDQxIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgor RVJST1I6ICB2YWx1ZSBmb3IgZG9tYWluIGRfaW50NDIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWlu dCAiZF9pbnQ0Ml9jaGVjayIKK1NFTEVDVCBDQVNUKE5VTEwgQVMgZF9pbnQ0MiBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGRvbWFpbiBkX2ludDQy IGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitTRUxFQ1QgQ0FTVCgxMSBBUyBkX2ludDQyIERF RkFVTFQgNDIgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZF9pbnQ0MiAKKy0tLS0tLS0tLQorICAg ICAgNDIKKygxIHJvdykKKworU0VMRUNUIENBU1QoTlVMTCBBUyBkX2ludDQyIERFRkFVTFQgNDIg T04gQ09OVkVSU0lPTiBFUlJPUik7CisgZF9pbnQ0MiAKKy0tLS0tLS0tLQorICAgICAgNDIKKygx IHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBkX2ludDggREVG QVVMVCAnMScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0tCisgICAgIDEK KygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBkX2ludDhb XSBERUZBVUxUICd7MX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAorLS0tLS0tLQor IHs0Mn0KKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBk X2ludDhhcnIgREVGQVVMVCAnezF9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0t LS0tLS0KKyB7NDJ9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyXTo6ZF9pbnQ0MmFy cjEgQVMgZF9pbnQ4YXJyW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFy cmF5IAorLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChBUlJBWVs0Miw0MV0gQVMg ZF9pbnQ0MltdIERFRkFVTFQgJ3s0MiwgNDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgYXJy YXkgIAorLS0tLS0tLS0tCisgezQyLDQyfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChBUlJBWVs0 Miw0MV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgJ3s0MSwgNDN9JyBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyAgYXJyYXkgIAorLS0tLS0tLS0tCisgezQxLDQzfQorKDEgcm93KQorCitTRUxFQ1QgQ0FT VChBUlJBWVs0MiwgNDFdOjpkX2ludDQyYXJyMSBBUyBkX2ludDhhcnIgREVGQVVMVCAnezEsMiwz fScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGFycmF5ICAKKy0tLS0tLS0tLQorIHsxLDIsM30K KygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDIsIDQxXSBBUyBkX2ludDQyYXJyMSBERUZB VUxUICd7NDIsIDQyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGFycmF5ICAKKy0tLS0tLS0t LQorIHs0Miw0Mn0KKygxIHJvdykKKworU0VMRUNUIENBU1QoQ0FTVChBUlJBWVtDQVNUKEFSUkFZ WzQyLCA0Ml0gQVMgZF9pbnQ0MmFycildIEFTIGRfaW50NDJhcnIxW10pCisgICAgICAgICAgICBB UyBkX2ludDhhcnJbXQorICAgICAgICAgICAgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworICAgIGFycmF5ICAgIAorLS0tLS0tLS0tLS0tLQorIHsiezQyLDQyfSJ9CisoMSByb3cp CisKK1NFTEVDVCBDQVNUKCcoTlVMTCknIEFTIGNvbXAyIERFRkFVTFQgJygxMjMyKScgT04gQ09O VkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIHZhbHVlIHRvbyBsb25nIGZvciB0eXBl IGNoYXJhY3RlciB2YXJ5aW5nKDMpCitMSU5FIDE6IFNFTEVDVCBDQVNUKCcoTlVMTCknIEFTIGNv bXAyIERFRkFVTFQgJygxMjMyKScgT04gQ09OVkVSU0lPTi4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNUKCcoTlVMTCknIEFTIGNv bXAyIERFRkFVTFQgJygxMjMpJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBjb21wMiAKKy0tLS0t LS0KKyAoMTIzKQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKCw0MiknIEFTIGNvbXBfZG9tYWlu X3dpdGhfdHlwbW9kIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBjb21wX2Rv bWFpbl93aXRoX3R5cG1vZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUIENBU1QoJyhOVUxMLDQyKScgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVG QVVMVCAnKDEsMiknIE9OIENPTlZFUlNJT04gRVJST1IpOworIGNvbXBfZG9tYWluX3dpdGhfdHlw bW9kIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgiMSAgIiwyKQorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgnKE5VTEwsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxU ICcoMTIzNCwyKScgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIHZhbHVl IHRvbyBsb25nIGZvciB0eXBlIGNoYXJhY3RlcigzKQorTElORSAxOiAuLi5TVCgnKE5VTEwsNDIp JyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUICcoMTIzNCwyKScuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CitTRUxFQ1QgQ0FTVChST1coTlVMTCw0MikgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBjYW5ub3Qg Y2FzdCB0eXBlIHJlY29yZCB0byBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCB3aXRoIERFRkFVTFQg ZXhwcmVzc2lvbiBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVD VCBDQVNUKFJPVyhOVUxMLDQyKSBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUIC4u LgorICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBFeHBsaWNpdCBjYXN0IGlzIGRlZmlu ZWQgYnV0IGRlZmluaXRpb24gaXMgbm90IGVycm9yIHNhZmUuCistLSB0ZXN0IGFycmF5IGNvZXJj ZQorU0VMRUNUIENBU1QoYXJyYXlbJ2EnOjp0ZXh0XSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVD VCBDQVNUKGFycmF5WydhJ10gQVMgaW50W10gREVGQVVMVCBBUlJBWVsxXSBPTiBDT05WRVJTSU9O IEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyB7MX0KKygxIHJvdykKKworU0VMRUNUIENBU1Qo YXJyYXlbMTEuMTJdIEFTIGRhdGVbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgYXJyYXkgCistLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGFycmF5WzExMTEx MTExMTExMTExMTExXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgYXJyYXkgCistLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGFycmF5W1snYWJj J10sWzQ1Nl1dIEFTIGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBh cnJheSAKKy0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ3sxMjMsYWJjLDQ1Nn0n IEFTIGludFtdIERFRkFVTFQgJ3stNzg5fScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGludDQg IAorLS0tLS0tLS0KKyB7LTc4OX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJ3syMzQsZGVmLDU2 N30nOjp0ZXh0W10gQVMgaW50ZWdlcltdIERFRkFVTFQgJ3stMTAxMX0nIE9OIENPTlZFUlNJT04g RVJST1IpOworICBpbnQ0ICAgCistLS0tLS0tLS0KKyB7LTEwMTF9CisoMSByb3cpCisKK1NFTEVD VCBDQVNUKEFSUkFZW1snMSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGludFtdIERFRkFVTFQgJ3sx LDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyB7MSwyfQorKDEg cm93KQorCitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJywgJ2EnXV0gQVMg aW50W10gREVGQVVMVCAnezIxLDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGFycmF5ICAK Ky0tLS0tLS0tLQorIHsyMSwyMn0KKygxIHJvdykKKworLS0gZXJyb3I6IGB0aHJlZSc6OmludGAg d2lsbCBmYWlsIGVhcmxpZXIKK1NFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUn OjppbnQsICdhJ11dIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0nIE9OIENPTlZFUlNJT04gRVJS T1IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAidGhy ZWUiCitMSU5FIDE6IFNFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnOjppbnQs ICdhJ11dIEFTIGludFtdIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorU0VMRUNUIENBU1QoQVJSQVlbMSwgJ3RocmVlJzo6aW50XSBBUyBpbnRbXSBERUZBVUxU ICd7MjEsMjJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBz eW50YXggZm9yIHR5cGUgaW50ZWdlcjogInRocmVlIgorTElORSAxOiBTRUxFQ1QgQ0FTVChBUlJB WVsxLCAndGhyZWUnOjppbnRdIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0uLi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gc2FmZSBjYXN0IHdpdGggZ2VvbWV0cnkgZGF0YSB0 eXBlCitTRUxFQ1QgQ0FTVCgnKDEsMiknOjpwb2ludCBBUyBib3ggREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworICAgICBib3ggICAgIAorLS0tLS0tLS0tLS0tLQorICgxLDIpLCgx LDIpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdbKE5hTiwxKSwoTmFOLGluZmluaXR5KV0nOjps c2VnIEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgcG9p bnQgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyAoTmFOLEluZmluaXR5KQorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgnWygxZSszMDAsSW5maW5pdHkpLCgxZSszMDAsSW5maW5pdHkpXSc6OmxzZWcg QVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgIHBvaW50 ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxZSszMDAsSW5maW5pdHkpCisoMSByb3cp CisKK1NFTEVDVCBDQVNUKCdbKDEsMiksKDMsNCldJzo6cGF0aCBhcyBwb2x5Z29uIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBwb2x5Z29uIAorLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK1NFTEVDVCBDQVNUKCcoTmFOLDEuMCxOYU4saW5maW5pdHkpJzo6Ym94IEFTIHBvaW50 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgcG9pbnQgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0KKyAoTmFOLEluZmluaXR5KQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgn KDIuMCwyLjAsMC4wLDAuMCknOjpib3ggQVMgbHNlZyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgICAgIGxzZWcgICAgICAKKy0tLS0tLS0tLS0tLS0tLQorIFsoMiwyKSwoMCww KV0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJygyLjAsMi4wLDAuMCwwLjApJzo6Ym94IEFTIHBv bHlnb24gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICAgIHBvbHln b24gICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoKDAsMCksKDAsMiks KDIsMiksKDIsMCkpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLDIuMCwwLjAsMC4wKSc6 OmJveCBBUyBwYXRoIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBwYXRoIAor LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLGluZmluaXR5LE5hTixpbmZp bml0eSknOjpib3ggQVMgY2lyY2xlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK KyAgICAgICAgY2lyY2xlICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyA8KE5hTixJ bmZpbml0eSksTmFOPgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKE5hTiwwLjApLCgyLjAsNC4w KSwoMC4wLGluZmluaXR5KSc6OnBvbHlnb24gQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpOworICAgICBwb2ludCAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIChOYU4s SW5maW5pdHkpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLDAuMCksKDIuMCw0LjApLCgw LjAsMC4wKSc6OnBvbHlnb24gQVMgcGF0aCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CisgICAgICAgIHBhdGggICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgoMiww KSwoMiw0KSwoMCwwKSkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJygyLjAsMC4wKSwoMi4wLDQu MCksKDAuMCwwLjApJzo6cG9seWdvbiBBUyBib3ggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworICAgICBib3ggICAgIAorLS0tLS0tLS0tLS0tLQorICgyLDQpLCgwLDApCisoMSBy b3cpCisKK1NFTEVDVCBDQVNUKCcoTmFOLGluZmluaXR5KSwoMi4wLDQuMCksKDAuMCxpbmZpbml0 eSknOjpwb2x5Z29uIEFTIGNpcmNsZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgICAgICAgIGNpcmNsZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgPChOYU4s SW5maW5pdHkpLE5hTj4KKygxIHJvdykKKworU0VMRUNUIENBU1QoJzwoNSwxKSwzPic6OmNpcmNs ZSBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgcG9pbnQgCist LS0tLS0tCisgKDUsMSkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzwoMyw1KSwwPic6OmNpcmNs ZSBhcyBib3ggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICBib3ggICAg IAorLS0tLS0tLS0tLS0tLQorICgzLDUpLCgzLDUpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCc8 KDMsNSksMD4nOjpjaXJjbGUgYXMgcG9seWdvbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CisgcG9seWdvbiAKKy0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBzYWZlIGNhc3Qg d2l0aCBtb25leSBkYXRhIHR5cGUKKy0tIGNhc3QgZnJvbSBtb25leSB0byBvdGhlciB0eXBlIGlz IG5vdCBlcnJvciBzYWZlCitTRUxFQ1QgQ0FTVCgnMTIzNDU2Nzg5MDEyMzQ1Njc4Jzo6bnVtZXJp YyBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbW9uZXkgCist LS0tLS0tCisgICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzEyMzQ1Njc4OTAxMjM0NTY3 OCc6OmludDggQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIG1v bmV5IAorLS0tLS0tLQorICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcyMTQ3NDgzNjQ3 Jzo6aW50NCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAg ICAgbW9uZXkgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgJDIsMTQ3LDQ4Myw2NDcuMDAK KygxIHJvdykKKworU0VMRUNUIENBU1QoJy0yMTQ3NDgzNjQ4Jzo6aW50NCBBUyBNT05FWSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgbW9uZXkgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAtJDIsMTQ3LDQ4Myw2NDguMDAKKygxIHJvdykKKworU0VMRUNU IENBU1QoJy0wJzo6aW50NCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP Uik7CisgbW9uZXkgCistLS0tLS0tCisgJDAuMDAKKygxIHJvdykKKworU0VMRUNUIENBU1QoTlVM TDo6bW9uZXkgQVMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitF UlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgbW9uZXkgdG8gbnVtZXJpYyB3aXRoIERFRkFVTFQgZXhw cmVzc2lvbiBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBD QVNUKE5VTEw6Om1vbmV5IEFTIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJTy4uLgor ICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBFeHBsaWNpdCBjYXN0IGlzIGRlZmluZWQg YnV0IGRlZmluaXRpb24gaXMgbm90IGVycm9yIHNhZmUuCitTRUxFQ1QgQ0FTVChOVUxMOjptb25l eVtdIEFTIG51bWVyaWNbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitFUlJP UjogIGNhbm5vdCBjYXN0IHR5cGUgbW9uZXlbXSB0byBudW1lcmljW10gd2l0aCBERUZBVUxUIGV4 cHJlc3Npb24gaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgorTElORSAxOiBTRUxFQ1Qg Q0FTVChOVUxMOjptb25leVtdIEFTIG51bWVyaWNbXSBERUZBVUxUIE5VTEwgT04gQ09OVkUuLi4K KyAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVk IGJ1dCBkZWZpbml0aW9uIGlzIG5vdCBlcnJvciBzYWZlLgorLS0gc2FmZSBjYXN0IGZyb20gYm9v bGVhbiB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUKHRydWUgQVMgbnVtZXJp YyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbnVtZXJpYyAKKy0tLS0tLS0t LQorICAgICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1QoZmFsc2UgQVMgaW50IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ0IAorLS0tLS0tCisgICAgMAorKDEgcm93 KQorCitTRUxFQ1QgQ0FTVChmYWxzZSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsKKyB0ZXh0ICAKKy0tLS0tLS0KKyBmYWxzZQorKDEgcm93KQorCistLSBzYWZlIGNh c3QgZnJvbSBieXRlYSB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUICgnXHgx MTIyMzM0NDU1NjY3Nzg4OTknOjpieXRlYSBBUyBpbnQ4IERFRkFVTFQgMTkgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgaW50OCAKKy0tLS0tLQorICAgMTkKKygxIHJvdykKKworU0VMRUNUIENBU1Qo J1x4MTIzNDU2Nzg5QSc6OmJ5dGVhIEFTIGludDQgREVGQVVMVCAyMCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKKyBpbnQ0IAorLS0tLS0tCisgICAyMAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnXHgx MjM0NTYnOjpieXRlYSBBUyBpbnQyIERFRkFVTFQgMjEgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg aW50MiAKKy0tLS0tLQorICAgMjEKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1x4MTIzNDU2Nzg5 MGFiY2RlZic6OmJ5dGVhIEFTIHV1aWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworIHV1aWQgCistLS0tLS0KKyAKKygxIHJvdykKKworLS0gc2FmZSBjYXN0IGZyb20gdXVpZCB0 eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUKCc1YjM1MzgwYS03MTQzLTQ5MTIt OWI1NS1mMzIyNjk5YzY3NzAnOjp1dWlkIEFTIGJ5dGVhIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyAgICAgICAgICAgICAgIGJ5dGVhICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgXHg1YjM1MzgwYTcxNDM0OTEyOWI1NWYz MjI2OTljNjc3MAorKDEgcm93KQorCistLSBzYWZlIGNhc3QgcmVsYXRlZCB0byBuZXR3b3JrIGFk ZHJlc3MgZGF0YSB0eXBlCitTRUxFQ1QgQ0FTVCgnMTkyLjE2OC4xLngnIGFzIGluZXQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGluZXQgCistLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUIENBU1QoJzE5Mi4xNjguMS4yLzMwJyBhcyBjaWRyIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKyBjaWRyIAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBD QVNUKCcyMjowMDo1YzowODo1NTowODowMTowMic6Om1hY2FkZHI4IGFzIG1hY2FkZHIgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIG1hY2FkZHIgCistLS0tLS0tLS0KKyAKKygx IHJvdykKKworLS0gc2FmZSBjYXN0IGZyb20gYml0IHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcwor U0VMRUNUIENBU1QoJzExMTExMTExMTEwMDAwMSc6OmJpdCgxMDApIEFTIElOVCBERUZBVUxUIDIy IE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDQgCistLS0tLS0KKyAgIDIyCisoMSByb3cpCisK K1NFTEVDVCBDQVNUICgnMTExMTExMTExMTAwMDAxJzo6Yml0KDEwMCkgQVMgSU5UOCBERUZBVUxU IDIzIE9OIENPTlZFUlNJT04gRVJST1IpOworIGludDggCistLS0tLS0KKyAgIDIzCisoMSByb3cp CisKKy0tIHNhZmUgY2FzdCByZWxhdGVkIHRvIG9pZCBkYXRhIHR5cGUKK1NFTEVDVCBDQVNUKDEy MzQ1Njc4OTAxOjpiaWdpbnQgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyBvaWQgCistLS0tLQorICAgIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkw MTo6YmlnaW50IEFTIHJlZ3Byb2MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor IHJlZ3Byb2MgCistLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMTIzNDU2Nzg5 MDE6OmJpZ2ludCBBUyByZWdwcm9jZWR1cmUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworIHJlZ3Byb2NlZHVyZSAKKy0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVD VCBDQVNUKDEyMzQ1Njc4OTAxOjpiaWdpbnQgQVMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworIHJlZ2NsYXNzIAorLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgxMjM0NTY3ODkwOjpiaWdpbnQgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKyAgICBvaWQgICAgIAorLS0tLS0tLS0tLS0tCisgMTIzNDU2Nzg5MAor KDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkwOjpiaWdpbnQgQVMgcmVncm9sZSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIHJlZ3JvbGUgICAKKy0tLS0tLS0tLS0t LQorIDEyMzQ1Njc4OTAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDo6YmlnaW50 IEFTIHJlZ25hbWVzcGFjZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgcmVn bmFtZXNwYWNlIAorLS0tLS0tLS0tLS0tLS0KKyAxMjM0NTY3ODkwCisoMSByb3cpCisKK1NFTEVD VCBDQVNUKDEyMzQ1Njc4OTA6OmJpZ2ludCBBUyByZWdkYXRhYmFzZSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CisgcmVnZGF0YWJhc2UgCistLS0tLS0tLS0tLS0tCisgMTIzNDU2 Nzg5MAorKDEgcm93KQorCistLSBzYWZlIGNhc3QgZnJvbSB0ZXh0IHR5cGUgdG8gb3RoZXIgZGF0 YSB0eXBlcworU0VMRUNUIENBU1QoJ2EuYi5jLmQnOjp0ZXh0IGFzIHJlZ2NsYXNzIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyByZWdjbGFzcyAKKy0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworQ1JFQVRFIFRBQkxFIHRlc3Rfc2FmZWNhc3QwKGNvbDAgdGV4dCwgY29sMSBqc29u Yik7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MCBWQUxVRVMgKCc8dmFsdWU+b25lPC92YWx1 ZScsICcidGVzdCInKTsKK1NFTEVDVCBjb2wwIGFzIHRleHQsCisgICAgICAgQ0FTVChjb2wwIEFT IHJlZ2NsYXNzIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19yZWdjbGFz cywKKyAgICAgICBDQVNUKGNvbDAgQVMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIElTIE5VTEwgYXMgZXhwZWN0X3RydWUsCisgICAgICAgQ0FTVChjb2wwIEFTICJj aGFyIiAgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2NoYXIsCisgICAg ICAgQ0FTVChjb2wwIEFTIG5hbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX25hbWUKK0ZST00gdGVzdF9zYWZlY2FzdDA7CisgICAgICAgdGV4dCAgICAgICAgfCB0b19y ZWdjbGFzcyB8IGV4cGVjdF90cnVlIHwgdG9fY2hhciB8ICAgICAgdG9fbmFtZSAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0KKyA8dmFsdWU+b25lPC92YWx1ZSB8ICAgICAgICAgICAgIHwgdCAg ICAgICAgICAgfCA8ICAgICAgIHwgPHZhbHVlPm9uZTwvdmFsdWUKKygxIHJvdykKKworLS0gc2Fm ZSB0eXBlIGNhc3QgZm9yIGpzb25iIGRhdGEgdHlwZQorU0VMRUNUIGNvbDEgYXMganNvbmIsCisg ICAgICAgQ0FTVChjb2wxIEFTIGludGVnZXIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2ludGVnZXIsCisgICAgICAgQ0FTVChjb2wxIEFTIG51bWVyaWMgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wx IEFTIGJpZ2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwK KyAgICAgICBDQVNUKGNvbDEgQVMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wxIEFTIGZsb2F0OCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMSBB UyBib29sZWFuIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19ib29sLAor ICAgICAgIENBU1QoY29sMSBBUyBzbWFsbGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fc21hbGxpbnQKK0ZST00gdGVzdF9zYWZlY2FzdDA7CisganNvbmIgIHwgdG9f aW50ZWdlciB8IHRvX251bWVyaWMgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgdG9fZmxvYXQ4IHwg dG9fYm9vbCB8IHRvX3NtYWxsaW50IAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyAidGVzdCIgfCAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAg ICAgfCAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAKKygxIHJvdykKKworLS0gdGVz dCBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbiBtdXRhYmlsaXR5CitDUkVBVEUgSU5ERVggY2FzdF9l cnJvcl9pZHggT04gdGVzdF9zYWZlY2FzdDAoKENBU1QoY29sMSBhcyBpbnQgREVGQVVMVCByYW5k b20obWluPT4xLCBtYXg9PjEpIE9OIENPTlZFUlNJT04gRVJST1IpKSk7IC0tIGVycm9yCitFUlJP UjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJM RQorTElORSAxOiBDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9pZHggT04gdGVzdF9zYWZlY2FzdDAo KENBU1QoY29sMSBhcyAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3Nh ZmVjYXN0MCgoQ0FTVChjb2wxIGFzIHhpZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikpKTsgLS0gZXJyb3IKK0VSUk9SOiAgZGF0YSB0eXBlIHhpZCBoYXMgbm8gZGVmYXVsdCBvcGVy YXRvciBjbGFzcyBmb3IgYWNjZXNzIG1ldGhvZCAiYnRyZWUiCitISU5UOiAgWW91IG11c3Qgc3Bl Y2lmeSBhbiBvcGVyYXRvciBjbGFzcyBmb3IgdGhlIGluZGV4IG9yIGRlZmluZSBhIGRlZmF1bHQg b3BlcmF0b3IgY2xhc3MgZm9yIHRoZSBkYXRhIHR5cGUuCitDUkVBVEUgSU5ERVggY2FzdF9lcnJv cl9pZHggT04gdGVzdF9zYWZlY2FzdDAoKENBU1QoY29sMSBhcyBpbnQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpKSk7IC0tIG9rCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKCdjYXN0 X2Vycm9yX2lkeCc6OnJlZ2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIENSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiBwdWJsaWMudGVzdF9z YWZlY2FzdDAgVVNJTkcgYnRyZWUgKChDQVNUKGNvbDEgQVMgaW50ZWdlciBERUZBVUxUIE5VTEw6 OmludGVnZXIgT04gQ09OVkVSU0lPTiBFUlJPUikpKQorKDEgcm93KQorCistLSBzYWZlIGNhc3Qg YmV0d2VlZW4gcmFuZ2UgZGF0YSB0eXBlcworU0VMRUNUIENBU1QoJ1sxLDJdJzo6aW50NHJhbmdl IEFTIGludDRtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBp bnQ0bXVsdGlyYW5nZSAKKy0tLS0tLS0tLS0tLS0tLS0KKyB7WzEsMyl9CisoMSByb3cpCisKK1NF TEVDVCBDQVNUKCdbMSwyXSc6OmludDhyYW5nZSBBUyBpbnQ4bXVsdGlyYW5nZSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50OG11bHRpcmFuZ2UgCistLS0tLS0tLS0tLS0t LS0tCisge1sxLDMpfQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWzEsMl0nOjpudW1yYW5nZSAg QVMgbnVtbXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbnVt bXVsdGlyYW5nZSAKKy0tLS0tLS0tLS0tLS0tLQorIHtbMSwyXX0KKygxIHJvdykKKworU0VMRUNU IENBU1QoJ1staW5maW5pdHksaW5maW5pdHldJzo6ZGF0ZXJhbmdlIEFTIGRhdGVtdWx0aXJhbmdl IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgZGF0ZW11bHRpcmFuZ2Ug ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1staW5maW5pdHksaW5maW5pdHldfQor KDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjp0c3JhbmdlIEFT IHRzbXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICB0 c211bHRpcmFuZ2UgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHtbLWluZmluaXR5 LGluZmluaXR5XX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1staW5maW5pdHksaW5maW5pdHld Jzo6dHN0enJhbmdlIEFTIHRzdHptdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsKKyAgICAgdHN0em11bHRpcmFuZ2UgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisge1staW5maW5pdHksaW5maW5pdHldfQorKDEgcm93KQorCistLSBzYWZlIGNhc3QgYmV0 d2VlZW4gbnVtZXJpYyBkYXRhIHR5cGVzCitDUkVBVEUgVEFCTEUgdGVzdF9zYWZlY2FzdDEoCisg IGNvbDEgZmxvYXQ0LCBjb2wyIGZsb2F0OCwgY29sMyBudW1lcmljLCBjb2w0IG51bWVyaWNbXSwK KyAgY29sNSBpbnQyIGRlZmF1bHQgMzI3NjcsCisgIGNvbDYgaW50NCBkZWZhdWx0IDMyNzY4LAor ICBjb2w3IGludDggZGVmYXVsdCA0Mjk0OTY3Mjk2KTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNh c3QxIFZBTFVFUygnMTEuMTIzNCcsICcxMS4xMjM0JywgJzkyMjMzNzIwMzY4NTQ3NzU4MDgnLCAn ezExLjEyMzR9Jzo6bnVtZXJpY1tdKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVF UygnaW5mJywgJ2luZicsICdpbmYnLCAnezExLjEyMzQsIDEyLCBpbmYsIE5hTn0nOjpudW1lcmlj W10pOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDEgVkFMVUVTKCctaW5mJywgJy1pbmYnLCAn LWluZicsICd7MTEuMTIzNCwgMTIsIC1pbmYsIE5hTn0nOjpudW1lcmljW10pOworSU5TRVJUIElO VE8gdGVzdF9zYWZlY2FzdDEgVkFMVUVTKCdOYU4nLCAnTmFOJywgJ05hTicsICd7MTEuMTIzNCwg MTIsIC1pbmYsIE5hTn0nOjpudW1lcmljW10pOworU0VMRUNUIGNvbDUgYXMgaW50MiwKKyAgICAg ICBDQVNUKGNvbDUgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9faW50MiwKKyAgICAgICBDQVNUKGNvbDUgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDUgQVMgb2lkIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2w1IGFz IGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAg ICAgQ0FTVChjb2w1IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sNSBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDUgYXMgbnVt ZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAg ICAgICBDQVNUKGNvbDUgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyBpbnQy ICB8IHRvX2ludDIgfCB0b19pbnQ0IHwgdG9fb2lkIHwgdG9faW50OCB8IHRvX2Zsb2F0NCB8IHRv X2Zsb2F0OCB8IHRvX251bWVyaWMgfCB0b19udW1lcmljX3NjYWxlIAorLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgMzI3NjcgfCAgIDMyNzY3IHwgICAzMjc2 NyB8ICAzMjc2NyB8ICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgIDMyNzY3 IHwgICAgICAgICAgMzI3NjcuMAorIDMyNzY3IHwgICAzMjc2NyB8ICAgMzI3NjcgfCAgMzI3Njcg fCAgIDMyNzY3IHwgICAgIDMyNzY3IHwgICAgIDMyNzY3IHwgICAgICAzMjc2NyB8ICAgICAgICAg IDMyNzY3LjAKKyAzMjc2NyB8ICAgMzI3NjcgfCAgIDMyNzY3IHwgIDMyNzY3IHwgICAzMjc2NyB8 ICAgICAzMjc2NyB8ICAgICAzMjc2NyB8ICAgICAgMzI3NjcgfCAgICAgICAgICAzMjc2Ny4wCisg MzI3NjcgfCAgIDMyNzY3IHwgICAzMjc2NyB8ICAzMjc2NyB8ICAgMzI3NjcgfCAgICAgMzI3Njcg fCAgICAgMzI3NjcgfCAgICAgIDMyNzY3IHwgICAgICAgICAgMzI3NjcuMAorKDQgcm93cykKKwor U0VMRUNUIGNvbDYgYXMgaW50NCwKKyAgICAgICBDQVNUKGNvbDYgQVMgaW50MiBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDYgQVMg aW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAg ICBDQVNUKGNvbDYgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19vaWQsCisgICAgICAgQ0FTVChjb2w2IGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2w2IGFzIGZsb2F0NCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29s NiBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0 OCwKKyAgICAgICBDQVNUKGNvbDYgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDYgYXMgbnVtZXJpYygxMCwx KSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQor RlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyBpbnQ0ICB8IHRvX2ludDIgfCB0b19pbnQ0IHwgdG9fb2lk IHwgdG9faW50OCB8IHRvX2Zsb2F0NCB8IHRvX2Zsb2F0OCB8IHRvX251bWVyaWMgfCB0b19udW1l cmljX3NjYWxlIAorLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgMzI3NjggfCAgICAgICAgIHwgICAzMjc2OCB8ICAzMjc2OCB8ICAgMzI3NjggfCAgICAgMzI3 NjggfCAgICAgMzI3NjggfCAgICAgIDMyNzY4IHwgICAgICAgICAgMzI3NjguMAorIDMyNzY4IHwg ICAgICAgICB8ICAgMzI3NjggfCAgMzI3NjggfCAgIDMyNzY4IHwgICAgIDMyNzY4IHwgICAgIDMy NzY4IHwgICAgICAzMjc2OCB8ICAgICAgICAgIDMyNzY4LjAKKyAzMjc2OCB8ICAgICAgICAgfCAg IDMyNzY4IHwgIDMyNzY4IHwgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAg MzI3NjggfCAgICAgICAgICAzMjc2OC4wCisgMzI3NjggfCAgICAgICAgIHwgICAzMjc2OCB8ICAz Mjc2OCB8ICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAgIDMyNzY4IHwgICAg ICAgICAgMzI3NjguMAorKDQgcm93cykKKworU0VMRUNUIGNvbDcgYXMgaW50OCwKKyAgICAgICBD QVNUKGNvbDcgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f aW50MiwKKyAgICAgICBDQVNUKGNvbDcgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDcgQVMgb2lkIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2w3IGFzIGlu dDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAg Q0FTVChjb2w3IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sNyBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDcgYXMgbnVtZXJp YyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAg ICBDQVNUKGNvbDcgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyAgICBpbnQ4 ICAgIHwgdG9faW50MiB8IHRvX2ludDQgfCB0b19vaWQgfCAgdG9faW50OCAgIHwgIHRvX2Zsb2F0 NCAgfCB0b19mbG9hdDggIHwgdG9fbnVtZXJpYyB8IHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIDQyOTQ5 NjcyOTYgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8IDQyOTQ5NjcyOTYgfCA0LjI5NDk3 ZSswOSB8IDQyOTQ5NjcyOTYgfCA0Mjk0OTY3Mjk2IHwgICAgICAgICAgICAgICAgIAorIDQyOTQ5 NjcyOTYgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8IDQyOTQ5NjcyOTYgfCA0LjI5NDk3 ZSswOSB8IDQyOTQ5NjcyOTYgfCA0Mjk0OTY3Mjk2IHwgICAgICAgICAgICAgICAgIAorIDQyOTQ5 NjcyOTYgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8IDQyOTQ5NjcyOTYgfCA0LjI5NDk3 ZSswOSB8IDQyOTQ5NjcyOTYgfCA0Mjk0OTY3Mjk2IHwgICAgICAgICAgICAgICAgIAorIDQyOTQ5 NjcyOTYgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8IDQyOTQ5NjcyOTYgfCA0LjI5NDk3 ZSswOSB8IDQyOTQ5NjcyOTYgfCA0Mjk0OTY3Mjk2IHwgICAgICAgICAgICAgICAgIAorKDQgcm93 cykKKworU0VMRUNUIGNvbDMgYXMgbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDMgQVMgaW50MiBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNU KGNvbDMgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50 NCwKKyAgICAgICBDQVNUKGNvbDMgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2wzIGFzIGludDggREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wzIGFzIGZsb2F0 NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAg IENBU1QoY29sMyBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDMgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDMgYXMgbnVt ZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJp Y19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyAgICAgICBudW1lcmljICAgICAgIHwgdG9f aW50MiB8IHRvX2ludDQgfCB0b19vaWQgfCB0b19pbnQ4IHwgIHRvX2Zsb2F0NCAgfCAgICAgIHRv X2Zsb2F0OCAgICAgICB8ICAgICB0b19udW1lcmljICAgICAgfCB0b19udW1lcmljX3NjYWxlIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgOTIyMzM3MjAzNjg1NDc3NTgwOCB8ICAgICAgICAg fCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8IDkuMjIzMzdlKzE4IHwgOS4yMjMzNzIwMzY4 NTQ3OGUrMTggfCA5MjIzMzcyMDM2ODU0Nzc1ODA4IHwgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgSW5maW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAg ICBJbmZpbml0eSB8ICAgICAgICAgICAgIEluZmluaXR5IHwgICAgICAgICAgICBJbmZpbml0eSB8 ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgLUluZmluaXR5IHwgICAgICAgICB8ICAgICAg ICAgfCAgICAgICAgfCAgICAgICAgIHwgICAtSW5maW5pdHkgfCAgICAgICAgICAgIC1JbmZpbml0 eSB8ICAgICAgICAgICAtSW5maW5pdHkgfCAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg ICAgIE5hTiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAg TmFOIHwgICAgICAgICAgICAgICAgICBOYU4gfCAgICAgICAgICAgICAgICAgTmFOIHwgICAgICAg ICAgICAgIE5hTgorKDQgcm93cykKKworU0VMRUNUIGNvbDQgYXMgbnVtX2FyciwKKyAgICAgICBD QVNUKGNvbDQgQVMgaW50MltdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBp bnQyYXJyLAorICAgICAgIENBU1QoY29sNCBBUyBpbnQ0W10gREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIGludDRhcnIsCisgICAgICAgQ0FTVChjb2w0IGFzIGludDhbXSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgaW50OGFyciwKKyAgICAgICBDQVNUKGNv bDQgYXMgZmxvYXQ0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGY0YXJy LAorICAgICAgIENBU1QoY29sNCBhcyBmbG9hdDhbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgZjhhcnIsCisgICAgICAgQ0FTVChjb2w0IGFzIG51bWVyaWMoMTAsMSlbXSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgbnVtYXJyCitGUk9NIHRlc3Rfc2Fm ZWNhc3QxOworICAgICAgICAgIG51bV9hcnIgICAgICAgICAgIHwgaW50MmFyciB8IGludDRhcnIg fCBpbnQ4YXJyIHwgICAgICAgICAgIGY0YXJyICAgICAgICAgICAgfCAgICAgICAgICAgZjhhcnIg ICAgICAgICAgICB8IG51bWFyciAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgezExLjEyMzR9ICAgICAgICAgICAg ICAgICAgfCB7MTF9ICAgIHwgezExfSAgICB8IHsxMX0gICAgfCB7MTEuMTIzNH0gICAgICAgICAg ICAgICAgICB8IHsxMS4xMjM0fSAgICAgICAgICAgICAgICAgIHwgezExLjF9CisgezExLjEyMzQs MTIsSW5maW5pdHksTmFOfSAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCB7MTEuMTIz NCwxMixJbmZpbml0eSxOYU59ICB8IHsxMS4xMjM0LDEyLEluZmluaXR5LE5hTn0gIHwgCisgezEx LjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCB7 MTEuMTIzNCwxMiwtSW5maW5pdHksTmFOfSB8IHsxMS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwg CisgezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCAgICAgICAgIHwgICAgICAgICB8ICAgICAg ICAgfCB7MTEuMTIzNCwxMiwtSW5maW5pdHksTmFOfSB8IHsxMS4xMjM0LDEyLC1JbmZpbml0eSxO YU59IHwgCisoNCByb3dzKQorCitTRUxFQ1QgY29sMSBhcyBmbG9hdDQsCisgICAgICAgQ0FTVChj b2wxIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIs CisgICAgICAgQ0FTVChjb2wxIEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2wxIEFTIG9pZCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sMSBhcyBpbnQ4IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1Qo Y29sMSBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zs b2F0NCwKKyAgICAgICBDQVNUKGNvbDEgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wxIGFzIG51bWVyaWMgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FT VChjb2wxIGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisgIGZsb2F0NCAgIHwg dG9faW50MiB8IHRvX2ludDQgfCB0b19vaWQgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgICAgdG9f ZmxvYXQ4ICAgICB8IHRvX251bWVyaWMgfCB0b19udW1lcmljX3NjYWxlIAorLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgIDExLjEyMzQg fCAgICAgIDExIHwgICAgICAxMSB8ICAgICAgICB8ICAgICAgMTEgfCAgIDExLjEyMzQgfCAxMS4x MjMzOTk3MzQ0OTcxIHwgICAgMTEuMTIzNCB8ICAgICAgICAgICAgIDExLjEKKyAgSW5maW5pdHkg fCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgSW5maW5pdHkgfCAgICAg ICAgIEluZmluaXR5IHwgICBJbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAtSW5maW5pdHkg fCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAtSW5maW5pdHkgfCAgICAg ICAgLUluZmluaXR5IHwgIC1JbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAgICAgICBOYU4g fCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICBOYU4gfCAgICAg ICAgICAgICAgTmFOIHwgICAgICAgIE5hTiB8ICAgICAgICAgICAgICBOYU4KKyg0IHJvd3MpCisK K1NFTEVDVCBjb2wyIGFzIGZsb2F0OCwKKyAgICAgICBDQVNUKGNvbDIgQVMgaW50MiBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDIg QVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAg ICAgICBDQVNUKGNvbDIgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19vaWQsCisgICAgICAgQ0FTVChjb2wyIGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wyIGFzIGZsb2F0NCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1Qo Y29sMiBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zs b2F0OCwKKyAgICAgICBDQVNUKGNvbDIgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDIgYXMgbnVtZXJpYygx MCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2Fs ZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyAgZmxvYXQ4ICAgfCB0b19pbnQyIHwgdG9faW50NCB8 IHRvX29pZCB8IHRvX2ludDggfCB0b19mbG9hdDQgfCB0b19mbG9hdDggfCB0b19udW1lcmljIHwg dG9fbnVtZXJpY19zY2FsZSAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0KKyAgIDExLjEyMzQgfCAgICAgIDExIHwgICAgICAxMSB8ICAgICAgICB8ICAg ICAgMTEgfCAgIDExLjEyMzQgfCAgIDExLjEyMzQgfCAgICAxMS4xMjM0IHwgICAgICAgICAgICAg MTEuMQorICBJbmZpbml0eSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8 ICBJbmZpbml0eSB8ICBJbmZpbml0eSB8ICAgSW5maW5pdHkgfCAgICAgICAgICAgICAgICAgCisg LUluZmluaXR5IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgLUluZmlu aXR5IHwgLUluZmluaXR5IHwgIC1JbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAgICAgICBO YU4gfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICBOYU4gfCAg ICAgICBOYU4gfCAgICAgICAgTmFOIHwgICAgICAgICAgICAgIE5hTgorKDQgcm93cykKKworLS0g c2FmZSB0eXBlIGNhc3QgZm9yIHR5cGUgZGF0ZS90aW1lc3RhbXAvdGltZXN0YW1wdHovaW50ZXJ2 YWwKK0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVjYXN0MigKKyAgY29sMCBkYXRlLCBjb2wxIHRpbWVz dGFtcCwgY29sMiB0aW1lc3RhbXB0eiwKKyAgY29sMyBpbnRlcnZhbCwgY29sNCB0aW1lLCBjb2w1 IHRpbWV0eik7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MiBWQUxVRVMKKygnLWluZmluaXR5 JywgJy1pbmZpbml0eScsICctaW5maW5pdHknLCAnLWluZmluaXR5JywKKyAgJzIwMDMtMDMtMDcg MTU6MzY6MzkgQW1lcmljYS9OZXdfWW9yaycsICcyMDAzLTA3LTA3IDE1OjM2OjM5IEFtZXJpY2Ev TmV3X1lvcmsnKSwKKygnLWluZmluaXR5JywgJ2luZmluaXR5JywgJ2luZmluaXR5JywgJ2luZmlu aXR5JywgJzExOjU5OjU5Ljk5IFBNJywgJzExOjU5OjU5Ljk5IFBNIFBEVCcpOworU0VMRUNUIGNv bDAgYXMgZGF0ZSwKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29s MCBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAor ICAgICAgIENBU1QoY29sMCBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wwIEFTIHRp bWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0 YW1wX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworICAgZGF0ZSAgICB8IHRvX3RpbWVzdGFt cHR6IHwgIHRvX2RhdGUgIHwgdG9fdGltZXMgfCB0b190aW1ldHogfCB0b190aW1lc3RhbXBfc2Nh bGUgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtaW5maW5pdHkgfCAtaW5maW5pdHkg ICAgICB8IC1pbmZpbml0eSB8ICAgICAgICAgIHwgICAgICAgICAgIHwgLWluZmluaXR5CisgLWlu ZmluaXR5IHwgLWluZmluaXR5ICAgICAgfCAtaW5maW5pdHkgfCAgICAgICAgICB8ICAgICAgICAg ICB8IC1pbmZpbml0eQorKDIgcm93cykKKworU0VMRUNUIGNvbDEgYXMgdGltZXN0YW1wLAorICAg ICAgIENBU1QoY29sMSBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wxIEFTIGRhdGUgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wx IEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAor ICAgICAgIENBU1QoY29sMSBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZXN0YW1wKDIpIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUKK0ZST00g dGVzdF9zYWZlY2FzdDI7CisgdGltZXN0YW1wIHwgdG9fdGltZXN0YW1wdHogfCAgdG9fZGF0ZSAg fCB0b190aW1lcyB8IHRvX3RpbWV0eiB8IHRvX3RpbWVzdGFtcF9zY2FsZSAKKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLQorIC1pbmZpbml0eSB8IC1pbmZpbml0eSAgICAgIHwgLWluZmluaXR5 IHwgICAgICAgICAgfCAgICAgICAgICAgfCAtaW5maW5pdHkKKyBpbmZpbml0eSAgfCBpbmZpbml0 eSAgICAgICB8IGluZmluaXR5ICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgaW5maW5pdHkKKygy IHJvd3MpCisKK1NFTEVDVCBjb2wyIGFzIHRpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMiBB UyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGlt ZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wyIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWUgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29s MiBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0 eiwKKyAgICAgICBDQVNUKGNvbDIgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7 CisgdGltZXN0YW1wdHogfCB0b190aW1lc3RhbXB0eiB8ICB0b19kYXRlICB8IHRvX3RpbWVzIHwg dG9fdGltZXR6IHwgdG9fdGltZXN0YW1wX3NjYWxlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAtaW5maW5pdHkgICB8IC1pbmZpbml0eSAgICAgIHwgLWluZmluaXR5IHwgICAgICAg ICAgfCAgICAgICAgICAgfCAtaW5maW5pdHkKKyBpbmZpbml0eSAgICB8IGluZmluaXR5ICAgICAg IHwgaW5maW5pdHkgIHwgICAgICAgICAgfCAgICAgICAgICAgfCBpbmZpbml0eQorKDIgcm93cykK KworU0VMRUNUIGNvbDMgYXMgaW50ZXJ2YWwsCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWVzdGFt cHR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwK KyAgICAgICBDQVNUKGNvbDMgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9fZGF0ZSwKKyAgICAgICBDQVNUKGNvbDMgQVMgdGltZSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWV0 eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAg IENBU1QoY29sMyBBUyB0aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX3RpbWVzdGFtcF9zY2FsZSwKKyAgICAgICBDQVNUKGNvbDMgQVMgaW50ZXJ2YWwo MikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsX3NjYWxl CitGUk9NIHRlc3Rfc2FmZWNhc3QyOworIGludGVydmFsICB8IHRvX3RpbWVzdGFtcHR6IHwgdG9f ZGF0ZSB8IHRvX3RpbWVzIHwgdG9fdGltZXR6IHwgdG9fdGltZXN0YW1wX3NjYWxlIHwgdG9faW50 ZXJ2YWxfc2NhbGUgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0KKyAtaW5maW5pdHkgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICB8ICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IC1pbmZpbml0eQorIGluZmluaXR5ICB8ICAg ICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgIHwgaW5maW5pdHkKKygyIHJvd3MpCisKK1NFTEVDVCBjb2w0IGFzIHRpbWUsCisg ICAgICAgQ0FTVChjb2w0IEFTIHRpbWUoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29sNCBBUyB0aW1ldHogREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIElTIE5PVCBOVUxMIGFzIHRvX3RpbWV0eiwKKyAgICAgICBD QVNUKGNvbDQgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX2ludGVydmFsLAorICAgICAgIENBU1QoY29sNCBBUyBpbnRlcnZhbCgyKSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVz dF9zYWZlY2FzdDI7CisgICAgdGltZSAgICAgfCAgdG9fdGltZXMgICB8IHRvX3RpbWV0eiB8ICAg ICAgICAgIHRvX2ludGVydmFsICAgICAgICAgIHwgICAgICAgdG9faW50ZXJ2YWxfc2NhbGUgICAg ICAgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMTU6 MzY6MzkgICAgfCAxNTozNjozOSAgICB8IHQgICAgICAgICB8IEAgMTUgaG91cnMgMzYgbWlucyAz OSBzZWNzICAgIHwgQCAxNSBob3VycyAzNiBtaW5zIDM5IHNlY3MKKyAyMzo1OTo1OS45OSB8IDIz OjU5OjU5Ljk5IHwgdCAgICAgICAgIHwgQCAyMyBob3VycyA1OSBtaW5zIDU5Ljk5IHNlY3MgfCBA IDIzIGhvdXJzIDU5IG1pbnMgNTkuOTkgc2VjcworKDIgcm93cykKKworU0VMRUNUIGNvbDUgYXMg dGltZXR6LAorICAgICAgIENBU1QoY29sNSBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b190aW1lLAorICAgICAgIENBU1QoY29sNSBBUyB0aW1lKDIpIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lX3NjYWxlLAorICAgICAgIENB U1QoY29sNSBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDUgQVMgdGltZXR6KDYpIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHpfc2NhbGUsCisgICAgICAgQ0FTVChjb2w1IEFT IGludGVydmFsIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZh bCwKKyAgICAgICBDQVNUKGNvbDUgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOwor ICAgICB0aW1ldHogICAgIHwgICB0b190aW1lICAgfCB0b190aW1lX3NjYWxlIHwgICB0b190aW1l dHogICAgfCB0b190aW1ldHpfc2NhbGUgfCB0b19pbnRlcnZhbCB8IHRvX2ludGVydmFsX3NjYWxl IAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLQorIDE1OjM2OjM5LTA0ICAgIHwgMTU6MzY6MzkgICAgfCAxNTozNjozOSAgICAgIHwgMTU6 MzY6MzktMDQgICAgfCAxNTozNjozOS0wNCAgICAgfCAgICAgICAgICAgICB8IAorIDIzOjU5OjU5 Ljk5LTA3IHwgMjM6NTk6NTkuOTkgfCAyMzo1OTo1OS45OSAgIHwgMjM6NTk6NTkuOTktMDcgfCAy Mzo1OTo1OS45OS0wNyAgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworLS0gdGVzdCBkZXBh cnNlCitTRVQgZGF0ZXN0eWxlIFRPIElTTywgWU1EOworQ1JFQVRFIFZJRVcgc2FmZWNhc3R2aWV3 IEFTCitTRUxFQ1QgQ0FTVCgnMTIzNCcgYXMgY2hhcigzKSBERUZBVUxUIC0xMTExIE9OIENPTlZF UlNJT04gRVJST1IpLAorICAgICAgIENBU1QoMSBhcyBkYXRlIERFRkFVTFQgKCgnMjAyNS1EZWMt MDYnOjpkYXRlICsgcmFuZG9tKG1pbj0+MSwgbWF4PT4xOjppbnQpKSkgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgY2FzdDAsCisgICAgICAgQ0FTVChBUlJBWVtbJzEnXSwgWyd0aHJlZSddLFsnYSdd XSBBUyBpbnRbXSBERUZBVUxUICd7MSwyfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDEs CisgICAgICAgQ0FTVChBUlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJywgJ2EnXV0gQVMgZGF0ZVtd IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MiwKKyAgICAgICBDQVNU KEFSUkFZWyd0aHJlZSddIEFTIElOVFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyBjYXN0MzsKK1xzdiBzYWZlY2FzdHZpZXcKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcg cHVibGljLnNhZmVjYXN0dmlldyBBUworIFNFTEVDVCBDQVNUKCcxMjM0JyBBUyBjaGFyYWN0ZXIo MykgREVGQVVMVCAnLTExMTEnOjppbnRlZ2VyOjpjaGFyYWN0ZXIoMykgT04gQ09OVkVSU0lPTiBF UlJPUikgQVMgYnBjaGFyLAorICAgIENBU1QoMSBBUyBkYXRlIERFRkFVTFQgJzIwMjUtMTItMDYn OjpkYXRlICsgcmFuZG9tKG1pbiA9PiAxLCBtYXggPT4gMSkgT04gQ09OVkVSU0lPTiBFUlJPUikg QVMgY2FzdDAsCisgICAgQ0FTVChBUlJBWVtBUlJBWVsxXSwgQVJSQVlbJ3RocmVlJ10sIEFSUkFZ WydhJ11dIEFTIGludGVnZXJbXSBERUZBVUxUICd7MSwyfSc6OmludGVnZXJbXSBPTiBDT05WRVJT SU9OIEVSUk9SKSBBUyBjYXN0MSwKKyAgICBDQVNUKEFSUkFZW0FSUkFZWycxJywgJzInXSwgQVJS QVlbJ3RocmVlJywgJ2EnXV0gQVMgZGF0ZVtdIERFRkFVTFQgTlVMTDo6ZGF0ZVtdIE9OIENPTlZF UlNJT04gRVJST1IpIEFTIGNhc3QyLAorICAgIENBU1QoQVJSQVlbJ3RocmVlJ10gQVMgaW50ZWdl cltdIERFRkFVTFQgJ3sxLDJ9Jzo6aW50ZWdlcltdIE9OIENPTlZFUlNJT04gRVJST1IpIEFTIGNh c3QzCitTRUxFQ1QgKiBGUk9NIHNhZmVjYXN0dmlldzsKKyBicGNoYXIgfCAgIGNhc3QwICAgIHwg Y2FzdDEgfCBjYXN0MiB8IGNhc3QzIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLSstLS0tLS0tCisgMTIzICAgIHwgMjAyNS0xMi0wNyB8IHsxLDJ9IHwgICAgICAgfCB7MSwy fQorKDEgcm93KQorCitDUkVBVEUgVklFVyBzYWZlY2FzdHZpZXcxIEFTCitTRUxFQ1QgQ0FTVChB UlJBWVtbJzEnXSwgWyd0aHJlZSddLFsnYSddXSBBUyBkX2ludF9hcnIKKyAgICAgICAgICAgIERF RkFVTFQgJ3s0MSw0M30nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QxLAorICAgICAgIENB U1QoQVJSQVlbWycxJywgJzInLCAxLjFdLCBbJ3RocmVlJywgdHJ1ZSwgQicwMSddXSBBUyBkX2lu dF9hcnIKKyAgICAgICAgICAgIERFRkFVTFQgJ3s0MSw0M30nIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIGNhc3QyOworXHN2IHNhZmVjYXN0dmlldzEKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVi bGljLnNhZmVjYXN0dmlldzEgQVMKKyBTRUxFQ1QgQ0FTVChBUlJBWVtBUlJBWVsxXSwgQVJSQVlb J3RocmVlJ10sIEFSUkFZWydhJ11dIEFTIGRfaW50X2FyciBERUZBVUxUICd7NDEsNDN9Jzo6aW50 ZWdlcltdOjpkX2ludF9hcnIgT04gQ09OVkVSU0lPTiBFUlJPUikgQVMgY2FzdDEsCisgICAgQ0FT VChBUlJBWVtBUlJBWVsxLCAyLCAxLjE6OmludGVnZXJdLCBBUlJBWVsndGhyZWUnLCB0cnVlLCAn MDEnOjoiYml0Il1dIEFTIGRfaW50X2FyciBERUZBVUxUICd7NDEsNDN9Jzo6aW50ZWdlcltdOjpk X2ludF9hcnIgT04gQ09OVkVSU0lPTiBFUlJPUikgQVMgY2FzdDIKK1NFTEVDVCAqIEZST00gc2Fm ZWNhc3R2aWV3MTsKKyAgY2FzdDEgIHwgIGNhc3QyICAKKy0tLS0tLS0tLSstLS0tLS0tLS0KKyB7 NDEsNDN9IHwgezQxLDQzfQorKDEgcm93KQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp IFNFTEVDVCBDQVNUKCcxJyB8fCAnYScgQVMgaW50IERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiBDQVNUKCgnMSc6OnRleHQgfHwgJ2EnOjp0ZXh0KSBB UyBpbnRlZ2VyIERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKQorKDIgcm93cykKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgQ0FTVCgnYScgQVMgaW50IERFRkFVTFQg MiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0 OiBDQVNUKCdhJyBBUyBpbnRlZ2VyIERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKQorKDIg cm93cykKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIENBU1QoQVJSQVlb WycxJywgJzInLCAxLjFdLCBbJ3RocmVlJywgdHJ1ZSwgQicwMSddXSBBUyBkX2ludF9hcnIgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiBDQVNUKEFSUkFZW0FSUkFZWzEsIDIsICgxLjEp OjppbnRlZ2VyXSwgQVJSQVlbJ3RocmVlJywgdHJ1ZSwgJzAxJzo6ImJpdCJdXSBBUyBkX2ludF9h cnIgREVGQVVMVCAoTlVMTDo6aW50ZWdlcltdKTo6ZF9pbnRfYXJyIE9OIENPTlZFUlNJT04gRVJS T1IpCisoMiByb3dzKQorCitSRVNFVCBkYXRlc3R5bGU7CitEUk9QIFZJRVcgc2FmZWNhc3R2aWV3 OworRFJPUCBWSUVXIHNhZmVjYXN0dmlldzE7CitEUk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3QwOwor RFJPUCBUQUJMRSB0ZXN0X3NhZmVjYXN0MTsKK0RST1AgVEFCTEUgdGVzdF9zYWZlY2FzdDI7CitE Uk9QIFRBQkxFIHRjYXN0OworRFJPUCBUQUJMRSB0Y2FzdDE7CitEUk9QIEZVTkNUSU9OIHJldF9p bnQ4OworRFJPUCBGVU5DVElPTiByZXRfc2V0aW50OworRFJPUCBUWVBFIGNvbXBfZG9tYWluX3dp dGhfdHlwbW9kOworRFJPUCBUWVBFIGNvbXAyOworRFJPUCBET01BSU4gZF9ub3RhOworRFJPUCBE T01BSU4gZF92YXJjaGFyOworRFJPUCBET01BSU4gZF9pbnQ4YXJyOworRFJPUCBET01BSU4gZF9p bnQ4OworRFJPUCBET01BSU4gZF9pbnQ0MmFycjE7CitEUk9QIERPTUFJTiBkX2ludDQyYXJyOwor RFJPUCBET01BSU4gZF9pbnQ0MjsKK0RST1AgRE9NQUlOIGRfY2hhcjNfbm90X251bGw7CitEUk9Q IERPTUFJTiBkX251bWVyaWM7CitEUk9QIERPTUFJTiBkZG9tYWluOworUkVTRVQgZXh0cmFfZmxv YXRfZGlnaXRzOworUkVTRVQgbGNfbW9uZXRhcnk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NyZWF0ZV9jYXN0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX2Nhc3Qub3V0CmluZGV4IDBlNjk2NDRiY2EyLi42NGFjNjBiMTU3ZiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfY2FzdC5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfY2FzdC5vdXQKQEAgLTg4LDYgKzg4LDExIEBAIFNF TEVDVCAxMjM0OjppbnQ0OjpjYXN0dGVzdHR5cGU7IC0tIFNob3VsZCB3b3JrIG5vdwogIGJhcjEy MzQKICgxIHJvdykKIAorU0VMRUNUIENBU1QoMTIzNDo6aW50NCBBUyBjYXN0dGVzdHR5cGUgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBjYW5ub3Qg Y2FzdCB0eXBlIGludGVnZXIgdG8gY2FzdHRlc3R0eXBlIHdpdGggREVGQVVMVCBleHByZXNzaW9u IGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IKK0xJTkUgMTogU0VMRUNUIENBU1QoMTIz NDo6aW50NCBBUyBjYXN0dGVzdHR5cGUgREVGQVVMVCBOVUxMIE9OIENPTlZFLi4uCisgICAgICAg ICAgICAgICAgICAgIF4KK0RFVEFJTDogIFNhZmUgdHlwZSBjYXN0cyBmb3IgdXNlci1kZWZpbmVk IHR5cGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KIC0tIGNoZWNrIGRlcGVuZGVuY2llcyBnZW5l cmF0ZWQgZm9yIHRoYXQKIFNFTEVDVCBwZ19kZXNjcmliZV9vYmplY3QoY2xhc3NpZCwgb2JqaWQs IG9ianN1YmlkKSBhcyBvYmosCiAgICAgICAgcGdfZGVzY3JpYmVfb2JqZWN0KHJlZmNsYXNzaWQs IHJlZm9iamlkLCByZWZvYmpzdWJpZCkgYXMgb2JqcmVmLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9lcXVpdmNsYXNzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZXF1aXZjbGFzcy5vdXQKaW5kZXggYWQ4YWIyOTRmZjYuLjNhZjczN2MyMjBhIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VxdWl2Y2xhc3Mub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXF1aXZjbGFzcy5vdXQKQEAgLTk1LDYgKzk1LDI1IEBAIGNy ZWF0ZSBmdW5jdGlvbiBpbnQ4YWxpYXMxY21wKGludDgsIGludDhhbGlhczEpIHJldHVybnMgaW50 CiAgIHN0cmljdCBpbW11dGFibGUgbGFuZ3VhZ2UgaW50ZXJuYWwgYXMgJ2J0aW50OGNtcCc7CiBh bHRlciBvcGVyYXRvciBmYW1pbHkgaW50ZWdlcl9vcHMgdXNpbmcgYnRyZWUgYWRkCiAgIGZ1bmN0 aW9uIDEgaW50OGFsaWFzMWNtcCAoaW50OCwgaW50OGFsaWFzMSk7CistLSBpbnQ4YWxpYXMyIGJp bmFyeS1jb2VyY2libGUgdG8gaW50OCwgdGhpcyBzaG91bGQgbm90IGZhaWwKK3NlbGVjdCBjYXN0 KCcxJzo6aW50OCBhcyBpbnQ4YWxpYXMyIGRlZmF1bHQgbnVsbCBvbiBjb252ZXJzaW9uIGVycm9y KTsKKyBpbnQ4YWxpYXMyIAorLS0tLS0tLS0tLS0tCisgMQorKDEgcm93KQorCitzZWxlY3QgY2Fz dCgnMSc6OmludDhhbGlhczIgYXMgaW50OCBkZWZhdWx0IG51bGwgb24gY29udmVyc2lvbiBlcnJv cik7CisgaW50OCAKKy0tLS0tLQorICAgIDEKKygxIHJvdykKKworc2VsZWN0IGNhc3QoJ2EnIGFz IGludDhhbGlhczIgZGVmYXVsdCBudWxsIG9uIGNvbnZlcnNpb24gZXJyb3IpOworIGludDhhbGlh czIgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogY3JlYXRlIHRhYmxlIGVjMCAoZmYgaW50 OCBwcmltYXJ5IGtleSwgZjEgaW50OCwgZjIgaW50OCk7CiBjcmVhdGUgdGFibGUgZWMxIChmZiBp bnQ4IHByaW1hcnkga2V5LCBmMSBpbnQ4YWxpYXMxLCBmMiBpbnQ4YWxpYXMyKTsKIGNyZWF0ZSB0 YWJsZSBlYzIgKHhmIGludDggcHJpbWFyeSBrZXksIHgxIGludDhhbGlhczEsIHgyIGludDhhbGlh czIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0CmluZGV4IGZiM2UwZWM0MWIyLi5mNGZjNjRj MWE5MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sLm91dApAQCAtMjQsNiArMjQsMTIgQEAgU0VM RUNUICogRlJPTSB4bWx0ZXN0OwogICAyIHwgPHZhbHVlPnR3bzwvdmFsdWU+CiAoMiByb3dzKQog CitTRUxFQ1QgQ0FTVCgnPHdyb25nJzo6dGV4dCBBUyB4bWwgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX3htbDsKKyB0b194bWwgCistLS0tLS0tLQorIAorKDEgcm93KQor CiAtLSB0ZXN0IG5vbi10aHJvd2luZyBBUEksIHRvbwogU0VMRUNUIHBnX2lucHV0X2lzX3ZhbGlk KCc8dmFsdWU+b25lPC92YWx1ZT4nLCAneG1sJyk7CiAgcGdfaW5wdXRfaXNfdmFsaWQgCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA4ZmEwYTZjNDdmYi4uYjZlZjdjY2VjYjIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTE1LDcgKzExNSw3IEBAIHRlc3Q6IGpz b24ganNvbmIganNvbl9lbmNvZGluZyBqc29ucGF0aCBqc29ucGF0aF9lbmNvZGluZyBqc29uYl9q c29ucGF0aCBzcWxqc29uCiAjIE5COiB0ZW1wLnNxbCBkb2VzIHJlY29ubmVjdHMgd2hpY2ggdHJh bnNpZW50bHkgdXNlcyAyIGNvbm5lY3Rpb25zLAogIyBzbyBrZWVwIHRoaXMgcGFyYWxsZWwgZ3Jv dXAgdG8gYXQgbW9zdCAxOSB0ZXN0cwogIyAtLS0tLS0tLS0tCi10ZXN0OiBwbGFuY2FjaGUgbGlt aXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lv biB0cnVuY2F0ZSBhbHRlcl90YWJsZSBzZXF1ZW5jZSBwb2x5bW9ycGhpc20gcm93dHlwZXMgcmV0 dXJuaW5nIGxhcmdlb2JqZWN0IHdpdGggeG1sCit0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3Nx bCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lvbiB0cnVuY2F0 ZSBhbHRlcl90YWJsZSBzZXF1ZW5jZSBwb2x5bW9ycGhpc20gcm93dHlwZXMgcmV0dXJuaW5nIGxh cmdlb2JqZWN0IHdpdGggeG1sIGNhc3QKIAogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAg b2YgcGFyYWxsZWwgdGVzdHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nhc3Qu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY2FzdC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjc3NmU5YWI4ZTBiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY2FzdC5zcWwKQEAgLTAsMCArMSw0NTMgQEAKK1NFVCBleHRyYV9mbG9h dF9kaWdpdHMgPSAwOworU0VUIGxjX21vbmV0YXJ5IFRPICJDIjsKKworLS0gQ0FTVCBERUZBVUxU IE9OIENPTlZFUlNJT04gRVJST1IKK1NFTEVDVCBDQVNUKEInMDEnIEFTIGRhdGUgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoQklUJzAxJyBBUyBkYXRlIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKFRSVUUgQVMgZGF0 ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxLjEgQVMg ZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxIEFT IGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoMTEx MSBBUyAiY2hhciIgREVGQVVMVCAnQScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VCgnZGVmJzo6dGV4dCBBUyBpbnRlZ2VyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKK1NFTEVDVCBDQVNUKCcyJzo6anNvbmIgQVMgdGV4dCBERUZBVUxUICdmYWxsYmFjaycgT04g Q09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMScgQ09MTEFURSAiQyIgfHwgJ2gnIEFT IHRleHQgREVGQVVMVCAnZmFsbGJhY2snIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENB U1QoY29uY2F0KCcxJyBjb2xsYXRlICJDIiwgJ2gnKSBBUyBpbnQgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoNjU1MzYgQVMgaW50MiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChpbnQ4KDY1NTM2KSBBUyBpbnQyIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc291cmNlIGV4cHJlc3Npb24g aXMgYSB1bmtub3duIGNvbnN0CitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIEVSUk9S IE9OIENPTlZFUlNJT04gRVJST1IpKTsgLS0gZXJyb3IKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFT IGludGVnZXIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpKTsKK1ZBTFVFUyAoQ0FT VCgnZXJyb3InIEFTIGludGVnZXIgREVGQVVMVCA0MiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CitT RUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgMTggT04gQ09OVkVSU0lPTiBFUlJPUik7CitT RUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgc3VtKDEpIE9OIENPTlZFUlNJT04gRVJST1Ip OyAtLSBlcnJvcgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHN1bSgxKSBvdmVyKCkg T04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERF RkFVTFQgKFNFTEVDVCBOVUxMKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVD VCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAnYicgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVy cm9yCitTRUxFQ1QgQ0FTVCgnYSc6OmludCBhcyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOyAtLSBlcnJvcgorCistLSB0aGUgZGVmYXVsdCBleHByZXNzaW9u4oCZcyBjb2xs YXRpb24gc2hvdWxkIG1hdGNoIHRhcmdldCB0eXBlIGNvbGxhdGlvbgorVkFMVUVTIChDQVNUKCdl cnJvcicgQVMgdGV4dCBERUZBVUxUICcxJyBDT0xMQVRFICJDIiBPTiBDT05WRVJTSU9OIEVSUk9S KSk7CisKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludDJ2ZWN0b3IgREVGQVVMVCAnMSAzJyAg T04gQ09OVkVSU0lPTiBFUlJPUikpOworVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50MnZlY3Rv cltdIERFRkFVTFQgJ3sxIDN9JyAgT04gQ09OVkVSU0lPTiBFUlJPUikpOworCistLSBzb3VyY2Ug ZXhwcmVzc2lvbiBjb250YWluIHN1YnF1ZXJ5CitTRUxFQ1QgQ0FTVCgoU0VMRUNUIGIgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMSksIChWQUxVRVMoJ0gnKSkgcyhiKSkKKyAgICAgICAgICAgIEFT IGludDJ2ZWN0b3JbXSBERUZBVUxUICd7MSAzfScgIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VM RUNUIENBU1QoKFNFTEVDVCBBUlJBWSgoU0VMRUNUIGIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MikgZywgKFZBTFVFUygnSCcpKSBzKGIpKSkpCisgICAgICAgICAgICBBUyBJTlRbXQorICAgICAg ICAgICAgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCitDUkVBVEUgRlVOQ1RJ T04gcmV0X2ludDgoKSBSRVRVUk5TIEJJR0lOVCBBUworJCQKK0JFR0lOIFJFVFVSTiAyMTQ3NDgz NjQ4OyBFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEU7CisKK1NFTEVDVCBDQVNU KCdhJyBhcyBpbnQgREVGQVVMVCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBl cnJvcgorU0VMRUNUIENBU1QoJ2EnIGFzIGRhdGUgREVGQVVMVCByZXRfaW50OCgpIE9OIENPTlZF UlNJT04gRVJST1IpOyAtLSBlcnJvcgorCistLSBERUZBVUxUIGV4cHJlc3Npb24gY2Fubm90IGJl IHNldC1yZXR1cm5pbmcKK0NSRUFURSBGVU5DVElPTiByZXRfc2V0aW50KCkgUkVUVVJOUyBTRVRP RiBpbnRlZ2VyIEFTCiskJAorQkVHSU4gUkVUVVJOIFFVRVJZIEVYRUNVVEUgJ3NlbGVjdCAxIHVu aW9uIGFsbCBzZWxlY3QgMSc7IEVORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRTsK KworQ1JFQVRFIFRBQkxFIHRjYXN0MChhIElOVCwgYiBpbnQpOworSU5TRVJUIElOVE8gdGNhc3Qw IFZBTFVFUygxLDIpLCAoNjU1MzYsMyk7CitTRVQgaml0X2Fib3ZlX2Nvc3QgPSAwOworU0VMRUNU IENBU1QoYSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRj YXN0MDsKK1NFVCBqaXRfYWJvdmVfY29zdCBUTyBERUZBVUxUOworU0VMRUNUIENBU1QoYSBBUyBp bnQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MDsKK1NFTEVD VCBDQVNUKFJPVygxLDIpIEFTIHRjYXN0MCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgRlJPTSB0Y2FzdDAgYXMgdDsKK0RST1AgVEFCTEUgdGNhc3QwOworCitTRUxFQ1QgQ0FTVCgx Mi4xMTEgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fbnVtZXJpY19zY2FsZTsKKworQ1JFQVRFIFRBQkxFIHRjYXN0KGEgdGV4dFtdLCBiIGlu dCBHRU5FUkFURUQgQlkgREVGQVVMVCBBUyBJREVOVElUWSk7CitJTlNFUlQgSU5UTyB0Y2FzdCBW QUxVRVMgKCd7MTJ9JyksICgnezEsYSwgYn0nKSwgKCd7ezEsMn0sIHtjLGR9fScpLCAoJ3sxM30n KTsKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCByZXRfc2V0aW50KCkgT04gQ09OVkVS U0lPTiBFUlJPUikgRlJPTSB0Y2FzdDsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKHQgQVMgdGV4dFtd IERFRkFVTFQgJ3syMSwyMiwgJyB8fCBiIHx8ICd9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9N IHRjYXN0IGFzIHQ7CitTRUxFQ1QgQ0FTVCh0LmEgQVMgaW50W10gREVGQVVMVCAnezIxLDIyfSc6 OmludFtdIHx8IGIgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdCBhcyB0OworCitDUkVB VEUgRE9NQUlOIGRkb21haW4gQVMgbnVtZXJpYyBDSEVDSyAoKDEvIChWQUxVRSAtIDEpKSA+IDAp OworU0VMRUNUIENBU1QgKCcxJyBBUyBkZG9tYWluIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKTsKK1NFTEVDVCBDQVNUICgxIEFTIGRkb21haW4gREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpOworQ1JFQVRFIFZJRVcgdmRkb21haW4gQVMgU0VMRUNUIENBU1QgKDEgQVMg ZGRvbWFpbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Citcc3YgdmRkb21haW4K K0RST1AgVklFVyB2ZGRvbWFpbjsKKworLS0gVGVzdCBuZXN0ZWQgdHlwZSBjYXN0czsgYWxsIHN1 Yi1leHByZXNzaW9ucyB3aWxsIGJlIGV2YWx1YXRlZCBpbiBhbiBlcnJvci1zYWZlIG1hbm5lciB0 b28uCitDUkVBVEUgRE9NQUlOIGRfbm90YSBBUyB0ZXh0IENIRUNLIChWQUxVRSA8PiAnYScpOwor Q1JFQVRFIFRBQkxFIHRjYXN0MShhIHRleHQsIGIgdGV4dFtdLCBjIGludCwgZCBpbnQ4LCBlIGlu dDhbXSk7CitJTlNFUlQgSU5UTyB0Y2FzdDEoYSwgYiwgZCwgZSkgdmFsdWVzKCdhJywgJ3thfScs IDIxNDc0ODM2NDgsICd7MjE0NzQ4MzY0OH0nKTsKK1NFTEVDVCBDQVNUIChDQVNUKGEgQVMgaW50 KSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsK K1NFTEVDVCBDQVNUIChDQVNUKCdhJyBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOyAgLS0gZXJyb3IKK1NFTEVDVCBDQVNUIChDQVNU KCdhJzo6dGV4dCBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIEZST00gdGNhc3QxOyAtLSBvaworU0VMRUNUIENBU1QgKENBU1QoYSBBUyBkX25vdGEpIEFT IHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworU0VM RUNUIENBU1QgKENBU1QoJ2EnIEFTIGRfbm90YSkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisKK1NFTEVDVCBDQVNUIChDQVNUKGQgQVMgaW50 KSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsK K1NFTEVDVCBDQVNUIChDQVNUKCcyMTQ3NDgzNjQ4Jzo6aW50OCBBUyBpbnQpIEFTIHRleHQgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworCitTRUxFQ1QgQ0FT VCAoQ0FTVCgne2F9Jzo6dGV4dFtdIEFTIGludFtdKSBBUyB0ZXh0W10gREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworU0VMRUNUIENBU1QgKENBU1QoYiBBUyBp bnRbXSkgQVMgdGV4dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRj YXN0MTsKK1NFTEVDVCBDQVNUIChDQVNUKGIgQVMgZF9ub3RhW10pIEFTIHRleHRbXSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FTVCAoQ0FT VChlIEFTIGludFtdKSBBUyB0ZXh0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IEZST00gdGNhc3QxOworCistLSB0ZXN0IG5lc3RlZCBBcnJheUNvZXJjZUV4cHIgY29uc3RhbnQg Zm9sZGluZworU0VMRUNUIENBU1QoJ3thfSc6OnRleHRbXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FTVChDQVNUKCd7YX0n Ojp0ZXh0W10gQVMgZGF0ZVtdKSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FTVCgoJ3snIHx8IHN1bSgxICsgMikgfHwgJ30n KTo6aW50W10gQVMgaW50W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00g KFZBTFVFUyAoMSksICgyKSkgc3ViOworU0VMRUNUIENBU1QoKCd7JyB8fCBzdW0oMSArIDIpIE9W RVIgKCkgfHwgJ30nKTo6aW50W10gQVMgaW50W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIEZST00gKFZBTFVFUyAoMSksICgyKSkgc3ViOworCistLSB0ZXN0IHdpdGggdXNlci1k ZWZpbmVkIHR5cGUsIGRvbWFpbiwgYXJyYXkgb3ZlciBkb21haW4sIGRvbWFpbiBvdmVyIGFycmF5 CitDUkVBVEUgRE9NQUlOIGRfaW50NDIgYXMgaW50IGNoZWNrICh2YWx1ZSA9IDQyKSBOT1QgTlVM TDsKK0NSRUFURSBET01BSU4gZF9pbnQ0MmFyciBhcyBkX2ludDQyW107CitDUkVBVEUgRE9NQUlO IGRfaW50NDJhcnIxIGFzIGRfaW50NDJhcnI7CitDUkVBVEUgRE9NQUlOIGRfaW50OCBhcyBpbnQ4 IGNoZWNrICh2YWx1ZSA+IDApOworQ1JFQVRFIERPTUFJTiBkX2ludDhhcnIgYXMgZF9pbnQ4W107 CitDUkVBVEUgRE9NQUlOIGRfY2hhcjNfbm90X251bGwgYXMgY2hhcigzKSBOT1QgTlVMTDsKK0NS RUFURSBET01BSU4gZF92YXJjaGFyIGFzIHZhcmNoYXIoMykgTk9UIE5VTEw7CitDUkVBVEUgRE9N QUlOIGRfaW50X2FyciBhcyBpbnRbXSBjaGVjayAodmFsdWUgPSAnezQxLCA0M30nKSBOT1QgTlVM TDsKK0NSRUFURSBUWVBFIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIEFTIChhIGRfY2hhcjNfbm90 X251bGwsIGIgaW50KTsKK0NSRUFURSBUWVBFIGNvbXAyIEFTIChhIGRfdmFyY2hhcik7CitDUkVB VEUgRE9NQUlOIGRfbnVtZXJpYyBhcyBudW1lcmljKDQsNCk7CisKK1NFTEVDVCBDQVNUKDEuMDo6 ZmxvYXQ0IEFTIGRfbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitT RUxFQ1QgQ0FTVCgnezEuMH0nIEFTIG51bWVyaWMoNCwxKVtdIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCd7MC4xLCAxLjB9JyBBUyBkX251bWVyaWNbXSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKK1NFTEVDVCBDQVNUKDExIEFTIGRf aW50NDIgREVGQVVMVCA0MSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBD QVNUKE5VTEwgQVMgZF9pbnQ0MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0t IGVycm9yCitTRUxFQ1QgQ0FTVCgxMSBBUyBkX2ludDQyIERFRkFVTFQgNDIgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVChOVUxMIEFTIGRfaW50NDIgREVGQVVMVCA0MiBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKworU0VMRUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBk X2ludDggREVGQVVMVCAnMScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChBUlJB WVs0Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OFtdIERFRkFVTFQgJ3sxfScgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVChBUlJBWVs0Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OGFy ciBERUZBVUxUICd7MX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoQVJSQVlb NDJdOjpkX2ludDQyYXJyMSBBUyBkX2ludDhhcnJbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLDQxXSBBUyBkX2ludDQyW10gREVGQVVM VCAnezQyLCA0Mn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoQVJSQVlbNDIs NDFdIEFTIGRfaW50X2FyciBERUZBVUxUICd7NDEsIDQzfScgT04gQ09OVkVSU0lPTiBFUlJPUik7 CitTRUxFQ1QgQ0FTVChBUlJBWVs0MiwgNDFdOjpkX2ludDQyYXJyMSBBUyBkX2ludDhhcnIgREVG QVVMVCAnezEsMiwzfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChBUlJBWVs0 MiwgNDFdIEFTIGRfaW50NDJhcnIxIERFRkFVTFQgJ3s0MiwgNDJ9JyBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKK1NFTEVDVCBDQVNUKENBU1QoQVJSQVlbQ0FTVChBUlJBWVs0MiwgNDJdIEFTIGRfaW50 NDJhcnIpXSBBUyBkX2ludDQyYXJyMVtdKQorICAgICAgICAgICAgQVMgZF9pbnQ4YXJyW10KKyAg ICAgICAgICAgIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworU0VMRUNUIENB U1QoJyhOVUxMKScgQVMgY29tcDIgREVGQVVMVCAnKDEyMzIpJyBPTiBDT05WRVJTSU9OIEVSUk9S KTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKCcoTlVMTCknIEFTIGNvbXAyIERFRkFVTFQgJygxMjMp JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoLDQyKScgQVMgY29tcF9kb21h aW5fd2l0aF90eXBtb2QgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNU IENBU1QoJyhOVUxMLDQyKScgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCAnKDEs MiknIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJyhOVUxMLDQyKScgQVMgY29t cF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCAnKDEyMzQsMiknIE9OIENPTlZFUlNJT04gRVJS T1IpOyAtLSBlcnJvcgorU0VMRUNUIENBU1QoUk9XKE5VTEwsNDIpIEFTIGNvbXBfZG9tYWluX3dp dGhfdHlwbW9kIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKKwor LS0gdGVzdCBhcnJheSBjb2VyY2UKK1NFTEVDVCBDQVNUKGFycmF5WydhJzo6dGV4dF0gQVMgaW50 W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoYXJyYXlb J2EnXSBBUyBpbnRbXSBERUZBVUxUIEFSUkFZWzFdIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VM RUNUIENBU1QoYXJyYXlbMTEuMTJdIEFTIGRhdGVbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVChhcnJheVsxMTExMTExMTExMTExMTExMV0gQVMgaW50W10g REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoYXJyYXlbWydh YmMnXSxbNDU2XV0gQVMgaW50W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor U0VMRUNUIENBU1QoJ3sxMjMsYWJjLDQ1Nn0nIEFTIGludFtdIERFRkFVTFQgJ3stNzg5fScgT04g Q09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnezIzNCxkZWYsNTY3fSc6OnRleHRbXSBB UyBpbnRlZ2VyW10gREVGQVVMVCAney0xMDExfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxF Q1QgQ0FTVChBUlJBWVtbJzEnXSwgWyd0aHJlZSddLFsnYSddXSBBUyBpbnRbXSBERUZBVUxUICd7 MSwyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnLCAnMidd LCBbJ3RocmVlJywgJ2EnXV0gQVMgaW50W10gREVGQVVMVCAnezIxLDIyfScgT04gQ09OVkVSU0lP TiBFUlJPUik7CistLSBlcnJvcjogYHRocmVlJzo6aW50YCB3aWxsIGZhaWwgZWFybGllcgorU0VM RUNUIENBU1QoQVJSQVlbWycxJywgJzInXSwgWyd0aHJlZSc6OmludCwgJ2EnXV0gQVMgaW50W10g REVGQVVMVCAnezIxLDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChBUlJB WVsxLCAndGhyZWUnOjppbnRdIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0nIE9OIENPTlZFUlNJ T04gRVJST1IpOworCistLSBzYWZlIGNhc3Qgd2l0aCBnZW9tZXRyeSBkYXRhIHR5cGUKK1NFTEVD VCBDQVNUKCcoMSwyKSc6OnBvaW50IEFTIGJveCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVCgnWyhOYU4sMSksKE5hTixpbmZpbml0eSldJzo6bHNlZyBBUyBw b2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWygx ZSszMDAsSW5maW5pdHkpLCgxZSszMDAsSW5maW5pdHkpXSc6OmxzZWcgQVMgcG9pbnQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1soMSwyKSwoMyw0KV0n OjpwYXRoIGFzIHBvbHlnb24gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VM RUNUIENBU1QoJyhOYU4sMS4wLE5hTixpbmZpbml0eSknOjpib3ggQVMgcG9pbnQgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJygyLjAsMi4wLDAuMCwwLjAp Jzo6Ym94IEFTIGxzZWcgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNU IENBU1QoJygyLjAsMi4wLDAuMCwwLjApJzo6Ym94IEFTIHBvbHlnb24gREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJygyLjAsMi4wLDAuMCwwLjApJzo6Ym94 IEFTIHBhdGggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1Qo JygyLjAsaW5maW5pdHksTmFOLGluZmluaXR5KSc6OmJveCBBUyBjaXJjbGUgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJyhOYU4sMC4wKSwoMi4wLDQuMCks KDAuMCxpbmZpbml0eSknOjpwb2x5Z29uIEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcoMi4wLDAuMCksKDIuMCw0LjApLCgwLjAsMC4wKSc6 OnBvbHlnb24gQVMgcGF0aCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxF Q1QgQ0FTVCgnKDIuMCwwLjApLCgyLjAsNC4wKSwoMC4wLDAuMCknOjpwb2x5Z29uIEFTIGJveCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5hTixpbmZp bml0eSksKDIuMCw0LjApLCgwLjAsaW5maW5pdHkpJzo6cG9seWdvbiBBUyBjaXJjbGUgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJzwoNSwxKSwzPic6OmNp cmNsZSBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1Qg Q0FTVCgnPCgzLDUpLDA+Jzo6Y2lyY2xlIGFzIGJveCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnPCgzLDUpLDA+Jzo6Y2lyY2xlIGFzIHBvbHlnb24gREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBzYWZlIGNhc3Qgd2l0aCBtb25l eSBkYXRhIHR5cGUKKy0tIGNhc3QgZnJvbSBtb25leSB0byBvdGhlciB0eXBlIGlzIG5vdCBlcnJv ciBzYWZlCitTRUxFQ1QgQ0FTVCgnMTIzNDU2Nzg5MDEyMzQ1Njc4Jzo6bnVtZXJpYyBBUyBNT05F WSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMTIzNDU2 Nzg5MDEyMzQ1Njc4Jzo6aW50OCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVCgnMjE0NzQ4MzY0Nyc6OmludDQgQVMgTU9ORVkgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJy0yMTQ3NDgzNjQ4Jzo6aW50 NCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VCgnLTAnOjppbnQ0IEFTIE1PTkVZIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK K1NFTEVDVCBDQVNUKE5VTEw6Om1vbmV5IEFTIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoTlVMTDo6bW9uZXlbXSBBUyBudW1lcmljW10gREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBzYWZlIGNhc3QgZnJvbSBib29s ZWFuIHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcworU0VMRUNUIENBU1QodHJ1ZSBBUyBudW1lcmlj IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKGZhbHNlIEFT IGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChmYWxz ZSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc2FmZSBj YXN0IGZyb20gYnl0ZWEgdHlwZSB0byBvdGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCAoJ1x4 MTEyMjMzNDQ1NTY2Nzc4ODk5Jzo6Ynl0ZWEgQVMgaW50OCBERUZBVUxUIDE5IE9OIENPTlZFUlNJ T04gRVJST1IpOworU0VMRUNUIENBU1QoJ1x4MTIzNDU2Nzg5QSc6OmJ5dGVhIEFTIGludDQgREVG QVVMVCAyMCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdceDEyMzQ1Nic6OmJ5 dGVhIEFTIGludDIgREVGQVVMVCAyMSBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KCdceDEyMzQ1Njc4OTBhYmNkZWYnOjpieXRlYSBBUyB1dWlkIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKworLS0gc2FmZSBjYXN0IGZyb20gdXVpZCB0eXBlIHRvIG90aGVyIGRh dGEgdHlwZXMKK1NFTEVDVCBDQVNUKCc1YjM1MzgwYS03MTQzLTQ5MTItOWI1NS1mMzIyNjk5YzY3 NzAnOjp1dWlkIEFTIGJ5dGVhIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKwor LS0gc2FmZSBjYXN0IHJlbGF0ZWQgdG8gbmV0d29yayBhZGRyZXNzIGRhdGEgdHlwZQorU0VMRUNU IENBU1QoJzE5Mi4xNjguMS54JyBhcyBpbmV0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKK1NFTEVDVCBDQVNUKCcxOTIuMTY4LjEuMi8zMCcgYXMgY2lkciBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMjI6MDA6NWM6MDg6NTU6MDg6MDE6 MDInOjptYWNhZGRyOCBhcyBtYWNhZGRyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKworLS0gc2FmZSBjYXN0IGZyb20gYml0IHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcworU0VM RUNUIENBU1QoJzExMTExMTExMTEwMDAwMSc6OmJpdCgxMDApIEFTIElOVCBERUZBVUxUIDIyIE9O IENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QgKCcxMTExMTExMTExMDAwMDEnOjpiaXQo MTAwKSBBUyBJTlQ4IERFRkFVTFQgMjMgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIHNhZmUg Y2FzdCByZWxhdGVkIHRvIG9pZCBkYXRhIHR5cGUKK1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTAxOjpi aWdpbnQgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBD QVNUKDEyMzQ1Njc4OTAxOjpiaWdpbnQgQVMgcmVncHJvYyBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkwMTo6YmlnaW50IEFTIHJlZ3Byb2Nl ZHVyZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxMjM0 NTY3ODkwMTo6YmlnaW50IEFTIHJlZ2NsYXNzIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKK1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTA6OmJpZ2ludCBBUyBvaWQgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDo6YmlnaW50IEFT IHJlZ3JvbGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1Qo MTIzNDU2Nzg5MDo6YmlnaW50IEFTIHJlZ25hbWVzcGFjZSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkwOjpiaWdpbnQgQVMgcmVnZGF0YWJh c2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBzYWZlIGNhc3QgZnJv bSB0ZXh0IHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcworU0VMRUNUIENBU1QoJ2EuYi5jLmQnOjp0 ZXh0IGFzIHJlZ2NsYXNzIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK0NSRUFU RSBUQUJMRSB0ZXN0X3NhZmVjYXN0MChjb2wwIHRleHQsIGNvbDEganNvbmIpOworSU5TRVJUIElO VE8gdGVzdF9zYWZlY2FzdDAgVkFMVUVTICgnPHZhbHVlPm9uZTwvdmFsdWUnLCAnInRlc3QiJyk7 CisKK1NFTEVDVCBjb2wwIGFzIHRleHQsCisgICAgICAgQ0FTVChjb2wwIEFTIHJlZ2NsYXNzIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19yZWdjbGFzcywKKyAgICAgICBD QVNUKGNvbDAgQVMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIElT IE5VTEwgYXMgZXhwZWN0X3RydWUsCisgICAgICAgQ0FTVChjb2wwIEFTICJjaGFyIiAgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2NoYXIsCisgICAgICAgQ0FTVChjb2ww IEFTIG5hbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX25hbWUKK0ZS T00gdGVzdF9zYWZlY2FzdDA7CisKKy0tIHNhZmUgdHlwZSBjYXN0IGZvciBqc29uYiBkYXRhIHR5 cGUKK1NFTEVDVCBjb2wxIGFzIGpzb25iLAorICAgICAgIENBU1QoY29sMSBBUyBpbnRlZ2VyIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlZ2VyLAorICAgICAgIENB U1QoY29sMSBBUyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0 b19udW1lcmljLAorICAgICAgIENBU1QoY29sMSBBUyBiaWdpbnQgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wxIEFTIGZsb2F0NCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENB U1QoY29sMSBBUyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDEgQVMgYm9vbGVhbiBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fYm9vbCwKKyAgICAgICBDQVNUKGNvbDEgQVMgc21hbGxpbnQg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3NtYWxsaW50CitGUk9NIHRl c3Rfc2FmZWNhc3QwOworCistLSB0ZXN0IENBU1QgREVGQVVMVCBleHByZXNzaW9uIG11dGFiaWxp dHkKK0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MCgoQ0FTVChj b2wxIGFzIGludCBERUZBVUxUIHJhbmRvbShtaW49PjEsIG1heD0+MSkgT04gQ09OVkVSU0lPTiBF UlJPUikpKTsgLS0gZXJyb3IKK0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3Nh ZmVjYXN0MCgoQ0FTVChjb2wxIGFzIHhpZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikpKTsgLS0gZXJyb3IKK0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVj YXN0MCgoQ0FTVChjb2wxIGFzIGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikp KTsgLS0gb2sKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoJ2Nhc3RfZXJyb3JfaWR4Jzo6cmVnY2xh c3MpOworCistLSBzYWZlIGNhc3QgYmV0d2VlZW4gcmFuZ2UgZGF0YSB0eXBlcworU0VMRUNUIENB U1QoJ1sxLDJdJzo6aW50NHJhbmdlIEFTIGludDRtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdbMSwyXSc6OmludDhyYW5nZSBBUyBpbnQ4 bXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VCgnWzEsMl0nOjpudW1yYW5nZSAgQVMgbnVtbXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjpkYXRl cmFuZ2UgQVMgZGF0ZW11bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworU0VMRUNUIENBU1QoJ1staW5maW5pdHksaW5maW5pdHldJzo6dHNyYW5nZSBBUyB0c211bHRp cmFuZ2UgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1st aW5maW5pdHksaW5maW5pdHldJzo6dHN0enJhbmdlIEFTIHRzdHptdWx0aXJhbmdlIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc2FmZSBjYXN0IGJldHdlZWVuIG51bWVy aWMgZGF0YSB0eXBlcworQ1JFQVRFIFRBQkxFIHRlc3Rfc2FmZWNhc3QxKAorICBjb2wxIGZsb2F0 NCwgY29sMiBmbG9hdDgsIGNvbDMgbnVtZXJpYywgY29sNCBudW1lcmljW10sCisgIGNvbDUgaW50 MiBkZWZhdWx0IDMyNzY3LAorICBjb2w2IGludDQgZGVmYXVsdCAzMjc2OCwKKyAgY29sNyBpbnQ4 IGRlZmF1bHQgNDI5NDk2NzI5Nik7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMo JzExLjEyMzQnLCAnMTEuMTIzNCcsICc5MjIzMzcyMDM2ODU0Nzc1ODA4JywgJ3sxMS4xMjM0fSc6 Om51bWVyaWNbXSk7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJ2luZicsICdp bmYnLCAnaW5mJywgJ3sxMS4xMjM0LCAxMiwgaW5mLCBOYU59Jzo6bnVtZXJpY1tdKTsKK0lOU0VS VCBJTlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVFUygnLWluZicsICctaW5mJywgJy1pbmYnLCAnezEx LjEyMzQsIDEyLCAtaW5mLCBOYU59Jzo6bnVtZXJpY1tdKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2Fm ZWNhc3QxIFZBTFVFUygnTmFOJywgJ05hTicsICdOYU4nLCAnezExLjEyMzQsIDEyLCAtaW5mLCBO YU59Jzo6bnVtZXJpY1tdKTsKKworU0VMRUNUIGNvbDUgYXMgaW50MiwKKyAgICAgICBDQVNUKGNv bDUgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwK KyAgICAgICBDQVNUKGNvbDUgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDUgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2w1IGFzIGludDggREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChj b2w1IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxv YXQ0LAorICAgICAgIENBU1QoY29sNSBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDUgYXMgbnVtZXJpYyBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNU KGNvbDUgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKworU0VMRUNUIGNvbDYg YXMgaW50NCwKKyAgICAgICBDQVNUKGNvbDYgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDYgQVMgaW50NCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDYg QVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAg ICAgQ0FTVChjb2w2IGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2ludDgsCisgICAgICAgQ0FTVChjb2w2IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sNiBhcyBmbG9hdDgg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBD QVNUKGNvbDYgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDYgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3Nh ZmVjYXN0MTsKKworU0VMRUNUIGNvbDcgYXMgaW50OCwKKyAgICAgICBDQVNUKGNvbDcgQVMgaW50 MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBD QVNUKGNvbDcgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f aW50NCwKKyAgICAgICBDQVNUKGNvbDcgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2w3IGFzIGludDggREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2w3IGFzIGZs b2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAg ICAgIENBU1QoY29sNyBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDcgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDcgYXMg bnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVt ZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKworU0VMRUNUIGNvbDMgYXMgbnVtZXJp YywKKyAgICAgICBDQVNUKGNvbDMgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDMgQVMgaW50NCBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDMgQVMgb2lk IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FT VChjb2wzIGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2lu dDgsCisgICAgICAgQ0FTVChjb2wzIGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sMyBhcyBmbG9hdDggREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNv bDMgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVt ZXJpYywKKyAgICAgICBDQVNUKGNvbDMgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0 MTsKKworU0VMRUNUIGNvbDQgYXMgbnVtX2FyciwKKyAgICAgICBDQVNUKGNvbDQgQVMgaW50Mltd IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBpbnQyYXJyLAorICAgICAgIENB U1QoY29sNCBBUyBpbnQ0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGlu dDRhcnIsCisgICAgICAgQ0FTVChjb2w0IGFzIGludDhbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgaW50OGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgZmxvYXQ0W10gREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGY0YXJyLAorICAgICAgIENBU1QoY29s NCBhcyBmbG9hdDhbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgZjhhcnIs CisgICAgICAgQ0FTVChjb2w0IGFzIG51bWVyaWMoMTAsMSlbXSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgbnVtYXJyCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCitTRUxFQ1Qg Y29sMSBhcyBmbG9hdDQsCisgICAgICAgQ0FTVChjb2wxIEFTIGludDIgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FTVChjb2wxIEFTIGludDQg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FT VChjb2wxIEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lk LAorICAgICAgIENBU1QoY29sMSBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sMSBhcyBmbG9hdDQgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDEgYXMg ZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisg ICAgICAgQ0FTVChjb2wxIGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wxIGFzIG51bWVyaWMoMTAsMSkgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00g dGVzdF9zYWZlY2FzdDE7CisKK1NFTEVDVCBjb2wyIGFzIGZsb2F0OCwKKyAgICAgICBDQVNUKGNv bDIgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwK KyAgICAgICBDQVNUKGNvbDIgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDIgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2wyIGFzIGludDggREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChj b2wyIGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxv YXQ0LAorICAgICAgIENBU1QoY29sMiBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDIgYXMgbnVtZXJpYyBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNU KGNvbDIgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKworLS0gc2FmZSB0eXBl IGNhc3QgZm9yIHR5cGUgZGF0ZS90aW1lc3RhbXAvdGltZXN0YW1wdHovaW50ZXJ2YWwKK0NSRUFU RSBUQUJMRSB0ZXN0X3NhZmVjYXN0MigKKyAgY29sMCBkYXRlLCBjb2wxIHRpbWVzdGFtcCwgY29s MiB0aW1lc3RhbXB0eiwKKyAgY29sMyBpbnRlcnZhbCwgY29sNCB0aW1lLCBjb2w1IHRpbWV0eik7 CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MiBWQUxVRVMKKygnLWluZmluaXR5JywgJy1pbmZp bml0eScsICctaW5maW5pdHknLCAnLWluZmluaXR5JywKKyAgJzIwMDMtMDMtMDcgMTU6MzY6Mzkg QW1lcmljYS9OZXdfWW9yaycsICcyMDAzLTA3LTA3IDE1OjM2OjM5IEFtZXJpY2EvTmV3X1lvcmsn KSwKKygnLWluZmluaXR5JywgJ2luZmluaXR5JywgJ2luZmluaXR5JywgJ2luZmluaXR5JywgJzEx OjU5OjU5Ljk5IFBNJywgJzExOjU5OjU5Ljk5IFBNIFBEVCcpOworCitTRUxFQ1QgY29sMCBhcyBk YXRlLAorICAgICAgIENBU1QoY29sMCBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wwIEFTIGRh dGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAg Q0FTVChjb2wwIEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X3RpbWVzLAorICAgICAgIENBU1QoY29sMCBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXN0YW1w KDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2Nh bGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisKK1NFTEVDVCBjb2wxIGFzIHRpbWVzdGFtcCwKKyAg ICAgICBDQVNUKGNvbDEgQVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMSBBUyBkYXRlIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29s MSBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywK KyAgICAgICBDQVNUKGNvbDEgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wxIEFTIHRpbWVzdGFtcCgyKSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wX3NjYWxlCitGUk9N IHRlc3Rfc2FmZWNhc3QyOworCitTRUxFQ1QgY29sMiBhcyB0aW1lc3RhbXB0eiwKKyAgICAgICBD QVNUKGNvbDIgQVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMiBBUyBkYXRlIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29sMiBBUyB0 aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAg ICBDQVNUKGNvbDIgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWVzdGFtcCgyKSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wX3NjYWxlCitGUk9NIHRlc3Rf c2FmZWNhc3QyOworCitTRUxFQ1QgY29sMyBhcyBpbnRlcnZhbCwKKyAgICAgICBDQVNUKGNvbDMg QVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3Rp bWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29sMyBBUyB0aW1lIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNv bDMgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1l dHosCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wX3NjYWxlLAorICAgICAgIENBU1QoY29sMyBB UyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50 ZXJ2YWxfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisKK1NFTEVDVCBjb2w0IGFzIHRpbWUs CisgICAgICAgQ0FTVChjb2w0IEFTIHRpbWUoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29sNCBBUyB0aW1ldHogREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIElTIE5PVCBOVUxMIGFzIHRvX3RpbWV0eiwKKyAgICAg ICBDQVNUKGNvbDQgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2ludGVydmFsLAorICAgICAgIENBU1QoY29sNCBBUyBpbnRlcnZhbCgyKSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00g dGVzdF9zYWZlY2FzdDI7CisKK1NFTEVDVCBjb2w1IGFzIHRpbWV0eiwKKyAgICAgICBDQVNUKGNv bDUgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZSwK KyAgICAgICBDQVNUKGNvbDUgQVMgdGltZSgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fdGltZV9zY2FsZSwKKyAgICAgICBDQVNUKGNvbDUgQVMgdGltZXR6IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChj b2w1IEFTIHRpbWV0eig2KSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f dGltZXR6X3NjYWxlLAorICAgICAgIENBU1QoY29sNSBBUyBpbnRlcnZhbCBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWwsCisgICAgICAgQ0FTVChjb2w1IEFT IGludGVydmFsKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRl cnZhbF9zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MjsKKworLS0gdGVzdCBkZXBhcnNlCitTRVQg ZGF0ZXN0eWxlIFRPIElTTywgWU1EOworQ1JFQVRFIFZJRVcgc2FmZWNhc3R2aWV3IEFTCitTRUxF Q1QgQ0FTVCgnMTIzNCcgYXMgY2hhcigzKSBERUZBVUxUIC0xMTExIE9OIENPTlZFUlNJT04gRVJS T1IpLAorICAgICAgIENBU1QoMSBhcyBkYXRlIERFRkFVTFQgKCgnMjAyNS1EZWMtMDYnOjpkYXRl ICsgcmFuZG9tKG1pbj0+MSwgbWF4PT4xOjppbnQpKSkgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg Y2FzdDAsCisgICAgICAgQ0FTVChBUlJBWVtbJzEnXSwgWyd0aHJlZSddLFsnYSddXSBBUyBpbnRb XSBERUZBVUxUICd7MSwyfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDEsCisgICAgICAg Q0FTVChBUlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJywgJ2EnXV0gQVMgZGF0ZVtdIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MiwKKyAgICAgICBDQVNUKEFSUkFZWyd0 aHJlZSddIEFTIElOVFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBj YXN0MzsKK1xzdiBzYWZlY2FzdHZpZXcKK1NFTEVDVCAqIEZST00gc2FmZWNhc3R2aWV3OworCitD UkVBVEUgVklFVyBzYWZlY2FzdHZpZXcxIEFTCitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnXSwgWyd0 aHJlZSddLFsnYSddXSBBUyBkX2ludF9hcnIKKyAgICAgICAgICAgIERFRkFVTFQgJ3s0MSw0M30n IE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QxLAorICAgICAgIENBU1QoQVJSQVlbWycxJywg JzInLCAxLjFdLCBbJ3RocmVlJywgdHJ1ZSwgQicwMSddXSBBUyBkX2ludF9hcnIKKyAgICAgICAg ICAgIERFRkFVTFQgJ3s0MSw0M30nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QyOworXHN2 IHNhZmVjYXN0dmlldzEKK1NFTEVDVCAqIEZST00gc2FmZWNhc3R2aWV3MTsKKworRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgQ0FTVCgnMScgfHwgJ2EnIEFTIGludCBERUZBVUxU IDIgT04gQ09OVkVSU0lPTiBFUlJPUik7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNF TEVDVCBDQVNUKCdhJyBBUyBpbnQgREVGQVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworCitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnLCAnMics IDEuMV0sIFsndGhyZWUnLCB0cnVlLCBCJzAxJ11dIEFTIGRfaW50X2FyciBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CisKK1JFU0VUIGRhdGVzdHlsZTsKKworRFJPUCBWSUVXIHNh ZmVjYXN0dmlldzsKK0RST1AgVklFVyBzYWZlY2FzdHZpZXcxOworRFJPUCBUQUJMRSB0ZXN0X3Nh ZmVjYXN0MDsKK0RST1AgVEFCTEUgdGVzdF9zYWZlY2FzdDE7CitEUk9QIFRBQkxFIHRlc3Rfc2Fm ZWNhc3QyOworRFJPUCBUQUJMRSB0Y2FzdDsKK0RST1AgVEFCTEUgdGNhc3QxOworRFJPUCBGVU5D VElPTiByZXRfaW50ODsKK0RST1AgRlVOQ1RJT04gcmV0X3NldGludDsKK0RST1AgVFlQRSBjb21w X2RvbWFpbl93aXRoX3R5cG1vZDsKK0RST1AgVFlQRSBjb21wMjsKK0RST1AgRE9NQUlOIGRfbm90 YTsKK0RST1AgRE9NQUlOIGRfdmFyY2hhcjsKK0RST1AgRE9NQUlOIGRfaW50OGFycjsKK0RST1Ag RE9NQUlOIGRfaW50ODsKK0RST1AgRE9NQUlOIGRfaW50NDJhcnIxOworRFJPUCBET01BSU4gZF9p bnQ0MmFycjsKK0RST1AgRE9NQUlOIGRfaW50NDI7CitEUk9QIERPTUFJTiBkX2NoYXIzX25vdF9u dWxsOworRFJPUCBET01BSU4gZF9udW1lcmljOworRFJPUCBET01BSU4gZGRvbWFpbjsKK1JFU0VU IGV4dHJhX2Zsb2F0X2RpZ2l0czsKK1JFU0VUIGxjX21vbmV0YXJ5OwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Nhc3Quc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y3JlYXRlX2Nhc3Quc3FsCmluZGV4IDMyMTg3ODUzY2M3Li4wYTE1YTc5NWQ4NyAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Nhc3Quc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NyZWF0ZV9jYXN0LnNxbApAQCAtNjIsNiArNjIsNyBAQCAkJCBTRUxFQ1QgKCdi YXInOjp0ZXh0IHx8ICQxOjp0ZXh0KTsgJCQ7CiAKIENSRUFURSBDQVNUIChpbnQ0IEFTIGNhc3R0 ZXN0dHlwZSkgV0lUSCBGVU5DVElPTiBiYXJfaW50NF90ZXh0KGludDQpIEFTIElNUExJQ0lUOwog U0VMRUNUIDEyMzQ6OmludDQ6OmNhc3R0ZXN0dHlwZTsgLS0gU2hvdWxkIHdvcmsgbm93CitTRUxF Q1QgQ0FTVCgxMjM0OjppbnQ0IEFTIGNhc3R0ZXN0dHlwZSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7IC0tIGVycm9yCiAKIC0tIGNoZWNrIGRlcGVuZGVuY2llcyBnZW5lcmF0ZWQg Zm9yIHRoYXQKIFNFTEVDVCBwZ19kZXNjcmliZV9vYmplY3QoY2xhc3NpZCwgb2JqaWQsIG9ianN1 YmlkKSBhcyBvYmosCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lcXVpdmNsYXNz LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VxdWl2Y2xhc3Muc3FsCmluZGV4IDdmYzIxNTkz NDliLi45NmU2ZjczYzdiNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXF1aXZj bGFzcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXF1aXZjbGFzcy5zcWwKQEAgLTk4 LDYgKzk4LDExIEBAIGNyZWF0ZSBmdW5jdGlvbiBpbnQ4YWxpYXMxY21wKGludDgsIGludDhhbGlh czEpIHJldHVybnMgaW50CiBhbHRlciBvcGVyYXRvciBmYW1pbHkgaW50ZWdlcl9vcHMgdXNpbmcg YnRyZWUgYWRkCiAgIGZ1bmN0aW9uIDEgaW50OGFsaWFzMWNtcCAoaW50OCwgaW50OGFsaWFzMSk7 CiAKKy0tIGludDhhbGlhczIgYmluYXJ5LWNvZXJjaWJsZSB0byBpbnQ4LCB0aGlzIHNob3VsZCBu b3QgZmFpbAorc2VsZWN0IGNhc3QoJzEnOjppbnQ4IGFzIGludDhhbGlhczIgZGVmYXVsdCBudWxs IG9uIGNvbnZlcnNpb24gZXJyb3IpOworc2VsZWN0IGNhc3QoJzEnOjppbnQ4YWxpYXMyIGFzIGlu dDggZGVmYXVsdCBudWxsIG9uIGNvbnZlcnNpb24gZXJyb3IpOworc2VsZWN0IGNhc3QoJ2EnIGFz IGludDhhbGlhczIgZGVmYXVsdCBudWxsIG9uIGNvbnZlcnNpb24gZXJyb3IpOworCiBjcmVhdGUg dGFibGUgZWMwIChmZiBpbnQ4IHByaW1hcnkga2V5LCBmMSBpbnQ4LCBmMiBpbnQ4KTsKIGNyZWF0 ZSB0YWJsZSBlYzEgKGZmIGludDggcHJpbWFyeSBrZXksIGYxIGludDhhbGlhczEsIGYyIGludDhh bGlhczIpOwogY3JlYXRlIHRhYmxlIGVjMiAoeGYgaW50OCBwcmltYXJ5IGtleSwgeDEgaW50OGFs aWFzMSwgeDIgaW50OGFsaWFzMik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC94 bWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwveG1sLnNxbAppbmRleCBhYWZkMzk0MzNhNi4u ZGJmZWMyMGEwNWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3htbC5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwveG1sLnNxbApAQCAtMTYsNiArMTYsOCBAQCBTRUxFQ1Qg Y291bnQoKikgPSAwIEFTIHNraXBfdGVzdCBGUk9NIHhtbHRlc3QgXGdzZXQKIAogU0VMRUNUICog RlJPTSB4bWx0ZXN0OwogCitTRUxFQ1QgQ0FTVCgnPHdyb25nJzo6dGV4dCBBUyB4bWwgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3htbDsKKwogLS0gdGVzdCBub24tdGhy b3dpbmcgQVBJLCB0b28KIFNFTEVDVCBwZ19pbnB1dF9pc192YWxpZCgnPHZhbHVlPm9uZTwvdmFs dWU+JywgJ3htbCcpOwogU0VMRUNUIHBnX2lucHV0X2lzX3ZhbGlkKCc8dmFsdWU+b25lPC8nLCAn eG1sJyk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGM1ZGI2Y2E2NzA1Li42OWEwMDVh YTAzOSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI3ODIsNiArMjc4Miw4IEBAIFNU UkxFTgogU1YKIFNZTkNIUk9OSVpBVElPTl9CQVJSSUVSCiBTWVNURU1fSU5GTworU2FmZVR5cGVD YXN0RXhwcgorU2FmZVR5cGVDYXN0U3RhdGUKIFNhbXBsZVNjYW4KIFNhbXBsZVNjYW5HZXRTYW1w bGVTaXplX2Z1bmN0aW9uCiBTYW1wbGVTY2FuU3RhdGUKLS0gCjIuMzQuMQoK --00000000000078cb380654e2d4b8--