<?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>140971</bug_id>
          
          <creation_ts>2015-01-27 17:31:42 -0800</creation_ts>
          <short_desc>Use a Ref&lt;CachedResourceLoader&gt; in Document instead of a RefPtr</short_desc>
          <delta_ts>2015-01-27 21:55:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1064744</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-27 17:31:42 -0800</bug_when>
    <thetext>Use a Ref&lt;CachedResourceLoader&gt; in Document instead of a RefPtr and it can never be null. This gets rid of a lot of unnecessary null checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064760</commentid>
    <comment_count>1</comment_count>
      <attachid>245501</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-27 18:35:22 -0800</bug_when>
    <thetext>Created attachment 245501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064802</commentid>
    <comment_count>2</comment_count>
      <attachid>245501</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-27 21:09:02 -0800</bug_when>
    <thetext>Comment on attachment 245501
Patch

r=me
This is some tasty stuff!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064807</commentid>
    <comment_count>3</comment_count>
      <attachid>245501</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-27 21:55:10 -0800</bug_when>
    <thetext>Comment on attachment 245501
Patch

Clearing flags on attachment: 245501

Committed r179242: &lt;http://trac.webkit.org/changeset/179242&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064808</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-27 21:55:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245501</attachid>
            <date>2015-01-27 18:35:22 -0800</date>
            <delta_ts>2015-01-27 21:55:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140971-20150127183526.patch</filename>
            <type>text/plain</type>
            <size>72225</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZjNTBjZjY3ZDRkN2Vi
