<?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>226127</bug_id>
          
          <creation_ts>2021-05-21 16:46:14 -0700</creation_ts>
          <short_desc>Stop using holdLock() in WebKit/WebKitLegacy/Tools as it is not compatible with Clang thread safety analysis</short_desc>
          <delta_ts>2021-05-21 21:35:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226116</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>luiz</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762664</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 16:46:14 -0700</bug_when>
    <thetext>Stop using holdLock() in WebKit/WebKitLegacy/Tools as it is not compatible with Clang thread safety analysis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762665</commentid>
    <comment_count>1</comment_count>
      <attachid>429363</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 16:47:40 -0700</bug_when>
    <thetext>Created attachment 429363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762675</commentid>
    <comment_count>2</comment_count>
      <attachid>429366</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 17:01:54 -0700</bug_when>
    <thetext>Created attachment 429366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762752</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-21 21:34:15 -0700</bug_when>
    <thetext>Committed r277911 (238044@main): &lt;https://commits.webkit.org/238044@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429366.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762753</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-21 21:35:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/78342209&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429363</attachid>
            <date>2021-05-21 16:47:40 -0700</date>
            <delta_ts>2021-05-21 17:01:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226127-20210521164739.patch</filename>
            <type>text/plain</type>
            <size>40681</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5OWY1NjlhMjA4OTY0YTY0
