<?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>239578</bug_id>
          
          <creation_ts>2022-04-20 17:24:22 -0700</creation_ts>
          <short_desc>[JSC] Remove TempRegisterSet</short_desc>
          <delta_ts>2022-04-21 17:52:05 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>239613</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1863136</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-20 17:24:22 -0700</bug_when>
    <thetext>[JSC] Remove TempRegisterSet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863139</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-20 17:27:27 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/337</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863206</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-20 22:29:18 -0700</bug_when>
    <thetext>Committed r293146 (249842@main): &lt;https://commits.webkit.org/249842@main&gt;

Reviewed commits have been landed. Closing PR #337 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863207</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-20 22:30:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/92073330&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863337</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-04-21 10:30:58 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 239613</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863423</commentid>
    <comment_count>5</comment_count>
      <attachid>458095</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-21 14:55:32 -0700</bug_when>
    <thetext>Created attachment 458095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863428</commentid>
    <comment_count>6</comment_count>
      <attachid>458095</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-04-21 15:15:03 -0700</bug_when>
    <thetext>Comment on attachment 458095
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        We can always use RegisterSet. TempRegisterSet can save several bytes, but we have no code using TempRegisterSet in
&gt; +        heap-allocated class, so this does not make sense anymore. Instead of TempRegisterSet, we should consistently use
&gt; +        ScratchRegisterAllocator.

I suggest slightly rephrasing this as follows:

We can always use RegisterSet. TempRegisterSet can save several bytes, but we have no code using TempRegisterSet in
heap-allocated classes. So, this does not make sense anymore. Instead of TempRegisterSet, we will consistently use
RegisterSet to pass register info and ScratchRegisterAllocator to manage allocation of temp / scratch registers.

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        We also remove copyCalleeSavesToEntryFrameCalleeSavesBuffer function with no scratch register. We were using TempRegisterSet
&gt; +        to allocate scratch register, but the caller of this function has particular assumption on how register is allocated from
&gt; +        TempRegisterSet. This is very fragile and dangerous. We should pass scratch register explicitly in that case.

We also remove the copyCalleeSavesToEntryFrameCalleeSavesBuffer function which takes no scratch register. It was
using TempRegisterSet to allocate a scratch register, but the caller of this function was making assumptions on how
TempRegisterSet will allocate that scratch. This is very fragile and dangerous. We should explicitly pass a scratch
register instead in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863451</commentid>
    <comment_count>7</comment_count>
      <attachid>458095</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-21 16:08:25 -0700</bug_when>
    <thetext>Comment on attachment 458095
Patch

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

Thank you!

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        ScratchRegisterAllocator.
&gt; 
&gt; I suggest slightly rephrasing this as follows:
&gt; 
&gt; We can always use RegisterSet. TempRegisterSet can save several bytes, but we have no code using TempRegisterSet in
&gt; heap-allocated classes. So, this does not make sense anymore. Instead of TempRegisterSet, we will consistently use
&gt; RegisterSet to pass register info and ScratchRegisterAllocator to manage allocation of temp / scratch registers.

Sounds good, changed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:14
&gt;&gt; +        TempRegisterSet. This is very fragile and dangerous. We should pass scratch register explicitly in that case.
&gt; 
&gt; We also remove the copyCalleeSavesToEntryFrameCalleeSavesBuffer function which takes no scratch register. It was
&gt; using TempRegisterSet to allocate a scratch register, but the caller of this function was making assumptions on how
&gt; TempRegisterSet will allocate that scratch. This is very fragile and dangerous. We should explicitly pass a scratch
&gt; register instead in that case.

Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863498</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-21 17:52:05 -0700</bug_when>
    <thetext>Committed r293203 (?): &lt;https://commits.webkit.org/r293203&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458095</attachid>
            <date>2022-04-21 14:55:32 -0700</date>
            <delta_ts>2022-04-21 15:15:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239578-20220421145532.patch</filename>
            <type>text/plain</type>
            <size>32035</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NTgxNTQ5NDExOGY1ODZhNDYwMjkzNWY1NDVjMjFkYmVkNDgyYThlLi40N2Y3YTBiYmMwYTI4OTlm