MTliNDkwMjFiOTI3YWY3ZjNlOWJmMGNjZC4uOWExZTA0ZGI1MDBjYjZlYjg3MzcyM2U1ZTU1NDY1
YTdlZjA5ZDQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTAxLTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgUmVmPENhY2hlZFJl
c291cmNlTG9hZGVyPiBpbiBEb2N1bWVudCBpbnN0ZWFkIG9mIGEgUmVmUHRyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA5NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYSBSZWY8Q2FjaGVkUmVz
b3VyY2VMb2FkZXI+IGluIERvY3VtZW50IGluc3RlYWQgb2YgYSBSZWZQdHIgYXMgaXQKKyAgICAg
ICAgY2FuIG5ldmVyIGJlIG51bGwuIEFsc28gaGF2ZSBEb2N1bWVudDo6Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKSByZXR1cm4gYQorICAgICAgICByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIu
IFRoaXMgZ2V0cyByaWQgb2YgYSBsb3Qgb2YgdW5uZWNlc3NhcnkKKyAgICAgICAgbnVsbC1jaGVj
a3MuCisKIDIwMTUtMDEtMjcgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWJHTDI6IERpc2FibGUgdmFyaW91cyBleHRlbnNpb25zIG9uIFdlYkdMMiBjb250
ZXh0IHRoYXQgaGF2ZSBiZWVuIHByb21vdGVkIHRvIGNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
NDExYzYwMTJkMzMzNThlZTJkODcwM2IwOGIzOTA4ZTA4Mjg0N2I2NC4uYTQzY2FmYWZlMmJlYTBi
YzM0ZTUyY2ZlOGM2MTU5ZjNhOTk5YjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE1LTAxLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIGEgUmVmPENhY2hlZFJlc291cmNlTG9hZGVyPiBpbiBEb2N1bWVudCBpbnN0ZWFkIG9m
IGEgUmVmUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDA5NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgbW9yZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMuCisKKyAgICAgICAgKiBX
ZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OnN1YnJlc291cmNlRm9y
VVJMKToKKwogMjAxNS0wMS0yNiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2luXSBBU1NFUlRJT04gRkFJTEVEICFtX3B0ciB1bmRlciBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6d2luQWRkTm90aWZpY2F0aW9uTGlzdGVuZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbnZhc1ZhbHVlLmgKaW5kZXggNTMzNzgwZDhiZWRlY2NmMmZhMjY0ZmY5ZDg2MzQ2OWU0ZmEy
MDI0MS4uMTY5NTZlMWQ2MmIyNjNjMzk0MTMxZTBkNjUwMjA3YmFiYTRiZTJhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIEZs
b2F0U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCopOwogCiAgICAgYm9vbCBpc1Bl
bmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgbG9hZFN1YmltYWdlcyhD
YWNoZWRSZXNvdXJjZUxvYWRlciopIHsgfQorICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRS
ZXNvdXJjZUxvYWRlciYpIHsgfQogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ2FudmFzVmFs
dWUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKaW5k
ZXggMTkwMjNjYjk2Mzk2OWFhN2UzYTIxOGI1NDI4NDRkYWRjZTQwYzg5My4uZWE0ZGI2ZjcwNjIy
MjZlMGYwOWNmZmMwYWU1ZTg0MGQ4MDIzZjExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jv
c3NmYWRlVmFsdWUuY3BwCkBAIC04NCw3ICs4NCw3IEBAIEZsb2F0U2l6ZSBDU1NDcm9zc2ZhZGVW
YWx1ZTo6Zml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogICAgIGZsb2F0
IHBlcmNlbnRhZ2UgPSBtX3BlcmNlbnRhZ2VWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpOwogICAgIGZs
b2F0IGludmVyc2VQZXJjZW50YWdlID0gMSAtIHBlcmNlbnRhZ2U7CiAKLSAgICBDYWNoZWRSZXNv
dXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpOworICAgIENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRS
ZXNvdXJjZUxvYWRlciA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVy
KCk7CiAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEZyb21JbWFnZSA9IGNhY2hlZEltYWdlRm9yQ1NT
VmFsdWUobV9mcm9tVmFsdWUuZ2V0KCksIGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICBDYWNo
ZWRJbWFnZSogY2FjaGVkVG9JbWFnZSA9IGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUobV90b1ZhbHVl
LmdldCgpLCBjYWNoZWRSZXNvdXJjZUxvYWRlcik7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBib29s
IENTU0Nyb3NzZmFkZVZhbHVlOjprbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIpIGNvbnN0CiAgICAgcmV0dXJuIHN1YmltYWdlS25vd25Ub0JlT3BhcXVlKCptX2Zy
b21WYWx1ZSwgcmVuZGVyZXIpICYmIHN1YmltYWdlS25vd25Ub0JlT3BhcXVlKCptX3RvVmFsdWUs
IHJlbmRlcmVyKTsKIH0KIAotdm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6bG9hZFN1YmltYWdlcyhD
YWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCit2b2lkIENTU0Nyb3Nz
ZmFkZVZhbHVlOjpsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNv
dXJjZUxvYWRlcikKIHsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gb2xk
Q2FjaGVkRnJvbUltYWdlID0gbV9jYWNoZWRGcm9tSW1hZ2U7CiAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkSW1hZ2U+IG9sZENhY2hlZFRvSW1hZ2UgPSBtX2NhY2hlZFRvSW1hZ2U7CkBA
IC0xNDIsOSArMTQyLDkgQEAgdm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6bG9hZFN1YmltYWdlcyhD
YWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIKIFBhc3NSZWZQdHI8SW1h
Z2U+IENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29u
c3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gcmVuZGVyZXItPmRvY3VtZW50KCkuY2FjaGVk
UmVzb3VyY2VMb2FkZXIoKTsKKyAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwog
ICAgIENhY2hlZEltYWdlKiBjYWNoZWRGcm9tSW1hZ2UgPSBjYWNoZWRJbWFnZUZvckNTU1ZhbHVl
KG1fZnJvbVZhbHVlLmdldCgpLCBjYWNoZWRSZXNvdXJjZUxvYWRlcik7CiAgICAgQ2FjaGVkSW1h
Z2UqIGNhY2hlZFRvSW1hZ2UgPSBjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKG1fdG9WYWx1ZS5nZXQo
KSwgY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5oCmluZGV4IGEyZmJjNjBhMzI1NzE0OTVhZjU2ZGRlNjY1ZjFlNzgyMWMwYjIyMzEuLjUy
ZjIyMjYzMGU5ZThhM2RiMmVkYjJiMWE5OTNmODhjOTZhOGE0YTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzUGVuZGluZygpIGNvbnN0OwogICAgIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRl
ckVsZW1lbnQqKSBjb25zdDsKIAotICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJj
ZUxvYWRlciopOworICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciYp
OwogCiAgICAgdm9pZCBzZXRQZXJjZW50YWdlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHBlcmNlbnRhZ2VWYWx1ZSkgeyBtX3BlcmNlbnRhZ2VWYWx1ZSA9IHBlcmNlbnRhZ2VWYWx1ZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKaW5kZXggMjQx
ZjU5NjM0NjNhN2M3MDQ3MTU4MDUwYTc4NGFkNzc1ZTE2NDAwZC4uNDEwYWU0ZmQ2YjRjYTk5MTJk
ZGVmNmFlNGU4MTM4NGMwZGQ5NmNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0N1cnNvckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJ
bWFnZVZhbHVlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZTo6dXBkYXRlSWZTVkdDdXJzb3JJc1VzZWQoRWxlbWVudCogZWxlbWVudCkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLVN0eWxlSW1hZ2UqIENTU0N1cnNvckltYWdlVmFsdWU6OmNhY2hlZEltYWdl
KENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCitTdHlsZUltYWdlKiBDU1NDdXJzb3JJbWFn
ZVZhbHVlOjpjYWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogewogI2lm
IEVOQUJMRShDU1NfSU1BR0VfU0VUKQogICAgIGlmIChpczxDU1NJbWFnZVNldFZhbHVlPihtX2lt
YWdlVmFsdWUuZ2V0KCkpKQpAQCAtMTQzLDkgKzE0Myw5IEBAIFN0eWxlSW1hZ2UqIENTU0N1cnNv
ckltYWdlVmFsdWU6OmNhY2hlZEltYWdlKENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCiAg
ICAgICAgIC8vIEZvciBTVkcgaW1hZ2VzIHdlIG5lZWQgdG8gbGF6aWx5IHN1YnN0aXR1dGUgaW4g
dGhlIGNvcnJlY3QgVVJMLiBSYXRoZXIgdGhhbiBhdHRlbXB0CiAgICAgICAgIC8vIHRvIGNoYW5n
ZSB0aGUgVVJMIG9mIHRoZSBDU1NJbWFnZVZhbHVlICh3aGljaCB3b3VsZCB0aGVuIGNoYW5nZSBi
ZWhhdmlvciBsaWtlIGNzc1RleHQpLAogICAgICAgICAvLyB3ZSBjcmVhdGUgYW4gYWx0ZXJuYXRl
IENTU0ltYWdlVmFsdWUgdG8gdXNlLgotICAgICAgICBpZiAoaXNTVkdDdXJzb3IoKSAmJiBsb2Fk
ZXIgJiYgbG9hZGVyLT5kb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChpc1NWR0N1cnNvcigpICYm
IGxvYWRlci5kb2N1bWVudCgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIGZh
aWwgaWYgdGhlIDxjdXJzb3I+IGVsZW1lbnQgaXMgaW4gYSBzaGFkb3cgRE9NIChidWcgNTk4Mjcp
Ci0gICAgICAgICAgICBpZiAoU1ZHQ3Vyc29yRWxlbWVudCogY3Vyc29yRWxlbWVudCA9IHJlc291
cmNlUmVmZXJlbmNlZEJ5Q3Vyc29yRWxlbWVudChkb3duY2FzdDxDU1NJbWFnZVZhbHVlPihtX2lt
YWdlVmFsdWUuZ2V0KCkpLnVybCgpLCAqbG9hZGVyLT5kb2N1bWVudCgpKSkgeworICAgICAgICAg
ICAgaWYgKFNWR0N1cnNvckVsZW1lbnQqIGN1cnNvckVsZW1lbnQgPSByZXNvdXJjZVJlZmVyZW5j
ZWRCeUN1cnNvckVsZW1lbnQoZG93bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4obV9pbWFnZVZhbHVlLmdl
dCgpKS51cmwoKSwgKmxvYWRlci5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAgICAgIGRldGFj
aFBlbmRpbmdJbWFnZSgpOwogICAgICAgICAgICAgICAgIFJlZjxDU1NJbWFnZVZhbHVlPiBzdmdJ
bWFnZVZhbHVlKENTU0ltYWdlVmFsdWU6OmNyZWF0ZShjdXJzb3JFbGVtZW50LT5ocmVmKCkpKTsK
ICAgICAgICAgICAgICAgICBTdHlsZUNhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHN2Z0ltYWdl
VmFsdWUtPmNhY2hlZEltYWdlKGxvYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvcklt
YWdlVmFsdWUuaAppbmRleCA2MWEyOWE4ZTQzOTliMDZmMzcyOTczNWE5MzlkOTA4NTYyOTU2NGU2
Li4yMDM4MmNiYWFjYmMwNjMxNTFlZTkwZTYyYWJmZmI4MjNjMDkxMThiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
ICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKICAgICBib29sIHVwZGF0ZUlmU1ZH
Q3Vyc29ySXNVc2VkKEVsZW1lbnQqKTsKLSAgICBTdHlsZUltYWdlKiBjYWNoZWRJbWFnZShDYWNo
ZWRSZXNvdXJjZUxvYWRlciopOworICAgIFN0eWxlSW1hZ2UqIGNhY2hlZEltYWdlKENhY2hlZFJl
c291cmNlTG9hZGVyJik7CiAgICAgU3R5bGVJbWFnZSogY2FjaGVkT3JQZW5kaW5nSW1hZ2UoRG9j
dW1lbnQmKTsKIAogICAgIHZvaWQgcmVtb3ZlUmVmZXJlbmNlZEVsZW1lbnQoU1ZHRWxlbWVudCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IGE2OTBh
YmRiZGM3NjQxYjEzMjFhYjYzODNiMjQyYTE4Nzk3OGIxNjEuLjRjZDQxODFhZWVjMWMzMWE3MzE1
ZWQyNjlkZTRlOGY5M2M3NGEwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU3RyaW5nIENTU0ZpbHRlckltYWdlVmFsdWU6
OmN1c3RvbUNTU1RleHQoKSBjb25zdAogCiBGbG9hdFNpemUgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6
Zml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewotICAgIENhY2hlZFJl
c291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IHJlbmRlcmVyLT5kb2N1bWVudCgp
LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CisgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hl
ZFJlc291cmNlTG9hZGVyID0gcmVuZGVyZXItPmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKTsKICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBjYWNoZWRJbWFnZUZvckNTU1Zh
bHVlKG1faW1hZ2VWYWx1ZS5nZXQoKSwgY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogCiAgICAgaWYg
KCFjYWNoZWRJbWFnZSkKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBDU1NGaWx0ZXJJbWFnZVZhbHVl
Ojprbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIENTU0ZpbHRlckltYWdlVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKQordm9pZCBDU1NGaWx0ZXJJ
bWFnZVZhbHVlOjpsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNv
dXJjZUxvYWRlcikKIHsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gb2xk
Q2FjaGVkSW1hZ2UgPSBtX2NhY2hlZEltYWdlOwogCkBAIC05OCw5ICs5OCw5IEBAIHZvaWQgQ1NT
RmlsdGVySW1hZ2VWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2Fj
aGVkUmVzb3VyY2VMb2FkCiBQYXNzUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpp
bWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewog
ICAgIGlmIChzaXplLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9h
ZGVyID0gcmVuZGVyZXItPmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKKyAgICBD
YWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSByZW5kZXJlci0+ZG9j
dW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogICAgIENhY2hlZEltYWdlKiBjYWNoZWRJ
bWFnZSA9IGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUobV9pbWFnZVZhbHVlLmdldCgpLCBjYWNoZWRS
ZXNvdXJjZUxvYWRlcik7CiAKICAgICBpZiAoIWNhY2hlZEltYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKaW5kZXggN2QxOTI3MTIyZTUyZTU4NTdmODYwZmFjYTZj
NGM2ODdlNDU0ZWZiMi4uMTI0NWNkNmFiOGY2NTM0NTNlODM4MDE3NTBmMDFkMDY0MzUzNGQ3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCkBAIC02Miw3ICs2Miw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0OwogICAgIGJvb2wga25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdDsKIAotICAgIHZvaWQgbG9hZFN1
YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopOworICAgIHZvaWQgbG9hZFN1YmltYWdlcyhD
YWNoZWRSZXNvdXJjZUxvYWRlciYpOwogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3Vi
cmVzb3VyY2VzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1Zh
bHVlLmNwcAppbmRleCA0MzY2ZTU3MTAzNTYzOGYzMDQ2YmFkMzY3MjJiM2Q5MzMxYmQzZWIyLi43
ZTI5NmQ2ZjhjYTM2ZDhiZjYyOGFhZjhjYmRhMTYwMDE3ODYzY2M3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgQ2FjaGVk
Rm9udCogQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udChEb2N1bWVudCogZG9jdW1lbnQs
IGJvb2wgaXNTVkcpCiAgICAgaWYgKCFtX2NhY2hlZEZvbnQpIHsKICAgICAgICAgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50LT5jb21wbGV0ZVVS
TChtX3Jlc291cmNlKSkpOwogICAgICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNv
dXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKLSAgICAgICAgbV9jYWNoZWRGb250ID0gZG9j
dW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RGb250KHJlcXVlc3QsIGlzU1ZH
KTsKKyAgICAgICAgbV9jYWNoZWRGb250ID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCkucmVxdWVzdEZvbnQocmVxdWVzdCwgaXNTVkcpOwogICAgIH0KICAgICByZXR1cm4gbV9jYWNo
ZWRGb250LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRl
eCBkOTU2ZjY1Y2Q5MDIxZjU1NjUyMmQ0ZjAyMjAxNTIxZjM4OTkxZjQ3Li44MmMwZWI1OGVmODNi
NmI3NjEwNjAyNzBlNjMwNDFlNTliZGQ1ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcApAQCAtNTQwLDE1ICs1NDAsMTQgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmNs
ZWFyRG9jdW1lbnQoKQogCiAgICAgbV9iZWdpbkxvYWRpbmdUaW1lci5zdG9wKCk7CiAKLSAgICBD
YWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBtX2RvY3VtZW50LT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mb250
c1RvQmVnaW5Mb2FkaW5nLnNpemUoKTsgKytpKSB7CisgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIm
IGNhY2hlZFJlc291cmNlTG9hZGVyID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIo
KTsKKyAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBtX2ZvbnRzVG9CZWdpbkxvYWRpbmcpIHsK
ICAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkgaW4gYmVnaW5Mb2Fk
aW5nRm9udFNvb24oKS4KLSAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRlY3JlbWVudFJl
cXVlc3RDb3VudChtX2ZvbnRzVG9CZWdpbkxvYWRpbmdbaV0uZ2V0KCkpOworICAgICAgICBjYWNo
ZWRSZXNvdXJjZUxvYWRlci5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoZm9udEhhbmRsZS5nZXQoKSk7
CiAgICAgfQotCiAgICAgbV9mb250c1RvQmVnaW5Mb2FkaW5nLmNsZWFyKCk7CiAKLSAgICBtX2Rv
Y3VtZW50ID0gMDsKKyAgICBtX2RvY3VtZW50ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBDU1NGb250
U2VsZWN0b3I6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQqIGZvbnQpCkBAIC01NjAs
NyArNTU5LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKENh
Y2hlZEZvbnQqIGZvbnQpCiAgICAgLy8gSW5jcmVtZW50IHRoZSByZXF1ZXN0IGNvdW50IG5vdywg
aW4gb3JkZXIgdG8gcHJldmVudCBkaWRGaW5pc2hMb2FkIGZyb20gYmVpbmcgZGlzcGF0Y2hlZAog
ICAgIC8vIGFmdGVyIHRoaXMgZm9udCBoYXMgYmVlbiByZXF1ZXN0ZWQgYnV0IGJlZm9yZSBpdCBi
ZWdhbiBsb2FkaW5nLiBCYWxhbmNlZCBieQogICAgIC8vIGRlY3JlbWVudFJlcXVlc3RDb3VudCgp
IGluIGJlZ2luTG9hZFRpbWVyRmlyZWQoKSBhbmQgaW4gY2xlYXJEb2N1bWVudCgpLgotICAgIG1f
ZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmluY3JlbWVudFJlcXVlc3RDb3VudChm
b250KTsKKyAgICBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmluY3JlbWVudFJl
cXVlc3RDb3VudChmb250KTsKICAgICBtX2JlZ2luTG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKIH0KIApAQCAtNTcyLDE0ICs1NzEsMTQgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmJlZ2lu
TG9hZFRpbWVyRmlyZWQoKQogICAgIC8vIENTU0ZvbnRTZWxlY3RvciBjb3VsZCBnZXQgZGVsZXRl
ZCB2aWEgYmVnaW5Mb2FkSWZOZWVkZWQoKSBvciBsb2FkRG9uZSgpIHVubGVzcyBwcm90ZWN0ZWQu
CiAgICAgUmVmPENTU0ZvbnRTZWxlY3Rvcj4gcHJvdGVjdCgqdGhpcyk7CiAKLSAgICBDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBtX2RvY3VtZW50LT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZm9udHNUb0JlZ2lu
TG9hZGluZy5zaXplKCk7ICsraSkgewotICAgICAgICBmb250c1RvQmVnaW5Mb2FkaW5nW2ldLT5i
ZWdpbkxvYWRJZk5lZWRlZChjYWNoZWRSZXNvdXJjZUxvYWRlcik7CisgICAgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKTsKKyAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBmb250c1RvQmVnaW5Mb2Fk
aW5nKSB7CisgICAgICAgIGZvbnRIYW5kbGUtPmJlZ2luTG9hZElmTmVlZGVkKGNhY2hlZFJlc291
cmNlTG9hZGVyKTsKICAgICAgICAgLy8gQmFsYW5jZXMgaW5jcmVtZW50UmVxdWVzdENvdW50KCkg
aW4gYmVnaW5Mb2FkaW5nRm9udFNvb24oKS4KLSAgICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmRlY3JlbWVudFJlcXVlc3RDb3VudChmb250c1RvQmVnaW5Mb2FkaW5nW2ldLmdldCgpKTsKKyAg
ICAgICAgY2FjaGVkUmVzb3VyY2VMb2FkZXIuZGVjcmVtZW50UmVxdWVzdENvdW50KGZvbnRIYW5k
bGUuZ2V0KCkpOwogICAgIH0KICAgICAvLyBFbnN1cmUgdGhhdCBpZiB0aGUgcmVxdWVzdCBjb3Vu
dCByZWFjaGVzIHplcm8sIHRoZSBmcmFtZSBsb2FkZXIgd2lsbCBrbm93IGFib3V0IGl0LgotICAg
IGNhY2hlZFJlc291cmNlTG9hZGVyLT5sb2FkRG9uZSgwKTsKKyAgICBjYWNoZWRSZXNvdXJjZUxv
YWRlci5sb2FkRG9uZShudWxscHRyKTsKICAgICAvLyBOZXcgZm9udCBsb2FkcyBtYXkgYmUgdHJp
Z2dlcmVkIGJ5IGxheW91dCBhZnRlciB0aGUgZG9jdW1lbnQgbG9hZCBpcyBjb21wbGV0ZSBidXQg
YmVmb3JlIHdlIGhhdmUgZGlzcGF0Y2hlZAogICAgIC8vIGRpZEZpbmlzaExvYWRpbmcgZm9yIHRo
ZSBmcmFtZS4gTWFrZSBzdXJlIHRoZSBkZWxlZ2F0ZSBpcyBhbHdheXMgZGlzcGF0Y2hlZCBieSBj
aGVja2luZyBleHBsaWNpdGx5LgogICAgIGlmIChtX2RvY3VtZW50ICYmIG1fZG9jdW1lbnQtPmZy
YW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCBhZDJiNTg3ZjBi
ZTM2YTBmODViOGVmZDdjMTU5ZTI4ZGQwMGE4NjNkLi4xMWUzNzJlM2QyYTdlOWVkNmE1NGRmYTcx
OWFjNzNjOGVmYWFmYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKQEAg
LTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50
KikgY29uc3Q7CiAKLSAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
KSB7IH0KKyAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXImKSB7IH0K
ICAgICBQYXNzUmVmUHRyPENTU0dyYWRpZW50VmFsdWU+IGdyYWRpZW50V2l0aFN0eWxlc1Jlc29s
dmVkKFN0eWxlUmVzb2x2ZXIqKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCmluZGV4IGQyZjA0MmRkMGIxMTA2ZmJjMmRlZGNh
ZjkxMjBiY2ZkZTJmYWJmM2YuLjE3ZDNlZWI5ZTJiYzE0ZTZiZTc1MWM0NzIzYzMyNmJhNjNjMGNj
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAK
QEAgLTIwMCw3ICsyMDAsNyBAQCBib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omtub3duVG9C
ZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikgY29ucwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpsb2FkU3ViaW1hZ2VzKENh
Y2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKK3ZvaWQgQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVk
UmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgc3dpdGNoIChjbGFzc1R5cGUoKSkgewogICAgIGNhc2Ug
Q3Jvc3NmYWRlQ2xhc3M6CkBAIC0yMzksNyArMjM5LDcgQEAgYm9vbCBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjpzdWJpbWFnZUlzUGVuZGluZyhDU1NWYWx1ZSogdmFsdWUpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1DYWNoZWRJbWFnZSogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1h
Z2VGb3JDU1NWYWx1ZShDU1NWYWx1ZSogdmFsdWUsIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNo
ZWRSZXNvdXJjZUxvYWRlcikKK0NhY2hlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpj
YWNoZWRJbWFnZUZvckNTU1ZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKQogewogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmgKaW5kZXggN2Q5OWQ0MWVhNmE3NDA4M2NjODM0Mzg4YjMxZTU1MjQ4ODc3M2I5OS4uN2NjYWNj
YjQwN2QzNGQ5ZmQ5YWNjMzdhZGJlY2VkYzZmM2Y1ZjgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzUGVuZGluZygpIGNvbnN0OwogICAgIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0
IFJlbmRlckVsZW1lbnQqKSBjb25zdDsKIAotICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRS
ZXNvdXJjZUxvYWRlciopOworICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxv
YWRlciYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZShDbGFzc1R5
cGUpOwpAQCAtNjYsNyArNjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgSGFzaENvdW50ZWRT
ZXQ8UmVuZGVyRWxlbWVudCo+JiBjbGllbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRzOyB9
CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBDcm9zc2ZhZGUgYW5kIEZpbHRlci4KLSAg
ICBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUoQ1NTVmFsdWUqLCBD
YWNoZWRSZXNvdXJjZUxvYWRlciopOworICAgIHN0YXRpYyBDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2VGb3JDU1NWYWx1ZShDU1NWYWx1ZSosIENhY2hlZFJlc291cmNlTG9hZGVyJik7CiAgICAgc3Rh
dGljIGJvb2wgc3ViaW1hZ2VJc1BlbmRpbmcoQ1NTVmFsdWUqKTsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAppbmRleCAyMDEyZjViNWI3MjQzMjFhMjEy
NjZkYWU2MWVkYmI0NzBjNDliMDk2Li4yYjNjNWQxN2Y5OTY3YjU5YWVmY2QxNmIxNzZjNzBjNGUz
YzRiMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCkBAIC0xMDAs
MTEgKzEwMCw5IEBAIENTU0ltYWdlU2V0VmFsdWU6OkltYWdlV2l0aFNjYWxlIENTU0ltYWdlU2V0
VmFsdWU6OmJlc3RJbWFnZUZvclNjYWxlRmFjdG9yKCkKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAK
LVN0eWxlQ2FjaGVkSW1hZ2VTZXQqIENTU0ltYWdlU2V0VmFsdWU6OmNhY2hlZEltYWdlU2V0KENh
Y2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYg
b3B0aW9ucykKK1N0eWxlQ2FjaGVkSW1hZ2VTZXQqIENTU0ltYWdlU2V0VmFsdWU6OmNhY2hlZElt
YWdlU2V0KENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBBU1NFUlQobG9hZGVyKTsKLQotICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IGxvYWRlci0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBsb2FkZXIuZG9jdW1lbnQoKTsKICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdl
KCkpCiAgICAgICAgIG1fc2NhbGVGYWN0b3IgPSBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwog
ICAgIGVsc2UKQEAgLTEyMiw3ICsxMjAsNyBAQCBTdHlsZUNhY2hlZEltYWdlU2V0KiBDU1NJbWFn
ZVNldFZhbHVlOjpjYWNoZWRJbWFnZVNldChDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZAogICAg
ICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
KCkuY3NzKTsKICAgICAgICAgaWYgKG9wdGlvbnMucmVxdWVzdE9yaWdpblBvbGljeSgpID09IFBv
dGVudGlhbGx5Q3Jvc3NPcmlnaW5FbmFibGVkKQogICAgICAgICAgICAgdXBkYXRlUmVxdWVzdEZv
ckFjY2Vzc0NvbnRyb2wocmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpLCBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMoKSk7Ci0gICAgICAg
IGlmIChDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gY2FjaGVkSW1hZ2UgPSBsb2Fk
ZXItPnJlcXVlc3RJbWFnZShyZXF1ZXN0KSkgeworICAgICAgICBpZiAoQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkSW1hZ2U+IGNhY2hlZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShyZXF1
ZXN0KSkgewogICAgICAgICAgICAgZGV0YWNoUGVuZGluZ0ltYWdlKCk7CiAgICAgICAgICAgICBt
X2ltYWdlU2V0ID0gU3R5bGVDYWNoZWRJbWFnZVNldDo6Y3JlYXRlKGNhY2hlZEltYWdlLmdldCgp
LCBpbWFnZS5zY2FsZUZhY3RvciwgdGhpcyk7CiAgICAgICAgICAgICBtX2FjY2Vzc2VkQmVzdEZp
dEltYWdlID0gdHJ1ZTsKQEAgLTEzMiw3ICsxMzAsNyBAQCBTdHlsZUNhY2hlZEltYWdlU2V0KiBD
U1NJbWFnZVNldFZhbHVlOjpjYWNoZWRJbWFnZVNldChDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9h
ZAogICAgIHJldHVybiBpczxTdHlsZUNhY2hlZEltYWdlU2V0PihtX2ltYWdlU2V0LmdldCgpKSA/
IGRvd25jYXN0PFN0eWxlQ2FjaGVkSW1hZ2VTZXQ+KG1faW1hZ2VTZXQuZ2V0KCkpIDogbnVsbHB0
cjsKIH0KIAotU3R5bGVDYWNoZWRJbWFnZVNldCogQ1NTSW1hZ2VTZXRWYWx1ZTo6Y2FjaGVkSW1h
Z2VTZXQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKK1N0eWxlQ2FjaGVkSW1hZ2VTZXQq
IENTU0ltYWdlU2V0VmFsdWU6OmNhY2hlZEltYWdlU2V0KENhY2hlZFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpCiB7CiAgICAgcmV0dXJuIGNhY2hlZEltYWdlU2V0KGxvYWRlciwgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlU2V0VmFsdWUuaAppbmRleCAxYjA1MTBhZmJkNjA4OTUwMjhjNjZmMGY4NTQ1
ZWE4NWFiZGI4MDgxLi5hY2ZkNTU2ZDI2ZjMwMDdhZjFjNzg4OGZjZTY4ZGE4ZWNkMWU4N2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHVi
bGljOgogICAgIH0KICAgICB+Q1NTSW1hZ2VTZXRWYWx1ZSgpOwogCi0gICAgU3R5bGVDYWNoZWRJ
bWFnZVNldCogY2FjaGVkSW1hZ2VTZXQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmKTsKLSAgICBTdHlsZUNhY2hlZEltYWdlU2V0KiBjYWNoZWRJbWFn
ZVNldChDYWNoZWRSZXNvdXJjZUxvYWRlciopOworICAgIFN0eWxlQ2FjaGVkSW1hZ2VTZXQqIGNh
Y2hlZEltYWdlU2V0KENhY2hlZFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJik7CisgICAgU3R5bGVDYWNoZWRJbWFnZVNldCogY2FjaGVkSW1hZ2VTZXQoQ2FjaGVk
UmVzb3VyY2VMb2FkZXImKTsKIAogICAgIC8vIFJldHVybnMgYSBTdHlsZUNhY2hlZEltYWdlU2V0
IGlmIHRoZSBiZXN0IGZpdCBpbWFnZSBoYXMgYmVlbiBjYWNoZWQgYWxyZWFkeSwgb3RoZXJ3aXNl
IGEgU3R5bGVQZW5kaW5nSW1hZ2UuCiAgICAgU3R5bGVJbWFnZSogY2FjaGVkT3JQZW5kaW5nSW1h
Z2VTZXQoRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAppbmRleCA2
NWNmM2YzNjQ1YWZjNGI0MzFlMzU2NzFiMGJlODE0OTM4ZDg2ODgzLi5iM2Q5M2I2NjI1ZjYxNWQ2
NzRkMjlkOWQ0YzBkZGUyNWYxNTM1NDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUu
Y3BwCkBAIC03MSwyMyArNzEsMjEgQEAgU3R5bGVJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6Y2FjaGVk
T3JQZW5kaW5nSW1hZ2UoKQogICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwogfQogCi1TdHlsZUNh
Y2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjpjYWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRl
ciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitTdHlsZUNh
Y2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjpjYWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAg
QVNTRVJUKGxvYWRlcik7Ci0KICAgICBpZiAoIW1fYWNjZXNzZWRJbWFnZSkgewogICAgICAgICBt
X2FjY2Vzc2VkSW1hZ2UgPSB0cnVlOwogCi0gICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdChsb2FkZXItPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKG1f
dXJsKSksIG9wdGlvbnMpOworICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QobG9hZGVyLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKG1fdXJsKSksIG9w
dGlvbnMpOwogICAgICAgICBpZiAobV9pbml0aWF0b3JOYW1lLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMo
KS5jc3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXF1ZXN0LnNldEluaXRpYXRvciht
X2luaXRpYXRvck5hbWUpOwogCiAgICAgICAgIGlmIChvcHRpb25zLnJlcXVlc3RPcmlnaW5Qb2xp
Y3koKSA9PSBQb3RlbnRpYWxseUNyb3NzT3JpZ2luRW5hYmxlZCkKLSAgICAgICAgICAgIHVwZGF0
ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgp
LCBsb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIG9wdGlvbnMuYWxsb3dDcmVk
ZW50aWFscygpKTsKKyAgICAgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKHJl
cXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCBsb2FkZXIuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSwgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKCkpOwogCi0gICAgICAgIGlmIChD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gY2FjaGVkSW1hZ2UgPSBsb2FkZXItPnJl
cXVlc3RJbWFnZShyZXF1ZXN0KSkgeworICAgICAgICBpZiAoQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkSW1hZ2U+IGNhY2hlZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShyZXF1ZXN0KSkg
ewogICAgICAgICAgICAgZGV0YWNoUGVuZGluZ0ltYWdlKCk7CiAgICAgICAgICAgICBtX2ltYWdl
ID0gU3R5bGVDYWNoZWRJbWFnZTo6Y3JlYXRlKGNhY2hlZEltYWdlLmdldCgpKTsKICAgICAgICAg
fQpAQCAtOTYsNyArOTQsNyBAQCBTdHlsZUNhY2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjpjYWNo
ZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdAogICAgIHJldHVybiBp
czxTdHlsZUNhY2hlZEltYWdlPihtX2ltYWdlLmdldCgpKSA/IGRvd25jYXN0PFN0eWxlQ2FjaGVk
SW1hZ2U+KG1faW1hZ2UuZ2V0KCkpIDogbnVsbHB0cjsKIH0KIAotU3R5bGVDYWNoZWRJbWFnZSog
Q1NTSW1hZ2VWYWx1ZTo6Y2FjaGVkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikK
K1N0eWxlQ2FjaGVkSW1hZ2UqIENTU0ltYWdlVmFsdWU6OmNhY2hlZEltYWdlKENhY2hlZFJlc291
cmNlTG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgcmV0dXJuIGNhY2hlZEltYWdlKGxvYWRlciwgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAppbmRleCAyMzI1MzJhM2M3YWM1ODgyNTJkNzkwZjg0
NDA2ODE0NGFhYWRiNTZiLi4wY2Q4NmEwOWFhYTdlOWY1ZWQ0M2ZhNTllMmUyYmFhYzE0NTQ2MDkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKQEAgLTM5LDggKzM5LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8Q1NTSW1hZ2VWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJs
LCBTdHlsZUltYWdlKiBpbWFnZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbWFnZVZhbHVl
KHVybCwgaW1hZ2UpKTsgfQogICAgIH5DU1NJbWFnZVZhbHVlKCk7CiAKLSAgICBTdHlsZUNhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyYpOwotICAgIFN0eWxlQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKENhY2hl
ZFJlc291cmNlTG9hZGVyKik7CisgICAgU3R5bGVDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICBT
dHlsZUNhY2hlZEltYWdlKiBjYWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciYpOwogICAg
IC8vIFJldHVybnMgYSBTdHlsZUNhY2hlZEltYWdlIGlmIHRoZSBpbWFnZSBpcyBjYWNoZWQgYWxy
ZWFkeSwgb3RoZXJ3aXNlIGEgU3R5bGVQZW5kaW5nSW1hZ2UuCiAgICAgU3R5bGVJbWFnZSogY2Fj
aGVkT3JQZW5kaW5nSW1hZ2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oCmluZGV4IGQ1M2JkNzUwNmQ2YzdiYmRmMTAzZmJiNTM3YjNmNTEzOWZmMzMxM2Yu
LmZjMzRmZjUwMDEyYWNiNjFhYjI1NzBiMDU1ZTgzNTc5OWVlODBjYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTEwNTksNyArMTA1OSw3IEBAIGlu
bGluZSBWZWN0b3I8UmVmUHRyPE1hc2tJbWFnZU9wZXJhdGlvbj4+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydE1hc2tJbWFnCiAgICAgICAgICAgICAgICAgVVJMIHVybCA9IHN0eWxlUmVz
b2x2ZXIuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChjc3NVcmwpOwogCiAgICAgICAgICAgICAgICAg
Ym9vbCBpc0V4dGVybmFsRG9jdW1lbnQgPSBTVkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklS
ZWZlcmVuY2UoY3NzVXJsLCBzdHlsZVJlc29sdmVyLmRvY3VtZW50KCkpOwotICAgICAgICAgICAg
ICAgIG5ld01hc2tJbWFnZSA9IE1hc2tJbWFnZU9wZXJhdGlvbjo6Y3JlYXRlKG1hc2tJbWFnZVZh
bHVlLCBjc3NVcmwsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSwgaXNFeHRlcm5hbERvY3VtZW50
LCBzdHlsZVJlc29sdmVyLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSk7CisgICAg
ICAgICAgICAgICAgbmV3TWFza0ltYWdlID0gTWFza0ltYWdlT3BlcmF0aW9uOjpjcmVhdGUobWFz
a0ltYWdlVmFsdWUsIGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLCBpc0V4dGVybmFs
RG9jdW1lbnQsICZzdHlsZVJlc29sdmVyLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKGlzRXh0ZXJuYWxEb2N1bWVudCkKICAgICAgICAgICAg
ICAgICAgICAgc3R5bGVSZXNvbHZlci5zdGF0ZSgpLm1hc2tJbWFnZXNXaXRoUGVuZGluZ1NWR0Rv
Y3VtZW50cygpLmFwcGVuZChuZXdNYXNrSW1hZ2UpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDM0M2I0ZjRmNmRjZmVlYzc5YjkxYzIwZTEzZGMy
ODc5NjZiOTFlMzIuLjZkOWVjYWE1MDQ2ZjI1Yzg3MWQ1MmUzZWY0OWVmNzBkYjc4NzQxNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTIyMjksNyArMjIyOSw3IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdTVkdEb2N1bWVudHMoKQogICAgIGlmICghaGFz
RmlsdGVycyAmJiAhaGFzTWFza3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIENhY2hlZFJlc291
cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IHN0YXRlLmRvY3VtZW50KCkuY2FjaGVk
UmVzb3VyY2VMb2FkZXIoKTsKKyAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIgPSBzdGF0ZS5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAgICAg
CiAgICAgaWYgKGhhc0ZpbHRlcnMpIHsKICAgICAgICAgZm9yIChhdXRvJiBmaWx0ZXJPcGVyYXRp
b24gOiBzdGF0ZS5maWx0ZXJzV2l0aFBlbmRpbmdTVkdEb2N1bWVudHMoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKaW5kZXggZDE0MDI0ZGI4YmY1MDE2ZjdjNTdlZWY2ZTgw
YjgxNDQ5MWY3NDcxMi4uNWQxYzBkNmZhNTFhNmQxNGVhNDJjN2EzNGEwMWRiMjEyMjFlYTg5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKQEAgLTk2LDEwICs5Niw2IEBA
IHZvaWQgU3R5bGVSdWxlSW1wb3J0OjpyZXF1ZXN0U3R5bGVTaGVldCgpCiAgICAgaWYgKCFkb2N1
bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hl
ZFJlc291cmNlTG9hZGVyID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAg
aWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmV0dXJuOwotCiAgICAgVVJMIGFi
c1VSTDsKICAgICBpZiAoIW1fcGFyZW50U3R5bGVTaGVldC0+YmFzZVVSTCgpLmlzTnVsbCgpKQog
ICAgICAgICAvLyB1c2UgcGFyZW50IHN0eWxlaGVldCdzIFVSTCBhcyB0aGUgYmFzZSBVUkwKQEAg
LTEyMiw5ICsxMTgsOSBAQCB2b2lkIFN0eWxlUnVsZUltcG9ydDo6cmVxdWVzdFN0eWxlU2hlZXQo
KQogICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAgICBtX2NhY2hlZFNoZWV0LT5yZW1vdmVD
bGllbnQoJm1fc3R5bGVTaGVldENsaWVudCk7CiAgICAgaWYgKG1fcGFyZW50U3R5bGVTaGVldC0+
aXNVc2VyU3R5bGVTaGVldCgpKQotICAgICAgICBtX2NhY2hlZFNoZWV0ID0gY2FjaGVkUmVzb3Vy
Y2VMb2FkZXItPnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChyZXF1ZXN0KTsKKyAgICAgICAgbV9j
YWNoZWRTaGVldCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RVc2Vy
Q1NTU3R5bGVTaGVldChyZXF1ZXN0KTsKICAgICBlbHNlCi0gICAgICAgIG1fY2FjaGVkU2hlZXQg
PSBjYWNoZWRSZXNvdXJjZUxvYWRlci0+cmVxdWVzdENTU1N0eWxlU2hlZXQocmVxdWVzdCk7Cisg
ICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5y
ZXF1ZXN0Q1NTU3R5bGVTaGVldChyZXF1ZXN0KTsKICAgICBpZiAobV9jYWNoZWRTaGVldCkgewog
ICAgICAgICAvLyBpZiB0aGUgaW1wb3J0IHJ1bGUgaXMgaXNzdWVkIGR5bmFtaWNhbGx5LCB0aGUg
c2hlZXQgbWF5IGJlCiAgICAgICAgIC8vIHJlbW92ZWQgZnJvbSB0aGUgcGVuZGluZyBzaGVldCBj
b3VudCwgc28gbGV0IHRoZSBkb2Mga25vdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZjY1
MDQyZjhjZTRiZTM1ZjMyMGQ5NzE2YjZjY2U1YjAwM2JjM2VlMC4uZjlhZjY0MzM1OTA2M2Q4NDA3
MGIyYTEyZDlhMmUyZTFkYjE1MmU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MTUs
NiArNDE1LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1faWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKGZhbHNlKQogICAgICwgbV9wZW5kaW5nU2hlZXRMYXlvdXQoTm9MYXlvdXRX
aXRoUGVuZGluZ1NoZWV0cykKICAgICAsIG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX2NhY2hlZFJl
c291cmNlTG9hZGVyKG1fZnJhbWUgPyBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+KG1fZnJhbWUt
PmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkp
IDogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShudWxscHRyKSkKICAgICAsIG1fYWN0aXZl
UGFyc2VyQ291bnQoMCkKICAgICAsIG1fd2VsbEZvcm1lZChmYWxzZSkKICAgICAsIG1fcHJpbnRp
bmcoZmFsc2UpCkBAIC01MjgsMTAgKzUyOSw2IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMsIHVuc2lnCiAg
ICAgaWYgKChmcmFtZSAmJiBmcmFtZS0+b3duZXJFbGVtZW50KCkpIHx8ICF1cmwuaXNFbXB0eSgp
KQogICAgICAgICBzZXRVUkwodXJsKTsKIAotICAgIGlmIChtX2ZyYW1lKQotICAgICAgICBtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyID0gJm1fZnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgaWYgKCFtX2NhY2hlZFJlc291cmNl
TG9hZGVyKQotICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyID0gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmNyZWF0ZShudWxscHRyKTsKICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXRE
b2N1bWVudCh0aGlzKTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC02MjUsNyAr
NjIyLDYgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgLy8gbG9hZCB0aGUgaW5pdGlhbCBl
bXB0eSBkb2N1bWVudCBhbmQgdGhlIFNWR0RvY3VtZW50IHdpdGggdGhlIHNhbWUgRG9jdW1lbnRM
b2FkZXIpLgogICAgIGlmIChtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpID09IHRo
aXMpCiAgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnNldERvY3VtZW50KG51bGxwdHIp
OwotICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuY2xlYXIoKTsKIAogICAgIC8vIFdlIG11c3Qg
Y2FsbCBjbGVhclJhcmVEYXRhKCkgaGVyZSBzaW5jZSBhIERvY3VtZW50IGNsYXNzIGluaGVyaXRz
IFRyZWVTY29wZQogICAgIC8vIGFzIHdlbGwgYXMgTm9kZS4gU2VlIGEgY29tbWVudCBvbiBUcmVl
U2NvcGUuaCBmb3IgdGhlIHJlYXNvbi4KQEAgLTM4MTYsOCArMzgxMiw3IEBAIHZvaWQgRG9jdW1l
bnQ6OmRpc3BhdGNoV2luZG93TG9hZEV2ZW50KCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZG9t
V2luZG93LT5kaXNwYXRjaExvYWRFdmVudCgpOwogICAgIG1fbG9hZEV2ZW50RmluaXNoZWQgPSB0
cnVlOwotICAgIGlmIChtX2NhY2hlZFJlc291cmNlTG9hZGVyKQotICAgICAgICBtX2NhY2hlZFJl
c291cmNlTG9hZGVyLT5kb2N1bWVudERpZEZpbmlzaExvYWRFdmVudCgpOworICAgIG1fY2FjaGVk
UmVzb3VyY2VMb2FkZXItPmRvY3VtZW50RGlkRmluaXNoTG9hZEV2ZW50KCk7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OmVucXVldWVXaW5kb3dFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggZjQ3MzQ5NGQ3YWI1ZjZlNWQ0YjlhNzBiMzgzZTZmZjRlM2Nj
MzBmZC4uOGM1OGYyYjNhZDY4M2Y5YjA1ZWI4M2YzNTNhOTRmZjI0NGMxMDFmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTYyMyw3ICs2MjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gYXV0byBpcyBz
cGVjaWZpZWQuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWdlU2l6ZUFuZE1hcmdpbnNJblBp
eGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JiBtYXJnaW5Ub3AsIGlu
dCYgbWFyZ2luUmlnaHQsIGludCYgbWFyZ2luQm90dG9tLCBpbnQmIG1hcmdpbkxlZnQpOwogCi0g
ICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCkgeyByZXR1cm4g
bV9jYWNoZWRSZXNvdXJjZUxvYWRlci5nZXQoKTsgfQorICAgIENhY2hlZFJlc291cmNlTG9hZGVy
JiBjYWNoZWRSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7
IH0KIAogICAgIHZvaWQgZGlkQmVjb21lQ3VycmVudERvY3VtZW50SW5GcmFtZSgpOwogICAgIHZv
aWQgZGVzdHJveVJlbmRlclRyZWUoKTsKQEAgLTEzOTUsNyArMTM5NSw3IEBAIHByaXZhdGU6CiAg
ICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9kb21XaW5kb3c7CiAK
LSAgICBSZWZQdHI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7
CisgICAgUmVmPENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2NhY2hlZFJlc291cmNlTG9hZGVyOwog
ICAgIFJlZlB0cjxEb2N1bWVudFBhcnNlcj4gbV9wYXJzZXI7CiAgICAgdW5zaWduZWQgbV9hY3Rp
dmVQYXJzZXJDb3VudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmNwcAppbmRleCBlYzhmYTE5OGQzNzA2MTQ0ODIzODc3NWViZWY4MjFmY2E4MTE2ZmVmLi5h
ODEzYzcyNzg3NjBiMTM4YzZiNjZlMDg5YzNmYmNhNmY1YzU3YzUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZv
aWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICAgICAg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50KCku
Y29tcGxldGVVUkwoaHJlZikpKTsKICNpZiBFTkFCTEUoWFNMVCkKICAgICAgICAgICAgIGlmICht
X2lzWFNMKQotICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLmNhY2hl
ZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RYU0xTdHlsZVNoZWV0KHJlcXVlc3QpOworICAgICAg
ICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVy
KCkucmVxdWVzdFhTTFN0eWxlU2hlZXQocmVxdWVzdCk7CiAgICAgICAgICAgICBlbHNlCiAjZW5k
aWYKICAgICAgICAgICAgIHsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0
cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KCkKICAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9
IGRvY3VtZW50KCkuY2hhcnNldCgpOwogICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0Q2hhcnNl
dChjaGFyc2V0KTsKIAotICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgp
LmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RDU1NTdHlsZVNoZWV0KHJlcXVlc3QpOwor
ICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNl
TG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQocmVxdWVzdCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAobV9jYWNoZWRTaGVldCkKICAgICAgICAgICAgICAgICBtX2NhY2hlZFNo
ZWV0LT5hZGRDbGllbnQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5k
ZXggYzczMWI4NzRmYjZkZjA0ODIwNTMzMWFjNzM2Zjk4MGE0NDQxNmUwZC4uM2VhYWUyY2JlYjFm
NmIzNzkyY2RhOGI4NWYyOTFkZGEyMzNjNmMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cmVxdWVzdFNj
cmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVybCkKICAgICAgICAgcmVxdWVzdC5zZXRDaGFyc2V0
KHNjcmlwdENoYXJzZXQoKSk7CiAgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKCZlbGVtZW50
KCkpOwogCi0gICAgICAgIG1fY2FjaGVkU2NyaXB0ID0gbV9lbGVtZW50LmRvY3VtZW50KCkuY2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdFNjcmlwdChyZXF1ZXN0KTsKKyAgICAgICAgbV9j
YWNoZWRTY3JpcHQgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LnJlcXVlc3RTY3JpcHQocmVxdWVzdCk7CiAgICAgICAgIG1faXNFeHRlcm5hbFNjcmlwdCA9IHRy
dWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZmQ3ZGEwMmEwZDI0
MjBjZGEyZjUwMDY0OWQ0N2FkMmM3MmZjZTk5ZS4uMTVkOWI0OTRiYTI3ZTljYzEyNWMxODNhMDRh
NTg4OTJhNzU2MzViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTI4MSw4ICsx
MjgxLDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiAgICAg
aWYgKCFjYW5QYXN0ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgdXBkYXRlTWFya2Vyc0Zvcldv
cmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFsc2UpOwotICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBs
b2FkZXIgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgUmVzb3VyY2VD
YWNoZVZhbGlkYXRpb25TdXBwcmVzc29yIHZhbGlkYXRpb25TdXBwcmVzc29yKGxvYWRlcik7Cisg
ICAgUmVzb3VyY2VDYWNoZVZhbGlkYXRpb25TdXBwcmVzc29yIHZhbGlkYXRpb25TdXBwcmVzc29y
KGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSk7CiAgICAgaWYgKG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkKICAgICAgICAg
cGFzdGVXaXRoUGFzdGVib2FyZCgmcGFzdGVib2FyZCwgdHJ1ZSk7CiAgICAgZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDRhNTc2YWM0Y2U4MzlkMjY5NGNi
N2U1YWJhMmJiZWNmMjRkZmJiNTAuLjAwOTFhNzFmYWNhYzQwMjVjZTA3MTVhMGEwZWM3MzFhMmQ4
N2E3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTIzMiw3
ICsyMzIsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAgICAgICAgIFJlc291
cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5ID0gaXNBY3RpdmUgPyBSZXNvdXJjZUxvYWRQcmlvcml0
eVVucmVzb2x2ZWQgOiBSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3c7CiAgICAgICAgIENhY2hl
ZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChkb2N1bWVudCgpLmNvbXBs
ZXRlVVJMKHVybCkpLCBjaGFyc2V0LCBwcmlvcml0eSk7CiAgICAgICAgIHJlcXVlc3Quc2V0SW5p
dGlhdG9yKHRoaXMpOwotICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0Q1NTU3R5bGVTaGVldChyZXF1ZXN0KTsKKyAgICAgICAg
bV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0
Q1NTU3R5bGVTaGVldChyZXF1ZXN0KTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX2NhY2hlZFNo
ZWV0KQogICAgICAgICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmQxZDE2YzRhYzIyODRkMDc3
YjExNTk3NDNhMmIzMDZhZjY3YjRiYy4uZDc5Y2Y3NTg1NTAxZDAwOTJmMjBlY2M4YTNlYmNkNjU4
YWM5M2QxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01
NzIxLDcgKzU3MjEsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySXNMb29w
aW5nKCkgY29uc3QKIAogQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogewotICAgIHJldHVybiBkb2N1bWVudCgp
LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CisgICAgcmV0dXJuICZkb2N1bWVudCgpLmNhY2hlZFJl
c291cmNlTG9hZGVyKCk7CiB9CiAKIFBhc3NSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyPiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJDbGllbnQ+IGNsaWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2Fk
ZXIuY3BwCmluZGV4IDNjN2I3YWQxYjg5MmM1NTQxMWI0ZTcyYjYzOTEzMTBmOWM5NmNlY2EuLjVl
NzlkNGMxMTA2MDYwNDA0MzRmNDc0NDg4MWVkNjA1OWY2NGI2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcApAQCAtNzMs
NyArNzMsNyBAQCB2b2lkIEhUTUxSZXNvdXJjZVByZWxvYWRlcjo6cHJlbG9hZChzdGQ6OnVuaXF1
ZV9wdHI8UHJlbG9hZFJlcXVlc3Q+IHByZWxvYWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIENh
Y2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gcHJlbG9hZC0+cmVzb3VyY2VSZXF1ZXN0KG1f
ZG9jdW1lbnQpOwotICAgIG1fZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cHJlbG9h
ZChwcmVsb2FkLT5yZXNvdXJjZVR5cGUoKSwgcmVxdWVzdCwgcHJlbG9hZC0+Y2hhcnNldCgpKTsK
KyAgICBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucHJlbG9hZChwcmVsb2FkLT5y
ZXNvdXJjZVR5cGUoKSwgcmVxdWVzdCwgcHJlbG9hZC0+Y2hhcnNldCgpKTsKIH0KIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGZk
NzMzZDY1NjdmNzc4YTZkMGI0YTFkZjYzYTY4MGMwMmZkNzQ3ZWIuLmY5MWY3ZWVhMWY1MmRlMzMy
YWFjOGNhMjk5ZDdhZDg4NWU1YTQyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0yNTUsNyArMjU1LDcgQEAgU3RyaW5nIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNh
Y2hlZFJlc291cmMKIAogQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVk
UmVzb3VyY2UoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICBDYWNoZWRSZXNv
dXJjZSogY2FjaGVkUmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVk
UmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5jYWNo
ZWRSZXNvdXJjZSh1cmwpOwogICAgIGlmICghY2FjaGVkUmVzb3VyY2UpIHsKICAgICAgICAgUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5H
KQpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNo
ZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgVmVjdG9yPENhY2hlZFJl
c291cmNlKj4gcmVzdWx0OwogCi0gICAgZm9yIChhdXRvJiBjYWNoZWRSZXNvdXJjZUhhbmRsZSA6
IGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5hbGxDYWNoZWRSZXNv
dXJjZXMoKS52YWx1ZXMoKSkgeworICAgIGZvciAoYXV0byYgY2FjaGVkUmVzb3VyY2VIYW5kbGUg
OiBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5hbGxDYWNoZWRSZXNv
dXJjZXMoKS52YWx1ZXMoKSkgewogICAgICAgICBhdXRvKiBjYWNoZWRSZXNvdXJjZSA9IGNhY2hl
ZFJlc291cmNlSGFuZGxlLmdldCgpOwogICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2UtPnJlc291
cmNlUmVxdWVzdCgpLmhpZGRlbkZyb21JbnNwZWN0b3IoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcAppbmRleCBhNzM3MTgyNDYzOTY2ODkwZjllZDg4OWFiOTY5Yjk3NzNlYWQxNTliLi45NTI5
ODExODJkMGQzZDRiZWRmZmEwNGIxZDNiM2UxYTdkOTMyYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzY2LDcgKzM2
Niw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAgICAgICAgIG5ld1JlcXVlc3Quc2V0SW5p
dGlhdG9yKG1fb3B0aW9ucy5pbml0aWF0b3IpOwogI2VuZGlmCiAgICAgICAgIEFTU0VSVCghbV9y
ZXNvdXJjZSk7Ci0gICAgICAgIG1fcmVzb3VyY2UgPSBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNl
TG9hZGVyKCktPnJlcXVlc3RSYXdSZXNvdXJjZShuZXdSZXF1ZXN0KTsKKyAgICAgICAgbV9yZXNv
dXJjZSA9IG1fZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3Vy
Y2UobmV3UmVxdWVzdCk7CiAgICAgICAgIGlmIChtX3Jlc291cmNlKSB7CiAgICAgICAgICAgICBp
ZiAobV9yZXNvdXJjZS0+bG9hZGVyKCkpIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIgPSBtX3Jlc291cmNlLT5sb2FkZXIoKS0+aWRlbnRpZmllcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNzIzZWFjMmUxODRiMDUyNWNiYWIyZmNk
NDU5NWUyNDQ2Yzg1M2Y0YS4uYTk1OTY5ZmI1NDc3OThiYmQ5MjYxZTg4MDU3NGZkMjFiODczNjE4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC03MTMsOCArNzEzLDgg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQmVnaW5Eb2N1bWVudChib29sIGRpc3BhdGNoKQogICAg
IG1fZnJhbWUuZG9jdW1lbnQoKS0+aW5pdENvbnRlbnRTZWN1cml0eVBvbGljeSgpOwogCiAgICAg
Y29uc3QgU2V0dGluZ3MmIHNldHRpbmdzID0gbV9mcmFtZS5zZXR0aW5ncygpOwotICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0SW1hZ2VzRW5hYmxlZChz
ZXR0aW5ncy5hcmVJbWFnZXNFbmFibGVkKCkpOwotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFnZXMoc2V0dGluZ3MubG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5KCkpOworICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS5zZXRJbWFnZXNFbmFibGVkKHNldHRpbmdzLmFyZUltYWdlc0VuYWJsZWQoKSk7
CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnNldEF1dG9M
b2FkSW1hZ2VzKHNldHRpbmdzLmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsKIAogICAgIGlm
IChtX2RvY3VtZW50TG9hZGVyKSB7CiAgICAgICAgIFN0cmluZyBkbnNQcmVmZXRjaENvbnRyb2wg
PSBtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6WEROU1ByZWZldGNoQ29udHJvbCk7CkBAIC04MTEsNyArODExLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y2hlY2tDb21wbGV0ZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTdGls
bCB3YWl0aW5nIGZvciBpbWFnZXMvc2NyaXB0cz8KLSAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgp
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0Q291bnQoKSkKKyAgICBpZiAobV9mcmFt
ZS5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RDb3VudCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBTdGlsbCB3YWl0aW5nIGZvciBlbGVtZW50cyB0aGF0IGRv
bid0IGdvIHRocm91Z2ggYSBGcmFtZUxvYWRlcj8KQEAgLTI0NDcsMTEgKzI0NDcsMTEgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGUoKQogaW50IEZyYW1lTG9hZGVyOjpudW1Q
ZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHMoYm9vbCByZWN1cnNlKSBjb25zdAogewogICAgIGlmICgh
cmVjdXJzZSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS0+cmVxdWVzdENvdW50KCk7CisgICAgICAgIHJldHVybiBtX2ZyYW1lLmRvY3Vt
ZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENvdW50KCk7CiAKICAgICBpbnQg
Y291bnQgPSAwOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fZnJhbWU7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCZtX2ZyYW1lKSkKLSAgICAgICAgY291bnQg
Kz0gZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RDb3Vu
dCgpOworICAgICAgICBjb3VudCArPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS5yZXF1ZXN0Q291bnQoKTsKICAgICByZXR1cm4gY291bnQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDhiNTU2YWQzMmVhODJlNzI4Zjk1NzljOTE5
NTVjNzU4ZjJjMDAyZjcuLmQ5YzFiZDMwYThmODBjZjcwYzVhNzhiMmU0YjcxY2FhNjhiNmE1ODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAtMTg4LDE1ICsxODgsMTUg
QEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKG1fbG9hZE1hbnVhbGx5KSB7Ci0gICAgICAgICAgICBib29sIGF1dG9Mb2FkT3Ro
ZXJJbWFnZXMgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5hdXRvTG9hZEltYWdl
cygpOwotICAgICAgICAgICAgZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0
b0xvYWRJbWFnZXMoZmFsc2UpOworICAgICAgICAgICAgYm9vbCBhdXRvTG9hZE90aGVySW1hZ2Vz
ID0gZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5hdXRvTG9hZEltYWdlcygpOworICAg
ICAgICAgICAgZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5zZXRBdXRvTG9hZEltYWdl
cyhmYWxzZSk7CiAgICAgICAgICAgICBuZXdJbWFnZSA9IG5ldyBDYWNoZWRJbWFnZShyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLCBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCktPnNlc3Npb25J
RCgpKTsKICAgICAgICAgICAgIG5ld0ltYWdlLT5zZXRMb2FkaW5nKHRydWUpOwotICAgICAgICAg
ICAgbmV3SW1hZ2UtPnNldE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKGRvY3VtZW50LmNhY2hl
ZFJlc291cmNlTG9hZGVyKCkpOwotICAgICAgICAgICAgZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS0+bV9kb2N1bWVudFJlc291cmNlcy5zZXQobmV3SW1hZ2UtPnVybCgpLCBuZXdJbWFn
ZS5nZXQoKSk7Ci0gICAgICAgICAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5z
ZXRBdXRvTG9hZEltYWdlcyhhdXRvTG9hZE90aGVySW1hZ2VzKTsKKyAgICAgICAgICAgIG5ld0lt
YWdlLT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigmZG9jdW1lbnQuY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKSk7CisgICAgICAgICAgICBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
Lm1fZG9jdW1lbnRSZXNvdXJjZXMuc2V0KG5ld0ltYWdlLT51cmwoKSwgbmV3SW1hZ2UuZ2V0KCkp
OworICAgICAgICAgICAgZG9jdW1lbnQuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5zZXRBdXRvTG9h
ZEltYWdlcyhhdXRvTG9hZE90aGVySW1hZ2VzKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBuZXdJbWFnZSA9IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RJbWFn
ZShyZXF1ZXN0KTsKKyAgICAgICAgICAgIG5ld0ltYWdlID0gZG9jdW1lbnQuY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS5yZXF1ZXN0SW1hZ2UocmVxdWVzdCk7CiAKICAgICAgICAgLy8gSWYgd2UgZG8g
bm90IGhhdmUgYW4gaW1hZ2UgaGVyZSwgaXQgbWVhbnMgdGhhdCBhIGNyb3NzLXNpdGUKICAgICAg
ICAgLy8gdmlvbGF0aW9uIG9jY3VycmVkLCBvciB0aGF0IHRoZSBpbWFnZSB3YXMgYmxvY2tlZCB2
aWEgQ29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IGFiOWViZWFm
OGM2YmYwNjU2ZWZhOGIyZWE2YzM2MGZkYTRlMjJjMGUuLjJmZmFmNjBiNWQ5ZmM5MzczNTM0Nzcy
ZTJlODBiMmE1MTg4NzdjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAg
LTExNyw5ICsxMTcsOSBAQCBib29sIExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtSZWxB
dHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiB0eQogICAgICAgICAKICAgICAg
ICAgaWYgKG1fY2FjaGVkTGlua1Jlc291cmNlKSB7CiAgICAgICAgICAgICBtX2NhY2hlZExpbmtS
ZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotICAgICAgICAgICAgbV9jYWNoZWRMaW5rUmVz
b3VyY2UgPSAwOworICAgICAgICAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSBudWxscHRyOwog
ICAgICAgICB9Ci0gICAgICAgIG1fY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1lbnQtPmNhY2hl
ZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RMaW5rUmVzb3VyY2UodHlwZSwgbGlua1JlcXVlc3Qp
OworICAgICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZSA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLnJlcXVlc3RMaW5rUmVzb3VyY2UodHlwZSwgbGlua1JlcXVlc3QpOwogICAgICAg
ICBpZiAobV9jYWNoZWRMaW5rUmVzb3VyY2UpCiAgICAgICAgICAgICBtX2NhY2hlZExpbmtSZXNv
dXJjZS0+YWRkQ2xpZW50KHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
ZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4N2RlM2M2NWI3ZjkzY2E1NDk0YWRiMmM2MTg4
MDhiM2Y0NDYzZGM0Li4wMDE4ZWJlZmQ5ZjViMGExMzc5YjAyMWJhYjU3M2U5NTQzZWRmMjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02
Niw4ICs2Niw3IEBAIGJvb2wgTWVkaWFSZXNvdXJjZUxvYWRlcjo6c3RhcnQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkT3B0aW9ucyBvcHRpCiAKICAgICBtX2RpZFBhc3NBY2Nl
c3NDb250cm9sQ2hlY2sgPSBmYWxzZTsKIAotICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIgPSBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgbV9yZXNvdXJjZSA9
IGxvYWRlciA/IGxvYWRlci0+cmVxdWVzdFJhd1Jlc291cmNlKGNhY2hlUmVxdWVzdCkgOiBudWxs
cHRyOworICAgIG1fcmVzb3VyY2UgPSBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCku
cmVxdWVzdFJhd1Jlc291cmNlKGNhY2hlUmVxdWVzdCk7CiAgICAgaWYgKCFtX3Jlc291cmNlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDcyNThkOGExN2M5NzU5NjMzY2Y3NDYzYzA3MzI3ZjRjY2JhMWUz
MjUuLmFhNWMyY2QwODM5ZmQzMDBlZDM2ZmY0YmYwYjdmZTVlN2M5NTYzOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTQsMTYgKzU0LDE2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVm
Q291bnRlZExlYWtDb3VudGVyLCBzdWJyZXNvdXJjZUxvYWRlckNvdW50ZXIsICgiU3VicmVzb3Vy
Y2VMb2FkZXIiKSk7CiAKLVN1YnJlc291cmNlTG9hZGVyOjpSZXF1ZXN0Q291bnRUcmFja2VyOjpS
ZXF1ZXN0Q291bnRUcmFja2VyKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxv
YWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQorU3VicmVzb3VyY2VMb2FkZXI6OlJlcXVl
c3RDb3VudFRyYWNrZXI6OlJlcXVlc3RDb3VudFRyYWNrZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXIm
IGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgOiBt
X2NhY2hlZFJlc291cmNlTG9hZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKQogICAgICwgbV9yZXNv
dXJjZShyZXNvdXJjZSkKIHsKLSAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5pbmNyZW1lbnRS
ZXF1ZXN0Q291bnQobV9yZXNvdXJjZSk7CisgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci5pbmNy
ZW1lbnRSZXF1ZXN0Q291bnQobV9yZXNvdXJjZSk7CiB9CiAKIFN1YnJlc291cmNlTG9hZGVyOjpS
ZXF1ZXN0Q291bnRUcmFja2VyOjp+UmVxdWVzdENvdW50VHJhY2tlcigpCiB7Ci0gICAgbV9jYWNo
ZWRSZXNvdXJjZUxvYWRlci0+ZGVjcmVtZW50UmVxdWVzdENvdW50KG1fcmVzb3VyY2UpOworICAg
IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuZGVjcmVtZW50UmVxdWVzdENvdW50KG1fcmVzb3VyY2Up
OwogfQogCiBTdWJyZXNvdXJjZUxvYWRlcjo6U3VicmVzb3VyY2VMb2FkZXIoRnJhbWUqIGZyYW1l
LCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYg
b3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXgg
ZTI3MGYyNGUwMDliNDI4NGU3MTllMDBlYmE0OWUwNGNhNzU0NzBiYi4uZGYwNDMyYWRjYTE0Yjk4
YjQ0MDFiYWI0YjIyZmY4NTA5ZmY1ZTM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmgKQEAgLTEwNywxMCArMTA3LDEwIEBAIHByaXZhdGU6CiAKICAgICBjbGFz
cyBSZXF1ZXN0Q291bnRUcmFja2VyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlcXVlc3RDb3Vu
dFRyYWNrZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOworICAgICAg
ICBSZXF1ZXN0Q291bnRUcmFja2VyKENhY2hlZFJlc291cmNlTG9hZGVyJiwgQ2FjaGVkUmVzb3Vy
Y2UqKTsKICAgICAgICAgflJlcXVlc3RDb3VudFRyYWNrZXIoKTsKICAgICBwcml2YXRlOgotICAg
ICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsKKyAgICAg
ICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAgICAgICAg
IENhY2hlZFJlc291cmNlKiBtX3Jlc291cmNlOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggOTk0Y2VkZDk2ODQxMjc3MDI1MTg5NTk1ZDVj
NmQ4NjljZDYwODM3My4uYjg1MDU1ZGUyNGYxMjU4NTczNTQwMzQ0NDE0YTE3NDcwYWRkMjU5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTE2OSw4ICsx
NjksNyBAQCBib29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudC0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKTsKLSAgICBtX3Jlc291cmNlID0gY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJl
cXVlc3RUZXh0VHJhY2soY3VlUmVxdWVzdCk7CisgICAgbV9yZXNvdXJjZSA9IGRvY3VtZW50LT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RUZXh0VHJhY2soY3VlUmVxdWVzdCk7CiAgICAg
aWYgKCFtX3Jlc291cmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCBjNDg4MDdmMzYyNmE4ZjA1NzIyYjBh
MDUyYmE3OTBjYTcyODNjMDQxLi44ZjNlODg4M2Y3NWU2NTliZDFjNWY3N2I5Mzc3YTZhNzZkNTQx
Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIENhY2hlZEZvbnQ6On5DYWNoZWRGb250KCkKIHsKIH0KIAotdm9pZCBDYWNo
ZWRGb250Ojpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJiBvcHRpb25zKQordm9pZCBDYWNoZWRGb250Ojpsb2FkKENhY2hlZFJlc291cmNlTG9h
ZGVyJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIERv
bid0IGxvYWQgdGhlIGZpbGUgeWV0LiAgV2FpdCBmb3IgYW4gYWNjZXNzIGJlZm9yZSB0cmlnZ2Vy
aW5nIHRoZSBsb2FkLgogICAgIHNldExvYWRpbmcodHJ1ZSk7CkBAIC04NCwxMSArODQsMTEgQEAg
dm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICBj
aGVja05vdGlmeSgpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmJlZ2luTG9hZElmTmVlZGVkKENh
Y2hlZFJlc291cmNlTG9hZGVyKiBkbCkKK3ZvaWQgQ2FjaGVkRm9udDo6YmVnaW5Mb2FkSWZOZWVk
ZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKICAgICBpZiAoIW1fbG9hZEluaXRp
YXRlZCkgewogICAgICAgICBtX2xvYWRJbml0aWF0ZWQgPSB0cnVlOwotICAgICAgICBDYWNoZWRS
ZXNvdXJjZTo6bG9hZChkbCwgbV9vcHRpb25zKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2U6Omxv
YWQobG9hZGVyLCBtX29wdGlvbnMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKaW5kZXggYTkzYTY1MTY2MjJkODczODI4YTU3OTFiMjZlOTdiYWFk
ZGIwMGVhOC4uNDQ3MDJmZjZiYjFiN2YzMWNhZTUxNTMxOTM1ZTBiMjU2MTQ5NmNkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICBDYWNoZWRGb250KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlc3Npb25JRCwg
VHlwZSA9IEZvbnRSZXNvdXJjZSk7CiAgICAgdmlydHVhbCB+Q2FjaGVkRm9udCgpOwogCi0gICAg
dm9pZCBiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlciogZGwpOworICAgIHZv
aWQgYmVnaW5Mb2FkSWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImKTsKICAgICB2aXJ0dWFs
IGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5p
dGlhdGVkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoYm9vbCBl
eHRlcm5hbFNWRywgY29uc3QgQXRvbWljU3RyaW5nJiByZW1vdGVVUkkpOwpAQCAtNjMsNyArNjMs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja05vdGlmeSgpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGxvYWQo
Q2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCmluZGV4IDE4NDBiN2I2OWNlNDYzNGVhMDViNTdkODMzZGYwOTA5MjA1YTk5ZmYuLjNkNzIx
MTgwYTcxYmFkZTMyNTNkMWEyYzAyNWQwM2FlMjljYjE2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTA3LDkgKzEwNyw5IEBAIENhY2hlZElt
YWdlOjp+Q2FjaGVkSW1hZ2UoKQogICAgIGNsZWFySW1hZ2UoKTsKIH0KIAotdm9pZCBDYWNoZWRJ
bWFnZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgQ2FjaGVkSW1hZ2U6Omxv
YWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxv
YWRlciB8fCBjYWNoZWRSZXNvdXJjZUxvYWRlci0+YXV0b0xvYWRJbWFnZXMoKSkKKyAgICBpZiAo
Y2FjaGVkUmVzb3VyY2VMb2FkZXIuYXV0b0xvYWRJbWFnZXMoKSkKICAgICAgICAgQ2FjaGVkUmVz
b3VyY2U6OmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogICAgIGVsc2UKICAg
ICAgICAgc2V0TG9hZGluZyhmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCmluZGV4IGE3MDM0Mjc3ZjBiMzA5ZjY4MTFkODA3NDQ2NWMyNDg4NmQxNjMyMDMu
LmU2Nzk4OGVjZDI4N2QzZWI3YzQwNGY4ZWZmZWU3MWI5ODJkNmE1MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNNYW51YWxseUNhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYW51YWxs
eUNhY2hlZDsgfQogICAgIHZpcnR1YWwgYm9vbCBtdXN0UmV2YWxpZGF0ZUR1ZVRvQ2FjaGVIZWFk
ZXJzKGNvbnN0IENhY2hlZFJlc291cmNlTG9hZGVyJiwgQ2FjaGVQb2xpY3kpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGxvYWQo
Q2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSBvdmVy
cmlkZTsKIAogICAgIGJvb2wgaXNPcmlnaW5DbGVhbihTZWN1cml0eU9yaWdpbiopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA5OWIx
YTcxZTkyYjQ2NjY3OWM5NGYzNWQ5MWQ4YmQxNmNhZDEzODZlLi4yZWJiNzAwODZmZjFhM2E3Mjgx
OTUzNWFkNmJkOTM5MmQzNzUxNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTE4NSwxMyArMTg1LDEzIEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmZhaWxCZWZvcmVTdGFydGluZygpCiAgICAgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6Okxv
YWRFcnJvcik7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmFkZEFkZGl0aW9uYWxSZXF1ZXN0
SGVhZGVycyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCit2b2lk
IENhY2hlZFJlc291cmNlOjphZGRBZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnMoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyKQogewogICAgIC8vIE5vdGU6IFdlIHNraXAg
dGhlIENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGNoZWNrIGhlcmUgYmVjYXVzZSB3ZSBjaGVjawog
ICAgIC8vIHRoZSBDb250ZW50LVNlY3VyaXR5LVBvbGljeSBhdCB0aGUgQ2FjaGVkUmVzb3VyY2VM
b2FkZXIgbGF5ZXIgc28gd2UgY2FuCiAgICAgLy8gaGFuZGxlIGRpZmZlcmVudCByZXNvdXJjZSB0
eXBlcyBkaWZmZXJlbnRseS4KIAotICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IGNhY2hl
ZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpLT5sb2FkZXIoKTsKKyAgICBGcmFtZUxvYWRlciYgZnJh
bWVMb2FkZXIgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci5mcmFtZSgpLT5sb2FkZXIoKTsKICAgICBT
dHJpbmcgb3V0Z29pbmdSZWZlcnJlcjsKICAgICBTdHJpbmcgb3V0Z29pbmdPcmlnaW47CiAgICAg
aWYgKG1fcmVzb3VyY2VSZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVsbCgpKSB7CkBAIC0yMDIs
NyArMjAyLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6YWRkQWRkaXRpb25hbFJlcXVlc3RIZWFk
ZXJzKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXMKICAgICAgICAgb3V0Z29pbmdPcmln
aW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvdXRnb2luZ1JlZmVycmVyKS0+
dG9TdHJpbmcoKTsKICAgICB9CiAKLSAgICBvdXRnb2luZ1JlZmVycmVyID0gU2VjdXJpdHlQb2xp
Y3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50
KCktPnJlZmVycmVyUG9saWN5KCksIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1Jl
ZmVycmVyKTsKKyAgICBvdXRnb2luZ1JlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRl
UmVmZXJyZXJIZWFkZXIoY2FjaGVkUmVzb3VyY2VMb2FkZXIuZG9jdW1lbnQoKS0+cmVmZXJyZXJQ
b2xpY3koKSwgbV9yZXNvdXJjZVJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIpOwogICAg
IGlmIChvdXRnb2luZ1JlZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXNvdXJjZVJlcXVl
c3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICBlbHNlCkBAIC0yMTIsMTQgKzIxMiwxNCBAQCB2
b2lkIENhY2hlZFJlc291cmNlOjphZGRBZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnMoQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGNhY2hlZFJlcwogICAgIGZyYW1lTG9hZGVyLmFkZEV4dHJhRmllbGRzVG9T
dWJyZXNvdXJjZVJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QpOwogfQogCi12b2lkIENhY2hlZFJl
c291cmNlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQordm9pZCBDYWNoZWRSZXNvdXJj
ZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBpZiAoIWNhY2hlZFJlc291
cmNlTG9hZGVyLT5mcmFtZSgpKSB7CisgICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlci5mcmFt
ZSgpKSB7CiAgICAgICAgIGZhaWxCZWZvcmVTdGFydGluZygpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gY2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPmZyYW1lKCktPmxvYWRlcigpOworICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IGNh
Y2hlZFJlc291cmNlTG9hZGVyLmZyYW1lKCktPmxvYWRlcigpOwogICAgIGlmIChvcHRpb25zLnNl
Y3VyaXR5Q2hlY2soKSA9PSBEb1NlY3VyaXR5Q2hlY2sgJiYgKGZyYW1lTG9hZGVyLnN0YXRlKCkg
PT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsIHx8ICFmcmFtZUxvYWRlci5hY3RpdmVEb2N1bWVudExv
YWRlcigpIHx8IGZyYW1lTG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmlzU3RvcHBpbmco
KSkpIHsKICAgICAgICAgZmFpbEJlZm9yZVN0YXJ0aW5nKCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTIzMyw3ICsyMzMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpsb2FkKENhY2hlZFJlc291cmNl
TG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzbwogICAgICAgICAvLyBXaGVu
IFF1aWNrTG9vayBpcyBpbnZva2VkIHRvIGNvbnZlcnQgYSBkb2N1bWVudCwgaXQgcmV0dXJucyBh
IHVuaXF1ZSBVUkwgaW4gdGhlCiAgICAgICAgIC8vIE5TVVJMUmVwb25zZSBmb3IgdGhlIG1haW4g
ZG9jdW1lbnQuIFRvIG1ha2Ugc2FmZVFMVVJMRm9yRG9jdW1lbnRVUkxBbmRSZXNvdXJjZVVSTCgp
CiAgICAgICAgIC8vIHdvcmssIHdlIG5lZWQgdG8gdXNlIHRoZSBRTCBVUkwgbm90IHRoZSBvcmln
aW5hbCBVUkwuCi0gICAgICAgIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwgPSBjYWNoZWRSZXNvdXJj
ZUxvYWRlci0+ZnJhbWUoKSA/IGNhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpIDogY2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPmRvY3VtZW50KCktPnVybCgpOworICAgICAgICBjb25zdCBVUkwmIGRvY3VtZW50VVJMID0g
Y2FjaGVkUmVzb3VyY2VMb2FkZXIuZnJhbWUoKSA/IGNhY2hlZFJlc291cmNlTG9hZGVyLmZyYW1l
KCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkgOiBjYWNoZWRS
ZXNvdXJjZUxvYWRlci5kb2N1bWVudCgpLT51cmwoKTsKICAgICAgICAgbV9yZXNvdXJjZVJlcXVl
c3Quc2V0VVJMKHNhZmVRTFVSTEZvckRvY3VtZW50VVJMQW5kUmVzb3VyY2VVUkwoZG9jdW1lbnRV
UkwsIHVybCgpKSk7CiAgICAgfQogI2VuZGlmCkBAIC0yNDgsOCArMjQ4LDggQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIsIGNvbnN0IFJlc28KICAgICAgICAgY29uc3QgU3RyaW5nJiBsYXN0TW9kaWZpZWQgPSByZXNv
dXJjZVRvUmV2YWxpZGF0ZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6Okxhc3RNb2RpZmllZCk7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgZVRhZyA9IHJlc291cmNl
VG9SZXZhbGlkYXRlLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
RVRhZyk7CiAgICAgICAgIGlmICghbGFzdE1vZGlmaWVkLmlzRW1wdHkoKSB8fCAhZVRhZy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChjYWNoZWRSZXNvdXJjZUxvYWRlci0+Y2FjaGVQ
b2xpY3kodHlwZSgpKSAhPSBDYWNoZVBvbGljeVJlbG9hZCk7Ci0gICAgICAgICAgICBpZiAoY2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmNhY2hlUG9saWN5KHR5cGUoKSkgPT0gQ2FjaGVQb2xpY3lSZXZh
bGlkYXRlKQorICAgICAgICAgICAgQVNTRVJUKGNhY2hlZFJlc291cmNlTG9hZGVyLmNhY2hlUG9s
aWN5KHR5cGUoKSkgIT0gQ2FjaGVQb2xpY3lSZWxvYWQpOworICAgICAgICAgICAgaWYgKGNhY2hl
ZFJlc291cmNlTG9hZGVyLmNhY2hlUG9saWN5KHR5cGUoKSkgPT0gQ2FjaGVQb2xpY3lSZXZhbGlk
YXRlKQogICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sLCAibWF4LWFnZT0wIik7CiAgICAgICAgICAg
ICBpZiAoIWxhc3RNb2RpZmllZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgbV9yZXNvdXJj
ZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk1vZGlmaWVkU2lu
Y2UsIGxhc3RNb2RpZmllZCk7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0
IFJlc28KICAgICAgICAgbV9mcmFnbWVudElkZW50aWZpZXJGb3JSZXF1ZXN0ID0gU3RyaW5nKCk7
CiAgICAgfQogCi0gICAgbV9sb2FkZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3Ry
YXRlZ3koKS0+cmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNjaGVkdWxlU3VicmVzb3VyY2VMb2Fk
KGNhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsK
KyAgICBtX2xvYWRlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5y
ZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSwgdGhpcywgcmVxdWVzdCwgb3B0aW9ucyk7CiAgICAgaWYgKCFt
X2xvYWRlcikgewogICAgICAgICBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBm
OTc3MGQ3MGY3YjJhNzYwYzA1Yjk2MmVmYjgwM2ZhYjA5OWEzZDYwLi42NDhlNzQ1MTAzNjZjNGQ3
ODk3YjFkNTgxNWFkNTQ5ODJmMTQ3NTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgQ2FjaGVk
UmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgVHlwZSwgU2Vzc2lvbklEKTsKICAgICB2
aXJ0dWFsIH5DYWNoZWRSZXNvdXJjZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIGxvYWQoQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYp
IHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5n
KCk7IH0KQEAgLTI4Miw3ICsyODIsNyBAQCBwcml2YXRlOgogCiAgICAgZG91YmxlIGZyZXNobmVz
c0xpZmV0aW1lKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKIAotICAgIHZvaWQgYWRk
QWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CisgICAgdm9p
ZCBhZGRBZGRpdGlvbmFsUmVxdWVzdEhlYWRlcnMoQ2FjaGVkUmVzb3VyY2VMb2FkZXImKTsKICAg
ICB2b2lkIGZhaWxCZWZvcmVTdGFydGluZygpOwogCiAgICAgSGFzaE1hcDxDYWNoZWRSZXNvdXJj
ZUNsaWVudCosIHN0ZDo6dW5pcXVlX3B0cjxDYWxsYmFjaz4+IG1fY2xpZW50c0F3YWl0aW5nQ2Fs
bGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAppbmRleCA1MjRhNGU3NTRlMTI4NWJlZDU4NTE4OGQzYTcwNDUyYmY1MTQw
NWM1Li45NWNjNTA1YzM4YmFjYzY0NWE1YzRjMzRmNTc0NmQ1NTYxMzkxMWUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTIyOCw3ICsyMjgsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNo
ZWV0PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdAogICAgIG1lbW9yeUNh
Y2hlKCkuYWRkKHVzZXJTaGVldC5nZXQoKSk7CiAgICAgLy8gRklYTUU6IGxvYWRSZXNvdXJjZSBj
YWxscyBzZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigpIGlmIHRoZSByZXNvdXJjZSBjb3Vs
ZG4ndCBiZSBhZGRlZCB0byBjYWNoZS4gRG9lcyB0aGlzIGZ1bmN0aW9uIG5lZWQgdG8gY2FsbCBp
dCwgdG9vPwogCi0gICAgdXNlclNoZWV0LT5sb2FkKHRoaXMsIFJlc291cmNlTG9hZGVyT3B0aW9u
cyhEb05vdFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9y
ZWRDcmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQWxsQ3JlZGVudGlhbHMsIFNraXBTZWN1cml0eUNo
ZWNrLCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJpY3Rpb25zRm9yVHlwZSwgRG9Ob3RJbmNsdWRlQ2Vy
dGlmaWNhdGVJbmZvKSk7CisgICAgdXNlclNoZWV0LT5sb2FkKCp0aGlzLCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMoRG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFs
bG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZvckFsbENyZWRlbnRpYWxzLCBTa2lwU2Vj
dXJpdHlDaGVjaywgVXNlRGVmYXVsdE9yaWdpblJlc3RyaWN0aW9uc0ZvclR5cGUsIERvTm90SW5j
bHVkZUNlcnRpZmljYXRlSW5mbykpOwogICAgIAogICAgIHJldHVybiB1c2VyU2hlZXQ7CiB9CkBA
IC01MTYsNyArNTE2LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICAgICAgcmVzb3Vy
Y2UtPnNldExvYWRQcmlvcml0eShyZXF1ZXN0LnByaW9yaXR5KCkpOwogCiAgICAgaWYgKChwb2xp
Y3kgIT0gVXNlIHx8IHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKSAmJiBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3Q6Ok5vRGVmZXIgPT0gcmVxdWVzdC5kZWZlcigpKSB7Ci0gICAgICAgIHJlc291cmNl
LT5sb2FkKHRoaXMsIHJlcXVlc3Qub3B0aW9ucygpKTsKKyAgICAgICAgcmVzb3VyY2UtPmxvYWQo
KnRoaXMsIHJlcXVlc3Qub3B0aW9ucygpKTsKIAogICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0
IGltbWVkaWF0ZSBsb2FkcywgYnV0IHdlIGRvIHN1cHBvcnQgaW1tZWRpYXRlIGZhaWx1cmUuCiAg
ICAgICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKSB7CkBAIC03NjMsNyArNzYzLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgp
CiAgICAgZm9yIChEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1lbnRS
ZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICAgICAgaWYgKGlzPENhY2hlZElt
YWdlPigqcmVzb3VyY2UpICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpICYmICFjbGllbnRE
ZWZlcnNJbWFnZShyZXNvdXJjZS0+dXJsKCkpKQotICAgICAgICAgICAgZG93bmNhc3Q8Q2FjaGVk
SW1hZ2U+KCpyZXNvdXJjZSkubG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25z
KCkpOworICAgICAgICAgICAgZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KCpyZXNvdXJjZSkubG9hZCgq
dGhpcywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5k
ZXggZWJlM2U0ZDQyYTI2MTQ4OGNkYTk4ZTRhZGQ4NTc2NzY4ODgzODhhNC4uMWZkNTcwYjI5YzMw
NTdkMzlmMTAwNTU4OGU4OGVmN2I5ZDUzZDc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTE5NCwyMiArMTk0LDE4IEBA
IGNsYXNzIFJlc291cmNlQ2FjaGVWYWxpZGF0aW9uU3VwcHJlc3NvciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUmVzb3VyY2VDYWNoZVZhbGlkYXRpb25TdXBwcmVzc29yKTsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBSZXNvdXJjZUNhY2hlVmFsaWRhdGlv
blN1cHByZXNzb3IoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKKyAgICBSZXNvdXJjZUNh
Y2hlVmFsaWRhdGlvblN1cHByZXNzb3IoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKICAg
ICAgICAgOiBtX2xvYWRlcihsb2FkZXIpCi0gICAgICAgICwgbV9wcmV2aW91c1N0YXRlKGZhbHNl
KQorICAgICAgICAsIG1fcHJldmlvdXNTdGF0ZShtX2xvYWRlci5tX2FsbG93U3RhbGVSZXNvdXJj
ZXMpCiAgICAgewotICAgICAgICBpZiAobV9sb2FkZXIpIHsKLSAgICAgICAgICAgIG1fcHJldmlv
dXNTdGF0ZSA9IG1fbG9hZGVyLT5tX2FsbG93U3RhbGVSZXNvdXJjZXM7Ci0gICAgICAgICAgICBt
X2xvYWRlci0+bV9hbGxvd1N0YWxlUmVzb3VyY2VzID0gdHJ1ZTsKLSAgICAgICAgfQorICAgICAg
ICBtX2xvYWRlci5tX2FsbG93U3RhbGVSZXNvdXJjZXMgPSB0cnVlOwogICAgIH0KICAgICB+UmVz
b3VyY2VDYWNoZVZhbGlkYXRpb25TdXBwcmVzc29yKCkKICAgICB7Ci0gICAgICAgIGlmIChtX2xv
YWRlcikKLSAgICAgICAgICAgIG1fbG9hZGVyLT5tX2FsbG93U3RhbGVSZXNvdXJjZXMgPSBtX3By
ZXZpb3VzU3RhdGU7CisgICAgICAgIG1fbG9hZGVyLm1fYWxsb3dTdGFsZVJlc291cmNlcyA9IG1f
cHJldmlvdXNTdGF0ZTsKICAgICB9CiBwcml2YXRlOgotICAgIENhY2hlZFJlc291cmNlTG9hZGVy
KiBtX2xvYWRlcjsKKyAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgbV9sb2FkZXI7CiAgICAgYm9v
bCBtX3ByZXZpb3VzU3RhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcAppbmRleCBiNmI0NjI2
YjkzMGIwMGU4ODZkN2FjNTE4NTNmZjFhNzRjNGY0NTQ5Li5jNjI3ZjRlZmMxY2IwMWU0N2EyZjY0
ZDU4ZjU5ZjA2ZTczNDE3NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAKQEAgLTUzLDE1ICs1Mywx
NCBAQCBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6fkNhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlKCkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWQo
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBBU1NFUlQo
bG9hZGVyKTsKICAgICBpZiAobV9sb2FkUmVxdWVzdGVkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5k
b2N1bWVudCgpLT5jb21wbGV0ZVVSTChtX3VybCkpKTsKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVyLmRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KG1fdXJsKSkpOwogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVz
dEluaXRpYXRvcnMoKS5jc3MpOwotICAgIG1fZG9jdW1lbnQgPSBsb2FkZXItPnJlcXVlc3RTVkdE
b2N1bWVudChyZXF1ZXN0KTsKKyAgICBtX2RvY3VtZW50ID0gbG9hZGVyLnJlcXVlc3RTVkdEb2N1
bWVudChyZXF1ZXN0KTsKICAgICBpZiAobV9kb2N1bWVudCkgewogICAgICAgICBtX2RvY3VtZW50
LT5zZXRDYW5SZXVzZShtX2NhblJldXNlUmVzb3VyY2UpOwogICAgICAgICBtX2RvY3VtZW50LT5h
ZGRDbGllbnQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCmluZGV4IDQxZjQxZGIyMjg4YjU2ZmVmMTA3
YzBlYzBmMzVhOWVhM2RmMThiMmMuLjVlMDMyYWQ3YThhNjg3NGQ2YjY3ODc3YjRkNDZhZWJlMTYz
NDMzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgfkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKCk7CiAKLSAgICB2b2lkIGxvYWQo
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsKKyAgICB2b2lkIGxvYWQoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXImKTsKICAgICBib29sIGxvYWRSZXF1ZXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRSZXF1
ZXN0ZWQ7IH0KIAogICAgIENhY2hlZFNWR0RvY3VtZW50KiBkb2N1bWVudCgpIHsgcmV0dXJuIG1f
ZG9jdW1lbnQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5j
cHAKaW5kZXggNTY5MjFjZDkzNzdmYzEyZTBlZTFkMDNkOTM0NDA3MWM0YWI0Y2JmMy4uZGUwYzk5
NDcxYTcwYjM1ZjUyMTU3Mjc5OWNhMDQyNWM4N2E4NGZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBJY29uTG9hZGVy
OjpzdGFydExvYWRpbmcoKQogICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNl
dFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5TG93KTsKICAgICByZXF1ZXN0LnNldEluaXRp
YXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuaWNvbik7CiAKLSAgICBtX3Jl
c291cmNlID0gbV9mcmFtZS5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1
ZXN0UmF3UmVzb3VyY2UocmVxdWVzdCk7CisgICAgbV9yZXNvdXJjZSA9IG1fZnJhbWUuZG9jdW1l
bnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UocmVxdWVzdCk7
CiAgICAgaWYgKG1fcmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlz
KTsKICAgICBlbHNlCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgSWNvbkxvYWRlcjo6c3RvcExvYWRp
bmcoKQogewogICAgIGlmIChtX3Jlc291cmNlKSB7CiAgICAgICAgIG1fcmVzb3VyY2UtPnJlbW92
ZUNsaWVudCh0aGlzKTsKLSAgICAgICAgbV9yZXNvdXJjZSA9IDA7CisgICAgICAgIG1fcmVzb3Vy
Y2UgPSBudWxscHRyOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAppbmRleCBkNGJhYjUxMTg0N2U2Zjk0ZDA2OTEwMTE0OWNhYTRhMWU5YjA0MWI2Li4xOTYx
YTNmM2U0ZTJkNTNjZjBjYmU2NzhjZWZhMDgwNzM2OTEwNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcApAQCAtNDg3LDggKzQ4Nyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIGlmICghcmFuZ2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNo
ZWRSZXNvdXJjZUxvYWRlciA9IHJhbmdlLT5vd25lckRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VM
b2FkZXIoKTsKLSAgICBSZXNvdXJjZUNhY2hlVmFsaWRhdGlvblN1cHByZXNzb3IgdmFsaWRhdGlv
blN1cHByZXNzb3IoY2FjaGVkUmVzb3VyY2VMb2FkZXIpOworICAgIFJlc291cmNlQ2FjaGVWYWxp
ZGF0aW9uU3VwcHJlc3NvciB2YWxpZGF0aW9uU3VwcHJlc3NvcihyYW5nZS0+b3duZXJEb2N1bWVu
dCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkpOwogICAgIGlmIChkcmFnSXNNb3ZlKGlubmVyRnJh
bWUtPnNlbGVjdGlvbigpLCBkcmFnRGF0YSkgfHwgZHJhZ0NhcmV0LmlzQ29udGVudFJpY2hseUVk
aXRhYmxlKCkpIHsKICAgICAgICAgYm9vbCBjaG9zZVBsYWluVGV4dCA9IGZhbHNlOwogICAgICAg
ICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudEZyYWdtZW50RnJv
bURyYWdEYXRhKGRyYWdEYXRhLCAqaW5uZXJGcmFtZSwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWlu
VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDg5YjQzMjMzZTVkY2JkNjc2MDEw
NzNmODE4ODU2YTg4MGQxMDVkYTMuLjZiOWQyM2NmMzgxMzYyNzc2MDM2YTA0Yzg3NDMxYzBmMDRi
YmMwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC01Nyw4ICs1Nyw4IEBAIHN0YXRp
YyB2b2lkIHNldEltYWdlTG9hZGluZ1NldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIGZyYW1lLT5k
b2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRJbWFnZXNFbmFibGVkKHBhZ2Ut
PnNldHRpbmdzKCkuYXJlSW1hZ2VzRW5hYmxlZCgpKTsKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50
KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKHBhZ2UtPnNldHRp
bmdzKCkubG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOworICAgICAgICBmcmFtZS0+ZG9jdW1l
bnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5zZXRJbWFnZXNFbmFibGVkKHBhZ2UtPnNldHRp
bmdzKCkuYXJlSW1hZ2VzRW5hYmxlZCgpKTsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCkuc2V0QXV0b0xvYWRJbWFnZXMocGFnZS0+c2V0dGluZ3MoKS5s
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IGNlOGUzM2VlZjE5Yjc0YmI5
OThlMjc4MTEwZDllNzA5NGY5MDQ1YWQuLjE4NGVjMmVhNWY0MWZkNTc5MzBlNGIyMzNlZmZjOGZi
NGIyMDQ2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24uY3BwCkBAIC0xOTYsOCArMTk2LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBMYXlvdXRTaXplIHNj
cm9sbE9mZnNldDsKIAogICAgIEZyYW1lVmlldyogdmlldyA9IG51bGxwdHI7Ci0gICAgaWYgKG1f
cGxheWVyICYmIG1fcGxheWVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpICYmIG1fcGxheWVyLT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLT5kb2N1bWVudCgpKQotICAgICAgICB2aWV3ID0gbV9wbGF5
ZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmRvY3VtZW50KCktPnZpZXcoKTsKKyAgICBpZiAo
bV9wbGF5ZXIgJiYgbV9wbGF5ZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCkgJiYgbV9wbGF5ZXIt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCkuZG9jdW1lbnQoKSkKKyAgICAgICAgdmlldyA9IG1fcGxh
eWVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmRvY3VtZW50KCktPnZpZXcoKTsKICAgICBpZiAo
dmlldykKICAgICAgICAgc2Nyb2xsT2Zmc2V0ID0gdmlldy0+c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQ
b3NpdGlvbigpOwogCkBAIC00MzQsOSArNDM0LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OmNyZWF0ZVZpZGVvV2luZG93KCkKIHsKICAgICBIV05EIGhXbmRQYXJl
bnQgPSBudWxscHRyOwogICAgIEZyYW1lVmlldyogdmlldyA9IG51bGxwdHI7Ci0gICAgaWYgKCFt
X3BsYXllciB8fCAhbV9wbGF5ZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCkgfHwgIW1fcGxheWVy
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5kb2N1bWVudCgpKQorICAgIGlmICghbV9wbGF5ZXIg
fHwgIW1fcGxheWVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpIHx8ICFtX3BsYXllci0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgdmlldyA9
IG1fcGxheWVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5kb2N1bWVudCgpLT52aWV3KCk7Cisg
ICAgdmlldyA9IG1fcGxheWVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmRvY3VtZW50KCktPnZp
ZXcoKTsKICAgICBpZiAoIXZpZXcgfHwgIXZpZXctPmhvc3RXaW5kb3coKSkKICAgICAgICAgcmV0
dXJuOwogICAgIGhXbmRQYXJlbnQgPSB2aWV3LT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNs
aWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKaW5kZXggMDg2
NzIzMzMxNWQyNWVjY2E0MDllYWViY2YyZjJlYzNiMDhiNDZhNy4uMTA1YTA2ZTIzZTViOGRlYzg4
M2IzNGEwYmI5OTBhNjUxZmI3YzU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVs
ZW1lbnQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnJlcXVl
c3RJbWFnZVJlc291cmNlKCkKIHsKICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKCkpKSk7CiAgICAgcmVx
dWVzdC5zZXRJbml0aWF0b3IodGhpcyk7Ci0gICAgbV9jYWNoZWRJbWFnZSA9IGRvY3VtZW50KCku
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdEltYWdlKHJlcXVlc3QpOworICAgIG1fY2Fj
aGVkSW1hZ2UgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdEltYWdl
KHJlcXVlc3QpOwogCiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpCiAgICAgICAgIG1fY2FjaGVkSW1h
Z2UtPmFkZENsaWVudCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RmFjZVVyaUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJp
RWxlbWVudC5jcHAKaW5kZXggODEzZjI2NmI5ZjAyYWJjNTA5MTAyM2RhMWI3NmMyYmRmOGNkYzg4
MC4uYjJiNTA1N2EzZmIxMzE5NGRmNjUwZDQ3NzExMTAzZGIwNWNhMDVkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKQEAgLTEwMSwxMCArMTAxLDEw
IEBAIHZvaWQgU1ZHRm9udEZhY2VVcmlFbGVtZW50Ojpsb2FkRm9udCgpCiAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGhyZWYgPSBnZXRBdHRyaWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0dHIpOwog
ICAgIGlmICghaHJlZi5pc051bGwoKSkgewotICAgICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciog
Y2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCk7
CisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IGRv
Y3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJl
ZikpKTsKICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IodGhpcyk7Ci0gICAgICAgIG1fY2Fj
aGVkRm9udCA9IGNhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0Rm9udChyZXF1ZXN0LCBpc1NW
R0ZvbnRUYXJnZXQoKnRoaXMpKTsKKyAgICAgICAgbV9jYWNoZWRGb250ID0gY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIucmVxdWVzdEZvbnQocmVxdWVzdCwgaXNTVkdGb250VGFyZ2V0KCp0aGlzKSk7CiAg
ICAgICAgIGlmIChtX2NhY2hlZEZvbnQpIHsKICAgICAgICAgICAgIG1fY2FjaGVkRm9udC0+YWRk
Q2xpZW50KHRoaXMpOwogICAgICAgICAgICAgbV9jYWNoZWRGb250LT5iZWdpbkxvYWRJZk5lZWRl
ZChjYWNoZWRSZXNvdXJjZUxvYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAK
aW5kZXggYTIyMGE3OGRlMjM4MWQ5MzkwNDAzMzRmZjM2OWFhNTAyYjU2NTZiMy4uM2MxM2VhOWUw
YTNhNmU2ODlmZDRlZjA2Nzk0ZDc2ZmVhYjIzZmIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgICAg
IGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QodXJsLnN0cmluZygpKSk7
CiAgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IodGhpcyk7Ci0gICAgICAgICAg
ICAgICAgc2V0Q2FjaGVkRG9jdW1lbnQoZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LT5yZXF1ZXN0U1ZHRG9jdW1lbnQocmVxdWVzdCkpOworICAgICAgICAgICAgICAgIHNldENhY2hl
ZERvY3VtZW50KGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0U1ZHRG9j
dW1lbnQocmVxdWVzdCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIHNldENhY2hlZERvY3VtZW50KDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDhmYTM4NmFmZmYwOGFjNzNlMDAwZmY5Y2UwZDRmM2MwYzFlYjJiM2UuLmIzZDFhYTg0
OWYwMmVhZGNhN2RhZTgyMGZiNjAxZjZiNjVhMDI4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTM3Myw3ICszNzMsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpkZXNjcmlw
dGlvbihEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSkKIGJvb2wgSW50ZXJuYWxzOjppc1By
ZWxvYWRlZChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBj
b250ZXh0RG9jdW1lbnQoKTsKLSAgICByZXR1cm4gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCktPmlzUHJlbG9hZGVkKHVybCk7CisgICAgcmV0dXJuIGRvY3VtZW50LT5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpLmlzUHJlbG9hZGVkKHVybCk7CiB9CiAKIGJvb2wgSW50ZXJuYWxzOjppc0xv
YWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3QgU3RyaW5nJiB1cmwpCkBAIC0xNjg1LDExICsxNjg1
LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hl
ZFJlc291cmNlTG9hZGVyID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAg
aWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmV0dXJuOwotICAgIGNhY2hlZFJl
c291cmNlTG9hZGVyLT5nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKCk7CisgICAgZG9j
dW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkuZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291
cmNlcygpOwogfQogCiB2b2lkIEludGVybmFsczo6YWxsb3dSb3VuZGluZ0hhY2tzKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCmluZGV4IGQ0ODll
ZmQyYzVhOWNkN2Q2MWJlYTk4NzYxNjQxN2QwN2E1ZmVhMzEuLjc3OTlkZmE3NDA5NDE2MDMyZGU1
Yjk2NTM3MDc3NWM2ZTc5MmRiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xT
dHlsZVNoZWV0TGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXRMaWJ4c2x0LmNwcApAQCAtMTI3LDggKzEyNyw4IEBAIENhY2hlZFJlc291cmNlTG9hZGVyKiBY
U0xTdHlsZVNoZWV0OjpjYWNoZWRSZXNvdXJjZUxvYWRlcigpCiB7CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gb3duZXJEb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiBkb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZkb2N1bWVudC0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKTsKIH0KIAogYm9vbCBYU0xTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwCmluZGV4IGYxOTE1ZTcwZjNiN2IwYTA0ZGU2Y2Q4NDc4NmMwMDZmZTUwZjZmNjAuLjBiMTlh
Y2VmNzY0MjI4MWM0M2E3ZjQ2OTMxYjUxNDM2YTU2ZTQ4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyBp
bmxpbmUgU3RyaW5nIHJlc3VsdE1JTUVUeXBlKHhtbERvY1B0ciByZXN1bHREb2MsIHhzbHRTdHls
ZXNoZWV0UHRyIHNoZWV0CiAgICAgLy8gSFRNTCAoY3JlYXRlIGFuIEhUTUwgZG9jdW1lbnQpLCBY
TUwgKGNyZWF0ZSBhbiBYTUwgZG9jdW1lbnQpLAogICAgIC8vIGFuZCB0ZXh0ICh3cmFwIGluIGEg
PHByZT4gYW5kIGNyZWF0ZSBhbiBYTUwgZG9jdW1lbnQpLgogCi0gICAgY29uc3QgeG1sQ2hhciog
cmVzdWx0VHlwZSA9IDA7CisgICAgY29uc3QgeG1sQ2hhciogcmVzdWx0VHlwZSA9IG51bGxwdHI7
CiAgICAgWFNMVF9HRVRfSU1QT1JUX1BUUihyZXN1bHRUeXBlLCBzaGVldCwgbWV0aG9kKTsKICAg
ICBpZiAoIXJlc3VsdFR5cGUgJiYgcmVzdWx0RG9jLT50eXBlID09IFhNTF9IVE1MX0RPQ1VNRU5U
X05PREUpCiAgICAgICAgIHJlc3VsdFR5cGUgPSAoY29uc3QgeG1sQ2hhciopImh0bWwiOwpAQCAt
MzA1LDExICszMDUsMTEgQEAgYm9vbCBYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub1N0cmluZyhO
b2RlJiBzb3VyY2VOb2RlLCBTdHJpbmcmIG1pbWVUeXBlLCBTdHJpbmcKIHsKICAgICBSZWY8RG9j
dW1lbnQ+IG93bmVyRG9jdW1lbnQoc291cmNlTm9kZS5kb2N1bWVudCgpKTsKIAotICAgIHNldFhT
TFRMb2FkQ2FsbEJhY2soZG9jTG9hZGVyRnVuYywgdGhpcywgb3duZXJEb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKSk7CisgICAgc2V0WFNMVExvYWRDYWxsQmFjayhkb2NMb2FkZXJGdW5j
LCB0aGlzLCAmb3duZXJEb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSk7CiAgICAgeHNs
dFN0eWxlc2hlZXRQdHIgc2hlZXQgPSB4c2x0U3R5bGVzaGVldFBvaW50ZXIobV9zdHlsZXNoZWV0
LCBtX3N0eWxlc2hlZXRSb290Tm9kZS5nZXQoKSk7CiAgICAgaWYgKCFzaGVldCkgewotICAgICAg
ICBzZXRYU0xUTG9hZENhbGxCYWNrKDAsIDAsIDApOwotICAgICAgICBtX3N0eWxlc2hlZXQgPSAw
OworICAgICAgICBzZXRYU0xUTG9hZENhbGxCYWNrKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIp
OworICAgICAgICBtX3N0eWxlc2hlZXQgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIG1fc3R5bGVzaGVldC0+Y2xlYXJEb2N1bWVudHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCA1MjczZTI0NzM4NjMx
ZDRlZDljNGRiN2YwNzQ1ZDk3MzgzZTAxODg1Li5hNTUxNjEzMWIzMmU2YzI4MzJkZmIzNTlkMjVj
YTFlMDQ5NmVlNGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5oCkBAIC0xOTIsNyArMTkyLDcgQEAgY2xhc3MgVGV4dDsKICAgICB9OwogCiAjaWYg
RU5BQkxFKFhTTFQpCi12b2lkKiB4bWxEb2NQdHJGb3JTdHJpbmcoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwpOwordm9pZCogeG1s
RG9jUHRyRm9yU3RyaW5nKENhY2hlZFJlc291cmNlTG9hZGVyJiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgdXJsKTsKICNlbmRpZgogCiBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBwYXJzZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiwgYm9vbCYgYXR0cnNPSyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKaW5kZXggYjI5OWNiNjEyMWY2OTU0N2QzYjAwMTRiY2ZiZWRlYzhhNDhkMDc4YS4uNjBhMGE1
YmYyYzgzNDk2OWRmOThhNzY3NjI1Mzk4MzQzZDFmNTcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNjgw
LDcgKzY4MCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvV3JpdGUoY29uc3QgU3RyaW5n
JiBwYXJzZVN0cmluZykKICAgICAgICAgLy8ga2VlcCB0aGlzIGFsaXZlIHVudGlsIHRoaXMgZnVu
Y3Rpb24gaXMgZG9uZS4KICAgICAgICAgUmVmPFhNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KCp0
aGlzKTsKIAotICAgICAgICBYTUxEb2N1bWVudFBhcnNlclNjb3BlIHNjb3BlKGRvY3VtZW50KCkt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCkpOworICAgICAgICBYTUxEb2N1bWVudFBhcnNlclNjb3Bl
IHNjb3BlKCZkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsKIAogICAgICAgICAv
LyBGSVhNRTogQ2FuIHdlIHBhcnNlIDgtYml0IHN0cmluZ3MgZGlyZWN0bHkgYXMgTGF0aW4tMSBp
bnN0ZWFkIG9mIHVwY29udmVydGluZyB0byBVVEYtMTY/CiAgICAgICAgIHN3aXRjaFRvVVRGMTYo
Y29udGV4dC0+Y29udGV4dCgpKTsKQEAgLTEzNTIsNyArMTM1Miw3IEBAIHZvaWQgWE1MRG9jdW1l
bnRQYXJzZXI6OmluaXRpYWxpemVQYXJzZXJDb250ZXh0KGNvbnN0IENTdHJpbmcmIGNodW5rKQog
ICAgIG1fc2F3WFNMVHJhbnNmb3JtID0gZmFsc2U7CiAgICAgbV9zYXdGaXJzdEVsZW1lbnQgPSBm
YWxzZTsKIAotICAgIFhNTERvY3VtZW50UGFyc2VyU2NvcGUgc2NvcGUoZG9jdW1lbnQoKS0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKSk7CisgICAgWE1MRG9jdW1lbnRQYXJzZXJTY29wZSBzY29wZSgm
ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSk7CiAgICAgaWYgKG1fcGFyc2luZ0Zy
YWdtZW50KQogICAgICAgICBtX2NvbnRleHQgPSBYTUxQYXJzZXJDb250ZXh0OjpjcmVhdGVNZW1v
cnlQYXJzZXIoJnNheCwgdGhpcywgY2h1bmspOwogICAgIGVsc2UgewpAQCAtMTM2NywxMSArMTM2
NywxMSBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpkb0VuZCgpCiAgICAgICAgIGlmIChtX2Nv
bnRleHQpIHsKICAgICAgICAgICAgIC8vIFRlbGwgbGlieG1sIHdlJ3JlIGRvbmUuCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgWE1MRG9jdW1lbnRQYXJzZXJTY29wZSBzY29wZShkb2N1
bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsKKyAgICAgICAgICAgICAgICBYTUxEb2N1
bWVudFBhcnNlclNjb3BlIHNjb3BlKCZkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
KTsKICAgICAgICAgICAgICAgICB4bWxQYXJzZUNodW5rKGNvbnRleHQoKSwgMCwgMCwgMSk7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1fY29udGV4dCA9IDA7CisgICAgICAgICAgICBt
X2NvbnRleHQgPSBudWxscHRyOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNDA2LDEwICsxNDA2
LDEwIEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogbmF0aXZlRW5kaWFuVVRGMTZFbmNvZGlu
ZygpCiAgICAgcmV0dXJuIEJPTUhpZ2hCeXRlID09IDB4RkYgPyAiVVRGLTE2TEUiIDogIlVURi0x
NkJFIjsKIH0KIAotdm9pZCogeG1sRG9jUHRyRm9yU3RyaW5nKENhY2hlZFJlc291cmNlTG9hZGVy
KiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmlu
ZyYgdXJsKQordm9pZCogeG1sRG9jUHRyRm9yU3RyaW5nKENhY2hlZFJlc291cmNlTG9hZGVyJiBj
YWNoZWRSZXNvdXJjZUxvYWRlciwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
dXJsKQogewogICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSBpbiBhIHNpbmdsZSBjaHVuayBp
bnRvIGFuIHhtbERvY1B0cgogICAgIC8vIEZJWE1FOiBIb29rIHVwIGVycm9yIGhhbmRsZXJzIHNv
IHRoYXQgYSBmYWlsdXJlIHRvIHBhcnNlIHRoZSBtYWluIGRvY3VtZW50IHJlc3VsdHMgaW4KQEAg
LTE0MjAsNyArMTQyMCw3IEBAIHZvaWQqIHhtbERvY1B0ckZvclN0cmluZyhDYWNoZWRSZXNvdXJj
ZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFN0cmluCiAgICAgc2l6ZV90IHNp
emVJbkJ5dGVzID0gc291cmNlLmxlbmd0aCgpICogKGlzOEJpdCA/IHNpemVvZihMQ2hhcikgOiBz
aXplb2YoVUNoYXIpKTsKICAgICBjb25zdCBjaGFyKiBlbmNvZGluZyA9IGlzOEJpdCA/ICJpc28t
ODg1OS0xIiA6IG5hdGl2ZUVuZGlhblVURjE2RW5jb2RpbmcoKTsKIAotICAgIFhNTERvY3VtZW50
UGFyc2VyU2NvcGUgc2NvcGUoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGVycm9yRnVuYywgMCk7Cisg
ICAgWE1MRG9jdW1lbnRQYXJzZXJTY29wZSBzY29wZSgmY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGVy
cm9yRnVuYyk7CiAgICAgcmV0dXJuIHhtbFJlYWRNZW1vcnkoY2hhcmFjdGVycywgc2l6ZUluQnl0
ZXMsIHVybC5sYXRpbjEoKS5kYXRhKCksIGVuY29kaW5nLCBYU0xUX1BBUlNFX09QVElPTlMpOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGIxMWZmZmFhYmY3
NDc4NWFjZWI2ZWNjM2M0N2VmYTBmMDA3Mjg5ODguLjkxZGM3ZTQ3NTg0MzNmNDkwZDY2MjlhOTYy
YmYxZGNkNzEwOWQ1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0yODgs
MTQgKzI4OCwxNCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OnN1
YnJlc291cmNlRm9yVVJMKAogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgIH0KIAotICAg
ICpyZXNvdXJjZSA9IDA7CisgICAgKnJlc291cmNlID0gbnVsbHB0cjsKIAotICAgIERvY3VtZW50
ICpkb2MgPSBtX2xvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5kb2N1bWVudCgpOworICAg
IERvY3VtZW50KiBkb2MgPSBtX2xvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5kb2N1bWVu
dCgpOwogCiAgICAgaWYgKCFkb2MpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBDYWNo
ZWRSZXNvdXJjZSAqY2FjaGVkUmVzb3VyY2UgPSBkb2MtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkt
PmNhY2hlZFJlc291cmNlKFN0cmluZyh1cmwpKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVk
UmVzb3VyY2UgPSBkb2MtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkuY2FjaGVkUmVzb3VyY2UoU3Ry
aW5nKHVybCkpOwogCiAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>