<?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>222828</bug_id>
          
          <creation_ts>2021-03-05 14:13:32 -0800</creation_ts>
          <short_desc>Update ApplicationCacheStorage::originsWithCache() to return a HashSet&lt;SecurityOriginData&gt; instead of a Vector&lt;Ref&lt;SecurityOrigin&gt;&gt;</short_desc>
          <delta_ts>2021-03-05 17:24:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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=222820</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222830</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>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1736545</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-05 14:13:32 -0800</bug_when>
    <thetext>Update ApplicationCacheStorage::originsWithCache() to return a HashSet&lt;SecurityOriginData&gt; instead of a Vector&lt;Ref&lt;SecurityOrigin&gt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736547</commentid>
    <comment_count>1</comment_count>
      <attachid>422419</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-05 14:22:56 -0800</bug_when>
    <thetext>Created attachment 422419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736609</commentid>
    <comment_count>2</comment_count>
      <attachid>422443</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-05 15:38:26 -0800</bug_when>
    <thetext>Created attachment 422443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736668</commentid>
    <comment_count>3</comment_count>
      <attachid>422443</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-05 17:05:33 -0800</bug_when>
    <thetext>Comment on attachment 422443
Patch

Patch is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736669</commentid>
    <comment_count>4</comment_count>
      <attachid>422443</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-05 17:09:41 -0800</bug_when>
    <thetext>Comment on attachment 422443
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Update ApplicationCacheStorage::originsWithCache() to return a HashSet&lt;SecurityOriginData&gt; instead of a Vector&lt;Ref&lt;SecurityOrigin&gt;&gt;.
&gt; +        Using a HashSet makes sure we do not return duplicates (which do occur as per ApplicationCacheStorage implementation) and makes typing
&gt; +        more consistent with other similar storage functions. Using SecurityOriginData is more lightweight and sufficient for our use cases.
&gt; +        It also takes care of a FIXME comment in WebsiteDataStore::fetchDataAndApply about switching to SecurityOriginData.

