<?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>196919</bug_id>
          
          <creation_ts>2019-04-15 11:10:14 -0700</creation_ts>
          <short_desc>[iOS] [WebKit2] Add support for honoring -[UIMenuItem dontDismiss]</short_desc>
          <delta_ts>2019-04-16 20:34:18 -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>WebKit Misc.</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, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1527264</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-04-15 11:10:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/41630459&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527331</commentid>
    <comment_count>1</comment_count>
      <attachid>367442</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-04-15 12:47:16 -0700</bug_when>
    <thetext>Created attachment 367442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527991</commentid>
    <comment_count>2</comment_count>
      <attachid>367604</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-04-16 20:06:47 -0700</bug_when>
    <thetext>Created attachment 367604
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527995</commentid>
    <comment_count>3</comment_count>
      <attachid>367604</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-16 20:34:16 -0700</bug_when>
    <thetext>Comment on attachment 367604
Rebase on trunk

Clearing flags on attachment: 367604

Committed r244370: &lt;https://trac.webkit.org/changeset/244370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527996</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-16 20:34:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367442</attachid>
            <date>2019-04-15 12:47:16 -0700</date>
            <delta_ts>2019-04-16 20:06:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196919-20190415124715.patch</filename>
            <type>text/plain</type>
            <size>43671</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDczMTc0ZmYwZDVjYjllYzkz
