<?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>199591</bug_id>
          
          <creation_ts>2019-07-08 15:15:39 -0700</creation_ts>
          <short_desc>Use WeakHashSet for WebUserContentControllerProxy::m_processes</short_desc>
          <delta_ts>2019-07-08 17:53:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1550987</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-08 15:15:39 -0700</bug_when>
    <thetext>Use WeakHashSet for WebUserContentControllerProxy::m_processses for safety. In theory, a WebProcessProxy could stay in the map if we failed to call WebProcessProxy::shutDown() before destroying it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550989</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-08 15:15:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/52798721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550996</commentid>
    <comment_count>2</comment_count>
      <attachid>373672</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-08 15:27:10 -0700</bug_when>
    <thetext>Created attachment 373672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551016</commentid>
    <comment_count>3</comment_count>
      <attachid>373672</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-07-08 16:05:56 -0700</bug_when>
    <thetext>Comment on attachment 373672
Patch

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

&gt; Source/WebKit/ChangeLog:10
&gt; +        stay in the map if we failed to call WebProcessProxy::shutDown() before destroying it.

Since we are trying to add/remove the entries in the map properly, should we add some debug asserts that we are actually doing this correctly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551052</commentid>
    <comment_count>4</comment_count>
      <attachid>373680</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-08 17:07:11 -0700</bug_when>
    <thetext>Created attachment 373680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551054</commentid>
    <comment_count>5</comment_count>
      <attachid>373681</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-08 17:09:58 -0700</bug_when>
    <thetext>Created attachment 373681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551067</commentid>
    <comment_count>6</comment_count>
      <attachid>373681</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-08 17:53:33 -0700</bug_when>
    <thetext>Comment on attachment 373681
Patch

Clearing flags on attachment: 373681

Committed r247243: &lt;https://trac.webkit.org/changeset/247243&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1551068</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-08 17:53:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373672</attachid>
            <date>2019-07-08 15:27:10 -0700</date>
            <delta_ts>2019-07-08 17:07:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199591-20190708152709.patch</filename>
            <type>text/plain</type>
            <size>19817</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNhNDY2NjI3MTMwM2I2ZmNhY2E1ODUy