YjdhZTY2MjMzYjNhNTYzMTQwZDk1MTcuLjhmMThhNGExOWM0NzE2MTNhZmJmNDk5YjRhNzQwMzVh
MTIxZGQzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjEtMDUtMjEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGhvbGRMb2NrKCkg
aW4gV2ViS2l0L1dlYktpdExlZ2FjeS9Ub29scyBhcyBpdCBpcyBub3QgY29tcGF0aWJsZSB3aXRo
IENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjbG9zZSk6
CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY0RGVjb2Rl
cik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY1RGVj
b2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVWUDlE
ZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VE
ZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUVu
Y29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6cmVsZWFzZUVu
Y29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6YWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6
ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5j
TWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXNBbmRSZXNl
dERpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc0ZvckNvbm5lY3Rpb24pOgorICAgICAgICAqIFNo
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3Bs
YXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVpcmVzRGlzcGxheVJlZnJlc2hDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpp
bnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0
b3I6OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2spOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVNhbXBsZUN1cnNvcjo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU2FtcGxlQ3Vyc29y
OjpnZXRTYW1wbGVNYXAgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGlu
Z1ZpZXcubW06CisgICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9wcmVwYXJlUERGRGF0YUZvclBy
aW50aW5nT25TZWNvbmRhcnlUaHJlYWRdKToKKyAgICAgICAgKHByZXBhcmVEYXRhRm9yUHJpbnRp
bmdPblNlY29uZGFyeVRocmVhZCk6CisKIDIwMjEtMDUtMjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBFeHBhbmQgSU9LaXQgbWV0aG9kIGZp
bHRlcnMgdG8gY292ZXIgaXRlbXMgZW5jb3VudGVyZWQgZHVyaW5nIHRlc3RpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL0NoYW5nZUxvZwppbmRleCBmNDEzY2RlMmViOTliOWM0NTM5Mjk1MWY0MDQwZTkyOTcw
MmY0M2Y2Li5iYzVjYzQ5ZTE4MmE3ZjZiZGVkYzA2NWUxYmM0MTRiZjY4MmY4MGZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMjEgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGhvbGRMb2Nr
KCkgaW4gV2ViS2l0L1dlYktpdExlZ2FjeS9Ub29scyBhcyBpdCBpcyBub3QgY29tcGF0aWJsZSB3
aXRoIENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlv
bkNvbnRlbnQubW06CisgICAgICAgICgtW1dlYkZpeGVkUG9zaXRpb25Db250ZW50IHNjcm9sbE9y
Wm9vbUNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYkZpeGVkUG9zaXRpb25Db250ZW50IG92ZXJm
bG93U2Nyb2xsUG9zaXRpb25Gb3JMYXllcjpjaGFuZ2VkVG86XSk6CisgICAgICAgICgtW1dlYkZp
eGVkUG9zaXRpb25Db250ZW50IHNldFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnM6c3RpY2t5Q29u
dGFpbmVyTWFwOl0pOgorICAgICAgICAoLVtXZWJGaXhlZFBvc2l0aW9uQ29udGVudCBoYXNGaXhl
ZE9yU3RpY2t5UG9zaXRpb25MYXllcnNdKToKKwogMjAyMS0wNS0xMCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFdlYkNvcmU6OkhpdFRlc3RS
ZXF1ZXN0OjpSZXF1ZXN0VHlwZSBhbiBlbnVtIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggOTBmNzNjOTE4YzUyNzY5OTlkODA4YjYyNzI4MGZhZTAxNTgxZmNhOC4uMWNmZWNi
NWQ2ZGY4MzgwNjc5OWU1NzgzNmI2M2JmOGIyMmIyZWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBob2xkTG9jaygpIGluIFdlYktpdC9X
ZWJLaXRMZWdhY3kvVG9vbHMgYXMgaXQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBDbGFuZyB0aHJl
YWQgc2FmZXR5IGFuYWx5c2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjYxMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHA6
CisgICAgICAgIChXS1FDQTo6Q0FEM0RSZW5kZXJlcjo6c3dhcENoYWluKToKKyAgICAgICAgKFdL
UUNBOjpDQUQzRFJlbmRlcmVyOjpyZW5kZXJBbmRQcmVzZW50KToKKyAgICAgICAgKFdLUUNBOjpD
QUQzRFJlbmRlcmVyOjpyZW5kZXJUb0ltYWdlKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBVmlldy5jcHA6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpyZWxlYXNlQWxs
RDNEUmVzb3VyY2VzKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OkNBVmlldyk6CisgICAgICAg
IChXS1FDQTo6Q0FWaWV3Ojp+Q0FWaWV3KToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnNldExh
eWVyKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnVwZGF0ZSk6CisgICAgICAgIChXS1FDQTo6
Q0FWaWV3OjpkcmF3VG9XaW5kb3cpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6ZHJhd1RvSW1h
Z2UpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6ZHJhd0ludG9EQyk6CisgICAgICAgIChXS1FD
QTo6Q0FWaWV3OjpzZXRTaG91bGRJbnZlcnRDb2xvcnMpOgorICAgICAgICAoV0tRQ0E6OkNBVmll
dzo6c2NoZWR1bGVOZXh0RHJhdyk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpkaXNwbGF5TGlu
a1JlYWNoZWRDQU1lZGlhVGltZSk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3Ojpjb250ZXh0RGlk
Q2hhbmdlKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnVwZGF0ZVNvb24pOgorICAgICAgICAo
V0tRQ0E6OkNBVmlldzo6dXBkYXRlVmlld3NOb3cpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6
ZDNkRGV2aWNlOSk6CisgICAgICAgICogV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcDoKKyAgICAg
ICAgKGZpbmRDYWNoZWRTdHJpbmcpOgorICAgICAgICAoY2FjaGVTdHJpbmcpOgorCiAyMDIxLTA1
LTIwICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBb
V2ViSURMXSBSZW1vdmUgW0ltcGxpY2l0VGhpc10gYW5kIFtDdXN0b21Qcm94eVRvSlNPYmplY3Rd
IGV4dGVuZGVkIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IGI3Yzk2MzhmOGUyMGY2Mjkx
OTdjYTdiZDgxNGI3MGY3YTA3ZTZlZjQuLmQ0N2Y4NGQxOGJkODYzYzg0OTI0OWY1NjE4MThmOGRi
YmJlZmE4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIExpYldlYlJU
Q0NvZGVjc1Byb3h5OjpjbG9zZSgpCiAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNv
bm5lY3Rpb24oKS5yZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJU
Q0NvZGVjc1Byb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogCiAgICAgZGlzcGF0Y2hUb1Ro
cmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgICAgICBhdXRvIGRlY29kZXJzID0gV1RGTW92ZShtX2RlY29kZXJzKTsKICAg
ICAgICAgZm9yIChhdXRvIGRlY29kZXIgOiBkZWNvZGVycy52YWx1ZXMoKSkKICAgICAgICAgICAg
IHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRGVjb2RlcihkZWNvZGVyKTsKQEAgLTc2LDcgKzc2LDcgQEAg
dm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y2xvc2UoKQogdm9pZCBMaWJXZWJSVENDb2RlY3NQ
cm94eTo6Y3JlYXRlSDI2NERlY29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBBU1NFUlQo
IW1fZGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIG1fZGVjb2RlcnMuYWRkKGlk
ZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxIMjY0RGVjb2RlcihtYWtlQmxvY2tQdHIoW2Nv
bm5lY3Rpb24gPSBtYWtlUmVmKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9u
KCkpLCBpZGVudGlmaWVyXShDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCB1aW50MzJfdCB0
aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKSB7CiAgICAgICAgIGlmIChhdXRvIHNhbXBs
ZSA9IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUocGl4ZWxCdWZmZXIsIE1lZGlh
VGltZSh0aW1lU3RhbXBOcywgMSkpKQpAQCAtODcsNyArODcsNyBAQCB2b2lkIExpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpjcmVhdGVIMjY0RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlm
aWVyKQogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlSDI2NURlY29kZXIoUlRDRGVj
b2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3Ao
KSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKICAgICBBU1NFUlQoIW1fZGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmll
cikpOwogICAgIG1fZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxI
MjY1RGVjb2RlcihtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyXShDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsQnVmZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1w
KSB7CiAgICAgICAgIGlmIChhdXRvIHNhbXBsZSA9IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpjcmVhdGUocGl4ZWxCdWZmZXIsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSkpKQpAQCAtOTgs
NyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY1RGVjb2RlcihS
VENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94
eTo6Y3JlYXRlVlA5RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogewog
ICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIEFTU0VSVCghbV9k
ZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgbV9kZWNvZGVycy5hZGQoaWRlbnRp
Zmllciwgd2VicnRjOjpjcmVhdGVMb2NhbFZQOURlY29kZXIobWFrZUJsb2NrUHRyKFtjb25uZWN0
aW9uID0gbWFrZVJlZihtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpKSwg
aWRlbnRpZmllcl0oQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0
YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCkgewogICAgICAgICBpZiAoYXV0byBzYW1wbGUgPSBX
ZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUo
dGltZVN0YW1wTnMsIDEpKSkKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVj
c1Byb3h5OjpjcmVhdGVWUDlEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRGVjb2RlcihSVENEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgIEFTU0VSVChtX2RlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAg
ICBpZiAoYXV0byBkZWNvZGVyID0gbV9kZWNvZGVycy50YWtlKGlkZW50aWZpZXIpKQogICAgICAg
ICB3ZWJydGM6OnJlbGVhc2VMb2NhbERlY29kZXIoZGVjb2Rlcik7CkBAIC0xNDEsNyArMTQxLDcg
QEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0RnJhbWVTaXplKFJUQ0RlY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVpbnQxNl8KIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNy
ZWF0ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBmb3JtYXROYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHBh
cmFtZXRlcnMsIGJvb2wgdXNlTG93TGF0ZW5jeSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxv
b3AoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICBBU1NFUlQoIW1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRp
ZmllcikpOwogCiAgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBydGNQYXJh
bWV0ZXJzOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNy
ZWF0ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QKIHZvaWQg
TGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIGlmIChh
dXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRha2UoaWRlbnRpZmllcikpCiAgICAgICAgIHdlYnJ0
Yzo6cmVsZWFzZUxvY2FsRW5jb2RlcihlbmNvZGVyKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lk
IExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCB1aW50MwogYm9vbCBMaWJXZWJSVENDb2RlY3NQcm94eTo6YWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29w
KCkpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAgICAgcmV0dXJuIG1fZW5jb2RlcnMuaXNFbXB0eSgpICYmIG1fZGVj
b2RlcnMuaXNFbXB0eSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uY3BwCmluZGV4IDEwYTc0MzI4NmUwNmMxMzMxOTA5NTdhNjlhMDIwODNiNTQ1NDA0YzAuLjQx
MDg4NjBlOTZmMTlkNDIwYTVlMzM0NWI1ODc1NzEzMGQ0ZWM2NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBDb25u
ZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjplbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlcyhDb25uZWN0
aW9uJiBjb25uZWN0aW8KICAgICAgICAgfQogICAgICAgICBjb25uZWN0aW9uQW5kTWVzc2FnZXMg
PSBXVEZNb3ZlKHJlc3QpOwogICAgIH07Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgIGVucXVldWVNYXRjaGlu
Z01lc3NhZ2VzSW5Db250YWluZXIobV9tZXNzYWdlc0JlaW5nRGlzcGF0Y2hlZCk7CiAgICAgZW5x
dWV1ZU1hdGNoaW5nTWVzc2FnZXNJbkNvbnRhaW5lcihtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxl
V2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBDb25uZWN0
aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24KIAogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2g7CiAgICAgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9tdXRleCB9OwogICAgICAgICBzaG91bGREaXNwYXRjaCA9IG1fZGlkU2NoZWR1bGVEaXNwYXRj
aE1lc3NhZ2VzV29ya1NldC5hZGQoJmNvbm5lY3Rpb24pLmlzTmV3RW50cnk7CiAgICAgICAgIEFT
U0VSVChjb25uZWN0aW9uLm1faW5jb21pbmdNZXNzYWdlc0xvY2suaXNIZWxkKCkpOwogICAgICAg
ICBpZiAobWVzc2FnZS0+c2hvdWxkTWFpbnRhaW5PcmRlcmluZ1dpdGhBc3luY01lc3NhZ2VzKCkp
IHsKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6
OmRpc3BhdGNoTWVzc2FnZXMoRnVuY3Rpb248dm9pZChNZXNzYWdlTmFtZSwgdQogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAg
ICAgIGlmIChtX21lc3NhZ2VzQmVpbmdEaXNwYXRjaGVkLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQgPSBzdGQ6OmV4Y2hhbmdlKG1fbWVzc2FnZXNUb0Rp
c3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LCB7IH0pOwogICAgICAgICBlbHNlIHsKQEAg
LTIyMCw3ICsyMjAsNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3Bh
dGNoTWVzc2FnZXNBbmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZQogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIEFT
U0VSVChtX2RpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQuY29udGFpbnMoJmNvbm5l
Y3Rpb24pKTsKICAgICAgICAgbV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0LnJl
bW92ZSgmY29ubmVjdGlvbik7CiAgICAgICAgIEFTU0VSVChtX21lc3NhZ2VzQmVpbmdEaXNwYXRj
aGVkLmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9u
aXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXggMGY4
NGVkOGU2YjNiZDUwMDJiMGU5ZjE0NTNjODc2Nzk4NTE5Njc4Ny4uMWM5MmVhODQ0MzU2NGI2NmYz
ZTI3ODFjNGVlZTQ1MzBmZGJhMWY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVm
cmVzaE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNw
cApAQCAtNTksNyArNTksNyBAQCBib29sIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpy
ZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKIAogICAgIGJvb2wgcHJldmlvdXNGcmFtZURvbmUgeyBm
YWxzZSB9OwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKCkpOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jaygpIH07CiAgICAgICAgIHNldElzU2NoZWR1bGVk
KHRydWUpOwogICAgICAgICBwcmV2aW91c0ZyYW1lRG9uZSA9IGlzUHJldmlvdXNGcmFtZURvbmUo
KTsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBAIGJvb2wgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1v
bml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQogCiBib29sIFRocmVhZGVkRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpyZXF1aXJlc0Rpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQogewotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbG9jaygp
IH07CiAgICAgcmV0dXJuIGlzU2NoZWR1bGVkKCkgJiYgaXNQcmV2aW91c0ZyYW1lRG9uZSgpOwog
fQogCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6
OmludmFsaWRhdGUoKQogICAgIG1fZGlzcGxheVJlZnJlc2hUaW1lci5zdG9wKCk7CiAgICAgYm9v
bCB3YXNTY2hlZHVsZWQgPSBmYWxzZTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2soKSB9OwogICAgICAg
ICB3YXNTY2hlZHVsZWQgPSBpc1NjaGVkdWxlZCgpOwogICAgIH0KICAgICBpZiAod2FzU2NoZWR1
bGVkKSB7CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6ZGlzcGxheVJlZnJlc2hDYWxsYmFjaygpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVE
aXNwbGF5UmVmcmVzaE5vdGlmaWNhdGlvbiB7IGZhbHNlIH07CiAgICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGxvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2Nr
KCkgfTsKICAgICAgICAgc2hvdWxkSGFuZGxlRGlzcGxheVJlZnJlc2hOb3RpZmljYXRpb24gPSBp
c1NjaGVkdWxlZCgpICYmIGlzUHJldmlvdXNGcmFtZURvbmUoKTsKICAgICAgICAgaWYgKHNob3Vs
ZEhhbmRsZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uKQogICAgICAgICAgICAgc2V0SXNQcmV2
aW91c0ZyYW1lRG9uZShmYWxzZSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBUaHJlYWRlZERp
c3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheVJlZnJlc2hDYWxsYmFjaygpCiAgICAgLy8gUmV0
cmlldmUgdGhlIHNjaGVkdWxlZCBzdGF0dXMgZm9yIHRoaXMgRGlzcGxheVJlZnJlc2hNb25pdG9y
LgogICAgIGJvb2wgaGFzQmVlblJlc2NoZWR1bGVkIHsgZmFsc2UgfTsKICAgICB7Ci0gICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGxvY2soKSB9OwogICAgICAgICBoYXNCZWVuUmVzY2hlZHVsZWQgPSBpc1NjaGVkdWxlZCgpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9N
ZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKaW5kZXggY2ZjNTQ2MjQzNTRj
MDRjZjYyMGExMjY4NTNiOTdiNDAyMTc4YzQ3OC4uMjU3ODY5MzY4YmU4NzM4NjYzZWRmNDNmODBj
NzNkYzRjODUwMWQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwCkBAIC0xMTYs
NyArMTE2LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlQ3Vyc29yPiBNZWRpYVNhbXBsZUN1cnNvcjo6
Y3JlYXRlQXRQcmVzZW50YXRpb25UaW1lKEFsbG9jYXRvciYKIAogUmVmUHRyPE1lZGlhU2FtcGxl
Q3Vyc29yPiBNZWRpYVNhbXBsZUN1cnNvcjo6Y29weShBbGxvY2F0b3ImJiBhbGxvY2F0b3IsIGNv
bnN0IE1lZGlhU2FtcGxlQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhjdXJzb3IubV9sb2NhdG9yTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGN1cnNvci5t
X2xvY2F0b3JMb2NrIH07CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyAoYWxsb2NhdG9yKSBNZWRp
YVNhbXBsZUN1cnNvcihXVEZNb3ZlKGFsbG9jYXRvciksIGN1cnNvcikpOwogfQogCkBAIC0yMzMs
NyArMjMzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+CiBPU1N0YXR1cyBNZWRpYVNh
bXBsZUN1cnNvcjo6Z2V0U2FtcGxlTWFwKEZ1bmN0aW9uJiYgZnVuY3Rpb24pIGNvbnN0CiB7CiAg
ICAgT1NTdGF0dXMgc3RhdHVzID0gbm9FcnI7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2F0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NhdG9yTG9jayB9OwogICAg
IG1fdHJhY2tSZWFkZXItPndhaXRGb3JTYW1wbGUoWyZdKFNhbXBsZU1hcCYgc2FtcGxlcywgYm9v
bCBoYXNBbGxTYW1wbGVzKSB7CiAgICAgICAgIGlmICghc2FtcGxlcy5zaXplKCkpCiAgICAgICAg
ICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInRyYWNrICIsIG1fdHJhY2tSZWFkZXItPnRy
YWNrSUQoKSwgIiBmaW5pc2hlZCBwYXJzaW5nIHdpdGggbm8gc2FtcGxlcy4iKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCBhOTFiNzJjMjAz
YTI3MjNlZWI5NDhlYTc1NDRlMDQ4MGFlNTcyN2IzLi45Yjc0ZjNlYzUwZDAyMDE2NjRjNzMxMjk4
OWM3ZjY4YzI5YTA0NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V0tQcmludGluZ1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJp
bnRpbmdWaWV3Lm1tCkBAIC0yNTgsNyArMjU4LDcgQEAgLSAodm9pZClfcHJlcGFyZVBERkRhdGFG
b3JQcmludGluZ09uU2Vjb25kYXJ5VGhyZWFkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKF9wcmludGluZ0NhbGxiYWNrTXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBfcHJpbnRpbmdDYWxsYmFja011dGV4IH07CiAKICAgICBBU1NFUlQoW3Nl
bGYgX2hhc1BhZ2VSZWN0c10pOwogICAgIEFTU0VSVChfcHJpbnRlZFBhZ2VzRGF0YS5pc0VtcHR5
KCkpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVEYXRhRm9yUHJpbnRp
bmdPblNlY29uZGFyeVRocmVhZChXS1ByaW50aW5nVmlldyAqdmlldykKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh2aWV3LT5f
cHJpbnRpbmdDYWxsYmFja011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgdmlldy0+X3ByaW50
aW5nQ2FsbGJhY2tNdXRleCB9OwogCiAgICAgLy8gV2UgbWF5IGhhdmUgcmVjZWl2ZWQgcGFnZSBy
ZWN0cyB3aGlsZSBhIG1lc3NhZ2UgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHRyYXZlbGVkIGZyb20g
c2Vjb25kYXJ5IHRocmVhZCB0byBtYWluIG9uZS4KICAgICBpZiAoW3ZpZXcgX2hhc1BhZ2VSZWN0
c10pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KaW5kZXggYWZlMTFhODBiOWYx
YzljZTc2YTM1NjJmYTYzYzQ1YmY3MWQxMWQ5Ny4uNzI1NDFjYTBiMWZiZmIxNWI3Zjg5YjA1NDdi
YmUwNmE3YWNjNjExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KQEAgLTEw
Miw3ICsxMDIsNyBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAodm9pZClzY3JvbGxPclpvb21DaGFu
Z2VkOihDR1JlY3QpcG9zaXRpb25lZE9iamVjdHNSZWN0CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayh3ZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgd2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jayB9OwogCiAgICAgTGF5ZXJJbmZv
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBfcHJpdmF0ZS0+bV92aWV3cG9ydENvbnN0cmFpbmVk
TGF5ZXJzLmVuZCgpOwogICAgIGZvciAoTGF5ZXJJbmZvTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IF9wcml2YXRlLT5tX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CkBAIC0xNDEsNyArMTQxLDcgQEAgLSAodm9pZClzY3JvbGxPclpvb21DaGFuZ2Vk
OihDR1JlY3QpcG9zaXRpb25lZE9iamVjdHNSZWN0CiAKIC0gKHZvaWQpb3ZlcmZsb3dTY3JvbGxQ
b3NpdGlvbkZvckxheWVyOihDQUxheWVyICopc2Nyb2xsTGF5ZXIgY2hhbmdlZFRvOihDR1BvaW50
KXNjcm9sbFBvc2l0aW9uCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJGaXhlZFBv
c2l0aW9uQ29udGVudERhdGFMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd2ViRml4ZWRQb3Np
dGlvbkNvbnRlbnREYXRhTG9jayB9OwogCiAgICAgTGF5ZXJJbmZvTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBfcHJpdmF0ZS0+bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmVuZCgpOwogICAg
IGZvciAoTGF5ZXJJbmZvTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IF9wcml2YXRlLT5tX3ZpZXdw
b3J0Q29uc3RyYWluZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC0xNzQs
NyArMTc0LDcgQEAgLSAodm9pZClkaWRGaW5pc2hTY3JvbGxpbmdPclpvb21pbmcKIAogLSAodm9p
ZClzZXRWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzOihXVEY6Okhhc2hNYXA8Q0FMYXllciAqLCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Vmlld3BvcnRDb25zdHJhaW50cz4+JilsYXllck1hcCBz
dGlja3lDb250YWluZXJNYXA6KGNvbnN0IFdURjo6SGFzaE1hcDxDQUxheWVyKiwgQ0FMYXllcio+
JilzdGlja3lDb250YWluZXJzCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJGaXhl
ZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd2ViRml4ZWRQ
b3NpdGlvbkNvbnRlbnREYXRhTG9jayB9OwogCiAgICAgX3ByaXZhdGUtPm1fdmlld3BvcnRDb25z
dHJhaW5lZExheWVycy5jbGVhcigpOwogCkBAIC0xOTEsNyArMTkxLDcgQEAgLSAodm9pZClzZXRW
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzOihXVEY6Okhhc2hNYXA8Q0FMYXllciAqLCBzdGQ6OnVu
aXF1ZV9wdHI8V2UKIAogLSAoQk9PTCloYXNGaXhlZE9yU3RpY2t5UG9zaXRpb25MYXllcnMKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YUxv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyB3ZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2Nr
IH07CiAgICAgcmV0dXJuICFfcHJpdmF0ZS0+bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmlz
RW1wdHkoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKaW5kZXgg
ODM1ZTkwMDAxZGU0YTgzNjljMTQ5NGEzZWUxY2U1OTY4YmZkMzFhMy4uMGIwYWQ1ZmZkYmZmZDk4
ZWMyMzAyNGIyZTRlNTFkMWY1YzA1ZTM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVu
ZGVyZXIuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgQ0FEM0RSZW5kZXJlcjo6Q0FEM0RSZW5kZXJl
cigpCiAKIENDb21QdHI8SURpcmVjdDNEU3dhcENoYWluOT4gQ0FEM0RSZW5kZXJlcjo6c3dhcENo
YWluKENXaW5kb3cgd2luZG93LCBjb25zdCBDR1NpemUmIHNpemUpCiB7Ci0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAog
ICAgIGJvb2wgdXNlRGVmYXVsdFN3YXBDaGFpbiA9IGZhbHNlOwogCkBAIC0zODUsNyArMzg1LDcg
QEAgQ0FEM0RSZW5kZXJlcjo6UmVuZGVyUmVzdWx0IENBRDNEUmVuZGVyZXI6OnJlbmRlckFuZFBy
ZXNlbnQoY29uc3QgQ0dSZWN0JiBib3VuZHMKICAgICBBU1NFUlRfQVJHKHN3YXBDaGFpbiwgc3dh
cENoYWluKTsKICAgICBBU1NFUlRfQVJHKGNvbnRleHQsIGNvbnRleHQpOwogCi0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgIENHUmVjdCB1bnVzZWREaXJ0eVJlY3Q7CiAgICAgUmVuZGVyUmVzdWx0IHJlc3VsdCA9
IHJlbmRlckludGVybmFsKGJvdW5kcywgc3dhcENoYWluLCBwb3N0UHJvY2Vzc2luZ0NvbnRleHQs
IGNvbnRleHQsIHVudXNlZERpcnR5UmVjdCwgbmV4dFJlbmRlclRpbWUpOwpAQCAtNDI1LDcgKzQy
NSw3IEBAIENBRDNEUmVuZGVyZXI6OlJlbmRlclJlc3VsdCBDQUQzRFJlbmRlcmVyOjpyZW5kZXJU
b0ltYWdlKGNvbnN0IENHUmVjdCYgYm91bmRzLCBJCiAgICAgQVNTRVJUX0FSRyhzd2FwQ2hhaW4s
IHN3YXBDaGFpbik7CiAgICAgQVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKIAotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CiAKICAgICBDR1JlY3QgZGlydHlSZWN0OwogICAgIFJlbmRlclJlc3VsdCByZXN1bHQgPSBy
ZW5kZXJJbnRlcm5hbChib3VuZHMsIHN3YXBDaGFpbiwgcG9zdFByb2Nlc3NpbmdDb250ZXh0LCBj
b250ZXh0LCBkaXJ0eVJlY3QsIG5leHRSZW5kZXJUaW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNw
cAppbmRleCA2OGZlYmQxMjcwNjMwMmU1MWFjNzcwOGRjZGU4ODI0NDM5NjE0YjAyLi5iZDQxMWJk
Yzc2YTdlZWJmNjg1NmZmNzA4ZWFlOWI2MWQ0YjU0OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcu
Y3BwCkBAIC0xMTQsMTYgKzExNCwxNiBAQCB2b2lkIENBVmlldzo6cmVsZWFzZUFsbEQzRFJlc291
cmNlcygpCiAKICAgICBWZWN0b3I8UmVmPEhhbmRsZT4+IHZpZXdzVG9SZWxlYXNlOwogICAgIHsK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9iYWxTdGF0ZUxvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU3RhdGVMb2NrIH07CiAgICAgICAgIHZpZXdzVG9SZWxl
YXNlID0gV1RGOjptYXAodmlld3MoKSwgW10gKGF1dG8mIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxl
LmNvcHlSZWYoKTsgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBoYW5kbGUgOiB2aWV3c1Rv
UmVsZWFzZSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGhhbmRsZS0+bG9jaygp
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGhhbmRsZS0+bG9jaygpIH07CiAgICAgICAgIENB
VmlldyogdmlldyA9IGhhbmRsZS0+dmlldygpOwogICAgICAgICBpZiAoIXZpZXcpCiAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byB2aWV3TG9ja2VyID0gaG9sZExvY2sodmlldy0+
bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIHZpZXdMb2NrZXIgeyB2aWV3LT5tX2xvY2sgfTsKICAg
ICAgICAgdmlldy0+bV9zd2FwQ2hhaW4gPSBudWxscHRyOwogICAgICAgICB2aWV3LT5tX2QzZFBv
c3RQcm9jZXNzaW5nQ29udGV4dCA9IG51bGxwdHI7CiAgICAgfQpAQCAtMTM3LDcgKzEzNyw3IEBA
IGlubGluZSBDQVZpZXc6OkNBVmlldyhEcmF3aW5nRGVzdGluYXRpb24gZGVzdGluYXRpb24pCiAg
ICAgLCBtX2NvbnRleHQoYWRvcHRDRihDQUNGQ29udGV4dENyZWF0ZSgwKSkpCiB7CiAgICAgewot
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGdsb2JhbFN0YXRlTG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBnbG9iYWxTdGF0ZUxvY2sgfTsKICAgICAgICAgdmlld3MoKS5hZGQo
bV9oYW5kbGUuY29weVJlZigpKTsKICAgICB9CiAKQEAgLTE1MSw3ICsxNTEsNyBAQCBDQVZpZXc6
On5DQVZpZXcoKQogICAgIG1fbGF5ZXIgPSBudWxscHRyOwogCiAgICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKICAgICAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE2MSw3ICsx
NjEsNyBAQCBDQVZpZXc6On5DQVZpZXcoKQogICAgIFJlZlB0cjxDVkRpc3BsYXlMaW5rPiBsaW5r
VG9TdG9wOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZGlzcGxh
eUxpbmtMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGlzcGxheUxpbmtMb2NrIH07
CiAgICAgICAgIGxpbmtUb1N0b3AgPSBXVEZNb3ZlKG1fZGlzcGxheUxpbmspOwogICAgIH0KIApA
QCAtMTcxLDExICsxNzEsMTEgQEAgQ0FWaWV3Ojp+Q0FWaWV3KCkKICAgICB1cGRhdGUobnVsbHB0
ciwgQ0dSZWN0WmVybyk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9oYW5kbGUtPmxvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2hhbmRsZS0+bG9j
aygpIH07CiAgICAgICAgIG1faGFuZGxlLT5jbGVhcigpOwogICAgIH0KIAotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soZ2xvYmFsU3RhdGVMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZ2xv
YmFsU3RhdGVMb2NrIH07CiAKICAgICB2aWV3cygpLnJlbW92ZShtX2hhbmRsZS5jb3B5UmVmKCkp
OwogICAgIGlmICghdmlld3MoKS5pc0VtcHR5KCkpCkBAIC0yMDUsMTQgKzIwNSwxNCBAQCB2b2lk
IENBVmlldzo6c2V0TGF5ZXIoQ0FDRkxheWVyUmVmIGxheWVyKQogCiAgICAgQ0FDRkxheWVyU2V0
RnJhbWUobV9sYXllci5nZXQoKSwgbV9ib3VuZHMpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBDQUNGQ29u
dGV4dFNldExheWVyKG1fY29udGV4dC5nZXQoKSwgbV9sYXllci5nZXQoKSk7CiB9CiAKIHZvaWQg
Q0FWaWV3Ojp1cGRhdGUoQ1dpbmRvdyB3aW5kb3csIGNvbnN0IENHUmVjdCYgYm91bmRzKQogewog
ICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9iYWxTdGF0ZUxvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU3RhdGVMb2NrIH07CiAKICAgICAgICAgLy8g
RW5zdXJlIG91ciBtZXNzYWdlIHdpbmRvdyBpcyBjcmVhdGVkIG9uIHRoZSB0aHJlYWQgdGhhdCBj
YWxsZWQgQ0FWaWV3Ojp1cGRhdGUuCiAgICAgICAgIGlmICghbWVzc2FnZVdpbmRvdykKQEAgLTIy
OSw3ICsyMjksNyBAQCB2b2lkIENBVmlldzo6dXBkYXRlKENXaW5kb3cgd2luZG93LCBjb25zdCBD
R1JlY3QmIGJvdW5kcykKICAgICBib29sIGJvdW5kc0NoYW5nZWQ7CiAKICAgICB7Ci0gICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogCiAgICAgICAgIGJvdW5kc0NoYW5nZWQgPSAhQ0dSZWN0RXF1YWxUb1JlY3Qo
bV9ib3VuZHMsIGJvdW5kcyk7CiAKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIENBVmlldzo6aW52
YWxpZGF0ZVJlY3RzKGNvbnN0IENHUmVjdCogcmVjdHMsIHNpemVfdCBjb3VudCkKIAogdm9pZCBD
QVZpZXc6OmRyYXdUb1dpbmRvdygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBkcmF3VG9XaW5kb3dJbnRl
cm5hbCgpOwogfQogCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVmUHRyPEltYWdlPiBDQVZpZXc6OmRy
YXdUb0ltYWdlKENHUG9pbnQmIGltYWdlT3JpZ2luLCBDRlRpbWVJbnRlcnZhbCYgbmV4dERyYXcK
ICAgICBpbWFnZU9yaWdpbiA9IENHUG9pbnRaZXJvOwogICAgIG5leHREcmF3VGltZSA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8Q0ZUaW1lSW50ZXJ2YWw+OjppbmZpbml0eSgpOwogCi0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAgICAgYm9vbCB3aWxsVXBkYXRlU29vbjsKQEAg
LTQzMSw3ICs0MzEsNyBAQCB2b2lkIENBVmlldzo6ZHJhd0ludG9EQyhIREMgZGMpCiAgICAgfQog
CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgICAgICBDQVJlbmRlckNvbnRleHQqIHJl
bmRlckNvbnRleHQgPSBzdGF0aWNfY2FzdDxDQVJlbmRlckNvbnRleHQqPihDQUNGQ29udGV4dEdl
dFJlbmRlckNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CiAgICAgICAgIENBUmVuZGVyQ29udGV4
dExvY2socmVuZGVyQ29udGV4dCk7CkBAIC00NTYsMTMgKzQ1NiwxMyBAQCB2b2lkIENBVmlldzo6
ZHJhd0ludG9EQyhIREMgZGMpCiAKIHZvaWQgQ0FWaWV3OjpzZXRTaG91bGRJbnZlcnRDb2xvcnMo
Ym9vbCBzaG91bGRJbnZlcnRDb2xvcnMpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBtX3Nob3VsZEludmVy
dENvbG9ycyA9IHNob3VsZEludmVydENvbG9yczsKIH0KIAogdm9pZCBDQVZpZXc6OnNjaGVkdWxl
TmV4dERyYXcoQ0ZUaW1lSW50ZXJ2YWwgbWVkaWFUaW1lKQogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9kaXNwbGF5TGlua0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Rpc3Bs
YXlMaW5rTG9jayB9OwogCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAg
LTQ5MSw3ICs0OTEsNyBAQCB2b2lkIENBVmlldzo6ZGlzcGxheUxpbmtSZWFjaGVkQ0FNZWRpYVRp
bWUoQ1ZEaXNwbGF5TGluayogZGlzcGxheUxpbmssIENGVGltZUludAogICAgIEFTU0VSVChtX2Rl
c3RpbmF0aW9uID09IERyYXdpbmdEZXN0aW5hdGlvbldpbmRvdyk7CiAKICAgICB7Ci0gICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9kaXNwbGF5TGlua0xvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9kaXNwbGF5TGlua0xvY2sgfTsKICAgICAgICAgaWYgKCFtX2Rpc3BsYXlM
aW5rKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGRpc3BsYXlM
aW5rLCBkaXNwbGF5TGluayA9PSBtX2Rpc3BsYXlMaW5rKTsKQEAgLTUwMCw3ICs1MDAsNyBAQCB2
b2lkIENBVmlldzo6ZGlzcGxheUxpbmtSZWFjaGVkQ0FNZWRpYVRpbWUoQ1ZEaXNwbGF5TGluayog
ZGlzcGxheUxpbmssIENGVGltZUludAogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CiAgICAgZHJhd1RvV2luZG93SW50ZXJuYWwoKTsKIH0KIApAQCAtNTE3LDcgKzUxNyw3
IEBAIHZvaWQgQ0FWaWV3Ojpjb250ZXh0RGlkQ2hhbmdlQ2FsbGJhY2sodm9pZCogb2JqZWN0LCB2
b2lkKiBpbmZvLCB2b2lkKikKIHZvaWQgQ0FWaWV3Ojpjb250ZXh0RGlkQ2hhbmdlKCkKIHsKICAg
ICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgICAgIC8vIE91ciBsYXllcidzIHJlbmRlcmVk
IGFwcGVhcmFuY2Ugb25jZSBhZ2FpbiBtYXRjaGVzIG91ciBib3VuZHMsIHNvIGl0J3Mgc2FmZSB0
byBkcmF3LgogICAgICAgICBtX2RyYXdpbmdQcm9oaWJpdGVkID0gZmFsc2U7CkBAIC01MzQsNyAr
NTM0LDcgQEAgdm9pZCBDQVZpZXc6OmNvbnRleHREaWRDaGFuZ2UoKQogdm9pZCBDQVZpZXc6OnVw
ZGF0ZVNvb24oKQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9i
YWxTdGF0ZUxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU3RhdGVMb2NrIH07
CiAgICAgICAgIHZpZXdzTmVlZGluZ1VwZGF0ZSgpLmFkZChtX2hhbmRsZS5jb3B5UmVmKCkpOwog
ICAgIH0KICAgICAvLyBJdCBkb2Vzbid0IG1hdHRlciB3aGF0IHRpbWVyIElEIHdlIHBhc3MgaGVy
ZSwgYXMgbG9uZyBhcyBpdCdzIG5vbnplcm8uCkBAIC01NDksMTYgKzU0OSwxNiBAQCB2b2lkIENB
Vmlldzo6dXBkYXRlVmlld3NOb3coSFdORCB3aW5kb3csIFVJTlQsIFVJTlRfUFRSIHRpbWVySUQs
IERXT1JEKQogCiAgICAgSGFzaFNldDxSZWY8Q0FWaWV3OjpIYW5kbGU+PiB2aWV3c1RvVXBkYXRl
OwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9iYWxTdGF0ZUxvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU3RhdGVMb2NrIH07CiAgICAgICAgIHZp
ZXdzTmVlZGluZ1VwZGF0ZSgpLnN3YXAodmlld3NUb1VwZGF0ZSk7CiAgICAgfQogCiAgICAgZm9y
IChhdXRvJiBoYW5kbGUgOiB2aWV3c1RvVXBkYXRlKSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soaGFuZGxlLT5sb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaGFuZGxl
LT5sb2NrKCkgfTsKICAgICAgICAgQ0FWaWV3KiB2aWV3ID0gaGFuZGxlLT52aWV3KCk7CiAgICAg
ICAgIGlmICghdmlldykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIHZpZXdM
b2NrZXIgPSBob2xkTG9jayh2aWV3LT5tX2xvY2spOworICAgICAgICBMb2NrZXIgdmlld0xvY2tl
ciB7IHZpZXctPm1fbG9jayB9OwogICAgICAgICB2aWV3LT51cGRhdGUodmlldy0+bV93aW5kb3cs
IHZpZXctPm1fYm91bmRzKTsKICAgICB9CiB9CkBAIC01NjcsNyArNTY3LDcgQEAgSURpcmVjdDNE
RGV2aWNlOSogQ0FWaWV3OjpkM2REZXZpY2U5KCkKIHsKICAgICAvLyBIb2xkIHRoZSBsb2NrIHdo
aWxlIHdlIHJldHVybiB0aGUgc2hhcmVkIGQzZCBkZXZpY2UuIFRoZSBjYWxsZXIgaXMgcmVzcG9u
c2libGUgZm9yIHJldGFpbmluZwogICAgIC8vIHRoZSBkZXZpY2UgYmVmb3JlIHJldHVybmluZyB0
byBlbnN1cmUgdGhhdCBpdCBpcyBub3QgcmVsZWFzZWQuCi0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIHJldHVy
biBDQUQzRFJlbmRlcmVyOjpzaGFyZWQoKS5kM2REZXZpY2U5KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAppbmRleCA0M2NjMWJh
MjY3NzhhOGRhYTYwZTEwZjBlMmNkM2MwNjE1NDE2ZjYxLi5hOGU5NjYxMDJmN2RjNzg4NGFiMzhm
ZDAwMzA5MTkyODQ0YTMzZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKQEAgLTE2OSwxMiArMTY5LDEyIEBAIHN0YXRpYyBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9tQnVuZGxlKFdlYkxvY2Fs
aXphYmxlU3RyaW5nCiBzdGF0aWMgTG9jYWxpemVkU3RyaW5nKiBmaW5kQ2FjaGVkU3RyaW5nKFdl
YkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5nc0J1bmRsZSwgY29uc3QgU3RyaW5nJiBr
ZXkpCiB7CiAgICAgaWYgKCFzdHJpbmdzQnVuZGxlKSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobWFpbkJ1bmRsZUxvY1N0cmluZ3NMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1haW5CdW5kbGVMb2NTdHJpbmdzTG9jayB9OwogICAgICAgICByZXR1cm4gbWFpbkJ1bmRs
ZUxvY1N0cmluZ3MoKS5nZXQoa2V5KTsKICAgICB9CiAKICAgICBpZiAoc3RyaW5nc0J1bmRsZS0+
YnVuZGxlID09IFdlYktpdExvY2FsaXphYmxlU3RyaW5nc0J1bmRsZS5idW5kbGUpIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhmcmFtZXdvcmtMb2NTdHJpbmdzTG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBmcmFtZXdvcmtMb2NTdHJpbmdzTG9jayB9OwogICAgICAgICBy
ZXR1cm4gZnJhbWV3b3JrTG9jU3RyaW5ncygpLmdldChrZXkpOwogICAgIH0KIApAQCAtMTg0LDEy
ICsxODQsMTIgQEAgc3RhdGljIExvY2FsaXplZFN0cmluZyogZmluZENhY2hlZFN0cmluZyhXZWJM
b2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0cmluZ3NCdW4KIHN0YXRpYyB2b2lkIGNhY2hlU3Ry
aW5nKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5nc0J1bmRsZSwgY29uc3QgU3Ry
aW5nJiBrZXksIExvY2FsaXplZFN0cmluZyogdmFsdWUpCiB7CiAgICAgaWYgKCFzdHJpbmdzQnVu
ZGxlKSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobWFpbkJ1bmRsZUxvY1N0cmlu
Z3NMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1haW5CdW5kbGVMb2NTdHJpbmdzTG9j
ayB9OwogICAgICAgICBtYWluQnVuZGxlTG9jU3RyaW5ncygpLnNldChrZXksIHZhbHVlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZnJhbWV3
b3JrTG9jU3RyaW5nc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBmcmFtZXdvcmtMb2NTdHJp
bmdzTG9jayB9OwogICAgIGZyYW1ld29ya0xvY1N0cmluZ3MoKS5zZXQoa2V5LCB2YWx1ZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBi
MzA5NGJhZmRlYzcyNzQ3ZTNhODBlNjEzODkxZWJmZWQyY2VlNDM4Li5kNWY1MGZhYjQ3YzU2YWQ4
YTE3MzA5ZmY1MmFkMGM0YzZjZmNkOGRjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDUtMjEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGhvbGRMb2NrKCkg
aW4gV2ViS2l0L1dlYktpdExlZ2FjeS9Ub29scyBhcyBpdCBpcyBub3QgY29tcGF0aWJsZSB3aXRo
IENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGlu
Zy5jcHA6CisgICAgICAgIChydW5KYXZhU2NyaXB0VGhyZWFkKToKKyAgICAgICAgKHN0YXJ0SmF2
YVNjcmlwdFRocmVhZHMpOgorICAgICAgICAoc3RvcEphdmFTY3JpcHRUaHJlYWRzKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAgICAgKGNo
ZWNrX2xvY2tfZ3VhcmQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAgICAoV2ViS2l0U3R5bGVUZXN0LnRlc3RfbG9ja19n
dWFyZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91cC5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0VGhyZWFkR3JvdXApOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkFYVGhyZWFkOjpkaXNw
YXRjaCk6CisgICAgICAgIChXVFI6OkFYVGhyZWFkOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21BWFRo
cmVhZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OkFYVGhyZWFkOjppbml0
aWFsaXplUnVuTG9vcCk6CisKIDIwMjEtMDUtMjEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJ1biBsYXlvdXQgdGVzdHMgaW4gc3RyZXNzIG1vZGUgZm9y
IDEwIGl0ZXJhdGlvbnMgb24gcmVndWxhciBFV1MgbGF5b3V0LXRlc3QgcXVldWVzCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwCmluZGV4IDVmOTg5MjljMzFi
YzMzNmVlMDY4NjQ3ZTZmMTUzNDQ2NDc0MGZlMzQuLmFmM2IyZTFmY2EzNmIyZmY0MjFjNWMxZWY0
MWUwNmE4OTkxMTM0NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3Jp
cHRUaHJlYWRpbmcuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJl
YWRpbmcuY3BwCkBAIC02NywyNiArNjcsMjYgQEAgdm9pZCBydW5KYXZhU2NyaXB0VGhyZWFkKCkK
IAogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHg7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGphdmFTY3JpcHRUaHJlYWRzTG9jayk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBqYXZhU2NyaXB0VGhyZWFkc0xvY2sgfTsKICAgICAgICAgY3R4ID0gSlNHbG9iYWxDb250
ZXh0Q3JlYXRlSW5Hcm91cChqYXZhU2NyaXB0VGhyZWFkc0dyb3VwLCAwKTsKICAgICB9CiAKICAg
ICBKU1N0cmluZ1JlZiBzY3JpcHRSZWY7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGphdmFTY3JpcHRUaHJlYWRzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBq
YXZhU2NyaXB0VGhyZWFkc0xvY2sgfTsKICAgICAgICAgc2NyaXB0UmVmID0gSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0KTsKICAgICB9CiAKICAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGphdmFTY3JpcHRU
aHJlYWRzTG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgamF2YVNjcmlwdFRocmVh
ZHNMb2NrIH07CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAg
ICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgc2NyaXB0UmVmLCAwLCAwLCAxLCAmZXhjZXB0aW9u
KTsKICAgICAgICAgICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soamF2YVNjcmlwdFRocmVhZHNM
b2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBqYXZhU2NyaXB0VGhyZWFkc0xvY2sg
fTsKICAgICAgICAgICAgIGNvbnN0IHNpemVfdCB2YWx1ZXNDb3VudCA9IDEwMjQ7CiAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIHZhbHVlc1t2YWx1ZXNDb3VudF07CiAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHZhbHVlc0NvdW50OyArK2kpCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQg
cnVuSmF2YVNjcmlwdFRocmVhZCgpCiAgICAgICAgIH0KIAogICAgICAgICB7Ci0gICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGphdmFTY3JpcHRUaHJlYWRzTG9jayk7CisgICAgICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgamF2YVNjcmlwdFRocmVhZHNMb2NrIH07CiAgICAgICAgICAg
ICBpZiAoamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIHJ1bkphdmFTY3JpcHRU
aHJlYWQoKQogICAgICAgICBpZiAocmFuZCgpICUgNSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soamF2YVNjcmlwdFRocmVhZHNMb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGphdmFTY3JpcHRUaHJlYWRzTG9jayB9OwogICAgICAg
ICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgICAgICB0aHJlYWQuZGV0
YWNoKCk7CiAgICAgICAgIGphdmFTY3JpcHRUaHJlYWRzKCkucmVtb3ZlKCZ0aHJlYWQpOwpAQCAt
MTExLDcgKzExMSw3IEBAIHZvaWQgcnVuSmF2YVNjcmlwdFRocmVhZCgpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soamF2YVNjcmlwdFRocmVhZHNM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgamF2YVNjcmlwdFRocmVhZHNMb2NrIH07CiAgICAg
SlNTdHJpbmdSZWxlYXNlKHNjcmlwdFJlZik7CiAgICAgSlNHYXJiYWdlQ29sbGVjdChjdHgpOwog
ICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY3R4KTsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lk
IHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMoKQogewogICAgIGphdmFTY3JpcHRUaHJlYWRzR3JvdXAg
PSBKU0NvbnRleHRHcm91cENyZWF0ZSgpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhq
YXZhU2NyaXB0VGhyZWFkc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBqYXZhU2NyaXB0VGhy
ZWFkc0xvY2sgfTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamF2YVNjcmlwdFRocmVh
ZHNDb3VudDsgKytpKQogICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLmFkZChUaHJlYWQ6OmNy
ZWF0ZSgiSmF2YVNjcmlwdCBUaHJlYWQiLCAmcnVuSmF2YVNjcmlwdFRocmVhZCkpOwpAQCAtMTMw
LDEzICsxMzAsMTMgQEAgdm9pZCBzdGFydEphdmFTY3JpcHRUaHJlYWRzKCkKIHZvaWQgc3RvcEph
dmFTY3JpcHRUaHJlYWRzKCkKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soamF2YVNjcmlwdFRocmVhZHNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGphdmFT
Y3JpcHRUaHJlYWRzTG9jayB9OwogICAgICAgICBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1p
bmF0ZSA9IHRydWU7CiAgICAgfQogCiAgICAgVmVjdG9yPFJlZlB0cjxUaHJlYWQ+LCBqYXZhU2Ny
aXB0VGhyZWFkc0NvdW50PiB0aHJlYWRzOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhqYXZhU2NyaXB0VGhyZWFkc0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
amF2YVNjcmlwdFRocmVhZHNMb2NrIH07CiAgICAgICAgIHRocmVhZHMgPSBjb3B5VG9WZWN0b3Io
amF2YVNjcmlwdFRocmVhZHMoKSk7CiAgICAgICAgIEFTU0VSVCh0aHJlYWRzLnNpemUoKSA9PSBq
YXZhU2NyaXB0VGhyZWFkc0NvdW50KTsKICAgICB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBz
dG9wSmF2YVNjcmlwdFRocmVhZHMoKQogICAgICAgICB0aHJlYWRzW2ldLT53YWl0Rm9yQ29tcGxl
dGlvbigpOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGphdmFTY3Jp
cHRUaHJlYWRzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBqYXZhU2NyaXB0VGhyZWFk
c0xvY2sgfTsKICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5jbGVhcigpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQppbmRleCBiY2U3
OWIwNGUxMTM2ZWY0YTBlYWI1Y2NiNzViZmExYjdhZWQxNzIwLi44YjA3Yjg3ZmNiZjFjYzFlOWJk
MzcxMThiODA2ZjA1ZTM5N2M1NzM1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2NwcC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NwcC5weQpAQCAtMjgzOCw3ICsyODM4LDcgQEAgZGVmIGNoZWNrX2xvY2tfZ3Vh
cmQoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRlLCBlcnJvcik6CiAgICAgaWYg
bm90IHVzaW5nX3N0ZF9sb2NrX2d1YXJkX3NlYXJjaDoKICAgICAgICAgcmV0dXJuCiAKLSAgICBl
cnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvbG9ja19ndWFyZCcsIDQsICJVc2UgJ2F1dG8gbG9j
a2VyID0gaG9sZExvY2sobXV0ZXgpJyBpbnN0ZWFkIG9mICdzdGQ6OmxvY2tfZ3VhcmQ8PicuIikK
KyAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvbG9ja19ndWFyZCcsIDQsICJVc2UgJ0xv
Y2tlciBsb2NrZXIgeyBsb2NrIH0nIGluc3RlYWQgb2YgJ3N0ZDo6bG9ja19ndWFyZDw+Jy4iKQog
CiAKIGRlZiBjaGVja19jdHlwZV9mdW5jdGlvbnMoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBm
aWxlX3N0YXRlLCBlcnJvcik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CmluZGV4IDU2NTIzYjQyZTkxN2IzZmQwZWNjOGY2
YzgxZWIwZmY4NGRhMzA5ZWIuLjU4NDFkN2YzNTA4OTc1NTliOTY4M2VmMDhmZjQzOWQ1OTFjZjUy
NjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
Y3BwX3VuaXR0ZXN0LnB5CkBAIC01NjgwLDE5ICs1NjgwLDE5IEBAIGNsYXNzIFdlYktpdFN0eWxl
VGVzdChDcHBTdHlsZVRlc3RCYXNlKToKIAogICAgIGRlZiB0ZXN0X2xvY2tfZ3VhcmQoc2VsZik6
CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtdXRleCk7JywKKyAgICAgICAgICAgICdMb2NrZXIgbG9ja2VyIHsgbG9jayB9Oycs
CiAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICdmb28uY3BwJykKIAogICAgICAgICBzZWxm
LmFzc2VydF9saW50KAogICAgICAgICAgICAgJ3N0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrZXIo
bXV0ZXgpOycsCi0gICAgICAgICAgICAiVXNlICdhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG11dGV4
KScgaW5zdGVhZCBvZiAnc3RkOjpsb2NrX2d1YXJkPD4nLiIKKyAgICAgICAgICAgICJVc2UgJ0xv
Y2tlciBsb2NrZXIgeyBsb2NrIH0nIGluc3RlYWQgb2YgJ3N0ZDo6bG9ja19ndWFyZDw+Jy4iCiAg
ICAgICAgICAgICAiICBbcnVudGltZS9sb2NrX2d1YXJkXSBbNF0iLAogICAgICAgICAgICAgJ2Zv
by5jcHAnKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCiAgICAgICAgICAgICAnc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2tlcihtdXRleCk7JywKLSAgICAgICAgICAgICJVc2UgJ2F1dG8g
bG9ja2VyID0gaG9sZExvY2sobXV0ZXgpJyBpbnN0ZWFkIG9mICdzdGQ6OmxvY2tfZ3VhcmQ8Picu
IgorICAgICAgICAgICAgIlVzZSAnTG9ja2VyIGxvY2tlciB7IGxvY2sgfScgaW5zdGVhZCBvZiAn
c3RkOjpsb2NrX2d1YXJkPD4nLiIKICAgICAgICAgICAgICIgIFtydW50aW1lL2xvY2tfZ3VhcmRd
IFs0XSIsCiAgICAgICAgICAgICAnZm9vLm1tJykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbmRpdGlvbi5jcHAKaW5kZXggNWU0MDljNTg3ZjFjZWRjNWI1YTk4ZTA1NzRhYTIy
YTE3MTZmMzJmMy4uM2IzNWIwOGNhMTRiODE4ODQ3ZDY2ZWU1ODdmZmFkMWE1OTBkODEyNiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCkBAIC0xMTgsNyAr
MTE4LDcgQEAgdm9pZCBydW5UZXN0KAogICAgICAgICAgICAgICAgICAgICBub3RpZnkobm90aWZ5
U3R5bGUsIGZ1bGxDb25kaXRpb24sIHNob3VsZE5vdGlmeSk7CiAKICAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWNl
aXZlZExvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHJlY2Vp
dmVkTG9jayB9OwogICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKHJlc3Vs
dCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0xNTUsNyAr
MTU1LDcgQEAgdm9pZCBydW5UZXN0KAogICAgICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9u
KCk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgICAgIHNob3VsZENvbnRpbnVlID0gZmFs
c2U7CiAgICAgfQogICAgIGVtcHR5Q29uZGl0aW9uLm5vdGlmeUFsbCgpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwCmluZGV4IGFkYjAwOTI0MmQ2YmEy
M2M2N2UyNmE2OTNiODI4N2QyYTUxMzEzOWIuLmQxMGY3YmYyMmZlZGZlZDkzNDQ4YzY0MmQ0ODgw
OTM2ZDFlYmU4MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Ro
cmVhZEdyb3VwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRH
cm91cC5jcHAKQEAgLTQ0LDEwICs0NCwxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0VGhyZWFkR3JvdXAo
TW9kZSBtb2RlKQogICAgIFZlY3RvcjxSZWY8VGhyZWFkPj4gdGhyZWFkczsKIAogICAgIHsKLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IGxvY2sgfTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVGhy
ZWFkczsgKytpKSB7CiAgICAgICAgICAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNy
ZWF0ZSgiVGhyZWFkR3JvdXBXb3JrZXIiLCBbJl0gewotICAgICAgICAgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxv
Y2sgfTsKICAgICAgICAgICAgICAgICBpZiAobW9kZSA9PSBNb2RlOjpBZGRDdXJyZW50VGhyZWFk
KQogICAgICAgICAgICAgICAgICAgICB0aHJlYWRHcm91cC0+YWRkQ3VycmVudFRocmVhZCgpOwog
ICAgICAgICAgICAgICAgICsrd2FpdGluZ1RocmVhZHM7CkBAIC02NywxMSArNjcsMTEgQEAgc3Rh
dGljIHZvaWQgdGVzdFRocmVhZEdyb3VwKE1vZGUgbW9kZSkKICAgICB9CiAKICAgICB7Ci0gICAg
ICAgIGF1dG8gdGhyZWFkR3JvdXBMb2NrZXIgPSBob2xkTG9jayh0aHJlYWRHcm91cC0+Z2V0TG9j
aygpKTsKKyAgICAgICAgTG9ja2VyIHRocmVhZEdyb3VwTG9ja2VyIHsgdGhyZWFkR3JvdXAtPmdl
dExvY2soKSB9OwogICAgICAgICBFWFBFQ1RfRVEodGhyZWFkcy5zaXplKCksIG51bWJlck9mVGhy
ZWFkcyk7CiAgICAgICAgIEVYUEVDVF9FUSh0aHJlYWRHcm91cC0+dGhyZWFkcyh0aHJlYWRHcm91
cExvY2tlcikuc2l6ZSgpLCBudW1iZXJPZlRocmVhZHMpOwogICAgICAgICB7Ci0gICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IGxvY2sgfTsKICAgICAgICAgICAgIHJlc3RhcnRpbmcgPSB0cnVlOwogICAgICAgICAgICAg
cmVzdGFydENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAgICAgICAgfQpAQCAtODQsNyArODQsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0VGhyZWFkR3JvdXAoTW9kZSBtb2RlKQogICAgICAgICBmb3IgKGF1
dG8mIHRocmVhZCA6IHRocmVhZHMpCiAgICAgICAgICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0
aW9uKCk7CiAKLSAgICAgICAgYXV0byB0aHJlYWRHcm91cExvY2tlciA9IGhvbGRMb2NrKHRocmVh
ZEdyb3VwLT5nZXRMb2NrKCkpOworICAgICAgICBMb2NrZXIgdGhyZWFkR3JvdXBMb2NrZXIgeyB0
aHJlYWRHcm91cC0+Z2V0TG9jaygpIH07CiAgICAgICAgIEVYUEVDVF9FUSh0aHJlYWRHcm91cC0+
dGhyZWFkcyh0aHJlYWRHcm91cExvY2tlcikuc2l6ZSgpLCAwdSk7CiAgICAgfQogfQpAQCAtMTA2
LDcgKzEwNiw3IEBAIFRFU1QoV1RGLCBUaHJlYWRHcm91cERvTm90QWRkRGVhZFRocmVhZCkKICAg
ICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CiAgICAgRVhQRUNUX1RSVUUodGhyZWFkR3Jv
dXAtPmFkZCh0aHJlYWQuZ2V0KCkpID09IFRocmVhZEdyb3VwQWRkUmVzdWx0OjpOb3RBZGRlZCk7
CiAKLSAgICBhdXRvIHRocmVhZEdyb3VwTG9ja2VyID0gaG9sZExvY2sodGhyZWFkR3JvdXAtPmdl
dExvY2soKSk7CisgICAgTG9ja2VyIHRocmVhZEdyb3VwTG9ja2VyIHsgdGhyZWFkR3JvdXAtPmdl
dExvY2soKSB9OwogICAgIEVYUEVDVF9FUSh0aHJlYWRHcm91cC0+dGhyZWFkcyh0aHJlYWRHcm91
cExvY2tlcikuc2l6ZSgpLCAwdSk7CiB9CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBURVNUKFdURiwg
VGhyZWFkR3JvdXBBZGREdXBsaWNhdGVUaHJlYWRzKQogICAgIENvbmRpdGlvbiByZXN0YXJ0Q29u
ZGl0aW9uOwogICAgIHN0ZDo6c2hhcmVkX3B0cjxUaHJlYWRHcm91cD4gdGhyZWFkR3JvdXAgPSBU
aHJlYWRHcm91cDo6Y3JlYXRlKCk7CiAgICAgUmVmPFRocmVhZD4gdGhyZWFkID0gVGhyZWFkOjpj
cmVhdGUoIlRocmVhZEdyb3VwV29ya2VyIiwgWyZdIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhsb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAgICAg
cmVzdGFydENvbmRpdGlvbi53YWl0KGxvY2ssIFsmXSB7CiAgICAgICAgICAgICByZXR1cm4gcmVz
dGFydGluZzsKICAgICAgICAgfSk7CkBAIC0xMjYsMTggKzEyNiwxOCBAQCBURVNUKFdURiwgVGhy
ZWFkR3JvdXBBZGREdXBsaWNhdGVUaHJlYWRzKQogICAgIEVYUEVDVF9UUlVFKHRocmVhZEdyb3Vw
LT5hZGQodGhyZWFkLmdldCgpKSA9PSBUaHJlYWRHcm91cEFkZFJlc3VsdDo6QWxyZWFkeUFkZGVk
KTsKIAogICAgIHsKLSAgICAgICAgYXV0byB0aHJlYWRHcm91cExvY2tlciA9IGhvbGRMb2NrKHRo
cmVhZEdyb3VwLT5nZXRMb2NrKCkpOworICAgICAgICBMb2NrZXIgdGhyZWFkR3JvdXBMb2NrZXIg
eyB0aHJlYWRHcm91cC0+Z2V0TG9jaygpIH07CiAgICAgICAgIEVYUEVDVF9FUSh0aHJlYWRHcm91
cC0+dGhyZWFkcyh0aHJlYWRHcm91cExvY2tlcikuc2l6ZSgpLCAxdSk7CiAgICAgfQogCiAgICAg
ewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbG9jayB9OwogICAgICAgICByZXN0YXJ0aW5nID0gdHJ1ZTsKICAgICAgICAgcmVz
dGFydENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAgICB9CiAgICAgdGhyZWFkLT53YWl0Rm9yQ29t
cGxldGlvbigpOwogICAgIHsKLSAgICAgICAgYXV0byB0aHJlYWRHcm91cExvY2tlciA9IGhvbGRM
b2NrKHRocmVhZEdyb3VwLT5nZXRMb2NrKCkpOworICAgICAgICBMb2NrZXIgdGhyZWFkR3JvdXBM
b2NrZXIgeyB0aHJlYWRHcm91cC0+Z2V0TG9jaygpIH07CiAgICAgICAgIEVYUEVDVF9FUSh0aHJl
YWRHcm91cC0+dGhyZWFkcyh0aHJlYWRHcm91cExvY2tlcikuc2l6ZSgpLCAwdSk7CiAgICAgfQog
fQpAQCAtMTY2LDcgKzE2Niw3IEBAIFRFU1QoV1RGLCBUaHJlYWRHcm91cFJlbW92ZSkKICAgICBh
dXRvIHRocmVhZEdyb3VwID0gVGhyZWFkR3JvdXA6OmNyZWF0ZSgpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBOdW1iZXJPZlRocmVhZHM7IGkrKykgewogICAgICAgICBhdXRvIHRocmVh
ZCA9IFRocmVhZDo6Y3JlYXRlKCJUaHJlYWRHcm91cFdvcmtlciIsIFsmXSgpIHsKLSAgICAgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbG9jayB9OwogICAgICAgICAgICAgKyt3YWl0aW5nVGhyZWFkczsKICAgICAgICAgICAg
IGNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgICAgIHRocmVhZFJ1bm5pbmdDb25kaXRp
b24ud2FpdChsb2NrLCBbJl0oKSB7CkBAIC0xODAsNyArMTgwLDcgQEAgVEVTVChXVEYsIFRocmVh
ZEdyb3VwUmVtb3ZlKQogICAgIEVYUEVDVF9FUShOdW1iZXJPZlRocmVhZHMsIGNvdW50VGhyZWFk
R3JvdXBzKHRocmVhZHMpKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhsb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAgICAgY29uZGl0
aW9uLndhaXQobG9jaywgWyZdIHsKICAgICAgICAgICAgIHJldHVybiB3YWl0aW5nVGhyZWFkcyA9
PSBOdW1iZXJPZlRocmVhZHM7CiAgICAgICAgIH0pOwpAQCAtMTkzLDcgKzE5Myw3IEBAIFRFU1Qo
V1RGLCBUaHJlYWRHcm91cFJlbW92ZSkKICAgICBFWFBFQ1RfRVEoMFUsIGNvdW50VGhyZWFkR3Jv
dXBzKHRocmVhZHMpKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhs
b2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAgICAgdGhyZWFkUnVu
bmluZyA9IGZhbHNlOwogICAgICAgICB0aHJlYWRSdW5uaW5nQ29uZGl0aW9uLm5vdGlmeUFsbCgp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggYWQ0YTI1YWU1
YjA3Yjc1OGUyZTBhOTFmYWYxYjUyODMwM2ViODQ4ZC4uOTg0NGU1YjYzMzVmYmNhMjg2ZTJjMTFj
NmIzZTk4NzhkOWM0MGQwYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKQEAg
LTE3Niw3ICsxNzYsNyBAQCB2b2lkIEFYVGhyZWFkOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+
JiYgZnVuY3Rpb24pCiAgICAgYXhUaHJlYWQuY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKIAogICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhheFRocmVhZC5tX2Z1bmN0aW9uc011
dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGF4VGhyZWFkLm1fZnVuY3Rpb25zTXV0ZXgg
fTsKICAgICAgICAgYXhUaHJlYWQubV9mdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUoZnVuY3Rpb24p
KTsKICAgICB9CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEFYVGhyZWFkOjpkaXNwYXRjaEZ1
bmN0aW9uc0Zyb21BWFRocmVhZCgpCiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IGZ1bmN0
aW9uczsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Z1bmN0aW9u
c011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZnVuY3Rpb25zTXV0ZXggfTsKICAg
ICAgICAgZnVuY3Rpb25zID0gV1RGTW92ZShtX2Z1bmN0aW9ucyk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCmluZGV4IGE4ODdkZTVjODVkNTAy
ODRmZDI0NDcxMjUxNmU4OWM5OThjM2FhNWYuLjkzZWE1NzAwNTA3Mzk4YTQ1ZWU5MTlkMDU2NTA0
NDY5MTQ0YTllNzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFj
Lm1tCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBBWFRocmVhZDo6aW5pdGlhbGl6ZVJ1bkxvb3Ao
KQogewogICAgIC8vIEluaXRpYWxpemUgdGhlIHJ1biBsb29wLgogICAgIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2luaXRpYWxpemVSdW5Mb29wTXV0ZXgpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9pbml0aWFsaXplUnVuTG9vcE11dGV4IH07CiAKICAgICAgICAgbV90
aHJlYWRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429366</attachid>
            <date>2021-05-21 17:01:54 -0700</date>
            <delta_ts>2021-05-21 21:34:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226127-20210521170153.patch</filename>
            <type>text/plain</type>
            <size>40678</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5OWY1NjlhMjA4OTY0YTY0
