<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>101079</bug_id>
          
          <creation_ts>2012-11-02 11:44:06 -0700</creation_ts>
          <short_desc>[GTK] Clean up g_return macros usage in GObject DOM bindings</short_desc>
          <delta_ts>2012-12-09 08:18:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>101074</dependson>
    
    <dependson>101077</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>757406</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-11-02 11:44:06 -0700</bug_when>
    <thetext>g_return macros should be used to check parameters of public API methods. For DOM bindings GObjects types, it would be better to use the GObject macros to check the type in the glib type system, and not only if it&apos;s NULL or not. Return value of g_return_val_if_fail() for boolean methods should be FALSE instead of 0. We should also protect GError parameters with g_return macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757414</commentid>
    <comment_count>1</comment_count>
      <attachid>172098</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-11-02 11:48:44 -0700</bug_when>
    <thetext>Created attachment 172098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757460</commentid>
    <comment_count>2</comment_count>
      <attachid>172108</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-11-02 12:25:16 -0700</bug_when>
    <thetext>Created attachment 172108
Updated patch to include test results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761857</commentid>
    <comment_count>3</comment_count>
      <attachid>172108</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-11-08 09:01:18 -0800</bug_when>
    <thetext>Comment on attachment 172108
Updated patch to include test results

View in context: https://bugs.webkit.org/attachment.cgi?id=172108&amp;action=review

Looks mostly good to me, I just have a couple of questions.

&gt; Source/WebCore/ChangeLog:11
&gt; +          - Use them only to check parameters of public API.

Not trying to get into a philosophical debate here, and it&apos;s really not so relevant for this bug because I basically agree with the changes, but I don&apos;t see this as a good practice per se. The good practice about g_return macros is to use them in public API instead of ASSERTs or no checks at all. The reason for that is that we cannot control what the user gives us, so it makes sense to check things but it does not make sense to crash on error. That being said, using g_return macros internally makes sense for situations where you want to fail, but do not want to crash (ie, for situations that are neither a programmer&apos;s error nor so critical as to justify just giving up and crashing the program).

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:1233
&gt; +    return request ? request-&gt;priv-&gt;coreObject.get() : 0;

This seems consistent with what we do in most places (but not all!) in WebKitGTK+, so I think that&apos;s OK.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:1245
&gt; +    ASSERT(coreObject);

Any reason why this should be different than ::core or ::kit?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:1346
&gt; +        return 0;

Same comment than in ::core..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761937</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-11-08 10:29:01 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 172108 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172108&amp;action=review
&gt; 
&gt; Looks mostly good to me, I just have a couple of questions.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +          - Use them only to check parameters of public API.
&gt; 
&gt; Not trying to get into a philosophical debate here, and it&apos;s really not so relevant for this bug because I basically agree with the changes, but I don&apos;t see this as a good practice per se. The good practice about g_return macros is to use them in public API instead of ASSERTs or no checks at all. The reason for that is that we cannot control what the user gives us, so it makes sense to check things but it does not make sense to crash on error. That being said, using g_return macros internally makes sense for situations where you want to fail, but do not want to crash (ie, for situations that are neither a programmer&apos;s error nor so critical as to justify just giving up and crashing the program).

The main reason to not use the g_return macros internally is because they can be disabled (it&apos;s not very common, but it possible). If something is never expected to fail, then I think it&apos;s better to crash because the program is likely to crash sooner or later anyway, and it helps to debug the issue. If something is expected to fail we can simply return early and avoid the overhead of the g_return macros or a crash if they are disabled. See the glib documentation:

&quot;The g_return family of macros (g_return_if_fail(), g_return_val_if_fail(), g_return_if_reached(), g_return_val_if_reached()) should only be used for programming errors, a typical use case is checking for invalid parameters at the beginning of a public function. They should not be used if you just mean &quot;if (error) return&quot;, they should only be used if you mean &quot;if (bug in program) return&quot;. The program behavior is generally considered undefined after one of these checks fails. They are not intended for normal control flow, only to give a perhaps-helpful warning before giving up.&quot;

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:1233
&gt; &gt; +    return request ? request-&gt;priv-&gt;coreObject.get() : 0;
&gt; 
&gt; This seems consistent with what we do in most places (but not all!) in WebKitGTK+, so I think that&apos;s OK.
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:1245
&gt; &gt; +    ASSERT(coreObject);
&gt; 
&gt; Any reason why this should be different than ::core or ::kit?

Yes, in core or kit NULL is a valid expected value. For example, a method that returns a core element can return NULL in case of exception, the conversion to a WebKit object in this case is NULL. Here, we never expect NULL for coreObject, it&apos;s a construct only property of WebKitDOMObject and the program is going to crash sooner or later, because we are assuming coreObject is a valid pointer everywhere. 

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:1346
&gt; &gt; +        return 0;
&gt; 
&gt; Same comment than in ::core..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763910</commentid>
    <comment_count>5</comment_count>
      <attachid>172108</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-11-11 16:09:27 -0800</bug_when>
    <thetext>Comment on attachment 172108
Updated patch to include test results

OK, let&apos;s get this in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786789</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-09 08:18:13 -0800</bug_when>
    <thetext>Committed r137074: &lt;http://trac.webkit.org/changeset/137074&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172098</attachid>
            <date>2012-11-02 11:48:44 -0700</date>
            <delta_ts>2012-11-02 12:25:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-dom-g-return.diff</filename>
            <type>text/plain</type>
            <size>8371</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMmUxYjA2Li5jZDU0OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTItMTEtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIENsZWFuIHVwIGdfcmV0dXJuIG1hY3JvcyB1c2FnZSBpbiBHT2Jq
ZWN0IERPTSBiaW5kaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAxMDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2V2ZXJhbCBpbXByb3ZlbWVudHM6CisKKyAgICAgICAgICAtIE1vdmUgZ19yZXR1
cm4gbWFjcm9zIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1ldGhvZHMuCisgICAgICAgICAgLSBV
c2UgdGhlbSBvbmx5IHRvIGNoZWNrIHBhcmFtZXRlcnMgb2YgcHVibGljIEFQSS4KKyAgICAgICAg
ICAtIFVzZSBHT2JqZWN0IG1hY3JvcyB0byBjaGVjayBHT2JqZWN0cy4KKyAgICAgICAgICAtIENo
ZWNrIGFsc28gR0Vycm9yIHBhcmFtZXRlcnMuCisgICAgICAgICAgLSBVc2UgZWFybHkgcmV0dXJu
cyBpbiBraXQgYW5kIGNvcmUgbWV0aG9kcywgc2luY2UgdGhleSBzaG91bGQKKyAgICAgICAgICAg
IHdvcmsgZXZlbiBpZiBnX3JldHVybiBtYWNyb3MgYXJlIGRpc2FibGVkIGhhbmRsaW5nIE5VTEwK
KyAgICAgICAgICAgIGdyYWNlZnVsbHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAgICAgICAoR2V0R1JldHVybk1hY3JvKToKKyAgICAg
ICAgKEdlbmVyYXRlRnVuY3Rpb24pOgorICAgICAgICAoR2VuZXJhdGVDRmlsZSk6CisgICAgICAg
IChHZW5lcmF0ZSk6CisKIDIwMTItMTEtMDEgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTWlkZGxlIGNsaWNrIGNsb3NlcyBh
biBlZGl0b3IgYW5kIHBhc3RlcyBzZWxlY3Rpb24gaW50byBjdXJyZW50IGVkaXRvciBvbiBMaW51
eApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yR09iamVjdC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckdPYmplY3QucG0KaW5kZXggOWI1NmU2Yy4uOGE2ZTQ5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCkBA
IC03ODgsNiArNzg4LDMwIEBAIEVPRgogICAgIHB1c2goQGhCb2R5LCAkaW1wbENvbnRlbnQpOwog
fQogCitzdWIgR2V0R1JldHVybk1hY3JvIHsKKyAgICBteSAoJHBhcmFtTmFtZSwgJHBhcmFtSURM
VHlwZSwgJHJldHVyblR5cGUpID0gQF87CisKKyAgICBteSAkY29uZGl0aW9uOworICAgIGlmICgk
cGFyYW1JRExUeXBlIGVxICJHRXJyb3IiKSB7CisgICAgICAgICRjb25kaXRpb24gPSAiISRwYXJh
bU5hbWUgfHwgKiRwYXJhbU5hbWUiOworICAgIH0gZWxzaWYgKElzR0RPTUNsYXNzVHlwZSgkcGFy
YW1JRExUeXBlKSkgeworICAgICAgICBteSAkcGFyYW1UeXBlQ2FwcyA9IHVjKEZpeFVwRGVjYW1l
bGl6ZWROYW1lKGRlY2FtZWxpemUoJHBhcmFtSURMVHlwZSkpKTsKKyAgICAgICAgJGNvbmRpdGlv
biA9ICJXRUJLSVRfRE9NX0lTXyR7cGFyYW1UeXBlQ2Fwc30oJHBhcmFtTmFtZSkiOworICAgIH0g
ZWxzZSB7CisgICAgICAgICRjb25kaXRpb24gPSAiJHBhcmFtTmFtZSI7CisgICAgfQorCisgICAg
bXkgJG1hY3JvOworICAgIGlmICgkcmV0dXJuVHlwZSBuZSAidm9pZCIpIHsKKyAgICAgICAgJGRl
ZmF1bHRSZXR1cm4gPSAkcmV0dXJuVHlwZSBlcSAiZ2Jvb2xlYW4iID8gIkZBTFNFIiA6IDA7Cisg
ICAgICAgICRtYWNybyA9ICIgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoJGNvbmRpdGlvbiwgJGRl
ZmF1bHRSZXR1cm4pO1xuIjsKKyAgICB9IGVsc2UgeworICAgICAgICAkbWFjcm8gPSAiICAgIGdf
cmV0dXJuX2lmX2ZhaWwoJGNvbmRpdGlvbik7XG4iOworICAgIH0KKworICAgIHJldHVybiAkbWFj
cm87Cit9CisKIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICBteSAoJG9iamVjdCwgJGludGVy
ZmFjZU5hbWUsICRmdW5jdGlvbiwgJHByZWZpeCwgJHBhcmVudE5vZGUpID0gQF87CiAKQEAgLTg4
NSwxNyArOTA5LDExIEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICBwdXNoKEBjQm9keSwg
IiNpZiAke3BhcmVudENvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJHBhcmVudENvbmRpdGlvbmFs
U3RyaW5nOwogICAgIHB1c2goQGNCb2R5LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAKLSAgICBpZiAoJHJldHVyblR5cGUgbmUgInZvaWQiKSB7
Ci0gICAgICAgICMgVE9ETzogcmV0dXJuIHByb3BlciBkZWZhdWx0IHJlc3VsdAotICAgICAgICBw
dXNoKEBjQm9keSwgIiAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTtcbiIpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGNCb2R5LCAiICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2Vs
Zik7XG4iKTsKLSAgICB9Ci0KICAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7XG4iKTsKIAotICAgICMgVGhlIFdlYktpdDo6Y29yZSBpbXBs
ZW1lbnRhdGlvbnMgY2hlY2sgZm9yIG51bGwgYWxyZWFkeTsgbm8gbmVlZCB0byBkdXBsaWNhdGUg
ZWZmb3J0LgotICAgIHB1c2goQGNCb2R5LCAiICAgIFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0q
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7XG4iKTsKKyAgICAjIGdfcmV0dXJuIG1hY3JvcyB0
byBjaGVjayBwYXJhbWV0ZXJzIG9mIHB1YmxpYyBtZXRob2RzLgorICAgICRnUmV0dXJuTWFjcm8g
PSBHZXRHUmV0dXJuTWFjcm8oInNlbGYiLCAkaW50ZXJmYWNlTmFtZSwgJHJldHVyblR5cGUpOwor
ICAgIHB1c2goQGNCb2R5LCAkZ1JldHVybk1hY3JvKTsKIAogICAgIGZvcmVhY2ggbXkgJHBhcmFt
IChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRw
YXJhbS0+bmFtZTsKQEAgLTkwMywxOSArOTIxLDIzIEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsK
ICAgICAgICAgbXkgJHBhcmFtVHlwZUlzUHJpbWl0aXZlID0gJGNvZGVHZW5lcmF0b3ItPklzUHJp
bWl0aXZlVHlwZSgkcGFyYW1JRExUeXBlKTsKICAgICAgICAgbXkgJHBhcmFtSXNHRE9NVHlwZSA9
IElzR0RPTUNsYXNzVHlwZSgkcGFyYW1JRExUeXBlKTsKICAgICAgICAgaWYgKCEkcGFyYW1UeXBl
SXNQcmltaXRpdmUpIHsKLSAgICAgICAgICAgIGlmICgkcmV0dXJuVHlwZSBuZSAidm9pZCIpIHsK
LSAgICAgICAgICAgICAgICAjIFRPRE86IHJldHVybiBwcm9wZXIgZGVmYXVsdCByZXN1bHQKLSAg
ICAgICAgICAgICAgICAjIEZJWE1FOiBUZW1wb3JhcnkgaGFjayBmb3IgZ2VuZXJhdGluZyBhIHBy
b3BlciBpbXBsZW1lbnRhdGlvbgotICAgICAgICAgICAgICAgICMgICAgICAgIG9mIHRoZSB3ZWJr
aXRfZG9tX2RvY3VtZW50X2V2YWx1YXRlIGZ1bmN0aW9uIChCdWctSUQ6IDQyMTE1KQotICAgICAg
ICAgICAgICAgIGlmICghKCgkZnVuY3Rpb25OYW1lIGVxICJ3ZWJraXRfZG9tX2RvY3VtZW50X2V2
YWx1YXRlIikgJiYgKCRwYXJhbUlETFR5cGUgZXEgIlhQYXRoUmVzdWx0IikpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCRwYXJh
bU5hbWUsIDApO1xuIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBnX3JldHVybl9pZl9mYWlsKCRwYXJh
bU5hbWUpO1xuIik7CisgICAgICAgICAgICAjIEZJWE1FOiBUZW1wb3JhcnkgaGFjayBmb3IgZ2Vu
ZXJhdGluZyBhIHByb3BlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICAgIyAgICAgICAgb2Yg
dGhlIHdlYmtpdF9kb21fZG9jdW1lbnRfZXZhbHVhdGUgZnVuY3Rpb24gKEJ1Zy1JRDogNDIxMTUp
CisgICAgICAgICAgICBpZiAoISgoJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2RvbV9kb2N1bWVu
dF9ldmFsdWF0ZSIpICYmICgkcGFyYW1JRExUeXBlIGVxICJYUGF0aFJlc3VsdCIpKSkgeworICAg
ICAgICAgICAgICAgICRnUmV0dXJuTWFjcm8gPSBHZXRHUmV0dXJuTWFjcm8oJHBhcmFtTmFtZSwg
JHBhcmFtSURMVHlwZSwgJHJldHVyblR5cGUpOworICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5
LCAkZ1JldHVybk1hY3JvKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAorICAg
IGlmIChAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKKyAgICAgICAgJGdSZXR1cm5N
YWNybyA9IEdldEdSZXR1cm5NYWNybygiZXJyb3IiLCAiR0Vycm9yIiwgJHJldHVyblR5cGUpOwor
ICAgICAgICBwdXNoKEBjQm9keSwgJGdSZXR1cm5NYWNybyk7CisgICAgfQorCisgICAgIyBUaGUg
V2ViS2l0Ojpjb3JlIGltcGxlbWVudGF0aW9ucyBjaGVjayBmb3IgbnVsbCBhbHJlYWR5OyBubyBu
ZWVkIHRvIGR1cGxpY2F0ZSBlZmZvcnQuCisgICAgcHVzaChAY0JvZHksICIgICAgV2ViQ29yZTo6
JHtpbnRlcmZhY2VOYW1lfSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTtcbiIpOworCiAgICAg
JHJldHVyblBhcmFtTmFtZSA9ICIiOwogICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAeyRmdW5jdGlv
bi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgbXkgJHBhcmFtSURMVHlwZSA9ICRwYXJhbS0+dHlw
ZTsKQEAgLTkyOCwxOCArOTUwLDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb24gewogICAgICAgICB9
IGVsc2lmICgkcGFyYW1JRExUeXBlIGVxICJDb21wYXJlSG93IikgewogICAgICAgICAgICAgcHVz
aChAY0JvZHksICIgICAgV2ViQ29yZTo6UmFuZ2U6OkNvbXBhcmVIb3cgJHtjb252ZXJ0ZWRQYXJh
bU5hbWV9ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmFuZ2U6OkNvbXBhcmVIb3c+KCRwYXJhbU5h
bWUpO1xuIik7CiAgICAgICAgIH0gZWxzaWYgKCRwYXJhbUlzR0RPTVR5cGUpIHsKLSAgICAgICAg
ICAgIHB1c2goQGNCb2R5LCAiICAgIFdlYkNvcmU6OiR7cGFyYW1JRExUeXBlfSogJHtjb252ZXJ0
ZWRQYXJhbU5hbWV9ID0gMDtcbiIpOwotICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgaWYg
KCR7cGFyYW1OYW1lfSkge1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICAgICAg
JHtjb252ZXJ0ZWRQYXJhbU5hbWV9ID0gV2ViS2l0Ojpjb3JlKCRwYXJhbU5hbWUpO1xuIik7Ci0K
LSAgICAgICAgICAgIGlmICgkcmV0dXJuVHlwZSBuZSAidm9pZCIpIHsKLSAgICAgICAgICAgICAg
ICAjIFRPRE86IHJldHVybiBwcm9wZXIgZGVmYXVsdCByZXN1bHQKLSAgICAgICAgICAgICAgICBw
dXNoKEBjQm9keSwgIiAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoJHtjb252ZXJ0ZWRQYXJh
bU5hbWV9LCAwKTtcbiIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBw
dXNoKEBjQm9keSwgIiAgICAgICAgZ19yZXR1cm5faWZfZmFpbCgke2NvbnZlcnRlZFBhcmFtTmFt
ZX0pO1xuIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAg
IH1cbiIpOworICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgV2ViQ29yZTo6JHtwYXJhbUlE
TFR5cGV9KiAke2NvbnZlcnRlZFBhcmFtTmFtZX0gPSBXZWJLaXQ6OmNvcmUoJHBhcmFtTmFtZSk7
XG4iKTsKICAgICAgICAgfQogICAgICAgICAkcmV0dXJuUGFyYW1OYW1lID0gJGNvbnZlcnRlZFBh
cmFtTmFtZSBpZiAkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21SZXR1cm4ifTsK
ICAgICB9CkBAIC05NzcsMTAgKzk4OCw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICAg
ICAgcHVzaChAY0JvZHksICIgICAgYm9vbCBvayA9IGl0ZW0tPiR7ZnVuY3Rpb25JbXBsZW1lbnRh
dGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBjYWxsSW1wbFBhcmFtcykgLiAiKTtcbiIpOwogICAg
ICAgICBteSAkY3VzdG9tTm9kZUFwcGVuZENoaWxkID0gPDwgIkVPRiI7CiAgICAgaWYgKG9rKQot
ICAgIHsKLSAgICAgICAgJHtyZXR1cm5UeXBlfSByZXN1bHQgPSBXZWJLaXQ6OmtpdCgkcmV0dXJu
UGFyYW1OYW1lKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgICAgICAgIHJldHVy
biBXZWJLaXQ6OmtpdCgkcmV0dXJuUGFyYW1OYW1lKTsKIEVPRgogICAgICAgICBwdXNoKEBjQm9k
eSwgJGN1c3RvbU5vZGVBcHBlbmRDaGlsZCk7CiAgICAgCkBAIC05OTIsNyArMTAwMCw3IEBAIEVP
RgogRU9GCiAgICAgICAgICAgICBwdXNoKEBjQm9keSwgJGV4Y2VwdGlvbkhhbmRsaW5nKTsKICAg
ICAgICAgfQotICAgICAgICBwdXNoKEBjQm9keSwgInJldHVybiAwOyIpOworICAgICAgICBwdXNo
KEBjQm9keSwgIiAgICByZXR1cm4gMDtcbiIpOwogICAgICAgICBwdXNoKEBjQm9keSwgIn1cblxu
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2lmICgkZnVuY3Rpb25TaWdUeXBlIGVxICJE
T01TdHJpbmciKSB7CkBAIC0xMDc1LDEzICsxMDgzLDEyIEBAIEVPRgogICAgIGlmICgkcmV0dXJu
VHlwZSBuZSAidm9pZCIgJiYgISRmdW5jdGlvbkhhc0N1c3RvbVJldHVybikgewogICAgICAgICBp
ZiAoJGZ1bmN0aW9uU2lnVHlwZSBuZSAiRE9NT2JqZWN0IikgewogICAgICAgICAgICAgaWYgKCRy
ZXR1cm5WYWx1ZUlzR0RPTVR5cGUpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAg
ICAke3JldHVyblR5cGV9IHJlc3VsdCA9IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkp
O1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgcmV0dXJuIFdlYktpdDo6
a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpO1xuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIHJldHVybiByZXN1bHQ7XG4iKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoJGZ1bmN0aW9uU2lnVHlwZSBlcSAiRE9N
T2JqZWN0IikgewotICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgcmV0dXJuIDA7IC8vIFRP
RE86IHJldHVybiBjYW52YXMgb2JqZWN0XG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHB1c2goQGNCb2R5LCAiICAgIHJldHVybiByZXN1bHQ7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGNCb2R5LCAiICAgIHJldHVybiAwOyAvLyBUT0RPOiByZXR1cm4gY2FudmFzIG9iamVjdFxu
Iik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEyMjMsOCArMTIzMCw3IEBAIEVPRgogICAgICRp
bXBsQ29udGVudCA9IDw8ICJFT0YiOwogV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZSgk
e2NsYXNzTmFtZX0qIHJlcXVlc3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVz
dCwgMCk7Ci0gICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCk7CisgICAg
cmV0dXJuIHJlcXVlc3QgPyByZXF1ZXN0LT5wcml2LT5jb3JlT2JqZWN0LmdldCgpIDogMDsKIH0K
IAogRU9GCkBAIC0xMjM2LDcgKzEyNDIsNyBAQCBFT0YKICAgICBteSAkd3JhcE1ldGhvZCA9IDw8
ICJFT0YiOwogJHtjbGFzc05hbWV9KiB3cmFwJHtpbnRlcmZhY2VOYW1lfShXZWJDb3JlOjoke2lu
dGVyZmFjZU5hbWV9KiBjb3JlT2JqZWN0KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNv
cmVPYmplY3QsIDApOworICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKICAgICByZXR1cm4gV0VCS0lU
X0RPTV8ke2Nsc0NhcHN9KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fJHtjbHNDYXBzfSwg
ImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOwogfQogCkBAIC0xMzM2LDcgKzEzNDIs
OCBAQCBzdWIgR2VuZXJhdGUgewogICAgICAgICBteSAkY29udmVydGVyID0gPDwgIkVPRiI7CiAk
e2NsYXNzTmFtZX0qIGtpdChXZWJDb3JlOjokaW50ZXJmYWNlTmFtZSogb2JqKQogewotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKG9iaiwgMCk7CisgICAgaWYgKCFvYmopCisgICAgICAgIHJldHVy
biAwOwogCiAgICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCR7Y2xhc3NOYW1lfSo+KHJldCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172108</attachid>
            <date>2012-11-02 12:25:16 -0700</date>
            <delta_ts>2012-11-11 16:09:26 -0800</delta_ts>
            <desc>Updated patch to include test results</desc>
            <filename>wk-dom-g-return2.diff</filename>
            <type>text/plain</type>
            <size>131011</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMmUxYjA2Li5jYjkxMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjM1
IEBACisyMDEyLTExLTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBDbGVhbiB1cCBnX3JldHVybiBtYWNyb3MgdXNhZ2UgaW4gR09i
amVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMTA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNldmVyYWwgaW1wcm92ZW1lbnRzOgorCisgICAgICAgICAgLSBNb3ZlIGdfcmV0
dXJuIG1hY3JvcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBtZXRob2RzLgorICAgICAgICAgIC0g
VXNlIHRoZW0gb25seSB0byBjaGVjayBwYXJhbWV0ZXJzIG9mIHB1YmxpYyBBUEkuCisgICAgICAg
ICAgLSBVc2UgR09iamVjdCBtYWNyb3MgdG8gY2hlY2sgR09iamVjdHMuCisgICAgICAgICAgLSBD
aGVjayBhbHNvIEdFcnJvciBwYXJhbWV0ZXJzLgorICAgICAgICAgIC0gVXNlIGVhcmx5IHJldHVy
bnMgaW4ga2l0IGFuZCBjb3JlIG1ldGhvZHMsIHNpbmNlIHRoZXkgc2hvdWxkCisgICAgICAgICAg
ICB3b3JrIGV2ZW4gaWYgZ19yZXR1cm4gbWFjcm9zIGFyZSBkaXNhYmxlZCBoYW5kbGluZyBOVUxM
CisgICAgICAgICAgICBncmFjZWZ1bGx5LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yR09iamVjdC5wbToKKyAgICAgICAgKEdldEdSZXR1cm5NYWNybyk6CisgICAg
ICAgIChHZW5lcmF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ0ZpbGUpOgorICAgICAg
ICAoR2VuZXJhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTUZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAg
IChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0Ojp3cmFwRmxvYXQ2NEFycmF5KToKKyAg
ICAgICAgKHdlYmtpdF9kb21fZmxvYXQ2NGFycmF5X2Zvbyk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAo
V2ViS2l0Ojp3cmFwVGVzdEFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3RfYWN0aXZlX2RvbV9vYmplY3RfZXhjaXRpbmdfZnVuY3Rpb24pOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X3Bvc3RfbWVzc2FnZSk6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfZ2V0X2V4Y2l0aW5nX2F0dHIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAg
ICAgICAoV2ViS2l0Ojp3cmFwVGVzdENhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9jYWxsYmFja19jYWxsYmFja193aXRoX25vX3BhcmFtKToKKyAgICAgICAgKHdlYmtpdF9kb21f
dGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX2NsYXNzMXBhcmFtKToKKyAgICAgICAgKHdlYmtp
dF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX2NsYXNzMnBhcmFtKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX25vbl9ib29sX3JldHVybl90
eXBlKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX3N0
cmluZ19saXN0KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193
aXRoX2Jvb2xlYW4pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNr
X3JlcXVpcmVzX3RoaXNfdG9fcGFzcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6a2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgIChXZWJLaXQ6Ondy
YXBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2N1c3Rv
bV9uYW1lZF9nZXR0ZXJfYW5vdGhlcl9mdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdl
YktpdDo6d3JhcFRlc3RFdmVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9ldmVudF9jb25zdHJ1Y3Rvcl9nZXRfYXR0cjEpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0
X2V2ZW50X2NvbnN0cnVjdG9yX2dldF9hdHRyMik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6a2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgIChXZWJLaXQ6Ondy
YXBUZXN0RXZlbnRUYXJnZXQpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2V2ZW50X3Rhcmdl
dF9pdGVtKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfZGlzcGF0Y2hf
ZXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2Vi
S2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RFeGNlcHRpb24pOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9nZXRfbmFtZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2Vi
S2l0Ojp3cmFwVGVzdEludGVyZmFjZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJm
YWNlX3N1cHBsZW1lbnRhbF9tZXRob2QxKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9pbnRl
cmZhY2Vfc3VwcGxlbWVudGFsX21ldGhvZDIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2lu
dGVyZmFjZV9zdXBwbGVtZW50YWxfbWV0aG9kNCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
aW50ZXJmYWNlX2dldF9zdXBwbGVtZW50YWxfc3RyMSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3RfaW50ZXJmYWNlX2dldF9zdXBwbGVtZW50YWxfc3RyMik6CisgICAgICAgICh3ZWJraXRfZG9t
X3Rlc3RfaW50ZXJmYWNlX3NldF9zdXBwbGVtZW50YWxfc3RyMik6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdXBwbGVtZW50YWxfbm9kZSk6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9zdXBwbGVtZW50YWxfbm9kZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpj
b3JlKToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgIChXZWJL
aXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0Ojp3cmFwVGVzdE5hbWVkQ29uc3RydWN0b3IpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROb2Rl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6Cisg
ICAgICAgIChXZWJLaXQ6OndyYXBUZXN0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJLaXQ6Omtp
dCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0Ojp3cmFwVGVzdE9i
aik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZvaWRfbWV0aG9kKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2Rfd2l0aF9hcmdzKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9vYmpfbG9uZ19tZXRob2QpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0
X29ial9sb25nX21ldGhvZF93aXRoX2FyZ3MpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29i
al9vYmpfbWV0aG9kKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfb2JqX21ldGhvZF93
aXRoX2FyZ3MpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9tZXRob2RfdGhhdF9yZXF1
aXJlc19hbGxfYXJnc19hbmRfdGhyb3dzKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpf
c2VyaWFsaXplZF92YWx1ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2lkYl9rZXkp
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9vcHRpb25zX29iamVjdCk6CisgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX2V4Y2VwdGlvbik6CisgICAgICAgICh3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X3N0YXRlX3ZvaWQpOgorICAgICAgICAod2Vi
a2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9zdGF0ZV9vYmopOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9zdGF0ZV92b2lkX2V4Y2VwdGlvbik6CisgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X3N0YXRlX29ial9leGNlcHRpb24pOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4
dCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9j
b250ZXh0X2FuZF9zY3JpcHRfc3RhdGUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial93
aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX29ial9leGNlcHRp
b24pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9leGVjdXRpb25f
Y29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX3dpdGhfc3BhY2VzKToKKyAgICAgICAgKHdlYmtpdF9k
b21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfb3B0aW9uYWxfYXJnKToKKyAgICAgICAgKHdlYmtpdF9k
b21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfbm9uX29wdGlvbmFsX2FyZ19hbmRfb3B0aW9uYWxfYXJn
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfbm9uX29wdGlvbmFs
X2FyZ19hbmRfdHdvX29wdGlvbmFsX2FyZ3MpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29i
al9tZXRob2Rfd2l0aF9vcHRpb25hbF9zdHJpbmcpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0
X29ial9tZXRob2Rfd2l0aF9vcHRpb25hbF9zdHJpbmdfaXNfdW5kZWZpbmVkKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfb3B0aW9uYWxfc3RyaW5nX2lzX251bGxf
c3RyaW5nKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfY29uZGl0aW9uYWxfbWV0aG9k
MSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbmRpdGlvbmFsX21ldGhvZDIpOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jb25kaXRpb25hbF9tZXRob2QzKToKKyAgICAg
ICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfY2xhc3NfbWV0aG9kKToKKyAgICAgICAgKHdlYmtpdF9k
b21fdGVzdF9vYmpfY2xhc3NfbWV0aG9kX3dpdGhfb3B0aW9uYWwpOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X29ial9vdmVybG9hZGVkX21ldGhvZDEpOgorICAgICAgICAod2Via2l0X2RvbV90
ZXN0X29ial9jb252ZXJ0MSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbnZlcnQy
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfY29udmVydDQpOgorICAgICAgICAod2Vi
a2l0X2RvbV90ZXN0X29ial9jb252ZXJ0NSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X211dGFibGVfcG9pbnRfZnVuY3Rpb24pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9p
bW11dGFibGVfcG9pbnRfZnVuY3Rpb24pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9v
cmFuZ2UpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zdHJpY3RfZnVuY3Rpb24pOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19zdHJpbmdfbWV0aG9kKToKKyAg
ICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZCk6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX25vZGVfbWV0aG9kKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9sb25nX2F0dHIpOgorICAgICAgICAo
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X3N0cmluZ19hdHRyKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV90ZXN0X29ial9hdHRyKToKKyAgICAg
ICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Nob3J0X2F0dHIpOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X29ial9zZXRfc2hvcnRfYXR0cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF91bnNpZ25lZF9zaG9ydF9hdHRyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9v
Ympfc2V0X3Vuc2lnbmVkX3Nob3J0X2F0dHIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29i
al9nZXRfbG9uZ19hdHRyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2xvbmdf
YXR0cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9sb25nX2xvbmdfYXR0cik6
CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9sb25nX2xvbmdfYXR0cik6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF91bnNpZ25lZF9sb25nX2xvbmdfYXR0cik6Cisg
ICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF91bnNpZ25lZF9sb25nX2xvbmdfYXR0cik6
CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zdHJpbmdfYXR0cik6CisgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zdHJpbmdfYXR0cik6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF90ZXN0X29ial9hdHRyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9vYmpfc2V0X3Rlc3Rfb2JqX2F0dHIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfeG1sX29ial9hdHRyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3htbF9v
YmpfYXR0cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9jcmVhdGUpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfY3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X3JlZmxlY3RlZF9zdHJpbmdfYXR0cik6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfc3RyaW5nX2F0dHIpOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X29ial9nZXRfcmVmbGVjdGVkX2ludGVncmFsX2F0dHIpOgorICAgICAgICAod2Vi
a2l0X2RvbV90ZXN0X29ial9zZXRfcmVmbGVjdGVkX2ludGVncmFsX2F0dHIpOgorICAgICAgICAo
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVmbGVjdGVkX3Vuc2lnbmVkX2ludGVncmFsX2F0dHIp
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfcmVmbGVjdGVkX3Vuc2lnbmVkX2lu
dGVncmFsX2F0dHIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVmbGVjdGVk
X2Jvb2xlYW5fYXR0cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0
ZWRfYm9vbGVhbl9hdHRyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlZmxl
Y3RlZF91cmxfYXR0cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0
ZWRfdXJsX2F0dHIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVmbGVjdGVk
X2N1c3RvbV9pbnRlZ3JhbF9hdHRyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X3JlZmxlY3RlZF9jdXN0b21faW50ZWdyYWxfYXR0cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2dldF9yZWZsZWN0ZWRfY3VzdG9tX2Jvb2xlYW5fYXR0cik6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfY3VzdG9tX2Jvb2xlYW5fYXR0cik6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfY3VzdG9tX3VybF9hdHRyKToK
KyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9jdXN0b21fdXJsX2F0
dHIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93aXRoX2dldHRlcl9l
eGNlcHRpb24pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXR0cl93aXRoX2dl
dHRlcl9leGNlcHRpb24pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93
aXRoX3NldHRlcl9leGNlcHRpb24pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRf
YXR0cl93aXRoX3NldHRlcl9leGNlcHRpb24pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29i
al9nZXRfc3RyaW5nX2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uKToKKyAgICAgICAgKHdlYmtp
dF9kb21fdGVzdF9vYmpfc2V0X3N0cmluZ19hdHRyX3dpdGhfZ2V0dGVyX2V4Y2VwdGlvbik6Cisg
ICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zdHJpbmdfYXR0cl93aXRoX3NldHRlcl9l
eGNlcHRpb24pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfc3RyaW5nX2F0dHJf
d2l0aF9zZXR0ZXJfZXhjZXB0aW9uKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0
X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NldF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGUpOgorICAgICAgICAod2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0cmlidXRlKToK
KyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9j
b250ZXh0X2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRo
X3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGVfcmFpc2VzKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9vYmpfc2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMpOgorICAgICAgICAo
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0
cmlidXRlX3JhaXNlcyk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3Nj
cmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1dGVfcmFpc2VzKToKKyAgICAgICAgKHdlYmtp
dF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3Jp
cHRfc3RhdGVfYXR0cmlidXRlKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dp
dGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlKToK
KyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9j
b250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlcyk6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2Ny
aXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29i
al9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV93aXRo
X3NwYWNlc19hdHRyaWJ1dGUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0
aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV93aXRoX3NwYWNlc19h
dHRyaWJ1dGUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfY29uZGl0aW9uYWxf
YXR0cjEpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfY29uZGl0aW9uYWxfYXR0
cjEpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfY29uZGl0aW9uYWxfYXR0cjIp
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfY29uZGl0aW9uYWxfYXR0cjIpOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfY29uZGl0aW9uYWxfYXR0cjMpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfY29uZGl0aW9uYWxfYXR0cjMpOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfYW55X2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3NldF9hbnlfYXR0cmlidXRlKToKKyAgICAgICAgKHdlYmtpdF9kb21f
dGVzdF9vYmpfZ2V0X2NvbnRlbnRfZG9jdW1lbnQpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0
X29ial9nZXRfbXV0YWJsZV9wb2ludCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3Nl
dF9tdXRhYmxlX3BvaW50KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2ltbXV0
YWJsZV9wb2ludCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9pbW11dGFibGVf
cG9pbnQpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfc3RyYXdiZXJyeSk6Cisg
ICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zdHJhd2JlcnJ5KToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9vYmpfZ2V0X3N0cmljdF9mbG9hdCk6CisgICAgICAgICh3ZWJraXRfZG9t
X3Rlc3Rfb2JqX3NldF9zdHJpY3RfZmxvYXQpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29i
al9nZXRfZGVzY3JpcHRpb24pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfaWQp
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfaWQpOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X29ial9nZXRfaGFzaCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dl
dF9yZXBsYWNlYWJsZV9hdHRyaWJ1dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAg
ICAgKFdlYktpdDo6d3JhcFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9h
Y2NlcHRfdHJhbnNmZXJfbGlzdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXpl
ZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX211bHRpX3RyYW5zZmVyX2xpc3QpOgorICAgICAgICAo
d2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9nZXRfdmFs
dWUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2lu
dGVyZmFjZV9zZXRfdmFsdWUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRf
c2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9nZXRfcmVhZG9ubHlfdmFsdWUpOgorICAgICAgICAod2Vi
a2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9nZXRfY2FjaGVk
X3ZhbHVlKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1
ZV9pbnRlcmZhY2Vfc2V0X2NhY2hlZF92YWx1ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
c2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX2dldF9wb3J0cyk6CisgICAgICAgICh3
ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX2dldF9jYWNo
ZWRfcmVhZG9ubHlfdmFsdWUpOgorCiAyMDEyLTExLTAxICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2
aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1pZGRsZSBjbGljayBj
bG9zZXMgYW4gZWRpdG9yIGFuZCBwYXN0ZXMgc2VsZWN0aW9uIGludG8gY3VycmVudCBlZGl0b3Ig
b24gTGludXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckdPYmplY3QucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JHT2JqZWN0LnBtCmluZGV4IDliNTZlNmMuLjhhNmU0OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVj
dC5wbQpAQCAtNzg4LDYgKzc4OCwzMCBAQCBFT0YKICAgICBwdXNoKEBoQm9keSwgJGltcGxDb250
ZW50KTsKIH0KIAorc3ViIEdldEdSZXR1cm5NYWNybyB7CisgICAgbXkgKCRwYXJhbU5hbWUsICRw
YXJhbUlETFR5cGUsICRyZXR1cm5UeXBlKSA9IEBfOworCisgICAgbXkgJGNvbmRpdGlvbjsKKyAg
ICBpZiAoJHBhcmFtSURMVHlwZSBlcSAiR0Vycm9yIikgeworICAgICAgICAkY29uZGl0aW9uID0g
IiEkcGFyYW1OYW1lIHx8ICokcGFyYW1OYW1lIjsKKyAgICB9IGVsc2lmIChJc0dET01DbGFzc1R5
cGUoJHBhcmFtSURMVHlwZSkpIHsKKyAgICAgICAgbXkgJHBhcmFtVHlwZUNhcHMgPSB1YyhGaXhV
cERlY2FtZWxpemVkTmFtZShkZWNhbWVsaXplKCRwYXJhbUlETFR5cGUpKSk7CisgICAgICAgICRj
b25kaXRpb24gPSAiV0VCS0lUX0RPTV9JU18ke3BhcmFtVHlwZUNhcHN9KCRwYXJhbU5hbWUpIjsK
KyAgICB9IGVsc2UgeworICAgICAgICAkY29uZGl0aW9uID0gIiRwYXJhbU5hbWUiOworICAgIH0K
KworICAgIG15ICRtYWNybzsKKyAgICBpZiAoJHJldHVyblR5cGUgbmUgInZvaWQiKSB7CisgICAg
ICAgICRkZWZhdWx0UmV0dXJuID0gJHJldHVyblR5cGUgZXEgImdib29sZWFuIiA/ICJGQUxTRSIg
OiAwOworICAgICAgICAkbWFjcm8gPSAiICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCRjb25kaXRp
b24sICRkZWZhdWx0UmV0dXJuKTtcbiI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJG1hY3JvID0g
IiAgICBnX3JldHVybl9pZl9mYWlsKCRjb25kaXRpb24pO1xuIjsKKyAgICB9CisKKyAgICByZXR1
cm4gJG1hY3JvOworfQorCiBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgbXkgKCRvYmplY3Qs
ICRpbnRlcmZhY2VOYW1lLCAkZnVuY3Rpb24sICRwcmVmaXgsICRwYXJlbnROb2RlKSA9IEBfOwog
CkBAIC04ODUsMTcgKzkwOSwxMSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgcHVzaChA
Y0JvZHksICIjaWYgJHtwYXJlbnRDb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRwYXJlbnRDb25k
aXRpb25hbFN0cmluZzsKICAgICBwdXNoKEBjQm9keSwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogCi0gICAgaWYgKCRyZXR1cm5UeXBlIG5lICJ2
b2lkIikgewotICAgICAgICAjIFRPRE86IHJldHVybiBwcm9wZXIgZGVmYXVsdCByZXN1bHQKLSAg
ICAgICAgcHVzaChAY0JvZHksICIgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7XG4i
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBnX3JldHVybl9pZl9m
YWlsKHNlbGYpO1xuIik7Ci0gICAgfQotCiAgICAgcHVzaChAY0JvZHksICIgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlO1xuIik7CiAKLSAgICAjIFRoZSBXZWJLaXQ6OmNv
cmUgaW1wbGVtZW50YXRpb25zIGNoZWNrIGZvciBudWxsIGFscmVhZHk7IG5vIG5lZWQgdG8gZHVw
bGljYXRlIGVmZm9ydC4KLSAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjoke2ludGVyZmFj
ZU5hbWV9KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpO1xuIik7CisgICAgIyBnX3JldHVybiBt
YWNyb3MgdG8gY2hlY2sgcGFyYW1ldGVycyBvZiBwdWJsaWMgbWV0aG9kcy4KKyAgICAkZ1JldHVy
bk1hY3JvID0gR2V0R1JldHVybk1hY3JvKCJzZWxmIiwgJGludGVyZmFjZU5hbWUsICRyZXR1cm5U
eXBlKTsKKyAgICBwdXNoKEBjQm9keSwgJGdSZXR1cm5NYWNybyk7CiAKICAgICBmb3JlYWNoIG15
ICRwYXJhbSAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CiAgICAgICAgIG15ICRwYXJhbU5h
bWUgPSAkcGFyYW0tPm5hbWU7CkBAIC05MDMsMTkgKzkyMSwyMyBAQCBzdWIgR2VuZXJhdGVGdW5j
dGlvbiB7CiAgICAgICAgIG15ICRwYXJhbVR5cGVJc1ByaW1pdGl2ZSA9ICRjb2RlR2VuZXJhdG9y
LT5Jc1ByaW1pdGl2ZVR5cGUoJHBhcmFtSURMVHlwZSk7CiAgICAgICAgIG15ICRwYXJhbUlzR0RP
TVR5cGUgPSBJc0dET01DbGFzc1R5cGUoJHBhcmFtSURMVHlwZSk7CiAgICAgICAgIGlmICghJHBh
cmFtVHlwZUlzUHJpbWl0aXZlKSB7Ci0gICAgICAgICAgICBpZiAoJHJldHVyblR5cGUgbmUgInZv
aWQiKSB7Ci0gICAgICAgICAgICAgICAgIyBUT0RPOiByZXR1cm4gcHJvcGVyIGRlZmF1bHQgcmVz
dWx0Ci0gICAgICAgICAgICAgICAgIyBGSVhNRTogVGVtcG9yYXJ5IGhhY2sgZm9yIGdlbmVyYXRp
bmcgYSBwcm9wZXIgaW1wbGVtZW50YXRpb24KLSAgICAgICAgICAgICAgICAjICAgICAgICBvZiB0
aGUgd2Via2l0X2RvbV9kb2N1bWVudF9ldmFsdWF0ZSBmdW5jdGlvbiAoQnVnLUlEOiA0MjExNSkK
LSAgICAgICAgICAgICAgICBpZiAoISgoJGZ1bmN0aW9uTmFtZSBlcSAid2Via2l0X2RvbV9kb2N1
bWVudF9ldmFsdWF0ZSIpICYmICgkcGFyYW1JRExUeXBlIGVxICJYUGF0aFJlc3VsdCIpKSkgewot
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBnX3JldHVybl92YWxfaWZfZmFp
bCgkcGFyYW1OYW1lLCAwKTtcbiIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgZ19yZXR1cm5faWZfZmFp
bCgkcGFyYW1OYW1lKTtcbiIpOworICAgICAgICAgICAgIyBGSVhNRTogVGVtcG9yYXJ5IGhhY2sg
Zm9yIGdlbmVyYXRpbmcgYSBwcm9wZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgICAgICMgICAg
ICAgIG9mIHRoZSB3ZWJraXRfZG9tX2RvY3VtZW50X2V2YWx1YXRlIGZ1bmN0aW9uIChCdWctSUQ6
IDQyMTE1KQorICAgICAgICAgICAgaWYgKCEoKCRmdW5jdGlvbk5hbWUgZXEgIndlYmtpdF9kb21f
ZG9jdW1lbnRfZXZhbHVhdGUiKSAmJiAoJHBhcmFtSURMVHlwZSBlcSAiWFBhdGhSZXN1bHQiKSkp
IHsKKyAgICAgICAgICAgICAgICAkZ1JldHVybk1hY3JvID0gR2V0R1JldHVybk1hY3JvKCRwYXJh
bU5hbWUsICRwYXJhbUlETFR5cGUsICRyZXR1cm5UeXBlKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBjQm9keSwgJGdSZXR1cm5NYWNybyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiAKKyAgICBpZiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9KSB7CisgICAgICAgICRn
UmV0dXJuTWFjcm8gPSBHZXRHUmV0dXJuTWFjcm8oImVycm9yIiwgIkdFcnJvciIsICRyZXR1cm5U
eXBlKTsKKyAgICAgICAgcHVzaChAY0JvZHksICRnUmV0dXJuTWFjcm8pOworICAgIH0KKworICAg
ICMgVGhlIFdlYktpdDo6Y29yZSBpbXBsZW1lbnRhdGlvbnMgY2hlY2sgZm9yIG51bGwgYWxyZWFk
eTsgbm8gbmVlZCB0byBkdXBsaWNhdGUgZWZmb3J0LgorICAgIHB1c2goQGNCb2R5LCAiICAgIFdl
YkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7XG4iKTsK
KwogICAgICRyZXR1cm5QYXJhbU5hbWUgPSAiIjsKICAgICBmb3JlYWNoIG15ICRwYXJhbSAoQHsk
ZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CiAgICAgICAgIG15ICRwYXJhbUlETFR5cGUgPSAkcGFy
YW0tPnR5cGU7CkBAIC05MjgsMTggKzk1MCw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAg
ICAgICAgfSBlbHNpZiAoJHBhcmFtSURMVHlwZSBlcSAiQ29tcGFyZUhvdyIpIHsKICAgICAgICAg
ICAgIHB1c2goQGNCb2R5LCAiICAgIFdlYkNvcmU6OlJhbmdlOjpDb21wYXJlSG93ICR7Y29udmVy
dGVkUGFyYW1OYW1lfSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJhbmdlOjpDb21wYXJlSG93Pigk
cGFyYW1OYW1lKTtcbiIpOwogICAgICAgICB9IGVsc2lmICgkcGFyYW1Jc0dET01UeXBlKSB7Ci0g
ICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjoke3BhcmFtSURMVHlwZX0qICR7
Y29udmVydGVkUGFyYW1OYW1lfSA9IDA7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGNCb2R5LCAi
ICAgIGlmICgke3BhcmFtTmFtZX0pIHtcbiIpOwotICAgICAgICAgICAgcHVzaChAY0JvZHksICIg
ICAgICAgICR7Y29udmVydGVkUGFyYW1OYW1lfSA9IFdlYktpdDo6Y29yZSgkcGFyYW1OYW1lKTtc
biIpOwotCi0gICAgICAgICAgICBpZiAoJHJldHVyblR5cGUgbmUgInZvaWQiKSB7Ci0gICAgICAg
ICAgICAgICAgIyBUT0RPOiByZXR1cm4gcHJvcGVyIGRlZmF1bHQgcmVzdWx0Ci0gICAgICAgICAg
ICAgICAgcHVzaChAY0JvZHksICIgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCR7Y29udmVy
dGVkUGFyYW1OYW1lfSwgMCk7XG4iKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAY0JvZHksICIgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoJHtjb252ZXJ0ZWRQ
YXJhbU5hbWV9KTtcbiIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwdXNoKEBjQm9k
eSwgIiAgICB9XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIFdlYkNvcmU6OiR7
cGFyYW1JRExUeXBlfSogJHtjb252ZXJ0ZWRQYXJhbU5hbWV9ID0gV2ViS2l0Ojpjb3JlKCRwYXJh
bU5hbWUpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgJHJldHVyblBhcmFtTmFtZSA9ICRjb252
ZXJ0ZWRQYXJhbU5hbWUgaWYgJHBhcmFtLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUmV0
dXJuIn07CiAgICAgfQpAQCAtOTc3LDEwICs5ODgsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7
CiAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIGJvb2wgb2sgPSBpdGVtLT4ke2Z1bmN0aW9uSW1w
bGVtZW50YXRpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAY2FsbEltcGxQYXJhbXMpIC4gIik7XG4i
KTsKICAgICAgICAgbXkgJGN1c3RvbU5vZGVBcHBlbmRDaGlsZCA9IDw8ICJFT0YiOwogICAgIGlm
IChvaykKLSAgICB7Ci0gICAgICAgICR7cmV0dXJuVHlwZX0gcmVzdWx0ID0gV2ViS2l0OjpraXQo
JHJldHVyblBhcmFtTmFtZSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICAgICAg
ICByZXR1cm4gV2ViS2l0OjpraXQoJHJldHVyblBhcmFtTmFtZSk7CiBFT0YKICAgICAgICAgcHVz
aChAY0JvZHksICRjdXN0b21Ob2RlQXBwZW5kQ2hpbGQpOwogICAgIApAQCAtOTkyLDcgKzEwMDAs
NyBAQCBFT0YKIEVPRgogICAgICAgICAgICAgcHVzaChAY0JvZHksICRleGNlcHRpb25IYW5kbGlu
Zyk7CiAgICAgICAgIH0KLSAgICAgICAgcHVzaChAY0JvZHksICJyZXR1cm4gMDsiKTsKKyAgICAg
ICAgcHVzaChAY0JvZHksICIgICAgcmV0dXJuIDA7XG4iKTsKICAgICAgICAgcHVzaChAY0JvZHks
ICJ9XG5cbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uU2lnVHlw
ZSBlcSAiRE9NU3RyaW5nIikgewpAQCAtMTA3NSwxMyArMTA4MywxMiBAQCBFT0YKICAgICBpZiAo
JHJldHVyblR5cGUgbmUgInZvaWQiICYmICEkZnVuY3Rpb25IYXNDdXN0b21SZXR1cm4pIHsKICAg
ICAgICAgaWYgKCRmdW5jdGlvblNpZ1R5cGUgbmUgIkRPTU9iamVjdCIpIHsKICAgICAgICAgICAg
IGlmICgkcmV0dXJuVmFsdWVJc0dET01UeXBlKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAY0Jv
ZHksICIgICAgJHtyZXR1cm5UeXBlfSByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0
LmdldCgpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIHJldHVybiBX
ZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTtcbiIpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICByZXR1cm4gcmVzdWx0O1xuIik7
CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRmdW5jdGlvblNpZ1R5cGUg
ZXEgIkRPTU9iamVjdCIpIHsKLSAgICAgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIHJldHVybiAw
OyAvLyBUT0RPOiByZXR1cm4gY2FudmFzIG9iamVjdFxuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBwdXNoKEBjQm9keSwgIiAgICByZXR1cm4gcmVzdWx0O1xuIik7CisgICAgICAg
ICAgICBwdXNoKEBjQm9keSwgIiAgICByZXR1cm4gMDsgLy8gVE9ETzogcmV0dXJuIGNhbnZhcyBv
YmplY3RcbiIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjIzLDggKzEyMzAsNyBAQCBFT0YK
ICAgICAkaW1wbENvbnRlbnQgPSA8PCAiRU9GIjsKIFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0q
IGNvcmUoJHtjbGFzc05hbWV9KiByZXF1ZXN0KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHJlcXVlc3QsIDApOwotICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5jb3JlT2JqZWN0LmdldCgp
OworICAgIHJldHVybiByZXF1ZXN0ID8gcmVxdWVzdC0+cHJpdi0+Y29yZU9iamVjdC5nZXQoKSA6
IDA7CiB9CiAKIEVPRgpAQCAtMTIzNiw3ICsxMjQyLDcgQEAgRU9GCiAgICAgbXkgJHdyYXBNZXRo
b2QgPSA8PCAiRU9GIjsKICR7Y2xhc3NOYW1lfSogd3JhcCR7aW50ZXJmYWNlTmFtZX0oV2ViQ29y
ZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZU9iamVjdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChjb3JlT2JqZWN0LCAwKTsKKyAgICBBU1NFUlQoY29yZU9iamVjdCk7CiAgICAgcmV0dXJu
IFdFQktJVF9ET01fJHtjbHNDYXBzfShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NXyR7Y2xz
Q2Fwc30sICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApAQCAtMTMzNiw3
ICsxMzQyLDggQEAgc3ViIEdlbmVyYXRlIHsKICAgICAgICAgbXkgJGNvbnZlcnRlciA9IDw8ICJF
T0YiOwogJHtjbGFzc05hbWV9KiBraXQoV2ViQ29yZTo6JGludGVyZmFjZU5hbWUqIG9iaikKIHsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChvYmosIDApOworICAgIGlmICghb2JqKQorICAgICAg
ICByZXR1cm4gMDsKIAogICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0
KG9iaikpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwke2NsYXNzTmFtZX0qPihyZXQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NRmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUZsb2F0NjRBcnJheS5jcHAKaW5kZXggMWM4ZDBlNS4u
MGI0OThmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NRmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01GbG9hdDY0QXJyYXkuY3BwCkBA
IC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJLaXRET01GbG9hdDY0QXJy
YXkqIGtpdChXZWJDb3JlOjpGbG9hdDY0QXJyYXkqIG9iaikKIHsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChvYmosIDApOworICAgIGlmICghb2JqKQorICAgICAgICByZXR1cm4gMDsKIAogICAg
IGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01GbG9hdDY0QXJyYXkqPihyZXQpOwpAQCAtNTEsMTMg
KzUyLDEyIEBAIFdlYktpdERPTUZsb2F0NjRBcnJheSoga2l0KFdlYkNvcmU6OkZsb2F0NjRBcnJh
eSogb2JqKQogCiBXZWJDb3JlOjpGbG9hdDY0QXJyYXkqIGNvcmUoV2ViS2l0RE9NRmxvYXQ2NEFy
cmF5KiByZXF1ZXN0KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QsIDApOwot
ICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5jb3JlT2JqZWN0LmdldCgpOworICAgIHJldHVybiBy
ZXF1ZXN0ID8gcmVxdWVzdC0+cHJpdi0+Y29yZU9iamVjdC5nZXQoKSA6IDA7CiB9CiAKIFdlYktp
dERPTUZsb2F0NjRBcnJheSogd3JhcEZsb2F0NjRBcnJheShXZWJDb3JlOjpGbG9hdDY0QXJyYXkq
IGNvcmVPYmplY3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7
CisgICAgQVNTRVJUKGNvcmVPYmplY3QpOwogICAgIHJldHVybiBXRUJLSVRfRE9NX0ZMT0FUNjRB
UlJBWShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX0ZMT0FUNjRBUlJBWSwgImNvcmUtb2Jq
ZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOwogfQogCkBAIC0xMDMsMTcgKzEwMywxMiBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX2Zsb2F0NjRhcnJheV9pbml0KFdlYktpdERPTUZsb2F0NjRBcnJh
eSogc2VsZikKIFdlYktpdERPTUludDMyQXJyYXkqCiB3ZWJraXRfZG9tX2Zsb2F0NjRhcnJheV9m
b28oV2ViS2l0RE9NRmxvYXQ2NEFycmF5KiBzZWxmLCBXZWJLaXRET01GbG9hdDMyQXJyYXkqIGFy
cmF5KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX0ZMT0FUNjRBUlJBWShzZWxmKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19GTE9BVDMyQVJSQVkoYXJyYXkpLCAwKTsKICAgICBXZWJDb3Jl
OjpGbG9hdDY0QXJyYXkqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoYXJyYXksIDApOwotICAgIFdlYkNvcmU6OkZsb2F0MzJBcnJheSogY29udmVy
dGVkQXJyYXkgPSAwOwotICAgIGlmIChhcnJheSkgewotICAgICAgICBjb252ZXJ0ZWRBcnJheSA9
IFdlYktpdDo6Y29yZShhcnJheSk7Ci0gICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbnZl
cnRlZEFycmF5LCAwKTsKLSAgICB9CisgICAgV2ViQ29yZTo6RmxvYXQzMkFycmF5KiBjb252ZXJ0
ZWRBcnJheSA9IFdlYktpdDo6Y29yZShhcnJheSk7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkludDMy
QXJyYXk+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5mb28oY29udmVydGVkQXJy
YXkpKTsKLSAgICBXZWJLaXRET01JbnQzMkFycmF5KiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2Jq
ZWN0UmVzdWx0LmdldCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXZWJLaXQ6
OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBiNGZhN2ZhLi4yZjUxMDY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cApAQCAtNDAsNyArNDAsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViS2l0RE9NVGVzdEFj
dGl2ZURPTU9iamVjdCoga2l0KFdlYkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3QqIG9iaikKIHsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChvYmosIDApOworICAgIGlmICghb2JqKQorICAgICAg
ICByZXR1cm4gMDsKIAogICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0
KG9iaikpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0QWN0aXZlRE9N
T2JqZWN0Kj4ocmV0KTsKQEAgLTUwLDEzICs1MSwxMiBAQCBXZWJLaXRET01UZXN0QWN0aXZlRE9N
T2JqZWN0KiBraXQoV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdCogb2JqKQogCiBXZWJDb3Jl
OjpUZXN0QWN0aXZlRE9NT2JqZWN0KiBjb3JlKFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3Qq
IHJlcXVlc3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7Ci0gICAg
cmV0dXJuIHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCk7CisgICAgcmV0dXJuIHJlcXVl
c3QgPyByZXF1ZXN0LT5wcml2LT5jb3JlT2JqZWN0LmdldCgpIDogMDsKIH0KIAogV2ViS2l0RE9N
VGVzdEFjdGl2ZURPTU9iamVjdCogd3JhcFRlc3RBY3RpdmVET01PYmplY3QoV2ViQ29yZTo6VGVz
dEFjdGl2ZURPTU9iamVjdCogY29yZU9iamVjdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChjb3JlT2JqZWN0LCAwKTsKKyAgICBBU1NFUlQoY29yZU9iamVjdCk7CiAgICAgcmV0dXJuIFdF
QktJVF9ET01fVEVTVF9BQ1RJVkVfRE9NX09CSkVDVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
RE9NX1RFU1RfQUNUSVZFX0RPTV9PQkpFQ1QsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5V
TEwpKTsKIH0KIApAQCAtMTM2LDI1ICsxMzYsMjEgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2luaXQoV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdCoK
IHZvaWQKIHdlYmtpdF9kb21fdGVzdF9hY3RpdmVfZG9tX29iamVjdF9leGNpdGluZ19mdW5jdGlv
bihXZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0KiBzZWxmLCBXZWJLaXRET01Ob2RlKiBuZXh0
Q2hpbGQpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9N
X0lTX1RFU1RfQUNUSVZFX0RPTV9PQkpFQ1Qoc2VsZikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19OT0RFKG5leHRDaGlsZCkpOwogICAgIFdlYkNvcmU6OlRlc3RBY3RpdmVE
T01PYmplY3QqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5faWZfZmFp
bChuZXh0Q2hpbGQpOwotICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZE5leHRDaGlsZCA9IDA7
Ci0gICAgaWYgKG5leHRDaGlsZCkgewotICAgICAgICBjb252ZXJ0ZWROZXh0Q2hpbGQgPSBXZWJL
aXQ6OmNvcmUobmV4dENoaWxkKTsKLSAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRO
ZXh0Q2hpbGQpOwotICAgIH0KKyAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWROZXh0Q2hpbGQg
PSBXZWJLaXQ6OmNvcmUobmV4dENoaWxkKTsKICAgICBpdGVtLT5leGNpdGluZ0Z1bmN0aW9uKGNv
bnZlcnRlZE5leHRDaGlsZCk7CiB9CiAKIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9hY3RpdmVfZG9t
X29iamVjdF9wb3N0X21lc3NhZ2UoV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdCogc2VsZiwg
Y29uc3QgZ2NoYXIqIG1lc3NhZ2UpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVz
dEFjdGl2ZURPTU9iamVjdCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9BQ1RJVkVfRE9NX09CSkVDVChzZWxmKSk7CiAg
ICAgZ19yZXR1cm5faWZfZmFpbChtZXNzYWdlKTsKKyAgICBXZWJDb3JlOjpUZXN0QWN0aXZlRE9N
T2JqZWN0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZl
cnRlZE1lc3NhZ2UgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgobWVzc2FnZSk7CiAgICAgaXRlbS0+
cG9zdE1lc3NhZ2UoY29udmVydGVkTWVzc2FnZSk7CiB9CkBAIC0xNjIsOCArMTU4LDggQEAgd2Vi
a2l0X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X3Bvc3RfbWVzc2FnZShXZWJLaXRET01UZXN0
QWN0aXZlRE9NT2JqZWN0KiBzZWwKIGdsb25nCiB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9v
YmplY3RfZ2V0X2V4Y2l0aW5nX2F0dHIoV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdCogc2Vs
ZikKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19URVNUX0FDVElWRV9ET01fT0JKRUNUKHNlbGYpLCAwKTsKICAgICBXZWJDb3Jl
OjpUZXN0QWN0aXZlRE9NT2JqZWN0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGds
b25nIHJlc3VsdCA9IGl0ZW0tPmV4Y2l0aW5nQXR0cigpOwogICAgIHJldHVybiByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcAppbmRleCAwYTE2ZTgzLi4y
N2Y4NmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAKQEAg
LTQ5LDcgKzQ5LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYktpdERPTVRlc3RDYWxsYmFj
ayoga2l0KFdlYkNvcmU6OlRlc3RDYWxsYmFjayogb2JqKQogewotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKG9iaiwgMCk7CisgICAgaWYgKCFvYmopCisgICAgICAgIHJldHVybiAwOwogCiAgICAg
aWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRlc3RDYWxsYmFjayo+KHJldCk7CkBAIC01OSwxMyAr
NjAsMTIgQEAgV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBraXQoV2ViQ29yZTo6VGVzdENhbGxiYWNr
KiBvYmopCiAKIFdlYkNvcmU6OlRlc3RDYWxsYmFjayogY29yZShXZWJLaXRET01UZXN0Q2FsbGJh
Y2sqIHJlcXVlc3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7Ci0g
ICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCk7CisgICAgcmV0dXJuIHJl
cXVlc3QgPyByZXF1ZXN0LT5wcml2LT5jb3JlT2JqZWN0LmdldCgpIDogMDsKIH0KIAogV2ViS2l0
RE9NVGVzdENhbGxiYWNrKiB3cmFwVGVzdENhbGxiYWNrKFdlYkNvcmU6OlRlc3RDYWxsYmFjayog
Y29yZU9iamVjdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsK
KyAgICBBU1NFUlQoY29yZU9iamVjdCk7CiAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9DQUxM
QkFDSyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfQ0FMTEJBQ0ssICJjb3JlLW9i
amVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApAQCAtMTE0LDggKzExNCw4IEBAIGdib29s
ZWFuCiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9ub19wYXJhbShXZWJL
aXRET01UZXN0Q2FsbGJhY2sqIHNlbGYpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX0NBTExCQUNLKHNlbGYpLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNr
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0t
PmNhbGxiYWNrV2l0aE5vUGFyYW0oKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTI5LDE1ICsx
MjksMTEgQEAgZ2Jvb2xlYW4KIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRo
X2NsYXNzMXBhcmFtKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgV2ViS2l0RE9NQ2xhc3Mx
KiBjbGFzczFQYXJhbSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfQ0FM
TEJBQ0soc2VsZiksIEZBTFNFKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9N
X0lTX0NMQVNTMShjbGFzczFQYXJhbSksIEZBTFNFKTsKICAgICBXZWJDb3JlOjpUZXN0Q2FsbGJh
Y2sqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
Y2xhc3MxUGFyYW0sIDApOwotICAgIFdlYkNvcmU6OkNsYXNzMSogY29udmVydGVkQ2xhc3MxUGFy
YW0gPSAwOwotICAgIGlmIChjbGFzczFQYXJhbSkgewotICAgICAgICBjb252ZXJ0ZWRDbGFzczFQ
YXJhbSA9IFdlYktpdDo6Y29yZShjbGFzczFQYXJhbSk7Ci0gICAgICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGNvbnZlcnRlZENsYXNzMVBhcmFtLCAwKTsKLSAgICB9CisgICAgV2ViQ29yZTo6Q2xh
c3MxKiBjb252ZXJ0ZWRDbGFzczFQYXJhbSA9IFdlYktpdDo6Y29yZShjbGFzczFQYXJhbSk7CiAg
ICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tXaXRoQ2xhc3MxUGFyYW0oY29udmVy
dGVkQ2xhc3MxUGFyYW0pOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQpAQCAtMTUwLDE2ICsx
NDYsMTIgQEAgZ2Jvb2xlYW4KIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRo
X2NsYXNzMnBhcmFtKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgV2ViS2l0RE9NQ2xhc3My
KiBjbGFzczJQYXJhbSwgY29uc3QgZ2NoYXIqIHN0ckFyZykKIHsKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX1RFU1RfQ0FMTEJBQ0soc2VsZiksIEZBTFNFKTsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX0NMQVNTMihjbGFzczJQYXJhbSksIEZBTFNFKTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChzdHJBcmcsIEZBTFNFKTsKICAgICBXZWJDb3JlOjpUZXN0
Q2FsbGJhY2sqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoY2xhc3MyUGFyYW0sIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0ckFyZywg
MCk7Ci0gICAgV2ViQ29yZTo6Q2xhc3MyKiBjb252ZXJ0ZWRDbGFzczJQYXJhbSA9IDA7Ci0gICAg
aWYgKGNsYXNzMlBhcmFtKSB7Ci0gICAgICAgIGNvbnZlcnRlZENsYXNzMlBhcmFtID0gV2ViS2l0
Ojpjb3JlKGNsYXNzMlBhcmFtKTsKLSAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29udmVy
dGVkQ2xhc3MyUGFyYW0sIDApOwotICAgIH0KKyAgICBXZWJDb3JlOjpDbGFzczIqIGNvbnZlcnRl
ZENsYXNzMlBhcmFtID0gV2ViS2l0Ojpjb3JlKGNsYXNzMlBhcmFtKTsKICAgICBXVEY6OlN0cmlu
ZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKICAgICBn
Ym9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dpdGhDbGFzczJQYXJhbShjb252ZXJ0ZWRD
bGFzczJQYXJhbSwgY29udmVydGVkU3RyQXJnKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTcz
LDE1ICsxNjUsMTEgQEAgZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193
aXRoX25vbl9ib29sX3JldHVybl90eXBlKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgV2Vi
S2l0RE9NQ2xhc3MzKiBjbGFzczNQYXJhbSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQot
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9N
X0lTX1RFU1RfQ0FMTEJBQ0soc2VsZiksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfQ0xBU1MzKGNsYXNzM1BhcmFtKSwgMCk7CiAgICAgV2ViQ29yZTo6VGVzdENh
bGxiYWNrKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKGNsYXNzM1BhcmFtLCAwKTsKLSAgICBXZWJDb3JlOjpDbGFzczMqIGNvbnZlcnRlZENsYXNz
M1BhcmFtID0gMDsKLSAgICBpZiAoY2xhc3MzUGFyYW0pIHsKLSAgICAgICAgY29udmVydGVkQ2xh
c3MzUGFyYW0gPSBXZWJLaXQ6OmNvcmUoY2xhc3MzUGFyYW0pOwotICAgICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChjb252ZXJ0ZWRDbGFzczNQYXJhbSwgMCk7Ci0gICAgfQorICAgIFdlYkNvcmU6
OkNsYXNzMyogY29udmVydGVkQ2xhc3MzUGFyYW0gPSBXZWJLaXQ6OmNvcmUoY2xhc3MzUGFyYW0p
OwogICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBl
KGNvbnZlcnRlZENsYXNzM1BhcmFtKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKQEAgLTE5
NCwxNSArMTgyLDExIEBAIGdib29sZWFuCiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJh
Y2tfd2l0aF9zdHJpbmdfbGlzdChXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHNlbGYsIFdlYktpdERP
TURPTVN0cmluZ0xpc3QqIGxpc3RQYXJhbSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQot
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9N
X0lTX1RFU1RfQ0FMTEJBQ0soc2VsZiksIEZBTFNFKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX0RPTV9TVFJJTkdfTElTVChsaXN0UGFyYW0pLCBGQUxTRSk7CiAgICAg
V2ViQ29yZTo6VGVzdENhbGxiYWNrKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKGxpc3RQYXJhbSwgMCk7Ci0gICAgV2ViQ29yZTo6RE9NU3RyaW5n
TGlzdCogY29udmVydGVkTGlzdFBhcmFtID0gMDsKLSAgICBpZiAobGlzdFBhcmFtKSB7Ci0gICAg
ICAgIGNvbnZlcnRlZExpc3RQYXJhbSA9IFdlYktpdDo6Y29yZShsaXN0UGFyYW0pOwotICAgICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChjb252ZXJ0ZWRMaXN0UGFyYW0sIDApOwotICAgIH0KKyAg
ICBXZWJDb3JlOjpET01TdHJpbmdMaXN0KiBjb252ZXJ0ZWRMaXN0UGFyYW0gPSBXZWJLaXQ6OmNv
cmUobGlzdFBhcmFtKTsKICAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dpdGhT
dHJpbmdMaXN0KGNvbnZlcnRlZExpc3RQYXJhbSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNl
CkBAIC0yMTUsOCArMTk5LDggQEAgZ2Jvb2xlYW4KIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19j
YWxsYmFja193aXRoX2Jvb2xlYW4oV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmLCBnYm9vbGVh
biBib29sUGFyYW0pCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0NBTExC
QUNLKHNlbGYpLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwogICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0
aEJvb2xlYW4oYm9vbFBhcmFtKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjMwLDIxICsyMTQs
MTMgQEAgZ2Jvb2xlYW4KIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja19yZXF1aXJl
c190aGlzX3RvX3Bhc3MoV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmLCBXZWJLaXRET01DbGFz
czgqIGNsYXNzOFBhcmFtLCBXZWJLaXRET01UaGlzQ2xhc3MqIHRoaXNDbGFzc1BhcmFtKQogewog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwg
MCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9DQUxMQkFDSyhzZWxmKSwgRkFMU0Up
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfQ0xBU1M4KGNsYXNzOFBh
cmFtKSwgRkFMU0UpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEhJ
U19DTEFTUyh0aGlzQ2xhc3NQYXJhbSksIEZBTFNFKTsKICAgICBXZWJDb3JlOjpUZXN0Q2FsbGJh
Y2sqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
Y2xhc3M4UGFyYW0sIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHRoaXNDbGFzc1BhcmFt
LCAwKTsKLSAgICBXZWJDb3JlOjpDbGFzczgqIGNvbnZlcnRlZENsYXNzOFBhcmFtID0gMDsKLSAg
ICBpZiAoY2xhc3M4UGFyYW0pIHsKLSAgICAgICAgY29udmVydGVkQ2xhc3M4UGFyYW0gPSBXZWJL
aXQ6OmNvcmUoY2xhc3M4UGFyYW0pOwotICAgICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb252
ZXJ0ZWRDbGFzczhQYXJhbSwgMCk7Ci0gICAgfQotICAgIFdlYkNvcmU6OlRoaXNDbGFzcyogY29u
dmVydGVkVGhpc0NsYXNzUGFyYW0gPSAwOwotICAgIGlmICh0aGlzQ2xhc3NQYXJhbSkgewotICAg
ICAgICBjb252ZXJ0ZWRUaGlzQ2xhc3NQYXJhbSA9IFdlYktpdDo6Y29yZSh0aGlzQ2xhc3NQYXJh
bSk7Ci0gICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbnZlcnRlZFRoaXNDbGFzc1BhcmFt
LCAwKTsKLSAgICB9CisgICAgV2ViQ29yZTo6Q2xhc3M4KiBjb252ZXJ0ZWRDbGFzczhQYXJhbSA9
IFdlYktpdDo6Y29yZShjbGFzczhQYXJhbSk7CisgICAgV2ViQ29yZTo6VGhpc0NsYXNzKiBjb252
ZXJ0ZWRUaGlzQ2xhc3NQYXJhbSA9IFdlYktpdDo6Y29yZSh0aGlzQ2xhc3NQYXJhbSk7CiAgICAg
Z2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MoY29udmVy
dGVkQ2xhc3M4UGFyYW0sIGNvbnZlcnRlZFRoaXNDbGFzc1BhcmFtKTsKICAgICByZXR1cm4gcmVz
dWx0OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCmluZGV4IDViZjM4YzkuLmJjNzczODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDdXN0
b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMzksNyAr
MzksOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0
dGVyKiBraXQoV2ViQ29yZTo6VGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBvYmopCiB7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwob2JqLCAwKTsKKyAgICBpZiAoIW9iaikKKyAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Kj4ocmV0KTsKQEAgLTQ5LDEzICs1MCwxMiBAQCBXZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIqIGtpdChXZWJDb3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIG9iaikKIAogV2ViQ29yZTo6
VGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBjb3JlKFdlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRl
ciogcmVxdWVzdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKLSAg
ICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+Y29yZU9iamVjdC5nZXQoKTsKKyAgICByZXR1cm4gcmVx
dWVzdCA/IHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCkgOiAwOwogfQogCiBXZWJLaXRE
T01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHdyYXBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIoV2ViQ29y
ZTo6VGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBjb3JlT2JqZWN0KQogewotICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOworICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKICAgICBy
ZXR1cm4gV0VCS0lUX0RPTV9URVNUX0NVU1RPTV9OQU1FRF9HRVRURVIoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX0RPTV9URVNUX0NVU1RPTV9OQU1FRF9HRVRURVIsICJjb3JlLW9iamVjdCIsIGNv
cmVPYmplY3QsIE5VTEwpKTsKIH0KIApAQCAtMTAxLDEwICsxMDEsMTAgQEAgc3RhdGljIHZvaWQg
d2Via2l0X2RvbV90ZXN0X2N1c3RvbV9uYW1lZF9nZXR0ZXJfaW5pdChXZWJLaXRET01UZXN0Q3Vz
dG9tTmFtZWRHZXQKIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVyX2Fu
b3RoZXJfZnVuY3Rpb24oV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBzZWxmLCBjb25z
dCBnY2hhciogc3RyKQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RDdXN0b21O
YW1lZEdldHRlciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9ET01fSVNfVEVTVF9DVVNUT01fTkFNRURfR0VUVEVSKHNlbGYpKTsKICAgICBn
X3JldHVybl9pZl9mYWlsKHN0cik7CisgICAgV2ViQ29yZTo6VGVzdEN1c3RvbU5hbWVkR2V0dGVy
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0
ciA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHIpOwogICAgIGl0ZW0tPmFub3RoZXJGdW5jdGlv
bihjb252ZXJ0ZWRTdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDVlM2EzZGMuLjZkMTlkYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTM5
LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYktpdERPTVRlc3RFdmVudENvbnN0
cnVjdG9yKiBraXQoV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqIG9iaikKIHsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChvYmosIDApOworICAgIGlmICghb2JqKQorICAgICAgICByZXR1
cm4gMDsKIAogICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikp
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rv
cio+KHJldCk7CkBAIC00OSwxMyArNTAsMTIgQEAgV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0
b3IqIGtpdChXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3Rvciogb2JqKQogCiBXZWJDb3JlOjpU
ZXN0RXZlbnRDb25zdHJ1Y3RvciogY29yZShXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvciog
cmVxdWVzdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKLSAgICBy
ZXR1cm4gcmVxdWVzdC0+cHJpdi0+Y29yZU9iamVjdC5nZXQoKTsKKyAgICByZXR1cm4gcmVxdWVz
dCA/IHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCkgOiAwOwogfQogCiBXZWJLaXRET01U
ZXN0RXZlbnRDb25zdHJ1Y3Rvciogd3JhcFRlc3RFdmVudENvbnN0cnVjdG9yKFdlYkNvcmU6OlRl
c3RFdmVudENvbnN0cnVjdG9yKiBjb3JlT2JqZWN0KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKGNvcmVPYmplY3QsIDApOworICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKICAgICByZXR1cm4g
V0VCS0lUX0RPTV9URVNUX0VWRU5UX0NPTlNUUlVDVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9ET01fVEVTVF9FVkVOVF9DT05TVFJVQ1RPUiwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwg
TlVMTCkpOwogfQogCkBAIC0xNDUsOCArMTQ1LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX2luaXQoV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IK
IGdjaGFyKgogd2Via2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX2dldF9hdHRyMShXZWJL
aXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvciogc2VsZikKIHsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0VWRU5UX0NPTlNU
UlVDVE9SKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3RvciogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRG
OFN0cmluZyhpdGVtLT5hdHRyMSgpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTU1LDggKzE1
NSw4IEBAIHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9nZXRfYXR0cjEoV2ViS2l0
RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqIHNlbGYpCiBnY2hhcioKIHdlYmtpdF9kb21fdGVzdF9l
dmVudF9jb25zdHJ1Y3Rvcl9nZXRfYXR0cjIoV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3Iq
IHNlbGYpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9ET01fSVNfVEVTVF9FVkVOVF9DT05TVFJVQ1RPUihzZWxmKSwgMCk7CiAgICAgV2Vi
Q29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAg
ICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YXR0cjIoKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRU
YXJnZXQuY3BwCmluZGV4IGI3NDg3MzEuLmJmOTYxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudFRhcmdl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtNDMsNyArNDMsOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0KiBraXQoV2ViQ29yZTo6VGVzdEV2
ZW50VGFyZ2V0KiBvYmopCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob2JqLCAwKTsKKyAg
ICBpZiAoIW9iaikKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoZ3BvaW50ZXIgcmV0ID0g
RE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
S2l0RE9NVGVzdEV2ZW50VGFyZ2V0Kj4ocmV0KTsKQEAgLTUzLDEzICs1NCwxMiBAQCBXZWJLaXRE
T01UZXN0RXZlbnRUYXJnZXQqIGtpdChXZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXQqIG9iaikKIAog
V2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0KiBjb3JlKFdlYktpdERPTVRlc3RFdmVudFRhcmdldCog
cmVxdWVzdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKLSAgICBy
ZXR1cm4gcmVxdWVzdC0+cHJpdi0+Y29yZU9iamVjdC5nZXQoKTsKKyAgICByZXR1cm4gcmVxdWVz
dCA/IHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCkgOiAwOwogfQogCiBXZWJLaXRET01U
ZXN0RXZlbnRUYXJnZXQqIHdyYXBUZXN0RXZlbnRUYXJnZXQoV2ViQ29yZTo6VGVzdEV2ZW50VGFy
Z2V0KiBjb3JlT2JqZWN0KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3Qs
IDApOworICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKICAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNU
X0VWRU5UX1RBUkdFVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfRVZFTlRfVEFS
R0VULCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBOVUxMKSk7CiB9CiAKQEAgLTEzNCwyNiAr
MTM0LDIyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfaW5pdChX
ZWJLaXRET01UZXN0RXZlbnRUYXJnZXQqIHNlbGYpCiBXZWJLaXRET01Ob2RlKgogd2Via2l0X2Rv
bV90ZXN0X2V2ZW50X3RhcmdldF9pdGVtKFdlYktpdERPTVRlc3RFdmVudFRhcmdldCogc2VsZiwg
Z3Vsb25nIGluZGV4KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfRVZFTlRfVEFSR0VUKHNlbGYpLCAwKTsKICAgICBX
ZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAg
UmVmUHRyPFdlYkNvcmU6Ok5vZGU+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5p
dGVtKGluZGV4KSk7Ci0gICAgV2ViS2l0RE9NTm9kZSogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29i
amVjdFJlc3VsdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV2ViS2l0
OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKIGdib29sZWFuCiB3ZWJraXRfZG9tX3Rl
c3RfZXZlbnRfdGFyZ2V0X2Rpc3BhdGNoX2V2ZW50KFdlYktpdERPTVRlc3RFdmVudFRhcmdldCog
c2VsZiwgV2ViS2l0RE9NRXZlbnQqIGV2dCwgR0Vycm9yKiogZXJyb3IpCiB7Ci0gICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9F
VkVOVF9UQVJHRVQoc2VsZiksIEZBTFNFKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfRE9NX0lTX0VWRU5UKGV2dCksIEZBTFNFKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCgh
ZXJyb3IgfHwgKmVycm9yLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0KiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGV2dCwg
MCk7Ci0gICAgV2ViQ29yZTo6RXZlbnQqIGNvbnZlcnRlZEV2dCA9IDA7Ci0gICAgaWYgKGV2dCkg
ewotICAgICAgICBjb252ZXJ0ZWRFdnQgPSBXZWJLaXQ6OmNvcmUoZXZ0KTsKLSAgICAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoY29udmVydGVkRXZ0LCAwKTsKLSAgICB9CisgICAgV2ViQ29yZTo6
RXZlbnQqIGNvbnZlcnRlZEV2dCA9IFdlYktpdDo6Y29yZShldnQpOwogICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmRpc3BhdGNo
RXZlbnQoY29udmVydGVkRXZ0LCBlYyk7CiAgICAgaWYgKGVjKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXhj
ZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RFeGNlcHRpb24uY3BwCmluZGV4IDQ5N2MxZTkuLjlhYTNiNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFeGNlcHRpb24uY3BwCkBAIC0zOSw3ICszOSw4
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJLaXRET01UZXN0RXhjZXB0aW9uKiBraXQoV2Vi
Q29yZTo6VGVzdEV4Y2VwdGlvbiogb2JqKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9i
aiwgMCk7CisgICAgaWYgKCFvYmopCisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKGdwb2lu
dGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdlYktpdERPTVRlc3RFeGNlcHRpb24qPihyZXQpOwpAQCAtNDksMTMgKzUwLDEyIEBA
IFdlYktpdERPTVRlc3RFeGNlcHRpb24qIGtpdChXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBvYmop
CiAKIFdlYkNvcmU6OlRlc3RFeGNlcHRpb24qIGNvcmUoV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbiog
cmVxdWVzdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKLSAgICBy
ZXR1cm4gcmVxdWVzdC0+cHJpdi0+Y29yZU9iamVjdC5nZXQoKTsKKyAgICByZXR1cm4gcmVxdWVz
dCA/IHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCkgOiAwOwogfQogCiBXZWJLaXRET01U
ZXN0RXhjZXB0aW9uKiB3cmFwVGVzdEV4Y2VwdGlvbihXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBj
b3JlT2JqZWN0KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwor
ICAgIEFTU0VSVChjb3JlT2JqZWN0KTsKICAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX0VYQ0VQ
VElPTihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfRVhDRVBUSU9OLCAiY29yZS1v
YmplY3QiLCBjb3JlT2JqZWN0LCBOVUxMKSk7CiB9CiAKQEAgLTEzMyw4ICsxMzMsOCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX2luaXQoV2ViS2l0RE9NVGVzdEV4Y2Vw
dGlvbiogc2VsZikKIGdjaGFyKgogd2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9nZXRfbmFtZShX
ZWJLaXRET01UZXN0RXhjZXB0aW9uKiBzZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfRVhDRVBUSU9OKHNlbGYp
LCAwKTsKICAgICBXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwogICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPm5hbWUo
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdElu
dGVyZmFjZS5jcHAKaW5kZXggYjg2NzEwZC4uNzJkNTA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIGtpdChXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlKiBvYmopCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob2JqLCAwKTsKKyAgICBpZiAo
IW9iaikKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2Jq
ZWN0Q2FjaGU6OmdldChvYmopKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9N
VGVzdEludGVyZmFjZSo+KHJldCk7CkBAIC01NiwxMyArNTcsMTIgQEAgV2ViS2l0RE9NVGVzdElu
dGVyZmFjZSoga2l0KFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIG9iaikKIAogV2ViQ29yZTo6VGVz
dEludGVyZmFjZSogY29yZShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiByZXF1ZXN0KQogewotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QsIDApOwotICAgIHJldHVybiByZXF1ZXN0LT5w
cml2LT5jb3JlT2JqZWN0LmdldCgpOworICAgIHJldHVybiByZXF1ZXN0ID8gcmVxdWVzdC0+cHJp
di0+Y29yZU9iamVjdC5nZXQoKSA6IDA7CiB9CiAKIFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHdy
YXBUZXN0SW50ZXJmYWNlKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmVPYmplY3QpCiB7Ci0g
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7CisgICAgQVNTRVJUKGNvcmVP
YmplY3QpOwogICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1RfSU5URVJGQUNFKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9ET01fVEVTVF9JTlRFUkZBQ0UsICJjb3JlLW9iamVjdCIsIGNvcmVPYmpl
Y3QsIE5VTEwpKTsKIH0KIApAQCAtMjI4LDggKzIyOCw4IEBAIHdlYmtpdF9kb21fdGVzdF9pbnRl
cmZhY2Vfc3VwcGxlbWVudGFsX21ldGhvZDEoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZikK
IHsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi0gICAgZ19yZXR1cm5faWZf
ZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfSU5URVJGQUNFKHNlbGYpKTsK
ICAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwog
ICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDEoaXRlbSk7
CiAjZWxzZQpAQCAtMjQ3LDI1ICsyNDcsMjEgQEAgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9z
dXBwbGVtZW50YWxfbWV0aG9kMihXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmLCBjb24KIHsK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0lOVEVSRkFDRShz
ZWxmKSwgMCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc3RyQXJnLCAwKTsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChvYmpBcmcsIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfVEVTVF9PQkoob2JqQXJnKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoIWVycm9yIHx8ICplcnJvciwgMCk7CisgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcg
PSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqKiBj
b252ZXJ0ZWRPYmpBcmcgPSAwOwotICAgIGlmIChvYmpBcmcpIHsKLSAgICAgICAgY29udmVydGVk
T2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7Ci0gICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKGNvbnZlcnRlZE9iakFyZywgMCk7Ci0gICAgfQorICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNv
bnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOwogICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0UmVz
dWx0ID0gV1RGOjpnZXRQdHIoV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFs
TWV0aG9kMihpdGVtLCBjb252ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZywgZWMpKTsKICAg
ICBpZiAoZWMpIHsKICAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVj
ZGVzYyhlYyk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJv
bV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKICAgICB9
Ci0gICAgV2ViS2l0RE9NVGVzdE9iaiogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3Vs
dC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29i
amVjdFJlc3VsdC5nZXQoKSk7CiAjZWxzZQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BS
RVNFTlQoIkNvbmRpdGlvbjExIikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJDb25kaXRpb24xMiIpCkBAIC0yODMsOCArMjc5LDggQEAgd2Via2l0X2RvbV90ZXN0X2ludGVy
ZmFjZV9zdXBwbGVtZW50YWxfbWV0aG9kNChXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmKQog
ewogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLSAgICBnX3JldHVybl9pZl9m
YWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9JTlRFUkZBQ0Uoc2VsZikpOwog
ICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAg
ICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kNChpdGVtKTsK
ICNlbHNlCkBAIC0zMDIsOCArMjk4LDggQEAgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRf
c3VwcGxlbWVudGFsX3N0cjEoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZikKIHsKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
c2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9JTlRFUkZBQ0Uoc2VsZiks
IDApOwogICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7CiAgICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6VGVz
dFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMShpdGVtKSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTMyNCw4ICszMjAsOCBAQCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdXBw
bGVtZW50YWxfc3RyMihXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmKQogewogI2lmIEVOQUJM
RShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxm
LCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0lOVEVSRkFDRShzZWxmKSwgMCk7
CiAgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
ICAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpUZXN0U3Vw
cGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIyKGl0ZW0pKTsKICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtMzQ2LDEwICszNDIsMTAgQEAgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfc3VwcGxl
bWVudGFsX3N0cjIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiwgY28KIHsKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6
VGVzdEludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9JTlRFUkZBQ0Uoc2VsZikpOwogICAgIGdfcmV0dXJu
X2lmX2ZhaWwodmFsdWUpOworICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgodmFsdWUpOwogICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNl
dFN1cHBsZW1lbnRhbFN0cjIoaXRlbSwgY29udmVydGVkVmFsdWUpOwogI2Vsc2UKQEAgLTM2Nywx
MiArMzYzLDExIEBAIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3N1cHBsZW1lbnRhbF9u
b2RlKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpCiB7CiAjaWYgRU5BQkxFKENvbmRpdGlv
bjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfSU5URVJGQUNFKHNlbGYpLCAwKTsKICAgICBXZWJD
b3JlOjpUZXN0SW50ZXJmYWNlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpOb2RlPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoV2ViQ29yZTo6VGVz
dFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTm9kZShpdGVtKSk7Ci0gICAgV2ViS2l0RE9NTm9k
ZSogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiAj
ZWxzZQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjExIikK
ICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xMiIpCkBAIC0z
OTAsMTUgKzM4NSwxMSBAQCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9zdXBwbGVtZW50
YWxfbm9kZShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmLCBXZQogewogI2lmIEVOQUJMRShD
b25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9ET01fSVNfVEVTVF9JTlRFUkZBQ0Uoc2VsZikpOworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19OT0RFKHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdEludGVy
ZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZh
bHVlKTsKLSAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRWYWx1ZSA9IDA7Ci0gICAgaWYgKHZh
bHVlKSB7Ci0gICAgICAgIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKLSAg
ICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRWYWx1ZSk7Ci0gICAgfQorICAgIFdlYkNv
cmU6Ok5vZGUqIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKICAgICBXZWJD
b3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKGl0ZW0sIGNvbnZlcnRl
ZFZhbHVlKTsKICNlbHNlCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29u
ZGl0aW9uMTEiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDVmZmU1NjIuLjhjYTVjYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHAKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYktpdERP
TVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBraXQoV2ViQ29yZTo6VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIqIG9iaikKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChvYmosIDApOwor
ICAgIGlmICghb2JqKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChncG9pbnRlciByZXQg
PSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
ZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KHJldCk7CkBAIC00OSwxMyArNTAs
MTIgQEAgV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGtpdChXZWJDb3JlOjpU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogb2IKIAogV2ViQ29yZTo6VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIqIGNvcmUoV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHJl
cXVlc3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7Ci0gICAgcmV0
dXJuIHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCk7CisgICAgcmV0dXJuIHJlcXVlc3Qg
PyByZXF1ZXN0LT5wcml2LT5jb3JlT2JqZWN0LmdldCgpIDogMDsKIH0KIAogV2ViS2l0RE9NVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHdyYXBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihX
ZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY29yZU9iamVjdCkKIHsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKKyAgICBBU1NFUlQoY29yZU9iamVj
dCk7CiAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9NRURJQV9RVUVSWV9MSVNUX0xJU1RFTkVS
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9NRURJQV9RVUVSWV9MSVNUX0xJU1RF
TkVSLCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBOVUxMKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCBhMmRi
MmJjLi4wMTZmMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwCkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rvcioga2l0KFdlYkNvcmU6OlRlc3ROYW1lZENv
bnN0cnVjdG9yKiBvYmopCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob2JqLCAwKTsKKyAg
ICBpZiAoIW9iaikKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoZ3BvaW50ZXIgcmV0ID0g
RE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
S2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IqPihyZXQpOwpAQCAtNDksMTMgKzUwLDEyIEBAIFdl
YktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yKiBraXQoV2ViQ29yZTo6VGVzdE5hbWVkQ29uc3Ry
dWN0b3IqIG9iaikKIAogV2ViQ29yZTo6VGVzdE5hbWVkQ29uc3RydWN0b3IqIGNvcmUoV2ViS2l0
RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IqIHJlcXVlc3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwocmVxdWVzdCwgMCk7Ci0gICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3Qu
Z2V0KCk7CisgICAgcmV0dXJuIHJlcXVlc3QgPyByZXF1ZXN0LT5wcml2LT5jb3JlT2JqZWN0Lmdl
dCgpIDogMDsKIH0KIAogV2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IqIHdyYXBUZXN0TmFt
ZWRDb25zdHJ1Y3RvcihXZWJDb3JlOjpUZXN0TmFtZWRDb25zdHJ1Y3RvciogY29yZU9iamVjdCkK
IHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKKyAgICBBU1NFUlQo
Y29yZU9iamVjdCk7CiAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9OQU1FRF9DT05TVFJVQ1RP
UihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfTkFNRURfQ09OU1RSVUNUT1IsICJj
b3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdE5vZGUuY3BwCmluZGV4IGEyZGJlMTcuLjQ1NTM4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROb2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0Tm9kZS5jcHAKQEAgLTQyLDcgKzQyLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIFdlYktpdERPTVRlc3ROb2RlKiBraXQoV2ViQ29yZTo6VGVzdE5vZGUqIG9iaikKIHsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChvYmosIDApOworICAgIGlmICghb2JqKQorICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9i
aikpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0Tm9kZSo+KHJldCk7
CkBAIC01MiwxMyArNTMsMTIgQEAgV2ViS2l0RE9NVGVzdE5vZGUqIGtpdChXZWJDb3JlOjpUZXN0
Tm9kZSogb2JqKQogCiBXZWJDb3JlOjpUZXN0Tm9kZSogY29yZShXZWJLaXRET01UZXN0Tm9kZSog
cmVxdWVzdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKLSAgICBy
ZXR1cm4gcmVxdWVzdC0+cHJpdi0+Y29yZU9iamVjdC5nZXQoKTsKKyAgICByZXR1cm4gcmVxdWVz
dCA/IHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCkgOiAwOwogfQogCiBXZWJLaXRET01U
ZXN0Tm9kZSogd3JhcFRlc3ROb2RlKFdlYkNvcmU6OlRlc3ROb2RlKiBjb3JlT2JqZWN0KQogewot
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOworICAgIEFTU0VSVChjb3Jl
T2JqZWN0KTsKICAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX05PREUoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX0RPTV9URVNUX05PREUsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAppbmRleCBmMzZmMTcyLi5l
NGY4MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAtNTIsNyArNTIs
OCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViS2l0RE9NVGVzdE9iaioga2l0KFdlYkNvcmU6
OlRlc3RPYmoqIG9iaikKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChvYmosIDApOworICAg
IGlmICghb2JqKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChncG9pbnRlciByZXQgPSBE
T01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJL
aXRET01UZXN0T2JqKj4ocmV0KTsKQEAgLTYyLDEzICs2MywxMiBAQCBXZWJLaXRET01UZXN0T2Jq
KiBraXQoV2ViQ29yZTo6VGVzdE9iaiogb2JqKQogCiBXZWJDb3JlOjpUZXN0T2JqKiBjb3JlKFdl
YktpdERPTVRlc3RPYmoqIHJlcXVlc3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVx
dWVzdCwgMCk7Ci0gICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCk7Cisg
ICAgcmV0dXJuIHJlcXVlc3QgPyByZXF1ZXN0LT5wcml2LT5jb3JlT2JqZWN0LmdldCgpIDogMDsK
IH0KIAogV2ViS2l0RE9NVGVzdE9iaiogd3JhcFRlc3RPYmooV2ViQ29yZTo6VGVzdE9iaiogY29y
ZU9iamVjdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKKyAg
ICBBU1NFUlQoY29yZU9iamVjdCk7CiAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9PQkooZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX09CSiwgImNvcmUtb2JqZWN0IiwgY29yZU9i
amVjdCwgTlVMTCkpOwogfQogCkBAIC04OTgsOCArODk4LDggQEAgc3RhdGljIHZvaWQgd2Via2l0
X2RvbV90ZXN0X29ial9pbml0KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB2b2lkCiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3ZvaWRfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7Ci0gICAg
Z19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNl
bGYpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwog
ICAgIGl0ZW0tPnZvaWRNZXRob2QoKTsKIH0KQEAgLTkwNywyNSArOTA3LDIxIEBAIHdlYmtpdF9k
b21fdGVzdF9vYmpfdm9pZF9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHZvaWQKIHdl
YmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYsIGdsb25nIGxvbmdBcmcsIGNvbnN0IGdjaGFyKiBzdHJBcmcsIFdlYktpdERPTVRlc3RP
YmoqIG9iakFyZykKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX09CSihzZWxmKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzdHJBcmcpOwotICAgIGdf
cmV0dXJuX2lmX2ZhaWwob2JqQXJnKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9PQkoob2JqQXJnKSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRP
YmpBcmcgPSAwOwotICAgIGlmIChvYmpBcmcpIHsKLSAgICAgICAgY29udmVydGVkT2JqQXJnID0g
V2ViS2l0Ojpjb3JlKG9iakFyZyk7Ci0gICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVk
T2JqQXJnKTsKLSAgICB9CisgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkT2JqQXJnID0g
V2ViS2l0Ojpjb3JlKG9iakFyZyk7CiAgICAgaXRlbS0+dm9pZE1ldGhvZFdpdGhBcmdzKGxvbmdB
cmcsIGNvbnZlcnRlZFN0ckFyZywgY29udmVydGVkT2JqQXJnKTsKIH0KIAogZ2xvbmcKIHdlYmtp
dF9kb21fdGVzdF9vYmpfbG9uZ19tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX09CSihzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKICAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5sb25nTWV0aG9kKCk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTkzNCwxNyArOTMwLDEzIEBAIHdlYmtpdF9kb21fdGVzdF9v
YmpfbG9uZ19tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIGdsb25nCiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2xvbmdfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBn
bG9uZyBsb25nQXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpB
cmcpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19URVNUX09CSihzZWxmKSwgMCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc3RyQXJn
LCAwKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChvYmpBcmcsIDApOworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkoob2JqQXJnKSwgMCk7CisgICAgV2Vi
Q29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmlu
ZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKLSAgICBX
ZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSAwOwotICAgIGlmIChvYmpBcmcpIHsK
LSAgICAgICAgY29udmVydGVkT2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7Ci0gICAgICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbnZlcnRlZE9iakFyZywgMCk7Ci0gICAgfQorICAgIFdl
YkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOwog
ICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmxvbmdNZXRob2RXaXRoQXJncyhsb25nQXJnLCBjb252
ZXJ0ZWRTdHJBcmcsIGNvbnZlcnRlZE9iakFyZyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAg
LTk1MiwxMTMgKzk0NCw4OCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2xvbmdfbWV0aG9kX3dpdGhf
YXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBsb25nQXJnLAogV2ViS2l0RE9NVGVz
dE9iaioKIHdlYmtpdF9kb21fdGVzdF9vYmpfb2JqX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBz
ZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBn
b2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+b2JqTWV0aG9kKCkpOwotICAgIFdlYktp
dERPTVRlc3RPYmoqIHJlc3VsdCA9IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQu
Z2V0KCkpOwogfQogCiBXZWJLaXRET01UZXN0T2JqKgogd2Via2l0X2RvbV90ZXN0X29ial9vYmpf
bWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBsb25nQXJnLCBj
b25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcpCiB7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihz
ZWxmKSwgMCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc3RyQXJnLCAwKTsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChvYmpBcmcsIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfVEVTVF9PQkoob2JqQXJnKSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJB
cmcgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKLSAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBjb252ZXJ0ZWRPYmpBcmcgPSAwOwotICAgIGlmIChvYmpBcmcpIHsKLSAgICAgICAgY29udmVy
dGVkT2JqQXJnID0gV2ViS2l0Ojpjb3JlKG9iakFyZyk7Ci0gICAgICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGNvbnZlcnRlZE9iakFyZywgMCk7Ci0gICAgfQorICAgIFdlYkNvcmU6OlRlc3RPYmoq
IGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpUZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+b2JqTWV0aG9k
V2l0aEFyZ3MobG9uZ0FyZywgY29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcpKTsKLSAg
ICBXZWJLaXRET01UZXN0T2JqKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0Lmdl
dCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0
UmVzdWx0LmdldCgpKTsKIH0KIAogV2ViS2l0RE9NVGVzdE9iaioKIHdlYmtpdF9kb21fdGVzdF9v
YmpfbWV0aG9kX3RoYXRfcmVxdWlyZXNfYWxsX2FyZ3NfYW5kX3Rocm93cyhXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcs
IEdFcnJvcioqIGVycm9yKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpU
ZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOwogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKHN0ckFyZywgMCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob2JqQXJnLCAwKTsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKG9iakFyZyks
IDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAqZXJyb3IsIDApOworICAg
IFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpT
dHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0ckFyZyk7Ci0g
ICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkT2JqQXJnID0gMDsKLSAgICBpZiAob2JqQXJn
KSB7Ci0gICAgICAgIGNvbnZlcnRlZE9iakFyZyA9IFdlYktpdDo6Y29yZShvYmpBcmcpOwotICAg
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb252ZXJ0ZWRPYmpBcmcsIDApOwotICAgIH0KKyAg
ICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRPYmpBcmcgPSBXZWJLaXQ6OmNvcmUob2JqQXJn
KTsKICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPm1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoY29udmVydGVkU3RyQXJnLCBjb252ZXJ0ZWRPYmpBcmcs
IGVjKSk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbiBlY2Rlc2MoZWMpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBn
X3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFt
ZSk7CiAgICAgfQotICAgIFdlYktpdERPTVRlc3RPYmoqIHJlc3VsdCA9IFdlYktpdDo6a2l0KGdv
YmplY3RSZXN1bHQuZ2V0KCkpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdlYktp
dDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwogfQogCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NlcmlhbGl6ZWRfdmFsdWUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkQXJnKQogewotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1NFUklBTElaRURfU0NSSVBUX1ZBTFVFKHNlcmlh
bGl6ZWRBcmcpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VyaWFsaXplZEFyZyk7Ci0gICAgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBjb252ZXJ0ZWRTZXJpYWxpemVkQXJnID0gMDsKLSAgICBp
ZiAoc2VyaWFsaXplZEFyZykgewotICAgICAgICBjb252ZXJ0ZWRTZXJpYWxpemVkQXJnID0gV2Vi
S2l0Ojpjb3JlKHNlcmlhbGl6ZWRBcmcpOwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZl
cnRlZFNlcmlhbGl6ZWRBcmcpOwotICAgIH0KKyAgICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIGNvbnZlcnRlZFNlcmlhbGl6ZWRBcmcgPSBXZWJLaXQ6OmNvcmUoc2VyaWFsaXplZEFy
Zyk7CiAgICAgaXRlbS0+c2VyaWFsaXplZFZhbHVlKGNvbnZlcnRlZFNlcmlhbGl6ZWRBcmcpOwog
fQogCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2lkYl9rZXkoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgV2ViS2l0RE9NSURCS2V5KiBrZXkpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxm
KTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfSURCX0tFWShrZXkpKTsKICAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoa2V5KTsK
LSAgICBXZWJDb3JlOjpJREJLZXkqIGNvbnZlcnRlZEtleSA9IDA7Ci0gICAgaWYgKGtleSkgewot
ICAgICAgICBjb252ZXJ0ZWRLZXkgPSBXZWJLaXQ6OmNvcmUoa2V5KTsKLSAgICAgICAgZ19yZXR1
cm5faWZfZmFpbChjb252ZXJ0ZWRLZXkpOwotICAgIH0KKyAgICBXZWJDb3JlOjpJREJLZXkqIGNv
bnZlcnRlZEtleSA9IFdlYktpdDo6Y29yZShrZXkpOwogICAgIGl0ZW0tPmlkYktleShjb252ZXJ0
ZWRLZXkpOwogfQogCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29wdGlvbnNfb2JqZWN0KFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTURpY3Rpb25hcnkqIG9vLCBXZWJLaXRET01E
aWN0aW9uYXJ5KiBvb28pCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfRElDVElPTkFSWShvbykpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19ESUNUSU9OQVJZKG9vbykpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChvbyk7Ci0gICAgZ19yZXR1cm5f
aWZfZmFpbChvb28pOwotICAgIFdlYkNvcmU6OkRpY3Rpb25hcnkqIGNvbnZlcnRlZE9vID0gMDsK
LSAgICBpZiAob28pIHsKLSAgICAgICAgY29udmVydGVkT28gPSBXZWJLaXQ6OmNvcmUob28pOwot
ICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZE9vKTsKLSAgICB9Ci0gICAgV2ViQ29y
ZTo6RGljdGlvbmFyeSogY29udmVydGVkT29vID0gMDsKLSAgICBpZiAob29vKSB7Ci0gICAgICAg
IGNvbnZlcnRlZE9vbyA9IFdlYktpdDo6Y29yZShvb28pOwotICAgICAgICBnX3JldHVybl9pZl9m
YWlsKGNvbnZlcnRlZE9vbyk7Ci0gICAgfQorICAgIFdlYkNvcmU6OkRpY3Rpb25hcnkqIGNvbnZl
cnRlZE9vID0gV2ViS2l0Ojpjb3JlKG9vKTsKKyAgICBXZWJDb3JlOjpEaWN0aW9uYXJ5KiBjb252
ZXJ0ZWRPb28gPSBXZWJLaXQ6OmNvcmUob29vKTsKICAgICBpdGVtLT5vcHRpb25zT2JqZWN0KGNv
bnZlcnRlZE9vLCBjb252ZXJ0ZWRPb28pOwogfQogCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X21ldGhvZF93aXRoX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBHRXJyb3IqKiBl
cnJvcikKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9PQkooc2VsZikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICplcnJv
cik7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpdGVtLT5tZXRob2RXaXRoRXhj
ZXB0aW9uKGVjKTsKQEAgLTEwNzEsOCArMTAzOCw4IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0
aG9kX3dpdGhfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvcioqIGVycm9y
CiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X3N0YXRlX3ZvaWQoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZikKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+d2l0aFNjcmlwdFN0YXRlVm9pZCgp
OwogfQpAQCAtMTA4MCwxOSArMTA0NywxOSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2Ny
aXB0X3N0YXRlX3ZvaWQoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIFdlYktpdERPTVRlc3RPYmoq
CiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X3N0YXRlX29iaihXZWJLaXRET01UZXN0
T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0
T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0
T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+d2l0aFNjcmlwdFN0YXRlT2Jq
KCkpOwotICAgIFdlYktpdERPTVRlc3RPYmoqIHJlc3VsdCA9IFdlYktpdDo6a2l0KGdvYmplY3RS
ZXN1bHQuZ2V0KCkpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0
KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwogfQogCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dp
dGhfc2NyaXB0X3N0YXRlX3ZvaWRfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdF
cnJvcioqIGVycm9yKQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbCghZXJyb3Ig
fHwgKmVycm9yKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGl0ZW0tPndpdGhT
Y3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24oZWMpOwpAQCAtMTEwNSw4ICsxMDcyLDkgQEAgd2Via2l0
X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9zdGF0ZV92b2lkX2V4Y2VwdGlvbihXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBHRXIKIFdlYktpdERPTVRlc3RPYmoqCiB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3dpdGhfc2NyaXB0X3N0YXRlX29ial9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwg
R0Vycm9yKiogZXJyb3IpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAqZXJyb3IsIDApOwogICAgIFdlYkNvcmU6OlRlc3RPYmoq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQgPSBXVEY6
OmdldFB0cihpdGVtLT53aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oZWMpKTsKQEAgLTExMTQs
MTUgKzEwODIsMTQgQEAgd2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9zdGF0ZV9vYmpf
ZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnIKICAgICAgICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CiAgICAgICAgIGdfc2V0X2Vycm9y
X2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNj
LmNvZGUsIGVjZGVzYy5uYW1lKTsKICAgICB9Ci0gICAgV2ViS2l0RE9NVGVzdE9iaiogcmVzdWx0
ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKIHZvaWQK
IHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHQoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZikKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKIH0KQEAgLTExMzAsOCArMTA5Nyw4IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0
aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHQoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHZvaWQK
IHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3Nj
cmlwdF9zdGF0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CiAgICAgV2Vi
Q29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT53aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKCk7CiB9CkBAIC0xMTM5LDggKzEx
MDYsOSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0
X2FuZF9zY3JpcHRfc3RhdGUoV2ViS2l0RE9NVGVzdAogV2ViS2l0RE9NVGVzdE9iaioKIHdlYmtp
dF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9z
dGF0ZV9vYmpfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvcioqIGVycm9y
KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCgh
ZXJyb3IgfHwgKmVycm9yLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihlYykp
OwpAQCAtMTE0OCwyNiArMTExNiwyNCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0
X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfb2JqX2V4Y2VwdGlvbgogICAgICAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKICAgICAgICAg
Z19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RP
TSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwogICAgIH0KLSAgICBXZWJLaXRET01UZXN0
T2JqKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLSAgICByZXR1
cm4gcmVzdWx0OworICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsK
IH0KIAogV2ViS2l0RE9NVGVzdE9iaioKIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRf
ZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV93aXRoX3NwYWNlcyhXZWJLaXRET01U
ZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpU
ZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpU
ZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+d2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMoKSk7Ci0gICAgV2ViS2l0RE9NVGVz
dE9iaiogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7
CiB9CiAKIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfb3B0aW9uYWxfYXJn
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIG9wdCkKIHsKLSAgICBnX3JldHVybl9pZl9m
YWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOwogICAgIFdl
YkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+bWV0
aG9kV2l0aE9wdGlvbmFsQXJnKG9wdCk7CiB9CkBAIC0xMTc1LDggKzExNDEsOCBAQCB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX29wdGlvbmFsX2FyZyhXZWJLaXRET01UZXN0T2JqKiBz
ZWxmLCBnbG9uZyBvcHQpCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX25v
bl9vcHRpb25hbF9hcmdfYW5kX29wdGlvbmFsX2FyZyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBn
bG9uZyBub25PcHQsIGdsb25nIG9wdCkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOwogICAgIFdlYkNvcmU6OlRlc3RP
YmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+bWV0aG9kV2l0aE5vbk9w
dGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcobm9uT3B0LCBvcHQpOwogfQpAQCAtMTE4NCw4ICsxMTUw
LDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9ub25fb3B0aW9uYWxfYXJnX2Fu
ZF9vcHRpb25hbF9hcmcoV2ViS2l0RE9NVGVzdE8KIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpf
bWV0aG9kX3dpdGhfbm9uX29wdGlvbmFsX2FyZ19hbmRfdHdvX29wdGlvbmFsX2FyZ3MoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgbm9uT3B0LCBnbG9uZyBvcHQxLCBnbG9uZyBvcHQyKQog
ewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNU
X09CSihzZWxmKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKICAgICBpdGVtLT5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFy
Z3Mobm9uT3B0LCBvcHQxLCBvcHQyKTsKIH0KQEAgLTExOTMsMTAgKzExNTksMTAgQEAgd2Via2l0
X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9ub25fb3B0aW9uYWxfYXJnX2FuZF90d29fb3B0aW9u
YWxfYXJncyhXZWJLaXRET00KIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhf
b3B0aW9uYWxfc3RyaW5nKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBzdHIp
CiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkoo
c2VsZikpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc3RyKTsKKyAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0
ciA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHIpOwogICAgIGl0ZW0tPm1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZyhjb252ZXJ0ZWRTdHIpOwogfQpAQCAtMTIwNCwxMCArMTE3MCwxMCBAQCB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX29wdGlvbmFsX3N0cmluZyhXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBjb25zdCBnYwogdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0
aF9vcHRpb25hbF9zdHJpbmdfaXNfdW5kZWZpbmVkKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNv
bnN0IGdjaGFyKiBzdHIpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9E
T01fSVNfVEVTVF9PQkooc2VsZikpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc3RyKTsKKyAgICBX
ZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3Ry
aW5nIGNvbnZlcnRlZFN0ciA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHIpOwogICAgIGl0ZW0t
Pm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKGNvbnZlcnRlZFN0cik7CiB9CkBA
IC0xMjE1LDEwICsxMTgxLDEwIEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfb3B0
aW9uYWxfc3RyaW5nX2lzX3VuZGVmaW5lZChXZWJLaXRET01UZXN0T2JqKiBzCiB2b2lkCiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX29wdGlvbmFsX3N0cmluZ19pc19udWxsX3N0cmlu
ZyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3RyKQogewotICAgIGdfcmV0
dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKICAgICBn
X3JldHVybl9pZl9mYWlsKHN0cik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHIgPSBXVEY6OlN0cmlu
Zzo6ZnJvbVVURjgoc3RyKTsKICAgICBpdGVtLT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051
bGxTdHJpbmcoY29udmVydGVkU3RyKTsKIH0KQEAgLTEyMjcsOCArMTE5Myw4IEBAIGdjaGFyKgog
d2Via2l0X2RvbV90ZXN0X29ial9jb25kaXRpb25hbF9tZXRob2QxKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpCiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDAp
OwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAg
Z2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+Y29uZGl0aW9uYWxNZXRo
b2QxKCkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMjQyLDggKzEyMDgsOCBAQCB2b2lkCiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbmRpdGlvbmFsX21ldGhvZDIoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZikKIHsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCi0g
ICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JK
KHNlbGYpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIGl0ZW0tPmNvbmRpdGlvbmFsTWV0aG9kMigpOwogI2Vsc2UKQEAgLTEyNjAsOCArMTIy
Niw4IEBAIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfY29uZGl0aW9uYWxfbWV0aG9kMyhXZWJL
aXRET01UZXN0T2JqKiBzZWxmKQogewogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMikKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9E
T01fSVNfVEVTVF9PQkooc2VsZikpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+Y29uZGl0aW9uYWxNZXRob2QzKCk7CiAjZWxzZQpA
QCAtMTI3Myw4ICsxMjM5LDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9jb25kaXRpb25hbF9tZXRo
b2QzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2Ns
YXNzX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CiAgICAgV2Vi
Q29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5jbGFz
c01ldGhvZCgpOwogfQpAQCAtMTI4Miw4ICsxMjQ4LDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9j
bGFzc19tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIGdsb25nCiB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2NsYXNzX21ldGhvZF93aXRoX29wdGlvbmFsKFdlYktpdERPTVRlc3RPYmoqIHNlbGYs
IGdsb25nIGFyZykKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6VGVz
dE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnbG9uZyByZXN1bHQgPSBpdGVt
LT5jbGFzc01ldGhvZFdpdGhPcHRpb25hbChhcmcpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0x
MjkzLDggKzEyNTksOCBAQCB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX292ZXJsb2FkZWRfbWV0
aG9kMShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBhcmcpCiB7CiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCi0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9N
X0lTX1RFU1RfT0JKKHNlbGYpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPm92ZXJsb2FkZWRNZXRob2QxKGFyZyk7CiAjZWxzZQpA
QCAtMTMwNiwxMCArMTI3MiwxMCBAQCB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX292ZXJsb2Fk
ZWRfbWV0aG9kMShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogdHlwZSkKIHsK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0
T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh0eXBlKTsK
KyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdU
Rjo6U3RyaW5nIGNvbnZlcnRlZFR5cGUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodHlwZSk7CiAg
ICAgaXRlbS0+b3ZlcmxvYWRlZE1ldGhvZDEoY29udmVydGVkVHlwZSk7CiAjZWxzZQpAQCAtMTMy
MCw5MCArMTI4Niw3MiBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX292ZXJsb2FkZWRfbWV0aG9kMShX
ZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogdHlwZQogdm9pZAogd2Via2l0X2Rv
bV90ZXN0X29ial9jb252ZXJ0MShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01hKiB2
YWx1ZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9PQkooc2VsZikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19B
KHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjphKiBjb252ZXJ0
ZWRWYWx1ZSA9IDA7Ci0gICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgIGNvbnZlcnRlZFZhbHVlID0g
V2ViS2l0Ojpjb3JlKHZhbHVlKTsKLSAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRW
YWx1ZSk7Ci0gICAgfQorICAgIFdlYkNvcmU6OmEqIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpj
b3JlKHZhbHVlKTsKICAgICBpdGVtLT5jb252ZXJ0MShjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKIHZv
aWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfY29udmVydDIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwg
V2ViS2l0RE9NYiogdmFsdWUpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9ET01fSVNfQih2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29y
ZTo6YiogY29udmVydGVkVmFsdWUgPSAwOwotICAgIGlmICh2YWx1ZSkgewotICAgICAgICBjb252
ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgICAgIGdfcmV0dXJuX2lmX2Zh
aWwoY29udmVydGVkVmFsdWUpOwotICAgIH0KKyAgICBXZWJDb3JlOjpiKiBjb252ZXJ0ZWRWYWx1
ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CiAgICAgaXRlbS0+Y29udmVydDIoY29udmVydGVkVmFs
dWUpOwogfQogCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NvbnZlcnQ0KFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIFdlYktpdERPTWQqIHZhbHVlKQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwo
c2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0QodmFsdWUpKTsKICAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUp
OwotICAgIFdlYkNvcmU6OmQqIGNvbnZlcnRlZFZhbHVlID0gMDsKLSAgICBpZiAodmFsdWUpIHsK
LSAgICAgICAgY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgICAgICBn
X3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZFZhbHVlKTsKLSAgICB9CisgICAgV2ViQ29yZTo6ZCog
Y29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwogICAgIGl0ZW0tPmNvbnZlcnQ0
KGNvbnZlcnRlZFZhbHVlKTsKIH0KIAogdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9jb252ZXJ0
NShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01lKiB2YWx1ZSkKIHsKLSAgICBnX3Jl
dHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikp
OworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19FKHZhbHVlKSk7CiAgICAgV2Vi
Q29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnX3JldHVybl9p
Zl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjplKiBjb252ZXJ0ZWRWYWx1ZSA9IDA7Ci0gICAg
aWYgKHZhbHVlKSB7Ci0gICAgICAgIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVl
KTsKLSAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRWYWx1ZSk7Ci0gICAgfQorICAg
IFdlYkNvcmU6OmUqIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKICAgICBp
dGVtLT5jb252ZXJ0NShjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKIFdlYktpdERPTVNWR1BvaW50Kgog
d2Via2l0X2RvbV90ZXN0X29ial9tdXRhYmxlX3BvaW50X2Z1bmN0aW9uKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOwogICAgIFdlYkNvcmU6OlRlc3RP
YmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNWR1Bv
aW50PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+bXV0YWJsZVBvaW50RnVuY3Rp
b24oKSk7Ci0gICAgV2ViS2l0RE9NU1ZHUG9pbnQqIHJlc3VsdCA9IFdlYktpdDo6a2l0KGdvYmpl
Y3RSZXN1bHQuZ2V0KCkpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdlYktpdDo6
a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwogfQogCiBXZWJLaXRET01TVkdQb2ludCoKIHdlYmtp
dF9kb21fdGVzdF9vYmpfaW1tdXRhYmxlX3BvaW50X2Z1bmN0aW9uKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOwogICAgIFdlYkNvcmU6OlRlc3RPYmoq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNWR1BvaW50
PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+aW1tdXRhYmxlUG9pbnRGdW5jdGlv
bigpKTsKLSAgICBXZWJLaXRET01TVkdQb2ludCogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVj
dFJlc3VsdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV2ViS2l0Ojpr
aXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpf
b3JhbmdlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChz
ZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKICAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPmJhbmFuYSgp
OwogfQpAQCAtMTQxMSwxMCArMTM1OSwxMSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29yYW5nZShX
ZWJLaXRET01UZXN0T2JqKiBzZWxmKQogV2ViS2l0RE9NYm9vbCoKIHdlYmtpdF9kb21fdGVzdF9v
Ympfc3RyaWN0X2Z1bmN0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBz
dHIsIGdmbG9hdCBhLCBnbG9uZyBiLCBHRXJyb3IqKiBlcnJvcikKIHsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAw
KTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChzdHIsIDApOworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKCFlcnJvciB8fCAqZXJyb3IsIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHN0cik7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgUmVmUHRyPFdlYkNvcmU6OmJvb2w+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0
cihpdGVtLT5zdHJpY3RGdW5jdGlvbihjb252ZXJ0ZWRTdHIsIGEsIGIsIGVjKSk7CkBAIC0xNDIy
LDE4ICsxMzcxLDE3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc3RyaWN0X2Z1bmN0aW9uKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBzdHIsIGdmCiAgICAgICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOwogICAgICAgICBnX3NldF9lcnJv
cl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVz
Yy5jb2RlLCBlY2Rlc2MubmFtZSk7CiAgICAgfQotICAgIFdlYktpdERPTWJvb2wqIHJlc3VsdCA9
IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwogfQogCiB2b2lkCiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX3N0cmluZ19tZXRob2QoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZiwgY29uc3QgZ2NoYXIqIGhlYWQsIGNvbnN0IGdjaGFyKiB0YWlsKQogewotICAgIGdf
cmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKICAg
ICBnX3JldHVybl9pZl9mYWlsKGhlYWQpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwodGFpbCk7Cisg
ICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6
OlN0cmluZyBjb252ZXJ0ZWRIZWFkID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KGhlYWQpOwogICAg
IFdURjo6U3RyaW5nIGNvbnZlcnRlZFRhaWwgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodGFpbCk7
CiAgICAgaXRlbS0+dmFyaWFkaWNTdHJpbmdNZXRob2QoY29udmVydGVkSGVhZCwgY29udmVydGVk
VGFpbCk7CkBAIC0xNDQyLDggKzEzOTAsOCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGlj
X3N0cmluZ19tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqCiB2b2lk
CiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX2RvdWJsZV9tZXRob2QoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgZ2RvdWJsZSBoZWFkLCBnZG91YmxlIHRhaWwpCiB7Ci0gICAgZ19yZXR1cm5f
aWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKICAg
ICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0t
PnZhcmlhZGljRG91YmxlTWV0aG9kKGhlYWQsIHRhaWwpOwogfQpAQCAtMTQ1MSwyOSArMTM5OSwy
MSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX2RvdWJsZV9tZXRob2QoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgZ2RvdWJsZSBoZWFkLAogdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial92
YXJpYWRpY19ub2RlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01Ob2Rl
KiBoZWFkLCBXZWJLaXRET01Ob2RlKiB0YWlsKQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2Vs
Zik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfRE9NX0lTX05PREUoaGVhZCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19OT0RFKHRhaWwpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoaGVhZCk7Ci0gICAgZ19y
ZXR1cm5faWZfZmFpbCh0YWlsKTsKLSAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRIZWFkID0g
MDsKLSAgICBpZiAoaGVhZCkgewotICAgICAgICBjb252ZXJ0ZWRIZWFkID0gV2ViS2l0Ojpjb3Jl
KGhlYWQpOwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZEhlYWQpOwotICAgIH0K
LSAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRUYWlsID0gMDsKLSAgICBpZiAodGFpbCkgewot
ICAgICAgICBjb252ZXJ0ZWRUYWlsID0gV2ViS2l0Ojpjb3JlKHRhaWwpOwotICAgICAgICBnX3Jl
dHVybl9pZl9mYWlsKGNvbnZlcnRlZFRhaWwpOwotICAgIH0KKyAgICBXZWJDb3JlOjpOb2RlKiBj
b252ZXJ0ZWRIZWFkID0gV2ViS2l0Ojpjb3JlKGhlYWQpOworICAgIFdlYkNvcmU6Ok5vZGUqIGNv
bnZlcnRlZFRhaWwgPSBXZWJLaXQ6OmNvcmUodGFpbCk7CiAgICAgaXRlbS0+dmFyaWFkaWNOb2Rl
TWV0aG9kKGNvbnZlcnRlZEhlYWQsIGNvbnZlcnRlZFRhaWwpOwogfQogCiBnbG9uZwogd2Via2l0
X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X2xvbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBz
ZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPnJlYWRP
bmx5TG9uZ0F0dHIoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTQ4Miw4ICsxNDIyLDggQEAg
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X2xvbmdfYXR0cihXZWJLaXRET01UZXN0
T2JqKiBzZWxmKQogZ2NoYXIqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfc3Ry
aW5nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwg
MCk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAg
ICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5yZWFkT25seVN0cmlu
Z0F0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE0OTIsMTkgKzE0MzIsMTggQEAgd2Vi
a2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X3N0cmluZ19hdHRyKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYpCiBXZWJLaXRET01UZXN0T2JqKgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVh
ZF9vbmx5X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKLSAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNU
X09CSihzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdU
Rjo6Z2V0UHRyKGl0ZW0tPnJlYWRPbmx5VGVzdE9iakF0dHIoKSk7Ci0gICAgV2ViS2l0RE9NVGVz
dE9iaiogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7
CiB9CiAKIGdzaG9ydAogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfc2hvcnRfYXR0cihXZWJLaXRE
T01UZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdzaG9ydCByZXN1bHQg
PSBpdGVtLT5zaG9ydEF0dHIoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTUxMyw4ICsxNDUy
LDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfc2hvcnRfYXR0cihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmKQogdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfc2hvcnRfYXR0cihXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBnc2hvcnQgdmFsdWUpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChz
ZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKICAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPnNldFNob3J0
QXR0cih2YWx1ZSk7CiB9CkBAIC0xNTIyLDggKzE0NjEsOCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3NldF9zaG9ydF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdzaG9ydCB2YWx1ZSkKIGd1
c2hvcnQKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Vuc2lnbmVkX3Nob3J0X2F0dHIoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZikKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CiAgICAgV2ViQ29y
ZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBndXNob3J0IHJlc3Vs
dCA9IGl0ZW0tPnVuc2lnbmVkU2hvcnRBdHRyKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE1
MzIsOCArMTQ3MSw4IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Vuc2lnbmVkX3Nob3J0X2F0
dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X3Vuc2lnbmVkX3Nob3J0X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3VzaG9ydCB2YWx1
ZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNf
VEVTVF9PQkooc2VsZikpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CiAgICAgaXRlbS0+c2V0VW5zaWduZWRTaG9ydEF0dHIodmFsdWUpOwogfQpAQCAt
MTU0MSw4ICsxNDgwLDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfdW5zaWduZWRfc2hvcnRf
YXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBndXNob3J0IHZhbHUKIGdsb25nCiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9sb25nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX09CSihzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKICAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5sb25nQXR0cigpOwogICAg
IHJldHVybiByZXN1bHQ7CkBAIC0xNTUxLDggKzE0OTAsOCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X2dldF9sb25nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHZvaWQKIHdlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X2xvbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1
ZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNf
VEVTVF9PQkooc2VsZikpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CiAgICAgaXRlbS0+c2V0TG9uZ0F0dHIodmFsdWUpOwogfQpAQCAtMTU2MCw4ICsx
NDk5LDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfbG9uZ19hdHRyKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsIGdsb25nIHZhbHVlKQogZ2ludDY0CiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9s
b25nX2xvbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNl
bGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIGdpbnQ2NCByZXN1bHQgPSBpdGVtLT5sb25nTG9uZ0F0dHIoKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMTU3MCw4ICsxNTA5LDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfbG9u
Z19sb25nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHZvaWQKIHdlYmtpdF9kb21fdGVz
dF9vYmpfc2V0X2xvbmdfbG9uZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdpbnQ2NCB2
YWx1ZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9PQkooc2VsZikpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+c2V0TG9uZ0xvbmdBdHRyKHZhbHVlKTsKIH0KQEAgLTE1
NzksOCArMTUxOCw4IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2xvbmdfbG9uZ19hdHRyKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIGdpbnQ2NCB2YWx1ZSkKIGd1aW50NjQKIHdlYmtpdF9kb21f
dGVzdF9vYmpfZ2V0X3Vuc2lnbmVkX2xvbmdfbG9uZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgZ3VpbnQ2NCByZXN1bHQgPSBpdGVtLT51bnNp
Z25lZExvbmdMb25nQXR0cigpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNTg5LDggKzE1Mjgs
OCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF91bnNpZ25lZF9sb25nX2xvbmdfYXR0cihXZWJL
aXRET01UZXN0T2JqKiBzZWxmKQogdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfdW5zaWdu
ZWRfbG9uZ19sb25nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3VpbnQ2NCB2YWx1ZSkK
IHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVT
VF9PQkooc2VsZikpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CiAgICAgaXRlbS0+c2V0VW5zaWduZWRMb25nTG9uZ0F0dHIodmFsdWUpOwogfQpAQCAt
MTU5OCw4ICsxNTM3LDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfdW5zaWduZWRfbG9uZ19s
b25nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ3VpbnQ2NAogZ2NoYXIqCiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9zdHJpbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewot
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9N
X0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwogICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5n
KGl0ZW0tPnN0cmluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE2MDgsMTAgKzE1
NDcsMTAgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfc3RyaW5nX2F0dHIoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZikKIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3N0cmluZ19hdHRyKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKIHsKLSAgICBnX3JldHVy
bl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CiAgICAgZ19y
ZXR1cm5faWZfZmFpbCh2YWx1ZSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh2YWx1ZSk7CiAgICAgaXRlbS0+c2V0U3RyaW5nQXR0cihjb252ZXJ0ZWRW
YWx1ZSk7CiB9CkBAIC0xNjE5LDYwICsxNTU4LDUwIEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X3N0cmluZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkK
IFdlYktpdERPTVRlc3RPYmoqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF90ZXN0X29ial9hdHRy
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2Vs
ZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOwogICAg
IFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgUmVmUHRy
PFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT50ZXN0
T2JqQXR0cigpKTsKLSAgICBXZWJLaXRET01UZXN0T2JqKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChn
b2JqZWN0UmVzdWx0LmdldCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXZWJL
aXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIAogdm9pZAogd2Via2l0X2RvbV90ZXN0
X29ial9zZXRfdGVzdF9vYmpfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01U
ZXN0T2JqKiB2YWx1ZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19URVNUX09CSih2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2Vi
Q29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSAwOwotICAgIGlmICh2YWx1ZSkgewotICAg
ICAgICBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgICAgIGdfcmV0
dXJuX2lmX2ZhaWwoY29udmVydGVkVmFsdWUpOwotICAgIH0KKyAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CiAgICAgaXRlbS0+c2V0VGVz
dE9iakF0dHIoY29udmVydGVkVmFsdWUpOwogfQogCiBXZWJLaXRET01UZXN0T2JqKgogd2Via2l0
X2RvbV90ZXN0X29ial9nZXRfeG1sX29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7
Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9E
T01fSVNfVEVTVF9PQkooc2VsZiksIDApOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RS
ZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT54bWxPYmpBdHRyKCkpOwotICAgIFdlYktpdERPTVRl
c3RPYmoqIHJlc3VsdCA9IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkp
OwogfQogCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF94bWxfb2JqX2F0dHIoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdE9iaiogdmFsdWUpCiB7Ci0gICAgZ19yZXR1
cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsK
KyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkoodmFsdWUpKTsKICAg
ICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdfcmV0
dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZFZhbHVl
ID0gMDsKLSAgICBpZiAodmFsdWUpIHsKLSAgICAgICAgY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6
OmNvcmUodmFsdWUpOwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZFZhbHVlKTsK
LSAgICB9CisgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNv
cmUodmFsdWUpOwogICAgIGl0ZW0tPnNldFhNTE9iakF0dHIoY29udmVydGVkVmFsdWUpOwogfQog
CiBnYm9vbGVhbgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfY3JlYXRlKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIEZBTFNFKTsKICAgICBXZWJDb3JlOjpU
ZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdib29sZWFuIHJlc3VsdCA9
IGl0ZW0tPmlzQ3JlYXRlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE2ODEsOCArMTYxMCw4
IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2NyZWF0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxm
KQogdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfY3JlYXRlKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYsIGdib29sZWFuIHZhbHVlKQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9i
aiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5zZXRDcmVhdGUodmFsdWUp
OwogfQpAQCAtMTY5MCw4ICsxNjE5LDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfY3JlYXRl
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdib29sZWFuIHZhbHVlKQogZ2NoYXIqCiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfc3RyaW5nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZikKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRv
VVRGOFN0cmluZyhpdGVtLT5nZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWRzdHJpbmdhdHRyQXR0cikpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzAwLDEwICsxNjI5
LDEwIEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlZmxlY3RlZF9zdHJpbmdfYXR0cihXZWJL
aXRET01UZXN0T2JqKiBzZWxmKQogdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcmVmbGVj
dGVkX3N0cmluZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1
ZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09C
SihzZWxmKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7CisgICAgV2ViQ29yZTo6VGVz
dE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0
ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7CiAgICAgaXRlbS0+c2V0QXR0
cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0dHIsIGNvbnZl
cnRlZFZhbHVlKTsKIH0KQEAgLTE3MTEsOCArMTY0MCw4IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpf
c2V0X3JlZmxlY3RlZF9zdHJpbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBn
Y2hhCiBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVmbGVjdGVkX2ludGVncmFsX2F0
dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChz
ZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CiAg
ICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnbG9u
ZyByZXN1bHQgPSBpdGVtLT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6
OnJlZmxlY3RlZGludGVncmFsYXR0ckF0dHIpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzIx
LDggKzE2NTAsOCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfaW50ZWdyYWxf
YXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9z
ZXRfcmVmbGVjdGVkX2ludGVncmFsX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcg
dmFsdWUpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9N
X0lTX1RFU1RfT0JKKHNlbGYpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPnNldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhU
TUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciwgdmFsdWUpOwogfQpAQCAtMTczMCw4
ICsxNjU5LDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcmVmbGVjdGVkX2ludGVncmFsX2F0
dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmEKIGd1bG9uZwogd2Via2l0X2RvbV90
ZXN0X29ial9nZXRfcmVmbGVjdGVkX3Vuc2lnbmVkX2ludGVncmFsX2F0dHIoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZikKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6VGVz
dE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBndWxvbmcgcmVzdWx0ID0gaXRl
bS0+Z2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0cik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE3
NDAsOCArMTY2OSw4IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlZmxlY3RlZF91bnNpZ25l
ZF9pbnRlZ3JhbF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB2b2lkCiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfdW5zaWduZWRfaW50ZWdyYWxfYXR0cihXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBndWxvbmcgdmFsdWUpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxm
KTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKICAgICBXZWJDb3JlOjpU
ZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPnNldFVuc2lnbmVk
SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1bnNpZ25lZGlu
dGVncmFsYXR0ckF0dHIsIHZhbHVlKTsKIH0KQEAgLTE3NDksOCArMTY3OCw4IEBAIHdlYmtpdF9k
b21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF91bnNpZ25lZF9pbnRlZ3JhbF9hdHRyKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsCiBnYm9vbGVhbgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVmbGVj
dGVkX2Jvb2xlYW5fYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JK
KHNlbGYpLCBGQUxTRSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKICAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5oYXNBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIpOwogICAgIHJldHVybiByZXN1
bHQ7CkBAIC0xNzU5LDggKzE2ODgsOCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0
ZWRfYm9vbGVhbl9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB2b2lkCiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfYm9vbGVhbl9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYsIGdib29sZWFuIHZhbHVlKQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5zZXRCb29sZWFuQXR0cmlidXRl
KFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyLCB2YWx1ZSk7CiB9
CkBAIC0xNzY4LDggKzE2OTcsOCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRf
Ym9vbGVhbl9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdib29sZWFuCiBnY2hhcioKIHdl
YmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlZmxlY3RlZF91cmxfYXR0cihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0
VG9VVEY4U3RyaW5nKGl0ZW0tPmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJl
ZmxlY3RlZHVybGF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE3NzgsMTAgKzE3
MDcsMTAgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVmbGVjdGVkX3VybF9hdHRyKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYpCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0
ZWRfdXJsX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQog
ewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNl
bGYpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKKyAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZh
bHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKICAgICBpdGVtLT5zZXRBdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciwgY29udmVydGVkVmFs
dWUpOwogfQpAQCAtMTc4OSw4ICsxNzE4LDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcmVm
bGVjdGVkX3VybF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKgogZ2No
YXIqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfc3RyaW5nX2F0dHIoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZikKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CiAgICAgV2ViQ29y
ZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnY2hhciogcmVzdWx0
ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5nZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5h
bWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIpKTsKICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtMTc5OSwxMCArMTcyOCwxMCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRf
c3RyaW5nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHZvaWQKIHdlYmtpdF9kb21fdGVz
dF9vYmpfc2V0X3JlZmxlY3RlZF9zdHJpbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBj
b25zdCBnY2hhciogdmFsdWUpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9i
aiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfVEVTVF9PQkooc2VsZikpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwor
ICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RG
OjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwog
ICAgIGl0ZW0tPnNldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRT
dHJpbmdBdHRyQXR0ciwgY29udmVydGVkVmFsdWUpOwogfQpAQCAtMTgxMCw4ICsxNzM5LDggQEAg
d2Via2l0X2RvbV90ZXN0X29ial9zZXRfcmVmbGVjdGVkX3N0cmluZ19hdHRyKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGNvbnN0IGdjaGEKIGdsb25nCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9y
ZWZsZWN0ZWRfY3VzdG9tX2ludGVncmFsX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsK
LSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19URVNUX09CSihzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKICAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5nZXRJbnRlZ3JhbEF0
dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRy
KTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTgyMCw4ICsxNzQ5LDggQEAgd2Via2l0X2RvbV90
ZXN0X29ial9nZXRfcmVmbGVjdGVkX2N1c3RvbV9pbnRlZ3JhbF9hdHRyKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYpCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfY3VzdG9t
X2ludGVncmFsX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUpCiB7Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JK
KHNlbGYpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIGl0ZW0tPnNldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3Vz
dG9tQ29udGVudEludGVncmFsQXR0ckF0dHIsIHZhbHVlKTsKIH0KQEAgLTE4MjksOCArMTc1OCw4
IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9jdXN0b21faW50ZWdyYWxfYXR0
cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnCiBnYm9vbGVhbgogd2Via2l0X2RvbV90ZXN0X29i
al9nZXRfcmVmbGVjdGVkX2N1c3RvbV9ib29sZWFuX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZikKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgRkFMU0UpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+
aGFzQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRy
QXR0cik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE4MzksOCArMTc2OCw4IEBAIHdlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X3JlZmxlY3RlZF9jdXN0b21fYm9vbGVhbl9hdHRyKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYpCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfY3Vz
dG9tX2Jvb2xlYW5fYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSkK
IHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVT
VF9PQkooc2VsZikpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CiAgICAgaXRlbS0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6
OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIsIHZhbHVlKTsKIH0KQEAgLTE4NDgsOCArMTc3
Nyw4IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9jdXN0b21fYm9vbGVhbl9h
dHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdiCiBnY2hhcioKIHdlYmtpdF9kb21fdGVzdF9v
YmpfZ2V0X3JlZmxlY3RlZF9jdXN0b21fdXJsX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikK
IHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0
cmluZyhpdGVtLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250
ZW50VVJMQXR0ckF0dHIpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTg1OCwxMCArMTc4Nywx
MCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfY3VzdG9tX3VybF9hdHRyKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYpCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZs
ZWN0ZWRfY3VzdG9tX3VybF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFy
KiB2YWx1ZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19U
RVNUX09CSihzZWxmKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7CisgICAgV2ViQ29y
ZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBj
b252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7CiAgICAgaXRlbS0+
c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRy
LCBjb252ZXJ0ZWRWYWx1ZSk7CiB9CkBAIC0xODY5LDggKzE3OTgsOSBAQCB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3NldF9yZWZsZWN0ZWRfY3VzdG9tX3VybF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYsIGNvbnN0CiBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93aXRoX2dldHRl
cl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9yKiogZXJyb3IpCiB7Ci0g
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9PQkooc2VsZiksIDApOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8
fCAqZXJyb3IsIDApOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgZ2xvbmcgcmVz
dWx0ID0gaXRlbS0+YXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpOwpAQCAtMTg4NCw4ICsxODE0
LDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93aXRoX2dldHRlcl9leGNlcHRpb24o
V2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm8KIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpf
c2V0X2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGds
b25nIHZhbHVlKQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19URVNUX09CSihzZWxmKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5zZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbih2
YWx1ZSk7CiB9CkBAIC0xODkzLDggKzE4MjMsOCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9h
dHRyX3dpdGhfZ2V0dGVyX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZwog
Z2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F0dHJfd2l0aF9zZXR0ZXJfZXhjZXB0aW9u
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2Vs
ZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOwogICAg
IFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgZ2xvbmcg
cmVzdWx0ID0gaXRlbS0+YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKTsKICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtMTkwMyw4ICsxODMzLDkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93
aXRoX3NldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHZvaWQKIHdlYmtp
dF9kb21fdGVzdF9vYmpfc2V0X2F0dHJfd2l0aF9zZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGdsb25nIHZhbHVlLCBHRXJyb3IqKiBlcnJvcikKIHsKLSAgICBnX3JldHVy
bl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICplcnJvcik7CiAgICAgV2ViQ29yZTo6VGVz
dE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBpdGVtLT5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbih2YWx1ZSwg
ZWMpOwpAQCAtMTkxNyw4ICsxODQ4LDkgQEAgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXR0cl93
aXRoX3NldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcKIGdjaGFy
Kgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfc3RyaW5nX2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0
aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvcioqIGVycm9yKQogewotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1Rf
T0JKKHNlbGYpLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCghZXJyb3IgfHwgKmVycm9y
LCAwKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwog
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGdjaGFyKiByZXN1bHQgPSBj
b252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVj
KSk7CkBAIC0xOTI4LDEwICsxODYwLDEwIEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3N0cmlu
Z19hdHRyX3dpdGhfZ2V0dGVyX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmCiB2b2lk
CiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zdHJpbmdfYXR0cl93aXRoX2dldHRlcl9leGNlcHRp
b24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKQogewotICAgIGdf
cmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKICAg
ICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKICAgICBpdGVtLT5zZXRTdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbihjb252ZXJ0ZWRWYWx1ZSk7CiB9CkBAIC0xOTM5LDggKzE4NzEsOCBAQCB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zdHJpbmdfYXR0cl93aXRoX2dldHRlcl9leGNlcHRpb24o
V2ViS2l0RE9NVGVzdE9iaiogc2VsZgogZ2NoYXIqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9z
dHJpbmdfYXR0cl93aXRoX3NldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZikK
IHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0
cmluZyhpdGVtLT5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMTk0OSwxMCArMTg4MSwxMSBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9z
dHJpbmdfYXR0cl93aXRoX3NldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZgog
dm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfc3RyaW5nX2F0dHJfd2l0aF9zZXR0ZXJfZXhj
ZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSwgR0Vycm9y
KiogZXJyb3IpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNf
VEVTVF9PQkooc2VsZikpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICplcnJvcik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9
IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSk7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgaXRlbS0+c2V0U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oY29u
dmVydGVkVmFsdWUsIGVjKTsKQEAgLTE5NjUsOCArMTg5OCw4IEBAIHdlYmtpdF9kb21fdGVzdF9v
Ympfc2V0X3N0cmluZ19hdHRyX3dpdGhfc2V0dGVyX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmCiBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfc3RhdGVf
YXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiks
IDApOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAg
ICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKCk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTE5NzUsOCArMTkwOCw4IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpf
Z2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQog
dm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRl
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIHZhbHVlKQogewotICAgIGdfcmV0dXJuX2lm
X2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CiAgICAg
V2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5z
ZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUodmFsdWUpOwogfQpAQCAtMTk4NCwzNCArMTkxNywz
MCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGUo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbgogV2ViS2l0RE9NVGVzdE9iaioKIHdlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJpYnV0ZShX
ZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYs
IDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAgICBX
ZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoKSk7Ci0gICAgV2ViS2l0RE9NVGVzdE9iaiog
cmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAK
IHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250
ZXh0X2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2
YWx1ZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9PQkooc2VsZikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19U
RVNUX09CSih2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6VGVz
dE9iaiogY29udmVydGVkVmFsdWUgPSAwOwotICAgIGlmICh2YWx1ZSkgewotICAgICAgICBjb252
ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgICAgIGdfcmV0dXJuX2lmX2Zh
aWwoY29udmVydGVkVmFsdWUpOwotICAgIH0KKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0
ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CiAgICAgaXRlbS0+c2V0V2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoY29udmVydGVkVmFsdWUpOwogfQogCiBXZWJLaXRET01U
ZXN0T2JqKgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmli
dXRlX3JhaXNlcyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBHRXJyb3IqKiBlcnJvcikKIHsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX09CSihzZWxmKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8
ICplcnJvciwgMCk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8V2Vi
Q29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhlYykpOwpAQCAtMjAxOSwzMCArMTk0OCwyNiBAQCB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGVfcmFpc2VzKFdl
YktpdERPTVRlc3RPYmoqIHNlbAogICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24gZWNkZXNjKGVjKTsKICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19x
dWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUp
OwogICAgIH0KLSAgICBXZWJLaXRET01UZXN0T2JqKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2Jq
ZWN0UmVzdWx0LmdldCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXZWJLaXQ6
OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIAogdm9pZAogd2Via2l0X2RvbV90ZXN0X29i
al9zZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlcyhXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWls
KHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSih2YWx1ZSkpOwogICAgIFdlYkNvcmU6
OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5faWZfZmFp
bCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSAwOwotICAg
IGlmICh2YWx1ZSkgewotICAgICAgICBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1
ZSk7Ci0gICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkVmFsdWUpOwotICAgIH0KKyAg
ICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7
CiAgICAgaXRlbS0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKGNvbnZlcnRlZFZh
bHVlKTsKIH0KIAogV2ViS2l0RE9NVGVzdE9iaioKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dp
dGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgR0Vycm9yKiogZXJyb3IpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
c2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOwor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAqZXJyb3IsIDApOwogICAgIFdlYkNv
cmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RS
ZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZVJhaXNlcyhlYykpOwpAQCAtMjA1MCw1NiArMTk3NSw0NyBAQCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1dGVfcmFpc2VzKFdl
YktpdERPTQogICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNj
KGVjKTsKICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0
cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwogICAgIH0KLSAg
ICBXZWJLaXRET01UZXN0T2JqKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0Lmdl
dCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0
UmVzdWx0LmdldCgpKTsKIH0KIAogdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9z
Y3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0cmlidXRlX3JhaXNlcyhXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWls
KHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSih2YWx1ZSkpOwogICAgIFdlYkNvcmU6
OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5faWZfZmFp
bCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSAwOwotICAg
IGlmICh2YWx1ZSkgewotICAgICAgICBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1
ZSk7Ci0gICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkVmFsdWUpOwotICAgIH0KKyAg
ICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7
CiAgICAgaXRlbS0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMo
Y29udmVydGVkVmFsdWUpOwogfQogCiBXZWJLaXRET01UZXN0T2JqKgogd2Via2l0X2RvbV90ZXN0
X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9h
dHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwg
MCk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0
ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKSk7
Ci0gICAgV2ViS2l0RE9NVGVzdE9iaiogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3Vs
dC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29i
amVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dp
dGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZhbHVlKQogewotICAgIGdf
cmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxm
KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHZhbHVlKSk7
CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBn
X3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRW
YWx1ZSA9IDA7Ci0gICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgIGNvbnZlcnRlZFZhbHVlID0gV2Vi
S2l0Ojpjb3JlKHZhbHVlKTsKLSAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRWYWx1
ZSk7Ci0gICAgfQorICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0
Ojpjb3JlKHZhbHVlKTsKICAgICBpdGVtLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlKGNvbnZlcnRlZFZhbHVlKTsKIH0KIAogV2ViS2l0RE9NVGVz
dE9iaioKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250
ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlcyhXZWJLaXRET01UZXN0T2JqKiBz
ZWxmLCBHRXJyb3IqKiBlcnJvcikKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAw
KTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8ICplcnJvciwgMCk7CiAgICAgV2ViQ29yZTo6VGVz
dE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9
IFdURjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMoZWMpKTsKQEAgLTIxMDcsNDggKzIwMjMsMzggQEAgd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9z
dGF0ZV9hdHRyaWJ1dGUKICAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
IGVjZGVzYyhlYyk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtf
ZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKICAg
ICB9Ci0gICAgV2ViS2l0RE9NVGVzdE9iaiogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJl
c3VsdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQo
Z29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRl
X3JhaXNlcyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSkK
IHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVT
VF9PQkooc2VsZikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09C
Sih2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6VGVzdE9iaiog
Y29udmVydGVkVmFsdWUgPSAwOwotICAgIGlmICh2YWx1ZSkgewotICAgICAgICBjb252ZXJ0ZWRW
YWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29u
dmVydGVkVmFsdWUpOwotICAgIH0KKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1
ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CiAgICAgaXRlbS0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhjb252ZXJ0ZWRWYWx1ZSk7CiB9
CiAKIFdlYktpdERPTVRlc3RPYmoqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3Njcmlw
dF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX3dpdGhfc3BhY2VzX2F0dHJpYnV0
ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNl
bGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAg
ICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+d2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUo
KSk7Ci0gICAgV2ViS2l0RE9NVGVzdE9iaiogcmVzdWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJl
c3VsdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQo
Z29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfd2l0aF9zcGFj
ZXNfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZh
bHVlKQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX09CSihzZWxmKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RF
U1RfT0JKKHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpUZXN0
T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IDA7Ci0gICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgIGNvbnZl
cnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKLSAgICAgICAgZ19yZXR1cm5faWZfZmFp
bChjb252ZXJ0ZWRWYWx1ZSk7Ci0gICAgfQorICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRl
ZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKICAgICBpdGVtLT5zZXRXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShjb252ZXJ0ZWRW
YWx1ZSk7CiB9CiAKQEAgLTIxNTYsOCArMjA2Miw4IEBAIGdsb25nCiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF9jb25kaXRpb25hbF9hdHRyMShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewogI2lm
IEVOQUJMRShDb25kaXRpb24xKQotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdsb25nIHJlc3VsdCA9
IGl0ZW0tPmNvbmRpdGlvbmFsQXR0cjEoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjE3MSw4
ICsyMDc3LDggQEAgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfY29uZGl0aW9uYWxfYXR0
cjEoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCi0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9N
X0lTX1RFU1RfT0JKKHNlbGYpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPnNldENvbmRpdGlvbmFsQXR0cjEodmFsdWUpOwogI2Vs
c2UKQEAgLTIxODQsOCArMjA5MCw4IEBAIGdsb25nCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9j
b25kaXRpb25hbF9hdHRyMihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewogI2lmIEVOQUJMRShD
b25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChzZWxmLCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7
CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBn
bG9uZyByZXN1bHQgPSBpdGVtLT5jb25kaXRpb25hbEF0dHIyKCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTIyMDQsOCArMjExMCw4IEBAIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2Nv
bmRpdGlvbmFsX2F0dHIyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIHZhbHVlKQogewog
I2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKLSAgICBnX3JldHVy
bl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOwog
ICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgaXRl
bS0+c2V0Q29uZGl0aW9uYWxBdHRyMih2YWx1ZSk7CiAjZWxzZQpAQCAtMjIyMiw4ICsyMTI4LDgg
QEAgZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2NvbmRpdGlvbmFsX2F0dHIzKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYpCiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShD
b25kaXRpb24yKQotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmNv
bmRpdGlvbmFsQXR0cjMoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjIzOCw4ICsyMTQ0LDgg
QEAgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfY29uZGl0aW9uYWxfYXR0cjMoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
IHx8IEVOQUJMRShDb25kaXRpb24yKQotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5zZXRDb25kaXRpb25hbEF0dHIz
KHZhbHVlKTsKICNlbHNlCkBAIC0yMjUxLDk3ICsyMTU3LDgxIEBAIHdlYmtpdF9kb21fdGVzdF9v
Ympfc2V0X2NvbmRpdGlvbmFsX2F0dHIzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIHZh
bHVlKQogV2ViS2l0RE9NYW55Kgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfYW55X2F0dHJpYnV0
ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNl
bGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAg
ICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFJlZlB0
cjxXZWJDb3JlOjphbnk+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5hbnlBdHRy
aWJ1dGUoKSk7Ci0gICAgV2ViS2l0RE9NYW55KiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0
UmVzdWx0LmdldCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXZWJLaXQ6Omtp
dChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIAogdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9z
ZXRfYW55X2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01hbnkqIHZh
bHVlKQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX09CSihzZWxmKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0FO
WSh2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6YW55KiBjb252
ZXJ0ZWRWYWx1ZSA9IDA7Ci0gICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgIGNvbnZlcnRlZFZhbHVl
ID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKLSAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0
ZWRWYWx1ZSk7Ci0gICAgfQorICAgIFdlYkNvcmU6OmFueSogY29udmVydGVkVmFsdWUgPSBXZWJL
aXQ6OmNvcmUodmFsdWUpOwogICAgIGl0ZW0tPnNldEFueUF0dHJpYnV0ZShjb252ZXJ0ZWRWYWx1
ZSk7CiB9CiAKIFdlYktpdERPTURvY3VtZW50Kgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfY29u
dGVudF9kb2N1bWVudChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNl
bGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIFJlZlB0cjxXZWJDb3JlOjpEb2N1bWVudD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0
UHRyKGl0ZW0tPmNvbnRlbnREb2N1bWVudCgpKTsKLSAgICBXZWJLaXRET01Eb2N1bWVudCogcmVz
dWx0ID0gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKIFdl
YktpdERPTVNWR1BvaW50Kgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfbXV0YWJsZV9wb2ludChX
ZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYs
IDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAgICBX
ZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpTVkdQb2ludD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPm11dGFi
bGVQb2ludCgpKTsKLSAgICBXZWJLaXRET01TVkdQb2ludCogcmVzdWx0ID0gV2ViS2l0OjpraXQo
Z29iamVjdFJlc3VsdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV2Vi
S2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKIHZvaWQKIHdlYmtpdF9kb21fdGVz
dF9vYmpfc2V0X211dGFibGVfcG9pbnQoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9N
U1ZHUG9pbnQqIHZhbHVlKQogewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfRE9NX0lTX1NWR19QT0lOVCh2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAg
V2ViQ29yZTo6U1ZHUG9pbnQqIGNvbnZlcnRlZFZhbHVlID0gMDsKLSAgICBpZiAodmFsdWUpIHsK
LSAgICAgICAgY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgICAgICBn
X3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZFZhbHVlKTsKLSAgICB9CisgICAgV2ViQ29yZTo6U1ZH
UG9pbnQqIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKICAgICBpdGVtLT5z
ZXRNdXRhYmxlUG9pbnQoY29udmVydGVkVmFsdWUpOwogfQogCiBXZWJLaXRET01TVkdQb2ludCoK
IHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2ltbXV0YWJsZV9wb2ludChXZWJLaXRET01UZXN0T2Jq
KiBzZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0T2Jq
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTVkdQb2lu
dD4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmltbXV0YWJsZVBvaW50KCkpOwot
ICAgIFdlYktpdERPTVNWR1BvaW50KiByZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0
LmdldCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2Jq
ZWN0UmVzdWx0LmdldCgpKTsKIH0KIAogdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfaW1t
dXRhYmxlX3BvaW50KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVNWR1BvaW50KiB2
YWx1ZSkKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9PQkooc2VsZikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19T
VkdfUE9JTlQodmFsdWUpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOwotICAgIFdlYkNvcmU6OlNW
R1BvaW50KiBjb252ZXJ0ZWRWYWx1ZSA9IDA7Ci0gICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgIGNv
bnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKLSAgICAgICAgZ19yZXR1cm5faWZf
ZmFpbChjb252ZXJ0ZWRWYWx1ZSk7Ci0gICAgfQorICAgIFdlYkNvcmU6OlNWR1BvaW50KiBjb252
ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CiAgICAgaXRlbS0+c2V0SW1tdXRhYmxl
UG9pbnQoY29udmVydGVkVmFsdWUpOwogfQogCiBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfc3RyYXdiZXJyeShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNl
bGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmJsdWViZXJyeSgpOwogICAgIHJldHVybiByZXN1
bHQ7CkBAIC0yMzUwLDggKzIyNDAsOCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zdHJhd2Jl
cnJ5KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3Nl
dF9zdHJhd2JlcnJ5KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIHZhbHVlKQogewotICAg
IGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihz
ZWxmKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
ICAgICBpdGVtLT5zZXRCbHVlYmVycnkodmFsdWUpOwogfQpAQCAtMjM1OSw4ICsyMjQ5LDggQEAg
d2Via2l0X2RvbV90ZXN0X29ial9zZXRfc3RyYXdiZXJyeShXZWJLaXRET01UZXN0T2JqKiBzZWxm
LCBnbG9uZyB2YWx1ZSkKIGdmbG9hdAogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfc3RyaWN0X2Zs
b2F0KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
c2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOwog
ICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgZ2Zs
b2F0IHJlc3VsdCA9IGl0ZW0tPnN0cmljdEZsb2F0KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAg
LTIzNjksOCArMjI1OSw4IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3N0cmljdF9mbG9hdChX
ZWJLaXRET01UZXN0T2JqKiBzZWxmKQogdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfc3Ry
aWN0X2Zsb2F0KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdmbG9hdCB2YWx1ZSkKIHsKLSAgICBn
X3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2Vs
ZikpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAg
ICAgaXRlbS0+c2V0U3RyaWN0RmxvYXQodmFsdWUpOwogfQpAQCAtMjM3OCw4ICsyMjY4LDggQEAg
d2Via2l0X2RvbV90ZXN0X29ial9zZXRfc3RyaWN0X2Zsb2F0KFdlYktpdERPTVRlc3RPYmoqIHNl
bGYsIGdmbG9hdCB2YWx1ZSkKIGdsb25nCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9kZXNjcmlw
dGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsK
ICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGds
b25nIHJlc3VsdCA9IGl0ZW0tPmRlc2NyaXB0aW9uKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAg
LTIzODgsOCArMjI3OCw4IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2Rlc2NyaXB0aW9uKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYpCiBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfaWQo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxm
LCAwKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSwgMCk7CiAgICAg
V2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBnbG9uZyBy
ZXN1bHQgPSBpdGVtLT5pZCgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMzk4LDggKzIyODgs
OCBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9pZChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQog
dm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfaWQoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwg
Z2xvbmcgdmFsdWUpCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPnNldElkKHZhbHVlKTsKIH0KQEAgLTI0MDcs
OCArMjI5Nyw4IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2lkKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYsIGdsb25nIHZhbHVlKQogZ2NoYXIqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9oYXNo
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2Vs
ZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOwogICAg
IFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgZ2NoYXIq
IHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+aGFzaCgpKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMjQxNyw4ICsyMzA3LDggQEAgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfaGFz
aChXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0
X3JlcGxhY2VhYmxlX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RF
U1RfT0JKKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOwogICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPnJlcGxhY2VhYmxlQXR0cmlidXRl
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5k
ZXggOTFhMTQ2MS4uOTQxNGJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAg
LTQ2LDcgKzQ2LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYktpdERPTVRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGtpdChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlKiBvYmopCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob2JqLCAw
KTsKKyAgICBpZiAoIW9iaikKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoZ3BvaW50ZXIg
cmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KHJldCk7CkBA
IC01NiwxMyArNTcsMTIgQEAgV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSoga2l0KFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmEKIAogV2ViQ29yZTo6VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY29yZShXZWJLaXRET01UZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiByZXF1ZXN0KQogewotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKHJlcXVlc3QsIDApOwotICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5jb3JlT2JqZWN0
LmdldCgpOworICAgIHJldHVybiByZXF1ZXN0ID8gcmVxdWVzdC0+cHJpdi0+Y29yZU9iamVjdC5n
ZXQoKSA6IDA7CiB9CiAKIFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UqIHdyYXBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKFdlYkNvcmU6OlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNvcmVPYmplY3QpCiB7Ci0gICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7CisgICAgQVNTRVJUKGNvcmVPYmplY3QpOwog
ICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1RfU0VSSUFMSVpFRF9TQ1JJUFRfVkFMVUVfSU5URVJG
QUNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9TRVJJQUxJWkVEX1NDUklQVF9W
QUxVRV9JTlRFUkZBQ0UsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApA
QCAtMjIxLDIxICsyMjEsMTMgQEAgdm9pZAogd2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2Ny
aXB0X3ZhbHVlX2ludGVyZmFjZV9hY2NlcHRfdHJhbnNmZXJfbGlzdChXZWJLaXRET01UZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBzZWxmLCBXZWJLaXRET01TZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIGRhdGEsIFdlYktpdERPTUFycmF5KiB0cmFuc2Zlckxpc3QpCiB7CiAjaWYgRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoc2VsZik7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX1NFUklBTElaRURfU0NSSVBUX1ZB
TFVFX0lOVEVSRkFDRShzZWxmKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lT
X1NFUklBTElaRURfU0NSSVBUX1ZBTFVFKGRhdGEpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9ET01fSVNfQVJSQVkodHJhbnNmZXJMaXN0KSk7CiAgICAgV2ViQ29yZTo6VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKGRhdGEpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodHJhbnNmZXJM
aXN0KTsKLSAgICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGNvbnZlcnRlZERhdGEg
PSAwOwotICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGNvbnZlcnRlZERhdGEgPSBXZWJLaXQ6OmNv
cmUoZGF0YSk7Ci0gICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkRGF0YSk7Ci0gICAg
fQotICAgIFdlYkNvcmU6OkFycmF5KiBjb252ZXJ0ZWRUcmFuc2Zlckxpc3QgPSAwOwotICAgIGlm
ICh0cmFuc2Zlckxpc3QpIHsKLSAgICAgICAgY29udmVydGVkVHJhbnNmZXJMaXN0ID0gV2ViS2l0
Ojpjb3JlKHRyYW5zZmVyTGlzdCk7Ci0gICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVk
VHJhbnNmZXJMaXN0KTsKLSAgICB9CisgICAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiBjb252ZXJ0ZWREYXRhID0gV2ViS2l0Ojpjb3JlKGRhdGEpOworICAgIFdlYkNvcmU6OkFycmF5
KiBjb252ZXJ0ZWRUcmFuc2Zlckxpc3QgPSBXZWJLaXQ6OmNvcmUodHJhbnNmZXJMaXN0KTsKICAg
ICBpdGVtLT5hY2NlcHRUcmFuc2Zlckxpc3QoY29udmVydGVkRGF0YSwgY29udmVydGVkVHJhbnNm
ZXJMaXN0KTsKICNlbHNlCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29u
ZGl0aW9uMSIpCkBAIC0yNDcsMzMgKzIzOSwxNyBAQCB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfc2Vy
aWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX211bHRpX3RyYW5zZmVyX2xpc3QoV2ViS2l0
RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogc2VsZiwgV2ViS2l0RE9NU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiBmaXJzdCwgV2ViS2l0RE9NQXJyYXkqIHR4LCBXZWJLaXRET01T
ZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlY29uZCwgV2ViS2l0RE9NQXJyYXkqIHR4eCkKIHsKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCi0gICAgZ19yZXR1cm5f
aWZfZmFpbChzZWxmKTsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfU0VSSUFMSVpFRF9TQ1JJ
UFRfVkFMVUVfSU5URVJGQUNFKHNlbGYpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9E
T01fSVNfU0VSSUFMSVpFRF9TQ1JJUFRfVkFMVUUoZmlyc3QpKTsKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9ET01fSVNfQVJSQVkodHgpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfU0VSSUFMSVpFRF9TQ1JJUFRfVkFMVUUoc2Vjb25kKSk7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfRE9NX0lTX0FSUkFZKHR4eCkpOwogICAgIFdlYkNvcmU6OlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbChmaXJzdCk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh0eCk7Ci0g
ICAgZ19yZXR1cm5faWZfZmFpbChzZWNvbmQpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodHh4KTsK
LSAgICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGNvbnZlcnRlZEZpcnN0ID0gMDsK
LSAgICBpZiAoZmlyc3QpIHsKLSAgICAgICAgY29udmVydGVkRmlyc3QgPSBXZWJLaXQ6OmNvcmUo
Zmlyc3QpOwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZEZpcnN0KTsKLSAgICB9
Ci0gICAgV2ViQ29yZTo6QXJyYXkqIGNvbnZlcnRlZFR4ID0gMDsKLSAgICBpZiAodHgpIHsKLSAg
ICAgICAgY29udmVydGVkVHggPSBXZWJLaXQ6OmNvcmUodHgpOwotICAgICAgICBnX3JldHVybl9p
Zl9mYWlsKGNvbnZlcnRlZFR4KTsKLSAgICB9Ci0gICAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiBjb252ZXJ0ZWRTZWNvbmQgPSAwOwotICAgIGlmIChzZWNvbmQpIHsKLSAgICAgICAg
Y29udmVydGVkU2Vjb25kID0gV2ViS2l0Ojpjb3JlKHNlY29uZCk7Ci0gICAgICAgIGdfcmV0dXJu
X2lmX2ZhaWwoY29udmVydGVkU2Vjb25kKTsKLSAgICB9Ci0gICAgV2ViQ29yZTo6QXJyYXkqIGNv
bnZlcnRlZFR4eCA9IDA7Ci0gICAgaWYgKHR4eCkgewotICAgICAgICBjb252ZXJ0ZWRUeHggPSBX
ZWJLaXQ6OmNvcmUodHh4KTsKLSAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRUeHgp
OwotICAgIH0KKyAgICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGNvbnZlcnRlZEZp
cnN0ID0gV2ViS2l0Ojpjb3JlKGZpcnN0KTsKKyAgICBXZWJDb3JlOjpBcnJheSogY29udmVydGVk
VHggPSBXZWJLaXQ6OmNvcmUodHgpOworICAgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSogY29udmVydGVkU2Vjb25kID0gV2ViS2l0Ojpjb3JlKHNlY29uZCk7CisgICAgV2ViQ29yZTo6
QXJyYXkqIGNvbnZlcnRlZFR4eCA9IFdlYktpdDo6Y29yZSh0eHgpOwogICAgIGl0ZW0tPm11bHRp
VHJhbnNmZXJMaXN0KGNvbnZlcnRlZEZpcnN0LCBjb252ZXJ0ZWRUeCwgY29udmVydGVkU2Vjb25k
LCBjb252ZXJ0ZWRUeHgpOwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVT
RU5UKCJDb25kaXRpb24xIikKQEAgLTI4NSwxMiArMjYxLDExIEBAIFdlYktpdERPTVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSoKIHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9p
bnRlcmZhY2VfZ2V0X3ZhbHVlKFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UqIHNlbGYpCiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRp
b24yKQotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfRE9NX0lTX1RFU1RfU0VSSUFMSVpFRF9TQ1JJUFRfVkFMVUVfSU5URVJGQUNFKHNlbGYpLCAw
KTsKICAgICBXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT52YWx1ZSgpKTsKLSAg
ICBXZWJLaXRET01TZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJlc3VsdCA9IFdlYktpdDo6a2l0KGdv
YmplY3RSZXN1bHQuZ2V0KCkpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdlYktp
dDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFU
VVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJDb25kaXRpb24yIikKQEAgLTMwMiwxNSArMjc3LDExIEBAIHZvaWQKIHdlYmtp
dF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2Vfc2V0X3ZhbHVlKFdl
YktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHNlbGYsIFdlYktpdERP
TVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
IHx8IEVOQUJMRShDb25kaXRpb24yKQotICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19URVNUX1NFUklBTElaRURfU0NSSVBUX1ZBTFVFX0lOVEVSRkFDRShz
ZWxmKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1NFUklBTElaRURfU0NS
SVBUX1ZBTFVFKHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBnX3JldHVybl9pZl9m
YWlsKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGNvbnZlcnRl
ZFZhbHVlID0gMDsKLSAgICBpZiAodmFsdWUpIHsKLSAgICAgICAgY29udmVydGVkVmFsdWUgPSBX
ZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZFZh
bHVlKTsKLSAgICB9CisgICAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBjb252ZXJ0
ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CiAgICAgaXRlbS0+c2V0VmFsdWUoY29udmVy
dGVkVmFsdWUpOwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJD
b25kaXRpb24xIikKQEAgLTMyMiwxMiArMjkzLDExIEBAIFdlYktpdERPTVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSoKIHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZh
Y2VfZ2V0X3JlYWRvbmx5X3ZhbHVlKFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqIHNlbGYpCiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25k
aXRpb24yKQotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfRE9NX0lTX1RFU1RfU0VSSUFMSVpFRF9TQ1JJUFRfVkFMVUVfSU5URVJGQUNFKHNlbGYp
LCAwKTsKICAgICBXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5yZWFkb25seVZh
bHVlKCkpOwotICAgIFdlYktpdERPTVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmVzdWx0ID0gV2Vi
S2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBy
ZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiAjZWxzZQogICAgIFdFQktJ
VF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQogICAgIFdFQktJVF9XQVJO
X0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIiKQpAQCAtMzM5LDEyICszMDksMTEgQEAg
V2ViS2l0RE9NU2VyaWFsaXplZFNjcmlwdFZhbHVlKgogd2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6
ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9nZXRfY2FjaGVkX3ZhbHVlKFdlYktpdERPTVRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHNlbGYpCiB7CiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNl
bGYsIDApOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfU0VSSUFMSVpFRF9TQ1JJUFRf
VkFMVUVfSU5URVJGQUNFKHNlbGYpLCAwKTsKICAgICBXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGdvYmplY3RSZXN1bHQgPSBXVEY6Omdl
dFB0cihpdGVtLT5jYWNoZWRWYWx1ZSgpKTsKLSAgICBXZWJLaXRET01TZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHJlc3VsdCA9IFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOwotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkp
OwogI2Vsc2UKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24x
IikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yIikKQEAg
LTM1NiwxNSArMzI1LDExIEBAIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3Njcmlw
dF92YWx1ZV9pbnRlcmZhY2Vfc2V0X2NhY2hlZF92YWx1ZShXZWJLaXRET01UZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBzZWxmLCBXZWJLaXRET01TZXJpYWxpemVkU2NyaXB0VmFs
dWUqIHZhbHVlKQogewogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MikKLSAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVT
VF9TRVJJQUxJWkVEX1NDUklQVF9WQUxVRV9JTlRFUkZBQ0Uoc2VsZikpOworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19TRVJJQUxJWkVEX1NDUklQVF9WQUxVRSh2YWx1ZSkpOwog
ICAgIFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Ci0gICAgV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBjb252ZXJ0ZWRWYWx1ZSA9IDA7Ci0gICAgaWYg
KHZhbHVlKSB7Ci0gICAgICAgIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsK
LSAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRWYWx1ZSk7Ci0gICAgfQorICAgIFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNv
cmUodmFsdWUpOwogICAgIGl0ZW0tPnNldENhY2hlZFZhbHVlKGNvbnZlcnRlZFZhbHVlKTsKICNl
bHNlCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCkBA
IC0zNzYsMTIgKzM0MSwxMSBAQCBXZWJLaXRET01NZXNzYWdlUG9ydEFycmF5Kgogd2Via2l0X2Rv
bV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9nZXRfcG9ydHMoV2ViS2l0
RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogc2VsZikKIHsKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCi0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9TRVJJQUxJWkVE
X1NDUklQVF9WQUxVRV9JTlRFUkZBQ0Uoc2VsZiksIDApOwogICAgIFdlYkNvcmU6OlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAg
ICAgUmVmUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0QXJyYXk+IGdvYmplY3RSZXN1bHQgPSBXVEY6
OmdldFB0cihpdGVtLT5wb3J0cygpKTsKLSAgICBXZWJLaXRET01NZXNzYWdlUG9ydEFycmF5KiBy
ZXN1bHQgPSBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKICNlbHNl
CiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCiAgICAg
V0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIpCkBAIC0zOTMsMTIg
KzM1NywxMSBAQCBXZWJLaXRET01TZXJpYWxpemVkU2NyaXB0VmFsdWUqCiB3ZWJraXRfZG9tX3Rl
c3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX2dldF9jYWNoZWRfcmVhZG9ubHlf
dmFsdWUoV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogc2VsZikK
IHsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCi0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVT
VF9TRVJJQUxJWkVEX1NDUklQVF9WQUxVRV9JTlRFUkZBQ0Uoc2VsZiksIDApOwogICAgIFdlYkNv
cmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZ29i
amVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmNhY2hlZFJlYWRvbmx5VmFsdWUoKSk7Ci0g
ICAgV2ViS2l0RE9NU2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXN1bHQgPSBXZWJLaXQ6OmtpdChn
b2JqZWN0UmVzdWx0LmdldCgpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXZWJL
aXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKICNlbHNlCiAgICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9O
T1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIpCg==
</data>
<flag name="review"
          id="186295"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
          </attachment>
      

    </bug>

</bugzilla>