MWVkZGQ0ZDA3ZmU0ODgxYmYuLjg3Zjc4YjlhOWJlZTU3YWMyYmEyN2VhMWVkMGZjMGY2MTVjNDNm
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDctMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2Vha0hhc2hTZXQgZm9yIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjptX3Byb2Nlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NTkxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Mjc5
ODcyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgV2Vha0hhc2hTZXQ6OmFkZCgpIHRvIHJldHVybiBhbiBBZGRSZXN1bHQgdHlwZSwgc2lt
aWxhcmx5IHRvIG91ciBvdGhlciBjb250YWluZXJzLgorCisgICAgICAgICogd3RmL1dlYWtIYXNo
U2V0Lmg6CisgICAgICAgIChXVEY6OldlYWtIYXNoU2V0OjphZGQpOgorCiAyMDE5LTA3LTA4ICBD
aHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KIAogICAgICAgICBJbXBsZW1l
bnQgTWFwcGVkRmlsZURhdGEgZm9yIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzE2MzhmYTRkMWE0Yzg0
MzgzZDQ5MmY2NjNiY2UxMGYxNTRiM2IyMy4uYmNmNTExOWZhZmJiMTAwNjk5NmEyNzU1ZmQ0YWY0
NGYxNTRhZGI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxOS0wNy0wOCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXZWFrSGFzaFNldCBmb3Ig
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1fcHJvY2Vzc2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk1OTEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzUyNzk4NzIxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBXZWFrSGFzaFNldCBmb3IgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6Om1fcHJvY2Vzc3NlcyBmb3Igc2FmZXR5LiBJbiB0aGVvcnksIGEgV2ViUHJvY2Vzc1By
b3h5IGNvdWxkCisgICAgICAgIHN0YXkgaW4gdGhlIG1hcCBpZiB3ZSBmYWlsZWQgdG8gY2FsbCBX
ZWJQcm9jZXNzUHJveHk6OnNodXREb3duKCkgYmVmb3JlIGRlc3Ryb3lpbmcgaXQuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92
ZVVzZXJDb250ZW50V29ybGRVc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2Vy
U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVy
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRD
b250ZW50UnVsZUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRk
TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlTmV0d29ya1Byb2Nlc3MpOgorCiAyMDE5LTA3LTA4ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpUGFkT1NdIFZpZXdwb3J0
IHBvcHMgd2hpbGUgbG9hZGluZyBzb2h1LmNvbSwgeGluaHVhbmV0LmNvbSwgYW5kIHZhcmlvdXMg
b3RoZXIgd2Vic2l0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNoU2V0Lmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5oCmluZGV4IDA3MjhjZjM4YWE2ZjE2YTljMDgw
Y2FjMDQ5ZTQ0ZWVmN2E5ZGZhNzkuLjFiYzM2OTBiYjExNDllZjQ3ZGQ3NTJlMGU2NTY3NGE0YWY2
NGFlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNoU2V0LmgKKysrIGIvU291
cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaApAQCAtNDQsNiArNDQsNyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KIGNsYXNzIFdlYWtIYXNoU2V0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hT
ZXQ8UmVmPFdlYWtQdHJJbXBsPj4gV2Vha1B0ckltcGxTZXQ7CisgICAgdHlwZWRlZiB0eXBlbmFt
ZSBXZWFrUHRySW1wbFNldDo6QWRkUmVzdWx0IEFkZFJlc3VsdDsKIAogICAgIGNsYXNzIFdlYWtI
YXNoU2V0Q29uc3RJdGVyYXRvciA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6Zm9yd2FyZF9p
dGVyYXRvcl90YWcsIFQsIHN0ZDo6cHRyZGlmZl90LCBjb25zdCBUKiwgY29uc3QgVCY+IHsKICAg
ICBwcml2YXRlOgpAQCAtOTYsOSArOTcsOSBAQCBwdWJsaWM6CiAgICAgY29uc3RfaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gV2Vha0hhc2hTZXRDb25zdEl0ZXJhdG9yKG1fc2V0LCBtX3Nl
dC5lbmQoKSk7IH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICAgIHZvaWQgYWRkKGNv
bnN0IFUmIHZhbHVlKQorICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgVSYgdmFsdWUpCiAgICAgewot
ICAgICAgICBtX3NldC5hZGQoKm1ha2VXZWFrUHRyPFQ+KGNvbnN0X2Nhc3Q8VSY+KHZhbHVlKSku
bV9pbXBsKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmFkZCgqbWFrZVdlYWtQdHI8VD4oY29uc3Rf
Y2FzdDxVJj4odmFsdWUpKS5tX2ltcGwpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDgzNGRi
N2FlMDc5MmFjYjU0NTkzODAwODA2YzkyYjJmZmE1Y2MzMTEuLjhjN2VhY2RiYzk5NDFlNDhhZDM4
NjdiZTYzYjNlM2MwYjFmMmZkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5jcHAKQEAgLTc0LDE5ICs3NCwxOSBAQCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpCiB7CiAgICAgd2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveGllcygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwotICAgIGZv
ciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKSB7Ci0gICAgICAgIHByb2Nlc3MtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKLSAgICAgICAgcHJvY2Vzcy0+
ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCp0aGlzKTsKKyAgICBmb3Ig
KGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICBwcm9jZXNzLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy5kaWRE
ZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKnRoaXMpOwogICAgIH0KICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fbmV0
d29ya1Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KCp0aGlzKTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX25ldHdv
cmtQcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3MuZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KCp0aGlzKTsKICNlbmRpZgogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIGlmIChtX3By
b2Nlc3Nlcy5hZGQoJndlYlByb2Nlc3NQcm94eSkuaXNOZXdFbnRyeSkKKyAgICBpZiAobV9wcm9j
ZXNzZXMuYWRkKHdlYlByb2Nlc3NQcm94eSkuaXNOZXdFbnRyeSkKICAgICAgICAgd2ViUHJvY2Vz
c1Byb3h5LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLCAqdGhpcyk7CiAK
ICAgICBBU1NFUlQocGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcy5pc0VtcHR5KCkpOwpAQCAt
MTE0LDkgKzExNCw5IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksCiAKIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQ
cm9jZXNzUHJveHkpCiB7Ci0gICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5zKCZ3ZWJQcm9j
ZXNzUHJveHkpKTsKKyAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMod2ViUHJvY2Vzc1By
b3h5KSk7CiAKLSAgICBtX3Byb2Nlc3Nlcy5yZW1vdmUoJndlYlByb2Nlc3NQcm94eSk7CisgICAg
bV9wcm9jZXNzZXMucmVtb3ZlKHdlYlByb2Nlc3NQcm94eSk7CiAgICAgd2ViUHJvY2Vzc1Byb3h5
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKIH0KIApAQCAtMTI3
LDggKzEyNyw4IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJD
b250ZW50V29ybGRVc2UoQVBJOjpVc2VyQ29udGVudFdvcmxkCiAKICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fdXNlckNvbnRlbnRXb3JsZHMuYWRkKCZ3b3JsZCk7CiAgICAgaWYgKGFkZFJlc3VsdC5p
c05ld0VudHJ5KSB7Ci0gICAgICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9w
cm9jZXNzZXMpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsgc3RkOjptYWtlX3BhaXIod29y
bGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgICAgIHByb2Nlc3Mu
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyQ29udGVudFdv
cmxkcyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwgd29ybGQubmFtZSgpKSB9
KSwgaWRlbnRpZmllcigpKTsKICAgICB9CiB9CiAKQEAgLTE1MSw4ICsxNTEsOCBAQCBib29sIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpzaG91bGRTZW5kUmVtb3ZlVXNlckNvbnRlbnRX
b3JsZHNNZXNzYWdlKEFQSQogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCwgdW5z
aWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpCiB7CiAgICAgaWYgKHNob3VsZFNlbmRSZW1vdmVV
c2VyQ29udGVudFdvcmxkc01lc3NhZ2Uod29ybGQsIG51bWJlck9mVXNlc1RvUmVtb3ZlKSkgewot
ICAgICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAg
ICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRp
ZmllcigpKTsKKyAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAg
ICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZp
ZXIoKSk7CiAgICAgfQogfQogCkBAIC0xNjQsOCArMTY0LDggQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoSGFzaENvdW50ZWRT
ZXQ8UmUKICAgICAgICAgICAgIHdvcmxkc1RvUmVtb3ZlLmFwcGVuZCh3b3JsZFVzZVBhaXIua2V5
LT5pZGVudGlmaWVyKCkpOwogICAgIH0KIAotICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1v
dmUpLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkp
OwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0
KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5
IGltbWVkaWF0ZWx5KQpAQCAtMTc2LDE2ICsxNzYsMTYgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQs
IEkKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2NyaXB0KTsK
IAotICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRk
VXNlclNjcmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmll
cigpLCB1c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgaWRlbnRpZmll
cigpKTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJv
Y2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3Jp
cHRzKHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNl
clNjcmlwdC51c2VyU2NyaXB0KCkgfSB9LCBpbW1lZGlhdGVseSksIGlkZW50aWZpZXIoKSk7CiB9
CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQo
QVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQogewogICAgIFJlZjxBUEk6OlVzZXJDb250ZW50
V29ybGQ+IHdvcmxkID0gdXNlclNjcmlwdC51c2VyQ29udGVudFdvcmxkKCk7CiAKLSAgICBmb3Ig
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3Jp
cHQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVudGlm
aWVyKCkpOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBw
cm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNl
clNjcmlwdCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIGlk
ZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLnJlbW92ZUFsbCgm
dXNlclNjcmlwdCk7CiAKQEAgLTE5NCw4ICsxOTQsOCBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlw
dAogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2Ny
aXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewotICAgIGZvciAoV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMoeyB3
b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgZm9yIChhdXRvJiBwcm9j
ZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZp
ZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIHVzZXJTY3JpcHRzUmVtb3Zl
ZCA9IG1fdXNlclNjcmlwdHMtPnJlbW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclNjcmlw
dD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTY3JpcHQpIHsKICAgICAgICAgcmV0dXJuICZ1c2VyU2Ny
aXB0LT51c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkOwpAQCAtMjE1LDggKzIxNSw4IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHdvcmxkQ291bnRQYWlyIDogd29ybGRzKQogICAgICAgICB3
b3JsZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50
aWZpZXIoKSk7CiAKLSAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVy
KCkpOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9j
ZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNl
clNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJT
Y3JpcHRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKQEAgLTIzMSwxNiArMjMxLDE2IEBAIHZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTdHlsZVNoZWV0KEFQSTo6VXNl
clN0eWxlU2hlZXQmIHVzZXJTCiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5h
cHBlbmQoJnVzZXJTdHlsZVNoZWV0KTsKIAotICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVl
dC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJT
dHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3Mg
OiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IHsgdXNlclN0eWxlU2hlZXQuaWRl
bnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC51c2VyU3R5bGVT
aGVldCgpIH0gfSksIGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVz
ZXJTdHlsZVNoZWV0KQogewogICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0g
dXNlclN0eWxlU2hlZXQudXNlckNvbnRlbnRXb3JsZCgpOwogCi0gICAgZm9yIChXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3Js
ZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVy
KCkpOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9j
ZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclN0
eWxlU2hlZXQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigp
KSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLnJl
bW92ZUFsbCgmdXNlclN0eWxlU2hlZXQpOwogCkBAIC0yNDksOCArMjQ5LDggQEAgdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2Vy
U3R5bGVTaGVldCYgdXMKIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7Ci0g
ICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVB
bGxVc2VyU3R5bGVTaGVldHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7
CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Mu
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1
bnNpZ25lZCB1c2VyU3R5bGVTaGVldHNSZW1vdmVkID0gbV91c2VyU3R5bGVTaGVldHMtPnJlbW92
ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclN0eWxlU2hlZXQ+KFsmXShjb25zdCBhdXRvJiB1
c2VyU3R5bGVTaGVldCkgewogICAgICAgICByZXR1cm4gJnVzZXJTdHlsZVNoZWV0LT51c2VyQ29u
dGVudFdvcmxkKCkgPT0gJndvcmxkOwpAQCAtMjcwLDggKzI3MCw4IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCiAgICAgZm9y
IChjb25zdCBhdXRvJiB3b3JsZENvdW50UGFpciA6IHdvcmxkcykKICAgICAgICAgd29ybGRJZGVu
dGlmaWVycy51bmNoZWNrZWRBcHBlbmQod29ybGRDb3VudFBhaXIua2V5LT5pZGVudGlmaWVyKCkp
OwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7
CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Mu
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJT
dHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwogCkBAIC0yOTEsOCArMjkxLDggQEAgYm9v
bCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyKFdlYlNjcmlwdE1lc3NhZ2UKIAogICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmFkZCho
YW5kbGVyLmlkZW50aWZpZXIoKSwgJmhhbmRsZXIpOwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJz
KHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgaGFuZGxlci5u
YW1lKCkgfSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3By
b2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB7IGhhbmRsZXIuaWRlbnRp
ZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCBoYW5kbGVyLm5hbWUoKSB9IH0pLCBpZGVudGlm
aWVyKCkpOwogICAgIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzAxLDggKzMwMSw4IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxl
ckZvck5hbWUoY29uc3QgU3RyaW5nCiB7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JpcHRNZXNz
YWdlSGFuZGxlcnMuYmVnaW4oKSwgZW5kID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoaXQtPnZhbHVlLT5uYW1lKCkgPT0gbmFt
ZSAmJiAmaXQtPnZhbHVlLT51c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkKSB7Ci0gICAgICAg
ICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAg
ICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQt
PnZhbHVlLT5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgZm9yIChh
dXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgICAgICAgICAgcHJvY2Vzcy5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0LT52YWx1ZS0+aWRlbnRpZmllcigpKSwg
aWRlbnRpZmllcigpKTsKIAogICAgICAgICAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMucmVt
b3ZlKGl0KTsKIApAQCAtMzE0LDggKzMxNCw4IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nCiAK
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdl
SGFuZGxlcnMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKLSAgICBmb3IgKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7Cisg
ICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Muc2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwog
CiAgICAgdW5zaWduZWQgbnVtYmVyUmVtb3ZlZCA9IDA7CiAgICAgbV9zY3JpcHRNZXNzYWdlSGFu
ZGxlcnMucmVtb3ZlSWYoWyZdKGF1dG8mIGVudHJ5KSB7CkBAIC0zNTIsMzMgKzM1MiwzMyBAQCB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3QoQVBJ
OjpDb250ZW50UnVsZUxpc3QmIGNvbgogCiAgICAgYXV0byBwYWlyID0gc3RkOjptYWtlX3BhaXIo
Y29udGVudFJ1bGVMaXN0Lm5hbWUoKSwgY29udGVudFJ1bGVMaXN0LmNvbXBpbGVkUnVsZUxpc3Qo
KS5kYXRhKCkpOwogCi0gICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRk
Q29udGVudFJ1bGVMaXN0cyh7IHBhaXIgfSksIGlkZW50aWZpZXIoKSk7CisgICAgZm9yIChhdXRv
JiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50UnVsZUxpc3RzKHsgcGFpciB9KSwg
aWRlbnRpZmllcigpKTsKIAotICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fbmV0d29ya1Byb2Nl
c3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0NvbnRlbnRSdWxl
TGlzdE1hbmFnZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMgeyBpZGVudGlmaWVyKCksIHsgcGFpciB9
IH0sIDApOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fbmV0d29ya1Byb2Nlc3NlcykKKyAg
ICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
cjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSwgeyBwYWlyIH0gfSwgMCk7CiB9
CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUNvbnRlbnRSdWxl
TGlzdChjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgbV9jb250ZW50UnVsZUxpc3RzLnJlbW92
ZShuYW1lKTsKIAotICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZUNvbnRlbnRSdWxlTGlzdChuYW1lKSwgaWRlbnRpZmllcigpKTsKKyAgICBmb3IgKGF1dG8mIHBy
b2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRSdWxlTGlzdChuYW1lKSwgaWRlbnRp
ZmllcigpKTsKIAotICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fbmV0d29ya1Byb2Nlc3NlcykK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1h
bmFnZXI6OlJlbW92ZUNvbnRlbnRSdWxlTGlzdCB7IGlkZW50aWZpZXIoKSwgbmFtZSB9LCAwKTsK
KyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCisgICAgICAgIHBy
b2Nlc3Muc2VuZChNZXNzYWdlczo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OlJlbW92
ZUNvbnRlbnRSdWxlTGlzdCB7IGlkZW50aWZpZXIoKSwgbmFtZSB9LCAwKTsKIH0KIAogdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygp
CiB7CiAgICAgbV9jb250ZW50UnVsZUxpc3RzLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8qIHBy
b2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlkZW50
aWZpZXIoKSk7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAg
IHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVB
bGxDb250ZW50UnVsZUxpc3RzKCksIGlkZW50aWZpZXIoKSk7CiAKLSAgICBmb3IgKGF1dG8qIHBy
b2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxp
c3RzIHsgaWRlbnRpZmllcigpIH0sIDApOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fbmV0
d29ya1Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZp
ZXIoKSB9LCAwKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuaAppbmRleCAwZWQzNmE1OWNjM2E3MWQ5ZjIxOWUxOTQ4NDI5YzhhNzkxZDBjNjI4Li5lNjQ0
NGIyZjQxOGMxNDU1MmExM2Q4OGVlYzc2NzhhZTY3MmQwYWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTI3LDE0ICsyNywxNSBAQAogCiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgQVBJ
IHsKQEAgLTk2LDggKzk3LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQWxsVXNlck1lc3Nh
Z2VIYW5kbGVycyhBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKIAogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCi0gICAgdm9pZCBhZGROZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1By
b3h5JiBwcm94eSkgeyBtX25ldHdvcmtQcm9jZXNzZXMuYWRkKCZwcm94eSk7IH0KLSAgICB2b2lk
IHJlbW92ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5KSB7IG1fbmV0
d29ya1Byb2Nlc3Nlcy5yZW1vdmUoJnByb3h5KTsgfQorICAgIHZvaWQgYWRkTmV0d29ya1Byb2Nl
c3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHkpIHsgbV9uZXR3b3JrUHJvY2Vzc2VzLmFkZChw
cm94eSk7IH0KKyAgICB2b2lkIHJlbW92ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJv
eHkmIHByb3h5KSB7IG1fbmV0d29ya1Byb2Nlc3Nlcy5yZW1vdmUocHJveHkpOyB9CiAKICAgICB2
b2lkIGFkZENvbnRlbnRSdWxlTGlzdChBUEk6OkNvbnRlbnRSdWxlTGlzdCYpOwogICAgIHZvaWQg
cmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFN0cmluZyYpOwpAQCAtMTE5LDE0ICsxMjAsMTQg
QEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01l
c3NhZ2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1v
dmUpOwogCiAgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7
Ci0gICAgSGFzaFNldDxXZWJQcm9jZXNzUHJveHkqPiBtX3Byb2Nlc3NlczsKKyAgICBXZWFrSGFz
aFNldDxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2Vzc2VzOwogICAgIFJlZjxBUEk6OkFycmF5PiBt
X3VzZXJTY3JpcHRzOwogICAgIFJlZjxBUEk6OkFycmF5PiBtX3VzZXJTdHlsZVNoZWV0czsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+PiBtX3Nj
cmlwdE1lc3NhZ2VIYW5kbGVyczsKICAgICBIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpVc2Vy
Q29udGVudFdvcmxkPj4gbV91c2VyQ29udGVudFdvcmxkczsKIAogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCi0gICAgSGFzaFNldDxOZXR3b3JrUHJvY2Vzc1Byb3h5Kj4gbV9uZXR3b3Jr
UHJvY2Vzc2VzOworICAgIFdlYWtIYXNoU2V0PE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29y
a1Byb2Nlc3NlczsKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVM
aXN0Pj4gbV9jb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373680</attachid>
            <date>2019-07-08 17:07:11 -0700</date>
            <delta_ts>2019-07-08 17:09:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199591-20190708170711.patch</filename>
            <type>text/plain</type>
            <size>21401</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNhNDY2NjI3MTMwM2I2ZmNhY2E1ODUy
