From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) by sourceware.org (Postfix) with ESMTPS id 0B82F3858C98; Wed, 28 Feb 2024 06:24:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0B82F3858C98 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0B82F3858C98 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::531 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709101463; cv=none; b=lJ4uJaA1wEYl7xni6BDnR7Do0X8LYgKpF1KWUKTvmgl3RSU6VbmjCkaXs4WTtmbdtpoKE78QE9KC4flIQnF0OoNBGwf54JZmP48ZhiHgoazulel2Fn2w6wCecnwLZv+zkpHoN5NliG8cYfV/znP0fEPSS5vVSO0ERGyqzEDMV4Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709101463; c=relaxed/simple; bh=ly6o1WydRXHjFG1NdhgZu3wPWB8jf0fS7d/rU9KaBNw=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=RT7ftRc8G/iCchn5NqG7G2dTwumnV5nRk34ydzhMIbYZCKTBjtcgjqpHO6/Il8SlVw4HS5RmJoawZcbNGqHY7BvS87IWfgtAS1yAre7gGL1zV6GF3DuicgF6nU06W64QsfqrQ9DhU13UmPzcxuzYwhgmEpcvy2lXHXhZ+gT9bZQ= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ed1-x531.google.com with SMTP id 4fb4d7f45d1cf-565a2c4cc1aso5637563a12.2; Tue, 27 Feb 2024 22:24:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709101460; x=1709706260; darn=gcc.gnu.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=axHlao38ifaFlHLmwGRvnVeKYjJLL1s+P8QHRpQVcoc=; b=j9uEQZuPAszWoTppgSuJQIdaSFPq5dKIm71Ep0+D6aSEkYBoe0agGuvKSOPNQDP8sc 1wdktPIEWcpC/P0aL/zqqiMptSWPgMtHZh38VNFI5AcjeT+UJPEHQTDQGXtKWBsAMlWz Dsl9l4NzbmOeF/Zl1QzQ0W5N5GXPrsTTboZLD6kQ3/d452CuKjY+7l6JjMOtaBCIbcx7 s4Rlw7wUKD+0pwgIWuBADtSYKV2wTX4W6x46fLmvWplqQw7C72UFa5rPbqextRTL64ka dCDnDD3KyG3av29mIv3gbxeqAoDXv3pvUl6w94F8+3E58dj9Zyst2sLcum5V6UPmg+H8 +rdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709101460; x=1709706260; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=axHlao38ifaFlHLmwGRvnVeKYjJLL1s+P8QHRpQVcoc=; b=hSH9cioW+5NfChuTlLza52BH8W4ZI/9BTdZ1c5Qa2sbM9yCHG1xQDA/Au2T2I2ZZn8 X/DaeWgzdtpvAkGA7E7g92yad/VX7NDZTiGiCHnEWEcRrLWkKU6xBh6iiyfxofYssijP BFbwe+Yc0enLPlOeCab/ORaQHjf2TFKb5ezdpqUlUDhiKweyMlT4zf1QfA2RVx1Rr03j JKWAY2Pl5dtSD2nCfLAtN+CI03eED/WOG99yqYPi4fdsI9Bsx43px0hXnTEDLEA/W7Kp DWPzkZUnarCKQPmC9J3hA/hu8oinzvLXWK/Cl4r8Js8hVpXx+sbNNH3cxi80VKHQ0xPl d/gw== X-Forwarded-Encrypted: i=1; AJvYcCVwn2EOZ1PHuZx/kMoEg0lC1SlzrXxmoBxD7l2lY0Bc9ZgXheBvbhZ7/75nAcp3WYoEbojY2/0Z58i0zAy4DBqqJG0I X-Gm-Message-State: AOJu0Yy2OAavZ7Ug889nLTKYSC2ZrzpkvCSlEH4RKSUGhXH3kKy43vyE tdsOZ8+XbDcNuIt63nTh0r1y2L7o4WY89x1BmhOo1SSx7jXac2qqgS2+Qd9HDmTq3uri+4TaWv1 V0/VBfyMdVnsvs7apTGgcxtU/hgf8KzOy X-Google-Smtp-Source: AGHT+IHuKsgvKkaLV3eoX0KhKeOIE9EOnxIQUDx4yESseezRNlDjOHhOARbHTeW61fnt/hy3kOXPy8HaVGkEciV3ILE= X-Received: by 2002:a17:906:1718:b0:a3e:8f38:8d76 with SMTP id c24-20020a170906171800b00a3e8f388d76mr7177158eje.59.1709101459443; Tue, 27 Feb 2024 22:24:19 -0800 (PST) MIME-Version: 1.0 References: <5a4694d0-c610-4297-8255-77a15cda92c4@gmx.de> In-Reply-To: From: Alexander Westbrooks Date: Wed, 28 Feb 2024 00:24:07 -0600 Message-ID: Subject: Re: [PATCH] Fortran - Error compiling PDT Type-bound Procedures [PR82943/86148/86268] To: Harald Anlauf Cc: gcc-patches@gcc.gnu.org, fortran@gcc.gnu.org Content-Type: multipart/mixed; boundary="00000000000060294206126b31d1" X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --00000000000060294206126b31d1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Harald, Jerry helped me figure out my editor settings so that I could fix whitespace and formatting issues in my code. With my editor configured correctly, I saw that my code was not conforming to coding standards as I previously thought it was. I have fixed those things and updated my patch. Thank you for your patience. Let me know if this is okay to push to the trunk. Thanks, Alexander Westbrooks On Sun, Feb 25, 2024 at 2:40=E2=80=AFPM Alexander Westbrooks wrote: > > Harald, > > Thank you for reviewing my code. I've been doing research and debugging t= o investigate the error thrown by Intel and NAG for the deferred parameter = in the dummy variable declaration. I found where the problem was and added = the fix as part of my patch. I've attached the patch as a file, which also = includes your feedback and suggested fixes. I've updated the test case pdt_= 37.f03 to check for the POINTER or ALLOCATABLE error as you suggested. > > All regression tests pass, including the new ones, after including the fi= x for the POINTER or ALLOCATABLE error for CLASS declarations of PDTs when = deferred length parameters are used. This was tested on WSL 2, with Ubuntu = 20.04 distro. > > Is this okay to push to the trunk? > > Thanks, > > Alexander Westbrooks > > > On Sun, Feb 11, 2024 at 2:11=E2=80=AFPM Harald Anlauf wro= te: >> >> Hi Alex, >> >> I've been unable to apply your patch to my local trunk, likely due to >> whitespace issues my newsreader handles differently from your site. >> I see it inline instead of attached. >> >> A few general remarks: >> >> Please follow the general recommendation regarding style if possible, >> see https://www.gnu.org/prep/standards/standards.html#Formatting >> regarding formatting/whitespace use (5.1) and comments (5.2) >> >> Also, when an error message text spans multiple lines, please place the >> whitespace at the end of a line, not at the beginning of the new one: >> >> > + if ( resolve_bindings_derived->attr.pdt_template && >> > + !gfc_pdt_is_instance_of(resolve_bindings_derived, >> > + CLASS_DATA(me_arg)->ts.u.derived)) >> > + { >> > + gfc_error ("Argument %qs of %qs with PASS(%s) at %L must be of" >> > + " the parametric derived-type %qs", me_arg->name, proc->name, >> >> gfc_error ("Argument %qs of %qs with PASS(%s) at %L must be of " >> "the parametric derived-type %qs", me_arg->name, >> proc->name, >> >> > + me_arg->name, &where, resolve_bindings_derived->name); >> > + goto error; >> > + } >> >> The following change is almost unreadable: the lnegthy comment is split >> over three parts and almost hides the code. Couldn't this be combined >> into one comment before the function? >> >> > diff --git a/gcc/fortran/symbol.cc b/gcc/fortran/symbol.cc >> > index fddf68f8398..11f4bac0415 100644 >> > --- a/gcc/fortran/symbol.cc >> > +++ b/gcc/fortran/symbol.cc >> > @@ -5172,6 +5172,35 @@ gfc_type_is_extension_of (gfc_symbol *t1, gfc_s= ymbol >> > *t2) >> > return gfc_compare_derived_types (t1, t2); >> > } >> > >> > +/* Check if a parameterized derived type t2 is an instance of a PDT >> > template t1 */ >> > + >> > +bool >> > +gfc_pdt_is_instance_of(gfc_symbol *t1, gfc_symbol *t2) >> > +{ >> > + if ( !t1->attr.pdt_template || !t2->attr.pdt_type ) >> > + return false; >> > + >> > + /* >> > + in decl.cc, gfc_get_pdt_instance, a pdt instance is given a 3 >> > character prefix "Pdt", followed >> > + by an underscore list of the kind parameters, up to a maximum of = 8. >> > + >> > + So to check if a PDT Type corresponds to the template, extract th= e >> > core derive_type name, >> > + and then see if it is type compatible by name... >> > + >> > + For example: >> > + >> > + Pdtf_2_2 -> extract out the 'f' -> see if the derived type 'f' is >> > compatible with symbol t1 >> > + */ >> > + >> > + // Starting at index 3 of the string in order to skip past the 'Pdt= ' >> > prefix >> > + // Also, here the length of the template name is used in order to a= void >> > the >> > + // kind parameter suffixes that are placed at the end of PDT instan= ce >> > names. >> > + if ( !(strncmp(&(t2->name[3]), t1->name, strlen(t1->name)) =3D=3D 0= ) ) >> > + return false; >> > + >> > + return true; >> > +} >> > + >> > >> > /* Check if two typespecs are type compatible (F03:5.1.1.2): >> > If ts1 is nonpolymorphic, ts2 must be the same type. >> >> The following testcase tests for errors. I tried Intel and NAG on it >> after commenting the 'contains' section of the type desclaration. >> Both complained about subroutine deferred_len_param, e.g. >> >> Intel: >> A colon may only be used as a type parameter value in the declaration of >> an object that has the POINTER or ALLOCATABLE attribute. [THIS] >> class(param_deriv_type(:)), intent(inout) :: this >> >> NAG: >> Entity THIS of type PARAM_DERIV_TYPE(A=3D:) has a deferred length type >> parameter but is not a data pointer or allocatable >> >> Do we detect this after your patch? If the answer is yes, >> can we add another subroutine where we check for this error? >> (the dg-error suggests we only expect assumed len type parameters.) >> If no, maybe add a comment in the testcase that this subroutine >> may need updating later. >> >> > diff --git a/gcc/testsuite/gfortran.dg/pdt_37.f03 >> > b/gcc/testsuite/gfortran.dg/pdt_37.f03 >> > new file mode 100644 >> > index 00000000000..68d376fad25 >> > --- /dev/null >> > +++ b/gcc/testsuite/gfortran.dg/pdt_37.f03 >> > @@ -0,0 +1,34 @@ >> > +! { dg-do compile } >> > +! >> > +! Tests the fixes for PR82943. >> > +! >> > +! This test focuses on the errors produced by incorrect LEN parameter= s for >> > dummy >> > +! arguments of PDT Typebound Procedures. >> > +! >> > +! Contributed by Alexander Westbrooks >> > +! >> > +module test_len_param >> > + >> > + type :: param_deriv_type(a) >> > + integer, len :: a >> > + contains >> > + procedure :: assumed_len_param ! Good. No error expe= cted. >> > + procedure :: deferred_len_param ! { dg-error "All LEN= type >> > parameters of the passed dummy argument" } >> > + procedure :: fixed_len_param ! { dg-error "All LEN= type >> > parameters of the passed dummy argument" } >> > + end type >> > + >> > +contains >> > + subroutine assumed_len_param(this) >> > + class(param_deriv_type(*)), intent(inout) :: this >> > + end subroutine >> > + >> > + subroutine deferred_len_param(this) >> > + class(param_deriv_type(:)), intent(inout) :: this >> > + end subroutine >> > + >> > + subroutine fixed_len_param(this) >> > + class(param_deriv_type(10)), intent(inout) :: this >> > + end subroutine >> > + >> > +end module >> > + >> --00000000000060294206126b31d1 Content-Type: application/octet-stream; name="0001-Fortran-Error-compiling-PDT-Type-bound-Procedures-PR-v3.patch" Content-Disposition: attachment; filename="0001-Fortran-Error-compiling-PDT-Type-bound-Procedures-PR-v3.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lt5evf1d0 RnJvbSBkOWE0NjU5MjYwNmQ5MzNkNTc0MmYwZGVjMDkzYWFkYjY0NjgyNDAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgV2VzdGJyb29rcyA8YWxleGFuZGVyd0BnY2Mu Z251Lm9yZz4KRGF0ZTogV2VkLCAyOCBGZWIgMjAyNCAwMDowNTozNSAtMDYwMApTdWJqZWN0OiBb UEFUQ0hdIEZvcnRyYW4gLSBFcnJvciBjb21waWxpbmcgUERUIFR5cGUtYm91bmQgUHJvY2VkdXJl cwogW1BSODI5NDMvODYxNDgvODYyNjhdCgpUaGlzIHBhdGNoIGFsbG93cyBwYXJhbWV0ZXJpemVk IGRlcml2ZWQgdHlwZXMgdG8gY29tcGlsZSBzdWNjZXNzZnVsbHkKd2hlbiB0eXBlYm91bmQgcHJv Y2VkdXJlcyBhcmUgc3BlY2lmaWVkIGluIHRoZSB0eXBlIHNwZWNpZmljYXRpb24uCkZ1cnRoZXJt b3JlLCBpdCBhbGxvd3MgZnVuY3Rpb24gY2FsbHMgZm9yIFBEVHMgYnkgc2V0dGluZyB0aGUKZjJr X2Rlcml2ZWQgc3BhY2Ugb2YgUERUIGluc3RhbmNlcyB0byByZWZlcmVuY2UgdGhlaXIgb3JpZ2lu YWwgdGVtcGxhdGUsCnRoZXJlYnkgZ2l2aW5nIGl0IHJlZmVyZW50aWFsIGFjY2VzcyB0byB0aGUg dHlwZWJvdW5kIHByb2NlZHVyZXMgb2YgdGhlCnRlbXBsYXRlLiBMYXN0bHksIGl0IGFkZHMgYSBj aGVjayBmb3IgZGVmZXJyZWQgbGVuZ3RoIHBhcmFtZXRlcnMgb2YKUERUcyBpbiBDTEFTUyBkZWNs YXJhdGlvbiBzdGF0ZW1lbnRzLCBhbmQgY29ycmVjdGx5IHRocm93cyBhbiBlcnJvciBpZgpzdWNo IGRlY2xhcmF0aW9ucyBhcmUgbWlzc2luZyBQT0lOVEVSIG9yIEFMTE9DQVRBQkxFIGF0dHJpYnV0 ZXMuCgoyMDI0LTAyLTI4ICBBbGV4YW5kZXIgV2VzdGJyb29rcyAgPGFsZXhhbmRlcndAZ2NjLmdu dS5vcmc+CgpnY2MvZm9ydHJhbi9DaGFuZ2VMb2c6CiAgICAgICAgUFIgZm9ydHJhbi84Mjk0Mwog ICAgICAgIFBSIGZvcnRyYW4vODYxNDgKICAgICAgICBQUiBmb3J0cmFuLzg2MjY4CgkqIGRlY2wu Y2MgKGdmY19nZXRfcGR0X2luc3RhbmNlKTogU2V0IHRoZSBQRFQgaW5zdGFuY2UgZmllbGQKICAg ICAgICAgICdmMmtfZGVyaXZlZCcsIGlmIG5vdCBzZXQgYWxyZWFkeSwgdG8gcG9pbnQgdG8gdGhl IGdpdmVuCiAgICAgICAgICBQRFQgdGVtcGxhdGUgJ2Yya19kZXJpdmVkJyBuYW1lc3BhY2UgaW4g b3JkZXIgdG8gZ2l2ZSB0aGUKICAgICAgICAgIFBEVCBpbnN0YW5jZSByZWZlcmVudGlhbCBhY2Nl c3MgdG8gdGhlIHR5cGVib3VuZCBwcm9jZWR1cmVzCiAgICAgICAgICBvZiB0aGUgdGVtcGxhdGUu CgkqIGdmb3J0cmFuLmggKGdmY19wZHRfaXNfaW5zdGFuY2Vfb2YpOiBBZGQgcHJvdG90eXBlLgoJ KiByZXNvbHZlLmNjIChyZXNvbHZlX3R5cGVib3VuZF9wcm9jZWR1cmUpOiBJZiB0aGUgZGVyaXZl ZCB0eXBlCiAgICAgICAgICBkb2VzIG5vdCBoYXZlIHRoZSBhdHRyaWJ1dGUgJ3BkdF90ZW1wbGF0 ZScgc2V0LCBjb21wYXJlIHRoZQogICAgICAgICAgZHVtbXkgYXJndW1lbnQgdG8gdGhlICdyZXNv bHZlX2JpbmRpbmdzX2Rlcml2ZWQnIHR5cGUgbGlrZSB1c3VhbC4KICAgICAgICAgIElmIHRoZSBk ZXJpdmVkIHR5cGUgaXMgYSAncGR0X3RlbXBsYXRlJywgdGhlbiBjaGVjayBpZiB0aGUKICAgICAg ICAgIGR1bW15IGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIHRoZSBQRFQgdGVtcGxhdGUuIElm IHRoZSBkZXJpdmVkCiAgICAgICAgICB0eXBlIGlzIGEgUERUIHRlbXBsYXRlLCBhbmQgdGhlIGR1 bW15IGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mCiAgICAgICAgICB0aGF0IHRlbXBsYXRlLCBi dXQgdGhlIGR1bW15IGFyZ3VtZW50ICdwYXJhbV9saXN0JyBpcyBub3QKICAgICAgICAgIFNQRUNf QVNTVU1FRCwgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBMRU4gcGFyYW1ldGVycyBpbiB0aGUKICAg ICAgICAgIGR1bW15IGFyZ3VtZW50LiBJZiB0aGVyZSBhcmUgbm8gTEVOIHBhcmFtZXRlcnMsIHRo ZW4gdGhpcyBpbXBsaWVzCiAgICAgICAgICB0aGF0IHRoZXJlIGFyZSBvbmx5IEtJTkQgcGFyYW1l dGVycyBpbiB0aGUgZHVtbXkgYXJndW1lbnQuCiAgICAgICAgICBJZiB0aGVyZSBhcmUgTEVOIHBh cmFtZXRlcnMsIHRoaXMgd291bGQgYmUgYW4gZXJyb3IsIGZvciBhbGwKICAgICAgICAgIExFTiBw YXJhbWV0ZXJzIGZvciB0aGUgZHVtbXkgYXJndW1lbnQgTVVTVCBiZSBhc3N1bWVkIGZvcgogICAg ICAgICAgdHlwZWJvdW5kIHByb2NlZHVyZXMgb2YgUERUcy4KICAgICAgICAocmVzb2x2ZV9wZHQp OiBBZGQgYSBjaGVjayBmb3IgQUxMT0NBVEFCTEUgYW5kIFBPSU5URVIgYXR0cmlidXRlcyBmb3IK ICAgICAgICAgIFNQRUNfREVGRVJSRUQgcGFyYW1ldGVycyBvZiBQRFQgY2xhc3Mgc3ltYm9scy4g IEFMTE9DQVRBQkxFIGFuZAogICAgICAgICAgUE9JTlRFUiBhdHRyaWJ1dGVzIGZvciBhIFBEVCBj bGFzcyBzeW1ib2wgYXJlIHN0b3JlZCBpbiB0aGUKICAgICAgICAgICdjbGFzc19wb2ludGVyJyBh bmQgJ2FsbG9jYXRhYmxlJyBhdHRyaWJ1dGVzIG9mIHRoZSAnX2RhdGEnCiAgICAgICAgICBjb21w b25lbnQgcmVzcGVjdGl2ZWx5LgoJKiBzeW1ib2wuY2MgKGdmY19wZHRfaXNfaW5zdGFuY2Vfb2Yp OiBOZXcgZnVuY3Rpb24uCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCVBSIGZvcnRyYW4vODI5 NDMKCVBSIGZvcnRyYW4vODYxNDgKCVBSIGZvcnRyYW4vODYyNjgKCSogZ2ZvcnRyYW4uZGcvcGR0 XzQuZjAzOiBVcGRhdGUgbW9kaWZpZWQgZXJyb3IgbWVzc2FnZS4KCSogZ2ZvcnRyYW4uZGcvcGR0 XzM0LmYwMzogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL3BkdF8zNS5mMDM6IE5ldyB0ZXN0LgoJ KiBnZm9ydHJhbi5kZy9wZHRfMzYuZjAzOiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvcGR0XzM3 LmYwMzogTmV3IHRlc3QuCgpTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgV2VzdGJyb29rcyA8YWxl eGFuZGVyd0BnY2MuZ251Lm9yZz4KLS0tCiBnY2MvZm9ydHJhbi9kZWNsLmNjICAgICAgICAgICAg ICAgICAgfCAxNSArKysrKysKIGdjYy9mb3J0cmFuL2dmb3J0cmFuLmggICAgICAgICAgICAgICB8 ICAxICsKIGdjYy9mb3J0cmFuL3Jlc29sdmUuY2MgICAgICAgICAgICAgICB8IDc0ICsrKysrKysr KysrKysrKysrKysrKysrKy0tLS0KIGdjYy9mb3J0cmFuL3N5bWJvbC5jYyAgICAgICAgICAgICAg ICB8IDI3ICsrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzM0LmYwMyB8 IDQyICsrKysrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzM1LmYw MyB8IDQ1ICsrKysrKysrKysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF8z Ni5mMDMgfCA2NSArKysrKysrKysrKysrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvcGR0XzM3LmYwMyB8IDc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGdjYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzQuZjAzICB8ICAyICstCiA5IGZpbGVzIGNoYW5nZWQs IDMzNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF8zNC5mMDMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF8zNS5mMDMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF8zNi5mMDMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF8zNy5mMDMKCmRpZmYgLS1naXQgYS9nY2MvZm9y dHJhbi9kZWNsLmNjIGIvZ2NjL2ZvcnRyYW4vZGVjbC5jYwppbmRleCA1MDNlY2I4ZDliNS4uYTc1 NzZmNGJjNDAgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL2RlY2wuY2MKKysrIGIvZ2NjL2ZvcnRy YW4vZGVjbC5jYwpAQCAtNDA4Myw2ICs0MDgzLDIxIEBAIGdmY19nZXRfcGR0X2luc3RhbmNlIChn ZmNfYWN0dWFsX2FyZ2xpc3QgKnBhcmFtX2xpc3QsIGdmY19zeW1ib2wgKipzeW0sCiAJICBjb250 aW51ZTsKIAl9CiAKKyAgICAgIC8qIEFkZHJlc3NpbmcgUFI4Mjk0MywgdGhpcyB3aWxsIGZpeCB0 aGUgaXNzdWUgd2hlcmUgYSBmdW5jdGlvbiBvcgorCSBzdWJyb3V0aW5lIGlzIGRlY2xhcmVkIGFz IG5vdCBhIG1lbWJlciBvZiB0aGUgUERUIGluc3RhbmNlLgorCSBUaGUgcmVhc29uIGZvciB0aGlz IGlzIGJlY2F1c2UgdGhlIFBEVCBpbnN0YW5jZSBkaWQgbm90IGhhdmUgYWNjZXNzCisJIHRvIGl0 cyB0ZW1wbGF0ZSdzIGYya19kZXJpdmVkIG5hbWVzcGFjZSBpbiBvcmRlciB0byBmaW5kIHRoZQor CSB0eXBlYm91bmQgcHJvY2VkdXJlcy4KKworCSBUaGUgbnVtYmVyIG9mIHJlZmVyZW5jZXMgdG8g dGhlIFBEVCB0ZW1wbGF0ZSdzIGYya19kZXJpdmVkIHdpbGwKKwkgZW5zdXJlIHRoYXQgZjJrX2Rl cml2ZWQgaXMgcHJvcGVybHkgZnJlZWQgbGF0ZXIgb24uICAqLworCisgICAgICBpZiAoIWluc3Rh bmNlLT5mMmtfZGVyaXZlZCAmJiBwZHQtPmYya19kZXJpdmVkKQorCXsKKwkgIGluc3RhbmNlLT5m MmtfZGVyaXZlZCA9IHBkdC0+ZjJrX2Rlcml2ZWQ7CisJICBpbnN0YW5jZS0+ZjJrX2Rlcml2ZWQt PnJlZnMrKzsKKwl9CisKICAgICAgIC8qIFNldCB0aGUgY29tcG9uZW50IGtpbmQgdXNpbmcgdGhl IHBhcmFtZXRlcml6ZWQgZXhwcmVzc2lvbi4gICovCiAgICAgICBpZiAoKGMxLT50cy5raW5kID09 IDAgfHwgYzEtPnRzLnR5cGUgPT0gQlRfQ0hBUkFDVEVSKQogCSAgICYmIGMxLT5raW5kX2V4cHIg IT0gTlVMTCkKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2dmb3J0cmFuLmggYi9nY2MvZm9ydHJh bi9nZm9ydHJhbi5oCmluZGV4IGZkODQzYTMyNDFkLi5lYmJhMjMzNmUxMiAxMDA2NDQKLS0tIGEv Z2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAorKysgYi9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCkBAIC0z NTg2LDYgKzM1ODYsNyBAQCB2b2lkIGdmY190cmF2ZXJzZV9nc3ltYm9sIChnZmNfZ3N5bWJvbCAq LCB2b2lkICgqKShnZmNfZ3N5bWJvbCAqLCB2b2lkICopLCB2b2lkCiBnZmNfdHlwZWJvdW5kX3By b2MqIGdmY19nZXRfdHlwZWJvdW5kX3Byb2MgKGdmY190eXBlYm91bmRfcHJvYyopOwogZ2ZjX3N5 bWJvbCogZ2ZjX2dldF9kZXJpdmVkX3N1cGVyX3R5cGUgKGdmY19zeW1ib2wqKTsKIGJvb2wgZ2Zj X3R5cGVfaXNfZXh0ZW5zaW9uX29mIChnZmNfc3ltYm9sICosIGdmY19zeW1ib2wgKik7Citib29s IGdmY19wZHRfaXNfaW5zdGFuY2Vfb2YgKGdmY19zeW1ib2wgKiwgZ2ZjX3N5bWJvbCAqKTsKIGJv b2wgZ2ZjX3R5cGVfY29tcGF0aWJsZSAoZ2ZjX3R5cGVzcGVjICosIGdmY190eXBlc3BlYyAqKTsK IAogdm9pZCBnZmNfY29weV9mb3JtYWxfYXJnc19pbnRyIChnZmNfc3ltYm9sICosIGdmY19pbnRy aW5zaWNfc3ltICosCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9yZXNvbHZlLmNjIGIvZ2NjL2Zv cnRyYW4vcmVzb2x2ZS5jYwppbmRleCA0NGY4OWY2YWZiNC4uODUyZTA4MjBlNmEgMTAwNjQ0Ci0t LSBhL2djYy9mb3J0cmFuL3Jlc29sdmUuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jYwpA QCAtMTQ3NjAsMTUgKzE0NzYwLDY5IEBAIHJlc29sdmVfdHlwZWJvdW5kX3Byb2NlZHVyZSAoZ2Zj X3N5bXRyZWUqIHN0cmVlKQogCSAgZ290byBlcnJvcjsKIAl9CiAKLSAgICAgIGlmIChDTEFTU19E QVRBIChtZV9hcmcpLT50cy51LmRlcml2ZWQKLQkgICE9IHJlc29sdmVfYmluZGluZ3NfZGVyaXZl ZCkKKyAgICAgIC8qIFRoZSBkZXJpdmVkIHR5cGUgaXMgbm90IGEgUERUIHRlbXBsYXRlLiAgUmVz b2x2ZSBhcyB1c3VhbC4gICovCisgICAgICBpZiAoIXJlc29sdmVfYmluZGluZ3NfZGVyaXZlZC0+ YXR0ci5wZHRfdGVtcGxhdGUKKwkgICYmIChDTEFTU19EQVRBIChtZV9hcmcpLT50cy51LmRlcml2 ZWQgIT0gcmVzb2x2ZV9iaW5kaW5nc19kZXJpdmVkKSkKIAl7Ci0JICBnZmNfZXJyb3IgKCJBcmd1 bWVudCAlcXMgb2YgJXFzIHdpdGggUEFTUyglcykgYXQgJUwgbXVzdCBiZSBvZiIKLQkJICAgICAi IHRoZSBkZXJpdmVkLXR5cGUgJXFzIiwgbWVfYXJnLT5uYW1lLCBwcm9jLT5uYW1lLAorCSAgZ2Zj X2Vycm9yICgiQXJndW1lbnQgJXFzIG9mICVxcyB3aXRoIFBBU1MoJXMpIGF0ICVMIG11c3QgYmUg b2YgIgorCQkgICAgICJ0aGUgZGVyaXZlZC10eXBlICVxcyIsIG1lX2FyZy0+bmFtZSwgcHJvYy0+ bmFtZSwKIAkJICAgICBtZV9hcmctPm5hbWUsICZ3aGVyZSwgcmVzb2x2ZV9iaW5kaW5nc19kZXJp dmVkLT5uYW1lKTsKIAkgIGdvdG8gZXJyb3I7CiAJfQogCisgICAgICBpZiAocmVzb2x2ZV9iaW5k aW5nc19kZXJpdmVkLT5hdHRyLnBkdF90ZW1wbGF0ZQorCSAgJiYgIWdmY19wZHRfaXNfaW5zdGFu Y2Vfb2YgKHJlc29sdmVfYmluZGluZ3NfZGVyaXZlZCwKKwkJCQkgICAgIENMQVNTX0RBVEEgKG1l X2FyZyktPnRzLnUuZGVyaXZlZCkpCisJeworCSAgZ2ZjX2Vycm9yICgiQXJndW1lbnQgJXFzIG9m ICVxcyB3aXRoIFBBU1MoJXMpIGF0ICVMIG11c3QgYmUgb2YgIgorCQkgICAgICJ0aGUgcGFyYW1l dHJpYyBkZXJpdmVkLXR5cGUgJXFzIiwgbWVfYXJnLT5uYW1lLAorCQkgICAgIHByb2MtPm5hbWUs IG1lX2FyZy0+bmFtZSwgJndoZXJlLAorCQkgICAgIHJlc29sdmVfYmluZGluZ3NfZGVyaXZlZC0+ bmFtZSk7CisJICBnb3RvIGVycm9yOworCX0KKworICAgICAgaWYgKCByZXNvbHZlX2JpbmRpbmdz X2Rlcml2ZWQtPmF0dHIucGR0X3RlbXBsYXRlCisJICAmJiBnZmNfcGR0X2lzX2luc3RhbmNlX29m IChyZXNvbHZlX2JpbmRpbmdzX2Rlcml2ZWQsCisJCQkJICAgIENMQVNTX0RBVEEgKG1lX2FyZykt PnRzLnUuZGVyaXZlZCkKKyAgICAgICAgICAmJiAobWVfYXJnLT5wYXJhbV9saXN0ICE9IE5VTEwp CisgICAgICAgICAgJiYgKGdmY19zcGVjX2xpc3RfdHlwZSAobWVfYXJnLT5wYXJhbV9saXN0LAor CQkJCSBDTEFTU19EQVRBKG1lX2FyZyktPnRzLnUuZGVyaXZlZCkKKwkJCQkgIT0gU1BFQ19BU1NV TUVEKSkKKwl7CisKKyAgICAgICAgICAvKiBBZGQgYSBjaGVjayB0byB2ZXJpZnkgaWYgdGhlcmUg YXJlIGFueSBMRU4gcGFyYW1ldGVycyBpbiB0aGUKKwkgICAgIGZpcnN0IHBsYWNlLiAgSWYgdGhl cmUgYXJlIExFTiBwYXJhbWV0ZXJzLCB0aHJvdyB0aGlzIGVycm9yLgorCSAgICAgSWYgdGhlcmUg YXJlIG9ubHkgS0lORCBwYXJhbWV0ZXJzLCB0aGVuIGRvbid0IHRyaWdnZXIKKwkgICAgIHRoaXMg ZXJyb3IuICAqLworCSAgZ2ZjX2NvbXBvbmVudCAqYzsKKwkgIGJvb2wgc2Vlbl9sZW5fcGFyYW0g PSBmYWxzZTsKKwkgIGdmY19hY3R1YWxfYXJnbGlzdCAqbWVfYXJnX3BhcmFtID0gbWVfYXJnLT5w YXJhbV9saXN0OworCisJICBmb3IgKDsgbWVfYXJnX3BhcmFtOyBtZV9hcmdfcGFyYW0gPSBtZV9h cmdfcGFyYW0tPm5leHQpCisJICAgIHsKKwkgICAgICBjID0gZ2ZjX2ZpbmRfY29tcG9uZW50IChD TEFTU19EQVRBKG1lX2FyZyktPnRzLnUuZGVyaXZlZCwKKwkJCQkgICAgIG1lX2FyZ19wYXJhbS0+ bmFtZSwgdHJ1ZSwgdHJ1ZSwgTlVMTCk7CisKKwkgICAgICBnY2NfYXNzZXJ0IChjICE9IE5VTEwp OworCisJICAgICAgaWYgKGMtPmF0dHIucGR0X2tpbmQpCisJICAgICAgICBjb250aW51ZTsKKwor CSAgICAgIC8qIEdldHRpbmcgaGVyZSBpbXBsaWVzIHRoYXQgdGhlcmUgaXMgYSBwZHRfbGVuIHBh cmFtZXRlcgorCSAgICAgICAgIGluIHRoZSBsaXN0LiAgKi8KKwkgICAgICBzZWVuX2xlbl9wYXJh bSA9IHRydWU7CisJICAgICAgYnJlYWs7CisJICAgIH0KKworCSAgICBpZiAoc2Vlbl9sZW5fcGFy YW0pCisJICAgICAgeworCQlnZmNfZXJyb3IgKCJBbGwgTEVOIHR5cGUgcGFyYW1ldGVycyBvZiB0 aGUgcGFzc2VkIGR1bW15ICIKKwkJCSAgICJhcmd1bWVudCAlcXMgb2YgJXFzIGF0ICVMIG11c3Qg YmUgQVNTVU1FRC4iLAorCQkJICAgbWVfYXJnLT5uYW1lLCBwcm9jLT5uYW1lLCAmd2hlcmUpOwor CQlnb3RvIGVycm9yOworCSAgICAgIH0KKwl9CisKICAgICAgIGdjY19hc3NlcnQgKG1lX2FyZy0+ dHMudHlwZSA9PSBCVF9DTEFTUyk7CiAgICAgICBpZiAoQ0xBU1NfREFUQSAobWVfYXJnKS0+YXMg JiYgQ0xBU1NfREFUQSAobWVfYXJnKS0+YXMtPnJhbmsgIT0gMCkKIAl7CkBAIC0xNTg4NiwxMSAr MTU5NDAsMTMgQEAgcmVzb2x2ZV9wZHQgKGdmY19zeW1ib2wqIHN5bSkKICAgICAgIGVsc2UgaWYg KHBhcmFtLT5zcGVjX3R5cGUgPT0gU1BFQ19BU1NVTUVEKQogCWFzc3VtZWRfbGVuX2V4cHJzID0g dHJ1ZTsKIAotICAgICAgaWYgKHBhcmFtLT5zcGVjX3R5cGUgPT0gU1BFQ19ERUZFUlJFRAotCSAg JiYgIWF0dHItPmFsbG9jYXRhYmxlICYmICFhdHRyLT5wb2ludGVyKQotCWdmY19lcnJvciAoIlRo ZSBvYmplY3QgJXFzIGF0ICVMIGhhcyBhIGRlZmVycmVkIExFTiAiCi0JCSAgICJwYXJhbWV0ZXIg JXFzIGFuZCBpcyBuZWl0aGVyIGFsbG9jYXRhYmxlICIKLQkJICAgIm5vciBhIHBvaW50ZXIiLCBz eW0tPm5hbWUsICZzeW0tPmRlY2xhcmVkX2F0LAorICAgICAgaWYgKHBhcmFtLT5zcGVjX3R5cGUg PT0gU1BFQ19ERUZFUlJFRCAmJiAhYXR0ci0+YWxsb2NhdGFibGUKKwkgICYmICgoc3ltLT50cy50 eXBlID09IEJUX0RFUklWRUQgJiYgIWF0dHItPnBvaW50ZXIpCisJICAgICAgfHwgKHN5bS0+dHMu dHlwZSA9PSBCVF9DTEFTUyAmJiAhYXR0ci0+Y2xhc3NfcG9pbnRlcikpKQorCWdmY19lcnJvciAo IkVudGl0eSAlcXMgYXQgJUwgaGFzIGEgZGVmZXJyZWQgTEVOICIKKwkJICAgInBhcmFtZXRlciAl cXMgYW5kIHJlcXVpcmVzIGVpdGhlciB0aGUgUE9JTlRFUiAiCisJCSAgICJvciBBTExPQ0FUQUJM RSBhdHRyaWJ1dGUiLAorCQkgICBzeW0tPm5hbWUsICZzeW0tPmRlY2xhcmVkX2F0LAogCQkgICBw YXJhbS0+bmFtZSk7CiAKICAgICB9CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9zeW1ib2wuY2Mg Yi9nY2MvZm9ydHJhbi9zeW1ib2wuY2MKaW5kZXggZmRkZjY4ZjgzOTguLjVkOTg1MmM3OWUwIDEw MDY0NAotLS0gYS9nY2MvZm9ydHJhbi9zeW1ib2wuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vc3ltYm9s LmNjCkBAIC01MTcyLDYgKzUxNzIsMzMgQEAgZ2ZjX3R5cGVfaXNfZXh0ZW5zaW9uX29mIChnZmNf c3ltYm9sICp0MSwgZ2ZjX3N5bWJvbCAqdDIpCiAgIHJldHVybiBnZmNfY29tcGFyZV9kZXJpdmVk X3R5cGVzICh0MSwgdDIpOwogfQogCisvKiBDaGVjayBpZiBwYXJhbWV0ZXJpemVkIGRlcml2ZWQg dHlwZSB0MiBpcyBhbiBpbnN0YW5jZSBvZiBwZHQgdGVtcGxhdGUgdDEKKworICAgZ2ZjX3N5bWJv bCAqdDEgLT4gcGR0IHRlbXBsYXRlIHRvIHZlcmlmeSB0MiBhZ2FpbnN0LgorICAgZ2ZjX3N5bWJv bCAqdDIgLT4gcGR0IGluc3RhbmNlIHRvIGJlIHZlcmlmaWVkLgorCisgICBJbiBkZWNsLmNjLCBn ZmNfZ2V0X3BkdF9pbnN0YW5jZSwgYSBwZHQgaW5zdGFuY2UgaXMgZ2l2ZW4gYSAzIGNoYXJhY3Rl cgorICAgcHJlZml4ICJQZHQiLCBmb2xsb3dlZCBieSBhbiB1bmRlcnNjb3JlIGxpc3Qgb2YgdGhl IGtpbmQgcGFyYW1ldGVycywKKyAgIHVwIHRvIGEgbWF4aW11bSBvZiA4IGtpbmQgcGFyYW1ldGVy cy4gIFRvIHZlcmlmeSBpZiBhIFBEVCBUeXBlIGNvcnJlc3BvbmRzCisgICB0byB0aGUgdGVtcGxh dGUsIHRoaXMgZnVuY3Rpb25zIGV4dHJhY3RzIHQyJ3MgZGVyaXZlX3R5cGUgbmFtZSwKKyAgIGFu ZCBjb21wYXJlcyBpdCB0byB0aGUgZGVyaXZlX3R5cGUgbmFtZSBvZiB0MSBmb3IgY29tcGF0aWJp bGl0eS4KKworICAgRm9yIGV4YW1wbGU6CisKKyAgIHQyLT5uYW1lID0gUGR0Zl8yXzI7IGV4dHJh Y3Qgb3V0IHRoZSAnZicgYW5kIGNvbXBhcmUgd2l0aCB0MS0+bmFtZS4gICovCisKK2Jvb2wKK2dm Y19wZHRfaXNfaW5zdGFuY2Vfb2YgKGdmY19zeW1ib2wgKnQxLCBnZmNfc3ltYm9sICp0MikKK3sK KyAgaWYgKCAhdDEtPmF0dHIucGR0X3RlbXBsYXRlIHx8ICF0Mi0+YXR0ci5wZHRfdHlwZSApCisg ICAgcmV0dXJuIGZhbHNlOworCisgIC8qIExpbWl0IGNvbXBhcmlzb24gdG8gbGVuZ3RoIG9mIHQx LT5uYW1lIHRvIGlnbm9yZSBuZXcga2luZCBwYXJhbXMuICAqLworICBpZiAoICEoc3RybmNtcCAo Jih0Mi0+bmFtZVszXSksIHQxLT5uYW1lLCBzdHJsZW4gKHQxLT5uYW1lKSkgPT0gMCkgKQorICAg IHJldHVybiBmYWxzZTsKKworICByZXR1cm4gdHJ1ZTsKK30KIAogLyogQ2hlY2sgaWYgdHdvIHR5 cGVzcGVjcyBhcmUgdHlwZSBjb21wYXRpYmxlIChGMDM6NS4xLjEuMik6CiAgICBJZiB0czEgaXMg bm9ucG9seW1vcnBoaWMsIHRzMiBtdXN0IGJlIHRoZSBzYW1lIHR5cGUuCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF8zNC5mMDMgYi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL3BkdF8zNC5mMDMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmM2MDEwNzFiYTNhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9wZHRfMzQuZjAzCkBAIC0wLDAgKzEsNDIgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEKKyEg VGVzdHMgdGhlIGZpeGVzIGZvciBQUjgyOTQzLgorIQorISBDb250cmlidXRlZCBieSBBbGV4YW5k ZXIgV2VzdGJyb29rcyAgPGN0ZWNobm9kZXZAZ21haWwuY29tPgorIQorbW9kdWxlIG0KKyAgICBw dWJsaWMgOjogZm9vLCBiYXIsIGZvb2JhcgorCisgICAgdHlwZSwgcHVibGljIDo6IGdvb2RfdHlw ZShuKQorICAgICAgIGludGVnZXIsIGxlbiA6OiBuID0gMQorICAgIGNvbnRhaW5zCisgICAgICAg cHJvY2VkdXJlIDo6IGZvbworICAgIGVuZCB0eXBlCisKKyAgICB0eXBlLCBwdWJsaWMgOjogZ29v ZF90eXBlMihrKQorICAgICAgIGludGVnZXIsIGtpbmQgOjogayA9IDEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICBjb250YWlucworICAgICAgIHByb2NlZHVyZSA6OiBiYXIK KyAgICBlbmQgdHlwZQorCisgICAgdHlwZSwgcHVibGljIDo6IGdvb2RfdHlwZTMobiwgaykKKyAg ICAgICAgaW50ZWdlciwgbGVuIDo6IG4gPSAxCisgICAgICAgaW50ZWdlciwga2luZCA6OiBrID0g MQorICAgIGNvbnRhaW5zCisgICAgICAgcHJvY2VkdXJlIDo6IGZvb2JhcgorICAgIGVuZCB0eXBl CisgIAorICAgIGNvbnRhaW5zCisgICAgICAgIHN1YnJvdXRpbmUgZm9vKHRoaXMpCisgICAgICAg ICAgICBjbGFzcyhnb29kX3R5cGUoKikpLCBpbnRlbnQoaW5vdXQpIDo6IHRoaXMKKyAgICAgICAg ZW5kIHN1YnJvdXRpbmUKKworICAgICAgICBzdWJyb3V0aW5lIGJhcih0aGlzKQorICAgICAgICAg ICAgY2xhc3MoZ29vZF90eXBlMigyKSksIGludGVudChpbm91dCkgOjogdGhpcworICAgICAgICBl bmQgc3Vicm91dGluZQorCisgICAgICAgIHN1YnJvdXRpbmUgZm9vYmFyKHRoaXMpCisgICAgICAg ICAgICBjbGFzcyhnb29kX3R5cGUzKCosMikpLCBpbnRlbnQoaW5vdXQpIDo6IHRoaXMKKyAgICAg ICAgZW5kIHN1YnJvdXRpbmUKKworIGVuZCBtb2R1bGUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF8zNS5mMDMgYi9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF8zNS5mMDMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjhiOTk5NDhmYTczCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy9wZHRfMzUuZjAzCkBAIC0wLDAgKzEsNDUgQEAKKyEgeyBkZy1k byBjb21waWxlIH0KKyEKKyEgVGVzdHMgdGhlIGZpeGVzIGZvciBQUjgyOTQzLgorIQorISBUaGlz IHRlc3QgZm9jdXNlcyBvbiBpbmhlcml0YW5jZSBmb3IgdGhlIHR5cGUgYm91bmQgcHJvY2VkdXJl cy4KKyEKKyEgQ29udHJpYnV0ZWQgYnkgQWxleGFuZGVyIFdlc3Ricm9va3MgIDxjdGVjaG5vZGV2 QGdtYWlsLmNvbT4KKyEKK21vZHVsZSBtCisKKyAgIHB1YmxpYyA6OiBmb28sIGJhciwgZm9vYmFy CisKKyAgIHR5cGUsIHB1YmxpYyA6OiBnb29kcGR0X2x2bF8wKGEsIGIpCisgICAgICAgaW50ZWdl ciwga2luZCA6OiBhID0gMQorICAgICAgIGludGVnZXIsIGxlbiA6OiBiCisgICBjb250YWlucwor ICAgICAgIHByb2NlZHVyZSA6OiBmb28KKyAgIGVuZCB0eXBlCisKKyAgIHR5cGUsIHB1YmxpYywg RVhURU5EUyhnb29kcGR0X2x2bF8wKSA6OiBnb29kcGR0X2x2bF8xIChjKQorICAgICAgIGludGVn ZXIsIGxlbiA6OiBjCisgICBjb250YWlucworICAgICAgIHByb2NlZHVyZSA6OiBiYXIKKyAgIGVu ZCB0eXBlCisKKyAgIHR5cGUsIHB1YmxpYywgRVhURU5EUyhnb29kcGR0X2x2bF8xKSA6OiBnb29k cGR0X2x2bF8yIChkKQorICAgICAgIGludGVnZXIsIGxlbiA6OiBkCisgICBjb250YWlucworICAg ICAgIHByb2NlZHVyZSA6OiBmb29iYXIKKyAgIGVuZCB0eXBlCisKK2NvbnRhaW5zCisgICBzdWJy b3V0aW5lIGZvbyh0aGlzKQorICAgICAgIGNsYXNzKGdvb2RwZHRfbHZsXzAoMSwqKSksIGludGVu dChpbm91dCkgOjogdGhpcworICAgZW5kIHN1YnJvdXRpbmUKKworICAgc3Vicm91dGluZSBiYXIo dGhpcykKKyAgICAgICBjbGFzcyhnb29kcGR0X2x2bF8xKDEsKiwqKSksIGludGVudChpbm91dCkg OjogdGhpcworICAgZW5kIHN1YnJvdXRpbmUKKworICAgc3Vicm91dGluZSBmb29iYXIodGhpcykK KyAgICAgICBjbGFzcyhnb29kcGR0X2x2bF8yKDEsKiwqLCopKSwgaW50ZW50KGlub3V0KSA6OiB0 aGlzCisgICBlbmQgc3Vicm91dGluZQorCitlbmQgbW9kdWxlClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wZHRfMzYuZjAz IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wZHRfMzYuZjAzCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMzUxYzBlNGY4YgotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzM2LmYwMwpAQCAtMCwwICsxLDY1IEBACishIHsg ZGctZG8gcnVuIH0KKyEKKyEgVGVzdHMgdGhlIGZpeGVzIGZvciBQUjgyOTQzLgorIQorISBUaGlz IHRlc3QgZm9jdXNlcyBvbiBjYWxsaW5nIHRoZSB0eXBlIGJvdW5kIHByb2NlZHVyZXMgaW4gYSBw cm9ncmFtLgorIQorISBDb250cmlidXRlZCBieSBBbGV4YW5kZXIgV2VzdGJyb29rcyAgPGN0ZWNo bm9kZXZAZ21haWwuY29tPgorIQorbW9kdWxlIHRlc3Rtb2QKKworICAgcHVibGljIDo6IGZvbwor CisgICB0eXBlLCBwdWJsaWMgOjogdG91Z2hfbHZsXzAoYSwgYikKKyAgICAgICBpbnRlZ2VyLCBr aW5kIDo6IGEgPSAxCisgICAgICAgaW50ZWdlciwgbGVuIDo6IGIKKyAgIGNvbnRhaW5zCisgICAg ICAgcHJvY2VkdXJlIDo6IGZvbworICAgZW5kIHR5cGUKKworICAgdHlwZSwgcHVibGljLCBFWFRF TkRTKHRvdWdoX2x2bF8wKSA6OiB0b3VnaF9sdmxfMSAoYykKKyAgICAgICBpbnRlZ2VyLCBsZW4g OjogYworICAgY29udGFpbnMKKyAgICAgICBwcm9jZWR1cmUgOjogYmFyCisgICBlbmQgdHlwZQor CisgICB0eXBlLCBwdWJsaWMsIEVYVEVORFModG91Z2hfbHZsXzEpIDo6IHRvdWdoX2x2bF8yIChk KQorICAgICAgIGludGVnZXIsIGxlbiA6OiBkCisgICBjb250YWlucworICAgICAgIHByb2NlZHVy ZSA6OiBmb29iYXIKKyAgIGVuZCB0eXBlCisKK2NvbnRhaW5zCisgICBzdWJyb3V0aW5lIGZvbyh0 aGlzKQorICAgICAgIGNsYXNzKHRvdWdoX2x2bF8wKDEsKikpLCBpbnRlbnQoaW5vdXQpIDo6IHRo aXMKKyAgIGVuZCBzdWJyb3V0aW5lCisKKyAgIHN1YnJvdXRpbmUgYmFyKHRoaXMpCisgICAgICAg Y2xhc3ModG91Z2hfbHZsXzEoMSwqLCopKSwgaW50ZW50KGlub3V0KSA6OiB0aGlzCisgICBlbmQg c3Vicm91dGluZQorCisgICBzdWJyb3V0aW5lIGZvb2Jhcih0aGlzKQorICAgICAgIGNsYXNzKHRv dWdoX2x2bF8yKDEsKiwqLCopKSwgaW50ZW50KGlub3V0KSA6OiB0aGlzCisgICBlbmQgc3Vicm91 dGluZQorCitlbmQgbW9kdWxlCisKK1BST0dSQU0gdGVzdHByb2dyYW0KKyAgIFVTRSB0ZXN0bW9k CisgICAKKyAgIFRZUEUodG91Z2hfbHZsXzAoMSw1KSkgICAgIDo6IHRlc3RfcGR0XzAKKyAgIFRZ UEUodG91Z2hfbHZsXzEoMSw1LDYpKSAgIDo6IHRlc3RfcGR0XzEKKyAgIFRZUEUodG91Z2hfbHZs XzIoMSw1LDYsNykpIDo6IHRlc3RfcGR0XzIKKworICAgQ0FMTCB0ZXN0X3BkdF8wJWZvbygpCisK KyAgIENBTEwgdGVzdF9wZHRfMSVmb28oKQorICAgQ0FMTCB0ZXN0X3BkdF8xJWJhcigpCisKKyAg IENBTEwgdGVzdF9wZHRfMiVmb28oKQorICAgQ0FMTCB0ZXN0X3BkdF8yJWJhcigpCisgICBDQUxM IHRlc3RfcGR0XzIlZm9vYmFyKCkKKworCitFTkQgUFJPR1JBTSB0ZXN0cHJvZ3JhbQorIApcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvcGR0XzM3LmYwMyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzM3LmYwMwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTNhODIyYWEwMmEKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF8zNy5mMDMKQEAgLTAs MCArMSw3NCBAQAorISB7IGRnLWRvIGNvbXBpbGUgfQorIQorISBUZXN0cyB0aGUgZml4ZXMgZm9y IFBSODI5NDMuCishCishIFRoaXMgdGVzdCBmb2N1c2VzIG9uIHRoZSBlcnJvcnMgcHJvZHVjZWQg YnkgaW5jb3JyZWN0IExFTiBwYXJhbWV0ZXJzIGZvciBkdW1teSAKKyEgYXJndW1lbnRzIG9mIFBE VCBUeXBlYm91bmQgUHJvY2VkdXJlcy4KKyEKKyEgQ29udHJpYnV0ZWQgYnkgQWxleGFuZGVyIFdl c3Ricm9va3MgIDxjdGVjaG5vZGV2QGdtYWlsLmNvbT4KKyEKK21vZHVsZSB0ZXN0X2xlbl9wYXJh bQorCisgICB0eXBlIDo6IHBhcmFtX2Rlcml2X3R5cGUoYSkKKyAgICAgICBpbnRlZ2VyLCBsZW4g OjogYQorICAgY29udGFpbnMKKyAgICAgICBwcm9jZWR1cmUgOjogYXNzdW1lZF9sZW5fcGFyYW0g ICAgICAgICAgICEgR29vZC4gTm8gZXJyb3IgZXhwZWN0ZWQuCisgICAgICAgcHJvY2VkdXJlIDo6 IGFzc3VtZWRfbGVuX3BhcmFtX3B0ciAgICAgICAhIHsgZGctZXJyb3IgIm11c3Qgbm90IGJlIFBP SU5URVIiIH0KKyAgICAgICBwcm9jZWR1cmUgOjogYXNzdW1lZF9sZW5fcGFyYW1fYWxsb2MgICAg ICEgeyBkZy1lcnJvciAibXVzdCBub3QgYmUgQUxMT0NBVEFCTEUiIH0KKyAgICAgICBwcm9jZWR1 cmUgOjogZGVmZXJyZWRfbGVuX3BhcmFtICAgICAgICAgICEgeyBkZy1lcnJvciAibXVzdCBiZSBB U1NVTUVEIiB9CisgICAgICAgcHJvY2VkdXJlIDo6IGRlZmVycmVkX2xlbl9wYXJhbV9wdHIgICAg ICAhIHsgZGctZXJyb3IgIm11c3QgYmUgQVNTVU1FRCIgfQorICAgICAgIHByb2NlZHVyZSA6OiBk ZWZlcnJlZF9sZW5fcGFyYW1fYWxsb2MgICAgISB7IGRnLWVycm9yICJtdXN0IGJlIEFTU1VNRUQi IH0KKyAgICAgICBwcm9jZWR1cmUgOjogZml4ZWRfbGVuX3BhcmFtICAgICAgICAgICAgICEgeyBk Zy1lcnJvciAibXVzdCBiZSBBU1NVTUVEIiB9CisgICAgICAgcHJvY2VkdXJlIDo6IGZpeGVkX2xl bl9wYXJhbV9wdHIgICAgICAgICAhIHsgZGctZXJyb3IgIm11c3QgYmUgQVNTVU1FRCIgfQorICAg ICAgIHByb2NlZHVyZSA6OiBmaXhlZF9sZW5fcGFyYW1fYWxsb2MgICAgICAgISB7IGRnLWVycm9y ICJtdXN0IGJlIEFTU1VNRUQiIH0KKworICAgZW5kIHR5cGUKKworY29udGFpbnMKKyAgICBzdWJy b3V0aW5lIGFzc3VtZWRfbGVuX3BhcmFtKHRoaXMpCisgICAgICAgY2xhc3MocGFyYW1fZGVyaXZf dHlwZSgqKSksIGludGVudChpbm91dCkgOjogdGhpcyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAhIEdvb2QuIE5vIGVycm9yIGV4cGVjdGVkLgorICAgICEgICAgVFlQRShwYXJhbV9kZXJpdl90 eXBlKCopKSwgaW50ZW50KGlub3V0KSA6OiB0aGF0ICAgICAgICAgICAgICAgICAgICAgICAgICAg ISBHb29kLiBObyBlcnJvciBleHBlY3RlZC4gCisgICAgZW5kIHN1YnJvdXRpbmUKKworICAgIHN1 YnJvdXRpbmUgYXNzdW1lZF9sZW5fcGFyYW1fcHRyKHRoaXMsIHRoYXQpCisgICAgICAgIGNsYXNz KHBhcmFtX2Rlcml2X3R5cGUoKikpLCBpbnRlbnQoaW5vdXQpLCBwb2ludGVyIDo6IHRoaXMgICAg ICAgICAgICAgICAgICAhIEdvb2QuIE5vIGVycm9yIGV4cGVjdGVkLgorICAgICAgICAhIFRZUEUo cGFyYW1fZGVyaXZfdHlwZSgqKSksIGludGVudChpbm91dCksIGFsbG9jYXRhYmxlIDo6IHRoYXQg ICAgICAgICAgICAgISBHb29kLiBObyBlcnJvciBleHBlY3RlZC4gICAgICAgICAgICAKKyAgICBl bmQgc3Vicm91dGluZQorCisgICAgc3Vicm91dGluZSBhc3N1bWVkX2xlbl9wYXJhbV9hbGxvYyh0 aGlzLCB0aGF0KQorICAgICAgICBjbGFzcyhwYXJhbV9kZXJpdl90eXBlKCopKSwgaW50ZW50KGlu b3V0KSwgYWxsb2NhdGFibGUgOjogdGhpcyAgICAgICAgICAgICAgISBHb29kLiBObyBlcnJvciBl eHBlY3RlZC4KKyAgICAgICAgVFlQRShwYXJhbV9kZXJpdl90eXBlKCopKSwgaW50ZW50KGlub3V0 KSwgYWxsb2NhdGFibGUgOjogdGhhdCAgICAgICAgICAgICAgICEgR29vZC4gTm8gZXJyb3IgZXhw ZWN0ZWQuCisgICAgZW5kIHN1YnJvdXRpbmUKKworICAgIHN1YnJvdXRpbmUgZGVmZXJyZWRfbGVu X3BhcmFtKHRoaXMsIHRoYXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ISB7IGRnLWVycm9yICJyZXF1aXJlcyBlaXRoZXIgdGhlIFBPSU5URVIgb3IgQUxMT0NBVEFCTEUg YXR0cmlidXRlIiB9CisgICAgICAgIGNsYXNzKHBhcmFtX2Rlcml2X3R5cGUoOikpLCBpbnRlbnQo aW5vdXQpIDo6IHRoaXMgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFRZUEUocGFyYW1f ZGVyaXZfdHlwZSg6KSksIGludGVudChpbm91dCkgOjogdGhhdCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAhIEdvb2QuIE5vIGVycm9yIGV4cGVjdGVkLiAgCisgICAgZW5kIHN1YnJvdXRpbmUK KworICAgIHN1YnJvdXRpbmUgZGVmZXJyZWRfbGVuX3BhcmFtX3B0cih0aGlzLCB0aGF0KSAKKyAg ICAgICAgY2xhc3MocGFyYW1fZGVyaXZfdHlwZSg6KSksIGludGVudChpbm91dCksIHBvaW50ZXIg OjogdGhpcyAgICAgICAgICAgICAgICAgICEgR29vZC4gTm8gZXJyb3IgZXhwZWN0ZWQuCisgICAg ICAgIFRZUEUocGFyYW1fZGVyaXZfdHlwZSg6KSksIGludGVudChpbm91dCksIHBvaW50ZXIgOjog dGhhdCAgICAgICAgICAgICAgICAgICAhIEdvb2QuIE5vIGVycm9yIGV4cGVjdGVkLgorICAgIGVu ZCBzdWJyb3V0aW5lCisKKyAgICBzdWJyb3V0aW5lIGRlZmVycmVkX2xlbl9wYXJhbV9hbGxvYyh0 aGlzLCB0aGF0KQorICAgICAgICBjbGFzcyhwYXJhbV9kZXJpdl90eXBlKDopKSwgaW50ZW50KGlu b3V0KSwgYWxsb2NhdGFibGUgOjogdGhpcyAgICAgICAgICAgICAgISBHb29kLiBObyBlcnJvciBl eHBlY3RlZC4KKyAgICAgICAgVFlQRShwYXJhbV9kZXJpdl90eXBlKDopKSwgaW50ZW50KGlub3V0 KSwgYWxsb2NhdGFibGUgOjogdGhhdCAgICAgICAgICAgICAgICEgR29vZC4gTm8gZXJyb3IgZXhw ZWN0ZWQuCisgICAgZW5kIHN1YnJvdXRpbmUKKworICAgIHN1YnJvdXRpbmUgZml4ZWRfbGVuX3Bh cmFtKHRoaXMsIHRoYXQpCisgICAgICAgIGNsYXNzKHBhcmFtX2Rlcml2X3R5cGUoMTApKSwgaW50 ZW50KGlub3V0KSA6OiB0aGlzICAgICAgICAgICAgICAgICAgICAgICAgICAhIEdvb2QuIE5vIGVy cm9yIGV4cGVjdGVkLgorICAgICAgICBUWVBFKHBhcmFtX2Rlcml2X3R5cGUoMTApKSwgaW50ZW50 KGlub3V0KSA6OiB0aGF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgISBHb29kLiBObyBlcnJv ciBleHBlY3RlZC4gICAgICAgIAorICAgIGVuZCBzdWJyb3V0aW5lCisKKyAgICBzdWJyb3V0aW5l IGZpeGVkX2xlbl9wYXJhbV9wdHIodGhpcywgdGhhdCkKKyAgICAgICAgY2xhc3MocGFyYW1fZGVy aXZfdHlwZSgxMCkpLCBpbnRlbnQoaW5vdXQpLCBwb2ludGVyIDo6IHRoaXMgICAgICAgICAgICAg ICAgICEgR29vZC4gTm8gZXJyb3IgZXhwZWN0ZWQuCisgICAgICAgIFRZUEUocGFyYW1fZGVyaXZf dHlwZSgxMCkpLCBpbnRlbnQoaW5vdXQpLCBwb2ludGVyIDo6IHRoYXQgICAgICAgICAgICAgICAg ICAhIEdvb2QuIE5vIGVycm9yIGV4cGVjdGVkLiAgIAorICAgIGVuZCBzdWJyb3V0aW5lCisKKyAg ICBzdWJyb3V0aW5lIGZpeGVkX2xlbl9wYXJhbV9hbGxvYyh0aGlzLCB0aGF0KQorICAgICAgICBj bGFzcyhwYXJhbV9kZXJpdl90eXBlKDEwKSksIGludGVudChpbm91dCksIGFsbG9jYXRhYmxlIDo6 IHRoaXMgICAgICAgICAgICAgISBHb29kLiBObyBlcnJvciBleHBlY3RlZC4KKyAgICAgICAgVFlQ RShwYXJhbV9kZXJpdl90eXBlKDEwKSksIGludGVudChpbm91dCksIGFsbG9jYXRhYmxlIDo6IHRo YXQgICAgICAgICAgICAgICEgR29vZC4gTm8gZXJyb3IgZXhwZWN0ZWQuCisgICAgZW5kIHN1YnJv dXRpbmUKKworZW5kIG1vZHVsZQorIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9wZHRfNC5mMDMgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3BkdF80LmYwMwppbmRl eCAzNzQxMmU0Y2E4Mi4uZjc0YWM4OWJmOGMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvcGR0XzQuZjAzCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcGR0XzQu ZjAzCkBAIC05Niw3ICs5Niw3IEBAIGNvbnRhaW5zCiAgIHN1YnJvdXRpbmUgZm9vKGFyZykKICAg ICB0eXBlIChteXR5cGUoNCwgKikpIDo6IGFyZyAgICAgICEgT0sKICAgZW5kIHN1YnJvdXRpbmUK LSAgc3Vicm91dGluZSBiYXIoYXJnKSAgICAgICAgICAgICAgICEgeyBkZy1lcnJvciAiaXMgbmVp dGhlciBhbGxvY2F0YWJsZSBub3IgYSBwb2ludGVyIiB9CisgIHN1YnJvdXRpbmUgYmFyKGFyZykg ICAgICAgICAgICAgICAhIHsgZGctZXJyb3IgInJlcXVpcmVzIGVpdGhlciB0aGUgUE9JTlRFUiBv ciBBTExPQ0FUQUJMRSBhdHRyaWJ1dGUiIH0gCiAgICAgdHlwZSAodGh5dHlwZSg4LCA6LCA0KSkg OjogYXJnCiAgIGVuZCBzdWJyb3V0aW5lCiAgIHN1YnJvdXRpbmUgZm9vYmFyKGFyZykgICAgICAg ICAgICAhIE9LCi0tIAoyLjI1LjEKCg== --00000000000060294206126b31d1--