<?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>193197</bug_id>
          
          <creation_ts>2019-01-07 08:02:32 -0800</creation_ts>
          <short_desc>Reduce use of NetworkProcess::singleton</short_desc>
          <delta_ts>2019-01-07 10:04:29 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1492260</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-07 08:02:32 -0800</bug_when>
    <thetext>Reduce use of NetworkProcess::singleton</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492261</commentid>
    <comment_count>1</comment_count>
      <attachid>358496</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-07 08:03:30 -0800</bug_when>
    <thetext>Created attachment 358496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492263</commentid>
    <comment_count>2</comment_count>
      <attachid>358498</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-07 08:10:12 -0800</bug_when>
    <thetext>Created attachment 358498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492275</commentid>
    <comment_count>3</comment_count>
      <attachid>358500</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-07 09:11:20 -0800</bug_when>
    <thetext>Created attachment 358500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492279</commentid>
    <comment_count>4</comment_count>
      <attachid>358501</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-07 09:25:06 -0800</bug_when>
    <thetext>Created attachment 358501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492288</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-07 10:03:27 -0800</bug_when>
    <thetext>http://trac.webkit.org/r239680</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492289</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-07 10:04:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/47087932&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358496</attachid>
            <date>2019-01-07 08:03:30 -0800</date>
            <delta_ts>2019-01-07 08:10:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193197-20190107080328.patch</filename>
            <type>text/plain</type>
            <size>57239</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzk2NzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAxOS0wMS0wNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSB1c2Ug
b2YgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUGFzcyBpdCBhcm91bmQgYXMgYSBSZWY8TmV0d29ya1Byb2Nl
c3M+IGFzIGEgc3RlcCB0b3dhcmRzIHJlZHVjaW5nIGdsb2JhbCBzdGF0ZS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6V2ViSURCQ29ubmVjdGlvblRv
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkaXNj
b25uZWN0ZWRGcm9tV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQ6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub0NsaWVudDo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJD
b25uZWN0aW9uVG9DbGllbnQ6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGVJbmRleCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OnJlbmFtZUluZGV4KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpwdXRPckFkZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpnZXRDb3VudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjppdGVyYXRlQ3Vyc29yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojplc3RhYmxpc2hUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGF0YWJhc2VD
b25uZWN0aW9uUGVuZGluZ0Nsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50OjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6Om9w
ZW5EQlJlcXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmdldEFsbERhdGFiYXNlTmFtZXMpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0U3RyZWFtKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWZldGNoRE5T
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0
RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRh
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpmZXRjaERpc2tDYWNoZUVudHJpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OmNsZWFyRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Z2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmlkYlNlcnZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnZlcnRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3Jr
U2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Om5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZFJl
Y2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLTmV0d29y
a1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6XSk6
CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRvd25sb2Fk
VGFzazpkaWRGaW5pc2hEb3dubG9hZGluZ1RvVVJMOl0pOgorICAgICAgICAoLVtXS05ldHdvcmtT
ZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkb3dubG9hZFRhc2s6ZGlkV3JpdGVEYXRhOnRvdGFs
Qnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgtW1dL
TmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZEJlY29tZURvd25s
b2FkVGFzazpdKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25D
b2NvYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9u
Q3VybCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJz
aXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvblNvdXA6
Ok5ldHdvcmtTZXNzaW9uU291cCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrU2Vzc2lvblNvdXAuaDoKKwogMjAxOS0wMS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vZGVybml6ZSBDYWNoZU1vZGVsIGFuZCBk
aXNrIGNhY2hlIGZldGNoaW5nIGFuZCBjbGVhcmluZwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MywxMyArNjMsMTQgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLVJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIpCitSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoY29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhuZXR3b3JrUHJvY2VzcywgY29ubmVjdGlvbklkZW50
aWZpZXIpKTsKIH0KIAotTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKK05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKICAgICA6IG1fY29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklk
ZW50aWZpZXIsICp0aGlzKSkKKyAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3Mp
CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgLCBtX21kbnNSZWdpc3RlcigqdGhpcykKICNlbmRp
ZgpAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmRpZFIKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAg
ICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRp
ZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4MCw3ICsxODEsNyBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSCiAgICAgfQogICAgIAogICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRl
eHRDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25Ub0Nv
bnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24oY29ubmVjdGlvbikpIHsKKyAgICAgICAgaWYg
KGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRv
Q29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgewogICAgICAgICAg
ICAgY29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjcsOSArMjI4LDkgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUgogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoUmVmUHRyPFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IE5ldHdv
cmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUEND
b25uZWN0aW9uKGNvbm5lY3Rpb24pKSB7CisgICAgaWYgKFJlZlB0cjxXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24+IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBtX25ldHdvcmtQcm9j
ZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKGNvbm5lY3Rp
b24pKSB7CiAgICAgICAgIC8vIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgZXhpdGVkLgotICAgICAg
ICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NX
YXNDbG9zZWQoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9z
ZWQoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbHNlCkBAIC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQwogICAgIHN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFj
a2luZygpOwogCiAgICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkuY29ubmVjdGlv
blRvV2ViUHJvY2Vzc0RpZENsb3NlKHRoaXMpOwotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0
b24oKS5yZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyh0aGlzKTsKKyAgICBtX25l
dHdvcmtQcm9jZXNzLT5yZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyh0aGlzKTsK
IAogI2lmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKG1fcnRjUHJvdmlkZXIpIHsKQEAgLTI3OSw3
ICsyODAsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhCiAgICAg
QVNTRVJUKCFtX25ldHdvcmtTb2NrZXRTdHJlYW1zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAg
ICBXZWJDb3JlOjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4gdG9rZW4gPSB7IH07CiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdG9rZW4gPSB7IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIH07CisgICAgdG9rZW4gPSB7IG1fbmV0d29y
a1Byb2Nlc3MtPnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgfTsKICNlbmRpZgogICAgIG1f
bmV0d29ya1NvY2tldFN0cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06
OmNyZWF0ZShXVEZNb3ZlKHVybCksIHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZp
ZXIsIG1fY29ubmVjdGlvbiwgV1RGTW92ZSh0b2tlbikpKTsKIH0KQEAgLTM4NCw3ICszODUsNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRECiAKIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnByZWZldGNoRE5TKGhvc3Ru
YW1lKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wcmVmZXRjaEROUyhob3N0bmFtZSk7CiB9CiAK
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyh1aW50NjRf
dCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQpAQCAtNDIzLDE3ICs0MjQsMTYgQEAgc3RhdGljIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc3RvcmFnZVNlcwogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkTmFtZSkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZG93bmxvYWRN
YW5hZ2VyKCkuc3RhcnREb3dubG9hZCh0aGlzLCBzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVl
c3QsIHN1Z2dlc3RlZE5hbWUpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdl
cigpLnN0YXJ0RG93bmxvYWQodGhpcywgc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBz
dWdnZXN0ZWROYW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQgZG93bmxv
YWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KTsKICAgICAvLyBJbiBjYXNlIGEgcmVzcG9uc2UgaXMgc2VydmVkIGZyb20gc2VydmljZSB3b3Jr
ZXIsIHdlIGRvIG5vdCBoYXZlIHlldCB0aGUgYWJpbGl0eSB0byBjb252ZXJ0IHRoZSBsb2FkLgog
ICAgIGlmICghbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgfHwgcmVzcG9uc2Uuc291cmNlKCkg
PT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKSB7Ci0gICAgICAgIG5l
dHdvcmtQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQodGhpcywgc2Vzc2lv
bklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+ZG93
bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZCh0aGlzLCBzZXNzaW9uSUQsIGRvd25sb2FkSUQs
IHJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NTIsNyArNTUyLDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0QwogCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkV2Vic2l0ZURhdGFTdG9y
ZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0
ZXJzKCkpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpKTsK
IH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlEKQpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVzdGEKICAgICBMT0coSW5kZXhlZERCLCAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlciAtICUiIFBSSXU2
NCwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIEFTU0VSVCghbV93ZWJJREJDb25u
ZWN0aW9ucy5jb250YWlucyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpOwogICAgIAotICAg
IG1fd2ViSURCQ29ubmVjdGlvbnMuc2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcywgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHNlc3Npb25JRCkpOworICAgIG1fd2ViSURCQ29ubmVjdGlvbnMuc2V0KHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZShtX25l
dHdvcmtQcm9jZXNzLCAqdGhpcywgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlc3Npb25J
RCkpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVJREJD
b25uZWN0aW9uVG9TZXJ2ZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCkBA
IC03MjYsNyArNzI2LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5y
ZQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZl
ckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyJiBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBhdXRvJiBzZXJ2
ZXIgPSBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Np
b25JRCk7CisgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JT
ZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgYXV0byBjb25uZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNz
aW9uSUQpOwogICAgIAogICAgIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlv
bi0+aWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24g
MjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGVudW0gY2xh
c3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
Y2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBOZXR3b3JrU29ja2V0U3RyZWFtOwogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OwpA
QCAtNjIsMTAgKzYzLDExIEBAIHN0cnVjdCBEYXRhS2V5OwogCiBjbGFzcyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKIAogICAg
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQo
KTsgfQorICAgIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0
d29ya1Byb2Nlc3MuZ2V0KCk7IH0KIAogICAgIHZvaWQgZGlkQ2xlYW51cFJlc291cmNlTG9hZGVy
KE5ldHdvcmtSZXNvdXJjZUxvYWRlciYpOwogICAgIHZvaWQgc2V0T25MaW5lU3RhdGUoYm9vbCk7
CkBAIC0xMjAsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcFRyYWNraW5nUmVzb3Vy
Y2VMb2FkKFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgTmV0d29ya0FjdGl2aXR5
VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUpOwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90
IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAKQEAgLTIyNyw2ICsyMjksNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBmaW5kTmV0d29ya0Fj
dGl2aXR5VHJhY2tlcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFJlZjxOZXR3b3JrUHJvY2Vz
cz4gbV9uZXR3b3JrUHJvY2VzczsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxOZXR3
b3JrU29ja2V0U3RyZWFtPj4gbV9uZXR3b3JrU29ja2V0U3RyZWFtczsKICAgICBIYXNoTWFwPFJl
c291cmNlTG9hZElkZW50aWZpZXIsIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBtX25ldHdv
cmtSZXNvdXJjZUxvYWRlcnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjM5NjcxKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
NSw4ICsxMTUsOCBAQCBzdGF0aWMgdm9pZCBjYWxsRXhpdFNvb24oSVBDOjpDb25uZWN0aW9uCiAK
IE5ldHdvcmtQcm9jZXNzJiBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TmV0d29ya1Byb2Nlc3M+IG5ldHdvcmtQcm9jZXNzOwotICAgIHJl
dHVybiBuZXR3b3JrUHJvY2VzczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPE5ldHdv
cmtQcm9jZXNzPj4gbmV0d29ya1Byb2Nlc3MoYWRvcHRSZWYoKm5ldyBOZXR3b3JrUHJvY2Vzcykp
OworICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzcy5nZXQoKTsKIH0KIAogTmV0d29ya1Byb2Nlc3M6
Ok5ldHdvcmtQcm9jZXNzKCkKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojppbml0aWFsaXplTmV0d29ya1ByCiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dp
dGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5z
ZXNzaW9uSUQ7Ci0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3
b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFy
YW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKSk7CisgICAgU2Vzc2lvblRyYWNrZXI6
OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzKSkpOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgYWRkSW5k
ZXhlZERhdGFiYXNlU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29y
a0Nvbm5lYwogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlv
bjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9y
bUNvbm5lY3Rpb24oKTsKIAotICAgIGF1dG8gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpOworICAgIGF1dG8gY29ubmVj
dGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoKnRoaXMsIHNvY2tl
dFBhaXIuc2VydmVyKTsKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoV1RGTW92
ZShjb25uZWN0aW9uKSk7CiAKICAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tl
dFBhaXIuY2xpZW50KTsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVOZXR3b3JrQ29ubmVjCiAgICAgfQogCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNv
bm5lY3Rpb24uCi0gICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkp
OworICAgIGF1dG8gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
cmVhdGUoKnRoaXMsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7
CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikp
OwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9N
U0dfVFlQRV9NQUtFX1NFTkQpOwpAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNyZWF0ZU5ldHdvcmtDb25uZWMKICAgICAgICAgQ1JBU0goKTsKICAgICB9CiAKLSAgICBh
dXRvIGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKHNl
cnZlcklkZW50aWZpZXIpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGUoKnRoaXMsIHNlcnZlcklkZW50aWZpZXIpOwogICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgIElQ
Qzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoY2xpZW50SWRlbnRpZmllcik7CkBAIC00NDYsNyAr
NDQ2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZQogICAgICAg
ICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKICNlbmRpZgogCi0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdURk1vdmUocGFyYW1ldGVycykpOworICAgIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbigqdGhpcywg
V1RGTW92ZShwYXJhbWV0ZXJzKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTU2Nyw5ICs1NjcsOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRTZXNzaW9uSXNDb250cm9sCiAgICAgICAgIG1fc2Vzc2lvbnND
b250cm9sbGVkQnlBdXRvbWF0aW9uLnJlbW92ZShzZXNzaW9uSUQpOwogfQogCi1zdGF0aWMgdm9p
ZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3N0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhOZXR3b3JrQ2FjaGU6OkNhY2hlKiBj
YWNoZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJz
aXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBjYWNo
ZSA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpOwogICAgIGlmICghY2FjaGUp
IHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CkBAIC02NzIsNyArNjcxLDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQQogI2VuZGlmCiAKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKLSAgICAgICAgZmV0
Y2hEaXNrQ2FjaGVFbnRyaWVzKHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXShhdXRvIGVudHJpZXMpIG11dGFi
bGUgeworICAgICAgICBmZXRjaERpc2tDYWNoZUVudHJpZXMoY2FjaGUoKSwgc2Vzc2lvbklELCBm
ZXRjaE9wdGlvbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVn
YXRvcildKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7CiAgICAg
ICAgIH0pOwogICAgIH0KQEAgLTcxOCw5ICs3MTcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YShQCiAgICAgICAgIGNsZWFyRGlza0NhY2hlKG1vZGlmaWVkU2luY2Us
IFtjbGVhclRhc2tzSGFuZGxlciA9IFdURk1vdmUoY2xlYXJUYXNrc0hhbmRsZXIpXSB7IH0pOwog
fQogCi1zdGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoY29uc3QgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3N0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhOZXR3b3Jr
Q2FjaGU6OkNhY2hlKiBjYWNoZSwgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9y
aWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBhdXRvKiBjYWNoZSA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpOwog
ICAgIGlmICghY2FjaGUpIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzgwLDcgKzc3OCw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm8KICNlbmRpZgogCiAg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2Fj
aGUpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgY2xlYXJEaXNrQ2FjaGVF
bnRyaWVzKG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBXVEZNb3ZlKGNsZWFyVGFz
a3NIYW5kbGVyKV0geyB9KTsKKyAgICAgICAgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKGNhY2hlKCks
IG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBXVEZNb3ZlKGNsZWFyVGFza3NIYW5k
bGVyKV0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCkBA
IC04NjksOSArODY3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0TmV0d29ya1Byb2Nlc3NT
dAogewogICAgIFN0YXRpc3RpY3NEYXRhIGRhdGE7CiAKLSAgICBhdXRvJiBuZXR3b3JrUHJvY2Vz
cyA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBkYXRhLnN0YXRpc3RpY3NOdW1i
ZXJzLnNldCgiRG93bmxvYWRzQWN0aXZlQ291bnQiLCBuZXR3b3JrUHJvY2Vzcy5kb3dubG9hZE1h
bmFnZXIoKS5hY3RpdmVEb3dubG9hZENvdW50KCkpOwotICAgIGRhdGEuc3RhdGlzdGljc051bWJl
cnMuc2V0KCJPdXRzdGFuZGluZ0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlc0NvdW50IiwgbmV0d29y
a1Byb2Nlc3MuYXV0aGVudGljYXRpb25NYW5hZ2VyKCkub3V0c3RhbmRpbmdBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNvdW50KCkpOworICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KCJEb3du
bG9hZHNBY3RpdmVDb3VudCIsIGRvd25sb2FkTWFuYWdlcigpLmFjdGl2ZURvd25sb2FkQ291bnQo
KSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoIk91dHN0YW5kaW5nQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VzQ291bnQiLCBhdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5vdXRzdGFuZGlu
Z0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ291bnQoKSk7CiAKICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6RGlkR2V0U3RhdGlzdGlj
cyhkYXRhLCBjYWxsYmFja0lEKSwgMCk7CiB9CkBAIC0xMDc5LDcgKzEwNzYsNyBAQCBJREJTZXJ2
ZXI6OklEQlNlcnZlciYgTmV0d29ya1Byb2Nlc3M6OmlkCiAgICAgLy8gSWYgdGhlcmUncyBub3Qs
IHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29tZSBmcm9tPwogICAgIEFTU0VS
VCghcGF0aC5pc0VtcHR5KCkpOwogICAgIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKHBhdGgsIE5ldHdvcmtQcm9jZXNzOjpzaW5n
bGV0b24oKSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IElEQlNlcnZlcjo6SURC
U2VydmVyOjpjcmVhdGUocGF0aCwgKnRoaXMpOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPnNldFBlck9yaWdpblF1b3RhKG1faWRiUGVyT3JpZ2luUXVvdGEpOwogICAgIHJldHVybiAq
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIzOTY3MSkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtODgsMTUgKzg4LDE1IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgQ2FjaGU7
CiB9CiAKLWNsYXNzIE5ldHdvcmtQcm9jZXNzIDogcHVibGljIENoaWxkUHJvY2VzcywgcHJpdmF0
ZSBEb3dubG9hZE1hbmFnZXI6OkNsaWVudAorY2xhc3MgTmV0d29ya1Byb2Nlc3MgOiBwdWJsaWMg
Q2hpbGRQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LCBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8TmV0d29ya1Byb2Nlc3M+CiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJCYWNraW5nU3RvcmVU
ZW1wb3JhcnlGaWxlSGFuZGxlcgogI2VuZGlmCiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TmV0d29ya1Byb2Nlc3MpOwotICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxOZXR3b3JrUHJvY2Vz
cz47CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPERvd25sb2FkTWFuYWdlcj47CiBwdWJsaWM6
CisgICAgfk5ldHdvcmtQcm9jZXNzKCk7CiAgICAgc3RhdGljIE5ldHdvcmtQcm9jZXNzJiBzaW5n
bGV0b24oKTsKICAgICBzdGF0aWMgY29uc3RleHByIFByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlID0g
UHJvY2Vzc1R5cGU6Ok5ldHdvcms7CiAKQEAgLTIxMSw3ICsyMTEsNiBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3MoKTsKLSAgICB+TmV0d29ya1Byb2Nlc3MoKTsKIAog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24g
MjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IHBhcmFt
ZXRlcnMuZGVmZXJzTG9hZGluZyB9CiAgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3Jl
ZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZm
ZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1l
ckZpcmVkIH0KLSAgICAsIG1fY2FjaGUgeyBzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpID8gbnVs
bHB0ciA6IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpIH0KKyAgICAsIG1fY2Fj
aGUgeyBzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpID8gbnVsbHB0ciA6IGNvbm5lY3Rpb24ubmV0
d29ya1Byb2Nlc3MoKS5jYWNoZSgpIH0KIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIHRoZSBleGlzdGVu
Y2Ugb2YgRW1wdHlGcmFtZUxvYWRlckNsaWVudCBpbiBXZWJDb3JlLgpAQCAtMjg2LDEzICsyODYs
MTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29yawogCiAgICAgYXV0
byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24ocGFyYW1l
dGVycy5zZXNzaW9uSUQpOwogICAgIGlmICghbmV0d29ya1Nlc3Npb24gJiYgcGFyYW1ldGVycy5z
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewotICAgICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xl
dG9uKCkuYWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6cHJp
dmF0ZVNlc3Npb25QYXJhbWV0ZXJzKHBhcmFtZXRlcnMuc2Vzc2lvbklEKSk7CisgICAgICAgIG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5hZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMocGFyYW1ldGVycy5z
ZXNzaW9uSUQpKTsKICAgICAgICAgbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0
d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOwogICAgIH0KICAgICBpZiAoIW5ldHdv
cmtTZXNzaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGNyZWF0ZSBh
IE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5v
dCBleGlzdC4iLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0
byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKLSAgICAgICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBX
ZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludmFsaWRTZXNzaW9uSURLZXkoKSwgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1By
b2Nlc3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBXZWJD
b3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lvbklES2V5KCksIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICBkaWRGYWlsTG9hZGluZyhpbnRlcm5hbEVycm9yKHJl
cXVlc3QudXJsKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM1MywxMyArMzUzLDEz
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3cKIHsKICAgICAvLyBU
aGlzIGNhbiBoYXBwZW4gaWYgdGhlIHJlc291cmNlIGNhbWUgZnJvbSB0aGUgZGlzayBjYWNoZS4K
ICAgICBpZiAoIW1fbmV0d29ya0xvYWQpIHsKLSAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmds
ZXRvbigpLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQobV9jb25uZWN0aW9uLnB0cigp
LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKKyAgICAgICAg
bV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93
bmxvYWQobV9jb25uZWN0aW9uLnB0cigpLCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBkb3dubG9h
ZElELCByZXF1ZXN0KTsKICAgICAgICAgYWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIEFTU0VSVChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOwotICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKS5jb252ZXJ0TmV0d29ya0xvYWRU
b0Rvd25sb2FkKGRvd25sb2FkSUQsIHN0ZDo6ZXhjaGFuZ2UobV9uZXR3b3JrTG9hZCwgbnVsbHB0
ciksIFdURk1vdmUobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShtX2ZpbGVS
ZWZlcmVuY2VzKSwgcmVxdWVzdCwgcmVzcG9uc2UpOworICAgIG1fY29ubmVjdGlvbi0+bmV0d29y
a1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKS5jb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2Fk
KGRvd25sb2FkSUQsIHN0ZDo6ZXhjaGFuZ2UobV9uZXR3b3JrTG9hZCwgbnVsbHB0ciksIFdURk1v
dmUobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShtX2ZpbGVSZWZlcmVuY2Vz
KSwgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
YWJvcnQoKQpAQCAtOTM3LDcgKzkzNyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpp
bnZhbGlkYXRlU2EKIAogYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5zZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKHNlc3Npb25JRCgpKSkKKyAgICBpZiAo
bV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9t
YXRpb24oc2Vzc2lvbklEKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBz
ZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyMzk2
NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsMTYgKzQxLDE2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNz
aW9uOjpjcmVhdGUoTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQorUmVmPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBOZXR3b3JrU2Vz
c2lvbkNvY29hOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJz
KSk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKLSAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25Tb3Vw
OjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIE5ldHdvcmtTZXNzaW9u
U291cDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICNlbmRp
ZgogI2lmIFVTRShDVVJMKQotICAgIHJldHVybiBOZXR3b3JrU2Vzc2lvbkN1cmw6OmNyZWF0ZShX
VEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25DdXJsOjpjcmVh
dGUobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogI2VuZGlmCiB9CiAKQEAg
LTYxLDggKzYxLDkgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU2Vzc2lvbjo6bgog
ICAgIHJldHVybiAqc3RvcmFnZVNlc3Npb247CiB9CiAKLU5ldHdvcmtTZXNzaW9uOjpOZXR3b3Jr
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitOZXR3b3JrU2Vzc2lvbjo6TmV0d29y
a1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCisgICAgLCBtX25ldHdvcmtQ
cm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDExICszOCwxMiBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNrOworY2xhc3MgTmV0d29ya1Byb2Nl
c3M7CiBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIE5l
dHdvcmtTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Nlc3Npb24+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrU2Vzc2lvbj4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7
CiAgICAgdmlydHVhbCB+TmV0d29ya1Nlc3Npb24oKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlQW5kQ2FuY2VsKCk7CkBAIC01MSwxNiArNTIsMTcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRlbmN5KCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAK
ICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25J
RDsgfQorICAgIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0
d29ya1Byb2Nlc3M7IH0KICAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpIGNvbnN0OwogCiAgICAgdm9pZCByZWdpc3Rlck5ldHdvcmtEYXRh
VGFzayhOZXR3b3JrRGF0YVRhc2smIHRhc2spIHsgbV9kYXRhVGFza1NldC5hZGQoJnRhc2spOyB9
CiAgICAgdm9pZCB1bnJlZ2lzdGVyTmV0d29ya0RhdGFUYXNrKE5ldHdvcmtEYXRhVGFzayYgdGFz
aykgeyBtX2RhdGFUYXNrU2V0LnJlbW92ZSgmdGFzayk7IH0KIAogcHJvdGVjdGVkOgotICAgIE5l
dHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBOZXR3b3JrU2Vzc2lvbihOZXR3b3Jr
UHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwotCisgICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwogICAgIEhh
c2hTZXQ8TmV0d29ya0RhdGFUYXNrKj4gbV9kYXRhVGFza1NldDsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0LmgJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiBjbGFzcyBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFJlbW92ZSBwbGF0Zm9ybS1zcGVj
aWZpYyBjb2RlIGFuZCB1c2UgU2Vzc2lvblRyYWNrZXIuCi0gICAgc3RhdGljIHZvaWQgZW5zdXJl
V2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7Cisg
ICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nl
c3MmLCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKIH07CiAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTkgKzQ0LDIwIEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8V2ViSURCQ29ubmVjdGlvblRv
Q2xpZW50PiBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZShOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK1JlZjxXZWJJREJDb25uZWN0aW9uVG9D
bGllbnQ+IFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50KGNvbm5lY3Rpb24sIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZXNzaW9uSUQpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQobmV0d29y
a1Byb2Nlc3MsIGNvbm5lY3Rpb24sIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZXNzaW9u
SUQpKTsKIH0KIAotV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpXZWJJREJDb25uZWN0aW9uVG9D
bGllbnQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudChOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBj
b25uZWN0aW9uLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBt
X25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogICAgICwgbV9pZGVudGlmaWVyKHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewog
ICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwogICAgIG1fY29ubmVjdGlvblRvQ2xpZW50
ID0gSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcyk7Ci0gICAg
TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkucmVnaXN0
ZXJDb25uZWN0aW9uKCptX2Nvbm5lY3Rpb25Ub0NsaWVudCk7CisgICAgbmV0d29ya1Byb2Nlc3Mu
aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5yZWdpc3RlckNvbm5lY3Rpb24oKm1fY29ubmVjdGlvblRv
Q2xpZW50KTsKIH0KIAogV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojp+V2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50KCkKQEAgLTY1LDcgKzY2LDcgQEAgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojp+
V2ViSURCQ29ubmVjdAogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlzY29ubmVj
dGVkRnJvbVdlYlByb2Nlc3MoKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5p
ZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLnVucmVnaXN0ZXJDb25uZWN0aW9uKCptX2Nvbm5lY3Rpb25U
b0NsaWVudCk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS51
bnJlZ2lzdGVyQ29ubmVjdGlvbigqbV9jb25uZWN0aW9uVG9DbGllbnQpOwogfQogCiBJUEM6OkNv
bm5lY3Rpb24qIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKQpAQCAtMjE2LDYyICsyMTcsNjIgQEAgdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6
OmRpZEdldEFsbAogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlRGF0YWJh
c2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZGVsZXRlRGF0YWJhc2UocmVxdWVz
dCk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5kZWxldGVE
YXRhYmFzZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6Om9w
ZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKIHsKLSAgICBOZXR3b3Jr
UHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5vcGVuRGF0YWJhc2Uo
cmVxdWVzdCk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5v
cGVuRGF0YWJhc2UocmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
OjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2
ZXIobV9zZXNzaW9uSUQpLmFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsK
KyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmFib3J0VHJhbnNh
Y3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5j
b21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZGlkRmluaXNoSGFuZGxp
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIo
bV9zZXNzaW9uSUQpLmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQog
ewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3QsIGluZm8pOworICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuY3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdCwgaW5mbyk7
CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkZWxldGVPYmplY3RTdG9yZShj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAg
IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmRlbGV0
ZU9iamVjdFN0b3JlKHJlcXVlc3QsIG5hbWUpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNl
cnZlcihtX3Nlc3Npb25JRCkuZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdCwgbmFtZSk7CiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmlkYlNlcnZlcihtX3Nlc3Npb25JRCkucmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdCwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2
ZXIobV9zZXNzaW9uSUQpLnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3QsIG9iamVjdFN0b3JlSWRl
bnRpZmllciwgbmV3TmFtZSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojpj
bGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0LCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuY2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0LCBvYmplY3RT
dG9yZUlkZW50aWZpZXIpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Np
b25JRCkuY2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0LCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwog
fQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlSW5kZXgoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3QsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAgICBO
ZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5jcmVhdGVJ
bmRleChyZXF1ZXN0LCBpbmZvKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9z
ZXNzaW9uSUQpLmNyZWF0ZUluZGV4KHJlcXVlc3QsIGluZm8pOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3QsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKQog
ewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LmRlbGV0ZUluZGV4KHJlcXVlc3QsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmFtZSk7CisgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5kZWxldGVJbmRleChyZXF1
ZXN0LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5hbWUpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub0NsaWVudDo6cmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3Qs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRv
bigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkucmVuYW1lSW5kZXgocmVxdWVzdCwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOworICAgIG1fbmV0d29ya1By
b2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkucmVuYW1lSW5kZXgocmVxdWVzdCwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwogfQogCiB2b2lkIFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3QsIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCB1bnNp
Z25lZCBvdmVyd3JpdGVNb2RlKQpAQCAtMjg2LDc3ICsyODcsNzcgQEAgdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQ6OnB1dE9yQWRkKAogCiAgICAgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92
ZXJ3cml0ZU1vZGUgbW9kZSA9IHN0YXRpY19jYXN0PEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVy
d3JpdGVNb2RlPihvdmVyd3JpdGVNb2RlKTsKIAotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0
b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLnB1dE9yQWRkKHJlcXVlc3QsIGtleSwgdmFsdWUs
IG1vZGUpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkucHV0
T3JBZGQocmVxdWVzdCwga2V5LCB2YWx1ZSwgbW9kZSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50OjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QsIGNv
bnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCiB7Ci0gICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZ2V0UmVjb3JkKHJlcXVlc3Qs
IGdldFJlY29yZERhdGEpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Np
b25JRCkuZ2V0UmVjb3JkKHJlcXVlc3QsIGdldFJlY29yZERhdGEpOwogfQogCiB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudDo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdCwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQog
ewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LmdldEFsbFJlY29yZHMocmVxdWVzdCwgZ2V0QWxsUmVjb3Jkc0RhdGEpOworICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZ2V0QWxsUmVjb3JkcyhyZXF1ZXN0LCBn
ZXRBbGxSZWNvcmRzRGF0YSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojpn
ZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJiByYW5nZSkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVy
KG1fc2Vzc2lvbklEKS5nZXRDb3VudChyZXF1ZXN0LCByYW5nZSk7CisgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5nZXRDb3VudChyZXF1ZXN0LCByYW5nZSk7CiB9
CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkZWxldGVSZWNvcmQoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3QsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0g
ICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZGVs
ZXRlUmVjb3JkKHJlcXVlc3QsIHJhbmdlKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2
ZXIobV9zZXNzaW9uSUQpLmRlbGV0ZVJlY29yZChyZXF1ZXN0LCByYW5nZSk7CiB9CiAKIHZvaWQg
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0LCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIE5ldHdvcmtQcm9j
ZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLm9wZW5DdXJzb3IocmVxdWVz
dCwgaW5mbyk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5v
cGVuQ3Vyc29yKHJlcXVlc3QsIGluZm8pOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0Ns
aWVudDo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgY29uc3Qg
SURCSXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmds
ZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuaXRlcmF0ZUN1cnNvcihyZXF1ZXN0LCBkYXRh
KTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLml0ZXJhdGVD
dXJzb3IocmVxdWVzdCwgZGF0YSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
Ojplc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiB7Ci0gICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZXN0YWJsaXNoVHJhbnNhY3Rp
b24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CisgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5lc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJT
ZXJ2ZXIobV9zZXNzaW9uSUQpLmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGll
bnQ6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIo
bV9zZXNzaW9uSUQpLmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
IH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmFib3J0T3BlbkFuZFVwZ3JhZGVO
ZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuYWJvcnRPcGVuQW5kVXBn
cmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50
aWZpZXIpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuYWJv
cnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFu
c2FjdGlvbklkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
cikKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lv
bklEKS5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2Vy
dmVyKG1fc2Vzc2lvbklEKS5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViSURC
Q29ubmVjdGlvblRvQ2xpZW50OjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCku
aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRh
KTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLm9wZW5EQlJl
cXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25U
b0NsaWVudDo6Y29uZmlybURpZENsb3NlRnJvbVNlcnZlcih1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJT
ZXJ2ZXIobV9zZXNzaW9uSUQpLmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIoZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vz
c2lvbklEKS5jb25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Z2V0QWxsRGF0YWJh
c2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBO
ZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5nZXRBbGxE
YXRhYmFzZU5hbWVzKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB0b3BPcmlnaW4sIG9wZW5p
bmdPcmlnaW4sIGNhbGxiYWNrSUQpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlciht
X3Nlc3Npb25JRCkuZ2V0QWxsRGF0YWJhc2VOYW1lcyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdG9wT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWRE
Qi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaAkocmV2
aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDEx
IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitj
bGFzcyBOZXR3b3JrUHJvY2VzczsKKwogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50IGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50RGVs
ZWdhdGUsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBSZWZDb3VudGVkPFdlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViSURCQ29u
bmVjdGlvblRvQ2xpZW50PiBjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCB1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOworICAg
IHN0YXRpYyBSZWY8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50PiBjcmVhdGUoTmV0d29ya1Byb2Nl
c3MmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICB2aXJ0dWFsIH5XZWJJREJD
b25uZWN0aW9uVG9DbGllbnQoKTsKIApAQCAtMTI2LDEzICsxMjgsMTQgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CiAKIHByaXZhdGU6Ci0gICAgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50KE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEKTsKKyAgICBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQoTmV0d29ya1Byb2Nl
c3MmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBJUEM6OkNvbm5lY3Rpb24q
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBN
ZXNzYWdlVHlwZT4gdm9pZCBoYW5kbGVHZXRSZXN1bHQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpOwogCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nvbm5l
Y3Rpb247CisgICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwogCiAgICAg
dWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtE
YXRhVGFza0NvYwogICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJl
cXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKICAg
ICBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQo
bnNSZXF1ZXN0LCBzaG91bGRDb250ZW50U25pZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5n
UG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50
RW5jb2RpbmdTbmlmZiA9PSBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6
U25pZmYpOwogI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBOZXR3b3JrUHJv
Y2Vzczo6c2luZ2xldG9uKCkucHJveGltaXR5TWFuYWdlcigpLmFwcGx5UHJvcGVydGllcyhyZXF1
ZXN0LCAqdGhpcywgbnNSZXF1ZXN0KTsKKyAgICBtX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCku
cHJveGltaXR5TWFuYWdlcigpLmFwcGx5UHJvcGVydGllcyhyZXF1ZXN0LCAqdGhpcywgbnNSZXF1
ZXN0KTsKICNlbmRpZgogCiAgICAgYXV0byYgY29jb2FTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0
d29ya1Nlc3Npb25Db2NvYSY+KG1fc2Vzc2lvbi5nZXQoKSk7CkBAIC00OTcsNyArNDk3LDcgQEAg
V2ViQ29yZTo6Q3JlZGVudGlhbCBzZXJ2ZXJUcnVzdENyZWRlbnRpYQogCiBib29sIE5ldHdvcmtE
YXRhVGFza0NvY29hOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAogewotICAgIGlm
IChOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbihtX3Nlc3Npb24tPnNlc3Npb25JRCgpKSkKKyAgICBpZiAobV9zZXNzaW9uLT5uZXR3b3Jr
UHJvY2VzcygpLnNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24obV9zZXNzaW9uLT5zZXNz
aW9uSUQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi0+
c2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCShyZXZpc2lvbiAyMzk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3OSw3ICsx
NzksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShXYWxsCiAgICAgaWYg
KCFtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwKQogICAgICAgICBtX2NsZWFyQ2FjaGVEaXNwYXRj
aEdyb3VwID0gZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCk7CiAKLSAgICBhdXRvKiBjYWNoZSA9IE5l
dHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpOworICAgIGF1dG8qIGNhY2hlID0gdGhp
cy0+Y2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCShyZXZpc2lvbiAyMzk2
NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hIGZpbmFsIDogcHVi
bGljIE5ldHdvcmtTZXNzaW9uIHsKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya0RhdGFUYXNrQ29j
b2E7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nl
c3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkNvY29hKCk7CiAKICAgICAvLyBNdXN0IGJl
IGNhbGxlZCBiZWZvcmUgYW55IE5ldHdvcmtTZXNzaW9uIGhhcyBiZWVuIGNyZWF0ZWQuCkBAIC02
Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhbGxvd3NTcGVjaWZpY0hUVFBT
Q2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Jik7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9j
ZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKICAgICB2b2lkIGlu
dmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ3JlZGVudGlhbHMo
KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDIzOTY3MCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjoo
TlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlh
bCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVz
dF0pOwogCiAgICAgICAgIC8vIEhhbmRsZSBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbiBhdCBwbGF0
Zm9ybS1sZXZlbCBpZiByZXF1ZXN0ZWQsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIGFuZCB0byB1
c2UgQVRTIGRlZmF1bHRzLgotICAgICAgICBpZiAoIU5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbigpKQorICAgICAgICBpZiAoIV9z
ZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0
aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZSwgbmlsKTsKICAgICB9CiAKQEAgLTM2
Niw3ICszNjYsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAg
ICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gX3Nlc3Npb24tPmRvd25sb2Fk
SUQodGFza0lkZW50aWZpZXIpOwogICAgICAgICBpZiAoZG93bmxvYWRJRC5kb3dubG9hZElEKCkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBkb3dubG9hZCA9IFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQpKSB7
CisgICAgICAgICAgICBpZiAoYXV0byogZG93bmxvYWQgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nl
c3MoKS5kb3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkgewogICAgICAgICAg
ICAgICAgIC8vIFJlY2VpdmVkIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBmb3IgYSBkb3du
bG9hZCBiZWluZyByZXN1bWVkLgogICAgICAgICAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHsgY2hhbGxlbmdlIH07CiAgICAg
ICAgICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBs
ZXRpb25IYW5kbGVyKTsKQEAgLTM5NCw3ICszOTQsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5T
VVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgZWxzZSBpZiAoZXJyb3IpIHsKICAgICAgICAgYXV0byBk
b3dubG9hZElEID0gX3Nlc3Npb24tPnRha2VEb3dubG9hZElEKHRhc2sudGFza0lkZW50aWZpZXIp
OwogICAgICAgICBpZiAoZG93bmxvYWRJRC5kb3dubG9hZElEKCkpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvKiBkb3dubG9hZCA9IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRv
d25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byogZG93bmxvYWQgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFn
ZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkgewogICAgICAgICAgICAgICAgIE5TRGF0YSAqcmVz
dW1lRGF0YSA9IG5pbDsKICAgICAgICAgICAgICAgICBpZiAoaWQgdXNlckluZm8gPSBlcnJvci51
c2VySW5mbykgewogICAgICAgICAgICAgICAgICAgICBpZiAoW3VzZXJJbmZvIGlzS2luZE9mQ2xh
c3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQpAQCAtNTI1LDcgKzUyNSw3IEBAIC0gKHZvaWQpVVJM
U2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byBkb3dubG9hZElEID0gX3Nlc3Npb24tPnRha2VEb3dubG9hZElEKFtkb3dubG9hZFRhc2sgdGFz
a0lkZW50aWZpZXJdKTsKLSAgICBpZiAoYXV0byogZG93bmxvYWQgPSBXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElE
KSkKKyAgICBpZiAoYXV0byogZG93bmxvYWQgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5k
b3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkKICAgICAgICAgZG93bmxvYWQt
PmRpZEZpbmlzaCgpOwogfQogCkBAIC01MzcsNyArNTM3LDcgQEAgLSAodm9pZClVUkxTZXNzaW9u
OihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIVtzZWxmIGV4
aXN0aW5nVGFzazpkb3dubG9hZFRhc2tdLCAiVGhlIE5ldHdvcmtEYXRhVGFzayBzaG91bGQgYmUg
ZGVzdHJveWVkIGltbWVkaWF0ZWx5IGFmdGVyIGRpZEJlY29tZURvd25sb2FkVGFzayByZXR1cm5z
Iik7CiAKICAgICBhdXRvIGRvd25sb2FkSUQgPSBfc2Vzc2lvbi0+ZG93bmxvYWRJRChbZG93bmxv
YWRUYXNrIHRhc2tJZGVudGlmaWVyXSk7Ci0gICAgaWYgKGF1dG8qIGRvd25sb2FkID0gV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZG93bmxvYWRNYW5hZ2VyKCkuZG93bmxvYWQo
ZG93bmxvYWRJRCkpCisgICAgaWYgKGF1dG8qIGRvd25sb2FkID0gX3Nlc3Npb24tPm5ldHdvcmtQ
cm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCkuZG93bmxvYWQoZG93bmxvYWRJRCkpCiAgICAgICAg
IGRvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4pOwogfQogCkBAIC01NTQsNyAr
NTU0LDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIGlm
IChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7
CiAgICAgICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4gcHJvdGVjdGVkTmV0d29ya0RhdGFU
YXNrKCpuZXR3b3JrRGF0YVRhc2spOwogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBuZXR3b3Jr
RGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7Ci0gICAgICAgIGF1dG8mIGRvd25sb2FkTWFu
YWdlciA9IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdl
cigpOworICAgICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBfc2Vzc2lvbi0+bmV0d29ya1By
b2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKTsKICAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElE
LCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5z
dWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNh
bmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKCpkb3dubG9hZCk7CiAgICAgICAgIEFTU0VSVChXZWJD
b3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24oKSkpOwpAQCAtNTk5LDkgKzU5OSw5IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25D
b2NvYTo6c2V0Q1REYXRhQ29ubmUKIH0KICNlbmRpZgogCi1SZWY8TmV0d29ya1Nlc3Npb24+IE5l
dHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCitSZWY8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6
OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBOZXR3b3JrU2Vzc2lvbkNvY29hKFdURk1vdmUocGFyYW1ldGVycykpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBOZXR3b3JrU2Vzc2lvbkNvY29hKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpKSk7CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnByb3h5RGljdGlvbmFy
eShjb25zdCBVUkwmIGh0dHBQcm94eSwgY29uc3QgVVJMJiBodHRwc1Byb3h5KQpAQCAtNjI3LDgg
KzYyNyw4IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnByb3h5RGljdGlvbmFyeShjb24KICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIAotTmV0d29ya1Nlc3Npb25Db2Nv
YTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCi0gICAgOiBOZXR3b3JrU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCkK
K05ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCisgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycy5z
ZXNzaW9uSUQpCiAgICAgLCBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihwYXJhbWV0ZXJzLmJv
dW5kSW50ZXJmYWNlSWRlbnRpZmllcikKICAgICAsIG1fcHJveHlDb25maWd1cmF0aW9uKHBhcmFt
ZXRlcnMucHJveHlDb25maWd1cmF0aW9uKQogICAgICwgbV9zaG91bGRMb2dDb29raWVJbmZvcm1h
dGlvbihwYXJhbWV0ZXJzLnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKQpAQCAtNjU1LDcgKzY1
NSw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKICAgICAvLyBU
aGUgV2ViS2l0IG5ldHdvcmsgY2FjaGUgd2FzIGFscmVhZHkgcXVlcmllZC4KICAgICBjb25maWd1
cmF0aW9uLlVSTENhY2hlID0gbmlsOwogCi0gICAgaWYgKGF1dG8gZGF0YSA9IE5ldHdvcmtQcm9j
ZXNzOjpzaW5nbGV0b24oKS5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpKQorICAgIGlmIChh
dXRvIGRhdGEgPSBuZXR3b3JrUHJvY2Vzcy5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpKQog
ICAgICAgICBjb25maWd1cmF0aW9uLl9zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRhID0g
KF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCk7CiAKICAgICBpZiAoIXBhcmFtZXRlcnMuc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmlzRW1wdHkoKSkgewpAQCAtNjc1LDcgKzY3
NSw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKICNlbmRpZgog
CiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKLSAgICBOZXR3b3Jr
UHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXI+KCktPnJlZ2lzdGVyUHJvdG9jb2xDbGFzcyhjb25maWd1cmF0aW9uKTsKKyAgICBuZXR3b3Jr
UHJvY2Vzcy5zdXBwbGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKS0+cmVnaXN0
ZXJQcm90b2NvbENsYXNzKGNvbmZpZ3VyYXRpb24pOwogI2VuZGlmCiAKICNpZiBIQVZFKFRJTUlO
R0RBVEFPUFRJT05TKQpAQCAtNjg2LDcgKzY4Niw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5l
dHdvcmtTZXNzaW9uQ29jb2EKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogICAgIC8vIEZJWE1F
OiBSZXBsYWNlIEAia0NGU3RyZWFtUHJvcGVydHlBdXRvRXJyb3JPblN5c3RlbUNoYW5nZSIgd2l0
aCBhIGNvbnN0YW50IGZyb20gdGhlIFNESyBvbmNlIHJkYXI6Ly9wcm9ibGVtLzQwNjUwMjQ0IGlz
IGluIGEgYnVpbGQuCi0gICAgaWYgKE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwcmVz
c2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UoKSkKKyAgICBpZiAobmV0d29y
a1Byb2Nlc3Muc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCkp
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uX3NvY2tldFN0cmVhbVByb3BlcnRpZXMgPSBAeyBAImtD
RlN0cmVhbVByb3BlcnR5QXV0b0Vycm9yT25TeXN0ZW1DaGFuZ2UiIDogQChOTykgfTsKICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Np
b25DdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDggKzM3LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1OZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9uQ3VybChO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi0gICAgOiBOZXR3
b3JrU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCkKK05ldHdvcmtTZXNzaW9uQ3VybDo6TmV0
d29ya1Nlc3Npb25DdXJsKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorICAgIDogTmV0d29ya1Nlc3Np
b24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMuc2Vzc2lvbklEKQogewogICAgIGlmICghcGFy
YW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGUuaXNFbXB0eSgpKQogICAgICAgICBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWVEYXRhYmFzZShtYWtlVW5pcXVlUmVmPENv
b2tpZUphckRCPihwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZSkpOwpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
U2Vzc2lvbkN1cmwuaAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5
ICszMyw5IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xh
c3MgTmV0d29ya1Nlc3Npb25DdXJsIGZpbmFsIDogcHVibGljIE5ldHdvcmtTZXNzaW9uIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorICAgIHN0YXRpYyBSZWY8TmV0d29y
a1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTZXNzaW9uQ3VybChXVEZNb3ZlKHBhcmFtZXRlcnMp
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTZXNzaW9uQ3VybChuZXR3
b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogICAgIH0KICAgICB+TmV0d29ya1Nl
c3Npb25DdXJsKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1Jl
bW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAyMzk2
NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5n
Q29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5z
dXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNz
LCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBz
ZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7
CiAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
V2VicwogICAgIGZvciAoY29uc3QgYXV0byYgY29va2llIDogcGFyYW1ldGVycy5wZW5kaW5nQ29v
a2llcykKICAgICAgICAgc2Vzc2lvbi0+c2V0Q29va2llKGNvb2tpZSk7CiAKLSAgICBTZXNzaW9u
VHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RG
TW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKKyAgICBTZXNzaW9u
VHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUobmV0
d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMp
KSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrU2Vzc2lvblNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCShyZXZpc2lvbiAyMzk2NzApCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lv
blNvdXAoTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQotICAg
IDogTmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpCitOZXR3b3JrU2Vzc2lvblNv
dXA6Ok5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKKyAgICA6IE5ldHdv
cmtTZXNzaW9uKG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLnNlc3Npb25JRCkKIHsKICAgICBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWVPYnNlcnZlckhhbmRsZXIoW3RoaXNdIHsK
ICAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViQ29va2ll
TWFuYWdlcj4oKS0+bm90aWZ5Q29va2llc0RpZENoYW5nZShtX3Nlc3Npb25JRCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1
LDkgQEAgc3RydWN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBO
ZXR3b3JrU2Vzc2lvblNvdXAgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCisgICAgc3RhdGljIFJlZjxOZXR3b3JrU2Vz
c2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTmV0d29ya1Nlc3Npb25Tb3VwKFdURk1vdmUocGFyYW1ldGVycykpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1Nlc3Npb25Tb3VwKG5ldHdvcmtQ
cm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiAgICAgfQogICAgIH5OZXR3b3JrU2Vzc2lv
blNvdXAoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358498</attachid>
            <date>2019-01-07 08:10:12 -0800</date>
            <delta_ts>2019-01-07 09:11:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193197-20190107081011.patch</filename>
            <type>text/plain</type>
            <size>57656</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzk2NzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAxOS0wMS0wNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSB1c2Ug
