<?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>196593</bug_id>
          
          <creation_ts>2019-04-04 01:20:31 -0700</creation_ts>
          <short_desc>[ATK] Use a smart pointer for AccessibilityObject wrapper and remove GTK specific code</short_desc>
          <delta_ts>2019-04-05 00:35:30 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1524177</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-04 01:20:31 -0700</bug_when>
    <thetext>We have specific code for GTK to get/set the wrapper only because we don&apos;t use smart pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524179</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-04 01:20:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/49599153&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524180</commentid>
    <comment_count>2</comment_count>
      <attachid>366703</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-04 01:24:33 -0700</bug_when>
    <thetext>Created attachment 366703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524236</commentid>
    <comment_count>3</comment_count>
      <attachid>366703</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-04-04 08:41:42 -0700</bug_when>
    <thetext>Comment on attachment 366703
Patch

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

&gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:324
&gt;              return 0;

return nullptr;

&gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:350
&gt; +    return coreParent ? ATK_OBJECT(coreParent-&gt;wrapper()) : nullptr;

Two more opportunities to return nullptr up above, as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524632</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-05 00:34:56 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #3)
&gt; Comment on attachment 366703 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=366703&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:324
&gt; &gt;              return 0;
&gt; 
&gt; return nullptr;
&gt; 
&gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:350
&gt; &gt; +    return coreParent ? ATK_OBJECT(coreParent-&gt;wrapper()) : nullptr;
&gt; 
&gt; Two more opportunities to return nullptr up above, as well.

WebKitAccessibleWrapperAtk is cleaned up in bug #196601</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524633</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-05 00:35:30 -0700</bug_when>
    <thetext>Committed r243928: &lt;https://trac.webkit.org/changeset/243928&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366703</attachid>
            <date>2019-04-04 01:24:33 -0700</date>
            <delta_ts>2019-04-04 08:41:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atk-wrapper.diff</filename>
            <type>text/plain</type>
            <size>34443</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4YTM4OWJkNDNmOC4uMDYyYWZjNTU4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxOS0wNC0wNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0FUS10gVXNlIGEgc21hcnQgcG9pbnRlciBmb3IgQWNjZXNz
