<?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>160540</bug_id>
          
          <creation_ts>2016-08-04 01:56:51 -0700</creation_ts>
          <short_desc>Introduce a MathMLAnnotationElement class for the annotation/annotation-xml elements</short_desc>
          <delta_ts>2016-08-22 09:35:14 -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>
          
          <blocked>160542</blocked>
    
    <blocked>160543</blocked>
          <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>alex</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1217345</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-08-04 01:56:51 -0700</bug_when>
    <thetext>annotation can only contain text whereas the annotation-xml element can contain some elements as described in the HTML5 RelaxNG schema. For this reason, they have been implemented in MathMLTextElement and MathMLInlineContainerElement respectively. However, they are actually closer to each other than to token elements or presentation containers. In particular, they have their own attributes and are not supposed to handle things like mathvariant or displaystyle. We should introduce a MathMLAnnotationClass to shar their implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217347</commentid>
    <comment_count>1</comment_count>
      <attachid>285307</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-08-04 02:11:25 -0700</bug_when>
    <thetext>Created attachment 285307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217357</commentid>
    <comment_count>2</comment_count>
      <attachid>285307</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-08-04 03:26:19 -0700</bug_when>
    <thetext>Comment on attachment 285307
Patch

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

&gt; Source/WebCore/CMakeLists.txt:1990
&gt; +    mathml/MathMLAnnotationElement.cpp

The windows bot seems happy, but I should also update Source/WebCore/mathml/MathMLAllInOne.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218204</commentid>
    <comment_count>3</comment_count>
      <attachid>285307</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-05 23:09:06 -0700</bug_when>
    <thetext>Comment on attachment 285307
Patch

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

&gt; Source/WebCore/mathml/MathMLAnnotationElement.cpp:32
&gt; +#include &quot;HTMLElement.h&quot;

No need to include this, since this is a base class of HTMLHtmlElement.

&gt; Source/WebCore/mathml/MathMLAnnotationElement.cpp:38
&gt; +#include &quot;SVGElement.h&quot;

No need to include this, since this is a base class of SVGSVGElement.

&gt; Source/WebCore/mathml/MathMLAnnotationElement.h:44
&gt; +    void attributeChanged(const QualifiedName&amp;, const AtomicString&amp; oldValue, const AtomicString&amp; newValue, AttributeModificationReason) override;

Should be final, not override.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221727</commentid>
    <comment_count>4</comment_count>
      <attachid>286562</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-08-21 03:51:05 -0700</bug_when>
    <thetext>Created attachment 286562
Final Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221734</commentid>
    <comment_count>5</comment_count>
      <attachid>286562</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-21 05:20:24 -0700</bug_when>
    <thetext>Comment on attachment 286562
Final Patch

Clearing flags on attachment: 286562

Committed r204692: &lt;http://trac.webkit.org/changeset/204692&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285307</attachid>
            <date>2016-08-04 02:11:25 -0700</date>
            <delta_ts>2016-08-05 23:09:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160540-20160804111000.patch</filename>
            <type>text/plain</type>
            <size>24251</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGI4YzhlMTJmYjhjZjI5
