<?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>160400</bug_id>
          
          <creation_ts>2016-08-01 05:32:24 -0700</creation_ts>
          <short_desc>Use Optional members to store parsed MathML attributes</short_desc>
          <delta_ts>2016-08-02 04:29:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>MathML</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1216086</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-08-01 05:32:24 -0700</bug_when>
    <thetext>See bug 160301 comment 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216090</commentid>
    <comment_count>1</comment_count>
      <attachid>285008</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-08-01 06:19:14 -0700</bug_when>
    <thetext>Created attachment 285008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216148</commentid>
    <comment_count>2</comment_count>
      <attachid>285008</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-01 10:43:00 -0700</bug_when>
    <thetext>Comment on attachment 285008
Patch

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

I think this is an improvement.

Unfortunately it’s not quite as good for the tri-state booleans where we need to be able to specify &quot;not computed&quot;, &quot;unspecified&quot;, true, and false. It’s annoying to have to convert Optional&lt;MathMLElement::BooleanValue&gt; to Optional&lt;bool&gt; and have the missing value have two different meanings!

Also, in the older WebKit code we have a type called TriState that we use for the same purpose as MathMLElement::BooleanValue. I think in new code I would actually use Optional&lt;bool&gt;, but I don’t think that Optional&lt;Optional&lt;bool&gt;&gt; is a good choice!

&gt; Source/WebCore/mathml/MathMLElement.cpp:592
&gt; +    return specifiedDisplayStyle == BooleanValue::Default ? Optional&lt;bool&gt;() : (specifiedDisplayStyle == BooleanValue::True);

Seems like we should have a helper function that will convert a MathMLElement::BooleanValue to Optional&lt;bool&gt; rather than writing it out like this.

&gt; Source/WebCore/mathml/MathMLElement.h:97
&gt;      Optional&lt;MathMLElement::MathVariant&gt; specifiedMathVariant();

This MathMLElement:: prefix here is not needed, I think.

&gt; Source/WebCore/mathml/MathMLFractionElement.cpp:56
&gt;      String thickness = attributeWithoutSynchronization(linethicknessAttr);

This would be more efficient if the type was const AtomicString&amp; instead of String; could be written auto&amp; and that should work.

&gt; Source/WebCore/mathml/MathMLFractionElement.cpp:59
&gt; +        m_lineThickness.value().type = LengthType::UnitLess;
&gt; +        m_lineThickness.value().value = .5;

Could have written this instead:

    m_lineThickness.value() = { LengthType::UnitLess, .5 };

&gt; Source/WebCore/mathml/MathMLFractionElement.cpp:76
&gt;      String value = attributeWithoutSynchronization(name);

This would be more efficient if the type was const AtomicString&amp; instead of String; could be written auto&amp; and that should work.

&gt; Source/WebCore/mathml/MathMLFractionElement.cpp:99
&gt; +        m_lineThickness = Optional&lt;Length&gt;();

Could use Nullopt here instead of this. Or { }. I like those better than the one where we explicitly cite the type.

    m_lineThickness = Nullopt;

Or:

    m_lineThickness = { };

&gt; Source/WebCore/mathml/MathMLFractionElement.cpp:101
&gt; +        m_numeratorAlignment = Optional&lt;FractionAlignment&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLFractionElement.cpp:103
&gt; +        m_denominatorAlignment = Optional&lt;FractionAlignment&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLInlineContainerElement.cpp:93
&gt; +        m_displayStyle = Optional&lt;BooleanValue&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLInlineContainerElement.cpp:95
&gt; +        m_mathVariant = Optional&lt;MathVariant&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLMathElement.cpp:75
&gt; +        m_displayStyle = Optional&lt;BooleanValue&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLMathElement.cpp:77
&gt; +        m_mathVariant = Optional&lt;MathVariant&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLPaddedElement.cpp:76
&gt; +        m_width = Optional&lt;Length&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLPaddedElement.cpp:78
&gt; +        m_height = Optional&lt;Length&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLPaddedElement.cpp:80
&gt; +        m_depth = Optional&lt;Length&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLPaddedElement.cpp:82
&gt; +        m_lspace = Optional&lt;Length&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLPaddedElement.cpp:84
&gt; +        m_voffset = Optional&lt;Length&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLScriptsElement.cpp:61
&gt; +        m_subscriptShift = Optional&lt;Length&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLScriptsElement.cpp:63
&gt; +        m_superscriptShift = Optional&lt;Length&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLSpaceElement.cpp:66
&gt; +        m_width = Optional&lt;Length&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLSpaceElement.cpp:68
&gt; +        m_height = Optional&lt;Length&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLSpaceElement.cpp:70
&gt; +        m_depth = Optional&lt;Length&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLTextElement.cpp:68
&gt; +        m_mathVariant = Optional&lt;MathVariant&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLUnderOverElement.cpp:61
&gt; +        m_accent = Optional&lt;BooleanValue&gt;();

Ditto.

&gt; Source/WebCore/mathml/MathMLUnderOverElement.cpp:63
&gt; +        m_accentUnder = Optional&lt;BooleanValue&gt;();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216426</commentid>
    <comment_count>3</comment_count>
      <attachid>285084</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-08-02 01:26:29 -0700</bug_when>
    <thetext>Created attachment 285084
Patch