MWVkZGQ0ZDA3ZmU0ODgxYmYuLjkxMTkyNjc5NmIzZGJhNzJhYjgyNzNhNTFmNDY1NzlmZWY1MjJi
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDctMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2Vha0hhc2hTZXQgZm9yIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjptX3Byb2Nlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NTkxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Mjc5
ODcyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFVw
ZGF0ZSBXZWFrSGFzaFNldDo6YWRkKCkgdG8gcmV0dXJuIGFuIEFkZFJlc3VsdCB0eXBlLCBzaW1p
bGFybHkgdG8gb3VyIG90aGVyIGNvbnRhaW5lcnMuCisKKyAgICAgICAgKiB3dGYvV2Vha0hhc2hT
ZXQuaDoKKyAgICAgICAgKFdURjo6V2Vha0hhc2hTZXQ6OmFkZCk6CisKIDIwMTktMDctMDggIENo
cmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBNYXBwZWRGaWxlRGF0YSBmb3IgV2luZG93cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxY2EwMDA4MTMxMmVkMmNi
MmQwNTM5MjRlZTY2MWUzZjkyMDg0MmVlLi4zZDJjYmI5YzU5MDhiMjJmOGE3YTBiZmI2YzE1MmIx
ZTIyYmYwNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA3LTA4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdlYWtIYXNoU2V0IGZvciBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bV9wcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTU5MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTI3OTg3MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4K
KworICAgICAgICBVc2UgV2Vha0hhc2hTZXQgZm9yIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjptX3Byb2Nlc3NzZXMgZm9yIHNhZmV0eS4gSW4gdGhlb3J5LCBhIFdlYlByb2Nlc3NQcm94
eSBjb3VsZAorICAgICAgICBzdGF5IGluIHRoZSBtYXAgaWYgd2UgZmFpbGVkIHRvIGNhbGwgV2Vi
UHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpIGJlZm9yZSBkZXN0cm95aW5nIGl0LgorCisgICAgICAg
ICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6On5XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3JsZFVzZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVV
c2VyQ29udGVudFdvcmxkVXNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0
eWxlU2hlZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkQ29u
dGVudFJ1bGVMaXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZE5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZU5ldHdvcmtQcm9jZXNzKToKKwogMjAxOS0wNy0wOCAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU3VwcG9ydCBzZWxlY3QgYWxs
IGluIG5vbi1lZGl0YWJsZSBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XZWFr
SGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaAppbmRleCAwNzI4Y2YzOGFh
NmYxNmE5YzA4MGNhYzA0OWU0NGVlZjdhOWRmYTc5Li4xYmMzNjkwYmIxMTQ5ZWY0N2RkNzUyZTBl
NjU2NzRhNGFmNjRhZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNoU2V0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBXZWFrSGFzaFNldCB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBIYXNoU2V0PFJlZjxXZWFrUHRySW1wbD4+IFdlYWtQdHJJbXBsU2V0OworICAgIHR5cGVk
ZWYgdHlwZW5hbWUgV2Vha1B0ckltcGxTZXQ6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAKICAgICBj
bGFzcyBXZWFrSGFzaFNldENvbnN0SXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6
OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBULCBzdGQ6OnB0cmRpZmZfdCwgY29uc3QgVCosIGNvbnN0
IFQmPiB7CiAgICAgcHJpdmF0ZToKQEAgLTk2LDkgKzk3LDkgQEAgcHVibGljOgogICAgIGNvbnN0
X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIFdlYWtIYXNoU2V0Q29uc3RJdGVyYXRvciht
X3NldCwgbV9zZXQuZW5kKCkpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgICB2
b2lkIGFkZChjb25zdCBVJiB2YWx1ZSkKKyAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFUmIHZhbHVl
KQogICAgIHsKLSAgICAgICAgbV9zZXQuYWRkKCptYWtlV2Vha1B0cjxUPihjb25zdF9jYXN0PFUm
Pih2YWx1ZSkpLm1faW1wbCk7CisgICAgICAgIHJldHVybiBtX3NldC5hZGQoKm1ha2VXZWFrUHRy
PFQ+KGNvbnN0X2Nhc3Q8VSY+KHZhbHVlKSkubV9pbXBsKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApp
bmRleCA4MzRkYjdhZTA3OTJhY2I1NDU5MzgwMDgwNmM5MmIyZmZhNWNjMzExLi4xMDdiYjIyNzA4
NmMzY2M0MDEwMGIzZTI3MGQ5NjdhNGJiMWE3ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwCkBAIC03NCwxOSArNzQsMjEgQEAgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5Ojp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQogewog
ICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMoKS5yZW1vdmUobV9pZGVudGlmaWVy
KTsKLSAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICBwcm9j
ZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7Ci0gICAgICAg
IHByb2Nlc3MtPmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgqdGhpcyk7
CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAgICAgICAgcHJvY2Vz
cy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHBy
b2Nlc3MuZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCp0aGlzKTsKICAg
ICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBmb3IgKGF1dG8qIHByb2Nl
c3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPmRpZERlc3Ryb3lXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgqdGhpcyk7CisgICAgZm9yIChhdXRvJiBwcm9jZXNz
IDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLmRpZERlc3Ryb3lXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eSgqdGhpcyk7CiAjZW5kaWYKIH0KIAogdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdlYlBy
b2Nlc3NQcm94eSwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAg
ICBpZiAobV9wcm9jZXNzZXMuYWRkKCZ3ZWJQcm9jZXNzUHJveHkpLmlzTmV3RW50cnkpCisgICAg
QVNTRVJUKCFtX3Byb2Nlc3Nlcy5oYXNOdWxsUmVmZXJlbmNlcygpKTsKKworICAgIGlmIChtX3By
b2Nlc3Nlcy5hZGQod2ViUHJvY2Vzc1Byb3h5KS5pc05ld0VudHJ5KQogICAgICAgICB3ZWJQcm9j
ZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCksICp0aGlzKTsK
IAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHkoKSk7CkBA
IC0xMTQsOSArMTE2LDEwIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFk
ZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksCiAKIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3
ZWJQcm9jZXNzUHJveHkpCiB7Ci0gICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5zKCZ3ZWJQ
cm9jZXNzUHJveHkpKTsKKyAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMod2ViUHJvY2Vz
c1Byb3h5KSk7CisgICAgQVNTRVJUKCFtX3Byb2Nlc3Nlcy5oYXNOdWxsUmVmZXJlbmNlcygpKTsK
IAotICAgIG1fcHJvY2Vzc2VzLnJlbW92ZSgmd2ViUHJvY2Vzc1Byb3h5KTsKKyAgICBtX3Byb2Nl
c3Nlcy5yZW1vdmUod2ViUHJvY2Vzc1Byb3h5KTsKICAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogfQogCkBAIC0xMjcsOCArMTMw
LDggQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRX
b3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQKIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91
c2VyQ29udGVudFdvcmxkcy5hZGQoJndvcmxkKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50
cnkpIHsKLSAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6QWRkVXNlckNvbnRlbnRXb3JsZHMoeyBzdGQ6Om1ha2VfcGFpcih3b3JsZC5pZGVu
dGlmaWVyKCksIHdvcmxkLm5hbWUoKSkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIGZvciAo
YXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICAgICAgcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsg
c3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVu
dGlmaWVyKCkpOwogICAgIH0KIH0KIApAQCAtMTUxLDggKzE1NCw4IEBAIGJvb2wgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01l
c3NhZ2UoQVBJCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2Vy
Q29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkLCB1bnNpZ25lZCBu
dW1iZXJPZlVzZXNUb1JlbW92ZSkKIHsKICAgICBpZiAoc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250
ZW50V29ybGRzTWVzc2FnZSh3b3JsZCwgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpKSB7Ci0gICAgICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZVVzZXJDb250ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkp
OworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgICAg
IHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVV
c2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsK
ICAgICB9CiB9CiAKQEAgLTE2NCw4ICsxNjcsOCBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZQog
ICAgICAgICAgICAgd29ybGRzVG9SZW1vdmUuYXBwZW5kKHdvcmxkVXNlUGFpci5rZXktPmlkZW50
aWZpZXIoKSk7CiAgICAgfQogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIGlk
ZW50aWZpZXIoKSk7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAg
ICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1v
dmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIGlkZW50aWZpZXIoKSk7CiB9CiAK
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpV
c2VyU2NyaXB0JiB1c2VyU2NyaXB0LCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRp
YXRlbHkpCkBAIC0xNzYsMTYgKzE3OSwxNiBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSQogCiAg
ICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTY3JpcHQpOwogCi0gICAg
Zm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2Ny
aXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVz
ZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSwgaW1tZWRpYXRlbHkpLCBpZGVudGlmaWVyKCkpOwor
ICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7
IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0
LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVz
ZXJTY3JpcHQmIHVzZXJTY3JpcHQpCiB7CiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4g
d29ybGQgPSB1c2VyU2NyaXB0LnVzZXJDb250ZW50V29ybGQoKTsKIAotICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdCh3b3Js
ZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7
CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Mu
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0
KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmll
cigpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2VyU2Ny
aXB0KTsKIApAQCAtMTk0LDggKzE5Nyw4IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0CiAKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQ
STo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7Ci0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlk
ZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0p
LCBpZGVudGlmaWVyKCkpOwogCiAgICAgdW5zaWduZWQgdXNlclNjcmlwdHNSZW1vdmVkID0gbV91
c2VyU2NyaXB0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU2NyaXB0PihbJl0o
Y29uc3QgYXV0byYgdXNlclNjcmlwdCkgewogICAgICAgICByZXR1cm4gJnVzZXJTY3JpcHQtPnVz
ZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQ7CkBAIC0yMTUsOCArMjE4LDggQEAgdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoKQogICAgIGZv
ciAoY29uc3QgYXV0byYgd29ybGRDb3VudFBhaXIgOiB3b3JsZHMpCiAgICAgICAgIHdvcmxkSWRl
bnRpZmllcnMudW5jaGVja2VkQXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigp
KTsKIAotICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0g
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
UmVtb3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7Cisg
ICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Muc2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0
cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclNjcmlwdHMt
PmVsZW1lbnRzKCkuY2xlYXIoKTsKIApAQCAtMjMxLDE2ICsyMzQsMTYgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVT
aGVldCYgdXNlclMKIAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmFwcGVuZCgm
dXNlclN0eWxlU2hlZXQpOwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpBZGRVc2VyU3R5bGVTaGVldHMoeyB7IHVzZXJTdHlsZVNoZWV0LmlkZW50
aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQudXNlclN0eWxlU2hl
ZXQoKSB9IH0pLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJv
Y2Vzc2VzKQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVy
KCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkg
fSB9KSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxl
U2hlZXQpCiB7CiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5
bGVTaGVldC51c2VyQ29udGVudFdvcmxkKCk7CiAKLSAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSog
cHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVu
dGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7Cisg
ICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Muc2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU3R5bGVTaGVl
dCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCkpLCBpZGVu
dGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxs
KCZ1c2VyU3R5bGVTaGVldCk7CiAKQEAgLTI0OSw4ICsyNTIsOCBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNo
ZWV0JiB1cwogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKLSAgICBmb3Ig
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJT
dHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0
cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVk
IHVzZXJTdHlsZVNoZWV0c1JlbW92ZWQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlQWxsT2ZU
eXBlTWF0Y2hpbmc8QVBJOjpVc2VyU3R5bGVTaGVldD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTdHls
ZVNoZWV0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50V29y
bGQoKSA9PSAmd29ybGQ7CkBAIC0yNzAsOCArMjczLDggQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKICAgICBmb3IgKGNvbnN0
IGF1dG8mIHdvcmxkQ291bnRQYWlyIDogd29ybGRzKQogICAgICAgICB3b3JsZElkZW50aWZpZXJz
LnVuY2hlY2tlZEFwcGVuZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAKLSAg
ICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFs
bFVzZXJTdHlsZVNoZWV0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0
cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclN0eWxlU2hl
ZXRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKQEAgLTI5MSw4ICsyOTQsOCBAQCBib29sIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoV2Vi
U2NyaXB0TWVzc2FnZQogCiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuYWRkKGhhbmRsZXIu
aWRlbnRpZmllcigpLCAmaGFuZGxlcik7CiAKLSAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJv
Y2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB7IGhh
bmRsZXIuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCBoYW5kbGVyLm5hbWUoKSB9
IH0pLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVyKCks
IHdvcmxkLT5pZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIoKSk7
CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMDEsOCArMzA0LDggQEAgdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFt
ZShjb25zdCBTdHJpbmcKIHsKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5k
bGVycy5iZWdpbigpLCBlbmQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUoKSA9PSBuYW1lICYmICZp
dC0+dmFsdWUtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQpIHsKLSAgICAgICAgICAgIGZv
ciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1v
dmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIod29ybGQuaWRlbnRpZmllcigpLCBpdC0+dmFsdWUt
PmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBy
b2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBpZGVudGlm
aWVyKCkpOwogCiAgICAgICAgICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmUoaXQp
OwogCkBAIC0zMTQsOCArMzE3LDggQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcKIAogdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVy
cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewotICAgIGZvciAoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVycyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICBmb3Ig
KGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1
bnNpZ25lZCBudW1iZXJSZW1vdmVkID0gMDsKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5y
ZW1vdmVJZihbJl0oYXV0byYgZW50cnkpIHsKQEAgLTM1MiwzMyArMzU1LDMzIEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZENvbnRlbnRSdWxlTGlzdChBUEk6OkNvbnRl
bnRSdWxlTGlzdCYgY29uCiAKICAgICBhdXRvIHBhaXIgPSBzdGQ6Om1ha2VfcGFpcihjb250ZW50
UnVsZUxpc3QubmFtZSgpLCBjb250ZW50UnVsZUxpc3QuY29tcGlsZWRSdWxlTGlzdCgpLmRhdGEo
KSk7CiAKLSAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50
UnVsZUxpc3RzKHsgcGFpciB9KSwgaWRlbnRpZmllcigpKTsKKyAgICBmb3IgKGF1dG8mIHByb2Nl
c3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlm
aWVyKCkpOwogCi0gICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQot
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSwgeyBwYWlyIH0gfSwgMCk7
CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAgICAgICBw
cm9jZXNzLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpBZGRD
b250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpLCB7IHBhaXIgfSB9LCAwKTsKIH0KIAogdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBtX2NvbnRlbnRSdWxlTGlzdHMucmVtb3ZlKG5hbWUp
OwogCi0gICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVu
dFJ1bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkp
OwogCi0gICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQotICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6
UmVtb3ZlQ29udGVudFJ1bGVMaXN0IHsgaWRlbnRpZmllcigpLCBuYW1lIH0sIDApOworICAgIGZv
ciAoYXV0byYgcHJvY2VzcyA6IG1fbmV0d29ya1Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlQ29udGVu
dFJ1bGVMaXN0IHsgaWRlbnRpZmllcigpLCBuYW1lIH0sIDApOwogfQogCiB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCkKIHsKICAg
ICBtX2NvbnRlbnRSdWxlTGlzdHMuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKSwgaWRlbnRpZmllcigp
KTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vz
cy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbENvbnRl
bnRSdWxlTGlzdHMoKSwgaWRlbnRpZmllcigpKTsKIAotICAgIGZvciAoYXV0byogcHJvY2VzcyA6
IG1fbmV0d29ya1Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OlJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMgeyBp
ZGVudGlmaWVyKCkgfSwgMCk7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9uZXR3b3JrUHJv
Y2Vzc2VzKQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpIH0s
IDApOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmlu
ZGV4IDBlZDM2YTU5Y2MzYTcxZDlmMjE5ZTE5NDg0MjljOGE3OTFkMGM2MjguLmU2NDQ0YjJmNDE4
YzE0NTUyYTEzZDg4ZWVjNzY3OGFlNjcyZDBhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaApAQCAtMjcsMTQgKzI3LDE1IEBACiAKICNpbmNsdWRlICJBUElPYmplY3Qu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c1Byb3h5LmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAt
OTYsOCArOTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRs
ZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKLSAgICB2b2lkIGFkZE5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHBy
b3h5KSB7IG1fbmV0d29ya1Byb2Nlc3Nlcy5hZGQoJnByb3h5KTsgfQotICAgIHZvaWQgcmVtb3Zl
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHkpIHsgbV9uZXR3b3JrUHJv
Y2Vzc2VzLnJlbW92ZSgmcHJveHkpOyB9CisgICAgdm9pZCBhZGROZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSkgeyBtX25ldHdvcmtQcm9jZXNzZXMuYWRkKHByb3h5KTsg
fQorICAgIHZvaWQgcmVtb3ZlTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJv
eHkpIHsgbV9uZXR3b3JrUHJvY2Vzc2VzLnJlbW92ZShwcm94eSk7IH0KIAogICAgIHZvaWQgYWRk
Q29udGVudFJ1bGVMaXN0KEFQSTo6Q29udGVudFJ1bGVMaXN0Jik7CiAgICAgdm9pZCByZW1vdmVD
b250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJik7CkBAIC0xMTksMTQgKzEyMCwxNCBAQCBwcml2
YXRlOgogICAgIGJvb2wgc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVzc2FnZShB
UEk6OlVzZXJDb250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7CiAK
ICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBI
YXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vzc2VzOworICAgIFdlYWtIYXNoU2V0PFdl
YlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzZXM7CiAgICAgUmVmPEFQSTo6QXJyYXk+IG1fdXNlclNj
cmlwdHM7CiAgICAgUmVmPEFQSTo6QXJyYXk+IG1fdXNlclN0eWxlU2hlZXRzOwogICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4+IG1fc2NyaXB0TWVz
c2FnZUhhbmRsZXJzOwogICAgIEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OlVzZXJDb250ZW50
V29ybGQ+PiBtX3VzZXJDb250ZW50V29ybGRzOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKLSAgICBIYXNoU2V0PE5ldHdvcmtQcm9jZXNzUHJveHkqPiBtX25ldHdvcmtQcm9jZXNz
ZXM7CisgICAgV2Vha0hhc2hTZXQ8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2Vz
c2VzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+PiBt
X2NvbnRlbnRSdWxlTGlzdHM7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA0MDRiNDM4OTc1YjUyMThiOTFhYWE2NWQwNmQ5YjA3
MmE2ZDljYTkwLi5lMmYwMDZmMWZmZTExNTg3Mzg3OTE1ZWZkMzAyMWExZmI4MWMyYmYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE2Nyw2ICsx
NjcsNyBAQCBXZWJQcm9jZXNzUHJveHk6On5XZWJQcm9jZXNzUHJveHkoKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKGlzTWFpblRocmVhZE9yQ2hlY2tEaXNhYmxlZCgpKTsKICAgICBBU1NFUlQobV9w
YWdlVVJMUmV0YWluQ291bnRNYXAuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV93YXNTaHV0RG93
bik7CiAKICAgICBpZiAobV9wcm9jZXNzUG9vbCkKICAgICAgICAgbV9wcm9jZXNzUG9vbC0+Y2xl
YXJXZWJQcm9jZXNzSGFzVXBsb2Fkcyhjb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC0zNDgs
NiArMzQ5LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAgICAgICAgIFVJ
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdHJ5KCkuZGlkQ2xv
c2VNZXNzYWdlUG9ydChwb3J0KTsKIAogICAgIG1fcHJvY2Vzc1Bvb2wtPmRpc2Nvbm5lY3RQcm9j
ZXNzKHRoaXMpOworICAgIAorI2lmbmRlZiBOREVCVUcKKyAgICBtX3dhc1NodXREb3duID0gdHJ1
ZTsKKyNlbmRpZgogfQogCiBXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCmluZGV4IDZlNGE2OGU2YzVkNGIwYTM0ODQwODZhYmU1ODI0MGY0NTQ5MGJjMTQuLjBl
OTIxMWY5MDg0ZDg4NGI2YzEwMTQ5OWVjOGRjNzMzNzJmNzA0OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00ODIsNiArNDgyLDEwIEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2hhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc1ByZXdhcm1lZDsKICAgICBib29sIG1faGFzQXVkaWJsZVdlYlBhZ2UgeyBm
YWxzZSB9OworICAgIAorI2lmbmRlZiBOREVCVUcKKyAgICBib29sIG1fd2FzU2h1dERvd24geyBm
YWxzZSB9OworI2VuZGlmCiAKICNpZiBQTEFURk9STShXQVRDSE9TKQogICAgIFByb2Nlc3NUaHJv
dHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fYmFja2dyb3VuZEFjdGl2aXR5VG9rZW5G
b3JGdWxsc2NyZWVuRm9ybUNvbnRyb2xzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373681</attachid>
            <date>2019-07-08 17:09:58 -0700</date>
            <delta_ts>2019-07-08 17:53:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199591-20190708170957.patch</filename>
            <type>text/plain</type>
            <size>19867</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNhNDY2NjI3MTMwM2I2ZmNhY2E1ODUy
