<?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>196827</bug_id>
          
          <creation_ts>2019-04-11 12:42:54 -0700</creation_ts>
          <short_desc>Take an assertion if there is open database connection</short_desc>
          <delta_ts>2019-05-20 08:56:17 -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>CONFIGURATION CHANGED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1526434</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-11 12:42:54 -0700</bug_when>
    <thetext>Currently network process and web process ask for an assertion when transactionInProgressCount is not zero, and this value is changed in many places where there is a database activity on an open database connection. This could be error-prone and slow. Why don&apos;t we just count the open databases instead of running database operations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526440</commentid>
    <comment_count>1</comment_count>
      <attachid>367234</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-11 13:04:41 -0700</bug_when>
    <thetext>Created attachment 367234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526441</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-11 13:05:31 -0700</bug_when>
    <thetext>My understanding was that it is OK to suspend while databases are open. It is only not OK when there are pending transactions because the database file is locked when there is an operation running.

I believe holding an assertion whenever there is an open database would be a significant power regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526442</commentid>
    <comment_count>3</comment_count>
      <attachid>367234</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-11 13:06:22 -0700</bug_when>
    <thetext>Comment on attachment 367234
Patch

r- due to my earlier comments. If my understanding is wrong somehow, let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526450</commentid>
    <comment_count>4</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-11 13:29:16 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; My understanding was that it is OK to suspend while databases are open. It
&gt; is only not OK when there are pending transactions because the database file
&gt; is locked when there is an operation running.
&gt; 
&gt; I believe holding an assertion whenever there is an open database would be a
&gt; significant power regression.

I thought about this. If this is the case, why do we closeAllDatabases when ProcessWillSuspendImminently? We could just let the running transaction be finished or interrupted?

Also, if this causes big power regression, shouldn&apos;t we find all the places that could have database connection open for a long time but not actually doing anything and close them? I was told we are not supposed to keep open database connection when there is no database activity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526488</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-04-11 15:19:34 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; My understanding was that it is OK to suspend while databases are open. 

Actually simply having an open sqlite3* connection that isn&apos;t doing thing makes it so we cannot suspend. *sigh*

That said, I agree with your power observation here and Sihui and I discussed a good way forward.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367234</attachid>
            <date>2019-04-11 13:04:41 -0700</date>
            <delta_ts>2019-04-11 13:06:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196827-20190411130440.patch</filename>
            <type>text/plain</type>
            <size>31867</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTc2MmJmNDhiNDRlMGVl