NWM1NDgzNGM4NTUxMTM3Mjg4ZjBmZTguLmIwMTY1ZDViZjcxMzJlZmJlYWNlMjZmYzkzNDc5Mjhm
N2Q4ZmQxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTktMDQtMTUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dlYktpdDJd
IEFkZCBzdXBwb3J0IGZvciBob25vcmluZyAtW1VJTWVudUl0ZW0gZG9udERpc21pc3NdCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY5MTkKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQxNjMwNDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgbW9kZXJuIFdlYktpdCBzdXBwb3J0IGZvciAtZG9u
dERpc21pc3MgYnkgaW1wbGVtZW50aW5nIGEgY291cGxlIG9mIG5ldyBwbGF0Zm9ybSBob29rcy4g
Q292ZXJlZCBieSBhIG5ldworICAgICAgICBsYXlvdXQgdGVzdDogZWRpdGluZy9zZWxlY3Rpb24v
aW9zL3NlbGVjdGlvbi1hZnRlci1jaGFuZ2luZy10ZXh0LXdpdGgtY2FsbG91dC1tZW51Lmh0bWwu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisKKyAgICAgICAgRGVj
bGFyZSB0aGUgcHJpdmF0ZSAtZG9udERpc21pc3MgcHJvcGVydHkgb2YgVUlNZW51SXRlbS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgd2lsbEZpbmlzaElnbm9yaW5nQ2FsbG91dEJhckZhZGVBZnRlclBlcmZvcm1pbmdB
Y3Rpb25dKToKKworICAgICAgICBBZGRpdGlvbmFsbHkgdGVhY2ggdGhlIHdlYiB2aWV3IChub3Qg
anVzdCB0aGUgY29udGVudCB2aWV3KSB0byByZXNwb25kIHRvIHRoZSBob29rLiBUaGlzIG1hdHRl
cnMgaW4gdGhlIGNhc2UKKyAgICAgICAgd2hlcmUgdGhlIFdlYktpdCBjbGllbnQgKG1vc3Qgbm90
YWJseSwgTWFpbCkgb3ZlcnJpZGVzIFdLV2ViVmlldyBtZXRob2RzIHRvIGRlZmluZSBjdXN0b20g
YWN0aW9ucyBpbiB0aGUgbWVudQorICAgICAgICBjb250cm9sbGVyLiBUaGlzIHNjZW5hcmlvIGlz
IGV4ZXJjaXNlZCBieSB0aGUgbmV3IGxheW91dCB0ZXN0LgorCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB3
aWxsRmluaXNoSWdub3JpbmdDYWxsb3V0QmFyRmFkZUFmdGVyUGVyZm9ybWluZ0FjdGlvbl0pOgor
CisgICAgICAgIElmIGFuIGFjdGlvbiB3YXMgcGVyZm9ybWVkIHdoZXJlIGNhbGxvdXQgYmFyIGZh
ZGluZyB3YXMgaWdub3JlZCwgdGhlbiBpbiBXZWJLaXQsIGRvbid0IGFsbG93IHNlbGVjdGlvbiBj
aGFuZ2VzCisgICAgICAgIHRvIGZhZGUgdGhlIGNhbGxvdXQgYmFyIHVudGlsIGFmdGVyIHRoZSBu
ZXh0IHJlbW90ZSBsYXllciB0cmVlIGNvbW1pdC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF91cGRhdGVDaGFuZ2VkU2VsZWN0aW9uOl0pOgorCisgICAgICAgIFN0b3Agc3VwcHJlc3Npbmcg
c2VsZWN0aW9uIHVwZGF0ZXMgd2hlbiBzaG93aW5nIEIvSS9VIGNvbnRyb2xzLCBub3cgdGhhdCB3
ZSBjYW4gcHJvcGVybHkgaG9ub3IgdGhlIC1kb250RGlzbWlzcworICAgICAgICBwcm9wZXJ0eS4g
VGhpcyB3YXMgb3JpZ2luYWxseSBpbnRyb2R1Y2VkIGluIDxyZGFyOi8vcHJvYmxlbS8xNTE5OTky
NT4sIHByZXN1bWFibHkgdG8gZW5zdXJlIHRoYXQgQi9JL1UgYnV0dG9ucworICAgICAgICAod2hp
Y2ggaGF2ZSAtZG9udERpc21pc3Mgc2V0IHRvIFlFUykgZG9uJ3QgdHJpZ2dlciBzZWxlY3Rpb24g
Y2hhbmdlIGFuZCBlbmQgdXAgZGlzbWlzc2luZyB0aGVtc2VsdmVzOyBob3dldmVyLAorICAgICAg
ICBpZiB0cmlnZ2VyaW5nIEIvSS9VIGFjdHVhbGx5IGNoYW5nZXMgdGhlIHNlbGVjdGlvbiByZWN0
cywgdGhpcyBhbHNvIG1lYW5zIHRoYXQgdGhlIHNlbGVjdGlvbiByZWN0cyBvbi1zY3JlZW4KKyAg
ICAgICAgd291bGQgYmUgc3RhbGUgYWZ0ZXIgdHJpZ2dlcmluZyB0aGVzZSBhY3Rpb25zLiBUaGlz
IGVmZmVjdCBpcyBtb3N0IG5vdGljZWFibGUgd2hlbiBib2xkaW5nIHRleHQuCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBzaG91bGRBbGxvd0hpZGluZ1NlbGVjdGlvbkNvbW1hbmRzXSk6CisK
IDIwMTktMDQtMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgdHJ5IHRvIGZpeCB0aGUgaW50ZXJuYWwgYnVpbGQgYWZ0ZXIgcjI0
NDIzOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJ
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCA0MWNi
ODEwNjU4OWJkMWUxNDIwMTQ1N2IxMjgwNjRkYTQ1MmJjY2UxLi4wMGQ0MjIyN2NiNmNiNGFjYjEy
ODMzOTE0NGJhZTNlZTAxYjEyOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9pb3MvVUlLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3Mv
VUlLaXRTUEkuaApAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCA8VUlLaXQvVUlLZXlib2FyZElu
dGwuaD4KICNpbXBvcnQgPFVJS2l0L1VJS2V5Ym9hcmRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlL
aXQvVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxVSUtp
dC9VSU1lbnVDb250cm9sbGVyX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJUGVyaXBoZXJh
bEhvc3QuaD4KICNpbXBvcnQgPFVJS2l0L1VJUGVyaXBoZXJhbEhvc3RfUHJpdmF0ZS5oPgogI2lt
cG9ydCA8VUlLaXQvVUlQaWNrZXJDb250ZW50Vmlld19Qcml2YXRlLmg+CkBAIC05ODcsNiArOTg4
LDEwIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBVSURyYWdPcGVyYXRpb24pCiAK
ICNlbmRpZgogCitAaW50ZXJmYWNlIFVJTWVudUl0ZW0gKFVJTWVudUNvbnRyb2xsZXJfU1BJKQor
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgZG9udERpc21pc3M7CitAZW5kCisKIEBpbnRlcmZh
Y2UgVUlDYWxsb3V0QmFyIDogVUlWaWV3CiArIChVSUNhbGxvdXRCYXIgKilhY3RpdmVDYWxsb3V0
QmFyOwogKyAodm9pZClmYWRlU2hhcmVkQ2FsbG91dEJhcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDQ4MWNhYjEzNzgwMTUyMDNhYjFi
MTM2N2UxODJkZGFiNTQ1MjM4OGIuLmI5YjFlODBmYzRjMzcyNDUwYzgxMTdhYTUzY2RlYTYwYjUz
M2UwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQpAQCAtMTU1Myw2ICsxNTUzLDExIEBAIC0gKGlkKXRhcmdldEZvckFjdGlvbjooU0VMKWFj
dGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKICAgICByZXR1cm4gW3N1cGVyIHRhcmdldEZvckFj
dGlvbjphY3Rpb24gd2l0aFNlbmRlcjpzZW5kZXJdOwogfQogCistICh2b2lkKXdpbGxGaW5pc2hJ
Z25vcmluZ0NhbGxvdXRCYXJGYWRlQWZ0ZXJQZXJmb3JtaW5nQWN0aW9uCit7CisgICAgW19jb250
ZW50VmlldyB3aWxsRmluaXNoSWdub3JpbmdDYWxsb3V0QmFyRmFkZUFmdGVyUGVyZm9ybWluZ0Fj
dGlvbl07Cit9CisKIHN0YXRpYyBpbmxpbmUgQ0dGbG9hdCBmbG9vclRvRGV2aWNlUGl4ZWwoQ0dG
bG9hdCBpbnB1dCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgcmV0dXJuIENHRmxv
b3IoaW5wdXQgKiBkZXZpY2VTY2FsZUZhY3RvcikgLyBkZXZpY2VTY2FsZUZhY3RvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaAppbmRleCBlYjViZDQzMjhkY2NlNzYzOTAyMjNmZGRlOGVmNmU5ZjJlM2E1Y2RiLi4wMjRh
ZDJiODI0ODcxMWZkNTE5ZTNjNGE2NTYwMThlMDIyZjhkYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0z
MTksNiArMzE5LDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBCT09MIF9m
b2N1c1JlcXVpcmVzU3Ryb25nUGFzc3dvcmRBc3Npc3RhbmNlOwogCiAgICAgQk9PTCBfaGFzU2V0
VXBJbnRlcmFjdGlvbnM7CisgICAgTlNVSW50ZWdlciBfaWdub3JlU2VsZWN0aW9uQ29tbWFuZEZh
ZGVDb3VudDsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkRPTVBhc3RlQWNj
ZXNzUmVzcG9uc2UpPiBfZG9tUGFzdGVSZXF1ZXN0SGFuZGxlcjsKICAgICBCbG9ja1B0cjx2b2lk
KFVJV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgKik+IF9wZW5kaW5nQXV0b2NvcnJlY3Rpb25Db250
ZXh0SGFuZGxlcjsKIApAQCAtNDQ5LDYgKzQ1MCw4IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05U
RU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcp
CiAtIChXS0Zvcm1JbnB1dFNlc3Npb24gKilfZm9ybUlucHV0U2Vzc2lvbjsKIC0gKHZvaWQpX2Rp
ZENoYW5nZVdlYlZpZXdFZGl0YWJpbGl0eTsKIAorLSAodm9pZCl3aWxsRmluaXNoSWdub3JpbmdD
YWxsb3V0QmFyRmFkZUFmdGVyUGVyZm9ybWluZ0FjdGlvbjsKKwogLy8gVUlXZWJGb3JtQWNjZXNz
b3J5RGVsZWdhdGUgcHJvdG9jb2wKIC0gKHZvaWQpYWNjZXNzb3J5RG9uZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KaW5kZXggZjBhYTViN2MxZmMyNjMxNzAzMmI2MjE1Y2U1NjZkMWMyZDI3NmNmZS4uZmI5ZGU4
N2Q4ZWNiYjViNzZlNzJjYThkOGQ0NTQ2N2ZjMzY2N2IzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0z
ODc3LDYgKzM4NzcsMTUgQEAgLSAodm9pZCllbmRTZWxlY3Rpb25DaGFuZ2UKICAgICBbc2VsZi5p
bnB1dERlbGVnYXRlIHNlbGVjdGlvbkRpZENoYW5nZTpzZWxmXTsKIH0KIAorLSAodm9pZCl3aWxs
RmluaXNoSWdub3JpbmdDYWxsb3V0QmFyRmFkZUFmdGVyUGVyZm9ybWluZ0FjdGlvbgoreworICAg
IF9pZ25vcmVTZWxlY3Rpb25Db21tYW5kRmFkZUNvdW50Kys7CisgICAgX3BhZ2UtPmNhbGxBZnRl
ck5leHRQcmVzZW50YXRpb25VcGRhdGUoW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50
Vmlldz4oc2VsZildIChhdXRvKSB7CisgICAgICAgIGlmIChhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFr
U2VsZi5nZXQoKSkKKyAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9pZ25vcmVTZWxlY3Rpb25Db21t
YW5kRmFkZUNvdW50LS07CisgICAgfSk7Cit9CisKIC0gKHZvaWQpX2RpZENoYW5nZVdlYlZpZXdF
ZGl0YWJpbGl0eQogewogICAgIGlmIChbX2Zvcm1BY2Nlc3NvcnlWaWV3IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Ioc2V0TmV4dFByZXZpb3VzSXRlbXNWaXNpYmxlOildKQpAQCAtNTY0NCw4
ICs1NjUzLDcgQEAgLSAodm9pZClfdXBkYXRlQ2hhbmdlZFNlbGVjdGlvbjooQk9PTClmb3JjZQog
ICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdG8gZG8gaWYgdGhl
IHNlbGVjdGlvbiBpcyBjaGFuZ2VkIGJ5IEphdmFzY3JpcHQuCiAgICAgICAgIGlmIChfdGV4dFNl
bGVjdGlvbkFzc2lzdGFudCkgewogICAgICAgICAgICAgX21hcmtlZFRleHQgPSAoX3BhZ2UtPmVk
aXRvclN0YXRlKCkuaGFzQ29tcG9zaXRpb24pID8gX3BhZ2UtPmVkaXRvclN0YXRlKCkubWFya2Vk
VGV4dCA6IFN0cmluZygpOwotICAgICAgICAgICAgaWYgKCFfc2hvd2luZ1RleHRTdHlsZU9wdGlv
bnMpCi0gICAgICAgICAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNlbGVjdGlvbkNo
YW5nZWRdOworICAgICAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNlbGVjdGlvbkNo
YW5nZWRdOwogICAgICAgICB9CiAKICAgICAgICAgX3NlbGVjdGlvbk5lZWRzVXBkYXRlID0gTk87
CkBAIC01NjY3LDYgKzU2NzUsMTIgQEAgLSAodm9pZClfdXBkYXRlQ2hhbmdlZFNlbGVjdGlvbjoo
Qk9PTClmb3JjZQogICAgIH0KIH0KIAorLSAoQk9PTClzaG91bGRBbGxvd0hpZGluZ1NlbGVjdGlv
bkNvbW1hbmRzCit7CisgICAgQVNTRVJUKF9pZ25vcmVTZWxlY3Rpb25Db21tYW5kRmFkZUNvdW50
ID49IDApOworICAgIHJldHVybiAhX2lnbm9yZVNlbGVjdGlvbkNvbW1hbmRGYWRlQ291bnQ7Cit9
CisKIC0gKEJPT0wpX3Nob3VsZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFuZHMKIHsKICAgICByZXR1
cm4gISFfc3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb25zOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg4NTIxN2Y2MWIyYTA4MWVjYzk4
ZmRjMGFhYWVkN2Q1ZjRmNTJjOGQuLmNhOGZhMDU0YTNmMjExMTg4ZGNlNDIyYWJlZDM3YzdkN2U4
NTgxNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw4NyBAQAorMjAxOS0wNC0xNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBbV2ViS2l0Ml0gQWRkIHN1cHBvcnQgZm9yIGhv
bm9yaW5nIC1bVUlNZW51SXRlbSBkb250RGlzbWlzc10KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjkxOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDE2MzA0NTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGlPUyBzdXBwb3J0IGZvciBzZXZlcmFsIG5ldyB0ZXN0aW5nIGhvb2tzLiBTZWUgYmVs
b3cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2Ny
aXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpp
c0Rpc21pc3NpbmdNZW51IGNvbnN0KToKKworICAgICAgICBBZGQgYSBuZXcgc2NyaXB0IGNvbnRy
b2xsZXIgbWV0aG9kIHRvIHF1ZXJ5IHdoZXRoZXIgdGhlIHBsYXRmb3JtIG1lbnUgKG9uIGlPUywg
dGhlIGNhbGxvdXQgYmFyKSBpcyBkb25lCisgICAgICAgIGRpc21pc3NpbmcuIFdlIGNvbnNpZGVy
IHRoZSBtZW51IHRvIGJlIGRpc21pc3NpbmcgaW4gYmV0d2VlbiB0aGUgYC1XaWxsSGlkZWAgYW5k
IGAtRGlkSGlkZWAgbm90aWZpY2F0aW9ucyBzZW50CisgICAgICAgIGJ5IFVJS2l0IHdoZW4gZGlz
bWlzc2luZyB0aGUgY2FsbG91dCBiYXIgKGkuZS4gVUlNZW51Q29udHJvbGxlcikuCisKKyAgICAg
ICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENv
bnRyb2xsZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cjo6aXNEaXNtaXNzaW5nTWVudSBjb25zdCk6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRBbGxvd2VkTWVudUFjdGlvbnMpOgorCisgICAg
ICAgIEFkZCBhIG5ldyBoZWxwZXIgbWV0aG9kIHRvIHNwZWNpZnkgYSBsaXN0IG9mIGFsbG93ZWQg
YWN0aW9ucyB3aGVuIGJyaW5naW5nIHVwIHRoZSBtZW51LiBPbiBpT1MsIGluIHRoZSBjYXNlIG9m
CisgICAgICAgIGFjdGlvbnMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSwgdGhpcyBtYXRjaGVz
IGFnYWluc3QgbWV0aG9kIHNlbGVjdG9yIG5hbWVzIChmb3IgaW5zdGFuY2UsICJTZWxlY3RBbGwi
LCBvcgorICAgICAgICAiQ29weSIsIG9yICJQYXN0ZSIpLiBJbiB0aGUgY2FzZSBvZiB0aGUgY3Vz
dG9tIGFjdGlvbnMgaW5zdGFsbGVkIHZpYSBgaW5zdGFsbEN1c3RvbU1lbnVBY3Rpb25gLCB3ZSBp
bnN0ZWFkIG1hdGNoCisgICAgICAgIGFnYWluc3QgdGhlIG5hbWUgb2YgdGhlIGN1c3RvbSBhY3Rp
b24uCisKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6aW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24p
OgorCisgICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgbWV0aG9kIHRvIGluc3RhbGwgYSBjdXN0b20g
YWN0aW9uIGZvciB0aGUgY29udGV4dCBtZW51IChvbiBpT1MsIHRoaXMgaXMgdGhlIGNhbGxvdXQg
YmFyKS4gVGhpcworICAgICAgICB0YWtlcyB0aGUgbmFtZSBvZiB0aGUgYWN0aW9uICh3aGljaCBh
cHBlYXJzIGluIGEgYnV0dG9uIGluIHRoZSBjYWxsb3V0IGJhciksIHdoZXRoZXIgdGhlIGFjdGlv
biBzaG91bGQgY2F1c2UKKyAgICAgICAgdGhlIGNhbGxvdXQgYmFyIHRvIGF1dG9tYXRpY2FsbHkg
ZGlzbWlzcywgYW5kIGZpbmFsbHksIGEgSmF2YVNjcmlwdCBjYWxsYmFjayB0aGF0IGlzIGludm9r
ZWQgd2hlbiB0aGUgYWN0aW9uIGlzCisgICAgICAgIHRyaWdnZXJlZC4KKworICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpwZXJmb3JtQ3VzdG9tTWVudUFjdGlvbik6CisKKyAgICAgICAgSW52b2tl
ZCB3aGVuIHRoZSBjdXN0b20gbWVudSBhY3Rpb24gaXMgdHJpZ2dlcmVkLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjppbnN0YWxsQ3VzdG9tTWVudUFjdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpzZXRBbGxvd2VkTWVudUFjdGlvbnMpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246
OnBlcmZvcm1DdXN0b21NZW51QWN0aW9uKToKKworICAgICAgICBBZGQgcGx1bWJpbmcgdG8gY2Fs
bCBiYWNrIGludG8gdGhlIGluamVjdGVkIGJ1bmRsZSB3aGVuIHBlcmZvcm1pbmcgdGhlIGN1c3Rv
bSBhY3Rpb24uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24p
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dlZE1lbnVBY3Rpb25zKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcuaDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW06
CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0
aW9uOl0pOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IGJlY29tZUZpcnN0UmVzcG9u
ZGVyXSk6CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgX2FkZEN1c3RvbUl0ZW1Ub01l
bnVDb250cm9sbGVySWZOZWNlc3NhcnldKToKKworICAgICAgICBIZWxwZXIgbWV0aG9kIHRoYXQg
Y29udmVydHMgd2ViIHZpZXcncyBjdXJyZW50IGN1c3RvbSBtZW51IGFjdGlvbiBpbmZvIGludG8g
YSBVSU1lbnVJdGVtLCBhbmQgYWRkcyBpdCB0byB0aGUKKyAgICAgICAgc2hhcmVkIG1lbnUgY29u
dHJvbGxlci4gVGhpcyBpcyBhbHNvIGludm9rZWQgd2hlbiB0aGUgd2ViIHZpZXcgYmVjb21lcyBm
aXJzdCByZXNwb25kZXIsIHdoaWNoIG1hdGNoZXMgYmVoYXZpb3IKKyAgICAgICAgaW4gdGhlIE1h
aWwgYXBwIG9uIGlPUy4KKworICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IGluc3RhbGxD
dXN0b21NZW51QWN0aW9uOmRpc21pc3Nlc0F1dG9tYXRpY2FsbHk6Y2FsbGJhY2s6XSk6CisgICAg
ICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgc2V0QWxsb3dlZE1lbnVBY3Rpb25zOl0pOgorICAg
ICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IHJlc2V0Q3VzdG9tTWVudUFjdGlvbl0pOgorICAg
ICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IHBlcmZvcm1DdXN0b21BY3Rpb246XSk6CisgICAg
ICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgY2FuUGVyZm9ybUFjdGlvbjp3aXRoU2VuZGVyOl0p
OgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IF93aWxsSGlkZU1lbnVdKToKKyAgICAg
ICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfZGlkSGlkZU1lbnVdKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisKKyAg
ICAgICAgUmVzZXQgYm90aCBhbnkgY3VzdG9tIGluc3RhbGxlZCBhY3Rpb25zIG9uIHRoZSBzaGFy
ZWQgbWVudSBjb250cm9sbGVyLCBhcyB3ZWxsIGFzIHRoZSBsaXN0IG9mIGFsbG93ZWQgYWN0aW9u
cywKKyAgICAgICAgaWYgc3BlY2lmaWVkLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRy
b2xsZXI6OmlzRGlzbWlzc2luZ01lbnUgY29uc3QpOgorCiAyMDE5LTA0LTEzICBUYWRldSBaYWdh
bGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAgICAgICAgIENvZGVDYWNoZSBzaG91bGQgY2hl
Y2sgdGhhdCB0aGUgVW5saW5rZWRDb2RlQmxvY2sgd2FzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGJl
Zm9yZSBjYWNoaW5nIGl0CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0
Q29udHJvbGxlcklPUy5tbQppbmRleCBlMWNiZDZjYWQ1MzZhNGIyN2U2NWFlZDk2YmRmNjk4ZjA5
OGFiMmY4Li5iYTFmM2VkYTczZWU5Y2MzZjM5MjU0MDQ2NGRiMjJiMGE5YjcxMTdhIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAg
LTM4MSw2ICszODEsMTEgQEAgYm9vbCBVSVNjcmlwdENvbnRyb2xsZXI6OmlzU2hvd2luZ01lbnUo
KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBVSVNjcmlwdENvbnRyb2xsZXI6
OmlzRGlzbWlzc2luZ01lbnUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXI6OnBsYXRmb3JtU2V0RGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2so
KQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKaW5kZXgg
MTdhNTQ0YzU1M2Q0ZDZlOTdiNmVkYWE2ZmEyZDczOWJmYTJjNzBmMi4uM2I2OWNkZTEyNzUzZDQx
MzAzYzYxNTI5Y2Y3NmI4NDAyY2ZhYjQxZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAorKysg
Yi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlw
dENvbnRyb2xsZXIuaWRsCkBAIC0yMjcsNiArMjI3LDcgQEAgaW50ZXJmYWNlIFVJU2NyaXB0Q29u
dHJvbGxlciB7CiAKICAgICBhdHRyaWJ1dGUgb2JqZWN0IGRpZFNob3dNZW51Q2FsbGJhY2s7CiAg
ICAgYXR0cmlidXRlIG9iamVjdCBkaWRIaWRlTWVudUNhbGxiYWNrOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIGlzRGlzbWlzc2luZ01lbnU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gaXNTaG93aW5nTWVudTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgb2JqZWN0IG1l
bnVSZWN0OwogICAgIG9iamVjdCByZWN0Rm9yTWVudUFjdGlvbihET01TdHJpbmcgYWN0aW9uKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2Ny
aXB0Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGFkYzcyNjA3YmYyZDkxNmI4MDRjNGIzMmE4
OWEzNWExMzlkODM5ODguLjM5ZWZjYTE2YjU1NmJiMTY5MDdhYmNiOWFmMjQ1MTdjMTg3MWJhZDYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2Ny
aXB0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTk4LDYgKzU5OCwxMSBAQCBKU09iamVj
dFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OnJlY3RGb3JNZW51QWN0aW9uKEpTU3RyaW5nUmVmKSBj
b25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIFVJU2NyaXB0Q29udHJvbGxlcjo6
aXNEaXNtaXNzaW5nTWVudSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29s
IFVJU2NyaXB0Q29udHJvbGxlcjo6aXNTaG93aW5nTWVudSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAppbmRleCA1NjBhM2QyYzkyMzEzOGJiZjk0NTNl
YzQxZDAzM2ViYWUxN2M5YmNlLi4wYmVkYzA0YTEyZWM0YWMzYzIzNDBiNDA3ZDc3ZTBiMGVjZWRi
OGE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaApAQCAtMTc1LDYgKzE3NSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFdpbGxQcmVzZW50UG9wb3ZlckNhbGxiYWNrKEpTVmFsdWVSZWYpOwogICAg
IEpTVmFsdWVSZWYgd2lsbFByZXNlbnRQb3BvdmVyQ2FsbGJhY2soKSBjb25zdDsKIAorICAgIGJv
b2wgaXNEaXNtaXNzaW5nTWVudSgpIGNvbnN0OwogICAgIGJvb2wgaXNTaG93aW5nTWVudSgpIGNv
bnN0OwogICAgIEpTT2JqZWN0UmVmIHJlY3RGb3JNZW51QWN0aW9uKEpTU3RyaW5nUmVmIGFjdGlv
bikgY29uc3Q7CiAgICAgSlNPYmplY3RSZWYgbWVudVJlY3QoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCmluZGV4IDA4N2RhODQ2NTI1N2ZiZTY5ZDM1OGJmNTc3MGVmNzIzMmM2OTU1
YjAuLjA1NDZkODE3MDI4MWZhNzU4NmUzMWI2MjBkMWJkN2I1YzljMDEyM2EgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbApAQCAtMjcyLDYgKzI3MiwxMCBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5l
ciB7CiAKICAgICB2b2lkIGFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwoRE9NU3RyaW5nIGNoYW5u
ZWwpOwogCisgICAgLy8gQ29udGV4dHVhbCBtZW51IGFjdGlvbnMKKyAgICB2b2lkIHNldEFsbG93
ZWRNZW51QWN0aW9ucyhvYmplY3QgYWN0aW9ucyk7CisgICAgdm9pZCBpbnN0YWxsQ3VzdG9tTWVu
dUFjdGlvbihET01TdHJpbmcgbmFtZSwgYm9vbGVhbiBkaXNtaXNzZXNBdXRvbWF0aWNhbGx5LCBv
YmplY3QgY2FsbGJhY2spOworCiAgICAgLy8gR2FtZXBhZAogICAgIHZvaWQgc2V0TW9ja0dhbWVw
YWREZXRhaWxzKHVuc2lnbmVkIGxvbmcgaW5kZXgsIERPTVN0cmluZyBpZCwgdW5zaWduZWQgbG9u
ZyBheGlzQ291bnQsIHVuc2lnbmVkIGxvbmcgYnV0dG9uQ291bnQpOwogICAgIHZvaWQgc2V0TW9j
a0dhbWVwYWRBeGlzVmFsdWUodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBheGlz
SW5kZXgsIGRvdWJsZSB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDQ5Y2RjZjgxMThlNzZm
NDkyMWVkN2U3ODcyZWNhZGUzNDI3Zjk5ZWIuLmVlY2QzMGM0ODE1YThlYmVmMzNkNTkzMzI5YjNl
ZjAyN2M1ODA0OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC00NDUsNiArNDQ1LDExIEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+ZGlkR2V0QXBwbGljYXRp
b25NYW5pZmVzdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJQZXJmb3JtQ3VzdG9tTWVudUFjdGlv
biIpKSB7CisgICAgICAgIG1fdGVzdFJ1bm5lci0+cGVyZm9ybUN1c3RvbU1lbnVBY3Rpb24oKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gZXJyb3JNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiRXJyb3IiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZUJv
ZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVua25vd24iKSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAppbmRleCAxYzlhZjMzMTk3MGJlNGM0Njc1ZmI2OTM5Zjk0N2Q4OWExMWMxZTQ2Li4zNzQy
OWI0ODUzZjhmOGIxZWM2M2ZkMjJjNGFmNjM4Y2ZlMWM1ZDljIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTc5Myw2
ICs3OTMsNyBAQCBlbnVtIHsKICAgICBUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFja0lE
LAogICAgIFRleHRGaWVsZERpZEJlZ2luRWRpdGluZ0NhbGxiYWNrSUQsCiAgICAgVGV4dEZpZWxk
RGlkRW5kRWRpdGluZ0NhbGxiYWNrSUQsCisgICAgQ3VzdG9tTWVudUFjdGlvbkNhbGxiYWNrSUQs
CiAgICAgRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQgPSAxMDAKIH07CiAKQEAgLTEzNDIsNiArMTM0
Myw1MiBAQCB2b2lkIFRlc3RSdW5uZXI6OnJ1blVJU2NyaXB0Q2FsbGJhY2sodW5zaWduZWQgY2Fs
bGJhY2tJRCwgSlNTdHJpbmdSZWYgcmVzdWx0KQogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2so
Y2FsbGJhY2tJRCwgMSwgJnJlc3VsdFZhbHVlKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRB
bGxvd2VkTWVudUFjdGlvbnMoSlNWYWx1ZVJlZiBhY3Rpb25zKQoreworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiU2V0QWxsb3dlZE1lbnVBY3Rpb25zIikpOworICAgIFdLUmV0YWluUHRyPFdLTXV0
YWJsZUFycmF5UmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS011dGFibGVBcnJheUNyZWF0ZSgp
KTsKKworICAgIGF1dG8gcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCkt
PnBhZ2UoKTsKKyAgICBhdXRvIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShw
YWdlKTsKKyAgICBhdXRvIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRl
eHQobWFpbkZyYW1lKTsKKyAgICBhdXRvIGxlbmd0aFByb3BlcnR5TmFtZSA9IGFkb3B0KEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5ndGgiKSk7CisgICAgYXV0byBhY3Rpb25zQXJy
YXkgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYWN0aW9ucywgbnVsbHB0cik7CisgICAgYXV0
byBsZW5ndGhWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgYWN0aW9uc0FycmF5
LCBsZW5ndGhQcm9wZXJ0eU5hbWUuZ2V0KCksIG51bGxwdHIpOworICAgIGlmICghSlNWYWx1ZUlz
TnVtYmVyKGNvbnRleHQsIGxlbmd0aFZhbHVlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBsZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBs
ZW5ndGhWYWx1ZSwgMCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRl
eHQsIGFjdGlvbnNBcnJheSwgaSwgMCk7CisgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNv
bnRleHQsIHZhbHVlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gYWN0
aW9uTmFtZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApKTsK
KyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGFjdGlvbihBZG9wdFdLLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhKU1N0cmluZyhhY3Rpb25OYW1lLmdldCgpKSk7CisgICAgICAgIFdLQXJyYXlB
cHBlbmRJdGVtKG1lc3NhZ2VCb2R5LmdldCgpLCBhY3Rpb24uZ2V0KCkpOworICAgIH0KKworICAg
IFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UsIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdl
Qm9keS5nZXQoKSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6aW5zdGFsbEN1c3RvbU1lbnVBY3Rp
b24oSlNTdHJpbmdSZWYgbmFtZSwgYm9vbCBkaXNtaXNzZXNBdXRvbWF0aWNhbGx5LCBKU1ZhbHVl
UmVmIGNhbGxiYWNrKQoreworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKEN1c3RvbU1lbnVB
Y3Rpb25DYWxsYmFja0lELCBjYWxsYmFjayk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklu
c3RhbGxDdXN0b21NZW51QWN0aW9uIikpOworICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rp
b25hcnlSZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUo
KSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbmFtZUtleShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibmFtZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gbmFtZVZhbHVlKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKG5h
bWUpKTsKKyAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKG1lc3NhZ2VCb2R5LmdldCgpLCBuYW1lS2V5
LmdldCgpLCBuYW1lVmFsdWUuZ2V0KCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IGRpc21pc3Nlc0F1dG9tYXRpY2FsbHlLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoImRpc21pc3Nlc0F1dG9tYXRpY2FsbHkiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tC
b29sZWFuUmVmPiBkaXNtaXNzZXNBdXRvbWF0aWNhbGx5VmFsdWUoQWRvcHRXSywgV0tCb29sZWFu
Q3JlYXRlKGRpc21pc3Nlc0F1dG9tYXRpY2FsbHkpKTsKKyAgICBXS0RpY3Rpb25hcnlTZXRJdGVt
KG1lc3NhZ2VCb2R5LmdldCgpLCBkaXNtaXNzZXNBdXRvbWF0aWNhbGx5S2V5LmdldCgpLCBkaXNt
aXNzZXNBdXRvbWF0aWNhbGx5VmFsdWUuZ2V0KCkpOworCisgICAgV0tCdW5kbGVQYWdlUG9zdE1l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6Omlu
c3RhbGxEaWRCZWdpblN3aXBlQ2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKICAgICBj
YWNoZVRlc3RSdW5uZXJDYWxsYmFjayhEaWRCZWdpblN3aXBlQ2FsbGJhY2tJRCwgY2FsbGJhY2sp
OwpAQCAtMjQ2NSw2ICsyNTEyLDExIEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZGlkR2V0QXBwbGljYXRp
b25NYW5pZmVzdCgpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhHZXRBcHBsaWNhdGlvbk1h
bmlmZXN0Q2FsbGJhY2tJRCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6cGVyZm9ybUN1c3RvbU1l
bnVBY3Rpb24oKQoreworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soQ3VzdG9tTWVudUFjdGlv
bkNhbGxiYWNrSUQpOworfQorCiBzaXplX3QgVGVzdFJ1bm5lcjo6dXNlclNjcmlwdEluamVjdGVk
Q291bnQoKSBjb25zdAogewogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
dXNlclNjcmlwdEluamVjdGVkQ291bnQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggODRhYjIxOTMzMzY2ZDNkN2U2N2M5
MTY4ZWQ4ZDA2NmMxNjE0MTYxNS4uYjg0OGQ3MGIxNGU0MjE3YTUzZGY5MzU4NWE1NDk2YWZhMjM0
NjRjNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmgKQEAgLTM1NSw2ICszNTUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcnVuVUlT
Y3JpcHQoSlNTdHJpbmdSZWYgc2NyaXB0LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lk
IHJ1blVJU2NyaXB0Q2FsbGJhY2sodW5zaWduZWQgY2FsbGJhY2tJRCwgSlNTdHJpbmdSZWYgcmVz
dWx0KTsKIAorICAgIC8vIENvbnRleHR1YWwgbWVudSBhY3Rpb25zCisgICAgdm9pZCBzZXRBbGxv
d2VkTWVudUFjdGlvbnMoSlNWYWx1ZVJlZik7CisgICAgdm9pZCBpbnN0YWxsQ3VzdG9tTWVudUFj
dGlvbihKU1N0cmluZ1JlZiBuYW1lLCBib29sIGRpc21pc3Nlc0F1dG9tYXRpY2FsbHksIEpTVmFs
dWVSZWYgY2FsbGJhY2spOworICAgIHZvaWQgcGVyZm9ybUN1c3RvbU1lbnVBY3Rpb24oKTsKKwog
ICAgIHZvaWQgaW5zdGFsbERpZEJlZ2luU3dpcGVDYWxsYmFjayhKU1ZhbHVlUmVmKTsKICAgICB2
b2lkIGluc3RhbGxXaWxsRW5kU3dpcGVDYWxsYmFjayhKU1ZhbHVlUmVmKTsKICAgICB2b2lkIGlu
c3RhbGxEaWRFbmRTd2lwZUNhbGxiYWNrKEpTVmFsdWVSZWYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA3M2RiMzAzMTAxMWQ0MDM1ZjVjMjNkNTNlMjY0
MjNlMzQ3MTE0ZWE5Li5jMzFhYWE0Mjk4ZWNjN2IzMTc5OGNiY2E4NGE2ZWYzNGMwNzY4ZTE0IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzUxMSw2ICsz
NTExLDE0IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9u
SW5OZXR3b3JrUHJvY2VzcygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFRl
c3RDb250cm9sbGVyOjppbnN0YWxsQ3VzdG9tTWVudUFjdGlvbihjb25zdCBTdHJpbmcmLCBib29s
KQoreworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd2VkTWVudUFjdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mKQoreworfQorCiAjZW5kaWYKIAogdm9pZCBUZXN0Q29udHJvbGxl
cjo6c2VuZERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JUZXN0aW5nKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBkZTkxMzBjNjg0MzQ1ZmQ1
ZmY5OGE2YWVmMDY2ZTg1MWNkY2RhYWU1Li41YzExZjY3NDQ2YTIyYzAyY2NlN2NmNWVmNzUyYTU5
OTFjMzZjMGU1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0y
OTYsNiArMjk2LDkgQEAgcHVibGljOgogICAgIFVJS2V5Ym9hcmRJbnB1dE1vZGUgKm92ZXJyaWRk
ZW5LZXlib2FyZElucHV0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGRlbktleWJvYXJk
SW5wdXRNb2RlLmdldCgpOyB9CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0QWxsb3dlZE1lbnVBY3Rp
b25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBpbnN0YWxsQ3VzdG9tTWVudUFj
dGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgZGlzbWlzc2VzQXV0b21hdGljYWxseSk7CisK
ICAgICBib29sIGNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcygpIGNv
bnN0OwogICAgIHVpbnQ2NF90IHNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0Nv
dW50OyB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXgg
NGM3MDM3YjdmNTc3NWM2NjdkZjM4YjAzMTNjMWRhYzAwNGFiZTUyMC4uYmI0MDk3MWRmNTU2NjY2
MmZjYWEzMTY2YjYxZTQyYzlmNjZkNGU1MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKQEAgLTc2OCw2ICs3NjgsMjcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiSW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24iKSkgeworICAg
ICAgICBhdXRvIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFy
eVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbmFt
ZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibmFtZSIpKTsKKyAg
ICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0cmlu
Z1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIG5h
bWVLZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRpc21pc3Nl
c0F1dG9tYXRpY2FsbHlLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
ImRpc21pc3Nlc0F1dG9tYXRpY2FsbHkiKSk7CisgICAgICAgIGF1dG8gZGlzbWlzc2VzQXV0b21h
dGljYWxseSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGRpc21pc3Nlc0F1dG9tYXRpY2FsbHlLZXkuZ2V0
KCkpKTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmluc3RhbGxDdXN0b21N
ZW51QWN0aW9uKHRvV1RGU3RyaW5nKG5hbWUuZ2V0KCkpLCBXS0Jvb2xlYW5HZXRWYWx1ZShkaXNt
aXNzZXNBdXRvbWF0aWNhbGx5KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEFsbG93ZWRNZW51
QWN0aW9ucyIpKSB7CisgICAgICAgIGF1dG8gbWVzc2FnZUJvZHlBcnJheSA9IHN0YXRpY19jYXN0
PFdLQXJyYXlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgYXV0byBzaXplID0gV0tBcnJheUdl
dFNpemUobWVzc2FnZUJvZHlBcnJheSk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGFjdGlvbnM7
CisgICAgICAgIGFjdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IHNpemU7ICsraW5kZXgpCisgICAgICAgICAg
ICBhY3Rpb25zLmFwcGVuZCh0b1dURlN0cmluZyhzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tB
cnJheUdldEl0ZW1BdEluZGV4KG1lc3NhZ2VCb2R5QXJyYXksIGluZGV4KSkpKTsKKyAgICAgICAg
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldEFsbG93ZWRNZW51QWN0aW9ucyhhY3Rpb25z
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0T3BlblBhbmVsRmlsZVVSTHMiKSkgewogICAgICAg
ICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0T3BlblBhbmVsRmlsZVVSTHMoc3RhdGlj
X2Nhc3Q8V0tBcnJheVJlZj4obWVzc2FnZUJvZHkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTc3
MSw0ICsxNzkyLDEwIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBBZENsaWNrQXR0cmlidXRp
b24oKQogICAgIG1fc2hvdWxkRHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbiA9IHRydWU7CiB9CiAKK3Zv
aWQgVGVzdEludm9jYXRpb246OnBlcmZvcm1DdXN0b21NZW51QWN0aW9uKCkKK3sKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJQZXJmb3JtQ3VzdG9tTWVudUFjdGlvbiIpKTsKKyAgICBXS1BhZ2VQ
b3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1h
aW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCAy
YmRiYWFhNTdlNTkyMTFiOWQxOTg5OTU3ZjBkODZjMDI1MWE3N2MwLi45ZDNjZjJmY2ZmZmZhMjNl
ZGQ0NGMwODAwNzE3ZjY5NWJkNjk0NDk3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5oCkBAIC04OCw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbk9wZW5XaW5k
b3dzKCkgY29uc3QgeyByZXR1cm4gbV9jYW5PcGVuV2luZG93czsgfQogCiAgICAgdm9pZCBkdW1w
QWRDbGlja0F0dHJpYnV0aW9uKCk7CisgICAgdm9pZCBwZXJmb3JtQ3VzdG9tTWVudUFjdGlvbigp
OwogCiBwcml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNy
ZWF0ZVRlc3RTZXR0aW5nc0RpY3Rpb25hcnkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCBiZDVmMzlmMmNlMjU2NGEw
ZWQzM2YzMTg4NzdhNzFlMTkyNjQxOTA0Li40MDg3NzM1YmEyNWJiODUzYTJlNmNmZjAwMGYyZTAz
MWFiYmNmYTEyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RD
b250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tCkBAIC00MDAsNiArNDAwLDMyIEBAIGJvb2wgVGVzdENvbnRyb2xs
ZXI6OmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcygpIGNvbnN0CiAj
ZW5kaWYKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6aW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24o
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGRpc21pc3Nlc0F1dG9tYXRpY2FsbHkpCit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvKiBpbnZvY2F0aW9uID0gbV9jdXJyZW50SW52
b2NhdGlvbi5nZXQoKTsKKyAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZvcm1WaWV3KCkgaW5zdGFs
bEN1c3RvbU1lbnVBY3Rpb246bmFtZSBkaXNtaXNzZXNBdXRvbWF0aWNhbGx5OmRpc21pc3Nlc0F1
dG9tYXRpY2FsbHkgY2FsbGJhY2s6W2ludm9jYXRpb25dIHsKKyAgICAgICAgaWYgKFRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5pc0N1cnJlbnRJbnZvY2F0aW9uKGludm9jYXRpb24pKQorICAg
ICAgICAgICAgaW52b2NhdGlvbi0+cGVyZm9ybUN1c3RvbU1lbnVBY3Rpb24oKTsKKyAgICB9XTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShkaXNtaXNz
ZXNBdXRvbWF0aWNhbGx5KTsKKyNlbmRpZgorfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRB
bGxvd2VkTWVudUFjdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGFjdGlvbnMpCit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGFjdGlvbk5hbWVzID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5PE5TU3RyaW5nICo+IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmFjdGlvbnMu
c2l6ZSgpXSk7CisgICAgZm9yIChhdXRvIGFjdGlvbiA6IGFjdGlvbnMpCisgICAgICAgIFthY3Rp
b25OYW1lcyBhZGRPYmplY3Q6YWN0aW9uXTsKKyAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZvcm1W
aWV3KCkgc2V0QWxsb3dlZE1lbnVBY3Rpb25zOmFjdGlvbk5hbWVzLmdldCgpXTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGFjdGlvbnMpOworI2VuZGlmCit9CisKIGJvb2wgVGVzdENvbnRyb2xs
ZXI6OmlzRG9pbmdNZWRpYUNhcHR1cmUoKSBjb25zdAogewogICAgIHJldHVybiBtX21haW5XZWJW
aWV3LT5wbGF0Zm9ybVZpZXcoKS5fbWVkaWFDYXB0dXJlU3RhdGUgIT0gX1dLTWVkaWFDYXB0dXJl
U3RhdGVOb25lOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
UnVubmVyV0tXZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5u
ZXJXS1dlYlZpZXcuaAppbmRleCA5NmU1MTUyNjFiMjU4OGYzNzM2ZTY4ODkxNTE3MWEwOTljNGU4
NjRlLi5kMjE2NDA0NzE0NGQ0ZjRiNjE4NjhjMTJiMTA4ODJiMGEzMDg1NmZjIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcuaApAQCAt
NDksNiArNDksMTEgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChecm90YXRp
b25EaWRFbmRDYWxsYmFjaykodm9pZCk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNT
dHJpbmcgKmFjY2Vzc2liaWxpdHlTcGVha1NlbGVjdGlvbkNvbnRlbnQ7CiAKKy0gKHZvaWQpc2V0
QWxsb3dlZE1lbnVBY3Rpb25zOihOU0FycmF5PE5TU3RyaW5nICo+ICopYWN0aW9uczsKKworLSAo
dm9pZClyZXNldEN1c3RvbU1lbnVBY3Rpb247CistICh2b2lkKWluc3RhbGxDdXN0b21NZW51QWN0
aW9uOihOU1N0cmluZyAqKW5hbWUgZGlzbWlzc2VzQXV0b21hdGljYWxseTooQk9PTClkaXNtaXNz
ZXNBdXRvbWF0aWNhbGx5IGNhbGxiYWNrOihkaXNwYXRjaF9ibG9ja190KWNhbGxiYWNrOworCiAt
ICh2b2lkKXJlc2V0SW50ZXJhY3Rpb25DYWxsYmFja3M7CiAtICh2b2lkKXpvb21Ub1NjYWxlOihk
b3VibGUpc2NhbGUgYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClhY2Nlc3NpYmlsaXR5UmV0
cmlldmVTcGVha1NlbGVjdGlvbkNvbnRlbnRXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOwpAQCAtNTgsNiArNjMsNyBAQAogCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1pc1Nob3dpbmdLZXlib2FyZCkgQk9PTCBzaG93
aW5nS2V5Ym9hcmQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1pc1No
b3dpbmdNZW51KSBCT09MIHNob3dpbmdNZW51OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBnZXR0ZXI9aXNEaXNtaXNzaW5nTWVudSkgQk9PTCBkaXNtaXNzaW5nTWVudTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlzU2hvd2luZ1BvcG92ZXIpIEJPT0wg
c2hvd2luZ1BvcG92ZXI7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBCT09MIHVzZXNT
YWZhcmlMaWtlUm90YXRpb247CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRl
cj1pc0ludGVyYWN0aW5nV2l0aEZvcm1Db250cm9sKSBCT09MIGludGVyYWN0aW5nV2l0aEZvcm1D
b250cm9sOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVu
bmVyV0tXZWJWaWV3Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVy
V0tXZWJWaWV3Lm1tCmluZGV4IDI1ODA4MGU0NzllZWRhYjc0ZmQ3MDFjZTM4MzJkNGRhODUxM2Ey
YjIuLjkwMjk2ODk0Y2Y5NGJhOGE3NDM0M2JlMGQ4NWM5ZGM1NmE2NDc3ZmMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KQEAg
LTI5LDYgKzI5LDggQEAKICNpbXBvcnQgIldlYktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8uaCIK
ICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvT3B0aW9u
YWwuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCkBAIC00NSwxNiArNDcsMjUgQEAgLSAodm9pZClfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGU7CiBAZW5kCiAjZW5kaWYKIAorc3RydWN0IEN1c3RvbU1lbnVBY3Rpb25JbmZvIHsK
KyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG5hbWU7CisgICAgQk9PTCBkaXNtaXNzZXNBdXRvbWF0
aWNhbGx5IHsgTk8gfTsKKyAgICBCbG9ja1B0cjx2b2lkKCk+IGNhbGxiYWNrOworfTsKKwogQGlu
dGVyZmFjZSBUZXN0UnVubmVyV0tXZWJWaWV3ICgpIDxXS1VJRGVsZWdhdGVQcml2YXRlPiB7CiAg
ICAgUmV0YWluUHRyPE5TTnVtYmVyPiBtX3N0YWJsZVN0YXRlT3ZlcnJpZGU7CiAgICAgQk9PTCBf
aXNJbnRlcmFjdGluZ1dpdGhGb3JtQ29udHJvbDsKICAgICBCT09MIF9zY3JvbGxpbmdVcGRhdGVz
RGlzYWJsZWQ7CisgICAgT3B0aW9uYWw8Q3VzdG9tTWVudUFjdGlvbkluZm8+IF9jdXN0b21NZW51
QWN0aW9uSW5mbzsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4gX2FsbG93ZWRN
ZW51QWN0aW9uczsKIH0KIAogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF56b29t
VG9TY2FsZUNvbXBsZXRpb25IYW5kbGVyKSh2b2lkKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSB2b2lkIChecmV0cmlldmVTcGVha1NlbGVjdGlvbkNvbnRlbnRDb21wbGV0aW9uSGFuZGxl
cikodm9pZCk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPWlzU2hvd2luZ0tleWJvYXJk
LCBzZXR0ZXI9c2V0SXNTaG93aW5nS2V5Ym9hcmQ6KSBCT09MIHNob3dpbmdLZXlib2FyZDsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNTaG93aW5nTWVudSwgc2V0dGVyPXNldElzU2hv
d2luZ01lbnU6KSBCT09MIHNob3dpbmdNZW51OworQHByb3BlcnR5IChub25hdG9taWMsIGdldHRl
cj1pc0Rpc21pc3NpbmdNZW51LCBzZXR0ZXI9c2V0SXNEaXNtaXNzaW5nTWVudTopIEJPT0wgZGlz
bWlzc2luZ01lbnU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPWlzU2hvd2luZ1BvcG92
ZXIsIHNldHRlcj1zZXRJc1Nob3dpbmdQb3BvdmVyOikgQk9PTCBzaG93aW5nUG9wb3ZlcjsKIAog
QGVuZApAQCAtNzksNiArOTAsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dS
ZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwogICAgICAgICBb
Y2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9pbnZva2VTaG93S2V5
Ym9hcmRDYWxsYmFja0lmTmVjZXNzYXJ5KSBuYW1lOlVJS2V5Ym9hcmREaWRTaG93Tm90aWZpY2F0
aW9uIG9iamVjdDpuaWxdOwogICAgICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0
b3I6QHNlbGVjdG9yKF9pbnZva2VIaWRlS2V5Ym9hcmRDYWxsYmFja0lmTmVjZXNzYXJ5KSBuYW1l
OlVJS2V5Ym9hcmREaWRIaWRlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogICAgICAgICBbY2Vu
dGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9kaWRTaG93TWVudSkgbmFt
ZTpVSU1lbnVDb250cm9sbGVyRGlkU2hvd01lbnVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Cisg
ICAgICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX3dpbGxI
aWRlTWVudSkgbmFtZTpVSU1lbnVDb250cm9sbGVyV2lsbEhpZGVNZW51Tm90aWZpY2F0aW9uIG9i
amVjdDpuaWxdOwogICAgICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKF9kaWRIaWRlTWVudSkgbmFtZTpVSU1lbnVDb250cm9sbGVyRGlkSGlkZU1lbnVOb3Rp
ZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoX3dpbGxQcmVzZW50UG9wb3ZlcikgbmFtZTpAIlVJUG9wb3ZlckNv
bnRyb2xsZXJXaWxsUHJlc2VudFBvcG92ZXJOb3RpZmljYXRpb24iIG9iamVjdDpuaWxdOwogICAg
ICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9kaWREaXNt
aXNzUG9wb3ZlcikgbmFtZTpAIlVJUG9wb3ZlckNvbnRyb2xsZXJEaWREaXNtaXNzUG9wb3Zlck5v
dGlmaWNhdGlvbiIgb2JqZWN0Om5pbF07CkBAIC0xMzIsNiArMTQ0LDg4IEBAIC0gKHZvaWQpX2Rp
ZERpc21pc3NGb3JjZVByZXNzUHJldmlldwogICAgICAgICBzZWxmLmRpZERpc21pc3NGb3JjZVBy
ZXNzUHJldmlld0NhbGxiYWNrKCk7CiB9CiAKKy0gKEJPT0wpYmVjb21lRmlyc3RSZXNwb25kZXIK
K3sKKyAgICBCT09MIHdhc0ZpcnN0UmVzcG9uZGVyID0gc2VsZi5pc0ZpcnN0UmVzcG9uZGVyOwor
ICAgIEJPT0wgYmVjYW1lRmlyc3RSZXNwb25kZXIgPSBbc3VwZXIgYmVjb21lRmlyc3RSZXNwb25k
ZXJdOworICAgIGlmICghd2FzRmlyc3RSZXNwb25kZXIgJiYgYmVjYW1lRmlyc3RSZXNwb25kZXIp
CisgICAgICAgIFtzZWxmIF9hZGRDdXN0b21JdGVtVG9NZW51Q29udHJvbGxlcklmTmVjZXNzYXJ5
XTsKKyAgICByZXR1cm4gYmVjYW1lRmlyc3RSZXNwb25kZXI7Cit9CisKKy0gKHZvaWQpX2FkZEN1
c3RvbUl0ZW1Ub01lbnVDb250cm9sbGVySWZOZWNlc3NhcnkKK3sKKyAgICBpZiAoIV9jdXN0b21N
ZW51QWN0aW9uSW5mbykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpdGVtID0gYWRvcHRO
UyhbW1VJTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6X2N1c3RvbU1lbnVBY3Rpb25JbmZv
LT5uYW1lLmdldCgpIGFjdGlvbjpAc2VsZWN0b3IocGVyZm9ybUN1c3RvbUFjdGlvbjopXSk7Cisg
ICAgW2l0ZW0gc2V0RG9udERpc21pc3M6IV9jdXN0b21NZW51QWN0aW9uSW5mby0+ZGlzbWlzc2Vz
QXV0b21hdGljYWxseV07CisgICAgVUlNZW51Q29udHJvbGxlciAqY29udHJvbGxlciA9IFVJTWVu
dUNvbnRyb2xsZXIuc2hhcmVkTWVudUNvbnRyb2xsZXI7CisgICAgY29udHJvbGxlci5tZW51SXRl
bXMgPSBAWyBpdGVtLmdldCgpIF07CisgICAgW2NvbnRyb2xsZXIgdXBkYXRlXTsKK30KKworLSAo
dm9pZClpbnN0YWxsQ3VzdG9tTWVudUFjdGlvbjooTlNTdHJpbmcgKiluYW1lIGRpc21pc3Nlc0F1
dG9tYXRpY2FsbHk6KEJPT0wpZGlzbWlzc2VzQXV0b21hdGljYWxseSBjYWxsYmFjazooZGlzcGF0
Y2hfYmxvY2tfdCljYWxsYmFjaworeworICAgIF9jdXN0b21NZW51QWN0aW9uSW5mbyA9IHt7IG5h
bWUsIGRpc21pc3Nlc0F1dG9tYXRpY2FsbHksIGNhbGxiYWNrIH19OworICAgIFtzZWxmIF9hZGRD
dXN0b21JdGVtVG9NZW51Q29udHJvbGxlcklmTmVjZXNzYXJ5XTsKK30KKworLSAodm9pZClzZXRB
bGxvd2VkTWVudUFjdGlvbnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhY3Rpb25zCit7CisgICAg
X2FsbG93ZWRNZW51QWN0aW9ucyA9IGFjdGlvbnM7Cit9CisKKy0gKHZvaWQpcmVzZXRDdXN0b21N
ZW51QWN0aW9uCit7CisgICAgX2N1c3RvbU1lbnVBY3Rpb25JbmZvLnJlc2V0KCk7CisgICAgVUlN
ZW51Q29udHJvbGxlci5zaGFyZWRNZW51Q29udHJvbGxlci5tZW51SXRlbXMgPSBAWyBdOworfQor
CistICh2b2lkKXBlcmZvcm1DdXN0b21BY3Rpb246KGlkKXNlbmRlcgoreworICAgIGlmICghX2N1
c3RvbU1lbnVBY3Rpb25JbmZvKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIV9jdXN0b21N
ZW51QWN0aW9uSW5mby0+Y2FsbGJhY2spIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfY3VzdG9tTWVudUFjdGlvbkluZm8tPmNh
bGxiYWNrKCk7Cit9CisKKy0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbjooU0VMKWFjdGlvbiB3aXRo
U2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBCT09MIGlzQ3VzdG9tQWN0aW9uID0gYWN0aW9uID09
IEBzZWxlY3RvcihwZXJmb3JtQ3VzdG9tQWN0aW9uOik7CisgICAgQk9PTCBjYW5QZXJmb3JtQWN0
aW9uQnlEZWZhdWx0ID0gW3N1cGVyIGNhblBlcmZvcm1BY3Rpb246YWN0aW9uIHdpdGhTZW5kZXI6
c2VuZGVyXTsKKyAgICBpZiAoaXNDdXN0b21BY3Rpb24pCisgICAgICAgIGNhblBlcmZvcm1BY3Rp
b25CeURlZmF1bHQgPSBfY3VzdG9tTWVudUFjdGlvbkluZm8uaGFzVmFsdWUoKTsKKworICAgIGlm
IChjYW5QZXJmb3JtQWN0aW9uQnlEZWZhdWx0ICYmIF9hbGxvd2VkTWVudUFjdGlvbnMgJiYgc2Vu
ZGVyID09IFVJTWVudUNvbnRyb2xsZXIuc2hhcmVkTWVudUNvbnRyb2xsZXIpIHsKKyAgICAgICAg
Qk9PTCBpc0FsbG93ZWQgPSBOTzsKKyAgICAgICAgaWYgKGlzQ3VzdG9tQWN0aW9uKSB7CisgICAg
ICAgICAgICBmb3IgKE5TU3RyaW5nICphbGxvd2VkQWN0aW9uIGluIF9hbGxvd2VkTWVudUFjdGlv
bnMuZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoW1tfY3VzdG9tTWVudUFjdGlvbkluZm8t
Pm5hbWUgbG93ZXJjYXNlU3RyaW5nXSBpc0VxdWFsVG9TdHJpbmc6YWxsb3dlZEFjdGlvbi5sb3dl
cmNhc2VTdHJpbmddKSB7CisgICAgICAgICAgICAgICAgICAgIGlzQWxsb3dlZCA9IFlFUzsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqYWxsb3dlZEFj
dGlvbiBpbiBfYWxsb3dlZE1lbnVBY3Rpb25zLmdldCgpKSB7CisgICAgICAgICAgICAgICAgTlNT
dHJpbmcgKmxvd2VyY2FzZVNlbGVjdG9yTmFtZSA9IFtbYWxsb3dlZEFjdGlvbiBsb3dlcmNhc2VT
dHJpbmddIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkAiOiJdOworICAgICAgICAgICAgICAgIGlm
IChbTlNTdHJpbmdGcm9tU2VsZWN0b3IoYWN0aW9uKS5sb3dlcmNhc2VTdHJpbmcgaXNFcXVhbFRv
U3RyaW5nOmxvd2VyY2FzZVNlbGVjdG9yTmFtZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgaXNB
bGxvd2VkID0gWUVTOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFpc0FsbG93ZWQpCisg
ICAgICAgICAgICByZXR1cm4gTk87CisgICAgfQorICAgIHJldHVybiBjYW5QZXJmb3JtQWN0aW9u
QnlEZWZhdWx0OworfQorCiAtICh2b2lkKXJlc2V0SW50ZXJhY3Rpb25DYWxsYmFja3MKIHsKICAg
ICBzZWxmLmRpZFN0YXJ0Rm9ybUNvbnRyb2xJbnRlcmFjdGlvbkNhbGxiYWNrID0gbmlsOwpAQCAt
MTk1LDggKzI4OSwxNSBAQCAtICh2b2lkKV9kaWRTaG93TWVudQogICAgICAgICBzZWxmLmRpZFNo
b3dNZW51Q2FsbGJhY2soKTsKIH0KIAorLSAodm9pZClfd2lsbEhpZGVNZW51Cit7CisgICAgc2Vs
Zi5kaXNtaXNzaW5nTWVudSA9IFlFUzsKK30KKwogLSAodm9pZClfZGlkSGlkZU1lbnUKIHsKKyAg
ICBzZWxmLmRpc21pc3NpbmdNZW51ID0gTk87CisKICAgICBpZiAoIXNlbGYuc2hvd2luZ01lbnUp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVGVzdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0
Q29udHJvbGxlcklPUy5tbQppbmRleCAzZWVlMDA1ZjdhNjgwM2MzMjJmYjcxNGY3NDQ2ZmQ2Y2Vh
YmJlNjJhLi40NWViNWVlMTI0NTdmZTYzNzJlYjE4MTY0NDRhMzVhMjAxMTZjMzNlIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpAQCAtMTYz
LDYgKzE2Myw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29u
c2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0CiAgICAgICAgIFt3ZWJWaWV3IF9j
bGVhck92ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc107CiAgICAgICAgIFt3ZWJWaWV3IF9jbGVhcklu
dGVyZmFjZU9yaWVudGF0aW9uT3ZlcnJpZGVdOwogICAgICAgICBbd2ViVmlldyByZXNldEludGVy
YWN0aW9uQ2FsbGJhY2tzXTsKKyAgICAgICAgW3dlYlZpZXcgcmVzZXRDdXN0b21NZW51QWN0aW9u
XTsKKyAgICAgICAgW3dlYlZpZXcgc2V0QWxsb3dlZE1lbnVBY3Rpb25zOm5pbF07CiAKICAgICAg
ICAgVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3ID0gd2ViVmlldy5zY3JvbGxWaWV3OwogICAgICAg
ICBbc2Nyb2xsVmlldyBfcmVtb3ZlQWxsQW5pbWF0aW9uczpZRVNdOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IDc0OGMz
YTFkYjE2MDk5ZjIyNTVkNjZlNjQxOTk4NjAzN2RkMjZiYjguLjE5MWJjOTkzZmVkNjA1MTQyODEw
ZmY2ZTdkM2Y4M2E5NjdmMjkxODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTk3MSw2ICs5NzEsMTEgQEAgSlNPYmpl
Y3RSZWYgVUlTY3JpcHRDb250cm9sbGVyOjptZW51UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y29udGV4dC0+b2JqZWN0RnJvbVJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0KHJlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXMub3JpZ2luLngsIHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMub3JpZ2luLnks
IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMuc2l6ZS53aWR0aCwgcmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcy5zaXplLmhlaWdodCkpOwogfQogCitib29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNE
aXNtaXNzaW5nTWVudSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKS5kaXNtaXNzaW5nTWVudTsKK30K
KwogYm9vbCBVSVNjcmlwdENvbnRyb2xsZXI6OmlzU2hvd2luZ01lbnUoKSBjb25zdAogewogICAg
IHJldHVybiBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1WaWV3KCkuc2hvd2luZ01lbnU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjBmYWFlNTE0MDFjMTliZmJiMmE1YWQyZTIw
NTg5NjZlNWEwZjYyZS4uZDk1YTBjNWY2ODZkOTUwMGMyMjMzNTM4M2FhNmFjOGQwNDE4NjE4YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTA0LTE1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFtXZWJLaXQyXSBBZGQgc3VwcG9ydCBm
b3IgaG9ub3JpbmcgLVtVSU1lbnVJdGVtIGRvbnREaXNtaXNzXQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2OTE5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80MTYzMDQ1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBuZXcgaU9TIGxheW91dCB0ZXN0IHRoYXQgaW5zdGFsbHMgYSBjdXN0b20s
IG5vbi1kaXNtaXNzaW5nIGFjdGlvbiBpbiB0aGUgY2FsbG91dCBtZW51IHRoYXQgZW5sYXJnZXMg
dGV4dC4KKyAgICAgICAgVGhlIHRlc3QgdGhlbiBhY3RpdmF0ZXMgdGhpcyBjdXN0b20gbWVudSBp
dGVtIGFuZCBjaGVja3MgdGhhdCB0aGUgc2VsZWN0aW9uIHJlY3RzIGFmdGVyIHRyaWdnZXJpbmcg
dGhpcyBjdXN0b20KKyAgICAgICAgYWN0aW9uIGFyZSB1cGRhdGVkLCBhbmQgdGhlIGNhbGxvdXQg
YmFyIGlzIHN0aWxsIHNob3dpbmcuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mv
c2VsZWN0aW9uLWFmdGVyLWNoYW5naW5nLXRleHQtd2l0aC1jYWxsb3V0LW1lbnUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0aW9uLWFm
dGVyLWNoYW5naW5nLXRleHQtd2l0aC1jYWxsb3V0LW1lbnUuaHRtbDogQWRkZWQuCisKKyAgICAg
ICAgVGhpcyB0ZXN0IGFkZGl0aW9uYWxseSBzdXBwcmVzc2VzIGFsbCBjYWxsb3V0IGJhciBtZW51
IGl0ZW1zIGV4Y2VwdCBmb3IgdGhlIGN1c3RvbSAiRW1iaWdnZW4iIGFjdGlvbiwgdG8gZW5zdXJl
CisgICAgICAgIHRoYXQgdGhlICJFbWJpZ2dlbiIgb3B0aW9uIGNhbiBiZSB0YXBwZWQgZnJvbSB0
aGUgbGF5b3V0IHRlc3Qgd2l0aG91dCBoYXZpbmcgdG8gbmF2aWdhdGUgY2FsbG91dCBiYXIgaXRl
bXMgYnkKKyAgICAgICAgdGFwcGluZyBvbiB0aGUgIk5leHQiIGFuZCAiU2hvdyBzdHlsZXMiIGJ1
dHRvbnMuIFRoaXMgbGF0dGVyIGFwcHJvYWNoIGlzIHZlcnkgY2hhbGxlbmdpbmcgdG8gbWFrZSBy
ZWxpYWJsZSBpbgorICAgICAgICBhdXRvbWF0aW9uOyB3aGVuIG5hdmlnYXRpbmcgc3VibWVudXMg
aW4gdGhlIGNhbGxvdXQgYmFyLCB0aGUgbmV4dCBidXR0b24gY2FuJ3QgYmUgdGFwcGVkIHVudGls
IHRoZSBjdXJyZW50CisgICAgICAgIGNhbGxvdXQgYmFyIHRyYW5zaXRpb24gYW5pbWF0aW9uIGlz
IGNvbXBsZXRlLCBidXQgdGhlcmUncyBubyBkZWxlZ2F0ZSBtZXRob2QgaW52b2tlZCBvciBub3Rp
ZmljYXRpb24gcG9zdGVkIHdoZW4KKyAgICAgICAgdGhpcyBoYXBwZW5zLgorCisgICAgICAgICog
cmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5pc1Nob3dp
bmdNZW51KToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5pc0Rpc21pc3NpbmdNZW51KToKKyAg
ICAgICAgKHdpbmRvdy5VSUhlbHBlci5yZWN0Rm9yTWVudUFjdGlvbik6CisgICAgICAgICh3aW5k
b3cuVUlIZWxwZXIuYXN5bmMuY2hvb3NlTWVudUFjdGlvbik6CisKKyAgICAgICAgQWRkaXRpb25h
bGx5IGFkZCBhIGZldyBtb3JlIFVJSGVscGVyIG1ldGhvZHMuCisKKyAgICAgICAgKHdpbmRvdy5V
SUhlbHBlcik6CisKIDIwMTktMDQtMTIgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb11bV0tMXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVu
aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVj
dGlvbi1hZnRlci1jaGFuZ2luZy10ZXh0LXdpdGgtY2FsbG91dC1tZW51LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24tYWZ0ZXItY2hhbmdp
bmctdGV4dC13aXRoLWNhbGxvdXQtbWVudS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU4Yjlm
ODA2YjNiYjdkNzBjZmVlNThlYmZlMTdmNjlhNzlmMWQ5NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Rpb24tYWZ0ZXItY2hhbmdpbmct
dGV4dC13aXRoLWNhbGxvdXQtbWVudS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGhl
IHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cuCitUaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCBpbnRlcmFjdGluZyB3aXRoIGEgbWVudSBhY3Rpb24gaXRlbSBvbiBpT1MgdGhh
dCBpcyBtYXJrZWQgd2l0aCAnZG9udERpc21pc3MnIGRvZXMgbm90IGNhdXNlIHRoZSBjYWxsb3V0
IG1lbnUgdG8gZGlzbWlzcywgZXZlbiBpZiB0aGUgYWN0aW9uIGNoYW5nZXMgdGhlIHNlbGVjdGlv
bi4gVG8gdGVzdCBtYW51YWxseSwgc2VsZWN0IHRoZSB0ZXh0IGFuZCB0YXAgYW4gaXRlbSBpbiB0
aGUgY2FsbG91dCBtZW51IHRoYXQgc2hvdWxkbid0IGF1dG9tYXRpY2FsbHkgZGlzbWlzcyB0aGUg
bWVudSBidXQgY2hhbmdlcyB0aGUgc2VsZWN0aW9uIHJlY3RzIChmb3IgaW5zdGFuY2UsIEJvbGQp
LiBWZXJpZnkgdGhhdCB0aGUgY2FsbG91dCBtZW51IHJlbWFpbnMgdmlzaWJsZSBhZnRlciB0YXBw
aW5nIHRoaXMgaXRlbS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHNlbGVj
dGlvblJlY3RzWzBdLnRvcCBpcyAxMDEKK1BBU1Mgc2VsZWN0aW9uUmVjdHNbMF0ud2lkdGggaXMg
MzIwCitQQVNTIHNlbGVjdGlvblJlY3RzWzBdLmxlZnQgaXMgMQorUEFTUyBzZWxlY3Rpb25SZWN0
c1swXS5oZWlnaHQgaXMgMjkKK1BBU1Mgc2VsZWN0aW9uUmVjdHNbMV0udG9wIGlzIDEzMAorUEFT
UyBzZWxlY3Rpb25SZWN0c1sxXS53aWR0aCBpcyAxNzIKK1BBU1Mgc2VsZWN0aW9uUmVjdHNbMV0u
bGVmdCBpcyAxCitQQVNTIHNlbGVjdGlvblJlY3RzWzFdLmhlaWdodCBpcyAzMAorUEFTUyBkaXNt
aXNzaW5nTWVudSBpcyBmYWxzZQorUEFTUyBzaG93aW5nTWVudSBpcyB0cnVlCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1hZnRlci1jaGFuZ2luZy10
ZXh0LXdpdGgtY2FsbG91dC1tZW51Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9pb3Mvc2VsZWN0aW9uLWFmdGVyLWNoYW5naW5nLXRleHQtd2l0aC1jYWxsb3V0LW1lbnUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZDE5NWVmODgyYzRkMjhjM2ZhZmU5OGExNjI5NDc3YjQ3NGQ3YmFlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVj
dGlvbi1hZnRlci1jaGFuZ2luZy10ZXh0LXdpdGgtY2FsbG91dC1tZW51Lmh0bWwKQEAgLTAsMCAr
MSw2OCBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxl
eGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmll
d3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2Vy
LXNjYWxhYmxlPW5vIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAg
ICBoZWlnaHQ6IDEwMCU7CisgICAgbWFyZ2luOiAwOworfQorCisjZWRpdG9yIHsKKyAgICB3aWR0
aDogMzIwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICBib3JkZXI6IHNvbGlkIDFweCB0b21h
dG87CisgICAgbWFyZ2luLXRvcDogMTAwcHg7Cit9CisKKy5iaWcgeworICAgIGZvbnQtc2l6ZTog
MjRweDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0PgoranNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dlZE1lbnVBY3Rp
b25zKFsiRW1iaWdnZW4iXSk7CisgICAgdGVzdFJ1bm5lci5pbnN0YWxsQ3VzdG9tTWVudUFjdGlv
bigiRW1iaWdnZW4iLCBmYWxzZSwgKCkgPT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2VkaXRv
ciIpLmNsYXNzTGlzdC5hZGQoImJpZyIpKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIs
IHJ1blRlc3QpOworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaW50ZXJhY3Rpbmcgd2l0aCBhIG1lbnUgYWN0aW9uIGl0
ZW0gb24gaU9TIHRoYXQgaXMgbWFya2VkIHdpdGggJ2RvbnREaXNtaXNzJyBkb2VzIG5vdCBjYXVz
ZSB0aGUgY2FsbG91dCBtZW51IHRvIGRpc21pc3MsIGV2ZW4gaWYgdGhlIGFjdGlvbiBjaGFuZ2Vz
IHRoZSBzZWxlY3Rpb24uIFRvIHRlc3QgbWFudWFsbHksIHNlbGVjdCB0aGUgdGV4dCBhbmQgdGFw
IGFuIGl0ZW0gaW4gdGhlIGNhbGxvdXQgbWVudSB0aGF0IHNob3VsZG4ndCBhdXRvbWF0aWNhbGx5
IGRpc21pc3MgdGhlIG1lbnUgYnV0IGNoYW5nZXMgdGhlIHNlbGVjdGlvbiByZWN0cyAoZm9yIGlu
c3RhbmNlLCBCb2xkKS4gVmVyaWZ5IHRoYXQgdGhlIGNhbGxvdXQgbWVudSByZW1haW5zIHZpc2li
bGUgYWZ0ZXIgdGFwcGluZyB0aGlzIGl0ZW0uIik7CisKKyAgICBhd2FpdCBVSUhlbHBlci5hY3Rp
dmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGVkaXRvcik7CisgICAgYXdhaXQgVUlI
ZWxwZXIua2V5RG93bigiYSIsIFsibWV0YUtleSJdKTsKKyAgICBhd2FpdCBVSUhlbHBlci53YWl0
Rm9yTWVudVRvU2hvdygpOworICAgIGF3YWl0IFVJSGVscGVyLmNob29zZU1lbnVBY3Rpb24oIkVt
YmlnZ2VuIik7CisKKyAgICBzZWxlY3Rpb25SZWN0cyA9IG51bGw7CisgICAgd2hpbGUgKCFzZWxl
Y3Rpb25SZWN0cyB8fCBzZWxlY3Rpb25SZWN0cy5sZW5ndGggIT0gMikKKyAgICAgICAgc2VsZWN0
aW9uUmVjdHMgPSBhd2FpdCBVSUhlbHBlci5nZXRVSVNlbGVjdGlvblZpZXdSZWN0cygpOworICAg
IGRpc21pc3NpbmdNZW51ID0gYXdhaXQgVUlIZWxwZXIuaXNEaXNtaXNzaW5nTWVudSgpOworICAg
IHNob3dpbmdNZW51ID0gYXdhaXQgVUlIZWxwZXIuaXNTaG93aW5nTWVudSgpOworCisgICAgc2hv
dWxkQmUoInNlbGVjdGlvblJlY3RzWzBdLnRvcCIsICIxMDEiKTsKKyAgICBzaG91bGRCZSgic2Vs
ZWN0aW9uUmVjdHNbMF0ud2lkdGgiLCAiMzIwIik7CisgICAgc2hvdWxkQmUoInNlbGVjdGlvblJl
Y3RzWzBdLmxlZnQiLCAiMSIpOworICAgIHNob3VsZEJlKCJzZWxlY3Rpb25SZWN0c1swXS5oZWln
aHQiLCAiMjkiKTsKKyAgICBzaG91bGRCZSgic2VsZWN0aW9uUmVjdHNbMV0udG9wIiwgIjEzMCIp
OworICAgIHNob3VsZEJlKCJzZWxlY3Rpb25SZWN0c1sxXS53aWR0aCIsICIxNzIiKTsKKyAgICBz
aG91bGRCZSgic2VsZWN0aW9uUmVjdHNbMV0ubGVmdCIsICIxIik7CisgICAgc2hvdWxkQmUoInNl
bGVjdGlvblJlY3RzWzFdLmhlaWdodCIsICIzMCIpOworICAgIHNob3VsZEJlKCJkaXNtaXNzaW5n
TWVudSIsICJmYWxzZSIpOworICAgIHNob3VsZEJlKCJzaG93aW5nTWVudSIsICJ0cnVlIik7CisK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJlZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT5UaGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBv
dmVyIHRoZSBsYXp5IGRvZy48L2Rpdj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91
aS1oZWxwZXIuanMKaW5kZXggMmM5ZTI5MDVhNjc5ZTBkNmQxNWFmOTE4MjJmZDczNmZkNjcxMTQ2
MS4uMzBhYjhiNTIxZTYwZGFhN2Y4Y2RlMjljZGY5MGFkZGY2ODRhZjNjYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNv
dXJjZXMvdWktaGVscGVyLmpzCkBAIC04MjcsNiArODI3LDIwIEBAIHdpbmRvdy5VSUhlbHBlciA9
IGNsYXNzIFVJSGVscGVyIHsKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgc3RhdGljIGlzU2hv
d2luZ01lbnUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVyLmlzU2hv
d2luZ01lbnVgLCByZXN1bHQgPT4gcmVzb2x2ZShyZXN1bHQgPT09ICJ0cnVlIikpOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBzdGF0aWMgaXNEaXNtaXNzaW5nTWVudSgpCisgICAgeworICAg
ICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIuaXNEaXNtaXNzaW5nTWVudWAsIHJlc3VsdCA9
PiByZXNvbHZlKHJlc3VsdCA9PT0gInRydWUiKSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAg
IHN0YXRpYyBtZW51UmVjdCgpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVz
b2x2ZSA9PiB7CkBAIC04MzgsNCArODUyLDIzIEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJ
SGVscGVyIHsKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRl
c3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29udHJvbGxlci5zZXRIYXJkd2FyZUtleWJvYXJkQXR0
YWNoZWQoJHthdHRhY2hlZCA/ICJ0cnVlIiA6ICJmYWxzZSJ9KWAsIHJlc29sdmUpKTsKICAgICB9
CisKKyAgICBzdGF0aWMgcmVjdEZvck1lbnVBY3Rpb24oYWN0aW9uKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5y
dW5VSVNjcmlwdChgCisgICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IHVpQ29udHJvbGxlci5y
ZWN0Rm9yTWVudUFjdGlvbigiJHthY3Rpb259Iik7CisgICAgICAgICAgICAgICAgdWlDb250cm9s
bGVyLnVpU2NyaXB0Q29tcGxldGUocmVjdCA/IEpTT04uc3RyaW5naWZ5KHJlY3QpIDogIiIpOwor
ICAgICAgICAgICAgYCwgc3RyaW5nUmVzdWx0ID0+IHsKKyAgICAgICAgICAgICAgICByZXNvbHZl
KHN0cmluZ1Jlc3VsdC5sZW5ndGggPyBKU09OLnBhcnNlKHN0cmluZ1Jlc3VsdCkgOiBudWxsKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYXN5bmMg
Y2hvb3NlTWVudUFjdGlvbihhY3Rpb24pCisgICAgeworICAgICAgICBjb25zdCBtZW51UmVjdCA9
IGF3YWl0IHRoaXMucmVjdEZvck1lbnVBY3Rpb24oYWN0aW9uKTsKKyAgICAgICAgaWYgKG1lbnVS
ZWN0KQorICAgICAgICAgICAgYXdhaXQgdGhpcy5hY3RpdmF0ZUF0KG1lbnVSZWN0LmxlZnQgKyBt
ZW51UmVjdC53aWR0aCAvIDIsIG1lbnVSZWN0LnRvcCArIG1lbnVSZWN0LmhlaWdodCAvIDIpOwor
ICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367604</attachid>
            <date>2019-04-16 20:06:47 -0700</date>
            <delta_ts>2019-04-16 20:34:16 -0700</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-196919-20190416200647.patch</filename>
            <type>text/plain</type>
            <size>43704</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBlYWU5OGU1ZjIyMWMzYzI0