aWJpbGl0eU9iamVjdCB3cmFwcGVyIGFuZCByZW1vdmUgR1RLIHNwZWNpZmljIGNvZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjU5MworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDk1OTkxNTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2UgaGF2ZSBzcGVjaWZpYyBjb2RlIGZvciBHVEsgdG8gZ2V0
L3NldCB0aGUgd3JhcHBlciBvbmx5IGJlY2F1c2Ugd2UgZG9uJ3QgdXNlIHNtYXJ0IHBvaW50ZXJz
LiBBbHNvIHVzZQorICAgICAgICBXZWJLaXRBY2Nlc3NpYmxlIGFzIEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIGluc3RlYWQgb2YgZ2VuZXJpYyBBdGtPYmplY3QsIHRvIGVuZm9yY2Ugd3JhcHBl
cnMgdG8gYmUKKyAgICAgICAgV2ViS2l0QWNjZXNzaWJsZSBpbnN0YW5jZXMuIFRoaXMgcmVxdWly
ZXMgYSBmZXcgY2FzdHMgdG8gQXRrT2JqZWN0LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzZXRXcmFwcGVyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENh
Y2hlQXRrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmRldGFjaFdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpub3RpZnlDaGlsZHJlblNlbGVjdGlvbkNoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlm
aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdF
dmVudFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OnBsYXRmb3JtSGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3BwOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VDb21wb25lbnQuY3BwOgor
ICAgICAgICAod2Via2l0QWNjZXNzaWJsZUNvbXBvbmVudFJlZkFjY2Vzc2libGVBdFBvaW50KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSHlw
ZXJ0ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXRMaW5rKToK
KyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXROTGlua3MpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3Bw
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVNlbGVjdGlvblJlZlNlbGVjdGlvbik6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNw
cDoKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZVJlZkF0KToKKyAgICAgICAgKHdlYmtp
dEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkhlYWRlcik6CisgICAgICAgICh3ZWJraXRBY2Nlc3Np
YmxlVGFibGVHZXRSb3dIZWFkZXIpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0
Q2FwdGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChjb252ZXJ0VG9HUHRyQXJyYXkpOgorICAg
ICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldFRhYmxlKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CisgICAgICAg
IChhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6CisgICAgICAgIChzZXRBdGtSZWxhdGlv
blNldEZyb21Db3JlT2JqZWN0KToKKyAgICAgICAgKGF0a1BhcmVudE9mUm9vdE9iamVjdCk6Cisg
ICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0UGFyZW50KToKKyAgICAgICAgKHdlYmtpdEFjY2Vz
c2libGVSZWZDaGlsZCk6CisgICAgICAgIChpc1RleHRXaXRoQ2FyZXQpOgorICAgICAgICAqIGVk
aXRpbmcvYXRrL0ZyYW1lU2VsZWN0aW9uQXRrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVtaXRU
ZXh0U2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Om1heWJlRW1pdFRleHRGb2N1
c0NoYW5nZSk6CisKIDIwMTktMDQtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtBVEtdIFdyb25nIGluZGV4IHBhc3NlZCB0byBBdGtPYmpl
Y3Q6OmNoaWxkcmVuLWNoYW5nZWQ6OmFkZCBzaWduYWwgaW4gQVhPYmplY3RDYWNoZTo6YXR0YWNo
V3JhcHBlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCmluZGV4IDAwM2EwNDkyMTljLi5jZDk2OTY4Mjk0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTQ3
LDYgKzQ3LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShHVEspCisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2VuZGlmCisKICNp
ZiBQTEFURk9STShDT0NPQSkKIAogdHlwZWRlZiBzdHJ1Y3QgX05TUmFuZ2UgTlNSYW5nZTsKQEAg
LTkzNCwyMCArOTM4LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlzQVhIaWRkZW4oKSBjb25zdDsK
ICAgICBib29sIGlzRE9NSGlkZGVuKCkgY29uc3Q7CiAgICAgYm9vbCBpc0hpZGRlbigpIGNvbnN0
IHsgcmV0dXJuIGlzQVhIaWRkZW4oKSB8fCBpc0RPTUhpZGRlbigpOyB9Ci0gICAgCisKICNpZiBI
QVZFKEFDQ0VTU0lCSUxJVFkpCi0jaWYgUExBVEZPUk0oR1RLKQotICAgIEFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRXcmFw
cGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKik7Ci0jZWxzZQogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93cmFw
cGVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyKiB3cmFwcGVyKSAKLSAgICB7Ci0gICAgICAgIG1fd3JhcHBlciA9IHdyYXBwZXI7Ci0gICAg
fQorICAgIHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBl
cikgeyBtX3dyYXBwZXIgPSB3cmFwcGVyOyB9CiAjZW5kaWYKLSNlbmRpZgotICAgIAorCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNz
aWJpbGl0eU9iamVjdCogcGFyZW50KTsKICNlbHNlCkBAIC0xMDUwLDcgKzEwNDYsNyBAQCBwcm90
ZWN0ZWQ6CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgQ09NUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyPiBtX3dyYXBwZXI7CiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgQXRrT2JqZWN0
KiBtX3dyYXBwZXIgeyBudWxscHRyIH07CisgICAgR1JlZlB0cjxXZWJLaXRBY2Nlc3NpYmxlPiBt
X3dyYXBwZXI7CiAjZWxpZiBQTEFURk9STShXUEUpCiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyPiBtX3dyYXBwZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5k
ZXggMzViZjUyMDZmODAuLjcxZmE4ZjA4MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAt
MzcsOCArMzcsOCBAQAogT0JKQ19DTEFTUyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjsK
IHR5cGVkZWYgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI7CiAjZWxpZiBQTEFURk9STShHVEspCi10eXBlZGVmIHN0cnVjdCBfQXRrT2JqZWN0
IEF0a09iamVjdDsKLXR5cGVkZWYgc3RydWN0IF9BdGtPYmplY3QgQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0QWNjZXNzaWJsZSBXZWJLaXRBY2Nlc3Np
YmxlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2libGUgQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI7CiAjZWxpZiBQTEFURk9STShXUEUpCiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiB7
IH07CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
QVhPYmplY3RDYWNoZUF0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9B
WE9iamVjdENhY2hlQXRrLmNwcAppbmRleCAzYWMwMjI4NjA2MC4uYmIxODNkMTYyZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVB
dGsuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBBWE9i
amVjdENhY2hlOjpkZXRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgQWNjZXNz
aWJpbGl0eURldGFjaG1lbnRUeXBlIGRldGFjaG1lbnRUeXBlKQogewotICAgIEF0a09iamVjdCog
d3JhcHBlciA9IG9iai0+d3JhcHBlcigpOworICAgIGF1dG8qIHdyYXBwZXIgPSBvYmotPndyYXBw
ZXIoKTsKICAgICBBU1NFUlQod3JhcHBlcik7CiAKICAgICAvLyBJZiBhbiBvYmplY3QgaXMgYmVp
bmcgZGV0YWNoZWQgTk9UIGJlY2F1c2Ugb2YgdGhlIEFYT2JqZWN0Q2FjaGUgYmVpbmcgZGVzdHJv
eWVkLApAQCAtNjYsOSArNjYsOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRldGFjaFdyYXBwZXIo
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBY2Nlc3NpYmlsaXR5RGV0YWNobQogCiB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQogewot
ICAgIEF0a09iamVjdCogYXRrT2JqID0gQVRLX09CSkVDVCh3ZWJraXRBY2Nlc3NpYmxlTmV3KG9i
aikpOwotICAgIG9iai0+c2V0V3JhcHBlcihhdGtPYmopOwotICAgIGdfb2JqZWN0X3VucmVmKGF0
a09iaik7CisgICAgR1JlZlB0cjxXZWJLaXRBY2Nlc3NpYmxlPiB3cmFwcGVyID0gYWRvcHRHUmVm
KHdlYmtpdEFjY2Vzc2libGVOZXcob2JqKSk7CisgICAgb2JqLT5zZXRXcmFwcGVyKHdyYXBwZXIu
Z2V0KCkpOwogCiAgICAgLy8gSWYgYW4gb2JqZWN0IGlzIGJlaW5nIGF0dGFjaGVkIGFuZCB3ZSBh
cmUgbm90IGluIHRoZSBtaWRkbGUgb2YgYSBsYXlvdXQgdXBkYXRlLCB0aGVuCiAgICAgLy8gd2Ug
c2hvdWxkIHJlcG9ydCBBVHMgYnkgZW1pdHRpbmcgdGhlIGNoaWxkcmVuLWNoYW5nZWQ6OmFkZCBz
aWduYWwgZnJvbSB0aGUgcGFyZW50LgpAQCAtOTQsMTIgKzkzLDEyIEBAIHZvaWQgQVhPYmplY3RD
YWNoZTo6YXR0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIExvb2sgZm9yIHRoZSByaWdodCBvYmplY3QgdG8gZW1pdCB0aGUgc2ln
bmFsIGZyb20uCi0gICAgQXRrT2JqZWN0KiBhdGtQYXJlbnQgPSBjb3JlUGFyZW50LT53cmFwcGVy
KCk7CisgICAgYXV0byogYXRrUGFyZW50ID0gY29yZVBhcmVudC0+d3JhcHBlcigpOwogICAgIGlm
ICghYXRrUGFyZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBzaXplX3QgaW5kZXggPSBjb3Jl
UGFyZW50LT5jaGlsZHJlbihmYWxzZSkuZmluZChvYmopOwotICAgIGdfc2lnbmFsX2VtaXRfYnlf
bmFtZShhdGtQYXJlbnQsICJjaGlsZHJlbi1jaGFuZ2VkOjphZGQiLCBpbmRleCAhPSBub3RGb3Vu
ZCA/IGluZGV4IDogLTEsIGF0a09iaik7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF0a1Bh
cmVudCwgImNoaWxkcmVuLWNoYW5nZWQ6OmFkZCIsIGluZGV4ICE9IG5vdEZvdW5kID8gaW5kZXgg
OiAtMSwgd3JhcHBlci5nZXQoKSk7CiB9CiAKIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBn
ZXRMaXN0T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKQEAgLTE2OCwyNCArMTY3
LDI0IEBAIHN0YXRpYyB2b2lkIG5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdlKEFjY2Vzc2li
aWxpdHlPYmplY3QqIG9iamVjdCkKICAgICBpZiAob2xkTGlzdE9iamVjdC5nZXQoKSAhPSBsaXN0
T2JqZWN0KQogICAgICAgICBvbGRGb2N1c2VkT2JqZWN0LmdldCgpID0gbnVsbHB0cjsKIAotICAg
IEF0a09iamVjdCogYXhJdGVtID0gaXRlbSA/IGl0ZW0tPndyYXBwZXIoKSA6IG51bGxwdHI7Ci0g
ICAgQXRrT2JqZWN0KiBheE9sZEZvY3VzZWRPYmplY3QgPSBvbGRGb2N1c2VkT2JqZWN0LmdldCgp
ID8gb2xkRm9jdXNlZE9iamVjdC5nZXQoKS0+d3JhcHBlcigpIDogbnVsbHB0cjsKKyAgICBXZWJL
aXRBY2Nlc3NpYmxlKiBheEl0ZW0gPSBpdGVtID8gaXRlbS0+d3JhcHBlcigpIDogbnVsbHB0cjsK
KyAgICBXZWJLaXRBY2Nlc3NpYmxlKiBheE9sZEZvY3VzZWRPYmplY3QgPSBvbGRGb2N1c2VkT2Jq
ZWN0LmdldCgpID8gb2xkRm9jdXNlZE9iamVjdC5nZXQoKS0+d3JhcHBlcigpIDogbnVsbHB0cjsK
IAogICAgIC8vIE9sZCBmb2N1c2VkIG9iamVjdCBqdXN0IGxvc3QgZm9jdXMsIHNvIGVtaXQgdGhl
IGV2ZW50cy4KICAgICBpZiAoYXhPbGRGb2N1c2VkT2JqZWN0ICYmIGF4SXRlbSAhPSBheE9sZEZv
Y3VzZWRPYmplY3QpIHsKICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF4T2xkRm9jdXNl
ZE9iamVjdCwgImZvY3VzLWV2ZW50IiwgZmFsc2UpOwotICAgICAgICBhdGtfb2JqZWN0X25vdGlm
eV9zdGF0ZV9jaGFuZ2UoYXhPbGRGb2N1c2VkT2JqZWN0LCBBVEtfU1RBVEVfRk9DVVNFRCwgZmFs
c2UpOworICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9zdGF0ZV9jaGFuZ2UoQVRLX09CSkVDVChh
eE9sZEZvY3VzZWRPYmplY3QpLCBBVEtfU1RBVEVfRk9DVVNFRCwgZmFsc2UpOwogICAgIH0KIAog
ICAgIC8vIEVtaXQgbmVlZGVkIGV2ZW50cyBmb3IgdGhlIGN1cnJlbnRseSAodW4pc2VsZWN0ZWQg
aXRlbS4KICAgICBpZiAoYXhJdGVtKSB7CiAgICAgICAgIGJvb2wgaXNTZWxlY3RlZCA9IGl0ZW0t
PmlzU2VsZWN0ZWQoKTsKLSAgICAgICAgYXRrX29iamVjdF9ub3RpZnlfc3RhdGVfY2hhbmdlKGF4
SXRlbSwgQVRLX1NUQVRFX1NFTEVDVEVELCBpc1NlbGVjdGVkKTsKKyAgICAgICAgYXRrX29iamVj
dF9ub3RpZnlfc3RhdGVfY2hhbmdlKEFUS19PQkpFQ1QoYXhJdGVtKSwgQVRLX1NUQVRFX1NFTEVD
VEVELCBpc1NlbGVjdGVkKTsKICAgICAgICAgLy8gV2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMg
aW4gYSBjb2xsYXBzZWQgd2lkZ2V0IHN1Y2ggYXMgYSBjb21ibyBib3gKICAgICAgICAgLy8gd2hv
c2UgY2hpbGQgbWVudSBpcyBub3Qgc2hvd2luZywgdGhhdCBjb2xsYXBzZWQgd2lkZ2V0IHJldGFp
bnMgZm9jdXMuCiAgICAgICAgIGlmICghb2JqZWN0LT5pc0NvbGxhcHNlZCgpKSB7CiAgICAgICAg
ICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYXhJdGVtLCAiZm9jdXMtZXZlbnQiLCBpc1NlbGVj
dGVkKTsKLSAgICAgICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShheEl0ZW0s
IEFUS19TVEFURV9GT0NVU0VELCBpc1NlbGVjdGVkKTsKKyAgICAgICAgICAgIGF0a19vYmplY3Rf
bm90aWZ5X3N0YXRlX2NoYW5nZShBVEtfT0JKRUNUKGF4SXRlbSksIEFUS19TVEFURV9GT0NVU0VE
LCBpc1NlbGVjdGVkKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTk2LDcgKzE5NSw3IEBAIHN0
YXRpYyB2b2lkIG5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iamVjdCkKIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRp
b24oQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQVhOb3RpZmljYXRpb24gbm90aWZp
Y2F0aW9uKQogewotICAgIEF0a09iamVjdCogYXhPYmplY3QgPSBjb3JlT2JqZWN0LT53cmFwcGVy
KCk7CisgICAgYXV0byogYXhPYmplY3QgPSBBVEtfT0JKRUNUKGNvcmVPYmplY3QtPndyYXBwZXIo
KSk7CiAgICAgaWYgKCFheE9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzEsNyArMjMw
LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNz
aWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQVgKICAgICAgICAgICAgIGF0a192YWx1ZV9nZXRf
Y3VycmVudF92YWx1ZShBVEtfVkFMVUUoYXhPYmplY3QpLCAmcHJvcGVydHlWYWx1ZXMubmV3X3Zh
bHVlKTsKICNlbmRpZgogCi0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoQVRLX09C
SkVDVChheE9iamVjdCksICJwcm9wZXJ0eS1jaGFuZ2U6OmFjY2Vzc2libGUtdmFsdWUiLCAmcHJv
cGVydHlWYWx1ZXMsIE5VTEwpOworICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF4
T2JqZWN0LCAicHJvcGVydHktY2hhbmdlOjphY2Nlc3NpYmxlLXZhbHVlIiwgJnByb3BlcnR5VmFs
dWVzLCBOVUxMKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIApAQCAtMjk5LDcgKzI5OCw3
IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplCiAgICAgaWYgKCFwYXJlbnRPYmplY3QpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEF0a09iamVjdCogd3JhcHBlciA9IHBhcmVudE9iamVjdC0+d3Jh
cHBlcigpOworICAgIGF1dG8qIHdyYXBwZXIgPSBwYXJlbnRPYmplY3QtPndyYXBwZXIoKTsKICAg
ICBpZiAoIXdyYXBwZXIgfHwgIUFUS19JU19URVhUKHdyYXBwZXIpKQogICAgICAgICByZXR1cm47
CiAKQEAgLTM0OSw3ICszNDgsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2
ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogbwogICAgIGlmICgh
b2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBBdGtPYmplY3QqIGF4T2JqZWN0ID0gb2Jq
ZWN0LT53cmFwcGVyKCk7CisgICAgYXV0byogYXhPYmplY3QgPSBBVEtfT0JKRUNUKG9iamVjdC0+
d3JhcHBlcigpKTsKICAgICBpZiAoIWF4T2JqZWN0IHx8ICFBVEtfSVNfRE9DVU1FTlQoYXhPYmpl
Y3QpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM3NiwxMyArMzc1LDE1IEBAIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6cGxhdGZvcm1IYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChOb2RlKiBvbGRG
b2N1c2VkTm9kZSwKIHsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2xkT2JqZWN0
ID0gZ2V0T3JDcmVhdGUob2xkRm9jdXNlZE5vZGUpOwogICAgIGlmIChvbGRPYmplY3QpIHsKLSAg
ICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG9sZE9iamVjdC0+d3JhcHBlcigpLCAiZm9jdXMt
ZXZlbnQiLCBmYWxzZSk7Ci0gICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShv
bGRPYmplY3QtPndyYXBwZXIoKSwgQVRLX1NUQVRFX0ZPQ1VTRUQsIGZhbHNlKTsKKyAgICAgICAg
YXV0byogYXhPYmplY3QgPSBvbGRPYmplY3QtPndyYXBwZXIoKTsKKyAgICAgICAgZ19zaWduYWxf
ZW1pdF9ieV9uYW1lKGF4T2JqZWN0LCAiZm9jdXMtZXZlbnQiLCBmYWxzZSk7CisgICAgICAgIGF0
a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShBVEtfT0JKRUNUKGF4T2JqZWN0KSwgQVRLX1NU
QVRFX0ZPQ1VTRUQsIGZhbHNlKTsKICAgICB9CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+IG5ld09iamVjdCA9IGdldE9yQ3JlYXRlKG5ld0ZvY3VzZWROb2RlKTsKICAgICBpZiAobmV3
T2JqZWN0KSB7Ci0gICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShuZXdPYmplY3QtPndyYXBw
ZXIoKSwgImZvY3VzLWV2ZW50IiwgdHJ1ZSk7Ci0gICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0
YXRlX2NoYW5nZShuZXdPYmplY3QtPndyYXBwZXIoKSwgQVRLX1NUQVRFX0ZPQ1VTRUQsIHRydWUp
OworICAgICAgICBhdXRvKiBheE9iamVjdCA9IG5ld09iamVjdC0+d3JhcHBlcigpOworICAgICAg
ICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYXhPYmplY3QsICJmb2N1cy1ldmVudCIsIHRydWUpOwor
ICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9zdGF0ZV9jaGFuZ2UoQVRLX09CSkVDVChheE9iamVj
dCksIEFUS19TVEFURV9GT0NVU0VELCB0cnVlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQWNjZXNzaWJpbGl0eU9iamVjdEF0
ay5jcHAKaW5kZXggNTkzM2ExOWE3YjguLjQyYjhlYzIxZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRr
LmNwcApAQCAtMTU2LDI1ICsxNTYsNiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzTwogICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpEZWZhdWx0QmVoYXZpb3I7CiB9CiAK
LUFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3cmFwcGVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93cmFwcGVyOwotfQotCi12b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OnNldFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIp
Ci17Ci0gICAgaWYgKHdyYXBwZXIgPT0gbV93cmFwcGVyKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAobV93cmFwcGVyKQotICAgICAgICBnX29iamVjdF91bnJlZihtX3dyYXBwZXIpOwotCi0g
ICAgbV93cmFwcGVyID0gd3JhcHBlcjsKLQotICAgIGlmIChtX3dyYXBwZXIpCi0gICAgICAgIGdf
b2JqZWN0X3JlZihtX3dyYXBwZXIpOwotfQotCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFs
bG93c1RleHRSYW5nZXMoKSBjb25zdAogewogICAgIC8vIENoZWNrIHR5cGUgZm9yIHRoZSBBY2Nl
c3NpYmlsaXR5T2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUNvbXBvbmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlQ29tcG9uZW50
LmNwcAppbmRleCBmNmI3NTRhMTAwZS4uNjk4NDcyNjg2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VDb21wb25l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VDb21wb25lbnQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBBdGtP
YmplY3QqIHdlYmtpdEFjY2Vzc2libGVDb21wb25lbnRSZWZBY2Nlc3NpYmxlQXRQb2ludChBdGtD
b21wb25lbnQqIGNvCiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybiAwOwogICAgIGdf
b2JqZWN0X3JlZih0YXJnZXQtPndyYXBwZXIoKSk7Ci0gICAgcmV0dXJuIHRhcmdldC0+d3JhcHBl
cigpOworICAgIHJldHVybiBBVEtfT0JKRUNUKHRhcmdldC0+d3JhcHBlcigpKTsKIH0KIAogc3Rh
dGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZUNvbXBvbmVudEdldEV4dGVudHMoQXRrQ29tcG9uZW50
KiBjb21wb25lbnQsIGdpbnQqIHgsIGdpbnQqIHksIGdpbnQqIHdpZHRoLCBnaW50KiBoZWlnaHQs
IEF0a0Nvb3JkVHlwZSBjb29yZFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSHlwZXJ0ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VI
eXBlcnRleHQuY3BwCmluZGV4IGRiNjAyMThkZjBkLi5mMTJlM2RmNjc5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZUh5cGVydGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZUh5cGVydGV4dC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3Rh
dGljIEF0a0h5cGVybGluayogd2Via2l0QWNjZXNzaWJsZUh5cGVydGV4dEdldExpbmsoQXRrSHlw
ZXJ0ZXh0KiBoeXBlcnRleHQsIGcKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRy
ZW4pIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZUNoaWxkID0gY2hpbGQuZ2V0
KCk7CiAgICAgICAgIGlmICghY29yZUNoaWxkLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsK
LSAgICAgICAgICAgIEF0a09iamVjdCogYXhPYmplY3QgPSBjb3JlQ2hpbGQtPndyYXBwZXIoKTsK
KyAgICAgICAgICAgIGF1dG8qIGF4T2JqZWN0ID0gY29yZUNoaWxkLT53cmFwcGVyKCk7CiAgICAg
ICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFBVEtfSVNfSFlQRVJMSU5LX0lNUEwoYXhPYmplY3Qp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBn
aW50IHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXROTGlua3MoQXRrSHlwZXJ0ZXh0KiBoeXBl
cnRleHQpCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7CiAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVDaGlsZCA9IGNoaWxkLmdldCgpOwogICAgICAgICBp
ZiAoIWNvcmVDaGlsZC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7Ci0gICAgICAgICAgICBB
dGtPYmplY3QqIGF4T2JqZWN0ID0gY29yZUNoaWxkLT53cmFwcGVyKCk7CisgICAgICAgICAgICBh
dXRvKiBheE9iamVjdCA9IGNvcmVDaGlsZC0+d3JhcHBlcigpOwogICAgICAgICAgICAgaWYgKGF4
T2JqZWN0ICYmIEFUS19JU19IWVBFUkxJTktfSU1QTChheE9iamVjdCkpCiAgICAgICAgICAgICAg
ICAgbGlua3NGb3VuZCsrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlU2VsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VTZWxlY3Rpb24uY3BwCmluZGV4IGVjN2Y4Y2FhNTQ1Li41YmZkOTI1NWJmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVNlbGVjdGlvbi5jcHAKQEAgLTE1OCw5ICsxNTgsOSBA
QCBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlU2VsZWN0aW9uUmVmU2VsZWN0aW9u
KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLAogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0
aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24sIGluZGV4KTsKICAgICBpZiAob3B0
aW9uKSB7Ci0gICAgICAgIEF0a09iamVjdCogY2hpbGQgPSBvcHRpb24tPndyYXBwZXIoKTsKKyAg
ICAgICAgYXV0byogY2hpbGQgPSBvcHRpb24tPndyYXBwZXIoKTsKICAgICAgICAgZ19vYmplY3Rf
cmVmKGNoaWxkKTsKLSAgICAgICAgcmV0dXJuIGNoaWxkOworICAgICAgICByZXR1cm4gQVRLX09C
SkVDVChjaGlsZCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZVRhYmxlLmNwcAppbmRleCBkMDdkMDhhNmY3ZS4uMmRhMzRjOWM4MzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcApAQCAtOTYsNyArOTYsNyBAQCBz
dGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlVGFibGVSZWZBdChBdGtUYWJsZSogdGFi
bGUsIGdpbnQgcm93LCBnaW50IGNvbAogICAgIGlmICghYXhDZWxsKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIEF0a09iamVjdCogY2VsbCA9IGF4Q2VsbC0+d3JhcHBlcigpOworICAgIGF1dG8q
IGNlbGwgPSBheENlbGwtPndyYXBwZXIoKTsKICAgICBpZiAoIWNlbGwpCiAgICAgICAgIHJldHVy
biAwOwogCkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNz
aWJsZVRhYmxlR2V0Q29sdW1uSGVhZGVyKEF0a1RhYmxlKiB0YWJsZSwgZ2ludCBjb2wKICAgICAg
ICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwogICAgICAg
ICAgICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmNvbHVtbkhlYWRlcikuY29s
dW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAgICAgICAgICBpZiAoY29sdW1uUmFuZ2Uu
Zmlyc3QgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbHVtbikgJiYgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGNvbHVtbikgPCBjb2x1bW5SYW5nZS5maXJzdCArIGNvbHVtblJhbmdlLnNlY29uZCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gY29sdW1uSGVhZGVyLT53cmFwcGVyKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEFUS19PQkpFQ1QoY29sdW1uSGVhZGVyLT53cmFwcGVyKCkpOwogICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHN0
YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0hlYWRlcihBdGtUYWJs
ZSogdGFibGUsIGdpbnQgcm93KQogICAgICAgICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4gcm93UmFuZ2U7CiAgICAgICAgICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqcm93SGVhZGVyKS5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKICAgICAgICAgICAgIGlm
IChyb3dSYW5nZS5maXJzdCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocm93KSAmJiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocm93KSA8IHJvd1JhbmdlLmZpcnN0ICsgcm93UmFuZ2Uuc2Vjb25kKQot
ICAgICAgICAgICAgICAgIHJldHVybiByb3dIZWFkZXItPndyYXBwZXIoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gQVRLX09CSkVDVChyb3dIZWFkZXItPndyYXBwZXIoKSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGljIEF0
a09iamVjdCogd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q2FwdGlvbihBdGtUYWJsZSogdGFibGUp
CiAgICAgICAgIGlmIChpczxIVE1MVGFibGVFbGVtZW50Pihub2RlKSkgewogICAgICAgICAgICAg
YXV0byBjYXB0aW9uID0gZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4oKm5vZGUpLmNhcHRpb24o
KTsKICAgICAgICAgICAgIGlmIChjYXB0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9kZShjYXB0aW9uLT5y
ZW5kZXJlcigpLT5lbGVtZW50KCkpLT53cmFwcGVyKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEFUS19PQkpFQ1QoQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJv
bU5vZGUoY2FwdGlvbi0+cmVuZGVyZXIoKS0+ZWxlbWVudCgpKS0+d3JhcHBlcigpKTsKICAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZUNlbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVRhYmxlQ2VsbC5jcHAKaW5kZXggOWQ4NDgyMmI3N2IuLjYyM2UzZTFhNWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SW50ZXJmYWNlVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmNwcApAQCAtMzQsNyArMzQs
NyBAQCBzdGF0aWMgR1B0ckFycmF5KiBjb252ZXJ0VG9HUHRyQXJyYXkoY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaQogewogICAgIEdQdHJBcnJheSogYXJyYXkgPSBn
X3B0cl9hcnJheV9uZXcoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4p
IHsKLSAgICAgICAgaWYgKEF0a09iamVjdCogYXRrT2JqZWN0ID0gY2hpbGQtPndyYXBwZXIoKSkK
KyAgICAgICAgaWYgKGF1dG8qIGF0a09iamVjdCA9IGNoaWxkLT53cmFwcGVyKCkpCiAgICAgICAg
ICAgICBnX3B0cl9hcnJheV9hZGQoYXJyYXksIGF0a09iamVjdCk7CiAgICAgfQogICAgIHJldHVy
biBhcnJheTsKQEAgLTE0OSw3ICsxNDksNyBAQCBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVU
YWJsZUNlbGxHZXRUYWJsZShBdGtUYWJsZUNlbGwqIGNlbGwpCiAgICAgaWYgKCFheE9iamVjdCB8
fCAhYXhPYmplY3QtPmlzVGFibGVDZWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgQXRrT2JqZWN0KiB0YWJsZSA9IGF0a19vYmplY3RfZ2V0X3BhcmVudChheE9iamVjdC0+d3Jh
cHBlcigpKTsKKyAgICBhdXRvKiB0YWJsZSA9IGF0a19vYmplY3RfZ2V0X3BhcmVudChBVEtfT0JK
RUNUKGF4T2JqZWN0LT53cmFwcGVyKCkpKTsKICAgICBpZiAoIXRhYmxlIHx8ICFBVEtfSVNfVEFC
TEUodGFibGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVRleHQuY3BwCmluZGV4IGRhNDAyZGEwYmUwLi45NDQ1M2RjM2RlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBn
dWludCBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamVjdCkKIAogICAgIC8vIEZvciB0aG9zZSBvYmplY3RzIGltcGxlbWVudGluZyB0aGUgQXRr
VGV4dCBpbnRlcmZhY2Ugd2UgdXNlIHRoZQogICAgIC8vIHdlbGwga25vd24gQVBJIHRvIGFsd2F5
cyBnZXQgdGhlIHRleHQgaW4gYSBjb25zaXN0ZW50IHdheQotICAgIEF0a09iamVjdCogYXRrT2Jq
ID0gQVRLX09CSkVDVChvYmplY3QtPndyYXBwZXIoKSk7CisgICAgYXV0byogYXRrT2JqID0gQVRL
X09CSkVDVChvYmplY3QtPndyYXBwZXIoKSk7CiAgICAgaWYgKEFUS19JU19URVhUKGF0a09iaikp
IHsKICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGV4dCh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdl
dFRleHQoQVRLX1RFWFQoYXRrT2JqKSwgMCwgLTEpKTsKICAgICAgICAgcmV0dXJuIGdfdXRmOF9z
dHJsZW4odGV4dC5nZXQoKSwgLTEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCmluZGV4
IGVkMjk0M2VhZjZjLi5hMTQ4MGE2NmEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNw
cApAQCAtMTgxLDg3ICsxODEsODcgQEAgc3RhdGljIHZvaWQgc2V0QXRrUmVsYXRpb25TZXRGcm9t
Q29yZU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBdGsKICAgICByZW1v
dmVBdGtSZWxhdGlvbkJ5VHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0xBQkVMX0ZPUik7
CiAgICAgaWYgKGNvcmVPYmplY3QtPmlzQ29udHJvbCgpKSB7CiAgICAgICAgIGlmIChBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBsYWJlbCA9IGNvcmVPYmplY3QtPmNvcnJlc3BvbmRpbmdMYWJlbEZvckNv
bnRyb2xFbGVtZW50KCkpCi0gICAgICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlv
bl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fTEFCRUxMRURfQlksIGxhYmVsLT53
cmFwcGVyKCkpOworICAgICAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9hZGRfcmVsYXRpb25fYnlf
dHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0xBQkVMTEVEX0JZLCBBVEtfT0JKRUNUKGxh
YmVsLT53cmFwcGVyKCkpKTsKICAgICB9IGVsc2UgaWYgKGNvcmVPYmplY3QtPmlzRmllbGRzZXQo
KSkgewogICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogbGFiZWwgPSBjb3JlT2JqZWN0
LT50aXRsZVVJRWxlbWVudCgpKQotICAgICAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9hZGRfcmVs
YXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0xBQkVMTEVEX0JZLCBsYWJl
bC0+d3JhcHBlcigpKTsKKyAgICAgICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9u
X2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9MQUJFTExFRF9CWSwgQVRLX09CSkVD
VChsYWJlbC0+d3JhcHBlcigpKSk7CiAgICAgfSBlbHNlIGlmIChjb3JlT2JqZWN0LT5yb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGVnZW5kKSB7CiAgICAgICAgIGlmIChSZW5kZXJC
bG9jayogcmVuZGVyRmllbGRzZXQgPSBhbmNlc3RvcnNPZlR5cGU8UmVuZGVyQmxvY2s+KCpjb3Jl
T2JqZWN0LT5yZW5kZXJlcigpKS5maXJzdCgpKSB7CiAgICAgICAgICAgICBpZiAocmVuZGVyRmll
bGRzZXQtPmlzRmllbGRzZXQoKSkgewogICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGZpZWxkc2V0ID0gY29yZU9iamVjdC0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShy
ZW5kZXJGaWVsZHNldCk7Ci0gICAgICAgICAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9hZGRfcmVs
YXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0xBQkVMX0ZPUiwgZmllbGRz
ZXQtPndyYXBwZXIoKSk7CisgICAgICAgICAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9hZGRfcmVs
YXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0xBQkVMX0ZPUiwgQVRLX09C
SkVDVChmaWVsZHNldC0+d3JhcHBlcigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvbnRyb2wgPSBjb3JlT2JqZWN0LT5j
b3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpKSB7Ci0gICAgICAgIGF0a19yZWxh
dGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9M
QUJFTF9GT1IsIGNvbnRyb2wtPndyYXBwZXIoKSk7CisgICAgICAgIGF0a19yZWxhdGlvbl9zZXRf
YWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9MQUJFTF9GT1Is
IEFUS19PQkpFQ1QoY29udHJvbC0+d3JhcHBlcigpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFMYWJl
bGxlZEJ5RWxlbWVudHM7CiAgICAgICAgIGNvcmVPYmplY3QtPmFyaWFMYWJlbGxlZEJ5RWxlbWVu
dHMoYXJpYUxhYmVsbGVkQnlFbGVtZW50cyk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgYWNj
ZXNzaWJpbGl0eU9iamVjdCA6IGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMpCi0gICAgICAgICAgICBh
dGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVM
QVRJT05fTEFCRUxMRURfQlksIGFjY2Vzc2liaWxpdHlPYmplY3QtPndyYXBwZXIoKSk7CisgICAg
ICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0
LCBBVEtfUkVMQVRJT05fTEFCRUxMRURfQlksIEFUS19PQkpFQ1QoYWNjZXNzaWJpbGl0eU9iamVj
dC0+d3JhcHBlcigpKSk7CiAgICAgfQogCiAgICAgLy8gRWxlbWVudHMgcmVmZXJlbmNlZCBieSBh
cmlhLWxhYmVsbGVkYnkgc2hvdWxkIGhhdmUgdGhlIGxhYmVsLWZvciByZWxhdGlvbiBhcyBwZXIg
dGhlIEFSSUEgQUFNIHNwZWMuCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGxhYmVsczsKICAgICBjb3JlT2JqZWN0LT5hcmlhTGFiZWxsZWRCeVJl
ZmVyZW5jaW5nRWxlbWVudHMobGFiZWxzKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjY2Vzc2li
aWxpdHlPYmplY3QgOiBsYWJlbHMpCi0gICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0
aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9MQUJFTF9GT1IsIGFjY2Vzc2li
aWxpdHlPYmplY3QtPndyYXBwZXIoKSk7CisgICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3Jl
bGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9MQUJFTF9GT1IsIEFUS19P
QkpFQ1QoYWNjZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKSk7CiAKICAgICAvLyBFbGVtZW50
cyB3aXRoIGFyaWEtZmxvd3RvIHNob3VsZCBoYXZlIHRoZSBmbG93cy10byByZWxhdGlvbiBhcyBw
ZXIgdGhlIEFSSUEgQUFNIHNwZWMuCiAgICAgcmVtb3ZlQXRrUmVsYXRpb25CeVR5cGUocmVsYXRp
b25TZXQsIEFUS19SRUxBVElPTl9GTE9XU19UTyk7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFGbG93VG9FbGVtZW50czsKICAgICBjb3Jl
T2JqZWN0LT5hcmlhRmxvd1RvRWxlbWVudHMoYXJpYUZsb3dUb0VsZW1lbnRzKTsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGFjY2Vzc2liaWxpdHlPYmplY3QgOiBhcmlhRmxvd1RvRWxlbWVudHMpCi0g
ICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQs
IEFUS19SRUxBVElPTl9GTE9XU19UTywgYWNjZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKTsK
KyAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9hZGRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNl
dCwgQVRLX1JFTEFUSU9OX0ZMT1dTX1RPLCBBVEtfT0JKRUNUKGFjY2Vzc2liaWxpdHlPYmplY3Qt
PndyYXBwZXIoKSkpOwogCiAgICAgLy8gRWxlbWVudHMgcmVmZXJlbmNlZCBieSBhcmlhLWZsb3d0
byBzaG91bGQgaGF2ZSB0aGUgZmxvd3MtZnJvbSByZWxhdGlvbiBhcyBwZXIgdGhlIEFSSUEgQUFN
IHNwZWMuCiAgICAgcmVtb3ZlQXRrUmVsYXRpb25CeVR5cGUocmVsYXRpb25TZXQsIEFUS19SRUxB
VElPTl9GTE9XU19GUk9NKTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgZmxvd0Zyb207CiAgICAgY29yZU9iamVjdC0+YXJpYUZsb3dUb1JlZmVy
ZW5jaW5nRWxlbWVudHMoZmxvd0Zyb20pOwogICAgIGZvciAoY29uc3QgYXV0byYgYWNjZXNzaWJp
bGl0eU9iamVjdCA6IGZsb3dGcm9tKQotICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxh
dGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fRkxPV1NfRlJPTSwgYWNjZXNz
aWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9hZGRf
cmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0ZMT1dTX0ZST00sIEFU
S19PQkpFQ1QoYWNjZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKSk7CiAKICAgICAvLyBFbGVt
ZW50cyB3aXRoIGFyaWEtZGVzY3JpYmVkYnkgc2hvdWxkIGhhdmUgdGhlIGRlc2NyaWJlZC1ieSBy
ZWxhdGlvbiBhcyBwZXIgdGhlIEFSSUEgQUFNIHNwZWMuCiAgICAgcmVtb3ZlQXRrUmVsYXRpb25C
eVR5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlkpOwogICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRGVzY3JpYmVk
QnlFbGVtZW50czsKICAgICBjb3JlT2JqZWN0LT5hcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhhcmlh
RGVzY3JpYmVkQnlFbGVtZW50cyk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBhY2Nlc3NpYmlsaXR5
T2JqZWN0IDogYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMpCi0gICAgICAgIGF0a19yZWxhdGlvbl9z
ZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9ERVNDUklC
RURfQlksIGFjY2Vzc2liaWxpdHlPYmplY3QtPndyYXBwZXIoKSk7CisgICAgICAgIGF0a19yZWxh
dGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9E
RVNDUklCRURfQlksIEFUS19PQkpFQ1QoYWNjZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKSk7
CiAKICAgICAvLyBFbGVtZW50cyByZWZlcmVuY2VkIGJ5IGFyaWEtZGVzY3JpYmVkYnkgc2hvdWxk
IGhhdmUgdGhlIGRlc2NyaXB0aW9uLWZvciByZWxhdGlvbiBhcyBwZXIgdGhlIEFSSUEgQUFNIHNw
ZWMuCiAgICAgcmVtb3ZlQXRrUmVsYXRpb25CeVR5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElP
Tl9ERVNDUklQVElPTl9GT1IpOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBkZXNjcmliZXJzOwogICAgIGNvcmVPYmplY3QtPmFyaWFEZXNjcmli
ZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoZGVzY3JpYmVycyk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBhY2Nlc3NpYmlsaXR5T2JqZWN0IDogZGVzY3JpYmVycykKLSAgICAgICAgYXRrX3JlbGF0aW9u
X3NldF9hZGRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0RFU0NS
SVBUSU9OX0ZPUiwgYWNjZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAgYXRr
X3JlbGF0aW9uX3NldF9hZGRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFU
SU9OX0RFU0NSSVBUSU9OX0ZPUiwgQVRLX09CSkVDVChhY2Nlc3NpYmlsaXR5T2JqZWN0LT53cmFw
cGVyKCkpKTsKIAogICAgIC8vIEVsZW1lbnRzIHdpdGggYXJpYS1jb250cm9scyBzaG91bGQgaGF2
ZSB0aGUgY29udHJvbGxlci1mb3IgcmVsYXRpb24gYXMgcGVyIHRoZSBBUklBIEFBTSBzcGVjLgog
ICAgIHJlbW92ZUF0a1JlbGF0aW9uQnlUeXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fQ09O
VFJPTExFUl9GT1IpOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBhcmlhQ29udHJvbHM7CiAgICAgY29yZU9iamVjdC0+YXJpYUNvbnRyb2xzRWxl
bWVudHMoYXJpYUNvbnRyb2xzKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjY2Vzc2liaWxpdHlP
YmplY3QgOiBhcmlhQ29udHJvbHMpCi0gICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0
aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9DT05UUk9MTEVSX0ZPUiwgYWNj
ZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9h
ZGRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0NPTlRST0xMRVJf
Rk9SLCBBVEtfT0JKRUNUKGFjY2Vzc2liaWxpdHlPYmplY3QtPndyYXBwZXIoKSkpOwogCiAgICAg
Ly8gRWxlbWVudHMgcmVmZXJlbmNlZCBieSBhcmlhLWNvbnRyb2xzIHNob3VsZCBoYXZlIHRoZSBj
b250cm9sbGVkLWJ5IHJlbGF0aW9uIGFzIHBlciB0aGUgQVJJQSBBQU0gc3BlYy4KICAgICByZW1v
dmVBdGtSZWxhdGlvbkJ5VHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0NPTlRST0xMRURf
QlkpOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBjb250cm9sbGVyczsKICAgICBjb3JlT2JqZWN0LT5hcmlhQ29udHJvbHNSZWZlcmVuY2luZ0Vs
ZW1lbnRzKGNvbnRyb2xsZXJzKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjY2Vzc2liaWxpdHlP
YmplY3QgOiBjb250cm9sbGVycykKLSAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9hZGRfcmVsYXRp
b25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0NPTlRST0xMRURfQlksIGFjY2Vz
c2liaWxpdHlPYmplY3QtPndyYXBwZXIoKSk7CisgICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRk
X3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9DT05UUk9MTEVEX0JZ
LCBBVEtfT0JKRUNUKGFjY2Vzc2liaWxpdHlPYmplY3QtPndyYXBwZXIoKSkpOwogCiAgICAgLy8g
RWxlbWVudHMgd2l0aCBhcmlhLW93bnMgc2hvdWxkIGhhdmUgdGhlIG5vZGUtcGFyZW50LW9mIHJl
bGF0aW9uIGFzIHBlciB0aGUgQVJJQSBBQU0gc3BlYy4KICAgICByZW1vdmVBdGtSZWxhdGlvbkJ5
VHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX05PREVfUEFSRU5UX09GKTsKICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnM7CiAg
ICAgY29yZU9iamVjdC0+YXJpYU93bnNFbGVtZW50cyhhcmlhT3ducyk7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBhY2Nlc3NpYmlsaXR5T2JqZWN0IDogYXJpYU93bnMpCi0gICAgICAgIGF0a19yZWxh
dGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9O
T0RFX1BBUkVOVF9PRiwgYWNjZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAg
YXRrX3JlbGF0aW9uX3NldF9hZGRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JF
TEFUSU9OX05PREVfUEFSRU5UX09GLCBBVEtfT0JKRUNUKGFjY2Vzc2liaWxpdHlPYmplY3QtPndy
YXBwZXIoKSkpOwogCiAgICAgLy8gRWxlbWVudHMgcmVmZXJlbmNlZCBieSBhcmlhLW93bnMgc2hv
dWxkIGhhdmUgdGhlIG5vZGUtY2hpbGQtb2YgcmVsYXRpb24gYXMgcGVyIHRoZSBBUklBIEFBTSBz
cGVjLgogICAgIHJlbW92ZUF0a1JlbGF0aW9uQnlUeXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJ
T05fTk9ERV9DSElMRF9PRik7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIG93bmVyczsKICAgICBjb3JlT2JqZWN0LT5hcmlhT3duc1JlZmVyZW5j
aW5nRWxlbWVudHMob3duZXJzKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjY2Vzc2liaWxpdHlP
YmplY3QgOiBvd25lcnMpCi0gICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5
X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9OT0RFX0NISUxEX09GLCBhY2Nlc3NpYmls
aXR5T2JqZWN0LT53cmFwcGVyKCkpOworICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxh
dGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fTk9ERV9DSElMRF9PRiwgQVRL
X09CSkVDVChhY2Nlc3NpYmlsaXR5T2JqZWN0LT53cmFwcGVyKCkpKTsKIAogI2lmIEFUS19DSEVD
S19WRVJTSU9OKDIsIDI1LCAyKQogICAgIC8vIEVsZW1lbnRzIHdpdGggYXJpYS1kZXRhaWxzIHNo
b3VsZCBoYXZlIHRoZSBkZXRhaWxzIHJlbGF0aW9uIGFzIHBlciB0aGUgQVJJQSBBQU0gc3BlYy4K
QEAgLTI2OSwyOCArMjY5LDI4IEBAIHN0YXRpYyB2b2lkIHNldEF0a1JlbGF0aW9uU2V0RnJvbUNv
cmVPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRrCiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFEZXRhaWxzOwog
ICAgIGNvcmVPYmplY3QtPmFyaWFEZXRhaWxzRWxlbWVudHMoYXJpYURldGFpbHMpOwogICAgIGZv
ciAoY29uc3QgYXV0byYgYWNjZXNzaWJpbGl0eU9iamVjdCA6IGFyaWFEZXRhaWxzKQotICAgICAg
ICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtf
UkVMQVRJT05fREVUQUlMUywgYWNjZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAg
ICAgYXRrX3JlbGF0aW9uX3NldF9hZGRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRL
X1JFTEFUSU9OX0RFVEFJTFMsIEFUS19PQkpFQ1QoYWNjZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBl
cigpKSk7CiAKICAgICAvLyBFbGVtZW50cyByZWZlcmVuY2VkIGJ5IGFyaWEtZGV0YWlscyBzaG91
bGQgaGF2ZSB0aGUgZGV0YWlscy1mb3IgcmVsYXRpb24gYXMgcGVyIHRoZSBBUklBIEFBTSBzcGVj
LgogICAgIHJlbW92ZUF0a1JlbGF0aW9uQnlUeXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05f
REVUQUlMU19GT1IpOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBkZXRhaWxzOwogICAgIGNvcmVPYmplY3QtPmFyaWFEZXRhaWxzUmVmZXJlbmNp
bmdFbGVtZW50cyhkZXRhaWxzKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjY2Vzc2liaWxpdHlP
YmplY3QgOiBkZXRhaWxzKQotICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9i
eV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fREVUQUlMU19GT1IsIGFjY2Vzc2liaWxp
dHlPYmplY3QtPndyYXBwZXIoKSk7CisgICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0
aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9ERVRBSUxTX0ZPUiwgQVRLX09C
SkVDVChhY2Nlc3NpYmlsaXR5T2JqZWN0LT53cmFwcGVyKCkpKTsKIAogICAgIC8vIEVsZW1lbnRz
IHdpdGggYXJpYS1lcnJvcm1lc3NhZ2Ugc2hvdWxkIGhhdmUgdGhlIGVycm9yLW1lc3NhZ2UgcmVs
YXRpb24gYXMgcGVyIHRoZSBBUklBIEFBTSBzcGVjLgogICAgIHJlbW92ZUF0a1JlbGF0aW9uQnlU
eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fRVJST1JfTUVTU0FHRSk7CiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFFcnJvck1lc3Nh
Z2U7CiAgICAgY29yZU9iamVjdC0+YXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKGFyaWFFcnJvck1l
c3NhZ2UpOwogICAgIGZvciAoY29uc3QgYXV0byYgYWNjZXNzaWJpbGl0eU9iamVjdCA6IGFyaWFF
cnJvck1lc3NhZ2UpCi0gICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5
cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9FUlJPUl9NRVNTQUdFLCBhY2Nlc3NpYmlsaXR5
T2JqZWN0LT53cmFwcGVyKCkpOworICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlv
bl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fRVJST1JfTUVTU0FHRSwgQVRLX09C
SkVDVChhY2Nlc3NpYmlsaXR5T2JqZWN0LT53cmFwcGVyKCkpKTsKIAogICAgIC8vIEVsZW1lbnRz
IHJlZmVyZW5jZWQgYnkgYXJpYS1lcnJvcm1lc3NhZ2Ugc2hvdWxkIGhhdmUgdGhlIGVycm9yLWZv
ciByZWxhdGlvbiBhcyBwZXIgdGhlIEFSSUEgQUFNIHNwZWMuCiAgICAgcmVtb3ZlQXRrUmVsYXRp
b25CeVR5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9FUlJPUl9GT1IpOwogICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJvcnM7CiAgICAg
Y29yZU9iamVjdC0+YXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMoZXJyb3JzKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjY2Vzc2liaWxpdHlPYmplY3QgOiBlcnJvcnMpCi0gICAg
ICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFU
S19SRUxBVElPTl9FUlJPUl9GT1IsIGFjY2Vzc2liaWxpdHlPYmplY3QtPndyYXBwZXIoKSk7Cisg
ICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQs
IEFUS19SRUxBVElPTl9FUlJPUl9GT1IsIEFUS19PQkpFQ1QoYWNjZXNzaWJpbGl0eU9iamVjdC0+
d3JhcHBlcigpKSk7CiAjZW5kaWYKIH0KIApAQCAtMzI0LDEwICszMjQsNyBAQCBzdGF0aWMgQXRr
T2JqZWN0KiBhdGtQYXJlbnRPZlJvb3RPYmplY3QoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoIWNvcmVQYXJlbnQpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgcmV0dXJuIGNvcmVQYXJlbnQtPndyYXBwZXIoKTsKKyAgICByZXR1cm4g
Y29yZVBhcmVudCA/IEFUS19PQkpFQ1QoY29yZVBhcmVudC0+d3JhcHBlcigpKSA6IG51bGxwdHI7
CiB9CiAKIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVHZXRQYXJlbnQoQXRrT2Jq
ZWN0KiBvYmplY3QpCkBAIC0zNTAsMTAgKzM0Nyw3IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtp
dEFjY2Vzc2libGVHZXRQYXJlbnQoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAgaWYgKCFjb3JlUGFy
ZW50ICYmIGlzUm9vdE9iamVjdChjb3JlT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGF0a1BhcmVu
dE9mUm9vdE9iamVjdChvYmplY3QpOwogCi0gICAgaWYgKCFjb3JlUGFyZW50KQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIHJldHVybiBjb3JlUGFyZW50LT53cmFwcGVyKCk7CisgICAgcmV0dXJu
IGNvcmVQYXJlbnQgPyBBVEtfT0JKRUNUKGNvcmVQYXJlbnQtPndyYXBwZXIoKSkgOiBudWxscHRy
OwogfQogCiBzdGF0aWMgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlR2V0TkNoaWxkcmVuKEF0a09iamVj
dCogb2JqZWN0KQpAQCAtMzg1LDcgKzM3OSw3IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFj
Y2Vzc2libGVSZWZDaGlsZChBdGtPYmplY3QqIG9iamVjdCwgZ2ludCBpbmRleCkKICAgICBpZiAo
IWNvcmVDaGlsZCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBdGtPYmplY3QqIGNoaWxkID0g
Y29yZUNoaWxkLT53cmFwcGVyKCk7CisgICAgYXV0byogY2hpbGQgPSBBVEtfT0JKRUNUKGNvcmVD
aGlsZC0+d3JhcHBlcigpKTsKICAgICBhdGtfb2JqZWN0X3NldF9wYXJlbnQoY2hpbGQsIG9iamVj
dCk7CiAgICAgZ19vYmplY3RfcmVmKGNoaWxkKTsKIApAQCAtOTE0LDggKzkwOCw4IEBAIHN0YXRp
YyBib29sIGlzVGV4dFdpdGhDYXJldChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBDaGVjayB0ZXh0IG9iamVjdHMgYW5kIHBh
cmFncmFwaHMgb25seS4KLSAgICBBdGtPYmplY3QqIGF4T2JqZWN0ID0gY29yZU9iamVjdC0+d3Jh
cHBlcigpOwotICAgIEF0a1JvbGUgcm9sZSA9IGF4T2JqZWN0ID8gYXRrX29iamVjdF9nZXRfcm9s
ZShheE9iamVjdCkgOiBBVEtfUk9MRV9JTlZBTElEOworICAgIGF1dG8qIGF4T2JqZWN0ID0gY29y
ZU9iamVjdC0+d3JhcHBlcigpOworICAgIEF0a1JvbGUgcm9sZSA9IGF4T2JqZWN0ID8gYXRrX29i
amVjdF9nZXRfcm9sZShBVEtfT0JKRUNUKGF4T2JqZWN0KSkgOiBBVEtfUk9MRV9JTlZBTElEOwog
ICAgIGlmIChyb2xlICE9IEFUS19ST0xFX1RFWFQgJiYgcm9sZSAhPSBBVEtfUk9MRV9QQVJBR1JB
UEgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCmluZGV4IDliNWYyODgzZDMyLi43ZmYxY2EzYWFh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9hdGsvRnJhbWVTZWxlY3Rpb25B
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvYXRrL0ZyYW1lU2VsZWN0aW9uQXRr
LmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lk
IGVtaXRUZXh0U2VsZWN0aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24sIGludCBvZmZzZXQpCiB7Ci0gICAgQXRrT2JqZWN0KiBh
eE9iamVjdCA9IG9iamVjdC0+d3JhcHBlcigpOworICAgIGF1dG8qIGF4T2JqZWN0ID0gb2JqZWN0
LT53cmFwcGVyKCk7CiAgICAgaWYgKCFheE9iamVjdCB8fCAhQVRLX0lTX1RFWFQoYXhPYmplY3Qp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTY1LDE3ICs2NSwxNyBAQCBzdGF0aWMgdm9pZCBtYXli
ZUVtaXRUZXh0Rm9jdXNDaGFuZ2UoUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiYgb2JqZWN0
KQogICAgIGlmIChvYmplY3QgJiYgb2xkT2JqZWN0LmdldCgpICYmIG9sZE9iamVjdC5nZXQoKS0+
ZG9jdW1lbnQoKSAhPSBvYmplY3QtPmRvY3VtZW50KCkpCiAgICAgICAgIG9sZE9iamVjdC5nZXQo
KSA9IG51bGxwdHI7CiAKLSAgICBBdGtPYmplY3QqIGF4T2JqZWN0ID0gb2JqZWN0ID8gb2JqZWN0
LT53cmFwcGVyKCkgOiAwOwotICAgIEF0a09iamVjdCogb2xkQXhPYmplY3QgPSBvbGRPYmplY3Qu
Z2V0KCkgPyBvbGRPYmplY3QuZ2V0KCktPndyYXBwZXIoKSA6IG51bGxwdHI7CisgICAgYXV0byog
YXhPYmplY3QgPSBvYmplY3QgPyBvYmplY3QtPndyYXBwZXIoKSA6IG51bGxwdHI7CisgICAgYXV0
byogb2xkQXhPYmplY3QgPSBvbGRPYmplY3QuZ2V0KCkgPyBvbGRPYmplY3QuZ2V0KCktPndyYXBw
ZXIoKSA6IG51bGxwdHI7CiAKICAgICBpZiAoYXhPYmplY3QgIT0gb2xkQXhPYmplY3QpIHsKICAg
ICAgICAgaWYgKG9sZEF4T2JqZWN0ICYmIEFUS19JU19URVhUKG9sZEF4T2JqZWN0KSkgewotICAg
ICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG9sZEF4T2JqZWN0LCAiZm9jdXMtZXZlbnQi
LCBmYWxzZSk7Ci0gICAgICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9zdGF0ZV9jaGFuZ2Uob2xk
QXhPYmplY3QsIEFUS19TVEFURV9GT0NVU0VELCBmYWxzZSk7CisgICAgICAgICAgICBnX3NpZ25h
bF9lbWl0X2J5X25hbWUob2xkQXhPYmplY3QsICJmb2N1cy1ldmVudCIsIEZBTFNFKTsKKyAgICAg
ICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShBVEtfT0JKRUNUKG9sZEF4T2Jq
ZWN0KSwgQVRLX1NUQVRFX0ZPQ1VTRUQsIEZBTFNFKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
YXhPYmplY3QgJiYgQVRLX0lTX1RFWFQoYXhPYmplY3QpKSB7Ci0gICAgICAgICAgICBnX3NpZ25h
bF9lbWl0X2J5X25hbWUoYXhPYmplY3QsICJmb2N1cy1ldmVudCIsIHRydWUpOwotICAgICAgICAg
ICAgYXRrX29iamVjdF9ub3RpZnlfc3RhdGVfY2hhbmdlKGF4T2JqZWN0LCBBVEtfU1RBVEVfRk9D
VVNFRCwgdHJ1ZSk7CisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYXhPYmplY3Qs
ICJmb2N1cy1ldmVudCIsIFRSVUUpOworICAgICAgICAgICAgYXRrX29iamVjdF9ub3RpZnlfc3Rh
dGVfY2hhbmdlKEFUS19PQkpFQ1QoYXhPYmplY3QpLCBBVEtfU1RBVEVfRk9DVVNFRCwgVFJVRSk7
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzIwNDI5YmYyZmIuLmQ3OTE2ODRiYzY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA0LTA0ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbQVRLXSBVc2UgYSBzbWFydCBw
b2ludGVyIGZvciBBY2Nlc3NpYmlsaXR5T2JqZWN0IHdyYXBwZXIgYW5kIHJlbW92ZSBHVEsgc3Bl
Y2lmaWMgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk2NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTU5OTE1Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9hdGsvV2ViS2l0V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoYWNj
ZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyKTogQ2FzdCB3cmFwcGVyKCkgYXMgQXRrT2JqZWN0
LgorCiAyMDE5LTA0LTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbQVRLXSBDbGVhbnVwIFdlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0QXRr
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViS2l0
V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvYXRrL1dlYktpdFdlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBk
YmEzZjQzZWYxZS4uMWYwNGMwM2RiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2F0ay9XZWJLaXRXZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvYXRrL1dlYktpdFdlYlBhZ2VBY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNjksMTEgKzY5LDcgQEAgc3RhdGljIEF0a09iamVjdCog
YWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyKEF0a09iamVjdCogYXRrT2JqZWN0KQogICAg
IGlmICghY29yZVJvb3RPYmplY3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQXRr
T2JqZWN0KiByb290T2JqZWN0ID0gY29yZVJvb3RPYmplY3QtPndyYXBwZXIoKTsKLSAgICBpZiAo
IXJvb3RPYmplY3QgfHwgIUFUS19JU19PQkpFQ1Qocm9vdE9iamVjdCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcmV0dXJuIHJvb3RPYmplY3Q7CisgICAgcmV0dXJuIEFUS19PQkpF
Q1QoY29yZVJvb3RPYmplY3QtPndyYXBwZXIoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0SW5pdGlhbGl6ZShBdGtPYmplY3QqIGF0a09iamVjdCwg
Z3BvaW50ZXIgZGF0YSkK
</data>
<flag name="review"
          id="383081"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>