N2NhMmU5NmViYTE0NzhlODk2YjllNGFjMy4uM2ZiNzUyZjQzOTJiMDJhNjBkNzBjMGFkOTRlM2Rl
Y2Y2N2YxYzE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE5LTA0LTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFRha2UgYW4gYXNzZXJ0aW9u
IGlmIHRoZXJlIGlzIG9wZW4gZGF0YWJhc2UgY29ubmVjdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2ODI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHJhY2tpbmcgb3BlbiBkYXRhYmFzZSBjb25u
ZWN0aW9ucyBpbnN0ZWFkIG9mIGVhY2ggb25nb2luZyBkYXRhYmFzZSBhY3Rpdml0eSBvbiBlYWNo
IG9wZW4gZGF0YWJhc2UgY29ubmVjdGlvbiBpcworICAgICAgICBlYXNpZXIgdG8gdW5kZXJzdGFu
ZCBhbmQgbGVzcyBlcnJvci1wcm9uZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5k
VmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppbmNyZW1lbnRhbFZhY3V1bUlm
TmVlZGVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjps
b2FkTWFuaWZlc3RIb3N0SGFzaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpjYWNoZUdyb3VwRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVF1b3RhRm9yT3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVVc2Fn
ZUZvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
Y2FsY3VsYXRlUmVtYWluaW5nU2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0NhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZVVwZGF0ZWRRdW90YUZvck9y
aWdpbik6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZXhlY3V0
ZVNRTENvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnZlcmlmeVNjaGVtYVZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZXhlY3V0ZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnN0b3JlVXBkYXRlZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmVuc3VyZU9yaWdpblJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjptYW5pZmVzdFVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUNhY2hlR3JvdXBSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUNhY2hlR3JvdXApOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnZhY3V1bURhdGFiYXNlRmlsZSk6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQu
bW06CisgICAgICAgIChXZWJDb3JlOjpXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ6Ondp
bGxCZWdpbkRhdGFiYXNlQWN0aXZpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTUUxpdGVE
YXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpZEZpbmlzaERhdGFiYXNlQWN0aXZpdGllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OndpbGxCZWdpbkZp
cnN0VHJhbnNhY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50OjpkaWRGaW5pc2hMYXN0VHJhbnNhY3Rpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZTo6dXNlV0FMSm91cm5hbE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2U6OmNsb3NlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6c2V0Q2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aW5jcmVtZW50T3Bl
bkRhdGFiYXNlc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tl
cjo6ZGVjcmVtZW50T3BlbkRhdGFiYXNlc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlVHJhY2tlcjo6aW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1l
bnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZVRyYWNrZXI6Omhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXI6OlNR
TGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyOjp+U1FMaXRl
VHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
VHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9u
Ojpjb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb246OnJvbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uOjpzdG9wKToKKwogMjAxOS0w
NC0xMSAgUGFibG8gU2FhdmVkcmEgIDxwc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
V1BFXSBCdWlsZCBlcnJvciB3aXRoIEVOQUJMRV9WSURFTz1PRkYgYWZ0ZXIgcjI0NDA3OApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBjNjg4YmExOWFkY2RiMTMxZTJmZjk3MzRkOWU0YmM3OWFlYTkzMjkyLi4yNTE4NjY1
NzQxZWNiODEzNjk3ZmVlOWE3MDkxOTI5NjY3MWJkZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDE5LTA0LTExICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAg
ICAgIFRha2UgYW4gYXNzZXJ0aW9uIGlmIHRoZXJlIGlzIG9wZW4gZGF0YWJhc2UgY29ubmVjdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2ODI3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyOjp3aWxsQmVnaW5EYXRhYmFzZUFjdGl2aXRpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRpZEZpbmlzaERhdGFiYXNlQWN0
aXZpdGllcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6d2ls
bEJlZ2luRmlyc3RUcmFuc2FjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNR
TGl0ZURhdGFiYXNlVHJhY2tlcjo6ZGlkRmluaXNoTGFzdFRyYW5zYWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBTaGFyZWQvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg6CisKIDIwMTktMDQt
MTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9u
KHIyNDQxNDQpIFByb2Nlc3NTd2FwLlJldXNlU3VzcGVuZGVkUHJvY2Vzc0xvYWRIVE1MU3RyaW5n
IEFQSSB0ZXN0IGlzIGZsYWt5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDM0ZTIwYTcwNmRmNTY2
ZjI1MjM1MzEwNDVlNGFlNDExYTIwMDFlZGIuLjE5ZmExNzIzMTc0OTFkYWY4NTU2NmQ5OGQwNjY0
YzM4ZjY5NTJkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTkt
MDQtMTEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgVGFrZSBh
biBhc3NlcnRpb24gaWYgdGhlcmUgaXMgb3BlbiBkYXRhYmFzZSBjb25uZWN0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTY4MjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFn
ZUFyZWFTeW5jLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFTeW5jOjpvcGVuRGF0
YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYVN5bmM6OnN5bmMpOgorICAgICAg
ICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
VHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VU
cmFja2VyOjpzeW5jSW1wb3J0T3JpZ2luSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY1NldE9yaWdpbkRldGFpbHMpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbik6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpkYXRhYmFzZVBhdGhGb3JPcmlnaW4pOgorCiAyMDE5LTA0
LTA4ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW0NN
YWtlXVtXaW5DYWlyb10gU2VwYXJhdGUgY29waWVkIGhlYWRlcnMgaW50byBkaWZmZXJlbnQgZGly
ZWN0b3JpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAKaW5kZXggNTJiMGEwOGZjM2VlNjU4NzkxZTYxZmFjOWQxZjg4ZWEwNTVlZGM4OS4uODA2
NGM4ZjRhZjhkZTkzYjEwNWM5ZjcyNzRkMDA0MjY0MThiOTExZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTM0Niw4ICszNDYsNiBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBz
aG91bGRTZXRWZXJzaW9uSW5OZXdEYXRhYgogICAgIH0KICNlbmRpZgogCi0gICAgU1FMaXRlVHJh
bnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotCiAgICAg
aWYgKCFtX3NxbGl0ZURhdGFiYXNlLm9wZW4obV9maWxlbmFtZSkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUg
dG8gb3BlbiBkYXRhYmFzZSIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCksIG1fc3FsaXRl
RGF0YWJhc2UubGFzdEVycm9yTXNnKCkpIH07CiAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLnR1
cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpKQpAQCAtNzQ0LDggKzc0Miw2IEBAIFZlY3RvcjxT
dHJpbmc+IERhdGFiYXNlOjpwZXJmb3JtR2V0VGFibGVOYW1lcygpCiAKIHZvaWQgRGF0YWJhc2U6
OmluY3JlbWVudGFsVmFjdXVtSWZOZWVkZWQoKQogewotICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLQogICAgIGludDY0X3QgZnJl
ZVNwYWNlU2l6ZSA9IG1fc3FsaXRlRGF0YWJhc2UuZnJlZVNwYWNlU2l6ZSgpOwogICAgIGludDY0
X3QgdG90YWxTaXplID0gbV9zcWxpdGVEYXRhYmFzZS50b3RhbFNpemUoKTsKICAgICBpZiAodG90
YWxTaXplIDw9IDEwICogZnJlZVNwYWNlU2l6ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
ZDIwMjE1NzVmMTJhNGU0MjI4OWFiNWYxOTcyMTQ0MWFhZTZiZGQ1Yi4uNDliNWU0ZjYzZDEyNTVj
ODNlMGI3NzEyMjZiNmIzNjRlYmViMjY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC05Miw4
ICs5Miw2IEBAIHN0YXRpYyB1bnNpZ25lZCB1cmxIb3N0SGFzaChjb25zdCBVUkwmIHVybCkKIAog
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hl
R3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkKIHsKLSAgICBTUUxpdGVUcmFuc2FjdGlvbklu
UHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0KICAgICBvcGVuRGF0YWJh
c2UoZmFsc2UpOwogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xNjMsOCArMTYxLDYgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6bG9hZE1hbmlmZXN0SG9zdEhhc2hlcygpCiAgICAgLy8gV2Ugc2V0IHRoaXMgZmxhZyB0byB0
cnVlIGJlZm9yZSB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gb3BlbmVkCiAgICAgLy8gdG8gYXZvaWQg
dHJ5aW5nIHRvIG9wZW4gdGhlIGRhdGFiYXNlIG92ZXIgYW5kIG92ZXIgaWYgaXQgZG9lc24ndCBl
eGlzdC4KICAgICBoYXNMb2FkZWRIYXNoZXMgPSB0cnVlOwotICAgIAotICAgIFNRTGl0ZVRyYW5z
YWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAogICAgIG9w
ZW5EYXRhYmFzZShmYWxzZSk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtMjA4
LDggKzIwNCw2IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgCiAgICAgaWYgKCFtX2Rh
dGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCi0gICAg
U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVy
OwogCiAgICAgLy8gQ2hlY2sgdGhlIGRhdGFiYXNlLiBMb29rIGZvciBhbGwgY2FjaGUgZ3JvdXBz
IHdpdGggYSBuZXdlc3QgY2FjaGUuCiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2Rh
dGFiYXNlLCAiU0VMRUNUIGlkLCBtYW5pZmVzdFVSTCwgbmV3ZXN0Q2FjaGUgRlJPTSBDYWNoZUdy
b3VwcyBXSEVSRSBuZXdlc3RDYWNoZSBJUyBOT1QgTlVMTCIpOwpAQCAtMjU1LDggKzI0OSw2IEBA
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3Jv
dXBGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAKIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBVUkwmIHVy
bCkKIHsKLSAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2Fj
dGlvbkNvdW50ZXI7Ci0KICAgICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7
CiAKICAgICAvLyBDaGVjayBpZiBhbiBhcHByb3ByaWF0ZSBjYWNoZSBhbHJlYWR5IGV4aXN0cyBp
biBtZW1vcnkuCkBAIC00MTEsOCArNDAzLDYgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c2V0RGVmYXVsdE9yaWdpblF1b3RhKGludDY0X3QgcXVvdGEpCiAKIGJvb2wgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNhbGN1bGF0ZVF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4sIGludDY0X3QmIHF1b3RhKQogewotICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLQogICAgIC8vIElmIGFuIE9y
aWdpbiByZWNvcmQgZG9lc24ndCBleGlzdCwgdGhlbiB0aGUgQ09VTlQgd2lsbCBiZSAwIGFuZCBx
dW90YSB3aWxsIGJlIDAuCiAgICAgLy8gVXNpbmcgdGhlIGNvdW50IHRvIGRldGVybWluZSBpZiBh
IHJlY29yZCBleGlzdGVkIG9yIG5vdCBpcyBhIHNhZmUgd2F5IHRvIGRldGVybWluZQogICAgIC8v
IGlmIGEgcXVvdGEgb2YgMCBpcyByZWFsLCBmcm9tIHRoZSByZWNvcmQsIG9yIGZyb20gbnVsbC4K
QEAgLTQzNiw4ICs0MjYsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxh
dGVRdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZwogCiBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWxjdWxhdGVVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBpbnQ2NF90JiB1c2FnZSkKIHsKLSAgICBTUUxpdGVUcmFuc2FjdGlv
bkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0KICAgICAvLyBJZiBh
biBPcmlnaW5zIHJlY29yZCBkb2Vzbid0IGV4aXN0LCB0aGVuIHRoZSBTVU0gd2lsbCBiZSBudWxs
LAogICAgIC8vIHdoaWNoIHdpbGwgYmVjb21lIDAsIGFzIGV4cGVjdGVkLCB3aGVuIGNvbnZlcnRp
bmcgdG8gYSBudW1iZXIuCiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNl
LCAiU0VMRUNUIFNVTShDYWNoZXMuc2l6ZSkiCkBAIC00NjIsOCArNDUwLDYgQEAgYm9vbCBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FsY3VsYXRlVXNhZ2VGb3JPcmlnaW4oY29uc3QgU2VjdXJp
dHlPcmlnaW4qIG9yaWcKIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FsY3VsYXRl
UmVtYWluaW5nU2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0NhY2hlKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4sIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlLCBpbnQ2NF90JiByZW1haW5pbmdTaXpl
KQogewotICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0
aW9uQ291bnRlcjsKLQogICAgIG9wZW5EYXRhYmFzZShmYWxzZSk7CiAgICAgaWYgKCFtX2RhdGFi
YXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MTMsOCArNDk5LDYgQEAg
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FsY3VsYXRlUmVtYWluaW5nU2l6ZUZvck9y
aWdpbkV4Y2x1ZGluZ0NhY2hlKGNvbnMKIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
aW50NjRfdCBxdW90YSkKIHsKLSAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291
bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0KICAgICBvcGVuRGF0YWJhc2UodHJ1ZSk7CiAgICAg
aWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzQs
NyArNTE4LDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVVcGRhdGVkUXVv
dGFGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG8KIAogYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZXhlY3V0ZVNRTENvbW1hbmQoY29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAg
QVNTRVJUKFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFzVHJhbnNhY3Rpb25JblByb2dyZXNzKCkp
OwogICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3BlbigpKTsKICAgICAKICAgICBib29sIHJlc3Vs
dCA9IG1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoc3FsKTsKQEAgLTU1Miw4ICs1MzUsNiBAQCBz
dGF0aWMgY29uc3QgaW50IHNjaGVtYVZlcnNpb24gPSA3OwogICAgIAogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6dmVyaWZ5U2NoZW1hVmVyc2lvbigpCiB7Ci0gICAgQVNTRVJUKFNRTGl0
ZURhdGFiYXNlVHJhY2tlcjo6aGFzVHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwotCiAgICAgaW50
IHZlcnNpb24gPSBTUUxpdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlBSQUdNQSB1c2VyX3ZlcnNp
b24iKS5nZXRDb2x1bW5JbnQoMCk7CiAgICAgaWYgKHZlcnNpb24gPT0gc2NoZW1hVmVyc2lvbikK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTgwLDggKzU2MSw2IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnZlcmlmeVNjaGVtYVZlcnNpb24oKQogICAgIAogdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCiB7Ci0g
ICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3Vu
dGVyOwotCiAgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNjQ5LDcgKzYyOCw2IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRh
YmFzZShib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQogCiBib29sIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpleGVjdXRlU3RhdGVtZW50KFNRTGl0ZVN0YXRlbWVudCYgc3RhdGVtZW50KQogewot
ICAgIEFTU0VSVChTUUxpdGVEYXRhYmFzZVRyYWNrZXI6Omhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVz
cygpKTsKICAgICBib29sIHJlc3VsdCA9IHN0YXRlbWVudC5leGVjdXRlQ29tbWFuZCgpOwogICAg
IGlmICghcmVzdWx0KQogICAgICAgICBMT0dfRVJST1IoIkFwcGxpY2F0aW9uIENhY2hlIFN0b3Jh
Z2U6IGZhaWxlZCB0byBleGVjdXRlIHN0YXRlbWVudCBcIiVzXCIgZXJyb3IgXCIlc1wiIiwgCkBA
IC02NjAsNyArNjM4LDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZXhlY3V0ZVN0
YXRlbWVudChTUUxpdGVTdGF0ZW1lbnQmIHN0YXRlbWVudCkKIAogYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCwgR3JvdXBTdG9y
YWdlSURKb3VybmFsKiBqb3VybmFsKQogewotICAgIEFTU0VSVChTUUxpdGVEYXRhYmFzZVRyYWNr
ZXI6Omhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKICAgICBBU1NFUlQoZ3JvdXAtPnN0b3Jh
Z2VJRCgpID09IDApOwogICAgIEFTU0VSVChqb3VybmFsKTsKIApAQCAtNjkzLDcgKzY3MCw2IEBA
IGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCogZ3JvdXAsIEdyb3VwU3RvcmFnZUlECiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlLCBSZXNvdXJjZVN0b3JhZ2VJREpvdXJuYWwq
IHN0b3JhZ2VJREpvdXJuYWwpCiB7Ci0gICAgQVNTRVJUKFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6
aGFzVHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwogICAgIEFTU0VSVChjYWNoZS0+c3RvcmFnZUlE
KCkgPT0gMCk7CiAgICAgQVNTRVJUKGNhY2hlLT5ncm91cCgpLT5zdG9yYWdlSUQoKSAhPSAwKTsK
ICAgICBBU1NFUlQoc3RvcmFnZUlESm91cm5hbCk7CkBAIC03NzAsNyArNzQ2LDYgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZSogY2FjaGUsIFJl
c291cmNlU3RvcmFnZUlESm8KIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUo
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQgY2FjaGVTdG9yYWdl
SUQpCiB7Ci0gICAgQVNTRVJUKFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFzVHJhbnNhY3Rpb25J
blByb2dyZXNzKCkpOwogICAgIEFTU0VSVChjYWNoZVN0b3JhZ2VJRCk7CiAgICAgQVNTRVJUKCFy
ZXNvdXJjZS0+c3RvcmFnZUlEKCkpOwogICAgIApAQCAtODg3LDggKzg2Miw2IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVz
b3VyY2UsIHVuc2lnbmVkCiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlVXBk
YXRlZFR5cGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgQXBwbGljYXRpb25D
YWNoZSogY2FjaGUpCiB7Ci0gICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50
ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotCiAgICAgQVNTRVJUX1VOVVNFRChjYWNoZSwgY2FjaGUt
PnN0b3JhZ2VJRCgpKTsKICAgICBBU1NFUlQocmVzb3VyY2UtPnN0b3JhZ2VJRCgpKTsKIApAQCAt
OTA1LDggKzg3OCw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlVXBkYXRl
ZFR5cGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjCiAKIGJvb2wgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2Us
IEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlKQogewotICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9n
cmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLQogICAgIEFTU0VSVChjYWNoZS0+
c3RvcmFnZUlEKCkpOwogICAgIAogICAgIG9wZW5EYXRhYmFzZSh0cnVlKTsKQEAgLTk0Miw3ICs5
MTMsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlLCBBcHBsaWNhdAogCiBib29sIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjplbnN1cmVPcmlnaW5SZWNvcmQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikK
IHsKLSAgICBBU1NFUlQoU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpoYXNUcmFuc2FjdGlvbkluUHJv
Z3Jlc3MoKSk7CiAgICAgU1FMaXRlU3RhdGVtZW50IGluc2VydE9yaWdpblN0YXRlbWVudChtX2Rh
dGFiYXNlLCAiSU5TRVJUIElOVE8gT3JpZ2lucyAob3JpZ2luLCBxdW90YSkgVkFMVUVTICg/LCA/
KSIpOwogICAgIGlmIChpbnNlcnRPcmlnaW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9P
SykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA5Miw3ICsxMDYyLDYgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHBhcnNlSGVhZGVycyhjb25zdCBTdHJpbmcmIGhlYWRlcnMsIFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnMKICAgICAKIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKIHsKLSAgICBBU1NF
UlQoU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpoYXNUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAg
ICAgU1FMaXRlU3RhdGVtZW50IGNhY2hlU3RhdGVtZW50KG1fZGF0YWJhc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJTRUxFQ1QgdXJsLCBzdGF0dXNDb2RlLCB0eXBlLCBt
aW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgaGVhZGVycywgQ2FjaGVSZXNvdXJjZURhdGEuZGF0
YSwgQ2FjaGVSZXNvdXJjZURhdGEucGF0aCBGUk9NIENhY2hlRW50cmllcyBJTk5FUiBKT0lOIENh
Y2hlUmVzb3VyY2VzIE9OIENhY2hlRW50cmllcy5yZXNvdXJjZT1DYWNoZVJlc291cmNlcy5pZCAi
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJTk5FUiBKT0lOIENhY2hlUmVz
b3VyY2VEYXRhIE9OIENhY2hlUmVzb3VyY2VEYXRhLmlkPUNhY2hlUmVzb3VyY2VzLmRhdGEgV0hF
UkUgQ2FjaGVFbnRyaWVzLmNhY2hlPT8iKTsKQEAgLTEyMDYsOCArMTE3NSw2IEBAIFJlZlB0cjxB
cHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2ln
bmVkIHN0b3JhZ2VJRCkKICAgICAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnJlbW92
ZShBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSkKIHsKLSAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJv
Z3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0KICAgICBpZiAoIWNhY2hlLT5z
dG9yYWdlSUQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtMTI0NSw4ICsxMjEyLDYgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6cmVtb3ZlKEFwcGxpY2F0aW9uQ2FjaGUqIGNh
Y2hlKQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjplbXB0eSgpCiB7Ci0gICAgU1FM
aXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwot
CiAgICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKICAgICAKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNP
cGVuKCkpCkBAIC0xMzEwLDggKzEyNzUsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Ojp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdAogCiBP
cHRpb25hbDxWZWN0b3I8VVJMPj4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om1hbmlmZXN0VVJM
cygpCiB7Ci0gICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNh
Y3Rpb25Db3VudGVyOwotCiAgICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0
YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xMzMwLDcg
KzEyOTMsNiBAQCBPcHRpb25hbDxWZWN0b3I8VVJMPj4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
Om1hbmlmZXN0VVJMcygpCiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUNh
Y2hlR3JvdXBSZWNvcmQoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCkKIHsKLSAgICBBU1NFUlQo
U1FMaXRlRGF0YWJhc2VUcmFja2VyOjpoYXNUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAgICAg
U1FMaXRlU3RhdGVtZW50IGlkU3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgaWQgRlJPTSBD
YWNoZUdyb3VwcyBXSEVSRSBtYW5pZmVzdFVSTD0/Iik7CiAgICAgaWYgKGlkU3RhdGVtZW50LnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNjAsOCAr
MTMyMiw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRlbGV0ZUNhY2hlR3JvdXBS
ZWNvcmQoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCkKIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6ZGVsZXRlQ2FjaGVHcm91cChjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMKQogewot
ICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291
bnRlcjsKLQogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIGRlbGV0ZVRyYW5zYWN0aW9uKG1fZGF0YWJh
c2UpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBncm91cCBpcyBpbiBtZW1vcnkuCkBA
IC0xMzg3LDggKzEzNDcsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpkZWxldGVD
YWNoZUdyb3VwKGNvbnN0IFN0cmluZyYgbWFuaWZlc3RVUkwpCiAKIHZvaWQgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnZhY3V1bURhdGFiYXNlRmlsZSgpCiB7Ci0gICAgU1FMaXRlVHJhbnNhY3Rp
b25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotCiAgICAgb3BlbkRh
dGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVE
YXRhYmFzZVRyYWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaAppbmRleCA2YWUwOGI5MzAyZGE0NWZhY2JkYzZk
ZTM1OGI1N2M2MDY1NzNmMmFlLi4wODdiMjMxMTlhMzE0ZDZjYTQyODQ2MzQyODVmMTY2MmE4MDE1
ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oCkBAIC0zOSw4ICszOSw4IEBAIGNsYXNzIFdl
YlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBTUUxpdGVEYXRhYmFz
ZVRyYWNrZXJDbGllbnQKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50JiBzaGFyZWRXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJD
bGllbnQoKTsKIAotICAgIHZvaWQgd2lsbEJlZ2luRmlyc3RUcmFuc2FjdGlvbigpIGZpbmFsOwot
ICAgIHZvaWQgZGlkRmluaXNoTGFzdFRyYW5zYWN0aW9uKCkgZmluYWw7CisgICAgdm9pZCB3aWxs
QmVnaW5EYXRhYmFzZUFjdGl2aXRpZXMoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaERhdGFi
YXNlQWN0aXZpdGllcygpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBOZXZl
ckRlc3Ryb3llZDxXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ+OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNr
ZXJDbGllbnQubW0KaW5kZXggYTI1NmQzZGQ2MTZiNjlmMDE1NjE1ZGM5MTA5NDg0NTE5MGU3N2Nm
Ni4uYjNlMmE1MzJiZTEzNGQzYjMxNzA3MTNjM2E4MzBhODM4ZGUwNjU3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyQ2xpZW50Lm1tCkBAIC01OSwxNCArNTksMTQgQEAgV2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50Ojp+V2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKIHsKIH0KIAotdm9p
ZCBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OndpbGxCZWdpbkZpcnN0VHJhbnNhY3Rp
b24oKQordm9pZCBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OndpbGxCZWdpbkRhdGFi
YXNlQWN0aXZpdGllcygpCiB7CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW3RoaXNdIHsKICAgICAgICAgbV9oeXN0ZXJlc2lzLnN0YXJ0KCk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaWRGaW5pc2hMYXN0
VHJhbnNhY3Rpb24oKQordm9pZCBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpZEZp
bmlzaERhdGFiYXNlQWN0aXZpdGllcygpCiB7CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3RoaXNdIHsKICAgICAgICAgbV9oeXN0ZXJlc2lzLnN0b3AoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4
IDNmZjU3ZWQyMDE0ZGRiMTFmZTE3OGFiZTQ2MmE0NmZiOGMxY2E3MTQuLmQwZWQzYmQ1ZTEwNWFm
Y2JkN2JkNThlOTExZTI2N2JjMGY0ODMyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMTM1LDE2ICsxMzUsMTYgQEAgYm9vbCBTUUxp
dGVEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9kZSBvcGVuTW9k
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChpc09wZW4oKSkKKyAg
ICBpZiAoaXNPcGVuKCkpIHsKICAgICAgICAgbV9vcGVuaW5nVGhyZWFkID0gJlRocmVhZDo6Y3Vy
cmVudCgpOwotICAgIGVsc2UKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBTUUxp
dGVEYXRhYmFzZVRyYWNrZXI6OmluY3JlbWVudE9wZW5EYXRhYmFzZXNDb3VudCgpOworI2VuZGlm
CisgICAgfSBlbHNlCiAgICAgICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9ICJzcWxpdGVfb3BlbiBy
ZXR1cm5lZCBudWxsIjsKIAotICAgIHsKLSAgICAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dy
ZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotICAgICAgICBpZiAoIVNRTGl0ZVN0
YXRlbWVudCgqdGhpcywgIlBSQUdNQSB0ZW1wX3N0b3JlID0gTUVNT1JZOyJfcykuZXhlY3V0ZUNv
bW1hbmQoKSkKLSAgICAgICAgICAgIExPR19FUlJPUigiU1FMaXRlIGRhdGFiYXNlIGNvdWxkIG5v
dCBzZXQgdGVtcF9zdG9yZSB0byBtZW1vcnkiKTsKLSAgICB9CisgICAgaWYgKCFTUUxpdGVTdGF0
ZW1lbnQoKnRoaXMsICJQUkFHTUEgdGVtcF9zdG9yZSA9IE1FTU9SWTsiX3MpLmV4ZWN1dGVDb21t
YW5kKCkpCisgICAgICAgIExPR19FUlJPUigiU1FMaXRlIGRhdGFiYXNlIGNvdWxkIG5vdCBzZXQg
dGVtcF9zdG9yZSB0byBtZW1vcnkiKTsKIAogICAgIGlmIChvcGVuTW9kZSAhPSBPcGVuTW9kZTo6
UmVhZE9ubHkpCiAgICAgICAgIHVzZVdBTEpvdXJuYWxNb2RlKCk7CkBAIC0xNjgsNyArMTY4LDYg
QEAgdm9pZCBTUUxpdGVEYXRhYmFzZTo6dXNlV0FMSm91cm5hbE1vZGUoKQogICAgIH0KIAogICAg
IHsKLSAgICAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNh
Y3Rpb25Db3VudGVyOwogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgY2hlY2twb2ludFN0YXRlbWVu
dCgqdGhpcywgIlBSQUdNQSB3YWxfY2hlY2twb2ludChUUlVOQ0FURSkiX3MpOwogICAgICAgICBp
ZiAoY2hlY2twb2ludFN0YXRlbWVudC5wcmVwYXJlQW5kU3RlcCgpID09IFNRTElURV9ST1cpIHsK
ICAgICAgICAgICAgIGlmIChjaGVja3BvaW50U3RhdGVtZW50LmdldENvbHVtbkludCgwKSkKQEAg
LTE4OCwxMSArMTg3LDEwIEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKCkKICAgICAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VDbG9zaW5nTXV0ZXgpOwogICAgICAgICAg
ICAgbV9kYiA9IDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fdXNlV0FMKSB7Ci0gICAgICAg
ICAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNv
dW50ZXI7Ci0gICAgICAgICAgICBzcWxpdGUzX2Nsb3NlKGRiKTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBzcWxpdGUzX2Nsb3NlKGRiKTsKKyAgICAgICAgc3FsaXRlM19jbG9zZShkYik7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2Vy
OjpkZWNyZW1lbnRPcGVuRGF0YWJhc2VzQ291bnQoKTsKKyNlbmRpZgogICAgIH0KIAogICAgIG1f
b3BlbmluZ1RocmVhZCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDgyYzM0M2Q1ODgzYzBkYjBm
MzMxYjYyMjlmYjI5ZTg2MGY4OTE1ZjUuLmMyZTU1ZWI2N2ZiYmE5NzNkOTc0ZDQ1OTQ5NzA0NTdl
NDBhYjM1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zNCw0NyArMzQsMzkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIFNRTGl0ZURhdGFiYXNlVHJhY2tlciB7CiAKIHN0YXRpYyBTUUxpdGVE
YXRhYmFzZVRyYWNrZXJDbGllbnQqIHNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50
ID0gbnVsbHB0cjsKLXN0YXRpYyB1bnNpZ25lZCBzX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50
ZXIgPSAwOworc3RhdGljIHVuc2lnbmVkIHNfb3BlbkRhdGFiYXNlc0NvdW50ZXIgPSAwOwogCi1z
dGF0aWMgTG9jayB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKK3N0YXRpYyBMb2NrIG9wZW5E
YXRhYmFzZXNNdXRleDsKIAogdm9pZCBzZXRDbGllbnQoU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBjbGllbnQpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sodHJhbnNhY3Rp
b25JblByb2dyZXNzTXV0ZXgpOworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG9wZW5E
YXRhYmFzZXNNdXRleCk7CiAgICAgc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQg
PSBjbGllbnQ7CiB9CiAKLXZvaWQgaW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQo
KQordm9pZCBpbmNyZW1lbnRPcGVuRGF0YWJhc2VzQ291bnQoKQogewotICAgIHN0ZDo6bG9ja19n
dWFyZDxMb2NrPiBsb2NrKHRyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TG9jaz4gbG9jayhvcGVuRGF0YWJhc2VzTXV0ZXgpOwogICAgIGlmICghc19zdGF0
aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQpCiAgICAgICAgIHJldHVybjsKLQotICAgIHNf
dHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnRlcisrOwotICAgIGlmIChzX3RyYW5zYWN0aW9uSW5Q
cm9ncmVzc0NvdW50ZXIgPT0gMSkKLSAgICAgICAgc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNr
ZXJDbGllbnQtPndpbGxCZWdpbkZpcnN0VHJhbnNhY3Rpb24oKTsKKyAgICAKKyAgICBzX29wZW5E
YXRhYmFzZXNDb3VudGVyKys7CisgICAgaWYgKHNfb3BlbkRhdGFiYXNlc0NvdW50ZXIgPT0gMSkK
KyAgICAgICAgc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQtPndpbGxCZWdpbkRh
dGFiYXNlQWN0aXZpdGllcygpOwogfQogCi12b2lkIGRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9n
cmVzc0NvdW50KCkKK3ZvaWQgZGVjcmVtZW50T3BlbkRhdGFiYXNlc0NvdW50KCkKIHsKLSAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7Cisg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sob3BlbkRhdGFiYXNlc011dGV4KTsKICAgICBp
ZiAoIXNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KQogICAgICAgICByZXR1cm47
Ci0KLSAgICBBU1NFUlQoc190cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudGVyKTsKLSAgICBzX3Ry
YW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50ZXItLTsKLQotICAgIGlmICghc190cmFuc2FjdGlvbklu
UHJvZ3Jlc3NDb3VudGVyKQotICAgICAgICBzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC0+ZGlkRmluaXNoTGFzdFRyYW5zYWN0aW9uKCk7Ci19Ci0KLSNpZiAhQVNTRVJUX0RJU0FC
TEVECi1ib29sIGhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygpCi17Ci0gICAgc3RkOjpsb2NrX2d1
YXJkPExvY2s+IGxvY2sodHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwotICAgIHJldHVybiAh
c19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQgfHwgc190cmFuc2FjdGlvbkluUHJv
Z3Jlc3NDb3VudGVyID4gMDsKKyAgICAKKyAgICBBU1NFUlQoc19vcGVuRGF0YWJhc2VzQ291bnRl
cik7CisgICAgc19vcGVuRGF0YWJhc2VzQ291bnRlci0tOworICAgIAorICAgIGlmICghc19vcGVu
RGF0YWJhc2VzQ291bnRlcikKKyAgICAgICAgc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJD
bGllbnQtPmRpZEZpbmlzaERhdGFiYXNlQWN0aXZpdGllcygpOwogfQotI2VuZGlmCiAKIH0gLy8g
bmFtZXNwYWNlIFNRTGl0ZURhdGFiYXNlVHJhY2tlcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgKaW5kZXggNDViMDFjNjczN2U5
ZDU5MDM3NGQxMGVmZGM3YjI3NGIwNWI2ODViYy4uM2RjZDhmNzVjNTQ0NThiYzhhYmRlODJkMzM4
NDFhYWY2YWQ0ZjJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaApAQCAtMzIsMjcgKzMyLDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogbmFtZXNwYWNlIFNRTGl0ZURhdGFiYXNlVHJhY2tlciB7CiAKLVdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKLVdFQkNPUkVf
RVhQT1JUIHZvaWQgaW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKK1dFQkNP
UkVfRVhQT1JUIHZvaWQgaW5jcmVtZW50T3BlbkRhdGFiYXNlc0NvdW50KCk7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIGRlY3JlbWVudE9wZW5EYXRhYmFzZXNDb3VudCgpOwogCiBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldENsaWVudChTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQqKTsKIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzVHJhbnNhY3Rpb25JblByb2dy
ZXNzKCk7Ci0jZW5kaWYKLQotfTsKLQotY2xhc3MgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNz
QXV0b0NvdW50ZXIgewotcHVibGljOgotICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1
dG9Db3VudGVyKCkKLSAgICB7Ci0gICAgICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aW5jcmVt
ZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKLSAgICB9Ci0gICAgflNRTGl0ZVRyYW5z
YWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyKCkKLSAgICB7Ci0gICAgICAgIFNRTGl0ZURhdGFi
YXNlVHJhY2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKLSAgICB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgKaW5kZXggNGRk
MjU4NTJlOWYyMzA2MmFiMzViOTA3N2I2ODRiYzc1YjNiMjQ3NS4uYzEwZGVkMzk2ZDMyNTY2OTkz
ODFkNjdkODk0MDNhODg0ODBmMjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaApAQCAtMzIsOCArMzIs
OCBAQCBjbGFzcyBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQgewogcHVibGljOgogICAgIHZp
cnR1YWwgflNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZp
cnR1YWwgdm9pZCB3aWxsQmVnaW5GaXJzdFRyYW5zYWN0aW9uKCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMYXN0VHJhbnNhY3Rpb24oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdp
bGxCZWdpbkRhdGFiYXNlQWN0aXZpdGllcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoRGF0YWJhc2VBY3Rpdml0aWVzKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5j
cHAKaW5kZXggOTcxYmJhNTY3NDc0ZWI2ODk2Y2U1NjFjN2U2OTk3NjYwNGRkZTc4Yy4uYjc3ZTE3
NGViNzhhOWUzYWZjMTkzM2FhZTJmOTcxMzY1MjI5NzZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCkBAIC02NiwxMCArNjYsNiBA
QCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbigpCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG1faW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFURSIp
OwogICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gbV9pblByb2dyZXNzOwot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIGlmICghbV9pblByb2dyZXNzKQotICAg
ICAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJv
Z3Jlc3NDb3VudCgpOwotI2VuZGlmCiAgICAgfQogfQogCkBAIC03OSwxMCArNzUsNiBAQCB2b2lk
IFNRTGl0ZVRyYW5zYWN0aW9uOjpjb21taXQoKQogICAgICAgICBBU1NFUlQobV9kYi5tX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzcyk7CiAgICAgICAgIG1faW5Qcm9ncmVzcyA9ICFtX2RiLmV4ZWN1dGVD
b21tYW5kKCJDT01NSVQiKTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9
IG1faW5Qcm9ncmVzczsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBpZiAoIW1f
aW5Qcm9ncmVzcykKLSAgICAgICAgICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50
VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKLSNlbmRpZgogICAgIH0KIH0KIApAQCAtOTcs
OSArODksNiBAQCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpyb2xsYmFjaygpCiAgICAgICAgIG1f
ZGIuZXhlY3V0ZUNvbW1hbmQoIlJPTExCQUNLIik7CiAgICAgICAgIG1faW5Qcm9ncmVzcyA9IGZh
bHNlOwogICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7Ci0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNy
ZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpOwotI2VuZGlmCiAgICAgfQogfQogCkBA
IC0xMDgsOSArOTcsNiBAQCB2b2lkIFNRTGl0ZVRyYW5zYWN0aW9uOjpzdG9wKCkKICAgICBpZiAo
bV9pblByb2dyZXNzKSB7CiAgICAgICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgICAgICBt
X2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlv
bkluUHJvZ3Jlc3NDb3VudCgpOwotI2VuZGlmCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCBjYzY5ZjVlNTMz
M2U5MWE3MzAzZjc0NmJhY2U4MzQ1NDRmNGM4YzY4Li5mOTlhOGRlZTU3NWM4YzdkY2IyM2UzMjZi
ZTFjYmRlMTQzMTVkMDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTYxLDE0ICs2MSwxNCBAQCBXZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXI6On5XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIoKQogICAgICAgICBoeXN0ZXJlc2lz
VXBkYXRlZChQQUw6Okh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCk7CiB9CiAKLXZvaWQgV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyOjp3aWxsQmVnaW5GaXJzdFRyYW5zYWN0aW9uKCkKK3ZvaWQgV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyOjp3aWxsQmVnaW5EYXRhYmFzZUFjdGl2aXRpZXMoKQogewog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKICAgICAgICAgbV9oeXN0ZXJlc2lzLnN0YXJ0
KCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkaWRGaW5p
c2hMYXN0VHJhbnNhY3Rpb24oKQordm9pZCBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRpZEZp
bmlzaERhdGFiYXNlQWN0aXZpdGllcygpCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpc10g
ewogICAgICAgICBtX2h5c3RlcmVzaXMuc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaAppbmRleCAwZjY1MjMyOTFhYmMxNzc1YjMzMTY5
YmU0MmUwMzJmODA5ZTQzZGFlLi4xNGQ2NTBjN2QyNGI4ZjUzOTYzMTMyY2YzOTk3ZDliY2QwY2E3
Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJTUUxpdGVEYXRhYmFzZVRy
YWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJTUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuaApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAgICAgfldlYlNRTGl0ZURhdGFiYXNlVHJh
Y2tlcigpOwogCiAgICAgLy8gV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Ci0g
ICAgdm9pZCB3aWxsQmVnaW5GaXJzdFRyYW5zYWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRGaW5pc2hMYXN0VHJhbnNhY3Rpb24oKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxCZWdpbkRh
dGFiYXNlQWN0aXZpdGllcygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmluaXNoRGF0YWJhc2VB
Y3Rpdml0aWVzKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBoeXN0ZXJlc2lzVXBk
YXRlZChQQUw6Okh5c3RlcmVzaXNTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCmluZGV4IDE3ZDQ4OTQ5NGQ3ZTA5MGQzZmY3MzVlZmYy
NjQ0NWVmZWM2YjkyOTkuLjBkYzUzM2FlNzAwNjRmMzkyODgzOGJhYjhlNWMxN2UxNDEzYzM1ZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3Bw
CkBAIC0yMzUsOCArMjM1LDYgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6Om9wZW5EYXRhYmFzZShP
cGVuRGF0YWJhc2VQYXJhbVR5cGUgb3BlbmluZ1N0cmF0ZWd5KQogICAgIEFTU0VSVCghbV9kYXRh
YmFzZS5pc09wZW4oKSk7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlT3BlbkZhaWxlZCk7CiAKLSAg
ICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50
ZXI7Ci0KICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlbmFtZSA9IG1fc3luY01hbmFnZXItPmZ1bGxE
YXRhYmFzZUZpbGVuYW1lKG1fZGF0YWJhc2VJZGVudGlmaWVyKTsKIAogICAgIGlmICghRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZUZpbGVuYW1lKSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0g
U2tpcElmTm9uRXhpc3RlbnQpCkBAIC00MDcsOCArNDA1LDYgQEAgdm9pZCBTdG9yYWdlQXJlYVN5
bmM6OnN5bmMoYm9vbCBjbGVhckl0ZW1zLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYg
aXRlbXMKICAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIAotICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5z
YWN0aW9uQ291bnRlcjsKIAogICAgIC8vIElmIHRoZSBjbGVhciBmbGFnIGlzIHNldCwgdGhlbiB3
ZSBjbGVhciBhbGwgaXRlbXMgb3V0IGJlZm9yZSB3ZSB3cml0ZSBhbnkgbmV3IG9uZXMgaW4uCiAg
ICAgaWYgKGNsZWFySXRlbXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwCmluZGV4IGI5MzRkMWEzYjFiYWE4MzFhZGRmM2FiZTVlMDc3MGFiMWNm
NzdmYTIuLjlkZThmMWQ3NDNjMTMwMmUyMTY1MGIwNTM2ODk4MTJkNzIxMjFlYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtMTI0LDgg
KzEyNCw2IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UoYm9vbCBj
cmVhdGVJZkRvZXNOb3RFeGlzdCkKICAgICBBU1NFUlQobV9pc0FjdGl2ZSk7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRv
Q291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0KICAgICBBU1NFUlQoIW1fZGF0YWJhc2VNdXRl
eC50cnlMb2NrKCkpOwogCiAgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC0xODgsOCAr
MTg2LDYgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ltcG9ydE9yaWdpbklkZW50aWZpZXJz
KCkKICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CiAKICAgICAgICAgaWYgKG1f
ZGF0YWJhc2UuaXNPcGVuKCkpIHsKLSAgICAgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9n
cmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLQogICAgICAgICAgICAgU1FMaXRl
U3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIG9yaWdpbiBGUk9NIE9yaWdp
bnMiKTsKICAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykg
ewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50
LiIpOwpAQCAtMjMzLDggKzIyOSw2IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lz
dGVtQW5kVHJhY2tlckRhdGFiYXNlKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
IAotICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9u
Q291bnRlcjsKLQogICAgIEFTU0VSVChtX2lzQWN0aXZlKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+
IHBhdGhzOwpAQCAtMzE0LDggKzMwOCw2IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNTZXRP
cmlnaW5EZXRhaWxzKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9n
cmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLQogICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fZGF0YWJhc2VNdXRleCk7CiAKICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKHRydWUpOwpA
QCAtNDAyLDggKzM5NCw2IEBAIHN0YXRpYyB2b2lkIHRydW5jYXRlRGF0YWJhc2VGaWxlKFNRTGl0
ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxP
cmlnaW5zKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAgIFNRTGl0ZVRy
YW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKICAgICAK
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlTXV0ZXgpOwogICAgIApAQCAtNTA2LDgg
KzQ5Niw2IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25D
b3VudGVyOwotCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKICAgICAK
ICAgICBpZiAoIWNhbkRlbGV0ZU9yaWdpbihvcmlnaW5JZGVudGlmaWVyKSkgewpAQCAtNjE5LDgg
KzYwNyw2IEBAIFN0cmluZyBTdG9yYWdlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoRm9yT3JpZ2luKGNv
bnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVu
KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKLQogICAgIFNRTGl0ZVN0YXRl
bWVudCBwYXRoU3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgcGF0aCBGUk9NIE9yaWdpbnMg
V0hFUkUgb3JpZ2luPT8iKTsKICAgICBpZiAocGF0aFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgc2VsZWN0aW9u
IG9mIHBhdGggZm9yIG9yaWdpbiAnJXMnIiwgb3JpZ2luSWRlbnRpZmllci5hc2NpaSgpLmRhdGEo
KSk7Cg==
</data>
<flag name="review"
          id="383586"
          type_id="1"
          status="-"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>