(In reply to comment #2)
&gt; &gt; Source/WebCore/mathml/MathMLFractionElement.cpp:59
&gt; &gt; +        m_lineThickness.value().type = LengthType::UnitLess;
&gt; &gt; +        m_lineThickness.value().value = .5;
&gt; 
&gt; Could have written this instead:

Let&apos;s see if all bots are happy with the compact syntax.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216427</commentid>
    <comment_count>4</comment_count>
      <attachid>285085</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-08-02 01:41:28 -0700</bug_when>
    <thetext>Created attachment 285085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216439</commentid>
    <comment_count>5</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-08-02 02:44:26 -0700</bug_when>
    <thetext>Committed r204021: &lt;http://trac.webkit.org/changeset/204021&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216440</commentid>
    <comment_count>6</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-08-02 02:48:42 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Unfortunately it’s not quite as good for the tri-state booleans where we
&gt; need to be able to specify &quot;not computed&quot;, &quot;unspecified&quot;, true, and false.
&gt; It’s annoying to have to convert Optional&lt;MathMLElement::BooleanValue&gt; to
&gt; Optional&lt;bool&gt; and have the missing value have two different meanings!
&gt; 
&gt; Also, in the older WebKit code we have a type called TriState that we use
&gt; for the same purpose as MathMLElement::BooleanValue. I think in new code I
&gt; would actually use Optional&lt;bool&gt;, but I don’t think that
&gt; Optional&lt;Optional&lt;bool&gt;&gt; is a good choice!

Maybe all the default boolean values could be resolved on the DOM side and in that case the Default value won&apos;t be needed anymore (that&apos;s the case for the boolean operator properties in bug 160190). However, I&apos;m not sure it&apos;s easy as some MathML rules are a bit complex. So let&apos;s keep it like this for now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285008</attachid>
            <date>2016-08-01 06:19:14 -0700</date>
            <delta_ts>2016-08-01 10:43:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160400-20160801151754.patch</filename>
            <type>text/plain</type>
            <size>23578</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzOTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhlMzNlZWU1ZGFmNWVl
NzZhMTIzNjNiMmUzNDE4OWYwY2QzZGY3My4uY2M1MmIwNWU4ODdhYTVmY2Q0NmYyMGI5NjYyMzVi
OWZmNDQxNjgwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE2LTA4LTAxICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmcuaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uYWwgbWVt
YmVycyB0byBzdG9yZSBwYXJzZWQgTWF0aE1MIGF0dHJpYnV0ZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0MDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJzZWQgTWF0aE1MIGF0dHJpYnV0ZXMg
YXJlIHN0b3JlZCBvbiB0aGUgZWxlbWVudCBjbGFzc2VzIHVzaW5nIHRoZSBtZW1vaXplIHBhdHRl
cm4gdG8KKyAgICAgICAgbWluaW1pemUgdGhlIG51bWJlciBvZiBwYXJzaW5nIHVwZGF0ZXMuIEN1
cnJlbnRseSwgYSBkaXJ0eSBmbGFnIGZvciBlYWNoIG1lbWJlcgorICAgICAgICBpbmRpY2F0ZSB3
aGVuIGl0IG11c3QgYmUgcGFyc2VkIGFnYWluLiBXZSBjaGFuZ2UgdGhpcyB0byB3cmFwIHRoZXNl
IG1lbWJlcnMgaW50byBhbgorICAgICAgICBPcHRpb25hbDxUPiBjb250YWluZXIgaW5zdGVhZCwg
d2hlcmUgYSBudWxsIHZhbHVlIGluZGljYXRlcyB0aGF0IHRoZSBtZW1iZXIgaXMgZGlydHkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWhhdmlvciBpcyB1bmNoYW5nZWQuCisKKyAgICAgICAg
KiBtYXRobWwvTWF0aE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVt
ZW50OjpjYWNoZWRNYXRoTUxMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVu
dDo6Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVt
ZW50OjpwYXJzZU1hdGhWYXJpYW50QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhN
TEVsZW1lbnQ6OnNwZWNpZmllZERpc3BsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRo
TUxFbGVtZW50OjpzcGVjaWZpZWRNYXRoVmFyaWFudCk6CisgICAgICAgICogbWF0aG1sL01hdGhN
TEVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEZyYWN0aW9uRWxlbWVudDo6bGluZVRoaWNrbmVzcyk6
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmNhY2hlZEZyYWN0aW9u
QWxpZ25tZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEZyYWN0aW9uRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBtYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50OjpzcGVjaWZpZWREaXNwbGF5U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBtYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1h
dGhNTE9wZXJhdG9yRWxlbWVudDo6b3BlcmF0b3JUZXh0KToKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MUGFkZGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxQYWRkZWRFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1l
bnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWF0aE1MU2NyaXB0c0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MU3BhY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNwYWNlRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWF0aE1MVGV4dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBtYXRo
bWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxV
bmRlck92ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhN
TFVuZGVyT3ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5
bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om1hdGhWYXJpYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjp1
cGRhdGVNYXRoVmFyaWFudEdseXBoKToKKwogMjAxNi0wOC0wMSAgRnJlZGVyaWMgV2FuZyAgPGZ3
YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIGEgUmVuZGVyTWF0aE1MRmVuY2Vk
T3BlcmF0b3IgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAppbmRl
eCBhMjEyNTllMGI3NzA3ZWRhNjllNmE0MTQ2ZmJiNzE5YjdjNGNiMTQ4Li5lMjliNzE4NDhlZTQ2
MWZmNjU4MDA5ZjE4MGQyMWY4NTY5Yzc5MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TEVsZW1lbnQuY3BwCkBAIC01MTcsMzEgKzUxNywyOSBAQCBNYXRoTUxFbGVtZW50OjpMZW5ndGgg
TWF0aE1MRWxlbWVudDo6cGFyc2VNYXRoTUxMZW5ndGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAg
ICAgcmV0dXJuIHBhcnNlTmFtZWRTcGFjZShzdHJpbmdWaWV3KTsKIH0KIAotY29uc3QgTWF0aE1M
RWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxFbGVtZW50OjpjYWNoZWRNYXRoTUxMZW5ndGgoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgTGVuZ3RoJiBsZW5ndGgpCitjb25zdCBNYXRoTUxFbGVtZW50
OjpMZW5ndGgmIE1hdGhNTEVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBPcHRpb25hbDxMZW5ndGg+JiBsZW5ndGgpCiB7Ci0gICAgaWYgKGxlbmd0
aC5kaXJ0eSkgewotICAgICAgICBsZW5ndGggPSBwYXJzZU1hdGhNTExlbmd0aChhdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKG5hbWUpKTsKLSAgICAgICAgbGVuZ3RoLmRpcnR5ID0gZmFs
c2U7Ci0gICAgfQotICAgIHJldHVybiBsZW5ndGg7CisgICAgaWYgKGxlbmd0aCkKKyAgICAgICAg
cmV0dXJuIGxlbmd0aC52YWx1ZSgpOworICAgIGxlbmd0aCA9IHBhcnNlTWF0aE1MTGVuZ3RoKGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZSkpOworICAgIHJldHVybiBsZW5ndGgu
dmFsdWUoKTsKIH0KIAotY29uc3QgTWF0aE1MRWxlbWVudDo6Qm9vbGVhblZhbHVlJiBNYXRoTUxF
bGVtZW50OjpjYWNoZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IEJvb2xlYW5BdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK2NvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xl
YW5WYWx1ZSYgTWF0aE1MRWxlbWVudDo6Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBPcHRpb25hbDxCb29sZWFuVmFsdWU+JiBhdHRyaWJ1dGUpCiB7Ci0g
ICAgaWYgKCFhdHRyaWJ1dGUuZGlydHkpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGUudmFsdWU7
CisgICAgaWYgKGF0dHJpYnV0ZSkKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS52YWx1ZSgpOwog
CiAgICAgLy8gSW4gTWF0aE1MLCBhdHRyaWJ1dGUgdmFsdWVzIGFyZSBjYXNlLXNlbnNpdGl2ZS4K
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihuYW1lKTsKICAgICBpZiAodmFsdWUgPT0gInRydWUiKQotICAgICAgICBhdHRyaWJ1
dGUudmFsdWUgPSBCb29sZWFuVmFsdWU6OlRydWU7CisgICAgICAgIGF0dHJpYnV0ZSA9IEJvb2xl
YW5WYWx1ZTo6VHJ1ZTsKICAgICBlbHNlIGlmICh2YWx1ZSA9PSAiZmFsc2UiKQotICAgICAgICBh
dHRyaWJ1dGUudmFsdWUgPSBCb29sZWFuVmFsdWU6OkZhbHNlOworICAgICAgICBhdHRyaWJ1dGUg
PSBCb29sZWFuVmFsdWU6OkZhbHNlOwogICAgIGVsc2UKLSAgICAgICAgYXR0cmlidXRlLnZhbHVl
ID0gQm9vbGVhblZhbHVlOjpEZWZhdWx0OwotICAgIGF0dHJpYnV0ZS5kaXJ0eSA9IGZhbHNlOwor
ICAgICAgICBhdHRyaWJ1dGUgPSBCb29sZWFuVmFsdWU6OkRlZmF1bHQ7CiAKLSAgICByZXR1cm4g
YXR0cmlidXRlLnZhbHVlOworICAgIHJldHVybiBhdHRyaWJ1dGUudmFsdWUoKTsKIH0KIAogTWF0
aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQgTWF0aE1MRWxlbWVudDo6cGFyc2VNYXRoVmFyaWFudEF0
dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQpAQCAtNTkxLDE4ICs1
ODksMTYgQEAgT3B0aW9uYWw8Ym9vbD4gTWF0aE1MRWxlbWVudDo6c3BlY2lmaWVkRGlzcGxheVN0
eWxlKCkKICAgICBpZiAoIWFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1dGUoKSkKICAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPGJvb2w+KCk7CiAgICAgY29uc3QgTWF0aE1MRWxlbWVudDo6Qm9vbGVh
blZhbHVlJiBzcGVjaWZpZWREaXNwbGF5U3R5bGUgPSBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGRp
c3BsYXlzdHlsZUF0dHIsIG1fZGlzcGxheVN0eWxlKTsKLSAgICByZXR1cm4gc3BlY2lmaWVkRGlz
cGxheVN0eWxlID09IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCA/IE9wdGlvbmFsPGJvb2w+KCkgOiBP
cHRpb25hbDxib29sPihzcGVjaWZpZWREaXNwbGF5U3R5bGUgPT0gQm9vbGVhblZhbHVlOjpUcnVl
KTsKKyAgICByZXR1cm4gc3BlY2lmaWVkRGlzcGxheVN0eWxlID09IEJvb2xlYW5WYWx1ZTo6RGVm
YXVsdCA/IE9wdGlvbmFsPGJvb2w+KCkgOiAoc3BlY2lmaWVkRGlzcGxheVN0eWxlID09IEJvb2xl
YW5WYWx1ZTo6VHJ1ZSk7CiB9CiAKIE9wdGlvbmFsPE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50
PiBNYXRoTUxFbGVtZW50OjpzcGVjaWZpZWRNYXRoVmFyaWFudCgpCiB7CiAgICAgaWYgKCFhY2Nl
cHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKSkKICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPE1hdGhW
YXJpYW50PigpOwotICAgIGlmIChtX21hdGhWYXJpYW50LmRpcnR5KSB7Ci0gICAgICAgIG1fbWF0
aFZhcmlhbnQudmFsdWUgPSBwYXJzZU1hdGhWYXJpYW50QXR0cmlidXRlKGF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24obWF0aHZhcmlhbnRBdHRyKSk7Ci0gICAgICAgIG1fbWF0aFZhcmlh
bnQuZGlydHkgPSBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fbWF0aFZhcmlhbnQudmFsdWUg
PT0gTWF0aFZhcmlhbnQ6Ok5vbmUgPyBPcHRpb25hbDxNYXRoVmFyaWFudD4oKSA6IE9wdGlvbmFs
PE1hdGhWYXJpYW50PihtX21hdGhWYXJpYW50LnZhbHVlKTsKKyAgICBpZiAoIW1fbWF0aFZhcmlh
bnQpCisgICAgICAgIG1fbWF0aFZhcmlhbnQgPSBwYXJzZU1hdGhWYXJpYW50QXR0cmlidXRlKGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWF0aHZhcmlhbnRBdHRyKSk7CisgICAgcmV0
dXJuIG1fbWF0aFZhcmlhbnQudmFsdWUoKSA9PSBNYXRoVmFyaWFudDo6Tm9uZSA/IE9wdGlvbmFs
PE1hdGhWYXJpYW50PigpIDogbV9tYXRoVmFyaWFudDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxFbGVtZW50LmgKaW5kZXggOTVkZDg0OWM4ZWZhNzIyYjE5ZDU4NTBjYzIxODFiY2Nk
MzcwNDhkZi4uY2VjM2YyMmIzNmJkY2FmOTRkNDVkZmJhNTE2ZmY1YTJkOGQ5M2ZmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCkBAIC02MywxNSArNjMsMTAgQEAgcHVibGlj
OgogICAgIHN0cnVjdCBMZW5ndGggewogICAgICAgICBMZW5ndGhUeXBlIHR5cGUgeyBMZW5ndGhU
eXBlOjpQYXJzaW5nRmFpbGVkIH07CiAgICAgICAgIGZsb2F0IHZhbHVlIHsgMCB9OwotICAgICAg
ICBib29sIGRpcnR5IHsgdHJ1ZSB9OwogICAgIH07CiAgICAgc3RhdGljIExlbmd0aCBwYXJzZU1h
dGhNTExlbmd0aChjb25zdCBTdHJpbmcmKTsKIAogICAgIGVudW0gY2xhc3MgQm9vbGVhblZhbHVl
IHsgVHJ1ZSwgRmFsc2UsIERlZmF1bHQgfTsKLSAgICBzdHJ1Y3QgQm9vbGVhbkF0dHJpYnV0ZSB7
Ci0gICAgICAgIEJvb2xlYW5WYWx1ZSB2YWx1ZSB7IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCB9Owot
ICAgICAgICBib29sIGRpcnR5IHsgdHJ1ZSB9OwotICAgIH07CiAKICAgICAvLyBUaGVzZSBhcmUg
dGhlIG1hdGh2YXJpYW50IHZhbHVlcyBmcm9tIHRoZSBNYXRoTUwgcmVjb21tZW5kYXRpb24uCiAg
ICAgLy8gVGhlIHNwZWNpYWwgdmFsdWUgbm9uZSBtZWFucyB0aGF0IG5vIGV4cGxpY2l0IG1hdGh2
YXJpYW50IHZhbHVlIGhhcyBiZWVuIHNwZWNpZmllZC4KQEAgLTk3LDEwICs5Miw2IEBAIHB1Ymxp
YzoKICAgICAgICAgTG9vcGVkID0gMTcsCiAgICAgICAgIFN0cmV0Y2hlZCA9IDE4CiAgICAgfTsK
LSAgICBzdHJ1Y3QgTWF0aFZhcmlhbnRBdHRyaWJ1dGUgewotICAgICAgICBNYXRoVmFyaWFudCB2
YWx1ZSB7IE1hdGhWYXJpYW50OjpOb25lIH07Ci0gICAgICAgIGJvb2wgZGlydHkgeyB0cnVlIH07
Ci0gICAgfTsKIAogICAgIHZpcnR1YWwgT3B0aW9uYWw8Ym9vbD4gc3BlY2lmaWVkRGlzcGxheVN0
eWxlKCk7CiAgICAgT3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IHNwZWNpZmll
ZE1hdGhWYXJpYW50KCk7CkBAIC0xMjEsMTQgKzExMiwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCi0gICAgY29uc3QgTGVuZ3RoJiBj
YWNoZWRNYXRoTUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFtZSYsIExlbmd0aCYpOwotICAgIGNv
bnN0IEJvb2xlYW5WYWx1ZSYgY2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgQm9vbGVhbkF0dHJpYnV0ZSYpOworICAgIGNvbnN0IExlbmd0aCYgY2FjaGVkTWF0aE1M
TGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBPcHRpb25hbDxMZW5ndGg+Jik7CisgICAgY29u
c3QgQm9vbGVhblZhbHVlJiBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBPcHRpb25hbDxCb29sZWFuVmFsdWU+Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgYWNjZXB0
c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICBCb29sZWFuQXR0cmlidXRlIG1fZGlzcGxheVN0eWxlOwotICAgIE1hdGhWYXJpYW50QXR0cmli
dXRlIG1fbWF0aFZhcmlhbnQ7CisgICAgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2Rpc3BsYXlT
dHlsZTsKKyAgICBPcHRpb25hbDxNYXRoVmFyaWFudD4gbV9tYXRoVmFyaWFudDsKIAogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcAppbmRleCBkMTk3N2Qz
ZDYxNjc0MjBiOTMzNGFhZjI1ZmEzNWM3NzhlMmNiYzk1Li4yMWY4NWQ5MDhhOTZlNjQ3YTQzNzIw
MGEzZTIwNDRiYTFmNDUyZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MRnJhY3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
RnJhY3Rpb25FbGVtZW50LmNwcApAQCAtNDcsNDIgKzQ3LDQwIEBAIFJlZjxNYXRoTUxGcmFjdGlv
bkVsZW1lbnQ+IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhCiAKIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MRnJhY3Rpb25FbGVt
ZW50OjpsaW5lVGhpY2tuZXNzKCkKIHsKLSAgICBpZiAoIW1fbGluZVRoaWNrbmVzcy5kaXJ0eSkK
LSAgICAgICAgcmV0dXJuIG1fbGluZVRoaWNrbmVzczsKKyAgICBpZiAobV9saW5lVGhpY2tuZXNz
KQorICAgICAgICByZXR1cm4gbV9saW5lVGhpY2tuZXNzLnZhbHVlKCk7CiAKICAgICAvLyBUaGUg
TWF0aE1MMyByZWNvbW1lbmRhdGlvbiBzdGF0ZXMgdGhhdCAibWVkaXVtIiBpcyB0aGUgZGVmYXVs
dCB0aGlja25lc3MuCiAgICAgLy8gSG93ZXZlciwgaXQgb25seSBzdGF0ZXMgdGhhdCAidGhpbiIg
YW5kICJ0aGljayIgYXJlIHJlc3BlY3RpdmVseSB0aGluZXIgYW5kIHRoaWNrZXIuCiAgICAgLy8g
VGhlIE1hdGhNTCBpbiBIVE1MNSBpbXBsZW1lbnRhdGlvbiBub3RlIHN1Z2dlc3RzIDUwJSBhbmQg
MjAwJSBhbmQgdGhlc2UgdmFsdWVzIGFyZSBhbHNvIHVzZWQgaW4gR2Vja28uCiAgICAgU3RyaW5n
IHRoaWNrbmVzcyA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obGluZXRoaWNrbmVz
c0F0dHIpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0aGlja25lc3Ms
ICJ0aGluIikpIHsKLSAgICAgICAgbV9saW5lVGhpY2tuZXNzLnR5cGUgPSBMZW5ndGhUeXBlOjpV
bml0TGVzczsKLSAgICAgICAgbV9saW5lVGhpY2tuZXNzLnZhbHVlID0gLjU7CisgICAgICAgIG1f
bGluZVRoaWNrbmVzcy52YWx1ZSgpLnR5cGUgPSBMZW5ndGhUeXBlOjpVbml0TGVzczsKKyAgICAg
ICAgbV9saW5lVGhpY2tuZXNzLnZhbHVlKCkudmFsdWUgPSAuNTsKICAgICB9IGVsc2UgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRoaWNrbmVzcywgIm1lZGl1bSIpKSB7Ci0gICAg
ICAgIG1fbGluZVRoaWNrbmVzcy50eXBlID0gTGVuZ3RoVHlwZTo6VW5pdExlc3M7Ci0gICAgICAg
IG1fbGluZVRoaWNrbmVzcy52YWx1ZSA9IDE7CisgICAgICAgIG1fbGluZVRoaWNrbmVzcy52YWx1
ZSgpLnR5cGUgPSBMZW5ndGhUeXBlOjpVbml0TGVzczsKKyAgICAgICAgbV9saW5lVGhpY2tuZXNz
LnZhbHVlKCkudmFsdWUgPSAxOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UodGhpY2tuZXNzLCAidGhpY2siKSkgewotICAgICAgICBtX2xpbmVUaGlja25lc3Mu
dHlwZSA9IExlbmd0aFR5cGU6OlVuaXRMZXNzOwotICAgICAgICBtX2xpbmVUaGlja25lc3MudmFs
dWUgPSAyOworICAgICAgICBtX2xpbmVUaGlja25lc3MudmFsdWUoKS50eXBlID0gTGVuZ3RoVHlw
ZTo6VW5pdExlc3M7CisgICAgICAgIG1fbGluZVRoaWNrbmVzcy52YWx1ZSgpLnZhbHVlID0gMjsK
ICAgICB9IGVsc2UKICAgICAgICAgbV9saW5lVGhpY2tuZXNzID0gcGFyc2VNYXRoTUxMZW5ndGgo
dGhpY2tuZXNzKTsKLSAgICBtX2xpbmVUaGlja25lc3MuZGlydHkgPSBmYWxzZTsKLSAgICByZXR1
cm4gbV9saW5lVGhpY2tuZXNzOworICAgIHJldHVybiBtX2xpbmVUaGlja25lc3MudmFsdWUoKTsK
IH0KIAotTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpGcmFjdGlvbkFsaWdubWVudCBNYXRoTUxGcmFj
dGlvbkVsZW1lbnQ6OmNhY2hlZEZyYWN0aW9uQWxpZ25tZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIEZyYWN0aW9uQWxpZ25tZW50QXR0cmlidXRlJiBhbGlnbm1lbnQpCitNYXRoTUxGcmFj
dGlvbkVsZW1lbnQ6OkZyYWN0aW9uQWxpZ25tZW50IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6Y2Fj
aGVkRnJhY3Rpb25BbGlnbm1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgT3B0aW9uYWw8
RnJhY3Rpb25BbGlnbm1lbnQ+JiBhbGlnbm1lbnQpCiB7Ci0gICAgaWYgKCFhbGlnbm1lbnQuZGly
dHkpCi0gICAgICAgIHJldHVybiBhbGlnbm1lbnQudmFsdWU7CisgICAgaWYgKGFsaWdubWVudCkK
KyAgICAgICAgcmV0dXJuIGFsaWdubWVudC52YWx1ZSgpOwogCiAgICAgU3RyaW5nIHZhbHVlID0g
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihuYW1lKTsKICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJsZWZ0IikpCi0gICAgICAgIGFsaWdubWVudC52
YWx1ZSA9IEZyYWN0aW9uQWxpZ25tZW50TGVmdDsKKyAgICAgICAgYWxpZ25tZW50ID0gRnJhY3Rp
b25BbGlnbm1lbnRMZWZ0OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHZhbHVlLCAicmlnaHQiKSkKLSAgICAgICAgYWxpZ25tZW50LnZhbHVlID0gRnJhY3Rpb25B
bGlnbm1lbnRSaWdodDsKKyAgICAgICAgYWxpZ25tZW50ID0gRnJhY3Rpb25BbGlnbm1lbnRSaWdo
dDsKICAgICBlbHNlCi0gICAgICAgIGFsaWdubWVudC52YWx1ZSA9IEZyYWN0aW9uQWxpZ25tZW50
Q2VudGVyOwotICAgIGFsaWdubWVudC5kaXJ0eSA9IGZhbHNlOwotICAgIHJldHVybiBhbGlnbm1l
bnQudmFsdWU7CisgICAgICAgIGFsaWdubWVudCA9IEZyYWN0aW9uQWxpZ25tZW50Q2VudGVyOwor
ICAgIHJldHVybiBhbGlnbm1lbnQudmFsdWUoKTsKIH0KIAogTWF0aE1MRnJhY3Rpb25FbGVtZW50
OjpGcmFjdGlvbkFsaWdubWVudCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6Om51bWVyYXRvckFsaWdu
bWVudCgpCkBAIC05OCwxMSArOTYsMTEgQEAgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpGcmFjdGlv
bkFsaWdubWVudCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmRlbm9taW5hdG9yQWxpZ24KIHZvaWQg
TWF0aE1MRnJhY3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IGxp
bmV0aGlja25lc3NBdHRyKQotICAgICAgICBtX2xpbmVUaGlja25lc3MuZGlydHkgPSB0cnVlOwor
ICAgICAgICBtX2xpbmVUaGlja25lc3MgPSBPcHRpb25hbDxMZW5ndGg+KCk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBudW1hbGlnbkF0dHIpCi0gICAgICAgIG1fbnVtZXJhdG9yQWxpZ25tZW50LmRp
cnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9udW1lcmF0b3JBbGlnbm1lbnQgPSBPcHRpb25hbDxGcmFj
dGlvbkFsaWdubWVudD4oKTsKICAgICBlbHNlIGlmIChuYW1lID09IGRlbm9tYWxpZ25BdHRyKQot
ICAgICAgICBtX2Rlbm9taW5hdG9yQWxpZ25tZW50LmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9k
ZW5vbWluYXRvckFsaWdubWVudCA9IE9wdGlvbmFsPEZyYWN0aW9uQWxpZ25tZW50PigpOwogCiAg
ICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5oCmluZGV4IDgyYjAxOTIx
MjJkOGM0NzZiNWNjN2I1MDJjZDJhNGI5YTEwYjI0OTEuLmU5ZWJmMTZhODc4YzhmMDI3NTI3ZDQw
MzQ4ZTgxOTYzMTBiY2U0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxGcmFjdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJh
Y3Rpb25FbGVtZW50LmgKQEAgLTQ3LDE1ICs0NywxMSBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAKLSAgICBz
dHJ1Y3QgRnJhY3Rpb25BbGlnbm1lbnRBdHRyaWJ1dGUgewotICAgICAgICBGcmFjdGlvbkFsaWdu
bWVudCB2YWx1ZSB7IEZyYWN0aW9uQWxpZ25tZW50Q2VudGVyIH07Ci0gICAgICAgIGJvb2wgZGly
dHkgeyB0cnVlIH07Ci0gICAgfTsKLSAgICBGcmFjdGlvbkFsaWdubWVudCBjYWNoZWRGcmFjdGlv
bkFsaWdubWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRnJhY3Rpb25BbGlnbm1lbnRBdHRyaWJ1
dGUmKTsKKyAgICBGcmFjdGlvbkFsaWdubWVudCBjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgT3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+Jik7CiAKLSAgICBM
ZW5ndGggbV9saW5lVGhpY2tuZXNzOwotICAgIEZyYWN0aW9uQWxpZ25tZW50QXR0cmlidXRlIG1f
bnVtZXJhdG9yQWxpZ25tZW50OwotICAgIEZyYWN0aW9uQWxpZ25tZW50QXR0cmlidXRlIG1fZGVu
b21pbmF0b3JBbGlnbm1lbnQ7CisgICAgT3B0aW9uYWw8TGVuZ3RoPiBtX2xpbmVUaGlja25lc3M7
CisgICAgT3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+IG1fbnVtZXJhdG9yQWxpZ25tZW50Owor
ICAgIE9wdGlvbmFsPEZyYWN0aW9uQWxpZ25tZW50PiBtX2Rlbm9taW5hdG9yQWxpZ25tZW50Owog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQuY3BwCmluZGV4IDdiNDJjODg5OTdlODE4YzI2MWZjOTEwNGZjMzJjMWQ0
ZDMyMWEzZWEuLjdkYTI4YzJhY2E1N2NlZTZlZTM2MTJiMDE2NWQ0YmYwYzY5NWY2MjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudC5jcHAKQEAgLTkwLDkgKzkwLDkgQEAgdm9pZCBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb24KICAgICBi
b29sIGRpc3BsYXlTdHlsZUF0dHJpYnV0ZSA9IG5hbWUgPT0gZGlzcGxheXN0eWxlQXR0ciAmJiBh
Y2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCk7CiAgICAgYm9vbCBtYXRoVmFyaWFudEF0dHJp
YnV0ZSA9IG5hbWUgPT0gbWF0aHZhcmlhbnRBdHRyICYmIGFjY2VwdHNNYXRoVmFyaWFudEF0dHJp
YnV0ZSgpOwogICAgIGlmIChkaXNwbGF5U3R5bGVBdHRyaWJ1dGUpCi0gICAgICAgIG1fZGlzcGxh
eVN0eWxlLmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9kaXNwbGF5U3R5bGUgPSBPcHRpb25hbDxC
b29sZWFuVmFsdWU+KCk7CiAgICAgaWYgKG1hdGhWYXJpYW50QXR0cmlidXRlKQotICAgICAgICBt
X21hdGhWYXJpYW50LmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9tYXRoVmFyaWFudCA9IE9wdGlv
bmFsPE1hdGhWYXJpYW50PigpOwogICAgIGlmICgoZGlzcGxheVN0eWxlQXR0cmlidXRlIHx8IG1h
dGhWYXJpYW50QXR0cmlidXRlKSAmJiByZW5kZXJlcigpKQogICAgICAgICBNYXRoTUxTdHlsZTo6
cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShyZW5kZXJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKaW5kZXggZTE2YmU2YWI4ZDBiODY4NmFhNzNiZTQ5
YWYwN2I4YjRjN2U1Y2U5Zi4uYTM4YWFmMTQ4ODYxMTQwY2M3OGEzOGRjOWMyZTJiNWY3ZTFkMGE1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCkBAIC02
MCwxMSArNjAsMTEgQEAgT3B0aW9uYWw8Ym9vbD4gTWF0aE1MTWF0aEVsZW1lbnQ6OnNwZWNpZmll
ZERpc3BsYXlTdHlsZSgpCiAgICAgICAgIC8vIFRoZSBkZWZhdWx0IGRpc3BsYXlzdHlsZSB2YWx1
ZSBvZiB0aGUgPG1hdGg+IGRlcGVuZHMgb24gdGhlIGRpc3BsYXkgYXR0cmlidXRlLCBzbyB3ZSBw
YXJzZSBpdCBoZXJlLgogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXNwbGF5QXR0cik7CiAgICAgICAgIGlmICh2YWx1
ZSA9PSAiYmxvY2siKQotICAgICAgICAgICAgbV9kaXNwbGF5U3R5bGUudmFsdWUgPSBCb29sZWFu
VmFsdWU6OlRydWU7CisgICAgICAgICAgICBtX2Rpc3BsYXlTdHlsZSA9IEJvb2xlYW5WYWx1ZTo6
VHJ1ZTsKICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gImlubGluZSIpCi0gICAgICAgICAgICBt
X2Rpc3BsYXlTdHlsZS52YWx1ZSA9IEJvb2xlYW5WYWx1ZTo6RmFsc2U7CisgICAgICAgICAgICBt
X2Rpc3BsYXlTdHlsZSA9IEJvb2xlYW5WYWx1ZTo6RmFsc2U7CiAgICAgfQotICAgIHJldHVybiBt
X2Rpc3BsYXlTdHlsZS52YWx1ZSA9PSBCb29sZWFuVmFsdWU6OkRlZmF1bHQgPyBPcHRpb25hbDxi
b29sPigpIDogT3B0aW9uYWw8Ym9vbD4obV9kaXNwbGF5U3R5bGUudmFsdWUgPT0gQm9vbGVhblZh
bHVlOjpUcnVlKTsKKyAgICByZXR1cm4gbV9kaXNwbGF5U3R5bGUudmFsdWUoKSA9PSBCb29sZWFu
VmFsdWU6OkRlZmF1bHQgPyBPcHRpb25hbDxib29sPigpIDogKG1fZGlzcGxheVN0eWxlLnZhbHVl
KCkgPT0gQm9vbGVhblZhbHVlOjpUcnVlKTsKIH0KIAogdm9pZCBNYXRoTUxNYXRoRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKQEAgLTcyLDkgKzcyLDkgQEAgdm9pZCBNYXRoTUxNYXRoRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAg
ICBib29sIGRpc3BsYXlTdHlsZUF0dHJpYnV0ZSA9IChuYW1lID09IGRpc3BsYXlzdHlsZUF0dHIg
fHwgbmFtZSA9PSBkaXNwbGF5QXR0cik7CiAgICAgYm9vbCBtYXRoVmFyaWFudEF0dHJpYnV0ZSA9
IG5hbWUgPT0gbWF0aHZhcmlhbnRBdHRyOwogICAgIGlmIChkaXNwbGF5U3R5bGVBdHRyaWJ1dGUp
Ci0gICAgICAgIG1fZGlzcGxheVN0eWxlLmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9kaXNwbGF5
U3R5bGUgPSBPcHRpb25hbDxCb29sZWFuVmFsdWU+KCk7CiAgICAgaWYgKG1hdGhWYXJpYW50QXR0
cmlidXRlKQotICAgICAgICBtX21hdGhWYXJpYW50LmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9t
YXRoVmFyaWFudCA9IE9wdGlvbmFsPE1hdGhWYXJpYW50PigpOwogICAgIGlmICgoZGlzcGxheVN0
eWxlQXR0cmlidXRlIHx8IG1hdGhWYXJpYW50QXR0cmlidXRlKSAmJiByZW5kZXJlcigpKQogICAg
ICAgICBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShyZW5kZXJlcigpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcAppbmRl
eCA3NjBjNTNiNjQ5MWM3ZjEyMGI3N2U5NzZlNDEyYTg5M2I4OTE2NWNmLi5jNTI2M2RiOWFjMjZi
Y2FkYjYzOTI5YmNjZTBiZjQxNGU1NWY3ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcApAQCAtNjMsNyArNjMsNyBAQCBVQ2hhciBNYXRo
TUxPcGVyYXRvckVsZW1lbnQ6Om9wZXJhdG9yVGV4dCgpCiAgICAgaWYgKG1fb3BlcmF0b3JUZXh0
KQogICAgICAgICByZXR1cm4gbV9vcGVyYXRvclRleHQudmFsdWUoKTsKIAotICAgIG1fb3BlcmF0
b3JUZXh0ID0gT3B0aW9uYWw8VUNoYXI+KHBhcnNlT3BlcmF0b3JUZXh0KHRleHRDb250ZW50KCkp
KTsKKyAgICBtX29wZXJhdG9yVGV4dCA9IHBhcnNlT3BlcmF0b3JUZXh0KHRleHRDb250ZW50KCkp
OwogICAgIHJldHVybiBtX29wZXJhdG9yVGV4dC52YWx1ZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAKaW5kZXggMTM4N2UzYzc0M2NkODA4
YTMyMTBlNjk3ZmNlNjlkMjc3M2UzMTFhMS4uYzY2NzRjNWUwODZkMjdlMzYzMGExOWE1ZjFlOThj
YzI2OWRjZDk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRl
ZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVt
ZW50LmNwcApAQCAtNzMsMTUgKzczLDE1IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYg
TWF0aE1MUGFkZGVkRWxlbWVudDo6dm9mZnNldCgpCiB2b2lkIE1hdGhNTFBhZGRlZEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKQotICAgICAgICBtX3dp
ZHRoLmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV93aWR0aCA9IE9wdGlvbmFsPExlbmd0aD4oKTsK
ICAgICBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpCi0gICAgICAgIG1faGVpZ2h0LmRpcnR5
ID0gdHJ1ZTsKKyAgICAgICAgbV9oZWlnaHQgPSBPcHRpb25hbDxMZW5ndGg+KCk7CiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBkZXB0aEF0dHIpCi0gICAgICAgIG1fZGVwdGguZGlydHkgPSB0cnVlOwor
ICAgICAgICBtX2RlcHRoID0gT3B0aW9uYWw8TGVuZ3RoPigpOwogICAgIGVsc2UgaWYgKG5hbWUg
PT0gbHNwYWNlQXR0cikKLSAgICAgICAgbV9sc3BhY2UuZGlydHkgPSB0cnVlOworICAgICAgICBt
X2xzcGFjZSA9IE9wdGlvbmFsPExlbmd0aD4oKTsKICAgICBlbHNlIGlmIChuYW1lID09IHZvZmZz
ZXRBdHRyKQotICAgICAgICBtX3ZvZmZzZXQuZGlydHkgPSB0cnVlOworICAgICAgICBtX3ZvZmZz
ZXQgPSBPcHRpb25hbDxMZW5ndGg+KCk7CiAKICAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MUGFkZGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRl
ZEVsZW1lbnQuaAppbmRleCA2MDAyYWRkZTdjMWQ2MzViZjg1ZDI0MzNkMTc5ZDk2ZWFhMzAwOTYz
Li5jM2E5OGYxNGViODdkYjk1YjM5Mzc2NDdkZTAxNDgxZTkzNjlhZWFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmgKQEAgLTQ0LDExICs0NCwxMSBAQCBw
cml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgZmluYWw7CiAKLSAgICBMZW5ndGggbV93aWR0aDsKLSAgICBMZW5ndGggbV9oZWlnaHQ7
Ci0gICAgTGVuZ3RoIG1fZGVwdGg7Ci0gICAgTGVuZ3RoIG1fbHNwYWNlOwotICAgIExlbmd0aCBt
X3ZvZmZzZXQ7CisgICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3dpZHRoOworICAgIE9wdGlvbmFsPExl
bmd0aD4gbV9oZWlnaHQ7CisgICAgT3B0aW9uYWw8TGVuZ3RoPiBtX2RlcHRoOworICAgIE9wdGlv
bmFsPExlbmd0aD4gbV9sc3BhY2U7CisgICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3ZvZmZzZXQ7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNw
cAppbmRleCA1ZWFkYTFhNmU3Y2EzMGY4YzZhZGNlNzJlOGM0NTFhNzliZTJlYmUzLi4yZjdmYjJk
NjdhNTdmMjA3YjNkYTE1NDM1ZGE3NjRhYTZmNGVjZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAKQEAgLTU4LDkgKzU4LDkgQEAgY29uc3Qg
TWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxTY3JpcHRzRWxlbWVudDo6c3VwZXJzY3JpcHRT
aGlmdCgpCiB2b2lkIE1hdGhNTFNjcmlwdHNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlm
IChuYW1lID09IHN1YnNjcmlwdHNoaWZ0QXR0cikKLSAgICAgICAgbV9zdWJzY3JpcHRTaGlmdC5k
aXJ0eSA9IHRydWU7CisgICAgICAgIG1fc3Vic2NyaXB0U2hpZnQgPSBPcHRpb25hbDxMZW5ndGg+
KCk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBzdXBlcnNjcmlwdHNoaWZ0QXR0cikKLSAgICAgICAg
bV9zdXBlcnNjcmlwdFNoaWZ0LmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9zdXBlcnNjcmlwdFNo
aWZ0ID0gT3B0aW9uYWw8TGVuZ3RoPigpOwogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFNjcmlwdHNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2Ny
aXB0c0VsZW1lbnQuaAppbmRleCA1NzQ3ZTc0MDhjMmY2Njg0MzlmMzFlNTNiMzA1ODVmNWM1NDFi
MDI3Li5iOTQxODE1ODg0NGZhYTZhY2JmYWUzZjNlOWE1MDYyYjQ2NzU4MzVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaApAQCAtNDMsOCArNDMsOCBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAgICBMZW5ndGggbV9zdWJzY3JpcHRTaGlmdDsKLSAg
ICBMZW5ndGggbV9zdXBlcnNjcmlwdFNoaWZ0OworICAgIE9wdGlvbmFsPExlbmd0aD4gbV9zdWJz
Y3JpcHRTaGlmdDsKKyAgICBPcHRpb25hbDxMZW5ndGg+IG1fc3VwZXJzY3JpcHRTaGlmdDsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAKaW5k
ZXggNDFjOWU0ZDMxNGY1Y2Q5YTE4MzY5MjRjODhkNWM4M2VkYzBiMTljOC4uYWUyZjVmMWVjMDc5
NmU1NTU5ZDZkYjBhNGZkODBkMDY5NzcxNzgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFNwYWNlRWxlbWVudC5jcHAKQEAgLTYzLDExICs2MywxMSBAQCBjb25zdCBNYXRoTUxF
bGVtZW50OjpMZW5ndGgmIE1hdGhNTFNwYWNlRWxlbWVudDo6ZGVwdGgoKQogdm9pZCBNYXRoTUxT
cGFjZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRyKQot
ICAgICAgICBtX3dpZHRoLmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV93aWR0aCA9IE9wdGlvbmFs
PExlbmd0aD4oKTsKICAgICBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpCi0gICAgICAgIG1f
aGVpZ2h0LmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9oZWlnaHQgPSBPcHRpb25hbDxMZW5ndGg+
KCk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBkZXB0aEF0dHIpCi0gICAgICAgIG1fZGVwdGguZGly
dHkgPSB0cnVlOworICAgICAgICBtX2RlcHRoID0gT3B0aW9uYWw8TGVuZ3RoPigpOwogCiAgICAg
TWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oCmluZGV4IDkzZjY3YzY4MWE1NGIzYzAy
ZmE0ZDYwYjg2M2RhZWNmMDg3Y2Q0OWQuLmY1YzBiNWZhYjA5ZWUwNWYzMWY1NjI4NDZhNzQzMzdh
MTU4NWEwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmgK
QEAgLTQyLDkgKzQyLDkgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCi0gICAgTGVuZ3RoIG1fd2lkdGg7Ci0g
ICAgTGVuZ3RoIG1faGVpZ2h0OwotICAgIExlbmd0aCBtX2RlcHRoOworICAgIE9wdGlvbmFsPExl
bmd0aD4gbV93aWR0aDsKKyAgICBPcHRpb25hbDxMZW5ndGg+IG1faGVpZ2h0OworICAgIE9wdGlv
bmFsPExlbmd0aD4gbV9kZXB0aDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MVGV4dEVsZW1lbnQuY3BwCmluZGV4IDBiMDBlZWI2Zjc2Y2NkYjQ4ZmJmZjU3NmFiMzVjOTcw
NmU2MzBlZGQuLjRjYjk3NDE2NWE3MDkwMWRlNDUwMzhhMDI0YzJlNTBiNmU2MTgwNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcApAQCAtNjUsNyArNjUs
NyBAQCB2b2lkIE1hdGhNTFRleHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmIGNoYW5nZSkKIHZvaWQgTWF0aE1MVGV4dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKG5hbWUgPT0gbWF0aHZhcmlhbnRBdHRyKSB7Ci0gICAgICAgIG1fbWF0aFZhcmlhbnQu
ZGlydHkgPSB0cnVlOworICAgICAgICBtX21hdGhWYXJpYW50ID0gT3B0aW9uYWw8TWF0aFZhcmlh
bnQ+KCk7CiAgICAgICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICAgICAgTWF0aE1MU3R5bGU6
OnJlc29sdmVNYXRoTUxTdHlsZVRyZWUocmVuZGVyZXIoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwCmluZGV4IGFmMTkzZTZm
NmU1MmYwYTU3NWYwZTU2MGU3NjU3YzNhNDhkZGZmY2QuLjkxYzQyMzhiYzBmYWQzZWRjZjJiYTBl
MjcyODU1OTRiNWZjNDE4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxVbmRlck92ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
VW5kZXJPdmVyRWxlbWVudC5jcHAKQEAgLTU4LDkgKzU4LDkgQEAgY29uc3QgTWF0aE1MRWxlbWVu
dDo6Qm9vbGVhblZhbHVlJiBNYXRoTUxVbmRlck92ZXJFbGVtZW50OjphY2NlbnRVbmRlcigpCiB2
b2lkIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUg
PT0gYWNjZW50QXR0cikKLSAgICAgICAgbV9hY2NlbnQuZGlydHkgPSB0cnVlOworICAgICAgICBt
X2FjY2VudCA9IE9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4oKTsKICAgICBlbHNlIGlmIChuYW1lID09
IGFjY2VudHVuZGVyQXR0cikKLSAgICAgICAgbV9hY2NlbnRVbmRlci5kaXJ0eSA9IHRydWU7Cisg
ICAgICAgIG1fYWNjZW50VW5kZXIgPSBPcHRpb25hbDxCb29sZWFuVmFsdWU+KCk7CiAKICAgICBN
YXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaAppbmRleCBmNzYzNzRlZWY2
MDMxM2EyZDJhOTMwZGJlZGI5NzhjM2RlMzQyN2U4Li44ZDYyNWZkYjNhODkwN2I5NjM4MWYwODZm
NTRjZGNhY2Q3ZjM3ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
VW5kZXJPdmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRl
ck92ZXJFbGVtZW50LmgKQEAgLTQxLDggKzQxLDggQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCi0gICAgQm9v
bGVhbkF0dHJpYnV0ZSBtX2FjY2VudDsKLSAgICBCb29sZWFuQXR0cmlidXRlIG1fYWNjZW50VW5k
ZXI7CisgICAgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2FjY2VudDsKKyAgICBPcHRpb25hbDxC
b29sZWFuVmFsdWU+IG1fYWNjZW50VW5kZXI7CiB9OwogCiB9Cg==
</data>
<flag name="review"
          id="308662"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285084</attachid>
            <date>2016-08-02 01:26:29 -0700</date>
            <delta_ts>2016-08-02 04:29:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Bug-160400-Use-Optional-members-to-store-parsed-Math.patch</filename>
            <type>text/plain</type>
            <size>24403</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSBiODJkNTFmZDUzZGNhZTNjOWMyY2YxNmI2NzA1ZjJkNjc4NTc1NTc1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogVHVlLCAyIEF1ZyAyMDE2IDEwOjE5OjAxICswMjAwClN1YmplY3Q6IFtQQVRDSF0gQnVnIDE2
MDQwMCAtIFVzZSBPcHRpb25hbCBtZW1iZXJzIHRvIHN0b3JlIHBhcnNlZCBNYXRoTUwKIGF0dHJp
YnV0ZXMKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MRWxlbWVudC5jcHAgICAgICAgICAgICB8IDQwICsrKysrKysrLS0tLS0tLS0KIFNvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggICAgICAgICAgICAgIHwgMjAgKysrLS0t
LS0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwICAgIHwg
NDkgKysrKysrKysrLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFj
dGlvbkVsZW1lbnQuaCAgICAgIHwgMTIgKystLS0KIC4uLi9tYXRobWwvTWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudC5jcHAgICAgICAgIHwgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxNYXRoRWxlbWVudC5jcHAgICAgICAgIHwgMTIgKystLS0KIFNvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwICAgIHwgIDQgKy0KIFNvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmNwcCAgICAgIHwgMTAgKystLQogU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuaCAgICAgICAgfCAxMCArKy0tCiBTb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwICAgICB8ICA0ICstCiBT
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaCAgICAgICB8ICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcCAgICAgICB8ICA2
ICstLQogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oICAgICAgICAg
fCAgNiArLS0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAgICAg
ICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50
LmNwcCAgIHwgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVt
ZW50LmggICAgIHwgIDQgKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDEzOSBpbnNlcnRpb25zKCspLCAx
MDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1ZWY1YmIuLmI1ZjE3ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1NyBAQAorMjAxNi0wOC0wMiAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nLmln
YWxpYS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlvbmFsIG1lbWJlcnMgdG8gc3RvcmUgcGFyc2Vk
IE1hdGhNTCBhdHRyaWJ1dGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYwNDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgUGFyc2VkIE1hdGhNTCBhdHRyaWJ1dGVzIGFyZSBzdG9yZWQgb24gdGhlIGVsZW1l
bnQgY2xhc3NlcyB1c2luZyB0aGUgbWVtb2l6ZSBwYXR0ZXJuIHRvCisgICAgICAgIG1pbmltaXpl
IHRoZSBudW1iZXIgb2YgcGFyc2luZyB1cGRhdGVzLiBDdXJyZW50bHksIGEgZGlydHkgZmxhZyBm
b3IgZWFjaCBtZW1iZXIKKyAgICAgICAgaW5kaWNhdGUgd2hlbiBpdCBtdXN0IGJlIHBhcnNlZCBh
Z2Fpbi4gV2UgY2hhbmdlIHRoaXMgdG8gd3JhcCB0aGVzZSBtZW1iZXJzIGludG8gYW4KKyAgICAg
ICAgT3B0aW9uYWw8VD4gY29udGFpbmVyIGluc3RlYWQsIHdoZXJlIGEgbnVsbCB2YWx1ZSBpbmRp
Y2F0ZXMgdGhhdCB0aGUgbWVtYmVyIGlzIGRpcnR5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
YmVoYXZpb3IgaXMgdW5jaGFuZ2VkLgorCisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6Y2FjaGVkTWF0aE1MTGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OmNhY2hlZEJvb2xlYW5BdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6cGFyc2VNYXRoVmFyaWFudEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjpzcGVjaWZpZWREaXNw
bGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6c3BlY2lmaWVkTWF0
aFZhcmlhbnQpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6CisgICAgICAgICog
bWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRo
TUxGcmFjdGlvbkVsZW1lbnQ6OmxpbmVUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6TWF0
aE1MRnJhY3Rpb25FbGVtZW50OjpjYWNoZWRGcmFjdGlvbkFsaWdubWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBtYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9N
YXRoTUxNYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxNYXRoRWxlbWVu
dDo6c3BlY2lmaWVkRGlzcGxheVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhNTE9wZXJhdG9y
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxPcGVyYXRvckVsZW1lbnQ6Om9w
ZXJhdG9yVGV4dCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUGFkZGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAqIG1hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1s
L01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFNjcmlw
dHNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNjcmlw
dHNFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXRoTUxTcGFjZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAg
ICAgICAgKiBtYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01h
dGhNTFRleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRleHRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVW5kZXJPdmVyRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL01hdGhNTFN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXRoVmFyaWFudCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlTWF0aFZhcmlhbnRHbHlwaCk6
CisKIDIwMTYtMDgtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtGZXRjaCBBUEldIEFkZCBzdXBwb3J0IHRvIFJlZmVycmVyUG9saWN5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggYTIxMjU5ZS4uMTFmNmU0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApAQCAtNTE3LDMxICs1MTcsMjkgQEAg
TWF0aE1MRWxlbWVudDo6TGVuZ3RoIE1hdGhNTEVsZW1lbnQ6OnBhcnNlTWF0aE1MTGVuZ3RoKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiBwYXJzZU5hbWVkU3BhY2Uoc3RyaW5nVmll
dyk7CiB9CiAKLWNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MRWxlbWVudDo6Y2Fj
aGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIExlbmd0aCYgbGVuZ3Ro
KQorY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxFbGVtZW50OjpjYWNoZWRNYXRo
TUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgT3B0aW9uYWw8TGVuZ3RoPiYgbGVu
Z3RoKQogewotICAgIGlmIChsZW5ndGguZGlydHkpIHsKLSAgICAgICAgbGVuZ3RoID0gcGFyc2VN
YXRoTUxMZW5ndGgoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihuYW1lKSk7Ci0gICAg
ICAgIGxlbmd0aC5kaXJ0eSA9IGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gbGVuZ3RoOworICAg
IGlmIChsZW5ndGgpCisgICAgICAgIHJldHVybiBsZW5ndGgudmFsdWUoKTsKKyAgICBsZW5ndGgg
PSBwYXJzZU1hdGhNTExlbmd0aChhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG5hbWUp
KTsKKyAgICByZXR1cm4gbGVuZ3RoLnZhbHVlKCk7CiB9CiAKLWNvbnN0IE1hdGhNTEVsZW1lbnQ6
OkJvb2xlYW5WYWx1ZSYgTWF0aE1MRWxlbWVudDo6Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBCb29sZWFuQXR0cmlidXRlJiBhdHRyaWJ1dGUpCitjb25z
dCBNYXRoTUxFbGVtZW50OjpCb29sZWFuVmFsdWUmIE1hdGhNTEVsZW1lbnQ6OmNhY2hlZEJvb2xl
YW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgT3B0aW9uYWw8Qm9vbGVhblZh
bHVlPiYgYXR0cmlidXRlKQogewotICAgIGlmICghYXR0cmlidXRlLmRpcnR5KQotICAgICAgICBy
ZXR1cm4gYXR0cmlidXRlLnZhbHVlOworICAgIGlmIChhdHRyaWJ1dGUpCisgICAgICAgIHJldHVy
biBhdHRyaWJ1dGUudmFsdWUoKTsKIAogICAgIC8vIEluIE1hdGhNTCwgYXR0cmlidXRlIHZhbHVl
cyBhcmUgY2FzZS1zZW5zaXRpdmUuCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZSk7CiAgICAgaWYgKHZhbHVlID09ICJ0
cnVlIikKLSAgICAgICAgYXR0cmlidXRlLnZhbHVlID0gQm9vbGVhblZhbHVlOjpUcnVlOworICAg
ICAgICBhdHRyaWJ1dGUgPSBCb29sZWFuVmFsdWU6OlRydWU7CiAgICAgZWxzZSBpZiAodmFsdWUg
PT0gImZhbHNlIikKLSAgICAgICAgYXR0cmlidXRlLnZhbHVlID0gQm9vbGVhblZhbHVlOjpGYWxz
ZTsKKyAgICAgICAgYXR0cmlidXRlID0gQm9vbGVhblZhbHVlOjpGYWxzZTsKICAgICBlbHNlCi0g
ICAgICAgIGF0dHJpYnV0ZS52YWx1ZSA9IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdDsKLSAgICBhdHRy
aWJ1dGUuZGlydHkgPSBmYWxzZTsKKyAgICAgICAgYXR0cmlidXRlID0gQm9vbGVhblZhbHVlOjpE
ZWZhdWx0OwogCi0gICAgcmV0dXJuIGF0dHJpYnV0ZS52YWx1ZTsKKyAgICByZXR1cm4gYXR0cmli
dXRlLnZhbHVlKCk7CiB9CiAKIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50IE1hdGhNTEVsZW1l
bnQ6OnBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVWYWx1ZSkKQEAgLTU4OSwyMCArNTg3LDE4IEBAIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50
IE1hdGhNTEVsZW1lbnQ6OnBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUoY29uc3QgQXRvbWljCiBP
cHRpb25hbDxib29sPiBNYXRoTUxFbGVtZW50OjpzcGVjaWZpZWREaXNwbGF5U3R5bGUoKQogewog
ICAgIGlmICghYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm4g
T3B0aW9uYWw8Ym9vbD4oKTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgY29uc3QgTWF0
aE1MRWxlbWVudDo6Qm9vbGVhblZhbHVlJiBzcGVjaWZpZWREaXNwbGF5U3R5bGUgPSBjYWNoZWRC
b29sZWFuQXR0cmlidXRlKGRpc3BsYXlzdHlsZUF0dHIsIG1fZGlzcGxheVN0eWxlKTsKLSAgICBy
ZXR1cm4gc3BlY2lmaWVkRGlzcGxheVN0eWxlID09IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCA/IE9w
dGlvbmFsPGJvb2w+KCkgOiBPcHRpb25hbDxib29sPihzcGVjaWZpZWREaXNwbGF5U3R5bGUgPT0g
Qm9vbGVhblZhbHVlOjpUcnVlKTsKKyAgICByZXR1cm4gdG9PcHRpb25hbEJvb2woc3BlY2lmaWVk
RGlzcGxheVN0eWxlKTsKIH0KIAogT3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+
IE1hdGhNTEVsZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KCkKIHsKICAgICBpZiAoIWFjY2Vw
dHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8TWF0aFZh
cmlhbnQ+KCk7Ci0gICAgaWYgKG1fbWF0aFZhcmlhbnQuZGlydHkpIHsKLSAgICAgICAgbV9tYXRo
VmFyaWFudC52YWx1ZSA9IHBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUoYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihtYXRodmFyaWFudEF0dHIpKTsKLSAgICAgICAgbV9tYXRoVmFyaWFu
dC5kaXJ0eSA9IGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gbV9tYXRoVmFyaWFudC52YWx1ZSA9
PSBNYXRoVmFyaWFudDo6Tm9uZSA/IE9wdGlvbmFsPE1hdGhWYXJpYW50PigpIDogT3B0aW9uYWw8
TWF0aFZhcmlhbnQ+KG1fbWF0aFZhcmlhbnQudmFsdWUpOworICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICBpZiAoIW1fbWF0aFZhcmlhbnQpCisgICAgICAgIG1fbWF0aFZhcmlhbnQgPSBwYXJz
ZU1hdGhWYXJpYW50QXR0cmlidXRlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWF0
aHZhcmlhbnRBdHRyKSk7CisgICAgcmV0dXJuIG1fbWF0aFZhcmlhbnQudmFsdWUoKSA9PSBNYXRo
VmFyaWFudDo6Tm9uZSA/IE51bGxvcHQgOiBtX21hdGhWYXJpYW50OwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCA5NWRkODQ5Li41ZGUxZGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAgLTYzLDE1ICs2MywxMCBAQCBwdWJsaWM6
CiAgICAgc3RydWN0IExlbmd0aCB7CiAgICAgICAgIExlbmd0aFR5cGUgdHlwZSB7IExlbmd0aFR5
cGU6OlBhcnNpbmdGYWlsZWQgfTsKICAgICAgICAgZmxvYXQgdmFsdWUgeyAwIH07Ci0gICAgICAg
IGJvb2wgZGlydHkgeyB0cnVlIH07CiAgICAgfTsKICAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTWF0
aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYpOwogCiAgICAgZW51bSBjbGFzcyBCb29sZWFuVmFsdWUg
eyBUcnVlLCBGYWxzZSwgRGVmYXVsdCB9OwotICAgIHN0cnVjdCBCb29sZWFuQXR0cmlidXRlIHsK
LSAgICAgICAgQm9vbGVhblZhbHVlIHZhbHVlIHsgQm9vbGVhblZhbHVlOjpEZWZhdWx0IH07Ci0g
ICAgICAgIGJvb2wgZGlydHkgeyB0cnVlIH07Ci0gICAgfTsKIAogICAgIC8vIFRoZXNlIGFyZSB0
aGUgbWF0aHZhcmlhbnQgdmFsdWVzIGZyb20gdGhlIE1hdGhNTCByZWNvbW1lbmRhdGlvbi4KICAg
ICAvLyBUaGUgc3BlY2lhbCB2YWx1ZSBub25lIG1lYW5zIHRoYXQgbm8gZXhwbGljaXQgbWF0aHZh
cmlhbnQgdmFsdWUgaGFzIGJlZW4gc3BlY2lmaWVkLgpAQCAtOTcsMTMgKzkyLDkgQEAgcHVibGlj
OgogICAgICAgICBMb29wZWQgPSAxNywKICAgICAgICAgU3RyZXRjaGVkID0gMTgKICAgICB9Owot
ICAgIHN0cnVjdCBNYXRoVmFyaWFudEF0dHJpYnV0ZSB7Ci0gICAgICAgIE1hdGhWYXJpYW50IHZh
bHVlIHsgTWF0aFZhcmlhbnQ6Ok5vbmUgfTsKLSAgICAgICAgYm9vbCBkaXJ0eSB7IHRydWUgfTsK
LSAgICB9OwogCiAgICAgdmlydHVhbCBPcHRpb25hbDxib29sPiBzcGVjaWZpZWREaXNwbGF5U3R5
bGUoKTsKLSAgICBPcHRpb25hbDxNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudD4gc3BlY2lmaWVk
TWF0aFZhcmlhbnQoKTsKKyAgICBPcHRpb25hbDxNYXRoVmFyaWFudD4gc3BlY2lmaWVkTWF0aFZh
cmlhbnQoKTsKIAogcHJvdGVjdGVkOgogICAgIE1hdGhNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKQEAgLTEyMSwxNCArMTEyLDE1IEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKLSAgICBjb25z
dCBMZW5ndGgmIGNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiwgTGVuZ3Ro
Jik7Ci0gICAgY29uc3QgQm9vbGVhblZhbHVlJiBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBCb29sZWFuQXR0cmlidXRlJik7CisgICAgY29uc3QgTGVuZ3RoJiBj
YWNoZWRNYXRoTUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE9wdGlvbmFsPExlbmd0aD4m
KTsKKyAgICBjb25zdCBCb29sZWFuVmFsdWUmIGNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIE9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4mKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBhY2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKCkgeyByZXR1cm4gZmFs
c2U7IH0KIAotICAgIEJvb2xlYW5BdHRyaWJ1dGUgbV9kaXNwbGF5U3R5bGU7Ci0gICAgTWF0aFZh
cmlhbnRBdHRyaWJ1dGUgbV9tYXRoVmFyaWFudDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4g
dG9PcHRpb25hbEJvb2woY29uc3QgQm9vbGVhblZhbHVlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUg
PT0gQm9vbGVhblZhbHVlOjpEZWZhdWx0ID8gTnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+KHZhbHVl
ID09IEJvb2xlYW5WYWx1ZTo6VHJ1ZSk7IH0KKyAgICBPcHRpb25hbDxCb29sZWFuVmFsdWU+IG1f
ZGlzcGxheVN0eWxlOworICAgIE9wdGlvbmFsPE1hdGhWYXJpYW50PiBtX21hdGhWYXJpYW50Owog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENoaWxkKCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCmluZGV4
IGQxOTc3ZDMuLmIzNDNkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxGcmFjdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxG
cmFjdGlvbkVsZW1lbnQuY3BwCkBAIC00Nyw0MiArNDcsMzcgQEAgUmVmPE1hdGhNTEZyYWN0aW9u
RWxlbWVudD4gTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGEKIAogY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxGcmFjdGlvbkVsZW1l
bnQ6OmxpbmVUaGlja25lc3MoKQogewotICAgIGlmICghbV9saW5lVGhpY2tuZXNzLmRpcnR5KQot
ICAgICAgICByZXR1cm4gbV9saW5lVGhpY2tuZXNzOworICAgIGlmIChtX2xpbmVUaGlja25lc3Mp
CisgICAgICAgIHJldHVybiBtX2xpbmVUaGlja25lc3MudmFsdWUoKTsKIAogICAgIC8vIFRoZSBN
YXRoTUwzIHJlY29tbWVuZGF0aW9uIHN0YXRlcyB0aGF0ICJtZWRpdW0iIGlzIHRoZSBkZWZhdWx0
IHRoaWNrbmVzcy4KICAgICAvLyBIb3dldmVyLCBpdCBvbmx5IHN0YXRlcyB0aGF0ICJ0aGluIiBh
bmQgInRoaWNrIiBhcmUgcmVzcGVjdGl2ZWx5IHRoaW5lciBhbmQgdGhpY2tlci4KICAgICAvLyBU
aGUgTWF0aE1MIGluIEhUTUw1IGltcGxlbWVudGF0aW9uIG5vdGUgc3VnZ2VzdHMgNTAlIGFuZCAy
MDAlIGFuZCB0aGVzZSB2YWx1ZXMgYXJlIGFsc28gdXNlZCBpbiBHZWNrby4KLSAgICBTdHJpbmcg
dGhpY2tuZXNzID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaW5ldGhpY2tuZXNz
QXR0cik7Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRoaWNrbmVzcywg
InRoaW4iKSkgewotICAgICAgICBtX2xpbmVUaGlja25lc3MudHlwZSA9IExlbmd0aFR5cGU6OlVu
aXRMZXNzOwotICAgICAgICBtX2xpbmVUaGlja25lc3MudmFsdWUgPSAuNTsKLSAgICB9IGVsc2Ug
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRoaWNrbmVzcywgIm1lZGl1bSIpKSB7
Ci0gICAgICAgIG1fbGluZVRoaWNrbmVzcy50eXBlID0gTGVuZ3RoVHlwZTo6VW5pdExlc3M7Ci0g
ICAgICAgIG1fbGluZVRoaWNrbmVzcy52YWx1ZSA9IDE7Ci0gICAgfSBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0aGlja25lc3MsICJ0aGljayIpKSB7Ci0gICAgICAgIG1f
bGluZVRoaWNrbmVzcy50eXBlID0gTGVuZ3RoVHlwZTo6VW5pdExlc3M7Ci0gICAgICAgIG1fbGlu
ZVRoaWNrbmVzcy52YWx1ZSA9IDI7Ci0gICAgfSBlbHNlCisgICAgYXV0byYgdGhpY2tuZXNzID0g
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaW5ldGhpY2tuZXNzQXR0cik7CisgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRoaWNrbmVzcywgInRoaW4iKSkKKyAg
ICAgICAgbV9saW5lVGhpY2tuZXNzID0gT3B0aW9uYWw8TGVuZ3RoPih7IExlbmd0aFR5cGU6OlVu
aXRMZXNzLCAuNSB9KTsKKyAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh0aGlja25lc3MsICJtZWRpdW0iKSkKKyAgICAgICAgbV9saW5lVGhpY2tuZXNzID0gT3B0aW9u
YWw8TGVuZ3RoPih7IExlbmd0aFR5cGU6OlVuaXRMZXNzLCAxIH0pOworICAgIGVsc2UgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHRoaWNrbmVzcywgInRoaWNrIikpCisgICAgICAg
IG1fbGluZVRoaWNrbmVzcyA9IE9wdGlvbmFsPExlbmd0aD4oeyBMZW5ndGhUeXBlOjpVbml0TGVz
cywgMiB9KTsKKyAgICBlbHNlCiAgICAgICAgIG1fbGluZVRoaWNrbmVzcyA9IHBhcnNlTWF0aE1M
TGVuZ3RoKHRoaWNrbmVzcyk7Ci0gICAgbV9saW5lVGhpY2tuZXNzLmRpcnR5ID0gZmFsc2U7Ci0g
ICAgcmV0dXJuIG1fbGluZVRoaWNrbmVzczsKKyAgICByZXR1cm4gbV9saW5lVGhpY2tuZXNzLnZh
bHVlKCk7CiB9CiAKLU1hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnQgTWF0
aE1MRnJhY3Rpb25FbGVtZW50OjpjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBGcmFjdGlvbkFsaWdubWVudEF0dHJpYnV0ZSYgYWxpZ25tZW50KQorTWF0
aE1MRnJhY3Rpb25FbGVtZW50OjpGcmFjdGlvbkFsaWdubWVudCBNYXRoTUxGcmFjdGlvbkVsZW1l
bnQ6OmNhY2hlZEZyYWN0aW9uQWxpZ25tZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIE9w
dGlvbmFsPEZyYWN0aW9uQWxpZ25tZW50PiYgYWxpZ25tZW50KQogewotICAgIGlmICghYWxpZ25t
ZW50LmRpcnR5KQotICAgICAgICByZXR1cm4gYWxpZ25tZW50LnZhbHVlOworICAgIGlmIChhbGln
bm1lbnQpCisgICAgICAgIHJldHVybiBhbGlnbm1lbnQudmFsdWUoKTsKIAotICAgIFN0cmluZyB2
YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZSk7CisgICAgYXV0byYg
dmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG5hbWUpOwogICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImxlZnQiKSkKLSAgICAgICAgYWxp
Z25tZW50LnZhbHVlID0gRnJhY3Rpb25BbGlnbm1lbnRMZWZ0OworICAgICAgICBhbGlnbm1lbnQg
PSBGcmFjdGlvbkFsaWdubWVudExlZnQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UodmFsdWUsICJyaWdodCIpKQotICAgICAgICBhbGlnbm1lbnQudmFsdWUgPSBG
cmFjdGlvbkFsaWdubWVudFJpZ2h0OworICAgICAgICBhbGlnbm1lbnQgPSBGcmFjdGlvbkFsaWdu
bWVudFJpZ2h0OwogICAgIGVsc2UKLSAgICAgICAgYWxpZ25tZW50LnZhbHVlID0gRnJhY3Rpb25B
bGlnbm1lbnRDZW50ZXI7Ci0gICAgYWxpZ25tZW50LmRpcnR5ID0gZmFsc2U7Ci0gICAgcmV0dXJu
IGFsaWdubWVudC52YWx1ZTsKKyAgICAgICAgYWxpZ25tZW50ID0gRnJhY3Rpb25BbGlnbm1lbnRD
ZW50ZXI7CisgICAgcmV0dXJuIGFsaWdubWVudC52YWx1ZSgpOwogfQogCiBNYXRoTUxGcmFjdGlv
bkVsZW1lbnQ6OkZyYWN0aW9uQWxpZ25tZW50IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6bnVtZXJh
dG9yQWxpZ25tZW50KCkKQEAgLTk4LDExICs5MywxMSBAQCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6
OkZyYWN0aW9uQWxpZ25tZW50IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6ZGVub21pbmF0b3JBbGln
bgogdm9pZCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5h
bWUgPT0gbGluZXRoaWNrbmVzc0F0dHIpCi0gICAgICAgIG1fbGluZVRoaWNrbmVzcy5kaXJ0eSA9
IHRydWU7CisgICAgICAgIG1fbGluZVRoaWNrbmVzcyA9IE51bGxvcHQ7CiAgICAgZWxzZSBpZiAo
bmFtZSA9PSBudW1hbGlnbkF0dHIpCi0gICAgICAgIG1fbnVtZXJhdG9yQWxpZ25tZW50LmRpcnR5
ID0gdHJ1ZTsKKyAgICAgICAgbV9udW1lcmF0b3JBbGlnbm1lbnQgPSBOdWxsb3B0OwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gZGVub21hbGlnbkF0dHIpCi0gICAgICAgIG1fZGVub21pbmF0b3JBbGln
bm1lbnQuZGlydHkgPSB0cnVlOworICAgICAgICBtX2Rlbm9taW5hdG9yQWxpZ25tZW50ID0gTnVs
bG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuaAppbmRl
eCA4MmIwMTkyLi5lOWViZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MRnJhY3Rpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZy
YWN0aW9uRWxlbWVudC5oCkBAIC00NywxNSArNDcsMTEgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCi0gICAg
c3RydWN0IEZyYWN0aW9uQWxpZ25tZW50QXR0cmlidXRlIHsKLSAgICAgICAgRnJhY3Rpb25BbGln
bm1lbnQgdmFsdWUgeyBGcmFjdGlvbkFsaWdubWVudENlbnRlciB9OwotICAgICAgICBib29sIGRp
cnR5IHsgdHJ1ZSB9OwotICAgIH07Ci0gICAgRnJhY3Rpb25BbGlnbm1lbnQgY2FjaGVkRnJhY3Rp
b25BbGlnbm1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIEZyYWN0aW9uQWxpZ25tZW50QXR0cmli
dXRlJik7CisgICAgRnJhY3Rpb25BbGlnbm1lbnQgY2FjaGVkRnJhY3Rpb25BbGlnbm1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIE9wdGlvbmFsPEZyYWN0aW9uQWxpZ25tZW50PiYpOwogCi0gICAg
TGVuZ3RoIG1fbGluZVRoaWNrbmVzczsKLSAgICBGcmFjdGlvbkFsaWdubWVudEF0dHJpYnV0ZSBt
X251bWVyYXRvckFsaWdubWVudDsKLSAgICBGcmFjdGlvbkFsaWdubWVudEF0dHJpYnV0ZSBtX2Rl
bm9taW5hdG9yQWxpZ25tZW50OworICAgIE9wdGlvbmFsPExlbmd0aD4gbV9saW5lVGhpY2tuZXNz
OworICAgIE9wdGlvbmFsPEZyYWN0aW9uQWxpZ25tZW50PiBtX251bWVyYXRvckFsaWdubWVudDsK
KyAgICBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4gbV9kZW5vbWluYXRvckFsaWdubWVudDsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50LmNwcAppbmRleCA3YjQyYzg4Li40ZDc0MjE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3Bw
CkBAIC05MCw5ICs5MCw5IEBAIHZvaWQgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uCiAgICAgYm9vbCBkaXNw
bGF5U3R5bGVBdHRyaWJ1dGUgPSBuYW1lID09IGRpc3BsYXlzdHlsZUF0dHIgJiYgYWNjZXB0c0Rp
c3BsYXlTdHlsZUF0dHJpYnV0ZSgpOwogICAgIGJvb2wgbWF0aFZhcmlhbnRBdHRyaWJ1dGUgPSBu
YW1lID09IG1hdGh2YXJpYW50QXR0ciAmJiBhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKTsK
ICAgICBpZiAoZGlzcGxheVN0eWxlQXR0cmlidXRlKQotICAgICAgICBtX2Rpc3BsYXlTdHlsZS5k
aXJ0eSA9IHRydWU7CisgICAgICAgIG1fZGlzcGxheVN0eWxlID0gTnVsbG9wdDsKICAgICBpZiAo
bWF0aFZhcmlhbnRBdHRyaWJ1dGUpCi0gICAgICAgIG1fbWF0aFZhcmlhbnQuZGlydHkgPSB0cnVl
OworICAgICAgICBtX21hdGhWYXJpYW50ID0gTnVsbG9wdDsKICAgICBpZiAoKGRpc3BsYXlTdHls
ZUF0dHJpYnV0ZSB8fCBtYXRoVmFyaWFudEF0dHJpYnV0ZSkgJiYgcmVuZGVyZXIoKSkKICAgICAg
ICAgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZVRyZWUocmVuZGVyZXIoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCmluZGV4IGUxNmJlNmEu
LmVlMWMzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNw
cApAQCAtNTgsMTMgKzU4LDEzIEBAIE9wdGlvbmFsPGJvb2w+IE1hdGhNTE1hdGhFbGVtZW50Ojpz
cGVjaWZpZWREaXNwbGF5U3R5bGUoKQogewogICAgIGlmIChjYWNoZWRCb29sZWFuQXR0cmlidXRl
KGRpc3BsYXlzdHlsZUF0dHIsIG1fZGlzcGxheVN0eWxlKSA9PSBCb29sZWFuVmFsdWU6OkRlZmF1
bHQpIHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGlzcGxheXN0eWxlIHZhbHVlIG9mIHRoZSA8
bWF0aD4gZGVwZW5kcyBvbiB0aGUgZGlzcGxheSBhdHRyaWJ1dGUsIHNvIHdlIHBhcnNlIGl0IGhl
cmUuCi0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGRpc3BsYXlBdHRyKTsKKyAgICAgICAgYXV0byYgdmFsdWUgPSBhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRpc3BsYXlBdHRyKTsKICAgICAgICAgaWYgKHZh
bHVlID09ICJibG9jayIpCi0gICAgICAgICAgICBtX2Rpc3BsYXlTdHlsZS52YWx1ZSA9IEJvb2xl
YW5WYWx1ZTo6VHJ1ZTsKKyAgICAgICAgICAgIG1fZGlzcGxheVN0eWxlID0gQm9vbGVhblZhbHVl
OjpUcnVlOwogICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAiaW5saW5lIikKLSAgICAgICAgICAg
IG1fZGlzcGxheVN0eWxlLnZhbHVlID0gQm9vbGVhblZhbHVlOjpGYWxzZTsKKyAgICAgICAgICAg
IG1fZGlzcGxheVN0eWxlID0gQm9vbGVhblZhbHVlOjpGYWxzZTsKICAgICB9Ci0gICAgcmV0dXJu
IG1fZGlzcGxheVN0eWxlLnZhbHVlID09IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCA/IE9wdGlvbmFs
PGJvb2w+KCkgOiBPcHRpb25hbDxib29sPihtX2Rpc3BsYXlTdHlsZS52YWx1ZSA9PSBCb29sZWFu
VmFsdWU6OlRydWUpOworICAgIHJldHVybiB0b09wdGlvbmFsQm9vbChtX2Rpc3BsYXlTdHlsZS52
YWx1ZSgpKTsKIH0KIAogdm9pZCBNYXRoTUxNYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTcy
LDkgKzcyLDkgQEAgdm9pZCBNYXRoTUxNYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICBib29sIGRpc3BsYXlTdHls
ZUF0dHJpYnV0ZSA9IChuYW1lID09IGRpc3BsYXlzdHlsZUF0dHIgfHwgbmFtZSA9PSBkaXNwbGF5
QXR0cik7CiAgICAgYm9vbCBtYXRoVmFyaWFudEF0dHJpYnV0ZSA9IG5hbWUgPT0gbWF0aHZhcmlh
bnRBdHRyOwogICAgIGlmIChkaXNwbGF5U3R5bGVBdHRyaWJ1dGUpCi0gICAgICAgIG1fZGlzcGxh
eVN0eWxlLmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9kaXNwbGF5U3R5bGUgPSBOdWxsb3B0Owog
ICAgIGlmIChtYXRoVmFyaWFudEF0dHJpYnV0ZSkKLSAgICAgICAgbV9tYXRoVmFyaWFudC5kaXJ0
eSA9IHRydWU7CisgICAgICAgIG1fbWF0aFZhcmlhbnQgPSBOdWxsb3B0OwogICAgIGlmICgoZGlz
cGxheVN0eWxlQXR0cmlidXRlIHx8IG1hdGhWYXJpYW50QXR0cmlidXRlKSAmJiByZW5kZXJlcigp
KQogICAgICAgICBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShyZW5kZXJlcigp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNw
cAppbmRleCA3NjBjNTNiLi5lYjRiMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcApAQCAtNjMsMTMgKzYzLDEzIEBAIFVDaGFyIE1hdGhN
TE9wZXJhdG9yRWxlbWVudDo6b3BlcmF0b3JUZXh0KCkKICAgICBpZiAobV9vcGVyYXRvclRleHQp
CiAgICAgICAgIHJldHVybiBtX29wZXJhdG9yVGV4dC52YWx1ZSgpOwogCi0gICAgbV9vcGVyYXRv
clRleHQgPSBPcHRpb25hbDxVQ2hhcj4ocGFyc2VPcGVyYXRvclRleHQodGV4dENvbnRlbnQoKSkp
OworICAgIG1fb3BlcmF0b3JUZXh0ID0gcGFyc2VPcGVyYXRvclRleHQodGV4dENvbnRlbnQoKSk7
CiAgICAgcmV0dXJuIG1fb3BlcmF0b3JUZXh0LnZhbHVlKCk7CiB9CiAKIHZvaWQgTWF0aE1MT3Bl
cmF0b3JFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkK
IHsKLSAgICBtX29wZXJhdG9yVGV4dCA9IE9wdGlvbmFsPFVDaGFyPigpOworICAgIG1fb3BlcmF0
b3JUZXh0ID0gTnVsbG9wdDsKICAgICBNYXRoTUxUZXh0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQ
YWRkZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVt
ZW50LmNwcAppbmRleCAxMzg3ZTNjLi42NGE4NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuY3BwCkBAIC03MywxNSArNzMsMTUgQEAgY29uc3QgTWF0
aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxQYWRkZWRFbGVtZW50Ojp2b2Zmc2V0KCkKIHZvaWQg
TWF0aE1MUGFkZGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSB3aWR0
aEF0dHIpCi0gICAgICAgIG1fd2lkdGguZGlydHkgPSB0cnVlOworICAgICAgICBtX3dpZHRoID0g
TnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpCi0gICAgICAgIG1faGVp
Z2h0LmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9oZWlnaHQgPSBOdWxsb3B0OwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gZGVwdGhBdHRyKQotICAgICAgICBtX2RlcHRoLmRpcnR5ID0gdHJ1ZTsKKyAg
ICAgICAgbV9kZXB0aCA9IE51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBsc3BhY2VBdHRy
KQotICAgICAgICBtX2xzcGFjZS5kaXJ0eSA9IHRydWU7CisgICAgICAgIG1fbHNwYWNlID0gTnVs
bG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IHZvZmZzZXRBdHRyKQotICAgICAgICBtX3ZvZmZz
ZXQuZGlydHkgPSB0cnVlOworICAgICAgICBtX3ZvZmZzZXQgPSBOdWxsb3B0OwogCiAgICAgTWF0
aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmgKaW5kZXggNjAwMmFkZC4uYzNhOThmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5oCkBAIC00NCwx
MSArNDQsMTEgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCi0gICAgTGVuZ3RoIG1fd2lkdGg7Ci0gICAgTGVu
Z3RoIG1faGVpZ2h0OwotICAgIExlbmd0aCBtX2RlcHRoOwotICAgIExlbmd0aCBtX2xzcGFjZTsK
LSAgICBMZW5ndGggbV92b2Zmc2V0OworICAgIE9wdGlvbmFsPExlbmd0aD4gbV93aWR0aDsKKyAg
ICBPcHRpb25hbDxMZW5ndGg+IG1faGVpZ2h0OworICAgIE9wdGlvbmFsPExlbmd0aD4gbV9kZXB0
aDsKKyAgICBPcHRpb25hbDxMZW5ndGg+IG1fbHNwYWNlOworICAgIE9wdGlvbmFsPExlbmd0aD4g
bV92b2Zmc2V0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFNjcmlwdHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3Jp
cHRzRWxlbWVudC5jcHAKaW5kZXggNWVhZGExYS4uYjhkZDBmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwCkBAIC01OCw5ICs1OCw5IEBAIGNv
bnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MU2NyaXB0c0VsZW1lbnQ6OnN1cGVyc2Ny
aXB0U2hpZnQoKQogdm9pZCBNYXRoTUxTY3JpcHRzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBpZiAobmFtZSA9PSBzdWJzY3JpcHRzaGlmdEF0dHIpCi0gICAgICAgIG1fc3Vic2NyaXB0U2hp
ZnQuZGlydHkgPSB0cnVlOworICAgICAgICBtX3N1YnNjcmlwdFNoaWZ0ID0gTnVsbG9wdDsKICAg
ICBlbHNlIGlmIChuYW1lID09IHN1cGVyc2NyaXB0c2hpZnRBdHRyKQotICAgICAgICBtX3N1cGVy
c2NyaXB0U2hpZnQuZGlydHkgPSB0cnVlOworICAgICAgICBtX3N1cGVyc2NyaXB0U2hpZnQgPSBO
dWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaAppbmRl
eCA1NzQ3ZTc0Li5iOTQxODE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MU2NyaXB0c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2Ny
aXB0c0VsZW1lbnQuaApAQCAtNDMsOCArNDMsOCBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAg
ICBMZW5ndGggbV9zdWJzY3JpcHRTaGlmdDsKLSAgICBMZW5ndGggbV9zdXBlcnNjcmlwdFNoaWZ0
OworICAgIE9wdGlvbmFsPExlbmd0aD4gbV9zdWJzY3JpcHRTaGlmdDsKKyAgICBPcHRpb25hbDxM
ZW5ndGg+IG1fc3VwZXJzY3JpcHRTaGlmdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAKaW5kZXggNDFjOWU0ZC4uZTdkZTFlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAKQEAgLTYzLDExICs2
MywxMSBAQCBjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTFNwYWNlRWxlbWVudDo6
ZGVwdGgoKQogdm9pZCBNYXRoTUxTcGFjZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYg
KG5hbWUgPT0gd2lkdGhBdHRyKQotICAgICAgICBtX3dpZHRoLmRpcnR5ID0gdHJ1ZTsKKyAgICAg
ICAgbV93aWR0aCA9IE51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBoZWlnaHRBdHRyKQot
ICAgICAgICBtX2hlaWdodC5kaXJ0eSA9IHRydWU7CisgICAgICAgIG1faGVpZ2h0ID0gTnVsbG9w
dDsKICAgICBlbHNlIGlmIChuYW1lID09IGRlcHRoQXR0cikKLSAgICAgICAgbV9kZXB0aC5kaXJ0
eSA9IHRydWU7CisgICAgICAgIG1fZGVwdGggPSBOdWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFNwYWNlRWxlbWVudC5oCmluZGV4IDkzZjY3YzYuLmY1YzBiNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmgKQEAgLTQyLDkgKzQyLDkgQEAgcHJp
dmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGZpbmFsOwogCi0gICAgTGVuZ3RoIG1fd2lkdGg7Ci0gICAgTGVuZ3RoIG1faGVpZ2h0Owot
ICAgIExlbmd0aCBtX2RlcHRoOworICAgIE9wdGlvbmFsPExlbmd0aD4gbV93aWR0aDsKKyAgICBP
cHRpb25hbDxMZW5ndGg+IG1faGVpZ2h0OworICAgIE9wdGlvbmFsPExlbmd0aD4gbV9kZXB0aDsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCmlu
ZGV4IDBiMDBlZWIuLjM0OWRmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxUZXh0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRl
eHRFbGVtZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIE1hdGhNTFRleHRFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHZvaWQgTWF0aE1MVGV4
dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gbWF0aHZhcmlhbnRBdHRy
KSB7Ci0gICAgICAgIG1fbWF0aFZhcmlhbnQuZGlydHkgPSB0cnVlOworICAgICAgICBtX21hdGhW
YXJpYW50ID0gTnVsbG9wdDsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgICAgICBN
YXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShyZW5kZXJlcigpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAKaW5k
ZXggYWYxOTNlNi4uMzEzZjBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxVbmRlck92ZXJFbGVtZW50LmNwcApAQCAtNTgsOSArNTgsOSBAQCBjb25zdCBNYXRoTUxFbGVt
ZW50OjpCb29sZWFuVmFsdWUmIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OmFjY2VudFVuZGVyKCkK
IHZvaWQgTWF0aE1MVW5kZXJPdmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFt
ZSA9PSBhY2NlbnRBdHRyKQotICAgICAgICBtX2FjY2VudC5kaXJ0eSA9IHRydWU7CisgICAgICAg
IG1fYWNjZW50ID0gTnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGFjY2VudHVuZGVyQXR0
cikKLSAgICAgICAgbV9hY2NlbnRVbmRlci5kaXJ0eSA9IHRydWU7CisgICAgICAgIG1fYWNjZW50
VW5kZXIgPSBOdWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFt
ZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVu
ZGVyT3ZlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJF
bGVtZW50LmgKaW5kZXggZjc2Mzc0ZS4uOGQ2MjVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oCkBAIC00MSw4ICs0MSw4IEBAIHByaXZhdGU6
CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKICAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBm
aW5hbDsKIAotICAgIEJvb2xlYW5BdHRyaWJ1dGUgbV9hY2NlbnQ7Ci0gICAgQm9vbGVhbkF0dHJp
YnV0ZSBtX2FjY2VudFVuZGVyOworICAgIE9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4gbV9hY2NlbnQ7
CisgICAgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2FjY2VudFVuZGVyOwogfTsKIAogfQotLSAK
Mi44LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285085</attachid>
            <date>2016-08-02 01:41:28 -0700</date>
            <delta_ts>2016-08-02 01:41:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Bug-160400-Use-Optional-members-to-store-parsed-Math.patch</filename>
            <type>text/plain</type>
            <size>24330</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSA0MjFmYTkwMDAyODM2ZGEzNDRjYjUwYThmNDAxMzFmNGI1OTUzM2FiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogVHVlLCAyIEF1ZyAyMDE2IDEwOjE5OjAxICswMjAwClN1YmplY3Q6IFtQQVRDSF0gQnVnIDE2
MDQwMCAtIFVzZSBPcHRpb25hbCBtZW1iZXJzIHRvIHN0b3JlIHBhcnNlZCBNYXRoTUwKIGF0dHJp
YnV0ZXMKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MRWxlbWVudC5jcHAgICAgICAgICAgICB8IDQwICsrKysrKysrLS0tLS0tLS0KIFNvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggICAgICAgICAgICAgIHwgMjAgKysrLS0t
LS0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwICAgIHwg
NDUgKysrKysrKysrLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rp
b25FbGVtZW50LmggICAgICB8IDEyICsrLS0tCiAuLi4vbWF0aG1sL01hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQuY3BwICAgICAgICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MTWF0aEVsZW1lbnQuY3BwICAgICAgICB8IDEyICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcCAgICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAgICAgICB8IDEwICsrLS0KIFNvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmggICAgICAgIHwgMTAgKystLQogU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcCAgICAgfCAgNCArLQogU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmggICAgICAgfCAgNCArLQog
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAgICAgICAgfCAgNiAr
LS0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaCAgICAgICAgIHwg
IDYgKy0tCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwICAgICAg
ICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5j
cHAgICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVu
dC5oICAgICB8ICA0ICstCiAxNyBmaWxlcyBjaGFuZ2VkLCAxMzkgaW5zZXJ0aW9ucygrKSwgMTAy
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNWVmNWJiLi5iNWYxNzgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTcgQEAKKzIwMTYtMDgtMDIgIEZyZWRlcmljIFdhbmcgIDxmd2FuZy5pZ2Fs
aWEuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25hbCBtZW1iZXJzIHRvIHN0b3JlIHBhcnNlZCBN
YXRoTUwgYXR0cmlidXRlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MDQwMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgIFBhcnNlZCBNYXRoTUwgYXR0cmlidXRlcyBhcmUgc3RvcmVkIG9uIHRoZSBlbGVtZW50
IGNsYXNzZXMgdXNpbmcgdGhlIG1lbW9pemUgcGF0dGVybiB0bworICAgICAgICBtaW5pbWl6ZSB0
aGUgbnVtYmVyIG9mIHBhcnNpbmcgdXBkYXRlcy4gQ3VycmVudGx5LCBhIGRpcnR5IGZsYWcgZm9y
IGVhY2ggbWVtYmVyCisgICAgICAgIGluZGljYXRlIHdoZW4gaXQgbXVzdCBiZSBwYXJzZWQgYWdh
aW4uIFdlIGNoYW5nZSB0aGlzIHRvIHdyYXAgdGhlc2UgbWVtYmVycyBpbnRvIGFuCisgICAgICAg
IE9wdGlvbmFsPFQ+IGNvbnRhaW5lciBpbnN0ZWFkLCB3aGVyZSBhIG51bGwgdmFsdWUgaW5kaWNh
dGVzIHRoYXQgdGhlIG1lbWJlciBpcyBkaXJ0eS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJl
aGF2aW9yIGlzIHVuY2hhbmdlZC4KKworICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aCk6
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjpjYWNoZWRCb29sZWFuQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OnBhcnNlTWF0aFZhcmlhbnRBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6c3BlY2lmaWVkRGlzcGxh
eVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OnNwZWNpZmllZE1hdGhW
YXJpYW50KToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOgorICAgICAgICAqIG1h
dGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1M
RnJhY3Rpb25FbGVtZW50OjpsaW5lVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhN
TEZyYWN0aW9uRWxlbWVudDo6Y2FjaGVkRnJhY3Rpb25BbGlnbm1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWF0aE1MRnJhY3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICog
bWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MTWF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6
OnNwZWNpZmllZERpc3BsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxNYXRoRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxPcGVyYXRvckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MT3BlcmF0b3JFbGVtZW50OjpvcGVy
YXRvclRleHQpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1hdGhNTFBhZGRlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAg
ICAgICAgKiBtYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9N
YXRoTUxTY3JpcHRzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTY3JpcHRz
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTY3JpcHRz
RWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MU3BhY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAg
ICAgICogbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRo
TUxUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9NYXRoTUxTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVG9rZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWF0aFZhcmlhbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZU1hdGhWYXJpYW50R2x5cGgpOgor
CiAyMDE2LTA4LTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbRmV0Y2ggQVBJXSBBZGQgc3VwcG9ydCB0byBSZWZlcnJlclBvbGljeQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCmluZGV4IGEyMTI1OWUuLjExZjZlNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKQEAgLTUxNywzMSArNTE3LDI5IEBAIE1h
dGhNTEVsZW1lbnQ6Okxlbmd0aCBNYXRoTUxFbGVtZW50OjpwYXJzZU1hdGhNTExlbmd0aChjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gcGFyc2VOYW1lZFNwYWNlKHN0cmluZ1ZpZXcp
OwogfQogCi1jb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTEVsZW1lbnQ6OmNhY2hl
ZE1hdGhNTExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBMZW5ndGgmIGxlbmd0aCkK
K2NvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MRWxlbWVudDo6Y2FjaGVkTWF0aE1M
TGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIE9wdGlvbmFsPExlbmd0aD4mIGxlbmd0
aCkKIHsKLSAgICBpZiAobGVuZ3RoLmRpcnR5KSB7Ci0gICAgICAgIGxlbmd0aCA9IHBhcnNlTWF0
aE1MTGVuZ3RoKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZSkpOwotICAgICAg
ICBsZW5ndGguZGlydHkgPSBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIGxlbmd0aDsKKyAgICBp
ZiAobGVuZ3RoKQorICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlKCk7CisgICAgbGVuZ3RoID0g
cGFyc2VNYXRoTUxMZW5ndGgoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihuYW1lKSk7
CisgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSgpOwogfQogCi1jb25zdCBNYXRoTUxFbGVtZW50OjpC
b29sZWFuVmFsdWUmIE1hdGhNTEVsZW1lbnQ6OmNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgQm9vbGVhbkF0dHJpYnV0ZSYgYXR0cmlidXRlKQorY29uc3Qg
TWF0aE1MRWxlbWVudDo6Qm9vbGVhblZhbHVlJiBNYXRoTUxFbGVtZW50OjpjYWNoZWRCb29sZWFu
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIE9wdGlvbmFsPEJvb2xlYW5WYWx1
ZT4mIGF0dHJpYnV0ZSkKIHsKLSAgICBpZiAoIWF0dHJpYnV0ZS5kaXJ0eSkKLSAgICAgICAgcmV0
dXJuIGF0dHJpYnV0ZS52YWx1ZTsKKyAgICBpZiAoYXR0cmlidXRlKQorICAgICAgICByZXR1cm4g
YXR0cmlidXRlLnZhbHVlKCk7CiAKICAgICAvLyBJbiBNYXRoTUwsIGF0dHJpYnV0ZSB2YWx1ZXMg
YXJlIGNhc2Utc2Vuc2l0aXZlLgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG5hbWUpOwogICAgIGlmICh2YWx1ZSA9PSAidHJ1
ZSIpCi0gICAgICAgIGF0dHJpYnV0ZS52YWx1ZSA9IEJvb2xlYW5WYWx1ZTo6VHJ1ZTsKKyAgICAg
ICAgYXR0cmlidXRlID0gQm9vbGVhblZhbHVlOjpUcnVlOwogICAgIGVsc2UgaWYgKHZhbHVlID09
ICJmYWxzZSIpCi0gICAgICAgIGF0dHJpYnV0ZS52YWx1ZSA9IEJvb2xlYW5WYWx1ZTo6RmFsc2U7
CisgICAgICAgIGF0dHJpYnV0ZSA9IEJvb2xlYW5WYWx1ZTo6RmFsc2U7CiAgICAgZWxzZQotICAg
ICAgICBhdHRyaWJ1dGUudmFsdWUgPSBCb29sZWFuVmFsdWU6OkRlZmF1bHQ7Ci0gICAgYXR0cmli
dXRlLmRpcnR5ID0gZmFsc2U7CisgICAgICAgIGF0dHJpYnV0ZSA9IEJvb2xlYW5WYWx1ZTo6RGVm
YXVsdDsKIAotICAgIHJldHVybiBhdHRyaWJ1dGUudmFsdWU7CisgICAgcmV0dXJuIGF0dHJpYnV0
ZS52YWx1ZSgpOwogfQogCiBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBNYXRoTUxFbGVtZW50
OjpwYXJzZU1hdGhWYXJpYW50QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
VmFsdWUpCkBAIC01ODksMjAgKzU4NywxOCBAQCBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudCBN
YXRoTUxFbGVtZW50OjpwYXJzZU1hdGhWYXJpYW50QXR0cmlidXRlKGNvbnN0IEF0b21pYwogT3B0
aW9uYWw8Ym9vbD4gTWF0aE1MRWxlbWVudDo6c3BlY2lmaWVkRGlzcGxheVN0eWxlKCkKIHsKICAg
ICBpZiAoIWFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1dGUoKSkKLSAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPGJvb2w+KCk7CisgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgIGNvbnN0IE1hdGhN
TEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgc3BlY2lmaWVkRGlzcGxheVN0eWxlID0gY2FjaGVkQm9v
bGVhbkF0dHJpYnV0ZShkaXNwbGF5c3R5bGVBdHRyLCBtX2Rpc3BsYXlTdHlsZSk7Ci0gICAgcmV0
dXJuIHNwZWNpZmllZERpc3BsYXlTdHlsZSA9PSBCb29sZWFuVmFsdWU6OkRlZmF1bHQgPyBPcHRp
b25hbDxib29sPigpIDogT3B0aW9uYWw8Ym9vbD4oc3BlY2lmaWVkRGlzcGxheVN0eWxlID09IEJv
b2xlYW5WYWx1ZTo6VHJ1ZSk7CisgICAgcmV0dXJuIHRvT3B0aW9uYWxCb29sKHNwZWNpZmllZERp
c3BsYXlTdHlsZSk7CiB9CiAKIE9wdGlvbmFsPE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50PiBN
YXRoTUxFbGVtZW50OjpzcGVjaWZpZWRNYXRoVmFyaWFudCgpCiB7CiAgICAgaWYgKCFhY2NlcHRz
TWF0aFZhcmlhbnRBdHRyaWJ1dGUoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPE1hdGhWYXJp
YW50PigpOwotICAgIGlmIChtX21hdGhWYXJpYW50LmRpcnR5KSB7Ci0gICAgICAgIG1fbWF0aFZh
cmlhbnQudmFsdWUgPSBwYXJzZU1hdGhWYXJpYW50QXR0cmlidXRlKGF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24obWF0aHZhcmlhbnRBdHRyKSk7Ci0gICAgICAgIG1fbWF0aFZhcmlhbnQu
ZGlydHkgPSBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fbWF0aFZhcmlhbnQudmFsdWUgPT0g
TWF0aFZhcmlhbnQ6Ok5vbmUgPyBPcHRpb25hbDxNYXRoVmFyaWFudD4oKSA6IE9wdGlvbmFsPE1h
dGhWYXJpYW50PihtX21hdGhWYXJpYW50LnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgaWYgKCFtX21hdGhWYXJpYW50KQorICAgICAgICBtX21hdGhWYXJpYW50ID0gcGFyc2VN
YXRoVmFyaWFudEF0dHJpYnV0ZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1hdGh2
YXJpYW50QXR0cikpOworICAgIHJldHVybiBtX21hdGhWYXJpYW50LnZhbHVlKCkgPT0gTWF0aFZh
cmlhbnQ6Ok5vbmUgPyBOdWxsb3B0IDogbV9tYXRoVmFyaWFudDsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggOTVkZDg0OS4uNWRlMWRkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCkBAIC02MywxNSArNjMsMTAgQEAgcHVibGljOgog
ICAgIHN0cnVjdCBMZW5ndGggewogICAgICAgICBMZW5ndGhUeXBlIHR5cGUgeyBMZW5ndGhUeXBl
OjpQYXJzaW5nRmFpbGVkIH07CiAgICAgICAgIGZsb2F0IHZhbHVlIHsgMCB9OwotICAgICAgICBi
b29sIGRpcnR5IHsgdHJ1ZSB9OwogICAgIH07CiAgICAgc3RhdGljIExlbmd0aCBwYXJzZU1hdGhN
TExlbmd0aChjb25zdCBTdHJpbmcmKTsKIAogICAgIGVudW0gY2xhc3MgQm9vbGVhblZhbHVlIHsg
VHJ1ZSwgRmFsc2UsIERlZmF1bHQgfTsKLSAgICBzdHJ1Y3QgQm9vbGVhbkF0dHJpYnV0ZSB7Ci0g
ICAgICAgIEJvb2xlYW5WYWx1ZSB2YWx1ZSB7IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCB9OwotICAg
ICAgICBib29sIGRpcnR5IHsgdHJ1ZSB9OwotICAgIH07CiAKICAgICAvLyBUaGVzZSBhcmUgdGhl
IG1hdGh2YXJpYW50IHZhbHVlcyBmcm9tIHRoZSBNYXRoTUwgcmVjb21tZW5kYXRpb24uCiAgICAg
Ly8gVGhlIHNwZWNpYWwgdmFsdWUgbm9uZSBtZWFucyB0aGF0IG5vIGV4cGxpY2l0IG1hdGh2YXJp
YW50IHZhbHVlIGhhcyBiZWVuIHNwZWNpZmllZC4KQEAgLTk3LDEzICs5Miw5IEBAIHB1YmxpYzoK
ICAgICAgICAgTG9vcGVkID0gMTcsCiAgICAgICAgIFN0cmV0Y2hlZCA9IDE4CiAgICAgfTsKLSAg
ICBzdHJ1Y3QgTWF0aFZhcmlhbnRBdHRyaWJ1dGUgewotICAgICAgICBNYXRoVmFyaWFudCB2YWx1
ZSB7IE1hdGhWYXJpYW50OjpOb25lIH07Ci0gICAgICAgIGJvb2wgZGlydHkgeyB0cnVlIH07Ci0g
ICAgfTsKIAogICAgIHZpcnR1YWwgT3B0aW9uYWw8Ym9vbD4gc3BlY2lmaWVkRGlzcGxheVN0eWxl
KCk7Ci0gICAgT3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IHNwZWNpZmllZE1h
dGhWYXJpYW50KCk7CisgICAgT3B0aW9uYWw8TWF0aFZhcmlhbnQ+IHNwZWNpZmllZE1hdGhWYXJp
YW50KCk7CiAKIHByb3RlY3RlZDoKICAgICBNYXRoTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CkBAIC0xMjEsMTQgKzExMiwxNSBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCi0gICAgY29uc3Qg
TGVuZ3RoJiBjYWNoZWRNYXRoTUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFtZSYsIExlbmd0aCYp
OwotICAgIGNvbnN0IEJvb2xlYW5WYWx1ZSYgY2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgQm9vbGVhbkF0dHJpYnV0ZSYpOworICAgIGNvbnN0IExlbmd0aCYgY2Fj
aGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBPcHRpb25hbDxMZW5ndGg+Jik7
CisgICAgY29uc3QgQm9vbGVhblZhbHVlJiBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBPcHRpb25hbDxCb29sZWFuVmFsdWU+Jik7CiAKICAgICB2aXJ0dWFsIGJv
b2wgYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpIHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICBCb29sZWFuQXR0cmlidXRlIG1fZGlzcGxheVN0eWxlOwotICAgIE1hdGhWYXJp
YW50QXR0cmlidXRlIG1fbWF0aFZhcmlhbnQ7CisgICAgc3RhdGljIE9wdGlvbmFsPGJvb2w+IHRv
T3B0aW9uYWxCb29sKGNvbnN0IEJvb2xlYW5WYWx1ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09
IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCA/IE51bGxvcHQgOiBPcHRpb25hbDxib29sPih2YWx1ZSA9
PSBCb29sZWFuVmFsdWU6OlRydWUpOyB9CisgICAgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2Rp
c3BsYXlTdHlsZTsKKyAgICBPcHRpb25hbDxNYXRoVmFyaWFudD4gbV9tYXRoVmFyaWFudDsKIAog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcAppbmRleCBk
MTk3N2QzLi4xN2FjYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
RnJhY3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJh
Y3Rpb25FbGVtZW50LmNwcApAQCAtNDcsNDIgKzQ3LDQxIEBAIFJlZjxNYXRoTUxGcmFjdGlvbkVs
ZW1lbnQ+IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhCiAKIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MRnJhY3Rpb25FbGVtZW50
OjpsaW5lVGhpY2tuZXNzKCkKIHsKLSAgICBpZiAoIW1fbGluZVRoaWNrbmVzcy5kaXJ0eSkKLSAg
ICAgICAgcmV0dXJuIG1fbGluZVRoaWNrbmVzczsKKyAgICBpZiAobV9saW5lVGhpY2tuZXNzKQor
ICAgICAgICByZXR1cm4gbV9saW5lVGhpY2tuZXNzLnZhbHVlKCk7CiAKICAgICAvLyBUaGUgTWF0
aE1MMyByZWNvbW1lbmRhdGlvbiBzdGF0ZXMgdGhhdCAibWVkaXVtIiBpcyB0aGUgZGVmYXVsdCB0
aGlja25lc3MuCiAgICAgLy8gSG93ZXZlciwgaXQgb25seSBzdGF0ZXMgdGhhdCAidGhpbiIgYW5k
ICJ0aGljayIgYXJlIHJlc3BlY3RpdmVseSB0aGluZXIgYW5kIHRoaWNrZXIuCiAgICAgLy8gVGhl
IE1hdGhNTCBpbiBIVE1MNSBpbXBsZW1lbnRhdGlvbiBub3RlIHN1Z2dlc3RzIDUwJSBhbmQgMjAw
JSBhbmQgdGhlc2UgdmFsdWVzIGFyZSBhbHNvIHVzZWQgaW4gR2Vja28uCi0gICAgU3RyaW5nIHRo
aWNrbmVzcyA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obGluZXRoaWNrbmVzc0F0
dHIpOworICAgIGF1dG8mIHRoaWNrbmVzcyA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24obGluZXRoaWNrbmVzc0F0dHIpOworICAgIG1fbGluZVRoaWNrbmVzcyA9IExlbmd0aCgpOwog
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0aGlja25lc3MsICJ0aGluIikp
IHsKLSAgICAgICAgbV9saW5lVGhpY2tuZXNzLnR5cGUgPSBMZW5ndGhUeXBlOjpVbml0TGVzczsK
LSAgICAgICAgbV9saW5lVGhpY2tuZXNzLnZhbHVlID0gLjU7CisgICAgICAgIG1fbGluZVRoaWNr
bmVzcy52YWx1ZSgpLnR5cGUgPSBMZW5ndGhUeXBlOjpVbml0TGVzczsKKyAgICAgICAgbV9saW5l
VGhpY2tuZXNzLnZhbHVlKCkudmFsdWUgPSAuNTsKICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHRoaWNrbmVzcywgIm1lZGl1bSIpKSB7Ci0gICAgICAgIG1fbGlu
ZVRoaWNrbmVzcy50eXBlID0gTGVuZ3RoVHlwZTo6VW5pdExlc3M7Ci0gICAgICAgIG1fbGluZVRo
aWNrbmVzcy52YWx1ZSA9IDE7CisgICAgICAgIG1fbGluZVRoaWNrbmVzcy52YWx1ZSgpLnR5cGUg
PSBMZW5ndGhUeXBlOjpVbml0TGVzczsKKyAgICAgICAgbV9saW5lVGhpY2tuZXNzLnZhbHVlKCku
dmFsdWUgPSAxOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
dGhpY2tuZXNzLCAidGhpY2siKSkgewotICAgICAgICBtX2xpbmVUaGlja25lc3MudHlwZSA9IExl
bmd0aFR5cGU6OlVuaXRMZXNzOwotICAgICAgICBtX2xpbmVUaGlja25lc3MudmFsdWUgPSAyOwor
ICAgICAgICBtX2xpbmVUaGlja25lc3MudmFsdWUoKS50eXBlID0gTGVuZ3RoVHlwZTo6VW5pdExl
c3M7CisgICAgICAgIG1fbGluZVRoaWNrbmVzcy52YWx1ZSgpLnZhbHVlID0gMjsKICAgICB9IGVs
c2UKICAgICAgICAgbV9saW5lVGhpY2tuZXNzID0gcGFyc2VNYXRoTUxMZW5ndGgodGhpY2tuZXNz
KTsKLSAgICBtX2xpbmVUaGlja25lc3MuZGlydHkgPSBmYWxzZTsKLSAgICByZXR1cm4gbV9saW5l
VGhpY2tuZXNzOworICAgIHJldHVybiBtX2xpbmVUaGlja25lc3MudmFsdWUoKTsKIH0KIAotTWF0
aE1MRnJhY3Rpb25FbGVtZW50OjpGcmFjdGlvbkFsaWdubWVudCBNYXRoTUxGcmFjdGlvbkVsZW1l
bnQ6OmNhY2hlZEZyYWN0aW9uQWxpZ25tZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIEZy
YWN0aW9uQWxpZ25tZW50QXR0cmlidXRlJiBhbGlnbm1lbnQpCitNYXRoTUxGcmFjdGlvbkVsZW1l
bnQ6OkZyYWN0aW9uQWxpZ25tZW50IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6Y2FjaGVkRnJhY3Rp
b25BbGlnbm1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgT3B0aW9uYWw8RnJhY3Rpb25B
bGlnbm1lbnQ+JiBhbGlnbm1lbnQpCiB7Ci0gICAgaWYgKCFhbGlnbm1lbnQuZGlydHkpCi0gICAg
ICAgIHJldHVybiBhbGlnbm1lbnQudmFsdWU7CisgICAgaWYgKGFsaWdubWVudCkKKyAgICAgICAg
cmV0dXJuIGFsaWdubWVudC52YWx1ZSgpOwogCi0gICAgU3RyaW5nIHZhbHVlID0gYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihuYW1lKTsKKyAgICBhdXRvJiB2YWx1ZSA9IGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZSk7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHZhbHVlLCAibGVmdCIpKQotICAgICAgICBhbGlnbm1lbnQudmFsdWUgPSBG
cmFjdGlvbkFsaWdubWVudExlZnQ7CisgICAgICAgIGFsaWdubWVudCA9IEZyYWN0aW9uQWxpZ25t
ZW50TGVmdDsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1
ZSwgInJpZ2h0IikpCi0gICAgICAgIGFsaWdubWVudC52YWx1ZSA9IEZyYWN0aW9uQWxpZ25tZW50
UmlnaHQ7CisgICAgICAgIGFsaWdubWVudCA9IEZyYWN0aW9uQWxpZ25tZW50UmlnaHQ7CiAgICAg
ZWxzZQotICAgICAgICBhbGlnbm1lbnQudmFsdWUgPSBGcmFjdGlvbkFsaWdubWVudENlbnRlcjsK
LSAgICBhbGlnbm1lbnQuZGlydHkgPSBmYWxzZTsKLSAgICByZXR1cm4gYWxpZ25tZW50LnZhbHVl
OworICAgICAgICBhbGlnbm1lbnQgPSBGcmFjdGlvbkFsaWdubWVudENlbnRlcjsKKyAgICByZXR1
cm4gYWxpZ25tZW50LnZhbHVlKCk7CiB9CiAKIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rp
b25BbGlnbm1lbnQgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpudW1lcmF0b3JBbGlnbm1lbnQoKQpA
QCAtOTgsMTEgKzk3LDExIEBAIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1l
bnQgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpkZW5vbWluYXRvckFsaWduCiB2b2lkIE1hdGhNTEZy
YWN0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBsaW5ldGhpY2tu
ZXNzQXR0cikKLSAgICAgICAgbV9saW5lVGhpY2tuZXNzLmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAg
bV9saW5lVGhpY2tuZXNzID0gTnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IG51bWFsaWdu
QXR0cikKLSAgICAgICAgbV9udW1lcmF0b3JBbGlnbm1lbnQuZGlydHkgPSB0cnVlOworICAgICAg
ICBtX251bWVyYXRvckFsaWdubWVudCA9IE51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBk
ZW5vbWFsaWduQXR0cikKLSAgICAgICAgbV9kZW5vbWluYXRvckFsaWdubWVudC5kaXJ0eSA9IHRy
dWU7CisgICAgICAgIG1fZGVub21pbmF0b3JBbGlnbm1lbnQgPSBOdWxsb3B0OwogCiAgICAgTWF0
aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5oCmluZGV4IDgyYjAxOTIuLmU5ZWJm
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgK
QEAgLTQ3LDE1ICs0NywxMSBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgZmluYWw7CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAKLSAgICBzdHJ1Y3QgRnJhY3Rpb25B
bGlnbm1lbnRBdHRyaWJ1dGUgewotICAgICAgICBGcmFjdGlvbkFsaWdubWVudCB2YWx1ZSB7IEZy
YWN0aW9uQWxpZ25tZW50Q2VudGVyIH07Ci0gICAgICAgIGJvb2wgZGlydHkgeyB0cnVlIH07Ci0g
ICAgfTsKLSAgICBGcmFjdGlvbkFsaWdubWVudCBjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRnJhY3Rpb25BbGlnbm1lbnRBdHRyaWJ1dGUmKTsKKyAgICBGcmFj
dGlvbkFsaWdubWVudCBjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgT3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+Jik7CiAKLSAgICBMZW5ndGggbV9saW5lVGhp
Y2tuZXNzOwotICAgIEZyYWN0aW9uQWxpZ25tZW50QXR0cmlidXRlIG1fbnVtZXJhdG9yQWxpZ25t
ZW50OwotICAgIEZyYWN0aW9uQWxpZ25tZW50QXR0cmlidXRlIG1fZGVub21pbmF0b3JBbGlnbm1l
bnQ7CisgICAgT3B0aW9uYWw8TGVuZ3RoPiBtX2xpbmVUaGlja25lc3M7CisgICAgT3B0aW9uYWw8
RnJhY3Rpb25BbGlnbm1lbnQ+IG1fbnVtZXJhdG9yQWxpZ25tZW50OworICAgIE9wdGlvbmFsPEZy
YWN0aW9uQWxpZ25tZW50PiBtX2Rlbm9taW5hdG9yQWxpZ25tZW50OwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQu
Y3BwCmluZGV4IDdiNDJjODguLjRkNzQyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKQEAgLTkwLDkgKzkwLDkg
QEAgdm9pZCBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb24KICAgICBib29sIGRpc3BsYXlTdHlsZUF0dHJpYnV0
ZSA9IG5hbWUgPT0gZGlzcGxheXN0eWxlQXR0ciAmJiBhY2NlcHRzRGlzcGxheVN0eWxlQXR0cmli
dXRlKCk7CiAgICAgYm9vbCBtYXRoVmFyaWFudEF0dHJpYnV0ZSA9IG5hbWUgPT0gbWF0aHZhcmlh
bnRBdHRyICYmIGFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpOwogICAgIGlmIChkaXNwbGF5
U3R5bGVBdHRyaWJ1dGUpCi0gICAgICAgIG1fZGlzcGxheVN0eWxlLmRpcnR5ID0gdHJ1ZTsKKyAg
ICAgICAgbV9kaXNwbGF5U3R5bGUgPSBOdWxsb3B0OwogICAgIGlmIChtYXRoVmFyaWFudEF0dHJp
YnV0ZSkKLSAgICAgICAgbV9tYXRoVmFyaWFudC5kaXJ0eSA9IHRydWU7CisgICAgICAgIG1fbWF0
aFZhcmlhbnQgPSBOdWxsb3B0OwogICAgIGlmICgoZGlzcGxheVN0eWxlQXR0cmlidXRlIHx8IG1h
dGhWYXJpYW50QXR0cmlidXRlKSAmJiByZW5kZXJlcigpKQogICAgICAgICBNYXRoTUxTdHlsZTo6
cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShyZW5kZXJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKaW5kZXggZTE2YmU2YS4uZWUxYzNlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCkBAIC01OCwxMyArNTgs
MTMgQEAgT3B0aW9uYWw8Ym9vbD4gTWF0aE1MTWF0aEVsZW1lbnQ6OnNwZWNpZmllZERpc3BsYXlT
dHlsZSgpCiB7CiAgICAgaWYgKGNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoZGlzcGxheXN0eWxlQXR0
ciwgbV9kaXNwbGF5U3R5bGUpID09IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCkgewogICAgICAgICAv
LyBUaGUgZGVmYXVsdCBkaXNwbGF5c3R5bGUgdmFsdWUgb2YgdGhlIDxtYXRoPiBkZXBlbmRzIG9u
IHRoZSBkaXNwbGF5IGF0dHJpYnV0ZSwgc28gd2UgcGFyc2UgaXQgaGVyZS4KLSAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
ZGlzcGxheUF0dHIpOworICAgICAgICBhdXRvJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oZGlzcGxheUF0dHIpOwogICAgICAgICBpZiAodmFsdWUgPT0gImJsb2NrIikK
LSAgICAgICAgICAgIG1fZGlzcGxheVN0eWxlLnZhbHVlID0gQm9vbGVhblZhbHVlOjpUcnVlOwor
ICAgICAgICAgICAgbV9kaXNwbGF5U3R5bGUgPSBCb29sZWFuVmFsdWU6OlRydWU7CiAgICAgICAg
IGVsc2UgaWYgKHZhbHVlID09ICJpbmxpbmUiKQotICAgICAgICAgICAgbV9kaXNwbGF5U3R5bGUu
dmFsdWUgPSBCb29sZWFuVmFsdWU6OkZhbHNlOworICAgICAgICAgICAgbV9kaXNwbGF5U3R5bGUg
PSBCb29sZWFuVmFsdWU6OkZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gbV9kaXNwbGF5U3R5bGUu
dmFsdWUgPT0gQm9vbGVhblZhbHVlOjpEZWZhdWx0ID8gT3B0aW9uYWw8Ym9vbD4oKSA6IE9wdGlv
bmFsPGJvb2w+KG1fZGlzcGxheVN0eWxlLnZhbHVlID09IEJvb2xlYW5WYWx1ZTo6VHJ1ZSk7Cisg
ICAgcmV0dXJuIHRvT3B0aW9uYWxCb29sKG1fZGlzcGxheVN0eWxlLnZhbHVlKCkpOwogfQogCiB2
b2lkIE1hdGhNTE1hdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtNzIsOSArNzIsOSBAQCB2b2lk
IE1hdGhNTE1hdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdAogICAgIGJvb2wgZGlzcGxheVN0eWxlQXR0cmlidXRlID0gKG5h
bWUgPT0gZGlzcGxheXN0eWxlQXR0ciB8fCBuYW1lID09IGRpc3BsYXlBdHRyKTsKICAgICBib29s
IG1hdGhWYXJpYW50QXR0cmlidXRlID0gbmFtZSA9PSBtYXRodmFyaWFudEF0dHI7CiAgICAgaWYg
KGRpc3BsYXlTdHlsZUF0dHJpYnV0ZSkKLSAgICAgICAgbV9kaXNwbGF5U3R5bGUuZGlydHkgPSB0
cnVlOworICAgICAgICBtX2Rpc3BsYXlTdHlsZSA9IE51bGxvcHQ7CiAgICAgaWYgKG1hdGhWYXJp
YW50QXR0cmlidXRlKQotICAgICAgICBtX21hdGhWYXJpYW50LmRpcnR5ID0gdHJ1ZTsKKyAgICAg
ICAgbV9tYXRoVmFyaWFudCA9IE51bGxvcHQ7CiAgICAgaWYgKChkaXNwbGF5U3R5bGVBdHRyaWJ1
dGUgfHwgbWF0aFZhcmlhbnRBdHRyaWJ1dGUpICYmIHJlbmRlcmVyKCkpCiAgICAgICAgIE1hdGhN
TFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVlKHJlbmRlcmVyKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwCmluZGV4IDc2MGM1M2Iu
LmViNGIxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRv
ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVs
ZW1lbnQuY3BwCkBAIC02MywxMyArNjMsMTMgQEAgVUNoYXIgTWF0aE1MT3BlcmF0b3JFbGVtZW50
OjpvcGVyYXRvclRleHQoKQogICAgIGlmIChtX29wZXJhdG9yVGV4dCkKICAgICAgICAgcmV0dXJu
IG1fb3BlcmF0b3JUZXh0LnZhbHVlKCk7CiAKLSAgICBtX29wZXJhdG9yVGV4dCA9IE9wdGlvbmFs
PFVDaGFyPihwYXJzZU9wZXJhdG9yVGV4dCh0ZXh0Q29udGVudCgpKSk7CisgICAgbV9vcGVyYXRv
clRleHQgPSBwYXJzZU9wZXJhdG9yVGV4dCh0ZXh0Q29udGVudCgpKTsKICAgICByZXR1cm4gbV9v
cGVyYXRvclRleHQudmFsdWUoKTsKIH0KIAogdm9pZCBNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewotICAgIG1fb3BlcmF0
b3JUZXh0ID0gT3B0aW9uYWw8VUNoYXI+KCk7CisgICAgbV9vcGVyYXRvclRleHQgPSBOdWxsb3B0
OwogICAgIE1hdGhNTFRleHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuY3BwCmluZGV4IDEz
ODdlM2MuLjY0YTg0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQ
YWRkZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVk
RWxlbWVudC5jcHAKQEAgLTczLDE1ICs3MywxNSBAQCBjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5n
dGgmIE1hdGhNTFBhZGRlZEVsZW1lbnQ6OnZvZmZzZXQoKQogdm9pZCBNYXRoTUxQYWRkZWRFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IHdpZHRoQXR0cikKLSAgICAgICAg
bV93aWR0aC5kaXJ0eSA9IHRydWU7CisgICAgICAgIG1fd2lkdGggPSBOdWxsb3B0OwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQuZGlydHkgPSB0cnVl
OworICAgICAgICBtX2hlaWdodCA9IE51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBkZXB0
aEF0dHIpCi0gICAgICAgIG1fZGVwdGguZGlydHkgPSB0cnVlOworICAgICAgICBtX2RlcHRoID0g
TnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGxzcGFjZUF0dHIpCi0gICAgICAgIG1fbHNw
YWNlLmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9sc3BhY2UgPSBOdWxsb3B0OwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gdm9mZnNldEF0dHIpCi0gICAgICAgIG1fdm9mZnNldC5kaXJ0eSA9IHRydWU7
CisgICAgICAgIG1fdm9mZnNldCA9IE51bGxvcHQ7CiAKICAgICBNYXRoTUxFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFBhZGRlZEVsZW1lbnQuaAppbmRleCA2MDAyYWRkLi5jM2E5OGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmgKQEAgLTQ0LDExICs0NCwxMSBAQCBwcml2
YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JikgZmluYWw7CiAKLSAgICBMZW5ndGggbV93aWR0aDsKLSAgICBMZW5ndGggbV9oZWlnaHQ7Ci0g
ICAgTGVuZ3RoIG1fZGVwdGg7Ci0gICAgTGVuZ3RoIG1fbHNwYWNlOwotICAgIExlbmd0aCBtX3Zv
ZmZzZXQ7CisgICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3dpZHRoOworICAgIE9wdGlvbmFsPExlbmd0
aD4gbV9oZWlnaHQ7CisgICAgT3B0aW9uYWw8TGVuZ3RoPiBtX2RlcHRoOworICAgIE9wdGlvbmFs
PExlbmd0aD4gbV9sc3BhY2U7CisgICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3ZvZmZzZXQ7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcApp
bmRleCA1ZWFkYTFhLi5iOGRkMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxTY3JpcHRzRWxlbWVudC5jcHAKQEAgLTU4LDkgKzU4LDkgQEAgY29uc3QgTWF0aE1MRWxlbWVu
dDo6TGVuZ3RoJiBNYXRoTUxTY3JpcHRzRWxlbWVudDo6c3VwZXJzY3JpcHRTaGlmdCgpCiB2b2lk
IE1hdGhNTFNjcmlwdHNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IHN1
YnNjcmlwdHNoaWZ0QXR0cikKLSAgICAgICAgbV9zdWJzY3JpcHRTaGlmdC5kaXJ0eSA9IHRydWU7
CisgICAgICAgIG1fc3Vic2NyaXB0U2hpZnQgPSBOdWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUg
PT0gc3VwZXJzY3JpcHRzaGlmdEF0dHIpCi0gICAgICAgIG1fc3VwZXJzY3JpcHRTaGlmdC5kaXJ0
eSA9IHRydWU7CisgICAgICAgIG1fc3VwZXJzY3JpcHRTaGlmdCA9IE51bGxvcHQ7CiAKICAgICBN
YXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5oCmluZGV4IDU3NDdlNzQuLmI5NDE4
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5oCkBA
IC00Myw4ICs0Myw4IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKIAotICAgIExlbmd0aCBtX3N1YnNj
cmlwdFNoaWZ0OwotICAgIExlbmd0aCBtX3N1cGVyc2NyaXB0U2hpZnQ7CisgICAgT3B0aW9uYWw8
TGVuZ3RoPiBtX3N1YnNjcmlwdFNoaWZ0OworICAgIE9wdGlvbmFsPExlbmd0aD4gbV9zdXBlcnNj
cmlwdFNoaWZ0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFNwYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VF
bGVtZW50LmNwcAppbmRleCA0MWM5ZTRkLi5lN2RlMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcApAQCAtNjMsMTEgKzYzLDExIEBAIGNvbnN0IE1h
dGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MU3BhY2VFbGVtZW50OjpkZXB0aCgpCiB2b2lkIE1h
dGhNTFNwYWNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSB3aWR0aEF0
dHIpCi0gICAgICAgIG1fd2lkdGguZGlydHkgPSB0cnVlOworICAgICAgICBtX3dpZHRoID0gTnVs
bG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpCi0gICAgICAgIG1faGVpZ2h0
LmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9oZWlnaHQgPSBOdWxsb3B0OwogICAgIGVsc2UgaWYg
KG5hbWUgPT0gZGVwdGhBdHRyKQotICAgICAgICBtX2RlcHRoLmRpcnR5ID0gdHJ1ZTsKKyAgICAg
ICAgbV9kZXB0aCA9IE51bGxvcHQ7CiAKICAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MU3BhY2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVt
ZW50LmgKaW5kZXggOTNmNjdjNi4uZjVjMGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxTcGFjZUVsZW1lbnQuaApAQCAtNDIsOSArNDIsOSBAQCBwcml2YXRlOgogICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAKLSAg
ICBMZW5ndGggbV93aWR0aDsKLSAgICBMZW5ndGggbV9oZWlnaHQ7Ci0gICAgTGVuZ3RoIG1fZGVw
dGg7CisgICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3dpZHRoOworICAgIE9wdGlvbmFsPExlbmd0aD4g
bV9oZWlnaHQ7CisgICAgT3B0aW9uYWw8TGVuZ3RoPiBtX2RlcHRoOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKaW5kZXggMGIwMGVlYi4uMzQ5
ZGY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCkBA
IC02NSw3ICs2NSw3IEBAIHZvaWQgTWF0aE1MVGV4dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogdm9pZCBNYXRoTUxUZXh0RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBtYXRodmFyaWFudEF0dHIpIHsKLSAgICAgICAgbV9t
YXRoVmFyaWFudC5kaXJ0eSA9IHRydWU7CisgICAgICAgIG1fbWF0aFZhcmlhbnQgPSBOdWxsb3B0
OwogICAgICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgICAgIE1hdGhNTFN0eWxlOjpyZXNv
bHZlTWF0aE1MU3R5bGVUcmVlKHJlbmRlcmVyKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcAppbmRleCBhZjE5M2U2Li4zMTNm
MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1l
bnQuY3BwCkBAIC01OCw5ICs1OCw5IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1
ZSYgTWF0aE1MVW5kZXJPdmVyRWxlbWVudDo6YWNjZW50VW5kZXIoKQogdm9pZCBNYXRoTUxVbmRl
ck92ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IGFjY2VudEF0dHIp
Ci0gICAgICAgIG1fYWNjZW50LmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9hY2NlbnQgPSBOdWxs
b3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gYWNjZW50dW5kZXJBdHRyKQotICAgICAgICBtX2Fj
Y2VudFVuZGVyLmRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgbV9hY2NlbnRVbmRlciA9IE51bGxvcHQ7
CiAKICAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaAppbmRleCBm
NzYzNzRlLi44ZDYyNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
VW5kZXJPdmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRl
ck92ZXJFbGVtZW50LmgKQEAgLTQxLDggKzQxLDggQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCi0gICAgQm9v
bGVhbkF0dHJpYnV0ZSBtX2FjY2VudDsKLSAgICBCb29sZWFuQXR0cmlidXRlIG1fYWNjZW50VW5k
ZXI7CisgICAgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2FjY2VudDsKKyAgICBPcHRpb25hbDxC
b29sZWFuVmFsdWU+IG1fYWNjZW50VW5kZXI7CiB9OwogCiB9Ci0tIAoyLjguMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>