OGNhOTQ3ZTU0YTFhOTZlNWVmYjBmMjExMC4uMjE4YjQ0Y2JmZDhlN2U5YTY1YTExODgxOTQxZDFl
YTJiMWIxMTYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE2LTA4LTA0ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYSBNYXRo
TUxBbm5vdGF0aW9uRWxlbWVudCBjbGFzcyBmb3IgdGhlIGFubm90YXRpb24vYW5ub3RhdGlvbi14
bWwgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDU0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSA8YW5ub3RhdGlvbj4gZWxlbWVudCBjYW4gb25seSBjb250YWluIHRleHQgd2hlcmVh
cyB0aGUgPGFubm90YXRpb24teG1sPiBlbGVtZW50IGNhbgorICAgICAgICBjb250YWluIHNvbWUg
ZWxlbWVudHMgYXMgZGVzY3JpYmVkIGluIHRoZSBIVE1MNSBSZWxheE5HIHNjaGVtYS4gRm9yIHRo
aXMgcmVhc29uLCB0aGV5IGhhdmUKKyAgICAgICAgYmVlbiBpbXBsZW1lbnRlZCBpbiB0aGUgc2Vw
YXJhdGUgTWF0aE1MVGV4dEVsZW1lbnQgYW5kIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQK
KyAgICAgICAgcmVzcGVjdGl2ZWx5LiBIb3dldmVyLCB0aGV5IGFyZSBhY3R1YWxseSBjbG9zZXIg
dG8gZWFjaCBvdGhlciB0aGFuIHRvIHRva2VuIGVsZW1lbnRzIG9yCisgICAgICAgIHByZXNlbnRh
dGlvbiBjb250YWluZXJzLiBJbiBwYXJ0aWN1bGFyIHRoZXkgc3VwcG9ydCB2ZXJ5IGRpZmZlcmVu
dCBhdHRyaWJ1dGVzIGFuZCBhcmUKKyAgICAgICAgY29uc2lkZXJlZCBieSB0aGUgPHNlbWFudGlj
cz4gdGFnLiBIZW5jZSB3ZSBtb3ZlIHRoZWlyIGltcGxlbWVudGF0aW9ucyBpbiBhIG5ldworICAg
ICAgICBNYXRoTUxBbm5vdGF0aW9uIGNsYXNzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYWxy
ZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6IEFkZCBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxBbm5v
dGF0aW9uRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MQW5ub3Rh
dGlvbkVsZW1lbnQ6Ok1hdGhNTEFubm90YXRpb25FbGVtZW50KTogQVNTRVJUIHRoYXQgdGhpcyBj
bGFzcyBpcyBvbmx5CisgICAgICAgIGZvciBhbm5vdGF0aW9uIGFuZCBhbm5vdGF0aW9uLXhtbC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEFubm90YXRpb25FbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcik6IE1vdmUgaW1wbGVtZW50YXRpb24gZnJvbQorICAgICAgICBNYXRoTUxUZXh0RWxlbWVu
dCBhbmQgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1h
dGhNTEFubm90YXRpb25FbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKTogTW92ZSBp
bXBsZW1lbnRhdGlvbiBmcm9tCisgICAgICAgIE1hdGhNTFRleHRFbGVtZW50IGFuZCBNYXRoTUxF
bGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQ6OmF0dHJp
YnV0ZUNoYW5nZWQpOiBNb3ZlIGltcGxlbWVudGF0aW9uIGZyb20gTWF0aE1MRWxlbWVudC4KKyAg
ICAgICAgKiBtYXRobWwvTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQuaDogT3ZlcnJpZGUgaXNTZW1h
bnRpY0Fubm90YXRpb24gYW5kIGlzUHJlc2VudGF0aW9uTWF0aE1MCisgICAgICAgIHRvIHJldHVy
biB0cnVlLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOiBNb3ZlIHRo
ZSBhbm5vdGF0aW9uLXhtbCBjYXNlIGludG8KKyAgICAgICAgTWF0aE1MQW5ub3RhdGlvbkVsZW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTog
RGVsZXRlZC4gVGhpcyB3YXMgb25seSB1c2VkIGZvciBzZW1hbnRpYworICAgICAgICBhbm5vdGF0
aW9ucyBhbmQgc28gdGhlIGNvZGUgaXMgbW92ZWQgaW50byBNYXRoTUxBbm5vdGF0aW9uRWxlbWVu
dC4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MRWxlbWVudDo6aXNNYXRoTUxUb2tlbik6IFJldHVybiBmYWxzZSBhbmQgbGV0IGRlcml2
ZWQgY2xhc3Mgb3ZlcnJpZGUgdGhpcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6
OmlzU2VtYW50aWNBbm5vdGF0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxF
bGVtZW50Ojp1cGRhdGVTZWxlY3RlZENoaWxkKTogTWFrZSB0aGlzIHB1YmxpYyBzbyB0aGF0IGlz
IGNhbiBiZSB1c2VkCisgICAgICAgIGJ5IE1hdGhNTEFubm90YXRpb25FbGVtZW50OjphdHRyaWJ1
dGVDaGFuZ2VkLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFRoZSBhbm5vdGF0aW9uLXhtbCBjYXNlIGlzCisgICAgICAg
IG5vdyBoYW5kbGVkIGluIE1hdGhNTEFubm90YXRpb25FbGVtZW50LgorICAgICAgICAqIG1hdGht
bC9NYXRoTUxUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxUZXh0RWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKTogVGhlIGFubm90YXRpb24gY2FzZSBpcyBoYW5k
bGVkIGlzIG5vdworICAgICAgICBoYW5kbGVkIGluICBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFRleHRFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKTogRGl0dG8uCisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRFbGVtZW50Lmg6IE92
ZXJyaWRlIGlzVG9rZW4gdG8gcmV0dXJuIHRydWUuCisgICAgICAgICogbWF0aG1sL21hdGh0YWdz
LmluOiBNYXAgYW5ub3RhdGlvbiBhbmQgYW5ub3RhdGlvbi14bWwgdG8gTWF0aE1MQW5ub3RhdGlv
bkVsZW1lbnQuCisKIDIwMTYtMDgtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygpIG9uIE5hbWVkTm9kZU1hcCBm
YWlscyB0byByZXR1cm4gbmFtZWQgcHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAz
MmFiNTNjMmRkMzk1NDM2NGIzMzdiMTE4ODE5OTI2YjliYTA5YWYwLi5iZGNmZDU3NDhhZTY1YWZk
NzhlNGNhZWFjZmFjZDMwZjczOTgzZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTk4Nyw2
ICsxOTg3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9pY29uL0ljb25SZWNv
cmQuY3BwCiAgICAgbG9hZGVyL2ljb24vUGFnZVVSTFJlY29yZC5jcHAKIAorICAgIG1hdGhtbC9N
YXRoTUxBbm5vdGF0aW9uRWxlbWVudC5jcHAKICAgICBtYXRobWwvTWF0aE1MRWxlbWVudC5jcHAK
ICAgICBtYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcAogICAgIG1hdGhtbC9NYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM5Y2IwNzYxY2M1MDZiNjdmZmYwOWRkOTI4
MTQxOGNjY2U2YmMwM2IuLmFjOTNhNTg5OTdjZjNmOTZhY2RmNTg0ODBmNDNkMzU3OGYxZDYwODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTY3MDQsNiArNjcwNCw4IEBACiAJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBN
YXRoTUxUZXh0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50Lmgg
Ki87IH07CiAJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTZGMSAvKiBNYXRoTUxPcGVyYXRvckVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0
QTZBMTEwOEFCRUQwMDI2MTZGMSAvKiBNYXRoTUxPcGVyYXRvckVsZW1lbnQuaCAqLzsgfTsKIAkJ
RkE2NTRBNkMxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTZBMTEwOEFC
RUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmggKi87IH07CisJCUZBQkU3MkY0
MTA1OUMxRUIwMEQ4ODhDQyAvKiBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJFRDEwNTlDMUVCMDBE
ODg4Q0MgLyogTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQuY3BwICovOyB9OworCQlGQUJFNzJGNTEw
NTlDMUVCMDBEODg4Q0MgLyogTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkVFMTA1OUMxRUIwMEQ4ODhD
QyAvKiBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudC5oICovOyB9OwogCQlGQUJFNzJGNDEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJFRDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxl
bWVudC5jcHAgKi87IH07CiAJCUZBQkU3MkY1MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJF
NzJFRTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovOyB9OwogCQlGQUJFNzJG
NjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJFRjEwNTlD
MUVCMDBEOTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgKi87IH07CkBA
IC0xNDY2OSw2ICsxNDY3MSw4IEBACiAJCUZBNjU0QTZBMTEwOEFCRUQwMDI2MTZGMSAvKiBNYXRo
TUxPcGVyYXRvckVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0
aE1MT3BlcmF0b3JFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0
QTZBMTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIEROU1Jl
c29sdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZl
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFCRTcyRUQxMDU5QzFFQjAw
RDg4OENDIC8qIE1hdGhNTEFubm90YXRpb25FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTEFubm90YXRpb25FbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFCRTcyRUUxMDU5QzFFQjAwRDg4OENDIC8qIE1hdGhNTEFu
bm90YXRpb25FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhN
TEFubm90YXRpb25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3
MkVEMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGQUJFNzJFRTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxFbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVGMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjQyOTUsNiArMjQyOTksOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlGQTY1NEE2NzExMDhBQkUyMDAyNjE1RTAgLyogbWF0aGF0
dHJzLmluICovLAorCQkJCUZBQkU3MkVEMTA1OUMxRUIwMEQ4ODhDQyAvKiBNYXRoTUxBbm5vdGF0
aW9uRWxlbWVudC5jcHAgKi8sCisJCQkJRkFCRTcyRUUxMDU5QzFFQjAwRDg4OENDIC8qIE1hdGhN
TEFubm90YXRpb25FbGVtZW50LmggKi8sCiAJCQkJRkFCRTcyRUQxMDU5QzFFQjAwRDk5OUREIC8q
IE1hdGhNTEVsZW1lbnQuY3BwICovLAogCQkJCUZBQkU3MkVFMTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxFbGVtZW50LmggKi8sCiAJCQkJMEJDRjgzRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhN
TEZyYWN0aW9uRWxlbWVudC5jcHAgKi8sCkBAIC0yNjcxMyw2ICsyNjcxOSw3IEBACiAJCQkJOTMz
MDlERjgwOTlFNjQ5MjAwNTZFNTgxIC8qIG1hcmt1cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcy
OEMzMTQxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwMEM2MEUzRjEzRDc2RDdFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVySW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkFCRTcyRjUxMDU5QzFFQjAwRDg4OENDIC8qIE1hdGhN
TEFubm90YXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQUJFNzJGNTEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRBMjhBQUMx
MkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwQkNGODNGNzEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTMwNTM4LDYgKzMwNTQ1LDcgQEAKIAkJCQkxQThGNkJDNTBEQjU1
Q0RDMDAxREI3OTQgLyogTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMz
MDlERjcwOTlFNjQ5MjAwNTZFNTgxIC8qIG1hcmt1cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
NzI4QzMxMzEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRkFCRTcyRjQxMDU5QzFFQjAwRDg4OENDIC8qIE1hdGhNTEFubm90YXRpb25F
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZBQkU3MkY0MTA1OUMxRUIwMEQ5OTlERCAv
KiBNYXRoTUxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZBQkU3MkZEMTA1OUMyMTEw
MEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
QkNGODNGNjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEFubm90
YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxBbm5vdGF0aW9u
RWxlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA4YzEyMDI1NGQyZTQzOTZhZDA0ODQ3YWVhNDAwYjA2
ZDlkZjFlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxB
bm5vdGF0aW9uRWxlbWVudC5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorI2lu
Y2x1ZGUgIk1hdGhNTEFubm90YXRpb25FbGVtZW50LmgiCisKKyNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgorI2luY2x1ZGUgIk1hdGhNTE1hdGhF
bGVtZW50LmgiCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNYXRoTUxTZWxl
Y3RFbGVtZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aE1MUm93LmgiCisjaW5jbHVkZSAiU1ZH
RWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CisKK01hdGhNTEFubm90YXRpb25F
bGVtZW50OjpNYXRoTUxBbm5vdGF0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBNYXRoTUxFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQoreworICAgIEFTU0VSVChoYXNUYWdOYW1lKGFubm90YXRpb25UYWcpIHx8IGhhc1Rh
Z05hbWUoYW5ub3RhdGlvbl94bWxUYWcpKTsKK30KKworUmVmPE1hdGhNTEFubm90YXRpb25FbGVt
ZW50PiBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOworfQorCitSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
IGluc2VydGlvblBvc2l0aW9uKQoreworICAgIGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjph
bm5vdGF0aW9uVGFnKSkKKyAgICAgICAgcmV0dXJuIE1hdGhNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOworCisgICAgLy8g
RklYTUU6IERvIHdlIHJlYWxseSBuZWVkIHRvIGNyZWF0ZSBhIFJlbmRlck1hdGhNTFJvdz8KKyAg
ICBBU1NFUlQoaGFzVGFnTmFtZShhbm5vdGF0aW9uX3htbFRhZykpOworICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxSb3c+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7Cit9CisK
K2Jvb2wgTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Y29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0Cit7CisgICAgLy8gRm9yIDxhbm5vdGF0aW9uPiwgb25s
eSB0ZXh0IGNoaWxkcmVuIGFyZSBhbGxvd2VkLgorICAgIGlmIChoYXNUYWdOYW1lKE1hdGhNTE5h
bWVzOjphbm5vdGF0aW9uVGFnKSkKKyAgICAgICAgcmV0dXJuIGNoaWxkLmlzVGV4dE5vZGUoKTsK
KworICAgIC8vIEZvciA8YW5ub3RhdGlvbi14bWw+LCB3ZSBmb2xsb3cgdGhlc2UgZGVmaW5pdGlv
bnMgZnJvbSB0aGUgSFRNTDUgUmVsYXhORyBzY2hlbWE6CisgICAgLy8gLSBhbm5vdGF0aW9uLXht
bC5tb2RlbC5tYXRobWwKKyAgICAvLyAtIGFubm90YXRpb24teG1sLm1vZGVsLnN2ZworICAgIC8v
IC0gYW5ub3RhdGlvbi14bWwubW9kZWwueGh0bWwKKworICAgIEFTU0VSVChoYXNUYWdOYW1lKGFu
bm90YXRpb25feG1sVGFnKSk7CisgICAgYXV0byYgdmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGVuY29kaW5nQXR0cik7CisKKyAgICBpZiAoaXM8TWF0aE1MRWxlbWVudD4o
Y2hpbGQpICYmIChNYXRoTUxTZWxlY3RFbGVtZW50Ojppc01hdGhNTEVuY29kaW5nKHZhbHVlKSB8
fCBNYXRoTUxTZWxlY3RFbGVtZW50Ojppc0hUTUxFbmNvZGluZyh2YWx1ZSkpKSB7CisgICAgICAg
IGF1dG8mIG1hdGhtbEVsZW1lbnQgPSBkb3duY2FzdDxNYXRoTUxFbGVtZW50PihjaGlsZCk7Cisg
ICAgICAgIHJldHVybiBpczxNYXRoTUxNYXRoRWxlbWVudD4obWF0aG1sRWxlbWVudCk7CisgICAg
fQorCisgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KGNoaWxkKSAmJiAoTWF0aE1MU2VsZWN0RWxlbWVu
dDo6aXNTVkdFbmNvZGluZyh2YWx1ZSkgfHwgTWF0aE1MU2VsZWN0RWxlbWVudDo6aXNIVE1MRW5j
b2RpbmcodmFsdWUpKSkgeworICAgICAgICBhdXRvJiBzdmdFbGVtZW50ID0gZG93bmNhc3Q8U1ZH
RWxlbWVudD4oY2hpbGQpOworICAgICAgICByZXR1cm4gaXM8U1ZHU1ZHRWxlbWVudD4oc3ZnRWxl
bWVudCk7CisgICAgfQorCisgICAgaWYgKGlzPEhUTUxFbGVtZW50PihjaGlsZCkgJiYgTWF0aE1M
U2VsZWN0RWxlbWVudDo6aXNIVE1MRW5jb2RpbmcodmFsdWUpKSB7CisgICAgICAgIGF1dG8mIGh0
bWxFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KGNoaWxkKTsKKyAgICAgICAgcmV0dXJu
IGlzPEhUTUxIdG1sRWxlbWVudD4oaHRtbEVsZW1lbnQpIHx8IChpc0Zsb3dDb250ZW50KGh0bWxF
bGVtZW50KSAmJiBTdHlsZWRFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxk
KSk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1hdGhNTEFubm90YXRp
b25FbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUs
IEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiByZWFzb24pCit7CisgICAgaWYgKG5hbWUgPT0g
TWF0aE1MTmFtZXM6OnNyY0F0dHIgfHwgbmFtZSA9PSBNYXRoTUxOYW1lczo6ZW5jb2RpbmdBdHRy
KSB7CisgICAgICAgIGF1dG8qIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgaWYg
KGlzPE1hdGhNTEVsZW1lbnQ+KHBhcmVudCkgJiYgcGFyZW50LT5oYXNUYWdOYW1lKHNlbWFudGlj
c1RhZykpCisgICAgICAgICAgICBkb3duY2FzdDxNYXRoTUxFbGVtZW50PigqcGFyZW50KS51cGRh
dGVTZWxlY3RlZENoaWxkKCk7CisgICAgfQorICAgIE1hdGhNTEVsZW1lbnQ6OmF0dHJpYnV0ZUNo
YW5nZWQobmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCByZWFzb24pOworfQorCit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUFUSE1MKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEFubm90YXRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MQW5u
b3RhdGlvbkVsZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODlmM2Q0M2QwMTY5MDA5ODQxNjNmZTYyMDI2
ZjAyYzA2YzgyYTY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEFubm90YXRpb25FbGVtZW50LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUgIk1h
dGhNTEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNYXRoTUxBbm5v
dGF0aW9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBNYXRoTUxFbGVtZW50IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPE1hdGhNTEFubm90YXRpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKK3ByaXZhdGU6CisgICAgTWF0aE1MQW5ub3Rh
dGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOworCisgICAgYm9vbCBpc1Nl
bWFudGljQW5ub3RhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29s
IGlzUHJlc2VudGF0aW9uTWF0aE1MKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisg
ICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUsIEF0
dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbikgb3ZlcnJpZGU7Cit9OworCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoTUFUSE1MKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCmlu
ZGV4IDllMDc1Y2VlMWI2Zjg1NjlhOTZkYTRjOTc5OGFlMDk5OGFhYmY1NTkuLmMzY2FhMDIwMzQx
NDI4OTRjNTlhODBlNWExYWM5MjBhYmM1ZjkyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MRWxlbWVudC5jcHAKQEAgLTI3OSw0MyArMjc5LDEwIEBAIHZvaWQgTWF0aE1MRWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hCiAKIGJvb2wgTWF0aE1MRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25z
dCBOb2RlJiBjaGlsZCkgY29uc3QKIHsKLSAgICBpZiAoaGFzVGFnTmFtZShhbm5vdGF0aW9uX3ht
bFRhZykpIHsKLSAgICAgICAgYXV0byYgdmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKE1hdGhNTE5hbWVzOjplbmNvZGluZ0F0dHIpOwotCi0gICAgICAgIC8vIFNlZSBhbm5v
dGF0aW9uLXhtbC5tb2RlbC5tYXRobWwsIGFubm90YXRpb24teG1sLm1vZGVsLnN2ZyBhbmQgYW5u
b3RhdGlvbi14bWwubW9kZWwueGh0bWwgaW4gdGhlIEhUTUw1IFJlbGF4Tkcgc2NoZW1hLgotCi0g
ICAgICAgIGlmIChpczxNYXRoTUxFbGVtZW50PihjaGlsZCkgJiYgKE1hdGhNTFNlbGVjdEVsZW1l
bnQ6OmlzTWF0aE1MRW5jb2RpbmcodmFsdWUpIHx8IE1hdGhNTFNlbGVjdEVsZW1lbnQ6OmlzSFRN
TEVuY29kaW5nKHZhbHVlKSkpIHsKLSAgICAgICAgICAgIGF1dG8mIG1hdGhtbEVsZW1lbnQgPSBk
b3duY2FzdDxNYXRoTUxFbGVtZW50PihjaGlsZCk7Ci0gICAgICAgICAgICByZXR1cm4gaXM8TWF0
aE1MTWF0aEVsZW1lbnQ+KG1hdGhtbEVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KGlzPFNWR0VsZW1lbnQ+KGNoaWxkKSAmJiAoTWF0aE1MU2VsZWN0RWxlbWVudDo6aXNTVkdFbmNv
ZGluZyh2YWx1ZSkgfHwgTWF0aE1MU2VsZWN0RWxlbWVudDo6aXNIVE1MRW5jb2RpbmcodmFsdWUp
KSkgewotICAgICAgICAgICAgYXV0byYgc3ZnRWxlbWVudCA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+
KGNoaWxkKTsKLSAgICAgICAgICAgIHJldHVybiBpczxTVkdTVkdFbGVtZW50PihzdmdFbGVtZW50
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oY2hpbGQpICYmIE1h
dGhNTFNlbGVjdEVsZW1lbnQ6OmlzSFRNTEVuY29kaW5nKHZhbHVlKSkgewotICAgICAgICAgICAg
YXV0byYgaHRtbEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4oY2hpbGQpOwotICAgICAg
ICAgICAgcmV0dXJuIGlzPEhUTUxIdG1sRWxlbWVudD4oaHRtbEVsZW1lbnQpIHx8IChpc0Zsb3dD
b250ZW50KGh0bWxFbGVtZW50KSAmJiBTdHlsZWRFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNoaWxkKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCiAgICAgLy8gSW4gZ2VuZXJhbCwgb25seSBNYXRoTUwgY2hpbGRyZW4gYXJlIGFsbG93ZWQu
IFRleHQgbm9kZXMgYXJlIG9ubHkgdmlzaWJsZSBpbiB0b2tlbiBNYXRoTUwgZWxlbWVudHMuCiAg
ICAgcmV0dXJuIGlzPE1hdGhNTEVsZW1lbnQ+KGNoaWxkKTsKIH0KIAotdm9pZCBNYXRoTUxFbGVt
ZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUsIEF0dHJp
YnV0ZU1vZGlmaWNhdGlvblJlYXNvbiByZWFzb24pCi17Ci0gICAgaWYgKGlzU2VtYW50aWNBbm5v
dGF0aW9uKCkgJiYgKG5hbWUgPT0gTWF0aE1MTmFtZXM6OnNyY0F0dHIgfHwgbmFtZSA9PSBNYXRo
TUxOYW1lczo6ZW5jb2RpbmdBdHRyKSkgewotICAgICAgICBhdXRvKiBwYXJlbnQgPSBwYXJlbnRF
bGVtZW50KCk7Ci0gICAgICAgIGlmIChpczxNYXRoTUxFbGVtZW50PihwYXJlbnQpICYmIHBhcmVu
dC0+aGFzVGFnTmFtZShzZW1hbnRpY3NUYWcpKQotICAgICAgICAgICAgZG93bmNhc3Q8TWF0aE1M
RWxlbWVudD4oKnBhcmVudCkudXBkYXRlU2VsZWN0ZWRDaGlsZCgpOwotICAgIH0KLSAgICBTdHls
ZWRFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSwgcmVh
c29uKTsKLX0KLQogYm9vbCBNYXRoTUxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2
ZW50cygpCiB7CiAgICAgcmV0dXJuIGlzTGluaygpIHx8IFN0eWxlZEVsZW1lbnQ6OndpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQu
aAppbmRleCA0Y2FiNzYxODYyNjYyZjZhOTllZTc4MjNjYWVjYzVmZjBhY2M1MTdhLi4yODVmNTFm
MzJjOWZiODg1OWZkMWE2NGRmZjVjNDU2MzczZGFjNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxFbGVtZW50LmgKQEAgLTQyLDE2ICs0Miw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBj
b2xTcGFuKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgcm93U3BhbigpIGNvbnN0OwogCi0gICAgYm9v
bCBpc01hdGhNTFRva2VuKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBoYXNUYWdOYW1l
KE1hdGhNTE5hbWVzOjptaVRhZykgfHwgaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bW5UYWcpIHx8
IGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1vVGFnKSB8fCBoYXNUYWdOYW1lKE1hdGhNTE5hbWVz
Ojptc1RhZykgfHwgaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXRleHRUYWcpOwotICAgIH0KLQot
ICAgIGJvb2wgaXNTZW1hbnRpY0Fubm90YXRpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6OmFubm90YXRpb25UYWcpIHx8IGhhc1RhZ05hbWUo
TWF0aE1MTmFtZXM6OmFubm90YXRpb25feG1sVGFnKTsKLSAgICB9Ci0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNNYXRoTUxUb2tlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzU2VtYW50aWNBbm5vdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25NYXRoTUwoKSBjb25zdDsKIAogICAgIGJvb2wgaGFz
VGFnTmFtZShjb25zdCBNYXRoTUxRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7IHJldHVybiBo
YXNMb2NhbE5hbWUobmFtZS5sb2NhbE5hbWUoKSk7IH0KQEAgLTk2LDEyICs4OCwxMyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBPcHRpb25hbDxib29sPiBzcGVjaWZpZWREaXNwbGF5U3R5bGUoKTsK
ICAgICBPcHRpb25hbDxNYXRoVmFyaWFudD4gc3BlY2lmaWVkTWF0aFZhcmlhbnQoKTsKIAorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENoaWxkKCkgeyB9CisgICAgCiBwcm90ZWN0ZWQ6
CiAgICAgTWF0aE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYpOwogCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNv
bikgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwpAQCAtMTIzLDcgKzExNiw2
IEBAIHByb3RlY3RlZDoKICAgICBPcHRpb25hbDxNYXRoVmFyaWFudD4gbV9tYXRoVmFyaWFudDsK
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIHsgfQog
ICAgIHN0YXRpYyBMZW5ndGggcGFyc2VOdW1iZXJBbmRVbml0KGNvbnN0IFN0cmluZ1ZpZXcmKTsK
ICAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlTmFtZWRTcGFjZShjb25zdCBTdHJpbmdWaWV3Jik7CiAg
ICAgc3RhdGljIE1hdGhWYXJpYW50IHBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUoY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKaW5kZXggMDA5ZDVmZjYwYjdm
MDFmMmEyYWQ4ZmYyMWNiMzFiZjA1MzgxNDNmZi4uMjk1ZjhmZjA0YWJkOTM4OTQyZDJlZDUxYWIy
Y2U0OWM5ODJhZmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5n
ZSYgY2hhbmdlKQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgaWYgKGhhc1RhZ05hbWUoYW5ub3RhdGlv
bl94bWxUYWcpIHx8IGhhc1RhZ05hbWUobWVycm9yVGFnKSB8fCBoYXNUYWdOYW1lKG1waGFudG9t
VGFnKSB8fCBoYXNUYWdOYW1lKG1yb3dUYWcpIHx8IGhhc1RhZ05hbWUobXN0eWxlVGFnKSkKKyAg
ICBpZiAoaGFzVGFnTmFtZShtZXJyb3JUYWcpIHx8IGhhc1RhZ05hbWUobXBoYW50b21UYWcpIHx8
IGhhc1RhZ05hbWUobXJvd1RhZykgfHwgaGFzVGFnTmFtZShtc3R5bGVUYWcpKQogICAgICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUm93PigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwogICAgIGlmIChoYXNUYWdOYW1lKG1zcXJ0VGFnKSB8fCBoYXNUYWdOYW1lKG1yb290VGFn
KSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFJvb3Q+KCp0aGlz
LCBXVEZNb3ZlKHN0eWxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MVGV4dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVt
ZW50LmNwcAppbmRleCAzNDlkZjQ4YmJjMzA0OThmOWNiM2FmZWJlNjdkNTc4NDQ3N2VhNGM1Li40
ZjRkY2Y4MWE4ZmEwYWNmNjExNDM1OTRlNWZkMWE3YWYwYTY0ZjU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKQEAgLTczLDExICs3Myw4IEBAIHZvaWQg
TWF0aE1MVGV4dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0CiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFt
ZSwgdmFsdWUpOwogfQogCi1SZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MVGV4dEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQorUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IE1hdGhNTFRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAoaGFzVGFnTmFt
ZShNYXRoTUxOYW1lczo6YW5ub3RhdGlvblRhZykpCi0gICAgICAgIHJldHVybiBNYXRoTUxFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0
aW9uKTsKLQogICAgIEFTU0VSVChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptaVRhZykgfHwgaGFz
VGFnTmFtZShNYXRoTUxOYW1lczo6bW5UYWcpIHx8IGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1z
VGFnKSB8fCBoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptdGV4dFRhZykpOwogCiAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFRva2VuPigqdGhpcywgV1RGTW92ZShzdHlsZSkp
OwpAQCAtODgsOSArODUsNiBAQCBib29sIE1hdGhNTFRleHRFbGVtZW50OjpjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgIGlmIChoYXNUYWdOYW1l
KE1hdGhNTE5hbWVzOjptc3BhY2VUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6YW5ub3RhdGlvblRhZykpCi0gICAgICAgIHJldHVy
biBjaGlsZC5pc1RleHROb2RlKCk7Ci0KICAgICAvLyBUaGUgSFRNTCBzcGVjaWZpY2F0aW9uIGRl
ZmluZXMgPG1pPiwgPG1vPiwgPG1uPiwgPG1zPiBhbmQgPG10ZXh0PiBhcyBpbnNlcnRpb24gcG9p
bnRzLgogICAgIHJldHVybiBpc1BocmFzaW5nQ29udGVudChjaGlsZCkgJiYgU3R5bGVkRWxlbWVu
dDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oCmluZGV4IDg0NDlkMjRmYmM2MTZhMjI1NjAwMGY4ZTE1
OTNlYzI1OThiNWIwMDguLjQyMWZmOWVkMDRiYzkyYzk2MDU2ZTJmZGY5YTg3YTA1ZWVlMjFkNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oCkBAIC00OCw2ICs0
OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIGZpbmFsOwog
CisgICAgYm9vbCBpc01hdGhNTFRva2VuKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIGJvb2wgaXNQcmVzZW50YXRpb25NYXRoTUwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4KaW5kZXggOGEwNzdjYTIwZDBiOTFi
OGM0NDE5MmNlODc0ZDJjMTA0NTA1ZjIxNy4uMDkzN2U0ZGU3ZTdmMzExN2ExYTBiNGE2OGUwMmE3
NTMwMzRkMjUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgpAQCAtMyw4ICszLDggQEAg
bmFtZXNwYWNlVVJJPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIgogZ3VhcmRG
YWN0b3J5V2l0aD0iRU5BQkxFKE1BVEhNTCkiCiBmYWxsYmFja0ludGVyZmFjZU5hbWU9Ik1hdGhN
TEVsZW1lbnQiCiAKLWFubm90YXRpb24gaW50ZXJmYWNlTmFtZT1NYXRoTUxUZXh0RWxlbWVudAot
YW5ub3RhdGlvbi14bWwgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
Cithbm5vdGF0aW9uIGludGVyZmFjZU5hbWU9TWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQKK2Fubm90
YXRpb24teG1sIGludGVyZmFjZU5hbWU9TWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQKIG1hY3Rpb24g
aW50ZXJmYWNlTmFtZT1NYXRoTUxTZWxlY3RFbGVtZW50CiBtYXRoCiBtZnJhYyBpbnRlcmZhY2VO
YW1lPU1hdGhNTEZyYWN0aW9uRWxlbWVudAo=
</data>
<flag name="review"
          id="308933"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286562</attachid>
            <date>2016-08-21 03:51:05 -0700</date>
            <delta_ts>2016-08-21 05:20:24 -0700</delta_ts>
            <desc>Final Patch</desc>
            <filename>0001-Bug-160540-Introduce-a-MathMLAnnotationElement-class.patch</filename>
            <type>text/plain</type>
            <size>25161</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSBhOWJjYjhiYjNlZTFkNWM2YzRiNTk5YzUxZmFhNGI1N2E4MjFlZWVmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogU3VuLCAyMSBBdWcgMjAxNiAxMjo0Njo0OCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEJ1ZyAx