ZTc1ZTI0YmYwNmUyMzUxMWJhOWIyOTMuLjMyZjQ5ZDcyYjcyMmFmNjBhZjg1ODJjYWNjNjU4NDIw
OWNiMjA3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTktMDQtMTUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dlYktpdDJd
IEFkZCBzdXBwb3J0IGZvciBob25vcmluZyAtW1VJTWVudUl0ZW0gZG9udERpc21pc3NdCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY5MTkKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQxNjMwNDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgQWRkcyBtb2Rlcm4gV2ViS2l0IHN1cHBvcnQgZm9yIC1kb250RGlz
bWlzcyBieSBpbXBsZW1lbnRpbmcgYSBjb3VwbGUgb2YgbmV3IHBsYXRmb3JtIGhvb2tzLiBDb3Zl
cmVkIGJ5IGEgbmV3CisgICAgICAgIGxheW91dCB0ZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mv
c2VsZWN0aW9uLWFmdGVyLWNoYW5naW5nLXRleHQtd2l0aC1jYWxsb3V0LW1lbnUuaHRtbC4KKwor
ICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKworICAgICAgICBEZWNsYXJl
IHRoZSBwcml2YXRlIC1kb250RGlzbWlzcyBwcm9wZXJ0eSBvZiBVSU1lbnVJdGVtLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyB3aWxsRmluaXNoSWdub3JpbmdDYWxsb3V0QmFyRmFkZUFmdGVyUGVyZm9ybWluZ0FjdGlv
bl0pOgorCisgICAgICAgIEFkZGl0aW9uYWxseSB0ZWFjaCB0aGUgd2ViIHZpZXcgKG5vdCBqdXN0
IHRoZSBjb250ZW50IHZpZXcpIHRvIHJlc3BvbmQgdG8gdGhlIGhvb2suIFRoaXMgbWF0dGVycyBp
biB0aGUgY2FzZQorICAgICAgICB3aGVyZSB0aGUgV2ViS2l0IGNsaWVudCAobW9zdCBub3RhYmx5
LCBNYWlsKSBvdmVycmlkZXMgV0tXZWJWaWV3IG1ldGhvZHMgdG8gZGVmaW5lIGN1c3RvbSBhY3Rp
b25zIGluIHRoZSBtZW51CisgICAgICAgIGNvbnRyb2xsZXIuIFRoaXMgc2NlbmFyaW8gaXMgZXhl
cmNpc2VkIGJ5IHRoZSBuZXcgbGF5b3V0IHRlc3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHdpbGxG
aW5pc2hJZ25vcmluZ0NhbGxvdXRCYXJGYWRlQWZ0ZXJQZXJmb3JtaW5nQWN0aW9uXSk6CisKKyAg
ICAgICAgSWYgYW4gYWN0aW9uIHdhcyBwZXJmb3JtZWQgd2hlcmUgY2FsbG91dCBiYXIgZmFkaW5n
IHdhcyBpZ25vcmVkLCB0aGVuIGluIFdlYktpdCwgZG9uJ3QgYWxsb3cgc2VsZWN0aW9uIGNoYW5n
ZXMKKyAgICAgICAgdG8gZmFkZSB0aGUgY2FsbG91dCBiYXIgdW50aWwgYWZ0ZXIgdGhlIG5leHQg
cmVtb3RlIGxheWVyIHRyZWUgY29tbWl0LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Vw
ZGF0ZUNoYW5nZWRTZWxlY3Rpb246XSk6CisKKyAgICAgICAgU3RvcCBzdXBwcmVzc2luZyBzZWxl
Y3Rpb24gdXBkYXRlcyB3aGVuIHNob3dpbmcgQi9JL1UgY29udHJvbHMsIG5vdyB0aGF0IHdlIGNh
biBwcm9wZXJseSBob25vciB0aGUgLWRvbnREaXNtaXNzCisgICAgICAgIHByb3BlcnR5LiBUaGlz
IHdhcyBvcmlnaW5hbGx5IGludHJvZHVjZWQgaW4gPHJkYXI6Ly9wcm9ibGVtLzE1MTk5OTI1Piwg
cHJlc3VtYWJseSB0byBlbnN1cmUgdGhhdCBCL0kvVSBidXR0b25zCisgICAgICAgICh3aGljaCBo
YXZlIC1kb250RGlzbWlzcyBzZXQgdG8gWUVTKSBkb24ndCB0cmlnZ2VyIHNlbGVjdGlvbiBjaGFu
Z2UgYW5kIGVuZCB1cCBkaXNtaXNzaW5nIHRoZW1zZWx2ZXM7IGhvd2V2ZXIsCisgICAgICAgIGlm
IHRyaWdnZXJpbmcgQi9JL1UgYWN0dWFsbHkgY2hhbmdlcyB0aGUgc2VsZWN0aW9uIHJlY3RzLCB0
aGlzIGFsc28gbWVhbnMgdGhhdCB0aGUgc2VsZWN0aW9uIHJlY3RzIG9uLXNjcmVlbgorICAgICAg
ICB3b3VsZCBiZSBzdGFsZSBhZnRlciB0cmlnZ2VyaW5nIHRoZXNlIGFjdGlvbnMuIFRoaXMgZWZm
ZWN0IGlzIG1vc3Qgbm90aWNlYWJsZSB3aGVuIGJvbGRpbmcgdGV4dC4KKworICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IHNob3VsZEFsbG93SGlkaW5nU2VsZWN0aW9uQ29tbWFuZHNdKToKKwogMjAx
OS0wNC0xNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBub24tdW5pZmllZCBidWlsZCBmaXggYWZ0ZXIgcjI0NDMwNy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggNDFjYjgxMDY1ODliZDFl
MTQyMDE0NTdiMTI4MDY0ZGE0NTJiY2NlMS4uMDBkNDIyMjdjYjZjYjRhY2IxMjgzMzkxNDRiYWUz
ZWUwMWIxMjlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJ
S2l0U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgPFVJS2l0L1VJS2V5Ym9hcmRJbnRsLmg+CiAjaW1w
b3J0IDxVSUtpdC9VSUtleWJvYXJkX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJTG9uZ1By
ZXNzR2VzdHVyZVJlY29nbml6ZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlNZW51Q29u
dHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVBlcmlwaGVyYWxIb3N0Lmg+CiAj
aW1wb3J0IDxVSUtpdC9VSVBlcmlwaGVyYWxIb3N0X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0
L1VJUGlja2VyQ29udGVudFZpZXdfUHJpdmF0ZS5oPgpAQCAtOTg3LDYgKzk4OCwxMCBAQCB0eXBl
ZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgVUlEcmFnT3BlcmF0aW9uKQogCiAjZW5kaWYKIAor
QGludGVyZmFjZSBVSU1lbnVJdGVtIChVSU1lbnVDb250cm9sbGVyX1NQSSkKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIGRvbnREaXNtaXNzOworQGVuZAorCiBAaW50ZXJmYWNlIFVJQ2FsbG91
dEJhciA6IFVJVmlldwogKyAoVUlDYWxsb3V0QmFyICopYWN0aXZlQ2FsbG91dEJhcjsKICsgKHZv
aWQpZmFkZVNoYXJlZENhbGxvdXRCYXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA0ODFjYWIxMzc4MDE1MjAzYWIxYjEzNjdlMTgyZGRh
YjU0NTIzODhiLi5iOWIxZTgwZmM0YzM3MjQ1MGM4MTE3YWE1M2NkZWE2MGI1MzNlMGE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1
NTMsNiArMTU1MywxMSBAQCAtIChpZCl0YXJnZXRGb3JBY3Rpb246KFNFTClhY3Rpb24gd2l0aFNl
bmRlcjooaWQpc2VuZGVyCiAgICAgcmV0dXJuIFtzdXBlciB0YXJnZXRGb3JBY3Rpb246YWN0aW9u
IHdpdGhTZW5kZXI6c2VuZGVyXTsKIH0KIAorLSAodm9pZCl3aWxsRmluaXNoSWdub3JpbmdDYWxs
b3V0QmFyRmFkZUFmdGVyUGVyZm9ybWluZ0FjdGlvbgoreworICAgIFtfY29udGVudFZpZXcgd2ls
bEZpbmlzaElnbm9yaW5nQ2FsbG91dEJhckZhZGVBZnRlclBlcmZvcm1pbmdBY3Rpb25dOworfQor
CiBzdGF0aWMgaW5saW5lIENHRmxvYXQgZmxvb3JUb0RldmljZVBpeGVsKENHRmxvYXQgaW5wdXQs
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIHJldHVybiBDR0Zsb29yKGlucHV0ICog
ZGV2aWNlU2NhbGVGYWN0b3IpIC8gZGV2aWNlU2NhbGVGYWN0b3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXgg
OTJiYTIwNDhkODM4ODdjNDA3ZDdiZDhlMzczYjk3MjFmYjM4NWQyYi4uNDFkODU1ZDViZDMxM2Fk
N2U3YmEwYWRhNjVjNDVhYWJhNDRlM2E1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMzE5LDYgKzMxOSw3
IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgQk9PTCBfZm9jdXNSZXF1aXJl
c1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZTsKIAogICAgIEJPT0wgX2hhc1NldFVwSW50ZXJhY3Rp
b25zOworICAgIE5TVUludGVnZXIgX2lnbm9yZVNlbGVjdGlvbkNvbW1hbmRGYWRlQ291bnQ7CiAg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNl
KT4gX2RvbVBhc3RlUmVxdWVzdEhhbmRsZXI7CiAgICAgQmxvY2tQdHI8dm9pZChVSVdLQXV0b2Nv
cnJlY3Rpb25Db250ZXh0ICopPiBfcGVuZGluZ0F1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXI7
CiAKQEAgLTQ0OSw2ICs0NTAsOCBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNU
SU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogLSAoV0tGb3Jt
SW5wdXRTZXNzaW9uICopX2Zvcm1JbnB1dFNlc3Npb247CiAtICh2b2lkKV9kaWRDaGFuZ2VXZWJW
aWV3RWRpdGFiaWxpdHk7CiAKKy0gKHZvaWQpd2lsbEZpbmlzaElnbm9yaW5nQ2FsbG91dEJhckZh
ZGVBZnRlclBlcmZvcm1pbmdBY3Rpb247CisKIC8vIFVJV2ViRm9ybUFjY2Vzc29yeURlbGVnYXRl
IHByb3RvY29sCiAtICh2b2lkKWFjY2Vzc29yeURvbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGI2
NzI5Nzk0M2Q3N2ZiMWU5Yzk1N2RiZjZmODk4ZWJiMjA5MDNhYzAuLmEwZDNmNzQyMDQ5Nzc1ODEw
ZTFmMzFiYzY5MzkzOTg5ODYwZGRlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzg4MCw2ICszODgw
LDE1IEBAIC0gKHZvaWQpZW5kU2VsZWN0aW9uQ2hhbmdlCiAgICAgW3NlbGYuaW5wdXREZWxlZ2F0
ZSBzZWxlY3Rpb25EaWRDaGFuZ2U6c2VsZl07CiB9CiAKKy0gKHZvaWQpd2lsbEZpbmlzaElnbm9y
aW5nQ2FsbG91dEJhckZhZGVBZnRlclBlcmZvcm1pbmdBY3Rpb24KK3sKKyAgICBfaWdub3JlU2Vs
ZWN0aW9uQ29tbWFuZEZhZGVDb3VudCsrOworICAgIF9wYWdlLT5jYWxsQWZ0ZXJOZXh0UHJlc2Vu
dGF0aW9uVXBkYXRlKFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYp
XSAoYXV0bykgeworICAgICAgICBpZiAoYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCkp
CisgICAgICAgICAgICBzdHJvbmdTZWxmLT5faWdub3JlU2VsZWN0aW9uQ29tbWFuZEZhZGVDb3Vu
dC0tOworICAgIH0pOworfQorCiAtICh2b2lkKV9kaWRDaGFuZ2VXZWJWaWV3RWRpdGFiaWxpdHkK
IHsKICAgICBpZiAoW19mb3JtQWNjZXNzb3J5VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHNldE5leHRQcmV2aW91c0l0ZW1zVmlzaWJsZTopXSkKQEAgLTU2NDcsOCArNTY1Niw3IEBA
IC0gKHZvaWQpX3VwZGF0ZUNoYW5nZWRTZWxlY3Rpb246KEJPT0wpZm9yY2UKICAgICAgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRvIGRvIGlmIHRoZSBzZWxlY3Rpb24g
aXMgY2hhbmdlZCBieSBKYXZhc2NyaXB0LgogICAgICAgICBpZiAoX3RleHRTZWxlY3Rpb25Bc3Np
c3RhbnQpIHsKICAgICAgICAgICAgIF9tYXJrZWRUZXh0ID0gKF9wYWdlLT5lZGl0b3JTdGF0ZSgp
Lmhhc0NvbXBvc2l0aW9uKSA/IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLm1hcmtlZFRleHQgOiBTdHJp
bmcoKTsKLSAgICAgICAgICAgIGlmICghX3Nob3dpbmdUZXh0U3R5bGVPcHRpb25zKQotICAgICAg
ICAgICAgICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBzZWxlY3Rpb25DaGFuZ2VkXTsKKyAg
ICAgICAgICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBzZWxlY3Rpb25DaGFuZ2VkXTsKICAg
ICAgICAgfQogCiAgICAgICAgIF9zZWxlY3Rpb25OZWVkc1VwZGF0ZSA9IE5POwpAQCAtNTY3MCw2
ICs1Njc4LDEyIEBAIC0gKHZvaWQpX3VwZGF0ZUNoYW5nZWRTZWxlY3Rpb246KEJPT0wpZm9yY2UK
ICAgICB9CiB9CiAKKy0gKEJPT0wpc2hvdWxkQWxsb3dIaWRpbmdTZWxlY3Rpb25Db21tYW5kcwor
eworICAgIEFTU0VSVChfaWdub3JlU2VsZWN0aW9uQ29tbWFuZEZhZGVDb3VudCA+PSAwKTsKKyAg
ICByZXR1cm4gIV9pZ25vcmVTZWxlY3Rpb25Db21tYW5kRmFkZUNvdW50OworfQorCiAtIChCT09M
KV9zaG91bGRTdXBwcmVzc1NlbGVjdGlvbkNvbW1hbmRzCiB7CiAgICAgcmV0dXJuICEhX3N1cHBy
ZXNzU2VsZWN0aW9uQXNzaXN0YW50UmVhc29uczsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3NGFhNzRiYWJiZTFiOWQ3ODVjZjAwZjA4ZWQxM2Qz
ZWMzMTZiYTc5Li5lMGIxNDcyNzc0YTY1NzVlZDk4OTIxZGMyMGY4MmMyYWY4YmRhMjA3IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
ODcgQEAKKzIwMTktMDQtMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW2lPU10gW1dlYktpdDJdIEFkZCBzdXBwb3J0IGZvciBob25vcmluZyAtW1VJ
TWVudUl0ZW0gZG9udERpc21pc3NdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTY5MTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQxNjMwNDU5Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIGlPUyBzdXBw
b3J0IGZvciBzZXZlcmFsIG5ldyB0ZXN0aW5nIGhvb2tzLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0
YWlsLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjppc0Rpc21pc3NpbmdNZW51
IGNvbnN0KToKKworICAgICAgICBBZGQgYSBuZXcgc2NyaXB0IGNvbnRyb2xsZXIgbWV0aG9kIHRv
IHF1ZXJ5IHdoZXRoZXIgdGhlIHBsYXRmb3JtIG1lbnUgKG9uIGlPUywgdGhlIGNhbGxvdXQgYmFy
KSBpcyBkb25lCisgICAgICAgIGRpc21pc3NpbmcuIFdlIGNvbnNpZGVyIHRoZSBtZW51IHRvIGJl
IGRpc21pc3NpbmcgaW4gYmV0d2VlbiB0aGUgYC1XaWxsSGlkZWAgYW5kIGAtRGlkSGlkZWAgbm90
aWZpY2F0aW9ucyBzZW50CisgICAgICAgIGJ5IFVJS2l0IHdoZW4gZGlzbWlzc2luZyB0aGUgY2Fs
bG91dCBiYXIgKGkuZS4gVUlNZW51Q29udHJvbGxlcikuCisKKyAgICAgICAgKiBUZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsOgor
ICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6aXNEaXNtaXNzaW5n
TWVudSBjb25zdCk6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpzZXRBbGxvd2VkTWVudUFjdGlvbnMpOgorCisgICAgICAgIEFkZCBhIG5ldyBo
ZWxwZXIgbWV0aG9kIHRvIHNwZWNpZnkgYSBsaXN0IG9mIGFsbG93ZWQgYWN0aW9ucyB3aGVuIGJy
aW5naW5nIHVwIHRoZSBtZW51LiBPbiBpT1MsIGluIHRoZSBjYXNlIG9mCisgICAgICAgIGFjdGlv
bnMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSwgdGhpcyBtYXRjaGVzIGFnYWluc3QgbWV0aG9k
IHNlbGVjdG9yIG5hbWVzIChmb3IgaW5zdGFuY2UsICJTZWxlY3RBbGwiLCBvcgorICAgICAgICAi
Q29weSIsIG9yICJQYXN0ZSIpLiBJbiB0aGUgY2FzZSBvZiB0aGUgY3VzdG9tIGFjdGlvbnMgaW5z
dGFsbGVkIHZpYSBgaW5zdGFsbEN1c3RvbU1lbnVBY3Rpb25gLCB3ZSBpbnN0ZWFkIG1hdGNoCisg
ICAgICAgIGFnYWluc3QgdGhlIG5hbWUgb2YgdGhlIGN1c3RvbSBhY3Rpb24uCisKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6aW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24pOgorCisgICAgICAgIEFk
ZCBhIG5ldyBoZWxwZXIgbWV0aG9kIHRvIGluc3RhbGwgYSBjdXN0b20gYWN0aW9uIGZvciB0aGUg
Y29udGV4dCBtZW51IChvbiBpT1MsIHRoaXMgaXMgdGhlIGNhbGxvdXQgYmFyKS4gVGhpcworICAg
ICAgICB0YWtlcyB0aGUgbmFtZSBvZiB0aGUgYWN0aW9uICh3aGljaCBhcHBlYXJzIGluIGEgYnV0
dG9uIGluIHRoZSBjYWxsb3V0IGJhciksIHdoZXRoZXIgdGhlIGFjdGlvbiBzaG91bGQgY2F1c2UK
KyAgICAgICAgdGhlIGNhbGxvdXQgYmFyIHRvIGF1dG9tYXRpY2FsbHkgZGlzbWlzcywgYW5kIGZp
bmFsbHksIGEgSmF2YVNjcmlwdCBjYWxsYmFjayB0aGF0IGlzIGludm9rZWQgd2hlbiB0aGUgYWN0
aW9uIGlzCisgICAgICAgIHRyaWdnZXJlZC4KKworICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpw
ZXJmb3JtQ3VzdG9tTWVudUFjdGlvbik6CisKKyAgICAgICAgSW52b2tlZCB3aGVuIHRoZSBjdXN0
b20gbWVudSBhY3Rpb24gaXMgdHJpZ2dlcmVkLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppbnN0
YWxsQ3VzdG9tTWVudUFjdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRB
bGxvd2VkTWVudUFjdGlvbnMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnBlcmZvcm1DdXN0b21N
ZW51QWN0aW9uKToKKworICAgICAgICBBZGQgcGx1bWJpbmcgdG8gY2FsbCBiYWNrIGludG8gdGhl
IGluamVjdGVkIGJ1bmRsZSB3aGVuIHBlcmZvcm1pbmcgdGhlIGN1c3RvbSBhY3Rpb24uCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6aW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24pOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dlZE1lbnVBY3Rpb25zKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rl
c3RSdW5uZXJXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyXSk6CisgICAgICAg
ICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgX2FkZEN1c3RvbUl0ZW1Ub01lbnVDb250cm9sbGVySWZO
ZWNlc3NhcnldKToKKworICAgICAgICBIZWxwZXIgbWV0aG9kIHRoYXQgY29udmVydHMgd2ViIHZp
ZXcncyBjdXJyZW50IGN1c3RvbSBtZW51IGFjdGlvbiBpbmZvIGludG8gYSBVSU1lbnVJdGVtLCBh
bmQgYWRkcyBpdCB0byB0aGUKKyAgICAgICAgc2hhcmVkIG1lbnUgY29udHJvbGxlci4gVGhpcyBp
cyBhbHNvIGludm9rZWQgd2hlbiB0aGUgd2ViIHZpZXcgYmVjb21lcyBmaXJzdCByZXNwb25kZXIs
IHdoaWNoIG1hdGNoZXMgYmVoYXZpb3IKKyAgICAgICAgaW4gdGhlIE1haWwgYXBwIG9uIGlPUy4K
KworICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IGluc3RhbGxDdXN0b21NZW51QWN0aW9u
OmRpc21pc3Nlc0F1dG9tYXRpY2FsbHk6Y2FsbGJhY2s6XSk6CisgICAgICAgICgtW1Rlc3RSdW5u
ZXJXS1dlYlZpZXcgc2V0QWxsb3dlZE1lbnVBY3Rpb25zOl0pOgorICAgICAgICAoLVtUZXN0UnVu
bmVyV0tXZWJWaWV3IHJlc2V0Q3VzdG9tTWVudUFjdGlvbl0pOgorICAgICAgICAoLVtUZXN0UnVu
bmVyV0tXZWJWaWV3IHBlcmZvcm1DdXN0b21BY3Rpb246XSk6CisgICAgICAgICgtW1Rlc3RSdW5u
ZXJXS1dlYlZpZXcgY2FuUGVyZm9ybUFjdGlvbjp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoLVtU
ZXN0UnVubmVyV0tXZWJWaWV3IF93aWxsSGlkZU1lbnVdKToKKyAgICAgICAgKC1bVGVzdFJ1bm5l
cldLV2ViVmlldyBfZGlkSGlkZU1lbnVdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lv
cy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisKKyAgICAgICAgUmVzZXQgYm90
aCBhbnkgY3VzdG9tIGluc3RhbGxlZCBhY3Rpb25zIG9uIHRoZSBzaGFyZWQgbWVudSBjb250cm9s
bGVyLCBhcyB3ZWxsIGFzIHRoZSBsaXN0IG9mIGFsbG93ZWQgYWN0aW9ucywKKyAgICAgICAgaWYg
c3BlY2lmaWVkLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmlzRGlzbWlz
c2luZ01lbnUgY29uc3QpOgorCiAyMDE5LTA0LTE2ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2Fy
ZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgc2hhcmluZyBmcm9tIGltYWdlU2hlZXQg
b24gYW4gaW1hZ2UgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGUxY2JkNmNhZDUzNmE0YjI3ZTY1YWVkOTZiZGY2
OThmMDk4YWIyZjguLmJhMWYzZWRhNzNlZTljYzNmMzkyNTQwNDY0ZGIyMmIwYTliNzExN2EgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bQpAQCAtMzgxLDYgKzM4MSwxMSBAQCBib29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNTaG93aW5n
TWVudSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFVJU2NyaXB0Q29udHJv
bGxlcjo6aXNEaXNtaXNzaW5nTWVudSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cGxhdGZvcm1TZXREaWRFbmRTY3JvbGxpbmdDYWxs
YmFjaygpCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbApp
bmRleCAxN2E1NDRjNTUzZDRkNmU5N2I2ZWRhYTZmYTJkNzM5YmZhMmM3MGYyLi4zYjY5Y2RlMTI3
NTNkNDEzMDNjNjE1MjljZjc2Yjg0MDJjZmFiNDFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRs
CisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJ
U2NyaXB0Q29udHJvbGxlci5pZGwKQEAgLTIyNyw2ICsyMjcsNyBAQCBpbnRlcmZhY2UgVUlTY3Jp
cHRDb250cm9sbGVyIHsKIAogICAgIGF0dHJpYnV0ZSBvYmplY3QgZGlkU2hvd01lbnVDYWxsYmFj
azsKICAgICBhdHRyaWJ1dGUgb2JqZWN0IGRpZEhpZGVNZW51Q2FsbGJhY2s7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gaXNEaXNtaXNzaW5nTWVudTsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBpc1Nob3dpbmdNZW51OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmpl
Y3QgbWVudVJlY3Q7CiAgICAgb2JqZWN0IHJlY3RGb3JNZW51QWN0aW9uKERPTVN0cmluZyBhY3Rp
b24pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYWRjNzI2MDdiZjJkOTE2YjgwNGM0
YjMyYTg5YTM1YTEzOWQ4Mzk4OC4uMzllZmNhMTZiNTU2YmIxNjkwN2FiY2I5YWYyNDUxN2MxODcx
YmFkNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01OTgsNiArNTk4LDExIEBAIEpT
T2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6cmVjdEZvck1lbnVBY3Rpb24oSlNTdHJpbmdS
ZWYpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgVUlTY3JpcHRDb250cm9s
bGVyOjppc0Rpc21pc3NpbmdNZW51KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IGJvb2wgVUlTY3JpcHRDb250cm9sbGVyOjppc1Nob3dpbmdNZW51KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDU2MGEzZDJjOTIzMTM4YmJm
OTQ1M2VjNDFkMDMzZWJhZTE3YzliY2UuLjBiZWRjMDRhMTJlYzRhYzNjMjM0MGI0MDdkNzdlMGIw
ZWNlZGI4YTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xNzUsNiArMTc1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0V2lsbFByZXNlbnRQb3BvdmVyQ2FsbGJhY2soSlNWYWx1ZVJlZik7
CiAgICAgSlNWYWx1ZVJlZiB3aWxsUHJlc2VudFBvcG92ZXJDYWxsYmFjaygpIGNvbnN0OwogCisg
ICAgYm9vbCBpc0Rpc21pc3NpbmdNZW51KCkgY29uc3Q7CiAgICAgYm9vbCBpc1Nob3dpbmdNZW51
KCkgY29uc3Q7CiAgICAgSlNPYmplY3RSZWYgcmVjdEZvck1lbnVBY3Rpb24oSlNTdHJpbmdSZWYg
YWN0aW9uKSBjb25zdDsKICAgICBKU09iamVjdFJlZiBtZW51UmVjdCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZTdiNTgxM2ZkMTBiNWU4NGYyYzE1N2MyYjc2MmRiZDkw
YzRjNzdhMi4uNTA1OWIwYzA5ODA0ZTBhMjRlNjRjNjg5MGE0OGI5MzBlOWM1ODRjNSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0yNzIsNiArMjcyLDEwIEBAIGludGVyZmFjZSBUZXN0
UnVubmVyIHsKIAogICAgIHZvaWQgYWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbChET01TdHJpbmcg
Y2hhbm5lbCk7CiAKKyAgICAvLyBDb250ZXh0dWFsIG1lbnUgYWN0aW9ucworICAgIHZvaWQgc2V0
QWxsb3dlZE1lbnVBY3Rpb25zKG9iamVjdCBhY3Rpb25zKTsKKyAgICB2b2lkIGluc3RhbGxDdXN0
b21NZW51QWN0aW9uKERPTVN0cmluZyBuYW1lLCBib29sZWFuIGRpc21pc3Nlc0F1dG9tYXRpY2Fs
bHksIG9iamVjdCBjYWxsYmFjayk7CisKICAgICAvLyBHYW1lcGFkCiAgICAgdm9pZCBzZXRNb2Nr
R2FtZXBhZERldGFpbHModW5zaWduZWQgbG9uZyBpbmRleCwgRE9NU3RyaW5nIGlkLCB1bnNpZ25l
ZCBsb25nIGF4aXNDb3VudCwgdW5zaWduZWQgbG9uZyBidXR0b25Db3VudCk7CiAgICAgdm9pZCBz
ZXRNb2NrR2FtZXBhZEF4aXNWYWx1ZSh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25n
IGF4aXNJbmRleCwgZG91YmxlIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNDljZGNmODEx
OGU3NmY0OTIxZWQ3ZTc4NzJlY2FkZTM0MjdmOTllYi4uZWVjZDMwYzQ4MTVhOGViZWYzM2Q1OTMz
MjliM2VmMDI3YzU4MDQ5MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTQ0NSw2ICs0NDUsMTEgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5kaWRHZXRBcHBs
aWNhdGlvbk1hbmlmZXN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlBlcmZvcm1DdXN0b21NZW51
QWN0aW9uIikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5wZXJmb3JtQ3VzdG9tTWVudUFjdGlv
bigpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIAogICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBlcnJvck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJFcnJvciIpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZXJyb3JNZXNz
YWdlQm9keShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVW5rbm93biIp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCmluZGV4IDUwYjk5OWUzYWVkMjk5MGZhOGE4MmQ1Yzg4YTVlNDZmMzFlYzk1Njgu
LjE0YWYzY2UzNmE1Njc0ODVjZDk5MmQ2M2Q4ZjU2YWZhYzMyMjQzMzcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAt
NzkzLDYgKzc5Myw3IEBAIGVudW0gewogICAgIFRleHREaWRDaGFuZ2VJblRleHRGaWVsZENhbGxi
YWNrSUQsCiAgICAgVGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nQ2FsbGJhY2tJRCwKICAgICBUZXh0
RmllbGREaWRFbmRFZGl0aW5nQ2FsbGJhY2tJRCwKKyAgICBDdXN0b21NZW51QWN0aW9uQ2FsbGJh
Y2tJRCwKICAgICBGaXJzdFVJU2NyaXB0Q2FsbGJhY2tJRCA9IDEwMAogfTsKIApAQCAtMTM0Miw2
ICsxMzQzLDUyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6cnVuVUlTY3JpcHRDYWxsYmFjayh1bnNpZ25l
ZCBjYWxsYmFja0lELCBKU1N0cmluZ1JlZiByZXN1bHQpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxs
YmFjayhjYWxsYmFja0lELCAxLCAmcmVzdWx0VmFsdWUpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6
OnNldEFsbG93ZWRNZW51QWN0aW9ucyhKU1ZhbHVlUmVmIGFjdGlvbnMpCit7CisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJTZXRBbGxvd2VkTWVudUFjdGlvbnMiKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tNdXRhYmxlQXJyYXlSZWY+IG1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZUFycmF5Q3Jl
YXRlKCkpOworCisgICAgYXV0byBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBh
Z2UoKS0+cGFnZSgpOworICAgIGF1dG8gbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZy
YW1lKHBhZ2UpOworICAgIGF1dG8gY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0
Q29udGV4dChtYWluRnJhbWUpOworICAgIGF1dG8gbGVuZ3RoUHJvcGVydHlOYW1lID0gYWRvcHQo
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsKKyAgICBhdXRvIGFjdGlv
bnNBcnJheSA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhY3Rpb25zLCBudWxscHRyKTsKKyAg
ICBhdXRvIGxlbmd0aFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBhY3Rpb25z
QXJyYXksIGxlbmd0aFByb3BlcnR5TmFtZS5nZXQoKSwgbnVsbHB0cik7CisgICAgaWYgKCFKU1Zh
bHVlSXNOdW1iZXIoY29udGV4dCwgbGVuZ3RoVmFsdWUpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGxlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRl
eHQsIGxlbmd0aFZhbHVlLCAwKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICBhdXRvIHZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgo
Y29udGV4dCwgYWN0aW9uc0FycmF5LCBpLCAwKTsKKyAgICAgICAgaWYgKCFKU1ZhbHVlSXNTdHJp
bmcoY29udGV4dCwgdmFsdWUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0
byBhY3Rpb25OYW1lID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCB2YWx1ZSwg
MCkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYWN0aW9uKEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGFjdGlvbk5hbWUuZ2V0KCkpKTsKKyAgICAgICAgV0tB
cnJheUFwcGVuZEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCksIGFjdGlvbi5nZXQoKSk7CisgICAgfQor
CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1l
c3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjppbnN0YWxsQ3VzdG9tTWVu
dUFjdGlvbihKU1N0cmluZ1JlZiBuYW1lLCBib29sIGRpc21pc3Nlc0F1dG9tYXRpY2FsbHksIEpT
VmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soQ3VzdG9t
TWVudUFjdGlvbkNhbGxiYWNrSUQsIGNhbGxiYWNrKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiSW5zdGFsbEN1c3RvbU1lbnVBY3Rpb24iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxl
RGljdGlvbmFyeVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tNdXRhYmxlRGljdGlvbmFyeUNy
ZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBuYW1lS2V5KEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJuYW1lIikpOworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBuYW1lVmFsdWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJp
bmcobmFtZSkpOworICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCksIG5h
bWVLZXkuZ2V0KCksIG5hbWVWYWx1ZS5nZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gZGlzbWlzc2VzQXV0b21hdGljYWxseUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiZGlzbWlzc2VzQXV0b21hdGljYWxseSIpKTsKKyAgICBXS1JldGFpblB0
cjxXS0Jvb2xlYW5SZWY+IGRpc21pc3Nlc0F1dG9tYXRpY2FsbHlWYWx1ZShBZG9wdFdLLCBXS0Jv
b2xlYW5DcmVhdGUoZGlzbWlzc2VzQXV0b21hdGljYWxseSkpOworICAgIFdLRGljdGlvbmFyeVNl
dEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCksIGRpc21pc3Nlc0F1dG9tYXRpY2FsbHlLZXkuZ2V0KCks
IGRpc21pc3Nlc0F1dG9tYXRpY2FsbHlWYWx1ZS5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBhZ2VQ
b3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1l
c3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5l
cjo6aW5zdGFsbERpZEJlZ2luU3dpcGVDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewog
ICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKERpZEJlZ2luU3dpcGVDYWxsYmFja0lELCBjYWxs
YmFjayk7CkBAIC0yNDY1LDYgKzI1MTIsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpkaWRHZXRBcHBs
aWNhdGlvbk1hbmlmZXN0KCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKEdldEFwcGxpY2F0
aW9uTWFuaWZlc3RDYWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpwZXJmb3JtQ3Vz
dG9tTWVudUFjdGlvbigpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhDdXN0b21NZW51
QWN0aW9uQ2FsbGJhY2tJRCk7Cit9CisKIHNpemVfdCBUZXN0UnVubmVyOjp1c2VyU2NyaXB0SW5q
ZWN0ZWRDb3VudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS51c2VyU2NyaXB0SW5qZWN0ZWRDb3VudCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAwOWE5NWVhMGNiMDFmZWUw
Y2FkNzA4MzA2ZjllNmQwNjc0NzdiOTA1Li43NzAxYjkwOGUwMmQwYTY2OWM3MmI2NTIwZjE5NzBl
ZDE0NmI3YzIyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaApAQCAtMzU1LDYgKzM1NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
dW5VSVNjcmlwdChKU1N0cmluZ1JlZiBzY3JpcHQsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAg
IHZvaWQgcnVuVUlTY3JpcHRDYWxsYmFjayh1bnNpZ25lZCBjYWxsYmFja0lELCBKU1N0cmluZ1Jl
ZiByZXN1bHQpOwogCisgICAgLy8gQ29udGV4dHVhbCBtZW51IGFjdGlvbnMKKyAgICB2b2lkIHNl
dEFsbG93ZWRNZW51QWN0aW9ucyhKU1ZhbHVlUmVmKTsKKyAgICB2b2lkIGluc3RhbGxDdXN0b21N
ZW51QWN0aW9uKEpTU3RyaW5nUmVmIG5hbWUsIGJvb2wgZGlzbWlzc2VzQXV0b21hdGljYWxseSwg
SlNWYWx1ZVJlZiBjYWxsYmFjayk7CisgICAgdm9pZCBwZXJmb3JtQ3VzdG9tTWVudUFjdGlvbigp
OworCiAgICAgdm9pZCBpbnN0YWxsRGlkQmVnaW5Td2lwZUNhbGxiYWNrKEpTVmFsdWVSZWYpOwog
ICAgIHZvaWQgaW5zdGFsbFdpbGxFbmRTd2lwZUNhbGxiYWNrKEpTVmFsdWVSZWYpOwogICAgIHZv
aWQgaW5zdGFsbERpZEVuZFN3aXBlQ2FsbGJhY2soSlNWYWx1ZVJlZik7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGFlNTQ3YjZlOWY0MjRiOWEwZDFkZTVi
MjM0MTgzOGY2MGE1NzVkZTUuLjA0NmE1Zjc5ZTQ4OThlMDRhYjY2ODJhNDY1YjU4Yzg4MzkzNTNh
MTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNTEx
LDYgKzM1MTEsMTQgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6Y2FuRG9TZXJ2ZXJUcnVzdEV2YWx1
YXRpb25Jbk5ldHdvcmtQcm9jZXNzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6Omluc3RhbGxDdXN0b21NZW51QWN0aW9uKGNvbnN0IFN0cmluZyYs
IGJvb2wpCit7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEFsbG93ZWRNZW51QWN0aW9u
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCit7Cit9CisKICNlbmRpZgogCiB2b2lkIFRlc3RDb250
cm9sbGVyOjpzZW5kRGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3Rpbmco
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDY4OTUyNmRmZDcw
NzQzZmQ1MmIzOWUwZDhmODY3MGNiMzFiMjBkODMuLjcyMmRkMDhmOTcyZTg5YjhkYjg0ZDU5NTVm
MWU3OGZiMWNiZGNiMzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
QEAgLTI5Niw2ICsyOTYsOSBAQCBwdWJsaWM6CiAgICAgVUlLZXlib2FyZElucHV0TW9kZSAqb3Zl
cnJpZGRlbktleWJvYXJkSW5wdXRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZGVuS2V5
Ym9hcmRJbnB1dE1vZGUuZ2V0KCk7IH0KICNlbmRpZgogCisgICAgdm9pZCBzZXRBbGxvd2VkTWVu
dUFjdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIGluc3RhbGxDdXN0b21N
ZW51QWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBkaXNtaXNzZXNBdXRvbWF0aWNhbGx5
KTsKKwogICAgIGJvb2wgY2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNz
KCkgY29uc3Q7CiAgICAgdWludDY0X3Qgc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxs
c0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0Nh
bGxzQ291bnQ7IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApp
bmRleCAwNjk5Y2M3ZDE1YTg4MjRhOGYzMmI1NzJmYTFmMDk2MzU0N2I1ODAwLi45YjIwMDNiMjY3
NDJiMjQyMDBjNTAyMjBmZTMyNzNmYmJmNmFmZGQwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtNzY4LDYgKzc2OCwyNyBAQCB2b2lkIFRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNz
YWdlTmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJJbnN0YWxsQ3VzdG9tTWVudUFjdGlvbiIpKSB7
CisgICAgICAgIGF1dG8gbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0
aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBuYW1lS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJuYW1lIikp
OworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbmFtZSA9IHN0YXRpY19jYXN0PFdL
U3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFy
eSwgbmFtZUtleS5nZXQoKSkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGlz
bWlzc2VzQXV0b21hdGljYWxseUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiZGlzbWlzc2VzQXV0b21hdGljYWxseSIpKTsKKyAgICAgICAgYXV0byBkaXNtaXNzZXNB
dXRvbWF0aWNhbGx5ID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgZGlzbWlzc2VzQXV0b21hdGljYWxseUtl
eS5nZXQoKSkpOworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaW5zdGFsbEN1
c3RvbU1lbnVBY3Rpb24odG9XVEZTdHJpbmcobmFtZS5nZXQoKSksIFdLQm9vbGVhbkdldFZhbHVl
KGRpc21pc3Nlc0F1dG9tYXRpY2FsbHkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0QWxsb3dl
ZE1lbnVBY3Rpb25zIikpIHsKKyAgICAgICAgYXV0byBtZXNzYWdlQm9keUFycmF5ID0gc3RhdGlj
X2Nhc3Q8V0tBcnJheVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBhdXRvIHNpemUgPSBXS0Fy
cmF5R2V0U2l6ZShtZXNzYWdlQm9keUFycmF5KTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gYWN0
aW9uczsKKyAgICAgICAgYWN0aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworICAg
ICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgc2l6ZTsgKytpbmRleCkKKyAgICAg
ICAgICAgIGFjdGlvbnMuYXBwZW5kKHRvV1RGU3RyaW5nKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVm
PihXS0FycmF5R2V0SXRlbUF0SW5kZXgobWVzc2FnZUJvZHlBcnJheSwgaW5kZXgpKSkpOworICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0QWxsb3dlZE1lbnVBY3Rpb25zKGFj
dGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRPcGVuUGFuZWxGaWxlVVJMcyIpKSB7CiAg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRPcGVuUGFuZWxGaWxlVVJMcyhz
dGF0aWNfY2FzdDxXS0FycmF5UmVmPihtZXNzYWdlQm9keSkpOwogICAgICAgICByZXR1cm47CkBA
IC0xNzg1LDQgKzE4MDYsMTAgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcEFkQ2xpY2tBdHRy
aWJ1dGlvbigpCiAgICAgbV9zaG91bGREdW1wQWRDbGlja0F0dHJpYnV0aW9uID0gdHJ1ZTsKIH0K
IAordm9pZCBUZXN0SW52b2NhdGlvbjo6cGVyZm9ybUN1c3RvbU1lbnVBY3Rpb24oKQoreworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlBlcmZvcm1DdXN0b21NZW51QWN0aW9uIikpOworICAgIFdL
UGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmlu
ZGV4IDJiZGJhYWE1N2U1OTIxMWI5ZDE5ODk5NTdmMGQ4NmMwMjUxYTc3YzAuLjlkM2NmMmZjZmZm
ZmEyM2VkZDQ0YzA4MDA3MTdmNjk1YmQ2OTQ0OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmgKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuT3Bl
bldpbmRvd3MoKSBjb25zdCB7IHJldHVybiBtX2Nhbk9wZW5XaW5kb3dzOyB9CiAKICAgICB2b2lk
IGR1bXBBZENsaWNrQXR0cmlidXRpb24oKTsKKyAgICB2b2lkIHBlcmZvcm1DdXN0b21NZW51QWN0
aW9uKCk7CiAKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJl
Zj4gY3JlYXRlVGVzdFNldHRpbmdzRGljdGlvbmFyeSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IGJkNWYzOWYyY2Uy
NTY0YTBlZDMzZjMxODg3N2E3MWUxOTI2NDE5MDQuLjQwODc3MzViYTI1YmI4NTNhMmU2Y2ZmMDAw
ZjJlMDMxYWJiY2ZhMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTQwMCw2ICs0MDAsMzIgQEAgYm9vbCBUZXN0Q29u
dHJvbGxlcjo6Y2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKCkgY29u
c3QKICNlbmRpZgogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjppbnN0YWxsQ3VzdG9tTWVudUFj
dGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgZGlzbWlzc2VzQXV0b21hdGljYWxseSkKK3sK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGF1dG8qIGludm9jYXRpb24gPSBtX2N1cnJl
bnRJbnZvY2F0aW9uLmdldCgpOworICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBp
bnN0YWxsQ3VzdG9tTWVudUFjdGlvbjpuYW1lIGRpc21pc3Nlc0F1dG9tYXRpY2FsbHk6ZGlzbWlz
c2VzQXV0b21hdGljYWxseSBjYWxsYmFjazpbaW52b2NhdGlvbl0geworICAgICAgICBpZiAoVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmlzQ3VycmVudEludm9jYXRpb24oaW52b2NhdGlvbikp
CisgICAgICAgICAgICBpbnZvY2F0aW9uLT5wZXJmb3JtQ3VzdG9tTWVudUFjdGlvbigpOworICAg
IH1dOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKGRp
c21pc3Nlc0F1dG9tYXRpY2FsbHkpOworI2VuZGlmCit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldEFsbG93ZWRNZW51QWN0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWN0aW9ucykKK3sK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGF1dG8gYWN0aW9uTmFtZXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6YWN0
aW9ucy5zaXplKCldKTsKKyAgICBmb3IgKGF1dG8gYWN0aW9uIDogYWN0aW9ucykKKyAgICAgICAg
W2FjdGlvbk5hbWVzIGFkZE9iamVjdDphY3Rpb25dOworICAgIFttX21haW5XZWJWaWV3LT5wbGF0
Zm9ybVZpZXcoKSBzZXRBbGxvd2VkTWVudUFjdGlvbnM6YWN0aW9uTmFtZXMuZ2V0KCldOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oYWN0aW9ucyk7CisjZW5kaWYKK30KKwogYm9vbCBUZXN0Q29u
dHJvbGxlcjo6aXNEb2luZ01lZGlhQ2FwdHVyZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbWFp
bldlYlZpZXctPnBsYXRmb3JtVmlldygpLl9tZWRpYUNhcHR1cmVTdGF0ZSAhPSBfV0tNZWRpYUNh
cHR1cmVTdGF0ZU5vbmU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RSdW5uZXJXS1dlYlZpZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVz
dFJ1bm5lcldLV2ViVmlldy5oCmluZGV4IDk2ZTUxNTI2MWIyNTg4ZjM3MzZlNjg4OTE1MTcxYTA5
OWM0ZTg2NGUuLmQyMTY0MDQ3MTQ0ZDRmNGI2MTg2OGMxMmIxMDg4MmIwYTMwODU2ZmMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5o
CkBAIC00OSw2ICs0OSwxMSBAQAogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5y
b3RhdGlvbkRpZEVuZENhbGxiYWNrKSh2b2lkKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSBOU1N0cmluZyAqYWNjZXNzaWJpbGl0eVNwZWFrU2VsZWN0aW9uQ29udGVudDsKIAorLSAodm9p
ZClzZXRBbGxvd2VkTWVudUFjdGlvbnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilhY3Rpb25zOwor
CistICh2b2lkKXJlc2V0Q3VzdG9tTWVudUFjdGlvbjsKKy0gKHZvaWQpaW5zdGFsbEN1c3RvbU1l
bnVBY3Rpb246KE5TU3RyaW5nICopbmFtZSBkaXNtaXNzZXNBdXRvbWF0aWNhbGx5OihCT09MKWRp
c21pc3Nlc0F1dG9tYXRpY2FsbHkgY2FsbGJhY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY2FsbGJhY2s7
CisKIC0gKHZvaWQpcmVzZXRJbnRlcmFjdGlvbkNhbGxiYWNrczsKIC0gKHZvaWQpem9vbVRvU2Nh
bGU6KGRvdWJsZSlzY2FsZSBhbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKWFjY2Vzc2liaWxp
dHlSZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CkBAIC01OCw2ICs2Myw3IEBACiAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlzU2hvd2luZ0tleWJvYXJkKSBCT09M
IHNob3dpbmdLZXlib2FyZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVy
PWlzU2hvd2luZ01lbnUpIEJPT0wgc2hvd2luZ01lbnU7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIGdldHRlcj1pc0Rpc21pc3NpbmdNZW51KSBCT09MIGRpc21pc3NpbmdNZW51Owog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9aXNTaG93aW5nUG9wb3Zlcikg
Qk9PTCBzaG93aW5nUG9wb3ZlcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIEJPT0wg
dXNlc1NhZmFyaUxpa2VSb3RhdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwg
Z2V0dGVyPWlzSW50ZXJhY3RpbmdXaXRoRm9ybUNvbnRyb2wpIEJPT0wgaW50ZXJhY3RpbmdXaXRo
Rm9ybUNvbnRyb2w7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rl
c3RSdW5uZXJXS1dlYlZpZXcubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RS
dW5uZXJXS1dlYlZpZXcubW0KaW5kZXggMjU4MDgwZTQ3OWVlZGFiNzRmZDcwMWNlMzgzMmQ0ZGE4
NTEzYTJiMi4uOTAyOTY4OTRjZjk0YmE4YTc0MzQzYmUwZDg1YzlkYzU2YTY0NzdmYyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1t
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5t
bQpAQCAtMjksNiArMjksOCBAQAogI2ltcG9ydCAiV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5m
by5oIgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9P
cHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKQEAgLTQ1LDE2ICs0NywyNSBAQCAtICh2b2lkKV9zY2hlZHVsZVZpc2libGVDb250
ZW50UmVjdFVwZGF0ZTsKIEBlbmQKICNlbmRpZgogCitzdHJ1Y3QgQ3VzdG9tTWVudUFjdGlvbklu
Zm8geworICAgIFJldGFpblB0cjxOU1N0cmluZz4gbmFtZTsKKyAgICBCT09MIGRpc21pc3Nlc0F1
dG9tYXRpY2FsbHkgeyBOTyB9OworICAgIEJsb2NrUHRyPHZvaWQoKT4gY2FsbGJhY2s7Cit9Owor
CiBAaW50ZXJmYWNlIFRlc3RSdW5uZXJXS1dlYlZpZXcgKCkgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+
IHsKICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IG1fc3RhYmxlU3RhdGVPdmVycmlkZTsKICAgICBC
T09MIF9pc0ludGVyYWN0aW5nV2l0aEZvcm1Db250cm9sOwogICAgIEJPT0wgX3Njcm9sbGluZ1Vw
ZGF0ZXNEaXNhYmxlZDsKKyAgICBPcHRpb25hbDxDdXN0b21NZW51QWN0aW9uSW5mbz4gX2N1c3Rv
bU1lbnVBY3Rpb25JbmZvOworICAgIFJldGFpblB0cjxOU0FycmF5PE5TU3RyaW5nICo+PiBfYWxs
b3dlZE1lbnVBY3Rpb25zOwogfQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAo
Xnpvb21Ub1NjYWxlQ29tcGxldGlvbkhhbmRsZXIpKHZvaWQpOwogQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIHZvaWQgKF5yZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudENvbXBsZXRpb25I
YW5kbGVyKSh2b2lkKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNTaG93aW5nS2V5
Ym9hcmQsIHNldHRlcj1zZXRJc1Nob3dpbmdLZXlib2FyZDopIEJPT0wgc2hvd2luZ0tleWJvYXJk
OwogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1pc1Nob3dpbmdNZW51LCBzZXR0ZXI9c2V0
SXNTaG93aW5nTWVudTopIEJPT0wgc2hvd2luZ01lbnU7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Z2V0dGVyPWlzRGlzbWlzc2luZ01lbnUsIHNldHRlcj1zZXRJc0Rpc21pc3NpbmdNZW51OikgQk9P
TCBkaXNtaXNzaW5nTWVudTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNTaG93aW5n
UG9wb3Zlciwgc2V0dGVyPXNldElzU2hvd2luZ1BvcG92ZXI6KSBCT09MIHNob3dpbmdQb3BvdmVy
OwogCiBAZW5kCkBAIC03OSw2ICs5MCw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1l
OihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvCiAgICAg
ICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2ludm9rZVNo
b3dLZXlib2FyZENhbGxiYWNrSWZOZWNlc3NhcnkpIG5hbWU6VUlLZXlib2FyZERpZFNob3dOb3Rp
ZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoX2ludm9rZUhpZGVLZXlib2FyZENhbGxiYWNrSWZOZWNlc3Nhcnkp
IG5hbWU6VUlLZXlib2FyZERpZEhpZGVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgICAg
IFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2RpZFNob3dNZW51
KSBuYW1lOlVJTWVudUNvbnRyb2xsZXJEaWRTaG93TWVudU5vdGlmaWNhdGlvbiBvYmplY3Q6bmls
XTsKKyAgICAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihf
d2lsbEhpZGVNZW51KSBuYW1lOlVJTWVudUNvbnRyb2xsZXJXaWxsSGlkZU1lbnVOb3RpZmljYXRp
b24gb2JqZWN0Om5pbF07CiAgICAgICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IoX2RpZEhpZGVNZW51KSBuYW1lOlVJTWVudUNvbnRyb2xsZXJEaWRIaWRlTWVu
dU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKICAgICAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfd2lsbFByZXNlbnRQb3BvdmVyKSBuYW1lOkAiVUlQb3Bv
dmVyQ29udHJvbGxlcldpbGxQcmVzZW50UG9wb3Zlck5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbF07
CiAgICAgICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2Rp
ZERpc21pc3NQb3BvdmVyKSBuYW1lOkAiVUlQb3BvdmVyQ29udHJvbGxlckRpZERpc21pc3NQb3Bv
dmVyTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsXTsKQEAgLTEzMiw2ICsxNDQsODggQEAgLSAodm9p
ZClfZGlkRGlzbWlzc0ZvcmNlUHJlc3NQcmV2aWV3CiAgICAgICAgIHNlbGYuZGlkRGlzbWlzc0Zv
cmNlUHJlc3NQcmV2aWV3Q2FsbGJhY2soKTsKIH0KIAorLSAoQk9PTCliZWNvbWVGaXJzdFJlc3Bv
bmRlcgoreworICAgIEJPT0wgd2FzRmlyc3RSZXNwb25kZXIgPSBzZWxmLmlzRmlyc3RSZXNwb25k
ZXI7CisgICAgQk9PTCBiZWNhbWVGaXJzdFJlc3BvbmRlciA9IFtzdXBlciBiZWNvbWVGaXJzdFJl
c3BvbmRlcl07CisgICAgaWYgKCF3YXNGaXJzdFJlc3BvbmRlciAmJiBiZWNhbWVGaXJzdFJlc3Bv
bmRlcikKKyAgICAgICAgW3NlbGYgX2FkZEN1c3RvbUl0ZW1Ub01lbnVDb250cm9sbGVySWZOZWNl
c3NhcnldOworICAgIHJldHVybiBiZWNhbWVGaXJzdFJlc3BvbmRlcjsKK30KKworLSAodm9pZClf
YWRkQ3VzdG9tSXRlbVRvTWVudUNvbnRyb2xsZXJJZk5lY2Vzc2FyeQoreworICAgIGlmICghX2N1
c3RvbU1lbnVBY3Rpb25JbmZvKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0ZW0gPSBh
ZG9wdE5TKFtbVUlNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpfY3VzdG9tTWVudUFjdGlv
bkluZm8tPm5hbWUuZ2V0KCkgYWN0aW9uOkBzZWxlY3RvcihwZXJmb3JtQ3VzdG9tQWN0aW9uOild
KTsKKyAgICBbaXRlbSBzZXREb250RGlzbWlzczohX2N1c3RvbU1lbnVBY3Rpb25JbmZvLT5kaXNt
aXNzZXNBdXRvbWF0aWNhbGx5XTsKKyAgICBVSU1lbnVDb250cm9sbGVyICpjb250cm9sbGVyID0g
VUlNZW51Q29udHJvbGxlci5zaGFyZWRNZW51Q29udHJvbGxlcjsKKyAgICBjb250cm9sbGVyLm1l
bnVJdGVtcyA9IEBbIGl0ZW0uZ2V0KCkgXTsKKyAgICBbY29udHJvbGxlciB1cGRhdGVdOworfQor
CistICh2b2lkKWluc3RhbGxDdXN0b21NZW51QWN0aW9uOihOU1N0cmluZyAqKW5hbWUgZGlzbWlz
c2VzQXV0b21hdGljYWxseTooQk9PTClkaXNtaXNzZXNBdXRvbWF0aWNhbGx5IGNhbGxiYWNrOihk
aXNwYXRjaF9ibG9ja190KWNhbGxiYWNrCit7CisgICAgX2N1c3RvbU1lbnVBY3Rpb25JbmZvID0g
e3sgbmFtZSwgZGlzbWlzc2VzQXV0b21hdGljYWxseSwgY2FsbGJhY2sgfX07CisgICAgW3NlbGYg
X2FkZEN1c3RvbUl0ZW1Ub01lbnVDb250cm9sbGVySWZOZWNlc3NhcnldOworfQorCistICh2b2lk
KXNldEFsbG93ZWRNZW51QWN0aW9uczooTlNBcnJheTxOU1N0cmluZyAqPiAqKWFjdGlvbnMKK3sK
KyAgICBfYWxsb3dlZE1lbnVBY3Rpb25zID0gYWN0aW9uczsKK30KKworLSAodm9pZClyZXNldEN1
c3RvbU1lbnVBY3Rpb24KK3sKKyAgICBfY3VzdG9tTWVudUFjdGlvbkluZm8ucmVzZXQoKTsKKyAg
ICBVSU1lbnVDb250cm9sbGVyLnNoYXJlZE1lbnVDb250cm9sbGVyLm1lbnVJdGVtcyA9IEBbIF07
Cit9CisKKy0gKHZvaWQpcGVyZm9ybUN1c3RvbUFjdGlvbjooaWQpc2VuZGVyCit7CisgICAgaWYg
KCFfY3VzdG9tTWVudUFjdGlvbkluZm8pCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghX2N1
c3RvbU1lbnVBY3Rpb25JbmZvLT5jYWxsYmFjaykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9jdXN0b21NZW51QWN0aW9uSW5m
by0+Y2FsbGJhY2soKTsKK30KKworLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uOihTRUwpYWN0aW9u
IHdpdGhTZW5kZXI6KGlkKXNlbmRlcgoreworICAgIEJPT0wgaXNDdXN0b21BY3Rpb24gPSBhY3Rp
b24gPT0gQHNlbGVjdG9yKHBlcmZvcm1DdXN0b21BY3Rpb246KTsKKyAgICBCT09MIGNhblBlcmZv
cm1BY3Rpb25CeURlZmF1bHQgPSBbc3VwZXIgY2FuUGVyZm9ybUFjdGlvbjphY3Rpb24gd2l0aFNl
bmRlcjpzZW5kZXJdOworICAgIGlmIChpc0N1c3RvbUFjdGlvbikKKyAgICAgICAgY2FuUGVyZm9y
bUFjdGlvbkJ5RGVmYXVsdCA9IF9jdXN0b21NZW51QWN0aW9uSW5mby5oYXNWYWx1ZSgpOworCisg
ICAgaWYgKGNhblBlcmZvcm1BY3Rpb25CeURlZmF1bHQgJiYgX2FsbG93ZWRNZW51QWN0aW9ucyAm
JiBzZW5kZXIgPT0gVUlNZW51Q29udHJvbGxlci5zaGFyZWRNZW51Q29udHJvbGxlcikgeworICAg
ICAgICBCT09MIGlzQWxsb3dlZCA9IE5POworICAgICAgICBpZiAoaXNDdXN0b21BY3Rpb24pIHsK
KyAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmFsbG93ZWRBY3Rpb24gaW4gX2FsbG93ZWRNZW51
QWN0aW9ucy5nZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChbW19jdXN0b21NZW51QWN0aW9u
SW5mby0+bmFtZSBsb3dlcmNhc2VTdHJpbmddIGlzRXF1YWxUb1N0cmluZzphbGxvd2VkQWN0aW9u
Lmxvd2VyY2FzZVN0cmluZ10pIHsKKyAgICAgICAgICAgICAgICAgICAgaXNBbGxvd2VkID0gWUVT
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICphbGxv
d2VkQWN0aW9uIGluIF9hbGxvd2VkTWVudUFjdGlvbnMuZ2V0KCkpIHsKKyAgICAgICAgICAgICAg
ICBOU1N0cmluZyAqbG93ZXJjYXNlU2VsZWN0b3JOYW1lID0gW1thbGxvd2VkQWN0aW9uIGxvd2Vy
Y2FzZVN0cmluZ10gc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCI6Il07CisgICAgICAgICAgICAg
ICAgaWYgKFtOU1N0cmluZ0Zyb21TZWxlY3RvcihhY3Rpb24pLmxvd2VyY2FzZVN0cmluZyBpc0Vx
dWFsVG9TdHJpbmc6bG93ZXJjYXNlU2VsZWN0b3JOYW1lXSkgeworICAgICAgICAgICAgICAgICAg
ICBpc0FsbG93ZWQgPSBZRVM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWlzQWxsb3dl
ZCkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICB9CisgICAgcmV0dXJuIGNhblBlcmZvcm1B
Y3Rpb25CeURlZmF1bHQ7Cit9CisKIC0gKHZvaWQpcmVzZXRJbnRlcmFjdGlvbkNhbGxiYWNrcwog
ewogICAgIHNlbGYuZGlkU3RhcnRGb3JtQ29udHJvbEludGVyYWN0aW9uQ2FsbGJhY2sgPSBuaWw7
CkBAIC0xOTUsOCArMjg5LDE1IEBAIC0gKHZvaWQpX2RpZFNob3dNZW51CiAgICAgICAgIHNlbGYu
ZGlkU2hvd01lbnVDYWxsYmFjaygpOwogfQogCistICh2b2lkKV93aWxsSGlkZU1lbnUKK3sKKyAg
ICBzZWxmLmRpc21pc3NpbmdNZW51ID0gWUVTOworfQorCiAtICh2b2lkKV9kaWRIaWRlTWVudQog
eworICAgIHNlbGYuZGlzbWlzc2luZ01lbnUgPSBOTzsKKwogICAgIGlmICghc2VsZi5zaG93aW5n
TWVudSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L1Rlc3RDb250cm9sbGVySU9TLm1tCmluZGV4IDNlZWUwMDVmN2E2ODAzYzMyMmZiNzE0Zjc0NDZm
ZDZjZWFiYmU2MmEuLjQ1ZWI1ZWUxMjQ1N2ZlNjM3MmViMTgxNjQ0NGEzNWEyMDExNmMzM2UgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1t
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBA
IC0xNjMsNiArMTYzLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRl
VG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHQKICAgICAgICAgW3dlYlZp
ZXcgX2NsZWFyT3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzXTsKICAgICAgICAgW3dlYlZpZXcgX2Ns
ZWFySW50ZXJmYWNlT3JpZW50YXRpb25PdmVycmlkZV07CiAgICAgICAgIFt3ZWJWaWV3IHJlc2V0
SW50ZXJhY3Rpb25DYWxsYmFja3NdOworICAgICAgICBbd2ViVmlldyByZXNldEN1c3RvbU1lbnVB
Y3Rpb25dOworICAgICAgICBbd2ViVmlldyBzZXRBbGxvd2VkTWVudUFjdGlvbnM6bmlsXTsKIAog
ICAgICAgICBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcgPSB3ZWJWaWV3LnNjcm9sbFZpZXc7CiAg
ICAgICAgIFtzY3JvbGxWaWV3IF9yZW1vdmVBbGxBbmltYXRpb25zOllFU107CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXgg
NzQ4YzNhMWRiMTYwOTlmMjI1NWQ2NmU2NDE5OTg2MDM3ZGQyNmJiOC4uMTkxYmM5OTNmZWQ2MDUx
NDI4MTBmZjZlN2QzZjgzYTk2N2YyOTE4OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtOTcxLDYgKzk3MSwxMSBAQCBK
U09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6Om1lbnVSZWN0KCkgY29uc3QKICAgICByZXR1
cm4gbV9jb250ZXh0LT5vYmplY3RGcm9tUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QocmVjdEluUm9v
dFZpZXdDb29yZGluYXRlcy5vcmlnaW4ueCwgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcy5vcmln
aW4ueSwgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcy5zaXplLndpZHRoLCByZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzLnNpemUuaGVpZ2h0KSk7CiB9CiAKK2Jvb2wgVUlTY3JpcHRDb250cm9sbGVy
Ojppc0Rpc21pc3NpbmdNZW51KCkgY29uc3QKK3sKKyAgICByZXR1cm4gVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpLmRpc21pc3NpbmdNZW51
OworfQorCiBib29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNTaG93aW5nTWVudSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5w
bGF0Zm9ybVZpZXcoKS5zaG93aW5nTWVudTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNjQ3YjY5ZjAzNWVmNjVkYTM1ZjBl
MGJlYmE3ODI0N2M3MWQ1NGVhLi4yOGQzMjk2ZTQ0NTMwMzY4ZTQ1Y2QzYmY1NzZhNWQ1Y2IyZjg1
YmYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTktMDQtMTUgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dlYktpdDJdIEFkZCBzdXBw
b3J0IGZvciBob25vcmluZyAtW1VJTWVudUl0ZW0gZG9udERpc21pc3NdCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY5MTkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQxNjMwNDU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisK
KyAgICAgICAgQWRkIGEgbmV3IGlPUyBsYXlvdXQgdGVzdCB0aGF0IGluc3RhbGxzIGEgY3VzdG9t
LCBub24tZGlzbWlzc2luZyBhY3Rpb24gaW4gdGhlIGNhbGxvdXQgbWVudSB0aGF0IGVubGFyZ2Vz
IHRleHQuCisgICAgICAgIFRoZSB0ZXN0IHRoZW4gYWN0aXZhdGVzIHRoaXMgY3VzdG9tIG1lbnUg
aXRlbSBhbmQgY2hlY2tzIHRoYXQgdGhlIHNlbGVjdGlvbiByZWN0cyBhZnRlciB0cmlnZ2VyaW5n
IHRoaXMgY3VzdG9tCisgICAgICAgIGFjdGlvbiBhcmUgdXBkYXRlZCwgYW5kIHRoZSBjYWxsb3V0
IGJhciBpcyBzdGlsbCBzaG93aW5nLgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9z
L3NlbGVjdGlvbi1hZnRlci1jaGFuZ2luZy10ZXh0LXdpdGgtY2FsbG91dC1tZW51LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1h
ZnRlci1jaGFuZ2luZy10ZXh0LXdpdGgtY2FsbG91dC1tZW51Lmh0bWw6IEFkZGVkLgorCisgICAg
ICAgIFRoaXMgdGVzdCBhZGRpdGlvbmFsbHkgc3VwcHJlc3NlcyBhbGwgY2FsbG91dCBiYXIgbWVu
dSBpdGVtcyBleGNlcHQgZm9yIHRoZSBjdXN0b20gIkVtYmlnZ2VuIiBhY3Rpb24sIHRvIGVuc3Vy
ZQorICAgICAgICB0aGF0IHRoZSAiRW1iaWdnZW4iIG9wdGlvbiBjYW4gYmUgdGFwcGVkIGZyb20g
dGhlIGxheW91dCB0ZXN0IHdpdGhvdXQgaGF2aW5nIHRvIG5hdmlnYXRlIGNhbGxvdXQgYmFyIGl0
ZW1zIGJ5CisgICAgICAgIHRhcHBpbmcgb24gdGhlICJOZXh0IiBhbmQgIlNob3cgc3R5bGVzIiBi
dXR0b25zLiBUaGlzIGxhdHRlciBhcHByb2FjaCBpcyB2ZXJ5IGNoYWxsZW5naW5nIHRvIG1ha2Ug
cmVsaWFibGUgaW4KKyAgICAgICAgYXV0b21hdGlvbjsgd2hlbiBuYXZpZ2F0aW5nIHN1Ym1lbnVz
IGluIHRoZSBjYWxsb3V0IGJhciwgdGhlIG5leHQgYnV0dG9uIGNhbid0IGJlIHRhcHBlZCB1bnRp
bCB0aGUgY3VycmVudAorICAgICAgICBjYWxsb3V0IGJhciB0cmFuc2l0aW9uIGFuaW1hdGlvbiBp
cyBjb21wbGV0ZSwgYnV0IHRoZXJlJ3Mgbm8gZGVsZWdhdGUgbWV0aG9kIGludm9rZWQgb3Igbm90
aWZpY2F0aW9uIHBvc3RlZCB3aGVuCisgICAgICAgIHRoaXMgaGFwcGVucy4KKworICAgICAgICAq
IHJlc291cmNlcy91aS1oZWxwZXIuanM6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIuaXNTaG93
aW5nTWVudSk6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIuaXNEaXNtaXNzaW5nTWVudSk6Cisg
ICAgICAgICh3aW5kb3cuVUlIZWxwZXIucmVjdEZvck1lbnVBY3Rpb24pOgorICAgICAgICAod2lu
ZG93LlVJSGVscGVyLmFzeW5jLmNob29zZU1lbnVBY3Rpb24pOgorCisgICAgICAgIEFkZGl0aW9u
YWxseSBhZGQgYSBmZXcgbW9yZSBVSUhlbHBlciBtZXRob2RzLgorCisgICAgICAgICh3aW5kb3cu
VUlIZWxwZXIpOgorCiAyMDE5LTA0LTE2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFNldCB0ZXN0IGNvbmRpdGlvbnMgY2xvc2VyIHRvIGNvbnZlcnNpb24g
cmVkaXJlY3QgaW4gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vu
ZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1hZnRlci1jaGFuZ2luZy10ZXh0
LXdpdGgtY2FsbG91dC1tZW51LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2lvcy9zZWxlY3Rpb24tYWZ0ZXItY2hhbmdpbmctdGV4dC13aXRoLWNhbGxvdXQtbWVu
dS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU4YjlmODA2YjNiYjdkNzBjZmVlNThlYmZlMTdm
NjlhNzlmMWQ5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2lvcy9zZWxlY3Rpb24tYWZ0ZXItY2hhbmdpbmctdGV4dC13aXRoLWNhbGxvdXQtbWVudS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQg
b3ZlciB0aGUgbGF6eSBkb2cuCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBpbnRlcmFjdGluZyB3
aXRoIGEgbWVudSBhY3Rpb24gaXRlbSBvbiBpT1MgdGhhdCBpcyBtYXJrZWQgd2l0aCAnZG9udERp
c21pc3MnIGRvZXMgbm90IGNhdXNlIHRoZSBjYWxsb3V0IG1lbnUgdG8gZGlzbWlzcywgZXZlbiBp
ZiB0aGUgYWN0aW9uIGNoYW5nZXMgdGhlIHNlbGVjdGlvbi4gVG8gdGVzdCBtYW51YWxseSwgc2Vs
ZWN0IHRoZSB0ZXh0IGFuZCB0YXAgYW4gaXRlbSBpbiB0aGUgY2FsbG91dCBtZW51IHRoYXQgc2hv
dWxkbid0IGF1dG9tYXRpY2FsbHkgZGlzbWlzcyB0aGUgbWVudSBidXQgY2hhbmdlcyB0aGUgc2Vs
ZWN0aW9uIHJlY3RzIChmb3IgaW5zdGFuY2UsIEJvbGQpLiBWZXJpZnkgdGhhdCB0aGUgY2FsbG91
dCBtZW51IHJlbWFpbnMgdmlzaWJsZSBhZnRlciB0YXBwaW5nIHRoaXMgaXRlbS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHNlbGVjdGlvblJlY3RzWzBdLnRvcCBpcyAxMDEK
K1BBU1Mgc2VsZWN0aW9uUmVjdHNbMF0ud2lkdGggaXMgMzIwCitQQVNTIHNlbGVjdGlvblJlY3Rz
WzBdLmxlZnQgaXMgMQorUEFTUyBzZWxlY3Rpb25SZWN0c1swXS5oZWlnaHQgaXMgMjkKK1BBU1Mg
c2VsZWN0aW9uUmVjdHNbMV0udG9wIGlzIDEzMAorUEFTUyBzZWxlY3Rpb25SZWN0c1sxXS53aWR0
aCBpcyAxNzIKK1BBU1Mgc2VsZWN0aW9uUmVjdHNbMV0ubGVmdCBpcyAxCitQQVNTIHNlbGVjdGlv
blJlY3RzWzFdLmhlaWdodCBpcyAzMAorUEFTUyBkaXNtaXNzaW5nTWVudSBpcyBmYWxzZQorUEFT
UyBzaG93aW5nTWVudSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vaW9zL3NlbGVjdGlvbi1hZnRlci1jaGFuZ2luZy10ZXh0LXdpdGgtY2FsbG91dC1tZW51Lmh0
bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0aW9uLWFmdGVyLWNo
YW5naW5nLXRleHQtd2l0aC1jYWxsb3V0LW1lbnUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDE5NWVmODgy
YzRkMjhjM2ZhZmU5OGExNjI5NDc3YjQ3NGQ3YmFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL3NlbGVjdGlvbi1hZnRlci1jaGFuZ2luZy10ZXh0
LXdpdGgtY2FsbG91dC1tZW51Lmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NUWVBFIGh0bWw+
IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRl
dmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Citi
b2R5LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgbWFy
Z2luOiAwOworfQorCisjZWRpdG9yIHsKKyAgICB3aWR0aDogMzIwcHg7CisgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICBib3JkZXI6IHNvbGlkIDFweCB0b21hdG87CisgICAgbWFyZ2luLXRvcDogMTAw
cHg7Cit9CisKKy5iaWcgeworICAgIGZvbnQtc2l6ZTogMjRweDsKK30KKzwvc3R5bGU+Cis8c2Ny
aXB0PgoranNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dlZE1lbnVBY3Rpb25zKFsiRW1iaWdnZW4iXSk7CisgICAg
dGVzdFJ1bm5lci5pbnN0YWxsQ3VzdG9tTWVudUFjdGlvbigiRW1iaWdnZW4iLCBmYWxzZSwgKCkg
PT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2VkaXRvciIpLmNsYXNzTGlzdC5hZGQoImJpZyIp
KTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHJ1blRlc3QpOworYXN5bmMgZnVuY3Rp
b24gcnVuVGVzdCgpIHsKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
aW50ZXJhY3Rpbmcgd2l0aCBhIG1lbnUgYWN0aW9uIGl0ZW0gb24gaU9TIHRoYXQgaXMgbWFya2Vk
IHdpdGggJ2RvbnREaXNtaXNzJyBkb2VzIG5vdCBjYXVzZSB0aGUgY2FsbG91dCBtZW51IHRvIGRp
c21pc3MsIGV2ZW4gaWYgdGhlIGFjdGlvbiBjaGFuZ2VzIHRoZSBzZWxlY3Rpb24uIFRvIHRlc3Qg
bWFudWFsbHksIHNlbGVjdCB0aGUgdGV4dCBhbmQgdGFwIGFuIGl0ZW0gaW4gdGhlIGNhbGxvdXQg
bWVudSB0aGF0IHNob3VsZG4ndCBhdXRvbWF0aWNhbGx5IGRpc21pc3MgdGhlIG1lbnUgYnV0IGNo
YW5nZXMgdGhlIHNlbGVjdGlvbiByZWN0cyAoZm9yIGluc3RhbmNlLCBCb2xkKS4gVmVyaWZ5IHRo
YXQgdGhlIGNhbGxvdXQgbWVudSByZW1haW5zIHZpc2libGUgYWZ0ZXIgdGFwcGluZyB0aGlzIGl0
ZW0uIik7CisKKyAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5w
dXRTZXNzaW9uKGVkaXRvcik7CisgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93bigiYSIsIFsibWV0
YUtleSJdKTsKKyAgICBhd2FpdCBVSUhlbHBlci53YWl0Rm9yTWVudVRvU2hvdygpOworICAgIGF3
YWl0IFVJSGVscGVyLmNob29zZU1lbnVBY3Rpb24oIkVtYmlnZ2VuIik7CisKKyAgICBzZWxlY3Rp
b25SZWN0cyA9IG51bGw7CisgICAgd2hpbGUgKCFzZWxlY3Rpb25SZWN0cyB8fCBzZWxlY3Rpb25S
ZWN0cy5sZW5ndGggIT0gMikKKyAgICAgICAgc2VsZWN0aW9uUmVjdHMgPSBhd2FpdCBVSUhlbHBl
ci5nZXRVSVNlbGVjdGlvblZpZXdSZWN0cygpOworICAgIGRpc21pc3NpbmdNZW51ID0gYXdhaXQg
VUlIZWxwZXIuaXNEaXNtaXNzaW5nTWVudSgpOworICAgIHNob3dpbmdNZW51ID0gYXdhaXQgVUlI
ZWxwZXIuaXNTaG93aW5nTWVudSgpOworCisgICAgc2hvdWxkQmUoInNlbGVjdGlvblJlY3RzWzBd
LnRvcCIsICIxMDEiKTsKKyAgICBzaG91bGRCZSgic2VsZWN0aW9uUmVjdHNbMF0ud2lkdGgiLCAi
MzIwIik7CisgICAgc2hvdWxkQmUoInNlbGVjdGlvblJlY3RzWzBdLmxlZnQiLCAiMSIpOworICAg
IHNob3VsZEJlKCJzZWxlY3Rpb25SZWN0c1swXS5oZWlnaHQiLCAiMjkiKTsKKyAgICBzaG91bGRC
ZSgic2VsZWN0aW9uUmVjdHNbMV0udG9wIiwgIjEzMCIpOworICAgIHNob3VsZEJlKCJzZWxlY3Rp
b25SZWN0c1sxXS53aWR0aCIsICIxNzIiKTsKKyAgICBzaG91bGRCZSgic2VsZWN0aW9uUmVjdHNb
MV0ubGVmdCIsICIxIik7CisgICAgc2hvdWxkQmUoInNlbGVjdGlvblJlY3RzWzFdLmhlaWdodCIs
ICIzMCIpOworICAgIHNob3VsZEJlKCJkaXNtaXNzaW5nTWVudSIsICJmYWxzZSIpOworICAgIHNo
b3VsZEJlKCJzaG93aW5nTWVudSIsICJ0cnVlIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJlZGl0b3IiIGNvbnRlbnRlZGl0
YWJsZT5UaGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIHRoZSBsYXp5IGRvZy48L2Rpdj4K
KzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKaW5kZXggMmM5ZTI5
MDVhNjc5ZTBkNmQxNWFmOTE4MjJmZDczNmZkNjcxMTQ2MS4uMzBhYjhiNTIxZTYwZGFhN2Y4Y2Rl
MjljZGY5MGFkZGY2ODRhZjNjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCkBAIC04
MjcsNiArODI3LDIwIEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICAg
ICAgfSk7CiAgICAgfQogCisgICAgc3RhdGljIGlzU2hvd2luZ01lbnUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVyLmlzU2hvd2luZ01lbnVgLCByZXN1bHQgPT4gcmVz
b2x2ZShyZXN1bHQgPT09ICJ0cnVlIikpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzdGF0
aWMgaXNEaXNtaXNzaW5nTWVudSgpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRy
b2xsZXIuaXNEaXNtaXNzaW5nTWVudWAsIHJlc3VsdCA9PiByZXNvbHZlKHJlc3VsdCA9PT0gInRy
dWUiKSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIHN0YXRpYyBtZW51UmVjdCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CkBAIC04MzgsNCArODUy
LDIzIEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICB7CiAgICAgICAg
IHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVp
Q29udHJvbGxlci5zZXRIYXJkd2FyZUtleWJvYXJkQXR0YWNoZWQoJHthdHRhY2hlZCA/ICJ0cnVl
IiA6ICJmYWxzZSJ9KWAsIHJlc29sdmUpKTsKICAgICB9CisKKyAgICBzdGF0aWMgcmVjdEZvck1l
bnVBY3Rpb24oYWN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29s
dmUgPT4geworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgCisgICAgICAgICAg
ICAgICAgY29uc3QgcmVjdCA9IHVpQ29udHJvbGxlci5yZWN0Rm9yTWVudUFjdGlvbigiJHthY3Rp
b259Iik7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUocmVj
dCA/IEpTT04uc3RyaW5naWZ5KHJlY3QpIDogIiIpOworICAgICAgICAgICAgYCwgc3RyaW5nUmVz
dWx0ID0+IHsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHN0cmluZ1Jlc3VsdC5sZW5ndGggPyBK
U09OLnBhcnNlKHN0cmluZ1Jlc3VsdCkgOiBudWxsKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYXN5bmMgY2hvb3NlTWVudUFjdGlvbihhY3Rpb24p
CisgICAgeworICAgICAgICBjb25zdCBtZW51UmVjdCA9IGF3YWl0IHRoaXMucmVjdEZvck1lbnVB
Y3Rpb24oYWN0aW9uKTsKKyAgICAgICAgaWYgKG1lbnVSZWN0KQorICAgICAgICAgICAgYXdhaXQg
dGhpcy5hY3RpdmF0ZUF0KG1lbnVSZWN0LmxlZnQgKyBtZW51UmVjdC53aWR0aCAvIDIsIG1lbnVS
ZWN0LnRvcCArIG1lbnVSZWN0LmhlaWdodCAvIDIpOworICAgIH0KIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>