The downside of switching to HashSet is that any algorithms that involve iterating through the origins now iterate in an unpredictable order. As long as that’s not an issue, this will be great.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:536
&gt; +            for (auto&amp; origin : storage-&gt;originsWithCache()) {

This is a situation where we might want to consider some kind of sorting so we have predictable behavior. I worry about creating a vector that preserves the randomness of hash table order and doing anything with that vector.

In the early days of Safari some of our most difficult to diagnose performance and correctness bugs were hard to reproduce because they depended on hash ordering. Although the biggest one had a property that this does not, which is that the hash was almost global (I think it was used by NSNotificationCenter) so seemingly unrelated code to add something was having an effect on something seemingly unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736680</commentid>
    <comment_count>5</comment_count>
      <attachid>422443</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-05 17:23:59 -0800</bug_when>
    <thetext>Comment on attachment 422443
Patch

Clearing flags on attachment: 422443

Committed r274022 (234958@main): &lt;https://commits.webkit.org/234958@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736681</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-05 17:24:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736682</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-05 17:24:15 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 422443 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736683</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-05 17:24:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/75120436&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422419</attachid>
            <date>2021-03-05 14:22:56 -0800</date>
            <delta_ts>2021-03-05 15:38:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222828-20210305142255.patch</filename>
            <type>text/plain</type>
            <size>18934</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAwMDBhOGMyMmZiNmY3
N2FiNDEwZDgxMWRhNmYzZDFjOTM2M2ZiNS4uODBiN2Q5NDIwYWExZGRiZmU0MjNhMDJhNzRhNGIy
MGM2NzI1ZGI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTAzLTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpvcmlnaW5zV2l0aENhY2hlKCkgdG8gcmV0dXJuIGEgSGFzaFNldDxTZWN1
cml0eU9yaWdpbkRhdGE+IGluc3RlYWQgb2YgYSBWZWN0b3I8UmVmPFNlY3VyaXR5T3JpZ2luPj4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3JpZ2luc1dpdGhDYWNoZSgpIHRvIHJldHVybiBhIEhh
c2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBpbnN0ZWFkIG9mIGEgVmVjdG9yPFJlZjxTZWN1cml0
eU9yaWdpbj4+LgorICAgICAgICBVc2luZyBhIEhhc2hTZXQgbWFrZXMgc3VyZSB3ZSBkbyBub3Qg
cmV0dXJuIGR1cGxpY2F0ZXMgKHdoaWNoIGRvIG9jY3VyIGFzIHBlciBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZSBpbXBsZW1lbnRhdGlvbikgYW5kIG1ha2VzIHR5cGluZworICAgICAgICBtb3JlIGNv
bnNpc3RlbnQgd2l0aCBvdGhlciBzaW1pbGFyIHN0b3JhZ2UgZnVuY3Rpb25zLiBVc2luZyBTZWN1
cml0eU9yaWdpbkRhdGEgaXMgbW9yZSBsaWdodHdlaWdodCBhbmQgc3VmZmljaWVudCBmb3Igb3Vy
IHVzZSBjYXNlcy4KKyAgICAgICAgSXQgYWxzbyB0YWtlcyBjYXJlIG9mIGEgRklYTUUgY29tbWVu
dCBpbiBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseSBhYm91dCBzd2l0Y2hpbmcg
dG8gU2VjdXJpdHlPcmlnaW5EYXRhLgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpjYWxjdWxhdGVVc2FnZUZvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3JpZ2luc1dpdGhDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRpc2tVc2FnZUZvck9yaWdp
bik6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6
CisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBVcGRhdGUgSFRNTE1lZGlhRWxlbWVudDo6b3JpZ2luc0luTWVkaWFDYWNoZSgpIHRvIHJldHVy
biBTZWN1cml0eU9yaWdpbkRhdGEgaW5zdGVhZCBvZiBTZWN1cml0eU9yaWdpbiBvYmplY3RzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGUwYzRlYTIzMjVmYWE4Zjg4NjQxODNlYjY3ZTQ0M2NhYTYzYzdkMjYuLjM0NzQ0
OWUyNmU3OWNiZWQ4ZjU4NzU3MjlhYzc1ZmY1OGEzY2Q5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzEgQEAKKzIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBVcGRhdGUgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9yaWdpbnNXaXRoQ2FjaGUoKSB0
byByZXR1cm4gYSBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gaW5zdGVhZCBvZiBhIFZlY3Rv
cjxSZWY8U2VjdXJpdHlPcmlnaW4+PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIyODI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcmlnaW5zV2l0
aENhY2hlKCkgdG8gcmV0dXJuIGEgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IGluc3RlYWQg
b2YgYSBWZWN0b3I8UmVmPFNlY3VyaXR5T3JpZ2luPj4uCisgICAgICAgIFVzaW5nIGEgSGFzaFNl
dCBtYWtlcyBzdXJlIHdlIGRvIG5vdCByZXR1cm4gZHVwbGljYXRlcyAod2hpY2ggZG8gb2NjdXIg
YXMgcGVyIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIGltcGxlbWVudGF0aW9uKSBhbmQgbWFrZXMg
dHlwaW5nCisgICAgICAgIG1vcmUgY29uc2lzdGVudCB3aXRoIG90aGVyIHNpbWlsYXIgc3RvcmFn
ZSBmdW5jdGlvbnMuIFVzaW5nIFNlY3VyaXR5T3JpZ2luRGF0YSBpcyBtb3JlIGxpZ2h0d2VpZ2h0
IGFuZCBzdWZmaWNpZW50IGZvciBvdXIgdXNlIGNhc2VzLgorICAgICAgICBJdCBhbHNvIHRha2Vz
IGNhcmUgb2YgYSBGSVhNRSBjb21tZW50IGluIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFu
ZEFwcGx5IGFib3V0IHN3aXRjaGluZyB0byBTZWN1cml0eU9yaWdpbkRhdGEuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhbHNvIHVwZGF0ZXMgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBw
bHkoKSB0byBjcm9zc1RocmVhZENvcHkoKSB0aGUgc2VjdXJpdHlPcmlnaW5EYXRhIGJlZm9yZSBz
ZW5kaW5nIHRoZW0gZnJvbQorICAgICAgICB0aGUgZGF0YSBzdG9yZSBxdWV1ZSB0byB0aGUgbWFp
biB0aHJlYWQuIFRoZSBwcmV2aW91cyBjb2RlIGFzIHNlbmRpbmcgU2VjdXJpdHlPcmlnaW5zIGFu
ZCBXZWJzaXRlRGF0YSB0byB0aGUgbWFpbiB0aHJlYWQgd2l0aG91dAorICAgICAgICBhbnkgaXNv
bGF0ZWQgY29weSwgd2hpY2ggd2FzIGZyYWdpbGUgYW5kIHdvdWxkIG5vdCBoYXZlIGJlZW4gdGhy
ZWFkLXNhZmUgaWYgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9yaWdpbnNXaXRoQ2FjaGUoKSBo
YWQgY2FjaGVkCisgICAgICAgIHRoZSBvcmlnaW5zIGl0IHJldHVybmVkIGZvciBleGFtcGxlLgor
CisgICAgICAgIEFsc28gdXBkYXRlIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoKSB0byBt
YWtlIHN1cmUgd2UgY3Jvc3NUaHJlYWRDb3B5KCkgdGhlIG9yaWdpbnMgYmVmb3JlIHNlbmRpbmcg
dGhlbSBmcm9tIHRoZSBtYWluIHRocmVhZAorICAgICAgICB0byB0aGUgZGF0YSBzdG9yZSBxdWV1
ZS4gVGhpcyBjb2RlIGRpZCBub3QgbG9vayB0aHJlYWQtc2FmZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VD
bGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAoV0tCdW5kbGVQYWdlR2V0
QXBwQ2FjaGVVc2FnZUZvck9yaWdpbik6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDb3B5T3JpZ2lu
c1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKwogMjAyMS0wMy0wNSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5z
SW5NZWRpYUNhY2hlKCkgdG8gcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSBpbnN0ZWFkIG9mIFNl
Y3VyaXR5T3JpZ2luIG9iamVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA1MTNi
M2Q5MmI2OTZkZjZkNTNjNDQ2Yzk4MjliZTZlOThlMjFkYzM1Li4yODJkODMxZDJiYjI3YjNmMThl
Zjc4N2IyYTUzNmY3ZTM4ZTE2MThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBVcGRhdGUgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9yaWdpbnNXaXRoQ2Fj
aGUoKSB0byByZXR1cm4gYSBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gaW5zdGVhZCBvZiBh
IFZlY3RvcjxSZWY8U2VjdXJpdHlPcmlnaW4+PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyODI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcmln
aW5zV2l0aENhY2hlKCkgdG8gcmV0dXJuIGEgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IGlu
c3RlYWQgb2YgYSBWZWN0b3I8UmVmPFNlY3VyaXR5T3JpZ2luPj4uCisgICAgICAgIFVzaW5nIGEg
SGFzaFNldCBtYWtlcyBzdXJlIHdlIGRvIG5vdCByZXR1cm4gZHVwbGljYXRlcyAod2hpY2ggZG8g
b2NjdXIgYXMgcGVyIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIGltcGxlbWVudGF0aW9uKSBhbmQg
bWFrZXMgdHlwaW5nCisgICAgICAgIG1vcmUgY29uc2lzdGVudCB3aXRoIG90aGVyIHNpbWlsYXIg
c3RvcmFnZSBmdW5jdGlvbnMuIFVzaW5nIFNlY3VyaXR5T3JpZ2luRGF0YSBpcyBtb3JlIGxpZ2h0
d2VpZ2h0IGFuZCBzdWZmaWNpZW50IGZvciBvdXIgdXNlIGNhc2VzLgorICAgICAgICBJdCBhbHNv
IHRha2VzIGNhcmUgb2YgYSBGSVhNRSBjb21tZW50IGluIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNo
RGF0YUFuZEFwcGx5IGFib3V0IHN3aXRjaGluZyB0byBTZWN1cml0eU9yaWdpbkRhdGEuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tOgorICAgICAgICAo
K1tXZWJBcHBsaWNhdGlvbkNhY2hlIGRpc2tVc2FnZUZvck9yaWdpbjpdKToKKyAgICAgICAgKCtb
V2ViQXBwbGljYXRpb25DYWNoZSBkZWxldGVDYWNoZUZvck9yaWdpbjpdKToKKyAgICAgICAgKCtb
V2ViQXBwbGljYXRpb25DYWNoZSBvcmlnaW5zV2l0aENhY2hlXSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5tbToKKyAgICAgICAgKC1b
V2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlciB1c2FnZV0pOgorCiAyMDIxLTAzLTA1ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIHVzZSBvZiBD
RlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAppbmRleCA2ODQ2ZmIyZGQzNmUxZGNhZDZlY2M1OTE3NmI1M2IzOThkZGI4
MzM3Li5iMDgwMzBjOWI0MWYyNzFlN2FhMzI3YzNhZTRlYzRmNjMwYTcwNzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpjYWxjdWxhdGVRdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2Fs
Y3VsYXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgaW50NjRf
dCYgdXNhZ2UpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVVc2FnZUZv
ck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgaW50NjRfdCYgdXNhZ2Up
CiB7CiAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rp
b25Db3VudGVyOwogCkBAIC00NDgsNyArNDQ4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6Y2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWcK
ICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRhdGEoKS5kYXRh
YmFzZUlkZW50aWZpZXIoKSk7CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi5kYXRh
YmFzZUlkZW50aWZpZXIoKSk7CiAgICAgaW50IHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCk7CiAK
ICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIGxv
bmcgbG9uZyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmxhdEZpbGVBcmVhU2l6ZSgpCiAgICAg
cmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAotVmVjdG9yPFJlZjxTZWN1cml0eU9yaWdpbj4+IEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpvcmlnaW5zV2l0aENhY2hlKCkKK0hhc2hTZXQ8U2VjdXJpdHlP
cmlnaW5EYXRhPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3JpZ2luc1dpdGhDYWNoZSgpCiB7
CiAgICAgYXV0byB1cmxzID0gbWFuaWZlc3RVUkxzKCk7CiAgICAgaWYgKCF1cmxzKQpAQCAtMTQ3
NSwxMCArMTQ3NSw5IEBAIFZlY3RvcjxSZWY8U2VjdXJpdHlPcmlnaW4+PiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6b3JpZ2luc1dpdGhDYWNoZSgpCiAKICAgICAvLyBNdWx0aXBsZSBtYW5pZmVz
dCBVUkxzIG1pZ2h0IHNoYXJlIHRoZSBzYW1lIFNlY3VyaXR5T3JpZ2luLCBzbyB3ZSBtaWdodCBi
ZSBjcmVhdGluZyBleHRyYSwgd2FzdGVkIG9yaWdpbnMgaGVyZS4KICAgICAvLyBUaGUgY3VycmVu
dCBzY2hlbWEgZG9lc24ndCBhbGxvdyBmb3IgYSBtb3JlIGVmZmljaWVudCB3YXkgb2YgYnVpbGRp
bmcgdGhpcyBsaXN0LgotICAgIFZlY3RvcjxSZWY8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwot
ICAgIG9yaWdpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh1cmxzLT5zaXplKCkpOworICAgIEhh
c2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwogICAgIGZvciAoYXV0byYgdXJsIDog
KnVybHMpCi0gICAgICAgIG9yaWdpbnMudW5jaGVja2VkQXBwZW5kKFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUodXJsKSk7CisgICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVVSTCh1cmwpKTsKICAgICByZXR1cm4gb3JpZ2luczsKIH0KIApAQCAtMTQ5Nyw3ICsxNDk2LDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQWxsQ2FjaGVzKCkKICAgICB2
YWN1dW1EYXRhYmFzZUZpbGUoKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
ZGVsZXRlQ2FjaGVGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2lu
KQordm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBhdXRvIHVybHMg
PSBtYW5pZmVzdFVSTHMoKTsKICAgICBpZiAoIXVybHMpIHsKQEAgLTE1MTgsMTAgKzE1MTcsMTAg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXQKICAgICB9CiB9CiAKLWludDY0X3QgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmRpc2tVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYg
c2VjdXJpdHlPcmlnaW4pCitpbnQ2NF90IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkaXNrVXNh
Z2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKIHsK
ICAgICBpbnQ2NF90IHVzYWdlID0gMDsKLSAgICBjYWxjdWxhdGVVc2FnZUZvck9yaWdpbigmc2Vj
dXJpdHlPcmlnaW4sIHVzYWdlKTsKKyAgICBjYWxjdWxhdGVVc2FnZUZvck9yaWdpbihzZWN1cml0
eU9yaWdpbiwgdXNhZ2UpOwogICAgIHJldHVybiB1c2FnZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApp
bmRleCA4YjAwYWE2NWU0NjM1YzBhODE2NTM1MDc2YTQ4MGRhMDE0NGVhZDFhLi4wMzMwMmU3YjA4
NGEyMDJiYWYxZTNiY2I1MGNlYzlkMmQwNWU3MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtNjMs
NyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmYXVsdE9yaWdpblF1b3RhOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXREZWZhdWx0T3JpZ2luUXVvdGEoaW50NjRfdCBxdW90YSk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjYWxjdWxhdGVVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbios
IGludDY0X3QmIHVzYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbGN1bGF0ZVVzYWdl
Rm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGludDY0X3QmIHVzYWdlKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbGN1bGF0ZVF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiwgaW50NjRfdCYgcXVvdGEpOwogICAgIGJvb2wgY2FsY3VsYXRlUmVtYWluaW5n
U2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0NhY2hlKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwgQXBwbGlj
YXRpb25DYWNoZSosIGludDY0X3QmIHJlbWFpbmluZ1NpemUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBp
bnQ2NF90IHF1b3RhKTsKQEAgLTg2LDE3ICs4NiwxNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGVtcHR5KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVmPFNl
Y3VyaXR5T3JpZ2luPj4gb3JpZ2luc1dpdGhDYWNoZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEhh
c2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zV2l0aENhY2hlKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkZWxldGVBbGxFbnRyaWVzKCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgY29uc29saWRhdGVkIHdpdGggZGVsZXRlQWxsRW50cmllcygpLgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ2FjaGVzKCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgY29uc29saWRhdGVkIHdpdGggZGVsZXRlQ2FjaGVHcm91cCgpLgotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGVsZXRlQ2FjaGVGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4m
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNhY2hlRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGNvbnNv
bGlkYXRlZCB3aXRoIGNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKCkuCi0gICAgV0VCQ09SRV9FWFBP
UlQgaW50NjRfdCBkaXNrVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGRpc2tVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmKTsKIAogICAgIHN0YXRpYyBpbnQ2NF90IHVua25vd25RdW90YSgpIHsgcmV0
dXJuIC0xOyB9CiAgICAgc3RhdGljIGludDY0X3Qgbm9RdW90YSgpIHsgcmV0dXJuIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDYzMmFi
ZGVkN2UyMTU4ZjRmZDFhODE2Y2U5MGRjMzFjZTM5YTM0YzcuLjgyZTYyZDc5YjM1YWVlNWFjNmNi
ZTBhZTIzN2UyYmVhMTI0OGY2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC01MjYsMjAgKzUyNiwx
MiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogCiAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNo
KFtmZXRjaE9wdGlvbnMsIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRp
b24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRp
b25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGlj
YXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpLmlzb2xhdGVkQ29weSgpLCBjYWxs
YmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwg
YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7Ci0KICAgICAgICAgICAg
IFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwotCi0gICAgICAgICAgICAvLyBGSVhNRTogZ2V0T3Jp
Z2luc1dpdGhDYWNoZSBzaG91bGQgcmV0dXJuIGEgY29sbGVjdGlvbiBvZiBTZWN1cml0eU9yaWdp
bkRhdGFzLgotICAgICAgICAgICAgYXV0byBvcmlnaW5zID0gc3RvcmFnZS0+b3JpZ2luc1dpdGhD
YWNoZSgpOwotCi0gICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogc3RvcmFnZS0+b3JpZ2luc1dpdGhDYWNoZSgp
KSB7CiAgICAgICAgICAgICAgICAgdWludDY0X3Qgc2l6ZSA9IGZldGNoT3B0aW9ucy5jb250YWlu
cyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpID8gc3RvcmFnZS0+ZGlza1Vz
YWdlRm9yT3JpZ2luKG9yaWdpbikgOiAwOwotICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhOjpF
bnRyeSBlbnRyeSB7IG9yaWdpbi0+ZGF0YSgpLCBXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlLCBzaXplIH07Ci0KLSAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5l
bnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CisgICAgICAgICAgICAgICAgd2Vic2l0ZURh
dGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgY3Jvc3NUaHJlYWRDb3B5KG9y
aWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHNpemUg
fSk7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zID0gV1RGTW92ZShvcmlnaW5zKSwgd2Vic2l0
ZURhdGEgPSBXVEZNb3ZlKHdlYnNpdGVEYXRhKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0YSA9
IFdURk1vdmUod2Vic2l0ZURhdGEpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0ZURhdGEp
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTk3NCw3ICs5NjYsNyBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
ZGF0YVR5cGVzLCBjb25zdCBWZQogICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4gb3JpZ2luczsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDog
ZGF0YVJlY29yZHMpIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0
YVJlY29yZC5vcmlnaW5zKQotICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbik7Cisg
ICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbikpOwogICAg
ICAgICB9CiAgICAgICAgIAogI2lmIEVOQUJMRShWSURFTykKQEAgLTEwNzAsMTYgKzEwNjIsMTQg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGF0YVJl
Y29yZCA6IGRhdGFSZWNvcmRzKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdp
biA6IGRhdGFSZWNvcmQub3JpZ2lucykKLSAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChvcmln
aW4pOworICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKGNyb3NzVGhyZWFkQ29weShvcmlnaW4p
KTsKICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0Nh
bGxiYWNrKCk7CiAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zID0gV1RGTW92ZShv
cmlnaW5zKSwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+YXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBhcHBsaWNhdGlvbkNhY2hl
RmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNh
Y2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdn
cmVnYXRvcl0gewogICAgICAgICAgICAgYXV0byBzdG9yYWdlID0gV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNh
dGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKLQogICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQotICAgICAgICAgICAgICAgIHN0b3JhZ2UtPmRl
bGV0ZUNhY2hlRm9yT3JpZ2luKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKTsKLQorICAgICAgICAg
ICAgICAgIHN0b3JhZ2UtPmRlbGV0ZUNhY2hlRm9yT3JpZ2luKG9yaWdpbik7CiAgICAgICAgICAg
ICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAg
ICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2so
KTsKICAgICAgICAgICAgIH0pOwpAQCAtMTA5MCw3ICsxMDgwLDcgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywg
Y29uc3QgVmUKICAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9y
aWdpbnM7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRz
KSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3Jp
Z2lucykKLSAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4pOworICAgICAgICAgICAg
ICAgIG9yaWdpbnMuYWRkKGNyb3NzVGhyZWFkQ29weShvcmlnaW4pKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CkBAIC0xMTA4
LDcgKzEwOTgsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZQogICAgICAgICBIYXNoU2V0PFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKICAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQotICAgICAgICAgICAgICAgIG9yaWdp
bnMuYWRkKG9yaWdpbik7CisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoY3Jvc3NUaHJlYWRD
b3B5KG9yaWdpbikpOwogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5h
ZGRQZW5kaW5nQ2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggYzNi
YTVjMzczZmQyMzhjYmQ4NmYxZGUxZjBlMmI0ZTk3ODJmZGU4ZS4uODE4OTYyYzdkZmM0YzU3OWYw
NWVmOTIzOTRlZGQ4NTY1ZGMyYWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAg
LTgxOSw3ICs4MTksNyBAQCB2b2lkIFdLQnVuZGxlUGFnZUNsZWFyQXBwbGljYXRpb25DYWNoZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSkKIAogdm9pZCBXS0J1bmRsZVBhZ2VDbGVhckFwcGxpY2F0aW9u
Q2FjaGVGb3JPcmlnaW4oV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG9yaWdpbikK
IHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlKS0+Y29yZVBhZ2UoKS0+YXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UoKS5kZWxldGVDYWNoZUZvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSkpOworICAg
IFdlYktpdDo6dG9JbXBsKHBhZ2UpLT5jb3JlUGFnZSgpLT5hcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZSgpLmRlbGV0ZUNhY2hlRm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVVSTChVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKG9yaWdpbiktPnN0cmluZygpKSkpOwogfQog
CiB2b2lkIFdLQnVuZGxlUGFnZVNldEFwcENhY2hlTWF4aW11bVNpemUoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIHVpbnQ2NF90IHNpemUpCkBAIC04MjksNyArODI5LDcgQEAgdm9pZCBXS0J1bmRsZVBh
Z2VTZXRBcHBDYWNoZU1heGltdW1TaXplKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCB1aW50NjRfdCBz
aXplKQogCiB1aW50NjRfdCBXS0J1bmRsZVBhZ2VHZXRBcHBDYWNoZVVzYWdlRm9yT3JpZ2luKFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBvcmlnaW4pCiB7Ci0gICAgcmV0dXJuIFdl
YktpdDo6dG9JbXBsKHBhZ2UpLT5jb3JlUGFnZSgpLT5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgp
LmRpc2tVc2FnZUZvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSkpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvSW1wbChwYWdlKS0+Y29yZVBhZ2UoKS0+YXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKS5k
aXNrVXNhZ2VGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c3RyaW5nKCkpKSk7CiB9CiAKIHZvaWQg
V0tCdW5kbGVQYWdlU2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBXS1N0cmluZ1JlZiBvcmlnaW4sIHVpbnQ2NF90IGJ5dGVzKQpAQCAtODUwLDcgKzg1
MCw3IEBAIFdLQXJyYXlSZWYgV0tCdW5kbGVQYWdlQ29weU9yaWdpbnNXaXRoQXBwbGljYXRpb25D
YWNoZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKICAgICBvcmlnaW5JZGVudGlmaWVycy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG9yaWdpbnMuc2l6ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYg
b3JpZ2luIDogb3JpZ2lucykKLSAgICAgICAgb3JpZ2luSWRlbnRpZmllcnMudW5jaGVja2VkQXBw
ZW5kKEFQSTo6U3RyaW5nOjpjcmVhdGUob3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVy
KCkpKTsKKyAgICAgICAgb3JpZ2luSWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3Ry
aW5nOjpjcmVhdGUob3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKSk7CiAKICAgICByZXR1cm4g
V2ViS2l0Ojp0b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUob3JpZ2luSWRlbnRpZmll
cnMpKS5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0KaW5kZXggZGFkNmJk
OTBiZjlmYzVlYjE3Zjc3YTcwNTFhM2VkZDY0MmZmYWY4Ny4uY2FjMGU4YmM2ZjgwNDRhY2U1YWFm
OTRkYzk5MWFhYmU2ZDA5ZTMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCkBAIC0xMTEs
NyArMTExLDcgQEAgKyAodm9pZClzZXREZWZhdWx0T3JpZ2luUXVvdGE6KGxvbmcgbG9uZylzaXpl
CiAKICsgKGxvbmcgbG9uZylkaXNrVXNhZ2VGb3JPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICop
b3JpZ2luCiB7Ci0gICAgcmV0dXJuIHdlYkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkuZGlza1Vz
YWdlRm9yT3JpZ2luKCpbb3JpZ2luIF9jb3JlXSk7CisgICAgcmV0dXJuIHdlYkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlKCkuZGlza1VzYWdlRm9yT3JpZ2luKFtvcmlnaW4gX2NvcmVdLT5kYXRhKCkp
OwogfQogCiArICh2b2lkKWRlbGV0ZUFsbEFwcGxpY2F0aW9uQ2FjaGVzCkBAIC0xMjEsMTMgKzEy
MSwxMyBAQCArICh2b2lkKWRlbGV0ZUFsbEFwcGxpY2F0aW9uQ2FjaGVzCiAKICsgKHZvaWQpZGVs
ZXRlQ2FjaGVGb3JPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7Ci0gICAgd2Vi
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKS5kZWxldGVDYWNoZUZvck9yaWdpbigqW29yaWdpbiBf
Y29yZV0pOworICAgIHdlYkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkuZGVsZXRlQ2FjaGVGb3JP
cmlnaW4oW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CiB9CiAKICsgKE5TQXJyYXkgKilvcmlnaW5z
V2l0aENhY2hlCiB7CiAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkod2ViQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UoKS5vcmlnaW5zV2l0aENhY2hlKCksIFtdIChhdXRvJiBvcmlnaW4pIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2Vi
Q29yZVNlY3VyaXR5T3JpZ2luOm9yaWdpbi5wdHIoKV0pOworICAgICAgICByZXR1cm4gYWRvcHRO
UyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmln
aW46b3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkucHRyKCldKTsKICAgICB9KS5hdXRvcmVsZWFzZSgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5tbQpp
bmRleCA1MjE3NjNkODRjYjI0NzZjZTE5NjczMjA4MTg2ZTQ1NmY0MDlkYjI2Li44ZmM5M2Q5ZTk0
ZTNlNDA1OTkwM2JlZDJlOTJjZDhkNmU1YmVmYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxp
Y2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIubW0KQEAgLTQ5LDcgKzQ5LDcgQEAgLSAoV2ViU2VjdXJp
dHlPcmlnaW4gKilvcmlnaW4KIC0gKHVuc2lnbmVkIGxvbmcgbG9uZyl1c2FnZQogewogICAgIGxv
bmcgbG9uZyB1c2FnZTsKLSAgICBpZiAod2ViQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKS5jYWxj
dWxhdGVVc2FnZUZvck9yaWdpbihbX29yaWdpbiBfY29yZV0sIHVzYWdlKSkKKyAgICBpZiAod2Vi
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKS5jYWxjdWxhdGVVc2FnZUZvck9yaWdpbihbX29yaWdp
biBfY29yZV0tPmRhdGEoKSwgdXNhZ2UpKQogICAgICAgICByZXR1cm4gdXNhZ2U7CiAgICAgcmV0
dXJuIDA7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422443</attachid>
            <date>2021-03-05 15:38:26 -0800</date>
            <delta_ts>2021-03-05 17:24:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222828-20210305153825.patch</filename>
            <type>text/plain</type>
            <size>20625</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjMzYTE1ZDJmOWM1NzIw
YmQ3OWU2NzUwYzMyZTRmYmU5MzI5MGI2OC4uNDQxNjE4MzlmMmU0NDAxM2ZmNWQxMGNmOTkwNzY4
ODYyM2RkYjhhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTAzLTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpvcmlnaW5zV2l0aENhY2hlKCkgdG8gcmV0dXJuIGEgSGFzaFNldDxTZWN1
cml0eU9yaWdpbkRhdGE+IGluc3RlYWQgb2YgYSBWZWN0b3I8UmVmPFNlY3VyaXR5T3JpZ2luPj4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3JpZ2luc1dpdGhDYWNoZSgpIHRvIHJldHVybiBhIEhh
c2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBpbnN0ZWFkIG9mIGEgVmVjdG9yPFJlZjxTZWN1cml0
eU9yaWdpbj4+LgorICAgICAgICBVc2luZyBhIEhhc2hTZXQgbWFrZXMgc3VyZSB3ZSBkbyBub3Qg
cmV0dXJuIGR1cGxpY2F0ZXMgKHdoaWNoIGRvIG9jY3VyIGFzIHBlciBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZSBpbXBsZW1lbnRhdGlvbikgYW5kIG1ha2VzIHR5cGluZworICAgICAgICBtb3JlIGNv
bnNpc3RlbnQgd2l0aCBvdGhlciBzaW1pbGFyIHN0b3JhZ2UgZnVuY3Rpb25zLiBVc2luZyBTZWN1
cml0eU9yaWdpbkRhdGEgaXMgbW9yZSBsaWdodHdlaWdodCBhbmQgc3VmZmljaWVudCBmb3Igb3Vy
IHVzZSBjYXNlcy4KKyAgICAgICAgSXQgYWxzbyB0YWtlcyBjYXJlIG9mIGEgRklYTUUgY29tbWVu
dCBpbiBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseSBhYm91dCBzd2l0Y2hpbmcg
dG8gU2VjdXJpdHlPcmlnaW5EYXRhLgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpjYWxjdWxhdGVVc2FnZUZvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3JpZ2luc1dpdGhDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRpc2tVc2FnZUZvck9yaWdp
bik6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6
CisKIDIwMjEtMDMtMDUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtQYXltZW50IFJlcXVlc3RdIGlmIGByZXF1ZXN0U2hpcHBpbmc6IGZhbHNlYCB0aGVuIHdl
IHNob3VsZCBub3Qgc2hvdyBhbnkgYFBheW1lbnRTaGlwcGluZ09wdGlvbmAgaW4gdGhlIEFwcGxl
IFBheSBzaGVldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZGVjZDBjZDJkZjRmZjY5MDY4ZmFhMWVmYTJmYzM3ZGQ2
MWIxNjY3Li44M2I3NjYxYWNlMDlmYmNlYjkwZWQ2YTkwNGEyMzY4MzYzN2EzYmRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTAzLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcmlnaW5z
V2l0aENhY2hlKCkgdG8gcmV0dXJuIGEgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IGluc3Rl
YWQgb2YgYSBWZWN0b3I8UmVmPFNlY3VyaXR5T3JpZ2luPj4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjgyOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6b3JpZ2luc1dpdGhDYWNoZSgpIHRvIHJldHVybiBhIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5E
YXRhPiBpbnN0ZWFkIG9mIGEgVmVjdG9yPFJlZjxTZWN1cml0eU9yaWdpbj4+LgorICAgICAgICBV
c2luZyBhIEhhc2hTZXQgbWFrZXMgc3VyZSB3ZSBkbyBub3QgcmV0dXJuIGR1cGxpY2F0ZXMgKHdo
aWNoIGRvIG9jY3VyIGFzIHBlciBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSBpbXBsZW1lbnRhdGlv
bikgYW5kIG1ha2VzIHR5cGluZworICAgICAgICBtb3JlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBz
aW1pbGFyIHN0b3JhZ2UgZnVuY3Rpb25zLiBVc2luZyBTZWN1cml0eU9yaWdpbkRhdGEgaXMgbW9y
ZSBsaWdodHdlaWdodCBhbmQgc3VmZmljaWVudCBmb3Igb3VyIHVzZSBjYXNlcy4KKyAgICAgICAg
SXQgYWxzbyB0YWtlcyBjYXJlIG9mIGEgRklYTUUgY29tbWVudCBpbiBXZWJzaXRlRGF0YVN0b3Jl
OjpmZXRjaERhdGFBbmRBcHBseSBhYm91dCBzd2l0Y2hpbmcgdG8gU2VjdXJpdHlPcmlnaW5EYXRh
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyB1cGRhdGVzIFdlYnNpdGVEYXRhU3RvcmU6OmZl
dGNoRGF0YUFuZEFwcGx5KCkgdG8gY3Jvc3NUaHJlYWRDb3B5KCkgdGhlIHNlY3VyaXR5T3JpZ2lu
RGF0YSBiZWZvcmUgc2VuZGluZyB0aGVtIGZyb20KKyAgICAgICAgdGhlIGRhdGEgc3RvcmUgcXVl
dWUgdG8gdGhlIG1haW4gdGhyZWFkLiBUaGUgcHJldmlvdXMgY29kZSBhcyBzZW5kaW5nIFNlY3Vy
aXR5T3JpZ2lucyBhbmQgV2Vic2l0ZURhdGEgdG8gdGhlIG1haW4gdGhyZWFkIHdpdGhvdXQKKyAg
ICAgICAgYW55IGlzb2xhdGVkIGNvcHksIHdoaWNoIHdhcyBmcmFnaWxlIGFuZCB3b3VsZCBub3Qg
aGF2ZSBiZWVuIHRocmVhZC1zYWZlIGlmIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcmlnaW5z
V2l0aENhY2hlKCkgaGFkIGNhY2hlZAorICAgICAgICB0aGUgb3JpZ2lucyBpdCByZXR1cm5lZCBm
b3IgZXhhbXBsZS4KKworICAgICAgICBBbHNvIHVwZGF0ZSBXZWJzaXRlRGF0YVN0b3JlOjpyZW1v
dmVEYXRhKCkgdG8gbWFrZSBzdXJlIHdlIGNyb3NzVGhyZWFkQ29weSgpIHRoZSBvcmlnaW5zIGJl
Zm9yZSBzZW5kaW5nIHRoZW0gZnJvbSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgdG8gdGhlIGRh
dGEgc3RvcmUgcXVldWUuIFRoaXMgY29kZSBkaWQgbm90IGxvb2sgdGhyZWFkLXNhZmUuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAo
V0tCdW5kbGVQYWdlQ2xlYXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKFdL
QnVuZGxlUGFnZUdldEFwcENhY2hlVXNhZ2VGb3JPcmlnaW4pOgorICAgICAgICAoV0tCdW5kbGVQ
YWdlQ29weU9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZSk6CisKIDIwMjEtMDMtMDUgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gQ2xl
YW4gdXAgR1RLLXNwZWNpZmljIHRleHQgY2hlY2tlciBzdHVmZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDUxM2IzZDkyYjY5NmRmNmQ1M2M0NDZjOTgyOWJlNmU5OGUyMWRjMzUuLjI4
MmQ4MzFkMmJiMjdiM2YxOGVmNzg3YjJhNTM2ZjdlMzhlMTYxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0wMy0wNSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6b3JpZ2luc1dpdGhDYWNoZSgpIHRvIHJldHVybiBhIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5E
YXRhPiBpbnN0ZWFkIG9mIGEgVmVjdG9yPFJlZjxTZWN1cml0eU9yaWdpbj4+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI4MjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6Om9yaWdpbnNXaXRoQ2FjaGUoKSB0byByZXR1cm4gYSBIYXNoU2V0PFNlY3Vy
aXR5T3JpZ2luRGF0YT4gaW5zdGVhZCBvZiBhIFZlY3RvcjxSZWY8U2VjdXJpdHlPcmlnaW4+Pi4K
KyAgICAgICAgVXNpbmcgYSBIYXNoU2V0IG1ha2VzIHN1cmUgd2UgZG8gbm90IHJldHVybiBkdXBs
aWNhdGVzICh3aGljaCBkbyBvY2N1ciBhcyBwZXIgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgaW1w
bGVtZW50YXRpb24pIGFuZCBtYWtlcyB0eXBpbmcKKyAgICAgICAgbW9yZSBjb25zaXN0ZW50IHdp
dGggb3RoZXIgc2ltaWxhciBzdG9yYWdlIGZ1bmN0aW9ucy4gVXNpbmcgU2VjdXJpdHlPcmlnaW5E
YXRhIGlzIG1vcmUgbGlnaHR3ZWlnaHQgYW5kIHN1ZmZpY2llbnQgZm9yIG91ciB1c2UgY2FzZXMu
CisgICAgICAgIEl0IGFsc28gdGFrZXMgY2FyZSBvZiBhIEZJWE1FIGNvbW1lbnQgaW4gV2Vic2l0
ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkgYWJvdXQgc3dpdGNoaW5nIHRvIFNlY3VyaXR5
T3JpZ2luRGF0YS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2Fj
aGUubW06CisgICAgICAgICgrW1dlYkFwcGxpY2F0aW9uQ2FjaGUgZGlza1VzYWdlRm9yT3JpZ2lu
Ol0pOgorICAgICAgICAoK1tXZWJBcHBsaWNhdGlvbkNhY2hlIGRlbGV0ZUNhY2hlRm9yT3JpZ2lu
Ol0pOgorICAgICAgICAoK1tXZWJBcHBsaWNhdGlvbkNhY2hlIG9yaWdpbnNXaXRoQ2FjaGVdKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2Vy
Lm1tOgorICAgICAgICAoLVtXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyIHVzYWdlXSk6
CisKIDIwMjEtMDMtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2Uo
KSBpbiBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDY4NDZmYjJkZDM2ZTFkY2FkNmVj
YzU5MTc2YjUzYjM5OGRkYjgzMzcuLmIwODAzMGM5YjQxZjI3MWU3YWEzMjdjM2FlNGVjNGY2MzBh
NzA3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBvcmlnCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBpbnQ2NF90JiB1c2FnZSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2lu
LCBpbnQ2NF90JiB1c2FnZSkKIHsKICAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRv
Q291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAKQEAgLTQ0OCw3ICs0NDgsNyBAQCBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbiogb3JpZwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9P
SykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9y
aWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRl
eHQoMSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICBpbnQgcmVzdWx0ID0gc3Rh
dGVtZW50LnN0ZXAoKTsKIAogICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JPVykgewpAQCAtMTQ2
Nyw3ICsxNDY3LDcgQEAgbG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmbGF0Rmls
ZUFyZWFTaXplKCkKICAgICByZXR1cm4gdG90YWxTaXplOwogfQogCi1WZWN0b3I8UmVmPFNlY3Vy
aXR5T3JpZ2luPj4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9yaWdpbnNXaXRoQ2FjaGUoKQor
SGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcmln
aW5zV2l0aENhY2hlKCkKIHsKICAgICBhdXRvIHVybHMgPSBtYW5pZmVzdFVSTHMoKTsKICAgICBp
ZiAoIXVybHMpCkBAIC0xNDc1LDEwICsxNDc1LDkgQEAgVmVjdG9yPFJlZjxTZWN1cml0eU9yaWdp
bj4+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcmlnaW5zV2l0aENhY2hlKCkKIAogICAgIC8v
IE11bHRpcGxlIG1hbmlmZXN0IFVSTHMgbWlnaHQgc2hhcmUgdGhlIHNhbWUgU2VjdXJpdHlPcmln
aW4sIHNvIHdlIG1pZ2h0IGJlIGNyZWF0aW5nIGV4dHJhLCB3YXN0ZWQgb3JpZ2lucyBoZXJlLgog
ICAgIC8vIFRoZSBjdXJyZW50IHNjaGVtYSBkb2Vzbid0IGFsbG93IGZvciBhIG1vcmUgZWZmaWNp
ZW50IHdheSBvZiBidWlsZGluZyB0aGlzIGxpc3QuCi0gICAgVmVjdG9yPFJlZjxTZWN1cml0eU9y
aWdpbj4+IG9yaWdpbnM7Ci0gICAgb3JpZ2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHVybHMt
PnNpemUoKSk7CisgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CiAgICAg
Zm9yIChhdXRvJiB1cmwgOiAqdXJscykKLSAgICAgICAgb3JpZ2lucy51bmNoZWNrZWRBcHBlbmQo
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKKyAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tVVJMKHVybCkpOwogICAgIHJldHVybiBvcmlnaW5zOwogfQogCkBA
IC0xNDk3LDcgKzE0OTYsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVB
bGxDYWNoZXMoKQogICAgIHZhY3V1bURhdGFiYXNlRmlsZSgpOwogfQogCi12b2lkIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVDYWNoZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVD
YWNoZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKQog
ewogICAgIGF1dG8gdXJscyA9IG1hbmlmZXN0VVJMcygpOwogICAgIGlmICghdXJscykgewpAQCAt
MTUxOCwxMCArMTUxNywxMCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVD
YWNoZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdAogICAgIH0KIH0KIAot
aW50NjRfdCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGlza1VzYWdlRm9yT3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKK2ludDY0X3QgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmRpc2tVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luKQogewogICAgIGludDY0X3QgdXNhZ2UgPSAwOwotICAgIGNhbGN1bGF0ZVVz
YWdlRm9yT3JpZ2luKCZzZWN1cml0eU9yaWdpbiwgdXNhZ2UpOworICAgIGNhbGN1bGF0ZVVzYWdl
Rm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luLCB1c2FnZSk7CiAgICAgcmV0dXJuIHVzYWdlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oCmluZGV4IDhiMDBhYTY1ZTQ2MzVjMGE4MTY1MzUwNzZhNDgwZGEwMTQ0
ZWFkMWEuLjAzMzAyZTdiMDg0YTIwMmJhZjFlM2JjYjUwY2VjOWQyZDA1ZTcxM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIGludDY0X3QgZGVmYXVs
dE9yaWdpblF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0T3JpZ2luUXVvdGE7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERlZmF1bHRPcmlnaW5RdW90YShpbnQ2NF90IHF1b3Rh
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCYgdXNhZ2UpOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgY2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgaW50
NjRfdCYgdXNhZ2UpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FsY3VsYXRlUXVvdGFGb3JP
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBpbnQ2NF90JiBxdW90YSk7CiAgICAgYm9vbCBj
YWxjdWxhdGVSZW1haW5pbmdTaXplRm9yT3JpZ2luRXhjbHVkaW5nQ2FjaGUoY29uc3QgU2VjdXJp
dHlPcmlnaW4mLCBBcHBsaWNhdGlvbkNhY2hlKiwgaW50NjRfdCYgcmVtYWluaW5nU2l6ZSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbiosIGludDY0X3QgcXVvdGEpOwpAQCAtODYsMTcgKzg2LDE3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW1wdHkoKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3RvcjxSZWY8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zV2l0aENhY2hlKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnNXaXRoQ2Fj
aGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoKTsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjb25zb2xpZGF0ZWQgd2l0aCBkZWxldGVBbGxFbnRy
aWVzKCkuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVBbGxDYWNoZXMoKTsKIAogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjb25zb2xpZGF0ZWQgd2l0aCBkZWxldGVDYWNoZUdy
b3VwKCkuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDYWNoZUZvck9yaWdpbihjb25z
dCBTZWN1cml0eU9yaWdpbiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ2FjaGVG
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CiAKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgY29uc29saWRhdGVkIHdpdGggY2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW4oKS4K
LSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGRpc2tVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgZGlza1VzYWdlRm9yT3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgc3RhdGljIGludDY0X3QgdW5r
bm93blF1b3RhKCkgeyByZXR1cm4gLTE7IH0KICAgICBzdGF0aWMgaW50NjRfdCBub1F1b3RhKCkg
eyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKaW5kZXggNmFiOTc4NDk5NTA5YjkyMDg1ZjRiMTllMzgxN2UzMDJiM2IyZmMzNC4uYzA3
NGY0YzhlZDBhODQxOTU2MThkZGYzZDJlODVjMGEwNTlhYmUyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
QEAgLTUzMiwyMCArNTMyLDEyIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5k
QXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAKICAgICAgICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW2ZldGNoT3B0aW9ucywgYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpLmlzb2xhdGVk
Q29weSgpLCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25m
aWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCkuaXNv
bGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAgICAgYXV0byBzdG9y
YWdlID0gV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LCBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
KTsKLQogICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7Ci0KLSAgICAgICAgICAg
IC8vIEZJWE1FOiBnZXRPcmlnaW5zV2l0aENhY2hlIHNob3VsZCByZXR1cm4gYSBjb2xsZWN0aW9u
IG9mIFNlY3VyaXR5T3JpZ2luRGF0YXMuCi0gICAgICAgICAgICBhdXRvIG9yaWdpbnMgPSBzdG9y
YWdlLT5vcmlnaW5zV2l0aENhY2hlKCk7Ci0KLSAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2lu
IDogb3JpZ2lucykgeworICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBzdG9yYWdlLT5v
cmlnaW5zV2l0aENhY2hlKCkpIHsKICAgICAgICAgICAgICAgICB1aW50NjRfdCBzaXplID0gZmV0
Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcykg
PyBzdG9yYWdlLT5kaXNrVXNhZ2VGb3JPcmlnaW4ob3JpZ2luKSA6IDA7Ci0gICAgICAgICAgICAg
ICAgV2Vic2l0ZURhdGE6OkVudHJ5IGVudHJ5IHsgb3JpZ2luLT5kYXRhKCksIFdlYnNpdGVEYXRh
VHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHNpemUgfTsKLQotICAgICAgICAgICAg
ICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKKyAgICAgICAg
ICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBj
cm9zc1RocmVhZENvcHkob3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZSwgc2l6ZSB9KTsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIG9yaWdpbnMgPSBXVEZNb3Zl
KG9yaWdpbnMpLCB3ZWJzaXRlRGF0YSA9IFdURk1vdmUod2Vic2l0ZURhdGEpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0
b3IsIHdlYnNpdGVEYXRhID0gV1RGTW92ZSh3ZWJzaXRlRGF0YSldKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RG
TW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtOTgw
LDcgKzk3Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlCiAgICAgICAgIEhhc2hTZXQ8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwogICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewogICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBvcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpCi0gICAgICAgICAgICAgICAgb3JpZ2lu
cy5hZGQob3JpZ2luKTsKKyAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChjcm9zc1RocmVhZENv
cHkob3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAjaWYgRU5BQkxFKFZJREVPKQpAQCAt
MTA3NiwxNiArMTA2OCwxNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZQogICAgICAgICBIYXNo
U2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKICAgICAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQotICAgICAgICAgICAgICAg
IG9yaWdpbnMuYWRkKG9yaWdpbik7CisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoY3Jvc3NU
aHJlYWRDb3B5KG9yaWdpbikpOwogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKICAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW29y
aWdpbnMgPSBXVEZNb3ZlKG9yaWdpbnMpLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9j
b25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCks
IGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRp
b24tPmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKS5pc29sYXRlZENv
cHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBhdXRvIHN0b3JhZ2UgPSBX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOwotCiAg
ICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCi0gICAgICAgICAg
ICAgICAgc3RvcmFnZS0+ZGVsZXRlQ2FjaGVGb3JPcmlnaW4ob3JpZ2luLnNlY3VyaXR5T3JpZ2lu
KCkpOwotCisgICAgICAgICAgICAgICAgc3RvcmFnZS0+ZGVsZXRlQ2FjaGVGb3JPcmlnaW4ob3Jp
Z2luKTsKICAgICAgICAgICAgIFdURjo6UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92
ZVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7CkBAIC0xMDk2LDcgKzEwODYsNyBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZQogICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVj
b3JkIDogZGF0YVJlY29yZHMpIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2lu
IDogZGF0YVJlY29yZC5vcmlnaW5zKQotICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdp
bik7CisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbikp
OwogICAgICAgICB9CiAKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2Fs
bGJhY2soKTsKQEAgLTExMTQsNyArMTEwNCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVt
b3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlCiAg
ICAgICAgIEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpCi0gICAg
ICAgICAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luKTsKKyAgICAgICAgICAgICAgICBvcmlnaW5z
LmFkZChjcm9zc1RocmVhZENvcHkob3JpZ2luKSk7CiAgICAgICAgIH0KIAogICAgICAgICBjYWxs
YmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAppbmRleCBjM2JhNWMzNzNmZDIzOGNiZDg2ZjFkZTFmMGUyYjRlOTc4MmZkZThlLi44
MTg5NjJjN2RmYzRjNTc5ZjA1ZWY5MjM5NGVkZDg1NjVkYzJhYmI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcApAQCAtODE5LDcgKzgxOSw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlQ2xlYXJB
cHBsaWNhdGlvbkNhY2hlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogCiB2b2lkIFdLQnVuZGxlUGFn
ZUNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tT
dHJpbmdSZWYgb3JpZ2luKQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2UpLT5jb3JlUGFnZSgp
LT5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpLmRlbGV0ZUNhY2hlRm9yT3JpZ2luKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdpbikt
PnN0cmluZygpKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPmFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlKCkuZGVsZXRlQ2FjaGVGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tVVJMKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+
c3RyaW5nKCkpKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0QXBwQ2FjaGVNYXhpbXVtU2l6
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgdWludDY0X3Qgc2l6ZSkKQEAgLTgyOSw3ICs4MjksNyBA
QCB2b2lkIFdLQnVuZGxlUGFnZVNldEFwcENhY2hlTWF4aW11bVNpemUoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIHVpbnQ2NF90IHNpemUpCiAKIHVpbnQ2NF90IFdLQnVuZGxlUGFnZUdldEFwcENhY2hl
VXNhZ2VGb3JPcmlnaW4oV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG9yaWdpbikK
IHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocGFnZSktPmNvcmVQYWdlKCktPmFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlKCkuZGlza1VzYWdlRm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdpbiktPnN0cmluZygpKSk7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHBhZ2UpLT5jb3JlUGFnZSgpLT5hcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZSgpLmRpc2tVc2FnZUZvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21VUkwoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmco
KSkpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG9yaWdpbiwgdWludDY0X3QgYnl0
ZXMpCkBAIC04NTAsNyArODUwLDcgQEAgV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5T3JpZ2lu
c1dpdGhBcHBsaWNhdGlvbkNhY2hlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgIG9yaWdpbklk
ZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOwogCiAgICAg
Zm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQotICAgICAgICBvcmlnaW5JZGVudGlm
aWVycy51bmNoZWNrZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShvcmlnaW4tPmRhdGEoKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSkpOworICAgICAgICBvcmlnaW5JZGVudGlmaWVycy51bmNoZWNr
ZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkp
KTsKIAogICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShvcmlnaW5JZGVudGlmaWVycykpLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNo
ZS5tbQppbmRleCBkYWQ2YmQ5MGJmOWZjNWViMTdmNzdhNzA1MWEzZWRkNjQyZmZhZjg3Li5jYWMw
ZThiYzZmODA0NGFjZTVhYWY5NGRjOTkxYWFiZTZkMDllMzE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9u
Q2FjaGUubW0KQEAgLTExMSw3ICsxMTEsNyBAQCArICh2b2lkKXNldERlZmF1bHRPcmlnaW5RdW90
YToobG9uZyBsb25nKXNpemUKIAogKyAobG9uZyBsb25nKWRpc2tVc2FnZUZvck9yaWdpbjooV2Vi
U2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKLSAgICByZXR1cm4gd2ViQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UoKS5kaXNrVXNhZ2VGb3JPcmlnaW4oKltvcmlnaW4gX2NvcmVdKTsKKyAgICByZXR1
cm4gd2ViQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKS5kaXNrVXNhZ2VGb3JPcmlnaW4oW29yaWdp
biBfY29yZV0tPmRhdGEoKSk7CiB9CiAKICsgKHZvaWQpZGVsZXRlQWxsQXBwbGljYXRpb25DYWNo
ZXMKQEAgLTEyMSwxMyArMTIxLDEzIEBAICsgKHZvaWQpZGVsZXRlQWxsQXBwbGljYXRpb25DYWNo
ZXMKIAogKyAodm9pZClkZWxldGVDYWNoZUZvck9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilv
cmlnaW4KIHsKLSAgICB3ZWJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpLmRlbGV0ZUNhY2hlRm9y
T3JpZ2luKCpbb3JpZ2luIF9jb3JlXSk7CisgICAgd2ViQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uo
KS5kZWxldGVDYWNoZUZvck9yaWdpbihbb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsKIH0KIAogKyAo
TlNBcnJheSAqKW9yaWdpbnNXaXRoQ2FjaGUKIHsKICAgICByZXR1cm4gY3JlYXRlTlNBcnJheSh3
ZWJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpLm9yaWdpbnNXaXRoQ2FjaGUoKSwgW10gKGF1dG8m
IG9yaWdpbikgewotICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFs
bG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luLnB0cigpXSk7CisgICAg
ICAgIHJldHVybiBhZG9wdE5TKFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdl
YkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5wdHIoKV0pOwogICAg
IH0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hl
UXVvdGFNYW5hZ2VyLm1tCmluZGV4IDUyMTc2M2Q4NGNiMjQ3NmNlMTk2NzMyMDgxODZlNDU2ZjQw
OWRiMjYuLjhmYzkzZDllOTRlM2U0MDU5OTAzYmVkMmU5MmNkOGQ2ZTViZWZiNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9u
Q2FjaGVRdW90YU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5tbQpAQCAtNDksNyArNDks
NyBAQCAtIChXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogLSAodW5zaWduZWQgbG9uZyBsb25n
KXVzYWdlCiB7CiAgICAgbG9uZyBsb25nIHVzYWdlOwotICAgIGlmICh3ZWJBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZSgpLmNhbGN1bGF0ZVVzYWdlRm9yT3JpZ2luKFtfb3JpZ2luIF9jb3JlXSwgdXNh
Z2UpKQorICAgIGlmICh3ZWJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpLmNhbGN1bGF0ZVVzYWdl
Rm9yT3JpZ2luKFtfb3JpZ2luIF9jb3JlXS0+ZGF0YSgpLCB1c2FnZSkpCiAgICAgICAgIHJldHVy
biB1c2FnZTsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggMDhkZDQwMWViNzNkODVlMGYzY2U1ZjIzNmM5
YzA2ZmY2YTRkNmM1OS4uNTExYTkyYjcyZDFjYTBkMjMzZDQ5MWMzMDAxOTYzNDMxY2M2NGQyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAK
QEAgLTE2MCw3ICsxNjAsNyBAQCBIUkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OmRpc2tVc2Fn
ZUZvck9yaWdpbihJV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgbG9uZwogICAgIGlmICghd2Vi
U2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICAqc2l6ZSA9IHN0
b3JhZ2UoKS5kaXNrVXNhZ2VGb3JPcmlnaW4oKndlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9y
aWdpbigpKTsKKyAgICAqc2l6ZSA9IHN0b3JhZ2UoKS5kaXNrVXNhZ2VGb3JPcmlnaW4od2ViU2Vj
dXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBIUkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OmRl
bGV0ZUNhY2hlRm9yT3JpZ2luKElXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgIGlmICgh
d2ViU2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBzdG9yYWdl
KCkuZGVsZXRlQ2FjaGVGb3JPcmlnaW4oKndlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdp
bigpKTsKKyAgICBzdG9yYWdlKCkuZGVsZXRlQ2FjaGVGb3JPcmlnaW4od2ViU2VjdXJpdHlPcmln
aW4tPnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAg
LTE5NSw3ICsxOTUsNyBAQCBIUkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRo
Q2FjaGUoSVByb3BlcnR5QmFnKiogb3JpZ2lucykKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJy
YXlSZWY+IGFycmF5SXRlbSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgY29yZU9yaWdpbnMuc2l6ZSgpLCAmTWFyc2hhbGxpbmdIZWxwZXJzOjprSVVu
a25vd25BcnJheUNhbGxCYWNrcykpOwogCiAgICAgZm9yIChhdXRvJiBjb3JlT3JpZ2luIDogY29y
ZU9yaWdpbnMpCi0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheUl0ZW0uZ2V0KCksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVJbnN0YW5jZShj
b3JlT3JpZ2luLnB0cigpKSkpOworICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXlJdGVt
LmdldCgpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
SW5zdGFuY2UoY29yZU9yaWdpbi5zZWN1cml0eU9yaWdpbigpLnB0cigpKSkpOwogCiAgICAgUmV0
YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKAogICAg
ICAgICBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
</data>
<flag name="commit-queue"
          id="441541"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>