NjA1NDAgLSBJbnRyb2R1Y2UgYSBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudCBjbGFzcyBmb3IKIHRo
ZSBhbm5vdGF0aW9uL2Fubm90YXRpb24teG1sIGVsZW1lbnRzCgotLS0KIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUxICsrKysrKysrKysK
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgICA4
ICsrCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MQWxsSW5PbmUuY3BwICAgICAgICAgICB8
ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQuY3Bw
ICB8IDEwOCArKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxBbm5vdGF0aW9uRWxlbWVudC5oICAgIHwgIDQ5ICsrKysrKysrKysKIFNvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCAgICAgICAgICAgIHwgIDMzIC0tLS0tLS0KIFNvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggICAgICAgICAgICAgIHwgIDE2ICstLQog
Li4uL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCAgICAgICAgfCAgIDIg
Ky0KIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAgICAgICAgIHwg
ICA4ICstCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuaCAgICAgICAg
ICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4gICAgICAgICAgICAg
ICAgICB8ICAgNCArLQogMTIgZmlsZXMgY2hhbmdlZCwgMjI3IGluc2VydGlvbnMoKyksIDU1IGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxBbm5vdGF0aW9uRWxlbWVudC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggYzU2MWFiNy4uNmFjYzczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwMDIsNiArMjAw
Miw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2FkZXIvaWNvbi9JY29uUmVjb3JkLmNw
cAogICAgIGxvYWRlci9pY29uL1BhZ2VVUkxSZWNvcmQuY3BwCiAKKyAgICBtYXRobWwvTWF0aE1M
QW5ub3RhdGlvbkVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCiAgICAg
bWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHAKICAgICBtYXRobWwvTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MDllNDljLi5mYTJjYTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTYtMDgtMjEgIEZyZWRlcmljIFdhbmcgIDxmd2Fu
Z0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBhIE1hdGhNTEFubm90YXRpb25FbGVt
ZW50IGNsYXNzIGZvciB0aGUgYW5ub3RhdGlvbi9hbm5vdGF0aW9uLXhtbCBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTQwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGhlIDxhbm5vdGF0aW9u
PiBlbGVtZW50IGNhbiBvbmx5IGNvbnRhaW4gdGV4dCB3aGVyZWFzIHRoZSA8YW5ub3RhdGlvbi14
bWw+IGVsZW1lbnQgY2FuCisgICAgICAgIGNvbnRhaW4gc29tZSBlbGVtZW50cyBhcyBkZXNjcmli
ZWQgaW4gdGhlIEhUTUw1IFJlbGF4Tkcgc2NoZW1hLiBGb3IgdGhpcyByZWFzb24sIHRoZXkgaGF2
ZQorICAgICAgICBiZWVuIGltcGxlbWVudGVkIGluIHRoZSBzZXBhcmF0ZSBNYXRoTUxUZXh0RWxl
bWVudCBhbmQgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorICAgICAgICByZXNwZWN0aXZl
bHkuIEhvd2V2ZXIsIHRoZXkgYXJlIGFjdHVhbGx5IGNsb3NlciB0byBlYWNoIG90aGVyIHRoYW4g
dG8gdG9rZW4gZWxlbWVudHMgb3IKKyAgICAgICAgcHJlc2VudGF0aW9uIGNvbnRhaW5lcnMuIElu
IHBhcnRpY3VsYXIgdGhleSBzdXBwb3J0IHZlcnkgZGlmZmVyZW50IGF0dHJpYnV0ZXMgYW5kIGFy
ZQorICAgICAgICBjb25zaWRlcmVkIGJ5IHRoZSA8c2VtYW50aWNzPiB0YWcuIEhlbmNlIHdlIG1v
dmUgdGhlaXIgaW1wbGVtZW50YXRpb25zIGluIGEgbmV3CisgICAgICAgIE1hdGhNTEFubm90YXRp
b24gY2xhc3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhbHJlYWR5IGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIE1hdGhNTEFubm90
YXRpb25FbGVtZW50LgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxBbGxJbk9uZS5jcHA6IERpdHRv
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisg
ICAgICAgICogbWF0aG1sL01hdGhNTEFubm90YXRpb25FbGVtZW50LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNYXRoTUxBbm5vdGF0aW9uRWxlbWVudDo6TWF0aE1MQW5ub3RhdGlvbkVs
ZW1lbnQpOiBBU1NFUlQgdGhhdCB0aGlzIGNsYXNzIGlzIG9ubHkKKyAgICAgICAgZm9yIGFubm90
YXRpb24gYW5kIGFubm90YXRpb24teG1sLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MQW5ub3Rh
dGlvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxBbm5vdGF0aW9u
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKTogTW92ZSBpbXBsZW1lbnRhdGlvbiBmcm9t
CisgICAgICAgIE1hdGhNTFRleHRFbGVtZW50IGFuZCBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50LgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQ6OmNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIpOiBNb3ZlIGltcGxlbWVudGF0aW9uIGZyb20KKyAgICAgICAgTWF0
aE1MVGV4dEVsZW1lbnQgYW5kIE1hdGhNTEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpNYXRo
TUxBbm5vdGF0aW9uRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6IE1vdmUgaW1wbGVtZW50YXRp
b24gZnJvbSBNYXRoTUxFbGVtZW50LgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxBbm5vdGF0aW9u
RWxlbWVudC5oOiBPdmVycmlkZSBpc1NlbWFudGljQW5ub3RhdGlvbiBhbmQgaXNQcmVzZW50YXRp
b25NYXRoTUwKKyAgICAgICAgdG8gcmV0dXJuIHRydWUuCisgICAgICAgICogbWF0aG1sL01hdGhN
TEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6Y2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcik6IE1vdmUgdGhlIGFubm90YXRpb24teG1sIGNhc2UgaW50bworICAg
ICAgICBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVs
ZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOiBEZWxldGVkLiBUaGlzIHdhcyBvbmx5IHVzZWQgZm9y
IHNlbWFudGljCisgICAgICAgIGFubm90YXRpb25zIGFuZCBzbyB0aGUgY29kZSBpcyBtb3ZlZCBp
bnRvIE1hdGhNTEFubm90YXRpb25FbGVtZW50LgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50Ojppc01hdGhNTFRva2VuKTog
UmV0dXJuIGZhbHNlIGFuZCBsZXQgZGVyaXZlZCBjbGFzcyBvdmVycmlkZSB0aGlzLgorICAgICAg
ICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6aXNTZW1hbnRpY0Fubm90YXRpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkQ2hpbGQpOiBN
YWtlIHRoaXMgcHVibGljIHNvIHRoYXQgaXMgY2FuIGJlIHVzZWQKKyAgICAgICAgYnkgTWF0aE1M
QW5ub3RhdGlvbkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQuCisgICAgICAgICogbWF0aG1sL01h
dGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKTogVGhlIGFubm90
YXRpb24teG1sIGNhc2UgaXMKKyAgICAgICAgbm93IGhhbmRsZWQgaW4gTWF0aE1MQW5ub3RhdGlv
bkVsZW1lbnQuCisgICAgICAgICogbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hdGhNTFRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOiBU
aGUgYW5ub3RhdGlvbiBjYXNlIGlzIGhhbmRsZWQgaXMgbm93CisgICAgICAgIGhhbmRsZWQgaW4g
IE1hdGhNTEFubm90YXRpb25FbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4dEVs
ZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOiBEaXR0by4KKyAgICAgICAgKiBtYXRo
bWwvTWF0aE1MVGV4dEVsZW1lbnQuaDogT3ZlcnJpZGUgaXNUb2tlbiB0byByZXR1cm4gdHJ1ZS4K
KyAgICAgICAgKiBtYXRobWwvbWF0aHRhZ3MuaW46IE1hcCBhbm5vdGF0aW9uIGFuZCBhbm5vdGF0
aW9uLXhtbCB0byBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudC4KKwogMjAxNi0wOC0yMCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTFi
OTgzMC4uOTk3Y2NiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNjcxNSw2ICs2NzE1LDggQEAKIAkJRkE2NTRBNkMxMTA4QUJF
RDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1M
VGV4dEVsZW1lbnQuaCAqLzsgfTsKIAkJRkE2NTRBNkMxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhN
TE9wZXJhdG9yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkE2NTRBNkExMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9wZXJhdG9yRWxlbWVu
dC5oICovOyB9OwogCQlGQTY1NEE2QzExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVy
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkE2NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCAqLzsg
fTsKKwkJRkFCRTcyRjQxMDU5QzFFQjAwRDg4OENDIC8qIE1hdGhNTEFubm90YXRpb25FbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3
MkVEMTA1OUMxRUIwMEQ4ODhDQyAvKiBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudC5jcHAgKi87IH07
CisJCUZBQkU3MkY1MTA1OUMxRUIwMEQ4ODhDQyAvKiBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFCRTcyRUUx
MDU5QzFFQjAwRDg4OENDIC8qIE1hdGhNTEFubm90YXRpb25FbGVtZW50LmggKi87IH07CiAJCUZB
QkU3MkY0MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkVEMTA1OUMxRUIwMEQ5OTlE
RCAvKiBNYXRoTUxFbGVtZW50LmNwcCAqLzsgfTsKIAkJRkFCRTcyRjUxMDU5QzFFQjAwRDk5OURE
IC8qIE1hdGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZBQkU3MkVFMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmggKi87
IH07CiAJCUZBQkU3MkY2MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZBQkU3MkVGMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcCAqLzsgfTsKQEAgLTE0NjkyLDYgKzE0Njk0LDggQEAKIAkJRkE2NTRBNkExMTA4QUJFRDAw
MjYxNkYxIC8qIE1hdGhNTE9wZXJhdG9yRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXRoTUxPcGVyYXRvckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkE2NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MVW5kZXJPdmVyRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTZFNDY2RkNEMDQxOEE5OTY2
QTVCNjAgLyogRE5TUmVzb2x2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEROU1Jlc29sdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUJF
NzJFRDEwNTlDMUVCMDBEODg4Q0MgLyogTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUJFNzJFRTEwNTlDMUVCMDBEODg4
Q0MgLyogTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkFCRTcyRUQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MRWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVFMTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRUYxMDU5QzFFQjAw
RDk5OUREIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDM0NCw2ICsyNDM0OCw4IEBACiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUZBNjU0QTY3MTEwOEFCRTIwMDI2
MTVFMCAvKiBtYXRoYXR0cnMuaW4gKi8sCisJCQkJRkFCRTcyRUQxMDU5QzFFQjAwRDg4OENDIC8q
IE1hdGhNTEFubm90YXRpb25FbGVtZW50LmNwcCAqLywKKwkJCQlGQUJFNzJFRTEwNTlDMUVCMDBE
ODg4Q0MgLyogTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQuaCAqLywKIAkJCQlGQUJFNzJFRDEwNTlD
MUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgKi8sCiAJCQkJRkFCRTcyRUUxMDU5QzFF
QjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuaCAqLywKIAkJCQkwQkNGODNFRjEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCAqLywKQEAgLTI2NzkxLDYgKzI2Nzk3
LDcgQEAKIAkJCQk5MzMwOURGODA5OUU2NDkyMDA1NkU1ODEgLyogbWFya3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTAwQzYwRTNGMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBU
b2tlbml6ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGQUJFNzJGNTEwNTlDMUVCMDBE
ODg4Q0MgLyogTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZB
QkU3MkY1MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCTBCQ0Y4M0Y3MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFj
dGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzA1OTksNiArMzA2MDYsNyBAQAogCQkJ
CTFBOEY2QkM1MERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5MzMwOURGNzA5OUU2NDkyMDA1NkU1ODEgLyogbWFya3VwLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3MjhDMzEzMTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQUJFNzJGNDEwNTlDMUVCMDBEODg4Q0MgLyogTWF0
aE1MQW5ub3RhdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRjQxMDU5
QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFC
RTcyRkQxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBCQ0Y4M0Y2MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEFsbElu
T25lLmNwcAppbmRleCBlODExMDlhLi4yZDY4MWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxBbGxJbk9uZS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogLy8gVGhpcyBhbGwtaW4tb25l
IGNwcCBmaWxlIGN1dHMgZG93biBvbiB0ZW1wbGF0ZSBibG9hdCB0byBhbGxvdyB1cyB0byBidWls
ZCBvdXIgV2luZG93cyByZWxlYXNlIGJ1aWxkLgogCisjaW5jbHVkZSAiTWF0aE1MQW5ub3RhdGlv
bkVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIk1h
dGhNTEZyYWN0aW9uRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MQW5u
b3RhdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEFubm90YXRp
b25FbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTUxMzFk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEFubm90YXRp
b25FbGVtZW50LmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAi
TWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5o
IgorI2luY2x1ZGUgIk1hdGhNTE1hdGhFbGVtZW50LmgiCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJNYXRoTUxTZWxlY3RFbGVtZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0
aE1MUm93LmgiCisjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworTWF0aE1MQW5ub3RhdGlvbkVs
ZW1lbnQ6Ok1hdGhNTEFubm90YXRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IE1hdGhNTEVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpCit7CisgICAgQVNTRVJUKGhhc1RhZ05hbWUoYW5ub3RhdGlvblRhZykgfHwgaGFzVGFn
TmFtZShhbm5vdGF0aW9uX3htbFRhZykpOworfQorCitSZWY8TWF0aE1MQW5ub3RhdGlvbkVsZW1l
bnQ+IE1hdGhNTEFubm90YXRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1hdGhNTEFubm90YXRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Cit9CisKK1JlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYg
aW5zZXJ0aW9uUG9zaXRpb24pCit7CisgICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6OmFu
bm90YXRpb25UYWcpKQorICAgICAgICByZXR1cm4gTWF0aE1MRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFdURk1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CisKKyAgICAvLyBG
SVhNRTogRG8gd2UgcmVhbGx5IG5lZWQgdG8gY3JlYXRlIGEgUmVuZGVyTWF0aE1MUm93PworICAg
IEFTU0VSVChoYXNUYWdOYW1lKGFubm90YXRpb25feG1sVGFnKSk7CisgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFJvdz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKK30KKwor
Ym9vbCBNYXRoTUxBbm5vdGF0aW9uRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihj
b25zdCBOb2RlJiBjaGlsZCkgY29uc3QKK3sKKyAgICAvLyBGb3IgPGFubm90YXRpb24+LCBvbmx5
IHRleHQgY2hpbGRyZW4gYXJlIGFsbG93ZWQuCisgICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1MTmFt
ZXM6OmFubm90YXRpb25UYWcpKQorICAgICAgICByZXR1cm4gY2hpbGQuaXNUZXh0Tm9kZSgpOwor
CisgICAgLy8gRm9yIDxhbm5vdGF0aW9uLXhtbD4sIHdlIGZvbGxvdyB0aGVzZSBkZWZpbml0aW9u
cyBmcm9tIHRoZSBIVE1MNSBSZWxheE5HIHNjaGVtYToKKyAgICAvLyAtIGFubm90YXRpb24teG1s
Lm1vZGVsLm1hdGhtbAorICAgIC8vIC0gYW5ub3RhdGlvbi14bWwubW9kZWwuc3ZnCisgICAgLy8g
LSBhbm5vdGF0aW9uLXhtbC5tb2RlbC54aHRtbAorCisgICAgQVNTRVJUKGhhc1RhZ05hbWUoYW5u
b3RhdGlvbl94bWxUYWcpKTsKKyAgICBhdXRvJiB2YWx1ZSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oZW5jb2RpbmdBdHRyKTsKKworICAgIGlmIChpczxNYXRoTUxFbGVtZW50Pihj
aGlsZCkgJiYgKE1hdGhNTFNlbGVjdEVsZW1lbnQ6OmlzTWF0aE1MRW5jb2RpbmcodmFsdWUpIHx8
IE1hdGhNTFNlbGVjdEVsZW1lbnQ6OmlzSFRNTEVuY29kaW5nKHZhbHVlKSkpIHsKKyAgICAgICAg
YXV0byYgbWF0aG1sRWxlbWVudCA9IGRvd25jYXN0PE1hdGhNTEVsZW1lbnQ+KGNoaWxkKTsKKyAg
ICAgICAgcmV0dXJuIGlzPE1hdGhNTE1hdGhFbGVtZW50PihtYXRobWxFbGVtZW50KTsKKyAgICB9
CisKKyAgICBpZiAoaXM8U1ZHRWxlbWVudD4oY2hpbGQpICYmIChNYXRoTUxTZWxlY3RFbGVtZW50
Ojppc1NWR0VuY29kaW5nKHZhbHVlKSB8fCBNYXRoTUxTZWxlY3RFbGVtZW50Ojppc0hUTUxFbmNv
ZGluZyh2YWx1ZSkpKSB7CisgICAgICAgIGF1dG8mIHN2Z0VsZW1lbnQgPSBkb3duY2FzdDxTVkdF
bGVtZW50PihjaGlsZCk7CisgICAgICAgIHJldHVybiBpczxTVkdTVkdFbGVtZW50PihzdmdFbGVt
ZW50KTsKKyAgICB9CisKKyAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KGNoaWxkKSAmJiBNYXRoTUxT
ZWxlY3RFbGVtZW50Ojppc0hUTUxFbmNvZGluZyh2YWx1ZSkpIHsKKyAgICAgICAgYXV0byYgaHRt
bEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4oY2hpbGQpOworICAgICAgICByZXR1cm4g
aXM8SFRNTEh0bWxFbGVtZW50PihodG1sRWxlbWVudCkgfHwgKGlzRmxvd0NvbnRlbnQoaHRtbEVs
ZW1lbnQpICYmIFN0eWxlZEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWF0aE1MQW5ub3RhdGlv
bkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwg
QXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uIHJlYXNvbikKK3sKKyAgICBpZiAobmFtZSA9PSBN
YXRoTUxOYW1lczo6c3JjQXR0ciB8fCBuYW1lID09IE1hdGhNTE5hbWVzOjplbmNvZGluZ0F0dHIp
IHsKKyAgICAgICAgYXV0byogcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOworICAgICAgICBpZiAo
aXM8TWF0aE1MRWxlbWVudD4ocGFyZW50KSAmJiBwYXJlbnQtPmhhc1RhZ05hbWUoc2VtYW50aWNz
VGFnKSkKKyAgICAgICAgICAgIGRvd25jYXN0PE1hdGhNTEVsZW1lbnQ+KCpwYXJlbnQpLnVwZGF0
ZVNlbGVjdGVkQ2hpbGQoKTsKKyAgICB9CisgICAgTWF0aE1MRWxlbWVudDo6YXR0cmlidXRlQ2hh
bmdlZChuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHJlYXNvbik7Cit9CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShNQVRITUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MQW5ub3RhdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxBbm5v
dGF0aW9uRWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYzIw
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MQW5ub3Rh
dGlvbkVsZW1lbnQuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAiTWF0aE1MRWxlbWVu
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1hdGhNTEFubm90YXRpb25FbGVt
ZW50IGZpbmFsIDogcHVibGljIE1hdGhNTEVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8TWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYpOworcHJpdmF0ZToKKyAgICBNYXRoTUxBbm5vdGF0aW9uRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOworICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CisKKyAgICBib29sIGlzU2VtYW50aWNBbm5v
dGF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNQcmVzZW50
YXRpb25NYXRoTUwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBib29sIGNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9k
aWZpY2F0aW9uUmVhc29uKSBmaW5hbDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNQVRI
TUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggOWUwNzVjZS4u
YzNjYWEwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKQEAgLTI3
OSw0MyArMjc5LDEwIEBAIHZvaWQgTWF0aE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hCiAKIGJvb2wgTWF0aE1MRWxl
bWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QK
IHsKLSAgICBpZiAoaGFzVGFnTmFtZShhbm5vdGF0aW9uX3htbFRhZykpIHsKLSAgICAgICAgYXV0
byYgdmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKE1hdGhNTE5hbWVzOjpl
bmNvZGluZ0F0dHIpOwotCi0gICAgICAgIC8vIFNlZSBhbm5vdGF0aW9uLXhtbC5tb2RlbC5tYXRo
bWwsIGFubm90YXRpb24teG1sLm1vZGVsLnN2ZyBhbmQgYW5ub3RhdGlvbi14bWwubW9kZWwueGh0
bWwgaW4gdGhlIEhUTUw1IFJlbGF4Tkcgc2NoZW1hLgotCi0gICAgICAgIGlmIChpczxNYXRoTUxF
bGVtZW50PihjaGlsZCkgJiYgKE1hdGhNTFNlbGVjdEVsZW1lbnQ6OmlzTWF0aE1MRW5jb2Rpbmco
dmFsdWUpIHx8IE1hdGhNTFNlbGVjdEVsZW1lbnQ6OmlzSFRNTEVuY29kaW5nKHZhbHVlKSkpIHsK
LSAgICAgICAgICAgIGF1dG8mIG1hdGhtbEVsZW1lbnQgPSBkb3duY2FzdDxNYXRoTUxFbGVtZW50
PihjaGlsZCk7Ci0gICAgICAgICAgICByZXR1cm4gaXM8TWF0aE1MTWF0aEVsZW1lbnQ+KG1hdGht
bEVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KGNoaWxk
KSAmJiAoTWF0aE1MU2VsZWN0RWxlbWVudDo6aXNTVkdFbmNvZGluZyh2YWx1ZSkgfHwgTWF0aE1M
U2VsZWN0RWxlbWVudDo6aXNIVE1MRW5jb2RpbmcodmFsdWUpKSkgewotICAgICAgICAgICAgYXV0
byYgc3ZnRWxlbWVudCA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+KGNoaWxkKTsKLSAgICAgICAgICAg
IHJldHVybiBpczxTVkdTVkdFbGVtZW50PihzdmdFbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChpczxIVE1MRWxlbWVudD4oY2hpbGQpICYmIE1hdGhNTFNlbGVjdEVsZW1lbnQ6Omlz
SFRNTEVuY29kaW5nKHZhbHVlKSkgewotICAgICAgICAgICAgYXV0byYgaHRtbEVsZW1lbnQgPSBk
b3duY2FzdDxIVE1MRWxlbWVudD4oY2hpbGQpOwotICAgICAgICAgICAgcmV0dXJuIGlzPEhUTUxI
dG1sRWxlbWVudD4oaHRtbEVsZW1lbnQpIHx8IChpc0Zsb3dDb250ZW50KGh0bWxFbGVtZW50KSAm
JiBTdHlsZWRFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgLy8gSW4gZ2VuZXJh
bCwgb25seSBNYXRoTUwgY2hpbGRyZW4gYXJlIGFsbG93ZWQuIFRleHQgbm9kZXMgYXJlIG9ubHkg
dmlzaWJsZSBpbiB0b2tlbiBNYXRoTUwgZWxlbWVudHMuCiAgICAgcmV0dXJuIGlzPE1hdGhNTEVs
ZW1lbnQ+KGNoaWxkKTsKIH0KIAotdm9pZCBNYXRoTUxFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNv
biByZWFzb24pCi17Ci0gICAgaWYgKGlzU2VtYW50aWNBbm5vdGF0aW9uKCkgJiYgKG5hbWUgPT0g
TWF0aE1MTmFtZXM6OnNyY0F0dHIgfHwgbmFtZSA9PSBNYXRoTUxOYW1lczo6ZW5jb2RpbmdBdHRy
KSkgewotICAgICAgICBhdXRvKiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgIGlm
IChpczxNYXRoTUxFbGVtZW50PihwYXJlbnQpICYmIHBhcmVudC0+aGFzVGFnTmFtZShzZW1hbnRp
Y3NUYWcpKQotICAgICAgICAgICAgZG93bmNhc3Q8TWF0aE1MRWxlbWVudD4oKnBhcmVudCkudXBk
YXRlU2VsZWN0ZWRDaGlsZCgpOwotICAgIH0KLSAgICBTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVD
aGFuZ2VkKG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSwgcmVhc29uKTsKLX0KLQogYm9vbCBNYXRo
TUxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CiAgICAgcmV0dXJu
IGlzTGluaygpIHx8IFN0eWxlZEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCA0Y2FiNzYxLi4yNzEz
Nzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAgLTQyLDE2ICs0Miw4
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBjb2xTcGFuKCkgY29uc3Q7CiAgICAgdW5zaWduZWQg
cm93U3BhbigpIGNvbnN0OwogCi0gICAgYm9vbCBpc01hdGhNTFRva2VuKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptaVRhZykgfHwgaGFzVGFn
TmFtZShNYXRoTUxOYW1lczo6bW5UYWcpIHx8IGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1vVGFn
KSB8fCBoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptc1RhZykgfHwgaGFzVGFnTmFtZShNYXRoTUxO
YW1lczo6bXRleHRUYWcpOwotICAgIH0KLQotICAgIGJvb2wgaXNTZW1hbnRpY0Fubm90YXRpb24o
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6OmFu
bm90YXRpb25UYWcpIHx8IGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6OmFubm90YXRpb25feG1sVGFn
KTsKLSAgICB9Ci0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTUxUb2tlbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2VtYW50aWNBbm5vdGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25NYXRo
TUwoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzVGFnTmFtZShjb25zdCBNYXRoTUxRdWFsaWZpZWRO
YW1lJiBuYW1lKSBjb25zdCB7IHJldHVybiBoYXNMb2NhbE5hbWUobmFtZS5sb2NhbE5hbWUoKSk7
IH0KQEAgLTk2LDEyICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBPcHRpb25hbDxib29s
PiBzcGVjaWZpZWREaXNwbGF5U3R5bGUoKTsKICAgICBPcHRpb25hbDxNYXRoVmFyaWFudD4gc3Bl
Y2lmaWVkTWF0aFZhcmlhbnQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENo
aWxkKCkgeyB9CisKIHByb3RlY3RlZDoKICAgICBNYXRoTUxFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICBi
b29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0
cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3Zl
cnJpZGU7CkBAIC0xMjMsNyArMTE2LDYgQEAgcHJvdGVjdGVkOgogICAgIE9wdGlvbmFsPE1hdGhW
YXJpYW50PiBtX21hdGhWYXJpYW50OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTZWxlY3RlZENoaWxkKCkgeyB9CiAgICAgc3RhdGljIExlbmd0aCBwYXJzZU51bWJlckFuZFVu
aXQoY29uc3QgU3RyaW5nVmlldyYpOwogICAgIHN0YXRpYyBMZW5ndGggcGFyc2VOYW1lZFNwYWNl
KGNvbnN0IFN0cmluZ1ZpZXcmKTsKICAgICBzdGF0aWMgTWF0aFZhcmlhbnQgcGFyc2VNYXRoVmFy
aWFudEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcAppbmRleCAwMDlkNWZmLi4yOTVmOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIHZvaWQgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICBpZiAoaGFzVGFn
TmFtZShhbm5vdGF0aW9uX3htbFRhZykgfHwgaGFzVGFnTmFtZShtZXJyb3JUYWcpIHx8IGhhc1Rh
Z05hbWUobXBoYW50b21UYWcpIHx8IGhhc1RhZ05hbWUobXJvd1RhZykgfHwgaGFzVGFnTmFtZSht
c3R5bGVUYWcpKQorICAgIGlmIChoYXNUYWdOYW1lKG1lcnJvclRhZykgfHwgaGFzVGFnTmFtZSht
cGhhbnRvbVRhZykgfHwgaGFzVGFnTmFtZShtcm93VGFnKSB8fCBoYXNUYWdOYW1lKG1zdHlsZVRh
ZykpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxSb3c+KCp0aGlz
LCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgaWYgKGhhc1RhZ05hbWUobXNxcnRUYWcpIHx8IGhhc1Rh
Z05hbWUobXJvb3RUYWcpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0
aE1MUm9vdD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MVGV4dEVsZW1lbnQuY3BwCmluZGV4IDM0OWRmNDguLjRmNGRjZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcApAQCAtNzMsMTEgKzczLDggQEAg
dm9pZCBNYXRoTUxUZXh0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLVJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxUZXh0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCitSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gTWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIGlmIChoYXNU
YWdOYW1lKE1hdGhNTE5hbWVzOjphbm5vdGF0aW9uVGFnKSkKLSAgICAgICAgcmV0dXJuIE1hdGhN
TEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9u
UG9zaXRpb24pOwotCiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1pVGFnKSB8
fCBoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptblRhZykgfHwgaGFzVGFnTmFtZShNYXRoTUxOYW1l
czo6bXNUYWcpIHx8IGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om10ZXh0VGFnKSk7CiAKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MVG9rZW4+KCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CkBAIC04OCw5ICs4NSw2IEBAIGJvb2wgTWF0aE1MVGV4dEVsZW1lbnQ6OmNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CiAgICAgaWYgKGhhc1Rh
Z05hbWUoTWF0aE1MTmFtZXM6Om1zcGFjZVRhZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmIChoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjphbm5vdGF0aW9uVGFnKSkKLSAgICAgICAg
cmV0dXJuIGNoaWxkLmlzVGV4dE5vZGUoKTsKLQogICAgIC8vIFRoZSBIVE1MIHNwZWNpZmljYXRp
b24gZGVmaW5lcyA8bWk+LCA8bW8+LCA8bW4+LCA8bXM+IGFuZCA8bXRleHQ+IGFzIGluc2VydGlv
biBwb2ludHMuCiAgICAgcmV0dXJuIGlzUGhyYXNpbmdDb250ZW50KGNoaWxkKSAmJiBTdHlsZWRF
bGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgKaW5kZXggODQ0OWQyNC4uNDIxZmY5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgZmluYWw7CiAKKyAg
ICBib29sIGlzTWF0aE1MVG9rZW4oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAg
Ym9vbCBpc1ByZXNlbnRhdGlvbk1hdGhNTCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbiBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgppbmRleCA4YTA3N2NhLi4wOTM3ZTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCkBAIC0zLDggKzMsOCBAQCBuYW1lc3BhY2VVUkk9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiCiBndWFyZEZhY3RvcnlXaXRoPSJF
TkFCTEUoTUFUSE1MKSIKIGZhbGxiYWNrSW50ZXJmYWNlTmFtZT0iTWF0aE1MRWxlbWVudCIKIAot
YW5ub3RhdGlvbiBpbnRlcmZhY2VOYW1lPU1hdGhNTFRleHRFbGVtZW50Ci1hbm5vdGF0aW9uLXht
bCBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKK2Fubm90YXRpb24g
aW50ZXJmYWNlTmFtZT1NYXRoTUxBbm5vdGF0aW9uRWxlbWVudAorYW5ub3RhdGlvbi14bWwgaW50
ZXJmYWNlTmFtZT1NYXRoTUxBbm5vdGF0aW9uRWxlbWVudAogbWFjdGlvbiBpbnRlcmZhY2VOYW1l
PU1hdGhNTFNlbGVjdEVsZW1lbnQKIG1hdGgKIG1mcmFjIGludGVyZmFjZU5hbWU9TWF0aE1MRnJh
Y3Rpb25FbGVtZW50Ci0tIAoyLjguMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>