Nzg3MzI3ZGRjYzlhZjYxZmYzZDFkM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAyMi0wNC0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJlbW92ZSBUZW1wUmVnaXN0ZXJTZXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTU3OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBhbHdheXMgdXNlIFJlZ2lz
dGVyU2V0LiBUZW1wUmVnaXN0ZXJTZXQgY2FuIHNhdmUgc2V2ZXJhbCBieXRlcywgYnV0IHdlIGhh
dmUgbm8gY29kZSB1c2luZyBUZW1wUmVnaXN0ZXJTZXQgaW4KKyAgICAgICAgaGVhcC1hbGxvY2F0
ZWQgY2xhc3MsIHNvIHRoaXMgZG9lcyBub3QgbWFrZSBzZW5zZSBhbnltb3JlLiBJbnN0ZWFkIG9m
IFRlbXBSZWdpc3RlclNldCwgd2Ugc2hvdWxkIGNvbnNpc3RlbnRseSB1c2UKKyAgICAgICAgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yLgorCisgICAgICAgIFdlIGFsc28gcmVtb3ZlIGNvcHlDYWxs
ZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyIGZ1bmN0aW9uIHdpdGggbm8gc2Ny
YXRjaCByZWdpc3Rlci4gV2Ugd2VyZSB1c2luZyBUZW1wUmVnaXN0ZXJTZXQKKyAgICAgICAgdG8g
YWxsb2NhdGUgc2NyYXRjaCByZWdpc3RlciwgYnV0IHRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlv
biBoYXMgcGFydGljdWxhciBhc3N1bXB0aW9uIG9uIGhvdyByZWdpc3RlciBpcyBhbGxvY2F0ZWQg
ZnJvbQorICAgICAgICBUZW1wUmVnaXN0ZXJTZXQuIFRoaXMgaXMgdmVyeSBmcmFnaWxlIGFuZCBk
YW5nZXJvdXMuIFdlIHNob3VsZCBwYXNzIHNjcmF0Y2ggcmVnaXN0ZXIgZXhwbGljaXRseSBpbiB0
aGF0IGNhc2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y29weUxMSW50QmFzZWxpbmVD
YWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lz
dGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9SZWdpc3RlclNldC5oOgorICAgICAgICAqIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmxvY2spOgorICAg
ICAgICAoSlNDOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaCk6Cisg
ICAgICAgIChKU0M6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZXVzZWRSZWdp
c3RlcnNCeVB1c2hpbmcpOgorICAgICAgICAoSlNDOjpTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6
OnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcpOgorICAgICAgICAqIGppdC9TY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBqaXQvVGVtcFJlZ2lzdGVyU2V0LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBqaXQvVGVtcFJlZ2lzdGVyU2V0Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OmhhbmRsZUV4Y2Vw
dGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJh
bWVSb2xsYmFja0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uRnJvbUNh
bGxTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Om5hdGl2ZUZvckdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6cmVtb3RlRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiB3YXNtL2pzL1dhc21U
b0pTLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgorCiAyMDIyLTA0LTIxICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCByZXZlcnRpbmcgcjI5MzE0Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCAyM2M0YTc0Zjg4Njg2M2ExZWZjZTBiM2NhMzZiZjE2NjEzZWY0OTU0Li5jMGE5ZTJhN2U4
MDJkYjk0ODU3Njc0ZjI5Yjg3OTc2ZDljNTZlMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC04NjcsMTMgKzg2NywxMyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGppdC9SZWdpc3RlckF0T2Zmc2V0TGlzdC5oCiAgICAg
aml0L1JlZ2lzdGVyTWFwLmgKICAgICBqaXQvUmVnaXN0ZXJTZXQuaAorICAgIGppdC9TY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IuaAogICAgIGppdC9TbmlwcGV0LmgKICAgICBqaXQvU25pcHBldFBh
cmFtcy5oCiAgICAgaml0L1NuaXBwZXRSZWcuaAogICAgIGppdC9TbmlwcGV0U2xvd1BhdGhDYWxs
cy5oCiAgICAgaml0L1NwaWxsUmVnaXN0ZXJzTW9kZS5oCiAgICAgaml0L1RhZ1JlZ2lzdGVyc01v
ZGUuaAotICAgIGppdC9UZW1wUmVnaXN0ZXJTZXQuaAogICAgIGppdC9UaHVua0dlbmVyYXRvci5o
CiAKICAgICBsbGludC9MTEludE9wY29kZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDc2ZjM0MTRkNTE2NWY5NzdjNThlYzZjOGFhMzc5MGRlYmE0NDViMTguLjc5YzhkY2RiMWVl
OTY4MzRhNzA5NmFkNjMyMDkwMjgwMTIwMjAwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xODYsNyArMTg2LDYgQEAKIAkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQ
UkluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MjRFNTNFMTdFQTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNEU1NDQxN0VBOUY1OTAwQUJCMjE3IC8q
IEdQUkluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMjRFNTNGMTdFQTlGNTkwMEFCQjIxNyAvKiBHUFJJbmZvLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNEU1NEQxN0VFMjc0OTAwQUJCMjE3
IC8qIEpJVE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMjRFNTQ2MTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEYyNEU1NEYx
N0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNEU1NDgxN0VFMjc0OTAwQUJCMjE3IC8qIFRl
bXBSZWdpc3RlclNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MjRFNTRCMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0RTU1NjE3
RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0RTU1NDE3RjBCNzFDMDBBQkIyMTcgLyog
SW5saW5lQ2FsbEZyYW1lU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFs
bG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjI1NkMzNDE2MjdCMEFBMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCAqLzsgfTsKQEAgLTI2MDIsNyArMjYwMSw2IEBA
CiAJCTBGMjRFNTNGMTdFQTlGNTkwMEFCQjIxNyAvKiBHUFJJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQUkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyNEU1NDUxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjRFNTQ2MTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVy
YXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVE9wZXJhdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYyNEU1NDgxN0VFMjc0OTAwQUJCMjE3
IC8qIFRlbXBSZWdpc3RlclNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZW1wUmVnaXN0ZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNEU1NEIx
N0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNEU1NTMxN0YwQjcxQzAwQUJCMjE3IC8qIElubGlu
ZUNhbGxGcmFtZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmxpbmVDYWxsRnJhbWVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0
RTU1NDE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1lU2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUNhbGxGcmFtZVNldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzE5MSw3ICszMTg5LDYgQEAKIAkJMEZDMjBDQjcxODU1NkEzNTAw
QzlFOTU0IC8qIERGR1NTQUxvd2VyaW5nUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHU1NB
TG93ZXJpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzIwQ0I4
MTg1NTZBMzUwMEM5RTk1NCAvKiBERkdTU0FMb3dlcmluZ1BoYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR1NTQUxvd2VyaW5nUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdT
U0FMb3dlcmluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzMxNDEw
MTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWdpc3RlclNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RkMzMTQxMTE4MTQ1NTkxMDAwMzMyMzIgLyogVGVtcFJlZ2lzdGVyU2V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBSZWdpc3RlclNldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzMxNDE0MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3Rl
clNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdpc3RlclNl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzNDQ0Y1MTlBREE0MTAwMDZB
QzcyQSAvKiBERkdCbG9ja01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdCbG9ja01hcC5oOyBwYXRoID0gZGZnL0RGR0Jsb2NrTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQzNDQ0Y2MTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja01hcElubGlu
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmxvY2tNYXBJbmxpbmVz
Lmg7IHBhdGggPSBkZmcvREZHQmxvY2tNYXBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NjcyLDggKzY2NjksNiBAQAogCQkJCUE3RkY2NDdBMThDNTJFODUwMEI1NTMw
NyAvKiBTcGlsbFJlZ2lzdGVyc01vZGUuaCAqLywKIAkJCQlEQzc5OTc4MTFDREU5RjlFMDA0RDRB
MDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5jcHAgKi8sCiAJCQkJREM3OTk3ODIxQ0RFOUY5RTAwNEQ0
QTA5IC8qIFRhZ1JlZ2lzdGVyc01vZGUuaCAqLywKLQkJCQkwRkMzMTQxMTE4MTQ1NTkxMDAwMzMy
MzIgLyogVGVtcFJlZ2lzdGVyU2V0LmNwcCAqLywKLQkJCQkwRjI0RTU0ODE3RUUyNzQ5MDBBQkIy
MTcgLyogVGVtcFJlZ2lzdGVyU2V0LmggKi8sCiAJCQkJMEY1NzJENEQxNjg3OUZEQjAwRTU3RkJE
IC8qIFRodW5rR2VuZXJhdG9yLmggKi8sCiAJCQkJQTczODY1NTIxMTg2OTdCNDAwNTQwMjc5IC8q
IFRodW5rR2VuZXJhdG9ycy5jcHAgKi8sCiAJCQkJQTczODY1NTMxMTg2OTdCNDAwNTQwMjc5IC8q
IFRodW5rR2VuZXJhdG9ycy5oICovLApAQCAtMTExNjIsNyArMTExNTcsNiBAQAogCQkJCUUzMEU4
QTU2MjZERTJFNDgwMERBNDkxNSAvKiBUZW1wb3JhbFRpbWVab25lLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMzBFOEE1NzI2REUyRTQ4MDBEQTQ5MTUgLyogVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVj
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzBFOEE1NDI2REUyRTQ4MDBEQTQ5MTUgLyogVGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYyNEU1NEYxN0VF
Mjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0
NEE3QjQyMEJGNjhEOTAwMjJCMTcxIC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkEyQzE3QzE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRTM0MjIxMjFENkI4MUMzMDAzMkJFODggLyogVGhyb3dTY29w
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggMzM0NTI4
OTE3MjgzNDE0ZGQ0MzkzY2M3NjgzN2ZlNDI5NThlYTUzYS4uNzEzZTc2MzM0YTE3ZDBmZDdkY2Jj
Y2VkOTM0NGFhMTExNzRiNDUyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtNjc0
LDcgKzY3NCw2IEBAIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwCiBqaXQvU2V0dXBW
YXJhcmdzRnJhbWUuY3BwCiBqaXQvU2xvd1BhdGhDYWxsLmNwcAogaml0L1RhZ1JlZ2lzdGVyc01v
ZGUuY3BwCi1qaXQvVGVtcFJlZ2lzdGVyU2V0LmNwcAogaml0L1RodW5rR2VuZXJhdG9ycy5jcHAK
IAogbGxpbnQvTExJbnRDTG9vcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCBkY2UyM2RlMTgwOGU3ZmI0NzVmMzk5MjIyYWRmMGU0NDk3
OGI4YjAwLi4wMzJmYWE3MDI0OWEwZTFmNjQ2OThhZWZlOTA0NTZlN2VjYzUzY2FiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zMTIsNyAr
MzEyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgaml0LnN0
b3JlMzIoCiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykpKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvcHlDYWxsZWVT
YXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLT50b3BFbnRyeUZyYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNh
dmVzQnVmZmVyKHZtLT50b3BFbnRyeUZyYW1lLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogCiAg
ICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihq
aXQuY29kZUJsb2NrKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICAgICAgICAg
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24oKnZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCBjNzAyMTgwN2UxNTM0MjRmZDc4ODU1
NmM5N2YyMjQ3ZDA3ZmM4ZDIzLi5lYWY1NDNkNjFiOWRjMWM5NzNmOWRjODVhYzc1ZDRmOWUyOTQx
MWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
CkBAIC0xMjk2LDE1ICsxMjk2LDE3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxsCiAgICAgc3Bv
b2xlci5maW5hbGl6ZUZQUigpOwogfQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6Y29weUxMSW50
QmFzZWxpbmVDYWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVT
YXZlc0J1ZmZlcihFbnRyeUZyYW1lKiYgdG9wRW50cnlGcmFtZSwgY29uc3QgVGVtcFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzKQordm9pZCBBc3NlbWJseUhlbHBlcnM6OmNvcHlMTEludEJhc2Vs
aW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIoRW50cnlGcmFtZSomIHRvcEVudHJ5RnJhbWUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzKQogewogI2lmIE5VTUJFUl9PRl9DQUxMRUVfU0FWRVNfUkVHSVNURVJTID4gMAog
ICAgIC8vIENvcHkgc2F2ZWQgY2FsbGVlU2F2ZXMgb24gc3RhY2sgb3IgdW5zYXZlZCBjYWxsZWVT
YXZlcyBpbiByZWdpc3RlciB0byB2bSBjYWxsZWVTYXZlIGJ1ZmZlcgotICAgIEdQUlJlZyBkZXN0
QnVmZmVyR1BSID0gdXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKDApOwotICAgIEdQUlJlZyB0ZW1w
MSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigxKTsKLSAgICBGUFJSZWcgZnBUZW1wMSA9IHVz
ZWRSZWdpc3RlcnMuZ2V0RnJlZUZQUigwKTsKLSAgICBHUFJSZWcgdGVtcDIgPSB1c2VkUmVnaXN0
ZXJzLmdldEZyZWVHUFIoMik7Ci0gICAgRlBSUmVnIGZwVGVtcDIgPSB1c2VkUmVnaXN0ZXJzLmdl
dEZyZWVGUFIoMSk7CisgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcih1c2Vk
UmVnaXN0ZXJzKTsKKyAgICBHUFJSZWcgZGVzdEJ1ZmZlckdQUiA9IGFsbG9jYXRvci5hbGxvY2F0
ZVNjcmF0Y2hHUFIoKTsKKyAgICBHUFJSZWcgdGVtcDEgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3Jh
dGNoR1BSKCk7CisgICAgRlBSUmVnIGZwVGVtcDEgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNo
RlBSKCk7CisgICAgR1BSUmVnIHRlbXAyID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigp
OworICAgIEZQUlJlZyBmcFRlbXAyID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEZQUigpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKCFhbGxvY2F0b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSk7CiAKICAg
ICBsb2FkUHRyKCZ0b3BFbnRyeUZyYW1lLCBkZXN0QnVmZmVyR1BSKTsKICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKEVudHJ5RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJPZmZzZXQoKSks
IGRlc3RCdWZmZXJHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKaW5kZXggZjQ1MWE3NWM1MWVmYjA4YjIxYmFiYmQ1OGY4MTAyMmUyNzc0MmRmMi4uMDk3
MjA4MTZlZjYyOWU5ZTdlYjJiM2Y0YzU3OGY5MTA3NTc3NzhlYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVk
ZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCisjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJUYWdSZWdpc3RlcnNN
b2RlLmgiCiAjaW5jbHVkZSAiVHlwZW9mVHlwZS5oIgpAQCAtMzkzLDE4ICszOTQsNiBAQCBjbGFz
cyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAg
fQogCi0gICAgdm9pZCBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cihFbnRyeUZyYW1lKiYgdG9wRW50cnlGcmFtZSkKLSAgICB7Ci0jaWYgTlVNQkVSX09GX0NBTExF
RV9TQVZFU19SRUdJU1RFUlMgPiAwCi0gICAgICAgIGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycyA9IHsgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpIH07
Ci0gICAgICAgIEdQUlJlZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigwKTsKLSAg
ICAgICAgY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodG9wRW50
cnlGcmFtZSwgdGVtcDEpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKHRvcEVudHJ5RnJh
bWUpOwotICAgICAgICBVTlVTRURfUEFSQU0odG9wRW50cnlGcmFtZSk7Ci0jZW5kaWYKLSAgICB9
Ci0gICAgCiAgICAgdm9pZCBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1
ZmZlcihHUFJSZWcgdG9wRW50cnlGcmFtZSkKICAgICB7CiAjaWYgTlVNQkVSX09GX0NBTExFRV9T
QVZFU19SRUdJU1RFUlMgPiAwCkBAIC00MTgsNyArNDA3LDcgQEAgY2xhc3MgQXNzZW1ibHlIZWxw
ZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB2b2lkIHJlc3RvcmVDYWxsZWVTYXZl
c0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcihHUFJSZWcgdm1HUFIsIEdQUlJlZyBz
Y3JhdGNoR1BSKTsKICAgICB2b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlckltcGwoR1BSUmVnIGVudHJ5RnJhbWUsIGNvbnN0IFJlZ2lzdGVyU2V0
JiBza2lwTGlzdCk7CiAKLSAgICB2b2lkIGNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9t
RnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoRW50cnlGcmFtZSom
LCBjb25zdCBUZW1wUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMgPSB7IFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSB9KTsKKyAgICB2b2lkIGNvcHlMTEludEJhc2VsaW5l
Q2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIoRW50cnlGcmFtZSomLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycyA9IFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSk7CiAKICAgICB2b2lkIGVtaXRNYXRl
cmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlZ2lzdGVyU2V0LmgKaW5kZXggZDUwNmYwNjQ1MjAxM2ZhMjcyM2MxM2NhMmQyMGNiYjMzNzlm
ZjQxYS4uY2E2YzVmOTY1MWZlYmIwMzE3Zjc4ZTY4ODAxYTU4Yzg2N2YyZDljZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1
ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlJl
Zy5oIgotI2luY2x1ZGUgIlRlbXBSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgPHd0Zi9CaXRtYXAu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAKaW5kZXggMjI0ZTI1MzQ5MzRiOGYzNjVm
Mjk4ZmY4ODllNjc2YWVjODJmMzU4Yy4uMTgwZGU1OTUwYzI4Yjc2Y2YyZmQ3MmIxMTcyYzUwZDI0
ZGYxMThhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yLmNwcApAQCAtNDYsMjAgKzQ2LDE0IEBAIHZvaWQgU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yOjpsb2NrKEdQUlJlZyByZWcpCiB7CiAgICAgaWYgKHJlZyA9PSBJbnZh
bGlkR1BSUmVnKQogICAgICAgICByZXR1cm47Ci0gICAgdW5zaWduZWQgaW5kZXggPSBHUFJJbmZv
Ojp0b0luZGV4KHJlZyk7Ci0gICAgaWYgKGluZGV4ID09IEdQUkluZm86OkludmFsaWRJbmRleCkK
LSAgICAgICAgcmV0dXJuOwotICAgIG1fbG9ja2VkUmVnaXN0ZXJzLnNldEdQUkJ5SW5kZXgoaW5k
ZXgpOworICAgIG1fbG9ja2VkUmVnaXN0ZXJzLnNldChyZWcpOwogfQogCiB2b2lkIFNjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvcjo6bG9jayhGUFJSZWcgcmVnKQogewogICAgIGlmIChyZWcgPT0gSW52
YWxpZEZQUlJlZykKICAgICAgICAgcmV0dXJuOwotICAgIHVuc2lnbmVkIGluZGV4ID0gRlBSSW5m
bzo6dG9JbmRleChyZWcpOwotICAgIGlmIChpbmRleCA9PSBGUFJJbmZvOjpJbnZhbGlkSW5kZXgp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX2xvY2tlZFJlZ2lzdGVycy5zZXRGUFJCeUluZGV4KGlu
ZGV4KTsKKyAgICBtX2xvY2tlZFJlZ2lzdGVycy5zZXQocmVnKTsKIH0KIAogdm9pZCBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3I6OmxvY2soSlNWYWx1ZVJlZ3MgcmVncykKQEAgLTczLDcgKzY3LDcg
QEAgdHlwZW5hbWUgQmFua0luZm86OlJlZ2lzdGVyVHlwZSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OmFsbG9jYXRlU2NyYXRjaCgpCiB7CiAgICAgLy8gRmlyc3QgdHJ5IHRvIGFsbG9jYXRlIGEg
cmVnaXN0ZXIgdGhhdCBpcyB0b3RhbGx5IGZyZWUuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IEJhbmtJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAgIHR5cGVuYW1l
IEJhbmtJbmZvOjpSZWdpc3RlclR5cGUgcmVnID0gQmFua0luZm86OnRvUmVnaXN0ZXIoaSk7Cisg
ICAgICAgIGF1dG8gcmVnID0gQmFua0luZm86OnRvUmVnaXN0ZXIoaSk7CiAgICAgICAgIGlmICgh
bV9sb2NrZWRSZWdpc3RlcnMuZ2V0KHJlZykKICAgICAgICAgICAgICYmICFtX3VzZWRSZWdpc3Rl
cnMuZ2V0KHJlZykKICAgICAgICAgICAgICYmICFtX3NjcmF0Y2hSZWdpc3RlcnMuZ2V0KHJlZykp
IHsKQEAgLTg1LDcgKzc5LDcgQEAgdHlwZW5hbWUgQmFua0luZm86OlJlZ2lzdGVyVHlwZSBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlU2NyYXRjaCgpCiAgICAgLy8gU2luY2UgdGhh
dCBmYWlsZWQsIHRyeSB0byBhbGxvY2F0ZSBhIHJlZ2lzdGVyIHRoYXQgaXMgbm90IHlldAogICAg
IC8vIGxvY2tlZCBvciB1c2VkIGZvciBzY3JhdGNoLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBCYW5rSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewotICAgICAgICB0eXBlbmFt
ZSBCYW5rSW5mbzo6UmVnaXN0ZXJUeXBlIHJlZyA9IEJhbmtJbmZvOjp0b1JlZ2lzdGVyKGkpOwor
ICAgICAgICBhdXRvIHJlZyA9IEJhbmtJbmZvOjp0b1JlZ2lzdGVyKGkpOwogICAgICAgICBpZiAo
IW1fbG9ja2VkUmVnaXN0ZXJzLmdldChyZWcpICYmICFtX3NjcmF0Y2hSZWdpc3RlcnMuZ2V0KHJl
ZykpIHsKICAgICAgICAgICAgIG1fc2NyYXRjaFJlZ2lzdGVycy5zZXQocmVnKTsKICAgICAgICAg
ICAgIG1fbnVtYmVyT2ZSZXVzZWRSZWdpc3RlcnMrKzsKQEAgLTExMCwxMiArMTA0LDE0IEBAIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yOjpwcmVzZXJ2ZVJldXNlCiAgICAgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9TcGlsbDsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7
ICsraSkgewogICAgICAgICBGUFJSZWcgcmVnID0gRlBSSW5mbzo6dG9SZWdpc3RlcihpKTsKLSAg
ICAgICAgaWYgKG1fc2NyYXRjaFJlZ2lzdGVycy5nZXRGUFJCeUluZGV4KGkpICYmIG1fdXNlZFJl
Z2lzdGVycy5nZXQocmVnKSkKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsK
KyAgICAgICAgaWYgKG1fc2NyYXRjaFJlZ2lzdGVycy5nZXQocmVnKSAmJiBtX3VzZWRSZWdpc3Rl
cnMuZ2V0KHJlZykpCiAgICAgICAgICAgICByZWdpc3RlcnNUb1NwaWxsLnNldChyZWcpOwogICAg
IH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnM7ICsraSkgewogICAgICAgICBHUFJSZWcgcmVnID0gR1BSSW5mbzo6dG9SZWdpc3RlcihpKTsK
LSAgICAgICAgaWYgKG1fc2NyYXRjaFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4KGkpICYmIG1fdXNl
ZFJlZ2lzdGVycy5nZXQocmVnKSkKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVn
KTsKKyAgICAgICAgaWYgKG1fc2NyYXRjaFJlZ2lzdGVycy5nZXQocmVnKSAmJiBtX3VzZWRSZWdp
c3RlcnMuZ2V0KHJlZykpCiAgICAgICAgICAgICByZWdpc3RlcnNUb1NwaWxsLnNldChyZWcpOwog
ICAgIH0KIApAQCAtMTM0LDEyICsxMzAsMTQgQEAgdm9pZCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoQXNzZW1ibHlIZWxwZXJzJgogICAg
IFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvRmlsbDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJ
bmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgewogICAgICAgICBHUFJSZWcgcmVnID0gR1BS
SW5mbzo6dG9SZWdpc3RlcihpKTsKLSAgICAgICAgaWYgKG1fc2NyYXRjaFJlZ2lzdGVycy5nZXRH
UFJCeUluZGV4KGkpICYmIG1fdXNlZFJlZ2lzdGVycy5nZXQocmVnKSkKKyAgICAgICAgQVNTRVJU
KHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgaWYgKG1fc2NyYXRjaFJlZ2lzdGVycy5n
ZXQocmVnKSAmJiBtX3VzZWRSZWdpc3RlcnMuZ2V0KHJlZykpCiAgICAgICAgICAgICByZWdpc3Rl
cnNUb0ZpbGwuc2V0KHJlZyk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IEZQUkluZm86
Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CiAgICAgICAgIEZQUlJlZyByZWcgPSBGUFJJbmZv
Ojp0b1JlZ2lzdGVyKGkpOwotICAgICAgICBpZiAobV9zY3JhdGNoUmVnaXN0ZXJzLmdldEZQUkJ5
SW5kZXgoaSkgJiYgbV91c2VkUmVnaXN0ZXJzLmdldChyZWcpKQorICAgICAgICBBU1NFUlQocmVn
ICE9IEludmFsaWRGUFJSZWcpOworICAgICAgICBpZiAobV9zY3JhdGNoUmVnaXN0ZXJzLmdldChy
ZWcpICYmIG1fdXNlZFJlZ2lzdGVycy5nZXQocmVnKSkKICAgICAgICAgICAgIHJlZ2lzdGVyc1Rv
RmlsbC5zZXQocmVnKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCmluZGV4IDFlZDE3YjBlM2YyYjhkZTMzNDc3
ZjQxZDBkNjFkZjY1Y2I1ZmVmYzcuLmNlZTY4MWQ2ZTNlYWQ1MTA3ZmZiMTBlMTkxOGM1ZWJhMmRj
YjBmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3IuaApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNp
bmNsdWRlICJSZWdpc3RlclNldC5oIgotI2luY2x1ZGUgIlRlbXBSZWdpc3RlclNldC5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtOTYsOCArOTUsOCBAQCBjbGFzcyBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IgewogCiBwcml2YXRlOgogICAgIFJlZ2lzdGVyU2V0IG1fdXNlZFJlZ2lzdGVyczsK
LSAgICBUZW1wUmVnaXN0ZXJTZXQgbV9sb2NrZWRSZWdpc3RlcnM7Ci0gICAgVGVtcFJlZ2lzdGVy
U2V0IG1fc2NyYXRjaFJlZ2lzdGVyczsKKyAgICBSZWdpc3RlclNldCBtX2xvY2tlZFJlZ2lzdGVy
czsKKyAgICBSZWdpc3RlclNldCBtX3NjcmF0Y2hSZWdpc3RlcnM7CiAgICAgdW5zaWduZWQgbV9u
dW1iZXJPZlJldXNlZFJlZ2lzdGVyczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGVtcFJlZ2lzdGVyU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGVtcFJlZ2lzdGVyU2V0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Yz
NTIxZWEyNjE1NmE3ZDBjMWI0YzJmY2M1YmMwYmFmZjM0MDZmZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Rl
bXBSZWdpc3RlclNldC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJUZW1wUmVnaXN0ZXJTZXQuaCIKLQotI2lmIEVOQUJMRShBU1NFTUJMRVIp
Ci0KLSNpbmNsdWRlICJSZWdpc3RlclNldC5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotVGVtcFJl
Z2lzdGVyU2V0OjpUZW1wUmVnaXN0ZXJTZXQoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKQotewot
ICAgIGNsZWFyQWxsKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVyczsgaS0tOykgewotICAgICAgICBHUFJSZWcgcmVnID0gR1BSSW5mbzo6dG9SZWdp
c3RlcihpKTsKLSAgICAgICAgaWYgKG90aGVyLmdldChyZWcpKQotICAgICAgICAgICAgc2V0KHJl
Zyk7Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IEZQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzOyBpLS07KSB7Ci0gICAgICAgIEZQUlJlZyByZWcgPSBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkp
OwotICAgICAgICBpZiAob3RoZXIuZ2V0KHJlZykpCi0gICAgICAgICAgICBzZXQocmVnKTsKLSAg
ICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGVtcFJlZ2lzdGVyU2V0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RlbXBSZWdpc3RlclNldC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTcxOWZjMTc3YTU5YzBiNjM2ODQ0YmJjMjk2MTgxNzI0
MDAyN2U5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGVtcFJlZ2lzdGVyU2V0LmgKKysrIC9kZXYvbnVsbApA
QCAtMSwyMTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShBU1NFTUJMRVIpCi0KLSNp
bmNsdWRlICJGUFJJbmZvLmgiCi0jaW5jbHVkZSAiR1BSSW5mby5oIgotCi1uYW1lc3BhY2UgSlND
IHsKLQotY2xhc3MgUmVnaXN0ZXJTZXQ7Ci0KLWNsYXNzIFRlbXBSZWdpc3RlclNldCB7Ci1wdWJs
aWM6Ci0gICAgVGVtcFJlZ2lzdGVyU2V0KCkKLSAgICB7Ci0gICAgICAgIGNsZWFyQWxsKCk7Ci0g
ICAgfQotICAgIAotICAgIFRlbXBSZWdpc3RlclNldChjb25zdCBSZWdpc3RlclNldCYpOwotICAg
IAotICAgIHZvaWQgc2V0KEdQUlJlZyByZWcpCi0gICAgewotICAgICAgICBzZXRCaXQoR1BSSW5m
bzo6dG9JbmRleChyZWcpKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzZXQoSlNWYWx1ZVJlZ3Mg
cmVncykKLSAgICB7Ci0gICAgICAgIGlmIChyZWdzLnRhZ0dQUigpICE9IEludmFsaWRHUFJSZWcp
Ci0gICAgICAgICAgICBzZXQocmVncy50YWdHUFIoKSk7Ci0gICAgICAgIHNldChyZWdzLnBheWxv
YWRHUFIoKSk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc2V0R1BSQnlJbmRleCh1bnNpZ25lZCBp
bmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IEdQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzKTsKLSAgICAgICAgc2V0Qml0KGluZGV4KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBj
bGVhcihHUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgY2xlYXJCaXQoR1BSSW5mbzo6dG9JbmRl
eChyZWcpKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBnZXQoR1BSUmVnIHJlZykgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBnZXRCaXQoR1BSSW5mbzo6dG9JbmRleChyZWcpKTsKLSAgICB9
Ci0gICAgCi0gICAgYm9vbCBnZXRHUFJCeUluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMpOwot
ICAgICAgICByZXR1cm4gZ2V0Qml0KGluZGV4KTsKLSAgICB9Ci0gICAgCi0gICAgLy8gUmV0dXJu
IHRoZSBpbmRleCd0aCBmcmVlIEdQUi4KLSAgICBHUFJSZWcgZ2V0RnJlZUdQUih1bnNpZ25lZCBp
bmRleCA9IDApIGNvbnN0Ci0gICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgewotICAgICAgICAgICAgaWYgKCFnZXRHUFJCeUlu
ZGV4KGkpICYmICFpbmRleC0tKQotICAgICAgICAgICAgICAgIHJldHVybiBHUFJJbmZvOjp0b1Jl
Z2lzdGVyKGkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwotICAg
IH0KLSAgICAKLSAgICB2b2lkIHNldChGUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgc2V0Qml0
KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6dG9JbmRleChyZWcpKTsKLSAg
ICB9Ci0gICAgCi0gICAgdm9pZCBzZXRGUFJCeUluZGV4KHVuc2lnbmVkIGluZGV4KQotICAgIHsK
LSAgICAgICAgQVNTRVJUKGluZGV4IDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMpOwotICAg
ICAgICBzZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpbmRleCk7Ci0gICAgfQot
ICAgIAotICAgIHZvaWQgY2xlYXIoRlBSUmVnIHJlZykKLSAgICB7Ci0gICAgICAgIGNsZWFyQml0
KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6dG9JbmRleChyZWcpKTsKLSAg
ICB9Ci0gICAgCi0gICAgYm9vbCBnZXQoRlBSUmVnIHJlZykgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBnZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBGUFJJbmZvOjp0b0lu
ZGV4KHJlZykpOwotICAgIH0KLSAgICAKLSAgICBib29sIGdldEZQUkJ5SW5kZXgodW5zaWduZWQg
aW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBGUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVycyk7Ci0gICAgICAgIHJldHVybiBnZXRCaXQoR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnMgKyBpbmRleCk7Ci0gICAgfQotICAgIAotICAgIC8vIFJldHVybiB0aGUgaW5kZXgn
dGggZnJlZSBGUFIuCi0gICAgRlBSUmVnIGdldEZyZWVGUFIodW5zaWduZWQgaW5kZXggPSAwKSBj
b25zdAotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gRlBSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM7IGktLTspIHsKLSAgICAgICAgICAgIGlmICghZ2V0RlBSQnlJbmRleChpKSAmJiAh
aW5kZXgtLSkKLSAgICAgICAgICAgICAgICByZXR1cm4gRlBSSW5mbzo6dG9SZWdpc3RlcihpKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gSW52YWxpZEZQUlJlZzsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBCYW5rSW5mbz4KLSAgICB2b2lkIHNldEJ5SW5kZXgodW5zaWduZWQg
aW5kZXgpCi0gICAgewotICAgICAgICBzZXQoQmFua0luZm86OnRvUmVnaXN0ZXIoaW5kZXgpKTsK
LSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQmFua0luZm8+Ci0gICAgYm9vbCBn
ZXRCeUluZGV4KHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGdldChCYW5r
SW5mbzo6dG9SZWdpc3RlcihpbmRleCkpOwotICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCBudW1i
ZXJPZlNldEdQUnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGkt
LTspIHsKLSAgICAgICAgICAgIGlmICghZ2V0Qml0KGkpKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgcmVzdWx0Kys7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZTZXRGUFJzKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7Ci0gICAgICAgICAgICBp
ZiAoIWdldEJpdChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmVzdWx0Kys7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZTZXRSZWdp
c3RlcnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gdG90YWxOdW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgewotICAg
ICAgICAgICAgaWYgKCFnZXRCaXQoaSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICByZXN1bHQrKzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgdm9pZCBjbGVhckFsbCgpCi0gICAgewotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkJ5dGVzSW5UZW1wUmVnaXN0ZXJTZXQ7IGktLTspCi0g
ICAgICAgICAgICBtX3NldFtpXSA9IDA7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRCaXQodW5zaWdu
ZWQgaSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpIDwgdG90YWxOdW1iZXJPZlJlZ2lzdGVycyk7
Ci0gICAgICAgIG1fc2V0W2kgPj4gM10gfD0gKDEgPDwgKGkgJiA3KSk7Ci0gICAgfQotICAgIAot
ICAgIHZvaWQgY2xlYXJCaXQodW5zaWduZWQgaSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpIDwg
dG90YWxOdW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAgICAgIG1fc2V0W2kgPj4gM10gJj0gfigxIDw8
IChpICYgNykpOwotICAgIH0KLSAgICAKLSAgICBib29sIGdldEJpdCh1bnNpZ25lZCBpKSBjb25z
dAotICAgIHsKLSAgICAgICAgQVNTRVJUKGkgPCB0b3RhbE51bWJlck9mUmVnaXN0ZXJzKTsKLSAg
ICAgICAgcmV0dXJuICEhKG1fc2V0W2kgPj4gM10gJiAoMSA8PCAoaSAmIDcpKSk7Ci0gICAgfQot
ICAgIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdG90YWxOdW1iZXJPZlJlZ2lzdGVy
cyA9Ci0gICAgICAgIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzICsgRlBSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnM7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJP
ZkJ5dGVzSW5UZW1wUmVnaXN0ZXJTZXQgPQotICAgICAgICAodG90YWxOdW1iZXJPZlJlZ2lzdGVy
cyArIDcpID4+IDM7Ci0KLSAgICB1aW50OF90IG1fc2V0W251bWJlck9mQnl0ZXNJblRlbXBSZWdp
c3RlclNldF07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2Vsc2UgLy8gRU5BQkxFKEFT
U0VNQkxFUikgLT4gc28gaWYgSklUIGlzIGRpc2FibGVkCi0KLW5hbWVzcGFjZSBKU0MgewotCi0v
LyBEZWZpbmUgVGVtcFJlZ2lzdGVyU2V0IHRvIHNvbWV0aGluZywgdG8gbWFrZSBpdCBlYXNpZXIg
dG8gcmVmZXIgdG8gdGhpcyB0eXBlIGluIGNvZGUgdGhhdAotLy8gbWFrZSBiZSBjb21waWxlZCB3
aGVuIHRoZSBKSVQgaXMgZGlzYWJsZWQuCi0KLXN0cnVjdCBUZW1wUmVnaXN0ZXJTZXQgeyB9Owot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggODA3MTIy
NGU0NzcwYzNjMDA3MDM3ZTM1NWU1M2IyNmJmY2Y3NmE1MS4uZTNkZjFmMTAzY2QwMGMzNjQyMWNl
YTU2NjIyMjdmMjVhOTk0ZmQwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAg
Q0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKKyAgICBqaXQuY29weUNhbGxlZVNh
dmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKIAogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CkBAIC02Miw3ICs2Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhCiB7
CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5
RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKKyAgICBqaXQuY29weUNh
bGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKIAogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CkBAIC0xNTMsNyArMTUzLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiB0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0
b3IoVk0KICAgICAvLyBldmVuIHRob3VnaCB3ZSB3b24ndCB1c2UgaXQuCiAgICAgaml0LnByZXNl
cnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5H
UFIpOwogCi0gICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKHZtLnRvcEVudHJ5RnJhbWUpOworICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJh
bWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwogCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkxvb2t1cEV4
Y2VwdGlvbkhhbmRsZXIpPihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZtKSk7CiAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKQEAgLTQ2NSw3ICs0NjUsNyBAQCBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVGb3JHZW5lcmF0b3Io
Vk0mIHZtLCBUaHVua0Z1bgogICAgIC8vIEhhbmRsZSBhbiBleGNlcHRpb24KICAgICBleGNlcHRp
b25IYW5kbGVyLmxpbmsoJmppdCk7CiAKLSAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7CisgICAgaml0LmNvcHlDYWxs
ZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0LnN0b3JlUHRyKEpTSW50ZXJmYWNlSklUOjpj
YWxsRnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxGcmFtZSk7CiAjaWYgT1MoV0lORE9XUykKICAg
ICAvLyBBbGxvY2F0ZSBzcGFjZSBvbiBzdGFjayBmb3IgdGhlIDQgcGFyYW1ldGVyIHJlZ2lzdGVy
cy4KQEAgLTEzMzksNyArMTMzOSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gYm91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IoVk0mIHZtKQogICAgIENDYWxsSGVscGVy
czo6SnVtcCBoYXZlU3RhY2tTcGFjZSA9IGppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpCZWxv
d09yRXF1YWwsIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKHZtLmFkZHJlc3NPZlNvZnRT
dGFja0xpbWl0KCkpLCBHUFJJbmZvOjpyZWdUMik7CiAKICAgICAvLyBUaHJvdyBTdGFjayBPdmVy
ZmxvdyBleGNlcHRpb24KLSAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVl
U2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7CisgICAgaml0LmNvcHlDYWxsZWVTYXZlc1Rv
RW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUsIEdQUkluZm86OnJl
Z1QzKTsKICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVn
VDAsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCBHUFJJbmZvOjpyZWdU
Myk7CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tP
dmVyZmxvd0Vycm9yRnJvbVRodW5rKT4oR1BSSW5mbzo6cmVnVDMpOwogICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CkBAIC0xNDY4LDcgKzE0NjgsNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0p
CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGhhdmVTdGFja1NwYWNlID0gaml0LmJyYW5jaFB0cihD
Q2FsbEhlbHBlcnM6OkJlbG93T3JFcXVhbCwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Mo
dm0uYWRkcmVzc09mU29mdFN0YWNrTGltaXQoKSksIEdQUkluZm86OnJlZ1QyKTsKIAogICAgIC8v
IFRocm93IFN0YWNrIE92ZXJmbG93IGV4Y2VwdGlvbgotICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNU
b0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKKyAgICBqaXQu
Y29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlG
cmFtZSwgR1BSSW5mbzo6cmVnVDMpOwogICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4o
KSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspPihHUFJJbmZvOjpyZWdUMyk7
CiAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKQEAgLTE2MTYsNyArMTYxNiw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmVtb3RlRnVuY3Rpb25DYWxs
R2VuZXJhdG9yKFZNJiB2bSkKICAgICBqaXQucmV0KCk7CiAKICAgICBleGNlcHRpb25DaGVja3Mu
bGluaygmaml0KTsKLSAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2
ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7CisgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50
cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkxvb2t1
cEV4Y2VwdGlvbkhhbmRsZXIpPihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJnZtKSk7CiAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
TG9va3VwRXhjZXB0aW9uSGFuZGxlcikpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCAzZjA4MDkyMmUyNDU5OWZj
NDA2MmI0Y2RiNGIyZDJmZjQzODUwYmExLi5iYzJiMzMzZDg2MWI2MTc3YmEwNGIyZDVmZjY5Yjc1
ODBhOWNiZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNt
VG9KUy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3Bw
CkBAIC00MDUsNyArNDA1LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21F
bnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KIAogICAgIGlmICgh
ZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpIHsKICAgICAgICAgZXhjZXB0aW9uQ2hlY2tzLmxpbmso
JmppdCk7Ci0gICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZl
c0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKKyAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1Rv
RW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CiAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBhdXRvIGNhbGwgPSBqaXQuY2FsbChP
cGVyYXRpb25QdHJUYWcpOwogICAgICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7
Cg==
</data>
<flag name="review"
          id="486880"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>