b2YgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUGFzcyBpdCBhcm91bmQgYXMgYSBSZWY8TmV0d29ya1Byb2Nl
c3M+IGFzIGEgc3RlcCB0b3dhcmRzIHJlZHVjaW5nIGdsb2JhbCBzdGF0ZS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6V2ViSURCQ29ubmVjdGlvblRv
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkaXNj
b25uZWN0ZWRGcm9tV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQ6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub0NsaWVudDo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJD
b25uZWN0aW9uVG9DbGllbnQ6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGVJbmRleCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OnJlbmFtZUluZGV4KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpwdXRPckFkZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpnZXRDb3VudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjppdGVyYXRlQ3Vyc29yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojplc3RhYmxpc2hUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGF0YWJhc2VD
b25uZWN0aW9uUGVuZGluZ0Nsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50OjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6Om9w
ZW5EQlJlcXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmdldEFsbERhdGFiYXNlTmFtZXMpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0U3RyZWFtKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWZldGNoRE5T
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0
RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRh
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpmZXRjaERpc2tDYWNoZUVudHJpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OmNsZWFyRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Z2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmlkYlNlcnZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnZlcnRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3Jr
U2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Om5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZFJl
Y2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLTmV0d29y
a1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6XSk6
CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRvd25sb2Fk
VGFzazpkaWRGaW5pc2hEb3dubG9hZGluZ1RvVVJMOl0pOgorICAgICAgICAoLVtXS05ldHdvcmtT
ZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkb3dubG9hZFRhc2s6ZGlkV3JpdGVEYXRhOnRvdGFs
Qnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgtW1dL
TmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZEJlY29tZURvd25s
b2FkVGFzazpdKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25D
b2NvYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9u
Q3VybCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJz
aXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvblNvdXA6
Ok5ldHdvcmtTZXNzaW9uU291cCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrU2Vzc2lvblNvdXAuaDoKKwogMjAxOS0wMS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vZGVybml6ZSBDYWNoZU1vZGVsIGFuZCBk
aXNrIGNhY2hlIGZldGNoaW5nIGFuZCBjbGVhcmluZwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MywxMyArNjMsMTQgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLVJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIpCitSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoY29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhuZXR3b3JrUHJvY2VzcywgY29ubmVjdGlvbklkZW50
aWZpZXIpKTsKIH0KIAotTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKK05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKICAgICA6IG1fY29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklk
ZW50aWZpZXIsICp0aGlzKSkKKyAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3Mp
CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgLCBtX21kbnNSZWdpc3RlcigqdGhpcykKICNlbmRp
ZgpAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmRpZFIKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAg
ICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRp
ZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4MCw3ICsxODEsNyBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSCiAgICAgfQogICAgIAogICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRl
eHRDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25Ub0Nv
bnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24oY29ubmVjdGlvbikpIHsKKyAgICAgICAgaWYg
KGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRv
Q29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgewogICAgICAgICAg
ICAgY29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjcsOSArMjI4LDkgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUgogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoUmVmUHRyPFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IE5ldHdv
cmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUEND
b25uZWN0aW9uKGNvbm5lY3Rpb24pKSB7CisgICAgaWYgKFJlZlB0cjxXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24+IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBtX25ldHdvcmtQcm9j
ZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKGNvbm5lY3Rp
b24pKSB7CiAgICAgICAgIC8vIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgZXhpdGVkLgotICAgICAg
ICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NX
YXNDbG9zZWQoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9z
ZWQoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbHNlCkBAIC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQwogICAgIHN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFj
a2luZygpOwogCiAgICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkuY29ubmVjdGlv
blRvV2ViUHJvY2Vzc0RpZENsb3NlKHRoaXMpOwotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0
b24oKS5yZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyh0aGlzKTsKKyAgICBtX25l
dHdvcmtQcm9jZXNzLT5yZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyh0aGlzKTsK
IAogI2lmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKG1fcnRjUHJvdmlkZXIpIHsKQEAgLTI3OSw3
ICsyODAsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhCiAgICAg
QVNTRVJUKCFtX25ldHdvcmtTb2NrZXRTdHJlYW1zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAg
ICBXZWJDb3JlOjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4gdG9rZW4gPSB7IH07CiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdG9rZW4gPSB7IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIH07CisgICAgdG9rZW4gPSB7IG1fbmV0d29y
a1Byb2Nlc3MtPnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgfTsKICNlbmRpZgogICAgIG1f
bmV0d29ya1NvY2tldFN0cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06
OmNyZWF0ZShXVEZNb3ZlKHVybCksIHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZp
ZXIsIG1fY29ubmVjdGlvbiwgV1RGTW92ZSh0b2tlbikpKTsKIH0KQEAgLTM4NCw3ICszODUsNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRECiAKIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnByZWZldGNoRE5TKGhvc3Ru
YW1lKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wcmVmZXRjaEROUyhob3N0bmFtZSk7CiB9CiAK
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyh1aW50NjRf
dCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQpAQCAtNDIzLDE3ICs0MjQsMTYgQEAgc3RhdGljIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc3RvcmFnZVNlcwogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkTmFtZSkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZG93bmxvYWRN
YW5hZ2VyKCkuc3RhcnREb3dubG9hZCh0aGlzLCBzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVl
c3QsIHN1Z2dlc3RlZE5hbWUpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdl
cigpLnN0YXJ0RG93bmxvYWQodGhpcywgc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBz
dWdnZXN0ZWROYW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQgZG93bmxv
YWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KTsKICAgICAvLyBJbiBjYXNlIGEgcmVzcG9uc2UgaXMgc2VydmVkIGZyb20gc2VydmljZSB3b3Jr
ZXIsIHdlIGRvIG5vdCBoYXZlIHlldCB0aGUgYWJpbGl0eSB0byBjb252ZXJ0IHRoZSBsb2FkLgog
ICAgIGlmICghbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgfHwgcmVzcG9uc2Uuc291cmNlKCkg
PT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKSB7Ci0gICAgICAgIG5l
dHdvcmtQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQodGhpcywgc2Vzc2lv
bklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+ZG93
bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZCh0aGlzLCBzZXNzaW9uSUQsIGRvd25sb2FkSUQs
IHJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NTIsNyArNTUyLDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0QwogCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkV2Vic2l0ZURhdGFTdG9y
ZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0
ZXJzKCkpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpKTsK
IH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlEKQpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVzdGEKICAgICBMT0coSW5kZXhlZERCLCAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlciAtICUiIFBSSXU2
NCwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIEFTU0VSVCghbV93ZWJJREJDb25u
ZWN0aW9ucy5jb250YWlucyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpOwogICAgIAotICAg
IG1fd2ViSURCQ29ubmVjdGlvbnMuc2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcywgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHNlc3Npb25JRCkpOworICAgIG1fd2ViSURCQ29ubmVjdGlvbnMuc2V0KHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZShtX25l
dHdvcmtQcm9jZXNzLCAqdGhpcywgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlc3Npb25J
RCkpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVJREJD
b25uZWN0aW9uVG9TZXJ2ZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCkBA
IC03MjYsNyArNzI2LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5y
ZQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZl
ckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyJiBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBhdXRvJiBzZXJ2
ZXIgPSBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Np
b25JRCk7CisgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JT
ZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgYXV0byBjb25uZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNz
aW9uSUQpOwogICAgIAogICAgIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlv
bi0+aWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24g
MjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGVudW0gY2xh
c3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
Y2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBOZXR3b3JrU29ja2V0U3RyZWFtOwogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OwpA
QCAtNjIsMTAgKzYzLDExIEBAIHN0cnVjdCBEYXRhS2V5OwogCiBjbGFzcyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKIAogICAg
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQo
KTsgfQorICAgIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0
d29ya1Byb2Nlc3MuZ2V0KCk7IH0KIAogICAgIHZvaWQgZGlkQ2xlYW51cFJlc291cmNlTG9hZGVy
KE5ldHdvcmtSZXNvdXJjZUxvYWRlciYpOwogICAgIHZvaWQgc2V0T25MaW5lU3RhdGUoYm9vbCk7
CkBAIC0xMjAsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcFRyYWNraW5nUmVzb3Vy
Y2VMb2FkKFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgTmV0d29ya0FjdGl2aXR5
VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUpOwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90
IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAKQEAgLTIyNyw2ICsyMjksNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBmaW5kTmV0d29ya0Fj
dGl2aXR5VHJhY2tlcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFJlZjxOZXR3b3JrUHJvY2Vz
cz4gbV9uZXR3b3JrUHJvY2VzczsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxOZXR3
b3JrU29ja2V0U3RyZWFtPj4gbV9uZXR3b3JrU29ja2V0U3RyZWFtczsKICAgICBIYXNoTWFwPFJl
c291cmNlTG9hZElkZW50aWZpZXIsIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBtX25ldHdv
cmtSZXNvdXJjZUxvYWRlcnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjM5NjcxKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
NSw4ICsxMTUsOCBAQCBzdGF0aWMgdm9pZCBjYWxsRXhpdFNvb24oSVBDOjpDb25uZWN0aW9uCiAK
IE5ldHdvcmtQcm9jZXNzJiBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TmV0d29ya1Byb2Nlc3M+IG5ldHdvcmtQcm9jZXNzOwotICAgIHJl
dHVybiBuZXR3b3JrUHJvY2VzczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPE5ldHdv
cmtQcm9jZXNzPj4gbmV0d29ya1Byb2Nlc3MoYWRvcHRSZWYoKm5ldyBOZXR3b3JrUHJvY2Vzcykp
OworICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzcy5nZXQoKTsKIH0KIAogTmV0d29ya1Byb2Nlc3M6
Ok5ldHdvcmtQcm9jZXNzKCkKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojppbml0aWFsaXplTmV0d29ya1ByCiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dp
dGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5z
ZXNzaW9uSUQ7Ci0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3
b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFy
YW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKSk7CisgICAgU2Vzc2lvblRyYWNrZXI6
OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzKSkpOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgYWRkSW5k
ZXhlZERhdGFiYXNlU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29y
a0Nvbm5lYwogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlv
bjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9y
bUNvbm5lY3Rpb24oKTsKIAotICAgIGF1dG8gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpOworICAgIGF1dG8gY29ubmVj
dGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoKnRoaXMsIHNvY2tl
dFBhaXIuc2VydmVyKTsKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoV1RGTW92
ZShjb25uZWN0aW9uKSk7CiAKICAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tl
dFBhaXIuY2xpZW50KTsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVOZXR3b3JrQ29ubmVjCiAgICAgfQogCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNv
bm5lY3Rpb24uCi0gICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkp
OworICAgIGF1dG8gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
cmVhdGUoKnRoaXMsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7
CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikp
OwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9N
U0dfVFlQRV9NQUtFX1NFTkQpOwpAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNyZWF0ZU5ldHdvcmtDb25uZWMKICAgICAgICAgQ1JBU0goKTsKICAgICB9CiAKLSAgICBh
dXRvIGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKHNl
cnZlcklkZW50aWZpZXIpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGUoKnRoaXMsIHNlcnZlcklkZW50aWZpZXIpOwogICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgIElQ
Qzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoY2xpZW50SWRlbnRpZmllcik7CkBAIC00NDYsNyAr
NDQ2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZQogICAgICAg
ICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKICNlbmRpZgogCi0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdURk1vdmUocGFyYW1ldGVycykpOworICAgIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbigqdGhpcywg
V1RGTW92ZShwYXJhbWV0ZXJzKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTU2Nyw5ICs1NjcsOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRTZXNzaW9uSXNDb250cm9sCiAgICAgICAgIG1fc2Vzc2lvbnND
b250cm9sbGVkQnlBdXRvbWF0aW9uLnJlbW92ZShzZXNzaW9uSUQpOwogfQogCi1zdGF0aWMgdm9p
ZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3N0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhOZXR3b3JrQ2FjaGU6OkNhY2hlKiBj
YWNoZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJz
aXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBjYWNo
ZSA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpOwogICAgIGlmICghY2FjaGUp
IHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CkBAIC02NzIsNyArNjcxLDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQQogI2VuZGlmCiAKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKLSAgICAgICAgZmV0
Y2hEaXNrQ2FjaGVFbnRyaWVzKHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXShhdXRvIGVudHJpZXMpIG11dGFi
bGUgeworICAgICAgICBmZXRjaERpc2tDYWNoZUVudHJpZXMoY2FjaGUoKSwgc2Vzc2lvbklELCBm
ZXRjaE9wdGlvbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVn
YXRvcildKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7CiAgICAg
ICAgIH0pOwogICAgIH0KQEAgLTcxOCw5ICs3MTcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YShQCiAgICAgICAgIGNsZWFyRGlza0NhY2hlKG1vZGlmaWVkU2luY2Us
IFtjbGVhclRhc2tzSGFuZGxlciA9IFdURk1vdmUoY2xlYXJUYXNrc0hhbmRsZXIpXSB7IH0pOwog
fQogCi1zdGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoY29uc3QgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3N0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhOZXR3b3Jr
Q2FjaGU6OkNhY2hlKiBjYWNoZSwgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9y
aWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBhdXRvKiBjYWNoZSA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpOwog
ICAgIGlmICghY2FjaGUpIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzgwLDcgKzc3OCw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm8KICNlbmRpZgogCiAg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2Fj
aGUpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgY2xlYXJEaXNrQ2FjaGVF
bnRyaWVzKG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBXVEZNb3ZlKGNsZWFyVGFz
a3NIYW5kbGVyKV0geyB9KTsKKyAgICAgICAgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKGNhY2hlKCks
IG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBXVEZNb3ZlKGNsZWFyVGFza3NIYW5k
bGVyKV0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCkBA
IC04NjksOSArODY3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0TmV0d29ya1Byb2Nlc3NT
dAogewogICAgIFN0YXRpc3RpY3NEYXRhIGRhdGE7CiAKLSAgICBhdXRvJiBuZXR3b3JrUHJvY2Vz
cyA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBkYXRhLnN0YXRpc3RpY3NOdW1i
ZXJzLnNldCgiRG93bmxvYWRzQWN0aXZlQ291bnQiLCBuZXR3b3JrUHJvY2Vzcy5kb3dubG9hZE1h
bmFnZXIoKS5hY3RpdmVEb3dubG9hZENvdW50KCkpOwotICAgIGRhdGEuc3RhdGlzdGljc051bWJl
cnMuc2V0KCJPdXRzdGFuZGluZ0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlc0NvdW50IiwgbmV0d29y
a1Byb2Nlc3MuYXV0aGVudGljYXRpb25NYW5hZ2VyKCkub3V0c3RhbmRpbmdBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNvdW50KCkpOworICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KCJEb3du
bG9hZHNBY3RpdmVDb3VudCIsIGRvd25sb2FkTWFuYWdlcigpLmFjdGl2ZURvd25sb2FkQ291bnQo
KSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoIk91dHN0YW5kaW5nQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VzQ291bnQiLCBhdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5vdXRzdGFuZGlu
Z0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ291bnQoKSk7CiAKICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6RGlkR2V0U3RhdGlzdGlj
cyhkYXRhLCBjYWxsYmFja0lEKSwgMCk7CiB9CkBAIC0xMDc5LDcgKzEwNzYsNyBAQCBJREJTZXJ2
ZXI6OklEQlNlcnZlciYgTmV0d29ya1Byb2Nlc3M6OmlkCiAgICAgLy8gSWYgdGhlcmUncyBub3Qs
IHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29tZSBmcm9tPwogICAgIEFTU0VS
VCghcGF0aC5pc0VtcHR5KCkpOwogICAgIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKHBhdGgsIE5ldHdvcmtQcm9jZXNzOjpzaW5n
bGV0b24oKSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IElEQlNlcnZlcjo6SURC
U2VydmVyOjpjcmVhdGUocGF0aCwgKnRoaXMpOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPnNldFBlck9yaWdpblF1b3RhKG1faWRiUGVyT3JpZ2luUXVvdGEpOwogICAgIHJldHVybiAq
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIzOTY3MSkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtODgsMTUgKzg4LDE1IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgQ2FjaGU7
CiB9CiAKLWNsYXNzIE5ldHdvcmtQcm9jZXNzIDogcHVibGljIENoaWxkUHJvY2VzcywgcHJpdmF0
ZSBEb3dubG9hZE1hbmFnZXI6OkNsaWVudAorY2xhc3MgTmV0d29ya1Byb2Nlc3MgOiBwdWJsaWMg
Q2hpbGRQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LCBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8TmV0d29ya1Byb2Nlc3M+CiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJCYWNraW5nU3RvcmVU
ZW1wb3JhcnlGaWxlSGFuZGxlcgogI2VuZGlmCiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TmV0d29ya1Byb2Nlc3MpOwotICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxOZXR3b3JrUHJvY2Vz
cz47CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPERvd25sb2FkTWFuYWdlcj47CiBwdWJsaWM6
CisgICAgfk5ldHdvcmtQcm9jZXNzKCk7CiAgICAgc3RhdGljIE5ldHdvcmtQcm9jZXNzJiBzaW5n
bGV0b24oKTsKICAgICBzdGF0aWMgY29uc3RleHByIFByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlID0g
UHJvY2Vzc1R5cGU6Ok5ldHdvcms7CiAKQEAgLTIxMSw3ICsyMTEsNiBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3MoKTsKLSAgICB+TmV0d29ya1Byb2Nlc3MoKTsKIAog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24g
MjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IHBhcmFt
ZXRlcnMuZGVmZXJzTG9hZGluZyB9CiAgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3Jl
ZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZm
ZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1l
ckZpcmVkIH0KLSAgICAsIG1fY2FjaGUgeyBzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpID8gbnVs
bHB0ciA6IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpIH0KKyAgICAsIG1fY2Fj
aGUgeyBzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpID8gbnVsbHB0ciA6IGNvbm5lY3Rpb24ubmV0
d29ya1Byb2Nlc3MoKS5jYWNoZSgpIH0KIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIHRoZSBleGlzdGVu
Y2Ugb2YgRW1wdHlGcmFtZUxvYWRlckNsaWVudCBpbiBXZWJDb3JlLgpAQCAtMjg2LDEzICsyODYs
MTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29yawogCiAgICAgYXV0
byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24ocGFyYW1l
dGVycy5zZXNzaW9uSUQpOwogICAgIGlmICghbmV0d29ya1Nlc3Npb24gJiYgcGFyYW1ldGVycy5z
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewotICAgICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xl
dG9uKCkuYWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6cHJp
dmF0ZVNlc3Npb25QYXJhbWV0ZXJzKHBhcmFtZXRlcnMuc2Vzc2lvbklEKSk7CisgICAgICAgIG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5hZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMocGFyYW1ldGVycy5z
ZXNzaW9uSUQpKTsKICAgICAgICAgbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0
d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOwogICAgIH0KICAgICBpZiAoIW5ldHdv
cmtTZXNzaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGNyZWF0ZSBh
IE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5v
dCBleGlzdC4iLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0
byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKLSAgICAgICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBX
ZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludmFsaWRTZXNzaW9uSURLZXkoKSwgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1By
b2Nlc3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBXZWJD
b3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lvbklES2V5KCksIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICBkaWRGYWlsTG9hZGluZyhpbnRlcm5hbEVycm9yKHJl
cXVlc3QudXJsKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM1MywxMyArMzUzLDEz
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3cKIHsKICAgICAvLyBU
aGlzIGNhbiBoYXBwZW4gaWYgdGhlIHJlc291cmNlIGNhbWUgZnJvbSB0aGUgZGlzayBjYWNoZS4K
ICAgICBpZiAoIW1fbmV0d29ya0xvYWQpIHsKLSAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmds
ZXRvbigpLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQobV9jb25uZWN0aW9uLnB0cigp
LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKKyAgICAgICAg
bV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93
bmxvYWQobV9jb25uZWN0aW9uLnB0cigpLCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBkb3dubG9h
ZElELCByZXF1ZXN0KTsKICAgICAgICAgYWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIEFTU0VSVChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOwotICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKS5jb252ZXJ0TmV0d29ya0xvYWRU
b0Rvd25sb2FkKGRvd25sb2FkSUQsIHN0ZDo6ZXhjaGFuZ2UobV9uZXR3b3JrTG9hZCwgbnVsbHB0
ciksIFdURk1vdmUobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShtX2ZpbGVS
ZWZlcmVuY2VzKSwgcmVxdWVzdCwgcmVzcG9uc2UpOworICAgIG1fY29ubmVjdGlvbi0+bmV0d29y
a1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKS5jb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2Fk
KGRvd25sb2FkSUQsIHN0ZDo6ZXhjaGFuZ2UobV9uZXR3b3JrTG9hZCwgbnVsbHB0ciksIFdURk1v
dmUobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShtX2ZpbGVSZWZlcmVuY2Vz
KSwgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
YWJvcnQoKQpAQCAtOTM3LDcgKzkzNyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpp
bnZhbGlkYXRlU2EKIAogYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5zZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKHNlc3Npb25JRCgpKSkKKyAgICBpZiAo
bV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9t
YXRpb24oc2Vzc2lvbklEKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBz
ZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyMzk2
NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsMTYgKzQxLDE2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNz
aW9uOjpjcmVhdGUoTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQorUmVmPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBOZXR3b3JrU2Vz
c2lvbkNvY29hOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJz
KSk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKLSAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25Tb3Vw
OjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIE5ldHdvcmtTZXNzaW9u
U291cDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICNlbmRp
ZgogI2lmIFVTRShDVVJMKQotICAgIHJldHVybiBOZXR3b3JrU2Vzc2lvbkN1cmw6OmNyZWF0ZShX
VEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25DdXJsOjpjcmVh
dGUobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogI2VuZGlmCiB9CiAKQEAg
LTYxLDggKzYxLDkgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU2Vzc2lvbjo6bgog
ICAgIHJldHVybiAqc3RvcmFnZVNlc3Npb247CiB9CiAKLU5ldHdvcmtTZXNzaW9uOjpOZXR3b3Jr
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitOZXR3b3JrU2Vzc2lvbjo6TmV0d29y
a1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCisgICAgLCBtX25ldHdvcmtQ
cm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDExICszOCwxMiBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNrOworY2xhc3MgTmV0d29ya1Byb2Nl
c3M7CiBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIE5l
dHdvcmtTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Nlc3Npb24+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrU2Vzc2lvbj4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7
CiAgICAgdmlydHVhbCB+TmV0d29ya1Nlc3Npb24oKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlQW5kQ2FuY2VsKCk7CkBAIC01MSwxNiArNTIsMTcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRlbmN5KCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAK
ICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25J
RDsgfQorICAgIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0
d29ya1Byb2Nlc3M7IH0KICAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpIGNvbnN0OwogCiAgICAgdm9pZCByZWdpc3Rlck5ldHdvcmtEYXRh
VGFzayhOZXR3b3JrRGF0YVRhc2smIHRhc2spIHsgbV9kYXRhVGFza1NldC5hZGQoJnRhc2spOyB9
CiAgICAgdm9pZCB1bnJlZ2lzdGVyTmV0d29ya0RhdGFUYXNrKE5ldHdvcmtEYXRhVGFzayYgdGFz
aykgeyBtX2RhdGFUYXNrU2V0LnJlbW92ZSgmdGFzayk7IH0KIAogcHJvdGVjdGVkOgotICAgIE5l
dHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBOZXR3b3JrU2Vzc2lvbihOZXR3b3Jr
UHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwotCisgICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwogICAgIEhh
c2hTZXQ8TmV0d29ya0RhdGFUYXNrKj4gbV9kYXRhVGFza1NldDsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0LmgJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QCBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiBjbGFzcyBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFJlbW92ZSBwbGF0Zm9ybS1zcGVj
aWZpYyBjb2RlIGFuZCB1c2UgU2Vzc2lvblRyYWNrZXIuCi0gICAgc3RhdGljIHZvaWQgZW5zdXJl
V2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7Cisg
ICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nl
c3MmLCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKIH07CiAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTkgKzQ0LDIwIEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8V2ViSURCQ29ubmVjdGlvblRv
Q2xpZW50PiBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZShOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK1JlZjxXZWJJREJDb25uZWN0aW9uVG9D
bGllbnQ+IFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50KGNvbm5lY3Rpb24sIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZXNzaW9uSUQpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQobmV0d29y
a1Byb2Nlc3MsIGNvbm5lY3Rpb24sIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZXNzaW9u
SUQpKTsKIH0KIAotV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpXZWJJREJDb25uZWN0aW9uVG9D
bGllbnQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudChOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBj
b25uZWN0aW9uLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBt
X25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogICAgICwgbV9pZGVudGlmaWVyKHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewog
ICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwogICAgIG1fY29ubmVjdGlvblRvQ2xpZW50
ID0gSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcyk7Ci0gICAg
TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkucmVnaXN0
ZXJDb25uZWN0aW9uKCptX2Nvbm5lY3Rpb25Ub0NsaWVudCk7CisgICAgbmV0d29ya1Byb2Nlc3Mu
aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5yZWdpc3RlckNvbm5lY3Rpb24oKm1fY29ubmVjdGlvblRv
Q2xpZW50KTsKIH0KIAogV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojp+V2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50KCkKQEAgLTY1LDcgKzY2LDcgQEAgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojp+
V2ViSURCQ29ubmVjdAogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlzY29ubmVj
dGVkRnJvbVdlYlByb2Nlc3MoKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5p
ZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLnVucmVnaXN0ZXJDb25uZWN0aW9uKCptX2Nvbm5lY3Rpb25U
b0NsaWVudCk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS51
bnJlZ2lzdGVyQ29ubmVjdGlvbigqbV9jb25uZWN0aW9uVG9DbGllbnQpOwogfQogCiBJUEM6OkNv
bm5lY3Rpb24qIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKQpAQCAtMjE2LDYyICsyMTcsNjIgQEAgdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6
OmRpZEdldEFsbAogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlRGF0YWJh
c2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZGVsZXRlRGF0YWJhc2UocmVxdWVz
dCk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5kZWxldGVE
YXRhYmFzZShyZXF1ZXN0KTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6Om9w
ZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKIHsKLSAgICBOZXR3b3Jr
UHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5vcGVuRGF0YWJhc2Uo
cmVxdWVzdCk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5v
cGVuRGF0YWJhc2UocmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
OjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2
ZXIobV9zZXNzaW9uSUQpLmFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsK
KyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmFib3J0VHJhbnNh
Y3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5j
b21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZGlkRmluaXNoSGFuZGxp
bmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIo
bV9zZXNzaW9uSUQpLmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQog
ewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3QsIGluZm8pOworICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuY3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdCwgaW5mbyk7
CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkZWxldGVPYmplY3RTdG9yZShj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAg
IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmRlbGV0
ZU9iamVjdFN0b3JlKHJlcXVlc3QsIG5hbWUpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNl
cnZlcihtX3Nlc3Npb25JRCkuZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdCwgbmFtZSk7CiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmlkYlNlcnZlcihtX3Nlc3Npb25JRCkucmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdCwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2
ZXIobV9zZXNzaW9uSUQpLnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3QsIG9iamVjdFN0b3JlSWRl
bnRpZmllciwgbmV3TmFtZSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojpj
bGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0LCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuY2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0LCBvYmplY3RT
dG9yZUlkZW50aWZpZXIpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Np
b25JRCkuY2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0LCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwog
fQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlSW5kZXgoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3QsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAgICBO
ZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5jcmVhdGVJ
bmRleChyZXF1ZXN0LCBpbmZvKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9z
ZXNzaW9uSUQpLmNyZWF0ZUluZGV4KHJlcXVlc3QsIGluZm8pOwogfQogCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3QsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKQog
ewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LmRlbGV0ZUluZGV4KHJlcXVlc3QsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmFtZSk7CisgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5kZWxldGVJbmRleChyZXF1
ZXN0LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5hbWUpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub0NsaWVudDo6cmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3Qs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRv
bigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkucmVuYW1lSW5kZXgocmVxdWVzdCwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOworICAgIG1fbmV0d29ya1By
b2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkucmVuYW1lSW5kZXgocmVxdWVzdCwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwogfQogCiB2b2lkIFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3QsIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCB1bnNp
Z25lZCBvdmVyd3JpdGVNb2RlKQpAQCAtMjg2LDc3ICsyODcsNzcgQEAgdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQ6OnB1dE9yQWRkKAogCiAgICAgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92
ZXJ3cml0ZU1vZGUgbW9kZSA9IHN0YXRpY19jYXN0PEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVy
d3JpdGVNb2RlPihvdmVyd3JpdGVNb2RlKTsKIAotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0
b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLnB1dE9yQWRkKHJlcXVlc3QsIGtleSwgdmFsdWUs
IG1vZGUpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkucHV0
T3JBZGQocmVxdWVzdCwga2V5LCB2YWx1ZSwgbW9kZSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50OjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QsIGNv
bnN0IElEQkdldFJlY29yZERhdGEmIGdldFJlY29yZERhdGEpCiB7Ci0gICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZ2V0UmVjb3JkKHJlcXVlc3Qs
IGdldFJlY29yZERhdGEpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Np
b25JRCkuZ2V0UmVjb3JkKHJlcXVlc3QsIGdldFJlY29yZERhdGEpOwogfQogCiB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudDo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdCwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQog
ewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LmdldEFsbFJlY29yZHMocmVxdWVzdCwgZ2V0QWxsUmVjb3Jkc0RhdGEpOworICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZ2V0QWxsUmVjb3JkcyhyZXF1ZXN0LCBn
ZXRBbGxSZWNvcmRzRGF0YSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojpn
ZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJiByYW5nZSkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVy
KG1fc2Vzc2lvbklEKS5nZXRDb3VudChyZXF1ZXN0LCByYW5nZSk7CisgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5nZXRDb3VudChyZXF1ZXN0LCByYW5nZSk7CiB9
CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkZWxldGVSZWNvcmQoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3QsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0g
ICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZGVs
ZXRlUmVjb3JkKHJlcXVlc3QsIHJhbmdlKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2
ZXIobV9zZXNzaW9uSUQpLmRlbGV0ZVJlY29yZChyZXF1ZXN0LCByYW5nZSk7CiB9CiAKIHZvaWQg
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0LCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIE5ldHdvcmtQcm9j
ZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLm9wZW5DdXJzb3IocmVxdWVz
dCwgaW5mbyk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5v
cGVuQ3Vyc29yKHJlcXVlc3QsIGluZm8pOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0Ns
aWVudDo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgY29uc3Qg
SURCSXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmds
ZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuaXRlcmF0ZUN1cnNvcihyZXF1ZXN0LCBkYXRh
KTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLml0ZXJhdGVD
dXJzb3IocmVxdWVzdCwgZGF0YSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
Ojplc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiB7Ci0gICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZXN0YWJsaXNoVHJhbnNhY3Rp
b24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CisgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5lc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBpbmZvKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJT
ZXJ2ZXIobV9zZXNzaW9uSUQpLmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGll
bnQ6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIo
bV9zZXNzaW9uSUQpLmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
IH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmFib3J0T3BlbkFuZFVwZ3JhZGVO
ZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuYWJvcnRPcGVuQW5kVXBn
cmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50
aWZpZXIpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuYWJv
cnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFu
c2FjdGlvbklkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6
ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
cikKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lv
bklEKS5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2Vy
dmVyKG1fc2Vzc2lvbklEKS5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViSURC
Q29ubmVjdGlvblRvQ2xpZW50OjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCku
aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRh
KTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLm9wZW5EQlJl
cXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25U
b0NsaWVudDo6Y29uZmlybURpZENsb3NlRnJvbVNlcnZlcih1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJT
ZXJ2ZXIobV9zZXNzaW9uSUQpLmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIoZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vz
c2lvbklEKS5jb25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Z2V0QWxsRGF0YWJh
c2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBO
ZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5nZXRBbGxE
YXRhYmFzZU5hbWVzKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB0b3BPcmlnaW4sIG9wZW5p
bmdPcmlnaW4sIGNhbGxiYWNrSUQpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlciht
X3Nlc3Npb25JRCkuZ2V0QWxsRGF0YWJhc2VOYW1lcyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdG9wT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWRE
Qi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaAkocmV2
aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDEx
IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitj
bGFzcyBOZXR3b3JrUHJvY2VzczsKKwogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50IGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50RGVs
ZWdhdGUsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBSZWZDb3VudGVkPFdlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViSURCQ29u
bmVjdGlvblRvQ2xpZW50PiBjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCB1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOworICAg
IHN0YXRpYyBSZWY8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50PiBjcmVhdGUoTmV0d29ya1Byb2Nl
c3MmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICB2aXJ0dWFsIH5XZWJJREJD
b25uZWN0aW9uVG9DbGllbnQoKTsKIApAQCAtMTI2LDEzICsxMjgsMTQgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CiAKIHByaXZhdGU6Ci0gICAgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50KE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEKTsKKyAgICBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQoTmV0d29ya1Byb2Nl
c3MmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBJUEM6OkNvbm5lY3Rpb24q
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBN
ZXNzYWdlVHlwZT4gdm9pZCBoYW5kbGVHZXRSZXN1bHQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0
RGF0YSYpOwogCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nvbm5l
Y3Rpb247CisgICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwogCiAgICAg
dWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtE
YXRhVGFza0NvYwogICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJl
cXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKICAg
ICBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQo
bnNSZXF1ZXN0LCBzaG91bGRDb250ZW50U25pZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5n
UG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50
RW5jb2RpbmdTbmlmZiA9PSBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6
U25pZmYpOwogI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBOZXR3b3JrUHJv
Y2Vzczo6c2luZ2xldG9uKCkucHJveGltaXR5TWFuYWdlcigpLmFwcGx5UHJvcGVydGllcyhyZXF1
ZXN0LCAqdGhpcywgbnNSZXF1ZXN0KTsKKyAgICBtX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCku
cHJveGltaXR5TWFuYWdlcigpLmFwcGx5UHJvcGVydGllcyhyZXF1ZXN0LCAqdGhpcywgbnNSZXF1
ZXN0KTsKICNlbmRpZgogCiAgICAgYXV0byYgY29jb2FTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0
d29ya1Nlc3Npb25Db2NvYSY+KG1fc2Vzc2lvbi5nZXQoKSk7CkBAIC00OTcsNyArNDk3LDcgQEAg
V2ViQ29yZTo6Q3JlZGVudGlhbCBzZXJ2ZXJUcnVzdENyZWRlbnRpYQogCiBib29sIE5ldHdvcmtE
YXRhVGFza0NvY29hOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAogewotICAgIGlm
IChOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbihtX3Nlc3Npb24tPnNlc3Npb25JRCgpKSkKKyAgICBpZiAobV9zZXNzaW9uLT5uZXR3b3Jr
UHJvY2VzcygpLnNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24obV9zZXNzaW9uLT5zZXNz
aW9uSUQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi0+
c2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCShyZXZpc2lvbiAyMzk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3OSw3ICsx
NzksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShXYWxsCiAgICAgaWYg
KCFtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwKQogICAgICAgICBtX2NsZWFyQ2FjaGVEaXNwYXRj
aEdyb3VwID0gZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCk7CiAKLSAgICBhdXRvKiBjYWNoZSA9IE5l
dHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpOworICAgIGF1dG8qIGNhY2hlID0gdGhp
cy0+Y2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCShyZXZpc2lvbiAyMzk2
NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hIGZpbmFsIDogcHVi
bGljIE5ldHdvcmtTZXNzaW9uIHsKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya0RhdGFUYXNrQ29j
b2E7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nl
c3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkNvY29hKCk7CiAKICAgICAvLyBNdXN0IGJl
IGNhbGxlZCBiZWZvcmUgYW55IE5ldHdvcmtTZXNzaW9uIGhhcyBiZWVuIGNyZWF0ZWQuCkBAIC02
Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhbGxvd3NTcGVjaWZpY0hUVFBT
Q2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Jik7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9j
ZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKICAgICB2b2lkIGlu
dmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ3JlZGVudGlhbHMo
KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDIzOTY3MCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjoo
TlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlh
bCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVz
dF0pOwogCiAgICAgICAgIC8vIEhhbmRsZSBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbiBhdCBwbGF0
Zm9ybS1sZXZlbCBpZiByZXF1ZXN0ZWQsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIGFuZCB0byB1
c2UgQVRTIGRlZmF1bHRzLgotICAgICAgICBpZiAoIU5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbigpKQorICAgICAgICBpZiAoIV9z
ZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0
aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZSwgbmlsKTsKICAgICB9CiAKQEAgLTM2
Niw3ICszNjYsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAg
ICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gX3Nlc3Npb24tPmRvd25sb2Fk
SUQodGFza0lkZW50aWZpZXIpOwogICAgICAgICBpZiAoZG93bmxvYWRJRC5kb3dubG9hZElEKCkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBkb3dubG9hZCA9IFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQpKSB7
CisgICAgICAgICAgICBpZiAoYXV0byogZG93bmxvYWQgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nl
c3MoKS5kb3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkgewogICAgICAgICAg
ICAgICAgIC8vIFJlY2VpdmVkIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBmb3IgYSBkb3du
bG9hZCBiZWluZyByZXN1bWVkLgogICAgICAgICAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHsgY2hhbGxlbmdlIH07CiAgICAg
ICAgICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBs
ZXRpb25IYW5kbGVyKTsKQEAgLTM5NCw3ICszOTQsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5T
VVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgZWxzZSBpZiAoZXJyb3IpIHsKICAgICAgICAgYXV0byBk
b3dubG9hZElEID0gX3Nlc3Npb24tPnRha2VEb3dubG9hZElEKHRhc2sudGFza0lkZW50aWZpZXIp
OwogICAgICAgICBpZiAoZG93bmxvYWRJRC5kb3dubG9hZElEKCkpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvKiBkb3dubG9hZCA9IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRv
d25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byogZG93bmxvYWQgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFn
ZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkgewogICAgICAgICAgICAgICAgIE5TRGF0YSAqcmVz
dW1lRGF0YSA9IG5pbDsKICAgICAgICAgICAgICAgICBpZiAoaWQgdXNlckluZm8gPSBlcnJvci51
c2VySW5mbykgewogICAgICAgICAgICAgICAgICAgICBpZiAoW3VzZXJJbmZvIGlzS2luZE9mQ2xh
c3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQpAQCAtNTI1LDcgKzUyNSw3IEBAIC0gKHZvaWQpVVJM
U2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byBkb3dubG9hZElEID0gX3Nlc3Npb24tPnRha2VEb3dubG9hZElEKFtkb3dubG9hZFRhc2sgdGFz
a0lkZW50aWZpZXJdKTsKLSAgICBpZiAoYXV0byogZG93bmxvYWQgPSBXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElE
KSkKKyAgICBpZiAoYXV0byogZG93bmxvYWQgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5k
b3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkKICAgICAgICAgZG93bmxvYWQt
PmRpZEZpbmlzaCgpOwogfQogCkBAIC01MzcsNyArNTM3LDcgQEAgLSAodm9pZClVUkxTZXNzaW9u
OihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIVtzZWxmIGV4
aXN0aW5nVGFzazpkb3dubG9hZFRhc2tdLCAiVGhlIE5ldHdvcmtEYXRhVGFzayBzaG91bGQgYmUg
ZGVzdHJveWVkIGltbWVkaWF0ZWx5IGFmdGVyIGRpZEJlY29tZURvd25sb2FkVGFzayByZXR1cm5z
Iik7CiAKICAgICBhdXRvIGRvd25sb2FkSUQgPSBfc2Vzc2lvbi0+ZG93bmxvYWRJRChbZG93bmxv
YWRUYXNrIHRhc2tJZGVudGlmaWVyXSk7Ci0gICAgaWYgKGF1dG8qIGRvd25sb2FkID0gV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZG93bmxvYWRNYW5hZ2VyKCkuZG93bmxvYWQo
ZG93bmxvYWRJRCkpCisgICAgaWYgKGF1dG8qIGRvd25sb2FkID0gX3Nlc3Npb24tPm5ldHdvcmtQ
cm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCkuZG93bmxvYWQoZG93bmxvYWRJRCkpCiAgICAgICAg
IGRvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4pOwogfQogCkBAIC01NTQsNyAr
NTU0LDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIGlm
IChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7
CiAgICAgICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4gcHJvdGVjdGVkTmV0d29ya0RhdGFU
YXNrKCpuZXR3b3JrRGF0YVRhc2spOwogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBuZXR3b3Jr
RGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7Ci0gICAgICAgIGF1dG8mIGRvd25sb2FkTWFu
YWdlciA9IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdl
cigpOworICAgICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBfc2Vzc2lvbi0+bmV0d29ya1By
b2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKTsKICAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElE
LCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5z
dWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNh
bmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKCpkb3dubG9hZCk7CiAgICAgICAgIEFTU0VSVChXZWJD
b3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24oKSkpOwpAQCAtNTk5LDkgKzU5OSw5IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25D
b2NvYTo6c2V0Q1REYXRhQ29ubmUKIH0KICNlbmRpZgogCi1SZWY8TmV0d29ya1Nlc3Npb24+IE5l
dHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCitSZWY8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6
OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBOZXR3b3JrU2Vzc2lvbkNvY29hKFdURk1vdmUocGFyYW1ldGVycykpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBOZXR3b3JrU2Vzc2lvbkNvY29hKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpKSk7CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnByb3h5RGljdGlvbmFy
eShjb25zdCBVUkwmIGh0dHBQcm94eSwgY29uc3QgVVJMJiBodHRwc1Byb3h5KQpAQCAtNjI3LDgg
KzYyNyw4IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnByb3h5RGljdGlvbmFyeShjb24KICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIAotTmV0d29ya1Nlc3Npb25Db2Nv
YTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCi0gICAgOiBOZXR3b3JrU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCkK
K05ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCisgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycy5z
ZXNzaW9uSUQpCiAgICAgLCBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihwYXJhbWV0ZXJzLmJv
dW5kSW50ZXJmYWNlSWRlbnRpZmllcikKICAgICAsIG1fcHJveHlDb25maWd1cmF0aW9uKHBhcmFt
ZXRlcnMucHJveHlDb25maWd1cmF0aW9uKQogICAgICwgbV9zaG91bGRMb2dDb29raWVJbmZvcm1h
dGlvbihwYXJhbWV0ZXJzLnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKQpAQCAtNjU1LDcgKzY1
NSw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKICAgICAvLyBU
aGUgV2ViS2l0IG5ldHdvcmsgY2FjaGUgd2FzIGFscmVhZHkgcXVlcmllZC4KICAgICBjb25maWd1
cmF0aW9uLlVSTENhY2hlID0gbmlsOwogCi0gICAgaWYgKGF1dG8gZGF0YSA9IE5ldHdvcmtQcm9j
ZXNzOjpzaW5nbGV0b24oKS5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpKQorICAgIGlmIChh
dXRvIGRhdGEgPSBuZXR3b3JrUHJvY2Vzcy5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpKQog
ICAgICAgICBjb25maWd1cmF0aW9uLl9zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRhID0g
KF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCk7CiAKICAgICBpZiAoIXBhcmFtZXRlcnMuc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmlzRW1wdHkoKSkgewpAQCAtNjc1LDcgKzY3
NSw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKICNlbmRpZgog
CiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKLSAgICBOZXR3b3Jr
UHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXI+KCktPnJlZ2lzdGVyUHJvdG9jb2xDbGFzcyhjb25maWd1cmF0aW9uKTsKKyAgICBuZXR3b3Jr
UHJvY2Vzcy5zdXBwbGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKS0+cmVnaXN0
ZXJQcm90b2NvbENsYXNzKGNvbmZpZ3VyYXRpb24pOwogI2VuZGlmCiAKICNpZiBIQVZFKFRJTUlO
R0RBVEFPUFRJT05TKQpAQCAtNjg2LDcgKzY4Niw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5l
dHdvcmtTZXNzaW9uQ29jb2EKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogICAgIC8vIEZJWE1F
OiBSZXBsYWNlIEAia0NGU3RyZWFtUHJvcGVydHlBdXRvRXJyb3JPblN5c3RlbUNoYW5nZSIgd2l0
aCBhIGNvbnN0YW50IGZyb20gdGhlIFNESyBvbmNlIHJkYXI6Ly9wcm9ibGVtLzQwNjUwMjQ0IGlz
IGluIGEgYnVpbGQuCi0gICAgaWYgKE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwcmVz
c2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UoKSkKKyAgICBpZiAobmV0d29y
a1Byb2Nlc3Muc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCkp
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uX3NvY2tldFN0cmVhbVByb3BlcnRpZXMgPSBAeyBAImtD
RlN0cmVhbVByb3BlcnR5QXV0b0Vycm9yT25TeXN0ZW1DaGFuZ2UiIDogQChOTykgfTsKICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Np
b25DdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDggKzM3LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1OZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9uQ3VybChO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi0gICAgOiBOZXR3
b3JrU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCkKK05ldHdvcmtTZXNzaW9uQ3VybDo6TmV0
d29ya1Nlc3Npb25DdXJsKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorICAgIDogTmV0d29ya1Nlc3Np
b24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMuc2Vzc2lvbklEKQogewogICAgIGlmICghcGFy
YW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGUuaXNFbXB0eSgpKQogICAgICAgICBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWVEYXRhYmFzZShtYWtlVW5pcXVlUmVmPENv
b2tpZUphckRCPihwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZSkpOwpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
U2Vzc2lvbkN1cmwuaAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywx
NCArMzMsMTQgQEAgc3RydWN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBj
bGFzcyBOZXR3b3JrU2Vzc2lvbkN1cmwgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCisgICAgc3RhdGljIFJlZjxOZXR3
b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1Nlc3Npb25DdXJsKFdURk1vdmUocGFyYW1ldGVy
cykpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1Nlc3Npb25DdXJsKG5l
dHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiAgICAgfQogICAgIH5OZXR3b3Jr
U2Vzc2lvbkN1cmwoKTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgTmV0d29ya1Nlc3Npb25DdXJsKE5l
dHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZp
c2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAg
ICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5z
ZXNzaW9uSUQ7CiAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4
dDo6ZW5zdXJlV2VicwogICAgIGZvciAoY29uc3QgYXV0byYgY29va2llIDogcGFyYW1ldGVycy5w
ZW5kaW5nQ29va2llcykKICAgICAgICAgc2Vzc2lvbi0+c2V0Q29va2llKGNvb2tpZSk7CiAKLSAg
ICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpj
cmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKKyAg
ICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpj
cmVhdGUobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMpKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCShyZXZpc2lvbiAyMzk2
NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25T
b3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3
b3JrU2Vzc2lvblNvdXAoTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQotICAgIDogTmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpCitOZXR3b3Jr
U2Vzc2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1By
b2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKKyAg
ICA6IE5ldHdvcmtTZXNzaW9uKG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLnNlc3Npb25JRCkK
IHsKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWVPYnNlcnZlckhhbmRsZXIo
W3RoaXNdIHsKICAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8
V2ViQ29va2llTWFuYWdlcj4oKS0+bm90aWZ5Q29va2llc0RpZENoYW5nZShtX3Nlc3Npb25JRCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25T
b3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtTZXNzaW9uU291cC5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDE2ICszNSwxNiBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM7
CiAKIGNsYXNzIE5ldHdvcmtTZXNzaW9uU291cCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lv
biB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKKyAgICBzdGF0aWMgUmVm
PE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU2Vzc2lvblNvdXAoV1RGTW92ZShwYXJh
bWV0ZXJzKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU2Vzc2lvblNv
dXAobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpKTsKICAgICB9CiAgICAgfk5l
dHdvcmtTZXNzaW9uU291cCgpOwogCiAgICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9uKCkgY29u
c3Q7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya1Nlc3Npb25Tb3VwKE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpOworICAgIE5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2Vz
cyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCiAgICAgdm9pZCBjbGVh
ckNyZWRlbnRpYWxzKCkgb3ZlcnJpZGU7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358500</attachid>
            <date>2019-01-07 09:11:20 -0800</date>
            <delta_ts>2019-01-07 09:25:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193197-20190107091119.patch</filename>
            <type>text/plain</type>
            <size>61177</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzk2NzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAxOS0wMS0wNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSB1c2Ug