MWVkZGQ0ZDA3ZmU0ODgxYmYuLjkxMTkyNjc5NmIzZGJhNzJhYjgyNzNhNTFmNDY1NzlmZWY1MjJi
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDctMDggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2Vha0hhc2hTZXQgZm9yIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjptX3Byb2Nlc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NTkxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Mjc5
ODcyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFVw
ZGF0ZSBXZWFrSGFzaFNldDo6YWRkKCkgdG8gcmV0dXJuIGFuIEFkZFJlc3VsdCB0eXBlLCBzaW1p
bGFybHkgdG8gb3VyIG90aGVyIGNvbnRhaW5lcnMuCisKKyAgICAgICAgKiB3dGYvV2Vha0hhc2hT
ZXQuaDoKKyAgICAgICAgKFdURjo6V2Vha0hhc2hTZXQ6OmFkZCk6CisKIDIwMTktMDctMDggIENo
cmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBNYXBwZWRGaWxlRGF0YSBmb3IgV2luZG93cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxY2EwMDA4MTMxMmVkMmNi
MmQwNTM5MjRlZTY2MWUzZjkyMDg0MmVlLi4zZDJjYmI5YzU5MDhiMjJmOGE3YTBiZmI2YzE1MmIx
ZTIyYmYwNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA3LTA4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdlYWtIYXNoU2V0IGZvciBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bV9wcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTU5MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTI3OTg3MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4K
KworICAgICAgICBVc2UgV2Vha0hhc2hTZXQgZm9yIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjptX3Byb2Nlc3NzZXMgZm9yIHNhZmV0eS4gSW4gdGhlb3J5LCBhIFdlYlByb2Nlc3NQcm94
eSBjb3VsZAorICAgICAgICBzdGF5IGluIHRoZSBtYXAgaWYgd2UgZmFpbGVkIHRvIGNhbGwgV2Vi
UHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpIGJlZm9yZSBkZXN0cm95aW5nIGl0LgorCisgICAgICAg
ICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6On5XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3JsZFVzZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVV
c2VyQ29udGVudFdvcmxkVXNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0
eWxlU2hlZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkQ29u
dGVudFJ1bGVMaXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZE5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZU5ldHdvcmtQcm9jZXNzKToKKwogMjAxOS0wNy0wOCAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU3VwcG9ydCBzZWxlY3QgYWxs
IGluIG5vbi1lZGl0YWJsZSBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XZWFr
SGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaAppbmRleCAwNzI4Y2YzOGFh
NmYxNmE5YzA4MGNhYzA0OWU0NGVlZjdhOWRmYTc5Li4xYmMzNjkwYmIxMTQ5ZWY0N2RkNzUyZTBl
NjU2NzRhNGFmNjRhZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNoU2V0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBXZWFrSGFzaFNldCB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBIYXNoU2V0PFJlZjxXZWFrUHRySW1wbD4+IFdlYWtQdHJJbXBsU2V0OworICAgIHR5cGVk
ZWYgdHlwZW5hbWUgV2Vha1B0ckltcGxTZXQ6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAKICAgICBj
bGFzcyBXZWFrSGFzaFNldENvbnN0SXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6
OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBULCBzdGQ6OnB0cmRpZmZfdCwgY29uc3QgVCosIGNvbnN0
IFQmPiB7CiAgICAgcHJpdmF0ZToKQEAgLTk2LDkgKzk3LDkgQEAgcHVibGljOgogICAgIGNvbnN0
X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIFdlYWtIYXNoU2V0Q29uc3RJdGVyYXRvciht
X3NldCwgbV9zZXQuZW5kKCkpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgICB2
b2lkIGFkZChjb25zdCBVJiB2YWx1ZSkKKyAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFUmIHZhbHVl
KQogICAgIHsKLSAgICAgICAgbV9zZXQuYWRkKCptYWtlV2Vha1B0cjxUPihjb25zdF9jYXN0PFUm
Pih2YWx1ZSkpLm1faW1wbCk7CisgICAgICAgIHJldHVybiBtX3NldC5hZGQoKm1ha2VXZWFrUHRy
PFQ+KGNvbnN0X2Nhc3Q8VSY+KHZhbHVlKSkubV9pbXBsKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApp
bmRleCA4MzRkYjdhZTA3OTJhY2I1NDU5MzgwMDgwNmM5MmIyZmZhNWNjMzExLi4xMDdiYjIyNzA4
NmMzY2M0MDEwMGIzZTI3MGQ5NjdhNGJiMWE3ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwCkBAIC03NCwxOSArNzQsMjEgQEAgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5Ojp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQogewog
ICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMoKS5yZW1vdmUobV9pZGVudGlmaWVy
KTsKLSAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICBwcm9j
ZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7Ci0gICAgICAg
IHByb2Nlc3MtPmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgqdGhpcyk7
CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKKyAgICAgICAgcHJvY2Vz
cy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHBy
b2Nlc3MuZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCp0aGlzKTsKICAg
ICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBmb3IgKGF1dG8qIHByb2Nl
c3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPmRpZERlc3Ryb3lXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgqdGhpcyk7CisgICAgZm9yIChhdXRvJiBwcm9jZXNz
IDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLmRpZERlc3Ryb3lXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eSgqdGhpcyk7CiAjZW5kaWYKIH0KIAogdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdlYlBy
b2Nlc3NQcm94eSwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAg
ICBpZiAobV9wcm9jZXNzZXMuYWRkKCZ3ZWJQcm9jZXNzUHJveHkpLmlzTmV3RW50cnkpCisgICAg
QVNTRVJUKCFtX3Byb2Nlc3Nlcy5oYXNOdWxsUmVmZXJlbmNlcygpKTsKKworICAgIGlmIChtX3By
b2Nlc3Nlcy5hZGQod2ViUHJvY2Vzc1Byb3h5KS5pc05ld0VudHJ5KQogICAgICAgICB3ZWJQcm9j
ZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCksICp0aGlzKTsK
IAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHkoKSk7CkBA
IC0xMTQsOSArMTE2LDEwIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFk
ZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksCiAKIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3
ZWJQcm9jZXNzUHJveHkpCiB7Ci0gICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5zKCZ3ZWJQ
cm9jZXNzUHJveHkpKTsKKyAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMod2ViUHJvY2Vz
c1Byb3h5KSk7CisgICAgQVNTRVJUKCFtX3Byb2Nlc3Nlcy5oYXNOdWxsUmVmZXJlbmNlcygpKTsK
IAotICAgIG1fcHJvY2Vzc2VzLnJlbW92ZSgmd2ViUHJvY2Vzc1Byb3h5KTsKKyAgICBtX3Byb2Nl
c3Nlcy5yZW1vdmUod2ViUHJvY2Vzc1Byb3h5KTsKICAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogfQogCkBAIC0xMjcsOCArMTMw
LDggQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRX
b3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQKIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91
c2VyQ29udGVudFdvcmxkcy5hZGQoJndvcmxkKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50
cnkpIHsKLSAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6QWRkVXNlckNvbnRlbnRXb3JsZHMoeyBzdGQ6Om1ha2VfcGFpcih3b3JsZC5pZGVu
dGlmaWVyKCksIHdvcmxkLm5hbWUoKSkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIGZvciAo
YXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICAgICAgcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsg
c3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVu
dGlmaWVyKCkpOwogICAgIH0KIH0KIApAQCAtMTUxLDggKzE1NCw4IEBAIGJvb2wgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01l
c3NhZ2UoQVBJCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2Vy
Q29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkLCB1bnNpZ25lZCBu
dW1iZXJPZlVzZXNUb1JlbW92ZSkKIHsKICAgICBpZiAoc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250
ZW50V29ybGRzTWVzc2FnZSh3b3JsZCwgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpKSB7Ci0gICAgICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZVVzZXJDb250ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkp
OworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgICAg
IHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVV
c2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsK
ICAgICB9CiB9CiAKQEAgLTE2NCw4ICsxNjcsOCBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZQog
ICAgICAgICAgICAgd29ybGRzVG9SZW1vdmUuYXBwZW5kKHdvcmxkVXNlUGFpci5rZXktPmlkZW50
aWZpZXIoKSk7CiAgICAgfQogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIGlk
ZW50aWZpZXIoKSk7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAg
ICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1v
dmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIGlkZW50aWZpZXIoKSk7CiB9CiAK
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpV
c2VyU2NyaXB0JiB1c2VyU2NyaXB0LCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRp
YXRlbHkpCkBAIC0xNzYsMTYgKzE3OSwxNiBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSQogCiAg
ICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTY3JpcHQpOwogCi0gICAg
Zm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2Ny
aXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVz
ZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSwgaW1tZWRpYXRlbHkpLCBpZGVudGlmaWVyKCkpOwor
ICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7
IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0
LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVz
ZXJTY3JpcHQmIHVzZXJTY3JpcHQpCiB7CiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4g
d29ybGQgPSB1c2VyU2NyaXB0LnVzZXJDb250ZW50V29ybGQoKTsKIAotICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdCh3b3Js
ZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7
CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Mu
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0
KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmll
cigpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2VyU2Ny
aXB0KTsKIApAQCAtMTk0LDggKzE5Nyw4IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0CiAKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQ
STo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7Ci0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlk
ZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0p
LCBpZGVudGlmaWVyKCkpOwogCiAgICAgdW5zaWduZWQgdXNlclNjcmlwdHNSZW1vdmVkID0gbV91
c2VyU2NyaXB0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU2NyaXB0PihbJl0o
Y29uc3QgYXV0byYgdXNlclNjcmlwdCkgewogICAgICAgICByZXR1cm4gJnVzZXJTY3JpcHQtPnVz
ZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQ7CkBAIC0yMTUsOCArMjE4LDggQEAgdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoKQogICAgIGZv
ciAoY29uc3QgYXV0byYgd29ybGRDb3VudFBhaXIgOiB3b3JsZHMpCiAgICAgICAgIHdvcmxkSWRl
bnRpZmllcnMudW5jaGVja2VkQXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigp
KTsKIAotICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0g
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
UmVtb3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7Cisg
ICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Muc2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0
cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclNjcmlwdHMt
PmVsZW1lbnRzKCkuY2xlYXIoKTsKIApAQCAtMjMxLDE2ICsyMzQsMTYgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVT
aGVldCYgdXNlclMKIAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmFwcGVuZCgm
dXNlclN0eWxlU2hlZXQpOwogCi0gICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpBZGRVc2VyU3R5bGVTaGVldHMoeyB7IHVzZXJTdHlsZVNoZWV0LmlkZW50
aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQudXNlclN0eWxlU2hl
ZXQoKSB9IH0pLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJv
Y2Vzc2VzKQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVy
KCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkg
fSB9KSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxl
U2hlZXQpCiB7CiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5
bGVTaGVldC51c2VyQ29udGVudFdvcmxkKCk7CiAKLSAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSog
cHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVu
dGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7Cisg
ICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Muc2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU3R5bGVTaGVl
dCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCkpLCBpZGVu
dGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxs
KCZ1c2VyU3R5bGVTaGVldCk7CiAKQEAgLTI0OSw4ICsyNTIsOCBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNo
ZWV0JiB1cwogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKLSAgICBmb3Ig
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJT
dHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0
cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVk
IHVzZXJTdHlsZVNoZWV0c1JlbW92ZWQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlQWxsT2ZU
eXBlTWF0Y2hpbmc8QVBJOjpVc2VyU3R5bGVTaGVldD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTdHls
ZVNoZWV0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50V29y
bGQoKSA9PSAmd29ybGQ7CkBAIC0yNzAsOCArMjczLDggQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKICAgICBmb3IgKGNvbnN0
IGF1dG8mIHdvcmxkQ291bnRQYWlyIDogd29ybGRzKQogICAgICAgICB3b3JsZElkZW50aWZpZXJz
LnVuY2hlY2tlZEFwcGVuZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAKLSAg
ICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFs
bFVzZXJTdHlsZVNoZWV0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0
cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclN0eWxlU2hl
ZXRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKQEAgLTI5MSw4ICsyOTQsOCBAQCBib29sIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoV2Vi
U2NyaXB0TWVzc2FnZQogCiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuYWRkKGhhbmRsZXIu
aWRlbnRpZmllcigpLCAmaGFuZGxlcik7CiAKLSAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJv
Y2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB7IGhh
bmRsZXIuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCBoYW5kbGVyLm5hbWUoKSB9
IH0pLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVyKCks
IHdvcmxkLT5pZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIoKSk7
CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMDEsOCArMzA0LDggQEAgdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFt
ZShjb25zdCBTdHJpbmcKIHsKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5k
bGVycy5iZWdpbigpLCBlbmQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUoKSA9PSBuYW1lICYmICZp
dC0+dmFsdWUtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQpIHsKLSAgICAgICAgICAgIGZv
ciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1v
dmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIod29ybGQuaWRlbnRpZmllcigpLCBpdC0+dmFsdWUt
PmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBy
b2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBpZGVudGlm
aWVyKCkpOwogCiAgICAgICAgICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmUoaXQp
OwogCkBAIC0zMTQsOCArMzE3LDggQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcKIAogdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVy
cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewotICAgIGZvciAoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVycyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICBmb3Ig
KGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1
bnNpZ25lZCBudW1iZXJSZW1vdmVkID0gMDsKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5y
ZW1vdmVJZihbJl0oYXV0byYgZW50cnkpIHsKQEAgLTM1MiwzMyArMzU1LDMzIEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZENvbnRlbnRSdWxlTGlzdChBUEk6OkNvbnRl
bnRSdWxlTGlzdCYgY29uCiAKICAgICBhdXRvIHBhaXIgPSBzdGQ6Om1ha2VfcGFpcihjb250ZW50
UnVsZUxpc3QubmFtZSgpLCBjb250ZW50UnVsZUxpc3QuY29tcGlsZWRSdWxlTGlzdCgpLmRhdGEo
KSk7CiAKLSAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50
UnVsZUxpc3RzKHsgcGFpciB9KSwgaWRlbnRpZmllcigpKTsKKyAgICBmb3IgKGF1dG8mIHByb2Nl
c3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlm
aWVyKCkpOwogCi0gICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQot
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFu
YWdlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSwgeyBwYWlyIH0gfSwgMCk7
CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQorICAgICAgICBw
cm9jZXNzLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpBZGRD
b250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpLCB7IHBhaXIgfSB9LCAwKTsKIH0KIAogdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBtX2NvbnRlbnRSdWxlTGlzdHMucmVtb3ZlKG5hbWUp
OwogCi0gICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVu
dFJ1bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkp
OwogCi0gICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQotICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6
UmVtb3ZlQ29udGVudFJ1bGVMaXN0IHsgaWRlbnRpZmllcigpLCBuYW1lIH0sIDApOworICAgIGZv
ciAoYXV0byYgcHJvY2VzcyA6IG1fbmV0d29ya1Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlQ29udGVu
dFJ1bGVMaXN0IHsgaWRlbnRpZmllcigpLCBuYW1lIH0sIDApOwogfQogCiB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCkKIHsKICAg
ICBtX2NvbnRlbnRSdWxlTGlzdHMuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKSwgaWRlbnRpZmllcigp
KTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vz
cy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbENvbnRl
bnRSdWxlTGlzdHMoKSwgaWRlbnRpZmllcigpKTsKIAotICAgIGZvciAoYXV0byogcHJvY2VzcyA6
IG1fbmV0d29ya1Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OlJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMgeyBp
ZGVudGlmaWVyKCkgfSwgMCk7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9uZXR3b3JrUHJv
Y2Vzc2VzKQorICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpIH0s
IDApOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmlu
ZGV4IDBlZDM2YTU5Y2MzYTcxZDlmMjE5ZTE5NDg0MjljOGE3OTFkMGM2MjguLmU2NDQ0YjJmNDE4
YzE0NTUyYTEzZDg4ZWVjNzY3OGFlNjcyZDBhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaApAQCAtMjcsMTQgKzI3LDE1IEBACiAKICNpbmNsdWRlICJBUElPYmplY3Qu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c1Byb3h5LmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAt
OTYsOCArOTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRs
ZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKLSAgICB2b2lkIGFkZE5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHBy
b3h5KSB7IG1fbmV0d29ya1Byb2Nlc3Nlcy5hZGQoJnByb3h5KTsgfQotICAgIHZvaWQgcmVtb3Zl
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHkpIHsgbV9uZXR3b3JrUHJv
Y2Vzc2VzLnJlbW92ZSgmcHJveHkpOyB9CisgICAgdm9pZCBhZGROZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSkgeyBtX25ldHdvcmtQcm9jZXNzZXMuYWRkKHByb3h5KTsg
fQorICAgIHZvaWQgcmVtb3ZlTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJv
eHkpIHsgbV9uZXR3b3JrUHJvY2Vzc2VzLnJlbW92ZShwcm94eSk7IH0KIAogICAgIHZvaWQgYWRk
Q29udGVudFJ1bGVMaXN0KEFQSTo6Q29udGVudFJ1bGVMaXN0Jik7CiAgICAgdm9pZCByZW1vdmVD
b250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJik7CkBAIC0xMTksMTQgKzEyMCwxNCBAQCBwcml2
YXRlOgogICAgIGJvb2wgc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVzc2FnZShB
UEk6OlVzZXJDb250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7CiAK
ICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBI
YXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vzc2VzOworICAgIFdlYWtIYXNoU2V0PFdl
YlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzZXM7CiAgICAgUmVmPEFQSTo6QXJyYXk+IG1fdXNlclNj
cmlwdHM7CiAgICAgUmVmPEFQSTo6QXJyYXk+IG1fdXNlclN0eWxlU2hlZXRzOwogICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4+IG1fc2NyaXB0TWVz
c2FnZUhhbmRsZXJzOwogICAgIEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OlVzZXJDb250ZW50
V29ybGQ+PiBtX3VzZXJDb250ZW50V29ybGRzOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKLSAgICBIYXNoU2V0PE5ldHdvcmtQcm9jZXNzUHJveHkqPiBtX25ldHdvcmtQcm9jZXNz
ZXM7CisgICAgV2Vha0hhc2hTZXQ8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2Vz
c2VzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+PiBt
X2NvbnRlbnRSdWxlTGlzdHM7CiAjZW5kaWYKIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>