<?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>128467</bug_id>
          
          <creation_ts>2014-02-08 12:47:31 -0800</creation_ts>
          <short_desc>Manage MessagePort, MessagePortChannel and friends through std::unique_ptr</short_desc>
          <delta_ts>2014-02-09 00:13:20 -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>New Bugs</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>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>978410</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-08 12:47:31 -0800</bug_when>
    <thetext>Manage MessagePort, MessagePortChannel and friends through std::unique_ptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978411</commentid>
    <comment_count>1</comment_count>
      <attachid>223578</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-08 12:49:42 -0800</bug_when>
    <thetext>Created attachment 223578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978544</commentid>
    <comment_count>2</comment_count>
      <attachid>223578</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-09 00:13:13 -0800</bug_when>
    <thetext>Comment on attachment 223578
Patch

Clearing flags on attachment: 223578

Committed r163744: &lt;http://trac.webkit.org/changeset/163744&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978546</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-09 00:13:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223578</attachid>
            <date>2014-02-08 12:49:42 -0800</date>
            <delta_ts>2014-02-09 00:13:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128467-20140208214936.patch</filename>
            <type>text/plain</type>
            <size>56755</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI2NjU5NWVlOWM2ZmZl
MDkyYmNkMThiNmNmNmU1M2VjMmJjMjkzZS4uY2UzNDhiNmU4NmE2Yjg3NzJkNzlkZTc1Mjk5NWU2
NWEyZDExYzQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE0LTAyLTA4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNYW5hZ2UgTWVzc2Fn
ZVBvcnQsIE1lc3NhZ2VQb3J0Q2hhbm5lbCBhbmQgZnJpZW5kcyB0aHJvdWdoIHN0ZDo6dW5pcXVl
X3B0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4
NDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IHN0ZDo6dW5pcXVlX3B0ciBpbnN0ZWFkIG9mIE93blB0ciB0byBtYW5hZ2UgTWVzc2FnZVBvcnQs
IE1lc3NhZ2VQb3J0QXJyYXksIE1lc3NhZ2VQb3J0Q2hhbm5lbAorICAgICAgICBhbmQgTWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkgb2JqZWN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZUluaXRNZXNzYWdl
RXZlbnQpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogZG9t
L01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpwb3N0TWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
OjplbnRhbmdsZVBvcnRzKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuaDoKKyAgICAgICAg
KiBkb20vTWVzc2FnZVBvcnRDaGFubmVsLmg6CisgICAgICAgICogZG9tL2RlZmF1bHQvUGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZXNz
YWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6RXZlbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZXNzYWdlUG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1vdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90ZSk6CisgICAgICAg
ICogZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNoYW5uZWxzKToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVz
c2FnZVRpbWVyOjpQb3N0TWVzc2FnZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RNZXNz
YWdlVGltZXI6OmV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3Nh
Z2UpOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RNZXNzYWdl
KToKKyAgICAgICAgKiB3b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNrOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29ubmVjdFRhc2s6OlNoYXJlZFdvcmtlckNvbm5l
Y3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNrOjpwZXJm
b3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OlNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojp3b3JrZXJTY3JpcHRMb2FkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3RUb1dvcmtlcik6Cisg
ICAgICAgICogd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oOgorICAgICAg
ICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbm5lY3RFdmVudCk6CisgICAgICAgICog
d29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3QpOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVk
V29ya2VyUmVwb3NpdG9yeS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlcjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGVQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFz
azo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRh
c2s6Ok1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZVdvcmtlclRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
V29ya2VyVGFzazo6TWVzc2FnZVdvcmtlclRhc2spOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZVdvcmtlclRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlck9iamVjdFByb3h5Lmg6CisKIDIwMTQtMDItMDggIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBUZXh0SXRlcmF0b3IgdG8gdXNlIFN0cmlu
Z1ZpZXcsIHByZXBhcmluZyB0byB3ZWFuIGl0IGZyb20gZGVwcmVjYXRlZENoYXJhY3RlcnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cAppbmRleCBjODRjYTBkOWE1MjViNWM4MWZmNzM3MDE3MjQ2MGZjNjA1YTJkZjhhLi41NjE1YTA4
NjMyMGFmZjE1ODc2ZTU3OWNlNzEwMWJhZTJkNmJmYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC05NiwxMCArOTYs
MTAgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2Fn
ZUV2ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEKICAgICBjb25zdCBTdHJpbmcgb3JpZ2luQXJn
ID0gZXhlYy0+YXJndW1lbnQoNCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGNv
bnN0IFN0cmluZyBsYXN0RXZlbnRJZEFyZyA9IGV4ZWMtPmFyZ3VtZW50KDUpLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKICAgICBET01XaW5kb3cqIHNvdXJjZUFyZyA9IHRvRE9NV2luZG93
KGV4ZWMtPmFyZ3VtZW50KDYpKTsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gbWVzc2Fn
ZVBvcnRzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBtZXNzYWdlUG9y
dHM7CiAgICAgT3duUHRyPEFycmF5QnVmZmVyQXJyYXk+IGFycmF5QnVmZmVyczsKICAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50KDcpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgbWVzc2Fn
ZVBvcnRzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkpOworICAgICAgICBtZXNzYWdl
UG9ydHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VQb3J0QXJyYXk+KCk7CiAgICAgICAgIGFy
cmF5QnVmZmVycyA9IGFkb3B0UHRyKG5ldyBBcnJheUJ1ZmZlckFycmF5KTsKICAgICAgICAgZmls
bE1lc3NhZ2VQb3J0QXJyYXkoZXhlYywgZXhlYy0+YXJndW1lbnQoNyksICptZXNzYWdlUG9ydHMs
ICphcnJheUJ1ZmZlcnMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0x
MTAsNyArMTEwLDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50
KEpTTWVzc2FnZUV2ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKICAgICBNZXNzYWdlRXZlbnQmIGV2ZW50ID0ganNFdmVudC0+aW1wbCgp
OwotICAgIGV2ZW50LmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJnLCBjYW5j
ZWxhYmxlQXJnLCBkYXRhQXJnLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJnLCBzb3VyY2VBcmcs
IG1lc3NhZ2VQb3J0cy5yZWxlYXNlKCkpOworICAgIGV2ZW50LmluaXRNZXNzYWdlRXZlbnQodHlw
ZUFyZywgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCBvcmlnaW5BcmcsIGxh
c3RFdmVudElkQXJnLCBzb3VyY2VBcmcsIHN0ZDo6bW92ZShtZXNzYWdlUG9ydHMpKTsKICAgICBq
c0V2ZW50LT5tX2RhdGEuc2V0KGV4ZWMtPnZtKCksIGpzRXZlbnQsIGRhdGFBcmcuanNWYWx1ZSgp
KTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVu
dC5jcHAKaW5kZXggNDM4OGM5ZmVjZmFjMTAyYjc4MDI4ZjEzZDE0OGQ4NzFiOTkxODEyZC4uNTgx
NmQwYTY3YjMxZDgyY2U4ZWFjNDhiM2MzYmQ3OTc2ODQ0ZWU5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5jcHAKQEAgLTUxLDMwICs1MSwzMCBAQCBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IE1lc3NhZ2VFdmVudEluaXQmIGlu
aQogICAgICwgbV9vcmlnaW4oaW5pdGlhbGl6ZXIub3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJ
ZChpbml0aWFsaXplci5sYXN0RXZlbnRJZCkKICAgICAsIG1fc291cmNlKGlzVmFsaWRTb3VyY2Uo
aW5pdGlhbGl6ZXIuc291cmNlLmdldCgpKSA/IGluaXRpYWxpemVyLnNvdXJjZSA6IDApCi0gICAg
LCBtX3BvcnRzKGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KGluaXRpYWxpemVyLnBvcnRz
KSkpCisgICAgLCBtX3BvcnRzKHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVBvcnRBcnJheT4oaW5p
dGlhbGl6ZXIucG9ydHMpKQogewogfQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSwg
UGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKK01lc3NhZ2VFdmVudDo6TWVzc2Fn
ZUV2ZW50KGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdl
dD4gc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCiAgICAg
OiBFdmVudChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBt
X2RhdGFUeXBlKERhdGFUeXBlU2NyaXB0VmFsdWUpCiAgICAgLCBtX2RhdGFBc1NjcmlwdFZhbHVl
KGRhdGEpCiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiAgICAgLCBtX2xhc3RFdmVudElkKGxhc3RF
dmVudElkKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQotICAgICwgbV9wb3J0cyhwb3J0cykKKyAg
ICAsIG1fcG9ydHMoc3RkOjptb3ZlKHBvcnRzKSkKIHsKICAgICBBU1NFUlQoaXNWYWxpZFNvdXJj
ZShtX3NvdXJjZS5nZXQoKSkpOwogfQogCi1NZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJj
ZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKK01lc3NhZ2VFdmVudDo6TWVz
c2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVu
dFRhcmdldD4gc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMp
CiAgICAgOiBFdmVudChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAg
ICAgLCBtX2RhdGFUeXBlKERhdGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlKQogICAgICwgbV9k
YXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUoZGF0YSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikK
ICAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50SWQpCiAgICAgLCBtX3NvdXJjZShzb3VyY2Up
Ci0gICAgLCBtX3BvcnRzKHBvcnRzKQorICAgICwgbV9wb3J0cyhzdGQ6Om1vdmUocG9ydHMpKQog
ewogICAgIEFTU0VSVChpc1ZhbGlkU291cmNlKG1fc291cmNlLmdldCgpKSk7CiB9CkBAIC0xMDcs
NyArMTA3LDcgQEAgTWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotdm9pZCBN
ZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQsIERPTVdpbmRvdyogc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRz
KQordm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
bGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBv
cnRBcnJheT4gcG9ydHMpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTE5LDEwICsxMTksMTAgQEAgdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm8KICAgICBtX29y
aWdpbiA9IG9yaWdpbjsKICAgICBtX2xhc3RFdmVudElkID0gbGFzdEV2ZW50SWQ7CiAgICAgbV9z
b3VyY2UgPSBzb3VyY2U7Ci0gICAgbV9wb3J0cyA9IHBvcnRzOworICAgIG1fcG9ydHMgPSBzdGQ6
Om1vdmUocG9ydHMpOwogfQogCi12b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUs
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1l
c3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBz
b3VyY2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKIHsKICAgICBp
ZiAoZGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9p
ZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm8KICAgICBtX29yaWdpbiA9IG9yaWdpbjsKICAgICBtX2xhc3RF
dmVudElkID0gbGFzdEV2ZW50SWQ7CiAgICAgbV9zb3VyY2UgPSBzb3VyY2U7Ci0gICAgbV9wb3J0
cyA9IHBvcnRzOworICAgIG1fcG9ydHMgPSBzdGQ6Om1vdmUocG9ydHMpOwogfQogCiAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgd2hlbiB3ZSBoYXZlIGN1c3RvbSBPYmpDIGJpbmRpbmcgc3VwcG9ydC4K
QEAgLTE1NSwxMiArMTU1LDEyIEBAIE1lc3NhZ2VQb3J0KiBNZXNzYWdlRXZlbnQ6Om1lc3NhZ2VQ
b3J0KCkKIAogdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBNZXNzYWdlUG9ydCogcG9y
dCkKIHsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHM7CisgICAgc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzOwogICAgIGlmIChwb3J0KSB7Ci0gICAgICAg
IHBvcnRzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkpOworICAgICAgICBwb3J0cyA9
IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVBvcnRBcnJheT4oKTsKICAgICAgICAgcG9ydHMtPmFw
cGVuZChwb3J0KTsKICAgICB9Ci0gICAgaW5pdE1lc3NhZ2VFdmVudCh0eXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUsIGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgcG9ydHMucmVs
ZWFzZSgpKTsKKyAgICBpbml0TWVzc2FnZUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJs
ZSwgZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBzdGQ6Om1vdmUocG9ydHMpKTsK
IH0KIAogRXZlbnRJbnRlcmZhY2UgTWVzc2FnZUV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggY2ZiMmZhNDE0NjIyMWQ1Zjk1MmI3MGEw
NTQ0ZjJjYmUxNDU1NTQ0OC4uNWJlOTAyMDRiOGY1NTM0MDYwNGFkZDIxODRlOGRjZDI3YmZlZmNh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
NiwxMyArNTcsMTMgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNZXNzYWdlRXZlbnQpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZl
bnQ+IGNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0YSA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCksIGNv
bnN0IFN0cmluZyYgb3JpZ2luID0gU3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQg
PSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlID0gMCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZVBvcnRBcnJheT4gcG9ydHMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhID0g
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmco
KSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2ZW50
VGFyZ2V0PiBzb3VyY2UgPSAwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBwb3J0cykpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4sIGxh
c3RFdmVudElkLCBzb3VyY2UsIHN0ZDo6bW92ZShwb3J0cykpKTsKICAgICB9Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVhdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydEFy
cmF5PiBwb3J0cywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luID0gU3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSBT
dHJpbmcoKSwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlID0gMCkKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBv
cnRBcnJheT4gcG9ydHMsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElk
ID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSA9IDApCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4sIGxh
c3RFdmVudElkLCBzb3VyY2UsIHBvcnRzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgc3RkOjptb3Zl
KHBvcnRzKSkpOwogICAgIH0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gU3RyaW5nKCkp
CiAgICAgewpAQCAtODIsOCArODMsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfk1l
c3NhZ2VFdmVudCgpOwogCi0gICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9y
dEFycmF5Pik7Ci0gICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydEFy
cmF5Pik7CisgICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJy
YXk+KTsKKyAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFz
dEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRB
cnJheT4pOwogCiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29y
aWdpbjsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQoKSBjb25zdCB7IHJldHVybiBt
X2xhc3RFdmVudElkOyB9CkBAIC0xMTYsOCArMTE3LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBNZXNzYWdlRXZlbnQoKTsKICAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwg
Y29uc3QgTWVzc2FnZUV2ZW50SW5pdCYpOwotICAgIE1lc3NhZ2VFdmVudChjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbGFzdEV2ZW50SWQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHNvdXJjZSwgUGFzc093blB0
cjxNZXNzYWdlUG9ydEFycmF5Pik7Ci0gICAgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0QXJyYXk+KTsKKyAgICBNZXNzYWdlRXZlbnQoY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxh
c3RFdmVudElkLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2UsIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlUG9ydEFycmF5Pik7CisgICAgTWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlLCBzdGQ6OnVuaXF1
ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogCiAgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KGNv
bnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwogICAgIGV4cGxpY2l0IE1l
c3NhZ2VFdmVudChQYXNzUmVmUHRyPEJsb2I+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsK
QEAgLTEzMiw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX29yaWdpbjsKICAgICBT
dHJpbmcgbV9sYXN0RXZlbnRJZDsKICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fc291cmNlOwot
ICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBtX3BvcnRzOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlUG9ydEFycmF5PiBtX3BvcnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggNjQxNjcyMzBmNzY3ZmZkMWY2YWI1
NzBmM2FlYTIyYmFhNTRlZjI5ZC4uOGU1YjI5ZDhmOTg5MjFkMmUwOTU3ODkxYjYyZmQxMGEzMzZl
ZDIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZv
aWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBjb25zdCBNCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKIAotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4gY2hhbm5lbHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBjaGFubmVsczsKICAgICAvLyBNYWtlIHN1cmUgd2UgYXJlbid0IGNvbm5lY3RlZCB0byBhbnkg
b2YgdGhlIHBhc3NlZC1pbiBwb3J0cy4KICAgICBpZiAocG9ydHMpIHsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwb3J0cy0+c2l6ZSgpOyArK2kpIHsKQEAgLTgwLDEwICs4
MCwxMCBAQCB2b2lkIE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTQogICAgICAgICBpZiAoZWMpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIG1fZW50YW5nbGVkQ2hhbm5lbC0+cG9zdE1lc3NhZ2VU
b1JlbW90ZShtZXNzYWdlLCBjaGFubmVscy5yZWxlYXNlKCkpOworICAgIG1fZW50YW5nbGVkQ2hh
bm5lbC0+cG9zdE1lc3NhZ2VUb1JlbW90ZShtZXNzYWdlLCBzdGQ6Om1vdmUoY2hhbm5lbHMpKTsK
IH0KIAotUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IE1lc3NhZ2VQb3J0OjpkaXNlbnRh
bmdsZSgpCitzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBNZXNzYWdlUG9ydDo6
ZGlzZW50YW5nbGUoKQogewogICAgIEFTU0VSVChtX2VudGFuZ2xlZENoYW5uZWwpOwogCkBAIC05
NCw3ICs5NCw3IEBAIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBNZXNzYWdlUG9ydDo6
ZGlzZW50YW5nbGUoKQogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGVzdHJveWVkTWVz
c2FnZVBvcnQodGhpcyk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gMDsKIAotICAg
IHJldHVybiBtX2VudGFuZ2xlZENoYW5uZWwucmVsZWFzZSgpOworICAgIHJldHVybiBzdGQ6Om1v
dmUobV9lbnRhbmdsZWRDaGFubmVsKTsKIH0KIAogLy8gSW52b2tlZCB0byBub3RpZnkgdXMgdGhh
dCB0aGVyZSBhcmUgbWVzc2FnZXMgYXZhaWxhYmxlIGZvciB0aGlzIHBvcnQuCkBAIC0xMjYsNyAr
MTI2LDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6Y2xvc2UoKQogICAgIG1fY2xvc2VkID0gdHJ1ZTsK
IH0KIAotdm9pZCBNZXNzYWdlUG9ydDo6ZW50YW5nbGUoUGFzc093blB0cjxNZXNzYWdlUG9ydENo
YW5uZWw+IHJlbW90ZSkKK3ZvaWQgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlKHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlUG9ydENoYW5uZWw+IHJlbW90ZSkKIHsKICAgICAvLyBPbmx5IGludm9rZWQgdG8g
c2V0IG91ciBpbml0aWFsIGVudGFuZ2xlbWVudC4KICAgICBBU1NFUlQoIW1fZW50YW5nbGVkQ2hh
bm5lbCk7CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZW50YW5nbGUoUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IHJlbW90ZSkKIAogICAgIC8vIERvbid0IGVudGFu
Z2xlIHRoZSBwb3J0cyBpZiB0aGUgY2hhbm5lbCBpcyBjbG9zZWQuCiAgICAgaWYgKHJlbW90ZS0+
ZW50YW5nbGVJZk9wZW4odGhpcykpCi0gICAgICAgIG1fZW50YW5nbGVkQ2hhbm5lbCA9IHJlbW90
ZTsKKyAgICAgICAgbV9lbnRhbmdsZWRDaGFubmVsID0gc3RkOjptb3ZlKHJlbW90ZSk7CiB9CiAK
IHZvaWQgTWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQoKQpAQCAtMTUzLDE1ICsxNTMsMTUg
QEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAgICAgQVNTRVJUKHN0YXJ0
ZWQoKSk7CiAKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlOwotICAg
IE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7CisgICAgc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKICAgICB3aGlsZSAobV9l
bnRhbmdsZWRDaGFubmVsICYmIG1fZW50YW5nbGVkQ2hhbm5lbC0+dHJ5R2V0TWVzc2FnZUZyb21S
ZW1vdGUobWVzc2FnZSwgY2hhbm5lbHMpKSB7CiAKICAgICAgICAgLy8gY2xvc2UoKSBpbiBXb3Jr
ZXIgb25tZXNzYWdlIGhhbmRsZXIgc2hvdWxkIHByZXZlbnQgbmV4dCBtZXNzYWdlIGZyb20gZGlz
cGF0Y2hpbmcuCiAgICAgICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSAmJiBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCktPmlzQ2xvc2luZygpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRh
bmdsZVBvcnRzKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNoYW5uZWxzLnJlbGVhc2UoKSk7
Ci0gICAgICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUocG9ydHMu
cmVsZWFzZSgpLCBtZXNzYWdlLnJlbGVhc2UoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0ZDo6bW92ZShjaGFubmVscykpOworICAgICAgICBSZWZQ
dHI8RXZlbnQ+IGV2dCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHN0ZDo6bW92ZShwb3J0cyksIG1l
c3NhZ2UucmVsZWFzZSgpKTsKIAogICAgICAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCks
IEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KQEAgLTE4Myw3ICsxODMsNyBAQCBNZXNzYWdl
UG9ydCogTWVzc2FnZVBvcnQ6OmxvY2FsbHlFbnRhbmdsZWRQb3J0KCkKICAgICByZXR1cm4gbV9l
bnRhbmdsZWRDaGFubmVsID8gbV9lbnRhbmdsZWRDaGFubmVsLT5sb2NhbGx5RW50YW5nbGVkUG9y
dChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIDogMDsKIH0KIAotUGFzc093blB0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoY29uc3QgTWVz
c2FnZVBvcnRBcnJheSogcG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhj
b25zdCBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKCFwb3J0cyB8fCAhcG9ydHMtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0yMDIsMjYgKzIwMiwyNiBAQCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBN
ZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdlUAogICAgIH0KIAogICAg
IC8vIFBhc3NlZC1pbiBwb3J0cyBwYXNzZWQgdmFsaWRpdHkgY2hlY2tzLCBzbyB3ZSBjYW4gZGlz
ZW50YW5nbGUgdGhlbS4KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IHBvcnRB
cnJheSA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydENoYW5uZWxBcnJheShwb3J0cy0+c2l6ZSgp
KSk7CisgICAgYXV0byBwb3J0QXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5Pihwb3J0cy0+c2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMCA7
IGkgPCBwb3J0cy0+c2l6ZSgpIDsgKytpKSB7Ci0gICAgICAgIE93blB0cjxNZXNzYWdlUG9ydENo
YW5uZWw+IGNoYW5uZWwgPSAoKnBvcnRzKVtpXS0+ZGlzZW50YW5nbGUoKTsKLSAgICAgICAgKCpw
b3J0QXJyYXkpW2ldID0gY2hhbm5lbC5yZWxlYXNlKCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwgPSAoKnBvcnRzKVtpXS0+ZGlzZW50YW5nbGUo
KTsKKyAgICAgICAgKCpwb3J0QXJyYXkpW2ldID0gc3RkOjptb3ZlKGNoYW5uZWwpOwogICAgIH0K
LSAgICByZXR1cm4gcG9ydEFycmF5LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcG9ydEFycmF5Owog
fQogCi1QYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBv
cnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQorc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJy
YXk+IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMp
CiB7CiAgICAgaWYgKCFjaGFubmVscyB8fCAhY2hhbm5lbHMtPnNpemUoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydEFycmF5ID0g
YWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0QXJyYXkoY2hhbm5lbHMtPnNpemUoKSkpOworICAgIGF1
dG8gcG9ydEFycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUG9ydEFycmF5PihjaGFubmVs
cy0+c2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNoYW5uZWxzLT5z
aXplKCk7ICsraSkgewogICAgICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBNZXNzYWdl
UG9ydDo6Y3JlYXRlKGNvbnRleHQpOwotICAgICAgICBwb3J0LT5lbnRhbmdsZSgoKmNoYW5uZWxz
KVtpXS5yZWxlYXNlKCkpOworICAgICAgICBwb3J0LT5lbnRhbmdsZShzdGQ6Om1vdmUoKCpjaGFu
bmVscylbaV0pKTsKICAgICAgICAgKCpwb3J0QXJyYXkpW2ldID0gcG9ydC5yZWxlYXNlKCk7CiAg
ICAgfQotICAgIHJldHVybiBwb3J0QXJyYXkucmVsZWFzZSgpOworICAgIHJldHVybiBwb3J0QXJy
YXk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgK
aW5kZXggOWUwNDM3NDhiYzljY2RiOGEyNGMxMzA1YzliYzk2Y2I0MzUzNjE2ZS4uMGZkM2U0MTRk
MGNhNjEwZjYwNDdiNjBmNDJhMTJkNjNlMWQ3M2Y1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmgKQEAgLTMwLDkgKzMwLDggQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydENoYW5uZWwuaCIKKyNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CkBAIC01OSwxNCArNTgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0
YXJ0KCk7CiAgICAgICAgIHZvaWQgY2xvc2UoKTsKIAotICAgICAgICB2b2lkIGVudGFuZ2xlKFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPik7Ci0gICAgICAgIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsPiBkaXNlbnRhbmdsZSgpOworICAgICAgICB2b2lkIGVudGFuZ2xlKHN0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWw+KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbD4gZGlzZW50YW5nbGUoKTsKIAogICAgICAgICAvLyBSZXR1cm5z
IDAgaWYgdGhlcmUgaXMgYW4gZXhjZXB0aW9uLCBvciBpZiB0aGUgcGFzc2VkLWluIGFycmF5IGlz
IDAvZW1wdHkuCi0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5PiBkaXNlbnRhbmdsZVBvcnRzKGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRpb25D
b2RlJik7CisgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+IGRpc2VudGFuZ2xlUG9ydHMoY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgICAgICAvLyBSZXR1cm5zIDAgaWYgdGhlIHBhc3NlZCBhcnJheSBpcyAw
L2VtcHR5LgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBlbnRh
bmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5Pik7CisgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBv
cnRBcnJheT4gZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CiAKICAgICAgICAgdm9pZCBtZXNzYWdl
QXZhaWxhYmxlKCk7CiAgICAgICAgIGJvb2wgc3RhcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnRlZDsgfQpAQCAtMTA4LDcgKzEwNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQog
Ci0gICAgICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IG1fZW50YW5nbGVkQ2hhbm5lbDsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gbV9lbnRhbmdsZWRD
aGFubmVsOwogCiAgICAgICAgIGJvb2wgbV9zdGFydGVkOwogICAgICAgICBib29sIG1fY2xvc2Vk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCmluZGV4IDllMWI3Y2JhNmIy
NzUyNGM5Y2VhNzcwZGYxNjEzNDBkY2VmNjZkZDcuLmE3MTFlZmY2ZjBkMjI5OTE5MDExYjkzMzA5
YmY2YjhmZmU1MWQ0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFubmVsLmgK
QEAgLTMyLDkgKzMyLDggQEAKICNkZWZpbmUgTWVzc2FnZVBvcnRDaGFubmVsX2gKIAogI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00OSwxMyArNDgsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
IAogICAgIC8vIFRoZSBvdmVyd2hlbG1pbmdseSBjb21tb24gY2FzZSBpcyBzZW5kaW5nIGEgc2lu
Z2xlIHBvcnQsIHNvIGhhbmRsZSB0aGF0IGVmZmljaWVudGx5IHdpdGggYW4gaW5saW5lIGJ1ZmZl
ciBvZiBzaXplIDEuCi0gICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bD4sIDE+IE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5OworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWw+LCAxPiBNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eTsKIAogICAgIC8vIE1lc3NhZ2VQb3J0Q2hhbm5lbCBpcyBhIHBsYXRmb3JtLWluZGVwZW5kZW50
IGludGVyZmFjZSB0byB0aGUgcmVtb3RlIHNpZGUgb2YgYSBtZXNzYWdlIGNoYW5uZWwuCiAgICAg
Ly8gSXQgYWN0cyBhcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwgaW1wbGVtZW50YXRpb24gd2hpY2ggZW5zdXJlcyB0aGF0
IHRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgY2xvc2UoKSBtZXRob2QgaXMgaW52b2tlZCBiZWZvcmUg
ZGVzdHJ1Y3Rpb24uCiAgICAgY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsIHsKICAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTWVzc2FnZVBvcnRDaGFubmVsKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBNZXNzYWdlUG9ydENoYW5uZWwo
UGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4pOwogICAgICAgICBzdGF0aWMg
dm9pZCBjcmVhdGVDaGFubmVsKFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+LCBQYXNzUmVmUHRyPE1l
c3NhZ2VQb3J0Pik7CiAKICAgICAgICAgLy8gRW50YW5nbGVzIHRoZSBjaGFubmVsIHdpdGggYSBw
b3J0IChjYWxsZWQgd2hlbiBhIHBvcnQgaGFzIGJlZW4gY2xvbmVkLCBhZnRlciB0aGUgY2xvbmUg
aGFzIGJlZW4gbWFyc2hhbGVkIHRvIGl0cyBuZXcgb3duaW5nIHRocmVhZCBhbmQgaXMgcmVhZHkg
dG8gcmVjZWl2ZSBtZXNzYWdlcykuCkBAIC03NSwxMCArNzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpOwogCiAgICAgICAgIC8vIFNl
bmRzIGEgbWVzc2FnZSBhbmQgb3B0aW9uYWwgY2xvbmVkIHBvcnQgdG8gdGhlIHJlbW90ZSBwb3J0
LgotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CisgICAg
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOwogCiAgICAg
ICAgIC8vIEV4dHJhY3RzIGEgbWVzc2FnZSBmcm9tIHRoZSBtZXNzYWdlIHF1ZXVlIGZvciB0aGlz
IHBvcnQuCi0gICAgICAgIGJvb2wgdHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mLCBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+Jik7Cisg
ICAgICAgIGJvb2wgdHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+Jik7CiAK
ICAgICAgICAgLy8gUmV0dXJucyB0aGUgZW50YW5nbGVkIHBvcnQgaWYgcnVuIGJ5IHRoZSBzYW1l
IHRocmVhZCAoc2VlIE1lc3NhZ2VQb3J0Ojpsb2NhbGx5RW50YW5nbGVkUG9ydCgpIGZvciBtb3Jl
IGRldGFpbHMpLgogICAgICAgICBNZXNzYWdlUG9ydCogbG9jYWxseUVudGFuZ2xlZFBvcnQoY29u
c3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpAQCAtODYsNyArODYsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIH5NZXNzYWdlUG9ydENoYW5uZWwoKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIGV4cGxpY2l0IE1lc3NhZ2VQb3J0Q2hhbm5lbChQYXNzUmVmUHRyPFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsPik7CiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbD4gbV9jaGFubmVsOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAppbmRleCA5MDJk
YTE4MzQwMGFhOWMyNjZiMGUyOTg0OGNhMzU2MDUyNDhmYTcxLi4zNDJlZjY3ODgzMWIyNzM5NmQz
ZDU3ZWEyNWIwNDllMTU1NWZmMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vZGVm
YXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCkBAIC0zNywxNCArMzcs
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6
RXZlbnREYXRhOjpjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3Nh
Z2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQotewotICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnREYXRhPihuZXcgRXZlbnREYXRhKG1lc3NhZ2Us
IGNoYW5uZWxzKSk7Ci19Ci0KLVBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6
OkV2ZW50RGF0YShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCitQbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpFdmVudERhdGEoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxB
cnJheT4gY2hhbm5lbHMpCiAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkKLSAgICAsIG1fY2hhbm5l
bHMoY2hhbm5lbHMpCisgICAgLCBtX2NoYW5uZWxzKHN0ZDo6bW92ZShjaGFubmVscykpCiB7CiB9
CiAKQEAgLTUzLDE0ICs0OCwxNCBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlQ2hh
bm5lbChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0MSwgUGFzc1JlZlB0cgogICAgIFJlZlB0
cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6TWVzc2FnZVBvcnRRdWV1ZT4gcXVldWUxID0g
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6Ok1lc3NhZ2VQb3J0UXVldWU6OmNyZWF0ZSgpOwog
ICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6TWVzc2FnZVBvcnRRdWV1ZT4g
cXVldWUyID0gUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6Ok1lc3NhZ2VQb3J0UXVldWU6OmNy
ZWF0ZSgpOwogCi0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbDEgPSBhZG9w
dFB0cihuZXcgTWVzc2FnZVBvcnRDaGFubmVsKFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpj
cmVhdGUocXVldWUxLCBxdWV1ZTIpKSk7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4g
Y2hhbm5lbDIgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRDaGFubmVsKFBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsOjpjcmVhdGUocXVldWUyLCBxdWV1ZTEpKSk7CisgICAgYXV0byBjaGFubmVs
MSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVBvcnRDaGFubmVsPihQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6Y3JlYXRlKHF1ZXVlMSwgcXVldWUyKSk7CisgICAgYXV0byBjaGFubmVsMiA9
IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVBvcnRDaGFubmVsPihQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbDo6Y3JlYXRlKHF1ZXVlMiwgcXVldWUxKSk7CiAKICAgICBjaGFubmVsMS0+bV9jaGFu
bmVsLT5tX2VudGFuZ2xlZENoYW5uZWwgPSBjaGFubmVsMi0+bV9jaGFubmVsOwogICAgIGNoYW5u
ZWwyLT5tX2NoYW5uZWwtPm1fZW50YW5nbGVkQ2hhbm5lbCA9IGNoYW5uZWwxLT5tX2NoYW5uZWw7
CiAKLSAgICBwb3J0MS0+ZW50YW5nbGUoY2hhbm5lbDIucmVsZWFzZSgpKTsKLSAgICBwb3J0Mi0+
ZW50YW5nbGUoY2hhbm5lbDEucmVsZWFzZSgpKTsKKyAgICBwb3J0MS0+ZW50YW5nbGUoc3RkOjpt
b3ZlKGNoYW5uZWwyKSk7CisgICAgcG9ydDItPmVudGFuZ2xlKHN0ZDo6bW92ZShjaGFubmVsMSkp
OwogfQogCiBNZXNzYWdlUG9ydENoYW5uZWw6Ok1lc3NhZ2VQb3J0Q2hhbm5lbChQYXNzUmVmUHRy
PFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQpAQCAtOTEsMTcgKzg2LDE3IEBA
IHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpkaXNlbnRhbmdsZSgpCiAgICAgICAgIHJlbW90ZS0+
c2V0UmVtb3RlUG9ydCgwKTsKIH0KIAotdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OnBvc3RNZXNz
YWdlVG9SZW1vdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQordm9pZCBNZXNzYWdl
UG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1vdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4gY2hhbm5lbHMpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX2NoYW5uZWwtPm1fbXV0ZXgp
OwogICAgIGlmICghbV9jaGFubmVsLT5tX291dGdvaW5nUXVldWUpCiAgICAgICAgIHJldHVybjsK
LSAgICBib29sIHdhc0VtcHR5ID0gbV9jaGFubmVsLT5tX291dGdvaW5nUXVldWUtPmFwcGVuZEFu
ZENoZWNrRW1wdHkoUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3JlYXRl
KG1lc3NhZ2UsIGNoYW5uZWxzKSk7CisgICAgYm9vbCB3YXNFbXB0eSA9IG1fY2hhbm5lbC0+bV9v
dXRnb2luZ1F1ZXVlLT5hcHBlbmRBbmRDaGVja0VtcHR5KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YT4obWVzc2FnZSwgc3RkOjptb3ZlKGNoYW5u
ZWxzKSkpOwogICAgIGlmICh3YXNFbXB0eSAmJiBtX2NoYW5uZWwtPm1fcmVtb3RlUG9ydCkKICAg
ICAgICAgbV9jaGFubmVsLT5tX3JlbW90ZVBvcnQtPm1lc3NhZ2VBdmFpbGFibGUoKTsKIH0KIAot
Ym9vbCBNZXNzYWdlUG9ydENoYW5uZWw6OnRyeUdldE1lc3NhZ2VGcm9tUmVtb3RlKFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiBtZXNzYWdlLCBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+JiBjaGFubmVscykKK2Jvb2wgTWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdl
RnJvbVJlbW90ZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgbWVzc2FnZSwgc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYgY2hhbm5lbHMpCiB7CiAgICAgTXV0
ZXhMb2NrZXIgbG9jayhtX2NoYW5uZWwtPm1fbXV0ZXgpOwogICAgIGF1dG8gcmVzdWx0ID0gbV9j
aGFubmVsLT5tX2luY29taW5nUXVldWUtPnRyeUdldE1lc3NhZ2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oCmlu
ZGV4IDZlYjg5ZDQ3ZDIyOWFkZjFmZWNmOWJiYzk0MmQ2NTE3ZWMyMWQ5MTMuLjUwOTg0ZjkwYWVm
ZjE1MzYwMTJhZDcxZGIwYTIzNzBkNWNjMDBlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaApAQCAtNDksMTUg
KzQ5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2xhc3MgRXZlbnREYXRhIHsK
ICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50RGF0YSk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEV2ZW50RGF0YT4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pOworICAgICAgICAgICAg
RXZlbnREYXRhKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBzdGQ6
OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KTsKIAogICAgICAgICAgICAgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UoKSB7IHJldHVybiBtX21lc3Nh
Z2U7IH0KLSAgICAgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNo
YW5uZWxzKCkgeyByZXR1cm4gbV9jaGFubmVscy5yZWxlYXNlKCk7IH0KKyAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMoKSB7IHJldHVy
biBzdGQ6Om1vdmUobV9jaGFubmVscyk7IH0KIAogICAgICAgICBwcml2YXRlOgotICAgICAgICAg
ICAgRXZlbnREYXRhKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7CiAgICAgICAgICAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7Ci0gICAgICAgICAgICBPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CisgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CiAgICAgICAgIH07CiAK
ICAgICAgICAgLy8gV3JhcHBlciBmb3IgTWVzc2FnZVF1ZXVlIHRoYXQgYWxsb3dzIHVzIHRvIGRv
IHRocmVhZCBzYWZlIHNoYXJpbmcgYnkgdHdvIHByb3hpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggM2RmMmNjNGFjYTQ3YjE5MGJmOWMzNDVmNTIwNzYyMTQ5ZjI4NWZkYS4uNGZh
NDMzMGFhNmE2MzQwNDE1NDY3ZTk3MWRmMGRlMmIyMmNjNDQyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtMTMxLDEyICsxMzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBQb3N0TWVzc2FnZVRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7CiBwdWJsaWM6Ci0gICAg
UG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cqIHdpbmRvdywgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBQYXNzUmVm
UHRyPERPTVdpbmRvdz4gc291cmNlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBjaGFubmVscywgU2VjdXJpdHlPcmlnaW4qIHRhcmdldE9yaWdpbiwgUGFzc1JlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UpCisgICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cq
IHdpbmRvdywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gc291cmNlLCBzdGQ6
OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzLCBTZWN1cml0eU9y
aWdpbiogdGFyZ2V0T3JpZ2luLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFj
ZSkKICAgICAgICAgOiBtX3dpbmRvdyh3aW5kb3cpCiAgICAgICAgICwgbV9tZXNzYWdlKG1lc3Nh
Z2UpCiAgICAgICAgICwgbV9vcmlnaW4oc291cmNlT3JpZ2luKQogICAgICAgICAsIG1fc291cmNl
KHNvdXJjZSkKLSAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICAgICAsIG1fY2hh
bm5lbHMoc3RkOjptb3ZlKGNoYW5uZWxzKSkKICAgICAgICAgLCBtX3RhcmdldE9yaWdpbih0YXJn
ZXRPcmlnaW4pCiAgICAgICAgICwgbV9zdGFja1RyYWNlKHN0YWNrVHJhY2UpCiAgICAgewpAQCAt
MTQ0LDggKzE0NCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBl
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgT3du
UHRyPE1lc3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmds
ZVBvcnRzKCpjb250ZXh0LCBtX2NoYW5uZWxzLnJlbGVhc2UoKSk7Ci0gICAgICAgIHJldHVybiBN
ZXNzYWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdlUG9ydHMucmVsZWFzZSgpLCBtX21lc3NhZ2UsIG1f
b3JpZ2luLCBTdHJpbmcoKSwgbV9zb3VyY2UpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVz
c2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMo
KmNvbnRleHQsIHN0ZDo6bW92ZShtX2NoYW5uZWxzKSk7CisgICAgICAgIHJldHVybiBNZXNzYWdl
RXZlbnQ6OmNyZWF0ZShzdGQ6Om1vdmUobWVzc2FnZVBvcnRzKSwgbV9tZXNzYWdlLCBtX29yaWdp
biwgU3RyaW5nKCksIG1fc291cmNlKTsKICAgICB9CiAgICAgU2VjdXJpdHlPcmlnaW4qIHRhcmdl
dE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0T3JpZ2luLmdldCgpOyB9CiAgICAgU2Ny
aXB0Q2FsbFN0YWNrKiBzdGFja1RyYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGFja1RyYWNlLmdl
dCgpOyB9CkBAIC0xNjEsNyArMTYxLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtX21lc3NhZ2U7CiAgICAgU3RyaW5nIG1fb3JpZ2luOwogICAgIFJlZlB0
cjxET01XaW5kb3c+IG1fc291cmNlOwotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4gbV9jaGFubmVsczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk+IG1fY2hhbm5lbHM7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX3RhcmdldE9yaWdp
bjsKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBtX3N0YWNrVHJhY2U7CiB9OwpAQCAtODMz
LDcgKzgzMyw3IEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzID0gTWVzc2FnZVBv
cnQ6OmRpc2VudGFuZ2xlUG9ydHMocG9ydHMsIGVjKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xl
UG9ydHMocG9ydHMsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKIApAQCAtODQ5
LDcgKzg0OSw3IEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzCiAgICAgICAgIHN0YWNrVHJhY2Ug
PSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3Rh
dGUoKSwgU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCB0cnVlKTsK
IAogICAgIC8vIFNjaGVkdWxlIHRoZSBtZXNzYWdlLgotICAgIFBvc3RNZXNzYWdlVGltZXIqIHRp
bWVyID0gbmV3IFBvc3RNZXNzYWdlVGltZXIodGhpcywgbWVzc2FnZSwgc291cmNlT3JpZ2luLCAm
c291cmNlLCBjaGFubmVscy5yZWxlYXNlKCksIHRhcmdldC5nZXQoKSwgc3RhY2tUcmFjZS5yZWxl
YXNlKCkpOworICAgIFBvc3RNZXNzYWdlVGltZXIqIHRpbWVyID0gbmV3IFBvc3RNZXNzYWdlVGlt
ZXIodGhpcywgbWVzc2FnZSwgc291cmNlT3JpZ2luLCAmc291cmNlLCBzdGQ6Om1vdmUoY2hhbm5l
bHMpLCB0YXJnZXQuZ2V0KCksIHN0YWNrVHJhY2UucmVsZWFzZSgpKTsKICAgICB0aW1lci0+c3Rh
cnRPbmVTaG90KDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDcwMTU2OWYxNTI5NmU1MzRhZDkxN2Y4
OTg4NDY5ZjhhMGNhNGY1NzAuLmEyYjJiY2RjZTczZTJkNDgxYWU0YjU1ZmU4ZGYyNjkwZDc1NmI2
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCkBAIC03MSwxMCArNzEsMTAgQEAgdm9pZCBEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZTo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IG0KIHZvaWQgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RNZXNzYWdlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5
KiBwb3J0cywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gRGlzZW50YW5nbGUgdGhlIHBv
cnQgaW4gcHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0Lgot
ICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMgPSBNZXNzYWdlUG9y
dDo6ZGlzZW50YW5nbGVQb3J0cyhwb3J0cywgZWMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMgPSBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQ
b3J0cyhwb3J0cywgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwotICAgIHRocmVh
ZCgpLT53b3JrZXJPYmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2Fn
ZSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKKyAgICB0aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHko
KS5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KG1lc3NhZ2UsIHN0ZDo6bW92ZShjaGFubmVscykp
OwogfQogCiB2b2lkIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5j
cHAKaW5kZXggZDNhMzY5ZmIwMTQ1MzZjYTE3ODU4YWNlOTBmOWQyZmQwOTFmYmRlYS4uYTY3NWYx
MzE4MDNlZjFiNWU1YmVjZWQ0ZGM0MTQ1ZTBmNTY4ODNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAg
LTI1NCwyMSArMjU0LDIxIEBAIHZvaWQgU2hhcmVkV29ya2VyUHJveHk6OmNsb3NlKCkKIAogY2xh
c3MgU2hhcmVkV29ya2VyQ29ubmVjdFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcmVkV29ya2VyQ29u
bmVjdFRhc2s+IGNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkK
KyAgICBzdGF0aWMgUGFzc093blB0cjxTaGFyZWRXb3JrZXJDb25uZWN0VGFzaz4gY3JlYXRlKHN0
ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrKGNoYW5uZWwpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayhzdGQ6
Om1vdmUoY2hhbm5lbCkpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2hhcmVkV29ya2VyQ29u
bmVjdFRhc2soUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwpCi0gICAgICAg
IDogbV9jaGFubmVsKGNoYW5uZWwpCisgICAgU2hhcmVkV29ya2VyQ29ubmVjdFRhc2soc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkKKyAgICAgICAgOiBtX2NoYW5u
ZWwoc3RkOjptb3ZlKGNoYW5uZWwpKQogICAgIHsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCkKICAgICB7
CiAgICAgICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUo
KnNjcmlwdENvbnRleHQpOwotICAgICAgICBwb3J0LT5lbnRhbmdsZShtX2NoYW5uZWwucmVsZWFz
ZSgpKTsKKyAgICAgICAgcG9ydC0+ZW50YW5nbGUoc3RkOjptb3ZlKG1fY2hhbm5lbCkpOwogICAg
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzY3JpcHRDb250ZXh0LT5pc1dv
cmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xv
YmFsU2NvcGUgPSBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KHNjcmlwdENvbnRleHQp
OwogICAgICAgICAvLyBTaW5jZSBjbG9zZSgpIHN0b3BzIHRoZSB0aHJlYWQgZXZlbnQgbG9vcCwg
dGhpcyBzaG91bGQgbm90IGV2ZXIgZ2V0IGNhbGxlZCB3aGlsZSBjbG9zaW5nLgpAQCAtMjc3LDEz
ICsyNzcsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgd29ya2VyR2xvYmFsU2NvcGUtPmRpc3BhdGNo
RXZlbnQoY3JlYXRlQ29ubmVjdEV2ZW50KHBvcnQpKTsKICAgICB9CiAKLSAgICBPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsPiBtX2NoYW5uZWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbD4gbV9jaGFubmVsOwogfTsKIAogLy8gTG9hZHMgdGhlIHNjcmlwdCBvbiBiZWhh
bGYgb2YgYSB3b3JrZXIuCiBjbGFzcyBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+LCBwcml2YXRlIFdvcmtlclNjcmlw
dExvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyKFBh
c3NSZWZQdHI8U2hhcmVkV29ya2VyPiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+LCBQ
YXNzUmVmUHRyPFNoYXJlZFdvcmtlclByb3h5Pik7CisgICAgU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyKFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbD4sIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+KTsKICAgICB2b2lkIGxvYWQo
Y29uc3QgVVJMJik7CiAKIHByaXZhdGU6CkBAIC0yOTIsMTQgKzI5MiwxNCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZCgpOwogCiAgICAgUmVmUHRyPFNoYXJlZFdv
cmtlcj4gbV93b3JrZXI7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gbV9wb3J0Owor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWw+IG1fcG9ydDsKICAgICBSZWZQ
dHI8U2hhcmVkV29ya2VyUHJveHk+IG1fcHJveHk7CiAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExv
YWRlcj4gbV9zY3JpcHRMb2FkZXI7CiB9OwogCi1TaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OlNo
YXJlZFdvcmtlclNjcmlwdExvYWRlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gcG9ydCwgUGFzc1JlZlB0cjxTaGFyZWRXb3Jr
ZXJQcm94eT4gcHJveHkpCitTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OlNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBzdGQ6OnVuaXF1ZV9w
dHI8TWVzc2FnZVBvcnRDaGFubmVsPiBwb3J0LCBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclByb3h5
PiBwcm94eSkKICAgICA6IG1fd29ya2VyKHdvcmtlcikKLSAgICAsIG1fcG9ydChwb3J0KQorICAg
ICwgbV9wb3J0KHN0ZDo6bW92ZShwb3J0KSkKICAgICAsIG1fcHJveHkocHJveHkpCiB7CiB9CkBA
IC0zMzEsOSArMzMxLDkgQEAgdm9pZCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKCkKICAgICBlbHNlIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
Y3JpcHRJbXBvcnRlZChtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3Njcmlw
dExvYWRlci0+aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCkpOwogICAgICAg
ICBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFuY2UoKS53b3JrZXJTY3JpcHRM
b2FkZWQoKm1fcHJveHksIG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVzZXJB
Z2VudChtX3NjcmlwdExvYWRlci0+dXJsKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zY3JpcHRMb2FkZXIt
PnNjcmlwdCgpLCBtX3BvcnQucmVsZWFzZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93b3JrZXItPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmRlcHJlY2F0ZWRI
ZWFkZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kZXByZWNhdGVkSGVhZGVyVHlwZSgpKTsKKyAgICAg
ICAgICAgIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgc3RkOjptb3ZlKG1fcG9ydCksCisgICAg
ICAgICAgICBtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKS0+ZGVwcmVjYXRlZEhlYWRlcigpLAorICAgICAgICAgICAgbV93b3JrZXItPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmRlcHJlY2F0
ZWRIZWFkZXJUeXBlKCkpOwogICAgIH0KICAgICBtX3dvcmtlci0+dW5zZXRQZW5kaW5nQWN0aXZp
dHkobV93b3JrZXIuZ2V0KCkpOwogICAgIHRoaXMtPmRlcmVmKCk7IC8vIFRoaXMgZnJlZXMgdGhp
cyBvYmplY3QgLSBtdXN0IGJlIHRoZSBsYXN0IGFjdGlvbiBpbiB0aGlzIGZ1bmN0aW9uLgpAQCAt
MzU1LDcgKzM1NSw3IEBAIGJvb2wgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmlzQXZh
aWxhYmxlKCkKICAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnNoYXJlZFdvcmtlclN0
cmF0ZWd5KCktPmlzQXZhaWxhYmxlKCk7CiB9CiAKLXZvaWQgRGVmYXVsdFNoYXJlZFdvcmtlclJl
cG9zaXRvcnk6OndvcmtlclNjcmlwdExvYWRlZChTaGFyZWRXb3JrZXJQcm94eSYgcHJveHksIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHdvcmtlclNjcmlwdCwgUGFzc093
blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IHBvcnQsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3Vy
aXR5UG9saWN5VHlwZSkKK3ZvaWQgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Ondvcmtl
clNjcmlwdExvYWRlZChTaGFyZWRXb3JrZXJQcm94eSYgcHJveHksIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBjb25zdCBTdHJpbmcmIHdvcmtlclNjcmlwdCwgc3RkOjp1bmlxdWVfcHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbD4gcG9ydCwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lU
eXBlKQogewogICAgIE11dGV4TG9ja2VyIGxvY2sobV9sb2NrKTsKICAgICBpZiAocHJveHkuaXND
bG9zaW5nKCkpCkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVw
b3NpdG9yeTo6d29ya2VyU2NyaXB0TG9hZGVkKFNoYXJlZFdvcmtlclByb3h5JiBwcm94eSwKICAg
ICAgICAgcHJveHkuc2V0VGhyZWFkKHRocmVhZCk7CiAgICAgICAgIHRocmVhZC0+c3RhcnQoKTsK
ICAgICB9Ci0gICAgcHJveHkudGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhTaGFyZWRXb3Jr
ZXJDb25uZWN0VGFzazo6Y3JlYXRlKHBvcnQpKTsKKyAgICBwcm94eS50aHJlYWQoKS0+cnVuTG9v
cCgpLnBvc3RUYXNrKFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrOjpjcmVhdGUoc3RkOjptb3ZlKHBv
cnQpKSk7CiB9CiAKIGJvb2wgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omhhc1NoYXJl
ZFdvcmtlcnMoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgRGVm
YXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmRvY3VtZW50RGV0YWNoZWQoRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgICAgICBtX3Byb3hpZXNbaV0tPmRvY3VtZW50RGV0YWNoZWQoZG9jdW1lbnQp
OwogfQogCi12b2lkIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0VG9Xb3Jr
ZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciwgUGFzc093blB0cjxNZXNzYWdlUG9y
dENoYW5uZWw+IHBvcnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6Y29ubmVj
dFRvV29ya2VyKFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3JrZXIsIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlUG9ydENoYW5uZWw+IHBvcnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIE11dGV4TG9ja2VyIGxvY2sobV9sb2Nr
KTsKICAgICBBU1NFUlQod29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhbkFjY2VzcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkuZ2V0KCkpKTsK
QEAgLTQxNSw5ICs0MTUsOSBAQCB2b2lkIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpj
b25uZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcgogICAgIH0KICAgICAv
LyBJZiBwcm94eSBpcyBhbHJlYWR5IHJ1bm5pbmcsIGp1c3QgY29ubmVjdCB0byBpdCAtIG90aGVy
d2lzZSwga2ljayBvZmYgYSBsb2FkZXIgdG8gbG9hZCB0aGUgc2NyaXB0LgogICAgIGlmIChwcm94
eS0+dGhyZWFkKCkpCi0gICAgICAgIHByb3h5LT50aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNr
KFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrOjpjcmVhdGUocG9ydCkpOworICAgICAgICBwcm94eS0+
dGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhTaGFyZWRXb3JrZXJDb25uZWN0VGFzazo6Y3Jl
YXRlKHN0ZDo6bW92ZShwb3J0KSkpOwogICAgIGVsc2UgewotICAgICAgICBSZWZQdHI8U2hhcmVk
V29ya2VyU2NyaXB0TG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyU2Ny
aXB0TG9hZGVyKHdvcmtlciwgcG9ydCwgcHJveHkucmVsZWFzZSgpKSk7CisgICAgICAgIFJlZlB0
cjxTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI+IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBTaGFyZWRX
b3JrZXJTY3JpcHRMb2FkZXIod29ya2VyLCBzdGQ6Om1vdmUocG9ydCksIHByb3h5LnJlbGVhc2Uo
KSkpOwogICAgICAgICBsb2FkZXItPmxvYWQodXJsKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgKaW5k
ZXggZDI2Mjk1MjRlMTYyNjFmMjE3YzNjOGRiZDY3NDM4NTA4MTRkY2M5Mi4uODgxODMwMzcxYTZh
MmUzMGVjOTlmNDhkNzk2ZDVmZWNmYTViNjA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaApAQCAtMzQsMTAgKzM0
LDEwIEBACiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogCiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
QEAgLTYyLDEwICs2MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBi
b29sIGlzQXZhaWxhYmxlKCk7CiAKICAgICAgICAgLy8gSW52b2tlZCBvbmNlIHRoZSB3b3JrZXIg
c2NyaXB0IGhhcyBiZWVuIGxvYWRlZCB0byBmaXJlIHVwIHRoZSB3b3JrZXIgdGhyZWFkLgotICAg
ICAgICB2b2lkIHdvcmtlclNjcmlwdExvYWRlZChTaGFyZWRXb3JrZXJQcm94eSYsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHdvcmtlclNjcmlwdCwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWw+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKKyAgICAgICAgdm9pZCB3b3JrZXJT
Y3JpcHRMb2FkZWQoU2hhcmVkV29ya2VyUHJveHkmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
Y29uc3QgU3RyaW5nJiB3b3JrZXJTY3JpcHQsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENo
YW5uZWw+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKIAogICAgICAgICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRh
dGlvbiBvZiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KCkKLSAgICAgICAgdm9pZCBj
b25uZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbD4sIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOworICAgICAgICB2b2lkIGNvbm5lY3RUb1dvcmtlcihQYXNzUmVmUHRyPFNoYXJlZFdv
cmtlcj4sIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWw+LCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICAvLyBOb3RpZmlj
YXRpb24gdGhhdCBhIGRvY3VtZW50IGhhcyBiZWVuIGRldGFjaGVkLgogICAgICAgICB2b2lkIGRv
Y3VtZW50RGV0YWNoZWQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29y
a2VyLmNwcAppbmRleCA2MzRiNGQwMTI3Y2JhZjA5MDI0YjE0NWRlMjg1YWI3YmI3ZjUxYTlkLi44
ODJlMjI5MDU3NmFhOTU2ZTg2ODA1M2UzMmM4YWIwYzQzMDUzZDU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFBhc3NSZWZQdHI8U2hh
cmVkV29ya2VyPiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjCiAKICAgICBSZWZQdHI8TWVzc2FnZUNoYW5uZWw+IGNoYW5uZWwgPSBNZXNzYWdl
Q2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQpOwogICAgIHdvcmtlci0+bV9wb3J0ID0gY2hhbm5lbC0+
cG9ydDEoKTsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiByZW1vdGVQb3J0ID0gY2hh
bm5lbC0+cG9ydDIoKS0+ZGlzZW50YW5nbGUoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsPiByZW1vdGVQb3J0ID0gY2hhbm5lbC0+cG9ydDIoKS0+ZGlzZW50YW5nbGUo
KTsKICAgICBBU1NFUlQocmVtb3RlUG9ydCk7CiAKICAgICB3b3JrZXItPnN1c3BlbmRJZk5lZWRl
ZCgpOwpAQCAtODAsNyArODAsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gU2hhcmVkV29y
a2VyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KHdv
cmtlci5nZXQoKSwgcmVtb3RlUG9ydC5yZWxlYXNlKCksIHNjcmlwdFVSTCwgbmFtZSwgZWMpOwor
ICAgIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3Qod29ya2VyLmdldCgpLCBzdGQ6Om1v
dmUocmVtb3RlUG9ydCksIHNjcmlwdFVSTCwgbmFtZSwgZWMpOwogCiAgICAgcmV0dXJuIHdvcmtl
ci5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDIzZjJmYThhNzEyZTg5Y2Q4MDUwYjkwMGIwZDI3NzY4
NGRlZmZhMmYuLjc1NDdkN2FkMDg0YmM5Y2M1YjQ0NjU4MmViYTU5NTA0NjFjNTQ5YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8TWVzc2Fn
ZUV2ZW50PiBjcmVhdGVDb25uZWN0RXZlbnQoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gcHJwUG9y
dCkKIHsKICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBwcnBQb3J0OwotICAgIFJlZlB0
cjxNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoYWRvcHRQdHIobmV3
IE1lc3NhZ2VQb3J0QXJyYXkoMSwgcG9ydCkpLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpLCBT
dHJpbmcoKSwgU3RyaW5nKCksIHBvcnQpOworICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50
ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUG9ydEFycmF5
PigxLCBwb3J0KSwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKSwgU3RyaW5nKCksIFN0cmluZygp
LCBwb3J0KTsKICAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0RXZlbnQs
IGZhbHNlLCBmYWxzZSk7CiAgICAgcmV0dXJuIGV2ZW50LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCmluZGV4IGEz
Y2RhNWI1MDVmODEzMDI1ZTg3ZTNlN2E4YzZhNWY2MWI1OTExZTguLjU3MWM5YzcyZDE3NWNhZjQz
OWZmYjljMGMzMmU0YTNhMzM1Zjc3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtNDEsOSArNDEsOSBAQCBib29sIFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnk6OmlzQXZhaWxhYmxlKCkKICAgICByZXR1cm4gRGVmYXVsdFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnk6Omluc3RhbmNlKCkuaXNBdmFpbGFibGUoKTsKIH0KIAotdm9pZCBT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiB3
b3JrZXIsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBwb3J0LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgU2hhcmVkV29y
a2VyUmVwb3NpdG9yeTo6Y29ubmVjdChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBz
dGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBwb3J0LCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBEZWZhdWx0U2hh
cmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFuY2UoKS5jb25uZWN0VG9Xb3JrZXIod29ya2VyLCBw
b3J0LCB1cmwsIG5hbWUsIGVjKTsKKyAgICBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6
aW5zdGFuY2UoKS5jb25uZWN0VG9Xb3JrZXIod29ya2VyLCBzdGQ6Om1vdmUocG9ydCksIHVybCwg
bmFtZSwgZWMpOwogfQogCiB2b2lkIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmRvY3VtZW50RGV0
YWNoZWQoRG9jdW1lbnQqIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1No
YXJlZFdvcmtlclJlcG9zaXRvcnkuaAppbmRleCAwNDlmODZhYzllNjUzYmY4NmM4MTYyOTY5ODRi
ZjFhMDFlMGNlMzVlLi40ZTJmNDlmOWEwNWE4ZTMyZTg4Y2QyMmJhMTY5ZWJmODcxMTEzN2NmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuaApA
QCAtMzMsOCArMzMsOCBAQAogCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogCisjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGlj
IGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgICAgICAvLyBDb25uZWN0cyB0aGUgcGFzc2VkIFNo
YXJlZFdvcmtlciBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIHdvcmtlciB0aHJlYWQsIGNyZWF0
aW5nIGEgbmV3IHRocmVhZCBpZiBuZWNlc3NhcnkuCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbm5l
Y3QoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bD4sIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAg
ICAgICBzdGF0aWMgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiwgc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIC8vIEludm9rZWQgd2hlbiBhIGRvY3Vt
ZW50IGhhcyBiZWVuIGRldGFjaGVkLgogICAgICAgICBzdGF0aWMgdm9pZCBkb2N1bWVudERldGFj
aGVkKERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggMTY4ZDEzODIx
MDQ1YjY2Nzc0NTNjYWFjNGM1OWVhN2U3Nzk3YjM5OS4uNjI5Y2Y0ZTRlMWY1OWExOWMyN2RmNGVj
ZGRiNDJjZDE3OTkzZTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtMTE5LDEw
ICsxMTksMTAgQEAgdm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCoKIHZvaWQgV29ya2VyOjpwb3N0TWVz
c2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVz
c2FnZVBvcnRBcnJheSogcG9ydHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIERpc2Vu
dGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0IHRvIHRoZSByZW1v
dGUgY29udGV4dC4KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxz
ID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMocG9ydHMsIGVjKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6
OmRpc2VudGFuZ2xlUG9ydHMocG9ydHMsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKG1l
c3NhZ2UsIGNoYW5uZWxzLnJlbGVhc2UoKSk7CisgICAgbV9jb250ZXh0UHJveHktPnBvc3RNZXNz
YWdlVG9Xb3JrZXJHbG9iYWxTY29wZShtZXNzYWdlLCBzdGQ6Om1vdmUoY2hhbm5lbHMpKTsKIH0K
IAogdm9pZCBXb3JrZXI6OnRlcm1pbmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGVQcm94eS5oCmluZGV4IDBhMzAwNzEwYWFhNDhmZmVhMWY2OGUxMTY3
ZTNmODkyNzc1NzJiNDMuLjkyODY0MTZjYjY5NWUzMGMwZjlhNWYwNzg2YmE4MTE2Nzk4NWNjOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5o
CkBAIC0zMyw4ICszMyw4IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUg
IldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgPSAwOwogCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PikgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggNTc1ZmYyY2U2YjczYTRlMGYyZDhjODAxMzJkYzEy
NTY1ODEyZmMxOC4uNDM4ZjQ3ZTUwMjE4MTM3MGIzNTAxMDk4N2Q3OTMwYWVhZjcyM2QwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAg
LTU1LDE1ICs1NSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VXb3Jr
ZXJHbG9iYWxTY29wZVRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlckdsb2JhbFNjb3Bl
VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKKyAgICBzdGF0aWMg
UGFzc093blB0cjxNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNrPiBjcmVhdGUoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2sobWVzc2FnZSwgY2hhbm5lbHMpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2VyR2xvYmFsU2NvcGVUYXNr
KG1lc3NhZ2UsIHN0ZDo6bW92ZShjaGFubmVscykpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
TWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5l
bHMpCisgICAgTWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzayhQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiBjaGFubmVscykKICAgICAgICAgOiBtX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAg
LCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICAgICAsIG1fY2hhbm5lbHMoc3RkOjptb3ZlKGNo
YW5uZWxzKSkKICAgICB7CiAgICAgfQogCkBAIC03MSwyNyArNzEsMjcgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNjcmlwdENvbnRl
eHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIERlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUq
PihzY3JpcHRDb250ZXh0KTsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRz
ID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnNjcmlwdENvbnRleHQsIG1fY2hhbm5lbHMu
cmVsZWFzZSgpKTsKLSAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShwb3J0cy5yZWxlYXNlKCksIG1fbWVzc2FnZSkpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0
cygqc2NyaXB0Q29udGV4dCwgc3RkOjptb3ZlKG1fY2hhbm5lbHMpKTsKKyAgICAgICAgY29udGV4
dC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShzdGQ6Om1vdmUocG9ydHMpLCBt
X21lc3NhZ2UpKTsKICAgICAgICAgY29udGV4dC0+dGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5
KCkuY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGNvbnRleHQtPmhhc1BlbmRpbmdBY3Rp
dml0eSgpKTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbV9tZXNzYWdlOwotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gbV9j
aGFubmVsczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1f
Y2hhbm5lbHM7CiB9OwogCiBjbGFzcyBNZXNzYWdlV29ya2VyVGFzayA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxN
ZXNzYWdlV29ya2VyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscywg
V29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KQorICAgIHN0YXRpYyBQYXNzT3du
UHRyPE1lc3NhZ2VXb3JrZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4g
Y2hhbm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZVdvcmtlclRhc2sobWVzc2FnZSwgY2hh
bm5lbHMsIG1lc3NhZ2luZ1Byb3h5KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVz
c2FnZVdvcmtlclRhc2sobWVzc2FnZSwgc3RkOjptb3ZlKGNoYW5uZWxzKSwgbWVzc2FnaW5nUHJv
eHkpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTWVzc2FnZVdvcmtlclRhc2soUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IGNoYW5uZWxzLCBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJv
eHkpCisgICAgTWVzc2FnZVdvcmtlclRhc2soUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hh
bm5lbHMsIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKICAgICAgICAgOiBt
X21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgLCBtX2NoYW5uZWxzKGNoYW5uZWxzKQorICAgICAg
ICAsIG1fY2hhbm5lbHMoc3RkOjptb3ZlKGNoYW5uZWxzKSkKICAgICAgICAgLCBtX21lc3NhZ2lu
Z1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQogICAgIHsKICAgICB9CkBAIC0xMDIsMTMgKzEwMiwxMyBA
QCBwcml2YXRlOgogICAgICAgICBpZiAoIXdvcmtlck9iamVjdCB8fCBtX21lc3NhZ2luZ1Byb3h5
LT5hc2tlZFRvVGVybWluYXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgT3du
UHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMo
KnNjcmlwdENvbnRleHQsIG1fY2hhbm5lbHMucmVsZWFzZSgpKTsKLSAgICAgICAgd29ya2VyT2Jq
ZWN0LT5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHBvcnRzLnJlbGVhc2UoKSwg
bV9tZXNzYWdlKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBw
b3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpzY3JpcHRDb250ZXh0LCBzdGQ6Om1v
dmUobV9jaGFubmVscykpOworICAgICAgICB3b3JrZXJPYmplY3QtPmRpc3BhdGNoRXZlbnQoTWVz
c2FnZUV2ZW50OjpjcmVhdGUoc3RkOjptb3ZlKHBvcnRzKSwgbV9tZXNzYWdlKSk7CiAgICAgfQog
CiBwcml2YXRlOgogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fbWVzc2FnZTsK
LSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IG1fY2hhbm5lbHM7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBtX2NoYW5uZWxzOwogICAgIFdv
cmtlck1lc3NhZ2luZ1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5OwogfTsKIApAQCAtMzA5LDIxICsz
MDksMjEgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3QKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LmdldCgpLCB0aGlzLCBzY3JpcHRVUkwpOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVs
cykKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3Qo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCiB7Ci0gICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wb3N0VGFzayhNZXNzYWdlV29ya2VyVGFzazo6Y3JlYXRlKG1lc3NhZ2Us
IGNoYW5uZWxzLCB0aGlzKSk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFz
ayhNZXNzYWdlV29ya2VyVGFzazo6Y3JlYXRlKG1lc3NhZ2UsIHN0ZDo6bW92ZShjaGFubmVscyks
IHRoaXMpKTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dv
cmtlckdsb2JhbFNjb3BlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKK3ZvaWQgV29y
a2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKIHsKICAgICBpZiAobV9hc2tlZFRvVGVybWlu
YXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93b3JrZXJUaHJlYWQpIHsKICAgICAg
ICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwotICAgICAgICBtX3dvcmtlclRocmVhZC0+
cnVuTG9vcCgpLnBvc3RUYXNrKE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2s6OmNyZWF0ZSht
ZXNzYWdlLCBjaGFubmVscykpOworICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3RUYXNrKE1lc3NhZ2VXb3JrZXJHbG9iYWxTY29wZVRhc2s6OmNyZWF0ZShtZXNzYWdlLCBzdGQ6
Om1vdmUoY2hhbm5lbHMpKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcXVldWVkRWFybHlUYXNr
cy5hcHBlbmQoTWVzc2FnZVdvcmtlckdsb2JhbFNjb3BlVGFzazo6Y3JlYXRlKG1lc3NhZ2UsIGNo
YW5uZWxzKSk7CisgICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoTWVzc2FnZVdvcmtl
ckdsb2JhbFNjb3BlVGFzazo6Y3JlYXRlKG1lc3NhZ2UsIHN0ZDo6bW92ZShjaGFubmVscykpKTsK
IH0KIAogYm9vbCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ss
IGNvbnN0IFN0cmluZyYgbW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuaAppbmRleCBiZjYwN2Y1ODJjZTFiNGQ1NDE0YTY1NDljOTgyMjE3MjVlZDk1
ZDI1Li5lY2ZlODY4MzY2OTZiMzRmOWViMzY3YWE3ZDk0MzgzZjk2ZWM0YjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgIldvcmtl
ckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKKyNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtNTMsNyArNTQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVzZSBtZXRob2RzIGlu
IHRoZSB3b3JrZXIgb2JqZWN0IHRocmVhZC4pCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUpIG92
ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUo
KSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9i
YWxTY29wZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+KSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBv
c3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pIG92ZXJyaWRl
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSBvdmVycmlk
ZTsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlz
T25saW5lKSBvdmVycmlkZTsKQEAgLTY1LDcgKzY2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIC8vIEltcGxlbWVudGF0aW9ucyBvZiBXb3JrZXJPYmplY3RQcm94eS4KICAgICAg
ICAgLy8gKE9ubHkgdXNlIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHdvcmtlciBjb250ZXh0IHRocmVh
ZC4pCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4pIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIHN0ZDo6dW5pcXVl
X3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAppbmRleCBlNmE0YjdkNzNiYzU2YmVkMDdm
ZTQ4MGE1N2JkMzVkNzNkODZiNDg5Li5jZWZhYjRkMTQ4ZjlkMGQ5ODI3ZGEwZjQyOGJmNzVmMTEz
YzdlMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCkBA
IC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlICJXb3JrZXJSZXBvcnRpbmdQcm94eS5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNs
dWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNyArNDIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIg
b2JqZWN0LgogICAgIGNsYXNzIFdvcmtlck9iamVjdFByb3h5IDogcHVibGljIFdvcmtlclJlcG9y
dGluZ1Byb3h5IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093
blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KSA9IDA7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhh
c1BlbmRpbmdBY3Rpdml0eSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGlu
Z0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>