b2YgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUGFzcyBpdCBhcm91bmQgYXMgYSBSZWY8TmV0d29ya1Byb2Nl
c3M+IGFzIGEgc3RlcCB0b3dhcmRzIHJlZHVjaW5nIGdsb2JhbCBzdGF0ZS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6V2ViSURCQ29ubmVjdGlvblRv
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkaXNj
b25uZWN0ZWRGcm9tV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQ6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNv
bm5lY3Rpb25Ub0NsaWVudDo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJD
b25uZWN0aW9uVG9DbGllbnQ6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGVJbmRleCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OnJlbmFtZUluZGV4KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpwdXRPckFkZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpnZXRDb3VudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjppdGVyYXRlQ3Vyc29yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojplc3RhYmxpc2hUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGF0YWJhc2VD
b25uZWN0aW9uUGVuZGluZ0Nsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50OjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6Om9w
ZW5EQlJlcXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmdldEFsbERhdGFiYXNlTmFtZXMpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlU29ja2V0U3RyZWFtKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWZldGNoRE5T
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0
RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRh
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpmZXRjaERpc2tDYWNoZUVudHJpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OmNsZWFyRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Z2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmlkYlNlcnZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnZlcnRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3Jr
U2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Om5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZFJl
Y2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLTmV0d29y
a1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6XSk6
CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRvd25sb2Fk
VGFzazpkaWRGaW5pc2hEb3dubG9hZGluZ1RvVVJMOl0pOgorICAgICAgICAoLVtXS05ldHdvcmtT
ZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkb3dubG9hZFRhc2s6ZGlkV3JpdGVEYXRhOnRvdGFs
Qnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgtW1dL
TmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZEJlY29tZURvd25s
b2FkVGFzazpdKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25D
b2NvYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9u
Q3VybCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJz
aXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvblNvdXA6
Ok5ldHdvcmtTZXNzaW9uU291cCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrU2Vzc2lvblNvdXAuaDoKKwogMjAxOS0wMS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vZGVybml6ZSBDYWNoZU1vZGVsIGFuZCBk
aXNrIGNhY2hlIGZldGNoaW5nIGFuZCBjbGVhcmluZwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MywxMyArNjMsMTQgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLVJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIpCitSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoY29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhuZXR3b3JrUHJvY2VzcywgY29ubmVjdGlvbklkZW50
aWZpZXIpKTsKIH0KIAotTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKK05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKICAgICA6IG1fY29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklk
ZW50aWZpZXIsICp0aGlzKSkKKyAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3Mp
CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgLCBtX21kbnNSZWdpc3RlcigqdGhpcykKICNlbmRp
ZgpAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmRpZFIKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAg
ICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRp
ZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4MCw3ICsxODEsNyBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSCiAgICAgfQogICAgIAogICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRl
eHRDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25Ub0Nv
bnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24oY29ubmVjdGlvbikpIHsKKyAgICAgICAgaWYg
KGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRv
Q29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgewogICAgICAgICAg
ICAgY29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjcsOSArMjI4LDkgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUgogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoUmVmUHRyPFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IE5ldHdv
cmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUEND
b25uZWN0aW9uKGNvbm5lY3Rpb24pKSB7CisgICAgaWYgKFJlZlB0cjxXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24+IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBtX25ldHdvcmtQcm9j
ZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKGNvbm5lY3Rp
b24pKSB7CiAgICAgICAgIC8vIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgZXhpdGVkLgotICAgICAg
ICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NX
YXNDbG9zZWQoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9z
ZWQoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbHNlCkBAIC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQwogICAgIHN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFj
a2luZygpOwogCiAgICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkuY29ubmVjdGlv
blRvV2ViUHJvY2Vzc0RpZENsb3NlKHRoaXMpOwotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0
b24oKS5yZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyh0aGlzKTsKKyAgICBtX25l
dHdvcmtQcm9jZXNzLT5yZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyh0aGlzKTsK
IAogI2lmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKG1fcnRjUHJvdmlkZXIpIHsKQEAgLTI3OSw3
ICsyODAsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhCiAgICAg
QVNTRVJUKCFtX25ldHdvcmtTb2NrZXRTdHJlYW1zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAg
ICBXZWJDb3JlOjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4gdG9rZW4gPSB7IH07CiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdG9rZW4gPSB7IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIH07CisgICAgdG9rZW4gPSB7IG1fbmV0d29y
a1Byb2Nlc3MtPnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgfTsKICNlbmRpZgogICAgIG1f
bmV0d29ya1NvY2tldFN0cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06
OmNyZWF0ZShXVEZNb3ZlKHVybCksIHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZp
ZXIsIG1fY29ubmVjdGlvbiwgV1RGTW92ZSh0b2tlbikpKTsKIH0KQEAgLTM4NCw3ICszODUsNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRECiAKIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnByZWZldGNoRE5TKGhvc3Ru
YW1lKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wcmVmZXRjaEROUyhob3N0bmFtZSk7CiB9CiAK
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyh1aW50NjRf
dCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQpAQCAtNDIzLDE3ICs0MjQsMTYgQEAgc3RhdGljIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc3RvcmFnZVNlcwogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkTmFtZSkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZG93bmxvYWRN
YW5hZ2VyKCkuc3RhcnREb3dubG9hZCh0aGlzLCBzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVl
c3QsIHN1Z2dlc3RlZE5hbWUpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdl
cigpLnN0YXJ0RG93bmxvYWQodGhpcywgc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBz
dWdnZXN0ZWROYW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQgZG93bmxv
YWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KTsKICAgICAvLyBJbiBjYXNlIGEgcmVzcG9uc2UgaXMgc2VydmVkIGZyb20gc2VydmljZSB3b3Jr
ZXIsIHdlIGRvIG5vdCBoYXZlIHlldCB0aGUgYWJpbGl0eSB0byBjb252ZXJ0IHRoZSBsb2FkLgog
ICAgIGlmICghbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgfHwgcmVzcG9uc2Uuc291cmNlKCkg
PT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKSB7Ci0gICAgICAgIG5l
dHdvcmtQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQodGhpcywgc2Vzc2lv
bklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+ZG93
bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZCh0aGlzLCBzZXNzaW9uSUQsIGRvd25sb2FkSUQs
IHJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NTIsNyArNTUyLDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0QwogCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkV2Vic2l0ZURhdGFTdG9y
ZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0
ZXJzKCkpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpKTsK
IH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlEKQpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVzdGEKICAgICBMT0coSW5kZXhlZERCLCAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaElEQkNvbm5lY3Rpb25Ub1NlcnZlciAtICUiIFBSSXU2
NCwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIEFTU0VSVCghbV93ZWJJREJDb25u
ZWN0aW9ucy5jb250YWlucyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpOwogICAgIAotICAg
IG1fd2ViSURCQ29ubmVjdGlvbnMuc2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcywgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHNlc3Npb25JRCkpOworICAgIG1fd2ViSURCQ29ubmVjdGlvbnMuc2V0KHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZShtX25l
dHdvcmtQcm9jZXNzLCAqdGhpcywgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlc3Npb25J
RCkpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVJREJD
b25uZWN0aW9uVG9TZXJ2ZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCkBA
IC03MjYsNyArNzI2LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5y
ZQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZl
ckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyJiBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBhdXRvJiBzZXJ2
ZXIgPSBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Np
b25JRCk7CisgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JT
ZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgYXV0byBjb25uZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNz
aW9uSUQpOwogICAgIAogICAgIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlv
bi0+aWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24g
MjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGVudW0gY2xh
c3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
Y2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBOZXR3b3JrU29ja2V0U3RyZWFtOwogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OwpA
QCAtNjIsMTAgKzYzLDExIEBAIHN0cnVjdCBEYXRhS2V5OwogCiBjbGFzcyBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKIAogICAg
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQo
KTsgfQorICAgIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0
d29ya1Byb2Nlc3MuZ2V0KCk7IH0KIAogICAgIHZvaWQgZGlkQ2xlYW51cFJlc291cmNlTG9hZGVy
KE5ldHdvcmtSZXNvdXJjZUxvYWRlciYpOwogICAgIHZvaWQgc2V0T25MaW5lU3RhdGUoYm9vbCk7
CkBAIC0xMjAsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcFRyYWNraW5nUmVzb3Vy
Y2VMb2FkKFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgTmV0d29ya0FjdGl2aXR5
VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUpOwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CisgICAgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQcmVjb25uZWN0aW9uKHVpbnQ2NF90
IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAKQEAgLTIyNyw2ICsyMjksNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBmaW5kTmV0d29ya0Fj
dGl2aXR5VHJhY2tlcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFJlZjxOZXR3b3JrUHJvY2Vz
cz4gbV9uZXR3b3JrUHJvY2VzczsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxOZXR3
b3JrU29ja2V0U3RyZWFtPj4gbV9uZXR3b3JrU29ja2V0U3RyZWFtczsKICAgICBIYXNoTWFwPFJl
c291cmNlTG9hZElkZW50aWZpZXIsIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBtX25ldHdv
cmtSZXNvdXJjZUxvYWRlcnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjM5NjcxKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
NSw4ICsxMTUsOCBAQCBzdGF0aWMgdm9pZCBjYWxsRXhpdFNvb24oSVBDOjpDb25uZWN0aW9uCiAK
IE5ldHdvcmtQcm9jZXNzJiBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TmV0d29ya1Byb2Nlc3M+IG5ldHdvcmtQcm9jZXNzOwotICAgIHJl
dHVybiBuZXR3b3JrUHJvY2VzczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPE5ldHdv
cmtQcm9jZXNzPj4gbmV0d29ya1Byb2Nlc3MoYWRvcHRSZWYoKm5ldyBOZXR3b3JrUHJvY2Vzcykp
OworICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzcy5nZXQoKTsKIH0KIAogTmV0d29ya1Byb2Nlc3M6
Ok5ldHdvcmtQcm9jZXNzKCkKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojppbml0aWFsaXplTmV0d29ya1ByCiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dp
dGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5z
ZXNzaW9uSUQ7Ci0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3
b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFy
YW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKSk7CisgICAgU2Vzc2lvblRyYWNrZXI6
OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzKSkpOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgYWRkSW5k
ZXhlZERhdGFiYXNlU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29y
a0Nvbm5lYwogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlv
bjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9y
bUNvbm5lY3Rpb24oKTsKIAotICAgIGF1dG8gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpOworICAgIGF1dG8gY29ubmVj
dGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoKnRoaXMsIHNvY2tl
dFBhaXIuc2VydmVyKTsKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoV1RGTW92
ZShjb25uZWN0aW9uKSk7CiAKICAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tl
dFBhaXIuY2xpZW50KTsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVOZXR3b3JrQ29ubmVjCiAgICAgfQogCiAgICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNv
bm5lY3Rpb24uCi0gICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkp
OworICAgIGF1dG8gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
cmVhdGUoKnRoaXMsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7
CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikp
OwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9N
U0dfVFlQRV9NQUtFX1NFTkQpOwpAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNyZWF0ZU5ldHdvcmtDb25uZWMKICAgICAgICAgQ1JBU0goKTsKICAgICB9CiAKLSAgICBh
dXRvIGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKHNl
cnZlcklkZW50aWZpZXIpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGUoKnRoaXMsIHNlcnZlcklkZW50aWZpZXIpOwogICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgIElQ
Qzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoY2xpZW50SWRlbnRpZmllcik7CkBAIC00NDYsNyAr
NDQ2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZQogICAgICAg
ICBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKICNlbmRpZgogCi0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdURk1vdmUocGFyYW1ldGVycykpOworICAgIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbigqdGhpcywg
V1RGTW92ZShwYXJhbWV0ZXJzKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTU2Nyw5ICs1NjcsOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRTZXNzaW9uSXNDb250cm9sCiAgICAgICAgIG1fc2Vzc2lvbnND
b250cm9sbGVkQnlBdXRvbWF0aW9uLnJlbW92ZShzZXNzaW9uSUQpOwogfQogCi1zdGF0aWMgdm9p
ZCBmZXRjaERpc2tDYWNoZUVudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3N0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhOZXR3b3JrQ2FjaGU6OkNhY2hlKiBj
YWNoZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJz
aXRlRGF0YTo6RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBjYWNo
ZSA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpOwogICAgIGlmICghY2FjaGUp
IHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CkBAIC02NzIsNyArNjcxLDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQQogI2VuZGlmCiAKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKLSAgICAgICAgZmV0
Y2hEaXNrQ2FjaGVFbnRyaWVzKHNlc3Npb25JRCwgZmV0Y2hPcHRpb25zLCBbY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXShhdXRvIGVudHJpZXMpIG11dGFi
bGUgeworICAgICAgICBmZXRjaERpc2tDYWNoZUVudHJpZXMoY2FjaGUoKSwgc2Vzc2lvbklELCBm
ZXRjaE9wdGlvbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVn
YXRvcildKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7CiAgICAg
ICAgIH0pOwogICAgIH0KQEAgLTcxOCw5ICs3MTcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YShQCiAgICAgICAgIGNsZWFyRGlza0NhY2hlKG1vZGlmaWVkU2luY2Us
IFtjbGVhclRhc2tzSGFuZGxlciA9IFdURk1vdmUoY2xlYXJUYXNrc0hhbmRsZXIpXSB7IH0pOwog
fQogCi1zdGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoY29uc3QgVmVjdG9yPFNlY3Vy
aXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3N0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhOZXR3b3Jr
Q2FjaGU6OkNhY2hlKiBjYWNoZSwgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9y
aWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBhdXRvKiBjYWNoZSA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpOwog
ICAgIGlmICghY2FjaGUpIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzgwLDcgKzc3OCw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm8KICNlbmRpZgogCiAg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2Fj
aGUpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgY2xlYXJEaXNrQ2FjaGVF
bnRyaWVzKG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBXVEZNb3ZlKGNsZWFyVGFz
a3NIYW5kbGVyKV0geyB9KTsKKyAgICAgICAgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKGNhY2hlKCks
IG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXIgPSBXVEZNb3ZlKGNsZWFyVGFza3NIYW5k
bGVyKV0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCkBA
IC04NjksOSArODY3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0TmV0d29ya1Byb2Nlc3NT
dAogewogICAgIFN0YXRpc3RpY3NEYXRhIGRhdGE7CiAKLSAgICBhdXRvJiBuZXR3b3JrUHJvY2Vz
cyA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKTsKLSAgICBkYXRhLnN0YXRpc3RpY3NOdW1i
ZXJzLnNldCgiRG93bmxvYWRzQWN0aXZlQ291bnQiLCBuZXR3b3JrUHJvY2Vzcy5kb3dubG9hZE1h
bmFnZXIoKS5hY3RpdmVEb3dubG9hZENvdW50KCkpOwotICAgIGRhdGEuc3RhdGlzdGljc051bWJl
cnMuc2V0KCJPdXRzdGFuZGluZ0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlc0NvdW50IiwgbmV0d29y
a1Byb2Nlc3MuYXV0aGVudGljYXRpb25NYW5hZ2VyKCkub3V0c3RhbmRpbmdBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNvdW50KCkpOworICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KCJEb3du
bG9hZHNBY3RpdmVDb3VudCIsIGRvd25sb2FkTWFuYWdlcigpLmFjdGl2ZURvd25sb2FkQ291bnQo
KSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoIk91dHN0YW5kaW5nQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VzQ291bnQiLCBhdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5vdXRzdGFuZGlu
Z0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ291bnQoKSk7CiAKICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6RGlkR2V0U3RhdGlzdGlj
cyhkYXRhLCBjYWxsYmFja0lEKSwgMCk7CiB9CkBAIC0xMDc5LDcgKzEwNzYsNyBAQCBJREJTZXJ2
ZXI6OklEQlNlcnZlciYgTmV0d29ya1Byb2Nlc3M6OmlkCiAgICAgLy8gSWYgdGhlcmUncyBub3Qs
IHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29tZSBmcm9tPwogICAgIEFTU0VS
VCghcGF0aC5pc0VtcHR5KCkpOwogICAgIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKHBhdGgsIE5ldHdvcmtQcm9jZXNzOjpzaW5n
bGV0b24oKSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IElEQlNlcnZlcjo6SURC
U2VydmVyOjpjcmVhdGUocGF0aCwgKnRoaXMpOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPnNldFBlck9yaWdpblF1b3RhKG1faWRiUGVyT3JpZ2luUXVvdGEpOwogICAgIHJldHVybiAq
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIzOTY3MSkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtODgsMTUgKzg4LDE1IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgQ2FjaGU7
CiB9CiAKLWNsYXNzIE5ldHdvcmtQcm9jZXNzIDogcHVibGljIENoaWxkUHJvY2VzcywgcHJpdmF0
ZSBEb3dubG9hZE1hbmFnZXI6OkNsaWVudAorY2xhc3MgTmV0d29ya1Byb2Nlc3MgOiBwdWJsaWMg
Q2hpbGRQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LCBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8TmV0d29ya1Byb2Nlc3M+CiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6SURCU2VydmVyOjpJREJCYWNraW5nU3RvcmVU
ZW1wb3JhcnlGaWxlSGFuZGxlcgogI2VuZGlmCiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TmV0d29ya1Byb2Nlc3MpOwotICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxOZXR3b3JrUHJvY2Vz
cz47CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPERvd25sb2FkTWFuYWdlcj47CiBwdWJsaWM6
CisgICAgfk5ldHdvcmtQcm9jZXNzKCk7CiAgICAgc3RhdGljIE5ldHdvcmtQcm9jZXNzJiBzaW5n
bGV0b24oKTsKICAgICBzdGF0aWMgY29uc3RleHByIFByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlID0g
UHJvY2Vzc1R5cGU6Ok5ldHdvcms7CiAKQEAgLTIxMSw3ICsyMTEsNiBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3MoKTsKLSAgICB+TmV0d29ya1Byb2Nlc3MoKTsKIAog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24g
MjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IHBhcmFt
ZXRlcnMuZGVmZXJzTG9hZGluZyB9CiAgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3Jl
ZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZm
ZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1l
ckZpcmVkIH0KLSAgICAsIG1fY2FjaGUgeyBzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpID8gbnVs
bHB0ciA6IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZSgpIH0KKyAgICAsIG1fY2Fj
aGUgeyBzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpID8gbnVsbHB0ciA6IGNvbm5lY3Rpb24ubmV0
d29ya1Byb2Nlc3MoKS5jYWNoZSgpIH0KIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIHRoZSBleGlzdGVu
Y2Ugb2YgRW1wdHlGcmFtZUxvYWRlckNsaWVudCBpbiBXZWJDb3JlLgpAQCAtMjg2LDEzICsyODYs
MTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29yawogCiAgICAgYXV0
byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24ocGFyYW1l
dGVycy5zZXNzaW9uSUQpOwogICAgIGlmICghbmV0d29ya1Nlc3Npb24gJiYgcGFyYW1ldGVycy5z
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewotICAgICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xl
dG9uKCkuYWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6cHJp
dmF0ZVNlc3Npb25QYXJhbWV0ZXJzKHBhcmFtZXRlcnMuc2Vzc2lvbklEKSk7CisgICAgICAgIG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5hZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMocGFyYW1ldGVycy5z
ZXNzaW9uSUQpKTsKICAgICAgICAgbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0
d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpOwogICAgIH0KICAgICBpZiAoIW5ldHdv
cmtTZXNzaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGNyZWF0ZSBh
IE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5v
dCBleGlzdC4iLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0
byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKLSAgICAgICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBX
ZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludmFsaWRTZXNzaW9uSURLZXkoKSwgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1By
b2Nlc3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBXZWJD
b3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lvbklES2V5KCksIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICBkaWRGYWlsTG9hZGluZyhpbnRlcm5hbEVycm9yKHJl
cXVlc3QudXJsKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM1MywxMyArMzUzLDEz
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3cKIHsKICAgICAvLyBU
aGlzIGNhbiBoYXBwZW4gaWYgdGhlIHJlc291cmNlIGNhbWUgZnJvbSB0aGUgZGlzayBjYWNoZS4K
ICAgICBpZiAoIW1fbmV0d29ya0xvYWQpIHsKLSAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmds
ZXRvbigpLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQobV9jb25uZWN0aW9uLnB0cigp
LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKKyAgICAgICAg
bV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93
bmxvYWQobV9jb25uZWN0aW9uLnB0cigpLCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBkb3dubG9h
ZElELCByZXF1ZXN0KTsKICAgICAgICAgYWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIEFTU0VSVChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpOwotICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKS5jb252ZXJ0TmV0d29ya0xvYWRU
b0Rvd25sb2FkKGRvd25sb2FkSUQsIHN0ZDo6ZXhjaGFuZ2UobV9uZXR3b3JrTG9hZCwgbnVsbHB0
ciksIFdURk1vdmUobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShtX2ZpbGVS
ZWZlcmVuY2VzKSwgcmVxdWVzdCwgcmVzcG9uc2UpOworICAgIG1fY29ubmVjdGlvbi0+bmV0d29y
a1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKS5jb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2Fk
KGRvd25sb2FkSUQsIHN0ZDo6ZXhjaGFuZ2UobV9uZXR3b3JrTG9hZCwgbnVsbHB0ciksIFdURk1v
dmUobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShtX2ZpbGVSZWZlcmVuY2Vz
KSwgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
YWJvcnQoKQpAQCAtOTM3LDcgKzkzNyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpp
bnZhbGlkYXRlU2EKIAogYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5zZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKHNlc3Npb25JRCgpKSkKKyAgICBpZiAo
bV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9t
YXRpb24oc2Vzc2lvbklEKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBz
ZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyMzk2
NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsMTYgKzQxLDE2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNz
aW9uOjpjcmVhdGUoTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQorUmVmPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBOZXR3b3JrU2Vz
c2lvbkNvY29hOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJz
KSk7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKLSAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25Tb3Vw
OjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIE5ldHdvcmtTZXNzaW9u
U291cDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICNlbmRp
ZgogI2lmIFVTRShDVVJMKQotICAgIHJldHVybiBOZXR3b3JrU2Vzc2lvbkN1cmw6OmNyZWF0ZShX
VEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25DdXJsOjpjcmVh
dGUobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogI2VuZGlmCiB9CiAKQEAg
LTYxLDggKzYxLDkgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU2Vzc2lvbjo6bgog
ICAgIHJldHVybiAqc3RvcmFnZVNlc3Npb247CiB9CiAKLU5ldHdvcmtTZXNzaW9uOjpOZXR3b3Jr
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitOZXR3b3JrU2Vzc2lvbjo6TmV0d29y
a1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCisgICAgLCBtX25ldHdvcmtQ
cm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDExICszOCwxMiBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNrOworY2xhc3MgTmV0d29ya1Byb2Nl
c3M7CiBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIE5l
dHdvcmtTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Nlc3Npb24+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrU2Vzc2lvbj4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7
CiAgICAgdmlydHVhbCB+TmV0d29ya1Nlc3Npb24oKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlQW5kQ2FuY2VsKCk7CkBAIC01MSwxNiArNTIsMTcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRlbmN5KCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAK
ICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25J
RDsgfQorICAgIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcygpIHsgcmV0dXJuIG1fbmV0
d29ya1Byb2Nlc3M7IH0KICAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpIGNvbnN0OwogCiAgICAgdm9pZCByZWdpc3Rlck5ldHdvcmtEYXRh
VGFzayhOZXR3b3JrRGF0YVRhc2smIHRhc2spIHsgbV9kYXRhVGFza1NldC5hZGQoJnRhc2spOyB9
CiAgICAgdm9pZCB1bnJlZ2lzdGVyTmV0d29ya0RhdGFUYXNrKE5ldHdvcmtEYXRhVGFzayYgdGFz
aykgeyBtX2RhdGFUYXNrU2V0LnJlbW92ZSgmdGFzayk7IH0KIAogcHJvdGVjdGVkOgotICAgIE5l
dHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBOZXR3b3JrU2Vzc2lvbihOZXR3b3Jr
UHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwotCisgICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwogICAgIEhh
c2hTZXQ8TmV0d29ya0RhdGFUYXNrKj4gbV9kYXRhVGFza1NldDsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0LmgJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDEz
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBOZXR3b3JrUHJvY2VzczsKIHN0cnVj
dCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKIAogY2xhc3MgUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQgewogcHVibGljOgogICAgIC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMg
Y29kZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyLgotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVdlYnNp
dGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOworICAgIHN0
YXRpYyB2b2lkIGVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwg
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE5ICs0NCwyMCBAQAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVu
dD4gV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitSZWY8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
PiBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCB1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudChj
b25uZWN0aW9uLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2Vzc2lvbklEKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50KG5ldHdvcmtQcm9j
ZXNzLCBjb25uZWN0aW9uLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2Vzc2lvbklEKSk7
CiB9CiAKLVdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorV2ViSURC
Q29ubmVjdGlvblRvQ2xpZW50OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQoTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVj
dGlvbiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9uZXR3
b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKICAgICAsIG1faWRlbnRpZmllcihzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKIHsKICAgICBy
ZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKICAgICBtX2Nvbm5lY3Rpb25Ub0NsaWVudCA9IElE
QlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpjcmVhdGUoKnRoaXMpOwotICAgIE5ldHdv
cmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLnJlZ2lzdGVyQ29u
bmVjdGlvbigqbV9jb25uZWN0aW9uVG9DbGllbnQpOworICAgIG5ldHdvcmtQcm9jZXNzLmlkYlNl
cnZlcihtX3Nlc3Npb25JRCkucmVnaXN0ZXJDb25uZWN0aW9uKCptX2Nvbm5lY3Rpb25Ub0NsaWVu
dCk7CiB9CiAKIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6fldlYklEQkNvbm5lY3Rpb25Ub0Ns
aWVudCgpCkBAIC02NSw3ICs2Niw3IEBAIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6fldlYklE
QkNvbm5lY3QKIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpc2Nvbm5lY3RlZEZy
b21XZWJQcm9jZXNzKCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2Vy
dmVyKG1fc2Vzc2lvbklEKS51bnJlZ2lzdGVyQ29ubmVjdGlvbigqbV9jb25uZWN0aW9uVG9DbGll
bnQpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkudW5yZWdp
c3RlckNvbm5lY3Rpb24oKm1fY29ubmVjdGlvblRvQ2xpZW50KTsKIH0KIAogSVBDOjpDb25uZWN0
aW9uKiBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkK
QEAgLTIxNiw2MiArMjE3LDYyIEBAIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRH
ZXRBbGwKIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRlbGV0ZURhdGFiYXNlKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5n
bGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmRlbGV0ZURhdGFiYXNlKHJlcXVlc3QpOwor
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZGVsZXRlRGF0YWJh
c2UocmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpvcGVuRGF0
YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiB7Ci0gICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkub3BlbkRhdGFiYXNlKHJlcXVl
c3QpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkub3BlbkRh
dGFiYXNlKHJlcXVlc3QpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6YWJv
cnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllcikKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1f
c2Vzc2lvbklEKS5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5hYm9ydFRyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50Ojpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRi
U2VydmVyKG1fc2Vzc2lvbklEKS5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZp
ZXIpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuY29tbWl0
VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQ6OmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNz
OjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmRpZEZpbmlzaEhhbmRsaW5nVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vz
c2lvbklEKS5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogfQogCiB2b2lk
IFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3QsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAg
ICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5jcmVh
dGVPYmplY3RTdG9yZShyZXF1ZXN0LCBpbmZvKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJT
ZXJ2ZXIobV9zZXNzaW9uSUQpLmNyZWF0ZU9iamVjdFN0b3JlKHJlcXVlc3QsIGluZm8pOwogfQog
CiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBOZXR3
b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5kZWxldGVPYmpl
Y3RTdG9yZShyZXF1ZXN0LCBuYW1lKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIo
bV9zZXNzaW9uSUQpLmRlbGV0ZU9iamVjdFN0b3JlKHJlcXVlc3QsIG5hbWUpOwogfQogCiB2b2lk
IFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3QsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBuZXdOYW1lKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJT
ZXJ2ZXIobV9zZXNzaW9uSUQpLnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3QsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgbmV3TmFtZSk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1f
c2Vzc2lvbklEKS5yZW5hbWVPYmplY3RTdG9yZShyZXF1ZXN0LCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIG5ld05hbWUpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y2xlYXJP
YmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJT
ZXJ2ZXIobV9zZXNzaW9uSUQpLmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdCwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdCwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0LCBjb25zdCBJREJJbmRleEluZm8mIGluZm8pCiB7Ci0gICAgTmV0d29y
a1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuY3JlYXRlSW5kZXgo
cmVxdWVzdCwgaW5mbyk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lv
bklEKS5jcmVhdGVJbmRleChyZXF1ZXN0LCBpbmZvKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0
aW9uVG9DbGllbnQ6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0LCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAg
ICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5kZWxl
dGVJbmRleChyZXF1ZXN0LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5hbWUpOworICAgIG1fbmV0
d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZGVsZXRlSW5kZXgocmVxdWVzdCwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuYW1lKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9DbGllbnQ6OnJlbmFtZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0LCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuZXdOYW1lKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5p
ZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLnJlbmFtZUluZGV4KHJlcXVlc3QsIG9iamVjdFN0b3JlSWRl
bnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKKyAgICBtX25ldHdvcmtQcm9jZXNz
LT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLnJlbmFtZUluZGV4KHJlcXVlc3QsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKIH0KIAogdm9pZCBXZWJJREJD
b25uZWN0aW9uVG9DbGllbnQ6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
LCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgdW5zaWduZWQg
b3ZlcndyaXRlTW9kZSkKQEAgLTI4Niw3NyArMjg3LDc3IEBAIHZvaWQgV2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50OjpwdXRPckFkZCgKIAogICAgIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3Jp
dGVNb2RlIG1vZGUgPSBzdGF0aWNfY2FzdDxJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRl
TW9kZT4ob3ZlcndyaXRlTW9kZSk7CiAKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCku
aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5wdXRPckFkZChyZXF1ZXN0LCBrZXksIHZhbHVlLCBtb2Rl
KTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLnB1dE9yQWRk
KHJlcXVlc3QsIGtleSwgdmFsdWUsIG1vZGUpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25U
b0NsaWVudDo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0LCBjb25zdCBJ
REJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmdldFJlY29yZChyZXF1ZXN0LCBnZXRS
ZWNvcmREYXRhKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LmdldFJlY29yZChyZXF1ZXN0LCBnZXRSZWNvcmREYXRhKTsKIH0KIAogdm9pZCBXZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQ6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3QsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSkKIHsKLSAg
ICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5nZXRB
bGxSZWNvcmRzKHJlcXVlc3QsIGdldEFsbFJlY29yZHNEYXRhKTsKKyAgICBtX25ldHdvcmtQcm9j
ZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmdldEFsbFJlY29yZHMocmVxdWVzdCwgZ2V0QWxs
UmVjb3Jkc0RhdGEpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Z2V0Q291
bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QsIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
cmFuZ2UpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nl
c3Npb25JRCkuZ2V0Q291bnQocmVxdWVzdCwgcmFuZ2UpOworICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZ2V0Q291bnQocmVxdWVzdCwgcmFuZ2UpOwogfQogCiB2
b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewotICAgIE5l
dHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmRlbGV0ZVJl
Y29yZChyZXF1ZXN0LCByYW5nZSk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1f
c2Vzc2lvbklEKS5kZWxldGVSZWNvcmQocmVxdWVzdCwgcmFuZ2UpOwogfQogCiB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudDo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdCwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6
c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5vcGVuQ3Vyc29yKHJlcXVlc3QsIGlu
Zm8pOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkub3BlbkN1
cnNvcihyZXF1ZXN0LCBpbmZvKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6
Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QsIGNvbnN0IElEQkl0
ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLml0ZXJhdGVDdXJzb3IocmVxdWVzdCwgZGF0YSk7Cisg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5pdGVyYXRlQ3Vyc29y
KHJlcXVlc3QsIGRhdGEpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZXN0
YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmVzdGFibGlzaFRyYW5zYWN0aW9uKGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm8pOworICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50OjpkYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UodWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRi
U2VydmVyKG1fc2Vzc2lvbklEKS5kYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVy
KG1fc2Vzc2lvbklEKS5kYXRhYmFzZUNvbm5lY3Rpb25QZW5kaW5nQ2xvc2UoZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojpk
YXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllcikKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vz
c2lvbklEKS5kYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
Zmllcik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5kYXRh
YmFzZUNvbm5lY3Rpb25DbG9zZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVk
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNz
OjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmFib3J0T3BlbkFuZFVwZ3JhZGVO
ZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmFib3J0T3Bl
bkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7
Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCku
ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0
cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlciht
X3Nlc3Npb25JRCkuZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub0NsaWVudDo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNl
cnZlcihtX3Nlc3Npb25JRCkub3BlbkRCUmVxdWVzdENhbmNlbGxlZChyZXF1ZXN0RGF0YSk7Cisg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5vcGVuREJSZXF1ZXN0
Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGll
bnQ6OmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcikKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVy
KG1fc2Vzc2lvbklEKS5jb25maXJtRGlkQ2xvc2VGcm9tU2VydmVyKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25J
RCkuY29uZmlybURpZENsb3NlRnJvbVNlcnZlcihkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmdldEFsbERhdGFiYXNlTmFt
ZXModWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgTmV0d29y
a1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZ2V0QWxsRGF0YWJh
c2VOYW1lcyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdG9wT3JpZ2luLCBvcGVuaW5nT3Jp
Z2luLCBjYWxsYmFja0lEKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNz
aW9uSUQpLmdldEFsbERhdGFiYXNlTmFtZXMoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHRv
cE9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJhY2tJRCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgJKHJldmlzaW9u
IDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw5ICs1MCwxMSBAQCBz
dHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
TmV0d29ya1Byb2Nlc3M7CisKIGNsYXNzIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudCBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRl
LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudD4gY3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgdWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0
aWMgUmVmPFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudD4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgdmlydHVhbCB+V2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50KCk7CiAKQEAgLTEyNiwxMyArMTI4LDE0IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiBw
cml2YXRlOgotICAgIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudChOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYsIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBQQUw6OlNl
c3Npb25JRCk7CisgICAgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50KE5ldHdvcmtQcm9jZXNzJiwg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgTWVzc2Fn
ZVR5cGU+IHZvaWQgaGFuZGxlR2V0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEm
KTsKIAogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9u
OworICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKIAogICAgIHVpbnQ2
NF90IG1faWRlbnRpZmllcjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjAzLDcgKzIwMyw3IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRh
c2tDb2MKICAgICBOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0
KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7CiAgICAgYXBw
bHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVx
dWVzdCwgc2hvdWxkQ29udGVudFNuaWZmID09IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGlj
eTo6U25pZmZDb250ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwgc2hvdWxkQ29udGVudEVuY29k
aW5nU25pZmYgPT0gV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZm
KTsKICNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCi0gICAgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLnByb3hpbWl0eU1hbmFnZXIoKS5hcHBseVByb3BlcnRpZXMocmVxdWVzdCwg
KnRoaXMsIG5zUmVxdWVzdCk7CisgICAgbV9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLnByb3hp
bWl0eU1hbmFnZXIoKS5hcHBseVByb3BlcnRpZXMocmVxdWVzdCwgKnRoaXMsIG5zUmVxdWVzdCk7
CiAjZW5kaWYKIAogICAgIGF1dG8mIGNvY29hU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtT
ZXNzaW9uQ29jb2EmPihtX3Nlc3Npb24uZ2V0KCkpOwpAQCAtNDk3LDcgKzQ5Nyw3IEBAIFdlYkNv
cmU6OkNyZWRlbnRpYWwgc2VydmVyVHJ1c3RDcmVkZW50aWEKIAogYm9vbCBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKIHsKLSAgICBpZiAoTmV0
d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
bV9zZXNzaW9uLT5zZXNzaW9uSUQoKSkpCisgICAgaWYgKG1fc2Vzc2lvbi0+bmV0d29ya1Byb2Nl
c3MoKS5zZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKG1fc2Vzc2lvbi0+c2Vzc2lvbklE
KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBtX3Nlc3Npb24tPnNlc3Np
b25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQkocmV2aXNpb24gMjM5NjcxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyArMTc5LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUoV2FsbAogICAgIGlmICghbV9j
bGVhckNhY2hlRGlzcGF0Y2hHcm91cCkKICAgICAgICAgbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91
cCA9IGRpc3BhdGNoX2dyb3VwX2NyZWF0ZSgpOwogCi0gICAgYXV0byogY2FjaGUgPSBOZXR3b3Jr
UHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGUoKTsKKyAgICBhdXRvKiBjYWNoZSA9IHRoaXMtPmNh
Y2hlKCk7CiAgICAgaWYgKCFjYWNoZSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkocmV2aXNpb24gMjM5NjcwKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOwogY2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYSBmaW5hbCA6IHB1YmxpYyBO
ZXR3b3JrU2Vzc2lvbiB7CiAgICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtEYXRhVGFza0NvY29hOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtTZXNzaW9u
PiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYmKTsKICAgICB+TmV0d29ya1Nlc3Npb25Db2NvYSgpOwogCiAgICAgLy8gTXVzdCBiZSBjYWxs
ZWQgYmVmb3JlIGFueSBOZXR3b3JrU2Vzc2lvbiBoYXMgYmVlbiBjcmVhdGVkLgpAQCAtNjMsNyAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgYWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRp
ZmljYXRlRm9ySG9zdChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwog
CiBwcml2YXRlOgotICAgIE5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMmJik7CisgICAgTmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYs
IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCiAgICAgdm9pZCBpbnZhbGlk
YXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCkgb3Zl
cnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJM
U2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3Jl
ZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsK
IAogICAgICAgICAvLyBIYW5kbGUgc2VydmVyIHRydXN0IGV2YWx1YXRpb24gYXQgcGxhdGZvcm0t
bGV2ZWwgaWYgcmVxdWVzdGVkLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBhbmQgdG8gdXNlIEFU
UyBkZWZhdWx0cy4KLSAgICAgICAgaWYgKCFOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2Fu
SGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oKSkKKyAgICAgICAgaWYgKCFfc2Vzc2lv
bi0+bmV0d29ya1Byb2Nlc3MoKS5jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UsIG5pbCk7CiAgICAgfQogCkBAIC0zNjYsNyAr
MzY2LDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IF9zZXNzaW9uLT5kb3dubG9hZElEKHRh
c2tJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byogZG93bmxvYWQgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8qIGRvd25sb2FkID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCku
ZG93bmxvYWRNYW5hZ2VyKCkuZG93bmxvYWQoZG93bmxvYWRJRCkpIHsKICAgICAgICAgICAgICAg
ICAvLyBSZWNlaXZlZCBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgZm9yIGEgZG93bmxvYWQg
YmVpbmcgcmVzdW1lZC4KICAgICAgICAgICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSB7IGNoYWxsZW5nZSB9OwogICAgICAgICAg
ICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9u
SGFuZGxlcik7CkBAIC0zOTQsNyArMzk0LDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNl
c3Npb24gKilzZXNzaQogICAgIGVsc2UgaWYgKGVycm9yKSB7CiAgICAgICAgIGF1dG8gZG93bmxv
YWRJRCA9IF9zZXNzaW9uLT50YWtlRG93bmxvYWRJRCh0YXNrLnRhc2tJZGVudGlmaWVyKTsKICAg
ICAgICAgaWYgKGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0
byogZG93bmxvYWQgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9h
ZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkgeworICAgICAgICAgICAgaWYgKGF1dG8q
IGRvd25sb2FkID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCku
ZG93bmxvYWQoZG93bmxvYWRJRCkpIHsKICAgICAgICAgICAgICAgICBOU0RhdGEgKnJlc3VtZURh
dGEgPSBuaWw7CiAgICAgICAgICAgICAgICAgaWYgKGlkIHVzZXJJbmZvID0gZXJyb3IudXNlcklu
Zm8pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKFt1c2VySW5mbyBpc0tpbmRPZkNsYXNzOltO
U0RpY3Rpb25hcnkgY2xhc3NdXSkKQEAgLTUyNSw3ICs1MjUsNyBAQCAtICh2b2lkKVVSTFNlc3Np
b246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gZG93
bmxvYWRJRCA9IF9zZXNzaW9uLT50YWtlRG93bmxvYWRJRChbZG93bmxvYWRUYXNrIHRhc2tJZGVu
dGlmaWVyXSk7Ci0gICAgaWYgKGF1dG8qIGRvd25sb2FkID0gV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6c2luZ2xldG9uKCkuZG93bmxvYWRNYW5hZ2VyKCkuZG93bmxvYWQoZG93bmxvYWRJRCkpCisg
ICAgaWYgKGF1dG8qIGRvd25sb2FkID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxv
YWRNYW5hZ2VyKCkuZG93bmxvYWQoZG93bmxvYWRJRCkpCiAgICAgICAgIGRvd25sb2FkLT5kaWRG
aW5pc2goKTsKIH0KIApAQCAtNTM3LDcgKzUzNyw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc2Vzc2kKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFbc2VsZiBleGlzdGlu
Z1Rhc2s6ZG93bmxvYWRUYXNrXSwgIlRoZSBOZXR3b3JrRGF0YVRhc2sgc2hvdWxkIGJlIGRlc3Ry
b3llZCBpbW1lZGlhdGVseSBhZnRlciBkaWRCZWNvbWVEb3dubG9hZFRhc2sgcmV0dXJucyIpOwog
CiAgICAgYXV0byBkb3dubG9hZElEID0gX3Nlc3Npb24tPmRvd25sb2FkSUQoW2Rvd25sb2FkVGFz
ayB0YXNrSWRlbnRpZmllcl0pOwotICAgIGlmIChhdXRvKiBkb3dubG9hZCA9IFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25s
b2FkSUQpKQorICAgIGlmIChhdXRvKiBkb3dubG9hZCA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2Vz
cygpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQpKQogICAgICAgICBkb3du
bG9hZC0+ZGlkUmVjZWl2ZURhdGEoYnl0ZXNXcml0dGVuKTsKIH0KIApAQCAtNTU0LDcgKzU1NCw3
IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICBpZiAoYXV0
byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOmRhdGFUYXNrXSkgewogICAg
ICAgICBSZWY8TmV0d29ya0RhdGFUYXNrQ29jb2E+IHByb3RlY3RlZE5ldHdvcmtEYXRhVGFzaygq
bmV0d29ya0RhdGFUYXNrKTsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gbmV0d29ya0RhdGFU
YXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpOwotICAgICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIg
PSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKTsK
KyAgICAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNz
KCkuZG93bmxvYWRNYW5hZ2VyKCk7CiAgICAgICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93
bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2Vz
dGVkRmlsZW5hbWUoKSk7CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+dHJhbnNmZXJTYW5kYm94
RXh0ZW5zaW9uVG9Eb3dubG9hZCgqZG93bmxvYWQpOwogICAgICAgICBBU1NFUlQoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExv
Y2F0aW9uKCkpKTsKQEAgLTU5OSw5ICs1OTksOSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6
OnNldENURGF0YUNvbm5lCiB9CiAjZW5kaWYKIAotUmVmPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpjcmVhdGUoTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQorUmVmPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVh
dGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0
d29ya1Nlc3Npb25Db2NvYShXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmV0d29ya1Nlc3Npb25Db2NvYShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSkpOwogfQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwcm94eURpY3Rpb25hcnkoY29u
c3QgVVJMJiBodHRwUHJveHksIGNvbnN0IFVSTCYgaHR0cHNQcm94eSkKQEAgLTYyNyw4ICs2Mjcs
OCBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwcm94eURpY3Rpb25hcnkoY29uCiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKLU5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5l
dHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQotICAgIDogTmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpCitOZXR3
b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3
b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQorICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMuc2Vzc2lv
bklEKQogICAgICwgbV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXIocGFyYW1ldGVycy5ib3VuZElu
dGVyZmFjZUlkZW50aWZpZXIpCiAgICAgLCBtX3Byb3h5Q29uZmlndXJhdGlvbihwYXJhbWV0ZXJz
LnByb3h5Q29uZmlndXJhdGlvbikKICAgICAsIG1fc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24o
cGFyYW1ldGVycy5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbikKQEAgLTY1NSw3ICs2NTUsNyBA
QCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hCiAgICAgLy8gVGhlIFdl
YktpdCBuZXR3b3JrIGNhY2hlIHdhcyBhbHJlYWR5IHF1ZXJpZWQuCiAgICAgY29uZmlndXJhdGlv
bi5VUkxDYWNoZSA9IG5pbDsKIAotICAgIGlmIChhdXRvIGRhdGEgPSBOZXR3b3JrUHJvY2Vzczo6
c2luZ2xldG9uKCkuc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSkKKyAgICBpZiAoYXV0byBk
YXRhID0gbmV0d29ya1Byb2Nlc3Muc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSkKICAgICAg
ICAgY29uZmlndXJhdGlvbi5fc291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuRGF0YSA9IChfX2Jy
aWRnZSBOU0RhdGEgKilkYXRhLmdldCgpOwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLnNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllci5pc0VtcHR5KCkpIHsKQEAgLTY3NSw3ICs2NzUsNyBA
QCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCi0gICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyPigp
LT5yZWdpc3RlclByb3RvY29sQ2xhc3MoY29uZmlndXJhdGlvbik7CisgICAgbmV0d29ya1Byb2Nl
c3Muc3VwcGxlbWVudDxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCktPnJlZ2lzdGVyUHJv
dG9jb2xDbGFzcyhjb25maWd1cmF0aW9uKTsKICNlbmRpZgogCiAjaWYgSEFWRShUSU1JTkdEQVRB
T1BUSU9OUykKQEAgLTY4Niw3ICs2ODYsNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3Jr
U2Vzc2lvbkNvY29hCiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkKICAgICAvLyBGSVhNRTogUmVw
bGFjZSBAImtDRlN0cmVhbVByb3BlcnR5QXV0b0Vycm9yT25TeXN0ZW1DaGFuZ2UiIHdpdGggYSBj
b25zdGFudCBmcm9tIHRoZSBTREsgb25jZSByZGFyOi8vcHJvYmxlbS80MDY1MDI0NCBpcyBpbiBh
IGJ1aWxkLgotICAgIGlmIChOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcHJlc3Nlc0Nv
bm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCkpCisgICAgaWYgKG5ldHdvcmtQcm9j
ZXNzLnN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSgpKQogICAg
ICAgICBjb25maWd1cmF0aW9uLl9zb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzID0gQHsgQCJrQ0ZTdHJl
YW1Qcm9wZXJ0eUF1dG9FcnJvck9uU3lzdGVtQ2hhbmdlIiA6IEAoTk8pIH07CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3Vy
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtTZXNzaW9uQ3VybC5jcHAJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw4ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotTmV0d29ya1Nlc3Npb25DdXJsOjpOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQotICAgIDogTmV0d29ya1Nl
c3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpCitOZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtT
ZXNzaW9uQ3VybChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKKyAgICA6IE5ldHdvcmtTZXNzaW9uKG5l
dHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLnNlc3Npb25JRCkKIHsKICAgICBpZiAoIXBhcmFtZXRl
cnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlLmlzRW1wdHkoKSkKICAgICAgICAgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llRGF0YWJhc2UobWFrZVVuaXF1ZVJlZjxDb29raWVK
YXJEQj4ocGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGUpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Np
b25DdXJsLmgJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTQgKzMz
LDE0IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3Mg
TmV0d29ya1Nlc3Npb25DdXJsIGZpbmFsIDogcHVibGljIE5ldHdvcmtTZXNzaW9uIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nl
c3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE5ldHdvcmtTZXNzaW9uQ3VybChXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTZXNzaW9uQ3VybChuZXR3b3Jr
UHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogICAgIH0KICAgICB+TmV0d29ya1Nlc3Np
b25DdXJsKCk7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya1Nlc3Npb25DdXJsKE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIE5ldHdvcmtTZXNzaW9uQ3VybChOZXR3b3Jr
UHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRDdXJsLmNw
cAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE0
ICszNSwxNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVT
ZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwogICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIFN0cmluZzo6bnVtYmVy
KHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpOwotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9u
KHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOworICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9u
KHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3b3JrU2Vzc2lvbiwgV1RGTW92
ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKIH0KIAogfQpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRl
RGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
Cit2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vz
c2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMu
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsKICAgICBpZiAoTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpAQCAtNjcsNyArNjcsNyBAQCB2
b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzCiAgICAgZm9yIChjb25zdCBh
dXRvJiBjb29raWUgOiBwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzKQogICAgICAgICBzZXNzaW9u
LT5zZXRDb29raWUoY29va2llKTsKIAotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNl
c3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMubmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzKSkpOworICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNl
c3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShw
YXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKIH0KIAogfQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5jcHAJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4
ICszNiw4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1OZXR3b3JrU2Vzc2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi0gICAgOiBOZXR3b3JrU2Vzc2lvbihwYXJh
bWV0ZXJzLnNlc3Npb25JRCkKK05ldHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3Vw
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nl
c3MsIHBhcmFtZXRlcnMuc2Vzc2lvbklEKQogewogICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigp
LnNldENvb2tpZU9ic2VydmVySGFuZGxlcihbdGhpc10gewogICAgICAgICBOZXR3b3JrUHJvY2Vz
czo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5ub3RpZnlDb29r
aWVzRGlkQ2hhbmdlKG1fc2Vzc2lvbklEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgJKHJldmlzaW9uIDIz
OTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lv
blNvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTYgKzM1LDE2IEBAIHN0cnVjdCBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgTmV0d29ya1Nlc3Npb25Tb3VwIGZp
bmFsIDogcHVibGljIE5ldHdvcmtTZXNzaW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5l
dHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdv
cmtTZXNzaW9uU291cChXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE5ldHdvcmtTZXNzaW9uU291cChuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSkpOwogICAgIH0KICAgICB+TmV0d29ya1Nlc3Npb25Tb3VwKCk7CiAKICAgICBTb3Vw
U2Vzc2lvbiogc291cFNlc3Npb24oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrU2Vz
c2lvblNvdXAoTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgTmV0d29y
a1Nlc3Npb25Tb3VwKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMmJik7CiAKICAgICB2b2lkIGNsZWFyQ3JlZGVudGlhbHMoKSBvdmVycmlkZTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHRTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAkocmV2aXNpb24gMjM5NjcwKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0U291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE0ICszNiwxNCBAQAogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9j
ZXNzLCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0
byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9u
SUQ7CiAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1
cmVTZXNzaW9uKHNlc3Npb25JRCwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgp
KSk7Ci0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vz
c2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMp
KSk7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vz
c2lvbjo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzKSkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1By
b2Nlc3MsIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBh
dXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Np
b25JRDsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNTEsNyArNTEsNyBAQCB2
b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlCiAgICAgICAgIHJldHVybjsK
IAogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIFN0
cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpOwotICAgIFNlc3Npb25UcmFja2Vy
OjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShXVEZNb3ZlKHBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOworICAgIFNlc3Npb25UcmFja2Vy
OjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3b3JrUHJv
Y2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKIH0K
IAogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChX
ZWJGcmFtZSogZnJhbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358501</attachid>
            <date>2019-01-07 09:25:06 -0800</date>
            <delta_ts>2019-01-07 10:00:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193197-20190107092505.patch</filename>
            <type>text/plain</type>
            <size>60798</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzk2NzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxOS0wMS0wNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZHVjZSB1c2Ug