YjdhZTY2MjMzYjNhNTYzMTQwZDk1MTcuLjhmMThhNGExOWM0NzE2MTNhZmJmNDk5YjRhNzQwMzVh
MTIxZGQzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjEtMDUtMjEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGhvbGRMb2NrKCkg
aW4gV2ViS2l0L1dlYktpdExlZ2FjeS9Ub29scyBhcyBpdCBpcyBub3QgY29tcGF0aWJsZSB3aXRo
IENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjbG9zZSk6
CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY0RGVjb2Rl
cik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY1RGVj
b2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVWUDlE
ZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VE
ZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUVu
Y29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6cmVsZWFzZUVu
Y29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6YWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6
ZW5xdWV1ZU1hdGNoaW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5j
TWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXNBbmRSZXNl
dERpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc0ZvckNvbm5lY3Rpb24pOgorICAgICAgICAqIFNo
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3Bs
YXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVpcmVzRGlzcGxheVJlZnJlc2hDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpp
bnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0
b3I6OmRpc3BsYXlSZWZyZXNoQ2FsbGJhY2spOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVNhbXBsZUN1cnNvcjo6Y29weSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU2FtcGxlQ3Vyc29y
OjpnZXRTYW1wbGVNYXAgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGlu
Z1ZpZXcubW06CisgICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9wcmVwYXJlUERGRGF0YUZvclBy
aW50aW5nT25TZWNvbmRhcnlUaHJlYWRdKToKKyAgICAgICAgKHByZXBhcmVEYXRhRm9yUHJpbnRp
bmdPblNlY29uZGFyeVRocmVhZCk6CisKIDIwMjEtMDUtMjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBFeHBhbmQgSU9LaXQgbWV0aG9kIGZp
bHRlcnMgdG8gY292ZXIgaXRlbXMgZW5jb3VudGVyZWQgZHVyaW5nIHRlc3RpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL0NoYW5nZUxvZwppbmRleCBmNDEzY2RlMmViOTliOWM0NTM5Mjk1MWY0MDQwZTkyOTcw
MmY0M2Y2Li5iYzVjYzQ5ZTE4MmE3ZjZiZGVkYzA2NWUxYmM0MTRiZjY4MmY4MGZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMjEgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGhvbGRMb2Nr
KCkgaW4gV2ViS2l0L1dlYktpdExlZ2FjeS9Ub29scyBhcyBpdCBpcyBub3QgY29tcGF0aWJsZSB3
aXRoIENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlv
bkNvbnRlbnQubW06CisgICAgICAgICgtW1dlYkZpeGVkUG9zaXRpb25Db250ZW50IHNjcm9sbE9y
Wm9vbUNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYkZpeGVkUG9zaXRpb25Db250ZW50IG92ZXJm
bG93U2Nyb2xsUG9zaXRpb25Gb3JMYXllcjpjaGFuZ2VkVG86XSk6CisgICAgICAgICgtW1dlYkZp
eGVkUG9zaXRpb25Db250ZW50IHNldFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnM6c3RpY2t5Q29u
dGFpbmVyTWFwOl0pOgorICAgICAgICAoLVtXZWJGaXhlZFBvc2l0aW9uQ29udGVudCBoYXNGaXhl
ZE9yU3RpY2t5UG9zaXRpb25MYXllcnNdKToKKwogMjAyMS0wNS0xMCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFdlYkNvcmU6OkhpdFRlc3RS
ZXF1ZXN0OjpSZXF1ZXN0VHlwZSBhbiBlbnVtIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggOTBmNzNjOTE4YzUyNzY5OTlkODA4YjYyNzI4MGZhZTAxNTgxZmNhOC4uMWNmZWNi
NWQ2ZGY4MzgwNjc5OWU1NzgzNmI2M2JmOGIyMmIyZWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBob2xkTG9jaygpIGluIFdlYktpdC9X
ZWJLaXRMZWdhY3kvVG9vbHMgYXMgaXQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBDbGFuZyB0aHJl
YWQgc2FmZXR5IGFuYWx5c2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjYxMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHA6
CisgICAgICAgIChXS1FDQTo6Q0FEM0RSZW5kZXJlcjo6c3dhcENoYWluKToKKyAgICAgICAgKFdL
UUNBOjpDQUQzRFJlbmRlcmVyOjpyZW5kZXJBbmRQcmVzZW50KToKKyAgICAgICAgKFdLUUNBOjpD
QUQzRFJlbmRlcmVyOjpyZW5kZXJUb0ltYWdlKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBVmlldy5jcHA6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpyZWxlYXNlQWxs
RDNEUmVzb3VyY2VzKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OkNBVmlldyk6CisgICAgICAg
IChXS1FDQTo6Q0FWaWV3Ojp+Q0FWaWV3KToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnNldExh
eWVyKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnVwZGF0ZSk6CisgICAgICAgIChXS1FDQTo6
Q0FWaWV3OjpkcmF3VG9XaW5kb3cpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6ZHJhd1RvSW1h
Z2UpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6ZHJhd0ludG9EQyk6CisgICAgICAgIChXS1FD
QTo6Q0FWaWV3OjpzZXRTaG91bGRJbnZlcnRDb2xvcnMpOgorICAgICAgICAoV0tRQ0E6OkNBVmll
dzo6c2NoZWR1bGVOZXh0RHJhdyk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3OjpkaXNwbGF5TGlu
a1JlYWNoZWRDQU1lZGlhVGltZSk6CisgICAgICAgIChXS1FDQTo6Q0FWaWV3Ojpjb250ZXh0RGlk
Q2hhbmdlKToKKyAgICAgICAgKFdLUUNBOjpDQVZpZXc6OnVwZGF0ZVNvb24pOgorICAgICAgICAo
V0tRQ0E6OkNBVmlldzo6dXBkYXRlVmlld3NOb3cpOgorICAgICAgICAoV0tRQ0E6OkNBVmlldzo6
ZDNkRGV2aWNlOSk6CisgICAgICAgICogV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcDoKKyAgICAg
ICAgKGZpbmRDYWNoZWRTdHJpbmcpOgorICAgICAgICAoY2FjaGVTdHJpbmcpOgorCiAyMDIxLTA1
LTIwICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBb
V2ViSURMXSBSZW1vdmUgW0ltcGxpY2l0VGhpc10gYW5kIFtDdXN0b21Qcm94eVRvSlNPYmplY3Rd
IGV4dGVuZGVkIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IGI3Yzk2MzhmOGUyMGY2Mjkx
OTdjYTdiZDgxNGI3MGY3YTA3ZTZlZjQuLmQ0N2Y4NGQxOGJkODYzYzg0OTI0OWY1NjE4MThmOGRi
YmJlZmE4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIExpYldlYlJU
Q0NvZGVjc1Byb3h5OjpjbG9zZSgpCiAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNv
bm5lY3Rpb24oKS5yZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJU
Q0NvZGVjc1Byb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogCiAgICAgZGlzcGF0Y2hUb1Ro
cmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgICAgICBhdXRvIGRlY29kZXJzID0gV1RGTW92ZShtX2RlY29kZXJzKTsKICAg
ICAgICAgZm9yIChhdXRvIGRlY29kZXIgOiBkZWNvZGVycy52YWx1ZXMoKSkKICAgICAgICAgICAg
IHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRGVjb2RlcihkZWNvZGVyKTsKQEAgLTc2LDcgKzc2LDcgQEAg
dm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y2xvc2UoKQogdm9pZCBMaWJXZWJSVENDb2RlY3NQ
cm94eTo6Y3JlYXRlSDI2NERlY29kZXIoUlRDRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBBU1NFUlQo
IW1fZGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIG1fZGVjb2RlcnMuYWRkKGlk
ZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxIMjY0RGVjb2RlcihtYWtlQmxvY2tQdHIoW2Nv
bm5lY3Rpb24gPSBtYWtlUmVmKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9u
KCkpLCBpZGVudGlmaWVyXShDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCB1aW50MzJfdCB0
aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKSB7CiAgICAgICAgIGlmIChhdXRvIHNhbXBs
ZSA9IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUocGl4ZWxCdWZmZXIsIE1lZGlh
VGltZSh0aW1lU3RhbXBOcywgMSkpKQpAQCAtODcsNyArODcsNyBAQCB2b2lkIExpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpjcmVhdGVIMjY0RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlm
aWVyKQogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlSDI2NURlY29kZXIoUlRDRGVj
b2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3Ao
KSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKICAgICBBU1NFUlQoIW1fZGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmll
cikpOwogICAgIG1fZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxI
MjY1RGVjb2RlcihtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyXShDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsQnVmZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1w
KSB7CiAgICAgICAgIGlmIChhdXRvIHNhbXBsZSA9IFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpjcmVhdGUocGl4ZWxCdWZmZXIsIE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSkpKQpAQCAtOTgs
NyArOTgsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVIMjY1RGVjb2RlcihS
VENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94
eTo6Y3JlYXRlVlA5RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogewog
ICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIEFTU0VSVCghbV9k
ZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgbV9kZWNvZGVycy5hZGQoaWRlbnRp
Zmllciwgd2VicnRjOjpjcmVhdGVMb2NhbFZQOURlY29kZXIobWFrZUJsb2NrUHRyKFtjb25uZWN0
aW9uID0gbWFrZVJlZihtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpKSwg
aWRlbnRpZmllcl0oQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0
YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCkgewogICAgICAgICBpZiAoYXV0byBzYW1wbGUgPSBX
ZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUo
dGltZVN0YW1wTnMsIDEpKSkKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVj
c1Byb3h5OjpjcmVhdGVWUDlEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRGVjb2RlcihSVENEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgIEFTU0VSVChtX2RlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAg
ICBpZiAoYXV0byBkZWNvZGVyID0gbV9kZWNvZGVycy50YWtlKGlkZW50aWZpZXIpKQogICAgICAg
ICB3ZWJydGM6OnJlbGVhc2VMb2NhbERlY29kZXIoZGVjb2Rlcik7CkBAIC0xNDEsNyArMTQxLDcg
QEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0RnJhbWVTaXplKFJUQ0RlY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVpbnQxNl8KIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNy
ZWF0ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBmb3JtYXROYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHBh
cmFtZXRlcnMsIGJvb2wgdXNlTG93TGF0ZW5jeSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxv
b3AoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICBBU1NFUlQoIW1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRp
ZmllcikpOwogCiAgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBydGNQYXJh
bWV0ZXJzOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNy
ZWF0ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QKIHZvaWQg
TGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIGlmIChh
dXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRha2UoaWRlbnRpZmllcikpCiAgICAgICAgIHdlYnJ0
Yzo6cmVsZWFzZUxvY2FsRW5jb2RlcihlbmNvZGVyKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lk
IExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCB1aW50MwogYm9vbCBMaWJXZWJSVENDb2RlY3NQcm94eTo6YWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29w
KCkpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAgICAgcmV0dXJuIG1fZW5jb2RlcnMuaXNFbXB0eSgpICYmIG1fZGVj
b2RlcnMuaXNFbXB0eSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uY3BwCmluZGV4IDEwYTc0MzI4NmUwNmMxMzMxOTA5NTdhNjlhMDIwODNiNTQ1NDA0YzAuLjQx
MDg4NjBlOTZmMTlkNDIwYTVlMzM0NWI1ODc1NzEzMGQ0ZWM2NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBDb25u
ZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjplbnF1ZXVlTWF0Y2hpbmdNZXNzYWdlcyhDb25uZWN0
aW9uJiBjb25uZWN0aW8KICAgICAgICAgfQogICAgICAgICBjb25uZWN0aW9uQW5kTWVzc2FnZXMg
PSBXVEZNb3ZlKHJlc3QpOwogICAgIH07Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgIGVucXVldWVNYXRjaGlu
Z01lc3NhZ2VzSW5Db250YWluZXIobV9tZXNzYWdlc0JlaW5nRGlzcGF0Y2hlZCk7CiAgICAgZW5x
dWV1ZU1hdGNoaW5nTWVzc2FnZXNJbkNvbnRhaW5lcihtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxl
V2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBDb25uZWN0
aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24KIAogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2g7CiAgICAgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9tdXRleCB9OwogICAgICAgICBzaG91bGREaXNwYXRjaCA9IG1fZGlkU2NoZWR1bGVEaXNwYXRj
aE1lc3NhZ2VzV29ya1NldC5hZGQoJmNvbm5lY3Rpb24pLmlzTmV3RW50cnk7CiAgICAgICAgIEFT
U0VSVChjb25uZWN0aW9uLm1faW5jb21pbmdNZXNzYWdlc0xvY2suaXNIZWxkKCkpOwogICAgICAg
ICBpZiAobWVzc2FnZS0+c2hvdWxkTWFpbnRhaW5PcmRlcmluZ1dpdGhBc3luY01lc3NhZ2VzKCkp
IHsKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6
OmRpc3BhdGNoTWVzc2FnZXMoRnVuY3Rpb248dm9pZChNZXNzYWdlTmFtZSwgdQogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAg
ICAgIGlmIChtX21lc3NhZ2VzQmVpbmdEaXNwYXRjaGVkLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IG1fbWVzc2FnZXNCZWluZ0Rpc3BhdGNoZWQgPSBzdGQ6OmV4Y2hhbmdlKG1fbWVzc2FnZXNUb0Rp
c3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LCB7IH0pOwogICAgICAgICBlbHNlIHsKQEAg
LTIyMCw3ICsyMjAsNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3Bh
dGNoTWVzc2FnZXNBbmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZQogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIEFT
U0VSVChtX2RpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQuY29udGFpbnMoJmNvbm5l
Y3Rpb24pKTsKICAgICAgICAgbV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0LnJl
bW92ZSgmY29ubmVjdGlvbik7CiAgICAgICAgIEFTU0VSVChtX21lc3NhZ2VzQmVpbmdEaXNwYXRj
aGVkLmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9u
aXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXggMGY4
NGVkOGU2YjNiZDUwMDJiMGU5ZjE0NTNjODc2Nzk4NTE5Njc4Ny4uMWM5MmVhODQ0MzU2NGI2NmYz
ZTI3ODFjNGVlZTQ1MzBmZGJhMWY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVm
cmVzaE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNw
cApAQCAtNTksNyArNTksNyBAQCBib29sIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpy
ZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKIAogICAgIGJvb2wgcHJldmlvdXNGcmFtZURvbmUgeyBm
YWxzZSB9OwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKCkpOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jaygpIH07CiAgICAgICAgIHNldElzU2NoZWR1bGVk
KHRydWUpOwogICAgICAgICBwcmV2aW91c0ZyYW1lRG9uZSA9IGlzUHJldmlvdXNGcmFtZURvbmUo
KTsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBAIGJvb2wgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1v
bml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQogCiBib29sIFRocmVhZGVkRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpyZXF1aXJlc0Rpc3BsYXlSZWZyZXNoQ2FsbGJhY2soKQogewotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbG9jaygp
IH07CiAgICAgcmV0dXJuIGlzU2NoZWR1bGVkKCkgJiYgaXNQcmV2aW91c0ZyYW1lRG9uZSgpOwog
fQogCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6
OmludmFsaWRhdGUoKQogICAgIG1fZGlzcGxheVJlZnJlc2hUaW1lci5zdG9wKCk7CiAgICAgYm9v
bCB3YXNTY2hlZHVsZWQgPSBmYWxzZTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2soKSB9OwogICAgICAg
ICB3YXNTY2hlZHVsZWQgPSBpc1NjaGVkdWxlZCgpOwogICAgIH0KICAgICBpZiAod2FzU2NoZWR1
bGVkKSB7CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6ZGlzcGxheVJlZnJlc2hDYWxsYmFjaygpCiB7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVE
aXNwbGF5UmVmcmVzaE5vdGlmaWNhdGlvbiB7IGZhbHNlIH07CiAgICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGxvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2Nr
KCkgfTsKICAgICAgICAgc2hvdWxkSGFuZGxlRGlzcGxheVJlZnJlc2hOb3RpZmljYXRpb24gPSBp
c1NjaGVkdWxlZCgpICYmIGlzUHJldmlvdXNGcmFtZURvbmUoKTsKICAgICAgICAgaWYgKHNob3Vs
ZEhhbmRsZURpc3BsYXlSZWZyZXNoTm90aWZpY2F0aW9uKQogICAgICAgICAgICAgc2V0SXNQcmV2
aW91c0ZyYW1lRG9uZShmYWxzZSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBUaHJlYWRlZERp
c3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheVJlZnJlc2hDYWxsYmFjaygpCiAgICAgLy8gUmV0
cmlldmUgdGhlIHNjaGVkdWxlZCBzdGF0dXMgZm9yIHRoaXMgRGlzcGxheVJlZnJlc2hNb25pdG9y
LgogICAgIGJvb2wgaGFzQmVlblJlc2NoZWR1bGVkIHsgZmFsc2UgfTsKICAgICB7Ci0gICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGxvY2soKSB9OwogICAgICAgICBoYXNCZWVuUmVzY2hlZHVsZWQgPSBpc1NjaGVkdWxlZCgpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9N
ZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKaW5kZXggY2ZjNTQ2MjQzNTRj
MDRjZjYyMGExMjY4NTNiOTdiNDAyMTc4YzQ3OC4uMjU3ODY5MzY4YmU4NzM4NjYzZWRmNDNmODBj
NzNkYzRjODUwMWQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwCkBAIC0xMTYs
NyArMTE2LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlQ3Vyc29yPiBNZWRpYVNhbXBsZUN1cnNvcjo6
Y3JlYXRlQXRQcmVzZW50YXRpb25UaW1lKEFsbG9jYXRvciYKIAogUmVmUHRyPE1lZGlhU2FtcGxl
Q3Vyc29yPiBNZWRpYVNhbXBsZUN1cnNvcjo6Y29weShBbGxvY2F0b3ImJiBhbGxvY2F0b3IsIGNv
bnN0IE1lZGlhU2FtcGxlQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhjdXJzb3IubV9sb2NhdG9yTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGN1cnNvci5t
X2xvY2F0b3JMb2NrIH07CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyAoYWxsb2NhdG9yKSBNZWRp
YVNhbXBsZUN1cnNvcihXVEZNb3ZlKGFsbG9jYXRvciksIGN1cnNvcikpOwogfQogCkBAIC0yMzMs
NyArMjMzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+CiBPU1N0YXR1cyBNZWRpYVNh
bXBsZUN1cnNvcjo6Z2V0U2FtcGxlTWFwKEZ1bmN0aW9uJiYgZnVuY3Rpb24pIGNvbnN0CiB7CiAg
ICAgT1NTdGF0dXMgc3RhdHVzID0gbm9FcnI7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2F0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NhdG9yTG9jayB9OwogICAg
IG1fdHJhY2tSZWFkZXItPndhaXRGb3JTYW1wbGUoWyZdKFNhbXBsZU1hcCYgc2FtcGxlcywgYm9v
bCBoYXNBbGxTYW1wbGVzKSB7CiAgICAgICAgIGlmICghc2FtcGxlcy5zaXplKCkpCiAgICAgICAg
ICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInRyYWNrICIsIG1fdHJhY2tSZWFkZXItPnRy
YWNrSUQoKSwgIiBmaW5pc2hlZCBwYXJzaW5nIHdpdGggbm8gc2FtcGxlcy4iKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCBhOTFiNzJjMjAz
YTI3MjNlZWI5NDhlYTc1NDRlMDQ4MGFlNTcyN2IzLi45Yjc0ZjNlYzUwZDAyMDE2NjRjNzMxMjk4
OWM3ZjY4YzI5YTA0NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V0tQcmludGluZ1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLUHJp
bnRpbmdWaWV3Lm1tCkBAIC0yNTgsNyArMjU4LDcgQEAgLSAodm9pZClfcHJlcGFyZVBERkRhdGFG
b3JQcmludGluZ09uU2Vjb25kYXJ5VGhyZWFkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKF9wcmludGluZ0NhbGxiYWNrTXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBfcHJpbnRpbmdDYWxsYmFja011dGV4IH07CiAKICAgICBBU1NFUlQoW3Nl
bGYgX2hhc1BhZ2VSZWN0c10pOwogICAgIEFTU0VSVChfcHJpbnRlZFBhZ2VzRGF0YS5pc0VtcHR5
KCkpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVEYXRhRm9yUHJpbnRp
bmdPblNlY29uZGFyeVRocmVhZChXS1ByaW50aW5nVmlldyAqdmlldykKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh2aWV3LT5f
cHJpbnRpbmdDYWxsYmFja011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgdmlldy0+X3ByaW50
aW5nQ2FsbGJhY2tNdXRleCB9OwogCiAgICAgLy8gV2UgbWF5IGhhdmUgcmVjZWl2ZWQgcGFnZSBy
ZWN0cyB3aGlsZSBhIG1lc3NhZ2UgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHRyYXZlbGVkIGZyb20g
c2Vjb25kYXJ5IHRocmVhZCB0byBtYWluIG9uZS4KICAgICBpZiAoW3ZpZXcgX2hhc1BhZ2VSZWN0
c10pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KaW5kZXggYWZlMTFhODBiOWYx
YzljZTc2YTM1NjJmYTYzYzQ1YmY3MWQxMWQ5Ny4uNzI1NDFjYTBiMWZiZmIxNWI3Zjg5YjA1NDdi
YmUwNmE3YWNjNjExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KQEAgLTEw
Miw3ICsxMDIsNyBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAodm9pZClzY3JvbGxPclpvb21DaGFu
Z2VkOihDR1JlY3QpcG9zaXRpb25lZE9iamVjdHNSZWN0CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayh3ZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgd2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jayB9OwogCiAgICAgTGF5ZXJJbmZv
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBfcHJpdmF0ZS0+bV92aWV3cG9ydENvbnN0cmFpbmVk
TGF5ZXJzLmVuZCgpOwogICAgIGZvciAoTGF5ZXJJbmZvTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IF9wcml2YXRlLT5tX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CkBAIC0xNDEsNyArMTQxLDcgQEAgLSAodm9pZClzY3JvbGxPclpvb21DaGFuZ2Vk
OihDR1JlY3QpcG9zaXRpb25lZE9iamVjdHNSZWN0CiAKIC0gKHZvaWQpb3ZlcmZsb3dTY3JvbGxQ
b3NpdGlvbkZvckxheWVyOihDQUxheWVyICopc2Nyb2xsTGF5ZXIgY2hhbmdlZFRvOihDR1BvaW50
KXNjcm9sbFBvc2l0aW9uCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJGaXhlZFBv
c2l0aW9uQ29udGVudERhdGFMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd2ViRml4ZWRQb3Np
dGlvbkNvbnRlbnREYXRhTG9jayB9OwogCiAgICAgTGF5ZXJJbmZvTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBfcHJpdmF0ZS0+bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmVuZCgpOwogICAg
IGZvciAoTGF5ZXJJbmZvTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IF9wcml2YXRlLT5tX3ZpZXdw
b3J0Q29uc3RyYWluZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC0xNzQs
NyArMTc0LDcgQEAgLSAodm9pZClkaWRGaW5pc2hTY3JvbGxpbmdPclpvb21pbmcKIAogLSAodm9p
ZClzZXRWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzOihXVEY6Okhhc2hNYXA8Q0FMYXllciAqLCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Vmlld3BvcnRDb25zdHJhaW50cz4+JilsYXllck1hcCBz
dGlja3lDb250YWluZXJNYXA6KGNvbnN0IFdURjo6SGFzaE1hcDxDQUxheWVyKiwgQ0FMYXllcio+
JilzdGlja3lDb250YWluZXJzCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJGaXhl
ZFBvc2l0aW9uQ29udGVudERhdGFMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd2ViRml4ZWRQ
b3NpdGlvbkNvbnRlbnREYXRhTG9jayB9OwogCiAgICAgX3ByaXZhdGUtPm1fdmlld3BvcnRDb25z
dHJhaW5lZExheWVycy5jbGVhcigpOwogCkBAIC0xOTEsNyArMTkxLDcgQEAgLSAodm9pZClzZXRW
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzOihXVEY6Okhhc2hNYXA8Q0FMYXllciAqLCBzdGQ6OnVu
aXF1ZV9wdHI8V2UKIAogLSAoQk9PTCloYXNGaXhlZE9yU3RpY2t5UG9zaXRpb25MYXllcnMKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YUxv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyB3ZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGFMb2Nr
IH07CiAgICAgcmV0dXJuICFfcHJpdmF0ZS0+bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmlz
RW1wdHkoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKaW5kZXgg
ODM1ZTkwMDAxZGU0YTgzNjljMTQ5NGEzZWUxY2U1OTY4YmZkMzFhMy4uMGIwYWQ1ZmZkYmZmZDk4
ZWMyMzAyNGIyZTRlNTFkMWY1YzA1ZTM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVu
ZGVyZXIuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgQ0FEM0RSZW5kZXJlcjo6Q0FEM0RSZW5kZXJl
cigpCiAKIENDb21QdHI8SURpcmVjdDNEU3dhcENoYWluOT4gQ0FEM0RSZW5kZXJlcjo6c3dhcENo
YWluKENXaW5kb3cgd2luZG93LCBjb25zdCBDR1NpemUmIHNpemUpCiB7Ci0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAog
ICAgIGJvb2wgdXNlRGVmYXVsdFN3YXBDaGFpbiA9IGZhbHNlOwogCkBAIC0zODUsNyArMzg1LDcg
QEAgQ0FEM0RSZW5kZXJlcjo6UmVuZGVyUmVzdWx0IENBRDNEUmVuZGVyZXI6OnJlbmRlckFuZFBy
ZXNlbnQoY29uc3QgQ0dSZWN0JiBib3VuZHMKICAgICBBU1NFUlRfQVJHKHN3YXBDaGFpbiwgc3dh
cENoYWluKTsKICAgICBBU1NFUlRfQVJHKGNvbnRleHQsIGNvbnRleHQpOwogCi0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgIENHUmVjdCB1bnVzZWREaXJ0eVJlY3Q7CiAgICAgUmVuZGVyUmVzdWx0IHJlc3VsdCA9
IHJlbmRlckludGVybmFsKGJvdW5kcywgc3dhcENoYWluLCBwb3N0UHJvY2Vzc2luZ0NvbnRleHQs
IGNvbnRleHQsIHVudXNlZERpcnR5UmVjdCwgbmV4dFJlbmRlclRpbWUpOwpAQCAtNDI1LDcgKzQy
NSw3IEBAIENBRDNEUmVuZGVyZXI6OlJlbmRlclJlc3VsdCBDQUQzRFJlbmRlcmVyOjpyZW5kZXJU
b0ltYWdlKGNvbnN0IENHUmVjdCYgYm91bmRzLCBJCiAgICAgQVNTRVJUX0FSRyhzd2FwQ2hhaW4s
IHN3YXBDaGFpbik7CiAgICAgQVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKIAotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CiAKICAgICBDR1JlY3QgZGlydHlSZWN0OwogICAgIFJlbmRlclJlc3VsdCByZXN1bHQgPSBy
ZW5kZXJJbnRlcm5hbChib3VuZHMsIHN3YXBDaGFpbiwgcG9zdFByb2Nlc3NpbmdDb250ZXh0LCBj
b250ZXh0LCBkaXJ0eVJlY3QsIG5leHRSZW5kZXJUaW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FWaWV3LmNw
cAppbmRleCA2OGZlYmQxMjcwNjMwMmU1MWFjNzcwOGRjZGU4ODI0NDM5NjE0YjAyLi5iZDQxMWJk
Yzc2YTdlZWJmNjg1NmZmNzA4ZWFlOWI2MWQ0YjU0OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQVZpZXcu
Y3BwCkBAIC0xMTQsMTYgKzExNCwxNiBAQCB2b2lkIENBVmlldzo6cmVsZWFzZUFsbEQzRFJlc291
cmNlcygpCiAKICAgICBWZWN0b3I8UmVmPEhhbmRsZT4+IHZpZXdzVG9SZWxlYXNlOwogICAgIHsK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9iYWxTdGF0ZUxvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU3RhdGVMb2NrIH07CiAgICAgICAgIHZpZXdzVG9SZWxl
YXNlID0gV1RGOjptYXAodmlld3MoKSwgW10gKGF1dG8mIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxl
LmNvcHlSZWYoKTsgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBoYW5kbGUgOiB2aWV3c1Rv
UmVsZWFzZSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGhhbmRsZS0+bG9jaygp
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGhhbmRsZS0+bG9jaygpIH07CiAgICAgICAgIENB
VmlldyogdmlldyA9IGhhbmRsZS0+dmlldygpOwogICAgICAgICBpZiAoIXZpZXcpCiAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byB2aWV3TG9ja2VyID0gaG9sZExvY2sodmlldy0+
bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIHZpZXdMb2NrZXIgeyB2aWV3LT5tX2xvY2sgfTsKICAg
ICAgICAgdmlldy0+bV9zd2FwQ2hhaW4gPSBudWxscHRyOwogICAgICAgICB2aWV3LT5tX2QzZFBv
c3RQcm9jZXNzaW5nQ29udGV4dCA9IG51bGxwdHI7CiAgICAgfQpAQCAtMTM3LDcgKzEzNyw3IEBA
IGlubGluZSBDQVZpZXc6OkNBVmlldyhEcmF3aW5nRGVzdGluYXRpb24gZGVzdGluYXRpb24pCiAg
ICAgLCBtX2NvbnRleHQoYWRvcHRDRihDQUNGQ29udGV4dENyZWF0ZSgwKSkpCiB7CiAgICAgewot
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGdsb2JhbFN0YXRlTG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBnbG9iYWxTdGF0ZUxvY2sgfTsKICAgICAgICAgdmlld3MoKS5hZGQo
bV9oYW5kbGUuY29weVJlZigpKTsKICAgICB9CiAKQEAgLTE1MSw3ICsxNTEsNyBAQCBDQVZpZXc6
On5DQVZpZXcoKQogICAgIG1fbGF5ZXIgPSBudWxscHRyOwogCiAgICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKICAgICAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE2MSw3ICsx
NjEsNyBAQCBDQVZpZXc6On5DQVZpZXcoKQogICAgIFJlZlB0cjxDVkRpc3BsYXlMaW5rPiBsaW5r
VG9TdG9wOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZGlzcGxh
eUxpbmtMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGlzcGxheUxpbmtMb2NrIH07
CiAgICAgICAgIGxpbmtUb1N0b3AgPSBXVEZNb3ZlKG1fZGlzcGxheUxpbmspOwogICAgIH0KIApA
QCAtMTcxLDExICsxNzEsMTEgQEAgQ0FWaWV3Ojp+Q0FWaWV3KCkKICAgICB1cGRhdGUobnVsbHB0
ciwgQ0dSZWN0WmVybyk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9oYW5kbGUtPmxvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2hhbmRsZS0+bG9j
aygpIH07CiAgICAgICAgIG1faGFuZGxlLT5jbGVhcigpOwogICAgIH0KIAotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soZ2xvYmFsU3RhdGVMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZ2xv
YmFsU3RhdGVMb2NrIH07CiAKICAgICB2aWV3cygpLnJlbW92ZShtX2hhbmRsZS5jb3B5UmVmKCkp
OwogICAgIGlmICghdmlld3MoKS5pc0VtcHR5KCkpCkBAIC0yMDUsMTQgKzIwNSwxNCBAQCB2b2lk
IENBVmlldzo6c2V0TGF5ZXIoQ0FDRkxheWVyUmVmIGxheWVyKQogCiAgICAgQ0FDRkxheWVyU2V0
RnJhbWUobV9sYXllci5nZXQoKSwgbV9ib3VuZHMpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBDQUNGQ29u
dGV4dFNldExheWVyKG1fY29udGV4dC5nZXQoKSwgbV9sYXllci5nZXQoKSk7CiB9CiAKIHZvaWQg
Q0FWaWV3Ojp1cGRhdGUoQ1dpbmRvdyB3aW5kb3csIGNvbnN0IENHUmVjdCYgYm91bmRzKQogewog
ICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9iYWxTdGF0ZUxvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU3RhdGVMb2NrIH07CiAKICAgICAgICAgLy8g
RW5zdXJlIG91ciBtZXNzYWdlIHdpbmRvdyBpcyBjcmVhdGVkIG9uIHRoZSB0aHJlYWQgdGhhdCBj
YWxsZWQgQ0FWaWV3Ojp1cGRhdGUuCiAgICAgICAgIGlmICghbWVzc2FnZVdpbmRvdykKQEAgLTIy
OSw3ICsyMjksNyBAQCB2b2lkIENBVmlldzo6dXBkYXRlKENXaW5kb3cgd2luZG93LCBjb25zdCBD
R1JlY3QmIGJvdW5kcykKICAgICBib29sIGJvdW5kc0NoYW5nZWQ7CiAKICAgICB7Ci0gICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogCiAgICAgICAgIGJvdW5kc0NoYW5nZWQgPSAhQ0dSZWN0RXF1YWxUb1JlY3Qo
bV9ib3VuZHMsIGJvdW5kcyk7CiAKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIENBVmlldzo6aW52
YWxpZGF0ZVJlY3RzKGNvbnN0IENHUmVjdCogcmVjdHMsIHNpemVfdCBjb3VudCkKIAogdm9pZCBD
QVZpZXc6OmRyYXdUb1dpbmRvdygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBkcmF3VG9XaW5kb3dJbnRl
cm5hbCgpOwogfQogCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVmUHRyPEltYWdlPiBDQVZpZXc6OmRy
YXdUb0ltYWdlKENHUG9pbnQmIGltYWdlT3JpZ2luLCBDRlRpbWVJbnRlcnZhbCYgbmV4dERyYXcK
ICAgICBpbWFnZU9yaWdpbiA9IENHUG9pbnRaZXJvOwogICAgIG5leHREcmF3VGltZSA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8Q0ZUaW1lSW50ZXJ2YWw+OjppbmZpbml0eSgpOwogCi0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAgICAgYm9vbCB3aWxsVXBkYXRlU29vbjsKQEAg
LTQzMSw3ICs0MzEsNyBAQCB2b2lkIENBVmlldzo6ZHJhd0ludG9EQyhIREMgZGMpCiAgICAgfQog
CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgICAgICBDQVJlbmRlckNvbnRleHQqIHJl
bmRlckNvbnRleHQgPSBzdGF0aWNfY2FzdDxDQVJlbmRlckNvbnRleHQqPihDQUNGQ29udGV4dEdl
dFJlbmRlckNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CiAgICAgICAgIENBUmVuZGVyQ29udGV4
dExvY2socmVuZGVyQ29udGV4dCk7CkBAIC00NTYsMTMgKzQ1NiwxMyBAQCB2b2lkIENBVmlldzo6
ZHJhd0ludG9EQyhIREMgZGMpCiAKIHZvaWQgQ0FWaWV3OjpzZXRTaG91bGRJbnZlcnRDb2xvcnMo
Ym9vbCBzaG91bGRJbnZlcnRDb2xvcnMpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBtX3Nob3VsZEludmVy
dENvbG9ycyA9IHNob3VsZEludmVydENvbG9yczsKIH0KIAogdm9pZCBDQVZpZXc6OnNjaGVkdWxl
TmV4dERyYXcoQ0ZUaW1lSW50ZXJ2YWwgbWVkaWFUaW1lKQogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9kaXNwbGF5TGlua0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2Rpc3Bs
YXlMaW5rTG9jayB9OwogCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAg
LTQ5MSw3ICs0OTEsNyBAQCB2b2lkIENBVmlldzo6ZGlzcGxheUxpbmtSZWFjaGVkQ0FNZWRpYVRp
bWUoQ1ZEaXNwbGF5TGluayogZGlzcGxheUxpbmssIENGVGltZUludAogICAgIEFTU0VSVChtX2Rl
c3RpbmF0aW9uID09IERyYXdpbmdEZXN0aW5hdGlvbldpbmRvdyk7CiAKICAgICB7Ci0gICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9kaXNwbGF5TGlua0xvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9kaXNwbGF5TGlua0xvY2sgfTsKICAgICAgICAgaWYgKCFtX2Rpc3BsYXlM
aW5rKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGRpc3BsYXlM
aW5rLCBkaXNwbGF5TGluayA9PSBtX2Rpc3BsYXlMaW5rKTsKQEAgLTUwMCw3ICs1MDAsNyBAQCB2
b2lkIENBVmlldzo6ZGlzcGxheUxpbmtSZWFjaGVkQ0FNZWRpYVRpbWUoQ1ZEaXNwbGF5TGluayog
ZGlzcGxheUxpbmssIENGVGltZUludAogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CiAgICAgZHJhd1RvV2luZG93SW50ZXJuYWwoKTsKIH0KIApAQCAtNTE3LDcgKzUxNyw3
IEBAIHZvaWQgQ0FWaWV3Ojpjb250ZXh0RGlkQ2hhbmdlQ2FsbGJhY2sodm9pZCogb2JqZWN0LCB2
b2lkKiBpbmZvLCB2b2lkKikKIHZvaWQgQ0FWaWV3Ojpjb250ZXh0RGlkQ2hhbmdlKCkKIHsKICAg
ICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgICAgIC8vIE91ciBsYXllcidzIHJlbmRlcmVk
IGFwcGVhcmFuY2Ugb25jZSBhZ2FpbiBtYXRjaGVzIG91ciBib3VuZHMsIHNvIGl0J3Mgc2FmZSB0
byBkcmF3LgogICAgICAgICBtX2RyYXdpbmdQcm9oaWJpdGVkID0gZmFsc2U7CkBAIC01MzQsNyAr
NTM0LDcgQEAgdm9pZCBDQVZpZXc6OmNvbnRleHREaWRDaGFuZ2UoKQogdm9pZCBDQVZpZXc6OnVw
ZGF0ZVNvb24oKQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9i
YWxTdGF0ZUxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU3RhdGVMb2NrIH07
CiAgICAgICAgIHZpZXdzTmVlZGluZ1VwZGF0ZSgpLmFkZChtX2hhbmRsZS5jb3B5UmVmKCkpOwog
ICAgIH0KICAgICAvLyBJdCBkb2Vzbid0IG1hdHRlciB3aGF0IHRpbWVyIElEIHdlIHBhc3MgaGVy
ZSwgYXMgbG9uZyBhcyBpdCdzIG5vbnplcm8uCkBAIC01NDksMTYgKzU0OSwxNiBAQCB2b2lkIENB
Vmlldzo6dXBkYXRlVmlld3NOb3coSFdORCB3aW5kb3csIFVJTlQsIFVJTlRfUFRSIHRpbWVySUQs
IERXT1JEKQogCiAgICAgSGFzaFNldDxSZWY8Q0FWaWV3OjpIYW5kbGU+PiB2aWV3c1RvVXBkYXRl
OwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhnbG9iYWxTdGF0ZUxvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU3RhdGVMb2NrIH07CiAgICAgICAgIHZp
ZXdzTmVlZGluZ1VwZGF0ZSgpLnN3YXAodmlld3NUb1VwZGF0ZSk7CiAgICAgfQogCiAgICAgZm9y
IChhdXRvJiBoYW5kbGUgOiB2aWV3c1RvVXBkYXRlKSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soaGFuZGxlLT5sb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaGFuZGxl
LT5sb2NrKCkgfTsKICAgICAgICAgQ0FWaWV3KiB2aWV3ID0gaGFuZGxlLT52aWV3KCk7CiAgICAg
ICAgIGlmICghdmlldykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIHZpZXdM
b2NrZXIgPSBob2xkTG9jayh2aWV3LT5tX2xvY2spOworICAgICAgICBMb2NrZXIgdmlld0xvY2tl
ciB7IHZpZXctPm1fbG9jayB9OwogICAgICAgICB2aWV3LT51cGRhdGUodmlldy0+bV93aW5kb3cs
IHZpZXctPm1fYm91bmRzKTsKICAgICB9CiB9CkBAIC01NjcsNyArNTY3LDcgQEAgSURpcmVjdDNE
RGV2aWNlOSogQ0FWaWV3OjpkM2REZXZpY2U5KCkKIHsKICAgICAvLyBIb2xkIHRoZSBsb2NrIHdo
aWxlIHdlIHJldHVybiB0aGUgc2hhcmVkIGQzZCBkZXZpY2UuIFRoZSBjYWxsZXIgaXMgcmVzcG9u
c2libGUgZm9yIHJldGFpbmluZwogICAgIC8vIHRoZSBkZXZpY2UgYmVmb3JlIHJldHVybmluZyB0
byBlbnN1cmUgdGhhdCBpdCBpcyBub3QgcmVsZWFzZWQuCi0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIHJldHVy
biBDQUQzRFJlbmRlcmVyOjpzaGFyZWQoKS5kM2REZXZpY2U5KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAppbmRleCA0M2NjMWJh
MjY3NzhhOGRhYTYwZTEwZjBlMmNkM2MwNjE1NDE2ZjYxLi5hOGU5NjYxMDJmN2RjNzg4NGFiMzhm
ZDAwMzA5MTkyODQ0YTMzZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKQEAgLTE2OSwxMiArMTY5LDEyIEBAIHN0YXRpYyBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9tQnVuZGxlKFdlYkxvY2Fs
aXphYmxlU3RyaW5nCiBzdGF0aWMgTG9jYWxpemVkU3RyaW5nKiBmaW5kQ2FjaGVkU3RyaW5nKFdl
YkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5nc0J1bmRsZSwgY29uc3QgU3RyaW5nJiBr
ZXkpCiB7CiAgICAgaWYgKCFzdHJpbmdzQnVuZGxlKSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobWFpbkJ1bmRsZUxvY1N0cmluZ3NMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1haW5CdW5kbGVMb2NTdHJpbmdzTG9jayB9OwogICAgICAgICByZXR1cm4gbWFpbkJ1bmRs
ZUxvY1N0cmluZ3MoKS5nZXQoa2V5KTsKICAgICB9CiAKICAgICBpZiAoc3RyaW5nc0J1bmRsZS0+
YnVuZGxlID09IFdlYktpdExvY2FsaXphYmxlU3RyaW5nc0J1bmRsZS5idW5kbGUpIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhmcmFtZXdvcmtMb2NTdHJpbmdzTG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBmcmFtZXdvcmtMb2NTdHJpbmdzTG9jayB9OwogICAgICAgICBy
ZXR1cm4gZnJhbWV3b3JrTG9jU3RyaW5ncygpLmdldChrZXkpOwogICAgIH0KIApAQCAtMTg0LDEy
ICsxODQsMTIgQEAgc3RhdGljIExvY2FsaXplZFN0cmluZyogZmluZENhY2hlZFN0cmluZyhXZWJM
b2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0cmluZ3NCdW4KIHN0YXRpYyB2b2lkIGNhY2hlU3Ry
aW5nKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5nc0J1bmRsZSwgY29uc3QgU3Ry
aW5nJiBrZXksIExvY2FsaXplZFN0cmluZyogdmFsdWUpCiB7CiAgICAgaWYgKCFzdHJpbmdzQnVu
ZGxlKSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobWFpbkJ1bmRsZUxvY1N0cmlu
Z3NMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1haW5CdW5kbGVMb2NTdHJpbmdzTG9j
ayB9OwogICAgICAgICBtYWluQnVuZGxlTG9jU3RyaW5ncygpLnNldChrZXksIHZhbHVlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZnJhbWV3
b3JrTG9jU3RyaW5nc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBmcmFtZXdvcmtMb2NTdHJp
bmdzTG9jayB9OwogICAgIGZyYW1ld29ya0xvY1N0cmluZ3MoKS5zZXQoa2V5LCB2YWx1ZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBi
MzA5NGJhZmRlYzcyNzQ3ZTNhODBlNjEzODkxZWJmZWQyY2VlNDM4Li5kNWY1MGZhYjQ3YzU2YWQ4
YTE3MzA5ZmY1MmFkMGM0YzZjZmNkOGRjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDUtMjEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGhvbGRMb2NrKCkg
aW4gV2ViS2l0L1dlYktpdExlZ2FjeS9Ub29scyBhcyBpdCBpcyBub3QgY29tcGF0aWJsZSB3aXRo
IENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGlu
Zy5jcHA6CisgICAgICAgIChydW5KYXZhU2NyaXB0VGhyZWFkKToKKyAgICAgICAgKHN0YXJ0SmF2
YVNjcmlwdFRocmVhZHMpOgorICAgICAgICAoc3RvcEphdmFTY3JpcHRUaHJlYWRzKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAgICAgKGNo
ZWNrX2xvY2tfZ3VhcmQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAgICAoV2ViS2l0U3R5bGVUZXN0LnRlc3RfbG9ja19n
dWFyZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91cC5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0VGhyZWFkR3JvdXApOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkFYVGhyZWFkOjpkaXNw
YXRjaCk6CisgICAgICAgIChXVFI6OkFYVGhyZWFkOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21BWFRo
cmVhZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OkFYVGhyZWFkOjppbml0
aWFsaXplUnVuTG9vcCk6CisKIDIwMjEtMDUtMjEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJ1biBsYXlvdXQgdGVzdHMgaW4gc3RyZXNzIG1vZGUgZm9y
IDEwIGl0ZXJhdGlvbnMgb24gcmVndWxhciBFV1MgbGF5b3V0LXRlc3QgcXVldWVzCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwCmluZGV4IDVmOTg5MjljMzFi
YzMzNmVlMDY4NjQ3ZTZmMTUzNDQ2NDc0MGZlMzQuLmFmM2IyZTFmY2EzNmIyZmY0MjFjNWMxZWY0
MWUwNmE4OTkxMTM0NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3Jp
cHRUaHJlYWRpbmcuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJl
YWRpbmcuY3BwCkBAIC02NywyNiArNjcsMjYgQEAgdm9pZCBydW5KYXZhU2NyaXB0VGhyZWFkKCkK
IAogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHg7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGphdmFTY3JpcHRUaHJlYWRzTG9jayk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBqYXZhU2NyaXB0VGhyZWFkc0xvY2sgfTsKICAgICAgICAgY3R4ID0gSlNHbG9iYWxDb250
ZXh0Q3JlYXRlSW5Hcm91cChqYXZhU2NyaXB0VGhyZWFkc0dyb3VwLCAwKTsKICAgICB9CiAKICAg
ICBKU1N0cmluZ1JlZiBzY3JpcHRSZWY7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGphdmFTY3JpcHRUaHJlYWRzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBq
YXZhU2NyaXB0VGhyZWFkc0xvY2sgfTsKICAgICAgICAgc2NyaXB0UmVmID0gSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0KTsKICAgICB9CiAKICAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGphdmFTY3JpcHRU
aHJlYWRzTG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgamF2YVNjcmlwdFRocmVh
ZHNMb2NrIH07CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAg
ICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgc2NyaXB0UmVmLCAwLCAwLCAxLCAmZXhjZXB0aW9u
KTsKICAgICAgICAgICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soamF2YVNjcmlwdFRocmVhZHNM
b2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBqYXZhU2NyaXB0VGhyZWFkc0xvY2sg
fTsKICAgICAgICAgICAgIGNvbnN0IHNpemVfdCB2YWx1ZXNDb3VudCA9IDEwMjQ7CiAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIHZhbHVlc1t2YWx1ZXNDb3VudF07CiAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHZhbHVlc0NvdW50OyArK2kpCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQg
cnVuSmF2YVNjcmlwdFRocmVhZCgpCiAgICAgICAgIH0KIAogICAgICAgICB7Ci0gICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGphdmFTY3JpcHRUaHJlYWRzTG9jayk7CisgICAgICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgamF2YVNjcmlwdFRocmVhZHNMb2NrIH07CiAgICAgICAgICAg
ICBpZiAoamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIHJ1bkphdmFTY3JpcHRU
aHJlYWQoKQogICAgICAgICBpZiAocmFuZCgpICUgNSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soamF2YVNjcmlwdFRocmVhZHNMb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGphdmFTY3JpcHRUaHJlYWRzTG9jayB9OwogICAgICAg
ICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgICAgICB0aHJlYWQuZGV0
YWNoKCk7CiAgICAgICAgIGphdmFTY3JpcHRUaHJlYWRzKCkucmVtb3ZlKCZ0aHJlYWQpOwpAQCAt
MTExLDcgKzExMSw3IEBAIHZvaWQgcnVuSmF2YVNjcmlwdFRocmVhZCgpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soamF2YVNjcmlwdFRocmVhZHNM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgamF2YVNjcmlwdFRocmVhZHNMb2NrIH07CiAgICAg
SlNTdHJpbmdSZWxlYXNlKHNjcmlwdFJlZik7CiAgICAgSlNHYXJiYWdlQ29sbGVjdChjdHgpOwog
ICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY3R4KTsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lk
IHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMoKQogewogICAgIGphdmFTY3JpcHRUaHJlYWRzR3JvdXAg
PSBKU0NvbnRleHRHcm91cENyZWF0ZSgpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhq
YXZhU2NyaXB0VGhyZWFkc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBqYXZhU2NyaXB0VGhy
ZWFkc0xvY2sgfTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamF2YVNjcmlwdFRocmVh
ZHNDb3VudDsgKytpKQogICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLmFkZChUaHJlYWQ6OmNy
ZWF0ZSgiSmF2YVNjcmlwdCBUaHJlYWQiLCAmcnVuSmF2YVNjcmlwdFRocmVhZCkpOwpAQCAtMTMw
LDEzICsxMzAsMTMgQEAgdm9pZCBzdGFydEphdmFTY3JpcHRUaHJlYWRzKCkKIHZvaWQgc3RvcEph
dmFTY3JpcHRUaHJlYWRzKCkKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soamF2YVNjcmlwdFRocmVhZHNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGphdmFT
Y3JpcHRUaHJlYWRzTG9jayB9OwogICAgICAgICBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1p
bmF0ZSA9IHRydWU7CiAgICAgfQogCiAgICAgVmVjdG9yPFJlZlB0cjxUaHJlYWQ+LCBqYXZhU2Ny
aXB0VGhyZWFkc0NvdW50PiB0aHJlYWRzOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhqYXZhU2NyaXB0VGhyZWFkc0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
amF2YVNjcmlwdFRocmVhZHNMb2NrIH07CiAgICAgICAgIHRocmVhZHMgPSBjb3B5VG9WZWN0b3Io
amF2YVNjcmlwdFRocmVhZHMoKSk7CiAgICAgICAgIEFTU0VSVCh0aHJlYWRzLnNpemUoKSA9PSBq
YXZhU2NyaXB0VGhyZWFkc0NvdW50KTsKICAgICB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBz
dG9wSmF2YVNjcmlwdFRocmVhZHMoKQogICAgICAgICB0aHJlYWRzW2ldLT53YWl0Rm9yQ29tcGxl
dGlvbigpOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGphdmFTY3Jp
cHRUaHJlYWRzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBqYXZhU2NyaXB0VGhyZWFk
c0xvY2sgfTsKICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5jbGVhcigpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQppbmRleCBiY2U3
OWIwNGUxMTM2ZWY0YTBlYWI1Y2NiNzViZmExYjdhZWQxNzIwLi44YjA3Yjg3ZmNiZjFjYzFlOWJk
MzcxMThiODA2ZjA1ZTM5N2M1NzM1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2NwcC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NwcC5weQpAQCAtMjgzOCw3ICsyODM4LDcgQEAgZGVmIGNoZWNrX2xvY2tfZ3Vh
cmQoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRlLCBlcnJvcik6CiAgICAgaWYg
bm90IHVzaW5nX3N0ZF9sb2NrX2d1YXJkX3NlYXJjaDoKICAgICAgICAgcmV0dXJuCiAKLSAgICBl
cnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvbG9ja19ndWFyZCcsIDQsICJVc2UgJ2F1dG8gbG9j
a2VyID0gaG9sZExvY2sobXV0ZXgpJyBpbnN0ZWFkIG9mICdzdGQ6OmxvY2tfZ3VhcmQ8PicuIikK
KyAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvbG9ja19ndWFyZCcsIDQsICJVc2UgJ0xv
Y2tlciBsb2NrZXIgeyBsb2NrIH0nIGluc3RlYWQgb2YgJ3N0ZDo6bG9ja19ndWFyZDw+Jy4iKQog
CiAKIGRlZiBjaGVja19jdHlwZV9mdW5jdGlvbnMoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBm
aWxlX3N0YXRlLCBlcnJvcik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CmluZGV4IDU2NTIzYjQyZTkxN2IzZmQwZWNjOGY2
YzgxZWIwZmY4NGRhMzA5ZWIuLmI3MjBjZmQxYzgxNTMwZTJhZDRmYTZkYmIyMjBmOWY4ODQ1NTc1
YmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
Y3BwX3VuaXR0ZXN0LnB5CkBAIC01NjgwLDE5ICs1NjgwLDE5IEBAIGNsYXNzIFdlYktpdFN0eWxl
VGVzdChDcHBTdHlsZVRlc3RCYXNlKToKIAogICAgIGRlZiB0ZXN0X2xvY2tfZ3VhcmQoc2VsZik6
CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtdXRleCk7JywKKyAgICAgICAgICAgICdMb2NrZXIgbG9ja2VyKGxvY2spOycsCiAg
ICAgICAgICAgICAnJywKICAgICAgICAgICAgICdmb28uY3BwJykKIAogICAgICAgICBzZWxmLmFz
c2VydF9saW50KAogICAgICAgICAgICAgJ3N0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrZXIobXV0
ZXgpOycsCi0gICAgICAgICAgICAiVXNlICdhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG11dGV4KScg
aW5zdGVhZCBvZiAnc3RkOjpsb2NrX2d1YXJkPD4nLiIKKyAgICAgICAgICAgICJVc2UgJ0xvY2tl
ciBsb2NrZXIgeyBsb2NrIH0nIGluc3RlYWQgb2YgJ3N0ZDo6bG9ja19ndWFyZDw+Jy4iCiAgICAg
ICAgICAgICAiICBbcnVudGltZS9sb2NrX2d1YXJkXSBbNF0iLAogICAgICAgICAgICAgJ2Zvby5j
cHAnKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCiAgICAgICAgICAgICAnc3RkOjpsb2Nr
X2d1YXJkPExvY2s+IGxvY2tlcihtdXRleCk7JywKLSAgICAgICAgICAgICJVc2UgJ2F1dG8gbG9j
a2VyID0gaG9sZExvY2sobXV0ZXgpJyBpbnN0ZWFkIG9mICdzdGQ6OmxvY2tfZ3VhcmQ8PicuIgor
ICAgICAgICAgICAgIlVzZSAnTG9ja2VyIGxvY2tlciB7IGxvY2sgfScgaW5zdGVhZCBvZiAnc3Rk
Ojpsb2NrX2d1YXJkPD4nLiIKICAgICAgICAgICAgICIgIFtydW50aW1lL2xvY2tfZ3VhcmRdIFs0
XSIsCiAgICAgICAgICAgICAnZm9vLm1tJykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0NvbmRpdGlvbi5jcHAKaW5kZXggNWU0MDljNTg3ZjFjZWRjNWI1YTk4ZTA1NzRhYTIyYTE3
MTZmMzJmMy4uM2IzNWIwOGNhMTRiODE4ODQ3ZDY2ZWU1ODdmZmFkMWE1OTBkODEyNiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCkBAIC0xMTgsNyArMTE4
LDcgQEAgdm9pZCBydW5UZXN0KAogICAgICAgICAgICAgICAgICAgICBub3RpZnkobm90aWZ5U3R5
bGUsIGZ1bGxDb25kaXRpb24sIHNob3VsZE5vdGlmeSk7CiAKICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWNlaXZl
ZExvY2spOworICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHJlY2VpdmVk
TG9jayB9OwogICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKHJlc3VsdCk7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0xNTUsNyArMTU1
LDcgQEAgdm9pZCBydW5UZXN0KAogICAgICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7
CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgICAgIHNob3VsZENvbnRpbnVlID0gZmFsc2U7
CiAgICAgfQogICAgIGVtcHR5Q29uZGl0aW9uLm5vdGlmeUFsbCgpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwCmluZGV4IGFkYjAwOTI0MmQ2YmEyM2M2
N2UyNmE2OTNiODI4N2QyYTUxMzEzOWIuLmQxMGY3YmYyMmZlZGZlZDkzNDQ4YzY0MmQ0ODgwOTM2
ZDFlYmU4MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVh
ZEdyb3VwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91
cC5jcHAKQEAgLTQ0LDEwICs0NCwxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0VGhyZWFkR3JvdXAoTW9k
ZSBtb2RlKQogICAgIFZlY3RvcjxSZWY8VGhyZWFkPj4gdGhyZWFkczsKIAogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGxvY2sgfTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVGhyZWFk
czsgKytpKSB7CiAgICAgICAgICAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0
ZSgiVGhyZWFkR3JvdXBXb3JrZXIiLCBbJl0gewotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobG9jayk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sg
fTsKICAgICAgICAgICAgICAgICBpZiAobW9kZSA9PSBNb2RlOjpBZGRDdXJyZW50VGhyZWFkKQog
ICAgICAgICAgICAgICAgICAgICB0aHJlYWRHcm91cC0+YWRkQ3VycmVudFRocmVhZCgpOwogICAg
ICAgICAgICAgICAgICsrd2FpdGluZ1RocmVhZHM7CkBAIC02NywxMSArNjcsMTEgQEAgc3RhdGlj
IHZvaWQgdGVzdFRocmVhZEdyb3VwKE1vZGUgbW9kZSkKICAgICB9CiAKICAgICB7Ci0gICAgICAg
IGF1dG8gdGhyZWFkR3JvdXBMb2NrZXIgPSBob2xkTG9jayh0aHJlYWRHcm91cC0+Z2V0TG9jaygp
KTsKKyAgICAgICAgTG9ja2VyIHRocmVhZEdyb3VwTG9ja2VyIHsgdGhyZWFkR3JvdXAtPmdldExv
Y2soKSB9OwogICAgICAgICBFWFBFQ1RfRVEodGhyZWFkcy5zaXplKCksIG51bWJlck9mVGhyZWFk
cyk7CiAgICAgICAgIEVYUEVDVF9FUSh0aHJlYWRHcm91cC0+dGhyZWFkcyh0aHJlYWRHcm91cExv
Y2tlcikuc2l6ZSgpLCBudW1iZXJPZlRocmVhZHMpOwogICAgICAgICB7Ci0gICAgICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGxvY2sgfTsKICAgICAgICAgICAgIHJlc3RhcnRpbmcgPSB0cnVlOwogICAgICAgICAgICAgcmVz
dGFydENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAgICAgICAgfQpAQCAtODQsNyArODQsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0VGhyZWFkR3JvdXAoTW9kZSBtb2RlKQogICAgICAgICBmb3IgKGF1dG8m
IHRocmVhZCA6IHRocmVhZHMpCiAgICAgICAgICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9u
KCk7CiAKLSAgICAgICAgYXV0byB0aHJlYWRHcm91cExvY2tlciA9IGhvbGRMb2NrKHRocmVhZEdy
b3VwLT5nZXRMb2NrKCkpOworICAgICAgICBMb2NrZXIgdGhyZWFkR3JvdXBMb2NrZXIgeyB0aHJl
YWRHcm91cC0+Z2V0TG9jaygpIH07CiAgICAgICAgIEVYUEVDVF9FUSh0aHJlYWRHcm91cC0+dGhy
ZWFkcyh0aHJlYWRHcm91cExvY2tlcikuc2l6ZSgpLCAwdSk7CiAgICAgfQogfQpAQCAtMTA2LDcg
KzEwNiw3IEBAIFRFU1QoV1RGLCBUaHJlYWRHcm91cERvTm90QWRkRGVhZFRocmVhZCkKICAgICB0
aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CiAgICAgRVhQRUNUX1RSVUUodGhyZWFkR3JvdXAt
PmFkZCh0aHJlYWQuZ2V0KCkpID09IFRocmVhZEdyb3VwQWRkUmVzdWx0OjpOb3RBZGRlZCk7CiAK
LSAgICBhdXRvIHRocmVhZEdyb3VwTG9ja2VyID0gaG9sZExvY2sodGhyZWFkR3JvdXAtPmdldExv
Y2soKSk7CisgICAgTG9ja2VyIHRocmVhZEdyb3VwTG9ja2VyIHsgdGhyZWFkR3JvdXAtPmdldExv
Y2soKSB9OwogICAgIEVYUEVDVF9FUSh0aHJlYWRHcm91cC0+dGhyZWFkcyh0aHJlYWRHcm91cExv
Y2tlcikuc2l6ZSgpLCAwdSk7CiB9CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBURVNUKFdURiwgVGhy
ZWFkR3JvdXBBZGREdXBsaWNhdGVUaHJlYWRzKQogICAgIENvbmRpdGlvbiByZXN0YXJ0Q29uZGl0
aW9uOwogICAgIHN0ZDo6c2hhcmVkX3B0cjxUaHJlYWRHcm91cD4gdGhyZWFkR3JvdXAgPSBUaHJl
YWRHcm91cDo6Y3JlYXRlKCk7CiAgICAgUmVmPFRocmVhZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUoIlRocmVhZEdyb3VwV29ya2VyIiwgWyZdIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhsb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAgICAgcmVz
dGFydENvbmRpdGlvbi53YWl0KGxvY2ssIFsmXSB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdGFy
dGluZzsKICAgICAgICAgfSk7CkBAIC0xMjYsMTggKzEyNiwxOCBAQCBURVNUKFdURiwgVGhyZWFk
R3JvdXBBZGREdXBsaWNhdGVUaHJlYWRzKQogICAgIEVYUEVDVF9UUlVFKHRocmVhZEdyb3VwLT5h
ZGQodGhyZWFkLmdldCgpKSA9PSBUaHJlYWRHcm91cEFkZFJlc3VsdDo6QWxyZWFkeUFkZGVkKTsK
IAogICAgIHsKLSAgICAgICAgYXV0byB0aHJlYWRHcm91cExvY2tlciA9IGhvbGRMb2NrKHRocmVh
ZEdyb3VwLT5nZXRMb2NrKCkpOworICAgICAgICBMb2NrZXIgdGhyZWFkR3JvdXBMb2NrZXIgeyB0
aHJlYWRHcm91cC0+Z2V0TG9jaygpIH07CiAgICAgICAgIEVYUEVDVF9FUSh0aHJlYWRHcm91cC0+
dGhyZWFkcyh0aHJlYWRHcm91cExvY2tlcikuc2l6ZSgpLCAxdSk7CiAgICAgfQogCiAgICAgewot
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbG9jayB9OwogICAgICAgICByZXN0YXJ0aW5nID0gdHJ1ZTsKICAgICAgICAgcmVzdGFy
dENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAgICB9CiAgICAgdGhyZWFkLT53YWl0Rm9yQ29tcGxl
dGlvbigpOwogICAgIHsKLSAgICAgICAgYXV0byB0aHJlYWRHcm91cExvY2tlciA9IGhvbGRMb2Nr
KHRocmVhZEdyb3VwLT5nZXRMb2NrKCkpOworICAgICAgICBMb2NrZXIgdGhyZWFkR3JvdXBMb2Nr
ZXIgeyB0aHJlYWRHcm91cC0+Z2V0TG9jaygpIH07CiAgICAgICAgIEVYUEVDVF9FUSh0aHJlYWRH
cm91cC0+dGhyZWFkcyh0aHJlYWRHcm91cExvY2tlcikuc2l6ZSgpLCAwdSk7CiAgICAgfQogfQpA
QCAtMTY2LDcgKzE2Niw3IEBAIFRFU1QoV1RGLCBUaHJlYWRHcm91cFJlbW92ZSkKICAgICBhdXRv
IHRocmVhZEdyb3VwID0gVGhyZWFkR3JvdXA6OmNyZWF0ZSgpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBOdW1iZXJPZlRocmVhZHM7IGkrKykgewogICAgICAgICBhdXRvIHRocmVhZCA9
IFRocmVhZDo6Y3JlYXRlKCJUaHJlYWRHcm91cFdvcmtlciIsIFsmXSgpIHsKLSAgICAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbG9jayB9OwogICAgICAgICAgICAgKyt3YWl0aW5nVGhyZWFkczsKICAgICAgICAgICAgIGNv
bmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgICAgIHRocmVhZFJ1bm5pbmdDb25kaXRpb24u
d2FpdChsb2NrLCBbJl0oKSB7CkBAIC0xODAsNyArMTgwLDcgQEAgVEVTVChXVEYsIFRocmVhZEdy
b3VwUmVtb3ZlKQogICAgIEVYUEVDVF9FUShOdW1iZXJPZlRocmVhZHMsIGNvdW50VGhyZWFkR3Jv
dXBzKHRocmVhZHMpKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhs
b2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAgICAgY29uZGl0aW9u
LndhaXQobG9jaywgWyZdIHsKICAgICAgICAgICAgIHJldHVybiB3YWl0aW5nVGhyZWFkcyA9PSBO
dW1iZXJPZlRocmVhZHM7CiAgICAgICAgIH0pOwpAQCAtMTkzLDcgKzE5Myw3IEBAIFRFU1QoV1RG
LCBUaHJlYWRHcm91cFJlbW92ZSkKICAgICBFWFBFQ1RfRVEoMFUsIGNvdW50VGhyZWFkR3JvdXBz
KHRocmVhZHMpKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sgfTsKICAgICAgICAgdGhyZWFkUnVubmlu
ZyA9IGZhbHNlOwogICAgICAgICB0aHJlYWRSdW5uaW5nQ29uZGl0aW9uLm5vdGlmeUFsbCgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggYWQ0YTI1YWU1YjA3
Yjc1OGUyZTBhOTFmYWYxYjUyODMwM2ViODQ4ZC4uOTg0NGU1YjYzMzVmYmNhMjg2ZTJjMTFjNmIz
ZTk4NzhkOWM0MGQwYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKQEAgLTE3
Niw3ICsxNzYsNyBAQCB2b2lkIEFYVGhyZWFkOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYg
ZnVuY3Rpb24pCiAgICAgYXhUaHJlYWQuY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKIAogICAgIHsK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhheFRocmVhZC5tX2Z1bmN0aW9uc011dGV4
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGF4VGhyZWFkLm1fZnVuY3Rpb25zTXV0ZXggfTsK
ICAgICAgICAgYXhUaHJlYWQubV9mdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUoZnVuY3Rpb24pKTsK
ICAgICB9CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEFYVGhyZWFkOjpkaXNwYXRjaEZ1bmN0
aW9uc0Zyb21BWFRocmVhZCgpCiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IGZ1bmN0aW9u
czsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Z1bmN0aW9uc011
dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZnVuY3Rpb25zTXV0ZXggfTsKICAgICAg
ICAgZnVuY3Rpb25zID0gV1RGTW92ZShtX2Z1bmN0aW9ucyk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCmluZGV4IGE4ODdkZTVjODVkNTAyODRm
ZDI0NDcxMjUxNmU4OWM5OThjM2FhNWYuLjkzZWE1NzAwNTA3Mzk4YTQ1ZWU5MTlkMDU2NTA0NDY5
MTQ0YTllNzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1t
CkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBBWFRocmVhZDo6aW5pdGlhbGl6ZVJ1bkxvb3AoKQog
ewogICAgIC8vIEluaXRpYWxpemUgdGhlIHJ1biBsb29wLgogICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2luaXRpYWxpemVSdW5Mb29wTXV0ZXgpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9pbml0aWFsaXplUnVuTG9vcE11dGV4IH07CiAKICAgICAgICAgbV90aHJl
YWRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>