b2YgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUGFzcyBpdCBhcm91bmQgYXMgYSBSZWY8TmV0d29ya1Byb2Nl
c3M+IGFzIGEgc3RlcCB0b3dhcmRzIHJlZHVjaW5nIGdsb2JhbCBzdGF0ZS4KKyAgICAgICAgU291
cCdzIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQgbm8gbG9uZ2VyIG1ha2VzIGEgTmV0d29ya1Nl
c3Npb24gbGlrZSBhbGwgb3RoZXIgcG9ydHMKKyAgICAgICAgYmVjYXVzZSBuZXR3b3JraW5nIGlz
IG5vIGxvbmdlciBkb25lIGluIHRoZSBXZWJQcm9jZXNzLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpc2Nvbm5lY3RlZEZy
b21XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0Ns
aWVudDo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRv
Q2xpZW50OjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50Ojpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
OjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25U
b0NsaWVudDo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQ6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCQ29ubmVjdGlvblRvQ2xpZW50OjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCQ29ubmVjdGlvblRvQ2xpZW50OjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQ6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmdldENvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCQ29ubmVjdGlvblRvQ2xpZW50OjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkYXRhYmFzZUNvbm5lY3Rpb25Q
ZW5kaW5nQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6
OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5l
Y3Rpb25Ub0NsaWVudDo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6b3BlbkRCUmVxdWVz
dENhbmNlbGxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6
Y29uZmlybURpZENsb3NlRnJvbVNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5l
Y3Rpb25Ub0NsaWVudDo6Z2V0QWxsRGF0YWJhc2VOYW1lcyk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRTdHJlYW0pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlZmV0Y2hETlMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxp
c2hJREJDb25uZWN0aW9uVG9TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bmV0d29ya1Byb2Nlc3Mp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZSk6Cisg
ICAgICAgIChXZWJLaXQ6OmZldGNoRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6Y2xl
YXJEaXNrQ2FjaGVFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpnZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6aWRiU2VydmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVy
dFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbjo6bmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtEYXRhVGFza0NvY29hOjppc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQgY29uc3QpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgt
W1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2ZUNoYWxs
ZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRl
bGVnYXRlIFVSTFNlc3Npb246dGFzazpkaWRDb21wbGV0ZVdpdGhFcnJvcjpdKToKKyAgICAgICAg
KC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZG93bmxvYWRUYXNrOmRpZEZp
bmlzaERvd25sb2FkaW5nVG9VUkw6XSk6CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxl
Z2F0ZSBVUkxTZXNzaW9uOmRvd25sb2FkVGFzazpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0
ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vz
c2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3VybDo6TmV0d29ya1Nlc3Npb25DdXJsKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3Rv
cmVTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9u
U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nl
c3Npb25Tb3VwKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9u
U291cC5oOgorCiAyMDE5LTAxLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgTW9kZXJuaXplIENhY2hlTW9kZWwgYW5kIGRpc2sgY2FjaGUg
ZmV0Y2hpbmcgYW5kIGNsZWFyaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAko
cmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDEzICs2Mywx
NCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVm
PE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRp
ZmllcikKK1JlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0
aW9uSWRlbnRpZmllcikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKG5ldHdvcmtQcm9jZXNzLCBjb25uZWN0aW9uSWRlbnRpZmllcikpOwog
fQogCi1OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
KQorTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgIDogbV9jb25uZWN0aW9uKElQQzo6
Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwg
KnRoaXMpKQorICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKICNpZiBFTkFC
TEUoV0VCX1JUQykKICAgICAsIG1fbWRuc1JlZ2lzdGVyKCp0aGlzKQogI2VuZGlmCkBAIC0xMzIs
NyArMTMzLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUgogICAg
IH0KIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBOZXR3b3Jr
UHJvY2Vzczo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+ZGlkUmVjZWl2ZU5l
dHdvcmtQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTgwLDcgKzE4MSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpZFIKICAgICB9CiAgICAgCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogY29udGV4dENvbm5lY3Rp
b24gPSBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY29ubmVjdGlvblRvQ29udGV4dFByb2Nl
c3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgeworICAgICAgICBpZiAoYXV0byogY29u
dGV4dENvbm5lY3Rpb24gPSBtX25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJv
Y2Vzc0Zyb21JUENDb25uZWN0aW9uKGNvbm5lY3Rpb24pKSB7CiAgICAgICAgICAgICBjb250ZXh0
Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIyNyw5ICsyMjgsOSBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChSZWZQdHI8V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uPiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24o
Y29ubmVjdGlvbikpIHsKKyAgICBpZiAoUmVmUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbj4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5l
Y3Rpb25Ub0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24oY29ubmVjdGlvbikpIHsKICAg
ICAgICAgLy8gU2VydmljZSBXb3JrZXIgcHJvY2VzcyBleGl0ZWQuCi0gICAgICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZChz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZChzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogI2Vsc2UKQEAgLTI0OCw3ICsyNDksNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDCiAgICAgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7CiAK
ICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5jb25uZWN0aW9uVG9XZWJQcm9j
ZXNzRGlkQ2xvc2UodGhpcyk7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKHRoaXMpOworICAgIG1fbmV0d29ya1Byb2Nl
c3MtPnJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKHRoaXMpOwogCiAjaWYgVVNF
KExJQldFQlJUQykKICAgICBpZiAobV9ydGNQcm92aWRlcikgewpAQCAtMjc5LDcgKzI4MCw3IEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWEKICAgICBBU1NFUlQoIW1f
bmV0d29ya1NvY2tldFN0cmVhbXMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIFdlYkNvcmU6
OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiB0b2tlbiA9IHsgfTsKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICB0b2tlbiA9IHsgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnNvdXJjZUFw
cGxpY2F0aW9uQXVkaXREYXRhKCkgfTsKKyAgICB0b2tlbiA9IHsgbV9uZXR3b3JrUHJvY2Vzcy0+
c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSB9OwogI2VuZGlmCiAgICAgbV9uZXR3b3JrU29j
a2V0U3RyZWFtcy5zZXQoaWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFdU
Rk1vdmUodXJsKSwgc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmllciwgbV9jb25u
ZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOwogfQpAQCAtMzg0LDcgKzM4NSw3IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldEQKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKLSAg
ICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkucHJlZmV0Y2hETlMoaG9zdG5hbWUpOworICAg
IG1fbmV0d29ya1Byb2Nlc3MtPnByZWZldGNoRE5TKGhvc3RuYW1lKTsKIH0KIAogdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlY29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCkBAIC00MjMsMTcgKzQyNCwxNiBAQCBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
dG9yYWdlU2VzCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93
bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1l
KQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKS5z
dGFydERvd25sb2FkKHRoaXMsIHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCwgc3VnZ2Vz
dGVkTmFtZSk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnRE
b3dubG9hZCh0aGlzLCBzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QsIHN1Z2dlc3RlZE5h
bWUpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1
dG8mIG5ldHdvcmtQcm9jZXNzID0gTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpOwogICAgIC8v
IEluIGNhc2UgYSByZXNwb25zZSBpcyBzZXJ2ZWQgZnJvbSBzZXJ2aWNlIHdvcmtlciwgd2UgZG8g
bm90IGhhdmUgeWV0IHRoZSBhYmlsaXR5IHRvIGNvbnZlcnQgdGhlIGxvYWQuCiAgICAgaWYgKCFt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciB8fCByZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpIHsKLSAgICAgICAgbmV0d29ya1Byb2Nl
c3MuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZCh0aGlzLCBzZXNzaW9uSUQsIGRvd25s
b2FkSUQsIHJlcXVlc3QpOworICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFn
ZXIoKS5zdGFydERvd25sb2FkKHRoaXMsIHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU1Miw3ICs1NTIsNyBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAg
IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSk7Cisg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkpOwogfQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJh
bWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQpCkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZXN0YQogICAgIExPRyhJbmRleGVkREIsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoSURCQ29ubmVjdGlvblRvU2VydmVyIC0gJSIgUFJJdTY0LCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAgQVNTRVJUKCFtX3dlYklEQkNvbm5lY3Rpb25zLmNv
bnRhaW5zKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiAgICAgCi0gICAgbV93ZWJJREJD
b25uZWN0aW9ucy5zZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudDo6Y3JlYXRlKCp0aGlzLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2Vz
c2lvbklEKSk7CisgICAgbV93ZWJJREJDb25uZWN0aW9ucy5zZXQoc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nl
c3MsICp0aGlzLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2Vzc2lvbklEKSk7CiB9CiAK
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZUlEQkNvbm5lY3Rpb25U
b1NlcnZlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTcyNiw3ICs3
MjYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlCiAKIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIm
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIGF1dG8mIHNlcnZlciA9IE5ldHdv
cmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKKyAg
ICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vz
c2lvbklEKTsKICAgICBhdXRvIGNvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbj4oc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7CiAg
ICAgCiAgICAgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5pZGVudGlm
aWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyMzk2NzApCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgZW51bSBjbGFzcyBJbmNsdWRl
U2VjdXJlQ29va2llcyA6IGJvb2w7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBOZXR3
b3JrUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIE5ldHdvcmtT
b2NrZXRTdHJlYW07CiBjbGFzcyBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ7CkBAIC02MiwxMCAr
NjMsMTEgQEAgc3RydWN0IERhdGFLZXk7CiAKIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+
LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcik7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKICAgICB2
aXJ0dWFsIH5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwogCiAgICAgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9CisgICAg
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vz
cy5nZXQoKTsgfQogCiAgICAgdm9pZCBkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jl
c291cmNlTG9hZGVyJik7CiAgICAgdm9pZCBzZXRPbkxpbmVTdGF0ZShib29sKTsKQEAgLTEyMCw3
ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wVHJhY2tpbmdSZXNvdXJjZUxvYWQoUmVz
b3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpD
b21wbGV0aW9uQ29kZSk7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKyAgICBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cik7CiAKICAgICB2b2lkIGRpZEZpbmlzaFByZWNvbm5lY3Rpb24odWludDY0X3QgcHJlY29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApAQCAtMjI3
LDYgKzIyOSw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IGZpbmROZXR3b3JrQWN0aXZpdHlUcmFj
a2VyKFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCk7CiAKICAgICBSZWY8SVBDOjpD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdv
cmtQcm9jZXNzOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPE5ldHdvcmtTb2NrZXRT
dHJlYW0+PiBtX25ldHdvcmtTb2NrZXRTdHJlYW1zOwogICAgIEhhc2hNYXA8UmVzb3VyY2VMb2Fk
SWRlbnRpZmllciwgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4+IG1fbmV0d29ya1Jlc291cmNl
TG9hZGVyczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyMzk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDggKzExNSw4
IEBAIHN0YXRpYyB2b2lkIGNhbGxFeGl0U29vbihJUEM6OkNvbm5lY3Rpb24KIAogTmV0d29ya1By
b2Nlc3MmIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKQogewotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxOZXR3b3JrUHJvY2Vzcz4gbmV0d29ya1Byb2Nlc3M7Ci0gICAgcmV0dXJuIG5ldHdv
cmtQcm9jZXNzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8TmV0d29ya1Byb2Nlc3M+
PiBuZXR3b3JrUHJvY2VzcyhhZG9wdFJlZigqbmV3IE5ldHdvcmtQcm9jZXNzKSk7CisgICAgcmV0
dXJuIG5ldHdvcmtQcm9jZXNzLmdldCgpOwogfQogCiBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1By
b2Nlc3MoKQpAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVOZXR3b3JrUHIKICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rl
c3RpbmdTZXNzaW9uKCk7CiAKICAgICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMuZGVmYXVs
dERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsK
LSAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9u
OjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lv
bihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMp
KSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBhZGRJbmRleGVkRGF0YWJh
c2VTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTM2
NCw3ICszNjQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjCiAj
aWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQ
YWlyIHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlv
bigpOwogCi0gICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZShzb2NrZXRQYWlyLnNlcnZlcik7CisgICAgYXV0byBjb25uZWN0aW9uID0gTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhpcywgc29ja2V0UGFpci5zZXJ2
ZXIpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGNvbm5lY3Rp
b24pKTsKIAogICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0UGFpci5jbGll
bnQpOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdv
cmtDb25uZWMKICAgICB9CiAKICAgICAvLyBDcmVhdGUgYSBsaXN0ZW5pbmcgY29ubmVjdGlvbi4K
LSAgICBhdXRvIGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3Jl
YXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgYXV0
byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZSgqdGhp
cywgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKICAgICBtX3dl
YlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoV1RGTW92ZShjb25uZWN0aW9uKSk7CiAKICAgICBJ
UEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01B
S0VfU0VORCk7CkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRl
TmV0d29ya0Nvbm5lYwogICAgICAgICBDUkFTSCgpOwogICAgIH0KIAotICAgIGF1dG8gY29ubmVj
dGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoc2VydmVySWRlbnRp
Zmllcik7CisgICAgYXV0byBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZSgqdGhpcywgc2VydmVySWRlbnRpZmllcik7CiAgICAgbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMuYXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikpOwogCiAgICAgSVBDOjpBdHRhY2ht
ZW50IGNsaWVudFNvY2tldChjbGllbnRJZGVudGlmaWVyKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlCiAgICAgICAgIGFkZFNlcnZp
Y2VXb3JrZXJTZXNzaW9uKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Np
b25JRCwgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OwogI2VuZGlmCiAKLSAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURh
dGFTdG9yZVNlc3Npb24oV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKCp0aGlzLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpAQCAtNTY3LDkgKzU2Nyw4IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFNlc3Npb25Jc0NvbnRyb2wKICAgICAgICAgbV9zZXNzaW9uc0NvbnRyb2xsZWRC
eUF1dG9tYXRpb24ucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKLXN0YXRpYyB2b2lkIGZldGNoRGlz
a0NhY2hlRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RhdGljIHZv
aWQgZmV0Y2hEaXNrQ2FjaGVFbnRyaWVzKE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBm
ZXRjaE9wdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpF
bnRyeT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIGNhY2hlID0gTmV0d29y
a1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSkgewogICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKQEAgLTY3Miw3ICs2NzEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRj
aFdlYnNpdGVEYXRhKFBBCiAjZW5kaWYKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgewotICAgICAgICBmZXRjaERpc2tDYWNo
ZUVudHJpZXMoc2Vzc2lvbklELCBmZXRjaE9wdGlvbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBX
VEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CisgICAg
ICAgIGZldGNoRGlza0NhY2hlRW50cmllcyhjYWNoZSgpLCBzZXNzaW9uSUQsIGZldGNoT3B0aW9u
cywgW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0oYXV0
byBlbnRyaWVzKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93
ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihlbnRyaWVzKTsKICAgICAgICAgfSk7CiAg
ICAgfQpAQCAtNzE4LDkgKzcxNyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhKFAKICAgICAgICAgY2xlYXJEaXNrQ2FjaGUobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFz
a3NIYW5kbGVyID0gV1RGTW92ZShjbGVhclRhc2tzSGFuZGxlcildIHsgfSk7CiB9CiAKLXN0YXRp
YyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiYgb3JpZ2lucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorc3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKE5ldHdvcmtDYWNoZTo6Q2Fj
aGUqIGNhY2hlLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8q
IGNhY2hlID0gTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlKCk7CiAgICAgaWYgKCFj
YWNoZSkgewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CkBAIC03ODAsNyArNzc4LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGbwogI2VuZGlmCiAKICAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkgJiYgIXNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICBjbGVhckRpc2tDYWNoZUVudHJpZXMob3Jp
Z2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9IFdURk1vdmUoY2xlYXJUYXNrc0hhbmRsZXIp
XSB7IH0pOworICAgICAgICBjbGVhckRpc2tDYWNoZUVudHJpZXMoY2FjaGUoKSwgb3JpZ2luRGF0
YXMsIFtjbGVhclRhc2tzSGFuZGxlciA9IFdURk1vdmUoY2xlYXJUYXNrc0hhbmRsZXIpXSB7IH0p
OwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKQEAgLTg2OSw5ICs4
NjcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXROZXR3b3JrUHJvY2Vzc1N0CiB7CiAgICAg
U3RhdGlzdGljc0RhdGEgZGF0YTsKIAotICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gTmV0d29y
a1Byb2Nlc3M6OnNpbmdsZXRvbigpOwotICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KCJE
b3dubG9hZHNBY3RpdmVDb3VudCIsIG5ldHdvcmtQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLmFj
dGl2ZURvd25sb2FkQ291bnQoKSk7Ci0gICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoIk91
dHN0YW5kaW5nQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzQ291bnQiLCBuZXR3b3JrUHJvY2Vzcy5h
dXRoZW50aWNhdGlvbk1hbmFnZXIoKS5vdXRzdGFuZGluZ0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q291bnQoKSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoIkRvd25sb2Fkc0FjdGl2
ZUNvdW50IiwgZG93bmxvYWRNYW5hZ2VyKCkuYWN0aXZlRG93bmxvYWRDb3VudCgpKTsKKyAgICBk
YXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldCgiT3V0c3RhbmRpbmdBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZXNDb3VudCIsIGF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLm91dHN0YW5kaW5nQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VDb3VudCgpKTsKIAogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpEaWRHZXRTdGF0aXN0aWNzKGRhdGEsIGNh
bGxiYWNrSUQpLCAwKTsKIH0KQEAgLTEwNzksNyArMTA3Niw3IEBAIElEQlNlcnZlcjo6SURCU2Vy
dmVyJiBOZXR3b3JrUHJvY2Vzczo6aWQKICAgICAvLyBJZiB0aGVyZSdzIG5vdCwgdGhlbiB3aGVy
ZSBkaWQgdGhpcyBQQUw6OlNlc3Npb25JRCBjb21lIGZyb20/CiAgICAgQVNTRVJUKCFwYXRoLmlz
RW1wdHkoKSk7CiAgICAgCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IElEQlNlcnZl
cjo6SURCU2VydmVyOjpjcmVhdGUocGF0aCwgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpKTsK
KyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gSURCU2VydmVyOjpJREJTZXJ2ZXI6OmNy
ZWF0ZShwYXRoLCAqdGhpcyk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2V0UGVy
T3JpZ2luUXVvdGEobV9pZGJQZXJPcmlnaW5RdW90YSk7CiAgICAgcmV0dXJuICphZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlOwogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjM5NjcxKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxNSAr
ODgsMTUgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFzcyBDYWNoZTsKIH0KIAotY2xh
c3MgTmV0d29ya1Byb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzLCBwcml2YXRlIERvd25sb2Fk
TWFuYWdlcjo6Q2xpZW50CitjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nl
c3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxOZXR3b3JrUHJvY2Vzcz4KICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICAsIHB1YmxpYyBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZp
bGVIYW5kbGVyCiAjZW5kaWYKIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrUHJv
Y2Vzcyk7Ci0gICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPE5ldHdvcmtQcm9jZXNzPjsKICAgICBm
cmllbmQgTmV2ZXJEZXN0cm95ZWQ8RG93bmxvYWRNYW5hZ2VyPjsKIHB1YmxpYzoKKyAgICB+TmV0
d29ya1Byb2Nlc3MoKTsKICAgICBzdGF0aWMgTmV0d29ya1Byb2Nlc3MmIHNpbmdsZXRvbigpOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgUHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUgPSBQcm9jZXNzVHlw
ZTo6TmV0d29yazsKIApAQCAtMjExLDcgKzIxMSw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBOZXR3b3JrUHJvY2VzcygpOwotICAgIH5OZXR3b3JrUHJvY2VzcygpOwogCiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMzk2NzApCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpO
ZXR3b3JrUmVzb3VyY2VMbwogICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgcGFyYW1ldGVycy5kZWZl
cnNMb2FkaW5nIH0KICAgICAsIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBt
X3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9s
aWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVy
IHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQot
ICAgICwgbV9jYWNoZSB7IHNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkgPyBudWxscHRyIDogTmV0
d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlKCkgfQorICAgICwgbV9jYWNoZSB7IHNlc3Np
b25JRCgpLmlzRXBoZW1lcmFsKCkgPyBudWxscHRyIDogY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vz
cygpLmNhY2hlKCkgfQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgLy8g
RklYTUU6IFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugb2YgdGhlIGV4aXN0ZW5jZSBvZiBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50IGluIFdlYkNvcmUuCkBAIC0yODYsMTMgKzI4NiwxMyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrCiAKICAgICBhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Np
b25JRCk7CiAgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbiAmJiBwYXJhbWV0ZXJzLnNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRX
ZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lv
blBhcmFtZXRlcnMocGFyYW1ldGVycy5zZXNzaW9uSUQpKTsKKyAgICAgICAgbV9jb25uZWN0aW9u
LT5uZXR3b3JrUHJvY2VzcygpLmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnM6OnByaXZhdGVTZXNzaW9uUGFyYW1ldGVycyhwYXJhbWV0ZXJzLnNlc3Npb25JRCkp
OwogICAgICAgICBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lv
bihwYXJhbWV0ZXJzLnNlc3Npb25JRCk7CiAgICAgfQogICAgIGlmICghbmV0d29ya1Nlc3Npb24p
IHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJBdHRlbXB0ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xv
YWQgd2l0aCBhIHNlc3Npb24gKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIs
IHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBh
IE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIHRoYXQgZG9lcyBub3QgZXhpc3QgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgc2Vzc2lvbklEPSUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcGFyYW1ldGVy
cy5zZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwotICAgICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xl
dG9uKCkubG9nRGlhZ25vc3RpY01lc3NhZ2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgV2ViQ29y
ZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRp
YWdub3N0aWNMb2dnaW5nS2V5czo6aW52YWxpZFNlc3Npb25JREtleSgpLCBXZWJDb3JlOjpTaG91
bGRTYW1wbGU6Ok5vKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLmxv
Z0RpYWdub3N0aWNNZXNzYWdlKG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdu
b3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OmludmFsaWRTZXNzaW9uSURLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
OjpObyk7CiAgICAgICAgIGRpZEZhaWxMb2FkaW5nKGludGVybmFsRXJyb3IocmVxdWVzdC51cmwo
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzUzLDEzICszNTMsMTMgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnZlcnRUb0RvdwogewogICAgIC8vIFRoaXMgY2FuIGhh
cHBlbiBpZiB0aGUgcmVzb3VyY2UgY2FtZSBmcm9tIHRoZSBkaXNrIGNhY2hlLgogICAgIGlmICgh
bV9uZXR3b3JrTG9hZCkgewotICAgICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZG93
bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChtX2Nvbm5lY3Rpb24ucHRyKCksIG1fcGFyYW1l
dGVycy5zZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QpOworICAgICAgICBtX2Nvbm5lY3Rp
b24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChtX2Nv
bm5lY3Rpb24ucHRyKCksIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVl
c3QpOwogICAgICAgICBhYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNT
RVJUKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNp
bmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpLmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQo
ZG93bmxvYWRJRCwgc3RkOjpleGNoYW5nZShtX25ldHdvcmtMb2FkLCBudWxscHRyKSwgV1RGTW92
ZShtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKG1fZmlsZVJlZmVyZW5jZXMp
LCByZXF1ZXN0LCByZXNwb25zZSk7CisgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2Vzcygp
LmRvd25sb2FkTWFuYWdlcigpLmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQoZG93bmxvYWRJ
RCwgc3RkOjpleGNoYW5nZShtX25ldHdvcmtMb2FkLCBudWxscHRyKSwgV1RGTW92ZShtX3Jlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKG1fZmlsZVJlZmVyZW5jZXMpLCByZXF1ZXN0
LCByZXNwb25zZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCkBA
IC05MzcsNyArOTM3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmludmFsaWRhdGVT
YQogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCkgY29uc3QKIHsKLSAgICBpZiAoTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25J
c0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oc2Vzc2lvbklEKCkpKQorICAgIGlmIChtX2Nvbm5lY3Rp
b24tPm5ldHdvcmtQcm9jZXNzKCkuc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihzZXNz
aW9uSUQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIHNlc3Npb25JRCgp
LmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSwxNiArNDEsMTYgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLVJlZjxOZXR3b3JrU2Vzc2lvbj4gTmV0d29ya1Nlc3Npb246OmNyZWF0
ZShOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZWY8TmV0
d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgcmV0dXJuIE5ldHdvcmtTZXNzaW9uQ29jb2E6
OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25D
b2NvYTo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICNlbmRp
ZgogI2lmIFVTRShTT1VQKQotICAgIHJldHVybiBOZXR3b3JrU2Vzc2lvblNvdXA6OmNyZWF0ZShX
VEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVh
dGUobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogI2VuZGlmCiAjaWYgVVNF
KENVUkwpCi0gICAgcmV0dXJuIE5ldHdvcmtTZXNzaW9uQ3VybDo6Y3JlYXRlKFdURk1vdmUocGFy
YW1ldGVycykpOworICAgIHJldHVybiBOZXR3b3JrU2Vzc2lvbkN1cmw6OmNyZWF0ZShuZXR3b3Jr
UHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAjZW5kaWYKIH0KIApAQCAtNjEsOCArNjEs
OSBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTZXNzaW9uOjpuCiAgICAgcmV0dXJu
ICpzdG9yYWdlU2Vzc2lvbjsKIH0KIAotTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK05ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
ICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0
d29ya1Byb2Nlc3MpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEg
KzM4LDEyIEBAIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBOZXR3b3JrRGF0YVRhc2s7CitjbGFzcyBOZXR3b3JrUHJvY2VzczsKIHN0cnVj
dCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgTmV0d29ya1Nlc3Np
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrU2Vzc2lvbj4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYmKTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29y
a1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2aXJ0
dWFsIH5OZXR3b3JrU2Vzc2lvbigpOwogCiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVBbmRD
YW5jZWwoKTsKQEAgLTUxLDE2ICs1MiwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTZWNvbmRz
IGxvYWRUaHJvdHRsZUxhdGVuY3koKSBjb25zdCB7IHJldHVybiB7IH07IH0KIAogICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CisgICAg
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzKCkgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vz
czsgfQogICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIHJlZ2lzdGVyTmV0d29ya0RhdGFUYXNrKE5ldHdv
cmtEYXRhVGFzayYgdGFzaykgeyBtX2RhdGFUYXNrU2V0LmFkZCgmdGFzayk7IH0KICAgICB2b2lk
IHVucmVnaXN0ZXJOZXR3b3JrRGF0YVRhc2soTmV0d29ya0RhdGFUYXNrJiB0YXNrKSB7IG1fZGF0
YVRhc2tTZXQucmVtb3ZlKCZ0YXNrKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTmV0d29ya1Nlc3Np
b24oUEFMOjpTZXNzaW9uSUQpOworICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwg
UEFMOjpTZXNzaW9uSUQpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0KKyAg
ICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAgICAgSGFzaFNldDxOZXR3
b3JrRGF0YVRhc2sqPiBtX2RhdGFUYXNrU2V0OwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkocmV2
aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOwogc3RydWN0IFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOwogCiBjbGFzcyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCB7CiBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IFJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1
c2UgU2Vzc2lvblRyYWNrZXIuCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9y
ZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIHZvaWQg
ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmLCBXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyYmKTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50LmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsMTkgKzQ0LDIwIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50PiBXZWJJREJD
b25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGlvbiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKK1JlZjxXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ+IFdlYklEQkNv
bm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50KGNvbm5lY3Rpb24s
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZXNzaW9uSUQpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQobmV0d29ya1Byb2Nlc3MsIGNvbm5l
Y3Rpb24sIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZXNzaW9uSUQpKTsKIH0KIAotV2Vi
SURCQ29ubmVjdGlvblRvQ2xpZW50OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitXZWJJREJDb25uZWN0aW9u
VG9DbGllbnQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudChOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCB1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQogICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX25ldHdvcmtQcm9jZXNz
KG5ldHdvcmtQcm9jZXNzKQogICAgICwgbV9pZGVudGlmaWVyKHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogewogICAgIHJlbGF4QWRvcHRp
b25SZXF1aXJlbWVudCgpOwogICAgIG1fY29ubmVjdGlvblRvQ2xpZW50ID0gSURCU2VydmVyOjpJ
REJDb25uZWN0aW9uVG9DbGllbnQ6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkucmVnaXN0ZXJDb25uZWN0aW9uKCpt
X2Nvbm5lY3Rpb25Ub0NsaWVudCk7CisgICAgbmV0d29ya1Byb2Nlc3MuaWRiU2VydmVyKG1fc2Vz
c2lvbklEKS5yZWdpc3RlckNvbm5lY3Rpb24oKm1fY29ubmVjdGlvblRvQ2xpZW50KTsKIH0KIAog
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojp+V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50KCkKQEAg
LTY1LDcgKzY2LDcgQEAgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojp+V2ViSURCQ29ubmVjdAog
CiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nl
c3MoKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNz
aW9uSUQpLnVucmVnaXN0ZXJDb25uZWN0aW9uKCptX2Nvbm5lY3Rpb25Ub0NsaWVudCk7CisgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS51bnJlZ2lzdGVyQ29ubmVj
dGlvbigqbV9jb25uZWN0aW9uVG9DbGllbnQpOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFdlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKQpAQCAtMjE2LDYy
ICsyMTcsNjIgQEAgdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbAogCiB2
b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3QpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlk
YlNlcnZlcihtX3Nlc3Npb25JRCkuZGVsZXRlRGF0YWJhc2UocmVxdWVzdCk7CisgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5kZWxldGVEYXRhYmFzZShyZXF1ZXN0
KTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6Om9wZW5EYXRhYmFzZShjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xl
dG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5vcGVuRGF0YWJhc2UocmVxdWVzdCk7CisgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5vcGVuRGF0YWJhc2UocmVx
dWVzdCk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjphYm9ydFRyYW5zYWN0
aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQog
ewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LmFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBtX25ldHdvcmtQ
cm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmNvbW1p
dFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9z
ZXNzaW9uSUQpLmNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5jb21taXRUcmFuc2FjdGlv
bih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0Ns
aWVudDo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRv
bigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmRp
ZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvQ2xpZW50OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogewotICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmNyZWF0ZU9iamVjdFN0
b3JlKHJlcXVlc3QsIGluZm8pOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nl
c3Npb25JRCkuY3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdCwgaW5mbyk7CiB9CiAKIHZvaWQgV2Vi
SURCQ29ubmVjdGlvblRvQ2xpZW50OjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIE5ldHdvcmtQcm9jZXNz
OjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmRlbGV0ZU9iamVjdFN0b3JlKHJl
cXVlc3QsIG5hbWUpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25J
RCkuZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdCwgbmFtZSk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvQ2xpZW50OjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdCwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5l
d05hbWUpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nl
c3Npb25JRCkucmVuYW1lT2JqZWN0U3RvcmUocmVxdWVzdCwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBuZXdOYW1lKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LnJlbmFtZU9iamVjdFN0b3JlKHJlcXVlc3QsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFt
ZSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpjbGVhck9iamVjdFN0b3Jl
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nl
c3Npb25JRCkuY2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0LCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
OworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuY2xlYXJPYmpl
Y3RTdG9yZShyZXF1ZXN0LCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudDo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3QsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6
c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5jcmVhdGVJbmRleChyZXF1ZXN0LCBp
bmZvKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmNyZWF0
ZUluZGV4KHJlcXVlc3QsIGluZm8pOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVu
dDo6ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmRlbGV0ZUluZGV4KHJl
cXVlc3QsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmFtZSk7CisgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5kZWxldGVJbmRleChyZXF1ZXN0LCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIG5hbWUpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6
cmVuYW1lSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QsIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG5ld05hbWUpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlciht
X3Nlc3Npb25JRCkucmVuYW1lSW5kZXgocmVxdWVzdCwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBp
bmRleElkZW50aWZpZXIsIG5ld05hbWUpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZl
cihtX3Nlc3Npb25JRCkucmVuYW1lSW5kZXgocmVxdWVzdCwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25U
b0NsaWVudDo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QsIGNvbnN0IElE
QktleURhdGEmIGtleSwgY29uc3QgSURCVmFsdWUmIHZhbHVlLCB1bnNpZ25lZCBvdmVyd3JpdGVN
b2RlKQpAQCAtMjg2LDc3ICsyODcsNzcgQEAgdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6
OnB1dE9yQWRkKAogCiAgICAgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgbW9k
ZSA9IHN0YXRpY19jYXN0PEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlPihvdmVy
d3JpdGVNb2RlKTsKIAotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIo
bV9zZXNzaW9uSUQpLnB1dE9yQWRkKHJlcXVlc3QsIGtleSwgdmFsdWUsIG1vZGUpOworICAgIG1f
bmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkucHV0T3JBZGQocmVxdWVzdCwg
a2V5LCB2YWx1ZSwgbW9kZSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojpn
ZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QsIGNvbnN0IElEQkdldFJlY29y
ZERhdGEmIGdldFJlY29yZERhdGEpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZ2V0UmVjb3JkKHJlcXVlc3QsIGdldFJlY29yZERhdGEp
OworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZ2V0UmVjb3Jk
KHJlcXVlc3QsIGdldFJlY29yZERhdGEpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0Ns
aWVudDo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgY29uc3Qg
SURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQogewotICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmdldEFsbFJlY29yZHMo
cmVxdWVzdCwgZ2V0QWxsUmVjb3Jkc0RhdGEpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNl
cnZlcihtX3Nlc3Npb25JRCkuZ2V0QWxsUmVjb3JkcyhyZXF1ZXN0LCBnZXRBbGxSZWNvcmRzRGF0
YSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpnZXRDb3VudChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsK
LSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5n
ZXRDb3VudChyZXF1ZXN0LCByYW5nZSk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVy
KG1fc2Vzc2lvbklEKS5nZXRDb3VudChyZXF1ZXN0LCByYW5nZSk7CiB9CiAKIHZvaWQgV2ViSURC
Q29ubmVjdGlvblRvQ2xpZW50OjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3QsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0gICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZGVsZXRlUmVjb3JkKHJlcXVl
c3QsIHJhbmdlKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQp
LmRlbGV0ZVJlY29yZChyZXF1ZXN0LCByYW5nZSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50OjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0LCBjb25z
dCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLm9wZW5DdXJzb3IocmVxdWVzdCwgaW5mbyk7CisgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5vcGVuQ3Vyc29yKHJlcXVl
c3QsIGluZm8pOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6aXRlcmF0ZUN1
cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCwgY29uc3QgSURCSXRlcmF0ZUN1cnNv
ckRhdGEmIGRhdGEpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmlkYlNlcnZl
cihtX3Nlc3Npb25JRCkuaXRlcmF0ZUN1cnNvcihyZXF1ZXN0LCBkYXRhKTsKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLml0ZXJhdGVDdXJzb3IocmVxdWVzdCwg
ZGF0YSk7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Ojplc3RhYmxpc2hUcmFu
c2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mIGluZm8pCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVy
KG1fc2Vzc2lvbklEKS5lc3RhYmxpc2hUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBpbmZvKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRhdGFi
YXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZSh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9z
ZXNzaW9uSUQpLmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9u
SUQpLmRhdGFiYXNlQ29ubmVjdGlvblBlbmRpbmdDbG9zZShkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRhdGFiYXNlQ29u
bmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewot
ICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmRh
dGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAg
ICBtX25ldHdvcmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLmRhdGFiYXNlQ29ubmVj
dGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQ6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRv
bigpLmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuYWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIG1f
bmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuYWJvcnRPcGVuQW5kVXBncmFk
ZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBOZXR3
b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5kaWRGaXJlVmVy
c2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9u
SWRlbnRpZmllcik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklE
KS5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50OjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vz
c2lvbklEKS5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVlc3REYXRhKTsKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5pZGJTZXJ2ZXIobV9zZXNzaW9uSUQpLm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQo
cmVxdWVzdERhdGEpOwogfQogCiB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Y29uZmly
bURpZENsb3NlRnJvbVNlcnZlcih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
KQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIobV9zZXNzaW9u
SUQpLmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cik7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+aWRiU2VydmVyKG1fc2Vzc2lvbklEKS5jb25maXJt
RGlkQ2xvc2VGcm9tU2VydmVyKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogfQogCiB2
b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Z2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3Bl
bmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6
c2luZ2xldG9uKCkuaWRiU2VydmVyKG1fc2Vzc2lvbklEKS5nZXRBbGxEYXRhYmFzZU5hbWVzKHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB0b3BPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxi
YWNrSUQpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmlkYlNlcnZlcihtX3Nlc3Npb25JRCkuZ2V0
QWxsRGF0YWJhc2VOYW1lcyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdG9wT3JpZ2luLCBv
cGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0
aW9uVG9DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaAkocmV2aXNpb24gMjM5NjcwKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDExIEBAIHN0cnVjdCBTZWN1
cml0eU9yaWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBOZXR3b3JrUHJv
Y2VzczsKKwogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50IGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBSZWZDb3VudGVkPFdlYklEQkNvbm5lY3Rpb25Ub0Ns
aWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
PiBjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCB1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyBSZWY8V2Vi
SURCQ29ubmVjdGlvblRvQ2xpZW50PiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICB2aXJ0dWFsIH5XZWJJREJDb25uZWN0aW9uVG9DbGll
bnQoKTsKIApAQCAtMTI2LDEzICsxMjgsMTQgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0g
ICAgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsK
KyAgICBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgZmluYWw7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBNZXNzYWdlVHlwZT4gdm9p
ZCBoYW5kbGVHZXRSZXN1bHQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpOwogCiAgICAg
UmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb247CisgICAgUmVm
PE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwogCiAgICAgdWludDY0X3QgbV9pZGVu
dGlmaWVyOwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMs
NyArMjAzLDcgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvYwogICAg
IE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6
SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKICAgICBhcHBseVNuaWZmaW5n
UG9saWNpZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91
bGRDb250ZW50U25pZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNv
bnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9
PSBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogI2lmIEVO
QUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9u
KCkucHJveGltaXR5TWFuYWdlcigpLmFwcGx5UHJvcGVydGllcyhyZXF1ZXN0LCAqdGhpcywgbnNS
ZXF1ZXN0KTsKKyAgICBtX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkucHJveGltaXR5TWFuYWdl
cigpLmFwcGx5UHJvcGVydGllcyhyZXF1ZXN0LCAqdGhpcywgbnNSZXF1ZXN0KTsKICNlbmRpZgog
CiAgICAgYXV0byYgY29jb2FTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2Nv
YSY+KG1fc2Vzc2lvbi5nZXQoKSk7CkBAIC00OTcsNyArNDk3LDcgQEAgV2ViQ29yZTo6Q3JlZGVu
dGlhbCBzZXJ2ZXJUcnVzdENyZWRlbnRpYQogCiBib29sIE5ldHdvcmtEYXRhVGFza0NvY29hOjpp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdAogewotICAgIGlmIChOZXR3b3JrUHJvY2Vz
czo6c2luZ2xldG9uKCkuc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihtX3Nlc3Npb24t
PnNlc3Npb25JRCgpKSkKKyAgICBpZiAobV9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLnNlc3Np
b25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24obV9zZXNzaW9uLT5zZXNzaW9uSUQoKSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCkuaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lv
biAyMzk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpjbGVhckRpc2tDYWNoZShXYWxsCiAgICAgaWYgKCFtX2NsZWFyQ2FjaGVE
aXNwYXRjaEdyb3VwKQogICAgICAgICBtX2NsZWFyQ2FjaGVEaXNwYXRjaEdyb3VwID0gZGlzcGF0
Y2hfZ3JvdXBfY3JlYXRlKCk7CiAKLSAgICBhdXRvKiBjYWNoZSA9IE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5jYWNoZSgpOworICAgIGF1dG8qIGNhY2hlID0gdGhpcy0+Y2FjaGUoKTsKICAg
ICBpZiAoIWNhY2hlKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXI7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hIGZpbmFsIDogcHVibGljIE5ldHdvcmtTZXNz
aW9uIHsKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya0RhdGFUYXNrQ29jb2E7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShO
ZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAg
IH5OZXR3b3JrU2Vzc2lvbkNvY29hKCk7CiAKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUg
YW55IE5ldHdvcmtTZXNzaW9uIGhhcyBiZWVuIGNyZWF0ZWQuCkBAIC02Myw3ICs2Myw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JI
b3N0KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKIHByaXZhdGU6
Ci0gICAgTmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYmKTsKKyAgICBOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5j
ZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ3JlZGVudGlhbHMoKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzI2LDcgKzMyNiw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICop
c2Vzc2kKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9y
VHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwogCiAgICAgICAg
IC8vIEhhbmRsZSBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbiBhdCBwbGF0Zm9ybS1sZXZlbCBpZiBy
ZXF1ZXN0ZWQsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIGFuZCB0byB1c2UgQVRTIGRlZmF1bHRz
LgotICAgICAgICBpZiAoIU5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYW5IYW5kbGVIVFRQ
U1NlcnZlclRydXN0RXZhbHVhdGlvbigpKQorICAgICAgICBpZiAoIV9zZXNzaW9uLT5uZXR3b3Jr
UHJvY2VzcygpLmNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJl
amVjdFByb3RlY3Rpb25TcGFjZSwgbmlsKTsKICAgICB9CiAKQEAgLTM2Niw3ICszNjYsNyBAQCAt
ICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgfSBlbHNlIHsKICAg
ICAgICAgYXV0byBkb3dubG9hZElEID0gX3Nlc3Npb24tPmRvd25sb2FkSUQodGFza0lkZW50aWZp
ZXIpOwogICAgICAgICBpZiAoZG93bmxvYWRJRC5kb3dubG9hZElEKCkpIHsKLSAgICAgICAgICAg
IGlmIChhdXRvKiBkb3dubG9hZCA9IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQpKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byogZG93bmxvYWQgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1h
bmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkgewogICAgICAgICAgICAgICAgIC8vIFJlY2Vp
dmVkIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBmb3IgYSBkb3dubG9hZCBiZWluZyByZXN1
bWVkLgogICAgICAgICAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHsgY2hhbGxlbmdlIH07CiAgICAgICAgICAgICAgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsK
QEAgLTM5NCw3ICszOTQsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNl
c3NpCiAgICAgZWxzZSBpZiAoZXJyb3IpIHsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gX3Nl
c3Npb24tPnRha2VEb3dubG9hZElEKHRhc2sudGFza0lkZW50aWZpZXIpOwogICAgICAgICBpZiAo
ZG93bmxvYWRJRC5kb3dubG9hZElEKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBkb3dubG9h
ZCA9IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigp
LmRvd25sb2FkKGRvd25sb2FkSUQpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogZG93bmxvYWQg
PSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChk
b3dubG9hZElEKSkgewogICAgICAgICAgICAgICAgIE5TRGF0YSAqcmVzdW1lRGF0YSA9IG5pbDsK
ICAgICAgICAgICAgICAgICBpZiAoaWQgdXNlckluZm8gPSBlcnJvci51c2VySW5mbykgewogICAg
ICAgICAgICAgICAgICAgICBpZiAoW3VzZXJJbmZvIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFy
eSBjbGFzc11dKQpAQCAtNTI1LDcgKzUyNSw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxT
ZXNzaW9uICopc2Vzc2kKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBkb3dubG9hZElEID0g
X3Nlc3Npb24tPnRha2VEb3dubG9hZElEKFtkb3dubG9hZFRhc2sgdGFza0lkZW50aWZpZXJdKTsK
LSAgICBpZiAoYXV0byogZG93bmxvYWQgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0
b24oKS5kb3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkKKyAgICBpZiAoYXV0
byogZG93bmxvYWQgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIo
KS5kb3dubG9hZChkb3dubG9hZElEKSkKICAgICAgICAgZG93bmxvYWQtPmRpZEZpbmlzaCgpOwog
fQogCkBAIC01MzcsNyArNTM3LDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24g
KilzZXNzaQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIVtzZWxmIGV4aXN0aW5nVGFzazpkb3du
bG9hZFRhc2tdLCAiVGhlIE5ldHdvcmtEYXRhVGFzayBzaG91bGQgYmUgZGVzdHJveWVkIGltbWVk
aWF0ZWx5IGFmdGVyIGRpZEJlY29tZURvd25sb2FkVGFzayByZXR1cm5zIik7CiAKICAgICBhdXRv
IGRvd25sb2FkSUQgPSBfc2Vzc2lvbi0+ZG93bmxvYWRJRChbZG93bmxvYWRUYXNrIHRhc2tJZGVu
dGlmaWVyXSk7Ci0gICAgaWYgKGF1dG8qIGRvd25sb2FkID0gV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6c2luZ2xldG9uKCkuZG93bmxvYWRNYW5hZ2VyKCkuZG93bmxvYWQoZG93bmxvYWRJRCkpCisg
ICAgaWYgKGF1dG8qIGRvd25sb2FkID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxv
YWRNYW5hZ2VyKCkuZG93bmxvYWQoZG93bmxvYWRJRCkpCiAgICAgICAgIGRvd25sb2FkLT5kaWRS
ZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4pOwogfQogCkBAIC01NTQsNyArNTU0LDcgQEAgLSAodm9p
ZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIGlmIChhdXRvKiBuZXR3b3Jr
RGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIFJlZjxO
ZXR3b3JrRGF0YVRhc2tDb2NvYT4gcHJvdGVjdGVkTmV0d29ya0RhdGFUYXNrKCpuZXR3b3JrRGF0
YVRhc2spOwogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBuZXR3b3JrRGF0YVRhc2stPnBlbmRp
bmdEb3dubG9hZElEKCk7Ci0gICAgICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpOworICAgICAgICBh
dXRvJiBkb3dubG9hZE1hbmFnZXIgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9h
ZE1hbmFnZXIoKTsKICAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ss
IF9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFt
ZSgpKTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNhbmRib3hFeHRlbnNpb25U
b0Rvd25sb2FkKCpkb3dubG9hZCk7CiAgICAgICAgIEFTU0VSVChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkp
OwpAQCAtNTk5LDkgKzU5OSw5IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0Q1REYXRh
Q29ubmUKIH0KICNlbmRpZgogCi1SZWY8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29j
b2E6OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CitSZWY8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU2Vzc2lv
bkNvY29hKFdURk1vdmUocGFyYW1ldGVycykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBO
ZXR3b3JrU2Vzc2lvbkNvY29hKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7
CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnByb3h5RGljdGlvbmFyeShjb25zdCBVUkwmIGh0
dHBQcm94eSwgY29uc3QgVVJMJiBodHRwc1Byb3h5KQpAQCAtNjI3LDggKzYyNyw4IEBAIHN0YXRp
YyBOU0RpY3Rpb25hcnkgKnByb3h5RGljdGlvbmFyeShjb24KICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKIH0KIAotTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Np
b25Db2NvYShOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi0g
ICAgOiBOZXR3b3JrU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCkKK05ldHdvcmtTZXNzaW9u
Q29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNz
LCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCisgICAgOiBO
ZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycy5zZXNzaW9uSUQpCiAgICAg
LCBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihwYXJhbWV0ZXJzLmJvdW5kSW50ZXJmYWNlSWRl
bnRpZmllcikKICAgICAsIG1fcHJveHlDb25maWd1cmF0aW9uKHBhcmFtZXRlcnMucHJveHlDb25m
aWd1cmF0aW9uKQogICAgICwgbV9zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihwYXJhbWV0ZXJz
LnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKQpAQCAtNjU1LDcgKzY1NSw3IEBAIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKICAgICAvLyBUaGUgV2ViS2l0IG5ldHdv
cmsgY2FjaGUgd2FzIGFscmVhZHkgcXVlcmllZC4KICAgICBjb25maWd1cmF0aW9uLlVSTENhY2hl
ID0gbmlsOwogCi0gICAgaWYgKGF1dG8gZGF0YSA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpKQorICAgIGlmIChhdXRvIGRhdGEgPSBuZXR3
b3JrUHJvY2Vzcy5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpKQogICAgICAgICBjb25maWd1
cmF0aW9uLl9zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRhID0gKF9fYnJpZGdlIE5TRGF0
YSAqKWRhdGEuZ2V0KCk7CiAKICAgICBpZiAoIXBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyLmlzRW1wdHkoKSkgewpAQCAtNjc1LDcgKzY3NSw3IEBAIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKICNlbmRpZgogCiAjaWYgRU5BQkxFKExF
R0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc3VwcGxlbWVudDxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCktPnJlZ2lzdGVy
UHJvdG9jb2xDbGFzcyhjb25maWd1cmF0aW9uKTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zdXBwbGVt
ZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKS0+cmVnaXN0ZXJQcm90b2NvbENsYXNz
KGNvbmZpZ3VyYXRpb24pOwogI2VuZGlmCiAKICNpZiBIQVZFKFRJTUlOR0RBVEFPUFRJT05TKQpA
QCAtNjg2LDcgKzY4Niw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29j
b2EKIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQogICAgIC8vIEZJWE1FOiBSZXBsYWNlIEAia0NG
U3RyZWFtUHJvcGVydHlBdXRvRXJyb3JPblN5c3RlbUNoYW5nZSIgd2l0aCBhIGNvbnN0YW50IGZy
b20gdGhlIFNESyBvbmNlIHJkYXI6Ly9wcm9ibGVtLzQwNjUwMjQ0IGlzIGluIGEgYnVpbGQuCi0g
ICAgaWYgKE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwcmVzc2VzQ29ubmVjdGlvblRl
cm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UoKSkKKyAgICBpZiAobmV0d29ya1Byb2Nlc3Muc3VwcHJl
c3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCkpCiAgICAgICAgIGNvbmZp
Z3VyYXRpb24uX3NvY2tldFN0cmVhbVByb3BlcnRpZXMgPSBAeyBAImtDRlN0cmVhbVByb3BlcnR5
QXV0b0Vycm9yT25TeXN0ZW1DaGFuZ2UiIDogQChOTykgfTsKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Np
b25DdXJsLmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDgg
KzM3LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1OZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9uQ3VybChOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi0gICAgOiBOZXR3b3JrU2Vzc2lvbihwYXJh
bWV0ZXJzLnNlc3Npb25JRCkKK05ldHdvcmtTZXNzaW9uQ3VybDo6TmV0d29ya1Nlc3Npb25DdXJs
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nl
c3MsIHBhcmFtZXRlcnMuc2Vzc2lvbklEKQogewogICAgIGlmICghcGFyYW1ldGVycy5jb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZUZpbGUuaXNFbXB0eSgpKQogICAgICAgICBuZXR3b3JrU3RvcmFnZVNl
c3Npb24oKS5zZXRDb29raWVEYXRhYmFzZShtYWtlVW5pcXVlUmVmPENvb2tpZUphckRCPihwYXJh
bWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZSkpOwpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAko
cmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtTZXNzaW9uQ3VybC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNCArMzMsMTQgQEAgc3Ry
dWN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBOZXR3b3JrU2Vz
c2lvbkN1cmwgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCisgICAgc3RhdGljIFJlZjxOZXR3b3JrU2Vzc2lvbj4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTmV0d29ya1Nlc3Npb25DdXJsKFdURk1vdmUocGFyYW1ldGVycykpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1Nlc3Npb25DdXJsKG5ldHdvcmtQcm9jZXNzLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiAgICAgfQogICAgIH5OZXR3b3JrU2Vzc2lvbkN1cmwoKTsK
IAogcHJpdmF0ZToKLSAgICBOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMmJik7CisgICAgTmV0d29ya1Nlc3Npb25DdXJsKE5ldHdvcmtQcm9jZXNzJiwg
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dEN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY3VybC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dEN1cmwuY3BwCShyZXZpc2lv
biAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvUmVtb3RlTmV0
d29ya2luZ0NvbnRleHRDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTQgKzM1LDE0IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5zZXNzaW9uSUQ7CiAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNl
c3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjplbnN1cmVTZXNzaW9uKHNlc3Npb25JRCwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklE
LnNlc3Npb25JRCgpKSk7Ci0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklE
LCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMpKSk7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklE
LCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKG5ldHdvcmtTZXNzaW9uLCBXVEZNb3ZlKHBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5n
Q29udGV4dC5tbQkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQy
LDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVT
ZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwogICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnMKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tp
ZSA6IHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMpCiAgICAgICAgIHNlc3Npb24tPnNldENvb2tp
ZShjb29raWUpOwogCi0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBO
ZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMpKSk7CisgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBO
ZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMu
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNw
cAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtTZXNzaW9uU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLU5ldHdvcmtT
ZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKLSAgICA6IE5ldHdvcmtTZXNzaW9uKHBhcmFtZXRlcnMuc2Vz
c2lvbklEKQorTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1By
b2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCisgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2VzcywgcGFyYW1l
dGVycy5zZXNzaW9uSUQpCiB7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2ll
T2JzZXJ2ZXJIYW5kbGVyKFt0aGlzXSB7CiAgICAgICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0
b24oKS5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPm5vdGlmeUNvb2tpZXNEaWRDaGFu
Z2UobV9zZXNzaW9uSUQpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtTZXNzaW9uU291cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaAkocmV2aXNpb24gMjM5NjcwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSwxNiArMzUsMTYgQEAgc3RydWN0IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBOZXR3b3JrU2Vzc2lvblNvdXAgZmluYWwgOiBwdWJs
aWMgTmV0d29ya1Nlc3Npb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nlc3Np
b24+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CisgICAgc3RhdGljIFJlZjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1Nlc3Npb25T
b3VwKFdURk1vdmUocGFyYW1ldGVycykpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TmV0d29ya1Nlc3Npb25Tb3VwKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7
CiAgICAgfQogICAgIH5OZXR3b3JrU2Vzc2lvblNvdXAoKTsKIAogICAgIFNvdXBTZXNzaW9uKiBz
b3VwU2Vzc2lvbigpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtTZXNzaW9uU291cChO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBOZXR3b3JrU2Vzc2lvblNv
dXAoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsK
IAogICAgIHZvaWQgY2xlYXJDcmVkZW50aWFscygpIG92ZXJyaWRlOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTQgKzM2LDE0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCit2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJz
aXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNlc3Npb25J
RCA9IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsKICAgICBp
ZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24o
c2Vzc2lvbklELCBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsKLSAgICBT
ZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVh
dGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKKyAgICBT
ZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVh
dGUobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMpKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVdlCiAgICAgICAgIHJldHVybjsKIAogICAgIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIFN0cmluZzo6bnVtYmVyKHNlc3Npb25J
RC5zZXNzaW9uSUQoKSkpOwotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25J
RCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzKSkpOwogfQogCiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0KFdlYkZyYW1lKiBmcmFtZSkK
</data>
<flag name="review"
          id="375323"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>