<?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>217715</bug_id>
          
          <creation_ts>2020-10-14 10:01:09 -0700</creation_ts>
          <short_desc>[Media in GPU Process] Use CARingBuffer to transfer audio data of an audio destination from a web process to the GPU Process</short_desc>
          <delta_ts>2020-11-09 16:20:46 -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>Media</component>
          <version>Other</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>218729</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Peng Liu">peng.liu6</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1697759</commentid>
    <comment_count>0</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-14 10:01:09 -0700</bug_when>
    <thetext>Currently, we are using IPC messages with SharedBuffer(s) to transfer audio data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697760</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-14 10:01:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/70297165&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698009</commentid>
    <comment_count>2</comment_count>
      <attachid>411400</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-14 20:00:52 -0700</bug_when>
    <thetext>Created attachment 411400
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698012</commentid>
    <comment_count>3</comment_count>
      <attachid>411401</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-14 20:51:42 -0700</bug_when>
    <thetext>Created attachment 411401
WIP patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698013</commentid>
    <comment_count>4</comment_count>
      <attachid>411402</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-14 21:01:53 -0700</bug_when>
    <thetext>Created attachment 411402
WIP patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698014</commentid>
    <comment_count>5</comment_count>
      <attachid>411403</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-14 21:13:29 -0700</bug_when>
    <thetext>Created attachment 411403
WIP patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698015</commentid>
    <comment_count>6</comment_count>
      <attachid>411404</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-14 21:21:44 -0700</bug_when>
    <thetext>Created attachment 411404
WIP patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698016</commentid>
    <comment_count>7</comment_count>
      <attachid>411405</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-14 21:45:39 -0700</bug_when>
    <thetext>Created attachment 411405
WIP patch v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698020</commentid>
    <comment_count>8</comment_count>
      <attachid>411407</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-14 22:10:39 -0700</bug_when>
    <thetext>Created attachment 411407
WIP patch v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698367</commentid>
    <comment_count>9</comment_count>
      <attachid>411508</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-15 16:46:35 -0700</bug_when>
    <thetext>Created attachment 411508
WIP patch (working with CARingBuffer)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698425</commentid>
    <comment_count>10</comment_count>
      <attachid>411519</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-15 18:47:56 -0700</bug_when>
    <thetext>Created attachment 411519
WIP patch (rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698451</commentid>
    <comment_count>11</comment_count>
      <attachid>411527</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-15 20:26:06 -0700</bug_when>
    <thetext>Created attachment 411527
WIP, fix build failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698458</commentid>
    <comment_count>12</comment_count>
      <attachid>411529</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-15 20:40:17 -0700</bug_when>
    <thetext>Created attachment 411529
WIP, fix build failures on WPE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698477</commentid>
    <comment_count>13</comment_count>
      <attachid>411536</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-15 23:13:32 -0700</bug_when>
    <thetext>Created attachment 411536
WIP - almost done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698760</commentid>
    <comment_count>14</comment_count>
      <attachid>411618</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-16 14:54:38 -0700</bug_when>
    <thetext>Created attachment 411618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698765</commentid>
    <comment_count>15</comment_count>
      <attachid>411619</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-16 15:01:30 -0700</bug_when>
    <thetext>Created attachment 411619
Patch (fix WPE/GTK build failures)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698793</commentid>
    <comment_count>16</comment_count>
      <attachid>411626</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-16 15:33:52 -0700</bug_when>
    <thetext>Created attachment 411626
Patch (fix WPE/GTK build failures again)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698900</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-16 21:18:42 -0700</bug_when>
    <thetext>Committed r268632: &lt;https://trac.webkit.org/changeset/268632&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411626.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411400</attachid>
            <date>2020-10-14 20:00:52 -0700</date>
            <delta_ts>2020-10-14 20:51:40 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-217715-20201014200051.patch</filename>
            <type>text/plain</type>
            <size>87680</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ3MWFlZjc3YmQ4NmZl
MTBkMmJjMDQ4NWE5OWUzZGQ3ZTI0NTkxZS4uOGJlYjM3Mzc4MDczMmExMDQ3NmRlZDRmMmNmMTA2
MjI2MGQ5Y2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9j
ZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8g
ZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6aW5wdXRQcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRV
bml0QWRhcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRv
cklPUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2spOgorCiAyMDIwLTEwLTE0ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFZlY3Rvck1hdGg6Om11
bHRpcGx5VGhlbkFkZFNjYWxhcigpIGZvciBjbGFyaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkYjZjMTc4OGNi
ZmJhYjEzMGQyZWIzMDVkYTc1ZTI5YmI4ZGExNDcuLmI0OGI4NzIyZWIyNjE3NjdmYjEyMjhiZmNm
ZWM1MDk0ZmRmM2FhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMTAtMTQgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWEgaW4gR1BVIFBy
b2Nlc3NdIFVzZSBDQVJpbmdCdWZmZXIgdG8gdHJhbnNmZXIgYXVkaW8gZGF0YSBvZiBhbiBhdWRp
byBkZXN0aW5hdGlvbiBmcm9tIGEgd2ViIHByb2Nlc3MgdG8gdGhlIEdQVSBQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93bklm
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6YXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246
OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnJl
bmRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b246OmlzUGxheWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OmZyYW1lc1BlckJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9CdXNEYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3Jh
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpyZW5kZXJCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6cHVzaFNh
bXBsZXMpOgorCiAyMDIwLTEwLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBub24tQ29jb2EgcGxhdGZvcm1zICYg
cmVsZWFzZSBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggYzU2NzBjMzY0ODU3NWU4ODBlYjY4NWUw
YTNhMTM1YzI5MjQzNzViYi4uZTMyMjM3MjNkNzc4ZmVlMTNmNDcyYzRkMjExMGVjOTM2YjgwZmFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
QXVkaW9EZXN0aW5hdGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfkF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCi0gICAgLy8gQXVkaW9Ob2RlICAgCisgICAgLy8g
QXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCkgb3ZlcnJpZGUgeyB9OyAvLyB3ZSdy
ZSBwdWxsZWQgYnkgaGFyZHdhcmUgc28gdGhpcyBpcyBuZXZlciBjYWxsZWQKICAgICAKICAgICAv
LyBUaGUgYXVkaW8gaGFyZHdhcmUgY2FsbHMgcmVuZGVyKCkgdG8gZ2V0IHRoZSBuZXh0IHJlbmRl
ciBxdWFudHVtIG9mIGF1ZGlvIGludG8gZGVzdGluYXRpb25CdXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCBmOTU5ZTM5ODI5NjYwNTA5MDNhYWM4NWI4YWYyNDJkYTE1NDM0YTg5Li41OTI2
NjA2Mzg5OGY0MTM2YTliZjU1YzI2ODkxYTU2YmJhMzE2ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTIwMywxOSArMjAzLDIwIEBAIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQogcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNw
cAorcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAKIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVm
ZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCi1wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9C
dXNNYWMubW0KLXBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
SGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25N
YWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3YjUzM2VmNmM1ZjQ0Y2RiODdkYmI4MTIxMTc4OTVjMGNkYzMxZWUzLi42ODYw
ODBjYzExZGZiNTAxZmZkNjNmNTJlYjQxYThiNDJhNmUxYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzMsNiArNjMzLDcg
QEAKIAkJMURBQjMxMTIyNTFENkJGMzAwRkM5NDg1IC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEIzMUEx
MjM3OURDODMwMDg4M0ZERSAvKiBXZWJWaWRlb0NvbnRhaW5lckxheWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMURBQjMxMTQyNTFENzI1QzAw
RkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxREFCMzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXll
ck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxREFCMzExNTI1MUQ3NERCMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RTFD
NTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMURCNjZEM0IyNTM3QTk1NjAwQjY3
MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFERDNCNEM2
MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0
QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkxREY3RTgxRjI1MUE5RTA2
MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00MTI3LDcgKzQxMjgsNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2
MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MDFFMjNG
QTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgKi87IH07CiAJCUNEMDYzRjgzMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MTFFMjNGQTg5MDA4MTJCRTMgLyogSW5p
dERhdGFSZWdpc3RyeS5oICovOyB9OwotCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHAgKi87IH07CisJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVu
aXRBZGFwdG9ySU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9y
SU9TLmNwcCAqLzsgfTsKIAkJQ0QxMUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8q
IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRDE3QTQ1RDIxMzc0MDgxMDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxN0E0NTky
MTM3NDAxNjAwNzlFQzdCIC8qIFVuaWZpZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKQEAgLTUzMDQs
NyArNTMwNSw2IEBACiAJCUZEMzE2MEFCMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2
ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQzMTYwNzUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggKi87IH07
CiAJCUZEMzE2MEFEMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzcxMkIwMjZG
NzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggKi87IH07CiAJCUZEMzE2MEFGMTJCMDI2
RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5o
ICovOyB9OwotCQlGRDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYw
QjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLzsgfTsKIAkJRkQz
MTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFB
MzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBF
MUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDM1OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJh
bVRpbWVsaW5lLmggKi87IH07CiAJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0Yx
NzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY3NTQsNiArNjc1NCw4IEBACiAJCTFEMDAyNkE5MjM3NEY5
RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2
QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBQjMxMTMy
NTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZp
ZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEQjY2RDM3
MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMURCNjZEMzgyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJl
SW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZU9ic2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZEMjExQkExMkEwMDRC
NzgwRSAvKiBOYXZpZ2F0b3JTaGFyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdh
dG9yU2hhcmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRjIxMUJB
ODQxMDA0Qjc4MEUgLyogU2hhcmVEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFy
ZURhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyOTQsOCArMTQyOTYs
NyBAQAogCQlDRDA2M0Y4MDFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0RGF0YVJlZ2lzdHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwNjNGODExRTIzRkE4OTAwODEyQkUz
IC8qIEluaXREYXRhUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5pdERhdGFSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBDOEI1
ODIxNDFDOENBMDA2MkY1OUQgLyogTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFw
dG9ySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxMUIzREYyMjdDQUFB
OTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3
REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1NjAsOCArMTY1NjEsNyBAQAogCQlGRDMxNjA3
ODEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWZWN0b3JNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkQzMTYwNzkxMkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb0J1c01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1
ZGlvRGVzdGluYXRpb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25NYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZEMzE2MEI4MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQjkxMkIwMjcyQTAw
QzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkQzMTYwQkExMkIwMjcyQTAwQzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZGVEZyYW1lTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI3Mjk2LDEwICsyNzI5Niw5IEBACiAJCUNEMEVFRTBEMTQ3NDNF
NDgwMDNFQUZBMiAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcCAqLywKLQkJCQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlv
bklPUy5oICovLAogCQkJCUNENTU5NjhGMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFk
ZXJJT1MuY3BwICovLAogCQkJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVS
ZWFkZXJJT1MuaCAqLywKKwkJCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRw
dXRVbml0QWRhcHRvcklPUy5jcHAgKi8sCiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8q
IEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywKIAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4
IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSAqLywKQEAgLTI3MzY0LDYgKzI3MzYzLDggQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTQxMzE1MTg0MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwICovLAogCQkJCTQxMzE1MTg2MjM1Nzc0NUUwMDExNUU2RSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCAqLywKKwkJCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgKi8sCisJCQkJMURCNjZEMzcyNTM2NzhFQTAw
QjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCAqLywKIAkJCQkwNzNCODc2MjFFNDM4
NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcCAqLywKIAkJCQkwNzNCODc2
MzFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggKi8sCiAJCQkJMDcz
Qjg3NjUxRTQzODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oICovLApAQCAt
MzAyNzUsMTIgKzMwMjc2LDExIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAqLywKLQkJ
CQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8s
Ci0JCQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAq
LywKIAkJCQlGRDMxNjBCODEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCOTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFj
LmggKi8sCiAJCQkJQ0QyRjRBMjUxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lck1hYy5jcHAgKi8sCiAJCQkJQ0QyRjRBMjYxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFy
ZHdhcmVMaXN0ZW5lck1hYy5oICovLAorCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBB
dWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1
RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMx
QTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8sCiAJCQkpOwpAQCAtMzA1NjEsNyArMzA1NjEsNiBA
QAogCQkJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGlu
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovLAotCQkJCUZEMzE2MEJEMTJCMDI3
MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAwODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDgwMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNTc3LDYgKzMwNTc2LDcgQEAK
IAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU3MTQ2N0IzMjRBQkFFRjIwMEZCMkY1MCAvKiBBdWRpb05vZGVPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9O
b2RlT3V0cHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxREI2NkQzQjI1MzdBOTU2MDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUQx
MkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzU2
OTlFMjUyQ0YzNjIwMEUxQjk1NiAvKiBBdWRpb1BhcmFtRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNCOTg3MEMyNTIyNUY4MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1NYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzA2NTQsNyArMzA2NTQsNiBAQAogCQkJCTUxNzQxRDBGMEIwNzI1OUEw
MEVENDQyQyAvKiBCYWNrRm9yd2FyZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOEM4
MUUxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBMUI4N0QyMDg3QzRDMDAwOTc5QTc1IC8qIEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOTQ3MjE3MjUzMjNDMjEwMEYxNTNDOCAvKiBC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMjRFRTgwQzI2
NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2MEJCNjE2MUQw
QTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
MTk4RkJGMjRBMTYwREQwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAq
LywKQEAgLTM1MjM5LDggKzM1MjM4LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCUE5Nzg3Q0I0MUY1
RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzFGN0I3MzEyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAx
RDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMEVF
RTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25J
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2NDMgLyogQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREUzQTg1NzE3
RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9u
LmgKaW5kZXggMTYwYzY1NzhlMTVlZDVlYTc1MjVkYzc2OGJkNGVmM2ZkYzc0ZjRmZi4uNDE5NjU1
MmQ5MTVhODliNGEwNWY4NDc2NGQ1ZmVhYzA1NjYyNDk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4gaW4gQXVk
aW9EZXN0aW5hdGlvbiB0byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUKICAgICB2aXJ0dWFsIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7Ci0gICAgc3RhdGljIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUoKTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Qg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCAxZDBmNGUyODgxMTg3ZTdiMzUw
MjkwYjAyMzNjYjhiMGMyMWFmNGU2Li5iYmU2NGI3ZDMyZTRlOTNlNzYzMjVjODUyZDk2NjU2YTdi
NzFjZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTM1LDYgKzM1LDEwIEBACiAj
aW5jbHVkZSAiTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgiCiAjaW5jbHVkZSAiUHVzaFB1bGxGSUZP
LmgiCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3RleHByIHNpemVfdCBmaWZvU2l6ZSA9IDk2
ICogQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwpAQCAtNTYsNyArNjAsNiBAQCBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGNvbnN0CiAgICAgICAgIHJldHVybiBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OmNyZWF0ZU92ZXJyaWRlKGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIAogICAgIGF1dG8gZGVz
dGluYXRpb24gPSBhZG9wdFJlZigqbmV3IEF1ZGlvRGVzdGluYXRpb25Db2NvYShjYWxsYmFjaywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOwotICAgIGRlc3RpbmF0aW9uLT5j
b25maWd1cmUoKTsKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKQEAgLTcxLDE0ICs3NCwx
NCBAQCB1bnNpZ25lZCBsb25nIEF1ZGlvRGVzdGluYXRpb246Om1heENoYW5uZWxDb3VudCgpCiB9
CiAKIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUpCi0gICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICA6IG1fYXVkaW9PdXRwdXRV
bml0QWRhcHRvcigqdGhpcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX291
dHB1dEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1ZGlvVXRp
bGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxsKCkpCiAgICAg
LCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1
ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSkucmVsZWFzZU5vbk51bGwoKSkKICAgICAs
IG1fZmlmbyhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4obnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmlmb1NpemUpKQogICAgICwgbV9jb250ZXh0U2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogewot
ICAgIGNvbmZpZ3VyZSgpOworICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUo
aGFyZHdhcmVTYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgYXV0
byBoYXJkd2FyZVNhbXBsZVJhdGUgPSB0aGlzLT5oYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBp
ZiAoc2FtcGxlUmF0ZSAhPSBoYXJkd2FyZVNhbXBsZVJhdGUpIHsKQEAgLTg3LDExICs5MCw3IEBA
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkCiAgICAgfQogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKQotewotICAgIGlmIChtX291dHB1dFVuaXQpCi0g
ICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Ci19CitB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKSA9IGRlZmF1bHQ7
CiAKIHVuc2lnbmVkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6bnVtYmVyT2ZPdXRwdXRDaGFubmVs
cygpIGNvbnN0CiB7CkBAIC0xMDcsNyArMTA2LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFQK
IHsKICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAg
bV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFk
KTsKLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVu
aXQpOworICAgIE9TU3RhdHVzIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFy
dCgpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHNldElzUGxheWluZyh0cnVlKTsKQEAg
LTExNiw3ICsxMTUsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rp
b248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVAogdm9pZCBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25D
b2NvYTo6c3RvcCIpOwotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3Ao
bV9vdXRwdXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFk
YXB0b3Iuc3RvcCgpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAK
ICAgICBpZiAoIXJlc3VsdCkKQEAgLTEzMyw3ICsxMzIsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2suaXNQ
bGF5aW5nRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBz
dHJlYW1Gb3JtYXQpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Z2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0
KQogewogICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwogICAg
IGNvbnN0IGludCBiaXRzUGVyQnl0ZSA9IDg7CkBAIC0xNTcsNiArMTU2LDE4IEBAIHN0YXRpYyB2
b2lkIGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKEF1ZGlvQnVmZmVyKiBidWZmZXJzLCBBdWRpb0J1
cyYgYnVzLCBVSW50MzIKICAgICB9CiB9CiAKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpw
cm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVkaW9CdXMmIGJ1cywgVUludDMyIG51bWJlck9mRnJhbWVz
KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUu
LCBbLTEuMCwgMS4wXSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9m
Q2hhbm5lbHMoKTsgKytpKSB7CisgICAgICAgIGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChp
KTsKKyAgICAgICAgaWYgKCFjaGFubmVsLT5pc1NpbGVudCgpKQorICAgICAgICAgICAgVmVjdG9y
TWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgpLCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEo
KSwgbnVtYmVyT2ZGcmFtZXMpOworICAgIH0KKyNlbmRpZgorfQorCiAvLyBQdWxscyBvbiBvdXIg
cHJvdmlkZXIgdG8gZ2V0IHJlbmRlcmVkIGF1ZGlvIHN0cmVhbS4KIE9TU3RhdHVzIEF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1lc3RhbXAsIFVJ
bnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCiB7CkBAIC0yMTAs
MTMgKzIyMSw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJPblJlbmRlcmlu
Z1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8vIERlZmF1bHRPdXRw
dXRVbml0IGNhbGxiYWNrCi1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJv
Yyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRp
b1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUludDMyIG51bWJl
ck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBhdXRvKiBhdWRpb091
dHB1dCA9IHN0YXRpY19jYXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVzZXJEYXRhKTsKLSAg
ICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9mRnJhbWVzLCBp
b0RhdGEpOwotfQotCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlkZUlucHV0KEF1
ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0aWxpdGllczo6cmVu
ZGVyUXVhbnR1bVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAwODk0ZDYyMWEyZjE1
MzIyNTEyNzM2NTBiNmU1YTNkM2VjOTk2ZjhhLi43MDcyZTE4ZTRlMWEyN2YxNDQwNDAxYjg0YzBl
NWI3ZDIyMjc4NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgogI2luY2x1ZGUgIkF1ZGlvSU9DYWxsYmFj
ay5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCIKICNpbmNsdWRlICJBdWRp
b1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQzLDQ3ICs0NCw0MiBAQCBjbGFzcyBQdXNoUHVsbEZJ
Rk87CiB1c2luZyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSA9IFJlZjxBdWRp
b0Rlc3RpbmF0aW9uPigqKShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
Ly8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0IG91dHB1dCBB
dWRpb1VuaXQKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1YmxpYyBBdWRpb0Rlc3Rp
bmF0aW9uLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CitjbGFzcyBBdWRpb0Rlc3RpbmF0
aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlvVW5pdFJlbmRl
cmVyLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgQXVkaW9EZXN0
aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwotICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25D
b2NvYSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRpb0lP
Q2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uQ29jb2Eo
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29j
b2FPdmVycmlkZSBjcmVhdGVPdmVycmlkZTsKIAogcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQ
T1JUIE9TU3RhdHVzIHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBudW1iZXJP
ZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpIGZpbmFsOworCiAgICAgdm9pZCBzZXRJ
c1BsYXlpbmcoYm9vbCk7CiAKLSAgICBib29sIGlzUGxheWluZygpIGZpbmFsIHsgcmV0dXJuIG1f
aXNQbGF5aW5nOyB9CisgICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX2lz
UGxheWluZzsgfQogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2NvbnRleHRTYW1wbGVSYXRlOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29u
c3QgZmluYWw7Ci0gICAgQXVkaW9Vbml0JiBvdXRwdXRVbml0KCkgeyByZXR1cm4gbV9vdXRwdXRV
bml0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29u
c3QgZmluYWw7CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3Q7
Ci0gICAgCi0gICAgLy8gRGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKLSAgICBzdGF0aWMgT1NT
dGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFn
cyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJl
ck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAKLSAgICB2b2lkIHNldEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mKTsKIAogICAgIEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248
dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkOwogCiBwcml2YXRlOgorICAgIGZy
aWVuZCBSZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlv
SU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgZmxvYXQpOwor
CiAgICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZW5kZXJPblJl
bmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcik7CiAKLSAgICBmcmllbmQgUmVmPEF1
ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2sm
LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKLSAgICAKICAgICAv
LyBBdWRpb1NvdXJjZVByb3ZpZGVyLgotICAgIHZvaWQgcHJvdmlkZUlucHV0KEF1ZGlvQnVzKiwg
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
cm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKIAot
ICAgIHZvaWQgY29uZmlndXJlKCk7CiAgICAgdm9pZCBwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVk
aW9CdXMmLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpOwogCi0gICAgT1NTdGF0dXMgcmVuZGVyKGNv
bnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxp
c3QqIGlvRGF0YSk7Ci0KLSAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OworICAgIEF1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yOwogICAgIEF1ZGlvSU9DYWxs
YmFjayYgbV9jYWxsYmFjazsKIAogICAgIC8vIFRvIHBhc3MgdGhlIGRhdGEgZnJvbSBGSUZPIHRv
IHRoZSBhdWRpbyBkZXZpY2UgY2FsbGJhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM5MDY2NDgzYTMwMzNjZjEyMWZlYzJhZmJiM2U1ODZmMmMyZjFlMjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091
dHB1dFVuaXRBZGFwdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCIKKworI2lm
IEVOQUJMRShXRUJfQVVESU8pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVkaW9PdXRwdXRV
bml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcihBdWRpb1VuaXRSZW5kZXJlciYgcmVu
ZGVyZXIpCisgICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICAsIG1fYXVkaW9Vbml0UmVuZGVyZXIo
cmVuZGVyZXIpCit7Cit9CisKK0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6On5BdWRpb091dHB1dFVu
aXRBZGFwdG9yKCkKK3sKKyAgICBpZiAobV9vdXRwdXRVbml0KQorICAgICAgICBBdWRpb0NvbXBv
bmVudEluc3RhbmNlRGlzcG9zZShtX291dHB1dFVuaXQpOworfQorCitPU1N0YXR1cyBBdWRpb091
dHB1dFVuaXRBZGFwdG9yOjpzdGFydCgpCit7CisgICAgcmV0dXJuIEF1ZGlvT3V0cHV0VW5pdFN0
YXJ0KG1fb3V0cHV0VW5pdCk7Cit9CisKK09TU3RhdHVzIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6
OnN0b3AoKQoreworICAgIHJldHVybiBBdWRpb091dHB1dFVuaXRTdG9wKG1fb3V0cHV0VW5pdCk7
Cit9CisKKy8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCitPU1N0YXR1cyBBdWRpb091dHB1
dFVuaXRBZGFwdG9yOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5pdFJlbmRlckFj
dGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUludDMyIC8qYnVz
TnVtYmVyKi8sIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEp
Cit7CisgICAgYXV0byogYWRhcHRvciA9IHN0YXRpY19jYXN0PEF1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IqPih1c2VyRGF0YSk7CisgICAgcmV0dXJuIGFkYXB0b3ItPm1fYXVkaW9Vbml0UmVuZGVyZXIu
cmVuZGVyKHRpbWVzdGFtcCwgbnVtYmVyT2ZGcmFtZXMsIGlvRGF0YSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFw
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVu
aXRBZGFwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2ZGM2ZTE1ZWZkZjg2MDg0NGU1ZjJlMjRjOTA3ZTRi
ZDJlZWIxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaApAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSA8
QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1
ZGlvVW5pdFJlbmRlcmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1VuaXRSZW5kZXJl
cigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIE9TU3RhdHVzIHJlbmRlcihjb25zdCBBdWRpb1Rp
bWVTdGFtcCosIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEp
ID0gMDsKK307CisKK2NsYXNzIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgeworcHVibGljOgorICAg
IFdFQkNPUkVfRVhQT1JUIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoQXVkaW9Vbml0UmVuZGVyZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QXVkaW9PdXRwdXRVbml0QWRhcHRvcigpOworCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBPU1N0YXR1cyBzdGFydCgpOwor
ICAgIE9TU3RhdHVzIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgT1NTdGF0dXMgaW5w
dXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyosIGNvbnN0
IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJlck9mRnJhbWVz
LCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CisKKyAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0
OworICAgIEF1ZGlvVW5pdFJlbmRlcmVyJiBtX2F1ZGlvVW5pdFJlbmRlcmVyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9u
SU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ3MzNkZTdmNzVkYTlh
YjZkMDg3YTIzMWFkOGViOTgxZGM2ODg4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0KLSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCIKLQotI2luY2x1ZGUgIkF1ZGlv
U2Vzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJB
TUVXT1JLKEF1ZGlvVG9vbGJveCkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29tcG9u
ZW50RmluZE5leHQsIEF1ZGlvQ29tcG9uZW50LCAoQXVkaW9Db21wb25lbnQgaW5Db21wb25lbnQs
IGNvbnN0IEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gKmluRGVzYyksIChpbkNvbXBvbmVudCwg
aW5EZXNjKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VO
ZXcsIE9TU3RhdHVzLCAoQXVkaW9Db21wb25lbnQgaW5Db21wb25lbnQsIEF1ZGlvQ29tcG9uZW50
SW5zdGFuY2UgKm91dEluc3RhbmNlKSwgKGluQ29tcG9uZW50LCBvdXRJbnN0YW5jZSkpCi1TT0ZU
X0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRBZGRQcm9wZXJ0eUxpc3RlbmVyLCBPU1N0YXR1
cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0
UHJvcGVydHlMaXN0ZW5lclByb2MgaW5Qcm9jLCB2b2lkICppblByb2NVc2VyRGF0YSksIChpblVu
aXQsIGluSUQsIGluUHJvYywgaW5Qcm9jVXNlckRhdGEpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJv
eCwgQXVkaW9Vbml0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwgQXVk
aW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBBdWRpb1VuaXRF
bGVtZW50IGluRWxlbWVudCwgdm9pZCAqb3V0RGF0YSwgVUludDMyICppb0RhdGFTaXplKSwgKGlu
VW5pdCwgaW5JRCwgaW5TY29wZSwgaW5FbGVtZW50LCBvdXREYXRhLCBpb0RhdGFTaXplKSkKLVNP
RlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEluaXRpYWxpemUsIE9TU3RhdHVzLCAoQXVk
aW9Vbml0IGluVW5pdCksIChpblVuaXQpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9V
bml0U2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwgQXVkaW9Vbml0UHJv
cGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBBdWRpb1VuaXRFbGVtZW50IGlu
RWxlbWVudCwgY29uc3Qgdm9pZCAqaW5EYXRhLCBVSW50MzIgaW5EYXRhU2l6ZSksIChpblVuaXQs
IGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgaW5EYXRhLCBpbkRhdGFTaXplKSkKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkK
LXsKLSAgICBjb25zdCBpbnQga1ByZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7Ci0KLSAgICAvLyBP
cGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0Ci0gICAgQXVkaW9Db21wb25lbnQg
Y29tcDsKLSAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7Ci0KLSAgICBkZXNjLmNv
bXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7Ci0gICAgZGVzYy5jb21wb25lbnRT
dWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87Ci0gICAgZGVzYy5jb21wb25lbnRN
YW51ZmFjdHVyZXIgPSBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0FwcGxlOwotICAgIGRlc2MuY29t
cG9uZW50RmxhZ3MgPSAwOwotICAgIGRlc2MuY29tcG9uZW50RmxhZ3NNYXNrID0gMDsKLSAgICBj
b21wID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dCgwLCAmZGVzYyk7Ci0KLSAgICBBU1NFUlQoY29t
cCk7Ci0KLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGNv
bXAsICZvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIFVJbnQzMiBm
bGFnID0gMTsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRwdXRVbml0KCks
Ci0gICAgICAgIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKLSAgICAgICAga0F1
ZGlvVW5pdFNjb3BlX091dHB1dCwKLSAgICAgICAgMCwKLSAgICAgICAgJmZsYWcsCi0gICAgICAg
IHNpemVvZihmbGFnKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgcmVzdWx0ID0gQXVk
aW9Vbml0SW5pdGlhbGl6ZShvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLSAg
ICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCi0gICAgQVVSZW5kZXJDYWxsYmFja1N0cnVjdCBpbnB1
dDsKLSAgICBpbnB1dC5pbnB1dFByb2MgPSBpbnB1dFByb2M7Ci0gICAgaW5wdXQuaW5wdXRQcm9j
UmVmQ29uID0gdGhpczsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRwdXRV
bml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1ZGlvVW5pdFNj
b3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOwotICAgIEFTU0VSVCghcmVzdWx0
KTsKLQotICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uIHN0cmVhbUZvcm1hdDsKLQotICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbik7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0UHJvcGVydHko
b3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0
U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwotICAgIEFTU0VS
VCghcmVzdWx0KTsKLQotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1G
b3JtYXQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgp
LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQs
IDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRT
ZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJlZmVycmVkQnVmZmVyU2l6ZSk7Ci19
Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVk
aW9CdXMmLCBVSW50MzIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFw
dG9ySU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1
dFVuaXRBZGFwdG9ySU9TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTQ5ZDVjZTdlZDQ1ZTkzYWNkM2Y5MmY0
N2FjMjI0ZTNjMTZiMWQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwCkBAIC0wLDAgKzEsMTEx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQsIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisK
KyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4K
KworU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCitTT0ZUX0xJTksoQXVkaW9Ub29s
Ym94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1ZGlvQ29tcG9u
ZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uICppbkRlc2Mp
LCAoaW5Db21wb25lbnQsIGluRGVzYykpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb0Nv
bXBvbmVudEluc3RhbmNlTmV3LCBPU1N0YXR1cywgKEF1ZGlvQ29tcG9uZW50IGluQ29tcG9uZW50
LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlICpvdXRJbnN0YW5jZSksIChpbkNvbXBvbmVudCwgb3V0
SW5zdGFuY2UpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRkUHJvcGVydHlM
aXN0ZW5lciwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlE
IGluSUQsIEF1ZGlvVW5pdFByb3BlcnR5TGlzdGVuZXJQcm9jIGluUHJvYywgdm9pZCAqaW5Qcm9j
VXNlckRhdGEpLCAoaW5Vbml0LCBpbklELCBpblByb2MsIGluUHJvY1VzZXJEYXRhKSkKK1NPRlRf
TElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlv
VW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5T
Y29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIHZvaWQgKm91dERhdGEsIFVJbnQzMiAq
aW9EYXRhU2l6ZSksIChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgb3V0RGF0YSwg
aW9EYXRhU2l6ZSkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJbml0aWFsaXpl
LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQpLCAoaW5Vbml0KSkKK1NPRlRfTElOSyhBdWRp
b1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVu
aXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5TY29wZSwgQXVk
aW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIGNvbnN0IHZvaWQgKmluRGF0YSwgVUludDMyIGluRGF0
YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1lbnQsIGluRGF0YSwgaW5EYXRh
U2l6ZSkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1dFVuaXRBZGFw
dG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKQoreworICAgIGNvbnN0IGludCBrUHJlZmVycmVkQnVmZmVyU2l6ZSA9
IDI1NjsKKworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1dFVuaXQKKyAg
ICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gZGVz
YzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091dHB1dDsKKyAg
ICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9SZW1vdGVJTzsKKyAg
ICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBw
bGU7CisgICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7CisgICAgZGVzYy5jb21wb25lbnRGbGFn
c01hc2sgPSAwOworICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KDAsICZkZXNjKTsK
KworICAgIEFTU0VSVChjb21wKTsKKworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9u
ZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1bHQp
OworCisgICAgVUludDMyIGZsYWcgPSAxOworICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3Bl
cnR5KG1fb3V0cHV0VW5pdCwKKyAgICAgICAga0F1ZGlvT3V0cHV0VW5pdFByb3BlcnR5X0VuYWJs
ZUlPLAorICAgICAgICBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LAorICAgICAgICAwLAorICAgICAg
ICAmZmxhZywKKyAgICAgICAgc2l6ZW9mKGZsYWcpKTsKKyAgICBBU1NFUlQoIXJlc3VsdCk7CisK
KyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG1fb3V0cHV0VW5pdCk7CisgICAgQVNT
RVJUKCFyZXN1bHQpOworICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKKyAgICBBVVJlbmRlckNh
bGxiYWNrU3RydWN0IGlucHV0OworICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0UHJvYzsKKyAg
ICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOworICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNl
dFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxi
YWNrLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZpbnB1dCwgc2l6ZW9mKGlucHV0KSk7Cisg
ICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHN0cmVhbSBmb3JtYXQKKyAgICBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworCisgICAgVUludDMyIHNpemUg
PSBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKTsKKyAgICByZXN1bHQgPSBBdWRp
b1VuaXRHZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1G
b3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCAm
c2l6ZSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgc3RyZWFtRm9ybWF0Lm1TYW1wbGVS
YXRlID0gaGFyZHdhcmVTYW1wbGVSYXRlOworICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0SUQgPSBr
QXVkaW9Gb3JtYXRMaW5lYXJQQ007CisgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRGbGFncyA9IGtB
dWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQgfCBrQXVkaW9Gb3JtYXRGbGFnSXNOb25J
bnRlcmxlYXZlZDsKKyAgICBzdHJlYW1Gb3JtYXQubUJ5dGVzUGVyUGFja2V0ID0gYnl0ZXNQZXJG
bG9hdDsKKyAgICBzdHJlYW1Gb3JtYXQubUZyYW1lc1BlclBhY2tldCA9IDE7CisgICAgc3RyZWFt
Rm9ybWF0Lm1CeXRlc1BlckZyYW1lID0gYnl0ZXNQZXJGbG9hdDsKKyAgICBzdHJlYW1Gb3JtYXQu
bUNoYW5uZWxzUGVyRnJhbWUgPSBudW1iZXJPZk91dHB1dENoYW5uZWw7CisgICAgc3RyZWFtRm9y
bWF0Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdDsKKworICAg
IHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFBy
b3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0
cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOworICAgIEFT
U0VSVCghcmVzdWx0KTsKKworICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFBy
ZWZlcnJlZEJ1ZmZlclNpemUoa1ByZWZlcnJlZEJ1ZmZlclNpemUpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDcwZjljOWZmZjUxZjQ4M2I0NDA0MWEzNzcxZmI0MTg3YTdhZWRhN2MuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
ODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Db2NvYS5o
IgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSAi
QXVkaW9CdXMuaCIKLSNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCi0jaW5jbHVkZSA8Q29yZUF1ZGlv
L0F1ZGlvSGFyZHdhcmUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkKLXsKLSAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXpl
IERlZmF1bHRPdXRwdXRVbml0Ci0gICAgQXVkaW9Db21wb25lbnQgY29tcDsKLSAgICBBdWRpb0Nv
bXBvbmVudERlc2NyaXB0aW9uIGRlc2M7Ci0KLSAgICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVk
aW9Vbml0VHlwZV9PdXRwdXQ7Ci0gICAgZGVzYy5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5p
dFN1YlR5cGVfRGVmYXVsdE91dHB1dDsKLSAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9
IGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBwbGU7Ci0gICAgZGVzYy5jb21wb25lbnRGbGFncyA9
IDA7Ci0gICAgZGVzYy5jb21wb25lbnRGbGFnc01hc2sgPSAwOwotICAgIGNvbXAgPSBBdWRpb0Nv
bXBvbmVudEZpbmROZXh0KDAsICZkZXNjKTsKLQotICAgIEFTU0VSVChjb21wKTsKLQotICAgIE9T
U3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm91dHB1dFVu
aXQoKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5p
dGlhbGl6ZShvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIC8vIFNl
dCByZW5kZXIgY2FsbGJhY2sKLSAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0OwotICAg
IGlucHV0LmlucHV0UHJvYyA9IGlucHV0UHJvYzsKLSAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24g
PSB0aGlzOwotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwg
a0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xv
YmFsLCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQot
ICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
IHN0cmVhbUZvcm1hdDsKLSAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFt
Rm9ybWF0KTsKLQotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQo
KSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0
LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbikpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLX0KLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9u
Q29jb2E6OnByb2Nlc3NCdXNBZnRlclJlbmRlcihBdWRpb0J1cyYgYnVzLCBVSW50MzIgbnVtYmVy
T2ZGcmFtZXMpCi17Ci0gICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDBkYiAoaS5lLiwgWy0xLjAsIDEu
MF0pCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7
ICsraSkgewotICAgICAgICBhdXRvKiBjaGFubmVsID0gYnVzLmNoYW5uZWwoaSk7Ci0gICAgICAg
IGlmICghY2hhbm5lbC0+aXNTaWxlbnQoKSkKLSAgICAgICAgICAgIFZlY3Rvck1hdGg6OmNsYW1w
KGNoYW5uZWwtPmRhdGEoKSwgLTEsIDEsIGNoYW5uZWwtPm11dGFibGVEYXRhKCksIG51bWJlck9m
RnJhbWVzKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb091dHB1dFVuaXRBZGFwdG9y
TWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jOGVkM2VmNzhjOGM2YTNiMWUwNzBjYjQ0MDU5NjlhZGE0YWMz
ZGEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQl9B
VURJTykgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRl
IDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Zv
aWQgQXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6Y29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxl
UmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK3sKKyAgICAvLyBPcGVuIGFu
ZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0CisgICAgQXVkaW9Db21wb25lbnQgY29tcDsK
KyAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7CisKKyAgICBkZXNjLmNvbXBvbmVu
dFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7CisgICAgZGVzYy5jb21wb25lbnRTdWJUeXBl
ID0ga0F1ZGlvVW5pdFN1YlR5cGVfRGVmYXVsdE91dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudE1h
bnVmYWN0dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBwbGU7CisgICAgZGVzYy5jb21w
b25lbnRGbGFncyA9IDA7CisgICAgZGVzYy5jb21wb25lbnRGbGFnc01hc2sgPSAwOworICAgIGNv
bXAgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KDAsICZkZXNjKTsKKworICAgIEFTU0VSVChjb21w
KTsKKworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29t
cCwgJm1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgcmVzdWx0ID0g
QXVkaW9Vbml0SW5pdGlhbGl6ZShtX291dHB1dFVuaXQpOworICAgIEFTU0VSVCghcmVzdWx0KTsK
KworICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKKyAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0
IGlucHV0OworICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0UHJvYzsKKyAgICBpbnB1dC5pbnB1
dFByb2NSZWZDb24gPSB0aGlzOworICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1f
b3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9V
bml0U2NvcGVfR2xvYmFsLCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOworICAgIEFTU0VSVCgh
cmVzdWx0KTsKKworICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0CisgICAgY29uc3RleHByIGludCBi
eXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0c1Bl
ckJ5dGUgPSA4OworCisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1h
dDsKKyAgICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBoYXJkd2FyZVNhbXBsZVJhdGU7Cisg
ICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKKyAgICBz
dHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBh
Y2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkOworICAgIHN0cmVhbUZvcm1h
dC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tRnJh
bWVzUGVyUGFja2V0ID0gMTsKKyAgICBzdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgPSBieXRl
c1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IG51bWJlck9m
T3V0cHV0Q2hhbm5lbHM7CisgICAgc3RyZWFtRm9ybWF0Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQ
ZXJCeXRlICogYnl0ZXNQZXJGbG9hdDsKKworICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3Bl
cnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlv
VW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbikpOworICAgIEFTU0VSVCghcmVzdWx0KTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZP
Uk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggNWExMmNkZTRmY2RmYzU3ZmFkNDJiN2Q5
ZThmZTczMjA0MzUwOWQ3OC4uNWQyYmJmY2E0YWIzMmM2OTk4MmI3YzI1YmFlNzY4NmRmZjIzOTJh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC02OCwxMCArNjgsMTAgQEAgdm9pZCBNb2NrQXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp0aWNrKCkKIHsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlKCksIG51bWJlck9mRnJhbWVzVG9Qcm9jZXNz
ID0gbV9udW1iZXJPZkZyYW1lc1RvUHJvY2Vzc10gewogICAgICAgICBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgICAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVz
Y3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKyAgICAgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAKICAgICAgICAgV2ViQXVkaW9CdWZmZXJMaXN0IHdlYkF1
ZGlvQnVmZmVyTGlzdCB7IHN0cmVhbUZvcm1hdCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgfTsK
LSAgICAgICAgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjppbnB1dFByb2ModGhpcywgMCwgMCwgMCwg
bnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1ZGlvQnVmZmVyTGlzdC5saXN0KCkpOworICAg
ICAgICByZW5kZXIoMCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1ZGlvQnVmZmVyTGlz
dC5saXN0KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcApp
bmRleCAyN2YyYTY5OTZhYzk0MGNjZDg0NzkzNTk1NGU2ZDkxODRhM2QzM2QwLi43YjQ1ZmMwMTY2
NTBhN2FjMTRkNzQyMzA4ODFjYTQxM2JkMWQyNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5jcHAKQEAgLTI5LDExNiArMjksMTEwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIgotI2luY2x1ZGUgIlJlbW90ZUF1ZGlvQnVzRGF0YS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkTWVtb3J5Lmgi
CisjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0F1ZGlvQnVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlv
T3V0cHV0VW5pdEFkYXB0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVXRpbGl0aWVzLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9QdXNoUHVsbEZJRk8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCi1uYW1lc3BhY2UgV2ViS2l0
IHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+CisjZW5kaWYKIAotLy8g
VGhpcyBGSUZPIHNpemUgbWF0Y2hlcyB0byBvbmUgaW4gQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNw
cCBhbmQgd2FzIGltcG9ydGVkIGZyb20gQmxpbmsuCi1jb25zdGV4cHIgc2l6ZV90IGZpZm9TaXpl
ID0gOTYgKiBXZWJDb3JlOjpBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemU7CituYW1l
c3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiwgcHVibGljIFdlYkNv
cmU6OkF1ZGlvSU9DYWxsYmFjayB7CitjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+LCBwdWJsaWMg
V2ViQ29yZTo6QXVkaW9Vbml0UmVuZGVyZXIgewogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVz
ID0gV2ViQ29yZTo6QXVkaW9CdXM7Ci0gICAgdXNpbmcgQXVkaW9EZXN0aW5hdGlvbiA9IFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb247Ci0gICAgdXNpbmcgU2hhcmVkQnVmZmVyID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOwotCiAgICAgc3RhdGljIFJlZjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiBj
cmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICAgICAgY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgICAgIGNvbnN0IFN0
cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50
MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJk
d2FyZVNhbXBsZVJhdGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQs
IG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVS
YXRlKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbigpCiAg
ICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCkp
OwogICAgIH0KIAogICAgIHZvaWQgc2NoZWR1bGVHcmFjZWZ1bFNodXRkb3duSWZOZWVkZWQoKQog
ICAgIHsKLSAgICAgICAgaWYgKCFpc1BsYXlpbmcoKSkKKyAgICAgICAgaWYgKCFtX2lzUGxheWlu
ZykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNl
ZnVsU2h1dGRvd24gPSB0aGlzOwotICAgICAgICBzdG9wKCk7Ci0gICAgfQotCi0gICAgdm9pZCBz
dGFydCgpIHsgbV9kZXN0aW5hdGlvbi0+c3RhcnQoeyB9KTsgfQotICAgIHZvaWQgc3RvcCgpIHsg
bV9kZXN0aW5hdGlvbi0+c3RvcCgpOyB9Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb24tPmZyYW1lc1BlckJ1ZmZlcigpIDsgfQot
Ci1wcml2YXRlOgotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBs
ZVJhdGUpCi0gICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgICAgICwgbV9p
ZChpZGVudGlmaWVyKQotICAgICAgICAsIG1fZGVzdGluYXRpb24oQXVkaW9EZXN0aW5hdGlvbjo6
Y3JlYXRlKCp0aGlzLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKQotICAgICAgICAsIG1fZmlmbyhudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmaWZvU2l6ZSkKLSAgICB7CiAgICAgfQogCi0gICAgdm9pZCByZW5k
ZXIoQXVkaW9CdXMqLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvSU9Qb3NpdGlvbiYgb3V0cHV0UG9zaXRpb24pIG92
ZXJyaWRlCisgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKICAgICB7
Ci0gICAgICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgICAgICBtX2Rlc2NyaXB0aW9u
ID0gZGVzY3JpcHRpb247CiAKLSAgICAgICAgaWYgKG1fcHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1
bFNodXRkb3duKQorICAgICAgICBpZiAoaXBjSGFuZGxlLmhhbmRsZS5pc051bGwoKSkgeworICAg
ICAgICAgICAgbV9yaW5nQnVmZmVyLT5kZWFsbG9jYXRlKCk7CisgICAgICAgICAgICBzdG9yYWdl
KCkuc2V0UmVhZE9ubHkoZmFsc2UpOworICAgICAgICAgICAgc3RvcmFnZSgpLnNldFN0b3JhZ2Uo
bnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgewotICAgICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2ZpZm9Mb2NrKTsKLSAgICAgICAgICAgIGZyYW1lc1Rv
UHJvY2VzcyA9IG1fZmlmby5wdWxsKGRlc3RpbmF0aW9uQnVzLCBmcmFtZXNUb1Byb2Nlc3MpOwog
ICAgICAgICB9Ci0gICAgICAgIGlmICghZnJhbWVzVG9Qcm9jZXNzKQotICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4gYnVmZmVyczsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlc3RpbmF0aW9uQnVzLT5udW1iZXJPZkNoYW5u
ZWxzKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFs
bG9jYXRlKHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICAgICAgYnVm
ZmVycy5hcHBlbmQoKm1lbW9yeSk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBtZW1vcnkgPSBT
aGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKKyAgICAgICAgc3RvcmFnZSgpLnNldFN0b3JhZ2UoV1RGTW92ZShtZW1v
cnkpKTsKKyAgICAgICAgc3RvcmFnZSgpLnNldFJlYWRPbmx5KHRydWUpOworCisgICAgICAgIG1f
cmluZ0J1ZmZlci0+YWxsb2NhdGUoZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKIAotICAg
ICAgICAvLyBGSVhNRTogSXQgaXMgdW5mb3J0dW5hdGUgd2UgaGF2ZSB0byBkaXNwYXRjaCB0byB0
aGUgbWFpbiB0aGVhZCBoZXJlLiBXZSBzaG91bGQgYmUgYWJsZSB0byBJUEMgc3RyYWlnaHQgZnJv
bSB0aGUKLSAgICAgICAgLy8gcmVuZGVyIHRocmVhZCBidXQgdGhpcyBpcyBub3Qgc3VwcG9ydGVk
IGJ5IHNlbmRXaXRoQXN5bmNSZXBseSgpLgotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lc1RvUHJvY2Vzcywgb3V0cHV0
UG9zaXRpb24sIGJ1ZmZlcnMgPSBXVEZNb3ZlKGJ1ZmZlcnMpXSgpIG11dGFibGUgewotICAgICAg
ICAgICAgUmVtb3RlQXVkaW9CdXNEYXRhIGJ1c0RhdGEgeyBmcmFtZXNUb1Byb2Nlc3MsIG91dHB1
dFBvc2l0aW9uLCBidWZmZXJzLm1hcChbXShhdXRvJiBtZW1vcnkpIHsgcmV0dXJuIG1lbW9yeS5j
b3B5UmVmKCk7IH0pIH07Ci0gICAgICAgICAgICBBU1NFUlQoZnJhbWVzVG9Qcm9jZXNzKTsKLSAg
ICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlbmRlckJ1ZmZlcihidXNEYXRh
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBidWZmZXJz
ID0gV1RGTW92ZShidWZmZXJzKSwgZnJhbWVzVG9Qcm9jZXNzXSgpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidWZmZXJzLnNpemUoKSwgZnJhbWVz
VG9Qcm9jZXNzLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGJ1ZmZlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIGF1ZGlvQnVzLT5z
ZXRDaGFubmVsTWVtb3J5KGksIHN0YXRpY19jYXN0PGZsb2F0Kj4oYnVmZmVyc1tpXS0+ZGF0YSgp
KSwgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgICAgIG1fZmlmby5wdXNoKGF1ZGlvQnVzLmdl
dCgpKTsKLSAgICAgICAgICAgIH0sIG1faWQudG9VSW50NjQoKSk7Ci0gICAgICAgIH0pOworICAg
ICAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6V2ViQXVkaW9CdWZm
ZXJMaXN0PihtX2Rlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICB2b2lkIGlzUGxheWluZ0RpZENo
YW5nZSgpIG92ZXJyaWRlCisgICAgdm9pZCBzdGFydCgpCiAgICAgewotICAgICAgICBpZiAobV9w
cm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24pIHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKSk7Ci0gICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZWZDb3VudCgpID09IDEpOwotICAgICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmlu
Z0dyYWNlZnVsU2h1dGRvd24gPSBudWxscHRyOyAvLyBEZWxldGVzICJ0aGlzIi4KLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlzUGxheWluZyA9IG1fZGVzdGluYXRpb24t
PmlzUGxheWluZygpLCBpZGVudGlmaWVyID0gbV9pZC50b1VJbnQ2NCgpXSB7Ci0gICAgICAgICAg
ICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6RGlkQ2hhbmdlSXNQbGF5aW5nKGlzUGxheWluZyksIGlkZW50aWZpZXIp
OwotICAgICAgICB9KTsKICAgICB9CiAKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBt
X2Nvbm5lY3Rpb247CisgICAgdm9pZCBzdG9wKCkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0
IGhhcmR3YXJlU2FtcGxlUmF0ZSkKKyAgICAgICAgLy8gOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlv
bikKKyAgICAgICAgOiBtX2lkKGlkZW50aWZpZXIpCisgICAgICAgICwgbV9hdWRpb091dHB1dFVu
aXRBZGFwdG9yKCp0aGlzKQorICAgICAgICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5pcXVlUmVmPFdl
YkNvcmU6OkNBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZT4obnVsbHB0cikpKQorICAgICAgICAvLyAsIG1fY29udGV4dFNhbXBsZVJhdGUoc2FtcGxlUmF0
ZSkKKyAgICB7CisgICAgICAgIAorICAgICAgICBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY29u
ZmlndXJlKGhhcmR3YXJlU2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAg
fQorCisgICAgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UmIHN0b3JhZ2UoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlJj4obV9yaW5nQnVm
ZmVyLT5zdG9yYWdlKCkpOworICAgIH0KKyAgICAKKyAgICBPU1N0YXR1cyByZW5kZXIoY29uc3Qg
QXVkaW9UaW1lU3RhbXAqLCBVSW50MzIsIEF1ZGlvQnVmZmVyTGlzdCopCisgICAgLy8gT1NTdGF0
dXMgcmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1lc3RhbXAsIFVJbnQzMiBudW1iZXJP
ZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCisgICAgeworICAgICAgICAvKgorICAg
ICAgICBzZW5kQXN5Y2hXaXRoUmVwbHkgeworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5zZXRD
dXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOworICAgICAgICAgICAgbV9h
dWRpb0J1ZmZlckxpc3QtPnNldFNhbXBsZUNvdW50KG51bWJlck9mRnJhbWVzKTsKKyAgICAgICAg
ICAgIG1fcmluZ0J1ZmZlci0+ZmV0Y2gobV9hdWRpb0J1ZmZlckxpc3QtPmxpc3QoKSwgbnVtYmVy
T2ZGcmFtZXMsIHRpbWUudGltZVZhbHVlKCkpOworICAgICAgICB9Ki8KKyAgICAgICAgcmV0dXJu
IG5vRXJyOworICAgIH0KKworICAgIC8vIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29u
bmVjdGlvbjsKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBtX2lkOwotICAg
IFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBtX2Rlc3RpbmF0aW9uOwogICAgIFJlZlB0cjxSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uPiBtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93bjsK
LSAgICBMb2NrIG1fZmlmb0xvY2s7Ci0gICAgV2ViQ29yZTo6UHVzaFB1bGxGSUZPIG1fZmlmbzsK
KworICAgIFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1dFVuaXRB
ZGFwdG9yOworCisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1fZGVzY3Jp
cHRpb247CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVy
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+IG1fYXVk
aW9CdWZmZXJMaXN0OworCisgICAgLy8gZmxvYXQgbV9jb250ZXh0U2FtcGxlUmF0ZTsKKyAgICBi
b29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKIH07CiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW9uKQpAQCAtMTQ4LDE0ICsxNDIsMTMgQEAgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5lY3Rp
b25Ub1dlYlAKIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6On5SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKIAotdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2
aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCB1bnNpZ25lZCBmcmFtZXNQZXJC
dWZmZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNl
SWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLAor
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gbmV3SUQgPSBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7Ci0gICAgYXV0byBk
ZXN0aW5hdGlvbiA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MsIG5ld0lELCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwotICAgIGF1dG8gZnJhbWVz
UGVyQnVmZmVyID0gZGVzdGluYXRpb24tPmZyYW1lc1BlckJ1ZmZlcigpOworICAgIGF1dG8gZGVz
dGluYXRpb24gPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUobV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUp
OwogICAgIG1fYXVkaW9EZXN0aW5hdGlvbnMuYWRkKG5ld0lELCBXVEZNb3ZlKGRlc3RpbmF0aW9u
KSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQsIGZyYW1lc1BlckJ1ZmZlcik7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIobmV3SUQpOwogfQogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyOjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTE3MSw3ICsxNjQsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyOjpzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgog
ICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlv
RGVzdGluYXRpb25zLmdldChpZGVudGlmaWVyKSkgewogICAgICAgICBpdGVtLT5zdGFydCgpOwot
ICAgICAgICBpc1BsYXlpbmcgPSBpdGVtLT5pc1BsYXlpbmcoKTsKKyAgICAgICAgLy8gaXNQbGF5
aW5nID0gaXRlbS0+aXNQbGF5aW5nKCk7CiAgICAgfQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGlz
UGxheWluZyk7CiB9CkBAIC0xODEsMTEgKzE3NCwxNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SQogICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1
ZGlvRGVzdGluYXRpb25zLmdldChpZGVudGlmaWVyKSkgewogICAgICAgICBpdGVtLT5zdG9wKCk7
Ci0gICAgICAgIGlzUGxheWluZyA9IGl0ZW0tPmlzUGxheWluZygpOworICAgICAgICAvLyBpc1Bs
YXlpbmcgPSBpdGVtLT5pc1BsYXlpbmcoKTsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
aXNQbGF5aW5nKTsKIH0KIAordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6YXVk
aW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgY29u
c3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0
X3QgbnVtYmVyT2ZGcmFtZXMpCit7CisgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGlu
YXRpb25zLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgaXRlbS0+YXVkaW9TYW1wbGVzU3RvcmFn
ZUNoYW5nZWQoaXBjSGFuZGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKaW5kZXggMTFiNGJl
ZjEwNDFiN2EwOGFmM2IxYjA5ZGUzODRjMDNkNTg5M2QxZS4uM2IwOWNkNTA5NzI4YzYwM2FjMzQ3
YWQzYWJhM2JkYzIyNWY5MjU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgpAQCAtNDYsMjUgKzQ3LDIzIEBAIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgflJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGlu
YXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJh
dGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIsIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcik+JiYpOwotICAgIHZvaWQgZGVsZXRlQXVkaW9E
ZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7Ci0gICAgdm9pZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0KLSAgICB2b2lk
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYgZW5jb2RlcikKLSAgICB7Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKLSAgICB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIp
IHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCisgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0
aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
LCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVz
dGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworICAgIHZvaWQgc3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgYXVk
aW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOworCiAgICAgSGFzaE1h
cDxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb24+PiBtX2F1ZGlvRGVzdGluYXRpb25zOwogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmU7Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXIubWVzc2FnZXMuaW4KaW5kZXggYmMwNWFlMTE3OWFhMmFkMzRlMzMzODUzMmJlZGI1ZTZi
NGQ0MjNhMC4uMmJjOWVkYzcxYjk0ZTg2NzljYzIwYjYyZDgxYTkzMmNlMzE1NWIwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjQsMTQgKzI0
LDE0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogCiBt
ZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsK
LQotICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2aWNlSWQsIHVpbnQz
Ml90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKSBTeW5jaHJvbm91
cwotCisgICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWlu
dDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpIC0+IChXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9u
b3VzCiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAKICAgICBTdGFydEF1ZGlv
RGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVu
dGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCiAgICAgU3RvcEF1ZGlvRGVz
dGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCi0KKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKKyNlbmRpZgogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDk1NWRlOTFkY2NhMDI1MzgyOGMxMGVhNWQ4M2E2NGRlOTY1MjIwMDIuLmQ0MjI0YzZlYjg5MjUx
OGVhZmJjOGZjN2I3NGUyNzY1YTQyNTFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMCw3ICsxNDMwLDYgQEAKIAkJOUI1NDk5
QjIyMzYyQTdFQzAwREY4QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU0OTlCMDIz
NjJBN0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjVCRUMyNjI0
MDBGNEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMjQyNDAwRjRBOTAwNzBDNkVGIC8qIFdl
Yk1lZGlhU3RyYXRlZ3kuaCAqLzsgfTsKIAkJOUI1QkVDMkEyNDAxMDE1ODAwNzBDNkVGIC8qIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5oICovOyB9OwotCQk5QjVCRUMzMTI0MDEwMjIyMDA3MEM2RUYgLyog
UmVtb3RlQXVkaW9CdXNEYXRhLmggaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCNUJFQzMwMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0Rh
dGEuaCAqLzsgfTsKIAkJOUVDNTMyQTMyNDQ3RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUVDNTMyQTIyNDQ3RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oICovOyB9
OwogCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTMxNjlF
NkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTAyQTcwODFFQzBFRUU5MDBEODFEODIg
LyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgaW4gQ29weSBQbHVn
LWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBF
U1IucGx1Z2luLnNiICovOyB9OwpAQCAtMjEzOSw3ICsyMTM4LDYgQEAKIAkJCQkyREI5NjA1MzIz
OTg4NkMxMDAxMDI3OTEgLyogY29tLmFwcGxlLldlYktpdC5HUFUuc2IgaW4gQ29weUZpbGVzICov
LAogCQkJCUE3OENDRERCMTkzQUM5RjgwMDVFQ0MyNSAvKiBjb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtpbmcuc2IgaW4gQ29weUZpbGVzICovLAogCQkJCUE3OENDRERDMTkzQUM5RkIwMDVFQ0MyNSAv
KiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgaW4gQ29weUZpbGVzICovLAotCQkJCTlC
NUJFQzMxMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBDb3B5Rmls
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC00NTQwLDcgKzQ1MzgsNiBAQAogCQk5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYg
LyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjVC
RUMyOTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNUJFQzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5
QjVCRUMzMDI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9CdXNEYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUF1ZGlvQnVzRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5QkM1OUQ2QzFFRkNDQ0I2MDAxRThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlFQzUzMkEyMjQ0N0ZCQUQwMDIxNTIxNiAvKiBH
ZW9sb2NhdGlvbklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvbG9jYXRpb25JZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTU1LDcgKzU1NTIsNiBAQAog
CQkJCTA3OTIzMTMxMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwICovLAogCQkJCTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuaCAqLywKIAkJCQkwN0IxRDA0QjIzRDM4RkNFMDAzOTlBNkUgLyogTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluICovLAotCQkJCTlCNUJFQzMwMjQwMTAyMjIwMDcw
QzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCAqLywKIAkJCQk5QjVCRUMyOTI0MDEwMTU4MDA3
MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLywKIAkJCQk5QjVCRUMy
ODI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi8sCiAJ
CQkJOUI1QkVDMkUyNDAxMDE4QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvQnVzRGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxZmMyZjBjNjYwNjk2YWUzNDg2MWMwYjI0ODBhZDA1N2ZlYTE5NjA5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCi0KLSNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1
ZGlvSU9DYWxsYmFjay5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgUmVtb3RlQXVkaW9CdXNEYXRhIHsKLSAgICB1aW50
NjRfdCBmcmFtZXNUb1Byb2Nlc3MgeyAwIH07Ci0gICAgV2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9u
IG91dHB1dFBvc2l0aW9uOwotICAgIFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4gY2hhbm5lbEJ1
ZmZlcnM7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgotICAgIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBlbmNvZGVyIDw8IGZyYW1l
c1RvUHJvY2VzczsKLSAgICAgICAgZW5jb2RlciA8PCBvdXRwdXRQb3NpdGlvbjsKLSAgICAgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpKTsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGFubmVsQnVmZmVycy5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwotICAgICAgICAg
ICAgY2hhbm5lbEJ1ZmZlcnNbaV0tPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGNoYW5uZWxCdWZmZXJzW2ldLT5zaXpl
KCkgfTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+
Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBSZW1vdGVBdWRpb0J1c0RhdGEmIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHVpbnQ2NF90
IGZyYW1lc1RvUHJvY2VzczsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZXNUb1By
b2Nlc3MpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQuZnJhbWVz
VG9Qcm9jZXNzID0gZnJhbWVzVG9Qcm9jZXNzOwotCi0gICAgICAgIFdlYkNvcmU6OkF1ZGlvSU9Q
b3NpdGlvbiBvdXRwdXRQb3NpdGlvbjsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvdXRw
dXRQb3NpdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdC5v
dXRwdXRQb3NpdGlvbiA9IG91dHB1dFBvc2l0aW9uOwotCi0gICAgICAgIHVpbnQ2NF90IHNpemUg
PSAwOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7Ci0gICAgICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKGF1dG8gbWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojpt
YXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUp
KQotICAgICAgICAgICAgICAgIHJlc3VsdC5jaGFubmVsQnVmZmVycy5hcHBlbmQobWVtb3J5LnJl
bGVhc2VOb25OdWxsKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5LmNwcAppbmRleCA4NDA0YzQ4ZTFjMmU0ODJhYmNkMjRlNTVkMmNjOTEzYmQyNjdlNzQx
Li5jY2Q4ZTFlMjliYThkMjc0OTQyNjVlODNkNmFiMDIxMmVkMmQ1M2RlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC0zOSw3ICszOSw5IEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi11c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOworLy8gQWxsb2Nh
dGUgYSByaW5nIGJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiAyIHNlY29uZHMgb2YgYXVk
aW8uCitjb25zdGV4cHIgc2l6ZV90IHJpbmdCdWZmZXJTaXplSW5TZWNvbmQgPSAyOworCiB1c2lu
ZyBBdWRpb0Rlc3RpbmF0aW9uID0gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjsKIHVzaW5nIEF1
ZGlvSU9DYWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFjazsKIApAQCAtNTAsMTYgKzUy
LDE1IEBAIFJlZjxBdWRpb0Rlc3RpbmF0aW9uPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6
OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiCiB9CiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KEF1ZGlvSU9DYWxsYmFjayYgY2Fs
bGJhY2ssIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKQotICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAsIG1fc2FtcGxlUmF0ZShzYW1w
bGVSYXRlKQorICAgIDogV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKGNhbGxiYWNrLCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKQorICAgICwgbV9yaW5nQnVmZmVyKG1h
a2VVbmlxdWU8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlPih0aGlzKSkpCiB7CiAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50
aWZpZXIgZGVzdGluYXRpb25JRDsKLSAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIgeyAwIH07
CiAKICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5k
U3luYygKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpD
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVs
cywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSksCi0gICAgICAgIE1lc3NhZ2Vz
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6
UmVwbHkoZGVzdGluYXRpb25JRCwgZnJhbWVzUGVyQnVmZmVyKSwgMCk7CisgICAgICAgIE1lc3Nh
Z2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlv
bihpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSgpKSwKKyAgICAgICAgTWVzc2Fn
ZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9u
OjpSZXBseShkZXN0aW5hdGlvbklEKSwgMCk7CiAKICAgICBhdXRvIG9mZlRocmVhZFJlbmRlcmlu
ZyA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CiAg
ICAgICAgIHdoaWxlICghbV90aHJlYWRUYXNrUXVldWUuaXNLaWxsZWQoKSkgewpAQCAtNzIsNyAr
NzMsMTEgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmEKICAgICBjb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzLCBkZXN0aW5hdGlvbklELnRv
VUludDY0KCkpOwogCiAgICAgbV9kZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKLSAgICBt
X2ZyYW1lc1BlckJ1ZmZlciA9IGZyYW1lc1BlckJ1ZmZlcjsKKworICAgIEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKHN0cmVhbUZvcm1hdCk7CisgICAgbV9udW1iZXJPZkZyYW1lcyA9IGhhcmR3YXJlU2Ft
cGxlUmF0ZSgpICogcmluZ0J1ZmZlclNpemVJblNlY29uZDsKKyAgICBtX3JpbmdCdWZmZXItPmFs
bG9jYXRlKHN0cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1lcyk7CiB9CiAKIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSgpCkBAIC0xMDUs
MTcgKzExMCwxMiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcCgpCiAg
ICAgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlbmRlckJ1ZmZlcihjb25zdCBXZWJLaXQ6OlJlbW90ZUF1
ZGlvQnVzRGF0YSYgYXVkaW9CdXNEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVz
dEJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lZGlhVGltZSwgdWludDY0X3QsIHVpbnQ2
NF90LCB1aW50NjRfdCk+JiYgLypjb21wbGV0aW9uSGFuZGxlciovKQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNz
KTsKLSAgICBBU1NFUlQoYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJzLnNpemUoKSk7Ci0gICAg
YXV0byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZm
ZXJzLnNpemUoKSwgYXVkaW9CdXNEYXRhLmZyYW1lc1RvUHJvY2VzcywgZmFsc2UpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdWRpb0J1c0RhdGEuY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgp
OyArK2kpCi0gICAgICAgIGF1ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIChmbG9hdCopYXVk
aW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJzW2ldLT5kYXRhKCksIGF1ZGlvQnVzRGF0YS5mcmFtZXNU
b1Byb2Nlc3MpOwotCi0gICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgYXVkaW9CdXMuZ2V0KCksIGF1
ZGlvQnVzRGF0YS5mcmFtZXNUb1Byb2Nlc3MsIGF1ZGlvQnVzRGF0YS5vdXRwdXRQb3NpdGlvbik7
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAKKyAgICAvLyBGZXRjaCBidWZmZXIgYW5k
IGxldCBHUFUgcHJvY2VzcyBrbm93IHRoZSBidWZmZXIgaXMgYXZhaWxhYmxlCisgICAgLy8gY29t
cGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6
OmRpZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxheWluZykKQEAgLTEzMyw2ICsxMzMsMjYgQEAg
dm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rp
b248dm9pZCgpPiYmIHRhc2spCiAgICAgbV90aHJlYWRUYXNrUXVldWUuYXBwZW5kKFdURk1vdmUo
dGFzaykpOwogfQogCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcmFnZUNo
YW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlKQoreworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxl
IGhhbmRsZTsKKyAgICBpZiAoc3RvcmFnZSkKKyAgICAgICAgc3RvcmFnZS0+Y3JlYXRlSGFuZGxl
KGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisKKyAgICAvLyBG
SVhNRTogU2VuZCB0aGUgYWN0dWFsIGRhdGEgc2l6ZSB3aXRoIElQQ0hhbmRsZS4KKyNpZiBPUyhE
QVJXSU4pIHx8IE9TKFdJTkRPV1MpCisgICAgdWludDY0X3QgZGF0YVNpemUgPSBoYW5kbGUuc2l6
ZSgpOworI2Vsc2UKKyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9IDA7CisjZW5kaWYKKworICAgIEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CisKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6QXVkaW9TYW1w
bGVzU3RvcmFnZUNoYW5nZWQgeyBtX2Rlc3RpbmF0aW9uSUQsIFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9LCBzdHJlYW1Gb3JtYXQsIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihtX251bWJlck9mRnJhbWVzKSB9LCAwKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJf
QVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAppbmRleCBjNGFkYjc1NjBkNDYz
NzU4ZWU3MTU2ZjAxZWVjOTk1OGQzY2ZkZTY2Li42Y2M2MTdlNDFlMTVjMTNmYzQ1ODg2NmZjMTg0
ZGI5NzU2NjdhZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKQEAgLTI4LDI0
ICsyOCwzMSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykK
IAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJSZW1vdGVBdWRpb0J1c0RhdGEu
aCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3Rp
bmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNpbmNsdWRl
IDx3dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRl
ICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5IDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBJUEM6OkNvbm5l
Y3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uQ29jb2EKKyAgICAsIHB1YmxpYyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6
Q2xpZW50CisjZWxzZQorICAgIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24KKyNl
bmRpZgorICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkp
OwogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6QXVkaW9CdXM7CiAgICAg
dXNpbmcgQXVkaW9JT0NhbGxiYWNrID0gV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNrOwogICAgIHVz
aW5nIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OnJlZjsKICAgICB1c2luZyBXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uOjpkZXJlZjsKQEAgLTU3LDE2ICs2NCwxOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7IH0KIAotICAgIHZvaWQgcmVuZGVyQnVmZmVyKGNvbnN0IFdlYktp
dDo6UmVtb3RlQXVkaW9CdXNEYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIHJlcXVlc3RCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZWRpYVRpbWUsIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRG
cmFtZSk+JiYpOwogICAgIHZvaWQgZGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKTsK
IAogcHJpdmF0ZToKLSAgICAvLyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uCi0gICAgdm9pZCBz
dGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRl
clRocmVhZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBp
c1BsYXlpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzUGxheWluZzsgfQotICAgIGZsb2F0IHNh
bXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KLSAgICB1
bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZyYW1l
c1BlckJ1ZmZlcjsgfQorICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lk
KCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpIGZpbmFsOworICAgIHZvaWQgc3RvcCgp
IGZpbmFsOworICAgIGJvb2wgaXNQbGF5aW5nKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIC8vIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpDbGll
bnQKKyAgICB2b2lkIHN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSopOworI2VuZGlmCiAKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC03NiwxMSArODUsMTQgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlZk1lc3NhZ2VSZWNlaXZlcigpIGZpbmFsIHsgV2ViQ29yZTo6
QXVkaW9EZXN0aW5hdGlvbjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmTWVzc2FnZVJlY2VpdmVy
KCkgZmluYWwgeyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpkZXJlZigpOyB9CiAKLSAgICBB
dWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7Ci0gICAgZmxvYXQgbV9zYW1wbGVSYXRlIHsgMC4g
fTsKLSAgICB1bnNpZ25lZCBtX2ZyYW1lc1BlckJ1ZmZlciB7IDAgfTsKICAgICBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllciBtX2Rlc3RpbmF0aW9uSUQ7CiAgICAgYm9vbCBtX2lzUGxh
eWluZyB7IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgaW50NjRfdCBtX251
bWJlck9mRnJhbWVzIHsgMCB9OworI2VuZGlmCisKICAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9u
PHZvaWQoKT4mJik+IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZDsKICAgICBSZWZQdHI8VGhyZWFk
PiBtX3JlbmRlclRocmVhZDsKICAgICBDcm9zc1RocmVhZFF1ZXVlPEZ1bmN0aW9uPHZvaWQoKT4+
IG1fdGhyZWFkVGFza1F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5tZXNzYWdlcy5pbgppbmRleCBhZTFmYzcwNjk4NzE0Yzg3MDVlNTgyNDgxOTQ2NWJhYjMyNjNm
MDYxLi5iYWE4ZWJkZjllNTIzZTliMGUwZTQ0YWRjOGI1Nzg1ZWYwODg3NzRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsMTAgKzI0
LDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCiAKIG1l
c3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBOb3RSZWZDb3VudGVkIHsKLQot
ICAgIFJlbmRlckJ1ZmZlcihzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVBdWRpb0J1c0RhdGEgZGF0YSkg
LT4gKCkgQXN5bmMKKyAgICByZXF1ZXN0QnVmZmVyKCkgLT4gKE1lZGlhVGltZSB0aW1lLCB1aW50
NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJh
bWUpIEFzeW5jCiAgICAgRGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQotCiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCmluZGV4IDg3
OTlmMTk4NDcxNDExZWM2ZjczOWEzODc5MzY0ZDI0NzUxMmVhNDQuLjJlMGE2YjFmODM5MzJhZTgz
MzVkZjRlYWE0ZWI1MzVmODU4NzEyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlcjo6cHVzaFNhbXBsZXMoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBXZWIKIAog
ICAgICAgICAvLyBBbGxvY2F0ZSBhIHJpbmcgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBjb250YWlu
IDIgc2Vjb25kcyBvZiBhdWRpby4KICAgICAgICAgbV9udW1iZXJPZkZyYW1lcyA9IG1fZGVzY3Jp
cHRpb24uc2FtcGxlUmF0ZSgpICogMjsKLSAgICAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZSht
X2Rlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbnVtYmVyT2ZGcmFtZXMpOworICAg
ICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKG1fZGVzY3JpcHRpb24sIG1fbnVtYmVyT2ZGcmFt
ZXMpOwogICAgIH0KIAogICAgIEFTU0VSVChpczxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+
KGF1ZGlvRGF0YSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411401</attachid>
            <date>2020-10-14 20:51:42 -0700</date>
            <delta_ts>2020-10-14 21:01:51 -0700</delta_ts>
            <desc>WIP patch v2</desc>
            <filename>bug-217715-20201014205141.patch</filename>
            <type>text/plain</type>
            <size>88076</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ3MWFlZjc3YmQ4NmZl
MTBkMmJjMDQ4NWE5OWUzZGQ3ZTI0NTkxZS4uOGJlYjM3Mzc4MDczMmExMDQ3NmRlZDRmMmNmMTA2
MjI2MGQ5Y2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9j
ZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8g
ZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6aW5wdXRQcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRV
bml0QWRhcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRv
cklPUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2spOgorCiAyMDIwLTEwLTE0ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFZlY3Rvck1hdGg6Om11
bHRpcGx5VGhlbkFkZFNjYWxhcigpIGZvciBjbGFyaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkYjZjMTc4OGNi
ZmJhYjEzMGQyZWIzMDVkYTc1ZTI5YmI4ZGExNDcuLmI0OGI4NzIyZWIyNjE3NjdmYjEyMjhiZmNm
ZWM1MDk0ZmRmM2FhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMTAtMTQgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWEgaW4gR1BVIFBy
b2Nlc3NdIFVzZSBDQVJpbmdCdWZmZXIgdG8gdHJhbnNmZXIgYXVkaW8gZGF0YSBvZiBhbiBhdWRp
byBkZXN0aW5hdGlvbiBmcm9tIGEgd2ViIHByb2Nlc3MgdG8gdGhlIEdQVSBQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93bklm
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6YXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246
OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnJl
bmRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b246OmlzUGxheWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OmZyYW1lc1BlckJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9CdXNEYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3Jh
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpyZW5kZXJCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6cHVzaFNh
bXBsZXMpOgorCiAyMDIwLTEwLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBub24tQ29jb2EgcGxhdGZvcm1zICYg
cmVsZWFzZSBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggYzU2NzBjMzY0ODU3NWU4ODBlYjY4NWUw
YTNhMTM1YzI5MjQzNzViYi4uZTMyMjM3MjNkNzc4ZmVlMTNmNDcyYzRkMjExMGVjOTM2YjgwZmFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
QXVkaW9EZXN0aW5hdGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfkF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCi0gICAgLy8gQXVkaW9Ob2RlICAgCisgICAgLy8g
QXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCkgb3ZlcnJpZGUgeyB9OyAvLyB3ZSdy
ZSBwdWxsZWQgYnkgaGFyZHdhcmUgc28gdGhpcyBpcyBuZXZlciBjYWxsZWQKICAgICAKICAgICAv
LyBUaGUgYXVkaW8gaGFyZHdhcmUgY2FsbHMgcmVuZGVyKCkgdG8gZ2V0IHRoZSBuZXh0IHJlbmRl
ciBxdWFudHVtIG9mIGF1ZGlvIGludG8gZGVzdGluYXRpb25CdXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCBmOTU5ZTM5ODI5NjYwNTA5MDNhYWM4NWI4YWYyNDJkYTE1NDM0YTg5Li41OTI2
NjA2Mzg5OGY0MTM2YTliZjU1YzI2ODkxYTU2YmJhMzE2ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTIwMywxOSArMjAzLDIwIEBAIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQogcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNw
cAorcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAKIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVm
ZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCi1wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9C
dXNNYWMubW0KLXBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
SGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25N
YWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3YjUzM2VmNmM1ZjQ0Y2RiODdkYmI4MTIxMTc4OTVjMGNkYzMxZWUzLi42ODYw
ODBjYzExZGZiNTAxZmZkNjNmNTJlYjQxYThiNDJhNmUxYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzMsNiArNjMzLDcg
QEAKIAkJMURBQjMxMTIyNTFENkJGMzAwRkM5NDg1IC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEIzMUEx
MjM3OURDODMwMDg4M0ZERSAvKiBXZWJWaWRlb0NvbnRhaW5lckxheWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMURBQjMxMTQyNTFENzI1QzAw
RkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxREFCMzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXll
ck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxREFCMzExNTI1MUQ3NERCMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RTFD
NTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMURCNjZEM0IyNTM3QTk1NjAwQjY3
MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFERDNCNEM2
MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0
QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkxREY3RTgxRjI1MUE5RTA2
MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00MTI3LDcgKzQxMjgsNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2
MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MDFFMjNG
QTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgKi87IH07CiAJCUNEMDYzRjgzMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MTFFMjNGQTg5MDA4MTJCRTMgLyogSW5p
dERhdGFSZWdpc3RyeS5oICovOyB9OwotCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHAgKi87IH07CisJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVu
aXRBZGFwdG9ySU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9y
SU9TLmNwcCAqLzsgfTsKIAkJQ0QxMUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8q
IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRDE3QTQ1RDIxMzc0MDgxMDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxN0E0NTky
MTM3NDAxNjAwNzlFQzdCIC8qIFVuaWZpZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKQEAgLTUzMDQs
NyArNTMwNSw2IEBACiAJCUZEMzE2MEFCMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2
ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQzMTYwNzUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggKi87IH07
CiAJCUZEMzE2MEFEMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzcxMkIwMjZG
NzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggKi87IH07CiAJCUZEMzE2MEFGMTJCMDI2
RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5o
ICovOyB9OwotCQlGRDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYw
QjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLzsgfTsKIAkJRkQz
MTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFB
MzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBF
MUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDM1OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJh
bVRpbWVsaW5lLmggKi87IH07CiAJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0Yx
NzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY3NTQsNiArNjc1NCw4IEBACiAJCTFEMDAyNkE5MjM3NEY5
RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2
QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBQjMxMTMy
NTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZp
ZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEQjY2RDM3
MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMURCNjZEMzgyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJl
SW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZU9ic2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZEMjExQkExMkEwMDRC
NzgwRSAvKiBOYXZpZ2F0b3JTaGFyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdh
dG9yU2hhcmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRjIxMUJB
ODQxMDA0Qjc4MEUgLyogU2hhcmVEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFy
ZURhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyOTQsOCArMTQyOTYs
NyBAQAogCQlDRDA2M0Y4MDFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0RGF0YVJlZ2lzdHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwNjNGODExRTIzRkE4OTAwODEyQkUz
IC8qIEluaXREYXRhUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5pdERhdGFSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBDOEI1
ODIxNDFDOENBMDA2MkY1OUQgLyogTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFw
dG9ySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxMUIzREYyMjdDQUFB
OTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3
REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1NjAsOCArMTY1NjEsNyBAQAogCQlGRDMxNjA3
ODEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWZWN0b3JNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkQzMTYwNzkxMkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb0J1c01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1
ZGlvRGVzdGluYXRpb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25NYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZEMzE2MEI4MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQjkxMkIwMjcyQTAw
QzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkQzMTYwQkExMkIwMjcyQTAwQzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZGVEZyYW1lTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI3Mjk2LDEwICsyNzI5Niw5IEBACiAJCUNEMEVFRTBEMTQ3NDNF
NDgwMDNFQUZBMiAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcCAqLywKLQkJCQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlv
bklPUy5oICovLAogCQkJCUNENTU5NjhGMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFk
ZXJJT1MuY3BwICovLAogCQkJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVS
ZWFkZXJJT1MuaCAqLywKKwkJCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRw
dXRVbml0QWRhcHRvcklPUy5jcHAgKi8sCiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8q
IEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywKIAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4
IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSAqLywKQEAgLTI3MzY0LDYgKzI3MzYzLDggQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTQxMzE1MTg0MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwICovLAogCQkJCTQxMzE1MTg2MjM1Nzc0NUUwMDExNUU2RSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCAqLywKKwkJCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgKi8sCisJCQkJMURCNjZEMzcyNTM2NzhFQTAw
QjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCAqLywKIAkJCQkwNzNCODc2MjFFNDM4
NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcCAqLywKIAkJCQkwNzNCODc2
MzFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggKi8sCiAJCQkJMDcz
Qjg3NjUxRTQzODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oICovLApAQCAt
MzAyNzUsMTIgKzMwMjc2LDExIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAqLywKLQkJ
CQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8s
Ci0JCQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAq
LywKIAkJCQlGRDMxNjBCODEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCOTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFj
LmggKi8sCiAJCQkJQ0QyRjRBMjUxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lck1hYy5jcHAgKi8sCiAJCQkJQ0QyRjRBMjYxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFy
ZHdhcmVMaXN0ZW5lck1hYy5oICovLAorCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBB
dWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1
RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMx
QTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8sCiAJCQkpOwpAQCAtMzA1NjEsNyArMzA1NjEsNiBA
QAogCQkJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGlu
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovLAotCQkJCUZEMzE2MEJEMTJCMDI3
MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAwODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDgwMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNTc3LDYgKzMwNTc2LDcgQEAK
IAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU3MTQ2N0IzMjRBQkFFRjIwMEZCMkY1MCAvKiBBdWRpb05vZGVPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9O
b2RlT3V0cHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxREI2NkQzQjI1MzdBOTU2MDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUQx
MkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzU2
OTlFMjUyQ0YzNjIwMEUxQjk1NiAvKiBBdWRpb1BhcmFtRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNCOTg3MEMyNTIyNUY4MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1NYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzA2NTQsNyArMzA2NTQsNiBAQAogCQkJCTUxNzQxRDBGMEIwNzI1OUEw
MEVENDQyQyAvKiBCYWNrRm9yd2FyZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOEM4
MUUxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBMUI4N0QyMDg3QzRDMDAwOTc5QTc1IC8qIEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOTQ3MjE3MjUzMjNDMjEwMEYxNTNDOCAvKiBC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMjRFRTgwQzI2
NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2MEJCNjE2MUQw
QTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
MTk4RkJGMjRBMTYwREQwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAq
LywKQEAgLTM1MjM5LDggKzM1MjM4LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCUE5Nzg3Q0I0MUY1
RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzFGN0I3MzEyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAx
RDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMEVF
RTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25J
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2NDMgLyogQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREUzQTg1NzE3
RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9u
LmgKaW5kZXggMTYwYzY1NzhlMTVlZDVlYTc1MjVkYzc2OGJkNGVmM2ZkYzc0ZjRmZi4uNDE5NjU1
MmQ5MTVhODliNGEwNWY4NDc2NGQ1ZmVhYzA1NjYyNDk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4gaW4gQXVk
aW9EZXN0aW5hdGlvbiB0byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUKICAgICB2aXJ0dWFsIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7Ci0gICAgc3RhdGljIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUoKTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Qg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCAxZDBmNGUyODgxMTg3ZTdiMzUw
MjkwYjAyMzNjYjhiMGMyMWFmNGU2Li4yYzk3MWVhN2U2MzdhNTg1ZGY4NjY1OGMxNGEzMzdmODYw
OGFlNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTM1LDYgKzM1LDEwIEBACiAj
aW5jbHVkZSAiTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgiCiAjaW5jbHVkZSAiUHVzaFB1bGxGSUZP
LmgiCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3RleHByIHNpemVfdCBmaWZvU2l6ZSA9IDk2
ICogQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwpAQCAtNTYsNyArNjAsNiBAQCBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGNvbnN0CiAgICAgICAgIHJldHVybiBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OmNyZWF0ZU92ZXJyaWRlKGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIAogICAgIGF1dG8gZGVz
dGluYXRpb24gPSBhZG9wdFJlZigqbmV3IEF1ZGlvRGVzdGluYXRpb25Db2NvYShjYWxsYmFjaywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOwotICAgIGRlc3RpbmF0aW9uLT5j
b25maWd1cmUoKTsKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKQEAgLTcxLDE0ICs3NCwx
NCBAQCB1bnNpZ25lZCBsb25nIEF1ZGlvRGVzdGluYXRpb246Om1heENoYW5uZWxDb3VudCgpCiB9
CiAKIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUpCi0gICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICA6IG1fYXVkaW9PdXRwdXRV
bml0QWRhcHRvcigqdGhpcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX291
dHB1dEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1ZGlvVXRp
bGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxsKCkpCiAgICAg
LCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1
ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSkucmVsZWFzZU5vbk51bGwoKSkKICAgICAs
IG1fZmlmbyhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4obnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmlmb1NpemUpKQogICAgICwgbV9jb250ZXh0U2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogewot
ICAgIGNvbmZpZ3VyZSgpOworICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUo
aGFyZHdhcmVTYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgYXV0
byBoYXJkd2FyZVNhbXBsZVJhdGUgPSB0aGlzLT5oYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBp
ZiAoc2FtcGxlUmF0ZSAhPSBoYXJkd2FyZVNhbXBsZVJhdGUpIHsKQEAgLTg3LDExICs5MCw3IEBA
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkCiAgICAgfQogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKQotewotICAgIGlmIChtX291dHB1dFVuaXQpCi0g
ICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Ci19CitB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKSA9IGRlZmF1bHQ7
CiAKIHVuc2lnbmVkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6bnVtYmVyT2ZPdXRwdXRDaGFubmVs
cygpIGNvbnN0CiB7CkBAIC0xMDcsNyArMTA2LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFQK
IHsKICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAg
bV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFk
KTsKLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVu
aXQpOworICAgIE9TU3RhdHVzIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFy
dCgpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHNldElzUGxheWluZyh0cnVlKTsKQEAg
LTExNiw3ICsxMTUsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rp
b248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVAogdm9pZCBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25D
b2NvYTo6c3RvcCIpOwotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3Ao
bV9vdXRwdXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFk
YXB0b3Iuc3RvcCgpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAK
ICAgICBpZiAoIXJlc3VsdCkKQEAgLTEzMyw3ICsxMzIsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2suaXNQ
bGF5aW5nRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBz
dHJlYW1Gb3JtYXQpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Z2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0
KQogewogICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwogICAg
IGNvbnN0IGludCBiaXRzUGVyQnl0ZSA9IDg7CkBAIC0xNTcsNiArMTU2LDIxIEBAIHN0YXRpYyB2
b2lkIGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKEF1ZGlvQnVmZmVyKiBidWZmZXJzLCBBdWRpb0J1
cyYgYnVzLCBVSW50MzIKICAgICB9CiB9CiAKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpw
cm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVkaW9CdXMmIGJ1cywgVUludDMyIG51bWJlck9mRnJhbWVz
KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUu
LCBbLTEuMCwgMS4wXSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9m
Q2hhbm5lbHMoKTsgKytpKSB7CisgICAgICAgIGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChp
KTsKKyAgICAgICAgaWYgKCFjaGFubmVsLT5pc1NpbGVudCgpKQorICAgICAgICAgICAgVmVjdG9y
TWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgpLCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEo
KSwgbnVtYmVyT2ZGcmFtZXMpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGJ1cyk7
CisgICAgVU5VU0VEX1BBUkFNKG51bWJlck9mRnJhbWVzKTsKKyNlbmRpZgorfQorCiAvLyBQdWxs
cyBvbiBvdXIgcHJvdmlkZXIgdG8gZ2V0IHJlbmRlcmVkIGF1ZGlvIHN0cmVhbS4KIE9TU3RhdHVz
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1l
c3RhbXAsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCiB7
CkBAIC0yMTAsMTMgKzIyNCw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJP
blJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8vIERl
ZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBj
b25zdCBBdWRpb1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBhdXRv
KiBhdWRpb091dHB1dCA9IHN0YXRpY19jYXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVzZXJE
YXRhKTsKLSAgICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9m
RnJhbWVzLCBpb0RhdGEpOwotfQotCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlk
ZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0aWxp
dGllczo6cmVuZGVyUXVhbnR1bVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAwODk0
ZDYyMWEyZjE1MzIyNTEyNzM2NTBiNmU1YTNkM2VjOTk2ZjhhLi43MDcyZTE4ZTRlMWEyN2YxNDQw
NDAxYjg0YzBlNWI3ZDIyMjc4NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgogI2luY2x1ZGUgIkF1ZGlv
SU9DYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCIKICNpbmNs
dWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5p
dC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQzLDQ3ICs0NCw0MiBAQCBjbGFzcyBQ
dXNoUHVsbEZJRk87CiB1c2luZyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSA9
IFJlZjxBdWRpb0Rlc3RpbmF0aW9uPigqKShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVS
YXRlKTsKIAogLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0
IG91dHB1dCBBdWRpb1VuaXQKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1YmxpYyBB
dWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CitjbGFzcyBBdWRp
b0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlv
VW5pdFJlbmRlcmVyLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAg
QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwotICAgIHZpcnR1YWwgfkF1ZGlvRGVz
dGluYXRpb25Db2NvYSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YShBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0
aW9uQ29jb2EoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2FPdmVycmlkZSBjcmVhdGVPdmVycmlkZTsKIAogcHJvdGVjdGVkOgorICAgIFdF
QkNPUkVfRVhQT1JUIE9TU3RhdHVzIHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQz
MiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpIGZpbmFsOworCiAgICAg
dm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CiAKLSAgICBib29sIGlzUGxheWluZygpIGZpbmFsIHsg
cmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2lzUGxheWluZzsgfQogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2NvbnRleHRTYW1wbGVSYXRlOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVm
ZmVyKCkgY29uc3QgZmluYWw7Ci0gICAgQXVkaW9Vbml0JiBvdXRwdXRVbml0KCkgeyByZXR1cm4g
bV9vdXRwdXRVbml0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgZnJhbWVzUGVyQnVm
ZmVyKCkgY29uc3QgZmluYWw7CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gRGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKLSAgICBz
dGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJB
Y3Rpb25GbGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAKLSAgICB2b2lk
IHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mKTsKIAogICAgIEZ1bmN0aW9uPHZvaWQo
RnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkOwogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBSZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3Jl
YXRlKEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNpZ25lZCwg
ZmxvYXQpOworCiAgICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4m
Jik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBy
ZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcik7CiAKLSAgICBmcmll
bmQgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lP
Q2FsbGJhY2smLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKLSAg
ICAKICAgICAvLyBBdWRpb1NvdXJjZVByb3ZpZGVyLgotICAgIHZvaWQgcHJvdmlkZUlucHV0KEF1
ZGlvQnVzKiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBm
aW5hbDsKIAotICAgIHZvaWQgY29uZmlndXJlKCk7CiAgICAgdm9pZCBwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpOwogCi0gICAgT1NTdGF0dXMg
cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSk7Ci0KLSAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OworICAg
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yOwogICAgIEF1
ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKIAogICAgIC8vIFRvIHBhc3MgdGhlIGRhdGEgZnJv
bSBGSUZPIHRvIHRoZSBhdWRpbyBkZXZpY2UgY2FsbGJhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5MDY2NDgzYTMwMzNjZjEyMWZlYzJhZmJiM2U1ODZmMmMyZjFl
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVk
aW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcihBdWRpb1VuaXRSZW5k
ZXJlciYgcmVuZGVyZXIpCisgICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICAsIG1fYXVkaW9Vbml0
UmVuZGVyZXIocmVuZGVyZXIpCit7Cit9CisKK0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6On5BdWRp
b091dHB1dFVuaXRBZGFwdG9yKCkKK3sKKyAgICBpZiAobV9vdXRwdXRVbml0KQorICAgICAgICBB
dWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShtX291dHB1dFVuaXQpOworfQorCitPU1N0YXR1
cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdGFydCgpCit7CisgICAgcmV0dXJuIEF1ZGlvT3V0
cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7Cit9CisKK09TU3RhdHVzIEF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3I6OnN0b3AoKQoreworICAgIHJldHVybiBBdWRpb091dHB1dFVuaXRTdG9wKG1fb3V0
cHV0VW5pdCk7Cit9CisKKy8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCitPU1N0YXR1cyBB
dWRpb091dHB1dFVuaXRBZGFwdG9yOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5p
dFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUlu
dDMyIC8qYnVzTnVtYmVyKi8sIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpCit7CisgICAgYXV0byogYWRhcHRvciA9IHN0YXRpY19jYXN0PEF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IqPih1c2VyRGF0YSk7CisgICAgcmV0dXJuIGFkYXB0b3ItPm1fYXVkaW9Vbml0
UmVuZGVyZXIucmVuZGVyKHRpbWVzdGFtcCwgbnVtYmVyT2ZGcmFtZXMsIGlvRGF0YSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1
dFVuaXRBZGFwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2ZGM2ZTE1ZWZkZjg2MDg0NGU1ZjJl
MjRjOTA3ZTRiZDJlZWIxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisj
aW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEF1ZGlvVW5pdFJlbmRlcmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1Vu
aXRSZW5kZXJlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIE9TU3RhdHVzIHJlbmRlcihjb25z
dCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpID0gMDsKK307CisKK2NsYXNzIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgeworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoQXVkaW9Vbml0
UmVuZGVyZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QXVkaW9PdXRwdXRVbml0QWRhcHRvcigp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1w
bGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBPU1N0YXR1cyBz
dGFydCgpOworICAgIE9TU3RhdHVzIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgT1NT
dGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFn
cyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJl
ck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CisKKyAgICBBdWRpb1VuaXQgbV9v
dXRwdXRVbml0OworICAgIEF1ZGlvVW5pdFJlbmRlcmVyJiBtX2F1ZGlvVW5pdFJlbmRlcmVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rl
c3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ3MzNk
ZTdmNzVkYTlhYjZkMDg3YTIzMWFkOGViOTgxZGM2ODg4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0KLSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCIKLQotI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZU
X0xJTktfRlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1
ZGlvQ29tcG9uZW50RmluZE5leHQsIEF1ZGlvQ29tcG9uZW50LCAoQXVkaW9Db21wb25lbnQgaW5D
b21wb25lbnQsIGNvbnN0IEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gKmluRGVzYyksIChpbkNv
bXBvbmVudCwgaW5EZXNjKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29tcG9uZW50
SW5zdGFuY2VOZXcsIE9TU3RhdHVzLCAoQXVkaW9Db21wb25lbnQgaW5Db21wb25lbnQsIEF1ZGlv
Q29tcG9uZW50SW5zdGFuY2UgKm91dEluc3RhbmNlKSwgKGluQ29tcG9uZW50LCBvdXRJbnN0YW5j
ZSkpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRBZGRQcm9wZXJ0eUxpc3RlbmVy
LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwg
QXVkaW9Vbml0UHJvcGVydHlMaXN0ZW5lclByb2MgaW5Qcm9jLCB2b2lkICppblByb2NVc2VyRGF0
YSksIChpblVuaXQsIGluSUQsIGluUHJvYywgaW5Qcm9jVXNlckRhdGEpKQotU09GVF9MSU5LKEF1
ZGlvVG9vbGJveCwgQXVkaW9Vbml0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGlu
VW5pdCwgQXVkaW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBB
dWRpb1VuaXRFbGVtZW50IGluRWxlbWVudCwgdm9pZCAqb3V0RGF0YSwgVUludDMyICppb0RhdGFT
aXplKSwgKGluVW5pdCwgaW5JRCwgaW5TY29wZSwgaW5FbGVtZW50LCBvdXREYXRhLCBpb0RhdGFT
aXplKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEluaXRpYWxpemUsIE9TU3Rh
dHVzLCAoQXVkaW9Vbml0IGluVW5pdCksIChpblVuaXQpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJv
eCwgQXVkaW9Vbml0U2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwgQXVk
aW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBBdWRpb1VuaXRF
bGVtZW50IGluRWxlbWVudCwgY29uc3Qgdm9pZCAqaW5EYXRhLCBVSW50MzIgaW5EYXRhU2l6ZSks
IChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgaW5EYXRhLCBpbkRhdGFTaXplKSkK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29u
ZmlndXJlKCkKLXsKLSAgICBjb25zdCBpbnQga1ByZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7Ci0K
LSAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0Ci0gICAgQXVkaW9D
b21wb25lbnQgY29tcDsKLSAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7Ci0KLSAg
ICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7Ci0gICAgZGVzYy5j
b21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87Ci0gICAgZGVzYy5j
b21wb25lbnRNYW51ZmFjdHVyZXIgPSBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0FwcGxlOwotICAg
IGRlc2MuY29tcG9uZW50RmxhZ3MgPSAwOwotICAgIGRlc2MuY29tcG9uZW50RmxhZ3NNYXNrID0g
MDsKLSAgICBjb21wID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dCgwLCAmZGVzYyk7Ci0KLSAgICBB
U1NFUlQoY29tcCk7Ci0KLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlTmV3KGNvbXAsICZvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAg
IFVJbnQzMiBmbGFnID0gMTsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRw
dXRVbml0KCksCi0gICAgICAgIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKLSAg
ICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwKLSAgICAgICAgMCwKLSAgICAgICAgJmZsYWcs
Ci0gICAgICAgIHNpemVvZihmbGFnKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgcmVz
dWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVz
dWx0KTsKLSAgICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCi0gICAgQVVSZW5kZXJDYWxsYmFja1N0
cnVjdCBpbnB1dDsKLSAgICBpbnB1dC5pbnB1dFByb2MgPSBpbnB1dFByb2M7Ci0gICAgaW5wdXQu
aW5wdXRQcm9jUmVmQ29uID0gdGhpczsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0
eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1
ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOwotICAgIEFTU0VS
VCghcmVzdWx0KTsKLQotICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0Ci0gICAgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLQotICAgIFVJbnQzMiBzaXplID0gc2l6ZW9m
KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0
UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBr
QXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwot
ICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
bihzdHJlYW1Gb3JtYXQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0
cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2Nv
cGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgQXVkaW9TZXNzaW9u
OjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJlZmVycmVkQnVmZmVy
U2l6ZSk7Ci19Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1
dFVuaXRBZGFwdG9ySU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTk2MzBmYjYwZjIyYjNl
ZTU2ZDI0MmQ3MzA0MzQ4NmI4N2I1NjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwCkBAIC0w
LDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQsIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvU29mdExp
bmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCitTT0ZUX0xJTkso
QXVkaW9Ub29sYm94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1
ZGlvQ29tcG9uZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9u
ICppbkRlc2MpLCAoaW5Db21wb25lbnQsIGluRGVzYykpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94
LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3LCBPU1N0YXR1cywgKEF1ZGlvQ29tcG9uZW50IGlu
Q29tcG9uZW50LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlICpvdXRJbnN0YW5jZSksIChpbkNvbXBv
bmVudCwgb3V0SW5zdGFuY2UpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRk
UHJvcGVydHlMaXN0ZW5lciwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQ
cm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFByb3BlcnR5TGlzdGVuZXJQcm9jIGluUHJvYywgdm9p
ZCAqaW5Qcm9jVXNlckRhdGEpLCAoaW5Vbml0LCBpbklELCBpblByb2MsIGluUHJvY1VzZXJEYXRh
KSkKK1NPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEdldFByb3BlcnR5LCBPU1N0YXR1
cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0
U2NvcGUgaW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIHZvaWQgKm91dERhdGEs
IFVJbnQzMiAqaW9EYXRhU2l6ZSksIChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwg
b3V0RGF0YSwgaW9EYXRhU2l6ZSkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJ
bml0aWFsaXplLCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQpLCAoaW5Vbml0KSkKK1NPRlRf
TElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlv
VW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5T
Y29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIGNvbnN0IHZvaWQgKmluRGF0YSwgVUlu
dDMyIGluRGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1lbnQsIGluRGF0
YSwgaW5EYXRhU2l6ZSkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1
dFVuaXRBZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIGNvbnN0IGludCBrUHJlZmVycmVkQnVm
ZmVyU2l6ZSA9IDI1NjsKKworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1
dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9uZW50RGVzY3Jp
cHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091
dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9SZW1v
dGVJTzsKKyAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFj
dHVyZXJfQXBwbGU7CisgICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7CisgICAgZGVzYy5jb21w
b25lbnRGbGFnc01hc2sgPSAwOworICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KDAs
ICZkZXNjKTsKKworICAgIEFTU0VSVChjb21wKTsKKworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1
ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJU
KCFyZXN1bHQpOworCisgICAgVUludDMyIGZsYWcgPSAxOworICAgIHJlc3VsdCA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwKKyAgICAgICAga0F1ZGlvT3V0cHV0VW5pdFByb3Bl
cnR5X0VuYWJsZUlPLAorICAgICAgICBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LAorICAgICAgICAw
LAorICAgICAgICAmZmxhZywKKyAgICAgICAgc2l6ZW9mKGZsYWcpKTsKKyAgICBBU1NFUlQoIXJl
c3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG1fb3V0cHV0VW5pdCk7
CisgICAgQVNTRVJUKCFyZXN1bHQpOworICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKKyAgICBB
VVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0OworICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0
UHJvYzsKKyAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOworICAgIHJlc3VsdCA9IEF1
ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJl
bmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZpbnB1dCwgc2l6ZW9mKGlu
cHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHN0cmVhbSBmb3JtYXQK
KyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworCisgICAgVUlu
dDMyIHNpemUgPSBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKTsKKyAgICByZXN1
bHQgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0
eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lkKikmc3RyZWFt
Rm9ybWF0LCAmc2l6ZSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgY29uc3RleHByIGlu
dCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0
c1BlckJ5dGUgPSA4OworICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2Ft
cGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFy
UENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05h
dGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFt
Rm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJG
cmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1l
ID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKKyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFu
bmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9V
bml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9y
bWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXpl
b2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOwor
CisgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6
ZShrUHJlZmVycmVkQnVmZmVyU2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3Rp
bmF0aW9uTWFjLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBmOWM5ZmZmNTFm
NDgzYjQ0MDQxYTM3NzFmYjQxODdhN2FlZGE3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgiCi0KLSNpZiBFTkFCTEUo
V0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2lu
Y2x1ZGUgIlZlY3Rvck1hdGguaCIKLSNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpj
b25maWd1cmUoKQotewotICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1dFVu
aXQKLSAgICBBdWRpb0NvbXBvbmVudCBjb21wOwotICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRp
b24gZGVzYzsKLQotICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091dHB1
dDsKLSAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9EZWZhdWx0
T3V0cHV0OwotICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1ZGlvVW5pdE1hbnVm
YWN0dXJlcl9BcHBsZTsKLSAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsKLSAgICBkZXNjLmNv
bXBvbmVudEZsYWdzTWFzayA9IDA7Ci0gICAgY29tcCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQo
MCwgJmRlc2MpOwotCi0gICAgQVNTRVJUKGNvbXApOwotCi0gICAgT1NTdGF0dXMgcmVzdWx0ID0g
QXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmb3V0cHV0VW5pdCgpKTsKLSAgICBBU1NF
UlQoIXJlc3VsdCk7Ci0KLSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVu
aXQoKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHJlbmRlciBjYWxsYmFj
awotICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7Ci0gICAgaW5wdXQuaW5wdXRQcm9j
ID0gaW5wdXRQcm9jOwotICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRoaXM7Ci0gICAgcmVz
dWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVy
dHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZpbnB1dCwg
c2l6ZW9mKGlucHV0KSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHN0cmVh
bSBmb3JtYXQKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0Owot
ICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwotCi0gICAg
cmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJv
cGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3Ry
ZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNT
RVJUKCFyZXN1bHQpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvY2Vzc0J1
c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiBidXMsIFVJbnQzMiBudW1iZXJPZkZyYW1lcykKLXsKLSAg
ICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUuLCBbLTEuMCwgMS4wXSkKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSB7Ci0gICAgICAg
IGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChpKTsKLSAgICAgICAgaWYgKCFjaGFubmVsLT5p
c1NpbGVudCgpKQotICAgICAgICAgICAgVmVjdG9yTWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgp
LCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEoKSwgbnVtYmVyT2ZGcmFtZXMpOwotICAgIH0K
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM4ZWQzZWY3OGM4YzZhM2IxZTA3MGNiNDQwNTk2OWFkYTRhYzNkYTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0
QWRhcHRvck1hYy5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9S
TShNQUMpCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgPENvcmVBdWRpby9BdWRp
b0hhcmR3YXJlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVm
YXVsdE91dHB1dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9u
ZW50RGVzY3JpcHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1Vu
aXRUeXBlX091dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3Vi
VHlwZV9EZWZhdWx0T3V0cHV0OworICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1
ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBsZTsKKyAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsK
KyAgICBkZXNjLmNvbXBvbmVudEZsYWdzTWFzayA9IDA7CisgICAgY29tcCA9IEF1ZGlvQ29tcG9u
ZW50RmluZE5leHQoMCwgJmRlc2MpOworCisgICAgQVNTRVJUKGNvbXApOworCisgICAgT1NTdGF0
dXMgcmVzdWx0ID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmbV9vdXRwdXRVbml0
KTsKKyAgICBBU1NFUlQoIXJlc3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFs
aXplKG1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHJl
bmRlciBjYWxsYmFjaworICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7CisgICAgaW5w
dXQuaW5wdXRQcm9jID0gaW5wdXRQcm9jOworICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRo
aXM7CisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVk
aW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWws
IDAsICZpbnB1dCwgc2l6ZW9mKGlucHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAg
Ly8gU2V0IHN0cmVhbSBmb3JtYXQKKyAgICBjb25zdGV4cHIgaW50IGJ5dGVzUGVyRmxvYXQgPSBz
aXplb2YoRmxvYXQzMik7CisgICAgY29uc3RleHByIGludCBiaXRzUGVyQnl0ZSA9IDg7CisKKyAg
ICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworICAgIHN0cmVhbUZv
cm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQu
bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9y
bWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9y
bWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAx
OworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsK
KyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1Bl
ckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0
LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQs
IDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcAppbmRleCA1YTEyY2RlNGZjZGZjNTdmYWQ0MmI3ZDllOGZlNzMyMDQzNTA5ZDc4
Li41ZDJiYmZjYTRhYjMyYzY5OTgyYjdjMjViYWU3Njg2ZGZmMjM5MmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25D
b2NvYS5jcHAKQEAgLTY4LDEwICs2OCwxMCBAQCB2b2lkIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnRpY2soKQogewogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgc2FtcGxlUmF0
ZSA9IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgPSBtX251bWJlck9mRnJh
bWVzVG9Qcm9jZXNzXSB7CiAgICAgICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJl
YW1Gb3JtYXQ7Ci0gICAgICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1G
b3JtYXQpOworICAgICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9y
bWF0KTsKIAogICAgICAgICBXZWJBdWRpb0J1ZmZlckxpc3Qgd2ViQXVkaW9CdWZmZXJMaXN0IHsg
c3RyZWFtRm9ybWF0LCBudW1iZXJPZkZyYW1lc1RvUHJvY2VzcyB9OwotICAgICAgICBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh0aGlzLCAwLCAwLCAwLCBudW1iZXJPZkZyYW1lc1Rv
UHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CisgICAgICAgIHJlbmRlcigwLCBu
dW1iZXJPZkZyYW1lc1RvUHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCmluZGV4IDI3ZjJhNjk5NmFj
OTQwY2NkODQ3OTM1OTU0ZTZkOTE4NGEzZDMzZDAuLmJlNDNiZDM1NWE4NTNhZWIyNzBlYTFkMTk0
MGNhNTNiYThlZWUzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcApAQCAtMjks
MTE2ICsyOSwxMjMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVE
SU8pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAi
UmVtb3RlQXVkaW9CdXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9CdXMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1
ZGlvSU9DYWxsYmFjay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9PdXRwdXRVbml0QWRhcHRv
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9VdGlsaXRpZXMuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1B1c2hQdWxsRklGTy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVh
ZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgeworI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbmRpZgogCi0vLyBUaGlzIEZJRk8gc2l6ZSBt
YXRjaGVzIHRvIG9uZSBpbiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGFuZCB3YXMgaW1wb3J0
ZWQgZnJvbSBCbGluay4KLWNvbnN0ZXhwciBzaXplX3QgZmlmb1NpemUgPSA5NiAqIFdlYkNvcmU6
OkF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZTsKK25hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+LCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9JT0NhbGxi
YWNrIHsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24KKyAgICA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPgorI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgICwgcHVibGljIFdlYkNvcmU6OkF1ZGlvVW5pdFJlbmRlcmVyCisjZW5kaWYKK3sKIHB1
YmxpYzoKLSAgICB1c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOwotICAgIHVzaW5n
IEF1ZGlvRGVzdGluYXRpb24gPSBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOwotICAgIHVzaW5n
IFNoYXJlZEJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjsKLQogICAgIHN0YXRpYyBSZWY8
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIs
Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlKQorICAgICAgICBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51
bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbihjb25uZWN0aW9uLCBp
ZGVudGlmaWVyLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbihjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBpbnB1dERl
dmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNh
bXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJl
bW90ZUF1ZGlvRGVzdGluYXRpb24oKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
ZGVzdGluYXRpb24tPmlzUGxheWluZygpKTsKICAgICB9CiAKICAgICB2b2lkIHNjaGVkdWxlR3Jh
Y2VmdWxTaHV0ZG93bklmTmVlZGVkKCkKICAgICB7Ci0gICAgICAgIGlmICghaXNQbGF5aW5nKCkp
CisgICAgICAgIGlmICghbV9pc1BsYXlpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IG1fcHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1bFNodXRkb3duID0gdGhpczsKLSAgICAgICAgc3Rv
cCgpOwogICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0
b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNIYW5kbGUsIGNv
bnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVpbnQ2
NF90IG51bWJlck9mRnJhbWVzKQorICAgIHsKKyAgICAgICAgbV9kZXNjcmlwdGlvbiA9IGRlc2Ny
aXB0aW9uOwogCi0gICAgdm9pZCBzdGFydCgpIHsgbV9kZXN0aW5hdGlvbi0+c3RhcnQoeyB9KTsg
fQotICAgIHZvaWQgc3RvcCgpIHsgbV9kZXN0aW5hdGlvbi0+c3RvcCgpOyB9Ci0gICAgYm9vbCBp
c1BsYXlpbmcoKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKTsgfQotICAgIHVu
c2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb24tPmZy
YW1lc1BlckJ1ZmZlcigpIDsgfQorICAgICAgICBpZiAoaXBjSGFuZGxlLmhhbmRsZS5pc051bGwo
KSkgeworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5kZWFsbG9jYXRlKCk7CisgICAgICAgICAg
ICBzdG9yYWdlKCkuc2V0UmVhZE9ubHkoZmFsc2UpOworICAgICAgICAgICAgc3RvcmFnZSgpLnNl
dFN0b3JhZ2UobnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotcHJp
dmF0ZToKLSAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
KQotICAgICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQotICAgICAgICAsIG1faWQoaWRl
bnRpZmllcikKLSAgICAgICAgLCBtX2Rlc3RpbmF0aW9uKEF1ZGlvRGVzdGluYXRpb246OmNyZWF0
ZSgqdGhpcywgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSkKLSAgICAgICAgLCBtX2ZpZm8obnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmlmb1NpemUpCi0gICAgewotICAgIH0KKyAgICAgICAgYXV0byBtZW1vcnkg
PSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgc3RvcmFnZSgpLnNldFN0b3JhZ2UoV1RGTW92ZSht
ZW1vcnkpKTsKKyAgICAgICAgc3RvcmFnZSgpLnNldFJlYWRPbmx5KHRydWUpOwogCi0gICAgdm9p
ZCByZW5kZXIoQXVkaW9CdXMqLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvSU9Qb3NpdGlvbiYgb3V0cHV0UG9zaXRp
b24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAg
ICAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMp
OwogCi0gICAgICAgIGlmIChtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93bikKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4obV9kZXNjcmlwdGlvbik7CisgICAgfQorI2Vu
ZGlmCiAKLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Zp
Zm9Mb2NrKTsKLSAgICAgICAgICAgIGZyYW1lc1RvUHJvY2VzcyA9IG1fZmlmby5wdWxsKGRlc3Rp
bmF0aW9uQnVzLCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghZnJh
bWVzVG9Qcm9jZXNzKQotICAgICAgICAgICAgcmV0dXJuOworICAgIHZvaWQgc3RhcnQoKQorICAg
IHsKKyAgICB9CiAKLSAgICAgICAgVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiBidWZmZXJzOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVzdGluYXRpb25CdXMtPm51bWJlck9m
Q2hhbm5lbHMoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9y
eTo6YWxsb2NhdGUoc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgICAg
ICBidWZmZXJzLmFwcGVuZCgqbWVtb3J5KTsKLSAgICAgICAgfQorICAgIHZvaWQgc3RvcCgpCisg
ICAgeworICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogSXQgaXMgdW5mb3J0dW5hdGUgd2UgaGF2
ZSB0byBkaXNwYXRjaCB0byB0aGUgbWFpbiB0aGVhZCBoZXJlLiBXZSBzaG91bGQgYmUgYWJsZSB0
byBJUEMgc3RyYWlnaHQgZnJvbSB0aGUKLSAgICAgICAgLy8gcmVuZGVyIHRocmVhZCBidXQgdGhp
cyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHNlbmRXaXRoQXN5bmNSZXBseSgpLgotICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1l
c1RvUHJvY2Vzcywgb3V0cHV0UG9zaXRpb24sIGJ1ZmZlcnMgPSBXVEZNb3ZlKGJ1ZmZlcnMpXSgp
IG11dGFibGUgewotICAgICAgICAgICAgUmVtb3RlQXVkaW9CdXNEYXRhIGJ1c0RhdGEgeyBmcmFt
ZXNUb1Byb2Nlc3MsIG91dHB1dFBvc2l0aW9uLCBidWZmZXJzLm1hcChbXShhdXRvJiBtZW1vcnkp
IHsgcmV0dXJuIG1lbW9yeS5jb3B5UmVmKCk7IH0pIH07Ci0gICAgICAgICAgICBBU1NFUlQoZnJh
bWVzVG9Qcm9jZXNzKTsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJl
bmRlckJ1ZmZlcihidXNEYXRhKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBidWZmZXJzID0gV1RGTW92ZShidWZmZXJzKSwgZnJhbWVzVG9Qcm9jZXNzXSgp
IHsKLSAgICAgICAgICAgICAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidWZm
ZXJzLnNpemUoKSwgZnJhbWVzVG9Qcm9jZXNzLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAg
ICAgICAgIGF1ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIHN0YXRpY19jYXN0PGZsb2F0Kj4o
YnVmZmVyc1tpXS0+ZGF0YSgpKSwgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICAgICAgICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgICAgIG1fZmlm
by5wdXNoKGF1ZGlvQnVzLmdldCgpKTsKLSAgICAgICAgICAgIH0sIG1faWQudG9VSW50NjQoKSk7
Ci0gICAgICAgIH0pOworcHJpdmF0ZToKKyAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpCisgICAgICAgIC8v
IDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgICAgIDogbV9pZChpZGVudGlmaWVyKQor
ICAgICAgICAsIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcigqdGhpcykKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJp
bmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIp
KSkKKyNlbmRpZgorICAgICAgICAvLyAsIG1fY29udGV4dFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSkK
KyAgICB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIG1fYXVkaW9PdXRwdXRVbml0QWRh
cHRvci5jb25maWd1cmUoaGFyZHdhcmVTYW1wbGVSYXRlLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KTsKKyNlbmRpZgogICAgIH0KIAotICAgIHZvaWQgaXNQbGF5aW5nRGlkQ2hhbmdlKCkgb3ZlcnJp
ZGUKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZSYgc3Rv
cmFnZSgpCiAgICAgewotICAgICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1
dGRvd24pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Rlc3RpbmF0aW9uLT5pc1Bs
YXlpbmcoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWZDb3VudCgpID09IDEpOwot
ICAgICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24gPSBudWxscHRy
OyAvLyBEZWxldGVzICJ0aGlzIi4KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGlzUGxheWluZyA9IG1fZGVzdGluYXRpb24tPmlzUGxheWluZygpLCBpZGVudGlmaWVyID0g
bV9pZC50b1VJbnQ2NCgpXSB7Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6RGlkQ2hhbmdlSXNQ
bGF5aW5nKGlzUGxheWluZyksIGlkZW50aWZpZXIpOwotICAgICAgICB9KTsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlJj4obV9yaW5nQnVmZmVyLT5z
dG9yYWdlKCkpOwogICAgIH0KKyAgICAKKyAgICBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9U
aW1lU3RhbXAqLCBVSW50MzIsIEF1ZGlvQnVmZmVyTGlzdCopCisgICAgLy8gT1NTdGF0dXMgcmVu
ZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1lc3RhbXAsIFVJbnQzMiBudW1iZXJPZkZyYW1l
cywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCisgICAgeworICAgICAgICAvKgorICAgICAgICBz
ZW5kQXN5Y2hXaXRoUmVwbHkgeworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJyZW50
RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOworICAgICAgICAgICAgbV9hdWRpb0J1
ZmZlckxpc3QtPnNldFNhbXBsZUNvdW50KG51bWJlck9mRnJhbWVzKTsKKyAgICAgICAgICAgIG1f
cmluZ0J1ZmZlci0+ZmV0Y2gobV9hdWRpb0J1ZmZlckxpc3QtPmxpc3QoKSwgbnVtYmVyT2ZGcmFt
ZXMsIHRpbWUudGltZVZhbHVlKCkpOworICAgICAgICB9Ki8KKyAgICAgICAgcmV0dXJuIG5vRXJy
OworICAgIH0KKyNlbmRpZgogCi0gICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25u
ZWN0aW9uOworICAgIC8vIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvbjsK
ICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBtX2lkOwotICAgIFJlZlB0cjxB
dWRpb0Rlc3RpbmF0aW9uPiBtX2Rlc3RpbmF0aW9uOwogICAgIFJlZlB0cjxSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uPiBtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93bjsKLSAgICBMb2Nr
IG1fZmlmb0xvY2s7Ci0gICAgV2ViQ29yZTo6UHVzaFB1bGxGSUZPIG1fZmlmbzsKKworICAgIFdl
YkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yOwor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uIG1fZGVzY3JpcHRpb247CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4g
bV9yaW5nQnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZl
ckxpc3Q+IG1fYXVkaW9CdWZmZXJMaXN0OworI2VuZGlmCisgICAgCisgICAgLy8gZmxvYXQgbV9j
b250ZXh0U2FtcGxlUmF0ZTsKKyAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKIH07CiAK
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQpAQCAtMTQ4LDE0ICsx
NTUsMTMgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlAKIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6On5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKIAot
dm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlv
bihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFu
bmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwK
LSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyLCB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihj
b25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVs
cywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxv
YXQgaGFyZHdhcmVTYW1wbGVSYXRlLAorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8gbmV3SUQgPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGVU
aHJlYWRTYWZlKCk7Ci0gICAgYXV0byBkZXN0aW5hdGlvbiA9IFJlbW90ZUF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIG5ld0lELCBpbnB1dERldmlj
ZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBs
ZVJhdGUpOwotICAgIGF1dG8gZnJhbWVzUGVyQnVmZmVyID0gZGVzdGluYXRpb24tPmZyYW1lc1Bl
ckJ1ZmZlcigpOworICAgIGF1dG8gZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
OjpjcmVhdGUobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJ
ZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVS
YXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwogICAgIG1fYXVkaW9EZXN0aW5hdGlvbnMuYWRkKG5l
d0lELCBXVEZNb3ZlKGRlc3RpbmF0aW9uKSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQs
IGZyYW1lc1BlckJ1ZmZlcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQpOwogfQogCiB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9u
KFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MSw3ICsxNzcsNyBAQCB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlvRGVzdGluYXRpb24o
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7CiAgICAg
aWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRpb25zLmdldChpZGVudGlmaWVyKSkgewog
ICAgICAgICBpdGVtLT5zdGFydCgpOwotICAgICAgICBpc1BsYXlpbmcgPSBpdGVtLT5pc1BsYXlp
bmcoKTsKKyAgICAgICAgLy8gaXNQbGF5aW5nID0gaXRlbS0+aXNQbGF5aW5nKCk7CiAgICAgfQog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzUGxheWluZyk7CiB9CkBAIC0xODEsMTEgKzE4NywxOSBA
QCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlv
bihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSQogICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7CiAg
ICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRpb25zLmdldChpZGVudGlmaWVyKSkg
ewogICAgICAgICBpdGVtLT5zdG9wKCk7Ci0gICAgICAgIGlzUGxheWluZyA9IGl0ZW0tPmlzUGxh
eWluZygpOworICAgICAgICAvLyBpc1BsYXlpbmcgPSBpdGVtLT5pc1BsYXlpbmcoKTsKICAgICB9
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQbGF5aW5nKTsKIH0KIAorI2lmIFBMQVRGT1JNKENP
Q09BKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6YXVkaW9TYW1wbGVzU3Rv
cmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZG
cmFtZXMpCit7CisgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRpb25zLmdldChp
ZGVudGlmaWVyKSkKKyAgICAgICAgaXRlbS0+YXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoaXBj
SGFuZGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCAxMWI0YmVmMTA0
MWI3YTA4YWYzYjFiMDlkZTM4NGMwM2Q1ODkzZDFlLi4yNjUxZWZhYzgzMDUyZDVlZTNjMzM1YjBk
NzA3MmQ1OGY0NjBiNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaApAQCAtMzQsNiAr
MzQsMTAgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2ViQ29yZS9D
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKQEAgLTQ2LDI1ICs1MCwyNSBAQCBw
dWJsaWM6CiAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYpOwogICAgIH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpOwogCi0g
ICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJ
ZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIpPiYm
KTsKLSAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzdGFy
dEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc3RvcEF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJv
Y2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCi0gICAgewotICAgICAgICBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Ci0gICAg
fQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQogCiBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAorICAg
IHZvaWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQs
IHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyKT4mJik7
CisgICAgdm9pZCBkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc3RhcnRB
dWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9u
KFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0
b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKKyNlbmRpZgorCiAgICAgSGFzaE1hcDxS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUF1ZGlvRGVzdGluYXRp
b24+PiBtX2F1ZGlvRGVzdGluYXRpb25zOwogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmU7Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggYmMwNWFlMTE3OWFhMmFkMzRlMzMzODUzMmJlZGI1ZTZiNGQ0
MjNhMC4uMmJjOWVkYzcxYjk0ZTg2NzljYzIwYjYyZDgxYTkzMmNlMzE1NWIwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjQsMTQgKzI0LDE0
IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogCiBtZXNz
YWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKLQot
ICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90
IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywg
ZmxvYXQgc2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50
aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKSBTeW5jaHJvbm91cwot
CisgICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpIC0+IChXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3Vz
CiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAKICAgICBTdGFydEF1ZGlvRGVz
dGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCiAgICAgU3RvcEF1ZGlvRGVzdGlu
YXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVy
KSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCi0KKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2Ny
aXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKKyNlbmRpZgogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1
NWRlOTFkY2NhMDI1MzgyOGMxMGVhNWQ4M2E2NGRlOTY1MjIwMDIuLmQ0MjI0YzZlYjg5MjUxOGVh
ZmJjOGZjN2I3NGUyNzY1YTQyNTFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMCw3ICsxNDMwLDYgQEAKIAkJOUI1NDk5QjIy
MzYyQTdFQzAwREY4QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU0OTlCMDIzNjJB
N0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjVCRUMyNjI0MDBG
NEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMjQyNDAwRjRBOTAwNzBDNkVGIC8qIFdlYk1l
ZGlhU3RyYXRlZ3kuaCAqLzsgfTsKIAkJOUI1QkVDMkEyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUI1QkVDMjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5oICovOyB9OwotCQk5QjVCRUMzMTI0MDEwMjIyMDA3MEM2RUYgLyogUmVt
b3RlQXVkaW9CdXNEYXRhLmggaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCNUJFQzMwMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEu
aCAqLzsgfTsKIAkJOUVDNTMyQTMyNDQ3RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUVD
NTMyQTIyNDQ3RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oICovOyB9Owog
CQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4
MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTAyQTcwODFFQzBFRUU5MDBEODFEODIgLyog
Y29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgaW4gQ29weSBQbHVnLWlu
IFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1
RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1Iu
cGx1Z2luLnNiICovOyB9OwpAQCAtMjEzOSw3ICsyMTM4LDYgQEAKIAkJCQkyREI5NjA1MzIzOTg4
NkMxMDAxMDI3OTEgLyogY29tLmFwcGxlLldlYktpdC5HUFUuc2IgaW4gQ29weUZpbGVzICovLAog
CQkJCUE3OENDRERCMTkzQUM5RjgwMDVFQ0MyNSAvKiBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtp
bmcuc2IgaW4gQ29weUZpbGVzICovLAogCQkJCUE3OENDRERDMTkzQUM5RkIwMDVFQ0MyNSAvKiBj
b20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgaW4gQ29weUZpbGVzICovLAotCQkJCTlCNUJF
QzMxMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBDb3B5RmlsZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC00NTQwLDcgKzQ1MzgsNiBAQAogCQk5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyog
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjVCRUMy
OTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNUJFQzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QjVC
RUMzMDI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9CdXNEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUF1ZGlvQnVzRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QkM1OUQ2QzFFRkNDQ0I2MDAxRThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlFQzUzMkEyMjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9s
b2NhdGlvbklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvbG9jYXRpb25JZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTU1LDcgKzU1NTIsNiBAQAogCQkJ
CTA3OTIzMTMxMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
ICovLAogCQkJCTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaCAqLywKIAkJCQkwN0IxRDA0QjIzRDM4RkNFMDAzOTlBNkUgLyogTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluICovLAotCQkJCTlCNUJFQzMwMjQwMTAyMjIwMDcwQzZF
RiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCAqLywKIAkJCQk5QjVCRUMyOTI0MDEwMTU4MDA3MEM2
RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLywKIAkJCQk5QjVCRUMyODI0
MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi8sCiAJCQkJ
OUI1QkVDMkUyNDAxMDE4QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5t
ZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvQnVzRGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxZmMyZjBjNjYwNjk2YWUzNDg2MWMwYjI0ODBhZDA1N2ZlYTE5NjA5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCi0KLSNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlv
SU9DYWxsYmFjay5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgUmVtb3RlQXVkaW9CdXNEYXRhIHsKLSAgICB1aW50NjRf
dCBmcmFtZXNUb1Byb2Nlc3MgeyAwIH07Ci0gICAgV2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91
dHB1dFBvc2l0aW9uOwotICAgIFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4gY2hhbm5lbEJ1ZmZl
cnM7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgotICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBlbmNvZGVyIDw8IGZyYW1lc1Rv
UHJvY2VzczsKLSAgICAgICAgZW5jb2RlciA8PCBvdXRwdXRQb3NpdGlvbjsKLSAgICAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpKTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGFubmVsQnVmZmVycy5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwotICAgICAgICAgICAg
Y2hhbm5lbEJ1ZmZlcnNbaV0tPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZFdyaXRlKTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGNoYW5uZWxCdWZmZXJzW2ldLT5zaXplKCkg
fTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+Ci0g
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBSZW1vdGVBdWRpb0J1c0RhdGEmIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHVpbnQ2NF90IGZy
YW1lc1RvUHJvY2VzczsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZXNUb1Byb2Nl
c3MpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQuZnJhbWVzVG9Q
cm9jZXNzID0gZnJhbWVzVG9Qcm9jZXNzOwotCi0gICAgICAgIFdlYkNvcmU6OkF1ZGlvSU9Qb3Np
dGlvbiBvdXRwdXRQb3NpdGlvbjsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvdXRwdXRQ
b3NpdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdC5vdXRw
dXRQb3NpdGlvbiA9IG91dHB1dFBvc2l0aW9uOwotCi0gICAgICAgIHVpbnQ2NF90IHNpemUgPSAw
OwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7Ci0gICAgICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgaWYgKGF1dG8gbWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAo
aXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpKQot
ICAgICAgICAgICAgICAgIHJlc3VsdC5jaGFubmVsQnVmZmVycy5hcHBlbmQobWVtb3J5LnJlbGVh
c2VOb25OdWxsKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5LmNwcAppbmRleCA4NDA0YzQ4ZTFjMmU0ODJhYmNkMjRlNTVkMmNjOTEzYmQyNjdlNzQxLi5j
Y2Q4ZTFlMjliYThkMjc0OTQyNjVlODNkNmFiMDIxMmVkMmQ1M2RlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC0zOSw3ICszOSw5IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi11c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOworLy8gQWxsb2NhdGUg
YSByaW5nIGJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiAyIHNlY29uZHMgb2YgYXVkaW8u
Citjb25zdGV4cHIgc2l6ZV90IHJpbmdCdWZmZXJTaXplSW5TZWNvbmQgPSAyOworCiB1c2luZyBB
dWRpb0Rlc3RpbmF0aW9uID0gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjsKIHVzaW5nIEF1ZGlv
SU9DYWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFjazsKIApAQCAtNTAsMTYgKzUyLDE1
IEBAIFJlZjxBdWRpb0Rlc3RpbmF0aW9uPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNy
ZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiCiB9CiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJh
Y2ssIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
KQotICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVS
YXRlKQorICAgIDogV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKGNhbGxiYWNrLCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKQorICAgICwgbV9yaW5nQnVmZmVyKG1ha2VV
bmlxdWU8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZm
ZXJTdG9yYWdlPih0aGlzKSkpCiB7CiAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIgZGVzdGluYXRpb25JRDsKLSAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIgeyAwIH07CiAK
ICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YygKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSksCi0gICAgICAgIE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVw
bHkoZGVzdGluYXRpb25JRCwgZnJhbWVzUGVyQnVmZmVyKSwgMCk7CisgICAgICAgIE1lc3NhZ2Vz
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihp
bnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSgpKSwKKyAgICAgICAgTWVzc2FnZXM6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpS
ZXBseShkZXN0aW5hdGlvbklEKSwgMCk7CiAKICAgICBhdXRvIG9mZlRocmVhZFJlbmRlcmluZyA9
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIHdoaWxlICghbV90aHJlYWRUYXNrUXVldWUuaXNLaWxsZWQoKSkgewpAQCAtNzIsNyArNzMs
MTEgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmEKICAgICBjb25uZWN0aW9uLmNvbm5lY3Rpb24o
KS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzLCBkZXN0aW5hdGlvbklELnRvVUlu
dDY0KCkpOwogCiAgICAgbV9kZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKLSAgICBtX2Zy
YW1lc1BlckJ1ZmZlciA9IGZyYW1lc1BlckJ1ZmZlcjsKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKHN0cmVhbUZvcm1hdCk7CisgICAgbV9udW1iZXJPZkZyYW1lcyA9IGhhcmR3YXJlU2FtcGxl
UmF0ZSgpICogcmluZ0J1ZmZlclNpemVJblNlY29uZDsKKyAgICBtX3JpbmdCdWZmZXItPmFsbG9j
YXRlKHN0cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1lcyk7CiB9CiAKIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSgpCkBAIC0xMDUsMTcg
KzExMCwxMiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcCgpCiAgICAg
bV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OnJlbmRlckJ1ZmZlcihjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlv
QnVzRGF0YSYgYXVkaW9CdXNEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVzdEJ1
ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lZGlhVGltZSwgdWludDY0X3QsIHVpbnQ2NF90
LCB1aW50NjRfdCk+JiYgLypjb21wbGV0aW9uSGFuZGxlciovKQogewogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzKTsK
LSAgICBBU1NFUlQoYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJzLnNpemUoKSk7Ci0gICAgYXV0
byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJz
LnNpemUoKSwgYXVkaW9CdXNEYXRhLmZyYW1lc1RvUHJvY2VzcywgZmFsc2UpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhdWRpb0J1c0RhdGEuY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGF1ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIChmbG9hdCopYXVkaW9C
dXNEYXRhLmNoYW5uZWxCdWZmZXJzW2ldLT5kYXRhKCksIGF1ZGlvQnVzRGF0YS5mcmFtZXNUb1By
b2Nlc3MpOwotCi0gICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgYXVkaW9CdXMuZ2V0KCksIGF1ZGlv
QnVzRGF0YS5mcmFtZXNUb1Byb2Nlc3MsIGF1ZGlvQnVzRGF0YS5vdXRwdXRQb3NpdGlvbik7Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAKKyAgICAvLyBGZXRjaCBidWZmZXIgYW5kIGxl
dCBHUFUgcHJvY2VzcyBrbm93IHRoZSBidWZmZXIgaXMgYXZhaWxhYmxlCisgICAgLy8gY29tcGxl
dGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRp
ZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxheWluZykKQEAgLTEzMyw2ICsxMzMsMjYgQEAgdm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248
dm9pZCgpPiYmIHRhc2spCiAgICAgbV90aHJlYWRUYXNrUXVldWUuYXBwZW5kKFdURk1vdmUodGFz
aykpOwogfQogCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcmFnZUNoYW5n
ZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlKQoreworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhh
bmRsZTsKKyAgICBpZiAoc3RvcmFnZSkKKyAgICAgICAgc3RvcmFnZS0+Y3JlYXRlSGFuZGxlKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisKKyAgICAvLyBGSVhN
RTogU2VuZCB0aGUgYWN0dWFsIGRhdGEgc2l6ZSB3aXRoIElQQ0hhbmRsZS4KKyNpZiBPUyhEQVJX
SU4pIHx8IE9TKFdJTkRPV1MpCisgICAgdWludDY0X3QgZGF0YVNpemUgPSBoYW5kbGUuc2l6ZSgp
OworI2Vsc2UKKyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9IDA7CisjZW5kaWYKKworICAgIEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CisKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6QXVkaW9TYW1wbGVz
U3RvcmFnZUNoYW5nZWQgeyBtX2Rlc3RpbmF0aW9uSUQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9LCBzdHJlYW1Gb3JtYXQsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihtX251bWJlck9mRnJhbWVzKSB9LCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVE
SU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAppbmRleCBjNGFkYjc1NjBkNDYzNzU4
ZWU3MTU2ZjAxZWVjOTk1OGQzY2ZkZTY2Li42Y2M2MTdlNDFlMTVjMTNmYzQ1ODg2NmZjMTg0ZGI5
NzU2NjdhZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKQEAgLTI4LDI0ICsy
OCwzMSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKIAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJSZW1vdGVBdWRpb0J1c0RhdGEuaCIK
ICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJT
aGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5h
dGlvbkNvY29hLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
IDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBJUEM6OkNvbm5lY3Rp
b246OlRocmVhZE1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EKKyAgICAsIHB1YmxpYyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6Q2xp
ZW50CisjZWxzZQorICAgIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24KKyNlbmRp
ZgorICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkpOwog
cHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6QXVkaW9CdXM7CiAgICAgdXNp
bmcgQXVkaW9JT0NhbGxiYWNrID0gV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNrOwogICAgIHVzaW5n
IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OnJlZjsKICAgICB1c2luZyBXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uOjpkZXJlZjsKQEAgLTU3LDE2ICs2NCwxOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7IH0KIAotICAgIHZvaWQgcmVuZGVyQnVmZmVyKGNvbnN0IFdlYktpdDo6
UmVtb3RlQXVkaW9CdXNEYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIHJlcXVlc3RCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZWRpYVRpbWUsIHVpbnQ2
NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFt
ZSk+JiYpOwogICAgIHZvaWQgZGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKTsKIAog
cHJpdmF0ZToKLSAgICAvLyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uCi0gICAgdm9pZCBzdGFy
dChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRlclRo
cmVhZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1Bs
YXlpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzUGxheWluZzsgfQotICAgIGZsb2F0IHNhbXBs
ZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KLSAgICB1bnNp
Z25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZyYW1lc1Bl
ckJ1ZmZlcjsgfQorICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+
JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZp
bmFsOworICAgIGJvb2wgaXNQbGF5aW5nKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIC8vIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpDbGllbnQK
KyAgICB2b2lkIHN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSopOworI2VuZGlmCiAKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC03NiwxMSArODUsMTQgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlZk1lc3NhZ2VSZWNlaXZlcigpIGZpbmFsIHsgV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmTWVzc2FnZVJlY2VpdmVyKCkg
ZmluYWwgeyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpkZXJlZigpOyB9CiAKLSAgICBBdWRp
b0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7Ci0gICAgZmxvYXQgbV9zYW1wbGVSYXRlIHsgMC4gfTsK
LSAgICB1bnNpZ25lZCBtX2ZyYW1lc1BlckJ1ZmZlciB7IDAgfTsKICAgICBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciBtX2Rlc3RpbmF0aW9uSUQ7CiAgICAgYm9vbCBtX2lzUGxheWlu
ZyB7IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgaW50NjRfdCBtX251bWJl
ck9mRnJhbWVzIHsgMCB9OworI2VuZGlmCisKICAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZv
aWQoKT4mJik+IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZDsKICAgICBSZWZQdHI8VGhyZWFkPiBt
X3JlbmRlclRocmVhZDsKICAgICBDcm9zc1RocmVhZFF1ZXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1f
dGhyZWFkVGFza1F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5t
ZXNzYWdlcy5pbgppbmRleCBhZTFmYzcwNjk4NzE0Yzg3MDVlNTgyNDgxOTQ2NWJhYjMyNjNmMDYx
Li5iYWE4ZWJkZjllNTIzZTliMGUwZTQ0YWRjOGI1Nzg1ZWYwODg3NzRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsMTAgKzI0LDgg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCiAKIG1lc3Nh
Z2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBOb3RSZWZDb3VudGVkIHsKLQotICAg
IFJlbmRlckJ1ZmZlcihzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVBdWRpb0J1c0RhdGEgZGF0YSkgLT4g
KCkgQXN5bmMKKyAgICByZXF1ZXN0QnVmZmVyKCkgLT4gKE1lZGlhVGltZSB0aW1lLCB1aW50NjRf
dCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUp
IEFzeW5jCiAgICAgRGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQotCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCmluZGV4IDg3OTlm
MTk4NDcxNDExZWM2ZjczOWEzODc5MzY0ZDI0NzUxMmVhNDQuLjJlMGE2YjFmODM5MzJhZTgzMzVk
ZjRlYWE0ZWI1MzVmODU4NzEyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlcjo6cHVzaFNhbXBsZXMoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBXZWIKIAogICAg
ICAgICAvLyBBbGxvY2F0ZSBhIHJpbmcgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBjb250YWluIDIg
c2Vjb25kcyBvZiBhdWRpby4KICAgICAgICAgbV9udW1iZXJPZkZyYW1lcyA9IG1fZGVzY3JpcHRp
b24uc2FtcGxlUmF0ZSgpICogMjsKLSAgICAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShtX2Rl
c2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbnVtYmVyT2ZGcmFtZXMpOworICAgICAg
ICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKG1fZGVzY3JpcHRpb24sIG1fbnVtYmVyT2ZGcmFtZXMp
OwogICAgIH0KIAogICAgIEFTU0VSVChpczxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+KGF1
ZGlvRGF0YSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411402</attachid>
            <date>2020-10-14 21:01:53 -0700</date>
            <delta_ts>2020-10-14 21:13:48 -0700</delta_ts>
            <desc>WIP patch v3</desc>
            <filename>bug-217715-20201014210152.patch</filename>
            <type>text/plain</type>
            <size>88122</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ3MWFlZjc3YmQ4NmZl
MTBkMmJjMDQ4NWE5OWUzZGQ3ZTI0NTkxZS4uOGJlYjM3Mzc4MDczMmExMDQ3NmRlZDRmMmNmMTA2
MjI2MGQ5Y2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9j
ZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8g
ZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6aW5wdXRQcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRV
bml0QWRhcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRv
cklPUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2spOgorCiAyMDIwLTEwLTE0ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFZlY3Rvck1hdGg6Om11
bHRpcGx5VGhlbkFkZFNjYWxhcigpIGZvciBjbGFyaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkYjZjMTc4OGNi
ZmJhYjEzMGQyZWIzMDVkYTc1ZTI5YmI4ZGExNDcuLmI0OGI4NzIyZWIyNjE3NjdmYjEyMjhiZmNm
ZWM1MDk0ZmRmM2FhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMTAtMTQgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWEgaW4gR1BVIFBy
b2Nlc3NdIFVzZSBDQVJpbmdCdWZmZXIgdG8gdHJhbnNmZXIgYXVkaW8gZGF0YSBvZiBhbiBhdWRp
byBkZXN0aW5hdGlvbiBmcm9tIGEgd2ViIHByb2Nlc3MgdG8gdGhlIEdQVSBQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93bklm
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6YXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246
OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnJl
bmRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b246OmlzUGxheWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OmZyYW1lc1BlckJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9CdXNEYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3Jh
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpyZW5kZXJCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6cHVzaFNh
bXBsZXMpOgorCiAyMDIwLTEwLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBub24tQ29jb2EgcGxhdGZvcm1zICYg
cmVsZWFzZSBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggYzU2NzBjMzY0ODU3NWU4ODBlYjY4NWUw
YTNhMTM1YzI5MjQzNzViYi4uZTMyMjM3MjNkNzc4ZmVlMTNmNDcyYzRkMjExMGVjOTM2YjgwZmFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
QXVkaW9EZXN0aW5hdGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfkF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCi0gICAgLy8gQXVkaW9Ob2RlICAgCisgICAgLy8g
QXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCkgb3ZlcnJpZGUgeyB9OyAvLyB3ZSdy
ZSBwdWxsZWQgYnkgaGFyZHdhcmUgc28gdGhpcyBpcyBuZXZlciBjYWxsZWQKICAgICAKICAgICAv
LyBUaGUgYXVkaW8gaGFyZHdhcmUgY2FsbHMgcmVuZGVyKCkgdG8gZ2V0IHRoZSBuZXh0IHJlbmRl
ciBxdWFudHVtIG9mIGF1ZGlvIGludG8gZGVzdGluYXRpb25CdXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCBmOTU5ZTM5ODI5NjYwNTA5MDNhYWM4NWI4YWYyNDJkYTE1NDM0YTg5Li41OTI2
NjA2Mzg5OGY0MTM2YTliZjU1YzI2ODkxYTU2YmJhMzE2ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTIwMywxOSArMjAzLDIwIEBAIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQogcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNw
cAorcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAKIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVm
ZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCi1wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9C
dXNNYWMubW0KLXBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
SGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25N
YWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3YjUzM2VmNmM1ZjQ0Y2RiODdkYmI4MTIxMTc4OTVjMGNkYzMxZWUzLi42ODYw
ODBjYzExZGZiNTAxZmZkNjNmNTJlYjQxYThiNDJhNmUxYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzMsNiArNjMzLDcg
QEAKIAkJMURBQjMxMTIyNTFENkJGMzAwRkM5NDg1IC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEIzMUEx
MjM3OURDODMwMDg4M0ZERSAvKiBXZWJWaWRlb0NvbnRhaW5lckxheWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMURBQjMxMTQyNTFENzI1QzAw
RkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxREFCMzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXll
ck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxREFCMzExNTI1MUQ3NERCMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RTFD
NTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMURCNjZEM0IyNTM3QTk1NjAwQjY3
MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFERDNCNEM2
MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0
QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkxREY3RTgxRjI1MUE5RTA2
MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00MTI3LDcgKzQxMjgsNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2
MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MDFFMjNG
QTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgKi87IH07CiAJCUNEMDYzRjgzMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MTFFMjNGQTg5MDA4MTJCRTMgLyogSW5p
dERhdGFSZWdpc3RyeS5oICovOyB9OwotCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHAgKi87IH07CisJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVu
aXRBZGFwdG9ySU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9y
SU9TLmNwcCAqLzsgfTsKIAkJQ0QxMUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8q
IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRDE3QTQ1RDIxMzc0MDgxMDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxN0E0NTky
MTM3NDAxNjAwNzlFQzdCIC8qIFVuaWZpZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKQEAgLTUzMDQs
NyArNTMwNSw2IEBACiAJCUZEMzE2MEFCMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2
ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQzMTYwNzUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggKi87IH07
CiAJCUZEMzE2MEFEMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzcxMkIwMjZG
NzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggKi87IH07CiAJCUZEMzE2MEFGMTJCMDI2
RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5o
ICovOyB9OwotCQlGRDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYw
QjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLzsgfTsKIAkJRkQz
MTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFB
MzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBF
MUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDM1OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJh
bVRpbWVsaW5lLmggKi87IH07CiAJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0Yx
NzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY3NTQsNiArNjc1NCw4IEBACiAJCTFEMDAyNkE5MjM3NEY5
RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2
QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBQjMxMTMy
NTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZp
ZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEQjY2RDM3
MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMURCNjZEMzgyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJl
SW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZU9ic2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZEMjExQkExMkEwMDRC
NzgwRSAvKiBOYXZpZ2F0b3JTaGFyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdh
dG9yU2hhcmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRjIxMUJB
ODQxMDA0Qjc4MEUgLyogU2hhcmVEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFy
ZURhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyOTQsOCArMTQyOTYs
NyBAQAogCQlDRDA2M0Y4MDFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0RGF0YVJlZ2lzdHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwNjNGODExRTIzRkE4OTAwODEyQkUz
IC8qIEluaXREYXRhUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5pdERhdGFSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBDOEI1
ODIxNDFDOENBMDA2MkY1OUQgLyogTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFw
dG9ySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxMUIzREYyMjdDQUFB
OTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3
REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1NjAsOCArMTY1NjEsNyBAQAogCQlGRDMxNjA3
ODEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWZWN0b3JNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkQzMTYwNzkxMkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb0J1c01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1
ZGlvRGVzdGluYXRpb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25NYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZEMzE2MEI4MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQjkxMkIwMjcyQTAw
QzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkQzMTYwQkExMkIwMjcyQTAwQzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZGVEZyYW1lTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI3Mjk2LDEwICsyNzI5Niw5IEBACiAJCUNEMEVFRTBEMTQ3NDNF
NDgwMDNFQUZBMiAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcCAqLywKLQkJCQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlv
bklPUy5oICovLAogCQkJCUNENTU5NjhGMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFk
ZXJJT1MuY3BwICovLAogCQkJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVS
ZWFkZXJJT1MuaCAqLywKKwkJCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRw
dXRVbml0QWRhcHRvcklPUy5jcHAgKi8sCiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8q
IEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywKIAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4
IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSAqLywKQEAgLTI3MzY0LDYgKzI3MzYzLDggQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTQxMzE1MTg0MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwICovLAogCQkJCTQxMzE1MTg2MjM1Nzc0NUUwMDExNUU2RSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCAqLywKKwkJCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgKi8sCisJCQkJMURCNjZEMzcyNTM2NzhFQTAw
QjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCAqLywKIAkJCQkwNzNCODc2MjFFNDM4
NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcCAqLywKIAkJCQkwNzNCODc2
MzFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggKi8sCiAJCQkJMDcz
Qjg3NjUxRTQzODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oICovLApAQCAt
MzAyNzUsMTIgKzMwMjc2LDExIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAqLywKLQkJ
CQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8s
Ci0JCQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAq
LywKIAkJCQlGRDMxNjBCODEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCOTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFj
LmggKi8sCiAJCQkJQ0QyRjRBMjUxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lck1hYy5jcHAgKi8sCiAJCQkJQ0QyRjRBMjYxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFy
ZHdhcmVMaXN0ZW5lck1hYy5oICovLAorCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBB
dWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1
RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMx
QTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8sCiAJCQkpOwpAQCAtMzA1NjEsNyArMzA1NjEsNiBA
QAogCQkJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGlu
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovLAotCQkJCUZEMzE2MEJEMTJCMDI3
MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAwODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDgwMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNTc3LDYgKzMwNTc2LDcgQEAK
IAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU3MTQ2N0IzMjRBQkFFRjIwMEZCMkY1MCAvKiBBdWRpb05vZGVPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9O
b2RlT3V0cHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxREI2NkQzQjI1MzdBOTU2MDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUQx
MkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzU2
OTlFMjUyQ0YzNjIwMEUxQjk1NiAvKiBBdWRpb1BhcmFtRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNCOTg3MEMyNTIyNUY4MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1NYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzA2NTQsNyArMzA2NTQsNiBAQAogCQkJCTUxNzQxRDBGMEIwNzI1OUEw
MEVENDQyQyAvKiBCYWNrRm9yd2FyZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOEM4
MUUxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBMUI4N0QyMDg3QzRDMDAwOTc5QTc1IC8qIEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOTQ3MjE3MjUzMjNDMjEwMEYxNTNDOCAvKiBC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMjRFRTgwQzI2
NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2MEJCNjE2MUQw
QTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
MTk4RkJGMjRBMTYwREQwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAq
LywKQEAgLTM1MjM5LDggKzM1MjM4LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCUE5Nzg3Q0I0MUY1
RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzFGN0I3MzEyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAx
RDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMEVF
RTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25J
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2NDMgLyogQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREUzQTg1NzE3
RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9u
LmgKaW5kZXggMTYwYzY1NzhlMTVlZDVlYTc1MjVkYzc2OGJkNGVmM2ZkYzc0ZjRmZi4uNDE5NjU1
MmQ5MTVhODliNGEwNWY4NDc2NGQ1ZmVhYzA1NjYyNDk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4gaW4gQXVk
aW9EZXN0aW5hdGlvbiB0byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUKICAgICB2aXJ0dWFsIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7Ci0gICAgc3RhdGljIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUoKTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Qg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCAxZDBmNGUyODgxMTg3ZTdiMzUw
MjkwYjAyMzNjYjhiMGMyMWFmNGU2Li4yYzk3MWVhN2U2MzdhNTg1ZGY4NjY1OGMxNGEzMzdmODYw
OGFlNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTM1LDYgKzM1LDEwIEBACiAj
aW5jbHVkZSAiTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgiCiAjaW5jbHVkZSAiUHVzaFB1bGxGSUZP
LmgiCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3RleHByIHNpemVfdCBmaWZvU2l6ZSA9IDk2
ICogQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwpAQCAtNTYsNyArNjAsNiBAQCBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGNvbnN0CiAgICAgICAgIHJldHVybiBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OmNyZWF0ZU92ZXJyaWRlKGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIAogICAgIGF1dG8gZGVz
dGluYXRpb24gPSBhZG9wdFJlZigqbmV3IEF1ZGlvRGVzdGluYXRpb25Db2NvYShjYWxsYmFjaywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOwotICAgIGRlc3RpbmF0aW9uLT5j
b25maWd1cmUoKTsKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKQEAgLTcxLDE0ICs3NCwx
NCBAQCB1bnNpZ25lZCBsb25nIEF1ZGlvRGVzdGluYXRpb246Om1heENoYW5uZWxDb3VudCgpCiB9
CiAKIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUpCi0gICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICA6IG1fYXVkaW9PdXRwdXRV
bml0QWRhcHRvcigqdGhpcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX291
dHB1dEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1ZGlvVXRp
bGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxsKCkpCiAgICAg
LCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1
ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSkucmVsZWFzZU5vbk51bGwoKSkKICAgICAs
IG1fZmlmbyhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4obnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmlmb1NpemUpKQogICAgICwgbV9jb250ZXh0U2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogewot
ICAgIGNvbmZpZ3VyZSgpOworICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUo
aGFyZHdhcmVTYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgYXV0
byBoYXJkd2FyZVNhbXBsZVJhdGUgPSB0aGlzLT5oYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBp
ZiAoc2FtcGxlUmF0ZSAhPSBoYXJkd2FyZVNhbXBsZVJhdGUpIHsKQEAgLTg3LDExICs5MCw3IEBA
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkCiAgICAgfQogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKQotewotICAgIGlmIChtX291dHB1dFVuaXQpCi0g
ICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Ci19CitB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKSA9IGRlZmF1bHQ7
CiAKIHVuc2lnbmVkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6bnVtYmVyT2ZPdXRwdXRDaGFubmVs
cygpIGNvbnN0CiB7CkBAIC0xMDcsNyArMTA2LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFQK
IHsKICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAg
bV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFk
KTsKLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVu
aXQpOworICAgIE9TU3RhdHVzIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFy
dCgpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHNldElzUGxheWluZyh0cnVlKTsKQEAg
LTExNiw3ICsxMTUsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rp
b248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVAogdm9pZCBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25D
b2NvYTo6c3RvcCIpOwotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3Ao
bV9vdXRwdXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFk
YXB0b3Iuc3RvcCgpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAK
ICAgICBpZiAoIXJlc3VsdCkKQEAgLTEzMyw3ICsxMzIsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2suaXNQ
bGF5aW5nRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBz
dHJlYW1Gb3JtYXQpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Z2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0
KQogewogICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwogICAg
IGNvbnN0IGludCBiaXRzUGVyQnl0ZSA9IDg7CkBAIC0xNTcsNiArMTU2LDIxIEBAIHN0YXRpYyB2
b2lkIGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKEF1ZGlvQnVmZmVyKiBidWZmZXJzLCBBdWRpb0J1
cyYgYnVzLCBVSW50MzIKICAgICB9CiB9CiAKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpw
cm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVkaW9CdXMmIGJ1cywgVUludDMyIG51bWJlck9mRnJhbWVz
KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUu
LCBbLTEuMCwgMS4wXSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9m
Q2hhbm5lbHMoKTsgKytpKSB7CisgICAgICAgIGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChp
KTsKKyAgICAgICAgaWYgKCFjaGFubmVsLT5pc1NpbGVudCgpKQorICAgICAgICAgICAgVmVjdG9y
TWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgpLCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEo
KSwgbnVtYmVyT2ZGcmFtZXMpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGJ1cyk7
CisgICAgVU5VU0VEX1BBUkFNKG51bWJlck9mRnJhbWVzKTsKKyNlbmRpZgorfQorCiAvLyBQdWxs
cyBvbiBvdXIgcHJvdmlkZXIgdG8gZ2V0IHJlbmRlcmVkIGF1ZGlvIHN0cmVhbS4KIE9TU3RhdHVz
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1l
c3RhbXAsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCiB7
CkBAIC0yMTAsMTMgKzIyNCw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJP
blJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8vIERl
ZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBj
b25zdCBBdWRpb1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBhdXRv
KiBhdWRpb091dHB1dCA9IHN0YXRpY19jYXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVzZXJE
YXRhKTsKLSAgICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9m
RnJhbWVzLCBpb0RhdGEpOwotfQotCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlk
ZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0aWxp
dGllczo6cmVuZGVyUXVhbnR1bVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAwODk0
ZDYyMWEyZjE1MzIyNTEyNzM2NTBiNmU1YTNkM2VjOTk2ZjhhLi43MDcyZTE4ZTRlMWEyN2YxNDQw
NDAxYjg0YzBlNWI3ZDIyMjc4NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgogI2luY2x1ZGUgIkF1ZGlv
SU9DYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCIKICNpbmNs
dWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5p
dC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQzLDQ3ICs0NCw0MiBAQCBjbGFzcyBQ
dXNoUHVsbEZJRk87CiB1c2luZyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSA9
IFJlZjxBdWRpb0Rlc3RpbmF0aW9uPigqKShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVS
YXRlKTsKIAogLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0
IG91dHB1dCBBdWRpb1VuaXQKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1YmxpYyBB
dWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CitjbGFzcyBBdWRp
b0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlv
VW5pdFJlbmRlcmVyLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAg
QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwotICAgIHZpcnR1YWwgfkF1ZGlvRGVz
dGluYXRpb25Db2NvYSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YShBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0
aW9uQ29jb2EoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2FPdmVycmlkZSBjcmVhdGVPdmVycmlkZTsKIAogcHJvdGVjdGVkOgorICAgIFdF
QkNPUkVfRVhQT1JUIE9TU3RhdHVzIHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQz
MiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpIGZpbmFsOworCiAgICAg
dm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CiAKLSAgICBib29sIGlzUGxheWluZygpIGZpbmFsIHsg
cmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2lzUGxheWluZzsgfQogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2NvbnRleHRTYW1wbGVSYXRlOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVm
ZmVyKCkgY29uc3QgZmluYWw7Ci0gICAgQXVkaW9Vbml0JiBvdXRwdXRVbml0KCkgeyByZXR1cm4g
bV9vdXRwdXRVbml0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgZnJhbWVzUGVyQnVm
ZmVyKCkgY29uc3QgZmluYWw7CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gRGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKLSAgICBz
dGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJB
Y3Rpb25GbGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAKLSAgICB2b2lk
IHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mKTsKIAogICAgIEZ1bmN0aW9uPHZvaWQo
RnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkOwogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBSZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3Jl
YXRlKEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNpZ25lZCwg
ZmxvYXQpOworCiAgICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4m
Jik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBy
ZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcik7CiAKLSAgICBmcmll
bmQgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lP
Q2FsbGJhY2smLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKLSAg
ICAKICAgICAvLyBBdWRpb1NvdXJjZVByb3ZpZGVyLgotICAgIHZvaWQgcHJvdmlkZUlucHV0KEF1
ZGlvQnVzKiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBm
aW5hbDsKIAotICAgIHZvaWQgY29uZmlndXJlKCk7CiAgICAgdm9pZCBwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpOwogCi0gICAgT1NTdGF0dXMg
cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSk7Ci0KLSAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OworICAg
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yOwogICAgIEF1
ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKIAogICAgIC8vIFRvIHBhc3MgdGhlIGRhdGEgZnJv
bSBGSUZPIHRvIHRoZSBhdWRpbyBkZXZpY2UgY2FsbGJhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5MDY2NDgzYTMwMzNjZjEyMWZlYzJhZmJiM2U1ODZmMmMyZjFl
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVk
aW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcihBdWRpb1VuaXRSZW5k
ZXJlciYgcmVuZGVyZXIpCisgICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICAsIG1fYXVkaW9Vbml0
UmVuZGVyZXIocmVuZGVyZXIpCit7Cit9CisKK0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6On5BdWRp
b091dHB1dFVuaXRBZGFwdG9yKCkKK3sKKyAgICBpZiAobV9vdXRwdXRVbml0KQorICAgICAgICBB
dWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShtX291dHB1dFVuaXQpOworfQorCitPU1N0YXR1
cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdGFydCgpCit7CisgICAgcmV0dXJuIEF1ZGlvT3V0
cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7Cit9CisKK09TU3RhdHVzIEF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3I6OnN0b3AoKQoreworICAgIHJldHVybiBBdWRpb091dHB1dFVuaXRTdG9wKG1fb3V0
cHV0VW5pdCk7Cit9CisKKy8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCitPU1N0YXR1cyBB
dWRpb091dHB1dFVuaXRBZGFwdG9yOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5p
dFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUlu
dDMyIC8qYnVzTnVtYmVyKi8sIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpCit7CisgICAgYXV0byogYWRhcHRvciA9IHN0YXRpY19jYXN0PEF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IqPih1c2VyRGF0YSk7CisgICAgcmV0dXJuIGFkYXB0b3ItPm1fYXVkaW9Vbml0
UmVuZGVyZXIucmVuZGVyKHRpbWVzdGFtcCwgbnVtYmVyT2ZGcmFtZXMsIGlvRGF0YSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1
dFVuaXRBZGFwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2ZGM2ZTE1ZWZkZjg2MDg0NGU1ZjJl
MjRjOTA3ZTRiZDJlZWIxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisj
aW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEF1ZGlvVW5pdFJlbmRlcmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1Vu
aXRSZW5kZXJlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIE9TU3RhdHVzIHJlbmRlcihjb25z
dCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpID0gMDsKK307CisKK2NsYXNzIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgeworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoQXVkaW9Vbml0
UmVuZGVyZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QXVkaW9PdXRwdXRVbml0QWRhcHRvcigp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1w
bGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBPU1N0YXR1cyBz
dGFydCgpOworICAgIE9TU3RhdHVzIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgT1NT
dGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFn
cyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJl
ck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CisKKyAgICBBdWRpb1VuaXQgbV9v
dXRwdXRVbml0OworICAgIEF1ZGlvVW5pdFJlbmRlcmVyJiBtX2F1ZGlvVW5pdFJlbmRlcmVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rl
c3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ3MzNk
ZTdmNzVkYTlhYjZkMDg3YTIzMWFkOGViOTgxZGM2ODg4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0KLSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCIKLQotI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZU
X0xJTktfRlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1
ZGlvQ29tcG9uZW50RmluZE5leHQsIEF1ZGlvQ29tcG9uZW50LCAoQXVkaW9Db21wb25lbnQgaW5D
b21wb25lbnQsIGNvbnN0IEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gKmluRGVzYyksIChpbkNv
bXBvbmVudCwgaW5EZXNjKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29tcG9uZW50
SW5zdGFuY2VOZXcsIE9TU3RhdHVzLCAoQXVkaW9Db21wb25lbnQgaW5Db21wb25lbnQsIEF1ZGlv
Q29tcG9uZW50SW5zdGFuY2UgKm91dEluc3RhbmNlKSwgKGluQ29tcG9uZW50LCBvdXRJbnN0YW5j
ZSkpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRBZGRQcm9wZXJ0eUxpc3RlbmVy
LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwg
QXVkaW9Vbml0UHJvcGVydHlMaXN0ZW5lclByb2MgaW5Qcm9jLCB2b2lkICppblByb2NVc2VyRGF0
YSksIChpblVuaXQsIGluSUQsIGluUHJvYywgaW5Qcm9jVXNlckRhdGEpKQotU09GVF9MSU5LKEF1
ZGlvVG9vbGJveCwgQXVkaW9Vbml0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGlu
VW5pdCwgQXVkaW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBB
dWRpb1VuaXRFbGVtZW50IGluRWxlbWVudCwgdm9pZCAqb3V0RGF0YSwgVUludDMyICppb0RhdGFT
aXplKSwgKGluVW5pdCwgaW5JRCwgaW5TY29wZSwgaW5FbGVtZW50LCBvdXREYXRhLCBpb0RhdGFT
aXplKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEluaXRpYWxpemUsIE9TU3Rh
dHVzLCAoQXVkaW9Vbml0IGluVW5pdCksIChpblVuaXQpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJv
eCwgQXVkaW9Vbml0U2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwgQXVk
aW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBBdWRpb1VuaXRF
bGVtZW50IGluRWxlbWVudCwgY29uc3Qgdm9pZCAqaW5EYXRhLCBVSW50MzIgaW5EYXRhU2l6ZSks
IChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgaW5EYXRhLCBpbkRhdGFTaXplKSkK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29u
ZmlndXJlKCkKLXsKLSAgICBjb25zdCBpbnQga1ByZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7Ci0K
LSAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0Ci0gICAgQXVkaW9D
b21wb25lbnQgY29tcDsKLSAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7Ci0KLSAg
ICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7Ci0gICAgZGVzYy5j
b21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87Ci0gICAgZGVzYy5j
b21wb25lbnRNYW51ZmFjdHVyZXIgPSBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0FwcGxlOwotICAg
IGRlc2MuY29tcG9uZW50RmxhZ3MgPSAwOwotICAgIGRlc2MuY29tcG9uZW50RmxhZ3NNYXNrID0g
MDsKLSAgICBjb21wID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dCgwLCAmZGVzYyk7Ci0KLSAgICBB
U1NFUlQoY29tcCk7Ci0KLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlTmV3KGNvbXAsICZvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAg
IFVJbnQzMiBmbGFnID0gMTsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRw
dXRVbml0KCksCi0gICAgICAgIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKLSAg
ICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwKLSAgICAgICAgMCwKLSAgICAgICAgJmZsYWcs
Ci0gICAgICAgIHNpemVvZihmbGFnKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgcmVz
dWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVz
dWx0KTsKLSAgICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCi0gICAgQVVSZW5kZXJDYWxsYmFja1N0
cnVjdCBpbnB1dDsKLSAgICBpbnB1dC5pbnB1dFByb2MgPSBpbnB1dFByb2M7Ci0gICAgaW5wdXQu
aW5wdXRQcm9jUmVmQ29uID0gdGhpczsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0
eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1
ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOwotICAgIEFTU0VS
VCghcmVzdWx0KTsKLQotICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0Ci0gICAgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLQotICAgIFVJbnQzMiBzaXplID0gc2l6ZW9m
KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0
UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBr
QXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwot
ICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
bihzdHJlYW1Gb3JtYXQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0
cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2Nv
cGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgQXVkaW9TZXNzaW9u
OjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJlZmVycmVkQnVmZmVy
U2l6ZSk7Ci19Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1
dFVuaXRBZGFwdG9ySU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTk2MzBmYjYwZjIyYjNl
ZTU2ZDI0MmQ3MzA0MzQ4NmI4N2I1NjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwCkBAIC0w
LDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQsIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvU29mdExp
bmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCitTT0ZUX0xJTkso
QXVkaW9Ub29sYm94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1
ZGlvQ29tcG9uZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9u
ICppbkRlc2MpLCAoaW5Db21wb25lbnQsIGluRGVzYykpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94
LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3LCBPU1N0YXR1cywgKEF1ZGlvQ29tcG9uZW50IGlu
Q29tcG9uZW50LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlICpvdXRJbnN0YW5jZSksIChpbkNvbXBv
bmVudCwgb3V0SW5zdGFuY2UpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRk
UHJvcGVydHlMaXN0ZW5lciwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQ
cm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFByb3BlcnR5TGlzdGVuZXJQcm9jIGluUHJvYywgdm9p
ZCAqaW5Qcm9jVXNlckRhdGEpLCAoaW5Vbml0LCBpbklELCBpblByb2MsIGluUHJvY1VzZXJEYXRh
KSkKK1NPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEdldFByb3BlcnR5LCBPU1N0YXR1
cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0
U2NvcGUgaW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIHZvaWQgKm91dERhdGEs
IFVJbnQzMiAqaW9EYXRhU2l6ZSksIChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwg
b3V0RGF0YSwgaW9EYXRhU2l6ZSkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJ
bml0aWFsaXplLCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQpLCAoaW5Vbml0KSkKK1NPRlRf
TElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlv
VW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5T
Y29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIGNvbnN0IHZvaWQgKmluRGF0YSwgVUlu
dDMyIGluRGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1lbnQsIGluRGF0
YSwgaW5EYXRhU2l6ZSkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1
dFVuaXRBZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIGNvbnN0IGludCBrUHJlZmVycmVkQnVm
ZmVyU2l6ZSA9IDI1NjsKKworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1
dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9uZW50RGVzY3Jp
cHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091
dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9SZW1v
dGVJTzsKKyAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFj
dHVyZXJfQXBwbGU7CisgICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7CisgICAgZGVzYy5jb21w
b25lbnRGbGFnc01hc2sgPSAwOworICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KDAs
ICZkZXNjKTsKKworICAgIEFTU0VSVChjb21wKTsKKworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1
ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJU
KCFyZXN1bHQpOworCisgICAgVUludDMyIGZsYWcgPSAxOworICAgIHJlc3VsdCA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwKKyAgICAgICAga0F1ZGlvT3V0cHV0VW5pdFByb3Bl
cnR5X0VuYWJsZUlPLAorICAgICAgICBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LAorICAgICAgICAw
LAorICAgICAgICAmZmxhZywKKyAgICAgICAgc2l6ZW9mKGZsYWcpKTsKKyAgICBBU1NFUlQoIXJl
c3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG1fb3V0cHV0VW5pdCk7
CisgICAgQVNTRVJUKCFyZXN1bHQpOworICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKKyAgICBB
VVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0OworICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0
UHJvYzsKKyAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOworICAgIHJlc3VsdCA9IEF1
ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJl
bmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZpbnB1dCwgc2l6ZW9mKGlu
cHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHN0cmVhbSBmb3JtYXQK
KyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworCisgICAgVUlu
dDMyIHNpemUgPSBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKTsKKyAgICByZXN1
bHQgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0
eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lkKikmc3RyZWFt
Rm9ybWF0LCAmc2l6ZSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgY29uc3RleHByIGlu
dCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0
c1BlckJ5dGUgPSA4OworICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2Ft
cGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFy
UENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05h
dGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFt
Rm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJG
cmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1l
ID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKKyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFu
bmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9V
bml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9y
bWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXpl
b2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOwor
CisgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6
ZShrUHJlZmVycmVkQnVmZmVyU2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3Rp
bmF0aW9uTWFjLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBmOWM5ZmZmNTFm
NDgzYjQ0MDQxYTM3NzFmYjQxODdhN2FlZGE3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgiCi0KLSNpZiBFTkFCTEUo
V0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2lu
Y2x1ZGUgIlZlY3Rvck1hdGguaCIKLSNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpj
b25maWd1cmUoKQotewotICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1dFVu
aXQKLSAgICBBdWRpb0NvbXBvbmVudCBjb21wOwotICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRp
b24gZGVzYzsKLQotICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091dHB1
dDsKLSAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9EZWZhdWx0
T3V0cHV0OwotICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1ZGlvVW5pdE1hbnVm
YWN0dXJlcl9BcHBsZTsKLSAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsKLSAgICBkZXNjLmNv
bXBvbmVudEZsYWdzTWFzayA9IDA7Ci0gICAgY29tcCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQo
MCwgJmRlc2MpOwotCi0gICAgQVNTRVJUKGNvbXApOwotCi0gICAgT1NTdGF0dXMgcmVzdWx0ID0g
QXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmb3V0cHV0VW5pdCgpKTsKLSAgICBBU1NF
UlQoIXJlc3VsdCk7Ci0KLSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVu
aXQoKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHJlbmRlciBjYWxsYmFj
awotICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7Ci0gICAgaW5wdXQuaW5wdXRQcm9j
ID0gaW5wdXRQcm9jOwotICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRoaXM7Ci0gICAgcmVz
dWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVy
dHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZpbnB1dCwg
c2l6ZW9mKGlucHV0KSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHN0cmVh
bSBmb3JtYXQKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0Owot
ICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwotCi0gICAg
cmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJv
cGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3Ry
ZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNT
RVJUKCFyZXN1bHQpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvY2Vzc0J1
c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiBidXMsIFVJbnQzMiBudW1iZXJPZkZyYW1lcykKLXsKLSAg
ICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUuLCBbLTEuMCwgMS4wXSkKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSB7Ci0gICAgICAg
IGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChpKTsKLSAgICAgICAgaWYgKCFjaGFubmVsLT5p
c1NpbGVudCgpKQotICAgICAgICAgICAgVmVjdG9yTWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgp
LCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEoKSwgbnVtYmVyT2ZGcmFtZXMpOwotICAgIH0K
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM4ZWQzZWY3OGM4YzZhM2IxZTA3MGNiNDQwNTk2OWFkYTRhYzNkYTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0
QWRhcHRvck1hYy5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9S
TShNQUMpCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgPENvcmVBdWRpby9BdWRp
b0hhcmR3YXJlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVm
YXVsdE91dHB1dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9u
ZW50RGVzY3JpcHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1Vu
aXRUeXBlX091dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3Vi
VHlwZV9EZWZhdWx0T3V0cHV0OworICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1
ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBsZTsKKyAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsK
KyAgICBkZXNjLmNvbXBvbmVudEZsYWdzTWFzayA9IDA7CisgICAgY29tcCA9IEF1ZGlvQ29tcG9u
ZW50RmluZE5leHQoMCwgJmRlc2MpOworCisgICAgQVNTRVJUKGNvbXApOworCisgICAgT1NTdGF0
dXMgcmVzdWx0ID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmbV9vdXRwdXRVbml0
KTsKKyAgICBBU1NFUlQoIXJlc3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFs
aXplKG1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHJl
bmRlciBjYWxsYmFjaworICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7CisgICAgaW5w
dXQuaW5wdXRQcm9jID0gaW5wdXRQcm9jOworICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRo
aXM7CisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVk
aW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWws
IDAsICZpbnB1dCwgc2l6ZW9mKGlucHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAg
Ly8gU2V0IHN0cmVhbSBmb3JtYXQKKyAgICBjb25zdGV4cHIgaW50IGJ5dGVzUGVyRmxvYXQgPSBz
aXplb2YoRmxvYXQzMik7CisgICAgY29uc3RleHByIGludCBiaXRzUGVyQnl0ZSA9IDg7CisKKyAg
ICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworICAgIHN0cmVhbUZv
cm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQu
bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9y
bWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9y
bWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAx
OworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsK
KyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1Bl
ckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0
LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQs
IDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcAppbmRleCA1YTEyY2RlNGZjZGZjNTdmYWQ0MmI3ZDllOGZlNzMyMDQzNTA5ZDc4
Li41ZDJiYmZjYTRhYjMyYzY5OTgyYjdjMjViYWU3Njg2ZGZmMjM5MmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25D
b2NvYS5jcHAKQEAgLTY4LDEwICs2OCwxMCBAQCB2b2lkIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnRpY2soKQogewogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgc2FtcGxlUmF0
ZSA9IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgPSBtX251bWJlck9mRnJh
bWVzVG9Qcm9jZXNzXSB7CiAgICAgICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJl
YW1Gb3JtYXQ7Ci0gICAgICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1G
b3JtYXQpOworICAgICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9y
bWF0KTsKIAogICAgICAgICBXZWJBdWRpb0J1ZmZlckxpc3Qgd2ViQXVkaW9CdWZmZXJMaXN0IHsg
c3RyZWFtRm9ybWF0LCBudW1iZXJPZkZyYW1lc1RvUHJvY2VzcyB9OwotICAgICAgICBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh0aGlzLCAwLCAwLCAwLCBudW1iZXJPZkZyYW1lc1Rv
UHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CisgICAgICAgIHJlbmRlcigwLCBu
dW1iZXJPZkZyYW1lc1RvUHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCmluZGV4IDI3ZjJhNjk5NmFj
OTQwY2NkODQ3OTM1OTU0ZTZkOTE4NGEzZDMzZDAuLmJlNDNiZDM1NWE4NTNhZWIyNzBlYTFkMTk0
MGNhNTNiYThlZWUzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcApAQCAtMjks
MTE2ICsyOSwxMjMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVE
SU8pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAi
UmVtb3RlQXVkaW9CdXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlICJTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9CdXMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1
ZGlvSU9DYWxsYmFjay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9PdXRwdXRVbml0QWRhcHRv
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9VdGlsaXRpZXMuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1B1c2hQdWxsRklGTy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVh
ZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgeworI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbmRpZgogCi0vLyBUaGlzIEZJRk8gc2l6ZSBt
YXRjaGVzIHRvIG9uZSBpbiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGFuZCB3YXMgaW1wb3J0
ZWQgZnJvbSBCbGluay4KLWNvbnN0ZXhwciBzaXplX3QgZmlmb1NpemUgPSA5NiAqIFdlYkNvcmU6
OkF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZTsKK25hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+LCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9JT0NhbGxi
YWNrIHsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24KKyAgICA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPgorI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgICwgcHVibGljIFdlYkNvcmU6OkF1ZGlvVW5pdFJlbmRlcmVyCisjZW5kaWYKK3sKIHB1
YmxpYzoKLSAgICB1c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOwotICAgIHVzaW5n
IEF1ZGlvRGVzdGluYXRpb24gPSBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOwotICAgIHVzaW5n
IFNoYXJlZEJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjsKLQogICAgIHN0YXRpYyBSZWY8
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIs
Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlKQorICAgICAgICBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51
bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbihjb25uZWN0aW9uLCBp
ZGVudGlmaWVyLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbihjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBpbnB1dERl
dmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNh
bXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJl
bW90ZUF1ZGlvRGVzdGluYXRpb24oKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
ZGVzdGluYXRpb24tPmlzUGxheWluZygpKTsKICAgICB9CiAKICAgICB2b2lkIHNjaGVkdWxlR3Jh
Y2VmdWxTaHV0ZG93bklmTmVlZGVkKCkKICAgICB7Ci0gICAgICAgIGlmICghaXNQbGF5aW5nKCkp
CisgICAgICAgIGlmICghbV9pc1BsYXlpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IG1fcHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1bFNodXRkb3duID0gdGhpczsKLSAgICAgICAgc3Rv
cCgpOwogICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0
b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNIYW5kbGUsIGNv
bnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVpbnQ2
NF90IG51bWJlck9mRnJhbWVzKQorICAgIHsKKyAgICAgICAgbV9kZXNjcmlwdGlvbiA9IGRlc2Ny
aXB0aW9uOwogCi0gICAgdm9pZCBzdGFydCgpIHsgbV9kZXN0aW5hdGlvbi0+c3RhcnQoeyB9KTsg
fQotICAgIHZvaWQgc3RvcCgpIHsgbV9kZXN0aW5hdGlvbi0+c3RvcCgpOyB9Ci0gICAgYm9vbCBp
c1BsYXlpbmcoKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKTsgfQotICAgIHVu
c2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb24tPmZy
YW1lc1BlckJ1ZmZlcigpIDsgfQorICAgICAgICBpZiAoaXBjSGFuZGxlLmhhbmRsZS5pc051bGwo
KSkgeworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5kZWFsbG9jYXRlKCk7CisgICAgICAgICAg
ICBzdG9yYWdlKCkuc2V0UmVhZE9ubHkoZmFsc2UpOworICAgICAgICAgICAgc3RvcmFnZSgpLnNl
dFN0b3JhZ2UobnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotcHJp
dmF0ZToKLSAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
KQotICAgICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQotICAgICAgICAsIG1faWQoaWRl
bnRpZmllcikKLSAgICAgICAgLCBtX2Rlc3RpbmF0aW9uKEF1ZGlvRGVzdGluYXRpb246OmNyZWF0
ZSgqdGhpcywgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSkKLSAgICAgICAgLCBtX2ZpZm8obnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmlmb1NpemUpCi0gICAgewotICAgIH0KKyAgICAgICAgYXV0byBtZW1vcnkg
PSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgc3RvcmFnZSgpLnNldFN0b3JhZ2UoV1RGTW92ZSht
ZW1vcnkpKTsKKyAgICAgICAgc3RvcmFnZSgpLnNldFJlYWRPbmx5KHRydWUpOwogCi0gICAgdm9p
ZCByZW5kZXIoQXVkaW9CdXMqLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvSU9Qb3NpdGlvbiYgb3V0cHV0UG9zaXRp
b24pIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAg
ICAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMp
OwogCi0gICAgICAgIGlmIChtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93bikKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4obV9kZXNjcmlwdGlvbik7CisgICAgfQorI2Vu
ZGlmCiAKLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Zp
Zm9Mb2NrKTsKLSAgICAgICAgICAgIGZyYW1lc1RvUHJvY2VzcyA9IG1fZmlmby5wdWxsKGRlc3Rp
bmF0aW9uQnVzLCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghZnJh
bWVzVG9Qcm9jZXNzKQotICAgICAgICAgICAgcmV0dXJuOworICAgIHZvaWQgc3RhcnQoKQorICAg
IHsKKyAgICB9CiAKLSAgICAgICAgVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiBidWZmZXJzOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVzdGluYXRpb25CdXMtPm51bWJlck9m
Q2hhbm5lbHMoKTsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9y
eTo6YWxsb2NhdGUoc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgICAg
ICBidWZmZXJzLmFwcGVuZCgqbWVtb3J5KTsKLSAgICAgICAgfQorICAgIHZvaWQgc3RvcCgpCisg
ICAgeworICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogSXQgaXMgdW5mb3J0dW5hdGUgd2UgaGF2
ZSB0byBkaXNwYXRjaCB0byB0aGUgbWFpbiB0aGVhZCBoZXJlLiBXZSBzaG91bGQgYmUgYWJsZSB0
byBJUEMgc3RyYWlnaHQgZnJvbSB0aGUKLSAgICAgICAgLy8gcmVuZGVyIHRocmVhZCBidXQgdGhp
cyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHNlbmRXaXRoQXN5bmNSZXBseSgpLgotICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1l
c1RvUHJvY2Vzcywgb3V0cHV0UG9zaXRpb24sIGJ1ZmZlcnMgPSBXVEZNb3ZlKGJ1ZmZlcnMpXSgp
IG11dGFibGUgewotICAgICAgICAgICAgUmVtb3RlQXVkaW9CdXNEYXRhIGJ1c0RhdGEgeyBmcmFt
ZXNUb1Byb2Nlc3MsIG91dHB1dFBvc2l0aW9uLCBidWZmZXJzLm1hcChbXShhdXRvJiBtZW1vcnkp
IHsgcmV0dXJuIG1lbW9yeS5jb3B5UmVmKCk7IH0pIH07Ci0gICAgICAgICAgICBBU1NFUlQoZnJh
bWVzVG9Qcm9jZXNzKTsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJl
bmRlckJ1ZmZlcihidXNEYXRhKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBidWZmZXJzID0gV1RGTW92ZShidWZmZXJzKSwgZnJhbWVzVG9Qcm9jZXNzXSgp
IHsKLSAgICAgICAgICAgICAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidWZm
ZXJzLnNpemUoKSwgZnJhbWVzVG9Qcm9jZXNzLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAg
ICAgICAgIGF1ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIHN0YXRpY19jYXN0PGZsb2F0Kj4o
YnVmZmVyc1tpXS0+ZGF0YSgpKSwgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICAgICAgICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgICAgIG1fZmlm
by5wdXNoKGF1ZGlvQnVzLmdldCgpKTsKLSAgICAgICAgICAgIH0sIG1faWQudG9VSW50NjQoKSk7
Ci0gICAgICAgIH0pOworcHJpdmF0ZToKKyAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpCisgICAgICAgIC8v
IDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgICAgIDogbV9pZChpZGVudGlmaWVyKQor
ICAgICAgICAsIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcigqdGhpcykKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJp
bmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIp
KSkKKyNlbmRpZgorICAgICAgICAvLyAsIG1fY29udGV4dFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSkK
KyAgICB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIG1fYXVkaW9PdXRwdXRVbml0QWRh
cHRvci5jb25maWd1cmUoaGFyZHdhcmVTYW1wbGVSYXRlLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KTsKKyNlbmRpZgogICAgIH0KIAotICAgIHZvaWQgaXNQbGF5aW5nRGlkQ2hhbmdlKCkgb3ZlcnJp
ZGUKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZSYgc3Rv
cmFnZSgpCiAgICAgewotICAgICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1
dGRvd24pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Rlc3RpbmF0aW9uLT5pc1Bs
YXlpbmcoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWZDb3VudCgpID09IDEpOwot
ICAgICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24gPSBudWxscHRy
OyAvLyBEZWxldGVzICJ0aGlzIi4KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGlzUGxheWluZyA9IG1fZGVzdGluYXRpb24tPmlzUGxheWluZygpLCBpZGVudGlmaWVyID0g
bV9pZC50b1VJbnQ2NCgpXSB7Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6RGlkQ2hhbmdlSXNQ
bGF5aW5nKGlzUGxheWluZyksIGlkZW50aWZpZXIpOwotICAgICAgICB9KTsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlJj4obV9yaW5nQnVmZmVyLT5z
dG9yYWdlKCkpOwogICAgIH0KKyAgICAKKyAgICBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9U
aW1lU3RhbXAqLCBVSW50MzIsIEF1ZGlvQnVmZmVyTGlzdCopCisgICAgLy8gT1NTdGF0dXMgcmVu
ZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1lc3RhbXAsIFVJbnQzMiBudW1iZXJPZkZyYW1l
cywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCisgICAgeworICAgICAgICAvKgorICAgICAgICBz
ZW5kQXN5Y2hXaXRoUmVwbHkgeworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5zZXRDdXJyZW50
RnJhbWVCb3VuZHMoc3RhcnRGcmFtZSwgZW5kRnJhbWUpOworICAgICAgICAgICAgbV9hdWRpb0J1
ZmZlckxpc3QtPnNldFNhbXBsZUNvdW50KG51bWJlck9mRnJhbWVzKTsKKyAgICAgICAgICAgIG1f
cmluZ0J1ZmZlci0+ZmV0Y2gobV9hdWRpb0J1ZmZlckxpc3QtPmxpc3QoKSwgbnVtYmVyT2ZGcmFt
ZXMsIHRpbWUudGltZVZhbHVlKCkpOworICAgICAgICB9Ki8KKyAgICAgICAgcmV0dXJuIG5vRXJy
OworICAgIH0KKyNlbmRpZgogCi0gICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25u
ZWN0aW9uOworICAgIC8vIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvbjsK
ICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBtX2lkOwotICAgIFJlZlB0cjxB
dWRpb0Rlc3RpbmF0aW9uPiBtX2Rlc3RpbmF0aW9uOwogICAgIFJlZlB0cjxSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uPiBtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93bjsKLSAgICBMb2Nr
IG1fZmlmb0xvY2s7Ci0gICAgV2ViQ29yZTo6UHVzaFB1bGxGSUZPIG1fZmlmbzsKKworICAgIFdl
YkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yOwor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uIG1fZGVzY3JpcHRpb247CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4g
bV9yaW5nQnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZl
ckxpc3Q+IG1fYXVkaW9CdWZmZXJMaXN0OworI2VuZGlmCisgICAgCisgICAgLy8gZmxvYXQgbV9j
b250ZXh0U2FtcGxlUmF0ZTsKKyAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKIH07CiAK
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQpAQCAtMTQ4LDE0ICsx
NTUsMTMgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlAKIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6On5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKIAot
dm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlv
bihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFu
bmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwK
LSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyLCB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihj
b25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVs
cywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxv
YXQgaGFyZHdhcmVTYW1wbGVSYXRlLAorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8gbmV3SUQgPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGVU
aHJlYWRTYWZlKCk7Ci0gICAgYXV0byBkZXN0aW5hdGlvbiA9IFJlbW90ZUF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIG5ld0lELCBpbnB1dERldmlj
ZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBs
ZVJhdGUpOwotICAgIGF1dG8gZnJhbWVzUGVyQnVmZmVyID0gZGVzdGluYXRpb24tPmZyYW1lc1Bl
ckJ1ZmZlcigpOworICAgIGF1dG8gZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
OjpjcmVhdGUobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJ
ZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVS
YXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwogICAgIG1fYXVkaW9EZXN0aW5hdGlvbnMuYWRkKG5l
d0lELCBXVEZNb3ZlKGRlc3RpbmF0aW9uKSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQs
IGZyYW1lc1BlckJ1ZmZlcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQpOwogfQogCiB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9u
KFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MSw3ICsxNzcsNyBAQCB2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlvRGVzdGluYXRpb24o
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbgogICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7CiAgICAg
aWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRpb25zLmdldChpZGVudGlmaWVyKSkgewog
ICAgICAgICBpdGVtLT5zdGFydCgpOwotICAgICAgICBpc1BsYXlpbmcgPSBpdGVtLT5pc1BsYXlp
bmcoKTsKKyAgICAgICAgLy8gaXNQbGF5aW5nID0gaXRlbS0+aXNQbGF5aW5nKCk7CiAgICAgfQog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzUGxheWluZyk7CiB9CkBAIC0xODEsMTEgKzE4NywxOSBA
QCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlv
bihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSQogICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7CiAg
ICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRpb25zLmdldChpZGVudGlmaWVyKSkg
ewogICAgICAgICBpdGVtLT5zdG9wKCk7Ci0gICAgICAgIGlzUGxheWluZyA9IGl0ZW0tPmlzUGxh
eWluZygpOworICAgICAgICAvLyBpc1BsYXlpbmcgPSBpdGVtLT5pc1BsYXlpbmcoKTsKICAgICB9
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQbGF5aW5nKTsKIH0KIAorI2lmIFBMQVRGT1JNKENP
Q09BKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6YXVkaW9TYW1wbGVzU3Rv
cmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZG
cmFtZXMpCit7CisgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRpb25zLmdldChp
ZGVudGlmaWVyKSkKKyAgICAgICAgaXRlbS0+YXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoaXBj
SGFuZGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCAxMWI0YmVmMTA0
MWI3YTA4YWYzYjFiMDlkZTM4NGMwM2Q1ODkzZDFlLi4yNjUxZWZhYzgzMDUyZDVlZTNjMzM1YjBk
NzA3MmQ1OGY0NjBiNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaApAQCAtMzQsNiAr
MzQsMTAgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2ViQ29yZS9D
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKQEAgLTQ2LDI1ICs1MCwyNSBAQCBw
dWJsaWM6CiAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYpOwogICAgIH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpOwogCi0g
ICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJ
ZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIpPiYm
KTsKLSAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzdGFy
dEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc3RvcEF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJv
Y2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCi0gICAgewotICAgICAgICBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Ci0gICAg
fQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQogCiBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAorICAg
IHZvaWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQs
IHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyKT4mJik7
CisgICAgdm9pZCBkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc3RhcnRB
dWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9u
KFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0
b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKKyNlbmRpZgorCiAgICAgSGFzaE1hcDxS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUF1ZGlvRGVzdGluYXRp
b24+PiBtX2F1ZGlvRGVzdGluYXRpb25zOwogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmU7Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggYmMwNWFlMTE3OWFhMmFkMzRlMzMzODUzMmJlZGI1ZTZiNGQ0
MjNhMC4uMmJjOWVkYzcxYjk0ZTg2NzljYzIwYjYyZDgxYTkzMmNlMzE1NWIwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjQsMTQgKzI0LDE0
IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogCiBtZXNz
YWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKLQot
ICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90
IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywg
ZmxvYXQgc2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50
aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKSBTeW5jaHJvbm91cwot
CisgICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpIC0+IChXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3Vz
CiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAKICAgICBTdGFydEF1ZGlvRGVz
dGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCiAgICAgU3RvcEF1ZGlvRGVzdGlu
YXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVy
KSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCi0KKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2Ny
aXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKKyNlbmRpZgogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1
NWRlOTFkY2NhMDI1MzgyOGMxMGVhNWQ4M2E2NGRlOTY1MjIwMDIuLmQ0MjI0YzZlYjg5MjUxOGVh
ZmJjOGZjN2I3NGUyNzY1YTQyNTFjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMCw3ICsxNDMwLDYgQEAKIAkJOUI1NDk5QjIy
MzYyQTdFQzAwREY4QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU0OTlCMDIzNjJB
N0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjVCRUMyNjI0MDBG
NEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMjQyNDAwRjRBOTAwNzBDNkVGIC8qIFdlYk1l
ZGlhU3RyYXRlZ3kuaCAqLzsgfTsKIAkJOUI1QkVDMkEyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUI1QkVDMjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5oICovOyB9OwotCQk5QjVCRUMzMTI0MDEwMjIyMDA3MEM2RUYgLyogUmVt
b3RlQXVkaW9CdXNEYXRhLmggaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCNUJFQzMwMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEu
aCAqLzsgfTsKIAkJOUVDNTMyQTMyNDQ3RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUVD
NTMyQTIyNDQ3RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oICovOyB9Owog
CQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4
MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTAyQTcwODFFQzBFRUU5MDBEODFEODIgLyog
Y29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgaW4gQ29weSBQbHVnLWlu
IFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1
RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1Iu
cGx1Z2luLnNiICovOyB9OwpAQCAtMjEzOSw3ICsyMTM4LDYgQEAKIAkJCQkyREI5NjA1MzIzOTg4
NkMxMDAxMDI3OTEgLyogY29tLmFwcGxlLldlYktpdC5HUFUuc2IgaW4gQ29weUZpbGVzICovLAog
CQkJCUE3OENDRERCMTkzQUM5RjgwMDVFQ0MyNSAvKiBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtp
bmcuc2IgaW4gQ29weUZpbGVzICovLAogCQkJCUE3OENDRERDMTkzQUM5RkIwMDVFQ0MyNSAvKiBj
b20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgaW4gQ29weUZpbGVzICovLAotCQkJCTlCNUJF
QzMxMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBDb3B5RmlsZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC00NTQwLDcgKzQ1MzgsNiBAQAogCQk5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyog
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjVCRUMy
OTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNUJFQzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QjVC
RUMzMDI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9CdXNEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUF1ZGlvQnVzRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QkM1OUQ2QzFFRkNDQ0I2MDAxRThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlFQzUzMkEyMjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9s
b2NhdGlvbklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvbG9jYXRpb25JZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTU1LDcgKzU1NTIsNiBAQAogCQkJ
CTA3OTIzMTMxMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
ICovLAogCQkJCTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaCAqLywKIAkJCQkwN0IxRDA0QjIzRDM4RkNFMDAzOTlBNkUgLyogTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluICovLAotCQkJCTlCNUJFQzMwMjQwMTAyMjIwMDcwQzZF
RiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCAqLywKIAkJCQk5QjVCRUMyOTI0MDEwMTU4MDA3MEM2
RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLywKIAkJCQk5QjVCRUMyODI0
MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi8sCiAJCQkJ
OUI1QkVDMkUyNDAxMDE4QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5t
ZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvQnVzRGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxZmMyZjBjNjYwNjk2YWUzNDg2MWMwYjI0ODBhZDA1N2ZlYTE5NjA5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCi0KLSNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlv
SU9DYWxsYmFjay5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgUmVtb3RlQXVkaW9CdXNEYXRhIHsKLSAgICB1aW50NjRf
dCBmcmFtZXNUb1Byb2Nlc3MgeyAwIH07Ci0gICAgV2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91
dHB1dFBvc2l0aW9uOwotICAgIFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4gY2hhbm5lbEJ1ZmZl
cnM7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgotICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBlbmNvZGVyIDw8IGZyYW1lc1Rv
UHJvY2VzczsKLSAgICAgICAgZW5jb2RlciA8PCBvdXRwdXRQb3NpdGlvbjsKLSAgICAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpKTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGFubmVsQnVmZmVycy5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwotICAgICAgICAgICAg
Y2hhbm5lbEJ1ZmZlcnNbaV0tPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZFdyaXRlKTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGNoYW5uZWxCdWZmZXJzW2ldLT5zaXplKCkg
fTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+Ci0g
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBSZW1vdGVBdWRpb0J1c0RhdGEmIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHVpbnQ2NF90IGZy
YW1lc1RvUHJvY2VzczsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZXNUb1Byb2Nl
c3MpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQuZnJhbWVzVG9Q
cm9jZXNzID0gZnJhbWVzVG9Qcm9jZXNzOwotCi0gICAgICAgIFdlYkNvcmU6OkF1ZGlvSU9Qb3Np
dGlvbiBvdXRwdXRQb3NpdGlvbjsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvdXRwdXRQ
b3NpdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdC5vdXRw
dXRQb3NpdGlvbiA9IG91dHB1dFBvc2l0aW9uOwotCi0gICAgICAgIHVpbnQ2NF90IHNpemUgPSAw
OwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7Ci0gICAgICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgaWYgKGF1dG8gbWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAo
aXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpKQot
ICAgICAgICAgICAgICAgIHJlc3VsdC5jaGFubmVsQnVmZmVycy5hcHBlbmQobWVtb3J5LnJlbGVh
c2VOb25OdWxsKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5LmNwcAppbmRleCA4NDA0YzQ4ZTFjMmU0ODJhYmNkMjRlNTVkMmNjOTEzYmQyNjdlNzQxLi5j
Y2Q4ZTFlMjliYThkMjc0OTQyNjVlODNkNmFiMDIxMmVkMmQ1M2RlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC0zOSw3ICszOSw5IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi11c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOworLy8gQWxsb2NhdGUg
YSByaW5nIGJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiAyIHNlY29uZHMgb2YgYXVkaW8u
Citjb25zdGV4cHIgc2l6ZV90IHJpbmdCdWZmZXJTaXplSW5TZWNvbmQgPSAyOworCiB1c2luZyBB
dWRpb0Rlc3RpbmF0aW9uID0gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjsKIHVzaW5nIEF1ZGlv
SU9DYWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFjazsKIApAQCAtNTAsMTYgKzUyLDE1
IEBAIFJlZjxBdWRpb0Rlc3RpbmF0aW9uPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNy
ZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiCiB9CiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJh
Y2ssIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
KQotICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVS
YXRlKQorICAgIDogV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKGNhbGxiYWNrLCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKQorICAgICwgbV9yaW5nQnVmZmVyKG1ha2VV
bmlxdWU8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZm
ZXJTdG9yYWdlPih0aGlzKSkpCiB7CiAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIgZGVzdGluYXRpb25JRDsKLSAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIgeyAwIH07CiAK
ICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YygKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSksCi0gICAgICAgIE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVw
bHkoZGVzdGluYXRpb25JRCwgZnJhbWVzUGVyQnVmZmVyKSwgMCk7CisgICAgICAgIE1lc3NhZ2Vz
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihp
bnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSgpKSwKKyAgICAgICAgTWVzc2FnZXM6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpS
ZXBseShkZXN0aW5hdGlvbklEKSwgMCk7CiAKICAgICBhdXRvIG9mZlRocmVhZFJlbmRlcmluZyA9
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIHdoaWxlICghbV90aHJlYWRUYXNrUXVldWUuaXNLaWxsZWQoKSkgewpAQCAtNzIsNyArNzMs
MTEgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmEKICAgICBjb25uZWN0aW9uLmNvbm5lY3Rpb24o
KS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzLCBkZXN0aW5hdGlvbklELnRvVUlu
dDY0KCkpOwogCiAgICAgbV9kZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKLSAgICBtX2Zy
YW1lc1BlckJ1ZmZlciA9IGZyYW1lc1BlckJ1ZmZlcjsKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKHN0cmVhbUZvcm1hdCk7CisgICAgbV9udW1iZXJPZkZyYW1lcyA9IGhhcmR3YXJlU2FtcGxl
UmF0ZSgpICogcmluZ0J1ZmZlclNpemVJblNlY29uZDsKKyAgICBtX3JpbmdCdWZmZXItPmFsbG9j
YXRlKHN0cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1lcyk7CiB9CiAKIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSgpCkBAIC0xMDUsMTcg
KzExMCwxMiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcCgpCiAgICAg
bV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OnJlbmRlckJ1ZmZlcihjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlv
QnVzRGF0YSYgYXVkaW9CdXNEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVzdEJ1
ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lZGlhVGltZSwgdWludDY0X3QsIHVpbnQ2NF90
LCB1aW50NjRfdCk+JiYgLypjb21wbGV0aW9uSGFuZGxlciovKQogewogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzKTsK
LSAgICBBU1NFUlQoYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJzLnNpemUoKSk7Ci0gICAgYXV0
byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJz
LnNpemUoKSwgYXVkaW9CdXNEYXRhLmZyYW1lc1RvUHJvY2VzcywgZmFsc2UpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhdWRpb0J1c0RhdGEuY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGF1ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIChmbG9hdCopYXVkaW9C
dXNEYXRhLmNoYW5uZWxCdWZmZXJzW2ldLT5kYXRhKCksIGF1ZGlvQnVzRGF0YS5mcmFtZXNUb1By
b2Nlc3MpOwotCi0gICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgYXVkaW9CdXMuZ2V0KCksIGF1ZGlv
QnVzRGF0YS5mcmFtZXNUb1Byb2Nlc3MsIGF1ZGlvQnVzRGF0YS5vdXRwdXRQb3NpdGlvbik7Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAKKyAgICAvLyBGZXRjaCBidWZmZXIgYW5kIGxl
dCBHUFUgcHJvY2VzcyBrbm93IHRoZSBidWZmZXIgaXMgYXZhaWxhYmxlCisgICAgLy8gY29tcGxl
dGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRp
ZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxheWluZykKQEAgLTEzMyw2ICsxMzMsMjYgQEAgdm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248
dm9pZCgpPiYmIHRhc2spCiAgICAgbV90aHJlYWRUYXNrUXVldWUuYXBwZW5kKFdURk1vdmUodGFz
aykpOwogfQogCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcmFnZUNoYW5n
ZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlKQoreworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhh
bmRsZTsKKyAgICBpZiAoc3RvcmFnZSkKKyAgICAgICAgc3RvcmFnZS0+Y3JlYXRlSGFuZGxlKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisKKyAgICAvLyBGSVhN
RTogU2VuZCB0aGUgYWN0dWFsIGRhdGEgc2l6ZSB3aXRoIElQQ0hhbmRsZS4KKyNpZiBPUyhEQVJX
SU4pIHx8IE9TKFdJTkRPV1MpCisgICAgdWludDY0X3QgZGF0YVNpemUgPSBoYW5kbGUuc2l6ZSgp
OworI2Vsc2UKKyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9IDA7CisjZW5kaWYKKworICAgIEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CisKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6QXVkaW9TYW1wbGVz
U3RvcmFnZUNoYW5nZWQgeyBtX2Rlc3RpbmF0aW9uSUQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9LCBzdHJlYW1Gb3JtYXQsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihtX251bWJlck9mRnJhbWVzKSB9LCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVE
SU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAppbmRleCBjNGFkYjc1NjBkNDYzNzU4
ZWU3MTU2ZjAxZWVjOTk1OGQzY2ZkZTY2Li43YWJjNWYxMDAxYTkyMzAwMjJmMTYzMmIwODBmZDhk
NGMwMjVhM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKQEAgLTI4LDI0ICsy
OCwzMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKIAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJSZW1vdGVBdWRpb0J1c0RhdGEuaCIK
ICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJT
aGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5h
dGlvbkNvY29hLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNlbHNlCisj
aW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSA6IHB1YmxpYyBX
ZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgOiBwdWJsaWMgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNv
Y29hCisgICAgLCBwdWJsaWMgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OkNsaWVudAorI2Vsc2UK
KyAgICA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uCisjZW5kaWYKKyAgICAsIHB1
YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KTsKIHB1YmxpYzoKLSAg
ICB1c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOwogICAgIHVzaW5nIEF1ZGlvSU9D
YWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFjazsKICAgICB1c2luZyBXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uOjpyZWY7CiAgICAgdXNpbmcgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bjo6ZGVyZWY7CkBAIC01NywxNiArNjYsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOyB9CiAKLSAgICB2b2lkIHJlbmRlckJ1ZmZlcihjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlv
QnVzRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZXF1ZXN0
QnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJP
ZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgZW5kRnJhbWUpPiYmKTsKICAg
ICB2b2lkIGRpZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxheWluZyk7CiAKIHByaXZhdGU6Ci0g
ICAgLy8gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbgotICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248
dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpIG92ZXJy
aWRlOwotICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNQbGF5aW5nKCkgb3Zl
cnJpZGUgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KLSAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVz
UGVyQnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZXNQZXJCdWZmZXI7IH0K
KyAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNw
YXRjaFRvUmVuZGVyVGhyZWFkKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBi
b29sIGlzUGxheWluZygpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAvLyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6Q2xpZW50CisgICAgdm9pZCBz
dG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqKTsKKyNlbmRpZgogCiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAtNzYsMTEgKzg3LDE0IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZWZNZXNzYWdlUmVjZWl2ZXIoKSBmaW5hbCB7IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b246OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZk1lc3NhZ2VSZWNlaXZlcigpIGZpbmFsIHsgV2Vi
Q29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6ZGVyZWYoKTsgfQogCi0gICAgQXVkaW9JT0NhbGxiYWNr
JiBtX2NhbGxiYWNrOwotICAgIGZsb2F0IG1fc2FtcGxlUmF0ZSB7IDAuIH07Ci0gICAgdW5zaWdu
ZWQgbV9mcmFtZXNQZXJCdWZmZXIgeyAwIH07CiAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIgbV9kZXN0aW5hdGlvbklEOwogICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9
OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNB
UmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOworICAgIGludDY0X3QgbV9udW1iZXJPZkZyYW1lcyB7
IDAgfTsKKyNlbmRpZgorCiAgICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiBt
X2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQ7CiAgICAgUmVmUHRyPFRocmVhZD4gbV9yZW5kZXJUaHJl
YWQ7CiAgICAgQ3Jvc3NUaHJlYWRRdWV1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3RocmVhZFRhc2tR
dWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggYWUxZmM3MDY5ODcxNGM4NzA1ZTU4MjQ4MTk0NjViYWIzMjYzZjA2MS4uYmFhOGViZGY5
ZTUyM2U5YjBlMGU0NGFkYzhiNTc4NWVmMDg4Nzc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDEwICsyNCw4IEBACiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogCiBtZXNzYWdlcyAtPiBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgTm90UmVmQ291bnRlZCB7Ci0KLSAgICBSZW5kZXJCdWZm
ZXIoc3RydWN0IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhIGRhdGEpIC0+ICgpIEFzeW5jCisg
ICAgcmVxdWVzdEJ1ZmZlcigpIC0+IChNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZG
cmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKSBBc3luYwogICAg
IERpZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxheWluZykKLQogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAppbmRleCA4Nzk5ZjE5ODQ3MTQxMWVj
NmY3MzlhMzg3OTM2NGQyNDc1MTJlYTQ0Li4yZTBhNmIxZjgzOTMyYWU4MzM1ZGY0ZWFhNGViNTM1
Zjg1ODcxMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCkBA
IC05MCw3ICs5MCw3IEBAIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnB1c2hT
YW1wbGVzKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgV2ViCiAKICAgICAgICAgLy8gQWxs
b2NhdGUgYSByaW5nIGJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiAyIHNlY29uZHMgb2Yg
YXVkaW8uCiAgICAgICAgIG1fbnVtYmVyT2ZGcmFtZXMgPSBtX2Rlc2NyaXB0aW9uLnNhbXBsZVJh
dGUoKSAqIDI7Ci0gICAgICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUobV9kZXNjcmlwdGlvbi5z
dHJlYW1EZXNjcmlwdGlvbigpLCBtX251bWJlck9mRnJhbWVzKTsKKyAgICAgICAgbV9yaW5nQnVm
ZmVyLT5hbGxvY2F0ZShtX2Rlc2NyaXB0aW9uLCBtX251bWJlck9mRnJhbWVzKTsKICAgICB9CiAK
ICAgICBBU1NFUlQoaXM8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpKTsK
</data>
<flag name="commit-queue"
          id="427599"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411403</attachid>
            <date>2020-10-14 21:13:29 -0700</date>
            <delta_ts>2020-10-14 21:21:43 -0700</delta_ts>
            <desc>WIP patch v4</desc>
            <filename>bug-217715-20201014211328.patch</filename>
            <type>text/plain</type>
            <size>88199</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ3MWFlZjc3YmQ4NmZl
MTBkMmJjMDQ4NWE5OWUzZGQ3ZTI0NTkxZS4uOGJlYjM3Mzc4MDczMmExMDQ3NmRlZDRmMmNmMTA2
MjI2MGQ5Y2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9j
ZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8g
ZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6aW5wdXRQcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRV
bml0QWRhcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRv
cklPUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2spOgorCiAyMDIwLTEwLTE0ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFZlY3Rvck1hdGg6Om11
bHRpcGx5VGhlbkFkZFNjYWxhcigpIGZvciBjbGFyaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkYjZjMTc4OGNi
ZmJhYjEzMGQyZWIzMDVkYTc1ZTI5YmI4ZGExNDcuLmI0OGI4NzIyZWIyNjE3NjdmYjEyMjhiZmNm
ZWM1MDk0ZmRmM2FhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMTAtMTQgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWEgaW4gR1BVIFBy
b2Nlc3NdIFVzZSBDQVJpbmdCdWZmZXIgdG8gdHJhbnNmZXIgYXVkaW8gZGF0YSBvZiBhbiBhdWRp
byBkZXN0aW5hdGlvbiBmcm9tIGEgd2ViIHByb2Nlc3MgdG8gdGhlIEdQVSBQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93bklm
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6YXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246
OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnJl
bmRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b246OmlzUGxheWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OmZyYW1lc1BlckJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9CdXNEYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3Jh
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpyZW5kZXJCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6cHVzaFNh
bXBsZXMpOgorCiAyMDIwLTEwLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBub24tQ29jb2EgcGxhdGZvcm1zICYg
cmVsZWFzZSBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggYzU2NzBjMzY0ODU3NWU4ODBlYjY4NWUw
YTNhMTM1YzI5MjQzNzViYi4uZTMyMjM3MjNkNzc4ZmVlMTNmNDcyYzRkMjExMGVjOTM2YjgwZmFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
QXVkaW9EZXN0aW5hdGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfkF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCi0gICAgLy8gQXVkaW9Ob2RlICAgCisgICAgLy8g
QXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCkgb3ZlcnJpZGUgeyB9OyAvLyB3ZSdy
ZSBwdWxsZWQgYnkgaGFyZHdhcmUgc28gdGhpcyBpcyBuZXZlciBjYWxsZWQKICAgICAKICAgICAv
LyBUaGUgYXVkaW8gaGFyZHdhcmUgY2FsbHMgcmVuZGVyKCkgdG8gZ2V0IHRoZSBuZXh0IHJlbmRl
ciBxdWFudHVtIG9mIGF1ZGlvIGludG8gZGVzdGluYXRpb25CdXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCBmOTU5ZTM5ODI5NjYwNTA5MDNhYWM4NWI4YWYyNDJkYTE1NDM0YTg5Li41OTI2
NjA2Mzg5OGY0MTM2YTliZjU1YzI2ODkxYTU2YmJhMzE2ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTIwMywxOSArMjAzLDIwIEBAIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQogcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNw
cAorcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAKIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVm
ZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCi1wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9C
dXNNYWMubW0KLXBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
SGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25N
YWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3YjUzM2VmNmM1ZjQ0Y2RiODdkYmI4MTIxMTc4OTVjMGNkYzMxZWUzLi42ODYw
ODBjYzExZGZiNTAxZmZkNjNmNTJlYjQxYThiNDJhNmUxYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzMsNiArNjMzLDcg
QEAKIAkJMURBQjMxMTIyNTFENkJGMzAwRkM5NDg1IC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEIzMUEx
MjM3OURDODMwMDg4M0ZERSAvKiBXZWJWaWRlb0NvbnRhaW5lckxheWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMURBQjMxMTQyNTFENzI1QzAw
RkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxREFCMzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXll
ck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxREFCMzExNTI1MUQ3NERCMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RTFD
NTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMURCNjZEM0IyNTM3QTk1NjAwQjY3
MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFERDNCNEM2
MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0
QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkxREY3RTgxRjI1MUE5RTA2
MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00MTI3LDcgKzQxMjgsNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2
MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MDFFMjNG
QTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgKi87IH07CiAJCUNEMDYzRjgzMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MTFFMjNGQTg5MDA4MTJCRTMgLyogSW5p
dERhdGFSZWdpc3RyeS5oICovOyB9OwotCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHAgKi87IH07CisJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVu
aXRBZGFwdG9ySU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9y
SU9TLmNwcCAqLzsgfTsKIAkJQ0QxMUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8q
IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRDE3QTQ1RDIxMzc0MDgxMDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxN0E0NTky
MTM3NDAxNjAwNzlFQzdCIC8qIFVuaWZpZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKQEAgLTUzMDQs
NyArNTMwNSw2IEBACiAJCUZEMzE2MEFCMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2
ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQzMTYwNzUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggKi87IH07
CiAJCUZEMzE2MEFEMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzcxMkIwMjZG
NzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggKi87IH07CiAJCUZEMzE2MEFGMTJCMDI2
RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5o
ICovOyB9OwotCQlGRDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYw
QjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLzsgfTsKIAkJRkQz
MTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFB
MzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBF
MUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDM1OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJh
bVRpbWVsaW5lLmggKi87IH07CiAJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0Yx
NzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY3NTQsNiArNjc1NCw4IEBACiAJCTFEMDAyNkE5MjM3NEY5
RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2
QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBQjMxMTMy
NTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZp
ZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEQjY2RDM3
MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMURCNjZEMzgyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJl
SW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZU9ic2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZEMjExQkExMkEwMDRC
NzgwRSAvKiBOYXZpZ2F0b3JTaGFyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdh
dG9yU2hhcmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRjIxMUJB
ODQxMDA0Qjc4MEUgLyogU2hhcmVEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFy
ZURhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyOTQsOCArMTQyOTYs
NyBAQAogCQlDRDA2M0Y4MDFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0RGF0YVJlZ2lzdHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwNjNGODExRTIzRkE4OTAwODEyQkUz
IC8qIEluaXREYXRhUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5pdERhdGFSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBDOEI1
ODIxNDFDOENBMDA2MkY1OUQgLyogTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFw
dG9ySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxMUIzREYyMjdDQUFB
OTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3
REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1NjAsOCArMTY1NjEsNyBAQAogCQlGRDMxNjA3
ODEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWZWN0b3JNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkQzMTYwNzkxMkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb0J1c01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1
ZGlvRGVzdGluYXRpb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25NYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZEMzE2MEI4MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQjkxMkIwMjcyQTAw
QzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkQzMTYwQkExMkIwMjcyQTAwQzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZGVEZyYW1lTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI3Mjk2LDEwICsyNzI5Niw5IEBACiAJCUNEMEVFRTBEMTQ3NDNF
NDgwMDNFQUZBMiAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcCAqLywKLQkJCQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlv
bklPUy5oICovLAogCQkJCUNENTU5NjhGMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFk
ZXJJT1MuY3BwICovLAogCQkJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVS
ZWFkZXJJT1MuaCAqLywKKwkJCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRw
dXRVbml0QWRhcHRvcklPUy5jcHAgKi8sCiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8q
IEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywKIAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4
IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSAqLywKQEAgLTI3MzY0LDYgKzI3MzYzLDggQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTQxMzE1MTg0MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwICovLAogCQkJCTQxMzE1MTg2MjM1Nzc0NUUwMDExNUU2RSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCAqLywKKwkJCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgKi8sCisJCQkJMURCNjZEMzcyNTM2NzhFQTAw
QjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCAqLywKIAkJCQkwNzNCODc2MjFFNDM4
NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcCAqLywKIAkJCQkwNzNCODc2
MzFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggKi8sCiAJCQkJMDcz
Qjg3NjUxRTQzODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oICovLApAQCAt
MzAyNzUsMTIgKzMwMjc2LDExIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAqLywKLQkJ
CQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8s
Ci0JCQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAq
LywKIAkJCQlGRDMxNjBCODEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCOTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFj
LmggKi8sCiAJCQkJQ0QyRjRBMjUxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lck1hYy5jcHAgKi8sCiAJCQkJQ0QyRjRBMjYxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFy
ZHdhcmVMaXN0ZW5lck1hYy5oICovLAorCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBB
dWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1
RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMx
QTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8sCiAJCQkpOwpAQCAtMzA1NjEsNyArMzA1NjEsNiBA
QAogCQkJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGlu
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovLAotCQkJCUZEMzE2MEJEMTJCMDI3
MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAwODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDgwMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNTc3LDYgKzMwNTc2LDcgQEAK
IAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU3MTQ2N0IzMjRBQkFFRjIwMEZCMkY1MCAvKiBBdWRpb05vZGVPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9O
b2RlT3V0cHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxREI2NkQzQjI1MzdBOTU2MDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUQx
MkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzU2
OTlFMjUyQ0YzNjIwMEUxQjk1NiAvKiBBdWRpb1BhcmFtRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNCOTg3MEMyNTIyNUY4MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1NYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzA2NTQsNyArMzA2NTQsNiBAQAogCQkJCTUxNzQxRDBGMEIwNzI1OUEw
MEVENDQyQyAvKiBCYWNrRm9yd2FyZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOEM4
MUUxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBMUI4N0QyMDg3QzRDMDAwOTc5QTc1IC8qIEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOTQ3MjE3MjUzMjNDMjEwMEYxNTNDOCAvKiBC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMjRFRTgwQzI2
NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2MEJCNjE2MUQw
QTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
MTk4RkJGMjRBMTYwREQwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAq
LywKQEAgLTM1MjM5LDggKzM1MjM4LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCUE5Nzg3Q0I0MUY1
RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzFGN0I3MzEyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAx
RDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMEVF
RTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25J
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2NDMgLyogQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREUzQTg1NzE3
RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9u
LmgKaW5kZXggMTYwYzY1NzhlMTVlZDVlYTc1MjVkYzc2OGJkNGVmM2ZkYzc0ZjRmZi4uNDE5NjU1
MmQ5MTVhODliNGEwNWY4NDc2NGQ1ZmVhYzA1NjYyNDk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4gaW4gQXVk
aW9EZXN0aW5hdGlvbiB0byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUKICAgICB2aXJ0dWFsIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7Ci0gICAgc3RhdGljIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUoKTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Qg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCAxZDBmNGUyODgxMTg3ZTdiMzUw
MjkwYjAyMzNjYjhiMGMyMWFmNGU2Li4yYzk3MWVhN2U2MzdhNTg1ZGY4NjY1OGMxNGEzMzdmODYw
OGFlNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTM1LDYgKzM1LDEwIEBACiAj
aW5jbHVkZSAiTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgiCiAjaW5jbHVkZSAiUHVzaFB1bGxGSUZP
LmgiCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3RleHByIHNpemVfdCBmaWZvU2l6ZSA9IDk2
ICogQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwpAQCAtNTYsNyArNjAsNiBAQCBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGNvbnN0CiAgICAgICAgIHJldHVybiBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OmNyZWF0ZU92ZXJyaWRlKGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIAogICAgIGF1dG8gZGVz
dGluYXRpb24gPSBhZG9wdFJlZigqbmV3IEF1ZGlvRGVzdGluYXRpb25Db2NvYShjYWxsYmFjaywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOwotICAgIGRlc3RpbmF0aW9uLT5j
b25maWd1cmUoKTsKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKQEAgLTcxLDE0ICs3NCwx
NCBAQCB1bnNpZ25lZCBsb25nIEF1ZGlvRGVzdGluYXRpb246Om1heENoYW5uZWxDb3VudCgpCiB9
CiAKIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUpCi0gICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICA6IG1fYXVkaW9PdXRwdXRV
bml0QWRhcHRvcigqdGhpcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX291
dHB1dEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1ZGlvVXRp
bGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxsKCkpCiAgICAg
LCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1
ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSkucmVsZWFzZU5vbk51bGwoKSkKICAgICAs
IG1fZmlmbyhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4obnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmlmb1NpemUpKQogICAgICwgbV9jb250ZXh0U2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogewot
ICAgIGNvbmZpZ3VyZSgpOworICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUo
aGFyZHdhcmVTYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgYXV0
byBoYXJkd2FyZVNhbXBsZVJhdGUgPSB0aGlzLT5oYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBp
ZiAoc2FtcGxlUmF0ZSAhPSBoYXJkd2FyZVNhbXBsZVJhdGUpIHsKQEAgLTg3LDExICs5MCw3IEBA
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkCiAgICAgfQogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKQotewotICAgIGlmIChtX291dHB1dFVuaXQpCi0g
ICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Ci19CitB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKSA9IGRlZmF1bHQ7
CiAKIHVuc2lnbmVkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6bnVtYmVyT2ZPdXRwdXRDaGFubmVs
cygpIGNvbnN0CiB7CkBAIC0xMDcsNyArMTA2LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFQK
IHsKICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAg
bV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFk
KTsKLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVu
aXQpOworICAgIE9TU3RhdHVzIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFy
dCgpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHNldElzUGxheWluZyh0cnVlKTsKQEAg
LTExNiw3ICsxMTUsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rp
b248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVAogdm9pZCBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25D
b2NvYTo6c3RvcCIpOwotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3Ao
bV9vdXRwdXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFk
YXB0b3Iuc3RvcCgpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAK
ICAgICBpZiAoIXJlc3VsdCkKQEAgLTEzMyw3ICsxMzIsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2suaXNQ
bGF5aW5nRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBz
dHJlYW1Gb3JtYXQpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Z2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0
KQogewogICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwogICAg
IGNvbnN0IGludCBiaXRzUGVyQnl0ZSA9IDg7CkBAIC0xNTcsNiArMTU2LDIxIEBAIHN0YXRpYyB2
b2lkIGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKEF1ZGlvQnVmZmVyKiBidWZmZXJzLCBBdWRpb0J1
cyYgYnVzLCBVSW50MzIKICAgICB9CiB9CiAKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpw
cm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVkaW9CdXMmIGJ1cywgVUludDMyIG51bWJlck9mRnJhbWVz
KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUu
LCBbLTEuMCwgMS4wXSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9m
Q2hhbm5lbHMoKTsgKytpKSB7CisgICAgICAgIGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChp
KTsKKyAgICAgICAgaWYgKCFjaGFubmVsLT5pc1NpbGVudCgpKQorICAgICAgICAgICAgVmVjdG9y
TWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgpLCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEo
KSwgbnVtYmVyT2ZGcmFtZXMpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGJ1cyk7
CisgICAgVU5VU0VEX1BBUkFNKG51bWJlck9mRnJhbWVzKTsKKyNlbmRpZgorfQorCiAvLyBQdWxs
cyBvbiBvdXIgcHJvdmlkZXIgdG8gZ2V0IHJlbmRlcmVkIGF1ZGlvIHN0cmVhbS4KIE9TU3RhdHVz
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1l
c3RhbXAsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCiB7
CkBAIC0yMTAsMTMgKzIyNCw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJP
blJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8vIERl
ZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBj
b25zdCBBdWRpb1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBhdXRv
KiBhdWRpb091dHB1dCA9IHN0YXRpY19jYXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVzZXJE
YXRhKTsKLSAgICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9m
RnJhbWVzLCBpb0RhdGEpOwotfQotCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlk
ZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0aWxp
dGllczo6cmVuZGVyUXVhbnR1bVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAwODk0
ZDYyMWEyZjE1MzIyNTEyNzM2NTBiNmU1YTNkM2VjOTk2ZjhhLi43MDcyZTE4ZTRlMWEyN2YxNDQw
NDAxYjg0YzBlNWI3ZDIyMjc4NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgogI2luY2x1ZGUgIkF1ZGlv
SU9DYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCIKICNpbmNs
dWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5p
dC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQzLDQ3ICs0NCw0MiBAQCBjbGFzcyBQ
dXNoUHVsbEZJRk87CiB1c2luZyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSA9
IFJlZjxBdWRpb0Rlc3RpbmF0aW9uPigqKShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVS
YXRlKTsKIAogLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0
IG91dHB1dCBBdWRpb1VuaXQKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1YmxpYyBB
dWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CitjbGFzcyBBdWRp
b0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlv
VW5pdFJlbmRlcmVyLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAg
QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwotICAgIHZpcnR1YWwgfkF1ZGlvRGVz
dGluYXRpb25Db2NvYSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YShBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0
aW9uQ29jb2EoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2FPdmVycmlkZSBjcmVhdGVPdmVycmlkZTsKIAogcHJvdGVjdGVkOgorICAgIFdF
QkNPUkVfRVhQT1JUIE9TU3RhdHVzIHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQz
MiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpIGZpbmFsOworCiAgICAg
dm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CiAKLSAgICBib29sIGlzUGxheWluZygpIGZpbmFsIHsg
cmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2lzUGxheWluZzsgfQogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2NvbnRleHRTYW1wbGVSYXRlOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVm
ZmVyKCkgY29uc3QgZmluYWw7Ci0gICAgQXVkaW9Vbml0JiBvdXRwdXRVbml0KCkgeyByZXR1cm4g
bV9vdXRwdXRVbml0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgZnJhbWVzUGVyQnVm
ZmVyKCkgY29uc3QgZmluYWw7CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gRGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKLSAgICBz
dGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJB
Y3Rpb25GbGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAKLSAgICB2b2lk
IHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mKTsKIAogICAgIEZ1bmN0aW9uPHZvaWQo
RnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkOwogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBSZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3Jl
YXRlKEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNpZ25lZCwg
ZmxvYXQpOworCiAgICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4m
Jik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBy
ZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcik7CiAKLSAgICBmcmll
bmQgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lP
Q2FsbGJhY2smLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKLSAg
ICAKICAgICAvLyBBdWRpb1NvdXJjZVByb3ZpZGVyLgotICAgIHZvaWQgcHJvdmlkZUlucHV0KEF1
ZGlvQnVzKiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBm
aW5hbDsKIAotICAgIHZvaWQgY29uZmlndXJlKCk7CiAgICAgdm9pZCBwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpOwogCi0gICAgT1NTdGF0dXMg
cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSk7Ci0KLSAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OworICAg
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yOwogICAgIEF1
ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKIAogICAgIC8vIFRvIHBhc3MgdGhlIGRhdGEgZnJv
bSBGSUZPIHRvIHRoZSBhdWRpbyBkZXZpY2UgY2FsbGJhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5MDY2NDgzYTMwMzNjZjEyMWZlYzJhZmJiM2U1ODZmMmMyZjFl
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVk
aW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcihBdWRpb1VuaXRSZW5k
ZXJlciYgcmVuZGVyZXIpCisgICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICAsIG1fYXVkaW9Vbml0
UmVuZGVyZXIocmVuZGVyZXIpCit7Cit9CisKK0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6On5BdWRp
b091dHB1dFVuaXRBZGFwdG9yKCkKK3sKKyAgICBpZiAobV9vdXRwdXRVbml0KQorICAgICAgICBB
dWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShtX291dHB1dFVuaXQpOworfQorCitPU1N0YXR1
cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdGFydCgpCit7CisgICAgcmV0dXJuIEF1ZGlvT3V0
cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7Cit9CisKK09TU3RhdHVzIEF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3I6OnN0b3AoKQoreworICAgIHJldHVybiBBdWRpb091dHB1dFVuaXRTdG9wKG1fb3V0
cHV0VW5pdCk7Cit9CisKKy8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCitPU1N0YXR1cyBB
dWRpb091dHB1dFVuaXRBZGFwdG9yOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5p
dFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUlu
dDMyIC8qYnVzTnVtYmVyKi8sIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpCit7CisgICAgYXV0byogYWRhcHRvciA9IHN0YXRpY19jYXN0PEF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IqPih1c2VyRGF0YSk7CisgICAgcmV0dXJuIGFkYXB0b3ItPm1fYXVkaW9Vbml0
UmVuZGVyZXIucmVuZGVyKHRpbWVzdGFtcCwgbnVtYmVyT2ZGcmFtZXMsIGlvRGF0YSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1
dFVuaXRBZGFwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2ZGM2ZTE1ZWZkZjg2MDg0NGU1ZjJl
MjRjOTA3ZTRiZDJlZWIxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisj
aW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEF1ZGlvVW5pdFJlbmRlcmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1Vu
aXRSZW5kZXJlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIE9TU3RhdHVzIHJlbmRlcihjb25z
dCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpID0gMDsKK307CisKK2NsYXNzIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgeworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoQXVkaW9Vbml0
UmVuZGVyZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QXVkaW9PdXRwdXRVbml0QWRhcHRvcigp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1w
bGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBPU1N0YXR1cyBz
dGFydCgpOworICAgIE9TU3RhdHVzIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgT1NT
dGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFn
cyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJl
ck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CisKKyAgICBBdWRpb1VuaXQgbV9v
dXRwdXRVbml0OworICAgIEF1ZGlvVW5pdFJlbmRlcmVyJiBtX2F1ZGlvVW5pdFJlbmRlcmVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rl
c3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ3MzNk
ZTdmNzVkYTlhYjZkMDg3YTIzMWFkOGViOTgxZGM2ODg4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0KLSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCIKLQotI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZU
X0xJTktfRlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1
ZGlvQ29tcG9uZW50RmluZE5leHQsIEF1ZGlvQ29tcG9uZW50LCAoQXVkaW9Db21wb25lbnQgaW5D
b21wb25lbnQsIGNvbnN0IEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gKmluRGVzYyksIChpbkNv
bXBvbmVudCwgaW5EZXNjKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29tcG9uZW50
SW5zdGFuY2VOZXcsIE9TU3RhdHVzLCAoQXVkaW9Db21wb25lbnQgaW5Db21wb25lbnQsIEF1ZGlv
Q29tcG9uZW50SW5zdGFuY2UgKm91dEluc3RhbmNlKSwgKGluQ29tcG9uZW50LCBvdXRJbnN0YW5j
ZSkpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRBZGRQcm9wZXJ0eUxpc3RlbmVy
LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwg
QXVkaW9Vbml0UHJvcGVydHlMaXN0ZW5lclByb2MgaW5Qcm9jLCB2b2lkICppblByb2NVc2VyRGF0
YSksIChpblVuaXQsIGluSUQsIGluUHJvYywgaW5Qcm9jVXNlckRhdGEpKQotU09GVF9MSU5LKEF1
ZGlvVG9vbGJveCwgQXVkaW9Vbml0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGlu
VW5pdCwgQXVkaW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBB
dWRpb1VuaXRFbGVtZW50IGluRWxlbWVudCwgdm9pZCAqb3V0RGF0YSwgVUludDMyICppb0RhdGFT
aXplKSwgKGluVW5pdCwgaW5JRCwgaW5TY29wZSwgaW5FbGVtZW50LCBvdXREYXRhLCBpb0RhdGFT
aXplKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEluaXRpYWxpemUsIE9TU3Rh
dHVzLCAoQXVkaW9Vbml0IGluVW5pdCksIChpblVuaXQpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJv
eCwgQXVkaW9Vbml0U2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwgQXVk
aW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBBdWRpb1VuaXRF
bGVtZW50IGluRWxlbWVudCwgY29uc3Qgdm9pZCAqaW5EYXRhLCBVSW50MzIgaW5EYXRhU2l6ZSks
IChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgaW5EYXRhLCBpbkRhdGFTaXplKSkK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29u
ZmlndXJlKCkKLXsKLSAgICBjb25zdCBpbnQga1ByZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7Ci0K
LSAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0Ci0gICAgQXVkaW9D
b21wb25lbnQgY29tcDsKLSAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7Ci0KLSAg
ICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7Ci0gICAgZGVzYy5j
b21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87Ci0gICAgZGVzYy5j
b21wb25lbnRNYW51ZmFjdHVyZXIgPSBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0FwcGxlOwotICAg
IGRlc2MuY29tcG9uZW50RmxhZ3MgPSAwOwotICAgIGRlc2MuY29tcG9uZW50RmxhZ3NNYXNrID0g
MDsKLSAgICBjb21wID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dCgwLCAmZGVzYyk7Ci0KLSAgICBB
U1NFUlQoY29tcCk7Ci0KLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlTmV3KGNvbXAsICZvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAg
IFVJbnQzMiBmbGFnID0gMTsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRw
dXRVbml0KCksCi0gICAgICAgIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKLSAg
ICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwKLSAgICAgICAgMCwKLSAgICAgICAgJmZsYWcs
Ci0gICAgICAgIHNpemVvZihmbGFnKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgcmVz
dWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVz
dWx0KTsKLSAgICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCi0gICAgQVVSZW5kZXJDYWxsYmFja1N0
cnVjdCBpbnB1dDsKLSAgICBpbnB1dC5pbnB1dFByb2MgPSBpbnB1dFByb2M7Ci0gICAgaW5wdXQu
aW5wdXRQcm9jUmVmQ29uID0gdGhpczsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0
eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1
ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOwotICAgIEFTU0VS
VCghcmVzdWx0KTsKLQotICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0Ci0gICAgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLQotICAgIFVJbnQzMiBzaXplID0gc2l6ZW9m
KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0
UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBr
QXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwot
ICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
bihzdHJlYW1Gb3JtYXQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0
cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2Nv
cGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgQXVkaW9TZXNzaW9u
OjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJlZmVycmVkQnVmZmVy
U2l6ZSk7Ci19Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1
dFVuaXRBZGFwdG9ySU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTk2MzBmYjYwZjIyYjNl
ZTU2ZDI0MmQ3MzA0MzQ4NmI4N2I1NjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwCkBAIC0w
LDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQsIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvU29mdExp
bmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCitTT0ZUX0xJTkso
QXVkaW9Ub29sYm94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1
ZGlvQ29tcG9uZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9u
ICppbkRlc2MpLCAoaW5Db21wb25lbnQsIGluRGVzYykpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94
LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3LCBPU1N0YXR1cywgKEF1ZGlvQ29tcG9uZW50IGlu
Q29tcG9uZW50LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlICpvdXRJbnN0YW5jZSksIChpbkNvbXBv
bmVudCwgb3V0SW5zdGFuY2UpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRk
UHJvcGVydHlMaXN0ZW5lciwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQ
cm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFByb3BlcnR5TGlzdGVuZXJQcm9jIGluUHJvYywgdm9p
ZCAqaW5Qcm9jVXNlckRhdGEpLCAoaW5Vbml0LCBpbklELCBpblByb2MsIGluUHJvY1VzZXJEYXRh
KSkKK1NPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEdldFByb3BlcnR5LCBPU1N0YXR1
cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0
U2NvcGUgaW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIHZvaWQgKm91dERhdGEs
IFVJbnQzMiAqaW9EYXRhU2l6ZSksIChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwg
b3V0RGF0YSwgaW9EYXRhU2l6ZSkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJ
bml0aWFsaXplLCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQpLCAoaW5Vbml0KSkKK1NPRlRf
TElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlv
VW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5T
Y29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIGNvbnN0IHZvaWQgKmluRGF0YSwgVUlu
dDMyIGluRGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1lbnQsIGluRGF0
YSwgaW5EYXRhU2l6ZSkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1
dFVuaXRBZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIGNvbnN0IGludCBrUHJlZmVycmVkQnVm
ZmVyU2l6ZSA9IDI1NjsKKworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1
dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9uZW50RGVzY3Jp
cHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091
dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9SZW1v
dGVJTzsKKyAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFj
dHVyZXJfQXBwbGU7CisgICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7CisgICAgZGVzYy5jb21w
b25lbnRGbGFnc01hc2sgPSAwOworICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KDAs
ICZkZXNjKTsKKworICAgIEFTU0VSVChjb21wKTsKKworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1
ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJU
KCFyZXN1bHQpOworCisgICAgVUludDMyIGZsYWcgPSAxOworICAgIHJlc3VsdCA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwKKyAgICAgICAga0F1ZGlvT3V0cHV0VW5pdFByb3Bl
cnR5X0VuYWJsZUlPLAorICAgICAgICBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LAorICAgICAgICAw
LAorICAgICAgICAmZmxhZywKKyAgICAgICAgc2l6ZW9mKGZsYWcpKTsKKyAgICBBU1NFUlQoIXJl
c3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG1fb3V0cHV0VW5pdCk7
CisgICAgQVNTRVJUKCFyZXN1bHQpOworICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKKyAgICBB
VVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0OworICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0
UHJvYzsKKyAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOworICAgIHJlc3VsdCA9IEF1
ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJl
bmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZpbnB1dCwgc2l6ZW9mKGlu
cHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHN0cmVhbSBmb3JtYXQK
KyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworCisgICAgVUlu
dDMyIHNpemUgPSBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKTsKKyAgICByZXN1
bHQgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0
eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lkKikmc3RyZWFt
Rm9ybWF0LCAmc2l6ZSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgY29uc3RleHByIGlu
dCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0
c1BlckJ5dGUgPSA4OworICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2Ft
cGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFy
UENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05h
dGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFt
Rm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJG
cmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1l
ID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKKyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFu
bmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9V
bml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9y
bWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXpl
b2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOwor
CisgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6
ZShrUHJlZmVycmVkQnVmZmVyU2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3Rp
bmF0aW9uTWFjLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBmOWM5ZmZmNTFm
NDgzYjQ0MDQxYTM3NzFmYjQxODdhN2FlZGE3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgiCi0KLSNpZiBFTkFCTEUo
V0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2lu
Y2x1ZGUgIlZlY3Rvck1hdGguaCIKLSNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpj
b25maWd1cmUoKQotewotICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1dFVu
aXQKLSAgICBBdWRpb0NvbXBvbmVudCBjb21wOwotICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRp
b24gZGVzYzsKLQotICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091dHB1
dDsKLSAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9EZWZhdWx0
T3V0cHV0OwotICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1ZGlvVW5pdE1hbnVm
YWN0dXJlcl9BcHBsZTsKLSAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsKLSAgICBkZXNjLmNv
bXBvbmVudEZsYWdzTWFzayA9IDA7Ci0gICAgY29tcCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQo
MCwgJmRlc2MpOwotCi0gICAgQVNTRVJUKGNvbXApOwotCi0gICAgT1NTdGF0dXMgcmVzdWx0ID0g
QXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmb3V0cHV0VW5pdCgpKTsKLSAgICBBU1NF
UlQoIXJlc3VsdCk7Ci0KLSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVu
aXQoKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHJlbmRlciBjYWxsYmFj
awotICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7Ci0gICAgaW5wdXQuaW5wdXRQcm9j
ID0gaW5wdXRQcm9jOwotICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRoaXM7Ci0gICAgcmVz
dWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVy
dHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZpbnB1dCwg
c2l6ZW9mKGlucHV0KSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHN0cmVh
bSBmb3JtYXQKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0Owot
ICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwotCi0gICAg
cmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJv
cGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3Ry
ZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNT
RVJUKCFyZXN1bHQpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvY2Vzc0J1
c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiBidXMsIFVJbnQzMiBudW1iZXJPZkZyYW1lcykKLXsKLSAg
ICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUuLCBbLTEuMCwgMS4wXSkKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSB7Ci0gICAgICAg
IGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChpKTsKLSAgICAgICAgaWYgKCFjaGFubmVsLT5p
c1NpbGVudCgpKQotICAgICAgICAgICAgVmVjdG9yTWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgp
LCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEoKSwgbnVtYmVyT2ZGcmFtZXMpOwotICAgIH0K
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM4ZWQzZWY3OGM4YzZhM2IxZTA3MGNiNDQwNTk2OWFkYTRhYzNkYTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0
QWRhcHRvck1hYy5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9S
TShNQUMpCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgPENvcmVBdWRpby9BdWRp
b0hhcmR3YXJlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVm
YXVsdE91dHB1dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9u
ZW50RGVzY3JpcHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1Vu
aXRUeXBlX091dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3Vi
VHlwZV9EZWZhdWx0T3V0cHV0OworICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1
ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBsZTsKKyAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsK
KyAgICBkZXNjLmNvbXBvbmVudEZsYWdzTWFzayA9IDA7CisgICAgY29tcCA9IEF1ZGlvQ29tcG9u
ZW50RmluZE5leHQoMCwgJmRlc2MpOworCisgICAgQVNTRVJUKGNvbXApOworCisgICAgT1NTdGF0
dXMgcmVzdWx0ID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmbV9vdXRwdXRVbml0
KTsKKyAgICBBU1NFUlQoIXJlc3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFs
aXplKG1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHJl
bmRlciBjYWxsYmFjaworICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7CisgICAgaW5w
dXQuaW5wdXRQcm9jID0gaW5wdXRQcm9jOworICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRo
aXM7CisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVk
aW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWws
IDAsICZpbnB1dCwgc2l6ZW9mKGlucHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAg
Ly8gU2V0IHN0cmVhbSBmb3JtYXQKKyAgICBjb25zdGV4cHIgaW50IGJ5dGVzUGVyRmxvYXQgPSBz
aXplb2YoRmxvYXQzMik7CisgICAgY29uc3RleHByIGludCBiaXRzUGVyQnl0ZSA9IDg7CisKKyAg
ICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworICAgIHN0cmVhbUZv
cm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQu
bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9y
bWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9y
bWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAx
OworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsK
KyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1Bl
ckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0
LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQs
IDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcAppbmRleCA1YTEyY2RlNGZjZGZjNTdmYWQ0MmI3ZDllOGZlNzMyMDQzNTA5ZDc4
Li41ZDJiYmZjYTRhYjMyYzY5OTgyYjdjMjViYWU3Njg2ZGZmMjM5MmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25D
b2NvYS5jcHAKQEAgLTY4LDEwICs2OCwxMCBAQCB2b2lkIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnRpY2soKQogewogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgc2FtcGxlUmF0
ZSA9IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgPSBtX251bWJlck9mRnJh
bWVzVG9Qcm9jZXNzXSB7CiAgICAgICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJl
YW1Gb3JtYXQ7Ci0gICAgICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1G
b3JtYXQpOworICAgICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9y
bWF0KTsKIAogICAgICAgICBXZWJBdWRpb0J1ZmZlckxpc3Qgd2ViQXVkaW9CdWZmZXJMaXN0IHsg
c3RyZWFtRm9ybWF0LCBudW1iZXJPZkZyYW1lc1RvUHJvY2VzcyB9OwotICAgICAgICBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh0aGlzLCAwLCAwLCAwLCBudW1iZXJPZkZyYW1lc1Rv
UHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CisgICAgICAgIHJlbmRlcigwLCBu
dW1iZXJPZkZyYW1lc1RvUHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCmluZGV4IDI3ZjJhNjk5NmFj
OTQwY2NkODQ3OTM1OTU0ZTZkOTE4NGEzZDMzZDAuLjRkZTliNTc5ZDZhMmRkMzY5NzQ1MDRkMTg0
NTk0YTY1MWNjZmYxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcApAQCAtMjks
MTE2ICsyOSwxMjQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVE
SU8pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAi
UmVtb3RlQXVkaW9CdXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0F1ZGlvQnVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1
ZGlvVXRpbGl0aWVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QdXNoUHVsbEZJRk8uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCi1u
YW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJTaGFyZWRS
aW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9PdXRwdXRVbml0QWRh
cHRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRp
b0J1cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgorI2VuZGlmCiAK
LS8vIFRoaXMgRklGTyBzaXplIG1hdGNoZXMgdG8gb25lIGluIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YS5jcHAgYW5kIHdhcyBpbXBvcnRlZCBmcm9tIEJsaW5rLgotY29uc3RleHByIHNpemVfdCBmaWZv
U2l6ZSA9IDk2ICogV2ViQ29yZTo6QXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwor
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4sIHB1YmxpYyBX
ZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2sgeworY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgor
ICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9Vbml0UmVu
ZGVyZXIKKyNlbmRpZgorewogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6
QXVkaW9CdXM7Ci0gICAgdXNpbmcgQXVkaW9EZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb247Ci0gICAgdXNpbmcgU2hhcmVkQnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OwotCiAgICAgc3RhdGljIFJlZjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXRE
ZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJh
dGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24s
IGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbigpCiAgICAgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCkpOwogICAgIH0KIAog
ICAgIHZvaWQgc2NoZWR1bGVHcmFjZWZ1bFNodXRkb3duSWZOZWVkZWQoKQogICAgIHsKLSAgICAg
ICAgaWYgKCFpc1BsYXlpbmcoKSkKKyAgICAgICAgaWYgKCFtX2lzUGxheWluZykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24g
PSB0aGlzOwotICAgICAgICBzdG9wKCk7CiAgICAgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCisgICAgeworICAgICAgICBt
X2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CiAKLSAgICB2b2lkIHN0YXJ0KCkgeyBtX2Rlc3Rp
bmF0aW9uLT5zdGFydCh7IH0pOyB9Ci0gICAgdm9pZCBzdG9wKCkgeyBtX2Rlc3RpbmF0aW9uLT5z
dG9wKCk7IH0KLSAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1fZGVzdGluYXRpb24tPmlz
UGxheWluZygpOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbi0+ZnJhbWVzUGVyQnVmZmVyKCkgOyB9CisgICAgICAgIGlmIChpcGNI
YW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBtX3JpbmdCdWZmZXItPmRlYWxs
b2NhdGUoKTsKKyAgICAgICAgICAgIHN0b3JhZ2UoKS5zZXRSZWFkT25seShmYWxzZSk7CisgICAg
ICAgICAgICBzdG9yYWdlKCkuc2V0U3RvcmFnZShudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogCi1wcml2YXRlOgotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50
MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24p
Ci0gICAgICAgICwgbV9pZChpZGVudGlmaWVyKQotICAgICAgICAsIG1fZGVzdGluYXRpb24oQXVk
aW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKQotICAgICAgICAs
IG1fZmlmbyhudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmaWZvU2l6ZSkKLSAgICB7Ci0gICAgfQor
ICAgICAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBzdG9yYWdlKCku
c2V0U3RvcmFnZShXVEZNb3ZlKG1lbW9yeSkpOworICAgICAgICBzdG9yYWdlKCkuc2V0UmVhZE9u
bHkodHJ1ZSk7CiAKLSAgICB2b2lkIHJlbmRlcihBdWRpb0J1cyosIEF1ZGlvQnVzKiBkZXN0aW5h
dGlvbkJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcywgY29uc3QgV2ViQ29yZTo6QXVkaW9JT1Bv
c2l0aW9uJiBvdXRwdXRQb3NpdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGRlc2NyaXB0
aW9uLCBudW1iZXJPZkZyYW1lcyk7CiAKLSAgICAgICAgaWYgKG1fcHJvdGVjdFRoaXNEdXJpbmdH
cmFjZWZ1bFNodXRkb3duKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2F1ZGlvQnVm
ZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihtX2Rlc2Ny
aXB0aW9uKTsKKyAgICB9CisjZW5kaWYKIAotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgZnJhbWVzVG9Qcm9jZXNz
ID0gbV9maWZvLnB1bGwoZGVzdGluYXRpb25CdXMsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCFmcmFtZXNUb1Byb2Nlc3MpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgdm9pZCBzdGFydCgpCisgICAgeworICAgIH0KIAotICAgICAgICBWZWN0b3I8UmVmPFNoYXJl
ZE1lbW9yeT4+IGJ1ZmZlcnM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXN0
aW5hdGlvbkJ1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8g
bWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Q
cm9jZXNzKTsKLSAgICAgICAgICAgIGJ1ZmZlcnMuYXBwZW5kKCptZW1vcnkpOwotICAgICAgICB9
CisgICAgdm9pZCBzdG9wKCkKKyAgICB7CisgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiBJdCBp
cyB1bmZvcnR1bmF0ZSB3ZSBoYXZlIHRvIGRpc3BhdGNoIHRvIHRoZSBtYWluIHRoZWFkIGhlcmUu
IFdlIHNob3VsZCBiZSBhYmxlIHRvIElQQyBzdHJhaWdodCBmcm9tIHRoZQotICAgICAgICAvLyBy
ZW5kZXIgdGhyZWFkIGJ1dCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgc2VuZFdpdGhBc3luY1Jl
cGx5KCkuCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZnJhbWVzVG9Qcm9jZXNzLCBvdXRwdXRQb3NpdGlvbiwgYnVmZmVycyA9
IFdURk1vdmUoYnVmZmVycyldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBSZW1vdGVBdWRpb0J1
c0RhdGEgYnVzRGF0YSB7IGZyYW1lc1RvUHJvY2Vzcywgb3V0cHV0UG9zaXRpb24sIGJ1ZmZlcnMu
bWFwKFtdKGF1dG8mIG1lbW9yeSkgeyByZXR1cm4gbWVtb3J5LmNvcHlSZWYoKTsgfSkgfTsKLSAg
ICAgICAgICAgIEFTU0VSVChmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICAgICAgbV9jb25uZWN0
aW9uLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6UmVuZGVyQnVmZmVyKGJ1c0RhdGEpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGJ1ZmZlcnMgPSBXVEZNb3ZlKGJ1ZmZlcnMp
LCBmcmFtZXNUb1Byb2Nlc3NdKCkgewotICAgICAgICAgICAgICAgIGF1dG8gYXVkaW9CdXMgPSBB
dWRpb0J1czo6Y3JlYXRlKGJ1ZmZlcnMuc2l6ZSgpLCBmcmFtZXNUb1Byb2Nlc3MsIGZhbHNlKTsK
LSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVycy5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgICAgICAgICAgYXVkaW9CdXMtPnNldENoYW5uZWxNZW1vcnkoaSwg
c3RhdGljX2Nhc3Q8ZmxvYXQqPihidWZmZXJzW2ldLT5kYXRhKCkpLCBmcmFtZXNUb1Byb2Nlc3Mp
OwotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9maWZvTG9jayk7Ci0g
ICAgICAgICAgICAgICAgbV9maWZvLnB1c2goYXVkaW9CdXMuZ2V0KCkpOwotICAgICAgICAgICAg
fSwgbV9pZC50b1VJbnQ2NCgpKTsKLSAgICAgICAgfSk7Citwcml2YXRlOgorICAgIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkKKyAgICAgICAgLy8gOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAgICAg
OiBtX2lkKGlkZW50aWZpZXIpCisgICAgICAgICwgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yKCp0
aGlzKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZT4obnVsbHB0cikpKQorI2VuZGlmCisgICAgICAgIC8vICwgbV9jb250ZXh0U2Ft
cGxlUmF0ZShzYW1wbGVSYXRlKQorICAgIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAg
bV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLmNvbmZpZ3VyZShoYXJkd2FyZVNhbXBsZVJhdGUsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworI2VuZGlmCiAgICAgfQogCi0gICAgdm9pZCBpc1BsYXlp
bmdEaWRDaGFuZ2UoKSBvdmVycmlkZQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFNoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlJiBzdG9yYWdlKCkKICAgICB7Ci0gICAgICAgIGlmIChtX3Byb3RlY3RU
aGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93bikgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fZGVzdGluYXRpb24tPmlzUGxheWluZygpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHJlZkNvdW50KCkgPT0gMSk7Ci0gICAgICAgICAgICBtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2Vm
dWxTaHV0ZG93biA9IG51bGxwdHI7IC8vIERlbGV0ZXMgInRoaXMiLgotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaXNQbGF5aW5nID0gbV9kZXN0aW5hdGlvbi0+aXNQbGF5
aW5nKCksIGlkZW50aWZpZXIgPSBtX2lkLnRvVUludDY0KCldIHsKLSAgICAgICAgICAgIG1fY29u
bmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpEaWRDaGFuZ2VJc1BsYXlpbmcoaXNQbGF5aW5nKSwgaWRlbnRpZmllcik7Ci0gICAg
ICAgIH0pOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2UmPihtX3JpbmdCdWZmZXItPnN0b3JhZ2UoKSk7CisgICAgfQorICAgIAorICAgIE9TU3RhdHVz
IHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiwgQXVkaW9CdWZmZXJMaXN0KikK
KyAgICAvLyBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwg
VUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKKyAgICB7Cisg
ICAgICAgIC8qCisgICAgICAgIHNlbmRBc3ljaFdpdGhSZXBseSB7CisgICAgICAgICAgICBtX3Jp
bmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Cisg
ICAgICAgICAgICBtX2F1ZGlvQnVmZmVyTGlzdC0+c2V0U2FtcGxlQ291bnQobnVtYmVyT2ZGcmFt
ZXMpOworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChtX2F1ZGlvQnVmZmVyTGlzdC0+
bGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7CisgICAgICAgIH0qLwor
ICAgICAgICByZXR1cm4gbm9FcnI7CiAgICAgfQorI2VuZGlmCiAKLSAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CisgICAgLy8gR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
IG1faWQ7Ci0gICAgUmVmUHRyPEF1ZGlvRGVzdGluYXRpb24+IG1fZGVzdGluYXRpb247CiAgICAg
UmVmUHRyPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+IG1fcHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1
bFNodXRkb3duOwotICAgIExvY2sgbV9maWZvTG9jazsKLSAgICBXZWJDb3JlOjpQdXNoUHVsbEZJ
Rk8gbV9maWZvOworCisgICAgV2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvciBtX2F1ZGlv
T3V0cHV0VW5pdEFkYXB0b3I7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXZWJDb3JlOjpD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9kZXNjcmlwdGlvbjsKKyAgICBVbmlxdWVSZWY8V2Vi
Q29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CisjZW5kaWYKKyAg
ICAKKyAgICAvLyBmbG9hdCBtX2NvbnRleHRTYW1wbGVSYXRlOworICAgIGJvb2wgbV9pc1BsYXlp
bmcgeyBmYWxzZSB9OwogfTsKIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24pCkBAIC0xNDgsMTQgKzE1NiwxMyBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUAogCiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3Qg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBm
bG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsCisgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0g
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBmcmFtZXNQZXJCdWZmZXIgPSBk
ZXN0aW5hdGlvbi0+ZnJhbWVzUGVyQnVmZmVyKCk7CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IFJl
bW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IG5ld0lELCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CiAgICAgbV9hdWRp
b0Rlc3RpbmF0aW9ucy5hZGQobmV3SUQsIFdURk1vdmUoZGVzdGluYXRpb24pKTsKLSAgICBjb21w
bGV0aW9uSGFuZGxlcihuZXdJRCwgZnJhbWVzUGVyQnVmZmVyKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihuZXdJRCk7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRl
bGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMTcxLDcgKzE3OCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0
YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCiAgICAgYm9vbCBpc1Bs
YXlpbmcgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVkaW9EZXN0aW5hdGlvbnMu
Z2V0KGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGl0ZW0tPnN0YXJ0KCk7Ci0gICAgICAgIGlzUGxh
eWluZyA9IGl0ZW0tPmlzUGxheWluZygpOworICAgICAgICAvLyBpc1BsYXlpbmcgPSBpdGVtLT5p
c1BsYXlpbmcoKTsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQbGF5aW5nKTsKIH0K
QEAgLTE4MSwxMSArMTg4LDE5IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JCiAgICAgYm9vbCBp
c1BsYXlpbmcgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVkaW9EZXN0aW5hdGlv
bnMuZ2V0KGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGl0ZW0tPnN0b3AoKTsKLSAgICAgICAgaXNQ
bGF5aW5nID0gaXRlbS0+aXNQbGF5aW5nKCk7CisgICAgICAgIC8vIGlzUGxheWluZyA9IGl0ZW0t
PmlzUGxheWluZygpOwogICAgIH0KICAgICBjb21wbGV0aW9uSGFuZGxlcihpc1BsYXlpbmcpOwog
fQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjphdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFu
ZGxlLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVk
aW9EZXN0aW5hdGlvbnMuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICBpdGVtLT5hdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZChpcGNIYW5kbGUsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5oCmluZGV4IDExYjRiZWYxMDQxYjdhMDhhZjNiMWIwOWRlMzg0YzAzZDU4OTNkMWUuLjI2NTFl
ZmFjODMwNTJkNWVlM2MzMzViMGQ3MDcyZDU4ZjQ2MGI1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpA
QCAtNDYsMjUgKzUwLDI1IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgflJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3Qg
U3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVp
bnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVk
IGZyYW1lc1BlckJ1ZmZlcik+JiYpOwotICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2Rl
cikKLSAgICB7Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKLSAgICB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9t
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwogCisgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0
cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50
MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJk
d2FyZVNhbXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
c3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOworI2Vu
ZGlmCisKICAgICBIYXNoTWFwPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBSZWY8
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4+IG1fYXVkaW9EZXN0aW5hdGlvbnM7CiAgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogfTsKIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdDsKIAogI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBiYzA1YWUxMTc5YWEyYWQz
NGUzMzM4NTMyYmVkYjVlNmI0ZDQyM2EwLi4yYmM5ZWRjNzFiOTRlODY3OWNjMjBiNjJkODFhOTMy
Y2UzMTU1YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0yNCwxNCArMjQsMTQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJfQVVESU8pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
IE5vdFJlZkNvdW50ZWQgewotCi0gICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5w
dXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSAtPiAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBmcmFtZXNQZXJC
dWZmZXIpIFN5bmNocm9ub3VzCi0KKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgQXN5bmMK
IAogICAgIFN0YXJ0QXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWluZykgU3luY2hyb25vdXMK
ICAgICBTdG9wQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWluZykgU3luY2hyb25vdXMKLQor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktp
dDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQorI2Vu
ZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOTU1ZGU5MWRjY2EwMjUzODI4YzEwZWE1ZDgzYTY0ZGU5NjUyMjAw
Mi4uZDQyMjRjNmViODkyNTE4ZWFmYmM4ZmM3Yjc0ZTI3NjVhNDI1MWMwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDMwLDcgKzE0
MzAsNiBAQAogCQk5QjU0OTlCMjIzNjJBN0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlv
bkV4Y2x1c2lvblJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCNTQ5OUIwMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRXhj
bHVzaW9uUnVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTlCNUJFQzI2MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyNDI0MDBG
NEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oICovOyB9OwogCQk5QjVCRUMyQTI0MDEw
MTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyODI0MDEwMTU4MDA3MEM2
RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi87IH07Ci0JCTlCNUJFQzMxMjQw
MTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBDb3B5RmlsZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8q
IFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovOyB9OwogCQk5RUM1MzJBMzI0NDdGQkFEMDAyMTUyMTYg
LyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5RUM1MzJBMjI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRpb25J
ZGVudGlmaWVyLmggKi87IH07CiAJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRl
eHRQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMDJBNzA4
MUVDMEVFRTkwMEQ4MUQ4MiAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdp
bi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTVFMzk0OTFENUJEOEE3MDBCNEI3Q0UgLyogY29tLm1hY3JvbWVk
aWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgKi87IH07CkBAIC0yMTM5LDcgKzIxMzgsNiBA
QAogCQkJCTJEQjk2MDUzMjM5ODg2QzEwMDEwMjc5MSAvKiBjb20uYXBwbGUuV2ViS2l0LkdQVS5z
YiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREIxOTNBQzlGODAwNUVDQzI1IC8qIGNvbS5h
cHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREMx
OTNBQzlGQjAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYiBpbiBDb3B5
RmlsZXMgKi8sCi0JCQkJOUI1QkVDMzEyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVz
RGF0YS5oIGluIENvcHlGaWxlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ1NDAsNyArNDUzOCw2IEBACiAJCTlCNUJFQzI4
MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCNUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1QkVDMkUyNDAxMDE4
QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTlCNUJFQzMwMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1
c0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9CdXNEYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCQzU5RDZDMUVGQ0NDQjYwMDFFOEQwOSAvKiBDYWxsYmFja0lE
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrSUQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNTlENkQxRUZDREM2RDAwMUU4RDA5IC8qIE9wdGlv
bmFsQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25h
bENhbGxiYWNrSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUVDNTMyQTIyNDQ3
RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
ZW9sb2NhdGlvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1
NTUsNyArNTU1Miw2IEBACiAJCQkJMDc5MjMxMzEyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8q
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3QjFEMDRCMjNEMzhGQ0UwMDM5
OUE2RSAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCi0JCQkJOUI1
QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovLAogCQkJCTlC
NUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3Bw
ICovLAogCQkJCTlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuaCAqLywKIAkJCQk5QjVCRUMyRTI0MDEwMThDMDA3MEM2RUYgLyogUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYzJmMGM2NjA2OTZhZTM0ODYxYzBiMjQ4MGFkMDU3ZmVh
MTk2MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaAorKysg
L2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBSZW1vdGVBdWRpb0J1
c0RhdGEgewotICAgIHVpbnQ2NF90IGZyYW1lc1RvUHJvY2VzcyB7IDAgfTsKLSAgICBXZWJDb3Jl
OjpBdWRpb0lPUG9zaXRpb24gb3V0cHV0UG9zaXRpb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRN
ZW1vcnk+PiBjaGFubmVsQnVmZmVyczsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
Ci0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IGVuY29kZXIgPDwgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBlbmNvZGVyIDw8IG91dHB1dFBv
c2l0aW9uOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjaGFubmVs
QnVmZmVycy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYW5uZWxC
dWZmZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGU7Ci0gICAgICAgICAgICBjaGFubmVsQnVmZmVyc1tpXS0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwotICAgICAgICAgICAgZW5j
b2RlciA8PCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgY2hhbm5l
bEJ1ZmZlcnNbaV0tPnNpemUoKSB9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgRGVjb2Rlcj4KLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFJlbW90ZUF1ZGlvQnVzRGF0YSYgcmVzdWx0KQotICAgIHsK
LSAgICAgICAgdWludDY0X3QgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGZyYW1lc1RvUHJvY2VzcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHJlc3VsdC5mcmFtZXNUb1Byb2Nlc3MgPSBmcmFtZXNUb1Byb2Nlc3M7Ci0KLSAgICAgICAg
V2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91dHB1dFBvc2l0aW9uOwotICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKG91dHB1dFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmVzdWx0Lm91dHB1dFBvc2l0aW9uID0gb3V0cHV0UG9zaXRpb247Ci0KLSAgICAg
ICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlw
Y0hhbmRsZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXV0byBtZW1vcnkg
PSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRXcml0ZSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxCdWZmZXJz
LmFwcGVuZChtZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDg0MDRjNDhlMWMyZTQ4MmFiY2QyNGU1
NWQyY2M5MTNiZDI2N2U3NDEuLmNjZDhlMWUyOWJhOGQyNzQ5NDI2NWU4M2Q2YWIwMjEyZWQyZDUz
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTM5LDcgKzM5LDkg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6QXVk
aW9CdXM7CisvLyBBbGxvY2F0ZSBhIHJpbmcgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBjb250YWlu
IDIgc2Vjb25kcyBvZiBhdWRpby4KK2NvbnN0ZXhwciBzaXplX3QgcmluZ0J1ZmZlclNpemVJblNl
Y29uZCA9IDI7CisKIHVzaW5nIEF1ZGlvRGVzdGluYXRpb24gPSBXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uOwogdXNpbmcgQXVkaW9JT0NhbGxiYWNrID0gV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNr
OwogCkBAIC01MCwxNiArNTIsMTUgQEAgUmVmPEF1ZGlvRGVzdGluYXRpb24+IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGIKIH0KIAogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkoQXVk
aW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1bnNp
Z25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQotICAgICwg
bV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCisgICAgOiBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9u
Q29jb2EoY2FsbGJhY2ssIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpCisgICAg
LCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZTxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KG1ha2VVbmlx
dWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KHRoaXMpKSkKIHsKICAgICBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllciBkZXN0aW5hdGlvbklEOwotICAgIHVuc2lnbmVkIGZyYW1l
c1BlckJ1ZmZlciB7IDAgfTsKIAogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24u
Y29ubmVjdGlvbigpLnNlbmRTeW5jKAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oaW5wdXREZXZpY2VJZCwgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSwK
LSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVB
dWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklELCBmcmFtZXNQZXJCdWZmZXIpLCAw
KTsKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKCkp
LAorICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0
ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQpLCAwKTsKIAogICAgIGF1dG8g
b2ZmVGhyZWFkUmVuZGVyaW5nID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgd2hpbGUgKCFtX3RocmVhZFRhc2tRdWV1ZS5pc0tpbGxl
ZCgpKSB7CkBAIC03Miw3ICs3MywxMSBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYQogICAgIGNv
bm5lY3Rpb24uY29ubmVjdGlvbigpLmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMs
IGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CiAKICAgICBtX2Rlc3RpbmF0aW9uSUQgPSBkZXN0
aW5hdGlvbklEOwotICAgIG1fZnJhbWVzUGVyQnVmZmVyID0gZnJhbWVzUGVyQnVmZmVyOworCisg
ICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKyAgICBtX251bWJlck9mRnJh
bWVzID0gaGFyZHdhcmVTYW1wbGVSYXRlKCkgKiByaW5nQnVmZmVyU2l6ZUluU2Vjb25kOworICAg
IG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251bWJlck9mRnJhbWVzKTsK
IH0KIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+UmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5KCkKQEAgLTEwNSwxNyArMTEwLDEyIEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpzdG9wKCkKICAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQgPSBudWxscHRyOwog
fQogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVuZGVyQnVmZmVyKGNvbnN0
IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhJiBhdWRpb0J1c0RhdGEsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5OjpyZXF1ZXN0QnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVkaWFUaW1l
LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KT4mJiAvKmNvbXBsZXRpb25IYW5kbGVyKi8p
CiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKGF1ZGlvQnVzRGF0
YS5mcmFtZXNUb1Byb2Nlc3MpOwotICAgIEFTU0VSVChhdWRpb0J1c0RhdGEuY2hhbm5lbEJ1ZmZl
cnMuc2l6ZSgpKTsKLSAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShhdWRpb0J1
c0RhdGEuY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpLCBhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNz
LCBmYWxzZSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF1ZGlvQnVzRGF0YS5jaGFu
bmVsQnVmZmVycy5zaXplKCk7ICsraSkKLSAgICAgICAgYXVkaW9CdXMtPnNldENoYW5uZWxNZW1v
cnkoaSwgKGZsb2F0KilhdWRpb0J1c0RhdGEuY2hhbm5lbEJ1ZmZlcnNbaV0tPmRhdGEoKSwgYXVk
aW9CdXNEYXRhLmZyYW1lc1RvUHJvY2Vzcyk7Ci0KLSAgICBtX2NhbGxiYWNrLnJlbmRlcigwLCBh
dWRpb0J1cy5nZXQoKSwgYXVkaW9CdXNEYXRhLmZyYW1lc1RvUHJvY2VzcywgYXVkaW9CdXNEYXRh
Lm91dHB1dFBvc2l0aW9uKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIAorICAgIC8v
IEZldGNoIGJ1ZmZlciBhbmQgbGV0IEdQVSBwcm9jZXNzIGtub3cgdGhlIGJ1ZmZlciBpcyBhdmFp
bGFibGUKKyAgICAvLyBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQpAQCAt
MTMzLDYgKzEzMywyNiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlzcGF0
Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKICAgICBtX3RocmVhZFRhc2tRdWV1
ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2UpCit7CisgICAgU2hh
cmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIGlmIChzdG9yYWdlKQorICAgICAgICBzdG9y
YWdlLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKKworICAgIC8vIEZJWE1FOiBTZW5kIHRoZSBhY3R1YWwgZGF0YSBzaXplIHdpdGggSVBD
SGFuZGxlLgorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICB1aW50NjRfdCBkYXRh
U2l6ZSA9IGhhbmRsZS5zaXplKCk7CisjZWxzZQorICAgIHVpbnQ2NF90IGRhdGFTaXplID0gMDsK
KyNlbmRpZgorCisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsK
KyAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKyAgICBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0
KTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjpBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCB7IG1fZGVzdGluYXRpb25JRCwgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIHN0cmVh
bUZvcm1hdCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fbnVtYmVyT2ZGcmFtZXMpIH0sIDApOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCmlu
ZGV4IGM0YWRiNzU2MGQ0NjM3NThlZTcxNTZmMDFlZWM5OTU4ZDNjZmRlNjYuLjdhYmM1ZjEwMDFh
OTIzMDAyMmYxNjMyYjA4MGZkOGQ0YzAyNWEzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuaApAQCAtMjgsMjQgKzI4LDMzIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlJl
bW90ZUF1ZGlvQnVzRGF0YS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxs
YmFjay5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CisjaW5jbHVkZSA8d3Rm
L01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmlu
Z0J1ZmZlci5oPgorI2Vsc2UKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4K
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5IDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IHB1YmxpYyBXZWJDb3Jl
OjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EKKyAgICAsIHB1YmxpYyBTaGFyZWRSaW5nQnVmZmVyU3Rv
cmFnZTo6Q2xpZW50CisjZWxzZQorICAgIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b24KKyNlbmRpZgorICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJl
Y2VpdmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkpOwogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6QXVkaW9CdXM7
CiAgICAgdXNpbmcgQXVkaW9JT0NhbGxiYWNrID0gV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNrOwog
ICAgIHVzaW5nIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OnJlZjsKICAgICB1c2luZyBXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpkZXJlZjsKQEAgLTU3LDE2ICs2NiwxOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KIAotICAgIHZvaWQgcmVuZGVyQnVmZmVyKGNvbnN0
IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHJlcXVlc3RCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZWRpYVRp
bWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRf
dCBlbmRGcmFtZSk+JiYpOwogICAgIHZvaWQgZGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5
aW5nKTsKIAogcHJpdmF0ZToKLSAgICAvLyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uCi0gICAg
dm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hU
b1JlbmRlclRocmVhZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzUGxheWluZzsgfQotICAgIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0K
LSAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2ZyYW1lc1BlckJ1ZmZlcjsgfQorICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlv
bjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpIGZpbmFsOworICAgIHZvaWQg
c3RvcCgpIGZpbmFsOworICAgIGJvb2wgaXNQbGF5aW5nKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIC8vIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdl
OjpDbGllbnQKKyAgICB2b2lkIHN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSopOworI2VuZGlm
CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC03NiwxMSArODcs
MTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZk1lc3NhZ2VSZWNlaXZlcigpIGZpbmFsIHsgV2Vi
Q29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmTWVzc2FnZVJl
Y2VpdmVyKCkgZmluYWwgeyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpkZXJlZigpOyB9CiAK
LSAgICBBdWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7Ci0gICAgZmxvYXQgbV9zYW1wbGVSYXRl
IHsgMC4gfTsKLSAgICB1bnNpZ25lZCBtX2ZyYW1lc1BlckJ1ZmZlciB7IDAgfTsKICAgICBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBtX2Rlc3RpbmF0aW9uSUQ7CiAgICAgYm9vbCBt
X2lzUGxheWluZyB7IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgaW50NjRf
dCBtX251bWJlck9mRnJhbWVzIHsgMCB9OworI2VuZGlmCisKICAgICBGdW5jdGlvbjx2b2lkKEZ1
bmN0aW9uPHZvaWQoKT4mJik+IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZDsKICAgICBSZWZQdHI8
VGhyZWFkPiBtX3JlbmRlclRocmVhZDsKICAgICBDcm9zc1RocmVhZFF1ZXVlPEZ1bmN0aW9uPHZv
aWQoKT4+IG1fdGhyZWFkVGFza1F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCBhZTFmYzcwNjk4NzE0Yzg3MDVlNTgyNDgxOTQ2NWJh
YjMyNjNmMDYxLi5iYWE4ZWJkZjllNTIzZTliMGUwZTQ0YWRjOGI1Nzg1ZWYwODg3NzRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQs
MTAgKzI0LDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8p
CiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBOb3RSZWZDb3VudGVk
IHsKLQotICAgIFJlbmRlckJ1ZmZlcihzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVBdWRpb0J1c0RhdGEg
ZGF0YSkgLT4gKCkgQXN5bmMKKyAgICByZXF1ZXN0QnVmZmVyKCkgLT4gKE1lZGlhVGltZSB0aW1l
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3Qg
ZW5kRnJhbWUpIEFzeW5jCiAgICAgRGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQot
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCmlu
ZGV4IDg3OTlmMTk4NDcxNDExZWM2ZjczOWEzODc5MzY0ZDI0NzUxMmVhNDQuLjJlMGE2YjFmODM5
MzJhZTgzMzVkZjRlYWE0ZWI1MzVmODU4NzEyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6cHVzaFNhbXBsZXMoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBX
ZWIKIAogICAgICAgICAvLyBBbGxvY2F0ZSBhIHJpbmcgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBj
b250YWluIDIgc2Vjb25kcyBvZiBhdWRpby4KICAgICAgICAgbV9udW1iZXJPZkZyYW1lcyA9IG1f
ZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMjsKLSAgICAgICAgbV9yaW5nQnVmZmVyLT5hbGxv
Y2F0ZShtX2Rlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbnVtYmVyT2ZGcmFtZXMp
OworICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKG1fZGVzY3JpcHRpb24sIG1fbnVtYmVy
T2ZGcmFtZXMpOwogICAgIH0KIAogICAgIEFTU0VSVChpczxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZl
ckxpc3Q+KGF1ZGlvRGF0YSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411404</attachid>
            <date>2020-10-14 21:21:44 -0700</date>
            <delta_ts>2020-10-14 21:45:38 -0700</delta_ts>
            <desc>WIP patch v5</desc>
            <filename>bug-217715-20201014212144.patch</filename>
            <type>text/plain</type>
            <size>88199</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ3MWFlZjc3YmQ4NmZl
MTBkMmJjMDQ4NWE5OWUzZGQ3ZTI0NTkxZS4uOGJlYjM3Mzc4MDczMmExMDQ3NmRlZDRmMmNmMTA2
MjI2MGQ5Y2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9j
ZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8g
ZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6aW5wdXRQcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRV
bml0QWRhcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRv
cklPUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2spOgorCiAyMDIwLTEwLTE0ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFZlY3Rvck1hdGg6Om11
bHRpcGx5VGhlbkFkZFNjYWxhcigpIGZvciBjbGFyaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkYjZjMTc4OGNi
ZmJhYjEzMGQyZWIzMDVkYTc1ZTI5YmI4ZGExNDcuLmI0OGI4NzIyZWIyNjE3NjdmYjEyMjhiZmNm
ZWM1MDk0ZmRmM2FhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMTAtMTQgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWEgaW4gR1BVIFBy
b2Nlc3NdIFVzZSBDQVJpbmdCdWZmZXIgdG8gdHJhbnNmZXIgYXVkaW8gZGF0YSBvZiBhbiBhdWRp
byBkZXN0aW5hdGlvbiBmcm9tIGEgd2ViIHByb2Nlc3MgdG8gdGhlIEdQVSBQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93bklm
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6YXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246
OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnJl
bmRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b246OmlzUGxheWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OmZyYW1lc1BlckJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9CdXNEYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3Jh
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpyZW5kZXJCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6cHVzaFNh
bXBsZXMpOgorCiAyMDIwLTEwLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBub24tQ29jb2EgcGxhdGZvcm1zICYg
cmVsZWFzZSBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggYzU2NzBjMzY0ODU3NWU4ODBlYjY4NWUw
YTNhMTM1YzI5MjQzNzViYi4uZTMyMjM3MjNkNzc4ZmVlMTNmNDcyYzRkMjExMGVjOTM2YjgwZmFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
QXVkaW9EZXN0aW5hdGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfkF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCi0gICAgLy8gQXVkaW9Ob2RlICAgCisgICAgLy8g
QXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCkgb3ZlcnJpZGUgeyB9OyAvLyB3ZSdy
ZSBwdWxsZWQgYnkgaGFyZHdhcmUgc28gdGhpcyBpcyBuZXZlciBjYWxsZWQKICAgICAKICAgICAv
LyBUaGUgYXVkaW8gaGFyZHdhcmUgY2FsbHMgcmVuZGVyKCkgdG8gZ2V0IHRoZSBuZXh0IHJlbmRl
ciBxdWFudHVtIG9mIGF1ZGlvIGludG8gZGVzdGluYXRpb25CdXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCBmOTU5ZTM5ODI5NjYwNTA5MDNhYWM4NWI4YWYyNDJkYTE1NDM0YTg5Li41OTI2
NjA2Mzg5OGY0MTM2YTliZjU1YzI2ODkxYTU2YmJhMzE2ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTIwMywxOSArMjAzLDIwIEBAIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQogcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNw
cAorcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAKIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVm
ZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCi1wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9C
dXNNYWMubW0KLXBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
SGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25N
YWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3YjUzM2VmNmM1ZjQ0Y2RiODdkYmI4MTIxMTc4OTVjMGNkYzMxZWUzLi42ODYw
ODBjYzExZGZiNTAxZmZkNjNmNTJlYjQxYThiNDJhNmUxYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzMsNiArNjMzLDcg
QEAKIAkJMURBQjMxMTIyNTFENkJGMzAwRkM5NDg1IC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEIzMUEx
MjM3OURDODMwMDg4M0ZERSAvKiBXZWJWaWRlb0NvbnRhaW5lckxheWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMURBQjMxMTQyNTFENzI1QzAw
RkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxREFCMzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXll
ck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxREFCMzExNTI1MUQ3NERCMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RTFD
NTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMURCNjZEM0IyNTM3QTk1NjAwQjY3
MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFERDNCNEM2
MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0
QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkxREY3RTgxRjI1MUE5RTA2
MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00MTI3LDcgKzQxMjgsNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2
MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MDFFMjNG
QTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgKi87IH07CiAJCUNEMDYzRjgzMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MTFFMjNGQTg5MDA4MTJCRTMgLyogSW5p
dERhdGFSZWdpc3RyeS5oICovOyB9OwotCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHAgKi87IH07CisJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVu
aXRBZGFwdG9ySU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9y
SU9TLmNwcCAqLzsgfTsKIAkJQ0QxMUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8q
IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRDE3QTQ1RDIxMzc0MDgxMDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxN0E0NTky
MTM3NDAxNjAwNzlFQzdCIC8qIFVuaWZpZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKQEAgLTUzMDQs
NyArNTMwNSw2IEBACiAJCUZEMzE2MEFCMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2
ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQzMTYwNzUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggKi87IH07
CiAJCUZEMzE2MEFEMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzcxMkIwMjZG
NzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggKi87IH07CiAJCUZEMzE2MEFGMTJCMDI2
RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5o
ICovOyB9OwotCQlGRDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYw
QjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLzsgfTsKIAkJRkQz
MTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFB
MzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBF
MUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDM1OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJh
bVRpbWVsaW5lLmggKi87IH07CiAJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0Yx
NzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY3NTQsNiArNjc1NCw4IEBACiAJCTFEMDAyNkE5MjM3NEY5
RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2
QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBQjMxMTMy
NTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZp
ZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEQjY2RDM3
MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMURCNjZEMzgyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJl
SW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZU9ic2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZEMjExQkExMkEwMDRC
NzgwRSAvKiBOYXZpZ2F0b3JTaGFyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdh
dG9yU2hhcmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRjIxMUJB
ODQxMDA0Qjc4MEUgLyogU2hhcmVEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFy
ZURhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyOTQsOCArMTQyOTYs
NyBAQAogCQlDRDA2M0Y4MDFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0RGF0YVJlZ2lzdHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwNjNGODExRTIzRkE4OTAwODEyQkUz
IC8qIEluaXREYXRhUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5pdERhdGFSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBDOEI1
ODIxNDFDOENBMDA2MkY1OUQgLyogTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFw
dG9ySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxMUIzREYyMjdDQUFB
OTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3
REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1NjAsOCArMTY1NjEsNyBAQAogCQlGRDMxNjA3
ODEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWZWN0b3JNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkQzMTYwNzkxMkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb0J1c01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1
ZGlvRGVzdGluYXRpb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25NYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZEMzE2MEI4MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQjkxMkIwMjcyQTAw
QzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkQzMTYwQkExMkIwMjcyQTAwQzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZGVEZyYW1lTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI3Mjk2LDEwICsyNzI5Niw5IEBACiAJCUNEMEVFRTBEMTQ3NDNF
NDgwMDNFQUZBMiAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcCAqLywKLQkJCQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlv
bklPUy5oICovLAogCQkJCUNENTU5NjhGMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFk
ZXJJT1MuY3BwICovLAogCQkJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVS
ZWFkZXJJT1MuaCAqLywKKwkJCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRw
dXRVbml0QWRhcHRvcklPUy5jcHAgKi8sCiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8q
IEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywKIAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4
IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSAqLywKQEAgLTI3MzY0LDYgKzI3MzYzLDggQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTQxMzE1MTg0MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwICovLAogCQkJCTQxMzE1MTg2MjM1Nzc0NUUwMDExNUU2RSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCAqLywKKwkJCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgKi8sCisJCQkJMURCNjZEMzcyNTM2NzhFQTAw
QjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCAqLywKIAkJCQkwNzNCODc2MjFFNDM4
NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcCAqLywKIAkJCQkwNzNCODc2
MzFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggKi8sCiAJCQkJMDcz
Qjg3NjUxRTQzODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oICovLApAQCAt
MzAyNzUsMTIgKzMwMjc2LDExIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAqLywKLQkJ
CQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8s
Ci0JCQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAq
LywKIAkJCQlGRDMxNjBCODEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCOTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFj
LmggKi8sCiAJCQkJQ0QyRjRBMjUxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lck1hYy5jcHAgKi8sCiAJCQkJQ0QyRjRBMjYxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFy
ZHdhcmVMaXN0ZW5lck1hYy5oICovLAorCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBB
dWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1
RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMx
QTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8sCiAJCQkpOwpAQCAtMzA1NjEsNyArMzA1NjEsNiBA
QAogCQkJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGlu
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovLAotCQkJCUZEMzE2MEJEMTJCMDI3
MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAwODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDgwMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNTc3LDYgKzMwNTc2LDcgQEAK
IAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU3MTQ2N0IzMjRBQkFFRjIwMEZCMkY1MCAvKiBBdWRpb05vZGVPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9O
b2RlT3V0cHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxREI2NkQzQjI1MzdBOTU2MDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUQx
MkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzU2
OTlFMjUyQ0YzNjIwMEUxQjk1NiAvKiBBdWRpb1BhcmFtRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNCOTg3MEMyNTIyNUY4MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1NYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzA2NTQsNyArMzA2NTQsNiBAQAogCQkJCTUxNzQxRDBGMEIwNzI1OUEw
MEVENDQyQyAvKiBCYWNrRm9yd2FyZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOEM4
MUUxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBMUI4N0QyMDg3QzRDMDAwOTc5QTc1IC8qIEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOTQ3MjE3MjUzMjNDMjEwMEYxNTNDOCAvKiBC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMjRFRTgwQzI2
NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2MEJCNjE2MUQw
QTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
MTk4RkJGMjRBMTYwREQwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAq
LywKQEAgLTM1MjM5LDggKzM1MjM4LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCUE5Nzg3Q0I0MUY1
RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzFGN0I3MzEyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAx
RDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMEVF
RTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25J
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2NDMgLyogQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREUzQTg1NzE3
RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9u
LmgKaW5kZXggMTYwYzY1NzhlMTVlZDVlYTc1MjVkYzc2OGJkNGVmM2ZkYzc0ZjRmZi4uNDE5NjU1
MmQ5MTVhODliNGEwNWY4NDc2NGQ1ZmVhYzA1NjYyNDk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4gaW4gQXVk
aW9EZXN0aW5hdGlvbiB0byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUKICAgICB2aXJ0dWFsIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7Ci0gICAgc3RhdGljIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUoKTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Qg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCAxZDBmNGUyODgxMTg3ZTdiMzUw
MjkwYjAyMzNjYjhiMGMyMWFmNGU2Li4yYzk3MWVhN2U2MzdhNTg1ZGY4NjY1OGMxNGEzMzdmODYw
OGFlNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTM1LDYgKzM1LDEwIEBACiAj
aW5jbHVkZSAiTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgiCiAjaW5jbHVkZSAiUHVzaFB1bGxGSUZP
LmgiCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3RleHByIHNpemVfdCBmaWZvU2l6ZSA9IDk2
ICogQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwpAQCAtNTYsNyArNjAsNiBAQCBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGNvbnN0CiAgICAgICAgIHJldHVybiBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OmNyZWF0ZU92ZXJyaWRlKGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIAogICAgIGF1dG8gZGVz
dGluYXRpb24gPSBhZG9wdFJlZigqbmV3IEF1ZGlvRGVzdGluYXRpb25Db2NvYShjYWxsYmFjaywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOwotICAgIGRlc3RpbmF0aW9uLT5j
b25maWd1cmUoKTsKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKQEAgLTcxLDE0ICs3NCwx
NCBAQCB1bnNpZ25lZCBsb25nIEF1ZGlvRGVzdGluYXRpb246Om1heENoYW5uZWxDb3VudCgpCiB9
CiAKIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUpCi0gICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICA6IG1fYXVkaW9PdXRwdXRV
bml0QWRhcHRvcigqdGhpcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX291
dHB1dEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1ZGlvVXRp
bGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxsKCkpCiAgICAg
LCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1
ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSkucmVsZWFzZU5vbk51bGwoKSkKICAgICAs
IG1fZmlmbyhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4obnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmlmb1NpemUpKQogICAgICwgbV9jb250ZXh0U2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogewot
ICAgIGNvbmZpZ3VyZSgpOworICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUo
aGFyZHdhcmVTYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgYXV0
byBoYXJkd2FyZVNhbXBsZVJhdGUgPSB0aGlzLT5oYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBp
ZiAoc2FtcGxlUmF0ZSAhPSBoYXJkd2FyZVNhbXBsZVJhdGUpIHsKQEAgLTg3LDExICs5MCw3IEBA
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkCiAgICAgfQogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKQotewotICAgIGlmIChtX291dHB1dFVuaXQpCi0g
ICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Ci19CitB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKSA9IGRlZmF1bHQ7
CiAKIHVuc2lnbmVkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6bnVtYmVyT2ZPdXRwdXRDaGFubmVs
cygpIGNvbnN0CiB7CkBAIC0xMDcsNyArMTA2LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFQK
IHsKICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAg
bV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFk
KTsKLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVu
aXQpOworICAgIE9TU3RhdHVzIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFy
dCgpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHNldElzUGxheWluZyh0cnVlKTsKQEAg
LTExNiw3ICsxMTUsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rp
b248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVAogdm9pZCBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25D
b2NvYTo6c3RvcCIpOwotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3Ao
bV9vdXRwdXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFk
YXB0b3Iuc3RvcCgpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAK
ICAgICBpZiAoIXJlc3VsdCkKQEAgLTEzMyw3ICsxMzIsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2suaXNQ
bGF5aW5nRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBz
dHJlYW1Gb3JtYXQpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Z2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0
KQogewogICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwogICAg
IGNvbnN0IGludCBiaXRzUGVyQnl0ZSA9IDg7CkBAIC0xNTcsNiArMTU2LDIxIEBAIHN0YXRpYyB2
b2lkIGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKEF1ZGlvQnVmZmVyKiBidWZmZXJzLCBBdWRpb0J1
cyYgYnVzLCBVSW50MzIKICAgICB9CiB9CiAKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpw
cm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVkaW9CdXMmIGJ1cywgVUludDMyIG51bWJlck9mRnJhbWVz
KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUu
LCBbLTEuMCwgMS4wXSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9m
Q2hhbm5lbHMoKTsgKytpKSB7CisgICAgICAgIGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChp
KTsKKyAgICAgICAgaWYgKCFjaGFubmVsLT5pc1NpbGVudCgpKQorICAgICAgICAgICAgVmVjdG9y
TWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgpLCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEo
KSwgbnVtYmVyT2ZGcmFtZXMpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGJ1cyk7
CisgICAgVU5VU0VEX1BBUkFNKG51bWJlck9mRnJhbWVzKTsKKyNlbmRpZgorfQorCiAvLyBQdWxs
cyBvbiBvdXIgcHJvdmlkZXIgdG8gZ2V0IHJlbmRlcmVkIGF1ZGlvIHN0cmVhbS4KIE9TU3RhdHVz
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1l
c3RhbXAsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCiB7
CkBAIC0yMTAsMTMgKzIyNCw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJP
blJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8vIERl
ZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBj
b25zdCBBdWRpb1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBhdXRv
KiBhdWRpb091dHB1dCA9IHN0YXRpY19jYXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVzZXJE
YXRhKTsKLSAgICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9m
RnJhbWVzLCBpb0RhdGEpOwotfQotCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlk
ZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0aWxp
dGllczo6cmVuZGVyUXVhbnR1bVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAwODk0
ZDYyMWEyZjE1MzIyNTEyNzM2NTBiNmU1YTNkM2VjOTk2ZjhhLi43MDcyZTE4ZTRlMWEyN2YxNDQw
NDAxYjg0YzBlNWI3ZDIyMjc4NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgogI2luY2x1ZGUgIkF1ZGlv
SU9DYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCIKICNpbmNs
dWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5p
dC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQzLDQ3ICs0NCw0MiBAQCBjbGFzcyBQ
dXNoUHVsbEZJRk87CiB1c2luZyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSA9
IFJlZjxBdWRpb0Rlc3RpbmF0aW9uPigqKShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVS
YXRlKTsKIAogLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0
IG91dHB1dCBBdWRpb1VuaXQKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1YmxpYyBB
dWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CitjbGFzcyBBdWRp
b0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlv
VW5pdFJlbmRlcmVyLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAg
QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwotICAgIHZpcnR1YWwgfkF1ZGlvRGVz
dGluYXRpb25Db2NvYSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YShBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0
aW9uQ29jb2EoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2FPdmVycmlkZSBjcmVhdGVPdmVycmlkZTsKIAogcHJvdGVjdGVkOgorICAgIFdF
QkNPUkVfRVhQT1JUIE9TU3RhdHVzIHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQz
MiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpIGZpbmFsOworCiAgICAg
dm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CiAKLSAgICBib29sIGlzUGxheWluZygpIGZpbmFsIHsg
cmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2lzUGxheWluZzsgfQogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2NvbnRleHRTYW1wbGVSYXRlOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVm
ZmVyKCkgY29uc3QgZmluYWw7Ci0gICAgQXVkaW9Vbml0JiBvdXRwdXRVbml0KCkgeyByZXR1cm4g
bV9vdXRwdXRVbml0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgZnJhbWVzUGVyQnVm
ZmVyKCkgY29uc3QgZmluYWw7CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gRGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKLSAgICBz
dGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJB
Y3Rpb25GbGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAKLSAgICB2b2lk
IHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mKTsKIAogICAgIEZ1bmN0aW9uPHZvaWQo
RnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkOwogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBSZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3Jl
YXRlKEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNpZ25lZCwg
ZmxvYXQpOworCiAgICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4m
Jik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBy
ZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcik7CiAKLSAgICBmcmll
bmQgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lP
Q2FsbGJhY2smLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKLSAg
ICAKICAgICAvLyBBdWRpb1NvdXJjZVByb3ZpZGVyLgotICAgIHZvaWQgcHJvdmlkZUlucHV0KEF1
ZGlvQnVzKiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBm
aW5hbDsKIAotICAgIHZvaWQgY29uZmlndXJlKCk7CiAgICAgdm9pZCBwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpOwogCi0gICAgT1NTdGF0dXMg
cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSk7Ci0KLSAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OworICAg
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yOwogICAgIEF1
ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKIAogICAgIC8vIFRvIHBhc3MgdGhlIGRhdGEgZnJv
bSBGSUZPIHRvIHRoZSBhdWRpbyBkZXZpY2UgY2FsbGJhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5MDY2NDgzYTMwMzNjZjEyMWZlYzJhZmJiM2U1ODZmMmMyZjFl
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVk
aW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcihBdWRpb1VuaXRSZW5k
ZXJlciYgcmVuZGVyZXIpCisgICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICAsIG1fYXVkaW9Vbml0
UmVuZGVyZXIocmVuZGVyZXIpCit7Cit9CisKK0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6On5BdWRp
b091dHB1dFVuaXRBZGFwdG9yKCkKK3sKKyAgICBpZiAobV9vdXRwdXRVbml0KQorICAgICAgICBB
dWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShtX291dHB1dFVuaXQpOworfQorCitPU1N0YXR1
cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdGFydCgpCit7CisgICAgcmV0dXJuIEF1ZGlvT3V0
cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7Cit9CisKK09TU3RhdHVzIEF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3I6OnN0b3AoKQoreworICAgIHJldHVybiBBdWRpb091dHB1dFVuaXRTdG9wKG1fb3V0
cHV0VW5pdCk7Cit9CisKKy8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCitPU1N0YXR1cyBB
dWRpb091dHB1dFVuaXRBZGFwdG9yOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5p
dFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUlu
dDMyIC8qYnVzTnVtYmVyKi8sIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpCit7CisgICAgYXV0byogYWRhcHRvciA9IHN0YXRpY19jYXN0PEF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IqPih1c2VyRGF0YSk7CisgICAgcmV0dXJuIGFkYXB0b3ItPm1fYXVkaW9Vbml0
UmVuZGVyZXIucmVuZGVyKHRpbWVzdGFtcCwgbnVtYmVyT2ZGcmFtZXMsIGlvRGF0YSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1
dFVuaXRBZGFwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2ZGM2ZTE1ZWZkZjg2MDg0NGU1ZjJl
MjRjOTA3ZTRiZDJlZWIxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisj
aW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEF1ZGlvVW5pdFJlbmRlcmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1Vu
aXRSZW5kZXJlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIE9TU3RhdHVzIHJlbmRlcihjb25z
dCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpID0gMDsKK307CisKK2NsYXNzIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgeworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoQXVkaW9Vbml0
UmVuZGVyZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QXVkaW9PdXRwdXRVbml0QWRhcHRvcigp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1w
bGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBPU1N0YXR1cyBz
dGFydCgpOworICAgIE9TU3RhdHVzIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgT1NT
dGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFn
cyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJl
ck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CisKKyAgICBBdWRpb1VuaXQgbV9v
dXRwdXRVbml0OworICAgIEF1ZGlvVW5pdFJlbmRlcmVyJiBtX2F1ZGlvVW5pdFJlbmRlcmVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rl
c3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ3MzNk
ZTdmNzVkYTlhYjZkMDg3YTIzMWFkOGViOTgxZGM2ODg4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0KLSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCIKLQotI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZU
X0xJTktfRlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1
ZGlvQ29tcG9uZW50RmluZE5leHQsIEF1ZGlvQ29tcG9uZW50LCAoQXVkaW9Db21wb25lbnQgaW5D
b21wb25lbnQsIGNvbnN0IEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gKmluRGVzYyksIChpbkNv
bXBvbmVudCwgaW5EZXNjKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29tcG9uZW50
SW5zdGFuY2VOZXcsIE9TU3RhdHVzLCAoQXVkaW9Db21wb25lbnQgaW5Db21wb25lbnQsIEF1ZGlv
Q29tcG9uZW50SW5zdGFuY2UgKm91dEluc3RhbmNlKSwgKGluQ29tcG9uZW50LCBvdXRJbnN0YW5j
ZSkpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRBZGRQcm9wZXJ0eUxpc3RlbmVy
LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwg
QXVkaW9Vbml0UHJvcGVydHlMaXN0ZW5lclByb2MgaW5Qcm9jLCB2b2lkICppblByb2NVc2VyRGF0
YSksIChpblVuaXQsIGluSUQsIGluUHJvYywgaW5Qcm9jVXNlckRhdGEpKQotU09GVF9MSU5LKEF1
ZGlvVG9vbGJveCwgQXVkaW9Vbml0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGlu
VW5pdCwgQXVkaW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBB
dWRpb1VuaXRFbGVtZW50IGluRWxlbWVudCwgdm9pZCAqb3V0RGF0YSwgVUludDMyICppb0RhdGFT
aXplKSwgKGluVW5pdCwgaW5JRCwgaW5TY29wZSwgaW5FbGVtZW50LCBvdXREYXRhLCBpb0RhdGFT
aXplKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEluaXRpYWxpemUsIE9TU3Rh
dHVzLCAoQXVkaW9Vbml0IGluVW5pdCksIChpblVuaXQpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJv
eCwgQXVkaW9Vbml0U2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwgQXVk
aW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBBdWRpb1VuaXRF
bGVtZW50IGluRWxlbWVudCwgY29uc3Qgdm9pZCAqaW5EYXRhLCBVSW50MzIgaW5EYXRhU2l6ZSks
IChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgaW5EYXRhLCBpbkRhdGFTaXplKSkK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29u
ZmlndXJlKCkKLXsKLSAgICBjb25zdCBpbnQga1ByZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7Ci0K
LSAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0Ci0gICAgQXVkaW9D
b21wb25lbnQgY29tcDsKLSAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7Ci0KLSAg
ICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7Ci0gICAgZGVzYy5j
b21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87Ci0gICAgZGVzYy5j
b21wb25lbnRNYW51ZmFjdHVyZXIgPSBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0FwcGxlOwotICAg
IGRlc2MuY29tcG9uZW50RmxhZ3MgPSAwOwotICAgIGRlc2MuY29tcG9uZW50RmxhZ3NNYXNrID0g
MDsKLSAgICBjb21wID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dCgwLCAmZGVzYyk7Ci0KLSAgICBB
U1NFUlQoY29tcCk7Ci0KLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlTmV3KGNvbXAsICZvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAg
IFVJbnQzMiBmbGFnID0gMTsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRw
dXRVbml0KCksCi0gICAgICAgIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKLSAg
ICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwKLSAgICAgICAgMCwKLSAgICAgICAgJmZsYWcs
Ci0gICAgICAgIHNpemVvZihmbGFnKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgcmVz
dWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVz
dWx0KTsKLSAgICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCi0gICAgQVVSZW5kZXJDYWxsYmFja1N0
cnVjdCBpbnB1dDsKLSAgICBpbnB1dC5pbnB1dFByb2MgPSBpbnB1dFByb2M7Ci0gICAgaW5wdXQu
aW5wdXRQcm9jUmVmQ29uID0gdGhpczsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0
eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1
ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOwotICAgIEFTU0VS
VCghcmVzdWx0KTsKLQotICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0Ci0gICAgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLQotICAgIFVJbnQzMiBzaXplID0gc2l6ZW9m
KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0
UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBr
QXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwot
ICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
bihzdHJlYW1Gb3JtYXQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0
cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2Nv
cGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgQXVkaW9TZXNzaW9u
OjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJlZmVycmVkQnVmZmVy
U2l6ZSk7Ci19Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1
dFVuaXRBZGFwdG9ySU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTk2MzBmYjYwZjIyYjNl
ZTU2ZDI0MmQ3MzA0MzQ4NmI4N2I1NjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwCkBAIC0w
LDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQsIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvU29mdExp
bmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCitTT0ZUX0xJTkso
QXVkaW9Ub29sYm94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1
ZGlvQ29tcG9uZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9u
ICppbkRlc2MpLCAoaW5Db21wb25lbnQsIGluRGVzYykpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94
LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3LCBPU1N0YXR1cywgKEF1ZGlvQ29tcG9uZW50IGlu
Q29tcG9uZW50LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlICpvdXRJbnN0YW5jZSksIChpbkNvbXBv
bmVudCwgb3V0SW5zdGFuY2UpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRk
UHJvcGVydHlMaXN0ZW5lciwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQ
cm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFByb3BlcnR5TGlzdGVuZXJQcm9jIGluUHJvYywgdm9p
ZCAqaW5Qcm9jVXNlckRhdGEpLCAoaW5Vbml0LCBpbklELCBpblByb2MsIGluUHJvY1VzZXJEYXRh
KSkKK1NPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEdldFByb3BlcnR5LCBPU1N0YXR1
cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0
U2NvcGUgaW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIHZvaWQgKm91dERhdGEs
IFVJbnQzMiAqaW9EYXRhU2l6ZSksIChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwg
b3V0RGF0YSwgaW9EYXRhU2l6ZSkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJ
bml0aWFsaXplLCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQpLCAoaW5Vbml0KSkKK1NPRlRf
TElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlv
VW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5T
Y29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIGNvbnN0IHZvaWQgKmluRGF0YSwgVUlu
dDMyIGluRGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1lbnQsIGluRGF0
YSwgaW5EYXRhU2l6ZSkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1
dFVuaXRBZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIGNvbnN0IGludCBrUHJlZmVycmVkQnVm
ZmVyU2l6ZSA9IDI1NjsKKworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1
dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9uZW50RGVzY3Jp
cHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091
dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9SZW1v
dGVJTzsKKyAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFj
dHVyZXJfQXBwbGU7CisgICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7CisgICAgZGVzYy5jb21w
b25lbnRGbGFnc01hc2sgPSAwOworICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KDAs
ICZkZXNjKTsKKworICAgIEFTU0VSVChjb21wKTsKKworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1
ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJU
KCFyZXN1bHQpOworCisgICAgVUludDMyIGZsYWcgPSAxOworICAgIHJlc3VsdCA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwKKyAgICAgICAga0F1ZGlvT3V0cHV0VW5pdFByb3Bl
cnR5X0VuYWJsZUlPLAorICAgICAgICBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LAorICAgICAgICAw
LAorICAgICAgICAmZmxhZywKKyAgICAgICAgc2l6ZW9mKGZsYWcpKTsKKyAgICBBU1NFUlQoIXJl
c3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG1fb3V0cHV0VW5pdCk7
CisgICAgQVNTRVJUKCFyZXN1bHQpOworICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKKyAgICBB
VVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0OworICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0
UHJvYzsKKyAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOworICAgIHJlc3VsdCA9IEF1
ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJl
bmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZpbnB1dCwgc2l6ZW9mKGlu
cHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHN0cmVhbSBmb3JtYXQK
KyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworCisgICAgVUlu
dDMyIHNpemUgPSBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKTsKKyAgICByZXN1
bHQgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0
eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lkKikmc3RyZWFt
Rm9ybWF0LCAmc2l6ZSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgY29uc3RleHByIGlu
dCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0
c1BlckJ5dGUgPSA4OworICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2Ft
cGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFy
UENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05h
dGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFt
Rm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJG
cmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1l
ID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKKyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFu
bmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9V
bml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9y
bWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXpl
b2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOwor
CisgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6
ZShrUHJlZmVycmVkQnVmZmVyU2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3Rp
bmF0aW9uTWFjLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBmOWM5ZmZmNTFm
NDgzYjQ0MDQxYTM3NzFmYjQxODdhN2FlZGE3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgiCi0KLSNpZiBFTkFCTEUo
V0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2lu
Y2x1ZGUgIlZlY3Rvck1hdGguaCIKLSNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpj
b25maWd1cmUoKQotewotICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1dFVu
aXQKLSAgICBBdWRpb0NvbXBvbmVudCBjb21wOwotICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRp
b24gZGVzYzsKLQotICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091dHB1
dDsKLSAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9EZWZhdWx0
T3V0cHV0OwotICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1ZGlvVW5pdE1hbnVm
YWN0dXJlcl9BcHBsZTsKLSAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsKLSAgICBkZXNjLmNv
bXBvbmVudEZsYWdzTWFzayA9IDA7Ci0gICAgY29tcCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQo
MCwgJmRlc2MpOwotCi0gICAgQVNTRVJUKGNvbXApOwotCi0gICAgT1NTdGF0dXMgcmVzdWx0ID0g
QXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmb3V0cHV0VW5pdCgpKTsKLSAgICBBU1NF
UlQoIXJlc3VsdCk7Ci0KLSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVu
aXQoKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHJlbmRlciBjYWxsYmFj
awotICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7Ci0gICAgaW5wdXQuaW5wdXRQcm9j
ID0gaW5wdXRQcm9jOwotICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRoaXM7Ci0gICAgcmVz
dWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVy
dHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZpbnB1dCwg
c2l6ZW9mKGlucHV0KSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHN0cmVh
bSBmb3JtYXQKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0Owot
ICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwotCi0gICAg
cmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJv
cGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3Ry
ZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNT
RVJUKCFyZXN1bHQpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvY2Vzc0J1
c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiBidXMsIFVJbnQzMiBudW1iZXJPZkZyYW1lcykKLXsKLSAg
ICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUuLCBbLTEuMCwgMS4wXSkKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSB7Ci0gICAgICAg
IGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChpKTsKLSAgICAgICAgaWYgKCFjaGFubmVsLT5p
c1NpbGVudCgpKQotICAgICAgICAgICAgVmVjdG9yTWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgp
LCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEoKSwgbnVtYmVyT2ZGcmFtZXMpOwotICAgIH0K
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM4ZWQzZWY3OGM4YzZhM2IxZTA3MGNiNDQwNTk2OWFkYTRhYzNkYTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0
QWRhcHRvck1hYy5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9S
TShNQUMpCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgPENvcmVBdWRpby9BdWRp
b0hhcmR3YXJlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVm
YXVsdE91dHB1dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9u
ZW50RGVzY3JpcHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1Vu
aXRUeXBlX091dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3Vi
VHlwZV9EZWZhdWx0T3V0cHV0OworICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1
ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBsZTsKKyAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsK
KyAgICBkZXNjLmNvbXBvbmVudEZsYWdzTWFzayA9IDA7CisgICAgY29tcCA9IEF1ZGlvQ29tcG9u
ZW50RmluZE5leHQoMCwgJmRlc2MpOworCisgICAgQVNTRVJUKGNvbXApOworCisgICAgT1NTdGF0
dXMgcmVzdWx0ID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmbV9vdXRwdXRVbml0
KTsKKyAgICBBU1NFUlQoIXJlc3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFs
aXplKG1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHJl
bmRlciBjYWxsYmFjaworICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7CisgICAgaW5w
dXQuaW5wdXRQcm9jID0gaW5wdXRQcm9jOworICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRo
aXM7CisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVk
aW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWws
IDAsICZpbnB1dCwgc2l6ZW9mKGlucHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAg
Ly8gU2V0IHN0cmVhbSBmb3JtYXQKKyAgICBjb25zdGV4cHIgaW50IGJ5dGVzUGVyRmxvYXQgPSBz
aXplb2YoRmxvYXQzMik7CisgICAgY29uc3RleHByIGludCBiaXRzUGVyQnl0ZSA9IDg7CisKKyAg
ICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworICAgIHN0cmVhbUZv
cm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQu
bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9y
bWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9y
bWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAx
OworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsK
KyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1Bl
ckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0
LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQs
IDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcAppbmRleCA1YTEyY2RlNGZjZGZjNTdmYWQ0MmI3ZDllOGZlNzMyMDQzNTA5ZDc4
Li41ZDJiYmZjYTRhYjMyYzY5OTgyYjdjMjViYWU3Njg2ZGZmMjM5MmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25D
b2NvYS5jcHAKQEAgLTY4LDEwICs2OCwxMCBAQCB2b2lkIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnRpY2soKQogewogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgc2FtcGxlUmF0
ZSA9IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgPSBtX251bWJlck9mRnJh
bWVzVG9Qcm9jZXNzXSB7CiAgICAgICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJl
YW1Gb3JtYXQ7Ci0gICAgICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1G
b3JtYXQpOworICAgICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9y
bWF0KTsKIAogICAgICAgICBXZWJBdWRpb0J1ZmZlckxpc3Qgd2ViQXVkaW9CdWZmZXJMaXN0IHsg
c3RyZWFtRm9ybWF0LCBudW1iZXJPZkZyYW1lc1RvUHJvY2VzcyB9OwotICAgICAgICBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh0aGlzLCAwLCAwLCAwLCBudW1iZXJPZkZyYW1lc1Rv
UHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CisgICAgICAgIHJlbmRlcigwLCBu
dW1iZXJPZkZyYW1lc1RvUHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCmluZGV4IDI3ZjJhNjk5NmFj
OTQwY2NkODQ3OTM1OTU0ZTZkOTE4NGEzZDMzZDAuLjEyZjc0N2E5N2FlNDIyYWUyZWY5YWRmNTE2
NGQwZGE2MTVkZGFkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcApAQCAtMjks
MTE2ICsyOSwxMjQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVE
SU8pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAi
UmVtb3RlQXVkaW9CdXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0F1ZGlvQnVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1
ZGlvVXRpbGl0aWVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QdXNoUHVsbEZJRk8uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCi1u
YW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJTaGFyZWRS
aW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9PdXRwdXRVbml0QWRh
cHRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRp
b0J1cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgorI2VuZGlmCiAK
LS8vIFRoaXMgRklGTyBzaXplIG1hdGNoZXMgdG8gb25lIGluIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YS5jcHAgYW5kIHdhcyBpbXBvcnRlZCBmcm9tIEJsaW5rLgotY29uc3RleHByIHNpemVfdCBmaWZv
U2l6ZSA9IDk2ICogV2ViQ29yZTo6QXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwor
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4sIHB1YmxpYyBX
ZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2sgeworY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgor
ICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9Vbml0UmVu
ZGVyZXIKKyNlbmRpZgorewogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6
QXVkaW9CdXM7Ci0gICAgdXNpbmcgQXVkaW9EZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb247Ci0gICAgdXNpbmcgU2hhcmVkQnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OwotCiAgICAgc3RhdGljIFJlZjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXRE
ZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJh
dGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24s
IGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbigpCiAgICAgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCkpOwogICAgIH0KIAog
ICAgIHZvaWQgc2NoZWR1bGVHcmFjZWZ1bFNodXRkb3duSWZOZWVkZWQoKQogICAgIHsKLSAgICAg
ICAgaWYgKCFpc1BsYXlpbmcoKSkKKyAgICAgICAgaWYgKCFtX2lzUGxheWluZykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24g
PSB0aGlzOwotICAgICAgICBzdG9wKCk7CiAgICAgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCisgICAgeworICAgICAgICBt
X2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CiAKLSAgICB2b2lkIHN0YXJ0KCkgeyBtX2Rlc3Rp
bmF0aW9uLT5zdGFydCh7IH0pOyB9Ci0gICAgdm9pZCBzdG9wKCkgeyBtX2Rlc3RpbmF0aW9uLT5z
dG9wKCk7IH0KLSAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1fZGVzdGluYXRpb24tPmlz
UGxheWluZygpOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbi0+ZnJhbWVzUGVyQnVmZmVyKCkgOyB9CisgICAgICAgIGlmIChpcGNI
YW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBtX3JpbmdCdWZmZXItPmRlYWxs
b2NhdGUoKTsKKyAgICAgICAgICAgIHN0b3JhZ2UoKS5zZXRSZWFkT25seShmYWxzZSk7CisgICAg
ICAgICAgICBzdG9yYWdlKCkuc2V0U3RvcmFnZShudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogCi1wcml2YXRlOgotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50
MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24p
Ci0gICAgICAgICwgbV9pZChpZGVudGlmaWVyKQotICAgICAgICAsIG1fZGVzdGluYXRpb24oQXVk
aW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKQotICAgICAgICAs
IG1fZmlmbyhudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmaWZvU2l6ZSkKLSAgICB7Ci0gICAgfQor
ICAgICAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBzdG9yYWdlKCku
c2V0U3RvcmFnZShXVEZNb3ZlKG1lbW9yeSkpOworICAgICAgICBzdG9yYWdlKCkuc2V0UmVhZE9u
bHkodHJ1ZSk7CiAKLSAgICB2b2lkIHJlbmRlcihBdWRpb0J1cyosIEF1ZGlvQnVzKiBkZXN0aW5h
dGlvbkJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcywgY29uc3QgV2ViQ29yZTo6QXVkaW9JT1Bv
c2l0aW9uJiBvdXRwdXRQb3NpdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGRlc2NyaXB0
aW9uLCBudW1iZXJPZkZyYW1lcyk7CiAKLSAgICAgICAgaWYgKG1fcHJvdGVjdFRoaXNEdXJpbmdH
cmFjZWZ1bFNodXRkb3duKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2F1ZGlvQnVm
ZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihtX2Rlc2Ny
aXB0aW9uKTsKKyAgICB9CisjZW5kaWYKIAotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgZnJhbWVzVG9Qcm9jZXNz
ID0gbV9maWZvLnB1bGwoZGVzdGluYXRpb25CdXMsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCFmcmFtZXNUb1Byb2Nlc3MpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgdm9pZCBzdGFydCgpCisgICAgeworICAgIH0KIAotICAgICAgICBWZWN0b3I8UmVmPFNoYXJl
ZE1lbW9yeT4+IGJ1ZmZlcnM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXN0
aW5hdGlvbkJ1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8g
bWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Q
cm9jZXNzKTsKLSAgICAgICAgICAgIGJ1ZmZlcnMuYXBwZW5kKCptZW1vcnkpOwotICAgICAgICB9
CisgICAgdm9pZCBzdG9wKCkKKyAgICB7CisgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiBJdCBp
cyB1bmZvcnR1bmF0ZSB3ZSBoYXZlIHRvIGRpc3BhdGNoIHRvIHRoZSBtYWluIHRoZWFkIGhlcmUu
IFdlIHNob3VsZCBiZSBhYmxlIHRvIElQQyBzdHJhaWdodCBmcm9tIHRoZQotICAgICAgICAvLyBy
ZW5kZXIgdGhyZWFkIGJ1dCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgc2VuZFdpdGhBc3luY1Jl
cGx5KCkuCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZnJhbWVzVG9Qcm9jZXNzLCBvdXRwdXRQb3NpdGlvbiwgYnVmZmVycyA9
IFdURk1vdmUoYnVmZmVycyldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBSZW1vdGVBdWRpb0J1
c0RhdGEgYnVzRGF0YSB7IGZyYW1lc1RvUHJvY2Vzcywgb3V0cHV0UG9zaXRpb24sIGJ1ZmZlcnMu
bWFwKFtdKGF1dG8mIG1lbW9yeSkgeyByZXR1cm4gbWVtb3J5LmNvcHlSZWYoKTsgfSkgfTsKLSAg
ICAgICAgICAgIEFTU0VSVChmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICAgICAgbV9jb25uZWN0
aW9uLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6UmVuZGVyQnVmZmVyKGJ1c0RhdGEpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGJ1ZmZlcnMgPSBXVEZNb3ZlKGJ1ZmZlcnMp
LCBmcmFtZXNUb1Byb2Nlc3NdKCkgewotICAgICAgICAgICAgICAgIGF1dG8gYXVkaW9CdXMgPSBB
dWRpb0J1czo6Y3JlYXRlKGJ1ZmZlcnMuc2l6ZSgpLCBmcmFtZXNUb1Byb2Nlc3MsIGZhbHNlKTsK
LSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVycy5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgICAgICAgICAgYXVkaW9CdXMtPnNldENoYW5uZWxNZW1vcnkoaSwg
c3RhdGljX2Nhc3Q8ZmxvYXQqPihidWZmZXJzW2ldLT5kYXRhKCkpLCBmcmFtZXNUb1Byb2Nlc3Mp
OwotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9maWZvTG9jayk7Ci0g
ICAgICAgICAgICAgICAgbV9maWZvLnB1c2goYXVkaW9CdXMuZ2V0KCkpOwotICAgICAgICAgICAg
fSwgbV9pZC50b1VJbnQ2NCgpKTsKLSAgICAgICAgfSk7Citwcml2YXRlOgorICAgIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkKKyAgICAgICAgLy8gOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAgICAg
OiBtX2lkKGlkZW50aWZpZXIpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICwgbV9hdWRp
b091dHB1dFVuaXRBZGFwdG9yKCp0aGlzKQorICAgICAgICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZT4obnVsbHB0cikpKQorI2VuZGlmCisgICAgICAgIC8vICwgbV9jb250ZXh0U2Ft
cGxlUmF0ZShzYW1wbGVSYXRlKQorICAgIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAg
bV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLmNvbmZpZ3VyZShoYXJkd2FyZVNhbXBsZVJhdGUsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworI2VuZGlmCiAgICAgfQogCi0gICAgdm9pZCBpc1BsYXlp
bmdEaWRDaGFuZ2UoKSBvdmVycmlkZQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFNoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlJiBzdG9yYWdlKCkKICAgICB7Ci0gICAgICAgIGlmIChtX3Byb3RlY3RU
aGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93bikgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fZGVzdGluYXRpb24tPmlzUGxheWluZygpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHJlZkNvdW50KCkgPT0gMSk7Ci0gICAgICAgICAgICBtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2Vm
dWxTaHV0ZG93biA9IG51bGxwdHI7IC8vIERlbGV0ZXMgInRoaXMiLgotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaXNQbGF5aW5nID0gbV9kZXN0aW5hdGlvbi0+aXNQbGF5
aW5nKCksIGlkZW50aWZpZXIgPSBtX2lkLnRvVUludDY0KCldIHsKLSAgICAgICAgICAgIG1fY29u
bmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpEaWRDaGFuZ2VJc1BsYXlpbmcoaXNQbGF5aW5nKSwgaWRlbnRpZmllcik7Ci0gICAg
ICAgIH0pOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2UmPihtX3JpbmdCdWZmZXItPnN0b3JhZ2UoKSk7CisgICAgfQorICAgIAorICAgIE9TU3RhdHVz
IHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiwgQXVkaW9CdWZmZXJMaXN0KikK
KyAgICAvLyBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwg
VUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKKyAgICB7Cisg
ICAgICAgIC8qCisgICAgICAgIHNlbmRBc3ljaFdpdGhSZXBseSB7CisgICAgICAgICAgICBtX3Jp
bmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Cisg
ICAgICAgICAgICBtX2F1ZGlvQnVmZmVyTGlzdC0+c2V0U2FtcGxlQ291bnQobnVtYmVyT2ZGcmFt
ZXMpOworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChtX2F1ZGlvQnVmZmVyTGlzdC0+
bGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7CisgICAgICAgIH0qLwor
ICAgICAgICByZXR1cm4gbm9FcnI7CiAgICAgfQorI2VuZGlmCiAKLSAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CisgICAgLy8gR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
IG1faWQ7Ci0gICAgUmVmUHRyPEF1ZGlvRGVzdGluYXRpb24+IG1fZGVzdGluYXRpb247CiAgICAg
UmVmUHRyPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+IG1fcHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1
bFNodXRkb3duOwotICAgIExvY2sgbV9maWZvTG9jazsKLSAgICBXZWJDb3JlOjpQdXNoUHVsbEZJ
Rk8gbV9maWZvOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2ViQ29yZTo6QXVkaW9PdXRw
dXRVbml0QWRhcHRvciBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I7CisKKyAgICBXZWJDb3JlOjpD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9kZXNjcmlwdGlvbjsKKyAgICBVbmlxdWVSZWY8V2Vi
Q29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CisjZW5kaWYKKyAg
ICAKKyAgICAvLyBmbG9hdCBtX2NvbnRleHRTYW1wbGVSYXRlOworICAgIGJvb2wgbV9pc1BsYXlp
bmcgeyBmYWxzZSB9OwogfTsKIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24pCkBAIC0xNDgsMTQgKzE1NiwxMyBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUAogCiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3Qg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBm
bG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsCisgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0g
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBmcmFtZXNQZXJCdWZmZXIgPSBk
ZXN0aW5hdGlvbi0+ZnJhbWVzUGVyQnVmZmVyKCk7CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IFJl
bW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IG5ld0lELCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CiAgICAgbV9hdWRp
b0Rlc3RpbmF0aW9ucy5hZGQobmV3SUQsIFdURk1vdmUoZGVzdGluYXRpb24pKTsKLSAgICBjb21w
bGV0aW9uSGFuZGxlcihuZXdJRCwgZnJhbWVzUGVyQnVmZmVyKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihuZXdJRCk7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRl
bGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMTcxLDcgKzE3OCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0
YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCiAgICAgYm9vbCBpc1Bs
YXlpbmcgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVkaW9EZXN0aW5hdGlvbnMu
Z2V0KGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGl0ZW0tPnN0YXJ0KCk7Ci0gICAgICAgIGlzUGxh
eWluZyA9IGl0ZW0tPmlzUGxheWluZygpOworICAgICAgICAvLyBpc1BsYXlpbmcgPSBpdGVtLT5p
c1BsYXlpbmcoKTsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQbGF5aW5nKTsKIH0K
QEAgLTE4MSwxMSArMTg4LDE5IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JCiAgICAgYm9vbCBp
c1BsYXlpbmcgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVkaW9EZXN0aW5hdGlv
bnMuZ2V0KGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGl0ZW0tPnN0b3AoKTsKLSAgICAgICAgaXNQ
bGF5aW5nID0gaXRlbS0+aXNQbGF5aW5nKCk7CisgICAgICAgIC8vIGlzUGxheWluZyA9IGl0ZW0t
PmlzUGxheWluZygpOwogICAgIH0KICAgICBjb21wbGV0aW9uSGFuZGxlcihpc1BsYXlpbmcpOwog
fQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjphdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFu
ZGxlLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVk
aW9EZXN0aW5hdGlvbnMuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICBpdGVtLT5hdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZChpcGNIYW5kbGUsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5oCmluZGV4IDExYjRiZWYxMDQxYjdhMDhhZjNiMWIwOWRlMzg0YzAzZDU4OTNkMWUuLjI2NTFl
ZmFjODMwNTJkNWVlM2MzMzViMGQ3MDcyZDU4ZjQ2MGI1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpA
QCAtNDYsMjUgKzUwLDI1IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgflJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3Qg
U3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVp
bnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVk
IGZyYW1lc1BlckJ1ZmZlcik+JiYpOwotICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2Rl
cikKLSAgICB7Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKLSAgICB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9t
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwogCisgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0
cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50
MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJk
d2FyZVNhbXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
c3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOworI2Vu
ZGlmCisKICAgICBIYXNoTWFwPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBSZWY8
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4+IG1fYXVkaW9EZXN0aW5hdGlvbnM7CiAgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogfTsKIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdDsKIAogI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBiYzA1YWUxMTc5YWEyYWQz
NGUzMzM4NTMyYmVkYjVlNmI0ZDQyM2EwLi4yYmM5ZWRjNzFiOTRlODY3OWNjMjBiNjJkODFhOTMy
Y2UzMTU1YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0yNCwxNCArMjQsMTQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJfQVVESU8pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
IE5vdFJlZkNvdW50ZWQgewotCi0gICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5w
dXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSAtPiAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBmcmFtZXNQZXJC
dWZmZXIpIFN5bmNocm9ub3VzCi0KKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgQXN5bmMK
IAogICAgIFN0YXJ0QXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWluZykgU3luY2hyb25vdXMK
ICAgICBTdG9wQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWluZykgU3luY2hyb25vdXMKLQor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktp
dDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQorI2Vu
ZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOTU1ZGU5MWRjY2EwMjUzODI4YzEwZWE1ZDgzYTY0ZGU5NjUyMjAw
Mi4uZDQyMjRjNmViODkyNTE4ZWFmYmM4ZmM3Yjc0ZTI3NjVhNDI1MWMwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDMwLDcgKzE0
MzAsNiBAQAogCQk5QjU0OTlCMjIzNjJBN0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlv
bkV4Y2x1c2lvblJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCNTQ5OUIwMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRXhj
bHVzaW9uUnVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTlCNUJFQzI2MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyNDI0MDBG
NEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oICovOyB9OwogCQk5QjVCRUMyQTI0MDEw
MTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyODI0MDEwMTU4MDA3MEM2
RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi87IH07Ci0JCTlCNUJFQzMxMjQw
MTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBDb3B5RmlsZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8q
IFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovOyB9OwogCQk5RUM1MzJBMzI0NDdGQkFEMDAyMTUyMTYg
LyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5RUM1MzJBMjI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRpb25J
ZGVudGlmaWVyLmggKi87IH07CiAJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRl
eHRQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMDJBNzA4
MUVDMEVFRTkwMEQ4MUQ4MiAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdp
bi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTVFMzk0OTFENUJEOEE3MDBCNEI3Q0UgLyogY29tLm1hY3JvbWVk
aWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgKi87IH07CkBAIC0yMTM5LDcgKzIxMzgsNiBA
QAogCQkJCTJEQjk2MDUzMjM5ODg2QzEwMDEwMjc5MSAvKiBjb20uYXBwbGUuV2ViS2l0LkdQVS5z
YiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREIxOTNBQzlGODAwNUVDQzI1IC8qIGNvbS5h
cHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREMx
OTNBQzlGQjAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYiBpbiBDb3B5
RmlsZXMgKi8sCi0JCQkJOUI1QkVDMzEyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVz
RGF0YS5oIGluIENvcHlGaWxlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ1NDAsNyArNDUzOCw2IEBACiAJCTlCNUJFQzI4
MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCNUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1QkVDMkUyNDAxMDE4
QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTlCNUJFQzMwMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1
c0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9CdXNEYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCQzU5RDZDMUVGQ0NDQjYwMDFFOEQwOSAvKiBDYWxsYmFja0lE
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrSUQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNTlENkQxRUZDREM2RDAwMUU4RDA5IC8qIE9wdGlv
bmFsQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25h
bENhbGxiYWNrSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUVDNTMyQTIyNDQ3
RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
ZW9sb2NhdGlvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1
NTUsNyArNTU1Miw2IEBACiAJCQkJMDc5MjMxMzEyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8q
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3QjFEMDRCMjNEMzhGQ0UwMDM5
OUE2RSAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCi0JCQkJOUI1
QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovLAogCQkJCTlC
NUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3Bw
ICovLAogCQkJCTlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuaCAqLywKIAkJCQk5QjVCRUMyRTI0MDEwMThDMDA3MEM2RUYgLyogUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYzJmMGM2NjA2OTZhZTM0ODYxYzBiMjQ4MGFkMDU3ZmVh
MTk2MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaAorKysg
L2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBSZW1vdGVBdWRpb0J1
c0RhdGEgewotICAgIHVpbnQ2NF90IGZyYW1lc1RvUHJvY2VzcyB7IDAgfTsKLSAgICBXZWJDb3Jl
OjpBdWRpb0lPUG9zaXRpb24gb3V0cHV0UG9zaXRpb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRN
ZW1vcnk+PiBjaGFubmVsQnVmZmVyczsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
Ci0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IGVuY29kZXIgPDwgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBlbmNvZGVyIDw8IG91dHB1dFBv
c2l0aW9uOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjaGFubmVs
QnVmZmVycy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYW5uZWxC
dWZmZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGU7Ci0gICAgICAgICAgICBjaGFubmVsQnVmZmVyc1tpXS0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwotICAgICAgICAgICAgZW5j
b2RlciA8PCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgY2hhbm5l
bEJ1ZmZlcnNbaV0tPnNpemUoKSB9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgRGVjb2Rlcj4KLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFJlbW90ZUF1ZGlvQnVzRGF0YSYgcmVzdWx0KQotICAgIHsK
LSAgICAgICAgdWludDY0X3QgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGZyYW1lc1RvUHJvY2VzcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHJlc3VsdC5mcmFtZXNUb1Byb2Nlc3MgPSBmcmFtZXNUb1Byb2Nlc3M7Ci0KLSAgICAgICAg
V2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91dHB1dFBvc2l0aW9uOwotICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKG91dHB1dFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmVzdWx0Lm91dHB1dFBvc2l0aW9uID0gb3V0cHV0UG9zaXRpb247Ci0KLSAgICAg
ICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlw
Y0hhbmRsZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXV0byBtZW1vcnkg
PSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRXcml0ZSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxCdWZmZXJz
LmFwcGVuZChtZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDg0MDRjNDhlMWMyZTQ4MmFiY2QyNGU1
NWQyY2M5MTNiZDI2N2U3NDEuLmNjZDhlMWUyOWJhOGQyNzQ5NDI2NWU4M2Q2YWIwMjEyZWQyZDUz
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTM5LDcgKzM5LDkg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6QXVk
aW9CdXM7CisvLyBBbGxvY2F0ZSBhIHJpbmcgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBjb250YWlu
IDIgc2Vjb25kcyBvZiBhdWRpby4KK2NvbnN0ZXhwciBzaXplX3QgcmluZ0J1ZmZlclNpemVJblNl
Y29uZCA9IDI7CisKIHVzaW5nIEF1ZGlvRGVzdGluYXRpb24gPSBXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uOwogdXNpbmcgQXVkaW9JT0NhbGxiYWNrID0gV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNr
OwogCkBAIC01MCwxNiArNTIsMTUgQEAgUmVmPEF1ZGlvRGVzdGluYXRpb24+IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGIKIH0KIAogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkoQXVk
aW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1bnNp
Z25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQotICAgICwg
bV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCisgICAgOiBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9u
Q29jb2EoY2FsbGJhY2ssIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpCisgICAg
LCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZTxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KG1ha2VVbmlx
dWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KHRoaXMpKSkKIHsKICAgICBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllciBkZXN0aW5hdGlvbklEOwotICAgIHVuc2lnbmVkIGZyYW1l
c1BlckJ1ZmZlciB7IDAgfTsKIAogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24u
Y29ubmVjdGlvbigpLnNlbmRTeW5jKAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oaW5wdXREZXZpY2VJZCwgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSwK
LSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVB
dWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklELCBmcmFtZXNQZXJCdWZmZXIpLCAw
KTsKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKCkp
LAorICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0
ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQpLCAwKTsKIAogICAgIGF1dG8g
b2ZmVGhyZWFkUmVuZGVyaW5nID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgd2hpbGUgKCFtX3RocmVhZFRhc2tRdWV1ZS5pc0tpbGxl
ZCgpKSB7CkBAIC03Miw3ICs3MywxMSBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYQogICAgIGNv
bm5lY3Rpb24uY29ubmVjdGlvbigpLmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMs
IGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CiAKICAgICBtX2Rlc3RpbmF0aW9uSUQgPSBkZXN0
aW5hdGlvbklEOwotICAgIG1fZnJhbWVzUGVyQnVmZmVyID0gZnJhbWVzUGVyQnVmZmVyOworCisg
ICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKyAgICBtX251bWJlck9mRnJh
bWVzID0gaGFyZHdhcmVTYW1wbGVSYXRlKCkgKiByaW5nQnVmZmVyU2l6ZUluU2Vjb25kOworICAg
IG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoc3RyZWFtRm9ybWF0LCBtX251bWJlck9mRnJhbWVzKTsK
IH0KIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+UmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5KCkKQEAgLTEwNSwxNyArMTEwLDEyIEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpzdG9wKCkKICAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQgPSBudWxscHRyOwog
fQogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVuZGVyQnVmZmVyKGNvbnN0
IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhJiBhdWRpb0J1c0RhdGEsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5OjpyZXF1ZXN0QnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVkaWFUaW1l
LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KT4mJiAvKmNvbXBsZXRpb25IYW5kbGVyKi8p
CiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKGF1ZGlvQnVzRGF0
YS5mcmFtZXNUb1Byb2Nlc3MpOwotICAgIEFTU0VSVChhdWRpb0J1c0RhdGEuY2hhbm5lbEJ1ZmZl
cnMuc2l6ZSgpKTsKLSAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShhdWRpb0J1
c0RhdGEuY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpLCBhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNz
LCBmYWxzZSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF1ZGlvQnVzRGF0YS5jaGFu
bmVsQnVmZmVycy5zaXplKCk7ICsraSkKLSAgICAgICAgYXVkaW9CdXMtPnNldENoYW5uZWxNZW1v
cnkoaSwgKGZsb2F0KilhdWRpb0J1c0RhdGEuY2hhbm5lbEJ1ZmZlcnNbaV0tPmRhdGEoKSwgYXVk
aW9CdXNEYXRhLmZyYW1lc1RvUHJvY2Vzcyk7Ci0KLSAgICBtX2NhbGxiYWNrLnJlbmRlcigwLCBh
dWRpb0J1cy5nZXQoKSwgYXVkaW9CdXNEYXRhLmZyYW1lc1RvUHJvY2VzcywgYXVkaW9CdXNEYXRh
Lm91dHB1dFBvc2l0aW9uKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIAorICAgIC8v
IEZldGNoIGJ1ZmZlciBhbmQgbGV0IEdQVSBwcm9jZXNzIGtub3cgdGhlIGJ1ZmZlciBpcyBhdmFp
bGFibGUKKyAgICAvLyBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQpAQCAt
MTMzLDYgKzEzMywyNiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlzcGF0
Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKICAgICBtX3RocmVhZFRhc2tRdWV1
ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2UpCit7CisgICAgU2hh
cmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIGlmIChzdG9yYWdlKQorICAgICAgICBzdG9y
YWdlLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKKworICAgIC8vIEZJWE1FOiBTZW5kIHRoZSBhY3R1YWwgZGF0YSBzaXplIHdpdGggSVBD
SGFuZGxlLgorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICB1aW50NjRfdCBkYXRh
U2l6ZSA9IGhhbmRsZS5zaXplKCk7CisjZWxzZQorICAgIHVpbnQ2NF90IGRhdGFTaXplID0gMDsK
KyNlbmRpZgorCisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsK
KyAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKyAgICBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0
KTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjpBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCB7IG1fZGVzdGluYXRpb25JRCwgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIHN0cmVh
bUZvcm1hdCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fbnVtYmVyT2ZGcmFtZXMpIH0sIDApOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCmlu
ZGV4IGM0YWRiNzU2MGQ0NjM3NThlZTcxNTZmMDFlZWM5OTU4ZDNjZmRlNjYuLjdhYmM1ZjEwMDFh
OTIzMDAyMmYxNjMyYjA4MGZkOGQ0YzAyNWEzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuaApAQCAtMjgsMjQgKzI4LDMzIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlJl
bW90ZUF1ZGlvQnVzRGF0YS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxs
YmFjay5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CisjaW5jbHVkZSA8d3Rm
L01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmlu
Z0J1ZmZlci5oPgorI2Vsc2UKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4K
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5IDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBJUEM6
OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IHB1YmxpYyBXZWJDb3Jl
OjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EKKyAgICAsIHB1YmxpYyBTaGFyZWRSaW5nQnVmZmVyU3Rv
cmFnZTo6Q2xpZW50CisjZWxzZQorICAgIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b24KKyNlbmRpZgorICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJl
Y2VpdmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkpOwogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6QXVkaW9CdXM7
CiAgICAgdXNpbmcgQXVkaW9JT0NhbGxiYWNrID0gV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNrOwog
ICAgIHVzaW5nIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OnJlZjsKICAgICB1c2luZyBXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpkZXJlZjsKQEAgLTU3LDE2ICs2NiwxOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KIAotICAgIHZvaWQgcmVuZGVyQnVmZmVyKGNvbnN0
IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHJlcXVlc3RCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZWRpYVRp
bWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRf
dCBlbmRGcmFtZSk+JiYpOwogICAgIHZvaWQgZGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5
aW5nKTsKIAogcHJpdmF0ZToKLSAgICAvLyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uCi0gICAg
dm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hU
b1JlbmRlclRocmVhZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzUGxheWluZzsgfQotICAgIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0K
LSAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2ZyYW1lc1BlckJ1ZmZlcjsgfQorICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlv
bjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpIGZpbmFsOworICAgIHZvaWQg
c3RvcCgpIGZpbmFsOworICAgIGJvb2wgaXNQbGF5aW5nKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIC8vIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdl
OjpDbGllbnQKKyAgICB2b2lkIHN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSopOworI2VuZGlm
CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC03NiwxMSArODcs
MTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZk1lc3NhZ2VSZWNlaXZlcigpIGZpbmFsIHsgV2Vi
Q29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmTWVzc2FnZVJl
Y2VpdmVyKCkgZmluYWwgeyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpkZXJlZigpOyB9CiAK
LSAgICBBdWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7Ci0gICAgZmxvYXQgbV9zYW1wbGVSYXRl
IHsgMC4gfTsKLSAgICB1bnNpZ25lZCBtX2ZyYW1lc1BlckJ1ZmZlciB7IDAgfTsKICAgICBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBtX2Rlc3RpbmF0aW9uSUQ7CiAgICAgYm9vbCBt
X2lzUGxheWluZyB7IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgaW50NjRf
dCBtX251bWJlck9mRnJhbWVzIHsgMCB9OworI2VuZGlmCisKICAgICBGdW5jdGlvbjx2b2lkKEZ1
bmN0aW9uPHZvaWQoKT4mJik+IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZDsKICAgICBSZWZQdHI8
VGhyZWFkPiBtX3JlbmRlclRocmVhZDsKICAgICBDcm9zc1RocmVhZFF1ZXVlPEZ1bmN0aW9uPHZv
aWQoKT4+IG1fdGhyZWFkVGFza1F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCBhZTFmYzcwNjk4NzE0Yzg3MDVlNTgyNDgxOTQ2NWJh
YjMyNjNmMDYxLi5iYWE4ZWJkZjllNTIzZTliMGUwZTQ0YWRjOGI1Nzg1ZWYwODg3NzRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQs
MTAgKzI0LDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8p
CiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBOb3RSZWZDb3VudGVk
IHsKLQotICAgIFJlbmRlckJ1ZmZlcihzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVBdWRpb0J1c0RhdGEg
ZGF0YSkgLT4gKCkgQXN5bmMKKyAgICByZXF1ZXN0QnVmZmVyKCkgLT4gKE1lZGlhVGltZSB0aW1l
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgdWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3Qg
ZW5kRnJhbWUpIEFzeW5jCiAgICAgRGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQot
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCmlu
ZGV4IDg3OTlmMTk4NDcxNDExZWM2ZjczOWEzODc5MzY0ZDI0NzUxMmVhNDQuLjJlMGE2YjFmODM5
MzJhZTgzMzVkZjRlYWE0ZWI1MzVmODU4NzEyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6cHVzaFNhbXBsZXMoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBX
ZWIKIAogICAgICAgICAvLyBBbGxvY2F0ZSBhIHJpbmcgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBj
b250YWluIDIgc2Vjb25kcyBvZiBhdWRpby4KICAgICAgICAgbV9udW1iZXJPZkZyYW1lcyA9IG1f
ZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMjsKLSAgICAgICAgbV9yaW5nQnVmZmVyLT5hbGxv
Y2F0ZShtX2Rlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbnVtYmVyT2ZGcmFtZXMp
OworICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKG1fZGVzY3JpcHRpb24sIG1fbnVtYmVy
T2ZGcmFtZXMpOwogICAgIH0KIAogICAgIEFTU0VSVChpczxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZl
ckxpc3Q+KGF1ZGlvRGF0YSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411405</attachid>
            <date>2020-10-14 21:45:39 -0700</date>
            <delta_ts>2020-10-14 22:10:37 -0700</delta_ts>
            <desc>WIP patch v6</desc>
            <filename>bug-217715-20201014214539.patch</filename>
            <type>text/plain</type>
            <size>88414</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ3MWFlZjc3YmQ4NmZl
MTBkMmJjMDQ4NWE5OWUzZGQ3ZTI0NTkxZS4uOGJlYjM3Mzc4MDczMmExMDQ3NmRlZDRmMmNmMTA2
MjI2MGQ5Y2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9j
ZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8g
ZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6aW5wdXRQcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRV
bml0QWRhcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRv
cklPUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2spOgorCiAyMDIwLTEwLTE0ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFZlY3Rvck1hdGg6Om11
bHRpcGx5VGhlbkFkZFNjYWxhcigpIGZvciBjbGFyaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkYjZjMTc4OGNi
ZmJhYjEzMGQyZWIzMDVkYTc1ZTI5YmI4ZGExNDcuLmI0OGI4NzIyZWIyNjE3NjdmYjEyMjhiZmNm
ZWM1MDk0ZmRmM2FhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMTAtMTQgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWEgaW4gR1BVIFBy
b2Nlc3NdIFVzZSBDQVJpbmdCdWZmZXIgdG8gdHJhbnNmZXIgYXVkaW8gZGF0YSBvZiBhbiBhdWRp
byBkZXN0aW5hdGlvbiBmcm9tIGEgd2ViIHByb2Nlc3MgdG8gdGhlIEdQVSBQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93bklm
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6YXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246
OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnJl
bmRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b246OmlzUGxheWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OmZyYW1lc1BlckJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9CdXNEYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3Jh
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpyZW5kZXJCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6cHVzaFNh
bXBsZXMpOgorCiAyMDIwLTEwLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBub24tQ29jb2EgcGxhdGZvcm1zICYg
cmVsZWFzZSBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggYzU2NzBjMzY0ODU3NWU4ODBlYjY4NWUw
YTNhMTM1YzI5MjQzNzViYi4uZTMyMjM3MjNkNzc4ZmVlMTNmNDcyYzRkMjExMGVjOTM2YjgwZmFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
QXVkaW9EZXN0aW5hdGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfkF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCi0gICAgLy8gQXVkaW9Ob2RlICAgCisgICAgLy8g
QXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCkgb3ZlcnJpZGUgeyB9OyAvLyB3ZSdy
ZSBwdWxsZWQgYnkgaGFyZHdhcmUgc28gdGhpcyBpcyBuZXZlciBjYWxsZWQKICAgICAKICAgICAv
LyBUaGUgYXVkaW8gaGFyZHdhcmUgY2FsbHMgcmVuZGVyKCkgdG8gZ2V0IHRoZSBuZXh0IHJlbmRl
ciBxdWFudHVtIG9mIGF1ZGlvIGludG8gZGVzdGluYXRpb25CdXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCBmOTU5ZTM5ODI5NjYwNTA5MDNhYWM4NWI4YWYyNDJkYTE1NDM0YTg5Li41OTI2
NjA2Mzg5OGY0MTM2YTliZjU1YzI2ODkxYTU2YmJhMzE2ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTIwMywxOSArMjAzLDIwIEBAIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQogcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNw
cAorcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAKIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVm
ZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCi1wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9C
dXNNYWMubW0KLXBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
SGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25N
YWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3YjUzM2VmNmM1ZjQ0Y2RiODdkYmI4MTIxMTc4OTVjMGNkYzMxZWUzLi42ODYw
ODBjYzExZGZiNTAxZmZkNjNmNTJlYjQxYThiNDJhNmUxYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzMsNiArNjMzLDcg
QEAKIAkJMURBQjMxMTIyNTFENkJGMzAwRkM5NDg1IC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEIzMUEx
MjM3OURDODMwMDg4M0ZERSAvKiBXZWJWaWRlb0NvbnRhaW5lckxheWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMURBQjMxMTQyNTFENzI1QzAw
RkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxREFCMzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXll
ck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxREFCMzExNTI1MUQ3NERCMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RTFD
NTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMURCNjZEM0IyNTM3QTk1NjAwQjY3
MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFERDNCNEM2
MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0
QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkxREY3RTgxRjI1MUE5RTA2
MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00MTI3LDcgKzQxMjgsNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2
MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MDFFMjNG
QTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgKi87IH07CiAJCUNEMDYzRjgzMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MTFFMjNGQTg5MDA4MTJCRTMgLyogSW5p
dERhdGFSZWdpc3RyeS5oICovOyB9OwotCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHAgKi87IH07CisJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVu
aXRBZGFwdG9ySU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9y
SU9TLmNwcCAqLzsgfTsKIAkJQ0QxMUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8q
IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRDE3QTQ1RDIxMzc0MDgxMDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxN0E0NTky
MTM3NDAxNjAwNzlFQzdCIC8qIFVuaWZpZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKQEAgLTUzMDQs
NyArNTMwNSw2IEBACiAJCUZEMzE2MEFCMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2
ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQzMTYwNzUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggKi87IH07
CiAJCUZEMzE2MEFEMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzcxMkIwMjZG
NzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggKi87IH07CiAJCUZEMzE2MEFGMTJCMDI2
RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5o
ICovOyB9OwotCQlGRDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYw
QjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLzsgfTsKIAkJRkQz
MTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFB
MzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBF
MUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDM1OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJh
bVRpbWVsaW5lLmggKi87IH07CiAJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0Yx
NzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY3NTQsNiArNjc1NCw4IEBACiAJCTFEMDAyNkE5MjM3NEY5
RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2
QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBQjMxMTMy
NTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZp
ZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEQjY2RDM3
MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMURCNjZEMzgyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJl
SW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZU9ic2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZEMjExQkExMkEwMDRC
NzgwRSAvKiBOYXZpZ2F0b3JTaGFyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdh
dG9yU2hhcmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRjIxMUJB
ODQxMDA0Qjc4MEUgLyogU2hhcmVEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFy
ZURhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyOTQsOCArMTQyOTYs
NyBAQAogCQlDRDA2M0Y4MDFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0RGF0YVJlZ2lzdHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwNjNGODExRTIzRkE4OTAwODEyQkUz
IC8qIEluaXREYXRhUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5pdERhdGFSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBDOEI1
ODIxNDFDOENBMDA2MkY1OUQgLyogTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFw
dG9ySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxMUIzREYyMjdDQUFB
OTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3
REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1NjAsOCArMTY1NjEsNyBAQAogCQlGRDMxNjA3
ODEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWZWN0b3JNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkQzMTYwNzkxMkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb0J1c01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1
ZGlvRGVzdGluYXRpb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25NYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZEMzE2MEI4MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQjkxMkIwMjcyQTAw
QzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkQzMTYwQkExMkIwMjcyQTAwQzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZGVEZyYW1lTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI3Mjk2LDEwICsyNzI5Niw5IEBACiAJCUNEMEVFRTBEMTQ3NDNF
NDgwMDNFQUZBMiAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcCAqLywKLQkJCQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlv
bklPUy5oICovLAogCQkJCUNENTU5NjhGMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFk
ZXJJT1MuY3BwICovLAogCQkJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVS
ZWFkZXJJT1MuaCAqLywKKwkJCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRw
dXRVbml0QWRhcHRvcklPUy5jcHAgKi8sCiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8q
IEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywKIAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4
IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSAqLywKQEAgLTI3MzY0LDYgKzI3MzYzLDggQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTQxMzE1MTg0MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwICovLAogCQkJCTQxMzE1MTg2MjM1Nzc0NUUwMDExNUU2RSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCAqLywKKwkJCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgKi8sCisJCQkJMURCNjZEMzcyNTM2NzhFQTAw
QjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCAqLywKIAkJCQkwNzNCODc2MjFFNDM4
NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcCAqLywKIAkJCQkwNzNCODc2
MzFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggKi8sCiAJCQkJMDcz
Qjg3NjUxRTQzODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oICovLApAQCAt
MzAyNzUsMTIgKzMwMjc2LDExIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAqLywKLQkJ
CQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8s
Ci0JCQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAq
LywKIAkJCQlGRDMxNjBCODEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCOTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFj
LmggKi8sCiAJCQkJQ0QyRjRBMjUxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lck1hYy5jcHAgKi8sCiAJCQkJQ0QyRjRBMjYxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFy
ZHdhcmVMaXN0ZW5lck1hYy5oICovLAorCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBB
dWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1
RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMx
QTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8sCiAJCQkpOwpAQCAtMzA1NjEsNyArMzA1NjEsNiBA
QAogCQkJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGlu
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovLAotCQkJCUZEMzE2MEJEMTJCMDI3
MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAwODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDgwMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNTc3LDYgKzMwNTc2LDcgQEAK
IAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU3MTQ2N0IzMjRBQkFFRjIwMEZCMkY1MCAvKiBBdWRpb05vZGVPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9O
b2RlT3V0cHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxREI2NkQzQjI1MzdBOTU2MDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUQx
MkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzU2
OTlFMjUyQ0YzNjIwMEUxQjk1NiAvKiBBdWRpb1BhcmFtRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNCOTg3MEMyNTIyNUY4MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1NYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzA2NTQsNyArMzA2NTQsNiBAQAogCQkJCTUxNzQxRDBGMEIwNzI1OUEw
MEVENDQyQyAvKiBCYWNrRm9yd2FyZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOEM4
MUUxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBMUI4N0QyMDg3QzRDMDAwOTc5QTc1IC8qIEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOTQ3MjE3MjUzMjNDMjEwMEYxNTNDOCAvKiBC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMjRFRTgwQzI2
NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2MEJCNjE2MUQw
QTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
MTk4RkJGMjRBMTYwREQwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAq
LywKQEAgLTM1MjM5LDggKzM1MjM4LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCUE5Nzg3Q0I0MUY1
RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzFGN0I3MzEyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAx
RDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMEVF
RTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25J
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2NDMgLyogQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREUzQTg1NzE3
RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9u
LmgKaW5kZXggMTYwYzY1NzhlMTVlZDVlYTc1MjVkYzc2OGJkNGVmM2ZkYzc0ZjRmZi4uNDE5NjU1
MmQ5MTVhODliNGEwNWY4NDc2NGQ1ZmVhYzA1NjYyNDk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4gaW4gQXVk
aW9EZXN0aW5hdGlvbiB0byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUKICAgICB2aXJ0dWFsIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7Ci0gICAgc3RhdGljIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUoKTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Qg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCAxZDBmNGUyODgxMTg3ZTdiMzUw
MjkwYjAyMzNjYjhiMGMyMWFmNGU2Li4yYzk3MWVhN2U2MzdhNTg1ZGY4NjY1OGMxNGEzMzdmODYw
OGFlNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTM1LDYgKzM1LDEwIEBACiAj
aW5jbHVkZSAiTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgiCiAjaW5jbHVkZSAiUHVzaFB1bGxGSUZP
LmgiCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3RleHByIHNpemVfdCBmaWZvU2l6ZSA9IDk2
ICogQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwpAQCAtNTYsNyArNjAsNiBAQCBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGNvbnN0CiAgICAgICAgIHJldHVybiBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OmNyZWF0ZU92ZXJyaWRlKGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIAogICAgIGF1dG8gZGVz
dGluYXRpb24gPSBhZG9wdFJlZigqbmV3IEF1ZGlvRGVzdGluYXRpb25Db2NvYShjYWxsYmFjaywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOwotICAgIGRlc3RpbmF0aW9uLT5j
b25maWd1cmUoKTsKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKQEAgLTcxLDE0ICs3NCwx
NCBAQCB1bnNpZ25lZCBsb25nIEF1ZGlvRGVzdGluYXRpb246Om1heENoYW5uZWxDb3VudCgpCiB9
CiAKIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUpCi0gICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICA6IG1fYXVkaW9PdXRwdXRV
bml0QWRhcHRvcigqdGhpcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX291
dHB1dEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1ZGlvVXRp
bGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxsKCkpCiAgICAg
LCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1
ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSkucmVsZWFzZU5vbk51bGwoKSkKICAgICAs
IG1fZmlmbyhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4obnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmlmb1NpemUpKQogICAgICwgbV9jb250ZXh0U2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogewot
ICAgIGNvbmZpZ3VyZSgpOworICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUo
aGFyZHdhcmVTYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgYXV0
byBoYXJkd2FyZVNhbXBsZVJhdGUgPSB0aGlzLT5oYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBp
ZiAoc2FtcGxlUmF0ZSAhPSBoYXJkd2FyZVNhbXBsZVJhdGUpIHsKQEAgLTg3LDExICs5MCw3IEBA
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkCiAgICAgfQogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKQotewotICAgIGlmIChtX291dHB1dFVuaXQpCi0g
ICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Ci19CitB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKSA9IGRlZmF1bHQ7
CiAKIHVuc2lnbmVkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6bnVtYmVyT2ZPdXRwdXRDaGFubmVs
cygpIGNvbnN0CiB7CkBAIC0xMDcsNyArMTA2LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFQK
IHsKICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAg
bV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFk
KTsKLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVu
aXQpOworICAgIE9TU3RhdHVzIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFy
dCgpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHNldElzUGxheWluZyh0cnVlKTsKQEAg
LTExNiw3ICsxMTUsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rp
b248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVAogdm9pZCBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25D
b2NvYTo6c3RvcCIpOwotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3Ao
bV9vdXRwdXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFk
YXB0b3Iuc3RvcCgpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAK
ICAgICBpZiAoIXJlc3VsdCkKQEAgLTEzMyw3ICsxMzIsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2suaXNQ
bGF5aW5nRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBz
dHJlYW1Gb3JtYXQpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Z2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0
KQogewogICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwogICAg
IGNvbnN0IGludCBiaXRzUGVyQnl0ZSA9IDg7CkBAIC0xNTcsNiArMTU2LDIxIEBAIHN0YXRpYyB2
b2lkIGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKEF1ZGlvQnVmZmVyKiBidWZmZXJzLCBBdWRpb0J1
cyYgYnVzLCBVSW50MzIKICAgICB9CiB9CiAKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpw
cm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVkaW9CdXMmIGJ1cywgVUludDMyIG51bWJlck9mRnJhbWVz
KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUu
LCBbLTEuMCwgMS4wXSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9m
Q2hhbm5lbHMoKTsgKytpKSB7CisgICAgICAgIGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChp
KTsKKyAgICAgICAgaWYgKCFjaGFubmVsLT5pc1NpbGVudCgpKQorICAgICAgICAgICAgVmVjdG9y
TWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgpLCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEo
KSwgbnVtYmVyT2ZGcmFtZXMpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGJ1cyk7
CisgICAgVU5VU0VEX1BBUkFNKG51bWJlck9mRnJhbWVzKTsKKyNlbmRpZgorfQorCiAvLyBQdWxs
cyBvbiBvdXIgcHJvdmlkZXIgdG8gZ2V0IHJlbmRlcmVkIGF1ZGlvIHN0cmVhbS4KIE9TU3RhdHVz
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1l
c3RhbXAsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCiB7
CkBAIC0yMTAsMTMgKzIyNCw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJP
blJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8vIERl
ZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBj
b25zdCBBdWRpb1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBhdXRv
KiBhdWRpb091dHB1dCA9IHN0YXRpY19jYXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVzZXJE
YXRhKTsKLSAgICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9m
RnJhbWVzLCBpb0RhdGEpOwotfQotCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlk
ZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0aWxp
dGllczo6cmVuZGVyUXVhbnR1bVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAwODk0
ZDYyMWEyZjE1MzIyNTEyNzM2NTBiNmU1YTNkM2VjOTk2ZjhhLi43MDcyZTE4ZTRlMWEyN2YxNDQw
NDAxYjg0YzBlNWI3ZDIyMjc4NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgogI2luY2x1ZGUgIkF1ZGlv
SU9DYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCIKICNpbmNs
dWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5p
dC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQzLDQ3ICs0NCw0MiBAQCBjbGFzcyBQ
dXNoUHVsbEZJRk87CiB1c2luZyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSA9
IFJlZjxBdWRpb0Rlc3RpbmF0aW9uPigqKShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVS
YXRlKTsKIAogLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0
IG91dHB1dCBBdWRpb1VuaXQKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1YmxpYyBB
dWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CitjbGFzcyBBdWRp
b0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlv
VW5pdFJlbmRlcmVyLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAg
QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwotICAgIHZpcnR1YWwgfkF1ZGlvRGVz
dGluYXRpb25Db2NvYSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YShBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0
aW9uQ29jb2EoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2FPdmVycmlkZSBjcmVhdGVPdmVycmlkZTsKIAogcHJvdGVjdGVkOgorICAgIFdF
QkNPUkVfRVhQT1JUIE9TU3RhdHVzIHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQz
MiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpIGZpbmFsOworCiAgICAg
dm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CiAKLSAgICBib29sIGlzUGxheWluZygpIGZpbmFsIHsg
cmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2lzUGxheWluZzsgfQogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2NvbnRleHRTYW1wbGVSYXRlOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVm
ZmVyKCkgY29uc3QgZmluYWw7Ci0gICAgQXVkaW9Vbml0JiBvdXRwdXRVbml0KCkgeyByZXR1cm4g
bV9vdXRwdXRVbml0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgZnJhbWVzUGVyQnVm
ZmVyKCkgY29uc3QgZmluYWw7CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gRGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKLSAgICBz
dGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJB
Y3Rpb25GbGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAKLSAgICB2b2lk
IHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mKTsKIAogICAgIEZ1bmN0aW9uPHZvaWQo
RnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkOwogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBSZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3Jl
YXRlKEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNpZ25lZCwg
ZmxvYXQpOworCiAgICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4m
Jik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBy
ZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcik7CiAKLSAgICBmcmll
bmQgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lP
Q2FsbGJhY2smLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKLSAg
ICAKICAgICAvLyBBdWRpb1NvdXJjZVByb3ZpZGVyLgotICAgIHZvaWQgcHJvdmlkZUlucHV0KEF1
ZGlvQnVzKiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBm
aW5hbDsKIAotICAgIHZvaWQgY29uZmlndXJlKCk7CiAgICAgdm9pZCBwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpOwogCi0gICAgT1NTdGF0dXMg
cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSk7Ci0KLSAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OworICAg
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yOwogICAgIEF1
ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKIAogICAgIC8vIFRvIHBhc3MgdGhlIGRhdGEgZnJv
bSBGSUZPIHRvIHRoZSBhdWRpbyBkZXZpY2UgY2FsbGJhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5MDY2NDgzYTMwMzNjZjEyMWZlYzJhZmJiM2U1ODZmMmMyZjFl
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVk
aW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcihBdWRpb1VuaXRSZW5k
ZXJlciYgcmVuZGVyZXIpCisgICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICAsIG1fYXVkaW9Vbml0
UmVuZGVyZXIocmVuZGVyZXIpCit7Cit9CisKK0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6On5BdWRp
b091dHB1dFVuaXRBZGFwdG9yKCkKK3sKKyAgICBpZiAobV9vdXRwdXRVbml0KQorICAgICAgICBB
dWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShtX291dHB1dFVuaXQpOworfQorCitPU1N0YXR1
cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdGFydCgpCit7CisgICAgcmV0dXJuIEF1ZGlvT3V0
cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7Cit9CisKK09TU3RhdHVzIEF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3I6OnN0b3AoKQoreworICAgIHJldHVybiBBdWRpb091dHB1dFVuaXRTdG9wKG1fb3V0
cHV0VW5pdCk7Cit9CisKKy8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCitPU1N0YXR1cyBB
dWRpb091dHB1dFVuaXRBZGFwdG9yOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5p
dFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUlu
dDMyIC8qYnVzTnVtYmVyKi8sIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpCit7CisgICAgYXV0byogYWRhcHRvciA9IHN0YXRpY19jYXN0PEF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IqPih1c2VyRGF0YSk7CisgICAgcmV0dXJuIGFkYXB0b3ItPm1fYXVkaW9Vbml0
UmVuZGVyZXIucmVuZGVyKHRpbWVzdGFtcCwgbnVtYmVyT2ZGcmFtZXMsIGlvRGF0YSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1
dFVuaXRBZGFwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2ZGM2ZTE1ZWZkZjg2MDg0NGU1ZjJl
MjRjOTA3ZTRiZDJlZWIxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisj
aW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEF1ZGlvVW5pdFJlbmRlcmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1Vu
aXRSZW5kZXJlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIE9TU3RhdHVzIHJlbmRlcihjb25z
dCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpID0gMDsKK307CisKK2NsYXNzIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgeworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoQXVkaW9Vbml0
UmVuZGVyZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QXVkaW9PdXRwdXRVbml0QWRhcHRvcigp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1w
bGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBPU1N0YXR1cyBz
dGFydCgpOworICAgIE9TU3RhdHVzIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgT1NT
dGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFn
cyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJl
ck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CisKKyAgICBBdWRpb1VuaXQgbV9v
dXRwdXRVbml0OworICAgIEF1ZGlvVW5pdFJlbmRlcmVyJiBtX2F1ZGlvVW5pdFJlbmRlcmVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rl
c3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ3MzNk
ZTdmNzVkYTlhYjZkMDg3YTIzMWFkOGViOTgxZGM2ODg4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0KLSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCIKLQotI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZU
X0xJTktfRlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1
ZGlvQ29tcG9uZW50RmluZE5leHQsIEF1ZGlvQ29tcG9uZW50LCAoQXVkaW9Db21wb25lbnQgaW5D
b21wb25lbnQsIGNvbnN0IEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gKmluRGVzYyksIChpbkNv
bXBvbmVudCwgaW5EZXNjKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29tcG9uZW50
SW5zdGFuY2VOZXcsIE9TU3RhdHVzLCAoQXVkaW9Db21wb25lbnQgaW5Db21wb25lbnQsIEF1ZGlv
Q29tcG9uZW50SW5zdGFuY2UgKm91dEluc3RhbmNlKSwgKGluQ29tcG9uZW50LCBvdXRJbnN0YW5j
ZSkpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRBZGRQcm9wZXJ0eUxpc3RlbmVy
LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwg
QXVkaW9Vbml0UHJvcGVydHlMaXN0ZW5lclByb2MgaW5Qcm9jLCB2b2lkICppblByb2NVc2VyRGF0
YSksIChpblVuaXQsIGluSUQsIGluUHJvYywgaW5Qcm9jVXNlckRhdGEpKQotU09GVF9MSU5LKEF1
ZGlvVG9vbGJveCwgQXVkaW9Vbml0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGlu
VW5pdCwgQXVkaW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBB
dWRpb1VuaXRFbGVtZW50IGluRWxlbWVudCwgdm9pZCAqb3V0RGF0YSwgVUludDMyICppb0RhdGFT
aXplKSwgKGluVW5pdCwgaW5JRCwgaW5TY29wZSwgaW5FbGVtZW50LCBvdXREYXRhLCBpb0RhdGFT
aXplKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEluaXRpYWxpemUsIE9TU3Rh
dHVzLCAoQXVkaW9Vbml0IGluVW5pdCksIChpblVuaXQpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJv
eCwgQXVkaW9Vbml0U2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwgQXVk
aW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBBdWRpb1VuaXRF
bGVtZW50IGluRWxlbWVudCwgY29uc3Qgdm9pZCAqaW5EYXRhLCBVSW50MzIgaW5EYXRhU2l6ZSks
IChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgaW5EYXRhLCBpbkRhdGFTaXplKSkK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29u
ZmlndXJlKCkKLXsKLSAgICBjb25zdCBpbnQga1ByZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7Ci0K
LSAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0Ci0gICAgQXVkaW9D
b21wb25lbnQgY29tcDsKLSAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7Ci0KLSAg
ICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7Ci0gICAgZGVzYy5j
b21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87Ci0gICAgZGVzYy5j
b21wb25lbnRNYW51ZmFjdHVyZXIgPSBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0FwcGxlOwotICAg
IGRlc2MuY29tcG9uZW50RmxhZ3MgPSAwOwotICAgIGRlc2MuY29tcG9uZW50RmxhZ3NNYXNrID0g
MDsKLSAgICBjb21wID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dCgwLCAmZGVzYyk7Ci0KLSAgICBB
U1NFUlQoY29tcCk7Ci0KLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlTmV3KGNvbXAsICZvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAg
IFVJbnQzMiBmbGFnID0gMTsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRw
dXRVbml0KCksCi0gICAgICAgIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKLSAg
ICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwKLSAgICAgICAgMCwKLSAgICAgICAgJmZsYWcs
Ci0gICAgICAgIHNpemVvZihmbGFnKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgcmVz
dWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVz
dWx0KTsKLSAgICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCi0gICAgQVVSZW5kZXJDYWxsYmFja1N0
cnVjdCBpbnB1dDsKLSAgICBpbnB1dC5pbnB1dFByb2MgPSBpbnB1dFByb2M7Ci0gICAgaW5wdXQu
aW5wdXRQcm9jUmVmQ29uID0gdGhpczsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0
eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1
ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOwotICAgIEFTU0VS
VCghcmVzdWx0KTsKLQotICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0Ci0gICAgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLQotICAgIFVJbnQzMiBzaXplID0gc2l6ZW9m
KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0
UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBr
QXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwot
ICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
bihzdHJlYW1Gb3JtYXQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0
cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2Nv
cGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgQXVkaW9TZXNzaW9u
OjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJlZmVycmVkQnVmZmVy
U2l6ZSk7Ci19Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1
dFVuaXRBZGFwdG9ySU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTk2MzBmYjYwZjIyYjNl
ZTU2ZDI0MmQ3MzA0MzQ4NmI4N2I1NjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwCkBAIC0w
LDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQsIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvU29mdExp
bmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCitTT0ZUX0xJTkso
QXVkaW9Ub29sYm94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1
ZGlvQ29tcG9uZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9u
ICppbkRlc2MpLCAoaW5Db21wb25lbnQsIGluRGVzYykpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94
LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3LCBPU1N0YXR1cywgKEF1ZGlvQ29tcG9uZW50IGlu
Q29tcG9uZW50LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlICpvdXRJbnN0YW5jZSksIChpbkNvbXBv
bmVudCwgb3V0SW5zdGFuY2UpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRk
UHJvcGVydHlMaXN0ZW5lciwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQ
cm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFByb3BlcnR5TGlzdGVuZXJQcm9jIGluUHJvYywgdm9p
ZCAqaW5Qcm9jVXNlckRhdGEpLCAoaW5Vbml0LCBpbklELCBpblByb2MsIGluUHJvY1VzZXJEYXRh
KSkKK1NPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEdldFByb3BlcnR5LCBPU1N0YXR1
cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0
U2NvcGUgaW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIHZvaWQgKm91dERhdGEs
IFVJbnQzMiAqaW9EYXRhU2l6ZSksIChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwg
b3V0RGF0YSwgaW9EYXRhU2l6ZSkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJ
bml0aWFsaXplLCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQpLCAoaW5Vbml0KSkKK1NPRlRf
TElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlv
VW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5T
Y29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIGNvbnN0IHZvaWQgKmluRGF0YSwgVUlu
dDMyIGluRGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1lbnQsIGluRGF0
YSwgaW5EYXRhU2l6ZSkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1
dFVuaXRBZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIGNvbnN0IGludCBrUHJlZmVycmVkQnVm
ZmVyU2l6ZSA9IDI1NjsKKworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1
dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9uZW50RGVzY3Jp
cHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091
dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9SZW1v
dGVJTzsKKyAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFj
dHVyZXJfQXBwbGU7CisgICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7CisgICAgZGVzYy5jb21w
b25lbnRGbGFnc01hc2sgPSAwOworICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KDAs
ICZkZXNjKTsKKworICAgIEFTU0VSVChjb21wKTsKKworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1
ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJU
KCFyZXN1bHQpOworCisgICAgVUludDMyIGZsYWcgPSAxOworICAgIHJlc3VsdCA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwKKyAgICAgICAga0F1ZGlvT3V0cHV0VW5pdFByb3Bl
cnR5X0VuYWJsZUlPLAorICAgICAgICBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LAorICAgICAgICAw
LAorICAgICAgICAmZmxhZywKKyAgICAgICAgc2l6ZW9mKGZsYWcpKTsKKyAgICBBU1NFUlQoIXJl
c3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG1fb3V0cHV0VW5pdCk7
CisgICAgQVNTRVJUKCFyZXN1bHQpOworICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKKyAgICBB
VVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0OworICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0
UHJvYzsKKyAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOworICAgIHJlc3VsdCA9IEF1
ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJl
bmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZpbnB1dCwgc2l6ZW9mKGlu
cHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHN0cmVhbSBmb3JtYXQK
KyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworCisgICAgVUlu
dDMyIHNpemUgPSBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKTsKKyAgICByZXN1
bHQgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0
eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lkKikmc3RyZWFt
Rm9ybWF0LCAmc2l6ZSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgY29uc3RleHByIGlu
dCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0
c1BlckJ5dGUgPSA4OworICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2Ft
cGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFy
UENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05h
dGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFt
Rm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJG
cmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1l
ID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKKyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFu
bmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9V
bml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9y
bWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXpl
b2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOwor
CisgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6
ZShrUHJlZmVycmVkQnVmZmVyU2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3Rp
bmF0aW9uTWFjLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBmOWM5ZmZmNTFm
NDgzYjQ0MDQxYTM3NzFmYjQxODdhN2FlZGE3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgiCi0KLSNpZiBFTkFCTEUo
V0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2lu
Y2x1ZGUgIlZlY3Rvck1hdGguaCIKLSNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpj
b25maWd1cmUoKQotewotICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1dFVu
aXQKLSAgICBBdWRpb0NvbXBvbmVudCBjb21wOwotICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRp
b24gZGVzYzsKLQotICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091dHB1
dDsKLSAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9EZWZhdWx0
T3V0cHV0OwotICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1ZGlvVW5pdE1hbnVm
YWN0dXJlcl9BcHBsZTsKLSAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsKLSAgICBkZXNjLmNv
bXBvbmVudEZsYWdzTWFzayA9IDA7Ci0gICAgY29tcCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQo
MCwgJmRlc2MpOwotCi0gICAgQVNTRVJUKGNvbXApOwotCi0gICAgT1NTdGF0dXMgcmVzdWx0ID0g
QXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmb3V0cHV0VW5pdCgpKTsKLSAgICBBU1NF
UlQoIXJlc3VsdCk7Ci0KLSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVu
aXQoKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHJlbmRlciBjYWxsYmFj
awotICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7Ci0gICAgaW5wdXQuaW5wdXRQcm9j
ID0gaW5wdXRQcm9jOwotICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRoaXM7Ci0gICAgcmVz
dWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVy
dHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZpbnB1dCwg
c2l6ZW9mKGlucHV0KSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHN0cmVh
bSBmb3JtYXQKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0Owot
ICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwotCi0gICAg
cmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJv
cGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3Ry
ZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNT
RVJUKCFyZXN1bHQpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvY2Vzc0J1
c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiBidXMsIFVJbnQzMiBudW1iZXJPZkZyYW1lcykKLXsKLSAg
ICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUuLCBbLTEuMCwgMS4wXSkKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSB7Ci0gICAgICAg
IGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChpKTsKLSAgICAgICAgaWYgKCFjaGFubmVsLT5p
c1NpbGVudCgpKQotICAgICAgICAgICAgVmVjdG9yTWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgp
LCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEoKSwgbnVtYmVyT2ZGcmFtZXMpOwotICAgIH0K
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM4ZWQzZWY3OGM4YzZhM2IxZTA3MGNiNDQwNTk2OWFkYTRhYzNkYTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0
QWRhcHRvck1hYy5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9S
TShNQUMpCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgPENvcmVBdWRpby9BdWRp
b0hhcmR3YXJlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVm
YXVsdE91dHB1dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9u
ZW50RGVzY3JpcHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1Vu
aXRUeXBlX091dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3Vi
VHlwZV9EZWZhdWx0T3V0cHV0OworICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1
ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBsZTsKKyAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsK
KyAgICBkZXNjLmNvbXBvbmVudEZsYWdzTWFzayA9IDA7CisgICAgY29tcCA9IEF1ZGlvQ29tcG9u
ZW50RmluZE5leHQoMCwgJmRlc2MpOworCisgICAgQVNTRVJUKGNvbXApOworCisgICAgT1NTdGF0
dXMgcmVzdWx0ID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmbV9vdXRwdXRVbml0
KTsKKyAgICBBU1NFUlQoIXJlc3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFs
aXplKG1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHJl
bmRlciBjYWxsYmFjaworICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7CisgICAgaW5w
dXQuaW5wdXRQcm9jID0gaW5wdXRQcm9jOworICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRo
aXM7CisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVk
aW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWws
IDAsICZpbnB1dCwgc2l6ZW9mKGlucHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAg
Ly8gU2V0IHN0cmVhbSBmb3JtYXQKKyAgICBjb25zdGV4cHIgaW50IGJ5dGVzUGVyRmxvYXQgPSBz
aXplb2YoRmxvYXQzMik7CisgICAgY29uc3RleHByIGludCBiaXRzUGVyQnl0ZSA9IDg7CisKKyAg
ICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworICAgIHN0cmVhbUZv
cm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQu
bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9y
bWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9y
bWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAx
OworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsK
KyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1Bl
ckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0
LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQs
IDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcAppbmRleCA1YTEyY2RlNGZjZGZjNTdmYWQ0MmI3ZDllOGZlNzMyMDQzNTA5ZDc4
Li41ZDJiYmZjYTRhYjMyYzY5OTgyYjdjMjViYWU3Njg2ZGZmMjM5MmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25D
b2NvYS5jcHAKQEAgLTY4LDEwICs2OCwxMCBAQCB2b2lkIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnRpY2soKQogewogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgc2FtcGxlUmF0
ZSA9IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgPSBtX251bWJlck9mRnJh
bWVzVG9Qcm9jZXNzXSB7CiAgICAgICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJl
YW1Gb3JtYXQ7Ci0gICAgICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1G
b3JtYXQpOworICAgICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9y
bWF0KTsKIAogICAgICAgICBXZWJBdWRpb0J1ZmZlckxpc3Qgd2ViQXVkaW9CdWZmZXJMaXN0IHsg
c3RyZWFtRm9ybWF0LCBudW1iZXJPZkZyYW1lc1RvUHJvY2VzcyB9OwotICAgICAgICBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh0aGlzLCAwLCAwLCAwLCBudW1iZXJPZkZyYW1lc1Rv
UHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CisgICAgICAgIHJlbmRlcigwLCBu
dW1iZXJPZkZyYW1lc1RvUHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCmluZGV4IDI3ZjJhNjk5NmFj
OTQwY2NkODQ3OTM1OTU0ZTZkOTE4NGEzZDMzZDAuLjEyZjc0N2E5N2FlNDIyYWUyZWY5YWRmNTE2
NGQwZGE2MTVkZGFkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcApAQCAtMjks
MTE2ICsyOSwxMjQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVE
SU8pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAi
UmVtb3RlQXVkaW9CdXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0F1ZGlvQnVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1
ZGlvVXRpbGl0aWVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QdXNoUHVsbEZJRk8uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCi1u
YW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJTaGFyZWRS
aW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9PdXRwdXRVbml0QWRh
cHRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRp
b0J1cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgorI2VuZGlmCiAK
LS8vIFRoaXMgRklGTyBzaXplIG1hdGNoZXMgdG8gb25lIGluIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YS5jcHAgYW5kIHdhcyBpbXBvcnRlZCBmcm9tIEJsaW5rLgotY29uc3RleHByIHNpemVfdCBmaWZv
U2l6ZSA9IDk2ICogV2ViQ29yZTo6QXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwor
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4sIHB1YmxpYyBX
ZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2sgeworY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgor
ICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9Vbml0UmVu
ZGVyZXIKKyNlbmRpZgorewogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6
QXVkaW9CdXM7Ci0gICAgdXNpbmcgQXVkaW9EZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb247Ci0gICAgdXNpbmcgU2hhcmVkQnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OwotCiAgICAgc3RhdGljIFJlZjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXRE
ZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJh
dGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24s
IGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbigpCiAgICAgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCkpOwogICAgIH0KIAog
ICAgIHZvaWQgc2NoZWR1bGVHcmFjZWZ1bFNodXRkb3duSWZOZWVkZWQoKQogICAgIHsKLSAgICAg
ICAgaWYgKCFpc1BsYXlpbmcoKSkKKyAgICAgICAgaWYgKCFtX2lzUGxheWluZykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24g
PSB0aGlzOwotICAgICAgICBzdG9wKCk7CiAgICAgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCisgICAgeworICAgICAgICBt
X2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CiAKLSAgICB2b2lkIHN0YXJ0KCkgeyBtX2Rlc3Rp
bmF0aW9uLT5zdGFydCh7IH0pOyB9Ci0gICAgdm9pZCBzdG9wKCkgeyBtX2Rlc3RpbmF0aW9uLT5z
dG9wKCk7IH0KLSAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1fZGVzdGluYXRpb24tPmlz
UGxheWluZygpOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbi0+ZnJhbWVzUGVyQnVmZmVyKCkgOyB9CisgICAgICAgIGlmIChpcGNI
YW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBtX3JpbmdCdWZmZXItPmRlYWxs
b2NhdGUoKTsKKyAgICAgICAgICAgIHN0b3JhZ2UoKS5zZXRSZWFkT25seShmYWxzZSk7CisgICAg
ICAgICAgICBzdG9yYWdlKCkuc2V0U3RvcmFnZShudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogCi1wcml2YXRlOgotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50
MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24p
Ci0gICAgICAgICwgbV9pZChpZGVudGlmaWVyKQotICAgICAgICAsIG1fZGVzdGluYXRpb24oQXVk
aW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKQotICAgICAgICAs
IG1fZmlmbyhudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmaWZvU2l6ZSkKLSAgICB7Ci0gICAgfQor
ICAgICAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBzdG9yYWdlKCku
c2V0U3RvcmFnZShXVEZNb3ZlKG1lbW9yeSkpOworICAgICAgICBzdG9yYWdlKCkuc2V0UmVhZE9u
bHkodHJ1ZSk7CiAKLSAgICB2b2lkIHJlbmRlcihBdWRpb0J1cyosIEF1ZGlvQnVzKiBkZXN0aW5h
dGlvbkJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcywgY29uc3QgV2ViQ29yZTo6QXVkaW9JT1Bv
c2l0aW9uJiBvdXRwdXRQb3NpdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGRlc2NyaXB0
aW9uLCBudW1iZXJPZkZyYW1lcyk7CiAKLSAgICAgICAgaWYgKG1fcHJvdGVjdFRoaXNEdXJpbmdH
cmFjZWZ1bFNodXRkb3duKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2F1ZGlvQnVm
ZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihtX2Rlc2Ny
aXB0aW9uKTsKKyAgICB9CisjZW5kaWYKIAotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgZnJhbWVzVG9Qcm9jZXNz
ID0gbV9maWZvLnB1bGwoZGVzdGluYXRpb25CdXMsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCFmcmFtZXNUb1Byb2Nlc3MpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgdm9pZCBzdGFydCgpCisgICAgeworICAgIH0KIAotICAgICAgICBWZWN0b3I8UmVmPFNoYXJl
ZE1lbW9yeT4+IGJ1ZmZlcnM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXN0
aW5hdGlvbkJ1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8g
bWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Q
cm9jZXNzKTsKLSAgICAgICAgICAgIGJ1ZmZlcnMuYXBwZW5kKCptZW1vcnkpOwotICAgICAgICB9
CisgICAgdm9pZCBzdG9wKCkKKyAgICB7CisgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiBJdCBp
cyB1bmZvcnR1bmF0ZSB3ZSBoYXZlIHRvIGRpc3BhdGNoIHRvIHRoZSBtYWluIHRoZWFkIGhlcmUu
IFdlIHNob3VsZCBiZSBhYmxlIHRvIElQQyBzdHJhaWdodCBmcm9tIHRoZQotICAgICAgICAvLyBy
ZW5kZXIgdGhyZWFkIGJ1dCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgc2VuZFdpdGhBc3luY1Jl
cGx5KCkuCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZnJhbWVzVG9Qcm9jZXNzLCBvdXRwdXRQb3NpdGlvbiwgYnVmZmVycyA9
IFdURk1vdmUoYnVmZmVycyldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBSZW1vdGVBdWRpb0J1
c0RhdGEgYnVzRGF0YSB7IGZyYW1lc1RvUHJvY2Vzcywgb3V0cHV0UG9zaXRpb24sIGJ1ZmZlcnMu
bWFwKFtdKGF1dG8mIG1lbW9yeSkgeyByZXR1cm4gbWVtb3J5LmNvcHlSZWYoKTsgfSkgfTsKLSAg
ICAgICAgICAgIEFTU0VSVChmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICAgICAgbV9jb25uZWN0
aW9uLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6UmVuZGVyQnVmZmVyKGJ1c0RhdGEpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGJ1ZmZlcnMgPSBXVEZNb3ZlKGJ1ZmZlcnMp
LCBmcmFtZXNUb1Byb2Nlc3NdKCkgewotICAgICAgICAgICAgICAgIGF1dG8gYXVkaW9CdXMgPSBB
dWRpb0J1czo6Y3JlYXRlKGJ1ZmZlcnMuc2l6ZSgpLCBmcmFtZXNUb1Byb2Nlc3MsIGZhbHNlKTsK
LSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVycy5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgICAgICAgICAgYXVkaW9CdXMtPnNldENoYW5uZWxNZW1vcnkoaSwg
c3RhdGljX2Nhc3Q8ZmxvYXQqPihidWZmZXJzW2ldLT5kYXRhKCkpLCBmcmFtZXNUb1Byb2Nlc3Mp
OwotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9maWZvTG9jayk7Ci0g
ICAgICAgICAgICAgICAgbV9maWZvLnB1c2goYXVkaW9CdXMuZ2V0KCkpOwotICAgICAgICAgICAg
fSwgbV9pZC50b1VJbnQ2NCgpKTsKLSAgICAgICAgfSk7Citwcml2YXRlOgorICAgIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkKKyAgICAgICAgLy8gOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAgICAg
OiBtX2lkKGlkZW50aWZpZXIpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICwgbV9hdWRp
b091dHB1dFVuaXRBZGFwdG9yKCp0aGlzKQorICAgICAgICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZT4obnVsbHB0cikpKQorI2VuZGlmCisgICAgICAgIC8vICwgbV9jb250ZXh0U2Ft
cGxlUmF0ZShzYW1wbGVSYXRlKQorICAgIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAg
bV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLmNvbmZpZ3VyZShoYXJkd2FyZVNhbXBsZVJhdGUsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworI2VuZGlmCiAgICAgfQogCi0gICAgdm9pZCBpc1BsYXlp
bmdEaWRDaGFuZ2UoKSBvdmVycmlkZQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFNoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlJiBzdG9yYWdlKCkKICAgICB7Ci0gICAgICAgIGlmIChtX3Byb3RlY3RU
aGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93bikgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fZGVzdGluYXRpb24tPmlzUGxheWluZygpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHJlZkNvdW50KCkgPT0gMSk7Ci0gICAgICAgICAgICBtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2Vm
dWxTaHV0ZG93biA9IG51bGxwdHI7IC8vIERlbGV0ZXMgInRoaXMiLgotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaXNQbGF5aW5nID0gbV9kZXN0aW5hdGlvbi0+aXNQbGF5
aW5nKCksIGlkZW50aWZpZXIgPSBtX2lkLnRvVUludDY0KCldIHsKLSAgICAgICAgICAgIG1fY29u
bmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpEaWRDaGFuZ2VJc1BsYXlpbmcoaXNQbGF5aW5nKSwgaWRlbnRpZmllcik7Ci0gICAg
ICAgIH0pOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2UmPihtX3JpbmdCdWZmZXItPnN0b3JhZ2UoKSk7CisgICAgfQorICAgIAorICAgIE9TU3RhdHVz
IHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiwgQXVkaW9CdWZmZXJMaXN0KikK
KyAgICAvLyBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwg
VUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKKyAgICB7Cisg
ICAgICAgIC8qCisgICAgICAgIHNlbmRBc3ljaFdpdGhSZXBseSB7CisgICAgICAgICAgICBtX3Jp
bmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Cisg
ICAgICAgICAgICBtX2F1ZGlvQnVmZmVyTGlzdC0+c2V0U2FtcGxlQ291bnQobnVtYmVyT2ZGcmFt
ZXMpOworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChtX2F1ZGlvQnVmZmVyTGlzdC0+
bGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7CisgICAgICAgIH0qLwor
ICAgICAgICByZXR1cm4gbm9FcnI7CiAgICAgfQorI2VuZGlmCiAKLSAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CisgICAgLy8gR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
IG1faWQ7Ci0gICAgUmVmUHRyPEF1ZGlvRGVzdGluYXRpb24+IG1fZGVzdGluYXRpb247CiAgICAg
UmVmUHRyPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+IG1fcHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1
bFNodXRkb3duOwotICAgIExvY2sgbV9maWZvTG9jazsKLSAgICBXZWJDb3JlOjpQdXNoUHVsbEZJ
Rk8gbV9maWZvOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2ViQ29yZTo6QXVkaW9PdXRw
dXRVbml0QWRhcHRvciBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I7CisKKyAgICBXZWJDb3JlOjpD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9kZXNjcmlwdGlvbjsKKyAgICBVbmlxdWVSZWY8V2Vi
Q29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CisjZW5kaWYKKyAg
ICAKKyAgICAvLyBmbG9hdCBtX2NvbnRleHRTYW1wbGVSYXRlOworICAgIGJvb2wgbV9pc1BsYXlp
bmcgeyBmYWxzZSB9OwogfTsKIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24pCkBAIC0xNDgsMTQgKzE1NiwxMyBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUAogCiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3Qg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBm
bG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsCisgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0g
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBmcmFtZXNQZXJCdWZmZXIgPSBk
ZXN0aW5hdGlvbi0+ZnJhbWVzUGVyQnVmZmVyKCk7CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IFJl
bW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IG5ld0lELCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CiAgICAgbV9hdWRp
b0Rlc3RpbmF0aW9ucy5hZGQobmV3SUQsIFdURk1vdmUoZGVzdGluYXRpb24pKTsKLSAgICBjb21w
bGV0aW9uSGFuZGxlcihuZXdJRCwgZnJhbWVzUGVyQnVmZmVyKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihuZXdJRCk7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRl
bGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMTcxLDcgKzE3OCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0
YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCiAgICAgYm9vbCBpc1Bs
YXlpbmcgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVkaW9EZXN0aW5hdGlvbnMu
Z2V0KGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGl0ZW0tPnN0YXJ0KCk7Ci0gICAgICAgIGlzUGxh
eWluZyA9IGl0ZW0tPmlzUGxheWluZygpOworICAgICAgICAvLyBpc1BsYXlpbmcgPSBpdGVtLT5p
c1BsYXlpbmcoKTsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQbGF5aW5nKTsKIH0K
QEAgLTE4MSwxMSArMTg4LDE5IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JCiAgICAgYm9vbCBp
c1BsYXlpbmcgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVkaW9EZXN0aW5hdGlv
bnMuZ2V0KGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGl0ZW0tPnN0b3AoKTsKLSAgICAgICAgaXNQ
bGF5aW5nID0gaXRlbS0+aXNQbGF5aW5nKCk7CisgICAgICAgIC8vIGlzUGxheWluZyA9IGl0ZW0t
PmlzUGxheWluZygpOwogICAgIH0KICAgICBjb21wbGV0aW9uSGFuZGxlcihpc1BsYXlpbmcpOwog
fQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjphdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFu
ZGxlLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVk
aW9EZXN0aW5hdGlvbnMuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICBpdGVtLT5hdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZChpcGNIYW5kbGUsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5oCmluZGV4IDExYjRiZWYxMDQxYjdhMDhhZjNiMWIwOWRlMzg0YzAzZDU4OTNkMWUuLjI2NTFl
ZmFjODMwNTJkNWVlM2MzMzViMGQ3MDcyZDU4ZjQ2MGI1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpA
QCAtNDYsMjUgKzUwLDI1IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgflJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3Qg
U3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVp
bnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVk
IGZyYW1lc1BlckJ1ZmZlcik+JiYpOwotICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2Rl
cikKLSAgICB7Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKLSAgICB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9t
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwogCisgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0
cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50
MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJk
d2FyZVNhbXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
c3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOworI2Vu
ZGlmCisKICAgICBIYXNoTWFwPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBSZWY8
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4+IG1fYXVkaW9EZXN0aW5hdGlvbnM7CiAgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogfTsKIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdDsKIAogI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBiYzA1YWUxMTc5YWEyYWQz
NGUzMzM4NTMyYmVkYjVlNmI0ZDQyM2EwLi4yYmM5ZWRjNzFiOTRlODY3OWNjMjBiNjJkODFhOTMy
Y2UzMTU1YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0yNCwxNCArMjQsMTQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJfQVVESU8pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
IE5vdFJlZkNvdW50ZWQgewotCi0gICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5w
dXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSAtPiAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBmcmFtZXNQZXJC
dWZmZXIpIFN5bmNocm9ub3VzCi0KKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgQXN5bmMK
IAogICAgIFN0YXJ0QXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWluZykgU3luY2hyb25vdXMK
ICAgICBTdG9wQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWluZykgU3luY2hyb25vdXMKLQor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktp
dDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQorI2Vu
ZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOTU1ZGU5MWRjY2EwMjUzODI4YzEwZWE1ZDgzYTY0ZGU5NjUyMjAw
Mi4uZDQyMjRjNmViODkyNTE4ZWFmYmM4ZmM3Yjc0ZTI3NjVhNDI1MWMwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDMwLDcgKzE0
MzAsNiBAQAogCQk5QjU0OTlCMjIzNjJBN0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlv
bkV4Y2x1c2lvblJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCNTQ5OUIwMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRXhj
bHVzaW9uUnVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTlCNUJFQzI2MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyNDI0MDBG
NEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oICovOyB9OwogCQk5QjVCRUMyQTI0MDEw
MTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyODI0MDEwMTU4MDA3MEM2
RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi87IH07Ci0JCTlCNUJFQzMxMjQw
MTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBDb3B5RmlsZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8q
IFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovOyB9OwogCQk5RUM1MzJBMzI0NDdGQkFEMDAyMTUyMTYg
LyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5RUM1MzJBMjI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRpb25J
ZGVudGlmaWVyLmggKi87IH07CiAJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRl
eHRQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMDJBNzA4
MUVDMEVFRTkwMEQ4MUQ4MiAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdp
bi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTVFMzk0OTFENUJEOEE3MDBCNEI3Q0UgLyogY29tLm1hY3JvbWVk
aWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgKi87IH07CkBAIC0yMTM5LDcgKzIxMzgsNiBA
QAogCQkJCTJEQjk2MDUzMjM5ODg2QzEwMDEwMjc5MSAvKiBjb20uYXBwbGUuV2ViS2l0LkdQVS5z
YiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREIxOTNBQzlGODAwNUVDQzI1IC8qIGNvbS5h
cHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREMx
OTNBQzlGQjAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYiBpbiBDb3B5
RmlsZXMgKi8sCi0JCQkJOUI1QkVDMzEyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVz
RGF0YS5oIGluIENvcHlGaWxlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ1NDAsNyArNDUzOCw2IEBACiAJCTlCNUJFQzI4
MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCNUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1QkVDMkUyNDAxMDE4
QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTlCNUJFQzMwMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1
c0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9CdXNEYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCQzU5RDZDMUVGQ0NDQjYwMDFFOEQwOSAvKiBDYWxsYmFja0lE
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrSUQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNTlENkQxRUZDREM2RDAwMUU4RDA5IC8qIE9wdGlv
bmFsQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25h
bENhbGxiYWNrSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUVDNTMyQTIyNDQ3
RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
ZW9sb2NhdGlvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1
NTUsNyArNTU1Miw2IEBACiAJCQkJMDc5MjMxMzEyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8q
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3QjFEMDRCMjNEMzhGQ0UwMDM5
OUE2RSAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCi0JCQkJOUI1
QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovLAogCQkJCTlC
NUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3Bw
ICovLAogCQkJCTlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuaCAqLywKIAkJCQk5QjVCRUMyRTI0MDEwMThDMDA3MEM2RUYgLyogUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYzJmMGM2NjA2OTZhZTM0ODYxYzBiMjQ4MGFkMDU3ZmVh
MTk2MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaAorKysg
L2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBSZW1vdGVBdWRpb0J1
c0RhdGEgewotICAgIHVpbnQ2NF90IGZyYW1lc1RvUHJvY2VzcyB7IDAgfTsKLSAgICBXZWJDb3Jl
OjpBdWRpb0lPUG9zaXRpb24gb3V0cHV0UG9zaXRpb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRN
ZW1vcnk+PiBjaGFubmVsQnVmZmVyczsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
Ci0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IGVuY29kZXIgPDwgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBlbmNvZGVyIDw8IG91dHB1dFBv
c2l0aW9uOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjaGFubmVs
QnVmZmVycy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYW5uZWxC
dWZmZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGU7Ci0gICAgICAgICAgICBjaGFubmVsQnVmZmVyc1tpXS0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwotICAgICAgICAgICAgZW5j
b2RlciA8PCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgY2hhbm5l
bEJ1ZmZlcnNbaV0tPnNpemUoKSB9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgRGVjb2Rlcj4KLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFJlbW90ZUF1ZGlvQnVzRGF0YSYgcmVzdWx0KQotICAgIHsK
LSAgICAgICAgdWludDY0X3QgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGZyYW1lc1RvUHJvY2VzcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHJlc3VsdC5mcmFtZXNUb1Byb2Nlc3MgPSBmcmFtZXNUb1Byb2Nlc3M7Ci0KLSAgICAgICAg
V2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91dHB1dFBvc2l0aW9uOwotICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKG91dHB1dFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmVzdWx0Lm91dHB1dFBvc2l0aW9uID0gb3V0cHV0UG9zaXRpb247Ci0KLSAgICAg
ICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlw
Y0hhbmRsZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXV0byBtZW1vcnkg
PSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRXcml0ZSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxCdWZmZXJz
LmFwcGVuZChtZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDg0MDRjNDhlMWMyZTQ4MmFiY2QyNGU1
NWQyY2M5MTNiZDI2N2U3NDEuLmI5NDliZjZjOGUzZTBmYjE5MTMwMzBlOWY0YzFhYzQwMmVhMWI0
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTM5LDcgKzM5LDkg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6QXVk
aW9CdXM7CisvLyBBbGxvY2F0ZSBhIHJpbmcgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBjb250YWlu
IDIgc2Vjb25kcyBvZiBhdWRpby4KK2NvbnN0ZXhwciBzaXplX3QgcmluZ0J1ZmZlclNpemVJblNl
Y29uZCA9IDI7CisKIHVzaW5nIEF1ZGlvRGVzdGluYXRpb24gPSBXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uOwogdXNpbmcgQXVkaW9JT0NhbGxiYWNrID0gV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNr
OwogCkBAIC01MCwxNiArNTIsMTcgQEAgUmVmPEF1ZGlvRGVzdGluYXRpb24+IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGIKIH0KIAogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkoQXVk
aW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1bnNp
Z25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQotICAgICwg
bV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgOiBXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoY2FsbGJhY2ssIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIHNhbXBsZVJhdGUpCisgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZTxXZWJDb3JlOjpD
QVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KHRoaXMp
KSkKKyNlbmRpZgogewogICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGRlc3Rp
bmF0aW9uSUQ7Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyIHsgMCB9OwogCiAgICAgYXV0
byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3ND
b25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCi0gICAg
ICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9E
ZXN0aW5hdGlvbihpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpLAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3Rp
bmF0aW9uSUQsIGZyYW1lc1BlckJ1ZmZlciksIDApOworICAgICAgICBNZXNzYWdlczo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oaW5wdXREZXZp
Y2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1w
bGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUoKSksCisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVz
dGluYXRpb25JRCksIDApOwogCiAgICAgYXV0byBvZmZUaHJlYWRSZW5kZXJpbmcgPSBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewogICAgICAgICB3aGls
ZSAoIW1fdGhyZWFkVGFza1F1ZXVlLmlzS2lsbGVkKCkpIHsKQEAgLTcyLDcgKzc1LDEzIEBAIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KEF1
ZGlvSU9DYWxsYmFjayYgY2FsbGJhCiAgICAgY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuYWRkVGhy
ZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcywgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsK
IAogICAgIG1fZGVzdGluYXRpb25JRCA9IGRlc3RpbmF0aW9uSUQ7Ci0gICAgbV9mcmFtZXNQZXJC
dWZmZXIgPSBmcmFtZXNQZXJCdWZmZXI7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworICAgIGdldEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOworICAgIG1fbnVtYmVyT2ZGcmFtZXMgPSBo
YXJkd2FyZVNhbXBsZVJhdGUoKSAqIHJpbmdCdWZmZXJTaXplSW5TZWNvbmQ7CisgICAgbV9yaW5n
QnVmZmVyLT5hbGxvY2F0ZShzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMpOworI2VuZGlm
CiB9CiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6flJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eSgpCkBAIC0xMDUsMTcgKzExNCwxMiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6c3RvcCgpCiAgICAgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gbnVsbHB0cjsK
IH0KIAotdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlbmRlckJ1ZmZlcihjb25z
dCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVzRGF0YSYgYXVkaW9CdXNEYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eTo6cmVxdWVzdEJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lZGlhVGlt
ZSwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk+JiYgLypjb21wbGV0aW9uSGFuZGxlciov
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChhdWRpb0J1c0Rh
dGEuZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICBBU1NFUlQoYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZm
ZXJzLnNpemUoKSk7Ci0gICAgYXV0byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoYXVkaW9C
dXNEYXRhLmNoYW5uZWxCdWZmZXJzLnNpemUoKSwgYXVkaW9CdXNEYXRhLmZyYW1lc1RvUHJvY2Vz
cywgZmFsc2UpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdWRpb0J1c0RhdGEuY2hh
bm5lbEJ1ZmZlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGF1ZGlvQnVzLT5zZXRDaGFubmVsTWVt
b3J5KGksIChmbG9hdCopYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJzW2ldLT5kYXRhKCksIGF1
ZGlvQnVzRGF0YS5mcmFtZXNUb1Byb2Nlc3MpOwotCi0gICAgbV9jYWxsYmFjay5yZW5kZXIoMCwg
YXVkaW9CdXMuZ2V0KCksIGF1ZGlvQnVzRGF0YS5mcmFtZXNUb1Byb2Nlc3MsIGF1ZGlvQnVzRGF0
YS5vdXRwdXRQb3NpdGlvbik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAKKyAgICAv
LyBGZXRjaCBidWZmZXIgYW5kIGxldCBHUFUgcHJvY2VzcyBrbm93IHRoZSBidWZmZXIgaXMgYXZh
aWxhYmxlCisgICAgLy8gY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OmRpZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxheWluZykKQEAg
LTEzMyw2ICsxMzcsMjggQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRpc3Bh
dGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgbV90aHJlYWRUYXNrUXVl
dWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lk
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5
KiBzdG9yYWdlKQoreworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAo
c3RvcmFnZSkKKyAgICAgICAgc3RvcmFnZS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisKKyAgICAvLyBGSVhNRTogU2VuZCB0aGUgYWN0
dWFsIGRhdGEgc2l6ZSB3aXRoIElQQ0hhbmRsZS4KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRP
V1MpCisgICAgdWludDY0X3QgZGF0YVNpemUgPSBoYW5kbGUuc2l6ZSgpOworI2Vsc2UKKyAgICB1
aW50NjRfdCBkYXRhU2l6ZSA9IDA7CisjZW5kaWYKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
KHN0cmVhbUZvcm1hdCk7CisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6QXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQg
eyBtX2Rlc3RpbmF0aW9uSUQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5k
bGUpLCBkYXRhU2l6ZSB9LCBzdHJlYW1Gb3JtYXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX251
bWJlck9mRnJhbWVzKSB9LCAwKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCmluZGV4IGM0YWRiNzU2MGQ0NjM3NThlZTcxNTZm
MDFlZWM5OTU4ZDNjZmRlNjYuLmM5MTgwMjk1MmI2OWIzNWY5OWM1MTIzMzZmYjVmNWRiODUyMGYy
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaApAQCAtMjgsMjQgKzI4LDMzIEBA
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlJlbW90ZUF1ZGlvQnVzRGF0YS5oIgogI2luY2x1
ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1N1cHBsZW1lbnQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxsYmFjay5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9z
c1RocmVhZFF1ZXVlLmg+CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlNoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgorI2Vsc2UKKyNpbmNsdWRl
IDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IDogcHVibGljIFdlYkNvcmU6
OkF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VS
ZWNlaXZlciB7CitjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EKKyAg
ICAsIHB1YmxpYyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6Q2xpZW50CisjZWxzZQorICAgIDog
cHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24KKyNlbmRpZgorICAgICwgcHVibGljIElQ
Qzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkpOwogcHVibGljOgotICAgIHVzaW5n
IEF1ZGlvQnVzID0gV2ViQ29yZTo6QXVkaW9CdXM7CiAgICAgdXNpbmcgQXVkaW9JT0NhbGxiYWNr
ID0gV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNrOwogICAgIHVzaW5nIFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb246OnJlZjsKICAgICB1c2luZyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpkZXJl
ZjsKQEAgLTU3LDE2ICs2NiwyMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlRnJvbUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0K
IAotICAgIHZvaWQgcmVuZGVyQnVmZmVyKGNvbnN0IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRh
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RCdWZmZXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVz
LCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSk+JiYpOwogICAgIHZvaWQg
ZGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKTsKIAogcHJpdmF0ZToKLSAgICAvLyBX
ZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uCi0gICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1
bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRlclRocmVhZCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7
IHJldHVybiBtX2lzUGxheWluZzsgfQotICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KLSAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZm
ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZyYW1lc1BlckJ1ZmZlcjsgfQorICAgIHZv
aWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9S
ZW5kZXJUaHJlYWQpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIGJvb2wgaXNQ
bGF5aW5nKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworI2lmICFQTEFURk9STShDT0NPQSkK
KyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgZmluYWwgeyByZXR1cm4gMDsgfQorICAgIHVuc2lnbmVk
IGZyYW1lc1BlckJ1ZmZlcigpIGZpbmFsIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgLy8gU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OkNsaWVudAorICAg
IHZvaWQgc3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5Kik7CisjZW5kaWYKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTc2LDExICs5MiwxNCBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVmTWVzc2FnZVJlY2VpdmVyKCkgZmluYWwgeyBXZWJDb3JlOjpBdWRpb0Rl
c3RpbmF0aW9uOjpyZWYoKTsgfQogICAgIHZvaWQgZGVyZWZNZXNzYWdlUmVjZWl2ZXIoKSBmaW5h
bCB7IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmRlcmVmKCk7IH0KIAotICAgIEF1ZGlvSU9D
YWxsYmFjayYgbV9jYWxsYmFjazsKLSAgICBmbG9hdCBtX3NhbXBsZVJhdGUgeyAwLiB9OwotICAg
IHVuc2lnbmVkIG1fZnJhbWVzUGVyQnVmZmVyIHsgMCB9OwogICAgIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyIG1fZGVzdGluYXRpb25JRDsKICAgICBib29sIG1faXNQbGF5aW5nIHsg
ZmFsc2UgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpDQVJpbmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyAgICBpbnQ2NF90IG1fbnVtYmVyT2ZG
cmFtZXMgeyAwIH07CisjZW5kaWYKKwogICAgIEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgp
PiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkOwogICAgIFJlZlB0cjxUaHJlYWQ+IG1fcmVu
ZGVyVGhyZWFkOwogICAgIENyb3NzVGhyZWFkUXVldWU8RnVuY3Rpb248dm9pZCgpPj4gbV90aHJl
YWRUYXNrUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IGFlMWZjNzA2OTg3MTRjODcwNWU1ODI0ODE5NDY1YmFiMzI2M2YwNjEuLmJh
YThlYmRmOWU1MjNlOWIwZTBlNDRhZGM4YjU3ODVlZjA4ODc3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNCwxMCArMjQsOCBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKIAogbWVzc2FnZXMg
LT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IE5vdFJlZkNvdW50ZWQgewotCi0gICAgUmVu
ZGVyQnVmZmVyKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVzRGF0YSBkYXRhKSAtPiAoKSBB
c3luYworICAgIHJlcXVlc3RCdWZmZXIoKSAtPiAoTWVkaWFUaW1lIHRpbWUsIHVpbnQ2NF90IG51
bWJlck9mRnJhbWVzLCB1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBlbmRGcmFtZSkgQXN5
bmMKICAgICBEaWRDaGFuZ2VJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcpCi0KIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKaW5kZXggODc5OWYxOTg0
NzE0MTFlYzZmNzM5YTM4NzkzNjRkMjQ3NTEyZWE0NC4uMmUwYTZiMWY4MzkzMmFlODMzNWRmNGVh
YTRlYjUzNWY4NTg3MTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
LmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
OjpwdXNoU2FtcGxlcyhjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFdlYgogCiAgICAgICAg
IC8vIEFsbG9jYXRlIGEgcmluZyBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gMiBzZWNv
bmRzIG9mIGF1ZGlvLgogICAgICAgICBtX251bWJlck9mRnJhbWVzID0gbV9kZXNjcmlwdGlvbi5z
YW1wbGVSYXRlKCkgKiAyOwotICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKG1fZGVzY3Jp
cHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSwgbV9udW1iZXJPZkZyYW1lcyk7CisgICAgICAgIG1f
cmluZ0J1ZmZlci0+YWxsb2NhdGUobV9kZXNjcmlwdGlvbiwgbV9udW1iZXJPZkZyYW1lcyk7CiAg
ICAgfQogCiAgICAgQVNTRVJUKGlzPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9E
YXRhKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411407</attachid>
            <date>2020-10-14 22:10:39 -0700</date>
            <delta_ts>2020-10-15 16:46:34 -0700</delta_ts>
            <desc>WIP patch v7</desc>
            <filename>bug-217715-20201014221038.patch</filename>
            <type>text/plain</type>
            <size>88824</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ3MWFlZjc3YmQ4NmZl
MTBkMmJjMDQ4NWE5OWUzZGQ3ZTI0NTkxZS4uOGJlYjM3Mzc4MDczMmExMDQ3NmRlZDRmMmNmMTA2
MjI2MGQ5Y2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9j
ZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8g
ZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6aW5wdXRQcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRV
bml0QWRhcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRv
cklPUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2spOgorCiAyMDIwLTEwLTE0ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFZlY3Rvck1hdGg6Om11
bHRpcGx5VGhlbkFkZFNjYWxhcigpIGZvciBjbGFyaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkYjZjMTc4OGNi
ZmJhYjEzMGQyZWIzMDVkYTc1ZTI5YmI4ZGExNDcuLmI0OGI4NzIyZWIyNjE3NjdmYjEyMjhiZmNm
ZWM1MDk0ZmRmM2FhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMTAtMTQgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWEgaW4gR1BVIFBy
b2Nlc3NdIFVzZSBDQVJpbmdCdWZmZXIgdG8gdHJhbnNmZXIgYXVkaW8gZGF0YSBvZiBhbiBhdWRp
byBkZXN0aW5hdGlvbiBmcm9tIGEgd2ViIHByb2Nlc3MgdG8gdGhlIEdQVSBQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93bklm
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6YXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246
OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnJl
bmRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b246OmlzUGxheWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OmZyYW1lc1BlckJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9CdXNEYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3Jh
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpyZW5kZXJCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6cHVzaFNh
bXBsZXMpOgorCiAyMDIwLTEwLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBub24tQ29jb2EgcGxhdGZvcm1zICYg
cmVsZWFzZSBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggYzU2NzBjMzY0ODU3NWU4ODBlYjY4NWUw
YTNhMTM1YzI5MjQzNzViYi4uZTMyMjM3MjNkNzc4ZmVlMTNmNDcyYzRkMjExMGVjOTM2YjgwZmFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
QXVkaW9EZXN0aW5hdGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfkF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCi0gICAgLy8gQXVkaW9Ob2RlICAgCisgICAgLy8g
QXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCkgb3ZlcnJpZGUgeyB9OyAvLyB3ZSdy
ZSBwdWxsZWQgYnkgaGFyZHdhcmUgc28gdGhpcyBpcyBuZXZlciBjYWxsZWQKICAgICAKICAgICAv
LyBUaGUgYXVkaW8gaGFyZHdhcmUgY2FsbHMgcmVuZGVyKCkgdG8gZ2V0IHRoZSBuZXh0IHJlbmRl
ciBxdWFudHVtIG9mIGF1ZGlvIGludG8gZGVzdGluYXRpb25CdXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCBmOTU5ZTM5ODI5NjYwNTA5MDNhYWM4NWI4YWYyNDJkYTE1NDM0YTg5Li41OTI2
NjA2Mzg5OGY0MTM2YTliZjU1YzI2ODkxYTU2YmJhMzE2ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTIwMywxOSArMjAzLDIwIEBAIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQogcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNw
cAorcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAKIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVm
ZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCi1wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9C
dXNNYWMubW0KLXBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
SGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25N
YWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3YjUzM2VmNmM1ZjQ0Y2RiODdkYmI4MTIxMTc4OTVjMGNkYzMxZWUzLi42ODYw
ODBjYzExZGZiNTAxZmZkNjNmNTJlYjQxYThiNDJhNmUxYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzMsNiArNjMzLDcg
QEAKIAkJMURBQjMxMTIyNTFENkJGMzAwRkM5NDg1IC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEIzMUEx
MjM3OURDODMwMDg4M0ZERSAvKiBXZWJWaWRlb0NvbnRhaW5lckxheWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMURBQjMxMTQyNTFENzI1QzAw
RkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxREFCMzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXll
ck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxREFCMzExNTI1MUQ3NERCMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RTFD
NTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMURCNjZEM0IyNTM3QTk1NjAwQjY3
MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFERDNCNEM2
MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0
QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkxREY3RTgxRjI1MUE5RTA2
MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00MTI3LDcgKzQxMjgsNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2
MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MDFFMjNG
QTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgKi87IH07CiAJCUNEMDYzRjgzMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MTFFMjNGQTg5MDA4MTJCRTMgLyogSW5p
dERhdGFSZWdpc3RyeS5oICovOyB9OwotCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHAgKi87IH07CisJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVu
aXRBZGFwdG9ySU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9y
SU9TLmNwcCAqLzsgfTsKIAkJQ0QxMUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8q
IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRDE3QTQ1RDIxMzc0MDgxMDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxN0E0NTky
MTM3NDAxNjAwNzlFQzdCIC8qIFVuaWZpZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKQEAgLTUzMDQs
NyArNTMwNSw2IEBACiAJCUZEMzE2MEFCMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2
ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQzMTYwNzUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggKi87IH07
CiAJCUZEMzE2MEFEMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzcxMkIwMjZG
NzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggKi87IH07CiAJCUZEMzE2MEFGMTJCMDI2
RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5o
ICovOyB9OwotCQlGRDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYw
QjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLzsgfTsKIAkJRkQz
MTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFB
MzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBF
MUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDM1OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJh
bVRpbWVsaW5lLmggKi87IH07CiAJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0Yx
NzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY3NTQsNiArNjc1NCw4IEBACiAJCTFEMDAyNkE5MjM3NEY5
RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2
QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBQjMxMTMy
NTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZp
ZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEQjY2RDM3
MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMURCNjZEMzgyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJl
SW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZU9ic2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZEMjExQkExMkEwMDRC
NzgwRSAvKiBOYXZpZ2F0b3JTaGFyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdh
dG9yU2hhcmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRjIxMUJB
ODQxMDA0Qjc4MEUgLyogU2hhcmVEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFy
ZURhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyOTQsOCArMTQyOTYs
NyBAQAogCQlDRDA2M0Y4MDFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0RGF0YVJlZ2lzdHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwNjNGODExRTIzRkE4OTAwODEyQkUz
IC8qIEluaXREYXRhUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5pdERhdGFSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBDOEI1
ODIxNDFDOENBMDA2MkY1OUQgLyogTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFw
dG9ySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxMUIzREYyMjdDQUFB
OTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3
REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1NjAsOCArMTY1NjEsNyBAQAogCQlGRDMxNjA3
ODEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWZWN0b3JNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkQzMTYwNzkxMkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb0J1c01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1
ZGlvRGVzdGluYXRpb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25NYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZEMzE2MEI4MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQjkxMkIwMjcyQTAw
QzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkQzMTYwQkExMkIwMjcyQTAwQzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZGVEZyYW1lTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI3Mjk2LDEwICsyNzI5Niw5IEBACiAJCUNEMEVFRTBEMTQ3NDNF
NDgwMDNFQUZBMiAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcCAqLywKLQkJCQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlv
bklPUy5oICovLAogCQkJCUNENTU5NjhGMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFk
ZXJJT1MuY3BwICovLAogCQkJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVS
ZWFkZXJJT1MuaCAqLywKKwkJCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRw
dXRVbml0QWRhcHRvcklPUy5jcHAgKi8sCiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8q
IEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywKIAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4
IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSAqLywKQEAgLTI3MzY0LDYgKzI3MzYzLDggQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTQxMzE1MTg0MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwICovLAogCQkJCTQxMzE1MTg2MjM1Nzc0NUUwMDExNUU2RSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCAqLywKKwkJCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgKi8sCisJCQkJMURCNjZEMzcyNTM2NzhFQTAw
QjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCAqLywKIAkJCQkwNzNCODc2MjFFNDM4
NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcCAqLywKIAkJCQkwNzNCODc2
MzFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggKi8sCiAJCQkJMDcz
Qjg3NjUxRTQzODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oICovLApAQCAt
MzAyNzUsMTIgKzMwMjc2LDExIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAqLywKLQkJ
CQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8s
Ci0JCQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAq
LywKIAkJCQlGRDMxNjBCODEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCOTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFj
LmggKi8sCiAJCQkJQ0QyRjRBMjUxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lck1hYy5jcHAgKi8sCiAJCQkJQ0QyRjRBMjYxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFy
ZHdhcmVMaXN0ZW5lck1hYy5oICovLAorCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBB
dWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1
RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMx
QTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8sCiAJCQkpOwpAQCAtMzA1NjEsNyArMzA1NjEsNiBA
QAogCQkJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGlu
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovLAotCQkJCUZEMzE2MEJEMTJCMDI3
MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAwODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDgwMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNTc3LDYgKzMwNTc2LDcgQEAK
IAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU3MTQ2N0IzMjRBQkFFRjIwMEZCMkY1MCAvKiBBdWRpb05vZGVPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9O
b2RlT3V0cHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxREI2NkQzQjI1MzdBOTU2MDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUQx
MkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzU2
OTlFMjUyQ0YzNjIwMEUxQjk1NiAvKiBBdWRpb1BhcmFtRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNCOTg3MEMyNTIyNUY4MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1NYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzA2NTQsNyArMzA2NTQsNiBAQAogCQkJCTUxNzQxRDBGMEIwNzI1OUEw
MEVENDQyQyAvKiBCYWNrRm9yd2FyZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOEM4
MUUxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBMUI4N0QyMDg3QzRDMDAwOTc5QTc1IC8qIEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOTQ3MjE3MjUzMjNDMjEwMEYxNTNDOCAvKiBC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMjRFRTgwQzI2
NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2MEJCNjE2MUQw
QTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
MTk4RkJGMjRBMTYwREQwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAq
LywKQEAgLTM1MjM5LDggKzM1MjM4LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCUE5Nzg3Q0I0MUY1
RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzFGN0I3MzEyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAx
RDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMEVF
RTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25J
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2NDMgLyogQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREUzQTg1NzE3
RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9u
LmgKaW5kZXggMTYwYzY1NzhlMTVlZDVlYTc1MjVkYzc2OGJkNGVmM2ZkYzc0ZjRmZi4uNDE5NjU1
MmQ5MTVhODliNGEwNWY4NDc2NGQ1ZmVhYzA1NjYyNDk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4gaW4gQXVk
aW9EZXN0aW5hdGlvbiB0byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUKICAgICB2aXJ0dWFsIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7Ci0gICAgc3RhdGljIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUoKTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Qg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCAxZDBmNGUyODgxMTg3ZTdiMzUw
MjkwYjAyMzNjYjhiMGMyMWFmNGU2Li4yYzk3MWVhN2U2MzdhNTg1ZGY4NjY1OGMxNGEzMzdmODYw
OGFlNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTM1LDYgKzM1LDEwIEBACiAj
aW5jbHVkZSAiTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgiCiAjaW5jbHVkZSAiUHVzaFB1bGxGSUZP
LmgiCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3RleHByIHNpemVfdCBmaWZvU2l6ZSA9IDk2
ICogQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwpAQCAtNTYsNyArNjAsNiBAQCBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGNvbnN0CiAgICAgICAgIHJldHVybiBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OmNyZWF0ZU92ZXJyaWRlKGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIAogICAgIGF1dG8gZGVz
dGluYXRpb24gPSBhZG9wdFJlZigqbmV3IEF1ZGlvRGVzdGluYXRpb25Db2NvYShjYWxsYmFjaywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOwotICAgIGRlc3RpbmF0aW9uLT5j
b25maWd1cmUoKTsKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKQEAgLTcxLDE0ICs3NCwx
NCBAQCB1bnNpZ25lZCBsb25nIEF1ZGlvRGVzdGluYXRpb246Om1heENoYW5uZWxDb3VudCgpCiB9
CiAKIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUpCi0gICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICA6IG1fYXVkaW9PdXRwdXRV
bml0QWRhcHRvcigqdGhpcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX291
dHB1dEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1ZGlvVXRp
bGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxsKCkpCiAgICAg
LCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1
ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSkucmVsZWFzZU5vbk51bGwoKSkKICAgICAs
IG1fZmlmbyhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4obnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmlmb1NpemUpKQogICAgICwgbV9jb250ZXh0U2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogewot
ICAgIGNvbmZpZ3VyZSgpOworICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUo
aGFyZHdhcmVTYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgYXV0
byBoYXJkd2FyZVNhbXBsZVJhdGUgPSB0aGlzLT5oYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBp
ZiAoc2FtcGxlUmF0ZSAhPSBoYXJkd2FyZVNhbXBsZVJhdGUpIHsKQEAgLTg3LDExICs5MCw3IEBA
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkCiAgICAgfQogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKQotewotICAgIGlmIChtX291dHB1dFVuaXQpCi0g
ICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Ci19CitB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKSA9IGRlZmF1bHQ7
CiAKIHVuc2lnbmVkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6bnVtYmVyT2ZPdXRwdXRDaGFubmVs
cygpIGNvbnN0CiB7CkBAIC0xMDcsNyArMTA2LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFQK
IHsKICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAg
bV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFk
KTsKLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVu
aXQpOworICAgIE9TU3RhdHVzIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFy
dCgpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHNldElzUGxheWluZyh0cnVlKTsKQEAg
LTExNiw3ICsxMTUsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rp
b248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVAogdm9pZCBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25D
b2NvYTo6c3RvcCIpOwotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3Ao
bV9vdXRwdXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFk
YXB0b3Iuc3RvcCgpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAK
ICAgICBpZiAoIXJlc3VsdCkKQEAgLTEzMyw3ICsxMzIsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2suaXNQ
bGF5aW5nRGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBz
dHJlYW1Gb3JtYXQpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Z2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0
KQogewogICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwogICAg
IGNvbnN0IGludCBiaXRzUGVyQnl0ZSA9IDg7CkBAIC0xNTcsNiArMTU2LDIxIEBAIHN0YXRpYyB2
b2lkIGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKEF1ZGlvQnVmZmVyKiBidWZmZXJzLCBBdWRpb0J1
cyYgYnVzLCBVSW50MzIKICAgICB9CiB9CiAKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpw
cm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVkaW9CdXMmIGJ1cywgVUludDMyIG51bWJlck9mRnJhbWVz
KQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUu
LCBbLTEuMCwgMS4wXSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9m
Q2hhbm5lbHMoKTsgKytpKSB7CisgICAgICAgIGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChp
KTsKKyAgICAgICAgaWYgKCFjaGFubmVsLT5pc1NpbGVudCgpKQorICAgICAgICAgICAgVmVjdG9y
TWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgpLCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEo
KSwgbnVtYmVyT2ZGcmFtZXMpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGJ1cyk7
CisgICAgVU5VU0VEX1BBUkFNKG51bWJlck9mRnJhbWVzKTsKKyNlbmRpZgorfQorCiAvLyBQdWxs
cyBvbiBvdXIgcHJvdmlkZXIgdG8gZ2V0IHJlbmRlcmVkIGF1ZGlvIHN0cmVhbS4KIE9TU3RhdHVz
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1l
c3RhbXAsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCiB7
CkBAIC0yMTAsMTMgKzIyNCw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJP
blJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8vIERl
ZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBj
b25zdCBBdWRpb1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBhdXRv
KiBhdWRpb091dHB1dCA9IHN0YXRpY19jYXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVzZXJE
YXRhKTsKLSAgICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9m
RnJhbWVzLCBpb0RhdGEpOwotfQotCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlk
ZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0aWxp
dGllczo6cmVuZGVyUXVhbnR1bVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAwODk0
ZDYyMWEyZjE1MzIyNTEyNzM2NTBiNmU1YTNkM2VjOTk2ZjhhLi43MDcyZTE4ZTRlMWEyN2YxNDQw
NDAxYjg0YzBlNWI3ZDIyMjc4NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgogI2luY2x1ZGUgIkF1ZGlv
SU9DYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCIKICNpbmNs
dWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5p
dC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQzLDQ3ICs0NCw0MiBAQCBjbGFzcyBQ
dXNoUHVsbEZJRk87CiB1c2luZyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSA9
IFJlZjxBdWRpb0Rlc3RpbmF0aW9uPigqKShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVS
YXRlKTsKIAogLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0
IG91dHB1dCBBdWRpb1VuaXQKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1YmxpYyBB
dWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CitjbGFzcyBBdWRp
b0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlv
VW5pdFJlbmRlcmVyLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAg
QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwotICAgIHZpcnR1YWwgfkF1ZGlvRGVz
dGluYXRpb25Db2NvYSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YShBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0
aW9uQ29jb2EoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2FPdmVycmlkZSBjcmVhdGVPdmVycmlkZTsKIAogcHJvdGVjdGVkOgorICAgIFdF
QkNPUkVfRVhQT1JUIE9TU3RhdHVzIHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQz
MiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpIGZpbmFsOworCiAgICAg
dm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CiAKLSAgICBib29sIGlzUGxheWluZygpIGZpbmFsIHsg
cmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2lzUGxheWluZzsgfQogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2NvbnRleHRTYW1wbGVSYXRlOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVm
ZmVyKCkgY29uc3QgZmluYWw7Ci0gICAgQXVkaW9Vbml0JiBvdXRwdXRVbml0KCkgeyByZXR1cm4g
bV9vdXRwdXRVbml0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgZnJhbWVzUGVyQnVm
ZmVyKCkgY29uc3QgZmluYWw7CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gRGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKLSAgICBz
dGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJB
Y3Rpb25GbGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAKLSAgICB2b2lk
IHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mKTsKIAogICAgIEZ1bmN0aW9uPHZvaWQo
RnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkOwogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBSZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3Jl
YXRlKEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNpZ25lZCwg
ZmxvYXQpOworCiAgICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4m
Jik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBy
ZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcik7CiAKLSAgICBmcmll
bmQgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lP
Q2FsbGJhY2smLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKLSAg
ICAKICAgICAvLyBBdWRpb1NvdXJjZVByb3ZpZGVyLgotICAgIHZvaWQgcHJvdmlkZUlucHV0KEF1
ZGlvQnVzKiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBm
aW5hbDsKIAotICAgIHZvaWQgY29uZmlndXJlKCk7CiAgICAgdm9pZCBwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpOwogCi0gICAgT1NTdGF0dXMg
cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSk7Ci0KLSAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OworICAg
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yOwogICAgIEF1
ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKIAogICAgIC8vIFRvIHBhc3MgdGhlIGRhdGEgZnJv
bSBGSUZPIHRvIHRoZSBhdWRpbyBkZXZpY2UgY2FsbGJhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5MDY2NDgzYTMwMzNjZjEyMWZlYzJhZmJiM2U1ODZmMmMyZjFl
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVk
aW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcihBdWRpb1VuaXRSZW5k
ZXJlciYgcmVuZGVyZXIpCisgICAgOiBtX291dHB1dFVuaXQoMCkKKyAgICAsIG1fYXVkaW9Vbml0
UmVuZGVyZXIocmVuZGVyZXIpCit7Cit9CisKK0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6On5BdWRp
b091dHB1dFVuaXRBZGFwdG9yKCkKK3sKKyAgICBpZiAobV9vdXRwdXRVbml0KQorICAgICAgICBB
dWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShtX291dHB1dFVuaXQpOworfQorCitPU1N0YXR1
cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdGFydCgpCit7CisgICAgcmV0dXJuIEF1ZGlvT3V0
cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7Cit9CisKK09TU3RhdHVzIEF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3I6OnN0b3AoKQoreworICAgIHJldHVybiBBdWRpb091dHB1dFVuaXRTdG9wKG1fb3V0
cHV0VW5pdCk7Cit9CisKKy8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCitPU1N0YXR1cyBB
dWRpb091dHB1dFVuaXRBZGFwdG9yOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5p
dFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUlu
dDMyIC8qYnVzTnVtYmVyKi8sIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpCit7CisgICAgYXV0byogYWRhcHRvciA9IHN0YXRpY19jYXN0PEF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IqPih1c2VyRGF0YSk7CisgICAgcmV0dXJuIGFkYXB0b3ItPm1fYXVkaW9Vbml0
UmVuZGVyZXIucmVuZGVyKHRpbWVzdGFtcCwgbnVtYmVyT2ZGcmFtZXMsIGlvRGF0YSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1
dFVuaXRBZGFwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2ZGM2ZTE1ZWZkZjg2MDg0NGU1ZjJl
MjRjOTA3ZTRiZDJlZWIxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisj
aW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEF1ZGlvVW5pdFJlbmRlcmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1Vu
aXRSZW5kZXJlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIE9TU3RhdHVzIHJlbmRlcihjb25z
dCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpID0gMDsKK307CisKK2NsYXNzIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgeworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoQXVkaW9Vbml0
UmVuZGVyZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QXVkaW9PdXRwdXRVbml0QWRhcHRvcigp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1w
bGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBPU1N0YXR1cyBz
dGFydCgpOworICAgIE9TU3RhdHVzIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgT1NT
dGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFn
cyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJl
ck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CisKKyAgICBBdWRpb1VuaXQgbV9v
dXRwdXRVbml0OworICAgIEF1ZGlvVW5pdFJlbmRlcmVyJiBtX2F1ZGlvVW5pdFJlbmRlcmVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rl
c3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ3MzNk
ZTdmNzVkYTlhYjZkMDg3YTIzMWFkOGViOTgxZGM2ODg4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0KLSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCIKLQotI2luY2x1
ZGUgIkF1ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZU
X0xJTktfRlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1
ZGlvQ29tcG9uZW50RmluZE5leHQsIEF1ZGlvQ29tcG9uZW50LCAoQXVkaW9Db21wb25lbnQgaW5D
b21wb25lbnQsIGNvbnN0IEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gKmluRGVzYyksIChpbkNv
bXBvbmVudCwgaW5EZXNjKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29tcG9uZW50
SW5zdGFuY2VOZXcsIE9TU3RhdHVzLCAoQXVkaW9Db21wb25lbnQgaW5Db21wb25lbnQsIEF1ZGlv
Q29tcG9uZW50SW5zdGFuY2UgKm91dEluc3RhbmNlKSwgKGluQ29tcG9uZW50LCBvdXRJbnN0YW5j
ZSkpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRBZGRQcm9wZXJ0eUxpc3RlbmVy
LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwg
QXVkaW9Vbml0UHJvcGVydHlMaXN0ZW5lclByb2MgaW5Qcm9jLCB2b2lkICppblByb2NVc2VyRGF0
YSksIChpblVuaXQsIGluSUQsIGluUHJvYywgaW5Qcm9jVXNlckRhdGEpKQotU09GVF9MSU5LKEF1
ZGlvVG9vbGJveCwgQXVkaW9Vbml0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGlu
VW5pdCwgQXVkaW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBB
dWRpb1VuaXRFbGVtZW50IGluRWxlbWVudCwgdm9pZCAqb3V0RGF0YSwgVUludDMyICppb0RhdGFT
aXplKSwgKGluVW5pdCwgaW5JRCwgaW5TY29wZSwgaW5FbGVtZW50LCBvdXREYXRhLCBpb0RhdGFT
aXplKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEluaXRpYWxpemUsIE9TU3Rh
dHVzLCAoQXVkaW9Vbml0IGluVW5pdCksIChpblVuaXQpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJv
eCwgQXVkaW9Vbml0U2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwgQXVk
aW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBBdWRpb1VuaXRF
bGVtZW50IGluRWxlbWVudCwgY29uc3Qgdm9pZCAqaW5EYXRhLCBVSW50MzIgaW5EYXRhU2l6ZSks
IChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgaW5EYXRhLCBpbkRhdGFTaXplKSkK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29u
ZmlndXJlKCkKLXsKLSAgICBjb25zdCBpbnQga1ByZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7Ci0K
LSAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0Ci0gICAgQXVkaW9D
b21wb25lbnQgY29tcDsKLSAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7Ci0KLSAg
ICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7Ci0gICAgZGVzYy5j
b21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87Ci0gICAgZGVzYy5j
b21wb25lbnRNYW51ZmFjdHVyZXIgPSBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0FwcGxlOwotICAg
IGRlc2MuY29tcG9uZW50RmxhZ3MgPSAwOwotICAgIGRlc2MuY29tcG9uZW50RmxhZ3NNYXNrID0g
MDsKLSAgICBjb21wID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dCgwLCAmZGVzYyk7Ci0KLSAgICBB
U1NFUlQoY29tcCk7Ci0KLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlTmV3KGNvbXAsICZvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAg
IFVJbnQzMiBmbGFnID0gMTsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRw
dXRVbml0KCksCi0gICAgICAgIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKLSAg
ICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwKLSAgICAgICAgMCwKLSAgICAgICAgJmZsYWcs
Ci0gICAgICAgIHNpemVvZihmbGFnKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgcmVz
dWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVz
dWx0KTsKLSAgICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCi0gICAgQVVSZW5kZXJDYWxsYmFja1N0
cnVjdCBpbnB1dDsKLSAgICBpbnB1dC5pbnB1dFByb2MgPSBpbnB1dFByb2M7Ci0gICAgaW5wdXQu
aW5wdXRQcm9jUmVmQ29uID0gdGhpczsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0
eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1
ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOwotICAgIEFTU0VS
VCghcmVzdWx0KTsKLQotICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0Ci0gICAgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLQotICAgIFVJbnQzMiBzaXplID0gc2l6ZW9m
KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0
UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBr
QXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwot
ICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
bihzdHJlYW1Gb3JtYXQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0
cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2Nv
cGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgQXVkaW9TZXNzaW9u
OjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJlZmVycmVkQnVmZmVy
U2l6ZSk7Ci19Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1
dFVuaXRBZGFwdG9ySU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTk2MzBmYjYwZjIyYjNl
ZTU2ZDI0MmQ3MzA0MzQ4NmI4N2I1NjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwCkBAIC0w
LDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQsIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvU29mdExp
bmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCitTT0ZUX0xJTkso
QXVkaW9Ub29sYm94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1
ZGlvQ29tcG9uZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9u
ICppbkRlc2MpLCAoaW5Db21wb25lbnQsIGluRGVzYykpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94
LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3LCBPU1N0YXR1cywgKEF1ZGlvQ29tcG9uZW50IGlu
Q29tcG9uZW50LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlICpvdXRJbnN0YW5jZSksIChpbkNvbXBv
bmVudCwgb3V0SW5zdGFuY2UpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRk
UHJvcGVydHlMaXN0ZW5lciwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQ
cm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFByb3BlcnR5TGlzdGVuZXJQcm9jIGluUHJvYywgdm9p
ZCAqaW5Qcm9jVXNlckRhdGEpLCAoaW5Vbml0LCBpbklELCBpblByb2MsIGluUHJvY1VzZXJEYXRh
KSkKK1NPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEdldFByb3BlcnR5LCBPU1N0YXR1
cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0
U2NvcGUgaW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIHZvaWQgKm91dERhdGEs
IFVJbnQzMiAqaW9EYXRhU2l6ZSksIChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwg
b3V0RGF0YSwgaW9EYXRhU2l6ZSkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJ
bml0aWFsaXplLCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQpLCAoaW5Vbml0KSkKK1NPRlRf
TElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlv
VW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5T
Y29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIGNvbnN0IHZvaWQgKmluRGF0YSwgVUlu
dDMyIGluRGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1lbnQsIGluRGF0
YSwgaW5EYXRhU2l6ZSkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1
dFVuaXRBZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIGNvbnN0IGludCBrUHJlZmVycmVkQnVm
ZmVyU2l6ZSA9IDI1NjsKKworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1
dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9uZW50RGVzY3Jp
cHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091
dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9SZW1v
dGVJTzsKKyAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFj
dHVyZXJfQXBwbGU7CisgICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7CisgICAgZGVzYy5jb21w
b25lbnRGbGFnc01hc2sgPSAwOworICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KDAs
ICZkZXNjKTsKKworICAgIEFTU0VSVChjb21wKTsKKworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1
ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJU
KCFyZXN1bHQpOworCisgICAgVUludDMyIGZsYWcgPSAxOworICAgIHJlc3VsdCA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwKKyAgICAgICAga0F1ZGlvT3V0cHV0VW5pdFByb3Bl
cnR5X0VuYWJsZUlPLAorICAgICAgICBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LAorICAgICAgICAw
LAorICAgICAgICAmZmxhZywKKyAgICAgICAgc2l6ZW9mKGZsYWcpKTsKKyAgICBBU1NFUlQoIXJl
c3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG1fb3V0cHV0VW5pdCk7
CisgICAgQVNTRVJUKCFyZXN1bHQpOworICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKKyAgICBB
VVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0OworICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0
UHJvYzsKKyAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOworICAgIHJlc3VsdCA9IEF1
ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJl
bmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZpbnB1dCwgc2l6ZW9mKGlu
cHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHN0cmVhbSBmb3JtYXQK
KyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworCisgICAgVUlu
dDMyIHNpemUgPSBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKTsKKyAgICByZXN1
bHQgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0
eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lkKikmc3RyZWFt
Rm9ybWF0LCAmc2l6ZSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgY29uc3RleHByIGlu
dCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0
c1BlckJ5dGUgPSA4OworICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2Ft
cGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFy
UENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05h
dGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFt
Rm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJG
cmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1l
ID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKKyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFu
bmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9V
bml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9y
bWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXpl
b2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOwor
CisgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6
ZShrUHJlZmVycmVkQnVmZmVyU2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3Rp
bmF0aW9uTWFjLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBmOWM5ZmZmNTFm
NDgzYjQ0MDQxYTM3NzFmYjQxODdhN2FlZGE3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgiCi0KLSNpZiBFTkFCTEUo
V0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2lu
Y2x1ZGUgIlZlY3Rvck1hdGguaCIKLSNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpj
b25maWd1cmUoKQotewotICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1dFVu
aXQKLSAgICBBdWRpb0NvbXBvbmVudCBjb21wOwotICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRp
b24gZGVzYzsKLQotICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091dHB1
dDsKLSAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9EZWZhdWx0
T3V0cHV0OwotICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1ZGlvVW5pdE1hbnVm
YWN0dXJlcl9BcHBsZTsKLSAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsKLSAgICBkZXNjLmNv
bXBvbmVudEZsYWdzTWFzayA9IDA7Ci0gICAgY29tcCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQo
MCwgJmRlc2MpOwotCi0gICAgQVNTRVJUKGNvbXApOwotCi0gICAgT1NTdGF0dXMgcmVzdWx0ID0g
QXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmb3V0cHV0VW5pdCgpKTsKLSAgICBBU1NF
UlQoIXJlc3VsdCk7Ci0KLSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVu
aXQoKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHJlbmRlciBjYWxsYmFj
awotICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7Ci0gICAgaW5wdXQuaW5wdXRQcm9j
ID0gaW5wdXRQcm9jOwotICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRoaXM7Ci0gICAgcmVz
dWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVy
dHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZpbnB1dCwg
c2l6ZW9mKGlucHV0KSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHN0cmVh
bSBmb3JtYXQKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0Owot
ICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwotCi0gICAg
cmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJv
cGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3Ry
ZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNT
RVJUKCFyZXN1bHQpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvY2Vzc0J1
c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiBidXMsIFVJbnQzMiBudW1iZXJPZkZyYW1lcykKLXsKLSAg
ICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUuLCBbLTEuMCwgMS4wXSkKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSB7Ci0gICAgICAg
IGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChpKTsKLSAgICAgICAgaWYgKCFjaGFubmVsLT5p
c1NpbGVudCgpKQotICAgICAgICAgICAgVmVjdG9yTWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgp
LCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEoKSwgbnVtYmVyT2ZGcmFtZXMpOwotICAgIH0K
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM4ZWQzZWY3OGM4YzZhM2IxZTA3MGNiNDQwNTk2OWFkYTRhYzNkYTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0
QWRhcHRvck1hYy5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9S
TShNQUMpCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgPENvcmVBdWRpby9BdWRp
b0hhcmR3YXJlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVm
YXVsdE91dHB1dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9u
ZW50RGVzY3JpcHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1Vu
aXRUeXBlX091dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3Vi
VHlwZV9EZWZhdWx0T3V0cHV0OworICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1
ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBsZTsKKyAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsK
KyAgICBkZXNjLmNvbXBvbmVudEZsYWdzTWFzayA9IDA7CisgICAgY29tcCA9IEF1ZGlvQ29tcG9u
ZW50RmluZE5leHQoMCwgJmRlc2MpOworCisgICAgQVNTRVJUKGNvbXApOworCisgICAgT1NTdGF0
dXMgcmVzdWx0ID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmbV9vdXRwdXRVbml0
KTsKKyAgICBBU1NFUlQoIXJlc3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFs
aXplKG1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHJl
bmRlciBjYWxsYmFjaworICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7CisgICAgaW5w
dXQuaW5wdXRQcm9jID0gaW5wdXRQcm9jOworICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRo
aXM7CisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVk
aW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWws
IDAsICZpbnB1dCwgc2l6ZW9mKGlucHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAg
Ly8gU2V0IHN0cmVhbSBmb3JtYXQKKyAgICBjb25zdGV4cHIgaW50IGJ5dGVzUGVyRmxvYXQgPSBz
aXplb2YoRmxvYXQzMik7CisgICAgY29uc3RleHByIGludCBiaXRzUGVyQnl0ZSA9IDg7CisKKyAg
ICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworICAgIHN0cmVhbUZv
cm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQu
bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9y
bWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9y
bWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAx
OworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsK
KyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1Bl
ckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0
LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQs
IDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcAppbmRleCA1YTEyY2RlNGZjZGZjNTdmYWQ0MmI3ZDllOGZlNzMyMDQzNTA5ZDc4
Li41ZDJiYmZjYTRhYjMyYzY5OTgyYjdjMjViYWU3Njg2ZGZmMjM5MmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25D
b2NvYS5jcHAKQEAgLTY4LDEwICs2OCwxMCBAQCB2b2lkIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnRpY2soKQogewogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgc2FtcGxlUmF0
ZSA9IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgPSBtX251bWJlck9mRnJh
bWVzVG9Qcm9jZXNzXSB7CiAgICAgICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJl
YW1Gb3JtYXQ7Ci0gICAgICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1G
b3JtYXQpOworICAgICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9y
bWF0KTsKIAogICAgICAgICBXZWJBdWRpb0J1ZmZlckxpc3Qgd2ViQXVkaW9CdWZmZXJMaXN0IHsg
c3RyZWFtRm9ybWF0LCBudW1iZXJPZkZyYW1lc1RvUHJvY2VzcyB9OwotICAgICAgICBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh0aGlzLCAwLCAwLCAwLCBudW1iZXJPZkZyYW1lc1Rv
UHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CisgICAgICAgIHJlbmRlcigwLCBu
dW1iZXJPZkZyYW1lc1RvUHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCmluZGV4IDI3ZjJhNjk5NmFj
OTQwY2NkODQ3OTM1OTU0ZTZkOTE4NGEzZDMzZDAuLjEyZjc0N2E5N2FlNDIyYWUyZWY5YWRmNTE2
NGQwZGE2MTVkZGFkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcApAQCAtMjks
MTE2ICsyOSwxMjQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVE
SU8pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAi
UmVtb3RlQXVkaW9CdXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0F1ZGlvQnVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1
ZGlvVXRpbGl0aWVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QdXNoUHVsbEZJRk8uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCi1u
YW1lc3BhY2UgV2ViS2l0IHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJTaGFyZWRS
aW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9PdXRwdXRVbml0QWRh
cHRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRp
b0J1cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgorI2VuZGlmCiAK
LS8vIFRoaXMgRklGTyBzaXplIG1hdGNoZXMgdG8gb25lIGluIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YS5jcHAgYW5kIHdhcyBpbXBvcnRlZCBmcm9tIEJsaW5rLgotY29uc3RleHByIHNpemVfdCBmaWZv
U2l6ZSA9IDk2ICogV2ViQ29yZTo6QXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwor
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4sIHB1YmxpYyBX
ZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2sgeworY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgor
ICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9Vbml0UmVu
ZGVyZXIKKyNlbmRpZgorewogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6
QXVkaW9CdXM7Ci0gICAgdXNpbmcgQXVkaW9EZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb247Ci0gICAgdXNpbmcgU2hhcmVkQnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OwotCiAgICAgc3RhdGljIFJlZjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXRE
ZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJh
dGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24s
IGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbigpCiAgICAgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCkpOwogICAgIH0KIAog
ICAgIHZvaWQgc2NoZWR1bGVHcmFjZWZ1bFNodXRkb3duSWZOZWVkZWQoKQogICAgIHsKLSAgICAg
ICAgaWYgKCFpc1BsYXlpbmcoKSkKKyAgICAgICAgaWYgKCFtX2lzUGxheWluZykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24g
PSB0aGlzOwotICAgICAgICBzdG9wKCk7CiAgICAgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCisgICAgeworICAgICAgICBt
X2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CiAKLSAgICB2b2lkIHN0YXJ0KCkgeyBtX2Rlc3Rp
bmF0aW9uLT5zdGFydCh7IH0pOyB9Ci0gICAgdm9pZCBzdG9wKCkgeyBtX2Rlc3RpbmF0aW9uLT5z
dG9wKCk7IH0KLSAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1fZGVzdGluYXRpb24tPmlz
UGxheWluZygpOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbi0+ZnJhbWVzUGVyQnVmZmVyKCkgOyB9CisgICAgICAgIGlmIChpcGNI
YW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBtX3JpbmdCdWZmZXItPmRlYWxs
b2NhdGUoKTsKKyAgICAgICAgICAgIHN0b3JhZ2UoKS5zZXRSZWFkT25seShmYWxzZSk7CisgICAg
ICAgICAgICBzdG9yYWdlKCkuc2V0U3RvcmFnZShudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogCi1wcml2YXRlOgotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50
MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24p
Ci0gICAgICAgICwgbV9pZChpZGVudGlmaWVyKQotICAgICAgICAsIG1fZGVzdGluYXRpb24oQXVk
aW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKQotICAgICAgICAs
IG1fZmlmbyhudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmaWZvU2l6ZSkKLSAgICB7Ci0gICAgfQor
ICAgICAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBzdG9yYWdlKCku
c2V0U3RvcmFnZShXVEZNb3ZlKG1lbW9yeSkpOworICAgICAgICBzdG9yYWdlKCkuc2V0UmVhZE9u
bHkodHJ1ZSk7CiAKLSAgICB2b2lkIHJlbmRlcihBdWRpb0J1cyosIEF1ZGlvQnVzKiBkZXN0aW5h
dGlvbkJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcywgY29uc3QgV2ViQ29yZTo6QXVkaW9JT1Bv
c2l0aW9uJiBvdXRwdXRQb3NpdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGRlc2NyaXB0
aW9uLCBudW1iZXJPZkZyYW1lcyk7CiAKLSAgICAgICAgaWYgKG1fcHJvdGVjdFRoaXNEdXJpbmdH
cmFjZWZ1bFNodXRkb3duKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2F1ZGlvQnVm
ZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihtX2Rlc2Ny
aXB0aW9uKTsKKyAgICB9CisjZW5kaWYKIAotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgZnJhbWVzVG9Qcm9jZXNz
ID0gbV9maWZvLnB1bGwoZGVzdGluYXRpb25CdXMsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCFmcmFtZXNUb1Byb2Nlc3MpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgdm9pZCBzdGFydCgpCisgICAgeworICAgIH0KIAotICAgICAgICBWZWN0b3I8UmVmPFNoYXJl
ZE1lbW9yeT4+IGJ1ZmZlcnM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXN0
aW5hdGlvbkJ1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8g
bWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Q
cm9jZXNzKTsKLSAgICAgICAgICAgIGJ1ZmZlcnMuYXBwZW5kKCptZW1vcnkpOwotICAgICAgICB9
CisgICAgdm9pZCBzdG9wKCkKKyAgICB7CisgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiBJdCBp
cyB1bmZvcnR1bmF0ZSB3ZSBoYXZlIHRvIGRpc3BhdGNoIHRvIHRoZSBtYWluIHRoZWFkIGhlcmUu
IFdlIHNob3VsZCBiZSBhYmxlIHRvIElQQyBzdHJhaWdodCBmcm9tIHRoZQotICAgICAgICAvLyBy
ZW5kZXIgdGhyZWFkIGJ1dCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgc2VuZFdpdGhBc3luY1Jl
cGx5KCkuCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZnJhbWVzVG9Qcm9jZXNzLCBvdXRwdXRQb3NpdGlvbiwgYnVmZmVycyA9
IFdURk1vdmUoYnVmZmVycyldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBSZW1vdGVBdWRpb0J1
c0RhdGEgYnVzRGF0YSB7IGZyYW1lc1RvUHJvY2Vzcywgb3V0cHV0UG9zaXRpb24sIGJ1ZmZlcnMu
bWFwKFtdKGF1dG8mIG1lbW9yeSkgeyByZXR1cm4gbWVtb3J5LmNvcHlSZWYoKTsgfSkgfTsKLSAg
ICAgICAgICAgIEFTU0VSVChmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICAgICAgbV9jb25uZWN0
aW9uLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6UmVuZGVyQnVmZmVyKGJ1c0RhdGEpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGJ1ZmZlcnMgPSBXVEZNb3ZlKGJ1ZmZlcnMp
LCBmcmFtZXNUb1Byb2Nlc3NdKCkgewotICAgICAgICAgICAgICAgIGF1dG8gYXVkaW9CdXMgPSBB
dWRpb0J1czo6Y3JlYXRlKGJ1ZmZlcnMuc2l6ZSgpLCBmcmFtZXNUb1Byb2Nlc3MsIGZhbHNlKTsK
LSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVycy5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgICAgICAgICAgYXVkaW9CdXMtPnNldENoYW5uZWxNZW1vcnkoaSwg
c3RhdGljX2Nhc3Q8ZmxvYXQqPihidWZmZXJzW2ldLT5kYXRhKCkpLCBmcmFtZXNUb1Byb2Nlc3Mp
OwotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9maWZvTG9jayk7Ci0g
ICAgICAgICAgICAgICAgbV9maWZvLnB1c2goYXVkaW9CdXMuZ2V0KCkpOwotICAgICAgICAgICAg
fSwgbV9pZC50b1VJbnQ2NCgpKTsKLSAgICAgICAgfSk7Citwcml2YXRlOgorICAgIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkKKyAgICAgICAgLy8gOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAgICAg
OiBtX2lkKGlkZW50aWZpZXIpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICwgbV9hdWRp
b091dHB1dFVuaXRBZGFwdG9yKCp0aGlzKQorICAgICAgICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZT4obnVsbHB0cikpKQorI2VuZGlmCisgICAgICAgIC8vICwgbV9jb250ZXh0U2Ft
cGxlUmF0ZShzYW1wbGVSYXRlKQorICAgIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAg
bV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLmNvbmZpZ3VyZShoYXJkd2FyZVNhbXBsZVJhdGUsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworI2VuZGlmCiAgICAgfQogCi0gICAgdm9pZCBpc1BsYXlp
bmdEaWRDaGFuZ2UoKSBvdmVycmlkZQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFNoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlJiBzdG9yYWdlKCkKICAgICB7Ci0gICAgICAgIGlmIChtX3Byb3RlY3RU
aGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93bikgewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IW1fZGVzdGluYXRpb24tPmlzUGxheWluZygpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHJlZkNvdW50KCkgPT0gMSk7Ci0gICAgICAgICAgICBtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2Vm
dWxTaHV0ZG93biA9IG51bGxwdHI7IC8vIERlbGV0ZXMgInRoaXMiLgotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaXNQbGF5aW5nID0gbV9kZXN0aW5hdGlvbi0+aXNQbGF5
aW5nKCksIGlkZW50aWZpZXIgPSBtX2lkLnRvVUludDY0KCldIHsKLSAgICAgICAgICAgIG1fY29u
bmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpEaWRDaGFuZ2VJc1BsYXlpbmcoaXNQbGF5aW5nKSwgaWRlbnRpZmllcik7Ci0gICAg
ICAgIH0pOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2UmPihtX3JpbmdCdWZmZXItPnN0b3JhZ2UoKSk7CisgICAgfQorICAgIAorICAgIE9TU3RhdHVz
IHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiwgQXVkaW9CdWZmZXJMaXN0KikK
KyAgICAvLyBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwg
VUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKKyAgICB7Cisg
ICAgICAgIC8qCisgICAgICAgIHNlbmRBc3ljaFdpdGhSZXBseSB7CisgICAgICAgICAgICBtX3Jp
bmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Cisg
ICAgICAgICAgICBtX2F1ZGlvQnVmZmVyTGlzdC0+c2V0U2FtcGxlQ291bnQobnVtYmVyT2ZGcmFt
ZXMpOworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChtX2F1ZGlvQnVmZmVyTGlzdC0+
bGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUoKSk7CisgICAgICAgIH0qLwor
ICAgICAgICByZXR1cm4gbm9FcnI7CiAgICAgfQorI2VuZGlmCiAKLSAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CisgICAgLy8gR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
IG1faWQ7Ci0gICAgUmVmUHRyPEF1ZGlvRGVzdGluYXRpb24+IG1fZGVzdGluYXRpb247CiAgICAg
UmVmUHRyPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+IG1fcHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1
bFNodXRkb3duOwotICAgIExvY2sgbV9maWZvTG9jazsKLSAgICBXZWJDb3JlOjpQdXNoUHVsbEZJ
Rk8gbV9maWZvOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2ViQ29yZTo6QXVkaW9PdXRw
dXRVbml0QWRhcHRvciBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I7CisKKyAgICBXZWJDb3JlOjpD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9kZXNjcmlwdGlvbjsKKyAgICBVbmlxdWVSZWY8V2Vi
Q29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CisjZW5kaWYKKyAg
ICAKKyAgICAvLyBmbG9hdCBtX2NvbnRleHRTYW1wbGVSYXRlOworICAgIGJvb2wgbV9pc1BsYXlp
bmcgeyBmYWxzZSB9OwogfTsKIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24pCkBAIC0xNDgsMTQgKzE1NiwxMyBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUAogCiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3Qg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBm
bG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsCisgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0g
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBmcmFtZXNQZXJCdWZmZXIgPSBk
ZXN0aW5hdGlvbi0+ZnJhbWVzUGVyQnVmZmVyKCk7CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IFJl
bW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IG5ld0lELCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CiAgICAgbV9hdWRp
b0Rlc3RpbmF0aW9ucy5hZGQobmV3SUQsIFdURk1vdmUoZGVzdGluYXRpb24pKTsKLSAgICBjb21w
bGV0aW9uSGFuZGxlcihuZXdJRCwgZnJhbWVzUGVyQnVmZmVyKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihuZXdJRCk7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRl
bGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMTcxLDcgKzE3OCw3IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0
YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCiAgICAgYm9vbCBpc1Bs
YXlpbmcgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVkaW9EZXN0aW5hdGlvbnMu
Z2V0KGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGl0ZW0tPnN0YXJ0KCk7Ci0gICAgICAgIGlzUGxh
eWluZyA9IGl0ZW0tPmlzUGxheWluZygpOworICAgICAgICAvLyBpc1BsYXlpbmcgPSBpdGVtLT5p
c1BsYXlpbmcoKTsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQbGF5aW5nKTsKIH0K
QEAgLTE4MSwxMSArMTg4LDE5IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JCiAgICAgYm9vbCBp
c1BsYXlpbmcgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVkaW9EZXN0aW5hdGlv
bnMuZ2V0KGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGl0ZW0tPnN0b3AoKTsKLSAgICAgICAgaXNQ
bGF5aW5nID0gaXRlbS0+aXNQbGF5aW5nKCk7CisgICAgICAgIC8vIGlzUGxheWluZyA9IGl0ZW0t
PmlzUGxheWluZygpOwogICAgIH0KICAgICBjb21wbGV0aW9uSGFuZGxlcihpc1BsYXlpbmcpOwog
fQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjphdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFu
ZGxlLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVk
aW9EZXN0aW5hdGlvbnMuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICBpdGVtLT5hdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZChpcGNIYW5kbGUsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5oCmluZGV4IDExYjRiZWYxMDQxYjdhMDhhZjNiMWIwOWRlMzg0YzAzZDU4OTNkMWUuLjI2NTFl
ZmFjODMwNTJkNWVlM2MzMzViMGQ3MDcyZDU4ZjQ2MGI1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpA
QCAtNDYsMjUgKzUwLDI1IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgflJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3Qg
U3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVp
bnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVk
IGZyYW1lc1BlckJ1ZmZlcik+JiYpOwotICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2Rl
cikKLSAgICB7Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKLSAgICB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9t
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwogCisgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0
cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50
MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJk
d2FyZVNhbXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
c3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOworI2Vu
ZGlmCisKICAgICBIYXNoTWFwPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBSZWY8
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4+IG1fYXVkaW9EZXN0aW5hdGlvbnM7CiAgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogfTsKIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdDsKIAogI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBiYzA1YWUxMTc5YWEyYWQz
NGUzMzM4NTMyYmVkYjVlNmI0ZDQyM2EwLi4yYmM5ZWRjNzFiOTRlODY3OWNjMjBiNjJkODFhOTMy
Y2UzMTU1YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0yNCwxNCArMjQsMTQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJfQVVESU8pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
IE5vdFJlZkNvdW50ZWQgewotCi0gICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5w
dXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSAtPiAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBmcmFtZXNQZXJC
dWZmZXIpIFN5bmNocm9ub3VzCi0KKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgQXN5bmMK
IAogICAgIFN0YXJ0QXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWluZykgU3luY2hyb25vdXMK
ICAgICBTdG9wQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWluZykgU3luY2hyb25vdXMKLQor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktp
dDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQorI2Vu
ZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggOTU1ZGU5MWRjY2EwMjUzODI4YzEwZWE1ZDgzYTY0ZGU5NjUyMjAw
Mi4uZDQyMjRjNmViODkyNTE4ZWFmYmM4ZmM3Yjc0ZTI3NjVhNDI1MWMwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDMwLDcgKzE0
MzAsNiBAQAogCQk5QjU0OTlCMjIzNjJBN0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlv
bkV4Y2x1c2lvblJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCNTQ5OUIwMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRXhj
bHVzaW9uUnVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTlCNUJFQzI2MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyNDI0MDBG
NEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oICovOyB9OwogCQk5QjVCRUMyQTI0MDEw
MTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyODI0MDEwMTU4MDA3MEM2
RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi87IH07Ci0JCTlCNUJFQzMxMjQw
MTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBDb3B5RmlsZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8q
IFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovOyB9OwogCQk5RUM1MzJBMzI0NDdGQkFEMDAyMTUyMTYg
LyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5RUM1MzJBMjI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRpb25J
ZGVudGlmaWVyLmggKi87IH07CiAJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRl
eHRQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMDJBNzA4
MUVDMEVFRTkwMEQ4MUQ4MiAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdp
bi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTVFMzk0OTFENUJEOEE3MDBCNEI3Q0UgLyogY29tLm1hY3JvbWVk
aWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgKi87IH07CkBAIC0yMTM5LDcgKzIxMzgsNiBA
QAogCQkJCTJEQjk2MDUzMjM5ODg2QzEwMDEwMjc5MSAvKiBjb20uYXBwbGUuV2ViS2l0LkdQVS5z
YiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREIxOTNBQzlGODAwNUVDQzI1IC8qIGNvbS5h
cHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREMx
OTNBQzlGQjAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYiBpbiBDb3B5
RmlsZXMgKi8sCi0JCQkJOUI1QkVDMzEyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVz
RGF0YS5oIGluIENvcHlGaWxlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ1NDAsNyArNDUzOCw2IEBACiAJCTlCNUJFQzI4
MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCNUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1QkVDMkUyNDAxMDE4
QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTlCNUJFQzMwMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1
c0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9CdXNEYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCQzU5RDZDMUVGQ0NDQjYwMDFFOEQwOSAvKiBDYWxsYmFja0lE
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrSUQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNTlENkQxRUZDREM2RDAwMUU4RDA5IC8qIE9wdGlv
bmFsQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25h
bENhbGxiYWNrSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUVDNTMyQTIyNDQ3
RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
ZW9sb2NhdGlvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1
NTUsNyArNTU1Miw2IEBACiAJCQkJMDc5MjMxMzEyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8q
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3QjFEMDRCMjNEMzhGQ0UwMDM5
OUE2RSAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCi0JCQkJOUI1
QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovLAogCQkJCTlC
NUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3Bw
ICovLAogCQkJCTlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuaCAqLywKIAkJCQk5QjVCRUMyRTI0MDEwMThDMDA3MEM2RUYgLyogUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYzJmMGM2NjA2OTZhZTM0ODYxYzBiMjQ4MGFkMDU3ZmVh
MTk2MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaAorKysg
L2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBSZW1vdGVBdWRpb0J1
c0RhdGEgewotICAgIHVpbnQ2NF90IGZyYW1lc1RvUHJvY2VzcyB7IDAgfTsKLSAgICBXZWJDb3Jl
OjpBdWRpb0lPUG9zaXRpb24gb3V0cHV0UG9zaXRpb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRN
ZW1vcnk+PiBjaGFubmVsQnVmZmVyczsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
Ci0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IGVuY29kZXIgPDwgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBlbmNvZGVyIDw8IG91dHB1dFBv
c2l0aW9uOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjaGFubmVs
QnVmZmVycy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYW5uZWxC
dWZmZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGU7Ci0gICAgICAgICAgICBjaGFubmVsQnVmZmVyc1tpXS0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwotICAgICAgICAgICAgZW5j
b2RlciA8PCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgY2hhbm5l
bEJ1ZmZlcnNbaV0tPnNpemUoKSB9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgRGVjb2Rlcj4KLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFJlbW90ZUF1ZGlvQnVzRGF0YSYgcmVzdWx0KQotICAgIHsK
LSAgICAgICAgdWludDY0X3QgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGZyYW1lc1RvUHJvY2VzcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHJlc3VsdC5mcmFtZXNUb1Byb2Nlc3MgPSBmcmFtZXNUb1Byb2Nlc3M7Ci0KLSAgICAgICAg
V2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91dHB1dFBvc2l0aW9uOwotICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKG91dHB1dFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmVzdWx0Lm91dHB1dFBvc2l0aW9uID0gb3V0cHV0UG9zaXRpb247Ci0KLSAgICAg
ICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlw
Y0hhbmRsZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXV0byBtZW1vcnkg
PSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRXcml0ZSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxCdWZmZXJz
LmFwcGVuZChtZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDg0MDRjNDhlMWMyZTQ4MmFiY2QyNGU1
NWQyY2M5MTNiZDI2N2U3NDEuLjU2OTEzYzlmY2U5ZTY4ODIwYTcwZGYxZjVjZDJiMjJjNTcwMTZi
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTMwLDE2ICszMCwy
MSBAQAogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuaCIKKy8vICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5o
IgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvQnVzLmg+CisKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KKyNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdXNpbmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRp
b0J1czsKKy8vIEFsbG9jYXRlIGEgcmluZyBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4g
MiBzZWNvbmRzIG9mIGF1ZGlvLgorY29uc3RleHByIHNpemVfdCByaW5nQnVmZmVyU2l6ZUluU2Vj
b25kID0gMjsKKwogdXNpbmcgQXVkaW9EZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb247CiB1c2luZyBBdWRpb0lPQ2FsbGJhY2sgPSBXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2s7
CiAKQEAgLTUwLDE2ICs1NSwxNyBAQCBSZWY8QXVkaW9EZXN0aW5hdGlvbj4gUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5OjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYgogfQogCiBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eShBdWRp
b0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSkKLSAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgLCBt
X3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYShjYWxsYmFjaywgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgc2FtcGxlUmF0ZSkKKyAgICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5pcXVlPFdlYkNvcmU6OkNB
UmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4odGhpcykp
KQorI2VuZGlmCiB7CiAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgZGVzdGlu
YXRpb25JRDsKLSAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIgeyAwIH07CiAKICAgICBhdXRv
JiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKLSAgICAg
ICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rl
c3RpbmF0aW9uKGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSksCi0gICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGlu
YXRpb25JRCwgZnJhbWVzUGVyQnVmZmVyKSwgMCk7CisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihpbnB1dERldmlj
ZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBs
ZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSgpKSwKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0
aW5hdGlvbklEKSwgMCk7CiAKICAgICBhdXRvIG9mZlRocmVhZFJlbmRlcmluZyA9IFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIHdoaWxl
ICghbV90aHJlYWRUYXNrUXVldWUuaXNLaWxsZWQoKSkgewpAQCAtNzIsNyArNzgsMTMgQEAgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkoQXVk
aW9JT0NhbGxiYWNrJiBjYWxsYmEKICAgICBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5hZGRUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwog
CiAgICAgbV9kZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKLSAgICBtX2ZyYW1lc1BlckJ1
ZmZlciA9IGZyYW1lc1BlckJ1ZmZlcjsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CisgICAgbV9udW1iZXJPZkZyYW1lcyA9IGhh
cmR3YXJlU2FtcGxlUmF0ZSgpICogcmluZ0J1ZmZlclNpemVJblNlY29uZDsKKyAgICBtX3JpbmdC
dWZmZXItPmFsbG9jYXRlKHN0cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1lcyk7CisjZW5kaWYK
IH0KIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+UmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5KCkKQEAgLTEwNSwxNyArMTE3LDEyIEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpzdG9wKCkKICAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQgPSBudWxscHRyOwog
fQogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVuZGVyQnVmZmVyKGNvbnN0
IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhJiBhdWRpb0J1c0RhdGEsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5OjpyZXF1ZXN0QnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVkaWFUaW1l
LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KT4mJiAvKmNvbXBsZXRpb25IYW5kbGVyKi8p
CiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKGF1ZGlvQnVzRGF0
YS5mcmFtZXNUb1Byb2Nlc3MpOwotICAgIEFTU0VSVChhdWRpb0J1c0RhdGEuY2hhbm5lbEJ1ZmZl
cnMuc2l6ZSgpKTsKLSAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShhdWRpb0J1
c0RhdGEuY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpLCBhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNz
LCBmYWxzZSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF1ZGlvQnVzRGF0YS5jaGFu
bmVsQnVmZmVycy5zaXplKCk7ICsraSkKLSAgICAgICAgYXVkaW9CdXMtPnNldENoYW5uZWxNZW1v
cnkoaSwgKGZsb2F0KilhdWRpb0J1c0RhdGEuY2hhbm5lbEJ1ZmZlcnNbaV0tPmRhdGEoKSwgYXVk
aW9CdXNEYXRhLmZyYW1lc1RvUHJvY2Vzcyk7Ci0KLSAgICBtX2NhbGxiYWNrLnJlbmRlcigwLCBh
dWRpb0J1cy5nZXQoKSwgYXVkaW9CdXNEYXRhLmZyYW1lc1RvUHJvY2VzcywgYXVkaW9CdXNEYXRh
Lm91dHB1dFBvc2l0aW9uKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIAorICAgIC8v
IEZldGNoIGJ1ZmZlciBhbmQgbGV0IEdQVSBwcm9jZXNzIGtub3cgdGhlIGJ1ZmZlciBpcyBhdmFp
bGFibGUKKyAgICAvLyBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQpAQCAt
MTMzLDYgKzE0MCwyOCBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlzcGF0
Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKICAgICBtX3RocmVhZFRhc2tRdWV1
ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQg
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkq
IHN0b3JhZ2UpCit7CisgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIGlmIChz
dG9yYWdlKQorICAgICAgICBzdG9yYWdlLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKworICAgIC8vIEZJWE1FOiBTZW5kIHRoZSBhY3R1
YWwgZGF0YSBzaXplIHdpdGggSVBDSGFuZGxlLgorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9X
UykKKyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9IGhhbmRsZS5zaXplKCk7CisjZWxzZQorICAgIHVp
bnQ2NF90IGRhdGFTaXplID0gMDsKKyNlbmRpZgorCisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24o
c3RyZWFtRm9ybWF0KTsKKyAgICBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVz
Y3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCB7
IG1fZGVzdGluYXRpb25JRCwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRs
ZSksIGRhdGFTaXplIH0sIHN0cmVhbUZvcm1hdCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fbnVt
YmVyT2ZGcmFtZXMpIH0sIDApOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKaW5kZXggYzRhZGI3NTYwZDQ2Mzc1OGVlNzE1NmYw
MWVlYzk5NThkM2NmZGU2Ni4uNjViMzRlOTkyYzM5YTgxYTJhODc5ZTBiYTA1OTAwMzRjOTE4ZGE1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCkBAIC0yOCwyNCArMjgsMzMgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCiAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiUmVtb3RlQXVkaW9CdXNEYXRhLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzU3VwcGxlbWVudC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkUXVldWUuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiU2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb25Db2Nv
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjZWxzZQorI2luY2x1ZGUg
PFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1jbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6
QXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJl
Y2VpdmVyIHsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eQorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYQorICAg
ICwgcHVibGljIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpDbGllbnQKKyNlbHNlCisgICAgOiBw
dWJsaWMgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbgorI2VuZGlmCisgICAgLCBwdWJsaWMgSVBD
OjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSk7CiBwdWJsaWM6Ci0gICAgdXNpbmcg
QXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRpb0J1czsKICAgICB1c2luZyBBdWRpb0lPQ2FsbGJhY2sg
PSBXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2s7CiAgICAgdXNpbmcgV2ViQ29yZTo6QXVkaW9EZXN0
aW5hdGlvbjo6cmVmOwogICAgIHVzaW5nIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmRlcmVm
OwpAQCAtNTcsMTYgKzY2LDIzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tR1BVUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQog
Ci0gICAgdm9pZCByZW5kZXJCdWZmZXIoY29uc3QgV2ViS2l0OjpSZW1vdGVBdWRpb0J1c0RhdGEm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVxdWVzdEJ1ZmZlcihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMs
IHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVuZEZyYW1lKT4mJik7CiAgICAgdm9pZCBk
aWRDaGFuZ2VJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcpOwogCiBwcml2YXRlOgotICAgIC8vIFdl
YkNvcmU6OkF1ZGlvRGVzdGluYXRpb24KLSAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVu
Y3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKLSAgICBib29sIGlzUGxheWluZygpIG92ZXJyaWRlIHsg
cmV0dXJuIG1faXNQbGF5aW5nOyB9Ci0gICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZl
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZnJhbWVzUGVyQnVmZmVyOyB9CisgICAgdm9p
ZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUb1Jl
bmRlclRocmVhZCkgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisgICAgYm9vbCBpc1Bs
YXlpbmcoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQor
ICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgdW5z
aWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorI2VuZGlm
CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6
Q2xpZW50CisgICAgdm9pZCBzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqKTsKKyNlbmRpZgog
CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAtNzYsMTEgKzkyLDE0
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZNZXNzYWdlUmVjZWl2ZXIoKSBmaW5hbCB7IFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb246OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZk1lc3NhZ2VSZWNl
aXZlcigpIGZpbmFsIHsgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6ZGVyZWYoKTsgfQogCi0g
ICAgQXVkaW9JT0NhbGxiYWNrJiBtX2NhbGxiYWNrOwotICAgIGZsb2F0IG1fc2FtcGxlUmF0ZSB7
IDAuIH07Ci0gICAgdW5zaWduZWQgbV9mcmFtZXNQZXJCdWZmZXIgeyAwIH07CiAgICAgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgbV9kZXN0aW5hdGlvbklEOwogICAgIGJvb2wgbV9p
c1BsYXlpbmcgeyBmYWxzZSB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOworICAgIGludDY0X3Qg
bV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKKyNlbmRpZgorCiAgICAgRnVuY3Rpb248dm9pZChGdW5j
dGlvbjx2b2lkKCk+JiYpPiBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQ7CiAgICAgUmVmUHRyPFRo
cmVhZD4gbV9yZW5kZXJUaHJlYWQ7CiAgICAgQ3Jvc3NUaHJlYWRRdWV1ZTxGdW5jdGlvbjx2b2lk
KCk+PiBtX3RocmVhZFRhc2tRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggYWUxZmM3MDY5ODcxNGM4NzA1ZTU4MjQ4MTk0NjViYWIz
MjYzZjA2MS4uYmFhOGViZGY5ZTUyM2U5YjBlMGU0NGFkYzhiNTc4NWVmMDg4Nzc0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDEw
ICsyNCw4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQog
CiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgTm90UmVmQ291bnRlZCB7
Ci0KLSAgICBSZW5kZXJCdWZmZXIoc3RydWN0IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhIGRh
dGEpIC0+ICgpIEFzeW5jCisgICAgcmVxdWVzdEJ1ZmZlcigpIC0+IChNZWRpYVRpbWUgdGltZSwg
dWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IGVu
ZEZyYW1lKSBBc3luYwogICAgIERpZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxheWluZykKLQog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAppbmRl
eCA4Nzk5ZjE5ODQ3MTQxMWVjNmY3MzlhMzg3OTM2NGQyNDc1MTJlYTQ0Li4yZTBhNmIxZjgzOTMy
YWU4MzM1ZGY0ZWFhNGViNTM1Zjg1ODcxMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXI6OnB1c2hTYW1wbGVzKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgV2Vi
CiAKICAgICAgICAgLy8gQWxsb2NhdGUgYSByaW5nIGJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8gY29u
dGFpbiAyIHNlY29uZHMgb2YgYXVkaW8uCiAgICAgICAgIG1fbnVtYmVyT2ZGcmFtZXMgPSBtX2Rl
c2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIDI7Ci0gICAgICAgIG1fcmluZ0J1ZmZlci0+YWxsb2Nh
dGUobV9kZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCBtX251bWJlck9mRnJhbWVzKTsK
KyAgICAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShtX2Rlc2NyaXB0aW9uLCBtX251bWJlck9m
RnJhbWVzKTsKICAgICB9CiAKICAgICBBU1NFUlQoaXM8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJM
aXN0PihhdWRpb0RhdGEpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411508</attachid>
            <date>2020-10-15 16:46:35 -0700</date>
            <delta_ts>2020-10-15 18:47:55 -0700</delta_ts>
            <desc>WIP patch (working with CARingBuffer)</desc>
            <filename>bug-217715-20201015164634.patch</filename>
            <type>text/plain</type>
            <size>91252</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ3MWFlZjc3YmQ4NmZl
MTBkMmJjMDQ4NWE5OWUzZGQ3ZTI0NTkxZS4uOGJlYjM3Mzc4MDczMmExMDQ3NmRlZDRmMmNmMTA2
MjI2MGQ5Y2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE0ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9j
ZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8g
ZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6aW5wdXRQcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRV
bml0QWRhcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRv
cklPUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2spOgorCiAyMDIwLTEwLTE0ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFZlY3Rvck1hdGg6Om11
bHRpcGx5VGhlbkFkZFNjYWxhcigpIGZvciBjbGFyaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkYjZjMTc4OGNi
ZmJhYjEzMGQyZWIzMDVkYTc1ZTI5YmI4ZGExNDcuLmI0OGI4NzIyZWIyNjE3NjdmYjEyMjhiZmNm
ZWM1MDk0ZmRmM2FhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMTAtMTQgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWEgaW4gR1BVIFBy
b2Nlc3NdIFVzZSBDQVJpbmdCdWZmZXIgdG8gdHJhbnNmZXIgYXVkaW8gZGF0YSBvZiBhbiBhdWRp
byBkZXN0aW5hdGlvbiBmcm9tIGEgd2ViIHByb2Nlc3MgdG8gdGhlIEdQVSBQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3MTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93bklm
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6YXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246
OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OnJl
bmRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b246OmlzUGxheWluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OmZyYW1lc1BlckJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9CdXNEYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3Jh
Z2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpyZW5kZXJCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6cHVzaFNh
bXBsZXMpOgorCiAyMDIwLTEwLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBub24tQ29jb2EgcGxhdGZvcm1zICYg
cmVsZWFzZSBidWlsZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggYzU2NzBjMzY0ODU3NWU4ODBlYjY4NWUw
YTNhMTM1YzI5MjQzNzViYi4uZTMyMjM3MjNkNzc4ZmVlMTNmNDcyYzRkMjExMGVjOTM2YjgwZmFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
QXVkaW9EZXN0aW5hdGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfkF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCi0gICAgLy8gQXVkaW9Ob2RlICAgCisgICAgLy8g
QXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCkgb3ZlcnJpZGUgeyB9OyAvLyB3ZSdy
ZSBwdWxsZWQgYnkgaGFyZHdhcmUgc28gdGhpcyBpcyBuZXZlciBjYWxsZWQKICAgICAKICAgICAv
LyBUaGUgYXVkaW8gaGFyZHdhcmUgY2FsbHMgcmVuZGVyKCkgdG8gZ2V0IHRoZSBuZXh0IHJlbmRl
ciBxdWFudHVtIG9mIGF1ZGlvIGludG8gZGVzdGluYXRpb25CdXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCBmOTU5ZTM5ODI5NjYwNTA5MDNhYWM4NWI4YWYyNDJkYTE1NDM0YTg5Li41OTI2
NjA2Mzg5OGY0MTM2YTliZjU1YzI2ODkxYTU2YmJhMzE2ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTIwMywxOSArMjAzLDIwIEBAIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQogcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNw
cAorcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAKIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAKIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FSaW5nQnVm
ZmVyLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwCi1wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgQG5vLXVuaWZ5CitwbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uSGVscGVySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9C
dXNNYWMubW0KLXBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
SGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25N
YWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3YjUzM2VmNmM1ZjQ0Y2RiODdkYmI4MTIxMTc4OTVjMGNkYzMxZWUzLi42ODYw
ODBjYzExZGZiNTAxZmZkNjNmNTJlYjQxYThiNDJhNmUxYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzMsNiArNjMzLDcg
QEAKIAkJMURBQjMxMTIyNTFENkJGMzAwRkM5NDg1IC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEIzMUEx
MjM3OURDODMwMDg4M0ZERSAvKiBXZWJWaWRlb0NvbnRhaW5lckxheWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMURBQjMxMTQyNTFENzI1QzAw
RkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxREFCMzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXll
ck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxREFCMzExNTI1MUQ3NERCMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RTFD
NTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMURCNjZEM0IyNTM3QTk1NjAwQjY3
MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMURCQzFCNTYyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFERDNCNEM2
MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0
QTMgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tICovOyB9OwogCQkxREY3RTgxRjI1MUE5RTA2
MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00MTI3LDcgKzQxMjgsNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2
MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRDA2M0Y4MjFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MDFFMjNG
QTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgKi87IH07CiAJCUNEMDYzRjgzMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MTFFMjNGQTg5MDA4MTJCRTMgLyogSW5p
dERhdGFSZWdpc3RyeS5oICovOyB9OwotCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHAgKi87IH07CisJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVu
aXRBZGFwdG9ySU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9y
SU9TLmNwcCAqLzsgfTsKIAkJQ0QxMUIzRTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLzsgfTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8q
IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRDE3QTQ1RDIxMzc0MDgxMDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxN0E0NTky
MTM3NDAxNjAwNzlFQzdCIC8qIFVuaWZpZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKQEAgLTUzMDQs
NyArNTMwNSw2IEBACiAJCUZEMzE2MEFCMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2
ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQzMTYwNzUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggKi87IH07
CiAJCUZEMzE2MEFEMTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzcxMkIwMjZG
NzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggKi87IH07CiAJCUZEMzE2MEFGMTJCMDI2
RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5o
ICovOyB9OwotCQlGRDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYw
QjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLzsgfTsKIAkJRkQz
MTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFB
MzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBF
MUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDM1OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJh
bVRpbWVsaW5lLmggKi87IH07CiAJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0Yx
NzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY3NTQsNiArNjc1NCw4IEBACiAJCTFEMDAyNkE5MjM3NEY5
RDkwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2
QzUgLyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBQjMxMTMy
NTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZp
ZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEQjY2RDM3
MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMURCNjZEMzgyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJl
SW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZU9ic2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZEMjExQkExMkEwMDRC
NzgwRSAvKiBOYXZpZ2F0b3JTaGFyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdh
dG9yU2hhcmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRjIxMUJB
ODQxMDA0Qjc4MEUgLyogU2hhcmVEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFy
ZURhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyOTQsOCArMTQyOTYs
NyBAQAogCQlDRDA2M0Y4MDFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0RGF0YVJlZ2lzdHJ5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwNjNGODExRTIzRkE4OTAwODEyQkUz
IC8qIEluaXREYXRhUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5pdERhdGFSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBDOEI1
ODIxNDFDOENBMDA2MkY1OUQgLyogTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFw
dG9ySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxMUIzREYyMjdDQUFB
OTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDExQjNFMDIyN0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFy
c2VyTUlNRVR5cGVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWU3RyZWFtRGF0YVBh
cnNlck1JTUVUeXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3
REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1NjAsOCArMTY1NjEsNyBAQAogCQlGRDMxNjA3
ODEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWZWN0b3JNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkQzMTYwNzkxMkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVjdG9yTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb0J1c01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1
ZGlvRGVzdGluYXRpb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25NYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZEMzE2MEI4MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQjkxMkIwMjcyQTAw
QzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkQzMTYwQkExMkIwMjcyQTAwQzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZGVEZyYW1lTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI3Mjk2LDEwICsyNzI5Niw5IEBACiAJCUNEMEVFRTBEMTQ3NDNF
NDgwMDNFQUZBMiAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcCAqLywKLQkJCQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlv
bklPUy5oICovLAogCQkJCUNENTU5NjhGMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFk
ZXJJT1MuY3BwICovLAogCQkJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVS
ZWFkZXJJT1MuaCAqLywKKwkJCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRw
dXRVbml0QWRhcHRvcklPUy5jcHAgKi8sCiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8q
IEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywKIAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyog
TWVkaWFTZXNzaW9uSGVscGVySU9TLmggKi8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4
IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSAqLywKQEAgLTI3MzY0LDYgKzI3MzYzLDggQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTQxMzE1MTg0MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwICovLAogCQkJCTQxMzE1MTg2MjM1Nzc0NUUwMDExNUU2RSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCAqLywKKwkJCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgKi8sCisJCQkJMURCNjZEMzcyNTM2NzhFQTAw
QjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCAqLywKIAkJCQkwNzNCODc2MjFFNDM4
NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcCAqLywKIAkJCQkwNzNCODc2
MzFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggKi8sCiAJCQkJMDcz
Qjg3NjUxRTQzODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oICovLApAQCAt
MzAyNzUsMTIgKzMwMjc2LDExIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAqLywKLQkJ
CQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8s
Ci0JCQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAq
LywKIAkJCQlGRDMxNjBCODEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCOTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFj
LmggKi8sCiAJCQkJQ0QyRjRBMjUxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0
ZW5lck1hYy5jcHAgKi8sCiAJCQkJQ0QyRjRBMjYxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFy
ZHdhcmVMaXN0ZW5lck1hYy5oICovLAorCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBB
dWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1
RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMx
QTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8sCiAJCQkpOwpAQCAtMzA1NjEsNyArMzA1NjEsNiBA
QAogCQkJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGlu
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovLAotCQkJCUZEMzE2MEJEMTJCMDI3
MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAwODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDgwMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNTc3LDYgKzMwNTc2LDcgQEAK
IAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU3MTQ2N0IzMjRBQkFFRjIwMEZCMkY1MCAvKiBBdWRpb05vZGVPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9O
b2RlT3V0cHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkxREI2NkQzQjI1MzdBOTU2MDBCNjcxQjkg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUQx
MkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUGFyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzU2
OTlFMjUyQ0YzNjIwMEUxQjk1NiAvKiBBdWRpb1BhcmFtRGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNCOTg3MEMyNTIyNUY4MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1NYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzA2NTQsNyArMzA2NTQsNiBAQAogCQkJCTUxNzQxRDBGMEIwNzI1OUEw
MEVENDQyQyAvKiBCYWNrRm9yd2FyZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOEM4
MUUxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBMUI4N0QyMDg3QzRDMDAwOTc5QTc1IC8qIEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOTQ3MjE3MjUzMjNDMjEwMEYxNTNDOCAvKiBC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMjRFRTgwQzI2
NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2MEJCNjE2MUQw
QTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
MTk4RkJGMjRBMTYwREQwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAq
LywKQEAgLTM1MjM5LDggKzM1MjM4LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCUE5Nzg3Q0I0MUY1
RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzFGN0I3MzEyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVCNjc4MDAx
RDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMEVF
RTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25J
T1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2NDMgLyogQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREUzQTg1NzE3
RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9u
LmgKaW5kZXggMTYwYzY1NzhlMTVlZDVlYTc1MjVkYzc2OGJkNGVmM2ZkYzc0ZjRmZi4uNDE5NjU1
MmQ5MTVhODliNGEwNWY4NDc2NGQ1ZmVhYzA1NjYyNDk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4gaW4gQXVk
aW9EZXN0aW5hdGlvbiB0byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUKICAgICB2aXJ0dWFsIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7Ci0gICAgc3RhdGljIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUoKTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Qg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCAxZDBmNGUyODgxMTg3ZTdiMzUw
MjkwYjAyMzNjYjhiMGMyMWFmNGU2Li4xMGM5OTY4N2QwMTFkMzNkYWU1NWYyZWY1MGIzZjRiMmIx
OTZlOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTM1LDYgKzM1LDEwIEBACiAj
aW5jbHVkZSAiTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgiCiAjaW5jbHVkZSAiUHVzaFB1bGxGSUZP
LmgiCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3RleHByIHNpemVfdCBmaWZvU2l6ZSA9IDk2
ICogQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwpAQCAtNTYsNyArNjAsNiBAQCBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGNvbnN0CiAgICAgICAgIHJldHVybiBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OmNyZWF0ZU92ZXJyaWRlKGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIAogICAgIGF1dG8gZGVz
dGluYXRpb24gPSBhZG9wdFJlZigqbmV3IEF1ZGlvRGVzdGluYXRpb25Db2NvYShjYWxsYmFjaywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOwotICAgIGRlc3RpbmF0aW9uLT5j
b25maWd1cmUoKTsKICAgICByZXR1cm4gZGVzdGluYXRpb247CiB9CiAKQEAgLTcwLDE1ICs3Mywx
NiBAQCB1bnNpZ25lZCBsb25nIEF1ZGlvRGVzdGluYXRpb246Om1heENoYW5uZWxDb3VudCgpCiAg
ICAgcmV0dXJuIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLm1heGltdW1OdW1iZXJPZk91
dHB1dENoYW5uZWxzKCk7CiB9CiAKLUF1ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgOiBtX291dHB1dFVuaXQoMCkKK0F1
ZGlvRGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFj
ayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBs
ZVJhdGUsIGJvb2wgY29uZmlndXJlQXVkaW9PdXRwdXRVbml0KQorICAgIDogbV9hdWRpb091dHB1
dFVuaXRBZGFwdG9yKCp0aGlzKQogICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAsIG1f
b3V0cHV0QnVzKEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZPdXRwdXRDaGFubmVscywgQXVkaW9V
dGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBmYWxzZSkucmVsZWFzZU5vbk51bGwoKSkKICAg
ICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZPdXRwdXRDaGFubmVscywg
QXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplKS5yZWxlYXNlTm9uTnVsbCgpKQogICAg
ICwgbV9maWZvKG1ha2VVbmlxdWVSZWY8UHVzaFB1bGxGSUZPPihudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmaWZvU2l6ZSkpCiAgICAgLCBtX2NvbnRleHRTYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiB7
Ci0gICAgY29uZmlndXJlKCk7CisgICAgaWYgKGNvbmZpZ3VyZUF1ZGlvT3V0cHV0VW5pdCkKKyAg
ICAgICAgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLmNvbmZpZ3VyZShoYXJkd2FyZVNhbXBsZVJh
dGUoKSwgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CiAKICAgICBhdXRvIGhhcmR3YXJlU2FtcGxl
UmF0ZSA9IHRoaXMtPmhhcmR3YXJlU2FtcGxlUmF0ZSgpOwogICAgIGlmIChzYW1wbGVSYXRlICE9
IGhhcmR3YXJlU2FtcGxlUmF0ZSkgewpAQCAtODcsMTEgKzkxLDcgQEAgQXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywg
dW5zaWduZWQKICAgICB9CiB9CiAKLUF1ZGlvRGVzdGluYXRpb25Db2NvYTo6fkF1ZGlvRGVzdGlu
YXRpb25Db2NvYSgpCi17Ci0gICAgaWYgKG1fb3V0cHV0VW5pdCkKLSAgICAgICAgQXVkaW9Db21w
b25lbnRJbnN0YW5jZURpc3Bvc2UobV9vdXRwdXRVbml0KTsKLX0KK0F1ZGlvRGVzdGluYXRpb25D
b2NvYTo6fkF1ZGlvRGVzdGluYXRpb25Db2NvYSgpID0gZGVmYXVsdDsKIAogdW5zaWduZWQgQXVk
aW9EZXN0aW5hdGlvbkNvY29hOjpudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKIHsKQEAg
LTEwNyw3ICsxMDcsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rp
b248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVAogewogICAgIExPRyhNZWRp
YSwgIkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQiKTsKICAgICBtX2Rpc3BhdGNoVG9SZW5k
ZXJUaHJlYWQgPSBXVEZNb3ZlKGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpOwotICAgIE9TU3RhdHVz
IHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7CisgICAgT1NTdGF0
dXMgcmVzdWx0ID0gbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLnN0YXJ0KCk7CiAKICAgICBpZiAo
IXJlc3VsdCkKICAgICAgICAgc2V0SXNQbGF5aW5nKHRydWUpOwpAQCAtMTE2LDcgKzExNiw3IEBA
IHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9u
PHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3Rv
cCgpCiB7CiAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wIik7Ci0g
ICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PdXRwdXRVbml0U3RvcChtX291dHB1dFVuaXQpOwor
ICAgIE9TU3RhdHVzIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdG9wKCk7CiAg
ICAgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKIAogICAgIGlmICghcmVzdWx0
KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRJc1Bs
YXlpbmcoYm9vbCBpc1BsYXlpbmcpCiAgICAgbV9jYWxsYmFjay5pc1BsYXlpbmdEaWRDaGFuZ2Uo
KTsKIH0KIAotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIHN0cmVhbUZvcm1hdCkKK3Zv
aWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24o
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzdHJlYW1Gb3JtYXQpCiB7CiAgICAgY29uc3Qg
aW50IGJ5dGVzUGVyRmxvYXQgPSBzaXplb2YoRmxvYXQzMik7CiAgICAgY29uc3QgaW50IGJpdHNQ
ZXJCeXRlID0gODsKQEAgLTE1NywxMCArMTU3LDMwIEBAIHN0YXRpYyB2b2lkIGFzc2lnbkF1ZGlv
QnVmZmVyc1RvQnVzKEF1ZGlvQnVmZmVyKiBidWZmZXJzLCBBdWRpb0J1cyYgYnVzLCBVSW50MzIK
ICAgICB9CiB9CiAKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJS
ZW5kZXIoQXVkaW9CdXMmIGJ1cywgVUludDMyIG51bWJlck9mRnJhbWVzKQoreworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICAvLyBDbGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUuLCBbLTEuMCwgMS4wXSkK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsgKytp
KSB7CisgICAgICAgIGF1dG8qIGNoYW5uZWwgPSBidXMuY2hhbm5lbChpKTsKKyAgICAgICAgaWYg
KCFjaGFubmVsLT5pc1NpbGVudCgpKQorICAgICAgICAgICAgVmVjdG9yTWF0aDo6Y2xhbXAoY2hh
bm5lbC0+ZGF0YSgpLCAtMSwgMSwgY2hhbm5lbC0+bXV0YWJsZURhdGEoKSwgbnVtYmVyT2ZGcmFt
ZXMpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGJ1cyk7CisgICAgVU5VU0VEX1BB
UkFNKG51bWJlck9mRnJhbWVzKTsKKyNlbmRpZgorfQorCitib29sIEF1ZGlvRGVzdGluYXRpb25D
b2NvYTo6aGFzRW5vdWdoRnJhbWVzKFVJbnQzMiBudW1iZXJPZkZyYW1lcykgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9maWZvLT5sZW5ndGgoKSA+PSBudW1iZXJPZkZyYW1lczsKK30KKwogLy8gUHVs
bHMgb24gb3VyIHByb3ZpZGVyIHRvIGdldCByZW5kZXJlZCBhdWRpbyBzdHJlYW0uCiBPU1N0YXR1
cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCogdGlt
ZXN0YW1wLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQog
ewotICAgIGlmIChtX2ZpZm8tPmxlbmd0aCgpIDwgbnVtYmVyT2ZGcmFtZXMpCisgICAgaWYgKCFo
YXNFbm91Z2hGcmFtZXMobnVtYmVyT2ZGcmFtZXMpKQogICAgICAgICByZXR1cm4gbm9FcnI7CiAK
ICAgICBpZiAodGltZXN0YW1wKSB7CkBAIC0xNzIsNyArMTkyLDcgQEAgT1NTdGF0dXMgQXVkaW9E
ZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwg
VUludDMyIG4KICAgICAgICAgbV9vdXRwdXRUaW1lc3RhbXAgPSBBdWRpb0lPUG9zaXRpb24geyB9
OwogCiAgICAgYXV0byogYnVmZmVycyA9IGlvRGF0YS0+bUJ1ZmZlcnM7Ci0gICAgVUludDMyIG51
bWJlck9mQnVmZmVycyA9IGlvRGF0YS0+bU51bWJlckJ1ZmZlcnM7CisgICAgYXV0byBudW1iZXJP
ZkJ1ZmZlcnMgPSBpb0RhdGEtPm1OdW1iZXJCdWZmZXJzOwogCiAgICAgLy8gQXNzb2NpYXRlIHRo
ZSBkZXN0aW5hdGlvbiBkYXRhIGFycmF5IHdpdGggdGhlIG91dHB1dCBidXMgdGhlbiBmaWxsIHRo
ZSBGSUZPLgogICAgIGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKGJ1ZmZlcnMsIG1fb3V0cHV0QnVz
LmdldCgpLCBudW1iZXJPZkJ1ZmZlcnMsIG51bWJlck9mRnJhbWVzLCAwLCBudW1iZXJPZkZyYW1l
cyk7CkBAIC0yMTAsMTMgKzIzMCw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5k
ZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8v
IERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3Mq
LCBjb25zdCBBdWRpb1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywg
VUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBh
dXRvKiBhdWRpb091dHB1dCA9IHN0YXRpY19jYXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVz
ZXJEYXRhKTsKLSAgICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJl
ck9mRnJhbWVzLCBpb0RhdGEpOwotfQotCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJv
dmlkZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0
aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAw
ODk0ZDYyMWEyZjE1MzIyNTEyNzM2NTBiNmU1YTNkM2VjOTk2ZjhhLi40Y2JmYTNjMzhkZGZhMWNk
NTMwZjA5MjcwMDA5ZmRkY2E2OGYwYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgogI2luY2x1ZGUgIkF1
ZGlvSU9DYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCIKICNp
bmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlv
VW5pdC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQzLDQ3ICs0NCw0MiBAQCBjbGFz
cyBQdXNoUHVsbEZJRk87CiB1c2luZyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlk
ZSA9IFJlZjxBdWRpb0Rlc3RpbmF0aW9uPigqKShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZh
dWx0IG91dHB1dCBBdWRpb1VuaXQKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1Ymxp
YyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CitjbGFzcyBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIEF1
ZGlvVW5pdFJlbmRlcmVyLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0g
ICAgQXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwotICAgIHZpcnR1YWwgfkF1ZGlv
RGVzdGluYXRpb25Db2NvYSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvRGVzdGluYXRpb25D
b2NvYShBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBm
bG9hdCBzYW1wbGVSYXRlLCBib29sIGNvbmZpZ3VyZUF1ZGlvT3V0cHV0VW5pdCA9IHRydWUpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25Db2NvYSgpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENyZWF0ZUF1ZGlvRGVzdGluYXRpb25Db2NvYU92ZXJy
aWRlIGNyZWF0ZU92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBoYXNFbm91Z2hGcmFtZXMoVUludDMyIG51bWJlck9mRnJhbWVzKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIg
bnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVuZGVyT25SZW5kZXJpbmdUaGVhZChzaXplX3QgZnJh
bWVzVG9SZW5kZXIpOworCiAgICAgdm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CiAKLSAgICBib29s
IGlzUGxheWluZygpIGZpbmFsIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgYm9vbCBpc1Bs
YXlpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzUGxheWluZzsgfQogICAgIGZsb2F0IHNhbXBs
ZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRleHRTYW1wbGVSYXRlOyB9Ci0gICAg
dW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgZmluYWw7Ci0gICAgQXVkaW9Vbml0JiBv
dXRwdXRVbml0KCkgeyByZXR1cm4gbV9vdXRwdXRVbml0OyB9CisgICAgV0VCQ09SRV9FWFBPUlQg
dW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgZmluYWw7CiAKICAgICB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gRGVmYXVsdE91dHB1
dFVuaXQgY2FsbGJhY2sKLSAgICBzdGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJE
YXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwg
VUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3Qq
IGlvRGF0YSk7CiAKLSAgICB2b2lkIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mKTsK
IAogICAgIEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVu
ZGVyVGhyZWFkOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBSZWY8QXVkaW9EZXN0aW5hdGlvbj4g
QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYs
IHVuc2lnbmVkLCB1bnNpZ25lZCwgZmxvYXQpOworCiAgICAgdm9pZCBzdGFydChGdW5jdGlvbjx2
b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RvcCgpIG92
ZXJyaWRlOwogCi0gICAgdm9pZCByZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNU
b1JlbmRlcik7Ci0KLSAgICBmcmllbmQgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGlu
YXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwg
dW5zaWduZWQsIGZsb2F0KTsKLSAgICAKICAgICAvLyBBdWRpb1NvdXJjZVByb3ZpZGVyLgotICAg
IHZvaWQgcHJvdmlkZUlucHV0KEF1ZGlvQnVzKiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKIAotICAgIHZvaWQgY29uZmlndXJlKCk7CiAgICAg
dm9pZCBwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVkaW9CdXMmLCBVSW50MzIgbnVtYmVyT2ZGcmFt
ZXMpOwogCi0gICAgT1NTdGF0dXMgcmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMy
IG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7Ci0KLSAgICBBdWRpb1Vu
aXQgbV9vdXRwdXRVbml0OworICAgIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1
dFVuaXRBZGFwdG9yOwogICAgIEF1ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKIAogICAgIC8v
IFRvIHBhc3MgdGhlIGRhdGEgZnJvbSBGSUZPIHRvIHRoZSBhdWRpbyBkZXZpY2UgY2FsbGJhY2su
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091
dHB1dFVuaXRBZGFwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MDY2NDgzYTMwMzNjZjEy
MWZlYzJhZmJiM2U1ODZmMmMyZjFlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcApAQCAtMCww
ICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1
ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworQXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0
QWRhcHRvcihBdWRpb1VuaXRSZW5kZXJlciYgcmVuZGVyZXIpCisgICAgOiBtX291dHB1dFVuaXQo
MCkKKyAgICAsIG1fYXVkaW9Vbml0UmVuZGVyZXIocmVuZGVyZXIpCit7Cit9CisKK0F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3I6On5BdWRpb091dHB1dFVuaXRBZGFwdG9yKCkKK3sKKyAgICBpZiAobV9v
dXRwdXRVbml0KQorICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShtX291dHB1
dFVuaXQpOworfQorCitPU1N0YXR1cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdGFydCgpCit7
CisgICAgcmV0dXJuIEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7Cit9CisKK09T
U3RhdHVzIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OnN0b3AoKQoreworICAgIHJldHVybiBBdWRp
b091dHB1dFVuaXRTdG9wKG1fb3V0cHV0VW5pdCk7Cit9CisKKy8vIERlZmF1bHRPdXRwdXRVbml0
IGNhbGxiYWNrCitPU1N0YXR1cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjppbnB1dFByb2Modm9p
ZCogdXNlckRhdGEsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1l
U3RhbXAqIHRpbWVzdGFtcCwgVUludDMyIC8qYnVzTnVtYmVyKi8sIFVJbnQzMiBudW1iZXJPZkZy
YW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCit7CisgICAgYXV0byogYWRhcHRvciA9IHN0
YXRpY19jYXN0PEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IqPih1c2VyRGF0YSk7CisgICAgcmV0dXJu
IGFkYXB0b3ItPm1fYXVkaW9Vbml0UmVuZGVyZXIucmVuZGVyKHRpbWVzdGFtcCwgbnVtYmVyT2ZG
cmFtZXMsIGlvRGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJm
OGFlZTMzMDdkMTIyOWFjMTI5MTdhNWM1MzMxODk2YTgxOTBhMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvVW5pdFJlbmRlcmVyIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5BdWRpb1VuaXRSZW5kZXJlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFs
IE9TU3RhdHVzIHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBudW1iZXJPZkZy
YW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpID0gMDsKK307CisKK2NsYXNzIEF1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IoQXVkaW9Vbml0UmVuZGVyZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QXVk
aW9PdXRwdXRVbml0QWRhcHRvcigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25maWd1
cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBPU1N0YXR1cyBzdGFydCgpOworICAgIFdFQkNPUkVf
RVhQT1JUIE9TU3RhdHVzIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgT1NTdGF0dXMg
aW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyosIGNv
bnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJlck9mRnJh
bWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CisKKyAgICBBdWRpb1VuaXQgbV9vdXRwdXRV
bml0OworICAgIEF1ZGlvVW5pdFJlbmRlcmVyJiBtX2F1ZGlvVW5pdFJlbmRlcmVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3Rp
bmF0aW9uSU9TLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ3MzNkZTdmNzVk
YTlhYjZkMDg3YTIzMWFkOGViOTgxZGM2ODg4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0KLSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCIKLQotI2luY2x1ZGUgIkF1
ZGlvU2Vzc2lvbi5oIgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktf
RlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29t
cG9uZW50RmluZE5leHQsIEF1ZGlvQ29tcG9uZW50LCAoQXVkaW9Db21wb25lbnQgaW5Db21wb25l
bnQsIGNvbnN0IEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gKmluRGVzYyksIChpbkNvbXBvbmVu
dCwgaW5EZXNjKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29tcG9uZW50SW5zdGFu
Y2VOZXcsIE9TU3RhdHVzLCAoQXVkaW9Db21wb25lbnQgaW5Db21wb25lbnQsIEF1ZGlvQ29tcG9u
ZW50SW5zdGFuY2UgKm91dEluc3RhbmNlKSwgKGluQ29tcG9uZW50LCBvdXRJbnN0YW5jZSkpCi1T
T0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRBZGRQcm9wZXJ0eUxpc3RlbmVyLCBPU1N0
YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9V
bml0UHJvcGVydHlMaXN0ZW5lclByb2MgaW5Qcm9jLCB2b2lkICppblByb2NVc2VyRGF0YSksIChp
blVuaXQsIGluSUQsIGluUHJvYywgaW5Qcm9jVXNlckRhdGEpKQotU09GVF9MSU5LKEF1ZGlvVG9v
bGJveCwgQXVkaW9Vbml0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwg
QXVkaW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBBdWRpb1Vu
aXRFbGVtZW50IGluRWxlbWVudCwgdm9pZCAqb3V0RGF0YSwgVUludDMyICppb0RhdGFTaXplKSwg
KGluVW5pdCwgaW5JRCwgaW5TY29wZSwgaW5FbGVtZW50LCBvdXREYXRhLCBpb0RhdGFTaXplKSkK
LVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEluaXRpYWxpemUsIE9TU3RhdHVzLCAo
QXVkaW9Vbml0IGluVW5pdCksIChpblVuaXQpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVk
aW9Vbml0U2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwgQXVkaW9Vbml0
UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNjb3BlLCBBdWRpb1VuaXRFbGVtZW50
IGluRWxlbWVudCwgY29uc3Qgdm9pZCAqaW5EYXRhLCBVSW50MzIgaW5EYXRhU2l6ZSksIChpblVu
aXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgaW5EYXRhLCBpbkRhdGFTaXplKSkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJl
KCkKLXsKLSAgICBjb25zdCBpbnQga1ByZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7Ci0KLSAgICAv
LyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0Ci0gICAgQXVkaW9Db21wb25l
bnQgY29tcDsKLSAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7Ci0KLSAgICBkZXNj
LmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7Ci0gICAgZGVzYy5jb21wb25l
bnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87Ci0gICAgZGVzYy5jb21wb25l
bnRNYW51ZmFjdHVyZXIgPSBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0FwcGxlOwotICAgIGRlc2Mu
Y29tcG9uZW50RmxhZ3MgPSAwOwotICAgIGRlc2MuY29tcG9uZW50RmxhZ3NNYXNrID0gMDsKLSAg
ICBjb21wID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dCgwLCAmZGVzYyk7Ci0KLSAgICBBU1NFUlQo
Y29tcCk7Ci0KLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3
KGNvbXAsICZvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIFVJbnQz
MiBmbGFnID0gMTsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRwdXRVbml0
KCksCi0gICAgICAgIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKLSAgICAgICAg
a0F1ZGlvVW5pdFNjb3BlX091dHB1dCwKLSAgICAgICAgMCwKLSAgICAgICAgJmZsYWcsCi0gICAg
ICAgIHNpemVvZihmbGFnKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgcmVzdWx0ID0g
QXVkaW9Vbml0SW5pdGlhbGl6ZShvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsK
LSAgICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCi0gICAgQVVSZW5kZXJDYWxsYmFja1N0cnVjdCBp
bnB1dDsKLSAgICBpbnB1dC5pbnB1dFByb2MgPSBpbnB1dFByb2M7Ci0gICAgaW5wdXQuaW5wdXRQ
cm9jUmVmQ29uID0gdGhpczsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShvdXRw
dXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1ZGlvVW5p
dFNjb3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOwotICAgIEFTU0VSVCghcmVz
dWx0KTsKLQotICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLQotICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbik7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0UHJvcGVy
dHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9V
bml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwotICAgIEFT
U0VSVCghcmVzdWx0KTsKLQotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJl
YW1Gb3JtYXQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5p
dCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5w
dXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgQXVkaW9TZXNzaW9uOjpzaGFy
ZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJlZmVycmVkQnVmZmVyU2l6ZSk7
Ci19Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIo
QXVkaW9CdXMmLCBVSW50MzIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRB
ZGFwdG9ySU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091
dHB1dFVuaXRBZGFwdG9ySU9TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTk2MzBmYjYwZjIyYjNlZTU2ZDI0
MmQ3MzA0MzQ4NmI4N2I1NjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwCkBAIC0wLDAgKzEs
MTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQsIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFk
YXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcu
aD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCitTT0ZUX0xJTksoQXVkaW9U
b29sYm94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1ZGlvQ29t
cG9uZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uICppbkRl
c2MpLCAoaW5Db21wb25lbnQsIGluRGVzYykpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRp
b0NvbXBvbmVudEluc3RhbmNlTmV3LCBPU1N0YXR1cywgKEF1ZGlvQ29tcG9uZW50IGluQ29tcG9u
ZW50LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlICpvdXRJbnN0YW5jZSksIChpbkNvbXBvbmVudCwg
b3V0SW5zdGFuY2UpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRkUHJvcGVy
dHlMaXN0ZW5lciwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0
eUlEIGluSUQsIEF1ZGlvVW5pdFByb3BlcnR5TGlzdGVuZXJQcm9jIGluUHJvYywgdm9pZCAqaW5Q
cm9jVXNlckRhdGEpLCAoaW5Vbml0LCBpbklELCBpblByb2MsIGluUHJvY1VzZXJEYXRhKSkKK1NP
RlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1
ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUg
aW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIHZvaWQgKm91dERhdGEsIFVJbnQz
MiAqaW9EYXRhU2l6ZSksIChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgb3V0RGF0
YSwgaW9EYXRhU2l6ZSkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJbml0aWFs
aXplLCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQpLCAoaW5Vbml0KSkKK1NPRlRfTElOSyhB
dWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBp
blVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5TY29wZSwg
QXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIGNvbnN0IHZvaWQgKmluRGF0YSwgVUludDMyIGlu
RGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1lbnQsIGluRGF0YSwgaW5E
YXRhU2l6ZSkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1dFVuaXRB
ZGFwdG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIGNvbnN0IGludCBrUHJlZmVycmVkQnVmZmVyU2l6
ZSA9IDI1NjsKKworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1dFVuaXQK
KyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24g
ZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091dHB1dDsK
KyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9SZW1vdGVJTzsK
KyAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJf
QXBwbGU7CisgICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7CisgICAgZGVzYy5jb21wb25lbnRG
bGFnc01hc2sgPSAwOworICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KDAsICZkZXNj
KTsKKworICAgIEFTU0VSVChjb21wKTsKKworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29t
cG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1
bHQpOworCisgICAgVUludDMyIGZsYWcgPSAxOworICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFBy
b3BlcnR5KG1fb3V0cHV0VW5pdCwKKyAgICAgICAga0F1ZGlvT3V0cHV0VW5pdFByb3BlcnR5X0Vu
YWJsZUlPLAorICAgICAgICBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LAorICAgICAgICAwLAorICAg
ICAgICAmZmxhZywKKyAgICAgICAgc2l6ZW9mKGZsYWcpKTsKKyAgICBBU1NFUlQoIXJlc3VsdCk7
CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG1fb3V0cHV0VW5pdCk7CisgICAg
QVNTRVJUKCFyZXN1bHQpOworICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKKyAgICBBVVJlbmRl
ckNhbGxiYWNrU3RydWN0IGlucHV0OworICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0UHJvYzsK
KyAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOworICAgIHJlc3VsdCA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNh
bGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZpbnB1dCwgc2l6ZW9mKGlucHV0KSk7
CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHN0cmVhbSBmb3JtYXQKKyAgICBB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworCisgICAgVUludDMyIHNp
emUgPSBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKTsKKyAgICByZXN1bHQgPSBB
dWRpb1VuaXRHZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJl
YW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0
LCAmc2l6ZSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgY29uc3RleHByIGludCBieXRl
c1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0c1BlckJ5
dGUgPSA4OworICAgIHN0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0
ZTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOwor
ICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZs
b2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFt
Rm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0
Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9
IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gbnVt
YmVyT2ZPdXRwdXRDaGFubmVsczsKKyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0g
Yml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0
UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBr
QXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAg
QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJl
ZmVycmVkQnVmZmVyU2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9u
TWFjLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBmOWM5ZmZmNTFmNDgzYjQ0
MDQxYTM3NzFmYjQxODdhN2FlZGE3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0
aW5hdGlvbk1hYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FV
RElPKSAmJiBQTEFURk9STShNQUMpCi0KLSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUg
IlZlY3Rvck1hdGguaCIKLSNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpjb25maWd1
cmUoKQotewotICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1dFVuaXQKLSAg
ICBBdWRpb0NvbXBvbmVudCBjb21wOwotICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gZGVz
YzsKLQotICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBlX091dHB1dDsKLSAg
ICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9EZWZhdWx0T3V0cHV0
OwotICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1ZGlvVW5pdE1hbnVmYWN0dXJl
cl9BcHBsZTsKLSAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsKLSAgICBkZXNjLmNvbXBvbmVu
dEZsYWdzTWFzayA9IDA7Ci0gICAgY29tcCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQoMCwgJmRl
c2MpOwotCi0gICAgQVNTRVJUKGNvbXApOwotCi0gICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9D
b21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmb3V0cHV0VW5pdCgpKTsKLSAgICBBU1NFUlQoIXJl
c3VsdCk7Ci0KLSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVuaXQoKSk7
Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHJlbmRlciBjYWxsYmFjawotICAg
IEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7Ci0gICAgaW5wdXQuaW5wdXRQcm9jID0gaW5w
dXRQcm9jOwotICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRoaXM7Ci0gICAgcmVzdWx0ID0g
QXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU2V0
UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZpbnB1dCwgc2l6ZW9m
KGlucHV0KSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHN0cmVhbSBmb3Jt
YXQKLSAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgIHNl
dEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOwotCi0gICAgcmVzdWx0
ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlf
U3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9y
bWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7Ci0gICAgQVNTRVJUKCFy
ZXN1bHQpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvY2Vzc0J1c0FmdGVy
UmVuZGVyKEF1ZGlvQnVzJiBidXMsIFVJbnQzMiBudW1iZXJPZkZyYW1lcykKLXsKLSAgICAvLyBD
bGFtcCB2YWx1ZXMgYXQgMGRiIChpLmUuLCBbLTEuMCwgMS4wXSkKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8q
IGNoYW5uZWwgPSBidXMuY2hhbm5lbChpKTsKLSAgICAgICAgaWYgKCFjaGFubmVsLT5pc1NpbGVu
dCgpKQotICAgICAgICAgICAgVmVjdG9yTWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgpLCAtMSwg
MSwgY2hhbm5lbC0+bXV0YWJsZURhdGEoKSwgbnVtYmVyT2ZGcmFtZXMpOwotICAgIH0KLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykgJiYg
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4
ZWQzZWY3OGM4YzZhM2IxZTA3MGNiNDQwNTk2OWFkYTRhYzNkYTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRv
ck1hYy5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb091dHB1
dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMp
CisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgPENvcmVBdWRpby9BdWRpb0hhcmR3
YXJlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBdWRpb091dHB1dFVuaXRBZGFw
dG9yOjpjb25maWd1cmUoZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKQoreworICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91
dHB1dFVuaXQKKyAgICBBdWRpb0NvbXBvbmVudCBjb21wOworICAgIEF1ZGlvQ29tcG9uZW50RGVz
Y3JpcHRpb24gZGVzYzsKKworICAgIGRlc2MuY29tcG9uZW50VHlwZSA9IGtBdWRpb1VuaXRUeXBl
X091dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9E
ZWZhdWx0T3V0cHV0OworICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1ZGlvVW5p
dE1hbnVmYWN0dXJlcl9BcHBsZTsKKyAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsKKyAgICBk
ZXNjLmNvbXBvbmVudEZsYWdzTWFzayA9IDA7CisgICAgY29tcCA9IEF1ZGlvQ29tcG9uZW50Rmlu
ZE5leHQoMCwgJmRlc2MpOworCisgICAgQVNTRVJUKGNvbXApOworCisgICAgT1NTdGF0dXMgcmVz
dWx0ID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmbV9vdXRwdXRVbml0KTsKKyAg
ICBBU1NFUlQoIXJlc3VsdCk7CisKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG1f
b3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0IHJlbmRlciBj
YWxsYmFjaworICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7CisgICAgaW5wdXQuaW5w
dXRQcm9jID0gaW5wdXRQcm9jOworICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRoaXM7Cisg
ICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0
UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZp
bnB1dCwgc2l6ZW9mKGlucHV0KSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgLy8gU2V0
IHN0cmVhbSBmb3JtYXQKKyAgICBjb25zdGV4cHIgaW50IGJ5dGVzUGVyRmxvYXQgPSBzaXplb2Yo
RmxvYXQzMik7CisgICAgY29uc3RleHByIGludCBiaXRzUGVyQnl0ZSA9IDg7CisKKyAgICBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworICAgIHN0cmVhbUZvcm1hdC5t
U2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1h
dElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9ybWF0Rmxh
Z3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0Rmxh
Z0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tldCA9IGJ5
dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAxOworICAg
IHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFt
Rm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKKyAgICBz
dHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0
OworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVk
aW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2
b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7
CisgICAgQVNTRVJUKCFyZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29h
LmNwcAppbmRleCA1YTEyY2RlNGZjZGZjNTdmYWQ0MmI3ZDllOGZlNzMyMDQzNTA5ZDc4Li41ZDJi
YmZjYTRhYjMyYzY5OTgyYjdjMjViYWU3Njg2ZGZmMjM5MmE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5j
cHAKQEAgLTY4LDEwICs2OCwxMCBAQCB2b2lkIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRp
Y2soKQogewogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgc2FtcGxlUmF0ZSA9IHNh
bXBsZVJhdGUoKSwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgPSBtX251bWJlck9mRnJhbWVzVG9Q
cm9jZXNzXSB7CiAgICAgICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3Jt
YXQ7Ci0gICAgICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQp
OworICAgICAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsK
IAogICAgICAgICBXZWJBdWRpb0J1ZmZlckxpc3Qgd2ViQXVkaW9CdWZmZXJMaXN0IHsgc3RyZWFt
Rm9ybWF0LCBudW1iZXJPZkZyYW1lc1RvUHJvY2VzcyB9OwotICAgICAgICBBdWRpb0Rlc3RpbmF0
aW9uQ29jb2E6OmlucHV0UHJvYyh0aGlzLCAwLCAwLCAwLCBudW1iZXJPZkZyYW1lc1RvUHJvY2Vz
cywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CisgICAgICAgIHJlbmRlcigwLCBudW1iZXJP
ZkZyYW1lc1RvUHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3QoKSk7CiAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCmluZGV4IDI3ZjJhNjk5NmFjOTQwY2Nk
ODQ3OTM1OTU0ZTZkOTE4NGEzZDMzZDAuLjFhYjlmMTNhY2JmMjllMTUxMTg4YjU3Yjc0NDQ2ODM5
MjQ3MDc0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcApAQCAtMjksMTE2ICsy
OSwxMzYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCiAK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiUmVtb3Rl
QXVkaW9CdXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5TWVz
c2FnZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1
ZGlvQnVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVXRp
bGl0aWVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QdXNoUHVsbEZJRk8uaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5oPgorI2Vsc2UKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvQnVzLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CisjZW5kaWYKIAotLy8gVGhpcyBGSUZPIHNp
emUgbWF0Y2hlcyB0byBvbmUgaW4gQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcCBhbmQgd2FzIGlt
cG9ydGVkIGZyb20gQmxpbmsuCi1jb25zdGV4cHIgc2l6ZV90IGZpZm9TaXplID0gOTYgKiBXZWJD
b3JlOjpBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemU7CituYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiwgcHVibGljIFdlYkNvcmU6OkF1ZGlvSU9D
YWxsYmFjayB7CitjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCisgICAgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4KKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpBdWRpb1VuaXRSZW5kZXJlcgorI2VuZGlmCit7
CiBwdWJsaWM6Ci0gICAgdXNpbmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRpb0J1czsKLSAgICB1
c2luZyBBdWRpb0Rlc3RpbmF0aW9uID0gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjsKLSAgICB1
c2luZyBTaGFyZWRCdWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI7Ci0KICAgICBzdGF0aWMg
UmVmPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aW9uLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyLAotICAgICAgICBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJl
ck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQg
c2FtcGxlUmF0ZSkKKyAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJf
dCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oY29ubmVjdGlv
biwgaWRlbnRpZmllciwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oY29ubmVjdGlvbiwgaWRlbnRpZmllciwgaW5w
dXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkKICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFtX2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKSk7CiAgICAgfQogCiAgICAgdm9pZCBzY2hlZHVs
ZUdyYWNlZnVsU2h1dGRvd25JZk5lZWRlZCgpCiAgICAgewotICAgICAgICBpZiAoIWlzUGxheWlu
ZygpKQorICAgICAgICBpZiAoIW1faXNQbGF5aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93biA9IHRoaXM7Ci0gICAgICAg
IHN0b3AoKTsKICAgICB9CiAKLSAgICB2b2lkIHN0YXJ0KCkgeyBtX2Rlc3RpbmF0aW9uLT5zdGFy
dCh7IH0pOyB9Ci0gICAgdm9pZCBzdG9wKCkgeyBtX2Rlc3RpbmF0aW9uLT5zdG9wKCk7IH0KLSAg
ICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1fZGVzdGluYXRpb24tPmlzUGxheWluZygpOyB9
Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5h
dGlvbi0+ZnJhbWVzUGVyQnVmZmVyKCkgOyB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9p
ZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYgaXBjSGFuZGxlLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKKyAgICB7CisgICAgICAgIG1fZGVz
Y3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKworICAgICAgICBpZiAoaXBjSGFuZGxlLmhhbmRsZS5p
c051bGwoKSkgeworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5kZWFsbG9jYXRlKCk7CisgICAg
ICAgICAgICBzdG9yYWdlKCkuc2V0UmVhZE9ubHkoZmFsc2UpOworICAgICAgICAgICAgc3RvcmFn
ZSgpLnNldFN0b3JhZ2UobnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBzdG9yYWdl
KCkuc2V0U3RvcmFnZShXVEZNb3ZlKG1lbW9yeSkpOworICAgICAgICBzdG9yYWdlKCkuc2V0UmVh
ZE9ubHkodHJ1ZSk7CisKKyAgICAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShkZXNjcmlwdGlv
biwgbnVtYmVyT2ZGcmFtZXMpOworICAgIH0KKyNlbmRpZgorCisgICAgdm9pZCBzdGFydCgpCisg
ICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFy
dCgpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIG1faXNQbGF5aW5nID0gdHJ1
ZTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3AoKQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iuc3RvcCgpOworICAgICAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCBpc1Bs
YXlpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUGxheWluZzsgfQogCiBwcml2YXRlOgotICAgIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQz
Ml90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3Qg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVT
YW1wbGVSYXRlKQogICAgICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICAgICAs
IG1faWQoaWRlbnRpZmllcikKLSAgICAgICAgLCBtX2Rlc3RpbmF0aW9uKEF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZSgqdGhpcywgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSkKLSAgICAgICAgLCBtX2ZpZm8obnVt
YmVyT2ZPdXRwdXRDaGFubmVscywgZmlmb1NpemUpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
ICAgICwgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yKCp0aGlzKQorICAgICAgICAsIG1fcmluZ0J1
ZmZlcihtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxT
aGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpKQorI2VuZGlmCisgICAgICAgIC8vICwg
bV9jb250ZXh0U2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogICAgIHsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICAgICAgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLmNvbmZpZ3VyZShoYXJkd2FyZVNh
bXBsZVJhdGUsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworI2VuZGlmCiAgICAgfQogCi0gICAg
dm9pZCByZW5kZXIoQXVkaW9CdXMqLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvSU9Qb3NpdGlvbiYgb3V0cHV0UG9z
aXRpb24pIG92ZXJyaWRlCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgU2hhcmVkUmluZ0J1ZmZl
clN0b3JhZ2UmIHN0b3JhZ2UoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7Ci0KLSAgICAgICAgaWYgKG1fcHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1bFNodXRkb3duKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9maWZvTG9jayk7Ci0gICAgICAgICAgICBmcmFtZXNUb1Byb2Nlc3MgPSBt
X2ZpZm8ucHVsbChkZXN0aW5hdGlvbkJ1cywgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoIWZyYW1lc1RvUHJvY2VzcykKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlJj4obV9yaW5nQnVm
ZmVyLT5zdG9yYWdlKCkpOworICAgIH0KIAotICAgICAgICBWZWN0b3I8UmVmPFNoYXJlZE1lbW9y
eT4+IGJ1ZmZlcnM7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXN0aW5hdGlv
bkJ1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8gbWVtb3J5
ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNz
KTsKLSAgICAgICAgICAgIGJ1ZmZlcnMuYXBwZW5kKCptZW1vcnkpOwotICAgICAgICB9CisgICAg
T1NTdGF0dXMgcmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1lc3RhbXAsIFVJbnQzMiBu
dW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCisgICAgeworICAgICAgICBV
TlVTRURfUEFSQU0odGltZXN0YW1wKTsKIAogICAgICAgICAvLyBGSVhNRTogSXQgaXMgdW5mb3J0
dW5hdGUgd2UgaGF2ZSB0byBkaXNwYXRjaCB0byB0aGUgbWFpbiB0aGVhZCBoZXJlLiBXZSBzaG91
bGQgYmUgYWJsZSB0byBJUEMgc3RyYWlnaHQgZnJvbSB0aGUKICAgICAgICAgLy8gcmVuZGVyIHRo
cmVhZCBidXQgdGhpcyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHNlbmRXaXRoQXN5bmNSZXBseSgpLgot
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGZyYW1lc1RvUHJvY2Vzcywgb3V0cHV0UG9zaXRpb24sIGJ1ZmZlcnMgPSBXVEZNb3Zl
KGJ1ZmZlcnMpXSgpIG11dGFibGUgewotICAgICAgICAgICAgUmVtb3RlQXVkaW9CdXNEYXRhIGJ1
c0RhdGEgeyBmcmFtZXNUb1Byb2Nlc3MsIG91dHB1dFBvc2l0aW9uLCBidWZmZXJzLm1hcChbXShh
dXRvJiBtZW1vcnkpIHsgcmV0dXJuIG1lbW9yeS5jb3B5UmVmKCk7IH0pIH07Ci0gICAgICAgICAg
ICBBU1NFUlQoZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHk6OlJlbmRlckJ1ZmZlcihidXNEYXRhKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBidWZmZXJzID0gV1RGTW92ZShidWZmZXJzKSwgZnJhbWVz
VG9Qcm9jZXNzXSgpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6
OmNyZWF0ZShidWZmZXJzLnNpemUoKSwgZnJhbWVzVG9Qcm9jZXNzLCBmYWxzZSk7Ci0gICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlcnMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgICAgICAgICAgICAgIGF1ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIHN0YXRpY19j
YXN0PGZsb2F0Kj4oYnVmZmVyc1tpXS0+ZGF0YSgpKSwgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICAg
ICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZmlmb0xvY2spOwotICAgICAgICAg
ICAgICAgIG1fZmlmby5wdXNoKGF1ZGlvQnVzLmdldCgpKTsKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBudW1iZXJPZkZyYW1l
cywgaW9EYXRhXSgpIG11dGFibGUgeworICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6UmVxdWVzdEJ1ZmZlcihudW1iZXJPZkZyYW1lcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgbnVtYmVyT2ZGcmFtZXMsIGlvRGF0YV0odWludDY0
X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwgdWludDY0X3Qg
Ym91bmRzU3RhcnRGcmFtZSwgdWludDY0X3QgYm91bmRzRW5kRnJhbWUpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIEFTU0VSVChudW1iZXJPZkZyYW1lcyA+PSBudW1iZXJPZkZyYW1lc1RvUmVu
ZGVyKTsKKworICAgICAgICAgICAgICAgIG1fcmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1lQm91
bmRzKGJvdW5kc1N0YXJ0RnJhbWUsIGJvdW5kc0VuZEZyYW1lKTsKKyAgICAgICAgICAgICAgICBt
X3JpbmdCdWZmZXItPmZldGNoKGlvRGF0YSwgbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwgc3RhcnRG
cmFtZSk7CiAgICAgICAgICAgICB9LCBtX2lkLnRvVUludDY0KCkpOwogICAgICAgICB9KTsKLSAg
ICB9CiAKLSAgICB2b2lkIGlzUGxheWluZ0RpZENoYW5nZSgpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24pIHsKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKSk7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChyZWZDb3VudCgpID09IDEpOwotICAgICAgICAgICAgbV9wcm90
ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24gPSBudWxscHRyOyAvLyBEZWxldGVzICJ0aGlz
Ii4KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlzUGxheWluZyA9IG1f
ZGVzdGluYXRpb24tPmlzUGxheWluZygpLCBpZGVudGlmaWVyID0gbV9pZC50b1VJbnQ2NCgpXSB7
Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6RGlkQ2hhbmdlSXNQbGF5aW5nKGlzUGxheWluZyks
IGlkZW50aWZpZXIpOwotICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG5vRXJyOwogICAgIH0K
KyNlbmRpZgogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOwog
ICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIG1faWQ7Ci0gICAgUmVmUHRyPEF1
ZGlvRGVzdGluYXRpb24+IG1fZGVzdGluYXRpb247CiAgICAgUmVmUHRyPFJlbW90ZUF1ZGlvRGVz
dGluYXRpb24+IG1fcHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1bFNodXRkb3duOwotICAgIExvY2sg
bV9maWZvTG9jazsKLSAgICBXZWJDb3JlOjpQdXNoUHVsbEZJRk8gbV9maWZvOworCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgV2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvciBtX2F1ZGlv
T3V0cHV0VW5pdEFkYXB0b3I7CisKKyAgICBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24gbV9kZXNjcmlwdGlvbjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBt
X3JpbmdCdWZmZXI7CisjZW5kaWYKKworICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9Owog
fTsKIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCkBAIC0xNDgs
MTQgKzE2OCwxMyBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUAogCiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKCkgPSBkZWZhdWx0
OwogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlLAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIsIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3RpbmF0
aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
LCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyOjpnZW5l
cmF0ZVRocmVhZFNhZmUoKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbmV3SUQsIGlucHV0
RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywg
c2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBmcmFtZXNQZXJCdWZmZXIgPSBkZXN0aW5hdGlvbi0+ZnJh
bWVzUGVyQnVmZmVyKCk7CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb246OmNyZWF0ZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIG5ld0lELCBpbnB1dERl
dmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNh
bXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CiAgICAgbV9hdWRpb0Rlc3RpbmF0aW9ucy5h
ZGQobmV3SUQsIFdURk1vdmUoZGVzdGluYXRpb24pKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihu
ZXdJRCwgZnJhbWVzUGVyQnVmZmVyKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCk7CiB9
CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGlu
YXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTg2LDYgKzIwNSwx
NCBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5h
dGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzUGxh
eWluZyk7CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
JiBpcGNIYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVz
Y3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQoreworICAgIGlmIChhdXRvKiBpdGVt
ID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIGl0ZW0tPmF1
ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGlwY0hhbmRsZSwgZGVzY3JpcHRpb24sIG51bWJlck9m
RnJhbWVzKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyLmgKaW5kZXggMTFiNGJlZjEwNDFiN2EwOGFmM2IxYjA5ZGUzODRjMDNkNTg5M2Qx
ZS4uZTIyYzEwYWNlOWE4ODU2ZjBjYjA4ODc3MmJiMTQ1YmViZjE2MGZlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyLmgKQEAgLTM0LDYgKzM0LDEyIEBACiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uOworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwpAQCAtNDYsMjUgKzUyLDI1IEBAIHB1YmxpYzoKICAgICBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAg
flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGNyZWF0ZUF1ZGlv
RGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIsIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcik+JiYpOwotICAgIHZvaWQgZGVsZXRl
QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7Ci0gICAgdm9pZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0KLSAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYgZW5jb2RlcikKLSAgICB7Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKLSAgICB9CisgICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVu
Y29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29k
ZXIpOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogCisgICAgdm9pZCBjcmVhdGVBdWRpb0Rl
c3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1
ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgc3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
JiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVt
YmVyT2ZGcmFtZXMpOworI2VuZGlmCisKICAgICBIYXNoTWFwPFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4+IG1fYXVkaW9EZXN0aW5h
dGlvbnM7CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTsKK30gLy8gbmFtZXNwYWNl
IFdlYktpdDsKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9B
VURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRl
eCBiYzA1YWUxMTc5YWEyYWQzNGUzMzM4NTMyYmVkYjVlNmI0ZDQyM2EwLi4yYmM5ZWRjNzFiOTRl
ODY3OWNjMjBiNjJkODFhOTMyY2UzMTU1YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCwxNCArMjQsMTQgQEAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotCi0gICAgQ3JlYXRlQXVkaW9EZXN0
aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSAt
PiAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCB1
bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIpIFN5bmNocm9ub3VzCi0KKyAgICBDcmVhdGVBdWRpb0Rl
c3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUs
IGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVBdWRpb0Rl
c3RpbmF0aW9uKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRp
ZmllcikgLT4gKCkgQXN5bmMKIAogICAgIFN0YXJ0QXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxh
eWluZykgU3luY2hyb25vdXMKICAgICBTdG9wQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWlu
ZykgU3luY2hyb25vdXMKLQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEF1ZGlvU2FtcGxlc1N0
b3JhZ2VDaGFuZ2VkKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51
bWJlck9mRnJhbWVzKQorI2VuZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTU1ZGU5MWRjY2EwMjUzODI4YzEw
ZWE1ZDgzYTY0ZGU5NjUyMjAwMi4uZDQyMjRjNmViODkyNTE4ZWFmYmM4ZmM3Yjc0ZTI3NjVhNDI1
MWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNDMwLDcgKzE0MzAsNiBAQAogCQk5QjU0OTlCMjIzNjJBN0VDMDBERjhCQTUgLyog
X1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNTQ5OUIwMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tU
ZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCNUJFQzI2MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJN
ZWRpYVN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QjVCRUMyNDI0MDBGNEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oICovOyB9
OwogCQk5QjVCRUMyQTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVC
RUMyODI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi87
IH07Ci0JCTlCNUJFQzMxMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBp
biBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMzAy
NDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovOyB9OwogCQk5RUM1MzJB
MzI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RUM1MzJBMjI0NDdGQkFEMDAyMTUy
MTYgLyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmggKi87IH07CiAJCTlGQjVGMzk1MTY5RTZBODAw
MDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250
ZXh0UHJpdmF0ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUExMDJBNzA4MUVDMEVFRTkwMEQ4MUQ4MiAvKiBjb20ubWFjcm9tZWRpYS5GbGFz
aCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTVFMzk0OTFENUJEOEE3MDBCNEI3
Q0UgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgKi87IH07CkBA
IC0yMTM5LDcgKzIxMzgsNiBAQAogCQkJCTJEQjk2MDUzMjM5ODg2QzEwMDEwMjc5MSAvKiBjb20u
YXBwbGUuV2ViS2l0LkdQVS5zYiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREIxOTNBQzlG
ODAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYiBpbiBDb3B5RmlsZXMg
Ki8sCiAJCQkJQTc4Q0NEREMxOTNBQzlGQjAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJLaXQuV2Vi
Q29udGVudC5zYiBpbiBDb3B5RmlsZXMgKi8sCi0JCQkJOUI1QkVDMzEyNDAxMDIyMjAwNzBDNkVG
IC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oIGluIENvcHlGaWxlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ1NDAsNyArNDUz
OCw2IEBACiAJCTlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAv
KiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOUI1QkVDMkUyNDAxMDE4QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTlCNUJFQzMwMjQwMTAyMjIwMDcwQzZF
RiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9CdXNE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQzU5RDZDMUVGQ0NDQjYwMDFF
OEQwOSAvKiBDYWxsYmFja0lELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bGxiYWNrSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNTlENkQxRUZDREM2
RDAwMUU4RDA5IC8qIE9wdGlvbmFsQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBPcHRpb25hbENhbGxiYWNrSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUVDNTMyQTIyNDQ3RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHZW9sb2NhdGlvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU1NTUsNyArNTU1Miw2IEBACiAJCQkJMDc5MjMxMzEyMzlCM0IwQzAw
OTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMDc5MjMxMzIy
MzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3
QjFEMDRCMjNEMzhGQ0UwMDM5OUE2RSAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2Fn
ZXMuaW4gKi8sCi0JCQkJOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVz
RGF0YS5oICovLAogCQkJCTlCNUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuY3BwICovLAogCQkJCTlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLywKIAkJCQk5QjVCRUMyRTI0MDEwMThDMDA3
MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1
c0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9C
dXNEYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYzJmMGM2NjA2OTZhZTM0
ODYxYzBiMjQ4MGFkMDU3ZmVhMTk2MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0J1c0RhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlNo
YXJlZE1lbW9yeS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0
cnVjdCBSZW1vdGVBdWRpb0J1c0RhdGEgewotICAgIHVpbnQ2NF90IGZyYW1lc1RvUHJvY2VzcyB7
IDAgfTsKLSAgICBXZWJDb3JlOjpBdWRpb0lPUG9zaXRpb24gb3V0cHV0UG9zaXRpb247Ci0gICAg
VmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiBjaGFubmVsQnVmZmVyczsKLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+Ci0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKLSAgICB7Ci0gICAgICAgIGVuY29kZXIgPDwgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBl
bmNvZGVyIDw8IG91dHB1dFBvc2l0aW9uOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihjaGFubmVsQnVmZmVycy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNoYW5uZWxCdWZmZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgICAgICBjaGFubmVsQnVmZmVyc1tpXS0+
Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUp
OwotICAgICAgICAgICAgZW5jb2RlciA8PCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1v
dmUoaGFuZGxlKSwgY2hhbm5lbEJ1ZmZlcnNbaV0tPnNpemUoKSB9OwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KLSAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlbW90ZUF1ZGlvQnVzRGF0
YSYgcmVzdWx0KQotICAgIHsKLSAgICAgICAgdWludDY0X3QgZnJhbWVzVG9Qcm9jZXNzOwotICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1lc1RvUHJvY2VzcykpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdC5mcmFtZXNUb1Byb2Nlc3MgPSBmcmFtZXNUb1By
b2Nlc3M7Ci0KLSAgICAgICAgV2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91dHB1dFBvc2l0aW9u
OwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG91dHB1dFBvc2l0aW9uKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0Lm91dHB1dFBvc2l0aW9uID0gb3V0cHV0
UG9zaXRpb247Ci0KLSAgICAgICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaXBjSGFuZGxlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkpCi0gICAgICAgICAgICAgICAgcmVz
dWx0LmNoYW5uZWxCdWZmZXJzLmFwcGVuZChtZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDg0MDRj
NDhlMWMyZTQ4MmFiY2QyNGU1NWQyY2M5MTNiZDI2N2U3NDEuLmNlYTU3Yzc0ZjEzYzAwNmNmOWNm
YzNhMjI4NTdmMmMzYjY5ZWQwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5j
cHAKQEAgLTMwLDE2ICszMCwyMSBAQAogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BdWRpb0J1cy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgorI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi11c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOworLy8g
QWxsb2NhdGUgYSByaW5nIGJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiAyIHNlY29uZHMg
b2YgYXVkaW8uCitjb25zdGV4cHIgc2l6ZV90IHJpbmdCdWZmZXJTaXplSW5TZWNvbmQgPSAyOwor
CiB1c2luZyBBdWRpb0Rlc3RpbmF0aW9uID0gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjsKIHVz
aW5nIEF1ZGlvSU9DYWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFjazsKIApAQCAtNTAs
MTYgKzU1LDE3IEBAIFJlZjxBdWRpb0Rlc3RpbmF0aW9uPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiCiB9CiAKIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KEF1ZGlvSU9DYWxsYmFj
ayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlKQotICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAsIG1fc2FtcGxlUmF0
ZShzYW1wbGVSYXRlKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIDogV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbkNvY29hKGNhbGxiYWNrLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVS
YXRlLCBmYWxzZSkKKyAgICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5pcXVlPFdlYkNvcmU6OkNBUmlu
Z0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4odGhpcykpKQor
I2VuZGlmCiB7CiAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgZGVzdGluYXRp
b25JRDsKLSAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIgeyAwIH07CiAKICAgICBhdXRvJiBj
b25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKLSAgICAgICAg
TWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uKGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgc2FtcGxlUmF0ZSksCi0gICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRp
b25JRCwgZnJhbWVzUGVyQnVmZmVyKSwgMCk7CisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihpbnB1dERldmljZUlk
LCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJh
dGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSgpKSwKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5h
dGlvbklEKSwgMCk7CiAKICAgICBhdXRvIG9mZlRocmVhZFJlbmRlcmluZyA9IFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIHdoaWxlICgh
bV90aHJlYWRUYXNrUXVldWUuaXNLaWxsZWQoKSkgewpAQCAtNzIsNyArNzgsMTQgQEAgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkoQXVkaW9J
T0NhbGxiYWNrJiBjYWxsYmEKICAgICBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5hZGRUaHJlYWRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwogCiAg
ICAgbV9kZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKLSAgICBtX2ZyYW1lc1BlckJ1ZmZl
ciA9IGZyYW1lc1BlckJ1ZmZlcjsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CisgICAgbV9udW1iZXJPZkZyYW1lcyA9IGhhcmR3
YXJlU2FtcGxlUmF0ZSgpICogcmluZ0J1ZmZlclNpemVJblNlY29uZDsKKyAgICBtX3JpbmdCdWZm
ZXItPmFsbG9jYXRlKHN0cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1lcyk7CisgICAgbV9hdWRp
b0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0
KTsKKyNlbmRpZgogfQogCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6On5SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkoKQpAQCAtMTA1LDE5ICsxMTgsMzcgQEAgdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OnN0b3AoKQogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9
IG51bGxwdHI7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpyZW5kZXJC
dWZmZXIoY29uc3QgV2ViS2l0OjpSZW1vdGVBdWRpb0J1c0RhdGEmIGF1ZGlvQnVzRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorI2lmIFBMQVRGT1JN
KENPQ09BKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZmZXIo
dWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3Qs
IHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChhdWRpb0J1c0RhdGEuZnJh
bWVzVG9Qcm9jZXNzKTsKLSAgICBBU1NFUlQoYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJzLnNp
emUoKSk7Ci0gICAgYXV0byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoYXVkaW9CdXNEYXRh
LmNoYW5uZWxCdWZmZXJzLnNpemUoKSwgYXVkaW9CdXNEYXRhLmZyYW1lc1RvUHJvY2VzcywgZmFs
c2UpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdWRpb0J1c0RhdGEuY2hhbm5lbEJ1
ZmZlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGF1ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGks
IChmbG9hdCopYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJzW2ldLT5kYXRhKCksIGF1ZGlvQnVz
RGF0YS5mcmFtZXNUb1Byb2Nlc3MpOwotCi0gICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgYXVkaW9C
dXMuZ2V0KCksIGF1ZGlvQnVzRGF0YS5mcmFtZXNUb1Byb2Nlc3MsIGF1ZGlvQnVzRGF0YS5vdXRw
dXRQb3NpdGlvbik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIGlmICghaGFzRW5v
dWdoRnJhbWVzKG51bWJlck9mRnJhbWVzKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCwg
MCwgMCwgMCk7CisKKyAgICBtX3JlbmRlckNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgbV9hdWRpb0J1ZmZlckxpc3QtPnNldFNhbXBsZUNvdW50KG51
bWJlck9mRnJhbWVzKTsKKyAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlcihudWxscHRy
LCBudW1iZXJPZkZyYW1lcywgbV9hdWRpb0J1ZmZlckxpc3QtPmxpc3QoKSk7CiB9CiAKK3ZvaWQg
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpyZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVf
dCBmcmFtZXNUb1JlbmRlcikKK3sKKyAgICBBU1NFUlQobV9yZW5kZXJDb21wbGV0aW9uSGFuZGxl
cik7CisKKyAgICBhdXRvIHN0YXJ0RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKKworICAgIEF1ZGlv
RGVzdGluYXRpb25Db2NvYTo6cmVuZGVyT25SZW5kZXJpbmdUaGVhZChmcmFtZXNUb1JlbmRlcik7
CisgICAgbV9jdXJyZW50RnJhbWUgKz0gZnJhbWVzVG9SZW5kZXI7CisKKyAgICBtX3JpbmdCdWZm
ZXItPnN0b3JlKG1fYXVkaW9CdWZmZXJMaXN0LT5saXN0KCksIGZyYW1lc1RvUmVuZGVyLCBzdGFy
dEZyYW1lKTsKKworICAgIHVpbnQ2NF90IGJvdW5kc1N0YXJ0RnJhbWU7CisgICAgdWludDY0X3Qg
Ym91bmRzRW5kRnJhbWU7CisgICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMo
Ym91bmRzU3RhcnRGcmFtZSwgYm91bmRzRW5kRnJhbWUpOworICAgIG1fcmVuZGVyQ29tcGxldGlv
bkhhbmRsZXIoc3RhcnRGcmFtZSwgZnJhbWVzVG9SZW5kZXIsIGJvdW5kc1N0YXJ0RnJhbWUsIGJv
dW5kc0VuZEZyYW1lKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6ZGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwpAQCAtMTMzLDYgKzE2NCwyOCBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykK
ICAgICBtX3RocmVhZFRhc2tRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKKyNpZiBQ
TEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9yYWdl
Q2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2UpCit7CisgICAgU2hhcmVkTWVtb3J5OjpIYW5k
bGUgaGFuZGxlOworICAgIGlmIChzdG9yYWdlKQorICAgICAgICBzdG9yYWdlLT5jcmVhdGVIYW5k
bGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKworICAgIC8v
IEZJWE1FOiBTZW5kIHRoZSBhY3R1YWwgZGF0YSBzaXplIHdpdGggSVBDSGFuZGxlLgorI2lmIE9T
KERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9IGhhbmRsZS5z
aXplKCk7CisjZWxzZQorICAgIHVpbnQ2NF90IGRhdGFTaXplID0gMDsKKyNlbmRpZgorCisgICAg
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBnZXRBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKyAgICBXZWJDb3JlOjpDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpBdWRpb1Nh
bXBsZXNTdG9yYWdlQ2hhbmdlZCB7IG1fZGVzdGluYXRpb25JRCwgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIHN0cmVhbUZvcm1hdCwgbV9udW1i
ZXJPZkZyYW1lcyB9LCAwKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCmluZGV4IGM0YWRiNzU2MGQ0NjM3NThlZTcxNTZmMDFl
ZWM5OTU4ZDNjZmRlNjYuLjJmNTgzMDAyM2Q0NzVjM2E1NzI5N2U1ODQ3MzZlN2U3ZmM5ZDE1ZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaApAQCAtMjgsMjQgKzI4LDM3IEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlJlbW90ZUF1ZGlvQnVzRGF0YS5oIgogI2luY2x1ZGUg
IlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1N1cHBsZW1lbnQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxsYmFjay5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1Ro
cmVhZFF1ZXVlLmg+CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPFdlYkNvcmUvQ0FS
aW5nQnVmZmVyLmg+CisjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oPgorI2Vsc2UKKyNpbmNsdWRlIDxX
ZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KICNlbmRpZgogCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBDQVJpbmdCdWZmZXI7CitjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3Q7Cit9CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgOiBw
dWJsaWMgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6
VGhyZWFkTWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb25Db2NvYQorICAgICwgcHVibGljIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpDbGllbnQK
KyNlbHNlCisgICAgOiBwdWJsaWMgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbgorI2VuZGlmCisg
ICAgLCBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXIgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSk7CiBwdWJs
aWM6Ci0gICAgdXNpbmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRpb0J1czsKICAgICB1c2luZyBB
dWRpb0lPQ2FsbGJhY2sgPSBXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2s7CiAgICAgdXNpbmcgV2Vi
Q29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6cmVmOwogICAgIHVzaW5nIFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb246OmRlcmVmOwpAQCAtNTcsMTYgKzcwLDI2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsgfQogCi0gICAgdm9pZCByZW5kZXJCdWZmZXIoY29uc3QgV2ViS2l0OjpSZW1v
dGVBdWRpb0J1c0RhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIHZvaWQgcmVxdWVzdEJ1ZmZlcih1aW50NjRfdCBudW1iZXJPZkZyYW1l
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBu
dW1iZXJPZkZyYW1lc1RvUmVuZGVyLCB1aW50NjRfdCBib3VuZHNTdGFydEZyYW1lLCB1aW50NjRf
dCBib3VuZHNFbmRGcmFtZSk+JiYpOworI2VuZGlmCisKICAgICB2b2lkIGRpZENoYW5nZUlzUGxh
eWluZyhib29sIGlzUGxheWluZyk7CiAKIHByaXZhdGU6Ci0gICAgLy8gV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbgotICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+
JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcCgp
IG92ZXJyaWRlOwotICAgIGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1Bs
YXlpbmc7IH0KLSAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9zYW1wbGVSYXRlOyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9mcmFtZXNQZXJCdWZmZXI7IH0KKyAgICB2b2lkIHN0YXJ0KEZ1bmN0
aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKSBm
aW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBib29sIGlzUGxheWluZygpIGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgZmxvYXQgc2Ft
cGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KKyAgICB1bnNpZ25lZCBmcmFtZXNQ
ZXJCdWZmZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisjZW5kaWYKKworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KikgZmluYWw7
CisgICAgdm9pZCByZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikg
ZmluYWw7CisjZW5kaWYKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
QEAgLTc2LDExICs5OSwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmTWVzc2FnZVJlY2VpdmVy
KCkgZmluYWwgeyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpyZWYoKTsgfQogICAgIHZvaWQg
ZGVyZWZNZXNzYWdlUmVjZWl2ZXIoKSBmaW5hbCB7IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246
OmRlcmVmKCk7IH0KIAotICAgIEF1ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKLSAgICBmbG9h
dCBtX3NhbXBsZVJhdGUgeyAwLiB9OwotICAgIHVuc2lnbmVkIG1fZnJhbWVzUGVyQnVmZmVyIHsg
MCB9OwogICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIG1fZGVzdGluYXRpb25J
RDsKICAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+IG1fYXVkaW9CdWZmZXJMaXN0OworICAg
IHVpbnQ2NF90IG1fY3VycmVudEZyYW1lIHsgMCB9OworICAgIFdURjo6RnVuY3Rpb248dm9pZCh1
aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk+IG1fcmVuZGVyQ29tcGxldGlv
bkhhbmRsZXI7CisjZW5kaWYKKwogICAgIEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYm
KT4gbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkOwogICAgIFJlZlB0cjxUaHJlYWQ+IG1fcmVuZGVy
VGhyZWFkOwogICAgIENyb3NzVGhyZWFkUXVldWU8RnVuY3Rpb248dm9pZCgpPj4gbV90aHJlYWRU
YXNrUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IGFlMWZjNzA2OTg3MTRjODcwNWU1ODI0ODE5NDY1YmFiMzI2M2YwNjEuLmJkOTE3
NGFiMGRiMThkN2Y3MTU5MDA3NmY3OTk5ZWRhMmE1NTExYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNCwxMCArMjQsOCBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKIAogbWVzc2FnZXMgLT4g
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IE5vdFJlZkNvdW50ZWQgewotCi0gICAgUmVuZGVy
QnVmZmVyKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVzRGF0YSBkYXRhKSAtPiAoKSBBc3lu
YworICAgIFJlcXVlc3RCdWZmZXIodWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpIC0+ICh1aW50NjRf
dCBzdGFydEZyYW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lc1RvUmVuZGVyLCB1aW50NjRfdCBi
b3VuZHNTdGFydEZyYW1lLCB1aW50NjRfdCBib3VuZHNFbmRGcmFtZSkgQXN5bmMKICAgICBEaWRD
aGFuZ2VJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcpCi0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKaW5kZXggODc5OWYxOTg0NzE0MTFlYzZmNzM5
YTM4NzkzNjRkMjQ3NTEyZWE0NC4uMmUwYTZiMWY4MzkzMmFlODMzNWRmNGVhYTRlYjUzNWY4NTg3
MTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApAQCAtOTAs
NyArOTAsNyBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpwdXNoU2FtcGxl
cyhjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFdlYgogCiAgICAgICAgIC8vIEFsbG9jYXRl
IGEgcmluZyBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gMiBzZWNvbmRzIG9mIGF1ZGlv
LgogICAgICAgICBtX251bWJlck9mRnJhbWVzID0gbV9kZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkg
KiAyOwotICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKG1fZGVzY3JpcHRpb24uc3RyZWFt
RGVzY3JpcHRpb24oKSwgbV9udW1iZXJPZkZyYW1lcyk7CisgICAgICAgIG1fcmluZ0J1ZmZlci0+
YWxsb2NhdGUobV9kZXNjcmlwdGlvbiwgbV9udW1iZXJPZkZyYW1lcyk7CiAgICAgfQogCiAgICAg
QVNTRVJUKGlzPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRhKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411519</attachid>
            <date>2020-10-15 18:47:56 -0700</date>
            <delta_ts>2020-10-15 20:26:04 -0700</delta_ts>
            <desc>WIP patch (rebased)</desc>
            <filename>bug-217715-20201015184755.patch</filename>
            <type>text/plain</type>
            <size>90749</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwNDMxMzFkMjk4YWYz
NzAzODYyYmI4NjdiZWI3OTQ4YTdhZDhiZC4uMTBlNTMyMTQ0ZDZjNzBkNzU0NmQyNDJkNTgyZDZi
NjdhZDBmOWRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE1ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9j
ZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8g
ZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6aW5wdXRQcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRV
bml0QWRhcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRv
cklPUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2spOgorCiAyMDIwLTEwLTE1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBBdWRpb0NvbnRleHQtc3Bl
Y2lmaWMgbG9naWMgb3V0IG9mIEJhc2VBdWRpb0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGNkNjdmMThh
ZGE0YzA1MDhkZDVjZDExNDc3ZWRkMTA1NWI0ZjBjYi4uYjlkNjk4NGIyZGI0ODg1MDkzZDVjOWY0
ZDdkZTMzZTlkMmJlMjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAyMC0xMC0xNSAg
UGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUg
UHJvY2Vzc10gVXNlIENBUmluZ0J1ZmZlciB0byB0cmFuc2ZlciBhdWRpbyBkYXRhIG9mIGFuIGF1
ZGlvIGRlc3RpbmF0aW9uIGZyb20gYSB3ZWIgcHJvY2VzcyB0byB0aGUgR1BVIFByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzcxNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb246On5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6c2NoZWR1bGVHcmFjZWZ1bFNodXRkb3du
SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjphdWRp
b1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uOjpzdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6
cmVuZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmF1ZGlvU2Ft
cGxlc1N0b3JhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbjo6aXNQbGF5aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbjo6ZnJhbWVzUGVyQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmg6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlU3luY01l
c3NhZ2VGcm9tV2ViUHJvY2Vzcyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0J1c0RhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVzdEJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3Rv
cmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHk6OnJlbmRlckJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpwdXNo
U2FtcGxlcyk6CisKIDIwMjAtMTAtMTUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFttYWNPU10gQWRkIHRlbGVtZXRyeSBmb3IgZGlzdHJpYnV0ZWQgbm90
aWZpY2F0aW9uIHNlcnZpY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBjNTY3MGMzNjQ4NTc1ZTg4MGViNjg1
ZTBhM2ExMzVjMjkyNDM3NWJiLi5lMzIyMzcyM2Q3NzhmZWUxM2Y0NzJjNGQyMTEwZWM5MzZiODBm
YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBBdWRpb0Rlc3RpbmF0aW9uTm9kZShCYXNlQXVkaW9Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+
QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAKLSAgICAvLyBBdWRpb05vZGUgICAKKyAgICAv
LyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90KSBvdmVycmlkZSB7IH07IC8vIHdl
J3JlIHB1bGxlZCBieSBoYXJkd2FyZSBzbyB0aGlzIGlzIG5ldmVyIGNhbGxlZAogICAgIAogICAg
IC8vIFRoZSBhdWRpbyBoYXJkd2FyZSBjYWxscyByZW5kZXIoKSB0byBnZXQgdGhlIG5leHQgcmVu
ZGVyIHF1YW50dW0gb2YgYXVkaW8gaW50byBkZXN0aW5hdGlvbkJ1cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDY0MTQwNTkyNTQwMWU2ZTNjZDViNjZmOWEzZmY3Y2Q4ZDA3MWNlMDguLmVi
NGUxN2YyZTczNmVhODY4MWM1NmQyMDI1MTQ5MjZiOGRjOTk0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dApAQCAtMjAzLDE5ICsyMDMsMjAgQEAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCiBwbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uY3BwCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2Eu
Y3BwCitwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcAogcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcAogcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9D
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdC
dWZmZXIuY3BwCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2Eu
bW0KIHBsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAKLXBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBAbm8tdW5pZnkKK3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9N
ZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uTWFuYWdlcklPUy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0J1c01hYy5tbQotcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCitw
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHAKIHBsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lv
bk1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDFhY2YxNDQzOTkyNDg1ODE0OGRkMjBiOWU4ZGU3YTUxZTNiMjJkY2UuLjFj
YzBlNWVjZmJhNTQxZTVjZmUzMTlhNTkzZDg5MThlYTEwN2ZlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzMyw2ICs2MzMs
NyBAQAogCQkxREFCMzExMjI1MUQ2QkYzMDBGQzk0ODUgLyogV2ViVmlkZW9Db250YWluZXJMYXll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4QjMx
QTEyMzc5REM4MzAwODgzRkRFIC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxREFCMzExNDI1MUQ3MjVD
MDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQUIzMTEzMjUxRDcyNUMwMEZDOTQ4NSAvKiBWaWRlb0xh
eWVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFEQUIzMTE1MjUxRDc0REIwMEZDOTQ4NSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMThF
MUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxREI2NkQzQjI1MzdBOTU2MDBC
NjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMURCNjZEMzcyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxREJDMUI1NjIzNDdCM0QyMDBCOTAxQUYgLyogUGljdHVyZUluUGljdHVy
ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxREJDMUI1NTIzNDdCM0QyMDBCOTAxQUYgLyogUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUREM0I0
QzYyNTFEQTBCODAwNjlCMjRBIC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMThEMUM1NDU5MDMwMERF
MzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gKi87IH07CiAJCTFERjdFODFGMjUxQTlF
MDYwMERCOEY2MSAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0REMUU1MjUxNjdCQTU2NDAwQ0U4MjBCIC8q
IFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxMjcsNyArNDEyOCw3IEBACiAJCUNDQzJCNTE2MTVGNjEz
MDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQ0MyQjUxMjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNl
Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNEMDYzRjgyMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMDYzRjgwMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJQ0QwNjNGODMx
RTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMDYzRjgxMUUyM0ZBODkwMDgxMkJFMyAvKiBJ
bml0RGF0YVJlZ2lzdHJ5LmggKi87IH07Ci0JCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBB
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9u
SU9TLmNwcCAqLzsgfTsKKwkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEyIC8qIEF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3JJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0
b3JJT1MuY3BwICovOyB9OwogCQlDRDExQjNFMTIyN0NFNkYzMDAyM0FGQzcgLyogQVZTdHJlYW1E
YXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMTFCM0UwMjI3Q0FBQTkwMDIzQUZDNyAvKiBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlLm1tICovOyB9OwogCQlDRDEyN0RFRTE0RjMwOTg0MDBFODQ3Nzkg
LyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVs
bFNjcmVlbldpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUNEMTdBNDVEMjEzNzQwODEwMDc5RUM3QiAvKiBVbmlmaWVkU291cmNlNjItbW0u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDE3QTQ1
OTIxMzc0MDE2MDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1tICovOyB9OwpAQCAtNTMw
NCw3ICs1MzA1LDYgQEAKIAkJRkQzMTYwQUIxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZv
bHZlclN0YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRDMxNjA3NTEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCAqLzsg
fTsKIAkJRkQzMTYwQUQxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3NzEyQjAy
NkY3MDBDMUEzNTkgLyogUmV2ZXJiSW5wdXRCdWZmZXIuaCAqLzsgfTsKIAkJRkQzMTYwQUYxMkIw
MjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDc5MTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRo
LmggKi87IH07Ci0JCUZEMzE2MEJEMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9u
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMx
NjBCNzEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oICovOyB9OwogCQlG
RDMxNjBCRjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjBCOTEyQjAyNzJBMDBD
MUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggKi87IH07CiAJCUZEMzU5MTkwMTM4REIyMjAw
MEUxRUJFQyAvKiBBdWRpb1BhcmFtVGltZWxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzU5MThFMTM4REIyMjAwMEUxRUJFQyAvKiBBdWRpb1Bh
cmFtVGltZWxpbmUuaCAqLzsgfTsKIAkJRkQ0NUE5NEYxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA4QTg3
RjE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjc1NCw2ICs2NzU0LDggQEAKIAkJMUQwMDI2QTkyMzc0
RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMkM4MkI2MjM2QTNGNkEwMDU1
RDZDNSAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJl
SW5QaWN0dXJlU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREFCMzEx
MzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmlkZW9MYXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMURCNjZE
MzcyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1
cmVJblBpY3R1cmVPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJlSW5QaWN0dXJlT2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURDNTUzRkQyMTFCQTEyQTAw
NEI3ODBFIC8qIE5hdmlnYXRvclNoYXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZp
Z2F0b3JTaGFyZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZGMjEx
QkE4NDEwMDRCNzgwRSAvKiBTaGFyZURhdGEuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNo
YXJlRGF0YS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDI5Nyw4ICsxNDI5
OSw3IEBACiAJCUNEMDYzRjgwMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluaXREYXRhUmVnaXN0cnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDA2M0Y4MTFFMjNGQTg5MDA4MTJC
RTMgLyogSW5pdERhdGFSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbml0RGF0YVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMEM4
QjU4MjE0MUM4Q0EwMDYyRjU5RCAvKiBNZWRpYUNhcGFiaWxpdGllc0luZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUNEMEVFRTBBMTQ3NDNFMzQwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25JT1MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1
ZGlvRGVzdGluYXRpb25JT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvT3V0cHV0VW5pdEFk
YXB0b3JJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDExQjNERjIyN0NB
QUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEMTFCM0UwMjI3Q0FBQTkwMDIzQUZDNyAvKiBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZTdHJlYW1EYXRh
UGFyc2VyTUlNRVR5cGVDYWNoZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Qx
MjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU2Myw4ICsxNjU2NCw3IEBACiAJCUZEMzE2
MDc4MTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFZlY3Rvck1hdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRDMxNjA3OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZWN0b3JNYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1ZGlvQnVzTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyog
QXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVk
aW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkQzMTYwQjgxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1h
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb0ZpbGVSZWFk
ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNjBCOTEyQjAyNzJB
MDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEF1ZGlvRmlsZVJlYWRlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRDMxNjBCQTEyQjAyNzJBMDBDMUEzNTkgLyogRkZURnJhbWVNYWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRkZURnJhbWVNYWMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjczMDIsMTAgKzI3MzAyLDkgQEAKIAkJQ0QwRUVFMEQxNDc0
M0U0ODAwM0VBRkEyIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25J
T1MuY3BwICovLAotCQkJCUNEMEVFRTBBMTQ3NDNFMzQwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0
aW9uSU9TLmggKi8sCiAJCQkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJl
YWRlcklPUy5jcHAgKi8sCiAJCQkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmls
ZVJlYWRlcklPUy5oICovLAorCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCAqLywKIAkJCQlDREE3OTgyNTE3MEEyNzkwMDBENDVDNTUg
LyogQXVkaW9TZXNzaW9uSU9TLm1tICovLAogCQkJCUNEODc1QTc0MjQxMUI3OTgwMEIwOUY1OCAv
KiBNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCAqLywKIAkJCQlDRDg3NUE3NTI0MTFCNzk4MDBCMDlG
NTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICovLApAQCAtMjczNzAsNiArMjczNjksOCBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDEzMTUxODQyMzU3NzQ1RTAwMTE1RTZFIC8qIEF1ZGlv
RGVzdGluYXRpb25Db2NvYS5jcHAgKi8sCiAJCQkJNDEzMTUxODYyMzU3NzQ1RTAwMTE1RTZFIC8q
IEF1ZGlvRGVzdGluYXRpb25Db2NvYS5oICovLAorCQkJCTFEQjY2RDM4MjUzNjc4RUEwMEI2NzFC
OSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcCAqLywKKwkJCQkxREI2NkQzNzI1MzY3OEVB
MDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oICovLAogCQkJCTA3M0I4NzYyMUU0
Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwICovLAogCQkJCTA3M0I4
NzYzMUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCAqLywKIAkJCQkw
NzNCODc2NTFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmggKi8sCkBA
IC0zMDI4MSwxMiArMzAyODIsMTEgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJRkQzMTYwQjUxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvQnVzTWFjLm1tICovLAot
CQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCAq
LywKLQkJCQlGRDMxNjBCNzEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5o
ICovLAogCQkJCUZEMzE2MEI4MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwICovLAogCQkJCUZEMzE2MEI5MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJN
YWMuaCAqLywKIAkJCQlDRDJGNEEyNTE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxp
c3RlbmVyTWFjLmNwcCAqLywKIAkJCQlDRDJGNEEyNjE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9I
YXJkd2FyZUxpc3RlbmVyTWFjLmggKi8sCisJCQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8q
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwICovLAogCQkJCUNENTRERTQ5MTc0NjlDNkQw
MDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMubW0gKi8sCiAJCQkJRkQzMTYwQkExMkIwMjcyQTAw
QzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLywKIAkJCSk7CkBAIC0zMDU2Nyw3ICszMDU2Nyw2
IEBACiAJCQkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA3RjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EZXN0
aW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5QzQyM0ZFNEJEMjAwOENBNzUxIC8q
IEF1ZGlvRGVzdGluYXRpb25Db2NvYS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkQzMTYwQkQxMkIw
MjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEMzE2MDA4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQzMTYwODAxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQS2VybmVs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4MjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzA1ODMsNiArMzA1ODIsNyBA
QAogCQkJCUZEMzE2MDE2MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGVJbnB1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTcxNDY3QjMyNEFCQUVGMjAwRkIyRjUwIC8qIEF1ZGlvTm9kZU9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDE4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRp
b05vZGVPdXRwdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFEQjY2RDNCMjUzN0E5NTYwMEI2NzFC
OSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAx
RDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9QYXJhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM3
NTY5OUUyNTJDRjM2MjAwRTFCOTU2IC8qIEF1ZGlvUGFyYW1EZXNjcmlwdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4M0I5ODcwQzI1MjI1RjgzMDBBOTM5RjEgLyogQXVkaW9QYXJhbU1hcC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zNTI0NCw4ICszNTI0NCw4IEBACiAJCQlmaWxlcyA9ICgKIAkJCQlB
OTc4N0NCNDFGNUY1QzY2MDBDNTUxQzYgLyogQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMxRjdCNzMxMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxl
clNlcnZpY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEy
IC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1NTk2OTEx
NDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklP
Uy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVk
aW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3MzVGRTAwQ0JE
NjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RFM0E4NTcxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbi5oCmluZGV4IDE2MGM2NTc4ZTE1ZWQ1ZWE3NTI1ZGM3NjhiZDRlZjNmZGM3NGY0
ZmYuLjQxOTY1NTJkOTE1YTg5YjRhMDVmODQ3NjRkNWZlYWMwNTY2MjQ5NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgKQEAgLTU2LDcg
KzU2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2FtcGxlLXJhdGUgY29udmVyc2lvbiBtYXkgaGFw
cGVuIGluIEF1ZGlvRGVzdGluYXRpb24gdG8gdGhlIGhhcmR3YXJlIHNhbXBsZS1yYXRlCiAgICAg
dmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOwotICAgIHN0YXRpYyBmbG9hdCBo
YXJkd2FyZVNhbXBsZVJhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgZmxvYXQgaGFy
ZHdhcmVTYW1wbGVSYXRlKCk7CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZl
cigpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggMWQwZjRlMjg4
MTE4N2U3YjM1MDI5MGIwMjMzY2I4YjBjMjFhZjRlNi4uMTBjOTk2ODdkMDExZDMzZGFlNTVmMmVm
NTBiM2Y0YjJiMTk2ZTllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC0zNSw2ICsz
NSwxMCBAQAogI2luY2x1ZGUgIk11bHRpQ2hhbm5lbFJlc2FtcGxlci5oIgogI2luY2x1ZGUgIlB1
c2hQdWxsRklGTy5oIgogCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIlZlY3Rvck1hdGgu
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0ZXhwciBzaXplX3QgZmlm
b1NpemUgPSA5NiAqIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZTsKQEAgLTU2LDcg
KzYwLDYgQEAgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShB
dWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdAogICAgICAgICByZXR1cm4gQXVkaW9EZXN0
aW5hdGlvbkNvY29hOjpjcmVhdGVPdmVycmlkZShjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiAKICAg
ICBhdXRvIGRlc3RpbmF0aW9uID0gYWRvcHRSZWYoKm5ldyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2Eo
Y2FsbGJhY2ssIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKTsKLSAgICBkZXN0
aW5hdGlvbi0+Y29uZmlndXJlKCk7CiAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwogfQogCkBAIC03
MCwxNSArNzMsMTYgQEAgdW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVs
Q291bnQoKQogICAgIHJldHVybiBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5tYXhpbXVt
TnVtYmVyT2ZPdXRwdXRDaGFubmVscygpOwogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OkF1
ZGlvRGVzdGluYXRpb25Db2NvYShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQotICAgIDogbV9vdXRwdXRV
bml0KDApCitBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OkF1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRp
b0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBm
bG9hdCBzYW1wbGVSYXRlLCBib29sIGNvbmZpZ3VyZUF1ZGlvT3V0cHV0VW5pdCkKKyAgICA6IG1f
YXVkaW9PdXRwdXRVbml0QWRhcHRvcigqdGhpcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2sp
CiAgICAgLCBtX291dHB1dEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25O
dWxsKCkpCiAgICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSkucmVsZWFzZU5vbk51
bGwoKSkKICAgICAsIG1fZmlmbyhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4obnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgZmlmb1NpemUpKQogICAgICwgbV9jb250ZXh0U2FtcGxlUmF0ZShzYW1w
bGVSYXRlKQogewotICAgIGNvbmZpZ3VyZSgpOworICAgIGlmIChjb25maWd1cmVBdWRpb091dHB1
dFVuaXQpCisgICAgICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUoaGFyZHdh
cmVTYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgYXV0byBoYXJk
d2FyZVNhbXBsZVJhdGUgPSB0aGlzLT5oYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBpZiAoc2Ft
cGxlUmF0ZSAhPSBoYXJkd2FyZVNhbXBsZVJhdGUpIHsKQEAgLTg3LDExICs5MSw3IEBAIEF1ZGlv
RGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYg
Y2FsbGJhY2ssIHVuc2lnbmVkCiAgICAgfQogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EoKQotewotICAgIGlmIChtX291dHB1dFVuaXQpCi0gICAgICAg
IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Ci19CitBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKSA9IGRlZmF1bHQ7CiAKIHVu
c2lnbmVkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNv
bnN0CiB7CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0
YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFQKIHsKICAg
ICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAgbV9kaXNw
YXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKTsKLSAg
ICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVuaXQpOwor
ICAgIE9TU3RhdHVzIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFydCgpOwog
CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHNldElzUGxheWluZyh0cnVlKTsKQEAgLTExNiw3
ICsxMTYsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rpb248dm9p
ZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVAogdm9pZCBBdWRpb0Rlc3RpbmF0aW9u
Q29jb2E6OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6
c3RvcCIpOwotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9vdXRw
dXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iu
c3RvcCgpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAKICAgICBp
ZiAoIXJlc3VsdCkKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2suaXNQbGF5aW5n
RGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzdHJlYW1G
b3JtYXQpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Z2V0QXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0KQogewog
ICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwogICAgIGNvbnN0
IGludCBiaXRzUGVyQnl0ZSA9IDg7CkBAIC0xNTcsMTAgKzE1NywzMCBAQCBzdGF0aWMgdm9pZCBh
c3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhBdWRpb0J1ZmZlciogYnVmZmVycywgQXVkaW9CdXMmIGJ1
cywgVUludDMyCiAgICAgfQogfQogCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvY2Vz
c0J1c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiBidXMsIFVJbnQzMiBudW1iZXJPZkZyYW1lcykKK3sK
KyNpZiBQTEFURk9STShNQUMpCisgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDBkYiAoaS5lLiwgWy0x
LjAsIDEuMF0pCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1cy5udW1iZXJPZkNoYW5u
ZWxzKCk7ICsraSkgeworICAgICAgICBhdXRvKiBjaGFubmVsID0gYnVzLmNoYW5uZWwoaSk7Cisg
ICAgICAgIGlmICghY2hhbm5lbC0+aXNTaWxlbnQoKSkKKyAgICAgICAgICAgIFZlY3Rvck1hdGg6
OmNsYW1wKGNoYW5uZWwtPmRhdGEoKSwgLTEsIDEsIGNoYW5uZWwtPm11dGFibGVEYXRhKCksIG51
bWJlck9mRnJhbWVzKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShidXMpOworICAg
IFVOVVNFRF9QQVJBTShudW1iZXJPZkZyYW1lcyk7CisjZW5kaWYKK30KKworYm9vbCBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6Omhhc0Vub3VnaEZyYW1lcyhVSW50MzIgbnVtYmVyT2ZGcmFtZXMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fZmlmby0+bGVuZ3RoKCkgPj0gbnVtYmVyT2ZGcmFtZXM7Cit9
CisKIC8vIFB1bGxzIG9uIG91ciBwcm92aWRlciB0byBnZXQgcmVuZGVyZWQgYXVkaW8gc3RyZWFt
LgogT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIoY29uc3QgQXVkaW9UaW1l
U3RhbXAqIHRpbWVzdGFtcCwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3Qq
IGlvRGF0YSkKIHsKLSAgICBpZiAobV9maWZvLT5sZW5ndGgoKSA8IG51bWJlck9mRnJhbWVzKQor
ICAgIGlmICghaGFzRW5vdWdoRnJhbWVzKG51bWJlck9mRnJhbWVzKSkKICAgICAgICAgcmV0dXJu
IG5vRXJyOwogCiAgICAgaWYgKHRpbWVzdGFtcCkgewpAQCAtMTcyLDcgKzE5Miw3IEBAIE9TU3Rh
dHVzIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0
aW1lc3RhbXAsIFVJbnQzMiBuCiAgICAgICAgIG1fb3V0cHV0VGltZXN0YW1wID0gQXVkaW9JT1Bv
c2l0aW9uIHsgfTsKIAogICAgIGF1dG8qIGJ1ZmZlcnMgPSBpb0RhdGEtPm1CdWZmZXJzOwotICAg
IFVJbnQzMiBudW1iZXJPZkJ1ZmZlcnMgPSBpb0RhdGEtPm1OdW1iZXJCdWZmZXJzOworICAgIGF1
dG8gbnVtYmVyT2ZCdWZmZXJzID0gaW9EYXRhLT5tTnVtYmVyQnVmZmVyczsKIAogICAgIC8vIEFz
c29jaWF0ZSB0aGUgZGVzdGluYXRpb24gZGF0YSBhcnJheSB3aXRoIHRoZSBvdXRwdXQgYnVzIHRo
ZW4gZmlsbCB0aGUgRklGTy4KICAgICBhc3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhidWZmZXJzLCBt
X291dHB1dEJ1cy5nZXQoKSwgbnVtYmVyT2ZCdWZmZXJzLCBudW1iZXJPZkZyYW1lcywgMCwgbnVt
YmVyT2ZGcmFtZXMpOwpAQCAtMjEwLDEzICsyMzAsNiBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25D
b2NvYTo6cmVuZGVyT25SZW5kZXJpbmdUaGVhZChzaXplX3QgZnJhbWVzVG9SZW5kZXIpCiAgICAg
fQogfQogCi0vLyBEZWZhdWx0T3V0cHV0VW5pdCBjYWxsYmFjawotT1NTdGF0dXMgQXVkaW9EZXN0
aW5hdGlvbkNvY29hOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5pdFJlbmRlckFj
dGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUludDMyIC8qYnVz
TnVtYmVyKi8sIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEp
Ci17Ci0gICAgYXV0byogYXVkaW9PdXRwdXQgPSBzdGF0aWNfY2FzdDxBdWRpb0Rlc3RpbmF0aW9u
Q29jb2EqPih1c2VyRGF0YSk7Ci0gICAgcmV0dXJuIGF1ZGlvT3V0cHV0LT5yZW5kZXIodGltZXN0
YW1wLCBudW1iZXJPZkZyYW1lcywgaW9EYXRhKTsKLX0KLQogdm9pZCBBdWRpb0Rlc3RpbmF0aW9u
Q29jb2E6OnByb3ZpZGVJbnB1dChBdWRpb0J1cyogYnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQogewogICAgIEFTU0VSVF9VTlVTRUQoZnJhbWVzVG9Qcm9jZXNzLCBmcmFtZXNUb1Byb2Nlc3Mg
PT0gQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29h
LmgKaW5kZXggMDg5NGQ2MjFhMmYxNTMyMjUxMjczNjUwYjZlNWEzZDNlYzk5NmY4YS4uNGNiZmEz
YzM4ZGRmYTFjZDUzMGYwOTI3MDAwOWZkZGNhNjhmMGEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29h
LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKICNp
bmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJBdWRpb091dHB1dFVuaXRBZGFw
dG9yLmgiCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgPEF1ZGlv
VW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00Myw0NyArNDQs
NDIgQEAgY2xhc3MgUHVzaFB1bGxGSUZPOwogdXNpbmcgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbkNv
Y29hT3ZlcnJpZGUgPSBSZWY8QXVkaW9EZXN0aW5hdGlvbj4oKikoQXVkaW9JT0NhbGxiYWNrJiwg
ZmxvYXQgc2FtcGxlUmF0ZSk7CiAKIC8vIEFuIEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ29yZUF1
ZGlvJ3MgZGVmYXVsdCBvdXRwdXQgQXVkaW9Vbml0Ci1jbGFzcyBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlvU291cmNlUHJvdmlkZXIg
eworY2xhc3MgQXVkaW9EZXN0aW5hdGlvbkNvY29hIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24s
IHB1YmxpYyBBdWRpb1VuaXRSZW5kZXJlciwgcHVibGljIEF1ZGlvU291cmNlUHJvdmlkZXIgewog
cHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRpb0lPQ2FsbGJhY2smLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICB2aXJ0
dWFsIH5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBjb25maWd1cmVBdWRpb091dHB1dFVuaXQg
PSB0cnVlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9u
Q29jb2FPdmVycmlkZSBjcmVhdGVPdmVycmlkZTsKIAogcHJvdGVjdGVkOgorICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaGFzRW5vdWdoRnJhbWVzKFVJbnQzMiBudW1iZXJPZkZyYW1lcykgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgcmVuZGVyKGNvbnN0IEF1ZGlvVGltZVN0YW1w
KiwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlbmRlck9uUmVuZGVyaW5nVGhlYWQo
c2l6ZV90IGZyYW1lc1RvUmVuZGVyKTsKKwogICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJvb2wpOwog
Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSBmaW5hbCB7IHJldHVybiBtX2lzUGxheWluZzsgfQorICAg
IGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KICAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0U2FtcGxlUmF0
ZTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IGZpbmFsOwotICAgIEF1
ZGlvVW5pdCYgb3V0cHV0VW5pdCgpIHsgcmV0dXJuIG1fb3V0cHV0VW5pdDsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IGZpbmFsOwogCiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0OwotICAgIAotICAgIC8vIERl
ZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi0gICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2
b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1Rp
bWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9C
dWZmZXJMaXN0KiBpb0RhdGEpOwogCi0gICAgdm9pZCBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uJik7CiAKICAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+IG1fZGlz
cGF0Y2hUb1JlbmRlclRocmVhZDsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgUmVmPEF1ZGlvRGVz
dGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smLCBjb25z
dCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKKwogICAgIHZvaWQgc3RhcnQo
RnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN0b3AoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcmVuZGVyT25SZW5kZXJpbmdUaGVhZChzaXpl
X3QgZnJhbWVzVG9SZW5kZXIpOwotCi0gICAgZnJpZW5kIFJlZjxBdWRpb0Rlc3RpbmF0aW9uPiBB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29uc3QgU3RyaW5nJiwg
dW5zaWduZWQsIHVuc2lnbmVkLCBmbG9hdCk7Ci0gICAgCiAgICAgLy8gQXVkaW9Tb3VyY2VQcm92
aWRlci4KLSAgICB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvdmlkZUlucHV0KEF1ZGlv
QnVzKiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CiAKLSAgICB2b2lkIGNvbmZpZ3Vy
ZSgpOwogICAgIHZvaWQgcHJvY2Vzc0J1c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiwgVUludDMyIG51
bWJlck9mRnJhbWVzKTsKIAotICAgIE9TU3RhdHVzIHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFt
cCosIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwotCi0g
ICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKKyAgICBBdWRpb091dHB1dFVuaXRBZGFwdG9yIG1f
YXVkaW9PdXRwdXRVbml0QWRhcHRvcjsKICAgICBBdWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7
CiAKICAgICAvLyBUbyBwYXNzIHRoZSBkYXRhIGZyb20gRklGTyB0byB0aGUgYXVkaW8gZGV2aWNl
IGNhbGxiYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTA2NjQ4
M2EzMDMzY2YxMjFmZWMyYWZiYjNlNTg2ZjJjMmYxZTIzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5j
cHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBdWRpb091dHB1dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElP
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OkF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3IoQXVkaW9Vbml0UmVuZGVyZXImIHJlbmRlcmVyKQorICAgIDogbV9v
dXRwdXRVbml0KDApCisgICAgLCBtX2F1ZGlvVW5pdFJlbmRlcmVyKHJlbmRlcmVyKQoreworfQor
CitBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRVbml0QWRhcHRvcigpCit7Cisg
ICAgaWYgKG1fb3V0cHV0VW5pdCkKKyAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bv
c2UobV9vdXRwdXRVbml0KTsKK30KKworT1NTdGF0dXMgQXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6
c3RhcnQoKQoreworICAgIHJldHVybiBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVuaXQp
OworfQorCitPU1N0YXR1cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKCkKK3sKKyAgICBy
ZXR1cm4gQXVkaW9PdXRwdXRVbml0U3RvcChtX291dHB1dFVuaXQpOworfQorCisvLyBEZWZhdWx0
T3V0cHV0VW5pdCBjYWxsYmFjaworT1NTdGF0dXMgQXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6aW5w
dXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyosIGNvbnN0
IEF1ZGlvVGltZVN0YW1wKiB0aW1lc3RhbXAsIFVJbnQzMiAvKmJ1c051bWJlciovLCBVSW50MzIg
bnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQoreworICAgIGF1dG8qIGFk
YXB0b3IgPSBzdGF0aWNfY2FzdDxBdWRpb091dHB1dFVuaXRBZGFwdG9yKj4odXNlckRhdGEpOwor
ICAgIHJldHVybiBhZGFwdG9yLT5tX2F1ZGlvVW5pdFJlbmRlcmVyLnJlbmRlcih0aW1lc3RhbXAs
IG51bWJlck9mRnJhbWVzLCBpb0RhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBiZjhhZWUzMzA3ZDEyMjlhYzEyOTE3YTVjNTMzMTg5NmE4MTkwYTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1
dFVuaXRBZGFwdG9yLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1Vu
aXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1VuaXRSZW5kZXJlciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9Vbml0UmVuZGVyZXIoKSA9IGRlZmF1bHQ7Cisg
ICAgdmlydHVhbCBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIg
bnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKSA9IDA7Cit9OworCitjbGFz
cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBB
dWRpb091dHB1dFVuaXRBZGFwdG9yKEF1ZGlvVW5pdFJlbmRlcmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgfkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscyk7CisgICAgV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgc3RhcnQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBPU1N0YXR1cyBzdG9wKCk7CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9u
RmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQzMiBu
dW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOworCisgICAgQXVkaW9Vbml0
IG1fb3V0cHV0VW5pdDsKKyAgICBBdWRpb1VuaXRSZW5kZXJlciYgbV9hdWRpb1VuaXRSZW5kZXJl
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0
NzMzZGU3Zjc1ZGE5YWI2ZDA4N2EyMzFhZDhlYjk4MWRjNjg4OGYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9S
TShJT1NfRkFNSUxZKQotCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgiCi0KLSNp
bmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KLQot
U09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94
LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1ZGlvQ29tcG9uZW50
IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uICppbkRlc2MpLCAo
aW5Db21wb25lbnQsIGluRGVzYykpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb0NvbXBv
bmVudEluc3RhbmNlTmV3LCBPU1N0YXR1cywgKEF1ZGlvQ29tcG9uZW50IGluQ29tcG9uZW50LCBB
dWRpb0NvbXBvbmVudEluc3RhbmNlICpvdXRJbnN0YW5jZSksIChpbkNvbXBvbmVudCwgb3V0SW5z
dGFuY2UpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRkUHJvcGVydHlMaXN0
ZW5lciwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlEIGlu
SUQsIEF1ZGlvVW5pdFByb3BlcnR5TGlzdGVuZXJQcm9jIGluUHJvYywgdm9pZCAqaW5Qcm9jVXNl
ckRhdGEpLCAoaW5Vbml0LCBpbklELCBpblByb2MsIGluUHJvY1VzZXJEYXRhKSkKLVNPRlRfTElO
SyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvVW5p
dCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5TY29w
ZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIHZvaWQgKm91dERhdGEsIFVJbnQzMiAqaW9E
YXRhU2l6ZSksIChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgb3V0RGF0YSwgaW9E
YXRhU2l6ZSkpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJbml0aWFsaXplLCBP
U1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQpLCAoaW5Vbml0KSkKLVNPRlRfTElOSyhBdWRpb1Rv
b2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQs
IEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5TY29wZSwgQXVkaW9V
bml0RWxlbWVudCBpbkVsZW1lbnQsIGNvbnN0IHZvaWQgKmluRGF0YSwgVUludDMyIGluRGF0YVNp
emUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1lbnQsIGluRGF0YSwgaW5EYXRhU2l6
ZSkpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OmNvbmZpZ3VyZSgpCi17Ci0gICAgY29uc3QgaW50IGtQcmVmZXJyZWRCdWZmZXJTaXplID0gMjU2
OwotCi0gICAgLy8gT3BlbiBhbmQgaW5pdGlhbGl6ZSBEZWZhdWx0T3V0cHV0VW5pdAotICAgIEF1
ZGlvQ29tcG9uZW50IGNvbXA7Ci0gICAgQXVkaW9Db21wb25lbnREZXNjcmlwdGlvbiBkZXNjOwot
Ci0gICAgZGVzYy5jb21wb25lbnRUeXBlID0ga0F1ZGlvVW5pdFR5cGVfT3V0cHV0OwotICAgIGRl
c2MuY29tcG9uZW50U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX1JlbW90ZUlPOwotICAgIGRl
c2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBsZTsK
LSAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsKLSAgICBkZXNjLmNvbXBvbmVudEZsYWdzTWFz
ayA9IDA7Ci0gICAgY29tcCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQoMCwgJmRlc2MpOwotCi0g
ICAgQVNTRVJUKGNvbXApOwotCi0gICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9Db21wb25lbnRJ
bnN0YW5jZU5ldyhjb21wLCAmb3V0cHV0VW5pdCgpKTsKLSAgICBBU1NFUlQoIXJlc3VsdCk7Ci0K
LSAgICBVSW50MzIgZmxhZyA9IDE7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHko
b3V0cHV0VW5pdCgpLAotICAgICAgICBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfRW5hYmxlSU8s
Ci0gICAgICAgIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsCi0gICAgICAgIDAsCi0gICAgICAgICZm
bGFnLAotICAgICAgICBzaXplb2YoZmxhZykpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAg
IHJlc3VsdCA9IEF1ZGlvVW5pdEluaXRpYWxpemUob3V0cHV0VW5pdCgpKTsKLSAgICBBU1NFUlQo
IXJlc3VsdCk7Ci0gICAgLy8gU2V0IHJlbmRlciBjYWxsYmFjawotICAgIEFVUmVuZGVyQ2FsbGJh
Y2tTdHJ1Y3QgaW5wdXQ7Ci0gICAgaW5wdXQuaW5wdXRQcm9jID0gaW5wdXRQcm9jOwotICAgIGlu
cHV0LmlucHV0UHJvY1JlZkNvbiA9IHRoaXM7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJv
cGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ss
IGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgJmlucHV0LCBzaXplb2YoaW5wdXQpKTsKLSAgICBB
U1NFUlQoIXJlc3VsdCk7Ci0KLSAgICAvLyBTZXQgc3RyZWFtIGZvcm1hdAotICAgIEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7Ci0KLSAgICBVSW50MzIgc2l6ZSA9IHNp
emVvZihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOwotICAgIHJlc3VsdCA9IEF1ZGlvVW5p
dEdldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1h
dCwga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwgMCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQsICZzaXpl
KTsKLSAgICBBU1NFUlQoIXJlc3VsdCk7Ci0KLSAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24oc3RyZWFtRm9ybWF0KTsKLQotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5
KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5p
dFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbikpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIEF1ZGlvU2Vz
c2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa1ByZWZlcnJlZEJ1
ZmZlclNpemUpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvY2Vzc0J1c0Fm
dGVyUmVuZGVyKEF1ZGlvQnVzJiwgVUludDMyKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1NfRkFNSUxZ
KQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9P
dXRwdXRVbml0QWRhcHRvcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU5NjMwZmI2MGYy
MmIzZWU1NmQyNDJkNzMwNDM0ODZiODdiNTYyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcApA
QCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0LCAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb091
dHB1dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Nv
ZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoQXVkaW9Ub29sYm94KQorU09GVF9M
SU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Db21wb25lbnRGaW5kTmV4dCwgQXVkaW9Db21wb25lbnQs
IChBdWRpb0NvbXBvbmVudCBpbkNvbXBvbmVudCwgY29uc3QgQXVkaW9Db21wb25lbnREZXNjcmlw
dGlvbiAqaW5EZXNjKSwgKGluQ29tcG9uZW50LCBpbkRlc2MpKQorU09GVF9MSU5LKEF1ZGlvVG9v
bGJveCwgQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldywgT1NTdGF0dXMsIChBdWRpb0NvbXBvbmVu
dCBpbkNvbXBvbmVudCwgQXVkaW9Db21wb25lbnRJbnN0YW5jZSAqb3V0SW5zdGFuY2UpLCAoaW5D
b21wb25lbnQsIG91dEluc3RhbmNlKSkKK1NPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5p
dEFkZFByb3BlcnR5TGlzdGVuZXIsIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwgQXVkaW9V
bml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRQcm9wZXJ0eUxpc3RlbmVyUHJvYyBpblByb2Ms
IHZvaWQgKmluUHJvY1VzZXJEYXRhKSwgKGluVW5pdCwgaW5JRCwgaW5Qcm9jLCBpblByb2NVc2Vy
RGF0YSkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRHZXRQcm9wZXJ0eSwgT1NT
dGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlEIGluSUQsIEF1ZGlv
VW5pdFNjb3BlIGluU2NvcGUsIEF1ZGlvVW5pdEVsZW1lbnQgaW5FbGVtZW50LCB2b2lkICpvdXRE
YXRhLCBVSW50MzIgKmlvRGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1l
bnQsIG91dERhdGEsIGlvRGF0YVNpemUpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9V
bml0SW5pdGlhbGl6ZSwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0KSwgKGluVW5pdCkpCitT
T0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRTZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChB
dWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFNjb3Bl
IGluU2NvcGUsIEF1ZGlvVW5pdEVsZW1lbnQgaW5FbGVtZW50LCBjb25zdCB2b2lkICppbkRhdGEs
IFVJbnQzMiBpbkRhdGFTaXplKSwgKGluVW5pdCwgaW5JRCwgaW5TY29wZSwgaW5FbGVtZW50LCBp
bkRhdGEsIGluRGF0YVNpemUpKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgQXVkaW9P
dXRwdXRVbml0QWRhcHRvcjo6Y29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK3sKKyAgICBjb25zdCBpbnQga1ByZWZlcnJl
ZEJ1ZmZlclNpemUgPSAyNTY7CisKKyAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRP
dXRwdXRVbml0CisgICAgQXVkaW9Db21wb25lbnQgY29tcDsKKyAgICBBdWRpb0NvbXBvbmVudERl
c2NyaXB0aW9uIGRlc2M7CisKKyAgICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlw
ZV9PdXRwdXQ7CisgICAgZGVzYy5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVf
UmVtb3RlSU87CisgICAgZGVzYy5jb21wb25lbnRNYW51ZmFjdHVyZXIgPSBrQXVkaW9Vbml0TWFu
dWZhY3R1cmVyX0FwcGxlOworICAgIGRlc2MuY29tcG9uZW50RmxhZ3MgPSAwOworICAgIGRlc2Mu
Y29tcG9uZW50RmxhZ3NNYXNrID0gMDsKKyAgICBjb21wID0gQXVkaW9Db21wb25lbnRGaW5kTmV4
dCgwLCAmZGVzYyk7CisKKyAgICBBU1NFUlQoY29tcCk7CisKKyAgICBPU1N0YXR1cyByZXN1bHQg
PSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGNvbXAsICZtX291dHB1dFVuaXQpOworICAgIEFT
U0VSVCghcmVzdWx0KTsKKworICAgIFVJbnQzMiBmbGFnID0gMTsKKyAgICByZXN1bHQgPSBBdWRp
b1VuaXRTZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsCisgICAgICAgIGtBdWRpb091dHB1dFVuaXRQ
cm9wZXJ0eV9FbmFibGVJTywKKyAgICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwKKyAgICAg
ICAgMCwKKyAgICAgICAgJmZsYWcsCisgICAgICAgIHNpemVvZihmbGFnKSk7CisgICAgQVNTRVJU
KCFyZXN1bHQpOworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShtX291dHB1dFVu
aXQpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKyAgICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCisg
ICAgQVVSZW5kZXJDYWxsYmFja1N0cnVjdCBpbnB1dDsKKyAgICBpbnB1dC5pbnB1dFByb2MgPSBp
bnB1dFByb2M7CisgICAgaW5wdXQuaW5wdXRQcm9jUmVmQ29uID0gdGhpczsKKyAgICByZXN1bHQg
PSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9T
ZXRSZW5kZXJDYWxsYmFjaywga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVv
ZihpbnB1dCkpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIC8vIFNldCBzdHJlYW0gZm9y
bWF0CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKworICAg
IFVJbnQzMiBzaXplID0gc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik7CisgICAg
cmVzdWx0ID0gQXVkaW9Vbml0R2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJv
cGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0
cmVhbUZvcm1hdCwgJnNpemUpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIGNvbnN0ZXhw
ciBpbnQgYnl0ZXNQZXJGbG9hdCA9IHNpemVvZihGbG9hdDMyKTsKKyAgICBjb25zdGV4cHIgaW50
IGJpdHNQZXJCeXRlID0gODsKKyAgICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBoYXJkd2Fy
ZVNhbXBsZVJhdGU7CisgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExp
bmVhclBDTTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0Rmxh
Z3NOYXRpdmVGbG9hdFBhY2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkOwor
ICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0OworICAgIHN0
cmVhbUZvcm1hdC5tRnJhbWVzUGVyUGFja2V0ID0gMTsKKyAgICBzdHJlYW1Gb3JtYXQubUJ5dGVz
UGVyRnJhbWUgPSBieXRlc1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tQ2hhbm5lbHNQZXJG
cmFtZSA9IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CisgICAgc3RyZWFtRm9ybWF0Lm1CaXRzUGVy
Q2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdDsKKworICAgIHJlc3VsdCA9IEF1
ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVh
bUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwg
c2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOworICAgIEFTU0VSVCghcmVzdWx0
KTsKKworICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZl
clNpemUoa1ByZWZlcnJlZEJ1ZmZlclNpemUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0
aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9E
ZXN0aW5hdGlvbk1hYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwZjljOWZm
ZjUxZjQ4M2I0NDA0MWEzNzcxZmI0MTg3YTdhZWRhN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Db2NvYS5oIgotCi0jaWYgRU5B
QkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiQXVkaW9CdXMuaCIK
LSNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCi0jaW5jbHVkZSA8Q29yZUF1ZGlvL0F1ZGlvSGFyZHdh
cmUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6Y29uZmlndXJlKCkKLXsKLSAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRw
dXRVbml0Ci0gICAgQXVkaW9Db21wb25lbnQgY29tcDsKLSAgICBBdWRpb0NvbXBvbmVudERlc2Ny
aXB0aW9uIGRlc2M7Ci0KLSAgICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9P
dXRwdXQ7Ci0gICAgZGVzYy5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfRGVm
YXVsdE91dHB1dDsKLSAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRpb1VuaXRN
YW51ZmFjdHVyZXJfQXBwbGU7Ci0gICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7Ci0gICAgZGVz
Yy5jb21wb25lbnRGbGFnc01hc2sgPSAwOwotICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVudEZpbmRO
ZXh0KDAsICZkZXNjKTsKLQotICAgIEFTU0VSVChjb21wKTsKLQotICAgIE9TU3RhdHVzIHJlc3Vs
dCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm91dHB1dFVuaXQoKSk7Ci0gICAg
QVNTRVJUKCFyZXN1bHQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShvdXRw
dXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIC8vIFNldCByZW5kZXIgY2Fs
bGJhY2sKLSAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0OwotICAgIGlucHV0LmlucHV0
UHJvYyA9IGlucHV0UHJvYzsKLSAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOwotICAg
IHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFBy
b3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCAwLCAmaW5w
dXQsIHNpemVvZihpbnB1dCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIC8vIFNldCBz
dHJlYW0gZm9ybWF0Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1h
dDsKLSAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKLQot
ICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5p
dFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCop
JnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwotICAg
IEFTU0VSVCghcmVzdWx0KTsKLX0KLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnByb2Nl
c3NCdXNBZnRlclJlbmRlcihBdWRpb0J1cyYgYnVzLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpCi17
Ci0gICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDBkYiAoaS5lLiwgWy0xLjAsIDEuMF0pCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkgewotICAg
ICAgICBhdXRvKiBjaGFubmVsID0gYnVzLmNoYW5uZWwoaSk7Ci0gICAgICAgIGlmICghY2hhbm5l
bC0+aXNTaWxlbnQoKSkKLSAgICAgICAgICAgIFZlY3Rvck1hdGg6OmNsYW1wKGNoYW5uZWwtPmRh
dGEoKSwgLTEsIDEsIGNoYW5uZWwtPm11dGFibGVEYXRhKCksIG51bWJlck9mRnJhbWVzKTsKLSAg
ICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVESU8pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jOGVkM2VmNzhjOGM2YTNiMWUwNzBjYjQ0MDU5NjlhZGE0YWMzZGEyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0
VW5pdEFkYXB0b3JNYWMuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykgJiYgUExB
VEZPUk0oTUFDKQorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlIDxDb3JlQXVkaW8v
QXVkaW9IYXJkd2FyZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgQXVkaW9PdXRw
dXRVbml0QWRhcHRvcjo6Y29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWdu
ZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK3sKKyAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXpl
IERlZmF1bHRPdXRwdXRVbml0CisgICAgQXVkaW9Db21wb25lbnQgY29tcDsKKyAgICBBdWRpb0Nv
bXBvbmVudERlc2NyaXB0aW9uIGRlc2M7CisKKyAgICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVk
aW9Vbml0VHlwZV9PdXRwdXQ7CisgICAgZGVzYy5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5p
dFN1YlR5cGVfRGVmYXVsdE91dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9
IGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBwbGU7CisgICAgZGVzYy5jb21wb25lbnRGbGFncyA9
IDA7CisgICAgZGVzYy5jb21wb25lbnRGbGFnc01hc2sgPSAwOworICAgIGNvbXAgPSBBdWRpb0Nv
bXBvbmVudEZpbmROZXh0KDAsICZkZXNjKTsKKworICAgIEFTU0VSVChjb21wKTsKKworICAgIE9T
U3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0
VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5p
dGlhbGl6ZShtX291dHB1dFVuaXQpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIC8vIFNl
dCByZW5kZXIgY2FsbGJhY2sKKyAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0OworICAg
IGlucHV0LmlucHV0UHJvYyA9IGlucHV0UHJvYzsKKyAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24g
PSB0aGlzOworICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwg
a0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xv
YmFsLCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKwor
ICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0CisgICAgY29uc3RleHByIGludCBieXRlc1BlckZsb2F0
ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0c1BlckJ5dGUgPSA4Owor
CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBzdHJl
YW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBoYXJkd2FyZVNhbXBsZVJhdGU7CisgICAgc3RyZWFtRm9y
bWF0Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKKyAgICBzdHJlYW1Gb3JtYXQu
bUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8IGtBdWRp
b0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQ
YWNrZXQgPSBieXRlc1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tRnJhbWVzUGVyUGFja2V0
ID0gMTsKKyAgICBzdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZsb2F0Owor
ICAgIHN0cmVhbUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHM7CisgICAgc3RyZWFtRm9ybWF0Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0
ZXNQZXJGbG9hdDsKKworICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0
VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lu
cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbikpOworICAgIEFTU0VSVCghcmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oTUFDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGlu
YXRpb25Db2NvYS5jcHAKaW5kZXggNWExMmNkZTRmY2RmYzU3ZmFkNDJiN2Q5ZThmZTczMjA0MzUw
OWQ3OC4uNWQyYmJmY2E0YWIzMmM2OTk4MmI3YzI1YmFlNzY4NmRmZjIzOTJhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29h
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0
aW9uQ29jb2EuY3BwCkBAIC02OCwxMCArNjgsMTAgQEAgdm9pZCBNb2NrQXVkaW9EZXN0aW5hdGlv
bkNvY29hOjp0aWNrKCkKIHsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHNhbXBs
ZVJhdGUgPSBzYW1wbGVSYXRlKCksIG51bWJlck9mRnJhbWVzVG9Qcm9jZXNzID0gbV9udW1iZXJP
ZkZyYW1lc1RvUHJvY2Vzc10gewogICAgICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24g
c3RyZWFtRm9ybWF0OwotICAgICAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3Ry
ZWFtRm9ybWF0KTsKKyAgICAgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVh
bUZvcm1hdCk7CiAKICAgICAgICAgV2ViQXVkaW9CdWZmZXJMaXN0IHdlYkF1ZGlvQnVmZmVyTGlz
dCB7IHN0cmVhbUZvcm1hdCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgfTsKLSAgICAgICAgQXVk
aW9EZXN0aW5hdGlvbkNvY29hOjppbnB1dFByb2ModGhpcywgMCwgMCwgMCwgbnVtYmVyT2ZGcmFt
ZXNUb1Byb2Nlc3MsIHdlYkF1ZGlvQnVmZmVyTGlzdC5saXN0KCkpOworICAgICAgICByZW5kZXIo
MCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1ZGlvQnVmZmVyTGlzdC5saXN0KCkpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRleCAyN2YyYTY5
OTZhYzk0MGNjZDg0NzkzNTk1NGU2ZDkxODRhM2QzM2QwLi4xYWI5ZjEzYWNiZjI5ZTE1MTE4OGI1
N2I3NDQ0NjgzOTI0NzA3NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKQEAg
LTI5LDExNiArMjksMTM2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VC
X0FVRElPKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1
ZGUgIlJlbW90ZUF1ZGlvQnVzRGF0YS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9BdWRpb0J1cy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdWRpb1V0aWxpdGllcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFB1bGxGSUZPLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4K
IAotbmFtZXNwYWNlIFdlYktpdCB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiU2hh
cmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvT3V0cHV0VW5p
dEFkYXB0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9X
ZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0J1cy5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgorI2VuZGlmCiAKLS8vIFRo
aXMgRklGTyBzaXplIG1hdGNoZXMgdG8gb25lIGluIEF1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAg
YW5kIHdhcyBpbXBvcnRlZCBmcm9tIEJsaW5rLgotY29uc3RleHByIHNpemVfdCBmaWZvU2l6ZSA9
IDk2ICogV2ViQ29yZTo6QXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOworbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4sIHB1YmxpYyBXZWJDb3Jl
OjpBdWRpb0lPQ2FsbGJhY2sgeworY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgorICAgIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9Vbml0UmVuZGVyZXIK
KyNlbmRpZgorewogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6QXVkaW9C
dXM7Ci0gICAgdXNpbmcgQXVkaW9EZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b247Ci0gICAgdXNpbmcgU2hhcmVkQnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOwotCiAg
ICAgc3RhdGljIFJlZjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllciwKLSAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50
MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJ
ZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50
aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbigpCiAgICAgewotICAgICAgICBSRUxF
QVNFX0FTU0VSVCghbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCkpOwogICAgIH0KIAogICAgIHZv
aWQgc2NoZWR1bGVHcmFjZWZ1bFNodXRkb3duSWZOZWVkZWQoKQogICAgIHsKLSAgICAgICAgaWYg
KCFpc1BsYXlpbmcoKSkKKyAgICAgICAgaWYgKCFtX2lzUGxheWluZykKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24gPSB0aGlz
OwotICAgICAgICBzdG9wKCk7CiAgICAgfQogCi0gICAgdm9pZCBzdGFydCgpIHsgbV9kZXN0aW5h
dGlvbi0+c3RhcnQoeyB9KTsgfQotICAgIHZvaWQgc3RvcCgpIHsgbV9kZXN0aW5hdGlvbi0+c3Rv
cCgpOyB9Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uLT5pc1Bs
YXlpbmcoKTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fZGVzdGluYXRpb24tPmZyYW1lc1BlckJ1ZmZlcigpIDsgfQorI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCisgICAgeworICAg
ICAgICBtX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisKKyAgICAgICAgaWYgKGlwY0hhbmRs
ZS5oYW5kbGUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fcmluZ0J1ZmZlci0+ZGVhbGxvY2F0
ZSgpOworICAgICAgICAgICAgc3RvcmFnZSgpLnNldFJlYWRPbmx5KGZhbHNlKTsKKyAgICAgICAg
ICAgIHN0b3JhZ2UoKS5zZXRTdG9yYWdlKG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgYXV0byBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNI
YW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAg
ICAgc3RvcmFnZSgpLnNldFN0b3JhZ2UoV1RGTW92ZShtZW1vcnkpKTsKKyAgICAgICAgc3RvcmFn
ZSgpLnNldFJlYWRPbmx5KHRydWUpOworCisgICAgICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUo
ZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKKyAgICB9CisjZW5kaWYKKworICAgIHZvaWQg
c3RhcnQoKQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFk
YXB0b3Iuc3RhcnQoKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBtX2lzUGxh
eWluZyA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCBzdG9wKCkKKyAgICB7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLnN0b3AoKTsKKyAgICAgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgICAgICBtX2lzUGxheWluZyA9IGZhbHNlOworICAgIH0KKworICAg
IGJvb2wgaXNQbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAogcHJpdmF0
ZToKLSAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQor
ICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0
IGhhcmR3YXJlU2FtcGxlUmF0ZSkKICAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikK
ICAgICAgICAgLCBtX2lkKGlkZW50aWZpZXIpCi0gICAgICAgICwgbV9kZXN0aW5hdGlvbihBdWRp
b0Rlc3RpbmF0aW9uOjpjcmVhdGUoKnRoaXMsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRD
aGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpCi0gICAgICAgICwg
bV9maWZvKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZpZm9TaXplKQorI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgICAgICAsIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcigqdGhpcykKKyAgICAgICAg
LCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KG1ha2VV
bmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIpKSkKKyNlbmRpZgorICAg
ICAgICAvLyAsIG1fY29udGV4dFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKICAgICB7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUo
aGFyZHdhcmVTYW1wbGVSYXRlLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyNlbmRpZgogICAg
IH0KIAotICAgIHZvaWQgcmVuZGVyKEF1ZGlvQnVzKiwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVz
LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzLCBjb25zdCBXZWJDb3JlOjpBdWRpb0lPUG9zaXRpb24m
IG91dHB1dFBvc2l0aW9uKSBvdmVycmlkZQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFNoYXJl
ZFJpbmdCdWZmZXJTdG9yYWdlJiBzdG9yYWdlKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwotCi0gICAgICAgIGlmIChtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2VmdWxT
aHV0ZG93bikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB7Ci0gICAgICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgZnJhbWVzVG9Q
cm9jZXNzID0gbV9maWZvLnB1bGwoZGVzdGluYXRpb25CdXMsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCFmcmFtZXNUb1Byb2Nlc3MpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZSY+
KG1fcmluZ0J1ZmZlci0+c3RvcmFnZSgpKTsKKyAgICB9CiAKLSAgICAgICAgVmVjdG9yPFJlZjxT
aGFyZWRNZW1vcnk+PiBidWZmZXJzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGVzdGluYXRpb25CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSB7Ci0gICAgICAgICAgICBh
dXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZW9mKGZsb2F0KSAqIGZyYW1l
c1RvUHJvY2Vzcyk7Ci0gICAgICAgICAgICBidWZmZXJzLmFwcGVuZCgqbWVtb3J5KTsKLSAgICAg
ICAgfQorICAgIE9TU3RhdHVzIHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCogdGltZXN0YW1w
LCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQorICAgIHsK
KyAgICAgICAgVU5VU0VEX1BBUkFNKHRpbWVzdGFtcCk7CiAKICAgICAgICAgLy8gRklYTUU6IEl0
IGlzIHVuZm9ydHVuYXRlIHdlIGhhdmUgdG8gZGlzcGF0Y2ggdG8gdGhlIG1haW4gdGhlYWQgaGVy
ZS4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gSVBDIHN0cmFpZ2h0IGZyb20gdGhlCiAgICAgICAgIC8v
IHJlbmRlciB0aHJlYWQgYnV0IHRoaXMgaXMgbm90IHN1cHBvcnRlZCBieSBzZW5kV2l0aEFzeW5j
UmVwbHkoKS4KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBmcmFtZXNUb1Byb2Nlc3MsIG91dHB1dFBvc2l0aW9uLCBidWZmZXJz
ID0gV1RGTW92ZShidWZmZXJzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFJlbW90ZUF1ZGlv
QnVzRGF0YSBidXNEYXRhIHsgZnJhbWVzVG9Qcm9jZXNzLCBvdXRwdXRQb3NpdGlvbiwgYnVmZmVy
cy5tYXAoW10oYXV0byYgbWVtb3J5KSB7IHJldHVybiBtZW1vcnkuY29weVJlZigpOyB9KSB9Owot
ICAgICAgICAgICAgQVNTRVJUKGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgICAgICBtX2Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5OjpSZW5kZXJCdWZmZXIoYnVzRGF0YSksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgYnVmZmVycyA9IFdURk1vdmUoYnVmZmVy
cyksIGZyYW1lc1RvUHJvY2Vzc10oKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBhdWRpb0J1cyA9
IEF1ZGlvQnVzOjpjcmVhdGUoYnVmZmVycy5zaXplKCksIGZyYW1lc1RvUHJvY2VzcywgZmFsc2Up
OwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBidWZmZXJzLnNpemUo
KTsgKytpKQotICAgICAgICAgICAgICAgICAgICBhdWRpb0J1cy0+c2V0Q2hhbm5lbE1lbW9yeShp
LCBzdGF0aWNfY2FzdDxmbG9hdCo+KGJ1ZmZlcnNbaV0tPmRhdGEoKSksIGZyYW1lc1RvUHJvY2Vz
cyk7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2ZpZm9Mb2NrKTsK
LSAgICAgICAgICAgICAgICBtX2ZpZm8ucHVzaChhdWRpb0J1cy5nZXQoKSk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbnVt
YmVyT2ZGcmFtZXMsIGlvRGF0YV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlv
bi5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIobnVtYmVyT2ZGcmFtZXMpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIG51bWJlck9mRnJhbWVzLCBpb0Rh
dGFdKHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzVG9SZW5kZXIs
IHVpbnQ2NF90IGJvdW5kc1N0YXJ0RnJhbWUsIHVpbnQ2NF90IGJvdW5kc0VuZEZyYW1lKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobnVtYmVyT2ZGcmFtZXMgPj0gbnVtYmVyT2ZG
cmFtZXNUb1JlbmRlcik7CisKKyAgICAgICAgICAgICAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJl
bnRGcmFtZUJvdW5kcyhib3VuZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7CisgICAgICAg
ICAgICAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaChpb0RhdGEsIG51bWJlck9mRnJhbWVzVG9SZW5k
ZXIsIHN0YXJ0RnJhbWUpOwogICAgICAgICAgICAgfSwgbV9pZC50b1VJbnQ2NCgpKTsKICAgICAg
ICAgfSk7Ci0gICAgfQogCi0gICAgdm9pZCBpc1BsYXlpbmdEaWRDaGFuZ2UoKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgaWYgKG1fcHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1bFNodXRkb3duKSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCkp
OwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVmQ291bnQoKSA9PSAxKTsKLSAgICAgICAg
ICAgIG1fcHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1bFNodXRkb3duID0gbnVsbHB0cjsgLy8gRGVs
ZXRlcyAidGhpcyIuCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpc1Bs
YXlpbmcgPSBtX2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKSwgaWRlbnRpZmllciA9IG1faWQudG9V
SW50NjQoKV0gewotICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OkRpZENoYW5nZUlzUGxheWluZyhp
c1BsYXlpbmcpLCBpZGVudGlmaWVyKTsKLSAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBub0Vy
cjsKICAgICB9CisjZW5kaWYKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29u
bmVjdGlvbjsKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBtX2lkOwotICAg
IFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBtX2Rlc3RpbmF0aW9uOwogICAgIFJlZlB0cjxSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uPiBtX3Byb3RlY3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93bjsK
LSAgICBMb2NrIG1fZmlmb0xvY2s7Ci0gICAgV2ViQ29yZTo6UHVzaFB1bGxGSUZPIG1fZmlmbzsK
KworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IgbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yOworCisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uIG1fZGVzY3JpcHRpb247CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkNBUmlu
Z0J1ZmZlcj4gbV9yaW5nQnVmZmVyOworI2VuZGlmCisKKyAgICBib29sIG1faXNQbGF5aW5nIHsg
ZmFsc2UgfTsKIH07CiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
KQpAQCAtMTQ4LDE0ICsxNjgsMTMgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlAKIAogUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6On5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigp
ID0gZGVmYXVsdDsKIAotdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRl
QXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51
bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLCB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVk
aW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJl
ck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQg
c2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLAorICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8gbmV3SUQgPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRp
Zmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCk7Ci0gICAgYXV0byBkZXN0aW5hdGlvbiA9IFJlbW90
ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIG5l
d0lELCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwotICAgIGF1dG8gZnJhbWVzUGVyQnVmZmVyID0gZGVzdGlu
YXRpb24tPmZyYW1lc1BlckJ1ZmZlcigpOworICAgIGF1dG8gZGVzdGluYXRpb24gPSBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBuZXdJ
RCwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwogICAgIG1fYXVkaW9EZXN0
aW5hdGlvbnMuYWRkKG5ld0lELCBXVEZNb3ZlKGRlc3RpbmF0aW9uKSk7Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIobmV3SUQsIGZyYW1lc1BlckJ1ZmZlcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
bmV3SUQpOwogfQogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVB
dWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE4
Niw2ICsyMDUsMTQgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RvcEF1
ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbkkKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihpc1BsYXlpbmcpOwogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICBpZiAo
YXV0byogaXRlbSA9IG1fYXVkaW9EZXN0aW5hdGlvbnMuZ2V0KGlkZW50aWZpZXIpKQorICAgICAg
ICBpdGVtLT5hdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChpcGNIYW5kbGUsIGRlc2NyaXB0aW9u
LCBudW1iZXJPZkZyYW1lcyk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlci5oCmluZGV4IDExYjRiZWYxMDQxYjdhMDhhZjNiMWIwOWRlMzg0
YzAzZDU4OTNkMWUuLmUyMmMxMGFjZTlhODg1NmYwY2IwODg3NzJiYjE0NWJlYmYxNjBmZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCkBAIC0zNCw2ICszNCwxMiBAQAogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbjsKK30KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKQEAgLTQ2LDI1ICs1MiwyNSBAQCBwdWJsaWM6CiAg
ICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYpOwogICAgIH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpOwogCi0gICAgdm9pZCBj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLCB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIpPiYmKTsKLSAgICB2
b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzdGFydEF1ZGlvRGVz
dGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCi0gICAgewotICAgICAgICBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7Ci0gICAgfQorICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vz
cyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBk
aWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQogCiBwcml2YXRlOgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAorICAgIHZvaWQgY3Jl
YXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90
IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywg
ZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyKT4mJik7CisgICAgdm9p
ZCBkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc3RhcnRBdWRpb0Rlc3Rp
bmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFu
Z2VkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzKTsKKyNlbmRpZgorCiAgICAgSGFzaE1hcDxSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgUmVmPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+PiBtX2F1
ZGlvRGVzdGluYXRpb25zOwogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzczsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmU7Cit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQ7CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KaW5kZXggYmMwNWFlMTE3OWFhMmFkMzRlMzMzODUzMmJlZGI1ZTZiNGQ0MjNhMC4uMmJj
OWVkYzcxYjk0ZTg2NzljYzIwYjYyZDgxYTkzMmNlMzE1NWIwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjQsMTQgKzI0LDE0IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogCiBtZXNzYWdlcyAtPiBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKLQotICAgIENyZWF0
ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9m
SW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2Ft
cGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKSBTeW5jaHJvbm91cwotCisgICAgQ3Jl
YXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRGVs
ZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAKICAgICBTdGFydEF1ZGlvRGVzdGluYXRpb24o
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAo
Ym9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCiAgICAgU3RvcEF1ZGlvRGVzdGluYXRpb24oV2Vi
S2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9v
bCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCi0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBdWRp
b1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFn
ZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1
aW50NjRfdCBudW1iZXJPZkZyYW1lcykKKyNlbmRpZgogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBlZGExNWEzNWZk
YmE1YzcyMjQyYzEzODU4ZjczOGM0YWM2ZjhhMGUuLjQ5ODA4MzZiMGVjMzc0M2YzNGYxYTI1YzMw
MDZjZDZkY2VhNTQ3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTQzMCw3ICsxNDMwLDYgQEAKIAkJOUI1NDk5QjIyMzYyQTdFQzAw
REY4QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU0OTlCMDIzNjJBN0VDMDBERjhC
QTUgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjVCRUMyNjI0MDBGNEE5MDA3MEM2
RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUI1QkVDMjQyNDAwRjRBOTAwNzBDNkVGIC8qIFdlYk1lZGlhU3RyYXRl
Z3kuaCAqLzsgfTsKIAkJOUI1QkVDMkEyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUI1QkVDMjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5oICovOyB9OwotCQk5QjVCRUMzMTI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9C
dXNEYXRhLmggaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCNUJFQzMwMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCAqLzsgfTsK
IAkJOUVDNTMyQTMyNDQ3RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUVDNTMyQTIyNDQ3
RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oICovOyB9OwogCQk5RkI1RjM5
NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJG
IC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBMTAyQTcwODFFQzBFRUU5MDBEODFEODIgLyogY29tLm1hY3Jv
bWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3gg
UHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1RTM5NDkxRDVC
RDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNi
ICovOyB9OwpAQCAtMjEzOSw3ICsyMTM4LDYgQEAKIAkJCQkyREI5NjA1MzIzOTg4NkMxMDAxMDI3
OTEgLyogY29tLmFwcGxlLldlYktpdC5HUFUuc2IgaW4gQ29weUZpbGVzICovLAogCQkJCUE3OEND
RERCMTkzQUM5RjgwMDVFQ0MyNSAvKiBjb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuc2IgaW4g
Q29weUZpbGVzICovLAogCQkJCUE3OENDRERDMTkzQUM5RkIwMDVFQ0MyNSAvKiBjb20uYXBwbGUu
V2ViS2l0LldlYkNvbnRlbnQuc2IgaW4gQ29weUZpbGVzICovLAotCQkJCTlCNUJFQzMxMjQwMTAy
MjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBDb3B5RmlsZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00
NTQyLDcgKzQ1NDAsNiBAQAogCQk5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjVCRUMyOTI0MDEwMTU4
MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCNUJFQzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QjVCRUMzMDI0MDEw
MjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9CdXNEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUF1ZGlvQnVzRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM1OUQ2QzFF
RkNDQ0I2MDAxRThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQzU5
RDZEMUVGQ0RDNkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlFQzUzMkEyMjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9sb2NhdGlvbklk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvbG9jYXRpb25JZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTU3LDcgKzU1NTQsNiBAQAogCQkJCTA3OTIzMTMx
MjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwICovLAogCQkJ
CTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCAq
LywKIAkJCQkwN0IxRDA0QjIzRDM4RkNFMDAzOTlBNkUgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLm1lc3NhZ2VzLmluICovLAotCQkJCTlCNUJFQzMwMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1v
dGVBdWRpb0J1c0RhdGEuaCAqLywKIAkJCQk5QjVCRUMyOTI0MDEwMTU4MDA3MEM2RUYgLyogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLywKIAkJCQk5QjVCRUMyODI0MDEwMTU4MDA3
MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi8sCiAJCQkJOUI1QkVDMkUy
NDAxMDE4QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5p
biAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9CdXNEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvQnVzRGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmMyZjBj
NjYwNjk2YWUzNDg2MWMwYjI0ODBhZDA1N2ZlYTE5NjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9CdXNEYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxsYmFj
ay5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1zdHJ1Y3QgUmVtb3RlQXVkaW9CdXNEYXRhIHsKLSAgICB1aW50NjRfdCBmcmFtZXNU
b1Byb2Nlc3MgeyAwIH07Ci0gICAgV2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91dHB1dFBvc2l0
aW9uOwotICAgIFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4gY2hhbm5lbEJ1ZmZlcnM7Ci0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgotICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBlbmNvZGVyIDw8IGZyYW1lc1RvUHJvY2VzczsK
LSAgICAgICAgZW5jb2RlciA8PCBvdXRwdXRQb3NpdGlvbjsKLSAgICAgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpKTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjaGFubmVsQnVmZmVycy5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwotICAgICAgICAgICAgY2hhbm5lbEJ1
ZmZlcnNbaV0tPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZFdyaXRlKTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgeyBXVEZNb3ZlKGhhbmRsZSksIGNoYW5uZWxCdWZmZXJzW2ldLT5zaXplKCkgfTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+Ci0gICAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVB
dWRpb0J1c0RhdGEmIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHVpbnQ2NF90IGZyYW1lc1RvUHJv
Y2VzczsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZXNUb1Byb2Nlc3MpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQuZnJhbWVzVG9Qcm9jZXNzID0g
ZnJhbWVzVG9Qcm9jZXNzOwotCi0gICAgICAgIFdlYkNvcmU6OkF1ZGlvSU9Qb3NpdGlvbiBvdXRw
dXRQb3NpdGlvbjsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvdXRwdXRQb3NpdGlvbikp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdC5vdXRwdXRQb3NpdGlv
biA9IG91dHB1dFBvc2l0aW9uOwotCi0gICAgICAgIHVpbnQ2NF90IHNpemUgPSAwOwotICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAg
ICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7Ci0gICAgICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgaWYgKGF1dG8gbWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxl
LmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpKQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5jaGFubmVsQnVmZmVycy5hcHBlbmQobWVtb3J5LnJlbGVhc2VOb25OdWxs
KCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApp
bmRleCA4NDA0YzQ4ZTFjMmU0ODJhYmNkMjRlNTVkMmNjOTEzYmQyNjdlNzQxLi5jZWE1N2M3NGYx
M2MwMDZjZjljZmMzYTIyODU3ZjJjM2I2OWVkMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuY3BwCkBAIC0zMCwxNiArMzAsMjEgQEAKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXVkaW9CdXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGlu
YXRpb24uaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5n
QnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdXNpbmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRp
b0J1czsKKy8vIEFsbG9jYXRlIGEgcmluZyBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4g
MiBzZWNvbmRzIG9mIGF1ZGlvLgorY29uc3RleHByIHNpemVfdCByaW5nQnVmZmVyU2l6ZUluU2Vj
b25kID0gMjsKKwogdXNpbmcgQXVkaW9EZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb247CiB1c2luZyBBdWRpb0lPQ2FsbGJhY2sgPSBXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2s7
CiAKQEAgLTUwLDE2ICs1NSwxNyBAQCBSZWY8QXVkaW9EZXN0aW5hdGlvbj4gUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5OjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYgogfQogCiBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eShBdWRp
b0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgZmxvYXQgc2FtcGxlUmF0ZSkKLSAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgLCBt
X3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYShjYWxsYmFjaywgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgc2FtcGxlUmF0ZSwgZmFsc2UpCisgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZTxXZWJD
b3JlOjpDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+
KHRoaXMpKSkKKyNlbmRpZgogewogICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
IGRlc3RpbmF0aW9uSUQ7Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyIHsgMCB9OwogCiAg
ICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
Ci0gICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRl
QXVkaW9EZXN0aW5hdGlvbihpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpLAotICAgICAgICBNZXNzYWdlczo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5
KGRlc3RpbmF0aW9uSUQsIGZyYW1lc1BlckJ1ZmZlciksIDApOworICAgICAgICBNZXNzYWdlczo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oaW5w
dXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUoKSksCisgICAgICAgIE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVw
bHkoZGVzdGluYXRpb25JRCksIDApOwogCiAgICAgYXV0byBvZmZUaHJlYWRSZW5kZXJpbmcgPSBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewogICAgICAg
ICB3aGlsZSAoIW1fdGhyZWFkVGFza1F1ZXVlLmlzS2lsbGVkKCkpIHsKQEAgLTcyLDcgKzc4LDE0
IEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5KEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhCiAgICAgY29ubmVjdGlvbi5jb25uZWN0aW9uKCku
YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcywgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpKTsKIAogICAgIG1fZGVzdGluYXRpb25JRCA9IGRlc3RpbmF0aW9uSUQ7Ci0gICAgbV9mcmFt
ZXNQZXJCdWZmZXIgPSBmcmFtZXNQZXJCdWZmZXI7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OworICAgIGdldEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOworICAgIG1fbnVtYmVyT2ZGcmFt
ZXMgPSBoYXJkd2FyZVNhbXBsZVJhdGUoKSAqIHJpbmdCdWZmZXJTaXplSW5TZWNvbmQ7CisgICAg
bV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMpOwor
ICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0
cmVhbUZvcm1hdCk7CisjZW5kaWYKIH0KIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KCkKQEAgLTEwNSwxOSArMTE4LDM3IEBAIHZvaWQg
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9wKCkKICAgICBtX2Rpc3BhdGNoVG9SZW5k
ZXJUaHJlYWQgPSBudWxscHRyOwogfQogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eTo6cmVuZGVyQnVmZmVyKGNvbnN0IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhJiBhdWRpb0J1
c0RhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyNp
ZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpyZXF1
ZXN0QnVmZmVyKHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQoYXVkaW9C
dXNEYXRhLmZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgQVNTRVJUKGF1ZGlvQnVzRGF0YS5jaGFubmVs
QnVmZmVycy5zaXplKCkpOwotICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGF1
ZGlvQnVzRGF0YS5jaGFubmVsQnVmZmVycy5zaXplKCksIGF1ZGlvQnVzRGF0YS5mcmFtZXNUb1By
b2Nlc3MsIGZhbHNlKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXVkaW9CdXNEYXRh
LmNoYW5uZWxCdWZmZXJzLnNpemUoKTsgKytpKQotICAgICAgICBhdWRpb0J1cy0+c2V0Q2hhbm5l
bE1lbW9yeShpLCAoZmxvYXQqKWF1ZGlvQnVzRGF0YS5jaGFubmVsQnVmZmVyc1tpXS0+ZGF0YSgp
LCBhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgIG1fY2FsbGJhY2sucmVuZGVy
KDAsIGF1ZGlvQnVzLmdldCgpLCBhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzLCBhdWRpb0J1
c0RhdGEub3V0cHV0UG9zaXRpb24pOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBp
ZiAoIWhhc0Vub3VnaEZyYW1lcyhudW1iZXJPZkZyYW1lcykpCisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKDAsIDAsIDAsIDApOworCisgICAgbV9yZW5kZXJDb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5zZXRTYW1w
bGVDb3VudChudW1iZXJPZkZyYW1lcyk7CisgICAgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5k
ZXIobnVsbHB0ciwgbnVtYmVyT2ZGcmFtZXMsIG1fYXVkaW9CdWZmZXJMaXN0LT5saXN0KCkpOwog
fQogCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVuZGVyT25SZW5kZXJpbmdU
aGVhZChzaXplX3QgZnJhbWVzVG9SZW5kZXIpCit7CisgICAgQVNTRVJUKG1fcmVuZGVyQ29tcGxl
dGlvbkhhbmRsZXIpOworCisgICAgYXV0byBzdGFydEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CisK
KyAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlck9uUmVuZGVyaW5nVGhlYWQoZnJhbWVz
VG9SZW5kZXIpOworICAgIG1fY3VycmVudEZyYW1lICs9IGZyYW1lc1RvUmVuZGVyOworCisgICAg
bV9yaW5nQnVmZmVyLT5zdG9yZShtX2F1ZGlvQnVmZmVyTGlzdC0+bGlzdCgpLCBmcmFtZXNUb1Jl
bmRlciwgc3RhcnRGcmFtZSk7CisKKyAgICB1aW50NjRfdCBib3VuZHNTdGFydEZyYW1lOworICAg
IHVpbnQ2NF90IGJvdW5kc0VuZEZyYW1lOworICAgIG1fcmluZ0J1ZmZlci0+Z2V0Q3VycmVudEZy
YW1lQm91bmRzKGJvdW5kc1N0YXJ0RnJhbWUsIGJvdW5kc0VuZEZyYW1lKTsKKyAgICBtX3JlbmRl
ckNvbXBsZXRpb25IYW5kbGVyKHN0YXJ0RnJhbWUsIGZyYW1lc1RvUmVuZGVyLCBib3VuZHNTdGFy
dEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHk6OmRpZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxheWluZykKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTEzMyw2ICsxNjQsMjggQEAgdm9pZCBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pZCgp
PiYmIHRhc2spCiAgICAgbV90aHJlYWRUYXNrUXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwog
fQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlKQoreworICAgIFNoYXJlZE1l
bW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoc3RvcmFnZSkKKyAgICAgICAgc3RvcmFnZS0+
Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CisKKyAgICAvLyBGSVhNRTogU2VuZCB0aGUgYWN0dWFsIGRhdGEgc2l6ZSB3aXRoIElQQ0hhbmRs
ZS4KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisgICAgdWludDY0X3QgZGF0YVNpemUg
PSBoYW5kbGUuc2l6ZSgpOworI2Vsc2UKKyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9IDA7CisjZW5k
aWYKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAg
Z2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CisgICAgV2ViQ29y
ZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CisK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6QXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQgeyBtX2Rlc3RpbmF0aW9uSUQsIFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9LCBzdHJlYW1Gb3Jt
YXQsIG1fbnVtYmVyT2ZGcmFtZXMgfSwgMCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVE
SU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAppbmRleCBjNGFkYjc1NjBkNDYzNzU4
ZWU3MTU2ZjAxZWVjOTk1OGQzY2ZkZTY2Li4yZjU4MzAwMjNkNDc1YzNhNTcyOTdlNTg0NzM2ZTdl
N2ZjOWQxNWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKQEAgLTI4LDI0ICsy
OCwzNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKIAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJSZW1vdGVBdWRpb0J1c0RhdGEuaCIK
ICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDxX
ZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgorI2luY2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaD4KKyNlbHNlCisj
aW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CiAjZW5kaWYKIAorbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgQ0FSaW5nQnVmZmVyOworY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0
OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5IDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBJUEM6OkNv
bm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EKKyAgICAsIHB1YmxpYyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZTo6Q2xpZW50CisjZWxzZQorICAgIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24K
KyNlbmRpZgorICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2Vp
dmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkpOwogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6QXVkaW9CdXM7CiAg
ICAgdXNpbmcgQXVkaW9JT0NhbGxiYWNrID0gV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNrOwogICAg
IHVzaW5nIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OnJlZjsKICAgICB1c2luZyBXZWJDb3Jl
OjpBdWRpb0Rlc3RpbmF0aW9uOjpkZXJlZjsKQEAgLTU3LDE2ICs3MCwyNiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KIAotICAgIHZvaWQgcmVuZGVyQnVmZmVyKGNvbnN0IFdl
YktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHJlcXVlc3RCdWZmZXIodWludDY0X3QgbnVt
YmVyT2ZGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3Qgc3RhcnRGcmFtZSwg
dWludDY0X3QgbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwgdWludDY0X3QgYm91bmRzU3RhcnRGcmFt
ZSwgdWludDY0X3QgYm91bmRzRW5kRnJhbWUpPiYmKTsKKyNlbmRpZgorCiAgICAgdm9pZCBkaWRD
aGFuZ2VJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcpOwogCiBwcml2YXRlOgotICAgIC8vIFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb24KLSAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rp
b248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKSBvdmVycmlkZTsKLSAgICB2
b2lkIHN0b3AoKSBvdmVycmlkZTsKLSAgICBib29sIGlzUGxheWluZygpIG92ZXJyaWRlIHsgcmV0
dXJuIG1faXNQbGF5aW5nOyB9Ci0gICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZnJhbWVzUGVyQnVmZmVyOyB9CisgICAgdm9pZCBz
dGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRl
clRocmVhZCkgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisgICAgYm9vbCBpc1BsYXlp
bmcoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorICAg
IGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgdW5zaWdu
ZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorI2VuZGlmCisK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9y
eSopIGZpbmFsOworICAgIHZvaWQgcmVuZGVyT25SZW5kZXJpbmdUaGVhZChzaXplX3QgZnJhbWVz
VG9SZW5kZXIpIGZpbmFsOworI2VuZGlmCiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7CkBAIC03NiwxMSArOTksMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZk1lc3Nh
Z2VSZWNlaXZlcigpIGZpbmFsIHsgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6cmVmKCk7IH0K
ICAgICB2b2lkIGRlcmVmTWVzc2FnZVJlY2VpdmVyKCkgZmluYWwgeyBXZWJDb3JlOjpBdWRpb0Rl
c3RpbmF0aW9uOjpkZXJlZigpOyB9CiAKLSAgICBBdWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7
Ci0gICAgZmxvYXQgbV9zYW1wbGVSYXRlIHsgMC4gfTsKLSAgICB1bnNpZ25lZCBtX2ZyYW1lc1Bl
ckJ1ZmZlciB7IDAgfTsKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBtX2Rl
c3RpbmF0aW9uSUQ7CiAgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CisKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PiBtX2F1ZGlvQnVmZmVy
TGlzdDsKKyAgICB1aW50NjRfdCBtX2N1cnJlbnRGcmFtZSB7IDAgfTsKKyAgICBXVEY6OkZ1bmN0
aW9uPHZvaWQodWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpPiBtX3JlbmRl
ckNvbXBsZXRpb25IYW5kbGVyOworI2VuZGlmCisKICAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9u
PHZvaWQoKT4mJik+IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZDsKICAgICBSZWZQdHI8VGhyZWFk
PiBtX3JlbmRlclRocmVhZDsKICAgICBDcm9zc1RocmVhZFF1ZXVlPEZ1bmN0aW9uPHZvaWQoKT4+
IG1fdGhyZWFkVGFza1F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5tZXNzYWdlcy5pbgppbmRleCBhZTFmYzcwNjk4NzE0Yzg3MDVlNTgyNDgxOTQ2NWJhYjMyNjNm
MDYxLi5iZDkxNzRhYjBkYjE4ZDdmNzE1OTAwNzZmNzk5OWVkYTJhNTUxMWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsMTAgKzI0
LDggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCiAKIG1l
c3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBOb3RSZWZDb3VudGVkIHsKLQot
ICAgIFJlbmRlckJ1ZmZlcihzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVBdWRpb0J1c0RhdGEgZGF0YSkg
LT4gKCkgQXN5bmMKKyAgICBSZXF1ZXN0QnVmZmVyKHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKSAt
PiAodWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwg
dWludDY0X3QgYm91bmRzU3RhcnRGcmFtZSwgdWludDY0X3QgYm91bmRzRW5kRnJhbWUpIEFzeW5j
CiAgICAgRGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQotCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCmluZGV4IDg3OTlmMTk4NDcx
NDExZWM2ZjczOWEzODc5MzY0ZDI0NzUxMmVhNDQuLjJlMGE2YjFmODM5MzJhZTgzMzVkZjRlYWE0
ZWI1MzVmODU4NzEyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5j
cHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6
cHVzaFNhbXBsZXMoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBXZWIKIAogICAgICAgICAv
LyBBbGxvY2F0ZSBhIHJpbmcgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBjb250YWluIDIgc2Vjb25k
cyBvZiBhdWRpby4KICAgICAgICAgbV9udW1iZXJPZkZyYW1lcyA9IG1fZGVzY3JpcHRpb24uc2Ft
cGxlUmF0ZSgpICogMjsKLSAgICAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShtX2Rlc2NyaXB0
aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbnVtYmVyT2ZGcmFtZXMpOworICAgICAgICBtX3Jp
bmdCdWZmZXItPmFsbG9jYXRlKG1fZGVzY3JpcHRpb24sIG1fbnVtYmVyT2ZGcmFtZXMpOwogICAg
IH0KIAogICAgIEFTU0VSVChpczxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+KGF1ZGlvRGF0
YSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411527</attachid>
            <date>2020-10-15 20:26:06 -0700</date>
            <delta_ts>2020-10-15 20:40:16 -0700</delta_ts>
            <desc>WIP, fix build failures</desc>
            <filename>bug-217715-20201015202605.patch</filename>
            <type>text/plain</type>
            <size>90244</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwNDMxMzFkMjk4YWYz
NzAzODYyYmI4NjdiZWI3OTQ4YTdhZDhiZC4uMTBlNTMyMTQ0ZDZjNzBkNzU0NmQyNDJkNTgyZDZi
NjdhZDBmOWRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE1ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9j
ZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8g
ZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6aW5wdXRQcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRV
bml0QWRhcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRv
cklPUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2spOgorCiAyMDIwLTEwLTE1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBBdWRpb0NvbnRleHQtc3Bl
Y2lmaWMgbG9naWMgb3V0IG9mIEJhc2VBdWRpb0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGNkNjdmMThh
ZGE0YzA1MDhkZDVjZDExNDc3ZWRkMTA1NWI0ZjBjYi4uYjlkNjk4NGIyZGI0ODg1MDkzZDVjOWY0
ZDdkZTMzZTlkMmJlMjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAyMC0xMC0xNSAg
UGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUg
UHJvY2Vzc10gVXNlIENBUmluZ0J1ZmZlciB0byB0cmFuc2ZlciBhdWRpbyBkYXRhIG9mIGFuIGF1
ZGlvIGRlc3RpbmF0aW9uIGZyb20gYSB3ZWIgcHJvY2VzcyB0byB0aGUgR1BVIFByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzcxNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb246On5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6c2NoZWR1bGVHcmFjZWZ1bFNodXRkb3du
SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjphdWRp
b1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uOjpzdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6
cmVuZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmF1ZGlvU2Ft
cGxlc1N0b3JhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbjo6aXNQbGF5aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbjo6ZnJhbWVzUGVyQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmg6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlU3luY01l
c3NhZ2VGcm9tV2ViUHJvY2Vzcyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0J1c0RhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVzdEJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3Rv
cmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHk6OnJlbmRlckJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpwdXNo
U2FtcGxlcyk6CisKIDIwMjAtMTAtMTUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFttYWNPU10gQWRkIHRlbGVtZXRyeSBmb3IgZGlzdHJpYnV0ZWQgbm90
aWZpY2F0aW9uIHNlcnZpY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBjNTY3MGMzNjQ4NTc1ZTg4MGViNjg1
ZTBhM2ExMzVjMjkyNDM3NWJiLi5lMzIyMzcyM2Q3NzhmZWUxM2Y0NzJjNGQyMTEwZWM5MzZiODBm
YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBBdWRpb0Rlc3RpbmF0aW9uTm9kZShCYXNlQXVkaW9Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+
QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAKLSAgICAvLyBBdWRpb05vZGUgICAKKyAgICAv
LyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90KSBvdmVycmlkZSB7IH07IC8vIHdl
J3JlIHB1bGxlZCBieSBoYXJkd2FyZSBzbyB0aGlzIGlzIG5ldmVyIGNhbGxlZAogICAgIAogICAg
IC8vIFRoZSBhdWRpbyBoYXJkd2FyZSBjYWxscyByZW5kZXIoKSB0byBnZXQgdGhlIG5leHQgcmVu
ZGVyIHF1YW50dW0gb2YgYXVkaW8gaW50byBkZXN0aW5hdGlvbkJ1cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDY0MTQwNTkyNTQwMWU2ZTNjZDViNjZmOWEzZmY3Y2Q4ZDA3MWNlMDguLmVi
NGUxN2YyZTczNmVhODY4MWM1NmQyMDI1MTQ5MjZiOGRjOTk0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dApAQCAtMjAzLDE5ICsyMDMsMjAgQEAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCiBwbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uY3BwCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2Eu
Y3BwCitwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcAogcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcAogcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9D
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdC
dWZmZXIuY3BwCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2Eu
bW0KIHBsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAKLXBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBAbm8tdW5pZnkKK3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9N
ZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uTWFuYWdlcklPUy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0J1c01hYy5tbQotcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCitw
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHAKIHBsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lv
bk1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDFhY2YxNDQzOTkyNDg1ODE0OGRkMjBiOWU4ZGU3YTUxZTNiMjJkY2UuLjFj
YzBlNWVjZmJhNTQxZTVjZmUzMTlhNTkzZDg5MThlYTEwN2ZlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzMyw2ICs2MzMs
NyBAQAogCQkxREFCMzExMjI1MUQ2QkYzMDBGQzk0ODUgLyogV2ViVmlkZW9Db250YWluZXJMYXll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4QjMx
QTEyMzc5REM4MzAwODgzRkRFIC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxREFCMzExNDI1MUQ3MjVD
MDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQUIzMTEzMjUxRDcyNUMwMEZDOTQ4NSAvKiBWaWRlb0xh
eWVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFEQUIzMTE1MjUxRDc0REIwMEZDOTQ4NSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMThF
MUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxREI2NkQzQjI1MzdBOTU2MDBC
NjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMURCNjZEMzcyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxREJDMUI1NjIzNDdCM0QyMDBCOTAxQUYgLyogUGljdHVyZUluUGljdHVy
ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxREJDMUI1NTIzNDdCM0QyMDBCOTAxQUYgLyogUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUREM0I0
QzYyNTFEQTBCODAwNjlCMjRBIC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMThEMUM1NDU5MDMwMERF
MzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gKi87IH07CiAJCTFERjdFODFGMjUxQTlF
MDYwMERCOEY2MSAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0REMUU1MjUxNjdCQTU2NDAwQ0U4MjBCIC8q
IFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxMjcsNyArNDEyOCw3IEBACiAJCUNDQzJCNTE2MTVGNjEz
MDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQ0MyQjUxMjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNl
Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNEMDYzRjgyMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMDYzRjgwMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJQ0QwNjNGODMx
RTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMDYzRjgxMUUyM0ZBODkwMDgxMkJFMyAvKiBJ
bml0RGF0YVJlZ2lzdHJ5LmggKi87IH07Ci0JCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBB
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9u
SU9TLmNwcCAqLzsgfTsKKwkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEyIC8qIEF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3JJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0
b3JJT1MuY3BwICovOyB9OwogCQlDRDExQjNFMTIyN0NFNkYzMDAyM0FGQzcgLyogQVZTdHJlYW1E
YXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMTFCM0UwMjI3Q0FBQTkwMDIzQUZDNyAvKiBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlLm1tICovOyB9OwogCQlDRDEyN0RFRTE0RjMwOTg0MDBFODQ3Nzkg
LyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVs
bFNjcmVlbldpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUNEMTdBNDVEMjEzNzQwODEwMDc5RUM3QiAvKiBVbmlmaWVkU291cmNlNjItbW0u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDE3QTQ1
OTIxMzc0MDE2MDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1tICovOyB9OwpAQCAtNTMw
NCw3ICs1MzA1LDYgQEAKIAkJRkQzMTYwQUIxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZv
bHZlclN0YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRDMxNjA3NTEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCAqLzsg
fTsKIAkJRkQzMTYwQUQxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3NzEyQjAy
NkY3MDBDMUEzNTkgLyogUmV2ZXJiSW5wdXRCdWZmZXIuaCAqLzsgfTsKIAkJRkQzMTYwQUYxMkIw
MjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDc5MTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRo
LmggKi87IH07Ci0JCUZEMzE2MEJEMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9u
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMx
NjBCNzEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oICovOyB9OwogCQlG
RDMxNjBCRjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjBCOTEyQjAyNzJBMDBD
MUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggKi87IH07CiAJCUZEMzU5MTkwMTM4REIyMjAw
MEUxRUJFQyAvKiBBdWRpb1BhcmFtVGltZWxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzU5MThFMTM4REIyMjAwMEUxRUJFQyAvKiBBdWRpb1Bh
cmFtVGltZWxpbmUuaCAqLzsgfTsKIAkJRkQ0NUE5NEYxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA4QTg3
RjE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjc1NCw2ICs2NzU0LDggQEAKIAkJMUQwMDI2QTkyMzc0
RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMkM4MkI2MjM2QTNGNkEwMDU1
RDZDNSAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJl
SW5QaWN0dXJlU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREFCMzEx
MzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmlkZW9MYXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMURCNjZE
MzcyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1
cmVJblBpY3R1cmVPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJlSW5QaWN0dXJlT2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURDNTUzRkQyMTFCQTEyQTAw
NEI3ODBFIC8qIE5hdmlnYXRvclNoYXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZp
Z2F0b3JTaGFyZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZGMjEx
QkE4NDEwMDRCNzgwRSAvKiBTaGFyZURhdGEuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNo
YXJlRGF0YS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDI5Nyw4ICsxNDI5
OSw3IEBACiAJCUNEMDYzRjgwMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluaXREYXRhUmVnaXN0cnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDA2M0Y4MTFFMjNGQTg5MDA4MTJC
RTMgLyogSW5pdERhdGFSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbml0RGF0YVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMEM4
QjU4MjE0MUM4Q0EwMDYyRjU5RCAvKiBNZWRpYUNhcGFiaWxpdGllc0luZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUNEMEVFRTBBMTQ3NDNFMzQwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25JT1MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1
ZGlvRGVzdGluYXRpb25JT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvT3V0cHV0VW5pdEFk
YXB0b3JJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDExQjNERjIyN0NB
QUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEMTFCM0UwMjI3Q0FBQTkwMDIzQUZDNyAvKiBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZTdHJlYW1EYXRh
UGFyc2VyTUlNRVR5cGVDYWNoZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Qx
MjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU2Myw4ICsxNjU2NCw3IEBACiAJCUZEMzE2
MDc4MTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFZlY3Rvck1hdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRDMxNjA3OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZWN0b3JNYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1ZGlvQnVzTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyog
QXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVk
aW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkQzMTYwQjgxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1h
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb0ZpbGVSZWFk
ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNjBCOTEyQjAyNzJB
MDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEF1ZGlvRmlsZVJlYWRlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRDMxNjBCQTEyQjAyNzJBMDBDMUEzNTkgLyogRkZURnJhbWVNYWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRkZURnJhbWVNYWMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjczMDIsMTAgKzI3MzAyLDkgQEAKIAkJQ0QwRUVFMEQxNDc0
M0U0ODAwM0VBRkEyIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25J
T1MuY3BwICovLAotCQkJCUNEMEVFRTBBMTQ3NDNFMzQwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0
aW9uSU9TLmggKi8sCiAJCQkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJl
YWRlcklPUy5jcHAgKi8sCiAJCQkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmls
ZVJlYWRlcklPUy5oICovLAorCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCAqLywKIAkJCQlDREE3OTgyNTE3MEEyNzkwMDBENDVDNTUg
LyogQXVkaW9TZXNzaW9uSU9TLm1tICovLAogCQkJCUNEODc1QTc0MjQxMUI3OTgwMEIwOUY1OCAv
KiBNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCAqLywKIAkJCQlDRDg3NUE3NTI0MTFCNzk4MDBCMDlG
NTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICovLApAQCAtMjczNzAsNiArMjczNjksOCBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDEzMTUxODQyMzU3NzQ1RTAwMTE1RTZFIC8qIEF1ZGlv
RGVzdGluYXRpb25Db2NvYS5jcHAgKi8sCiAJCQkJNDEzMTUxODYyMzU3NzQ1RTAwMTE1RTZFIC8q
IEF1ZGlvRGVzdGluYXRpb25Db2NvYS5oICovLAorCQkJCTFEQjY2RDM4MjUzNjc4RUEwMEI2NzFC
OSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcCAqLywKKwkJCQkxREI2NkQzNzI1MzY3OEVB
MDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oICovLAogCQkJCTA3M0I4NzYyMUU0
Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwICovLAogCQkJCTA3M0I4
NzYzMUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCAqLywKIAkJCQkw
NzNCODc2NTFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmggKi8sCkBA
IC0zMDI4MSwxMiArMzAyODIsMTEgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJRkQzMTYwQjUxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvQnVzTWFjLm1tICovLAot
CQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCAq
LywKLQkJCQlGRDMxNjBCNzEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5o
ICovLAogCQkJCUZEMzE2MEI4MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwICovLAogCQkJCUZEMzE2MEI5MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJN
YWMuaCAqLywKIAkJCQlDRDJGNEEyNTE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxp
c3RlbmVyTWFjLmNwcCAqLywKIAkJCQlDRDJGNEEyNjE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9I
YXJkd2FyZUxpc3RlbmVyTWFjLmggKi8sCisJCQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8q
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwICovLAogCQkJCUNENTRERTQ5MTc0NjlDNkQw
MDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMubW0gKi8sCiAJCQkJRkQzMTYwQkExMkIwMjcyQTAw
QzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLywKIAkJCSk7CkBAIC0zMDU2Nyw3ICszMDU2Nyw2
IEBACiAJCQkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA3RjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EZXN0
aW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5QzQyM0ZFNEJEMjAwOENBNzUxIC8q
IEF1ZGlvRGVzdGluYXRpb25Db2NvYS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkQzMTYwQkQxMkIw
MjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEMzE2MDA4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQzMTYwODAxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQS2VybmVs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4MjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzA1ODMsNiArMzA1ODIsNyBA
QAogCQkJCUZEMzE2MDE2MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGVJbnB1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTcxNDY3QjMyNEFCQUVGMjAwRkIyRjUwIC8qIEF1ZGlvTm9kZU9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDE4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRp
b05vZGVPdXRwdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFEQjY2RDNCMjUzN0E5NTYwMEI2NzFC
OSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAx
RDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9QYXJhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM3
NTY5OUUyNTJDRjM2MjAwRTFCOTU2IC8qIEF1ZGlvUGFyYW1EZXNjcmlwdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4M0I5ODcwQzI1MjI1RjgzMDBBOTM5RjEgLyogQXVkaW9QYXJhbU1hcC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zNTI0NCw4ICszNTI0NCw4IEBACiAJCQlmaWxlcyA9ICgKIAkJCQlB
OTc4N0NCNDFGNUY1QzY2MDBDNTUxQzYgLyogQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMxRjdCNzMxMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxl
clNlcnZpY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEy
IC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1NTk2OTEx
NDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklP
Uy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVk
aW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3MzVGRTAwQ0JE
NjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RFM0E4NTcxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbi5oCmluZGV4IDE2MGM2NTc4ZTE1ZWQ1ZWE3NTI1ZGM3NjhiZDRlZjNmZGM3NGY0
ZmYuLjQxOTY1NTJkOTE1YTg5YjRhMDVmODQ3NjRkNWZlYWMwNTY2MjQ5NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgKQEAgLTU2LDcg
KzU2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2FtcGxlLXJhdGUgY29udmVyc2lvbiBtYXkgaGFw
cGVuIGluIEF1ZGlvRGVzdGluYXRpb24gdG8gdGhlIGhhcmR3YXJlIHNhbXBsZS1yYXRlCiAgICAg
dmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOwotICAgIHN0YXRpYyBmbG9hdCBo
YXJkd2FyZVNhbXBsZVJhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgZmxvYXQgaGFy
ZHdhcmVTYW1wbGVSYXRlKCk7CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZl
cigpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggMWQwZjRlMjg4
MTE4N2U3YjM1MDI5MGIwMjMzY2I4YjBjMjFhZjRlNi4uNzBkZDkyNDNlM2U1MWU1MDQxNDVjMjI2
YzAxMDc3YTMwNzEwM2E0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC0zNSw2ICsz
NSwxMCBAQAogI2luY2x1ZGUgIk11bHRpQ2hhbm5lbFJlc2FtcGxlci5oIgogI2luY2x1ZGUgIlB1
c2hQdWxsRklGTy5oIgogCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIlZlY3Rvck1hdGgu
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0ZXhwciBzaXplX3QgZmlm
b1NpemUgPSA5NiAqIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZTsKQEAgLTU2LDcg
KzYwLDYgQEAgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShB
dWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdAogICAgICAgICByZXR1cm4gQXVkaW9EZXN0
aW5hdGlvbkNvY29hOjpjcmVhdGVPdmVycmlkZShjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiAKICAg
ICBhdXRvIGRlc3RpbmF0aW9uID0gYWRvcHRSZWYoKm5ldyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2Eo
Y2FsbGJhY2ssIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKTsKLSAgICBkZXN0
aW5hdGlvbi0+Y29uZmlndXJlKCk7CiAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwogfQogCkBAIC03
MCwxNSArNzMsMTYgQEAgdW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVs
Q291bnQoKQogICAgIHJldHVybiBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5tYXhpbXVt
TnVtYmVyT2ZPdXRwdXRDaGFubmVscygpOwogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OkF1
ZGlvRGVzdGluYXRpb25Db2NvYShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQotICAgIDogbV9vdXRwdXRV
bml0KDApCitBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OkF1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRp
b0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBm
bG9hdCBzYW1wbGVSYXRlLCBib29sIGNvbmZpZ3VyZUF1ZGlvT3V0cHV0VW5pdCkKKyAgICA6IG1f
YXVkaW9PdXRwdXRVbml0QWRhcHRvcigqdGhpcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2sp
CiAgICAgLCBtX291dHB1dEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25O
dWxsKCkpCiAgICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSkucmVsZWFzZU5vbk51
bGwoKSkKICAgICAsIG1fZmlmbyhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4obnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgZmlmb1NpemUpKQogICAgICwgbV9jb250ZXh0U2FtcGxlUmF0ZShzYW1w
bGVSYXRlKQogewotICAgIGNvbmZpZ3VyZSgpOworICAgIGlmIChjb25maWd1cmVBdWRpb091dHB1
dFVuaXQpCisgICAgICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUoaGFyZHdh
cmVTYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgYXV0byBoYXJk
d2FyZVNhbXBsZVJhdGUgPSB0aGlzLT5oYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBpZiAoc2Ft
cGxlUmF0ZSAhPSBoYXJkd2FyZVNhbXBsZVJhdGUpIHsKQEAgLTg3LDExICs5MSw3IEBAIEF1ZGlv
RGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYg
Y2FsbGJhY2ssIHVuc2lnbmVkCiAgICAgfQogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EoKQotewotICAgIGlmIChtX291dHB1dFVuaXQpCi0gICAgICAg
IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Ci19CitBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKSA9IGRlZmF1bHQ7CiAKIHVu
c2lnbmVkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNv
bnN0CiB7CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0
YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFQKIHsKICAg
ICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAgbV9kaXNw
YXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKTsKLSAg
ICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVuaXQpOwor
ICAgIE9TU3RhdHVzIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFydCgpOwog
CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHNldElzUGxheWluZyh0cnVlKTsKQEAgLTExNiw3
ICsxMTYsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rpb248dm9p
ZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVAogdm9pZCBBdWRpb0Rlc3RpbmF0aW9u
Q29jb2E6OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6
c3RvcCIpOwotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9vdXRw
dXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iu
c3RvcCgpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAKICAgICBp
ZiAoIXJlc3VsdCkKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2suaXNQbGF5aW5n
RGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzdHJlYW1G
b3JtYXQpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Z2V0QXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0KQogewog
ICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwogICAgIGNvbnN0
IGludCBiaXRzUGVyQnl0ZSA9IDg7CkBAIC0xNTcsMTAgKzE1NywxNSBAQCBzdGF0aWMgdm9pZCBh
c3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhBdWRpb0J1ZmZlciogYnVmZmVycywgQXVkaW9CdXMmIGJ1
cywgVUludDMyCiAgICAgfQogfQogCitib29sIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6aGFzRW5v
dWdoRnJhbWVzKFVJbnQzMiBudW1iZXJPZkZyYW1lcykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9m
aWZvLT5sZW5ndGgoKSA+PSBudW1iZXJPZkZyYW1lczsKK30KKwogLy8gUHVsbHMgb24gb3VyIHBy
b3ZpZGVyIHRvIGdldCByZW5kZXJlZCBhdWRpbyBzdHJlYW0uCiBPU1N0YXR1cyBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50
MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQogewotICAgIGlmICht
X2ZpZm8tPmxlbmd0aCgpIDwgbnVtYmVyT2ZGcmFtZXMpCisgICAgaWYgKCFoYXNFbm91Z2hGcmFt
ZXMobnVtYmVyT2ZGcmFtZXMpKQogICAgICAgICByZXR1cm4gbm9FcnI7CiAKICAgICBpZiAodGlt
ZXN0YW1wKSB7CkBAIC0xNzIsNyArMTc3LDcgQEAgT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNv
Y29hOjpyZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUludDMyIG4KICAg
ICAgICAgbV9vdXRwdXRUaW1lc3RhbXAgPSBBdWRpb0lPUG9zaXRpb24geyB9OwogCiAgICAgYXV0
byogYnVmZmVycyA9IGlvRGF0YS0+bUJ1ZmZlcnM7Ci0gICAgVUludDMyIG51bWJlck9mQnVmZmVy
cyA9IGlvRGF0YS0+bU51bWJlckJ1ZmZlcnM7CisgICAgYXV0byBudW1iZXJPZkJ1ZmZlcnMgPSBp
b0RhdGEtPm1OdW1iZXJCdWZmZXJzOwogCiAgICAgLy8gQXNzb2NpYXRlIHRoZSBkZXN0aW5hdGlv
biBkYXRhIGFycmF5IHdpdGggdGhlIG91dHB1dCBidXMgdGhlbiBmaWxsIHRoZSBGSUZPLgogICAg
IGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKGJ1ZmZlcnMsIG1fb3V0cHV0QnVzLmdldCgpLCBudW1i
ZXJPZkJ1ZmZlcnMsIG51bWJlck9mRnJhbWVzLCAwLCBudW1iZXJPZkZyYW1lcyk7CkBAIC0yMTAs
MTMgKzIxNSw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJPblJlbmRlcmlu
Z1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8vIERlZmF1bHRPdXRw
dXRVbml0IGNhbGxiYWNrCi1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJv
Yyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRp
b1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUludDMyIG51bWJl
ck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBhdXRvKiBhdWRpb091
dHB1dCA9IHN0YXRpY19jYXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVzZXJEYXRhKTsKLSAg
ICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9mRnJhbWVzLCBp
b0RhdGEpOwotfQotCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlkZUlucHV0KEF1
ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0aWxpdGllczo6cmVu
ZGVyUXVhbnR1bVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAwODk0ZDYyMWEyZjE1
MzIyNTEyNzM2NTBiNmU1YTNkM2VjOTk2ZjhhLi5hODdhZDNlODc5ZDk3OWUzYTNhOWVkNTUyMjU5
ZjlmNjUwZDRjNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgogI2luY2x1ZGUgIkF1ZGlvSU9DYWxsYmFj
ay5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCIKICNpbmNsdWRlICJBdWRp
b1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQzLDQ3ICs0NCwzOSBAQCBjbGFzcyBQdXNoUHVsbEZJ
Rk87CiB1c2luZyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSA9IFJlZjxBdWRp
b0Rlc3RpbmF0aW9uPigqKShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
Ly8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0IG91dHB1dCBB
dWRpb1VuaXQKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1YmxpYyBBdWRpb0Rlc3Rp
bmF0aW9uLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CitjbGFzcyBBdWRpb0Rlc3RpbmF0
aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlvVW5pdFJlbmRl
cmVyLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgQXVkaW9EZXN0
aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwotICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25D
b2NvYSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRpb0lP
Q2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlLCBib29sIGNvbmZpZ3VyZUF1ZGlvT3V0cHV0VW5pdCA9IHRydWUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25Db2NvYSgpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIENyZWF0ZUF1ZGlvRGVzdGluYXRpb25Db2NvYU92ZXJyaWRlIGNyZWF0ZU92
ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNFbm91Z2hGcmFtZXMoVUludDMyIG51bWJlck9mRnJhbWVz
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9U
aW1lU3RhbXAqLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRh
KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVuZGVyT25SZW5kZXJp
bmdUaGVhZChzaXplX3QgZnJhbWVzVG9SZW5kZXIpOwogCi0gICAgYm9vbCBpc1BsYXlpbmcoKSBm
aW5hbCB7IHJldHVybiBtX2lzUGxheWluZzsgfQorICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJvb2wp
OworICAgIGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0K
ICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0U2Ft
cGxlUmF0ZTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IGZpbmFsOwot
ICAgIEF1ZGlvVW5pdCYgb3V0cHV0VW5pdCgpIHsgcmV0dXJuIG1fb3V0cHV0VW5pdDsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IGZpbmFsOwog
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0OwotICAgIAotICAg
IC8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi0gICAgc3RhdGljIE9TU3RhdHVzIGlucHV0
UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBB
dWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywg
QXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwogCi0gICAgdm9pZCBzZXRBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uJik7CiAKICAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+
IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZDsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgUmVmPEF1
ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2sm
LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKKwogICAgIHZvaWQg
c3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcmVuZGVyT25SZW5kZXJpbmdUaGVh
ZChzaXplX3QgZnJhbWVzVG9SZW5kZXIpOwotCi0gICAgZnJpZW5kIFJlZjxBdWRpb0Rlc3RpbmF0
aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29uc3QgU3Ry
aW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBmbG9hdCk7Ci0gICAgCiAgICAgLy8gQXVkaW9Tb3Vy
Y2VQcm92aWRlci4KLSAgICB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpIGZpbmFsOwotCi0gICAgdm9pZCBjb25maWd1cmUoKTsKLSAgICB2b2lkIHBy
b2Nlc3NCdXNBZnRlclJlbmRlcihBdWRpb0J1cyYsIFVJbnQzMiBudW1iZXJPZkZyYW1lcyk7Ci0K
LSAgICBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIgbnVtYmVy
T2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFs
OwogCi0gICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKKyAgICBBdWRpb091dHB1dFVuaXRBZGFw
dG9yIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcjsKICAgICBBdWRpb0lPQ2FsbGJhY2smIG1fY2Fs
bGJhY2s7CiAKICAgICAvLyBUbyBwYXNzIHRoZSBkYXRhIGZyb20gRklGTyB0byB0aGUgYXVkaW8g
ZGV2aWNlIGNhbGxiYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
OTA2NjQ4M2EzMDMzY2YxMjFmZWMyYWZiYjNlNTg2ZjJjMmYxZTIzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRh
cHRvci5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJBdWRpb091dHB1dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VC
X0FVRElPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6
OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoQXVkaW9Vbml0UmVuZGVyZXImIHJlbmRlcmVyKQorICAg
IDogbV9vdXRwdXRVbml0KDApCisgICAgLCBtX2F1ZGlvVW5pdFJlbmRlcmVyKHJlbmRlcmVyKQor
eworfQorCitBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRVbml0QWRhcHRvcigp
Cit7CisgICAgaWYgKG1fb3V0cHV0VW5pdCkKKyAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5j
ZURpc3Bvc2UobV9vdXRwdXRVbml0KTsKK30KKworT1NTdGF0dXMgQXVkaW9PdXRwdXRVbml0QWRh
cHRvcjo6c3RhcnQoKQoreworICAgIHJldHVybiBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1
dFVuaXQpOworfQorCitPU1N0YXR1cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKCkKK3sK
KyAgICByZXR1cm4gQXVkaW9PdXRwdXRVbml0U3RvcChtX291dHB1dFVuaXQpOworfQorCisvLyBE
ZWZhdWx0T3V0cHV0VW5pdCBjYWxsYmFjaworT1NTdGF0dXMgQXVkaW9PdXRwdXRVbml0QWRhcHRv
cjo6aW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyos
IGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1lc3RhbXAsIFVJbnQzMiAvKmJ1c051bWJlciovLCBV
SW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQoreworICAgIGF1
dG8qIGFkYXB0b3IgPSBzdGF0aWNfY2FzdDxBdWRpb091dHB1dFVuaXRBZGFwdG9yKj4odXNlckRh
dGEpOworICAgIHJldHVybiBhZGFwdG9yLT5tX2F1ZGlvVW5pdFJlbmRlcmVyLnJlbmRlcih0aW1l
c3RhbXAsIG51bWJlck9mRnJhbWVzLCBpb0RhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBiZjhhZWUzMzA3ZDEyMjlhYzEyOTE3YTVjNTMzMTg5NmE4MTkwYTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgPEF1ZGlvVW5pdC9B
dWRpb1VuaXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1VuaXRSZW5k
ZXJlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9Vbml0UmVuZGVyZXIoKSA9IGRlZmF1
bHQ7CisgICAgdmlydHVhbCBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBV
SW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKSA9IDA7Cit9Owor
CitjbGFzcyBBdWRpb091dHB1dFVuaXRBZGFwdG9yIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VY
UE9SVCBBdWRpb091dHB1dFVuaXRBZGFwdG9yKEF1ZGlvVW5pdFJlbmRlcmVyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgfkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoKTsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgc3RhcnQo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBPU1N0YXR1cyBzdG9wKCk7CisKK3ByaXZhdGU6CisgICAg
c3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVy
QWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJ
bnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOworCisgICAgQXVk
aW9Vbml0IG1fb3V0cHV0VW5pdDsKKyAgICBBdWRpb1VuaXRSZW5kZXJlciYgbV9hdWRpb1VuaXRS
ZW5kZXJlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGM0NzMzZGU3Zjc1ZGE5YWI2ZDA4N2EyMzFhZDhlYjk4MWRjNjg4OGYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTA5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQ
TEFURk9STShJT1NfRkFNSUxZKQotCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgi
Ci0KLSNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcu
aD4KLQotU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCi1TT0ZUX0xJTksoQXVkaW9U
b29sYm94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1ZGlvQ29t
cG9uZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uICppbkRl
c2MpLCAoaW5Db21wb25lbnQsIGluRGVzYykpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRp
b0NvbXBvbmVudEluc3RhbmNlTmV3LCBPU1N0YXR1cywgKEF1ZGlvQ29tcG9uZW50IGluQ29tcG9u
ZW50LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlICpvdXRJbnN0YW5jZSksIChpbkNvbXBvbmVudCwg
b3V0SW5zdGFuY2UpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRkUHJvcGVy
dHlMaXN0ZW5lciwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0
eUlEIGluSUQsIEF1ZGlvVW5pdFByb3BlcnR5TGlzdGVuZXJQcm9jIGluUHJvYywgdm9pZCAqaW5Q
cm9jVXNlckRhdGEpLCAoaW5Vbml0LCBpbklELCBpblByb2MsIGluUHJvY1VzZXJEYXRhKSkKLVNP
RlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1
ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUg
aW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIHZvaWQgKm91dERhdGEsIFVJbnQz
MiAqaW9EYXRhU2l6ZSksIChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgb3V0RGF0
YSwgaW9EYXRhU2l6ZSkpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJbml0aWFs
aXplLCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQpLCAoaW5Vbml0KSkKLVNPRlRfTElOSyhB
dWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBp
blVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5TY29wZSwg
QXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIGNvbnN0IHZvaWQgKmluRGF0YSwgVUludDMyIGlu
RGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1lbnQsIGluRGF0YSwgaW5E
YXRhU2l6ZSkpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9u
Q29jb2E6OmNvbmZpZ3VyZSgpCi17Ci0gICAgY29uc3QgaW50IGtQcmVmZXJyZWRCdWZmZXJTaXpl
ID0gMjU2OwotCi0gICAgLy8gT3BlbiBhbmQgaW5pdGlhbGl6ZSBEZWZhdWx0T3V0cHV0VW5pdAot
ICAgIEF1ZGlvQ29tcG9uZW50IGNvbXA7Ci0gICAgQXVkaW9Db21wb25lbnREZXNjcmlwdGlvbiBk
ZXNjOwotCi0gICAgZGVzYy5jb21wb25lbnRUeXBlID0ga0F1ZGlvVW5pdFR5cGVfT3V0cHV0Owot
ICAgIGRlc2MuY29tcG9uZW50U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX1JlbW90ZUlPOwot
ICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1ZGlvVW5pdE1hbnVmYWN0dXJlcl9B
cHBsZTsKLSAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsKLSAgICBkZXNjLmNvbXBvbmVudEZs
YWdzTWFzayA9IDA7Ci0gICAgY29tcCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQoMCwgJmRlc2Mp
OwotCi0gICAgQVNTRVJUKGNvbXApOwotCi0gICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9Db21w
b25lbnRJbnN0YW5jZU5ldyhjb21wLCAmb3V0cHV0VW5pdCgpKTsKLSAgICBBU1NFUlQoIXJlc3Vs
dCk7Ci0KLSAgICBVSW50MzIgZmxhZyA9IDE7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJv
cGVydHkob3V0cHV0VW5pdCgpLAotICAgICAgICBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfRW5h
YmxlSU8sCi0gICAgICAgIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsCi0gICAgICAgIDAsCi0gICAg
ICAgICZmbGFnLAotICAgICAgICBzaXplb2YoZmxhZykpOwotICAgIEFTU0VSVCghcmVzdWx0KTsK
LQotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdEluaXRpYWxpemUob3V0cHV0VW5pdCgpKTsKLSAgICBB
U1NFUlQoIXJlc3VsdCk7Ci0gICAgLy8gU2V0IHJlbmRlciBjYWxsYmFjawotICAgIEFVUmVuZGVy
Q2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7Ci0gICAgaW5wdXQuaW5wdXRQcm9jID0gaW5wdXRQcm9jOwot
ICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRoaXM7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0
U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2Fs
bGJhY2ssIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgJmlucHV0LCBzaXplb2YoaW5wdXQpKTsK
LSAgICBBU1NFUlQoIXJlc3VsdCk7Ci0KLSAgICAvLyBTZXQgc3RyZWFtIGZvcm1hdAotICAgIEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7Ci0KLSAgICBVSW50MzIgc2l6
ZSA9IHNpemVvZihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOwotICAgIHJlc3VsdCA9IEF1
ZGlvVW5pdEdldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVh
bUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwgMCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQs
ICZzaXplKTsKLSAgICBBU1NFUlQoIXJlc3VsdCk7Ci0KLSAgICBzZXRBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKLQotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFBy
b3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1
ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIEF1
ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa1ByZWZl
cnJlZEJ1ZmZlclNpemUpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvY2Vz
c0J1c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiwgVUludDMyKQotewotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1Nf
RkFNSUxZKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU5NjMw
ZmI2MGYyMmIzZWU1NmQyNDJkNzMwNDM0ODZiODdiNTYyZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9T
LmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0LCAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
dWRpb091dHB1dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSA8
d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoQXVkaW9Ub29sYm94KQor
U09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Db21wb25lbnRGaW5kTmV4dCwgQXVkaW9Db21w
b25lbnQsIChBdWRpb0NvbXBvbmVudCBpbkNvbXBvbmVudCwgY29uc3QgQXVkaW9Db21wb25lbnRE
ZXNjcmlwdGlvbiAqaW5EZXNjKSwgKGluQ29tcG9uZW50LCBpbkRlc2MpKQorU09GVF9MSU5LKEF1
ZGlvVG9vbGJveCwgQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldywgT1NTdGF0dXMsIChBdWRpb0Nv
bXBvbmVudCBpbkNvbXBvbmVudCwgQXVkaW9Db21wb25lbnRJbnN0YW5jZSAqb3V0SW5zdGFuY2Up
LCAoaW5Db21wb25lbnQsIG91dEluc3RhbmNlKSkKK1NPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1
ZGlvVW5pdEFkZFByb3BlcnR5TGlzdGVuZXIsIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwg
QXVkaW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRQcm9wZXJ0eUxpc3RlbmVyUHJvYyBp
blByb2MsIHZvaWQgKmluUHJvY1VzZXJEYXRhKSwgKGluVW5pdCwgaW5JRCwgaW5Qcm9jLCBpblBy
b2NVc2VyRGF0YSkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRHZXRQcm9wZXJ0
eSwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlEIGluSUQs
IEF1ZGlvVW5pdFNjb3BlIGluU2NvcGUsIEF1ZGlvVW5pdEVsZW1lbnQgaW5FbGVtZW50LCB2b2lk
ICpvdXREYXRhLCBVSW50MzIgKmlvRGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBp
bkVsZW1lbnQsIG91dERhdGEsIGlvRGF0YVNpemUpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwg
QXVkaW9Vbml0SW5pdGlhbGl6ZSwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0KSwgKGluVW5p
dCkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRTZXRQcm9wZXJ0eSwgT1NTdGF0
dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5p
dFNjb3BlIGluU2NvcGUsIEF1ZGlvVW5pdEVsZW1lbnQgaW5FbGVtZW50LCBjb25zdCB2b2lkICpp
bkRhdGEsIFVJbnQzMiBpbkRhdGFTaXplKSwgKGluVW5pdCwgaW5JRCwgaW5TY29wZSwgaW5FbGVt
ZW50LCBpbkRhdGEsIGluRGF0YVNpemUpKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQg
QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6Y29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0
ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK3sKKyAgICBjb25zdCBpbnQga1By
ZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7CisKKyAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERl
ZmF1bHRPdXRwdXRVbml0CisgICAgQXVkaW9Db21wb25lbnQgY29tcDsKKyAgICBBdWRpb0NvbXBv
bmVudERlc2NyaXB0aW9uIGRlc2M7CisKKyAgICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9V
bml0VHlwZV9PdXRwdXQ7CisgICAgZGVzYy5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1
YlR5cGVfUmVtb3RlSU87CisgICAgZGVzYy5jb21wb25lbnRNYW51ZmFjdHVyZXIgPSBrQXVkaW9V
bml0TWFudWZhY3R1cmVyX0FwcGxlOworICAgIGRlc2MuY29tcG9uZW50RmxhZ3MgPSAwOworICAg
IGRlc2MuY29tcG9uZW50RmxhZ3NNYXNrID0gMDsKKyAgICBjb21wID0gQXVkaW9Db21wb25lbnRG
aW5kTmV4dCgwLCAmZGVzYyk7CisKKyAgICBBU1NFUlQoY29tcCk7CisKKyAgICBPU1N0YXR1cyBy
ZXN1bHQgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGNvbXAsICZtX291dHB1dFVuaXQpOwor
ICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIFVJbnQzMiBmbGFnID0gMTsKKyAgICByZXN1bHQg
PSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsCisgICAgICAgIGtBdWRpb091dHB1
dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKKyAgICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwK
KyAgICAgICAgMCwKKyAgICAgICAgJmZsYWcsCisgICAgICAgIHNpemVvZihmbGFnKSk7CisgICAg
QVNTRVJUKCFyZXN1bHQpOworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShtX291
dHB1dFVuaXQpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKyAgICAvLyBTZXQgcmVuZGVyIGNhbGxi
YWNrCisgICAgQVVSZW5kZXJDYWxsYmFja1N0cnVjdCBpbnB1dDsKKyAgICBpbnB1dC5pbnB1dFBy
b2MgPSBpbnB1dFByb2M7CisgICAgaW5wdXQuaW5wdXRQcm9jUmVmQ29uID0gdGhpczsKKyAgICBy
ZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9w
ZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQs
IHNpemVvZihpbnB1dCkpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIC8vIFNldCBzdHJl
YW0gZm9ybWF0CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsK
KworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik7
CisgICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9V
bml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9p
ZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIGNv
bnN0ZXhwciBpbnQgYnl0ZXNQZXJGbG9hdCA9IHNpemVvZihGbG9hdDMyKTsKKyAgICBjb25zdGV4
cHIgaW50IGJpdHNQZXJCeXRlID0gODsKKyAgICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBo
YXJkd2FyZVNhbXBsZVJhdGU7CisgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zv
cm1hdExpbmVhclBDTTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9y
bWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVh
dmVkOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0Owor
ICAgIHN0cmVhbUZvcm1hdC5tRnJhbWVzUGVyUGFja2V0ID0gMTsKKyAgICBzdHJlYW1Gb3JtYXQu
bUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tQ2hhbm5l
bHNQZXJGcmFtZSA9IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CisgICAgc3RyZWFtRm9ybWF0Lm1C
aXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdDsKKworICAgIHJlc3Vs
dCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5
X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZv
cm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOworICAgIEFTU0VSVCgh
cmVzdWx0KTsKKworICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJl
ZEJ1ZmZlclNpemUoa1ByZWZlcnJlZEJ1ZmZlclNpemUpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcw
ZjljOWZmZjUxZjQ4M2I0NDA0MWEzNzcxZmI0MTg3YTdhZWRhN2MuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Db2NvYS5oIgotCi0j
aWYgRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiQXVkaW9C
dXMuaCIKLSNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCi0jaW5jbHVkZSA8Q29yZUF1ZGlvL0F1ZGlv
SGFyZHdhcmUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6Y29uZmlndXJlKCkKLXsKLSAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1
bHRPdXRwdXRVbml0Ci0gICAgQXVkaW9Db21wb25lbnQgY29tcDsKLSAgICBBdWRpb0NvbXBvbmVu
dERlc2NyaXB0aW9uIGRlc2M7Ci0KLSAgICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0
VHlwZV9PdXRwdXQ7Ci0gICAgZGVzYy5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5
cGVfRGVmYXVsdE91dHB1dDsKLSAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRp
b1VuaXRNYW51ZmFjdHVyZXJfQXBwbGU7Ci0gICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7Ci0g
ICAgZGVzYy5jb21wb25lbnRGbGFnc01hc2sgPSAwOwotICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVu
dEZpbmROZXh0KDAsICZkZXNjKTsKLQotICAgIEFTU0VSVChjb21wKTsKLQotICAgIE9TU3RhdHVz
IHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm91dHB1dFVuaXQoKSk7
Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6
ZShvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIC8vIFNldCByZW5k
ZXIgY2FsbGJhY2sKLSAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0OwotICAgIGlucHV0
LmlucHV0UHJvYyA9IGlucHV0UHJvYzsKLSAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlz
OwotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlv
VW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCAw
LCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIC8v
IFNldCBzdHJlYW0gZm9ybWF0Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVh
bUZvcm1hdDsKLSAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0
KTsKLQotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1
ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAo
dm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikp
OwotICAgIEFTU0VSVCghcmVzdWx0KTsKLX0KLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnByb2Nlc3NCdXNBZnRlclJlbmRlcihBdWRpb0J1cyYgYnVzLCBVSW50MzIgbnVtYmVyT2ZGcmFt
ZXMpCi17Ci0gICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDBkYiAoaS5lLiwgWy0xLjAsIDEuMF0pCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkg
ewotICAgICAgICBhdXRvKiBjaGFubmVsID0gYnVzLmNoYW5uZWwoaSk7Ci0gICAgICAgIGlmICgh
Y2hhbm5lbC0+aXNTaWxlbnQoKSkKLSAgICAgICAgICAgIFZlY3Rvck1hdGg6OmNsYW1wKGNoYW5u
ZWwtPmRhdGEoKSwgLTEsIDEsIGNoYW5uZWwtPm11dGFibGVEYXRhKCksIG51bWJlck9mRnJhbWVz
KTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVESU8pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOGVkM2VmNzhjOGM2YTNiMWUwNzBjYjQ0MDU5NjlhZGE0YWMzZGEyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
T3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykg
JiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlIDxDb3Jl
QXVkaW8vQXVkaW9IYXJkd2FyZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgQXVk
aW9PdXRwdXRVbml0QWRhcHRvcjo6Y29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK3sKKyAgICAvLyBPcGVuIGFuZCBpbml0
aWFsaXplIERlZmF1bHRPdXRwdXRVbml0CisgICAgQXVkaW9Db21wb25lbnQgY29tcDsKKyAgICBB
dWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7CisKKyAgICBkZXNjLmNvbXBvbmVudFR5cGUg
PSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7CisgICAgZGVzYy5jb21wb25lbnRTdWJUeXBlID0ga0F1
ZGlvVW5pdFN1YlR5cGVfRGVmYXVsdE91dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0
dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBwbGU7CisgICAgZGVzYy5jb21wb25lbnRG
bGFncyA9IDA7CisgICAgZGVzYy5jb21wb25lbnRGbGFnc01hc2sgPSAwOworICAgIGNvbXAgPSBB
dWRpb0NvbXBvbmVudEZpbmROZXh0KDAsICZkZXNjKTsKKworICAgIEFTU0VSVChjb21wKTsKKwor
ICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1f
b3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgcmVzdWx0ID0gQXVkaW9V
bml0SW5pdGlhbGl6ZShtX291dHB1dFVuaXQpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAg
IC8vIFNldCByZW5kZXIgY2FsbGJhY2sKKyAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0
OworICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0UHJvYzsKKyAgICBpbnB1dC5pbnB1dFByb2NS
ZWZDb24gPSB0aGlzOworICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0
VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2Nv
cGVfR2xvYmFsLCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOworICAgIEFTU0VSVCghcmVzdWx0
KTsKKworICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0CisgICAgY29uc3RleHByIGludCBieXRlc1Bl
ckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0c1BlckJ5dGUg
PSA4OworCisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAg
ICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBoYXJkd2FyZVNhbXBsZVJhdGU7CisgICAgc3Ry
ZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKKyAgICBzdHJlYW1G
b3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8
IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkOworICAgIHN0cmVhbUZvcm1hdC5tQnl0
ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tRnJhbWVzUGVy
UGFja2V0ID0gMTsKKyAgICBzdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZs
b2F0OworICAgIHN0cmVhbUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHM7CisgICAgc3RyZWFtRm9ybWF0Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRl
ICogYnl0ZXNQZXJGbG9hdDsKKworICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1f
b3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNj
b3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbikpOworICAgIEFTU0VSVCghcmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oTUFD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlv
RGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggNWExMmNkZTRmY2RmYzU3ZmFkNDJiN2Q5ZThmZTcz
MjA0MzUwOWQ3OC4uNWQyYmJmY2E0YWIzMmM2OTk4MmI3YzI1YmFlNzY4NmRmZjIzOTJhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwCkBAIC02OCwxMCArNjgsMTAgQEAgdm9pZCBNb2NrQXVkaW9EZXN0
aW5hdGlvbkNvY29hOjp0aWNrKCkKIHsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlKCksIG51bWJlck9mRnJhbWVzVG9Qcm9jZXNzID0gbV9u
dW1iZXJPZkZyYW1lc1RvUHJvY2Vzc10gewogICAgICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gc3RyZWFtRm9ybWF0OwotICAgICAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24oc3RyZWFtRm9ybWF0KTsKKyAgICAgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
KHN0cmVhbUZvcm1hdCk7CiAKICAgICAgICAgV2ViQXVkaW9CdWZmZXJMaXN0IHdlYkF1ZGlvQnVm
ZmVyTGlzdCB7IHN0cmVhbUZvcm1hdCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgfTsKLSAgICAg
ICAgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjppbnB1dFByb2ModGhpcywgMCwgMCwgMCwgbnVtYmVy
T2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1ZGlvQnVmZmVyTGlzdC5saXN0KCkpOworICAgICAgICBy
ZW5kZXIoMCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1ZGlvQnVmZmVyTGlzdC5saXN0
KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRleCAy
N2YyYTY5OTZhYzk0MGNjZDg0NzkzNTk1NGU2ZDkxODRhM2QzM2QwLi5jMWUyM2U3NzI5ZThiOTM2
MDk0NDE4ZmRlYTllNDBlOWRlZjk0MDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5j
cHAKQEAgLTI5LDExNiArMjksMTM0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgot
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvQnVzRGF0YS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9BdWRpb0J1cy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5h
dGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9BdWRpb1V0aWxpdGllcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFB1bGxGSUZP
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVk
ZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRp
b0J1cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgorI2VuZGlmCiAK
LS8vIFRoaXMgRklGTyBzaXplIG1hdGNoZXMgdG8gb25lIGluIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YS5jcHAgYW5kIHdhcyBpbXBvcnRlZCBmcm9tIEJsaW5rLgotY29uc3RleHByIHNpemVfdCBmaWZv
U2l6ZSA9IDk2ICogV2ViQ29yZTo6QXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwor
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4sIHB1YmxpYyBX
ZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2sgeworY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgor
ICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9Vbml0UmVu
ZGVyZXIKKyNlbmRpZgorewogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6
QXVkaW9CdXM7Ci0gICAgdXNpbmcgQXVkaW9EZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb247Ci0gICAgdXNpbmcgU2hhcmVkQnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OwotCiAgICAgc3RhdGljIFJlZjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXRE
ZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJh
dGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24s
IGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbigpCiAgICAgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCkpOwogICAgIH0KIAog
ICAgIHZvaWQgc2NoZWR1bGVHcmFjZWZ1bFNodXRkb3duSWZOZWVkZWQoKQogICAgIHsKLSAgICAg
ICAgaWYgKCFpc1BsYXlpbmcoKSkKKyAgICAgICAgaWYgKCFtX2lzUGxheWluZykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24g
PSB0aGlzOwotICAgICAgICBzdG9wKCk7CiAgICAgfQogCi0gICAgdm9pZCBzdGFydCgpIHsgbV9k
ZXN0aW5hdGlvbi0+c3RhcnQoeyB9KTsgfQotICAgIHZvaWQgc3RvcCgpIHsgbV9kZXN0aW5hdGlv
bi0+c3RvcCgpOyB9Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
LT5pc1BsYXlpbmcoKTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVzdGluYXRpb24tPmZyYW1lc1BlckJ1ZmZlcigpIDsgfQorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCisgICAg
eworICAgICAgICBtX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisKKyAgICAgICAgaWYgKGlw
Y0hhbmRsZS5oYW5kbGUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fcmluZ0J1ZmZlci0+ZGVh
bGxvY2F0ZSgpOworICAgICAgICAgICAgc3RvcmFnZSgpLnNldFJlYWRPbmx5KGZhbHNlKTsKKyAg
ICAgICAgICAgIHN0b3JhZ2UoKS5zZXRTdG9yYWdlKG51bGxwdHIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1h
cChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
KyAgICAgICAgc3RvcmFnZSgpLnNldFN0b3JhZ2UoV1RGTW92ZShtZW1vcnkpKTsKKyAgICAgICAg
c3RvcmFnZSgpLnNldFJlYWRPbmx5KHRydWUpOworCisgICAgICAgIG1fcmluZ0J1ZmZlci0+YWxs
b2NhdGUoZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKKyAgICB9CisjZW5kaWYKKworICAg
IHZvaWQgc3RhcnQoKQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0
VW5pdEFkYXB0b3Iuc3RhcnQoKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBt
X2lzUGxheWluZyA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCBzdG9wKCkKKyAgICB7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLnN0b3AoKTsKKyAgICAg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBtX2lzUGxheWluZyA9IGZhbHNlOworICAgIH0K
KworICAgIGJvb2wgaXNQbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KIAog
cHJpdmF0ZToKLSAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKQorICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUs
IGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkKICAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVj
dGlvbikKICAgICAgICAgLCBtX2lkKGlkZW50aWZpZXIpCi0gICAgICAgICwgbV9kZXN0aW5hdGlv
bihBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKnRoaXMsIGlucHV0RGV2aWNlSWQsIG51bWJlck9m
SW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpCi0gICAg
ICAgICwgbV9maWZvKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZpZm9TaXplKQorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgICAgICAsIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcigqdGhpcykKKyAg
ICAgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+
KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIpKSkKKyNlbmRp
ZgorICAgICAgICAvLyAsIG1fY29udGV4dFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKICAgICB7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25m
aWd1cmUoaGFyZHdhcmVTYW1wbGVSYXRlLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyNlbmRp
ZgogICAgIH0KIAotICAgIHZvaWQgcmVuZGVyKEF1ZGlvQnVzKiwgQXVkaW9CdXMqIGRlc3RpbmF0
aW9uQnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzLCBjb25zdCBXZWJDb3JlOjpBdWRpb0lPUG9z
aXRpb24mIG91dHB1dFBvc2l0aW9uKSBvdmVycmlkZQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlJiBzdG9yYWdlKCkKICAgICB7Ci0gICAgICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgICAgIGlmIChtX3Byb3RlY3RUaGlzRHVyaW5nR3Jh
Y2VmdWxTaHV0ZG93bikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB7Ci0gICAgICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgZnJh
bWVzVG9Qcm9jZXNzID0gbV9maWZvLnB1bGwoZGVzdGluYXRpb25CdXMsIGZyYW1lc1RvUHJvY2Vz
cyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFmcmFtZXNUb1Byb2Nlc3MpCi0gICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFyZWRSaW5nQnVmZmVyU3Rv
cmFnZSY+KG1fcmluZ0J1ZmZlci0+c3RvcmFnZSgpKTsKKyAgICB9CiAKLSAgICAgICAgVmVjdG9y
PFJlZjxTaGFyZWRNZW1vcnk+PiBidWZmZXJzOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZGVzdGluYXRpb25CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZW9mKGZsb2F0KSAq
IGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgICAgICBidWZmZXJzLmFwcGVuZCgqbWVtb3J5KTsK
LSAgICAgICAgfQorICAgIE9TU3RhdHVzIHJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCogdGlt
ZXN0YW1wLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQor
ICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHRpbWVzdGFtcCk7CiAKICAgICAgICAgLy8gRklY
TUU6IEl0IGlzIHVuZm9ydHVuYXRlIHdlIGhhdmUgdG8gZGlzcGF0Y2ggdG8gdGhlIG1haW4gdGhl
YWQgaGVyZS4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gSVBDIHN0cmFpZ2h0IGZyb20gdGhlCiAgICAg
ICAgIC8vIHJlbmRlciB0aHJlYWQgYnV0IHRoaXMgaXMgbm90IHN1cHBvcnRlZCBieSBzZW5kV2l0
aEFzeW5jUmVwbHkoKS4KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZXNUb1Byb2Nlc3MsIG91dHB1dFBvc2l0aW9uLCBi
dWZmZXJzID0gV1RGTW92ZShidWZmZXJzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFJlbW90
ZUF1ZGlvQnVzRGF0YSBidXNEYXRhIHsgZnJhbWVzVG9Qcm9jZXNzLCBvdXRwdXRQb3NpdGlvbiwg
YnVmZmVycy5tYXAoW10oYXV0byYgbWVtb3J5KSB7IHJldHVybiBtZW1vcnkuY29weVJlZigpOyB9
KSB9OwotICAgICAgICAgICAgQVNTRVJUKGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgICAgICBt
X2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW5kZXJCdWZmZXIoYnVzRGF0YSksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgYnVmZmVycyA9IFdURk1vdmUo
YnVmZmVycyksIGZyYW1lc1RvUHJvY2Vzc10oKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBhdWRp
b0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoYnVmZmVycy5zaXplKCksIGZyYW1lc1RvUHJvY2Vzcywg
ZmFsc2UpOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBidWZmZXJz
LnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgICAgICBhdWRpb0J1cy0+c2V0Q2hhbm5lbE1l
bW9yeShpLCBzdGF0aWNfY2FzdDxmbG9hdCo+KGJ1ZmZlcnNbaV0tPmRhdGEoKSksIGZyYW1lc1Rv
UHJvY2Vzcyk7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2ZpZm9M
b2NrKTsKLSAgICAgICAgICAgICAgICBtX2ZpZm8ucHVzaChhdWRpb0J1cy5nZXQoKSk7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgbnVtYmVyT2ZGcmFtZXMsIGlvRGF0YV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fY29u
bmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlcXVlc3RCdWZmZXIobnVtYmVyT2ZGcmFtZXMpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlvRGF0YV0odWludDY0
X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwgdWludDY0X3Qg
Ym91bmRzU3RhcnRGcmFtZSwgdWludDY0X3QgYm91bmRzRW5kRnJhbWUpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIG1fcmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1lQm91bmRzKGJvdW5kc1N0
YXJ0RnJhbWUsIGJvdW5kc0VuZEZyYW1lKTsKKyAgICAgICAgICAgICAgICBtX3JpbmdCdWZmZXIt
PmZldGNoKGlvRGF0YSwgbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwgc3RhcnRGcmFtZSk7CiAgICAg
ICAgICAgICB9LCBtX2lkLnRvVUludDY0KCkpOwogICAgICAgICB9KTsKLSAgICB9CiAKLSAgICB2
b2lkIGlzUGxheWluZ0RpZENoYW5nZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAobV9w
cm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24pIHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKSk7Ci0gICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZWZDb3VudCgpID09IDEpOwotICAgICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmlu
Z0dyYWNlZnVsU2h1dGRvd24gPSBudWxscHRyOyAvLyBEZWxldGVzICJ0aGlzIi4KLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlzUGxheWluZyA9IG1fZGVzdGluYXRpb24t
PmlzUGxheWluZygpLCBpZGVudGlmaWVyID0gbV9pZC50b1VJbnQ2NCgpXSB7Ci0gICAgICAgICAg
ICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6RGlkQ2hhbmdlSXNQbGF5aW5nKGlzUGxheWluZyksIGlkZW50aWZpZXIp
OwotICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG5vRXJyOwogICAgIH0KKyNlbmRpZgogCiAg
ICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIG1faWQ7Ci0gICAgUmVmUHRyPEF1ZGlvRGVzdGluYXRp
b24+IG1fZGVzdGluYXRpb247CiAgICAgUmVmUHRyPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+IG1f
cHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1bFNodXRkb3duOwotICAgIExvY2sgbV9maWZvTG9jazsK
LSAgICBXZWJDb3JlOjpQdXNoUHVsbEZJRk8gbV9maWZvOworCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgV2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvciBtX2F1ZGlvT3V0cHV0VW5pdEFk
YXB0b3I7CisKKyAgICBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9kZXNjcmlw
dGlvbjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7
CisjZW5kaWYKKworICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OwogfTsKIAogUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCkBAIC0xNDgsMTQgKzE2NiwxMyBA
QCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUAogCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLAotICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVu
c2lnbmVkIGZyYW1lc1BlckJ1ZmZlcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0
cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50
MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJk
d2FyZVNhbXBsZVJhdGUsCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBu
ZXdJRCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNh
ZmUoKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3Jl
YXRlKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51
bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7
Ci0gICAgYXV0byBmcmFtZXNQZXJCdWZmZXIgPSBkZXN0aW5hdGlvbi0+ZnJhbWVzUGVyQnVmZmVy
KCk7CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0
ZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIG5ld0lELCBpbnB1dERldmljZUlkLCBudW1i
ZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhh
cmR3YXJlU2FtcGxlUmF0ZSk7CiAgICAgbV9hdWRpb0Rlc3RpbmF0aW9ucy5hZGQobmV3SUQsIFdU
Rk1vdmUoZGVzdGluYXRpb24pKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCwgZnJhbWVz
UGVyQnVmZmVyKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCk7CiB9CiAKIHZvaWQgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTg2LDYgKzIwMywxNCBAQCB2b2lkIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzUGxheWluZyk7CiB9CiAK
KyNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OmF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNIYW5kbGUs
IGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzKQoreworICAgIGlmIChhdXRvKiBpdGVtID0gbV9hdWRpb0Rl
c3RpbmF0aW9ucy5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIGl0ZW0tPmF1ZGlvU2FtcGxlc1N0
b3JhZ2VDaGFuZ2VkKGlwY0hhbmRsZSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgK
aW5kZXggMTFiNGJlZjEwNDFiN2EwOGFmM2IxYjA5ZGUzODRjMDNkNTg5M2QxZS4uZTIyYzEwYWNl
OWE4ODU2ZjBjYjA4ODc3MmJiMTQ1YmViZjE2MGZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLmgKQEAgLTM0LDYgKzM0LDEyIEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworfQorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOwpAQCAtNDYsMjUgKzUyLDI1IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgflJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24o
Y29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVu
c2lnbmVkIGZyYW1lc1BlckJ1ZmZlcik+JiYpOwotICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5h
dGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKLSAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0g
ICAgdm9pZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0KLSAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikKLSAgICB7Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyLCBlbmNvZGVyKTsKLSAgICB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpOwogCisgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNv
bnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9h
dCBoYXJkd2FyZVNhbXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgc3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2Vi
Q29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMp
OworI2VuZGlmCisKICAgICBIYXNoTWFwPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
LCBSZWY8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4+IG1fYXVkaW9EZXN0aW5hdGlvbnM7CiAgICAg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwog
fTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdDsKIAog
I2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBiYzA1YWUxMTc5
YWEyYWQzNGUzMzM4NTMyYmVkYjVlNmI0ZDQyM2EwLi4yYmM5ZWRjNzFiOTRlODY3OWNjMjBiNjJk
ODFhOTMyY2UzMTU1YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0yNCwxNCArMjQsMTQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJfQVVESU8pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotCi0gICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJp
bmcgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJf
dCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSAtPiAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBmcmFt
ZXNQZXJCdWZmZXIpIFN5bmNocm9ub3VzCi0KKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0
cmluZyBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQz
Ml90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3
YXJlU2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFdl
YktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkg
QXN5bmMKIAogICAgIFN0YXJ0QXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWluZykgU3luY2hy
b25vdXMKICAgICBTdG9wQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWluZykgU3luY2hyb25v
dXMKLQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2Vk
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVz
KQorI2VuZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGVkYTE1YTM1ZmRiYTVjNzIyNDJjMTM4NThmNzM4YzRh
YzZmOGEwZS4uNDk4MDgzNmIwZWMzNzQzZjM0ZjFhMjVjMzAwNmNkNmRjZWE1NDczMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDMw
LDcgKzE0MzAsNiBAQAogCQk5QjU0OTlCMjIzNjJBN0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlw
dWxhdGlvbkV4Y2x1c2lvblJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCNTQ5OUIwMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0
aW9uRXhjbHVzaW9uUnVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTlCNUJFQzI2MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMy
NDI0MDBGNEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oICovOyB9OwogCQk5QjVCRUMy
QTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyODI0MDEwMTU4
MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi87IH07Ci0JCTlCNUJF
QzMxMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBDb3B5RmlsZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMzAyNDAxMDIyMjAwNzBD
NkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovOyB9OwogCQk5RUM1MzJBMzI0NDdGQkFEMDAy
MTUyMTYgLyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RUM1MzJBMjI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9j
YXRpb25JZGVudGlmaWVyLmggKi87IH07CiAJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBX
S0NvbnRleHRQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1h
Yy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUEx
MDJBNzA4MUVDMEVFRTkwMEQ4MUQ4MiAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNS
LnBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTVFMzk0OTFENUJEOEE3MDBCNEI3Q0UgLyogY29tLm1h
Y3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgKi87IH07CkBAIC0yMTM5LDcgKzIx
MzgsNiBAQAogCQkJCTJEQjk2MDUzMjM5ODg2QzEwMDEwMjc5MSAvKiBjb20uYXBwbGUuV2ViS2l0
LkdQVS5zYiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREIxOTNBQzlGODAwNUVDQzI1IC8q
IGNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4
Q0NEREMxOTNBQzlGQjAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYiBp
biBDb3B5RmlsZXMgKi8sCi0JCQkJOUI1QkVDMzEyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1
ZGlvQnVzRGF0YS5oIGluIENvcHlGaWxlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ1NDIsNyArNDU0MCw2IEBACiAJCTlC
NUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCNUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1QkVDMkUy
NDAxMDE4QzAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTlCNUJFQzMwMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVB
dWRpb0J1c0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9CdXNEYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQzU5RDZDMUVGQ0NDQjYwMDFFOEQwOSAvKiBDYWxs
YmFja0lELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrSUQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNTlENkQxRUZDREM2RDAwMUU4RDA5IC8q
IE9wdGlvbmFsQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBP
cHRpb25hbENhbGxiYWNrSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUVDNTMy
QTIyNDQ3RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHZW9sb2NhdGlvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTU1NTcsNyArNTU1NCw2IEBACiAJCQkJMDc5MjMxMzEyMzlCM0IwQzAwOTU5OEUyIC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5
OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3QjFEMDRCMjNEMzhG
Q0UwMDM5OUE2RSAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCi0J
CQkJOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovLAog
CQkJCTlCNUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkuY3BwICovLAogCQkJCTlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuaCAqLywKIAkJCQk5QjVCRUMyRTI0MDEwMThDMDA3MEM2RUYgLyogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYzJmMGM2NjA2OTZhZTM0ODYxYzBiMjQ4MGFk
MDU3ZmVhMTk2MDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEu
aAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBSZW1vdGVB
dWRpb0J1c0RhdGEgewotICAgIHVpbnQ2NF90IGZyYW1lc1RvUHJvY2VzcyB7IDAgfTsKLSAgICBX
ZWJDb3JlOjpBdWRpb0lPUG9zaXRpb24gb3V0cHV0UG9zaXRpb247Ci0gICAgVmVjdG9yPFJlZjxT
aGFyZWRNZW1vcnk+PiBjaGFubmVsQnVmZmVyczsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+Ci0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGVuY29kZXIgPDwgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBlbmNvZGVyIDw8IG91
dHB1dFBvc2l0aW9uOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihj
aGFubmVsQnVmZmVycy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNo
YW5uZWxCdWZmZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTaGFyZWRNZW1vcnk6Okhh
bmRsZSBoYW5kbGU7Ci0gICAgICAgICAgICBjaGFubmVsQnVmZmVyc1tpXS0+Y3JlYXRlSGFuZGxl
KGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwotICAgICAgICAg
ICAgZW5jb2RlciA8PCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwg
Y2hhbm5lbEJ1ZmZlcnNbaV0tPnNpemUoKSB9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlbW90ZUF1ZGlvQnVzRGF0YSYgcmVzdWx0KQot
ICAgIHsKLSAgICAgICAgdWludDY0X3QgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGZyYW1lc1RvUHJvY2VzcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIHJlc3VsdC5mcmFtZXNUb1Byb2Nlc3MgPSBmcmFtZXNUb1Byb2Nlc3M7Ci0KLSAg
ICAgICAgV2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91dHB1dFBvc2l0aW9uOwotICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG91dHB1dFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgcmVzdWx0Lm91dHB1dFBvc2l0aW9uID0gb3V0cHV0UG9zaXRpb247Ci0K
LSAgICAgICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIGlwY0hhbmRsZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXV0byBt
ZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRXcml0ZSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxC
dWZmZXJzLmFwcGVuZChtZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDg0MDRjNDhlMWMyZTQ4MmFi
Y2QyNGU1NWQyY2M5MTNiZDI2N2U3NDEuLmNlYTU3Yzc0ZjEzYzAwNmNmOWNmYzNhMjI4NTdmMmMz
YjY5ZWQwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTMwLDE2
ICszMCwyMSBAQAogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0J1
cy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgorCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisjaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1dlYkF1ZGlvQnVmZmVyTGlzdC5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi11c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOworLy8gQWxsb2NhdGUgYSBy
aW5nIGJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiAyIHNlY29uZHMgb2YgYXVkaW8uCitj
b25zdGV4cHIgc2l6ZV90IHJpbmdCdWZmZXJTaXplSW5TZWNvbmQgPSAyOworCiB1c2luZyBBdWRp
b0Rlc3RpbmF0aW9uID0gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjsKIHVzaW5nIEF1ZGlvSU9D
YWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFjazsKIApAQCAtNTAsMTYgKzU1LDE3IEBA
IFJlZjxBdWRpb0Rlc3RpbmF0aW9uPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNyZWF0
ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiCiB9CiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ss
IGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQot
ICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKLSAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRl
KQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIDogV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNv
Y29hKGNhbGxiYWNrLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBmYWxzZSkK
KyAgICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5pcXVlPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4obWFr
ZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4odGhpcykpKQorI2VuZGlmCiB7CiAg
ICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgZGVzdGluYXRpb25JRDsKLSAgICB1
bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIgeyAwIH07CiAKICAgICBhdXRvJiBjb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAg
ICBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKLSAgICAgICAgTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGlucHV0
RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywg
c2FtcGxlUmF0ZSksCi0gICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25JRCwgZnJhbWVz
UGVyQnVmZmVyKSwgMCk7CisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihpbnB1dERldmljZUlkLCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJl
U2FtcGxlUmF0ZSgpKSwKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklEKSwgMCk7
CiAKICAgICBhdXRvIG9mZlRocmVhZFJlbmRlcmluZyA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIHdoaWxlICghbV90aHJlYWRUYXNr
UXVldWUuaXNLaWxsZWQoKSkgewpAQCAtNzIsNyArNzgsMTQgQEAgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkoQXVkaW9JT0NhbGxiYWNrJiBj
YWxsYmEKICAgICBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCB0aGlzLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwogCiAgICAgbV9kZXN0aW5h
dGlvbklEID0gZGVzdGluYXRpb25JRDsKLSAgICBtX2ZyYW1lc1BlckJ1ZmZlciA9IGZyYW1lc1Bl
ckJ1ZmZlcjsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbiBzdHJlYW1Gb3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
KHN0cmVhbUZvcm1hdCk7CisgICAgbV9udW1iZXJPZkZyYW1lcyA9IGhhcmR3YXJlU2FtcGxlUmF0
ZSgpICogcmluZ0J1ZmZlclNpemVJblNlY29uZDsKKyAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRl
KHN0cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1lcyk7CisgICAgbV9hdWRpb0J1ZmZlckxpc3Qg
PSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsKKyNlbmRpZgog
fQogCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6On5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkoKQpAQCAtMTA1LDE5ICsxMTgsMzcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6OnN0b3AoKQogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiB9
CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpyZW5kZXJCdWZmZXIoY29uc3Qg
V2ViS2l0OjpSZW1vdGVBdWRpb0J1c0RhdGEmIGF1ZGlvQnVzRGF0YSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorI2lmIFBMQVRGT1JNKENPQ09BKQordm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZmZXIodWludDY0X3QgbnVt
YmVyT2ZGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QsIHVpbnQ2NF90LCB1
aW50NjRfdCwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNz
KTsKLSAgICBBU1NFUlQoYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJzLnNpemUoKSk7Ci0gICAg
YXV0byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZm
ZXJzLnNpemUoKSwgYXVkaW9CdXNEYXRhLmZyYW1lc1RvUHJvY2VzcywgZmFsc2UpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdWRpb0J1c0RhdGEuY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgp
OyArK2kpCi0gICAgICAgIGF1ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIChmbG9hdCopYXVk
aW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJzW2ldLT5kYXRhKCksIGF1ZGlvQnVzRGF0YS5mcmFtZXNU
b1Byb2Nlc3MpOwotCi0gICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgYXVkaW9CdXMuZ2V0KCksIGF1
ZGlvQnVzRGF0YS5mcmFtZXNUb1Byb2Nlc3MsIGF1ZGlvQnVzRGF0YS5vdXRwdXRQb3NpdGlvbik7
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIGlmICghaGFzRW5vdWdoRnJhbWVzKG51
bWJlck9mRnJhbWVzKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCwgMCwgMCwgMCk7CisK
KyAgICBtX3JlbmRlckNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cik7CisgICAgbV9hdWRpb0J1ZmZlckxpc3QtPnNldFNhbXBsZUNvdW50KG51bWJlck9mRnJhbWVz
KTsKKyAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlcihudWxscHRyLCBudW1iZXJPZkZy
YW1lcywgbV9hdWRpb0J1ZmZlckxpc3QtPmxpc3QoKSk7CiB9CiAKK3ZvaWQgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5OjpyZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1Jl
bmRlcikKK3sKKyAgICBBU1NFUlQobV9yZW5kZXJDb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBh
dXRvIHN0YXJ0RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKKworICAgIEF1ZGlvRGVzdGluYXRpb25D
b2NvYTo6cmVuZGVyT25SZW5kZXJpbmdUaGVhZChmcmFtZXNUb1JlbmRlcik7CisgICAgbV9jdXJy
ZW50RnJhbWUgKz0gZnJhbWVzVG9SZW5kZXI7CisKKyAgICBtX3JpbmdCdWZmZXItPnN0b3JlKG1f
YXVkaW9CdWZmZXJMaXN0LT5saXN0KCksIGZyYW1lc1RvUmVuZGVyLCBzdGFydEZyYW1lKTsKKwor
ICAgIHVpbnQ2NF90IGJvdW5kc1N0YXJ0RnJhbWU7CisgICAgdWludDY0X3QgYm91bmRzRW5kRnJh
bWU7CisgICAgbV9yaW5nQnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoYm91bmRzU3RhcnRG
cmFtZSwgYm91bmRzRW5kRnJhbWUpOworICAgIG1fcmVuZGVyQ29tcGxldGlvbkhhbmRsZXIoc3Rh
cnRGcmFtZSwgZnJhbWVzVG9SZW5kZXIsIGJvdW5kc1N0YXJ0RnJhbWUsIGJvdW5kc0VuZEZyYW1l
KTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hh
bmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwpAQCAtMTMzLDYgKzE2NCwyOCBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eTo6ZGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKICAgICBtX3RocmVh
ZFRhc2tRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKKyNpZiBQTEFURk9STShDT0NP
QSkKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9yYWdlQ2hhbmdlZChTaGFy
ZWRNZW1vcnkqIHN0b3JhZ2UpCit7CisgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwor
ICAgIGlmIChzdG9yYWdlKQorICAgICAgICBzdG9yYWdlLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKworICAgIC8vIEZJWE1FOiBTZW5k
IHRoZSBhY3R1YWwgZGF0YSBzaXplIHdpdGggSVBDSGFuZGxlLgorI2lmIE9TKERBUldJTikgfHwg
T1MoV0lORE9XUykKKyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9IGhhbmRsZS5zaXplKCk7CisjZWxz
ZQorICAgIHVpbnQ2NF90IGRhdGFTaXplID0gMDsKKyNlbmRpZgorCisgICAgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVz
Y3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKyAgICBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24gZGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpBdWRpb1NhbXBsZXNTdG9yYWdl
Q2hhbmdlZCB7IG1fZGVzdGluYXRpb25JRCwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZN
b3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIHN0cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1lcyB9
LCAwKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5oCmluZGV4IGM0YWRiNzU2MGQ0NjM3NThlZTcxNTZmMDFlZWM5OTU4ZDNjZmRl
NjYuLjJmNTgzMDAyM2Q0NzVjM2E1NzI5N2U1ODQ3MzZlN2U3ZmM5ZDE1ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuaApAQCAtMjgsMjQgKzI4LDM3IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgotI2luY2x1ZGUgIlJlbW90ZUF1ZGlvQnVzRGF0YS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0F1ZGlvSU9DYWxsYmFjay5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+
CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+
CisjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oPgorI2Vsc2UKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlv
RGVzdGluYXRpb24uaD4KICNlbmRpZgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDQVJp
bmdCdWZmZXI7CitjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1jbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgOiBwdWJsaWMgV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2Fn
ZVJlY2VpdmVyIHsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eQorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYQor
ICAgICwgcHVibGljIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpDbGllbnQKKyNlbHNlCisgICAg
OiBwdWJsaWMgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbgorI2VuZGlmCisgICAgLCBwdWJsaWMg
SVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSk7CiBwdWJsaWM6Ci0gICAgdXNp
bmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRpb0J1czsKICAgICB1c2luZyBBdWRpb0lPQ2FsbGJh
Y2sgPSBXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2s7CiAgICAgdXNpbmcgV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbjo6cmVmOwogICAgIHVzaW5nIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmRl
cmVmOwpAQCAtNTcsMTYgKzcwLDI2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tR1BVUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsg
fQogCi0gICAgdm9pZCByZW5kZXJCdWZmZXIoY29uc3QgV2ViS2l0OjpSZW1vdGVBdWRpb0J1c0Rh
dGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHZvaWQgcmVxdWVzdEJ1ZmZlcih1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1l
c1RvUmVuZGVyLCB1aW50NjRfdCBib3VuZHNTdGFydEZyYW1lLCB1aW50NjRfdCBib3VuZHNFbmRG
cmFtZSk+JiYpOworI2VuZGlmCisKICAgICB2b2lkIGRpZENoYW5nZUlzUGxheWluZyhib29sIGlz
UGxheWluZyk7CiAKIHByaXZhdGU6Ci0gICAgLy8gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbgot
ICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3Bh
dGNoVG9SZW5kZXJUaHJlYWQpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwot
ICAgIGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KLSAg
ICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zYW1wbGVSYXRl
OyB9Ci0gICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9mcmFtZXNQZXJCdWZmZXI7IH0KKyAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVu
Y3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKSBmaW5hbDsKKyAgICB2
b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBib29sIGlzUGxheWluZygpIGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KKyAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KikgZmluYWw7CisgICAgdm9pZCBy
ZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikgZmluYWw7CisjZW5k
aWYKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTc2LDExICs5
OSwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmTWVzc2FnZVJlY2VpdmVyKCkgZmluYWwgeyBX
ZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpyZWYoKTsgfQogICAgIHZvaWQgZGVyZWZNZXNzYWdl
UmVjZWl2ZXIoKSBmaW5hbCB7IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmRlcmVmKCk7IH0K
IAotICAgIEF1ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKLSAgICBmbG9hdCBtX3NhbXBsZVJh
dGUgeyAwLiB9OwotICAgIHVuc2lnbmVkIG1fZnJhbWVzUGVyQnVmZmVyIHsgMCB9OwogICAgIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIG1fZGVzdGluYXRpb25JRDsKICAgICBib29s
IG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHVpbnQ2
NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpXZWJBdWRpb0J1ZmZlckxpc3Q+IG1fYXVkaW9CdWZmZXJMaXN0OworICAgIHVpbnQ2NF90IG1f
Y3VycmVudEZyYW1lIHsgMCB9OworICAgIFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCwgdWlu
dDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk+IG1fcmVuZGVyQ29tcGxldGlvbkhhbmRsZXI7Cisj
ZW5kaWYKKwogICAgIEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRj
aFRvUmVuZGVyVGhyZWFkOwogICAgIFJlZlB0cjxUaHJlYWQ+IG1fcmVuZGVyVGhyZWFkOwogICAg
IENyb3NzVGhyZWFkUXVldWU8RnVuY3Rpb248dm9pZCgpPj4gbV90aHJlYWRUYXNrUXVldWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGFl
MWZjNzA2OTg3MTRjODcwNWU1ODI0ODE5NDY1YmFiMzI2M2YwNjEuLjk3MGNmYjhhMTM1NTQxYjc5
ZWM5NjEyYTAyYzE0YmUwNjNkOGQxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNCwxMCArMjQsMTAgQEAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eSBOb3RSZWZDb3VudGVkIHsKLQotICAgIFJlbmRlckJ1ZmZlcihzdHJ1
Y3QgV2ViS2l0OjpSZW1vdGVBdWRpb0J1c0RhdGEgZGF0YSkgLT4gKCkgQXN5bmMKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBSZXF1ZXN0QnVmZmVyKHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKSAt
PiAodWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwg
dWludDY0X3QgYm91bmRzU3RhcnRGcmFtZSwgdWludDY0X3QgYm91bmRzRW5kRnJhbWUpIEFzeW5j
CisjZW5kaWYKICAgICBEaWRDaGFuZ2VJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcpCi0KIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9B
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKaW5kZXggODc5
OWYxOTg0NzE0MTFlYzZmNzM5YTM4NzkzNjRkMjQ3NTEyZWE0NC4uMmUwYTZiMWY4MzkzMmFlODMz
NWRmNGVhYTRlYjUzNWY4NTg3MTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyOjpwdXNoU2FtcGxlcyhjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFdlYgogCiAg
ICAgICAgIC8vIEFsbG9jYXRlIGEgcmluZyBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4g
MiBzZWNvbmRzIG9mIGF1ZGlvLgogICAgICAgICBtX251bWJlck9mRnJhbWVzID0gbV9kZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCkgKiAyOwotICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKG1f
ZGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSwgbV9udW1iZXJPZkZyYW1lcyk7CisgICAg
ICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUobV9kZXNjcmlwdGlvbiwgbV9udW1iZXJPZkZyYW1l
cyk7CiAgICAgfQogCiAgICAgQVNTRVJUKGlzPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4o
YXVkaW9EYXRhKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411529</attachid>
            <date>2020-10-15 20:40:17 -0700</date>
            <delta_ts>2020-10-15 23:13:31 -0700</delta_ts>
            <desc>WIP, fix build failures on WPE</desc>
            <filename>bug-217715-20201015204016.patch</filename>
            <type>text/plain</type>
            <size>90286</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwNDMxMzFkMjk4YWYz
NzAzODYyYmI4NjdiZWI3OTQ4YTdhZDhiZC4uMTBlNTMyMTQ0ZDZjNzBkNzU0NmQyNDJkNTgyZDZi
NjdhZDBmOWRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTEwLTE1ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9j
ZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8g
ZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6aW5wdXRQcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYTo6b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRV
bml0QWRhcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRv
cklPUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVu
aXRBZGFwdG9yOjpjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2spOgorCiAyMDIwLTEwLTE1ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBBdWRpb0NvbnRleHQtc3Bl
Y2lmaWMgbG9naWMgb3V0IG9mIEJhc2VBdWRpb0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGNkNjdmMThh
ZGE0YzA1MDhkZDVjZDExNDc3ZWRkMTA1NWI0ZjBjYi4uYjlkNjk4NGIyZGI0ODg1MDkzZDVjOWY0
ZDdkZTMzZTlkMmJlMjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAyMC0xMC0xNSAg
UGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUg
UHJvY2Vzc10gVXNlIENBUmluZ0J1ZmZlciB0byB0cmFuc2ZlciBhdWRpbyBkYXRhIG9mIGFuIGF1
ZGlvIGRlc3RpbmF0aW9uIGZyb20gYSB3ZWIgcHJvY2VzcyB0byB0aGUgR1BVIFByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzcxNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb246On5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6c2NoZWR1bGVHcmFjZWZ1bFNodXRkb3du
SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjphdWRp
b1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uOjpzdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6
cmVuZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmF1ZGlvU2Ft
cGxlc1N0b3JhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbjo6aXNQbGF5aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbjo6ZnJhbWVzUGVyQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmg6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlU3luY01l
c3NhZ2VGcm9tV2ViUHJvY2Vzcyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0J1c0RhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVzdEJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3Rv
cmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHk6OnJlbmRlckJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpwdXNo
U2FtcGxlcyk6CisKIDIwMjAtMTAtMTUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFttYWNPU10gQWRkIHRlbGVtZXRyeSBmb3IgZGlzdHJpYnV0ZWQgbm90
aWZpY2F0aW9uIHNlcnZpY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBjNTY3MGMzNjQ4NTc1ZTg4MGViNjg1
ZTBhM2ExMzVjMjkyNDM3NWJiLi5lMzIyMzcyM2Q3NzhmZWUxM2Y0NzJjNGQyMTEwZWM5MzZiODBm
YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBBdWRpb0Rlc3RpbmF0aW9uTm9kZShCYXNlQXVkaW9Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+
QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAKLSAgICAvLyBBdWRpb05vZGUgICAKKyAgICAv
LyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90KSBvdmVycmlkZSB7IH07IC8vIHdl
J3JlIHB1bGxlZCBieSBoYXJkd2FyZSBzbyB0aGlzIGlzIG5ldmVyIGNhbGxlZAogICAgIAogICAg
IC8vIFRoZSBhdWRpbyBoYXJkd2FyZSBjYWxscyByZW5kZXIoKSB0byBnZXQgdGhlIG5leHQgcmVu
ZGVyIHF1YW50dW0gb2YgYXVkaW8gaW50byBkZXN0aW5hdGlvbkJ1cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDY0MTQwNTkyNTQwMWU2ZTNjZDViNjZmOWEzZmY3Y2Q4ZDA3MWNlMDguLmVi
NGUxN2YyZTczNmVhODY4MWM1NmQyMDI1MTQ5MjZiOGRjOTk0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dApAQCAtMjAzLDE5ICsyMDMsMjAgQEAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCiBwbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uY3BwCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2Eu
Y3BwCitwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcAogcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcAogcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9D
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdC
dWZmZXIuY3BwCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2Eu
bW0KIHBsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAKLXBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBAbm8tdW5pZnkKK3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9N
ZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uTWFuYWdlcklPUy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0J1c01hYy5tbQotcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCitw
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHAKIHBsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcAogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lv
bk1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDFhY2YxNDQzOTkyNDg1ODE0OGRkMjBiOWU4ZGU3YTUxZTNiMjJkY2UuLjFj
YzBlNWVjZmJhNTQxZTVjZmUzMTlhNTkzZDg5MThlYTEwN2ZlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzMyw2ICs2MzMs
NyBAQAogCQkxREFCMzExMjI1MUQ2QkYzMDBGQzk0ODUgLyogV2ViVmlkZW9Db250YWluZXJMYXll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4QjMx
QTEyMzc5REM4MzAwODgzRkRFIC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxREFCMzExNDI1MUQ3MjVD
MDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFEQUIzMTEzMjUxRDcyNUMwMEZDOTQ4NSAvKiBWaWRlb0xh
eWVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFEQUIzMTE1MjUxRDc0REIwMEZDOTQ4NSAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMThF
MUM1NDU5MDMwMERFMzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxREI2NkQzQjI1MzdBOTU2MDBC
NjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMURCNjZEMzcyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxREJDMUI1NjIzNDdCM0QyMDBCOTAxQUYgLyogUGljdHVyZUluUGljdHVy
ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxREJDMUI1NTIzNDdCM0QyMDBCOTAxQUYgLyogUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUREM0I0
QzYyNTFEQTBCODAwNjlCMjRBIC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRDVBMThEMUM1NDU5MDMwMERF
MzRBMyAvKiBWaWRlb0xheWVyTWFuYWdlck9iakMubW0gKi87IH07CiAJCTFERjdFODFGMjUxQTlF
MDYwMERCOEY2MSAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0REMUU1MjUxNjdCQTU2NDAwQ0U4MjBCIC8q
IFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxMjcsNyArNDEyOCw3IEBACiAJCUNDQzJCNTE2MTVGNjEz
MDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQ0MyQjUxMjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNl
Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNEMDYzRjgyMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMDYzRjgwMUUy
M0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJQ0QwNjNGODMx
RTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMDYzRjgxMUUyM0ZBODkwMDgxMkJFMyAvKiBJ
bml0RGF0YVJlZ2lzdHJ5LmggKi87IH07Ci0JCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBB
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9u
SU9TLmNwcCAqLzsgfTsKKwkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEyIC8qIEF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3JJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0
b3JJT1MuY3BwICovOyB9OwogCQlDRDExQjNFMTIyN0NFNkYzMDAyM0FGQzcgLyogQVZTdHJlYW1E
YXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMTFCM0UwMjI3Q0FBQTkwMDIzQUZDNyAvKiBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlLm1tICovOyB9OwogCQlDRDEyN0RFRTE0RjMwOTg0MDBFODQ3Nzkg
LyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVs
bFNjcmVlbldpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUNEMTdBNDVEMjEzNzQwODEwMDc5RUM3QiAvKiBVbmlmaWVkU291cmNlNjItbW0u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDE3QTQ1
OTIxMzc0MDE2MDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1tICovOyB9OwpAQCAtNTMw
NCw3ICs1MzA1LDYgQEAKIAkJRkQzMTYwQUIxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZv
bHZlclN0YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRDMxNjA3NTEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCAqLzsg
fTsKIAkJRkQzMTYwQUQxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3NzEyQjAy
NkY3MDBDMUEzNTkgLyogUmV2ZXJiSW5wdXRCdWZmZXIuaCAqLzsgfTsKIAkJRkQzMTYwQUYxMkIw
MjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDc5MTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRo
LmggKi87IH07Ci0JCUZEMzE2MEJEMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9u
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMx
NjBCNzEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oICovOyB9OwogCQlG
RDMxNjBCRjEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjBCOTEyQjAyNzJBMDBD
MUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggKi87IH07CiAJCUZEMzU5MTkwMTM4REIyMjAw
MEUxRUJFQyAvKiBBdWRpb1BhcmFtVGltZWxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzU5MThFMTM4REIyMjAwMEUxRUJFQyAvKiBBdWRpb1Bh
cmFtVGltZWxpbmUuaCAqLzsgfTsKIAkJRkQ0NUE5NEYxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA4QTg3
RjE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjc1NCw2ICs2NzU0LDggQEAKIAkJMUQwMDI2QTkyMzc0
RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEMkM4MkI2MjM2QTNGNkEwMDU1
RDZDNSAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJl
SW5QaWN0dXJlU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREFCMzEx
MzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmlkZW9MYXllck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMURCNjZE
MzcyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFGIC8qIFBpY3R1
cmVJblBpY3R1cmVPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaWN0dXJlSW5QaWN0dXJlT2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURDNTUzRkQyMTFCQTEyQTAw
NEI3ODBFIC8qIE5hdmlnYXRvclNoYXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZp
Z2F0b3JTaGFyZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZGMjEx
QkE4NDEwMDRCNzgwRSAvKiBTaGFyZURhdGEuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNo
YXJlRGF0YS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDI5Nyw4ICsxNDI5
OSw3IEBACiAJCUNEMDYzRjgwMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluaXREYXRhUmVnaXN0cnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDA2M0Y4MTFFMjNGQTg5MDA4MTJC
RTMgLyogSW5pdERhdGFSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbml0RGF0YVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMEM4
QjU4MjE0MUM4Q0EwMDYyRjU5RCAvKiBNZWRpYUNhcGFiaWxpdGllc0luZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUNEMEVFRTBBMTQ3NDNFMzQwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25JT1MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1
ZGlvRGVzdGluYXRpb25JT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvT3V0cHV0VW5pdEFk
YXB0b3JJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDExQjNERjIyN0NB
QUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEMTFCM0UwMjI3Q0FBQTkwMDIzQUZDNyAvKiBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZTdHJlYW1EYXRh
UGFyc2VyTUlNRVR5cGVDYWNoZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Qx
MjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU2Myw4ICsxNjU2NCw3IEBACiAJCUZEMzE2
MDc4MTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFZlY3Rvck1hdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRDMxNjA3OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZWN0b3JNYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZEMzE2MEI1MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1ZGlvQnVzTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyog
QXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVk
aW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkQzMTYwQjgxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1h
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb0ZpbGVSZWFk
ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNjBCOTEyQjAyNzJB
MDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEF1ZGlvRmlsZVJlYWRlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRDMxNjBCQTEyQjAyNzJBMDBDMUEzNTkgLyogRkZURnJhbWVNYWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRkZURnJhbWVNYWMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjczMDIsMTAgKzI3MzAyLDkgQEAKIAkJQ0QwRUVFMEQxNDc0
M0U0ODAwM0VBRkEyIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25J
T1MuY3BwICovLAotCQkJCUNEMEVFRTBBMTQ3NDNFMzQwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0
aW9uSU9TLmggKi8sCiAJCQkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJl
YWRlcklPUy5jcHAgKi8sCiAJCQkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmls
ZVJlYWRlcklPUy5oICovLAorCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCAqLywKIAkJCQlDREE3OTgyNTE3MEEyNzkwMDBENDVDNTUg
LyogQXVkaW9TZXNzaW9uSU9TLm1tICovLAogCQkJCUNEODc1QTc0MjQxMUI3OTgwMEIwOUY1OCAv
KiBNZWRpYVNlc3Npb25IZWxwZXJJT1MuaCAqLywKIAkJCQlDRDg3NUE3NTI0MTFCNzk4MDBCMDlG
NTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICovLApAQCAtMjczNzAsNiArMjczNjksOCBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDEzMTUxODQyMzU3NzQ1RTAwMTE1RTZFIC8qIEF1ZGlv
RGVzdGluYXRpb25Db2NvYS5jcHAgKi8sCiAJCQkJNDEzMTUxODYyMzU3NzQ1RTAwMTE1RTZFIC8q
IEF1ZGlvRGVzdGluYXRpb25Db2NvYS5oICovLAorCQkJCTFEQjY2RDM4MjUzNjc4RUEwMEI2NzFC
OSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcCAqLywKKwkJCQkxREI2NkQzNzI1MzY3OEVB
MDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oICovLAogCQkJCTA3M0I4NzYyMUU0
Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwICovLAogCQkJCTA3M0I4
NzYzMUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCAqLywKIAkJCQkw
NzNCODc2NTFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmggKi8sCkBA
IC0zMDI4MSwxMiArMzAyODIsMTEgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJRkQzMTYwQjUxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvQnVzTWFjLm1tICovLAot
CQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCAq
LywKLQkJCQlGRDMxNjBCNzEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5o
ICovLAogCQkJCUZEMzE2MEI4MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwICovLAogCQkJCUZEMzE2MEI5MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJN
YWMuaCAqLywKIAkJCQlDRDJGNEEyNTE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxp
c3RlbmVyTWFjLmNwcCAqLywKIAkJCQlDRDJGNEEyNjE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9I
YXJkd2FyZUxpc3RlbmVyTWFjLmggKi8sCisJCQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8q
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwICovLAogCQkJCUNENTRERTQ5MTc0NjlDNkQw
MDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMubW0gKi8sCiAJCQkJRkQzMTYwQkExMkIwMjcyQTAw
QzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLywKIAkJCSk7CkBAIC0zMDU2Nyw3ICszMDU2Nyw2
IEBACiAJCQkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA3RjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EZXN0
aW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5QzQyM0ZFNEJEMjAwOENBNzUxIC8q
IEF1ZGlvRGVzdGluYXRpb25Db2NvYS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkQzMTYwQkQxMkIw
MjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEMzE2MDA4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQzMTYwODAxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQS2VybmVs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4MjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzA1ODMsNiArMzA1ODIsNyBA
QAogCQkJCUZEMzE2MDE2MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGVJbnB1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTcxNDY3QjMyNEFCQUVGMjAwRkIyRjUwIC8qIEF1ZGlvTm9kZU9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDE4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRp
b05vZGVPdXRwdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFEQjY2RDNCMjUzN0E5NTYwMEI2NzFC
OSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAx
RDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9QYXJhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM3
NTY5OUUyNTJDRjM2MjAwRTFCOTU2IC8qIEF1ZGlvUGFyYW1EZXNjcmlwdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4M0I5ODcwQzI1MjI1RjgzMDBBOTM5RjEgLyogQXVkaW9QYXJhbU1hcC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zNTI0NCw4ICszNTI0NCw4IEBACiAJCQlmaWxlcyA9ICgKIAkJCQlB
OTc4N0NCNDFGNUY1QzY2MDBDNTUxQzYgLyogQWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMxRjdCNzMxMjQ0OEYyQUMwMDEyNDU1NyAvKiBBR1hDb21waWxl
clNlcnZpY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEy
IC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1NTk2OTEx
NDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklP
Uy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREE3OTgyNzE3MEEyNzkxMDBENDVDNTUgLyogQXVk
aW9TZXNzaW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q4QTdCQkIxOTc3MzVGRTAwQ0JE
NjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RFM0E4NTcxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbi5oCmluZGV4IDE2MGM2NTc4ZTE1ZWQ1ZWE3NTI1ZGM3NjhiZDRlZjNmZGM3NGY0
ZmYuLjQxOTY1NTJkOTE1YTg5YjRhMDVmODQ3NjRkNWZlYWMwNTY2MjQ5NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgKQEAgLTU2LDcg
KzU2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2FtcGxlLXJhdGUgY29udmVyc2lvbiBtYXkgaGFw
cGVuIGluIEF1ZGlvRGVzdGluYXRpb24gdG8gdGhlIGhhcmR3YXJlIHNhbXBsZS1yYXRlCiAgICAg
dmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOwotICAgIHN0YXRpYyBmbG9hdCBo
YXJkd2FyZVNhbXBsZVJhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgZmxvYXQgaGFy
ZHdhcmVTYW1wbGVSYXRlKCk7CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZl
cigpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggMWQwZjRlMjg4
MTE4N2U3YjM1MDI5MGIwMjMzY2I4YjBjMjFhZjRlNi4uNzBkZDkyNDNlM2U1MWU1MDQxNDVjMjI2
YzAxMDc3YTMwNzEwM2E0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC0zNSw2ICsz
NSwxMCBAQAogI2luY2x1ZGUgIk11bHRpQ2hhbm5lbFJlc2FtcGxlci5oIgogI2luY2x1ZGUgIlB1
c2hQdWxsRklGTy5oIgogCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIlZlY3Rvck1hdGgu
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0ZXhwciBzaXplX3QgZmlm
b1NpemUgPSA5NiAqIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZTsKQEAgLTU2LDcg
KzYwLDYgQEAgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShB
dWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdAogICAgICAgICByZXR1cm4gQXVkaW9EZXN0
aW5hdGlvbkNvY29hOjpjcmVhdGVPdmVycmlkZShjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiAKICAg
ICBhdXRvIGRlc3RpbmF0aW9uID0gYWRvcHRSZWYoKm5ldyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2Eo
Y2FsbGJhY2ssIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKTsKLSAgICBkZXN0
aW5hdGlvbi0+Y29uZmlndXJlKCk7CiAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwogfQogCkBAIC03
MCwxNSArNzMsMTYgQEAgdW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVs
Q291bnQoKQogICAgIHJldHVybiBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5tYXhpbXVt
TnVtYmVyT2ZPdXRwdXRDaGFubmVscygpOwogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OkF1
ZGlvRGVzdGluYXRpb25Db2NvYShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQotICAgIDogbV9vdXRwdXRV
bml0KDApCitBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OkF1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRp
b0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBm
bG9hdCBzYW1wbGVSYXRlLCBib29sIGNvbmZpZ3VyZUF1ZGlvT3V0cHV0VW5pdCkKKyAgICA6IG1f
YXVkaW9PdXRwdXRVbml0QWRhcHRvcigqdGhpcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2sp
CiAgICAgLCBtX291dHB1dEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25O
dWxsKCkpCiAgICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSkucmVsZWFzZU5vbk51
bGwoKSkKICAgICAsIG1fZmlmbyhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4obnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgZmlmb1NpemUpKQogICAgICwgbV9jb250ZXh0U2FtcGxlUmF0ZShzYW1w
bGVSYXRlKQogewotICAgIGNvbmZpZ3VyZSgpOworICAgIGlmIChjb25maWd1cmVBdWRpb091dHB1
dFVuaXQpCisgICAgICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUoaGFyZHdh
cmVTYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgYXV0byBoYXJk
d2FyZVNhbXBsZVJhdGUgPSB0aGlzLT5oYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBpZiAoc2Ft
cGxlUmF0ZSAhPSBoYXJkd2FyZVNhbXBsZVJhdGUpIHsKQEAgLTg3LDExICs5MSw3IEBAIEF1ZGlv
RGVzdGluYXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYg
Y2FsbGJhY2ssIHVuc2lnbmVkCiAgICAgfQogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EoKQotewotICAgIGlmIChtX291dHB1dFVuaXQpCi0gICAgICAg
IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Ci19CitBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKSA9IGRlZmF1bHQ7CiAKIHVu
c2lnbmVkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNv
bnN0CiB7CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0
YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFQKIHsKICAg
ICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAgbV9kaXNw
YXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKTsKLSAg
ICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVuaXQpOwor
ICAgIE9TU3RhdHVzIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFydCgpOwog
CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHNldElzUGxheWluZyh0cnVlKTsKQEAgLTExNiw3
ICsxMTYsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rpb248dm9p
ZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVAogdm9pZCBBdWRpb0Rlc3RpbmF0aW9u
Q29jb2E6OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6
c3RvcCIpOwotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9vdXRw
dXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iu
c3RvcCgpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAKICAgICBp
ZiAoIXJlc3VsdCkKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2suaXNQbGF5aW5n
RGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzdHJlYW1G
b3JtYXQpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Z2V0QXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0KQogewog
ICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwogICAgIGNvbnN0
IGludCBiaXRzUGVyQnl0ZSA9IDg7CkBAIC0xNTcsMTAgKzE1NywxNSBAQCBzdGF0aWMgdm9pZCBh
c3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhBdWRpb0J1ZmZlciogYnVmZmVycywgQXVkaW9CdXMmIGJ1
cywgVUludDMyCiAgICAgfQogfQogCitib29sIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6aGFzRW5v
dWdoRnJhbWVzKFVJbnQzMiBudW1iZXJPZkZyYW1lcykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9m
aWZvLT5sZW5ndGgoKSA+PSBudW1iZXJPZkZyYW1lczsKK30KKwogLy8gUHVsbHMgb24gb3VyIHBy
b3ZpZGVyIHRvIGdldCByZW5kZXJlZCBhdWRpbyBzdHJlYW0uCiBPU1N0YXR1cyBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50
MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQogewotICAgIGlmICht
X2ZpZm8tPmxlbmd0aCgpIDwgbnVtYmVyT2ZGcmFtZXMpCisgICAgaWYgKCFoYXNFbm91Z2hGcmFt
ZXMobnVtYmVyT2ZGcmFtZXMpKQogICAgICAgICByZXR1cm4gbm9FcnI7CiAKICAgICBpZiAodGlt
ZXN0YW1wKSB7CkBAIC0xNzIsNyArMTc3LDcgQEAgT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNv
Y29hOjpyZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUludDMyIG4KICAg
ICAgICAgbV9vdXRwdXRUaW1lc3RhbXAgPSBBdWRpb0lPUG9zaXRpb24geyB9OwogCiAgICAgYXV0
byogYnVmZmVycyA9IGlvRGF0YS0+bUJ1ZmZlcnM7Ci0gICAgVUludDMyIG51bWJlck9mQnVmZmVy
cyA9IGlvRGF0YS0+bU51bWJlckJ1ZmZlcnM7CisgICAgYXV0byBudW1iZXJPZkJ1ZmZlcnMgPSBp
b0RhdGEtPm1OdW1iZXJCdWZmZXJzOwogCiAgICAgLy8gQXNzb2NpYXRlIHRoZSBkZXN0aW5hdGlv
biBkYXRhIGFycmF5IHdpdGggdGhlIG91dHB1dCBidXMgdGhlbiBmaWxsIHRoZSBGSUZPLgogICAg
IGFzc2lnbkF1ZGlvQnVmZmVyc1RvQnVzKGJ1ZmZlcnMsIG1fb3V0cHV0QnVzLmdldCgpLCBudW1i
ZXJPZkJ1ZmZlcnMsIG51bWJlck9mRnJhbWVzLCAwLCBudW1iZXJPZkZyYW1lcyk7CkBAIC0yMTAs
MTMgKzIxNSw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJPblJlbmRlcmlu
Z1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8vIERlZmF1bHRPdXRw
dXRVbml0IGNhbGxiYWNrCi1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJv
Yyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRp
b1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUludDMyIG51bWJl
ck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBhdXRvKiBhdWRpb091
dHB1dCA9IHN0YXRpY19jYXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVzZXJEYXRhKTsKLSAg
ICByZXR1cm4gYXVkaW9PdXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9mRnJhbWVzLCBp
b0RhdGEpOwotfQotCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlkZUlucHV0KEF1
ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChmcmFtZXNUb1Byb2Nlc3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0aWxpdGllczo6cmVu
ZGVyUXVhbnR1bVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAwODk0ZDYyMWEyZjE1
MzIyNTEyNzM2NTBiNmU1YTNkM2VjOTk2ZjhhLi5hODdhZDNlODc5ZDk3OWUzYTNhOWVkNTUyMjU5
ZjlmNjUwZDRjNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgogI2luY2x1ZGUgIkF1ZGlvSU9DYWxsYmFj
ay5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCIKICNpbmNsdWRlICJBdWRp
b1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQzLDQ3ICs0NCwzOSBAQCBjbGFzcyBQdXNoUHVsbEZJ
Rk87CiB1c2luZyBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSA9IFJlZjxBdWRp
b0Rlc3RpbmF0aW9uPigqKShBdWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
Ly8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0IG91dHB1dCBB
dWRpb1VuaXQKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25Db2NvYSA6IHB1YmxpYyBBdWRpb0Rlc3Rp
bmF0aW9uLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CitjbGFzcyBBdWRpb0Rlc3RpbmF0
aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlvVW5pdFJlbmRl
cmVyLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0gICAgQXVkaW9EZXN0
aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOwotICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25D
b2NvYSgpOworICAgIFdFQkNPUkVfRVhQT1JUIEF1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRpb0lP
Q2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlLCBib29sIGNvbmZpZ3VyZUF1ZGlvT3V0cHV0VW5pdCA9IHRydWUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25Db2NvYSgpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIENyZWF0ZUF1ZGlvRGVzdGluYXRpb25Db2NvYU92ZXJyaWRlIGNyZWF0ZU92
ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNFbm91Z2hGcmFtZXMoVUludDMyIG51bWJlck9mRnJhbWVz
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9U
aW1lU3RhbXAqLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRh
KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVuZGVyT25SZW5kZXJp
bmdUaGVhZChzaXplX3QgZnJhbWVzVG9SZW5kZXIpOwogCi0gICAgYm9vbCBpc1BsYXlpbmcoKSBm
aW5hbCB7IHJldHVybiBtX2lzUGxheWluZzsgfQorICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJvb2wp
OworICAgIGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0K
ICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0U2Ft
cGxlUmF0ZTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IGZpbmFsOwot
ICAgIEF1ZGlvVW5pdCYgb3V0cHV0VW5pdCgpIHsgcmV0dXJuIG1fb3V0cHV0VW5pdDsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IGZpbmFsOwog
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0OwotICAgIAotICAg
IC8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi0gICAgc3RhdGljIE9TU3RhdHVzIGlucHV0
UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBB
dWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywg
QXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwogCi0gICAgdm9pZCBzZXRBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uJik7CiAKICAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+
IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZDsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgUmVmPEF1
ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2sm
LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKKwogICAgIHZvaWQg
c3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcmVuZGVyT25SZW5kZXJpbmdUaGVh
ZChzaXplX3QgZnJhbWVzVG9SZW5kZXIpOwotCi0gICAgZnJpZW5kIFJlZjxBdWRpb0Rlc3RpbmF0
aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29uc3QgU3Ry
aW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBmbG9hdCk7Ci0gICAgCiAgICAgLy8gQXVkaW9Tb3Vy
Y2VQcm92aWRlci4KLSAgICB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpIGZpbmFsOwotCi0gICAgdm9pZCBjb25maWd1cmUoKTsKLSAgICB2b2lkIHBy
b2Nlc3NCdXNBZnRlclJlbmRlcihBdWRpb0J1cyYsIFVJbnQzMiBudW1iZXJPZkZyYW1lcyk7Ci0K
LSAgICBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIgbnVtYmVy
T2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFs
OwogCi0gICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKKyAgICBBdWRpb091dHB1dFVuaXRBZGFw
dG9yIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcjsKICAgICBBdWRpb0lPQ2FsbGJhY2smIG1fY2Fs
bGJhY2s7CiAKICAgICAvLyBUbyBwYXNzIHRoZSBkYXRhIGZyb20gRklGTyB0byB0aGUgYXVkaW8g
ZGV2aWNlIGNhbGxiYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
OTA2NjQ4M2EzMDMzY2YxMjFmZWMyYWZiYjNlNTg2ZjJjMmYxZTIzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRh
cHRvci5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJBdWRpb091dHB1dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VC
X0FVRElPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6
OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoQXVkaW9Vbml0UmVuZGVyZXImIHJlbmRlcmVyKQorICAg
IDogbV9vdXRwdXRVbml0KDApCisgICAgLCBtX2F1ZGlvVW5pdFJlbmRlcmVyKHJlbmRlcmVyKQor
eworfQorCitBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRVbml0QWRhcHRvcigp
Cit7CisgICAgaWYgKG1fb3V0cHV0VW5pdCkKKyAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5j
ZURpc3Bvc2UobV9vdXRwdXRVbml0KTsKK30KKworT1NTdGF0dXMgQXVkaW9PdXRwdXRVbml0QWRh
cHRvcjo6c3RhcnQoKQoreworICAgIHJldHVybiBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1
dFVuaXQpOworfQorCitPU1N0YXR1cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKCkKK3sK
KyAgICByZXR1cm4gQXVkaW9PdXRwdXRVbml0U3RvcChtX291dHB1dFVuaXQpOworfQorCisvLyBE
ZWZhdWx0T3V0cHV0VW5pdCBjYWxsYmFjaworT1NTdGF0dXMgQXVkaW9PdXRwdXRVbml0QWRhcHRv
cjo6aW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyos
IGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1lc3RhbXAsIFVJbnQzMiAvKmJ1c051bWJlciovLCBV
SW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQoreworICAgIGF1
dG8qIGFkYXB0b3IgPSBzdGF0aWNfY2FzdDxBdWRpb091dHB1dFVuaXRBZGFwdG9yKj4odXNlckRh
dGEpOworICAgIHJldHVybiBhZGFwdG9yLT5tX2F1ZGlvVW5pdFJlbmRlcmVyLnJlbmRlcih0aW1l
c3RhbXAsIG51bWJlck9mRnJhbWVzLCBpb0RhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBiZjhhZWUzMzA3ZDEyMjlhYzEyOTE3YTVjNTMzMTg5NmE4MTkwYTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b091dHB1dFVuaXRBZGFwdG9yLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgPEF1ZGlvVW5pdC9B
dWRpb1VuaXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1VuaXRSZW5k
ZXJlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9Vbml0UmVuZGVyZXIoKSA9IGRlZmF1
bHQ7CisgICAgdmlydHVhbCBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBV
SW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKSA9IDA7Cit9Owor
CitjbGFzcyBBdWRpb091dHB1dFVuaXRBZGFwdG9yIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VY
UE9SVCBBdWRpb091dHB1dFVuaXRBZGFwdG9yKEF1ZGlvVW5pdFJlbmRlcmVyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgfkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoKTsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgc3RhcnQo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBPU1N0YXR1cyBzdG9wKCk7CisKK3ByaXZhdGU6CisgICAg
c3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVy
QWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJ
bnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOworCisgICAgQXVk
aW9Vbml0IG1fb3V0cHV0VW5pdDsKKyAgICBBdWRpb1VuaXRSZW5kZXJlciYgbV9hdWRpb1VuaXRS
ZW5kZXJlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGM0NzMzZGU3Zjc1ZGE5YWI2ZDA4N2EyMzFhZDhlYjk4MWRjNjg4OGYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTA5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQ
TEFURk9STShJT1NfRkFNSUxZKQotCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgi
Ci0KLSNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcu
aD4KLQotU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCi1TT0ZUX0xJTksoQXVkaW9U
b29sYm94LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1ZGlvQ29t
cG9uZW50IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uICppbkRl
c2MpLCAoaW5Db21wb25lbnQsIGluRGVzYykpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRp
b0NvbXBvbmVudEluc3RhbmNlTmV3LCBPU1N0YXR1cywgKEF1ZGlvQ29tcG9uZW50IGluQ29tcG9u
ZW50LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlICpvdXRJbnN0YW5jZSksIChpbkNvbXBvbmVudCwg
b3V0SW5zdGFuY2UpKQotU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRkUHJvcGVy
dHlMaXN0ZW5lciwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0
eUlEIGluSUQsIEF1ZGlvVW5pdFByb3BlcnR5TGlzdGVuZXJQcm9jIGluUHJvYywgdm9pZCAqaW5Q
cm9jVXNlckRhdGEpLCAoaW5Vbml0LCBpbklELCBpblByb2MsIGluUHJvY1VzZXJEYXRhKSkKLVNP
RlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1
ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUg
aW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIHZvaWQgKm91dERhdGEsIFVJbnQz
MiAqaW9EYXRhU2l6ZSksIChpblVuaXQsIGluSUQsIGluU2NvcGUsIGluRWxlbWVudCwgb3V0RGF0
YSwgaW9EYXRhU2l6ZSkpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJbml0aWFs
aXplLCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQpLCAoaW5Vbml0KSkKLVNPRlRfTElOSyhB
dWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBp
blVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5TY29wZSwg
QXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQsIGNvbnN0IHZvaWQgKmluRGF0YSwgVUludDMyIGlu
RGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1lbnQsIGluRGF0YSwgaW5E
YXRhU2l6ZSkpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9u
Q29jb2E6OmNvbmZpZ3VyZSgpCi17Ci0gICAgY29uc3QgaW50IGtQcmVmZXJyZWRCdWZmZXJTaXpl
ID0gMjU2OwotCi0gICAgLy8gT3BlbiBhbmQgaW5pdGlhbGl6ZSBEZWZhdWx0T3V0cHV0VW5pdAot
ICAgIEF1ZGlvQ29tcG9uZW50IGNvbXA7Ci0gICAgQXVkaW9Db21wb25lbnREZXNjcmlwdGlvbiBk
ZXNjOwotCi0gICAgZGVzYy5jb21wb25lbnRUeXBlID0ga0F1ZGlvVW5pdFR5cGVfT3V0cHV0Owot
ICAgIGRlc2MuY29tcG9uZW50U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX1JlbW90ZUlPOwot
ICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1cmVyID0ga0F1ZGlvVW5pdE1hbnVmYWN0dXJlcl9B
cHBsZTsKLSAgICBkZXNjLmNvbXBvbmVudEZsYWdzID0gMDsKLSAgICBkZXNjLmNvbXBvbmVudEZs
YWdzTWFzayA9IDA7Ci0gICAgY29tcCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQoMCwgJmRlc2Mp
OwotCi0gICAgQVNTRVJUKGNvbXApOwotCi0gICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9Db21w
b25lbnRJbnN0YW5jZU5ldyhjb21wLCAmb3V0cHV0VW5pdCgpKTsKLSAgICBBU1NFUlQoIXJlc3Vs
dCk7Ci0KLSAgICBVSW50MzIgZmxhZyA9IDE7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJv
cGVydHkob3V0cHV0VW5pdCgpLAotICAgICAgICBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfRW5h
YmxlSU8sCi0gICAgICAgIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsCi0gICAgICAgIDAsCi0gICAg
ICAgICZmbGFnLAotICAgICAgICBzaXplb2YoZmxhZykpOwotICAgIEFTU0VSVCghcmVzdWx0KTsK
LQotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdEluaXRpYWxpemUob3V0cHV0VW5pdCgpKTsKLSAgICBB
U1NFUlQoIXJlc3VsdCk7Ci0gICAgLy8gU2V0IHJlbmRlciBjYWxsYmFjawotICAgIEFVUmVuZGVy
Q2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7Ci0gICAgaW5wdXQuaW5wdXRQcm9jID0gaW5wdXRQcm9jOwot
ICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9IHRoaXM7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0
U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2Fs
bGJhY2ssIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgJmlucHV0LCBzaXplb2YoaW5wdXQpKTsK
LSAgICBBU1NFUlQoIXJlc3VsdCk7Ci0KLSAgICAvLyBTZXQgc3RyZWFtIGZvcm1hdAotICAgIEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7Ci0KLSAgICBVSW50MzIgc2l6
ZSA9IHNpemVvZihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOwotICAgIHJlc3VsdCA9IEF1
ZGlvVW5pdEdldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVh
bUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwgMCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQs
ICZzaXplKTsKLSAgICBBU1NFUlQoIXJlc3VsdCk7Ci0KLSAgICBzZXRBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKLQotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFBy
b3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1
ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIEF1
ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa1ByZWZl
cnJlZEJ1ZmZlclNpemUpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvY2Vz
c0J1c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiwgVUludDMyKQotewotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1Nf
RkFNSUxZKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU5NjMw
ZmI2MGYyMmIzZWU1NmQyNDJkNzMwNDM0ODZiODdiNTYyZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9T
LmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0LCAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
dWRpb091dHB1dFVuaXRBZGFwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSA8
d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoQXVkaW9Ub29sYm94KQor
U09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Db21wb25lbnRGaW5kTmV4dCwgQXVkaW9Db21w
b25lbnQsIChBdWRpb0NvbXBvbmVudCBpbkNvbXBvbmVudCwgY29uc3QgQXVkaW9Db21wb25lbnRE
ZXNjcmlwdGlvbiAqaW5EZXNjKSwgKGluQ29tcG9uZW50LCBpbkRlc2MpKQorU09GVF9MSU5LKEF1
ZGlvVG9vbGJveCwgQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldywgT1NTdGF0dXMsIChBdWRpb0Nv
bXBvbmVudCBpbkNvbXBvbmVudCwgQXVkaW9Db21wb25lbnRJbnN0YW5jZSAqb3V0SW5zdGFuY2Up
LCAoaW5Db21wb25lbnQsIG91dEluc3RhbmNlKSkKK1NPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1
ZGlvVW5pdEFkZFByb3BlcnR5TGlzdGVuZXIsIE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwg
QXVkaW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRQcm9wZXJ0eUxpc3RlbmVyUHJvYyBp
blByb2MsIHZvaWQgKmluUHJvY1VzZXJEYXRhKSwgKGluVW5pdCwgaW5JRCwgaW5Qcm9jLCBpblBy
b2NVc2VyRGF0YSkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRHZXRQcm9wZXJ0
eSwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlEIGluSUQs
IEF1ZGlvVW5pdFNjb3BlIGluU2NvcGUsIEF1ZGlvVW5pdEVsZW1lbnQgaW5FbGVtZW50LCB2b2lk
ICpvdXREYXRhLCBVSW50MzIgKmlvRGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBp
bkVsZW1lbnQsIG91dERhdGEsIGlvRGF0YVNpemUpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwg
QXVkaW9Vbml0SW5pdGlhbGl6ZSwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0KSwgKGluVW5p
dCkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb1VuaXRTZXRQcm9wZXJ0eSwgT1NTdGF0
dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5p
dFNjb3BlIGluU2NvcGUsIEF1ZGlvVW5pdEVsZW1lbnQgaW5FbGVtZW50LCBjb25zdCB2b2lkICpp
bkRhdGEsIFVJbnQzMiBpbkRhdGFTaXplKSwgKGluVW5pdCwgaW5JRCwgaW5TY29wZSwgaW5FbGVt
ZW50LCBpbkRhdGEsIGluRGF0YVNpemUpKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQg
QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6Y29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0
ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK3sKKyAgICBjb25zdCBpbnQga1By
ZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7CisKKyAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERl
ZmF1bHRPdXRwdXRVbml0CisgICAgQXVkaW9Db21wb25lbnQgY29tcDsKKyAgICBBdWRpb0NvbXBv
bmVudERlc2NyaXB0aW9uIGRlc2M7CisKKyAgICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9V
bml0VHlwZV9PdXRwdXQ7CisgICAgZGVzYy5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1
YlR5cGVfUmVtb3RlSU87CisgICAgZGVzYy5jb21wb25lbnRNYW51ZmFjdHVyZXIgPSBrQXVkaW9V
bml0TWFudWZhY3R1cmVyX0FwcGxlOworICAgIGRlc2MuY29tcG9uZW50RmxhZ3MgPSAwOworICAg
IGRlc2MuY29tcG9uZW50RmxhZ3NNYXNrID0gMDsKKyAgICBjb21wID0gQXVkaW9Db21wb25lbnRG
aW5kTmV4dCgwLCAmZGVzYyk7CisKKyAgICBBU1NFUlQoY29tcCk7CisKKyAgICBPU1N0YXR1cyBy
ZXN1bHQgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGNvbXAsICZtX291dHB1dFVuaXQpOwor
ICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIFVJbnQzMiBmbGFnID0gMTsKKyAgICByZXN1bHQg
PSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsCisgICAgICAgIGtBdWRpb091dHB1
dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKKyAgICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwK
KyAgICAgICAgMCwKKyAgICAgICAgJmZsYWcsCisgICAgICAgIHNpemVvZihmbGFnKSk7CisgICAg
QVNTRVJUKCFyZXN1bHQpOworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShtX291
dHB1dFVuaXQpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKyAgICAvLyBTZXQgcmVuZGVyIGNhbGxi
YWNrCisgICAgQVVSZW5kZXJDYWxsYmFja1N0cnVjdCBpbnB1dDsKKyAgICBpbnB1dC5pbnB1dFBy
b2MgPSBpbnB1dFByb2M7CisgICAgaW5wdXQuaW5wdXRQcm9jUmVmQ29uID0gdGhpczsKKyAgICBy
ZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9w
ZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQs
IHNpemVvZihpbnB1dCkpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIC8vIFNldCBzdHJl
YW0gZm9ybWF0CisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsK
KworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik7
CisgICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9V
bml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9p
ZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIGNv
bnN0ZXhwciBpbnQgYnl0ZXNQZXJGbG9hdCA9IHNpemVvZihGbG9hdDMyKTsKKyAgICBjb25zdGV4
cHIgaW50IGJpdHNQZXJCeXRlID0gODsKKyAgICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBo
YXJkd2FyZVNhbXBsZVJhdGU7CisgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zv
cm1hdExpbmVhclBDTTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9y
bWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVh
dmVkOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0Owor
ICAgIHN0cmVhbUZvcm1hdC5tRnJhbWVzUGVyUGFja2V0ID0gMTsKKyAgICBzdHJlYW1Gb3JtYXQu
bUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tQ2hhbm5l
bHNQZXJGcmFtZSA9IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CisgICAgc3RyZWFtRm9ybWF0Lm1C
aXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdDsKKworICAgIHJlc3Vs
dCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5
X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZv
cm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOworICAgIEFTU0VSVCgh
cmVzdWx0KTsKKworICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJl
ZEJ1ZmZlclNpemUoa1ByZWZlcnJlZEJ1ZmZlclNpemUpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcw
ZjljOWZmZjUxZjQ4M2I0NDA0MWEzNzcxZmI0MTg3YTdhZWRhN2MuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Db2NvYS5oIgotCi0j
aWYgRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiQXVkaW9C
dXMuaCIKLSNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCi0jaW5jbHVkZSA8Q29yZUF1ZGlvL0F1ZGlv
SGFyZHdhcmUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6Y29uZmlndXJlKCkKLXsKLSAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1
bHRPdXRwdXRVbml0Ci0gICAgQXVkaW9Db21wb25lbnQgY29tcDsKLSAgICBBdWRpb0NvbXBvbmVu
dERlc2NyaXB0aW9uIGRlc2M7Ci0KLSAgICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0
VHlwZV9PdXRwdXQ7Ci0gICAgZGVzYy5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5
cGVfRGVmYXVsdE91dHB1dDsKLSAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRp
b1VuaXRNYW51ZmFjdHVyZXJfQXBwbGU7Ci0gICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7Ci0g
ICAgZGVzYy5jb21wb25lbnRGbGFnc01hc2sgPSAwOwotICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVu
dEZpbmROZXh0KDAsICZkZXNjKTsKLQotICAgIEFTU0VSVChjb21wKTsKLQotICAgIE9TU3RhdHVz
IHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm91dHB1dFVuaXQoKSk7
Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6
ZShvdXRwdXRVbml0KCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIC8vIFNldCByZW5k
ZXIgY2FsbGJhY2sKLSAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0OwotICAgIGlucHV0
LmlucHV0UHJvYyA9IGlucHV0UHJvYzsKLSAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlz
OwotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlv
VW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCAw
LCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIC8v
IFNldCBzdHJlYW0gZm9ybWF0Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVh
bUZvcm1hdDsKLSAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0
KTsKLQotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1
ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAo
dm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikp
OwotICAgIEFTU0VSVCghcmVzdWx0KTsKLX0KLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnByb2Nlc3NCdXNBZnRlclJlbmRlcihBdWRpb0J1cyYgYnVzLCBVSW50MzIgbnVtYmVyT2ZGcmFt
ZXMpCi17Ci0gICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDBkYiAoaS5lLiwgWy0xLjAsIDEuMF0pCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkg
ewotICAgICAgICBhdXRvKiBjaGFubmVsID0gYnVzLmNoYW5uZWwoaSk7Ci0gICAgICAgIGlmICgh
Y2hhbm5lbC0+aXNTaWxlbnQoKSkKLSAgICAgICAgICAgIFZlY3Rvck1hdGg6OmNsYW1wKGNoYW5u
ZWwtPmRhdGEoKSwgLTEsIDEsIGNoYW5uZWwtPm11dGFibGVEYXRhKCksIG51bWJlck9mRnJhbWVz
KTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVESU8pICYmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOGVkM2VmNzhjOGM2YTNiMWUwNzBjYjQ0MDU5NjlhZGE0YWMzZGEyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
T3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykg
JiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlIDxDb3Jl
QXVkaW8vQXVkaW9IYXJkd2FyZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgQXVk
aW9PdXRwdXRVbml0QWRhcHRvcjo6Y29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK3sKKyAgICAvLyBPcGVuIGFuZCBpbml0
aWFsaXplIERlZmF1bHRPdXRwdXRVbml0CisgICAgQXVkaW9Db21wb25lbnQgY29tcDsKKyAgICBB
dWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7CisKKyAgICBkZXNjLmNvbXBvbmVudFR5cGUg
PSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7CisgICAgZGVzYy5jb21wb25lbnRTdWJUeXBlID0ga0F1
ZGlvVW5pdFN1YlR5cGVfRGVmYXVsdE91dHB1dDsKKyAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0
dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBwbGU7CisgICAgZGVzYy5jb21wb25lbnRG
bGFncyA9IDA7CisgICAgZGVzYy5jb21wb25lbnRGbGFnc01hc2sgPSAwOworICAgIGNvbXAgPSBB
dWRpb0NvbXBvbmVudEZpbmROZXh0KDAsICZkZXNjKTsKKworICAgIEFTU0VSVChjb21wKTsKKwor
ICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1f
b3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgcmVzdWx0ID0gQXVkaW9V
bml0SW5pdGlhbGl6ZShtX291dHB1dFVuaXQpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAg
IC8vIFNldCByZW5kZXIgY2FsbGJhY2sKKyAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0
OworICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0UHJvYzsKKyAgICBpbnB1dC5pbnB1dFByb2NS
ZWZDb24gPSB0aGlzOworICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0
VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2Nv
cGVfR2xvYmFsLCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOworICAgIEFTU0VSVCghcmVzdWx0
KTsKKworICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0CisgICAgY29uc3RleHByIGludCBieXRlc1Bl
ckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0c1BlckJ5dGUg
PSA4OworCisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAg
ICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBoYXJkd2FyZVNhbXBsZVJhdGU7CisgICAgc3Ry
ZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKKyAgICBzdHJlYW1G
b3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8
IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkOworICAgIHN0cmVhbUZvcm1hdC5tQnl0
ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tRnJhbWVzUGVy
UGFja2V0ID0gMTsKKyAgICBzdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZs
b2F0OworICAgIHN0cmVhbUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHM7CisgICAgc3RyZWFtRm9ybWF0Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRl
ICogYnl0ZXNQZXJGbG9hdDsKKworICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1f
b3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNj
b3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbikpOworICAgIEFTU0VSVCghcmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oTUFD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlv
RGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggNWExMmNkZTRmY2RmYzU3ZmFkNDJiN2Q5ZThmZTcz
MjA0MzUwOWQ3OC4uNWQyYmJmY2E0YWIzMmM2OTk4MmI3YzI1YmFlNzY4NmRmZjIzOTJhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rl
c3RpbmF0aW9uQ29jb2EuY3BwCkBAIC02OCwxMCArNjgsMTAgQEAgdm9pZCBNb2NrQXVkaW9EZXN0
aW5hdGlvbkNvY29hOjp0aWNrKCkKIHsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlKCksIG51bWJlck9mRnJhbWVzVG9Qcm9jZXNzID0gbV9u
dW1iZXJPZkZyYW1lc1RvUHJvY2Vzc10gewogICAgICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gc3RyZWFtRm9ybWF0OwotICAgICAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24oc3RyZWFtRm9ybWF0KTsKKyAgICAgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
KHN0cmVhbUZvcm1hdCk7CiAKICAgICAgICAgV2ViQXVkaW9CdWZmZXJMaXN0IHdlYkF1ZGlvQnVm
ZmVyTGlzdCB7IHN0cmVhbUZvcm1hdCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MgfTsKLSAgICAg
ICAgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjppbnB1dFByb2ModGhpcywgMCwgMCwgMCwgbnVtYmVy
T2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1ZGlvQnVmZmVyTGlzdC5saXN0KCkpOworICAgICAgICBy
ZW5kZXIoMCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1ZGlvQnVmZmVyTGlzdC5saXN0
KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRleCAy
N2YyYTY5OTZhYzk0MGNjZDg0NzkzNTk1NGU2ZDkxODRhM2QzM2QwLi5iYWNhZDljYTY4MDU1YjM1
ZmVkN2Q2ZWQ3ZjA2MzA2YzUyM2JjZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5j
cHAKQEAgLTI5LDExNiArMjksMTM4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgot
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvQnVzRGF0YS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9BdWRpb0J1cy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5h
dGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9BdWRpb1V0aWxpdGllcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFB1bGxGSUZP
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVk
ZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRp
b0J1cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgorI2VuZGlmCiAK
LS8vIFRoaXMgRklGTyBzaXplIG1hdGNoZXMgdG8gb25lIGluIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YS5jcHAgYW5kIHdhcyBpbXBvcnRlZCBmcm9tIEJsaW5rLgotY29uc3RleHByIHNpemVfdCBmaWZv
U2l6ZSA9IDk2ICogV2ViQ29yZTo6QXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOwor
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4sIHB1YmxpYyBX
ZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2sgeworY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgor
ICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9Vbml0UmVu
ZGVyZXIKKyNlbmRpZgorewogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6
QXVkaW9CdXM7Ci0gICAgdXNpbmcgQXVkaW9EZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb247Ci0gICAgdXNpbmcgU2hhcmVkQnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OwotCiAgICAgc3RhdGljIFJlZjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlk
LCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXRE
ZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJh
dGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24s
IGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbigpCiAgICAgewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCkpOwogICAgIH0KIAog
ICAgIHZvaWQgc2NoZWR1bGVHcmFjZWZ1bFNodXRkb3duSWZOZWVkZWQoKQogICAgIHsKLSAgICAg
ICAgaWYgKCFpc1BsYXlpbmcoKSkKKyAgICAgICAgaWYgKCFtX2lzUGxheWluZykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24g
PSB0aGlzOwotICAgICAgICBzdG9wKCk7CiAgICAgfQogCi0gICAgdm9pZCBzdGFydCgpIHsgbV9k
ZXN0aW5hdGlvbi0+c3RhcnQoeyB9KTsgfQotICAgIHZvaWQgc3RvcCgpIHsgbV9kZXN0aW5hdGlv
bi0+c3RvcCgpOyB9Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
LT5pc1BsYXlpbmcoKTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVzdGluYXRpb24tPmZyYW1lc1BlckJ1ZmZlcigpIDsgfQorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCisgICAg
eworICAgICAgICBtX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisKKyAgICAgICAgaWYgKGlw
Y0hhbmRsZS5oYW5kbGUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fcmluZ0J1ZmZlci0+ZGVh
bGxvY2F0ZSgpOworICAgICAgICAgICAgc3RvcmFnZSgpLnNldFJlYWRPbmx5KGZhbHNlKTsKKyAg
ICAgICAgICAgIHN0b3JhZ2UoKS5zZXRTdG9yYWdlKG51bGxwdHIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1h
cChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
KyAgICAgICAgc3RvcmFnZSgpLnNldFN0b3JhZ2UoV1RGTW92ZShtZW1vcnkpKTsKKyAgICAgICAg
c3RvcmFnZSgpLnNldFJlYWRPbmx5KHRydWUpOworCisgICAgICAgIG1fcmluZ0J1ZmZlci0+YWxs
b2NhdGUoZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKKyAgICB9CisjZW5kaWYKKworICAg
IHZvaWQgc3RhcnQoKQorICAgIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iuc3RhcnQoKTsKKyAgICAgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgICAgICBtX2lzUGxheWluZyA9IHRydWU7CisjZW5kaWYKKyAgICB9CisK
KyAgICB2b2lkIHN0b3AoKQorICAgIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgYXV0
byByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iuc3RvcCgpOworICAgICAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CisjZW5kaWYKKyAgICB9
CisKKyAgICBib29sIGlzUGxheWluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CiAK
IHByaXZhdGU6Ci0gICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbihHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW9uLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5w
dXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxl
UmF0ZSkKKyAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
LCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpCiAgICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5l
Y3Rpb24pCiAgICAgICAgICwgbV9pZChpZGVudGlmaWVyKQotICAgICAgICAsIG1fZGVzdGluYXRp
b24oQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBpbnB1dERldmljZUlkLCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKQotICAg
ICAgICAsIG1fZmlmbyhudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmaWZvU2l6ZSkKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICAgICAgLCBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoKnRoaXMpCisg
ICAgICAgICwgbV9yaW5nQnVmZmVyKG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVy
PihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihudWxscHRyKSkpCisjZW5k
aWYKKyAgICAgICAgLy8gLCBtX2NvbnRleHRTYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAgewor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY29u
ZmlndXJlKGhhcmR3YXJlU2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisjZW5k
aWYKICAgICB9CiAKLSAgICB2b2lkIHJlbmRlcihBdWRpb0J1cyosIEF1ZGlvQnVzKiBkZXN0aW5h
dGlvbkJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcywgY29uc3QgV2ViQ29yZTo6QXVkaW9JT1Bv
c2l0aW9uJiBvdXRwdXRQb3NpdGlvbikgb3ZlcnJpZGUKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZSYgc3RvcmFnZSgpCiAgICAgewotICAgICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAgICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dy
YWNlZnVsU2h1dGRvd24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgewotICAgICAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2ZpZm9Mb2NrKTsKLSAgICAgICAgICAgIGZy
YW1lc1RvUHJvY2VzcyA9IG1fZmlmby5wdWxsKGRlc3RpbmF0aW9uQnVzLCBmcmFtZXNUb1Byb2Nl
c3MpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghZnJhbWVzVG9Qcm9jZXNzKQotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2UmPihtX3JpbmdCdWZmZXItPnN0b3JhZ2UoKSk7CisgICAgfQogCi0gICAgICAgIFZlY3Rv
cjxSZWY8U2hhcmVkTWVtb3J5Pj4gYnVmZmVyczsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGRlc3RpbmF0aW9uQnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkgewotICAgICAg
ICAgICAgYXV0byBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemVvZihmbG9hdCkg
KiBmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICAgICAgYnVmZmVycy5hcHBlbmQoKm1lbW9yeSk7
Ci0gICAgICAgIH0KKyAgICBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRp
bWVzdGFtcCwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkK
KyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSh0aW1lc3RhbXApOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBJdCBpcyB1bmZvcnR1bmF0ZSB3ZSBoYXZlIHRvIGRpc3BhdGNoIHRvIHRoZSBtYWluIHRo
ZWFkIGhlcmUuIFdlIHNob3VsZCBiZSBhYmxlIHRvIElQQyBzdHJhaWdodCBmcm9tIHRoZQogICAg
ICAgICAvLyByZW5kZXIgdGhyZWFkIGJ1dCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgc2VuZFdp
dGhBc3luY1JlcGx5KCkuCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVzVG9Qcm9jZXNzLCBvdXRwdXRQb3NpdGlvbiwg
YnVmZmVycyA9IFdURk1vdmUoYnVmZmVycyldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBSZW1v
dGVBdWRpb0J1c0RhdGEgYnVzRGF0YSB7IGZyYW1lc1RvUHJvY2Vzcywgb3V0cHV0UG9zaXRpb24s
IGJ1ZmZlcnMubWFwKFtdKGF1dG8mIG1lbW9yeSkgeyByZXR1cm4gbWVtb3J5LmNvcHlSZWYoKTsg
fSkgfTsKLSAgICAgICAgICAgIEFTU0VSVChmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICAgICAg
bV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVuZGVyQnVmZmVyKGJ1c0RhdGEpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGJ1ZmZlcnMgPSBXVEZNb3Zl
KGJ1ZmZlcnMpLCBmcmFtZXNUb1Byb2Nlc3NdKCkgewotICAgICAgICAgICAgICAgIGF1dG8gYXVk
aW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGJ1ZmZlcnMuc2l6ZSgpLCBmcmFtZXNUb1Byb2Nlc3Ms
IGZhbHNlKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVy
cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgYXVkaW9CdXMtPnNldENoYW5uZWxN
ZW1vcnkoaSwgc3RhdGljX2Nhc3Q8ZmxvYXQqPihidWZmZXJzW2ldLT5kYXRhKCkpLCBmcmFtZXNU
b1Byb2Nlc3MpOwotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9maWZv
TG9jayk7Ci0gICAgICAgICAgICAgICAgbV9maWZvLnB1c2goYXVkaW9CdXMuZ2V0KCkpOworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIG51bWJlck9mRnJhbWVzLCBpb0RhdGFdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX2Nv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZXF1ZXN0QnVmZmVyKG51bWJlck9mRnJhbWVzKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpb0RhdGFdKGF1dG8g
c3RhcnRGcmFtZSwgYXV0byBudW1iZXJPZkZyYW1lc1RvUmVuZGVyLCBhdXRvIGJvdW5kc1N0YXJ0
RnJhbWUsIGF1dG8gYm91bmRzRW5kRnJhbWUpIG11dGFibGUgeworICAgICAgICAgICAgICAgIG1f
cmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1lQm91bmRzKGJvdW5kc1N0YXJ0RnJhbWUsIGJvdW5k
c0VuZEZyYW1lKTsKKyAgICAgICAgICAgICAgICBtX3JpbmdCdWZmZXItPmZldGNoKGlvRGF0YSwg
bnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwgc3RhcnRGcmFtZSk7CiAgICAgICAgICAgICB9LCBtX2lk
LnRvVUludDY0KCkpOwogICAgICAgICB9KTsKLSAgICB9CiAKLSAgICB2b2lkIGlzUGxheWluZ0Rp
ZENoYW5nZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmlu
Z0dyYWNlZnVsU2h1dGRvd24pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Rlc3Rp
bmF0aW9uLT5pc1BsYXlpbmcoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWZDb3Vu
dCgpID09IDEpOwotICAgICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRv
d24gPSBudWxscHRyOyAvLyBEZWxldGVzICJ0aGlzIi4KLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGlzUGxheWluZyA9IG1fZGVzdGluYXRpb24tPmlzUGxheWluZygpLCBp
ZGVudGlmaWVyID0gbV9pZC50b1VJbnQ2NCgpXSB7Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24u
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6
RGlkQ2hhbmdlSXNQbGF5aW5nKGlzUGxheWluZyksIGlkZW50aWZpZXIpOwotICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuIG5vRXJyOwogICAgIH0KKyNlbmRpZgogCiAgICAgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyIG1faWQ7Ci0gICAgUmVmUHRyPEF1ZGlvRGVzdGluYXRpb24+IG1fZGVzdGluYXRp
b247CiAgICAgUmVmUHRyPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+IG1fcHJvdGVjdFRoaXNEdXJp
bmdHcmFjZWZ1bFNodXRkb3duOwotICAgIExvY2sgbV9maWZvTG9jazsKLSAgICBXZWJDb3JlOjpQ
dXNoUHVsbEZJRk8gbV9maWZvOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2ViQ29yZTo6
QXVkaW9PdXRwdXRVbml0QWRhcHRvciBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3I7CisKKyAgICBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9kZXNjcmlwdGlvbjsKKyAgICBVbmlx
dWVSZWY8V2ViQ29yZTo6Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CisjZW5kaWYKKworICAg
IGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OwogfTsKIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24pCkBAIC0xNDgsMTQgKzE3MCwxMyBAQCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVj
dGlvblRvV2ViUAogCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyKCkgPSBkZWZhdWx0OwogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXRE
ZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLAotICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVkIGZyYW1lc1Bl
ckJ1ZmZlcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZp
Y2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUs
CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRp
Zmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBuZXdJRCA9IFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKTsKLSAgICBhdXRv
IGRlc3RpbmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7Ci0gICAgYXV0byBmcmFt
ZXNQZXJCdWZmZXIgPSBkZXN0aW5hdGlvbi0+ZnJhbWVzUGVyQnVmZmVyKCk7CisgICAgYXV0byBk
ZXN0aW5hdGlvbiA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MsIG5ld0lELCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0
ZSk7CiAgICAgbV9hdWRpb0Rlc3RpbmF0aW9ucy5hZGQobmV3SUQsIFdURk1vdmUoZGVzdGluYXRp
b24pKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCwgZnJhbWVzUGVyQnVmZmVyKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCk7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpAQCAtMTg2LDYgKzIwNywxNCBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzUGxheWluZyk7CiB9CiAKKyNpZiBQTEFURk9STShD
T0NPQSkKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmF1ZGlvU2FtcGxlc1N0
b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNIYW5kbGUsIGNvbnN0IFdlYkNvcmU6
OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzKQoreworICAgIGlmIChhdXRvKiBpdGVtID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5nZXQo
aWRlbnRpZmllcikpCisgICAgICAgIGl0ZW0tPmF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGlw
Y0hhbmRsZSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKaW5kZXggMTFiNGJlZjEw
NDFiN2EwOGFmM2IxYjA5ZGUzODRjMDNkNTg5M2QxZS4uZTIyYzEwYWNlOWE4ODU2ZjBjYjA4ODc3
MmJiMTQ1YmViZjE2MGZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKQEAgLTM0LDYg
KzM0LDEyIEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworfQorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpAQCAtNDYsMjUg
KzUyLDI1IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcihHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgflJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyKCk7CiAKLSAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVkIGZyYW1lc1Bl
ckJ1ZmZlcik+JiYpOwotICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzdG9wQXVk
aW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKLSAgICB7
Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNv
ZGVyKTsKLSAgICB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vz
cyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOwogCisgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5w
dXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBs
ZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50
aWZpZXIpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc3RvcEF1ZGlv
RGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYXVk
aW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOworI2VuZGlmCisKICAg
ICBIYXNoTWFwPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQXVk
aW9EZXN0aW5hdGlvbj4+IG1fYXVkaW9EZXN0aW5hdGlvbnM7CiAgICAgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogfTsKIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdDsKIAogI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBiYzA1YWUxMTc5YWEyYWQzNGUzMzM4NTMy
YmVkYjVlNmI0ZDQyM2EwLi4yYmM5ZWRjNzFiOTRlODY3OWNjMjBiNjJkODFhOTMyY2UzMTU1YjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0y
NCwxNCArMjQsMTQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVE
SU8pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyIE5vdFJlZkNv
dW50ZWQgewotCi0gICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJ
ZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSAtPiAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIpIFN5
bmNocm9ub3VzCi0KKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmlj
ZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkg
LT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikg
U3luY2hyb25vdXMKICAgICBEZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgQXN5bmMKIAogICAgIFN0
YXJ0QXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWluZykgU3luY2hyb25vdXMKICAgICBTdG9w
QXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
IGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWluZykgU3luY2hyb25vdXMKLQorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktpdDo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQorI2VuZGlmCiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMGVkYTE1YTM1ZmRiYTVjNzIyNDJjMTM4NThmNzM4YzRhYzZmOGEwZS4uNDk4MDgz
NmIwZWMzNzQzZjM0ZjFhMjVjMzAwNmNkNmRjZWE1NDczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDMwLDcgKzE0MzAsNiBAQAog
CQk5QjU0OTlCMjIzNjJBN0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lv
blJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
NTQ5OUIwMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVs
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlC
NUJFQzI2MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyNDI0MDBGNEE5MDA3MEM2
RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oICovOyB9OwogCQk5QjVCRUMyQTI0MDEwMTU4MDA3MEM2
RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi87IH07Ci0JCTlCNUJFQzMxMjQwMTAyMjIwMDcw
QzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1
ZGlvQnVzRGF0YS5oICovOyB9OwogCQk5RUM1MzJBMzI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9j
YXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5RUM1MzJBMjI0NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRpb25JZGVudGlmaWVy
LmggKi87IH07CiAJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRl
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1
RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExMDJBNzA4MUVDMEVFRTkw
MEQ4MUQ4MiAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiBpbiBD
b3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QTVFMzk0OTFENUJEOEE3MDBCNEI3Q0UgLyogY29tLm1hY3JvbWVkaWEuRmxhc2gg
UGxheWVyIEVTUi5wbHVnaW4uc2IgKi87IH07CkBAIC0yMTM5LDcgKzIxMzgsNiBAQAogCQkJCTJE
Qjk2MDUzMjM5ODg2QzEwMDEwMjc5MSAvKiBjb20uYXBwbGUuV2ViS2l0LkdQVS5zYiBpbiBDb3B5
RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREIxOTNBQzlGODAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJL
aXQuTmV0d29ya2luZy5zYiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREMxOTNBQzlGQjAw
NUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYiBpbiBDb3B5RmlsZXMgKi8s
Ci0JCQkJOUI1QkVDMzEyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oIGlu
IENvcHlGaWxlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTQ1NDIsNyArNDU0MCw2IEBACiAJCTlCNUJFQzI4MjQwMTAxNTgw
MDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlCNUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1QkVDMkUyNDAxMDE4QzAwNzBDNkVG
IC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTlCNUJFQzMwMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9CdXNEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCQzU5RDZDMUVGQ0NDQjYwMDFFOEQwOSAvKiBDYWxsYmFja0lELmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrSUQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUJDNTlENkQxRUZDREM2RDAwMUU4RDA5IC8qIE9wdGlvbmFsQ2FsbGJh
Y2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25hbENhbGxiYWNr
SUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUVDNTMyQTIyNDQ3RkJBRDAwMjE1
MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW9sb2NhdGlv
bklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1NTcsNyArNTU1
NCw2IEBACiAJCQkJMDc5MjMxMzEyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3QjFEMDRCMjNEMzhGQ0UwMDM5OUE2RSAvKiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCi0JCQkJOUI1QkVDMzAyNDAx
MDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovLAogCQkJCTlCNUJFQzI5MjQw
MTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwICovLAogCQkJ
CTlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHku
aCAqLywKIAkJCQk5QjVCRUMyRTI0MDEwMThDMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Lm1lc3NhZ2VzLmluICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDFmYzJmMGM2NjA2OTZhZTM0ODYxYzBiMjQ4MGFkMDU3ZmVhMTk2MDkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaAorKysgL2Rldi9udWxs
CkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBSZW1vdGVBdWRpb0J1c0RhdGEgewot
ICAgIHVpbnQ2NF90IGZyYW1lc1RvUHJvY2VzcyB7IDAgfTsKLSAgICBXZWJDb3JlOjpBdWRpb0lP
UG9zaXRpb24gb3V0cHV0UG9zaXRpb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiBj
aGFubmVsQnVmZmVyczsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+Ci0gICAgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGVuY29kZXIg
PDwgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBlbmNvZGVyIDw8IG91dHB1dFBvc2l0aW9uOwot
ICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjaGFubmVsQnVmZmVycy5z
aXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYW5uZWxCdWZmZXJzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7Ci0g
ICAgICAgICAgICBjaGFubmVsQnVmZmVyc1tpXS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwotICAgICAgICAgICAgZW5jb2RlciA8PCBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgY2hhbm5lbEJ1ZmZlcnNb
aV0tPnNpemUoKSB9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
RGVjb2Rlcj4KLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFJlbW90ZUF1ZGlvQnVzRGF0YSYgcmVzdWx0KQotICAgIHsKLSAgICAgICAg
dWludDY0X3QgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZy
YW1lc1RvUHJvY2VzcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3Vs
dC5mcmFtZXNUb1Byb2Nlc3MgPSBmcmFtZXNUb1Byb2Nlc3M7Ci0KLSAgICAgICAgV2ViQ29yZTo6
QXVkaW9JT1Bvc2l0aW9uIG91dHB1dFBvc2l0aW9uOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKG91dHB1dFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
cmVzdWx0Lm91dHB1dFBvc2l0aW9uID0gb3V0cHV0UG9zaXRpb247Ci0KLSAgICAgICAgdWludDY0
X3Qgc2l6ZSA9IDA7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKLSAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsK
LSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXV0byBtZW1vcnkgPSBTaGFyZWRN
ZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRXcml0ZSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxCdWZmZXJzLmFwcGVuZCht
ZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDg0MDRjNDhlMWMyZTQ4MmFiY2QyNGU1NWQyY2M5MTNi
ZDI2N2U3NDEuLmNlYTU3Yzc0ZjEzYzAwNmNmOWNmYzNhMjI4NTdmMmMzYjY5ZWQwNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKQEAgLTMwLDE2ICszMCwyMSBAQAogCiAj
aW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIu
aCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0J1cy5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5j
bHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkF1ZGlv
QnVmZmVyTGlzdC5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi11c2luZyBBdWRp
b0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOworLy8gQWxsb2NhdGUgYSByaW5nIGJ1ZmZlciBsYXJn
ZSBlbm91Z2ggdG8gY29udGFpbiAyIHNlY29uZHMgb2YgYXVkaW8uCitjb25zdGV4cHIgc2l6ZV90
IHJpbmdCdWZmZXJTaXplSW5TZWNvbmQgPSAyOworCiB1c2luZyBBdWRpb0Rlc3RpbmF0aW9uID0g
V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjsKIHVzaW5nIEF1ZGlvSU9DYWxsYmFjayA9IFdlYkNv
cmU6OkF1ZGlvSU9DYWxsYmFjazsKIApAQCAtNTAsMTYgKzU1LDE3IEBAIFJlZjxBdWRpb0Rlc3Rp
bmF0aW9uPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNyZWF0ZShBdWRpb0lPQ2FsbGJh
Y2smIGNhbGxiCiB9CiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5KEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYg
aW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQotICAgIDogbV9jYWxsYmFj
ayhjYWxsYmFjaykKLSAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIDogV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKGNhbGxiYWNrLCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBmYWxzZSkKKyAgICAsIG1fcmluZ0J1
ZmZlcihtYWtlVW5pcXVlPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZT4odGhpcykpKQorI2VuZGlmCiB7CiAgICAgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbklkZW50aWZpZXIgZGVzdGluYXRpb25JRDsKLSAgICB1bnNpZ25lZCBmcmFtZXNQ
ZXJCdWZmZXIgeyAwIH07CiAKICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBjb25uZWN0aW9uLmNv
bm5lY3Rpb24oKS5zZW5kU3luYygKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGlucHV0RGV2aWNlSWQsIG51bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSksCi0g
ICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVk
aW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25JRCwgZnJhbWVzUGVyQnVmZmVyKSwgMCk7
CisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRl
QXVkaW9EZXN0aW5hdGlvbihpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIGhhcmR3YXJlU2FtcGxlUmF0ZSgpKSwK
KyAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVB
dWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklEKSwgMCk7CiAKICAgICBhdXRvIG9m
ZlRocmVhZFJlbmRlcmluZyA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
KCkgbXV0YWJsZSB7CiAgICAgICAgIHdoaWxlICghbV90aHJlYWRUYXNrUXVldWUuaXNLaWxsZWQo
KSkgewpAQCAtNzIsNyArNzgsMTQgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmEKICAgICBjb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzLCBk
ZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwogCiAgICAgbV9kZXN0aW5hdGlvbklEID0gZGVzdGlu
YXRpb25JRDsKLSAgICBtX2ZyYW1lc1BlckJ1ZmZlciA9IGZyYW1lc1BlckJ1ZmZlcjsKKworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1G
b3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7
CisgICAgbV9udW1iZXJPZkZyYW1lcyA9IGhhcmR3YXJlU2FtcGxlUmF0ZSgpICogcmluZ0J1ZmZl
clNpemVJblNlY29uZDsKKyAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKHN0cmVhbUZvcm1hdCwg
bV9udW1iZXJPZkZyYW1lcyk7CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdl
YkF1ZGlvQnVmZmVyTGlzdD4oc3RyZWFtRm9ybWF0KTsKKyNlbmRpZgogfQogCiBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6On5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkoKQpAQCAtMTA1
LDE5ICsxMTgsMzcgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3AoKQog
ICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5OjpyZW5kZXJCdWZmZXIoY29uc3QgV2ViS2l0OjpSZW1vdGVB
dWRpb0J1c0RhdGEmIGF1ZGlvQnVzRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorI2lmIFBMQVRGT1JNKENPQ09BKQordm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHk6OnJlcXVlc3RCdWZmZXIodWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwotICAgIEFTU0VSVChhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICBBU1NFUlQo
YXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJzLnNpemUoKSk7Ci0gICAgYXV0byBhdWRpb0J1cyA9
IEF1ZGlvQnVzOjpjcmVhdGUoYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJzLnNpemUoKSwgYXVk
aW9CdXNEYXRhLmZyYW1lc1RvUHJvY2VzcywgZmFsc2UpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBhdWRpb0J1c0RhdGEuY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IGF1ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIChmbG9hdCopYXVkaW9CdXNEYXRhLmNoYW5u
ZWxCdWZmZXJzW2ldLT5kYXRhKCksIGF1ZGlvQnVzRGF0YS5mcmFtZXNUb1Byb2Nlc3MpOwotCi0g
ICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgYXVkaW9CdXMuZ2V0KCksIGF1ZGlvQnVzRGF0YS5mcmFt
ZXNUb1Byb2Nlc3MsIGF1ZGlvQnVzRGF0YS5vdXRwdXRQb3NpdGlvbik7Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKKworICAgIGlmICghaGFzRW5vdWdoRnJhbWVzKG51bWJlck9mRnJhbWVzKSkK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCwgMCwgMCwgMCk7CisKKyAgICBtX3JlbmRlckNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9hdWRp
b0J1ZmZlckxpc3QtPnNldFNhbXBsZUNvdW50KG51bWJlck9mRnJhbWVzKTsKKyAgICBBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6OnJlbmRlcihudWxscHRyLCBudW1iZXJPZkZyYW1lcywgbV9hdWRpb0J1
ZmZlckxpc3QtPmxpc3QoKSk7CiB9CiAKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
OjpyZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikKK3sKKyAgICBB
U1NFUlQobV9yZW5kZXJDb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBhdXRvIHN0YXJ0RnJhbWUg
PSBtX2N1cnJlbnRGcmFtZTsKKworICAgIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyT25S
ZW5kZXJpbmdUaGVhZChmcmFtZXNUb1JlbmRlcik7CisgICAgbV9jdXJyZW50RnJhbWUgKz0gZnJh
bWVzVG9SZW5kZXI7CisKKyAgICBtX3JpbmdCdWZmZXItPnN0b3JlKG1fYXVkaW9CdWZmZXJMaXN0
LT5saXN0KCksIGZyYW1lc1RvUmVuZGVyLCBzdGFydEZyYW1lKTsKKworICAgIHVpbnQ2NF90IGJv
dW5kc1N0YXJ0RnJhbWU7CisgICAgdWludDY0X3QgYm91bmRzRW5kRnJhbWU7CisgICAgbV9yaW5n
QnVmZmVyLT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoYm91bmRzU3RhcnRGcmFtZSwgYm91bmRzRW5k
RnJhbWUpOworICAgIG1fcmVuZGVyQ29tcGxldGlvbkhhbmRsZXIoc3RhcnRGcmFtZSwgZnJhbWVz
VG9SZW5kZXIsIGJvdW5kc1N0YXJ0RnJhbWUsIGJvdW5kc0VuZEZyYW1lKTsKK30KKyNlbmRpZgor
CiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hhbmdlSXNQbGF5aW5nKGJv
b2wgaXNQbGF5aW5nKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMTMzLDYg
KzE2NCwyOCBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlzcGF0Y2hUb1Ro
cmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKICAgICBtX3RocmVhZFRhc2tRdWV1ZS5hcHBl
bmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3ZvaWQgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3Jh
Z2UpCit7CisgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIGlmIChzdG9yYWdl
KQorICAgICAgICBzdG9yYWdlLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKKworICAgIC8vIEZJWE1FOiBTZW5kIHRoZSBhY3R1YWwgZGF0
YSBzaXplIHdpdGggSVBDSGFuZGxlLgorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAg
ICB1aW50NjRfdCBkYXRhU2l6ZSA9IGhhbmRsZS5zaXplKCk7CisjZWxzZQorICAgIHVpbnQ2NF90
IGRhdGFTaXplID0gMDsKKyNlbmRpZgorCisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
IHN0cmVhbUZvcm1hdDsKKyAgICBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFt
Rm9ybWF0KTsKKyAgICBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRp
b24oc3RyZWFtRm9ybWF0KTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCB7IG1fZGVz
dGluYXRpb25JRCwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRh
dGFTaXplIH0sIHN0cmVhbUZvcm1hdCwgbV9udW1iZXJPZkZyYW1lcyB9LCAwKTsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCmlu
ZGV4IGM0YWRiNzU2MGQ0NjM3NThlZTcxNTZmMDFlZWM5OTU4ZDNjZmRlNjYuLjJmNTgzMDAyM2Q0
NzVjM2E1NzI5N2U1ODQ3MzZlN2U3ZmM5ZDE1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkuaApAQCAtMjgsMjQgKzI4LDM3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlJl
bW90ZUF1ZGlvQnVzRGF0YS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxs
YmFjay5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CisjaW5jbHVkZSA8d3Rm
L01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSAiU2hh
cmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRp
b25Db2NvYS5oPgorI2Vsc2UKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4K
ICNlbmRpZgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDQVJpbmdCdWZmZXI7CitjbGFz
cyBXZWJBdWRpb0J1ZmZlckxpc3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyIHsKK2Ns
YXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYQorICAgICwgcHVibGljIFNo
YXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpDbGllbnQKKyNlbHNlCisgICAgOiBwdWJsaWMgV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbgorI2VuZGlmCisgICAgLCBwdWJsaWMgSVBDOjpDb25uZWN0aW9u
OjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSk7CiBwdWJsaWM6Ci0gICAgdXNpbmcgQXVkaW9CdXMgPSBX
ZWJDb3JlOjpBdWRpb0J1czsKICAgICB1c2luZyBBdWRpb0lPQ2FsbGJhY2sgPSBXZWJDb3JlOjpB
dWRpb0lPQ2FsbGJhY2s7CiAgICAgdXNpbmcgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6cmVm
OwogICAgIHVzaW5nIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmRlcmVmOwpAQCAtNTcsMTYg
KzcwLDI2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJv
Y2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlcikg
eyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQogCi0gICAgdm9pZCBy
ZW5kZXJCdWZmZXIoY29uc3QgV2ViS2l0OjpSZW1vdGVBdWRpb0J1c0RhdGEmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgcmVxdWVz
dEJ1ZmZlcih1aW50NjRfdCBudW1iZXJPZkZyYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCBzdGFydEZyYW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lc1RvUmVuZGVyLCB1aW50
NjRfdCBib3VuZHNTdGFydEZyYW1lLCB1aW50NjRfdCBib3VuZHNFbmRGcmFtZSk+JiYpOworI2Vu
ZGlmCisKICAgICB2b2lkIGRpZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxheWluZyk7CiAKIHBy
aXZhdGU6Ci0gICAgLy8gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbgotICAgIHZvaWQgc3RhcnQo
RnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJl
YWQpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNQbGF5
aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KLSAgICBmbG9hdCBzYW1wbGVS
YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Ci0gICAgdW5zaWdu
ZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZXNQZXJC
dWZmZXI7IH0KKyAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYm
KT4mJiBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5h
bDsKKyAgICBib29sIGlzUGxheWluZygpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisKKyNpZiAh
UExBVEZPUk0oQ09DT0EpCisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIDA7IH0KKyAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAwOyB9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgc3RvcmFn
ZUNoYW5nZWQoU2hhcmVkTWVtb3J5KikgZmluYWw7CisgICAgdm9pZCByZW5kZXJPblJlbmRlcmlu
Z1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcikgZmluYWw7CisjZW5kaWYKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTc2LDExICs5OSwxNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVmTWVzc2FnZVJlY2VpdmVyKCkgZmluYWwgeyBXZWJDb3JlOjpBdWRpb0Rl
c3RpbmF0aW9uOjpyZWYoKTsgfQogICAgIHZvaWQgZGVyZWZNZXNzYWdlUmVjZWl2ZXIoKSBmaW5h
bCB7IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmRlcmVmKCk7IH0KIAotICAgIEF1ZGlvSU9D
YWxsYmFjayYgbV9jYWxsYmFjazsKLSAgICBmbG9hdCBtX3NhbXBsZVJhdGUgeyAwLiB9OwotICAg
IHVuc2lnbmVkIG1fZnJhbWVzUGVyQnVmZmVyIHsgMCB9OwogICAgIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyIG1fZGVzdGluYXRpb25JRDsKICAgICBib29sIG1faXNQbGF5aW5nIHsg
ZmFsc2UgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZG
cmFtZXMgeyAwIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4g
bV9yaW5nQnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZl
ckxpc3Q+IG1fYXVkaW9CdWZmZXJMaXN0OworICAgIHVpbnQ2NF90IG1fY3VycmVudEZyYW1lIHsg
MCB9OworICAgIFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90
LCB1aW50NjRfdCk+IG1fcmVuZGVyQ29tcGxldGlvbkhhbmRsZXI7CisjZW5kaWYKKwogICAgIEZ1
bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFk
OwogICAgIFJlZlB0cjxUaHJlYWQ+IG1fcmVuZGVyVGhyZWFkOwogICAgIENyb3NzVGhyZWFkUXVl
dWU8RnVuY3Rpb248dm9pZCgpPj4gbV90aHJlYWRUYXNrUXVldWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGFlMWZjNzA2OTg3MTRjODcw
NWU1ODI0ODE5NDY1YmFiMzI2M2YwNjEuLjk3MGNmYjhhMTM1NTQxYjc5ZWM5NjEyYTAyYzE0YmUw
NjNkOGQxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yNCwxMCArMjQsMTAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJfQVVESU8pCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eSBOb3RSZWZDb3VudGVkIHsKLQotICAgIFJlbmRlckJ1ZmZlcihzdHJ1Y3QgV2ViS2l0OjpSZW1v
dGVBdWRpb0J1c0RhdGEgZGF0YSkgLT4gKCkgQXN5bmMKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBSZXF1ZXN0QnVmZmVyKHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKSAtPiAodWludDY0X3Qgc3Rh
cnRGcmFtZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwgdWludDY0X3QgYm91bmRz
U3RhcnRGcmFtZSwgdWludDY0X3QgYm91bmRzRW5kRnJhbWUpIEFzeW5jCisjZW5kaWYKICAgICBE
aWRDaGFuZ2VJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcpCi0KIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9B
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKaW5kZXggODc5OWYxOTg0NzE0MTFlYzZm
NzM5YTM4NzkzNjRkMjQ3NTEyZWE0NC4uMmUwYTZiMWY4MzkzMmFlODMzNWRmNGVhYTRlYjUzNWY4
NTg3MTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApAQCAt
OTAsNyArOTAsNyBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpwdXNoU2Ft
cGxlcyhjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFdlYgogCiAgICAgICAgIC8vIEFsbG9j
YXRlIGEgcmluZyBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gMiBzZWNvbmRzIG9mIGF1
ZGlvLgogICAgICAgICBtX251bWJlck9mRnJhbWVzID0gbV9kZXNjcmlwdGlvbi5zYW1wbGVSYXRl
KCkgKiAyOwotICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKG1fZGVzY3JpcHRpb24uc3Ry
ZWFtRGVzY3JpcHRpb24oKSwgbV9udW1iZXJPZkZyYW1lcyk7CisgICAgICAgIG1fcmluZ0J1ZmZl
ci0+YWxsb2NhdGUobV9kZXNjcmlwdGlvbiwgbV9udW1iZXJPZkZyYW1lcyk7CiAgICAgfQogCiAg
ICAgQVNTRVJUKGlzPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4oYXVkaW9EYXRhKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411536</attachid>
            <date>2020-10-15 23:13:32 -0700</date>
            <delta_ts>2020-10-16 15:00:48 -0700</delta_ts>
            <desc>WIP - almost done</desc>
            <filename>bug-217715-20201015231331.patch</filename>
            <type>text/plain</type>
            <size>91958</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwNDMxMzFkMjk4YWYz
NzAzODYyYmI4NjdiZWI3OTQ4YTdhZDhiZC4uYWEwOGMxZmM1MzBmYjE4OTFlMWFjODNhNWY3NDdi
N2VjMTI3M2Q4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTEwLTE1ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9j
ZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8g
ZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpnZXRBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpoYXNFbm91Z2hGcmFtZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0
aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6aW5wdXRQcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Db2NvYTo6b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjp+QXVkaW9PdXRwdXRVbml0QWRh
cHRvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpzdG9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFw
dG9yOjpjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb091dHB1
dFVuaXRBZGFwdG9yTWFjLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2spOgorCiAyMDIwLTEwLTE1ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBBdWRpb0NvbnRleHQtc3BlY2lmaWMg
bG9naWMgb3V0IG9mIEJhc2VBdWRpb0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGNkNjdmMThhZGE0YzA1
MDhkZDVjZDExNDc3ZWRkMTA1NWI0ZjBjYi4uYmRjZGQ3YmM0NzI5NzMzMzg2OTdkMmYyOTk3ZDJm
ODMyOWZjMzYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMC0xMC0xNSAgUGVuZyBM
aXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJvY2Vz
c10gVXNlIENBUmluZ0J1ZmZlciB0byB0cmFuc2ZlciBhdWRpbyBkYXRhIG9mIGFuIGF1ZGlvIGRl
c3RpbmF0aW9uIGZyb20gYSB3ZWIgcHJvY2VzcyB0byB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzcxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb246On5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6c2NoZWR1bGVHcmFjZWZ1bFNodXRkb3duSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjphdWRpb1NhbXBs
ZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6c3Rv
cCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmlzUGxheWluZyBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
OjpzdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6cmVu
ZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNy
ZWF0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6YXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjppc1BsYXlpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpmcmFtZXNQZXJCdWZmZXIgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvQnVzRGF0YS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5OjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eTo6c3RvcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6cmVxdWVzdEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6cmVuZGVyT25SZW5kZXJpbmdUaGVhZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnJlbmRlckJ1ZmZlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hh
bmdlSXNQbGF5aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnB1c2hTYW1w
bGVzKToKKwogMjAyMC0xMC0xNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW21hY09TXSBBZGQgdGVsZW1ldHJ5IGZvciBkaXN0cmlidXRlZCBub3RpZmlj
YXRpb24gc2VydmljZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IGM1NjcwYzM2NDg1NzVlODgwZWI2ODVlMGEz
YTEzNWMyOTI0Mzc1YmIuLmUzMjIzNzIzZDc3OGZlZTEzZjQ3MmM0ZDIxMTBlYzkzNmI4MGZhYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEF1
ZGlvRGVzdGluYXRpb25Ob2RlKEJhc2VBdWRpb0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5BdWRp
b0Rlc3RpbmF0aW9uTm9kZSgpOwogICAgIAotICAgIC8vIEF1ZGlvTm9kZSAgIAorICAgIC8vIEF1
ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QpIG92ZXJyaWRlIHsgfTsgLy8gd2UncmUg
cHVsbGVkIGJ5IGhhcmR3YXJlIHNvIHRoaXMgaXMgbmV2ZXIgY2FsbGVkCiAgICAgCiAgICAgLy8g
VGhlIGF1ZGlvIGhhcmR3YXJlIGNhbGxzIHJlbmRlcigpIHRvIGdldCB0aGUgbmV4dCByZW5kZXIg
cXVhbnR1bSBvZiBhdWRpbyBpbnRvIGRlc3RpbmF0aW9uQnVzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKaW5kZXggNjQxNDA1OTI1NDAxZTZlM2NkNWI2NmY5YTNmZjdjZDhkMDcxY2UwOC4uZWI0ZTE3
ZjJlNzM2ZWE4NjgxYzU2ZDIwMjUxNDkyNmI4ZGM5OTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CkBAIC0yMDMsMTkgKzIwMywyMCBAQCBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vz
c2lvbi5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAK
K3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3BwCiBwbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwCiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0NBUmluZ0J1ZmZl
ci5jcHAKIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQog
cGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcAotcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIEBuby11bmlmeQorcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9TZXNzaW9uSU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbkhlbHBlcklPUy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNl
c3Npb25NYW5hZ2VySU9TLm1tIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvQnVz
TWFjLm1tCi1wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKK3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcAogcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0hh
cmR3YXJlTGlzdGVuZXJNYWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFj
Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMWFjZjE0NDM5OTI0ODU4MTQ4ZGQyMGI5ZThkZTdhNTFlM2IyMmRjZS4uMWNjMGU1
ZWNmYmE1NDFlNWNmZTMxOWE1OTNkODkxOGVhMTA3ZmViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjMzLDYgKzYzMyw3IEBA
CiAJCTFEQUIzMTEyMjUxRDZCRjMwMEZDOTQ4NSAvKiBXZWJWaWRlb0NvbnRhaW5lckxheWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCMzFBMTIz
NzlEQzgzMDA4ODNGREUgLyogV2ViVmlkZW9Db250YWluZXJMYXllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFEQUIzMTE0MjUxRDcyNUMwMEZD
OTQ4NSAvKiBWaWRlb0xheWVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMURBQjMxMTMyNTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJN
YW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMURBQjMxMTUyNTFENzREQjAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExOEUxQzU0
NTkwMzAwREUzNEEzIC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFEQjY2RDNCMjUzN0E5NTYwMEI2NzFC
OSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxREI2NkQzNzI1MzY3OEVBMDBCNjcxQjkgLyogQXVkaW9PdXRw
dXRVbml0QWRhcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFEQkMxQjU2MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJlSW5QaWN0dXJlT2Jz
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFE
QkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxREQzQjRDNjI1
MURBMEI4MDA2OUIyNEEgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJENUExOEQxQzU0NTkwMzAwREUzNEEz
IC8qIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5tbSAqLzsgfTsKIAkJMURGN0U4MUYyNTFBOUUwNjAw
REI4RjYxIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREQxRTUyNTE2N0JBNTY0MDBDRTgyMEIgLyogVGV4
dFRyYWNrUmVwcmVzZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNDEyNyw3ICs0MTI4LDcgQEAKIAkJQ0NDMkI1MTYxNUY2MTMwNjAw
NDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENDQzJCNTEyMTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0QwNjNGODIxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwNjNGODAxRTIzRkE4
OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwICovOyB9OwogCQlDRDA2M0Y4MzFFMjNG
QTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwNjNGODExRTIzRkE4OTAwODEyQkUzIC8qIEluaXRE
YXRhUmVnaXN0cnkuaCAqLzsgfTsKLQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VBRkEyIC8qIEF1ZGlv
RGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1Mu
Y3BwICovOyB9OworCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0
QWRhcHRvcklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklP
Uy5jcHAgKi87IH07CiAJCUNEMTFCM0UxMjI3Q0U2RjMwMDIzQUZDNyAvKiBBVlN0cmVhbURhdGFQ
YXJzZXJNSU1FVHlwZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QxMUIzRTAyMjdDQUFBOTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNl
ck1JTUVUeXBlQ2FjaGUubW0gKi87IH07CiAJCUNEMTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBX
ZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QxMjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2Ny
ZWVuV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0QxN0E0NUQyMTM3NDA4MTAwNzlFQzdCIC8qIFVuaWZpZWRTb3VyY2U2Mi1tbS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMTdBNDU5MjEz
NzQwMTYwMDc5RUM3QiAvKiBVbmlmaWVkU291cmNlNjItbW0ubW0gKi87IH07CkBAIC01MzA0LDcg
KzUzMDUsNiBAQAogCQlGRDMxNjBBQjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVy
U3RhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
MzE2MDc1MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2ZXJTdGFnZS5oICovOyB9Owog
CQlGRDMxNjBBRDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiSW5wdXRCdWZmZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDc3MTJCMDI2Rjcw
MEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oICovOyB9OwogCQlGRDMxNjBBRjEyQjAyNkY3
MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkQzMTYwNzkxMkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguaCAq
LzsgfTsKLQkJRkQzMTYwQkQxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MEI3
MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi87IH07CiAJCUZEMzE2
MEJGMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MEI5MTJCMDI3MkEwMEMxQTM1
OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMuaCAqLzsgfTsKIAkJRkQzNTkxOTAxMzhEQjIyMDAwRTFF
QkVDIC8qIEF1ZGlvUGFyYW1UaW1lbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkQzNTkxOEUxMzhEQjIyMDAwRTFFQkVDIC8qIEF1ZGlvUGFyYW1U
aW1lbGluZS5oICovOyB9OwogCQlGRDQ1QTk0RjE3NUQzRjNFMDBDMjFFQzggLyogU2hhcGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDhBODdGMTc1
RDM5MjYwMDJDRDM2MCAvKiBTaGFwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC02NzU0LDYgKzY3NTQsOCBAQAogCQkxRDAwMjZBOTIzNzRGOUQ5
MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUQyQzgyQjYyMzZBM0Y2QTAwNTVENkM1
IC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBpY3R1cmVJblBp
Y3R1cmVTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQUIzMTEzMjUx
RDcyNUMwMEZDOTQ4NSAvKiBWaWRlb0xheWVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRl
b0xheWVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxREI2NkQzNzI1
MzY3OEVBMDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFEQjY2RDM4MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxREJDMUI1NTIzNDdCM0QyMDBCOTAxQUYgLyogUGljdHVyZUlu
UGljdHVyZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBpY3R1cmVJblBpY3R1cmVPYnNlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRDIxMUJBMTJBMDA0Qjc4
MEUgLyogTmF2aWdhdG9yU2hhcmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRv
clNoYXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURDNTUzRkYyMTFCQTg0
MTAwNEI3ODBFIC8qIFNoYXJlRGF0YS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhcmVE
YXRhLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0Mjk3LDggKzE0Mjk5LDcg
QEAKIAkJQ0QwNjNGODAxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdERhdGFSZWdpc3RyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMDYzRjgxMUUyM0ZBODkwMDgxMkJFMyAv
KiBJbml0RGF0YVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
aXREYXRhUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwQzhCNTgy
MTQxQzhDQTAwNjJGNTlEIC8qIE1lZGlhQ2FwYWJpbGl0aWVzSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYUNhcGFiaWxpdGllc0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
Q0QwRUVFMEExNDc0M0UzNDAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbklPUy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Qw
RUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9PdXRwdXRVbml0QWRhcHRv
cklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTFCM0RGMjI3Q0FBQTkw
MDIzQUZDNyAvKiBBVlN0cmVhbURhdGFQYXJzZXJNSU1FVHlwZUNhY2hlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0QxMUIzRTAyMjdDQUFBOTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNl
ck1JTUVUeXBlQ2FjaGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVlN0cmVhbURhdGFQYXJz
ZXJNSU1FVHlwZUNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDEyN0RF
QTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NTYzLDggKzE2NTY0LDcgQEAKIAkJRkQzMTYwNzgx
MkIwMjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVmVjdG9yTWF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZEMzE2MDc5MTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlY3Rvck1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkQzMTYwQjUxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvQnVzTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9CdXNNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRp
b0Rlc3RpbmF0aW9uTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvRGVzdGluYXRpb25NYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlG
RDMxNjBCNzEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0Rlc3RpbmF0aW9uTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb091
dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRDMxNjBCODEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvRmlsZVJlYWRlck1h
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE2MEI5MTJCMDI3MkEwMEMx
QTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXVkaW9GaWxlUmVhZGVyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGRlRGcmFtZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNzMwMiwxMCArMjczMDIsOSBAQAogCQlDRDBFRUUwRDE0NzQzRTQ4
MDAzRUFGQTIgLyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKLQkJCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5j
cHAgKi8sCi0JCQkJQ0QwRUVFMEExNDc0M0UzNDAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25J
T1MuaCAqLywKIAkJCQlDRDU1OTY4RjE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVy
SU9TLmNwcCAqLywKIAkJCQlDRDU1OTY5MDE0NzVCNjc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVh
ZGVySU9TLmggKi8sCisJCQkJQ0QwRUVFMEIxNDc0M0UzNTAwM0VBRkEyIC8qIEF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3JJT1MuY3BwICovLAogCQkJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBB
dWRpb1Nlc3Npb25JT1MubW0gKi8sCiAJCQkJQ0Q4NzVBNzQyNDExQjc5ODAwQjA5RjU4IC8qIE1l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5oICovLAogCQkJCUNEODc1QTc1MjQxMUI3OTgwMEIwOUY1OCAv
KiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gKi8sCkBAIC0yNzM3MCw2ICsyNzM2OSw4IEBACiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk0MTMxNTE4NDIzNTc3NDVFMDAxMTVFNkUgLyogQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmNwcCAqLywKIAkJCQk0MTMxNTE4NjIzNTc3NDVFMDAxMTVFNkUgLyogQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmggKi8sCisJCQkJMURCNjZEMzgyNTM2NzhFQTAwQjY3MUI5IC8q
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3BwICovLAorCQkJCTFEQjY2RDM3MjUzNjc4RUEwMEI2
NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggKi8sCiAJCQkJMDczQjg3NjIxRTQzODU5
RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAgKi8sCiAJCQkJMDczQjg3NjMx
RTQzODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5oICovLAogCQkJCTA3M0I4
NzY1MUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCAqLywKQEAgLTMw
MjgxLDEyICszMDI4MiwxMSBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
IAkJCQlGRDMxNjBCNTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8sCi0JCQkJ
RkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuY3BwICovLAot
CQkJCUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi8s
CiAJCQkJRkQzMTYwQjgxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5jcHAg
Ki8sCiAJCQkJRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5o
ICovLAogCQkJCUNEMkY0QTI1MThEOEEzNDkwMDYzNzQ2RCAvKiBBdWRpb0hhcmR3YXJlTGlzdGVu
ZXJNYWMuY3BwICovLAogCQkJCUNEMkY0QTI2MThEOEEzNDkwMDYzNzQ2RCAvKiBBdWRpb0hhcmR3
YXJlTGlzdGVuZXJNYWMuaCAqLywKKwkJCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEzNTkgLyogQXVk
aW9PdXRwdXRVbml0QWRhcHRvck1hYy5jcHAgKi8sCiAJCQkJQ0Q1NERFNDkxNzQ2OUM2RDAwNUU1
QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hYy5tbSAqLywKIAkJCQlGRDMxNjBCQTEyQjAyNzJBMDBDMUEz
NTkgLyogRkZURnJhbWVNYWMuY3BwICovLAogCQkJKTsKQEAgLTMwNTY3LDcgKzMwNTY3LDYgQEAK
IAkJCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEMzE2MDdGMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlDNDIzRkU0QkQyMDA4Q0E3NTEgLyogQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRDMxNjBCRDEyQjAyNzJB
MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwMDgxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjA4MDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EU1BLZXJuZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMzE2MDgyMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtl
cm5lbFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDU4Myw2ICszMDU4Miw3IEBACiAJ
CQkJRkQzMTYwMTYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9kZUlucHV0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNzE0NjdCMzI0QUJBRUYyMDBGQjJGNTAgLyogQXVkaW9Ob2RlT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMTgxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTm9k
ZU91dHB1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMURCNjZEM0IyNTM3QTk1NjAwQjY3MUI5IC8q
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDFEMTJC
MDI2NzYwMEMxQTM1OSAvKiBBdWRpb1BhcmFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzc1Njk5
RTI1MkNGMzYyMDBFMUI5NTYgLyogQXVkaW9QYXJhbURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzQjk4NzBDMjUyMjVGODMwMEE5MzlGMSAvKiBBdWRpb1BhcmFtTWFwLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM1MjQ0LDggKzM1MjQ0LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCUE5Nzg3
Q0I0MUY1RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzFGN0I3MzEyNDQ4RjJBQzAwMTI0NTU3IC8qIEFHWENvbXBpbGVyU2Vy
dmljZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyog
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU1OTY5MTE0NzVC
Njc4MDAxRDBCRDAgLyogQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nl
c3Npb25JT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDhBN0JCQjE5NzczNUZFMDBDQkQ2NDMg
LyogQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREUz
QTg1NzE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0Rlc3RpbmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uLmgKaW5kZXggMTYwYzY1NzhlMTVlZDVlYTc1MjVkYzc2OGJkNGVmM2ZkYzc0ZjRmZi4u
NDE5NjU1MmQ5MTVhODliNGEwNWY4NDc2NGQ1ZmVhYzA1NjYyNDk1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4g
aW4gQXVkaW9EZXN0aW5hdGlvbiB0byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUKICAgICB2aXJ0
dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7Ci0gICAgc3RhdGljIGZsb2F0IGhhcmR3
YXJlU2FtcGxlUmF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCBoYXJkd2Fy
ZVNhbXBsZVJhdGUoKTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkg
Y29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCAxZDBmNGUyODgxMTg3
ZTdiMzUwMjkwYjAyMzNjYjhiMGMyMWFmNGU2Li4zMzM4MzJjMmI0Y2FhMmNhYzUzZmVkZTRkYjAx
MWE5YjdkNzgzNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTU2LDcgKzU2LDYg
QEAgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lP
Q2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdAogICAgICAgICByZXR1cm4gQXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpjcmVhdGVPdmVycmlkZShjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiAKICAgICBhdXRv
IGRlc3RpbmF0aW9uID0gYWRvcHRSZWYoKm5ldyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoY2FsbGJh
Y2ssIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpKTsKLSAgICBkZXN0aW5hdGlv
bi0+Y29uZmlndXJlKCk7CiAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwogfQogCkBAIC03MCwxNSAr
NjksMTYgQEAgdW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVsQ291bnQo
KQogICAgIHJldHVybiBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5tYXhpbXVtTnVtYmVy
T2ZPdXRwdXRDaGFubmVscygpOwogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQotICAgIDogbV9vdXRwdXRVbml0KDAp
CitBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OkF1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRpb0lPQ2Fs
bGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlLCBib29sIGNvbmZpZ3VyZUF1ZGlvT3V0cHV0VW5pdCkKKyAgICA6IG1fYXVkaW9P
dXRwdXRVbml0QWRhcHRvcigqdGhpcykKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAg
LCBtX291dHB1dEJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEF1
ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgZmFsc2UpLnJlbGVhc2VOb25OdWxsKCkp
CiAgICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSkucmVsZWFzZU5vbk51bGwoKSkK
ICAgICAsIG1fZmlmbyhtYWtlVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4obnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmlmb1NpemUpKQogICAgICwgbV9jb250ZXh0U2FtcGxlUmF0ZShzYW1wbGVSYXRl
KQogewotICAgIGNvbmZpZ3VyZSgpOworICAgIGlmIChjb25maWd1cmVBdWRpb091dHB1dFVuaXQp
CisgICAgICAgIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5jb25maWd1cmUoaGFyZHdhcmVTYW1w
bGVSYXRlKCksIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgYXV0byBoYXJkd2FyZVNh
bXBsZVJhdGUgPSB0aGlzLT5oYXJkd2FyZVNhbXBsZVJhdGUoKTsKICAgICBpZiAoc2FtcGxlUmF0
ZSAhPSBoYXJkd2FyZVNhbXBsZVJhdGUpIHsKQEAgLTg3LDExICs4Nyw3IEBAIEF1ZGlvRGVzdGlu
YXRpb25Db2NvYTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJh
Y2ssIHVuc2lnbmVkCiAgICAgfQogfQogCi1BdWRpb0Rlc3RpbmF0aW9uQ29jb2E6On5BdWRpb0Rl
c3RpbmF0aW9uQ29jb2EoKQotewotICAgIGlmIChtX291dHB1dFVuaXQpCi0gICAgICAgIEF1ZGlv
Q29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Ci19CitBdWRpb0Rlc3RpbmF0
aW9uQ29jb2E6On5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKSA9IGRlZmF1bHQ7CiAKIHVuc2lnbmVk
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CiB7
CkBAIC0xMDcsNyArMTAzLDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0KEZ1
bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFQKIHsKICAgICBMT0co
TWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAgbV9kaXNwYXRjaFRv
UmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKTsKLSAgICBPU1N0
YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVuaXQpOworICAgIE9T
U3RhdHVzIHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFydCgpOwogCiAgICAg
aWYgKCFyZXN1bHQpCiAgICAgICAgIHNldElzUGxheWluZyh0cnVlKTsKQEAgLTExNiw3ICsxMTIs
NyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rpb248dm9pZChGdW5j
dGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVAogdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RvcCIp
OwotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9vdXRwdXRVbml0
KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iuc3RvcCgp
OwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51bGxwdHI7CiAKICAgICBpZiAoIXJl
c3VsdCkKQEAgLTEzMyw3ICsxMjksNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0
SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQogICAgIG1fY2FsbGJhY2suaXNQbGF5aW5nRGlkQ2hh
bmdlKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzdHJlYW1Gb3JtYXQp
Cit2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Z2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0KQogewogICAgIGNv
bnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwogICAgIGNvbnN0IGludCBi
aXRzUGVyQnl0ZSA9IDg7CkBAIC0xNTcsMjIgKzE1MywyNCBAQCBzdGF0aWMgdm9pZCBhc3NpZ25B
dWRpb0J1ZmZlcnNUb0J1cyhBdWRpb0J1ZmZlciogYnVmZmVycywgQXVkaW9CdXMmIGJ1cywgVUlu
dDMyCiAgICAgfQogfQogCitib29sIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6aGFzRW5vdWdoRnJh
bWVzKFVJbnQzMiBudW1iZXJPZkZyYW1lcykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9maWZvLT5s
ZW5ndGgoKSA+PSBudW1iZXJPZkZyYW1lczsKK30KKwogLy8gUHVsbHMgb24gb3VyIHByb3ZpZGVy
IHRvIGdldCByZW5kZXJlZCBhdWRpbyBzdHJlYW0uCi1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9u
Q29jb2E6OnJlbmRlcihjb25zdCBBdWRpb1RpbWVTdGFtcCogdGltZXN0YW1wLCBVSW50MzIgbnVt
YmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQorT1NTdGF0dXMgQXVkaW9EZXN0
aW5hdGlvbkNvY29hOjpyZW5kZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhvc3RUaW1l
LCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQogewotICAg
IGlmIChtX2ZpZm8tPmxlbmd0aCgpIDwgbnVtYmVyT2ZGcmFtZXMpCisgICAgaWYgKCFoYXNFbm91
Z2hGcmFtZXMobnVtYmVyT2ZGcmFtZXMpKQogICAgICAgICByZXR1cm4gbm9FcnI7CiAKLSAgICBp
ZiAodGltZXN0YW1wKSB7Ci0gICAgICAgIG1fb3V0cHV0VGltZXN0YW1wID0gewotICAgICAgICAg
ICAgU2Vjb25kcyB7IHRpbWVzdGFtcC0+bVNhbXBsZVRpbWUgLyBzYW1wbGVSYXRlKCkgfSwKLSAg
ICAgICAgICAgIE1vbm90b25pY1RpbWU6OmZyb21NYWNoQWJzb2x1dGVUaW1lKHRpbWVzdGFtcC0+
bUhvc3RUaW1lKQotICAgICAgICB9OwotICAgIH0gZWxzZQotICAgICAgICBtX291dHB1dFRpbWVz
dGFtcCA9IEF1ZGlvSU9Qb3NpdGlvbiB7IH07CisgICAgbV9vdXRwdXRUaW1lc3RhbXAgPSB7Cisg
ICAgICAgIFNlY29uZHMgeyBzYW1wbGVUaW1lIC8gc2FtcGxlUmF0ZSgpIH0sCisgICAgICAgIE1v
bm90b25pY1RpbWU6OmZyb21NYWNoQWJzb2x1dGVUaW1lKGhvc3RUaW1lKQorICAgIH07CiAKICAg
ICBhdXRvKiBidWZmZXJzID0gaW9EYXRhLT5tQnVmZmVyczsKLSAgICBVSW50MzIgbnVtYmVyT2ZC
dWZmZXJzID0gaW9EYXRhLT5tTnVtYmVyQnVmZmVyczsKKyAgICBhdXRvIG51bWJlck9mQnVmZmVy
cyA9IGlvRGF0YS0+bU51bWJlckJ1ZmZlcnM7CiAKICAgICAvLyBBc3NvY2lhdGUgdGhlIGRlc3Rp
bmF0aW9uIGRhdGEgYXJyYXkgd2l0aCB0aGUgb3V0cHV0IGJ1cyB0aGVuIGZpbGwgdGhlIEZJRk8u
CiAgICAgYXNzaWduQXVkaW9CdWZmZXJzVG9CdXMoYnVmZmVycywgbV9vdXRwdXRCdXMuZ2V0KCks
IG51bWJlck9mQnVmZmVycywgbnVtYmVyT2ZGcmFtZXMsIDAsIG51bWJlck9mRnJhbWVzKTsKQEAg
LTIxMCwxMyArMjA4LDYgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlck9uUmVu
ZGVyaW5nVGhlYWQoc2l6ZV90IGZyYW1lc1RvUmVuZGVyKQogICAgIH0KIH0KIAotLy8gRGVmYXVs
dE91dHB1dFVuaXQgY2FsbGJhY2sKLU9TU3RhdHVzIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6aW5w
dXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyosIGNvbnN0
IEF1ZGlvVGltZVN0YW1wKiB0aW1lc3RhbXAsIFVJbnQzMiAvKmJ1c051bWJlciovLCBVSW50MzIg
bnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQotewotICAgIGF1dG8qIGF1
ZGlvT3V0cHV0ID0gc3RhdGljX2Nhc3Q8QXVkaW9EZXN0aW5hdGlvbkNvY29hKj4odXNlckRhdGEp
OwotICAgIHJldHVybiBhdWRpb091dHB1dC0+cmVuZGVyKHRpbWVzdGFtcCwgbnVtYmVyT2ZGcmFt
ZXMsIGlvRGF0YSk7Ci19Ci0KIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm92aWRlSW5w
dXQoQXVkaW9CdXMqIGJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICBBU1NFUlRf
VU5VU0VEKGZyYW1lc1RvUHJvY2VzcywgZnJhbWVzVG9Qcm9jZXNzID09IEF1ZGlvVXRpbGl0aWVz
OjpyZW5kZXJRdWFudHVtU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oCmluZGV4IDA4OTRkNjIx
YTJmMTUzMjI1MTI3MzY1MGI2ZTVhM2QzZWM5OTZmOGEuLmNhNGVlYmZkMDNjOWJlMGU1YWNmZmNj
N2I1NzQ4NzRkMzBhNGQ2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCiAjaW5jbHVkZSAiQXVkaW9JT0Nh
bGxiYWNrLmgiCisjaW5jbHVkZSAiQXVkaW9PdXRwdXRVbml0QWRhcHRvci5oIgogI2luY2x1ZGUg
IkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDMsNDcgKzQ0LDM5IEBAIGNsYXNzIFB1c2hQ
dWxsRklGTzsKIHVzaW5nIENyZWF0ZUF1ZGlvRGVzdGluYXRpb25Db2NvYU92ZXJyaWRlID0gUmVm
PEF1ZGlvRGVzdGluYXRpb24+KCopKEF1ZGlvSU9DYWxsYmFjayYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAvLyBBbiBBdWRpb0Rlc3RpbmF0aW9uIHVzaW5nIENvcmVBdWRpbydzIGRlZmF1bHQgb3V0
cHV0IEF1ZGlvVW5pdAotY2xhc3MgQXVkaW9EZXN0aW5hdGlvbkNvY29hIDogcHVibGljIEF1ZGlv
RGVzdGluYXRpb24sIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsKK2NsYXNzIEF1ZGlvRGVz
dGluYXRpb25Db2NvYSA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgQXVkaW9Vbml0
UmVuZGVyZXIsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBBdWRp
b0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiwgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7Ci0gICAgdmlydHVhbCB+QXVkaW9EZXN0aW5h
dGlvbkNvY29hKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgQXVkaW9EZXN0aW5hdGlvbkNvY29hKEF1
ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUsIGJvb2wgY29uZmlndXJlQXVkaW9PdXRwdXRVbml0ID0gdHJ1ZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbkNvY29hKCk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbkNvY29hT3ZlcnJpZGUgY3Jl
YXRlT3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIHNldElzUGxheWluZyhib29sKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0Vub3VnaEZyYW1lcyhVSW50MzIgbnVtYmVyT2ZG
cmFtZXMpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE9TU3RhdHVzIHJlbmRlcihkb3VibGUg
c2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVk
aW9CdWZmZXJMaXN0KiBpb0RhdGEpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCByZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFtZXNUb1JlbmRlcik7CiAKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzUGxheWluZyhib29sKTsKICAgICBib29sIGlzUGxh
eWluZygpIGZpbmFsIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CiAgICAgZmxvYXQgc2FtcGxlUmF0
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dFNhbXBsZVJhdGU7IH0KLSAgICB1bnNp
Z25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCBmaW5hbDsKLSAgICBBdWRpb1VuaXQmIG91dHB1
dFVuaXQoKSB7IHJldHVybiBtX291dHB1dFVuaXQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB1bnNp
Z25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCBmaW5hbDsKIAogICAgIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdDsKLSAgICAKLSAgICAvLyBEZWZhdWx0T3V0cHV0VW5p
dCBjYWxsYmFjawotICAgIHN0YXRpYyBPU1N0YXR1cyBpbnB1dFByb2Modm9pZCogdXNlckRhdGEs
IEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50
MzIgYnVzTnVtYmVyLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9E
YXRhKTsKIAotICAgIHZvaWQgc2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0QXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYpOwogCiAg
ICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiBtX2Rpc3BhdGNoVG9SZW5kZXJU
aHJlYWQ7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIFJlZjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRp
b0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29uc3QgU3RyaW5nJiwgdW5z
aWduZWQsIHVuc2lnbmVkLCBmbG9hdCk7CisKICAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9uPHZvaWQo
RnVuY3Rpb248dm9pZCgpPiYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIHJlbmRlck9uUmVuZGVyaW5nVGhlYWQoc2l6ZV90IGZyYW1lc1RvUmVu
ZGVyKTsKLQotICAgIGZyaWVuZCBSZWY8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlv
bjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNp
Z25lZCwgZmxvYXQpOwotICAgIAogICAgIC8vIEF1ZGlvU291cmNlUHJvdmlkZXIuCi0gICAgdm9p
ZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsK
LQotICAgIHZvaWQgY29uZmlndXJlKCk7Ci0gICAgdm9pZCBwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIo
QXVkaW9CdXMmLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpOwotCi0gICAgT1NTdGF0dXMgcmVuZGVy
KGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZl
ckxpc3QqIGlvRGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm92aWRlSW5wdXQoQXVk
aW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKIAotICAgIEF1ZGlvVW5pdCBt
X291dHB1dFVuaXQ7CisgICAgQXVkaW9PdXRwdXRVbml0QWRhcHRvciBtX2F1ZGlvT3V0cHV0VW5p
dEFkYXB0b3I7CiAgICAgQXVkaW9JT0NhbGxiYWNrJiBtX2NhbGxiYWNrOwogCiAgICAgLy8gVG8g
cGFzcyB0aGUgZGF0YSBmcm9tIEZJRk8gdG8gdGhlIGF1ZGlvIGRldmljZSBjYWxsYmFjay4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0
VW5pdEFkYXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9PdXRwdXRVbml0QWRhcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTA2Y2Y5NWIzYWQ5NWIzYTk1MGFj
Yzg1MzAyNGEyMWYzNjMyNzBkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3BwCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9P
dXRwdXRVbml0QWRhcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitBdWRpb091dHB1dFVuaXRBZGFwdG9yOjpBdWRpb091dHB1dFVuaXRBZGFw
dG9yKEF1ZGlvVW5pdFJlbmRlcmVyJiByZW5kZXJlcikKKyAgICA6IG1fb3V0cHV0VW5pdCgwKQor
ICAgICwgbV9hdWRpb1VuaXRSZW5kZXJlcihyZW5kZXJlcikKK3sKK30KKworQXVkaW9PdXRwdXRV
bml0QWRhcHRvcjo6fkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoKQoreworICAgIGlmIChtX291dHB1
dFVuaXQpCisgICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5p
dCk7Cit9CisKK09TU3RhdHVzIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OnN0YXJ0KCkKK3sKKyAg
ICByZXR1cm4gQXVkaW9PdXRwdXRVbml0U3RhcnQobV9vdXRwdXRVbml0KTsKK30KKworT1NTdGF0
dXMgQXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6c3RvcCgpCit7CisgICAgcmV0dXJuIEF1ZGlvT3V0
cHV0VW5pdFN0b3AobV9vdXRwdXRVbml0KTsKK30KKworLy8gRGVmYXVsdE91dHB1dFVuaXQgY2Fs
bGJhY2sKK09TU3RhdHVzIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyh2b2lkKiB1
c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFt
cCogdGltZVN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUludDMyIG51bWJlck9mRnJhbWVz
LCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKK3sKKyAgICBhdXRvKiBhZGFwdG9yID0gc3RhdGlj
X2Nhc3Q8QXVkaW9PdXRwdXRVbml0QWRhcHRvcio+KHVzZXJEYXRhKTsKKyAgICByZXR1cm4gYWRh
cHRvci0+bV9hdWRpb1VuaXRSZW5kZXJlci5yZW5kZXIodGltZVN0YW1wLT5tU2FtcGxlVGltZSwg
dGltZVN0YW1wLT5tSG9zdFRpbWUsIG51bWJlck9mRnJhbWVzLCBpb0RhdGEpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0
QWRhcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRw
dXRVbml0QWRhcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZGRiZGQ2NmI2Y2E0OTNmMWNkYWM4ZTYyMDVk
YTBiNDhkZWIwMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmgKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1
ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBdWRpb1VuaXRSZW5kZXJlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9Vbml0UmVu
ZGVyZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCBPU1N0YXR1cyByZW5kZXIoZG91YmxlIHNh
bXBsZVRpbWUsIHVpbnQ2NF90IGhvc3RUaW1lLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlv
QnVmZmVyTGlzdCogaW9EYXRhKSA9IDA7Cit9OworCitjbGFzcyBBdWRpb091dHB1dFVuaXRBZGFw
dG9yIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBBdWRpb091dHB1dFVuaXRBZGFwdG9y
KEF1ZGlvVW5pdFJlbmRlcmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgfkF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3IoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29uZmlndXJlKGZsb2F0IGhh
cmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAg
V0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgc3RhcnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBPU1N0
YXR1cyBzdG9wKCk7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2
b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1Rp
bWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9C
dWZmZXJMaXN0KiBpb0RhdGEpOworCisgICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKKyAgICBB
dWRpb1VuaXRSZW5kZXJlciYgbV9hdWRpb1VuaXRSZW5kZXJlcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0NzMzZGU3Zjc1ZGE5YWI2ZDA4N2Ey
MzFhZDhlYjk4MWRjNjg4OGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRp
b25JT1MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQotCi0jaW5j
bHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgiCi0KLSNpbmNsdWRlICJBdWRpb1Nlc3Npb24u
aCIKLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09SSyhB
dWRpb1Rvb2xib3gpCi1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb0NvbXBvbmVudEZpbmRO
ZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1ZGlvQ29tcG9uZW50IGluQ29tcG9uZW50LCBjb25zdCBB
dWRpb0NvbXBvbmVudERlc2NyaXB0aW9uICppbkRlc2MpLCAoaW5Db21wb25lbnQsIGluRGVzYykp
Ci1TT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3LCBPU1N0
YXR1cywgKEF1ZGlvQ29tcG9uZW50IGluQ29tcG9uZW50LCBBdWRpb0NvbXBvbmVudEluc3RhbmNl
ICpvdXRJbnN0YW5jZSksIChpbkNvbXBvbmVudCwgb3V0SW5zdGFuY2UpKQotU09GVF9MSU5LKEF1
ZGlvVG9vbGJveCwgQXVkaW9Vbml0QWRkUHJvcGVydHlMaXN0ZW5lciwgT1NTdGF0dXMsIChBdWRp
b1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFByb3BlcnR5
TGlzdGVuZXJQcm9jIGluUHJvYywgdm9pZCAqaW5Qcm9jVXNlckRhdGEpLCAoaW5Vbml0LCBpbklE
LCBpblByb2MsIGluUHJvY1VzZXJEYXRhKSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlv
VW5pdEdldFByb3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFBy
b3BlcnR5SUQgaW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBp
bkVsZW1lbnQsIHZvaWQgKm91dERhdGEsIFVJbnQzMiAqaW9EYXRhU2l6ZSksIChpblVuaXQsIGlu
SUQsIGluU2NvcGUsIGluRWxlbWVudCwgb3V0RGF0YSwgaW9EYXRhU2l6ZSkpCi1TT0ZUX0xJTkso
QXVkaW9Ub29sYm94LCBBdWRpb1VuaXRJbml0aWFsaXplLCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBp
blVuaXQpLCAoaW5Vbml0KSkKLVNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFBy
b3BlcnR5LCBPU1N0YXR1cywgKEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQg
aW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQs
IGNvbnN0IHZvaWQgKmluRGF0YSwgVUludDMyIGluRGF0YVNpemUpLCAoaW5Vbml0LCBpbklELCBp
blNjb3BlLCBpbkVsZW1lbnQsIGluRGF0YSwgaW5EYXRhU2l6ZSkpCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSgpCi17Ci0gICAg
Y29uc3QgaW50IGtQcmVmZXJyZWRCdWZmZXJTaXplID0gMjU2OwotCi0gICAgLy8gT3BlbiBhbmQg
aW5pdGlhbGl6ZSBEZWZhdWx0T3V0cHV0VW5pdAotICAgIEF1ZGlvQ29tcG9uZW50IGNvbXA7Ci0g
ICAgQXVkaW9Db21wb25lbnREZXNjcmlwdGlvbiBkZXNjOwotCi0gICAgZGVzYy5jb21wb25lbnRU
eXBlID0ga0F1ZGlvVW5pdFR5cGVfT3V0cHV0OwotICAgIGRlc2MuY29tcG9uZW50U3ViVHlwZSA9
IGtBdWRpb1VuaXRTdWJUeXBlX1JlbW90ZUlPOwotICAgIGRlc2MuY29tcG9uZW50TWFudWZhY3R1
cmVyID0ga0F1ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBsZTsKLSAgICBkZXNjLmNvbXBvbmVudEZs
YWdzID0gMDsKLSAgICBkZXNjLmNvbXBvbmVudEZsYWdzTWFzayA9IDA7Ci0gICAgY29tcCA9IEF1
ZGlvQ29tcG9uZW50RmluZE5leHQoMCwgJmRlc2MpOwotCi0gICAgQVNTRVJUKGNvbXApOwotCi0g
ICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhjb21wLCAmb3V0
cHV0VW5pdCgpKTsKLSAgICBBU1NFUlQoIXJlc3VsdCk7Ci0KLSAgICBVSW50MzIgZmxhZyA9IDE7
Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLAotICAgICAg
ICBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfRW5hYmxlSU8sCi0gICAgICAgIGtBdWRpb1VuaXRT
Y29wZV9PdXRwdXQsCi0gICAgICAgIDAsCi0gICAgICAgICZmbGFnLAotICAgICAgICBzaXplb2Yo
ZmxhZykpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdElu
aXRpYWxpemUob3V0cHV0VW5pdCgpKTsKLSAgICBBU1NFUlQoIXJlc3VsdCk7Ci0gICAgLy8gU2V0
IHJlbmRlciBjYWxsYmFjawotICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgaW5wdXQ7Ci0gICAg
aW5wdXQuaW5wdXRQcm9jID0gaW5wdXRQcm9jOwotICAgIGlucHV0LmlucHV0UHJvY1JlZkNvbiA9
IHRoaXM7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0VW5pdCgpLCBr
QXVkaW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9JbnB1
dCwgMCwgJmlucHV0LCBzaXplb2YoaW5wdXQpKTsKLSAgICBBU1NFUlQoIXJlc3VsdCk7Ci0KLSAg
ICAvLyBTZXQgc3RyZWFtIGZvcm1hdAotICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBz
dHJlYW1Gb3JtYXQ7Ci0KLSAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24pOwotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdEdldFByb3BlcnR5KG91dHB1dFVu
aXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX091
dHB1dCwgMCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQsICZzaXplKTsKLSAgICBBU1NFUlQoIXJlc3Vs
dCk7Ci0KLSAgICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsK
LQotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlv
VW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9p
ZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwot
ICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigp
LnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa1ByZWZlcnJlZEJ1ZmZlclNpemUpOwotfQotCi12b2lk
IEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvY2Vzc0J1c0FmdGVyUmVuZGVyKEF1ZGlvQnVzJiwg
VUludDMyKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9PdXRwdXRVbml0QWRh
cHRvcklPUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU5NjMwZmI2MGYyMmIzZWU1NmQyNDJkNzMwNDM0ODZi
ODdiNTYyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb091dHB1dFVuaXRBZGFwdG9yLmgiCisK
KyNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVk
ZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRf
TElOS19GUkFNRVdPUksoQXVkaW9Ub29sYm94KQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVk
aW9Db21wb25lbnRGaW5kTmV4dCwgQXVkaW9Db21wb25lbnQsIChBdWRpb0NvbXBvbmVudCBpbkNv
bXBvbmVudCwgY29uc3QgQXVkaW9Db21wb25lbnREZXNjcmlwdGlvbiAqaW5EZXNjKSwgKGluQ29t
cG9uZW50LCBpbkRlc2MpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Db21wb25lbnRJ
bnN0YW5jZU5ldywgT1NTdGF0dXMsIChBdWRpb0NvbXBvbmVudCBpbkNvbXBvbmVudCwgQXVkaW9D
b21wb25lbnRJbnN0YW5jZSAqb3V0SW5zdGFuY2UpLCAoaW5Db21wb25lbnQsIG91dEluc3RhbmNl
KSkKK1NPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdEFkZFByb3BlcnR5TGlzdGVuZXIs
IE9TU3RhdHVzLCAoQXVkaW9Vbml0IGluVW5pdCwgQXVkaW9Vbml0UHJvcGVydHlJRCBpbklELCBB
dWRpb1VuaXRQcm9wZXJ0eUxpc3RlbmVyUHJvYyBpblByb2MsIHZvaWQgKmluUHJvY1VzZXJEYXRh
KSwgKGluVW5pdCwgaW5JRCwgaW5Qcm9jLCBpblByb2NVc2VyRGF0YSkpCitTT0ZUX0xJTksoQXVk
aW9Ub29sYm94LCBBdWRpb1VuaXRHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5V
bml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFNjb3BlIGluU2NvcGUsIEF1
ZGlvVW5pdEVsZW1lbnQgaW5FbGVtZW50LCB2b2lkICpvdXREYXRhLCBVSW50MzIgKmlvRGF0YVNp
emUpLCAoaW5Vbml0LCBpbklELCBpblNjb3BlLCBpbkVsZW1lbnQsIG91dERhdGEsIGlvRGF0YVNp
emUpKQorU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Vbml0SW5pdGlhbGl6ZSwgT1NTdGF0
dXMsIChBdWRpb1VuaXQgaW5Vbml0KSwgKGluVW5pdCkpCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94
LCBBdWRpb1VuaXRTZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb1VuaXQgaW5Vbml0LCBBdWRp
b1VuaXRQcm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFNjb3BlIGluU2NvcGUsIEF1ZGlvVW5pdEVs
ZW1lbnQgaW5FbGVtZW50LCBjb25zdCB2b2lkICppbkRhdGEsIFVJbnQzMiBpbkRhdGFTaXplKSwg
KGluVW5pdCwgaW5JRCwgaW5TY29wZSwgaW5FbGVtZW50LCBpbkRhdGEsIGluRGF0YVNpemUpKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgQXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6Y29u
ZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscykKK3sKKyAgICBjb25zdCBpbnQga1ByZWZlcnJlZEJ1ZmZlclNpemUgPSAyNTY7CisK
KyAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0CisgICAgQXVkaW9D
b21wb25lbnQgY29tcDsKKyAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7CisKKyAg
ICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7CisgICAgZGVzYy5j
b21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87CisgICAgZGVzYy5j
b21wb25lbnRNYW51ZmFjdHVyZXIgPSBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0FwcGxlOworICAg
IGRlc2MuY29tcG9uZW50RmxhZ3MgPSAwOworICAgIGRlc2MuY29tcG9uZW50RmxhZ3NNYXNrID0g
MDsKKyAgICBjb21wID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dCgwLCAmZGVzYyk7CisKKyAgICBB
U1NFUlQoY29tcCk7CisKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlTmV3KGNvbXAsICZtX291dHB1dFVuaXQpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAg
IFVJbnQzMiBmbGFnID0gMTsKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX291
dHB1dFVuaXQsCisgICAgICAgIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKKyAg
ICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwKKyAgICAgICAgMCwKKyAgICAgICAgJmZsYWcs
CisgICAgICAgIHNpemVvZihmbGFnKSk7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgcmVz
dWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShtX291dHB1dFVuaXQpOworICAgIEFTU0VSVCghcmVz
dWx0KTsKKyAgICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCisgICAgQVVSZW5kZXJDYWxsYmFja1N0
cnVjdCBpbnB1dDsKKyAgICBpbnB1dC5pbnB1dFByb2MgPSBpbnB1dFByb2M7CisgICAgaW5wdXQu
aW5wdXRQcm9jUmVmQ29uID0gdGhpczsKKyAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0
eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1
ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOworICAgIEFTU0VS
VCghcmVzdWx0KTsKKworICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0CisgICAgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9m
KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik7CisgICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0
UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBr
QXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwor
ICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIGNvbnN0ZXhwciBpbnQgYnl0ZXNQZXJGbG9hdCA9
IHNpemVvZihGbG9hdDMyKTsKKyAgICBjb25zdGV4cHIgaW50IGJpdHNQZXJCeXRlID0gODsKKyAg
ICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBoYXJkd2FyZVNhbXBsZVJhdGU7CisgICAgc3Ry
ZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKKyAgICBzdHJlYW1G
b3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8
IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkOworICAgIHN0cmVhbUZvcm1hdC5tQnl0
ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tRnJhbWVzUGVy
UGFja2V0ID0gMTsKKyAgICBzdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZs
b2F0OworICAgIHN0cmVhbUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IG51bWJlck9mT3V0cHV0
Q2hhbm5lbHM7CisgICAgc3RyZWFtRm9ybWF0Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRl
ICogYnl0ZXNQZXJGbG9hdDsKKworICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1f
b3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNj
b3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbikpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIEF1ZGlvU2Vzc2lv
bjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa1ByZWZlcnJlZEJ1ZmZl
clNpemUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVRElPKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwZjljOWZmZjUxZjQ4M2I0NDA0MWEzNzcxZmI0
MTg3YTdhZWRhN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkF1ZGlvRGVzdGluYXRpb25Db2NvYS5oIgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykgJiYgUExB
VEZPUk0oTUFDKQotCi0jaW5jbHVkZSAiQXVkaW9CdXMuaCIKLSNpbmNsdWRlICJWZWN0b3JNYXRo
LmgiCi0jaW5jbHVkZSA8Q29yZUF1ZGlvL0F1ZGlvSGFyZHdhcmUuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkKLXsKLSAg
ICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0Ci0gICAgQXVkaW9Db21w
b25lbnQgY29tcDsKLSAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRlc2M7Ci0KLSAgICBk
ZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7Ci0gICAgZGVzYy5jb21w
b25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfRGVmYXVsdE91dHB1dDsKLSAgICBkZXNj
LmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBwbGU7Ci0g
ICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7Ci0gICAgZGVzYy5jb21wb25lbnRGbGFnc01hc2sg
PSAwOwotICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KDAsICZkZXNjKTsKLQotICAg
IEFTU0VSVChjb21wKTsKLQotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5z
dGFuY2VOZXcoY29tcCwgJm91dHB1dFVuaXQoKSk7Ci0gICAgQVNTRVJUKCFyZXN1bHQpOwotCi0g
ICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShvdXRwdXRVbml0KCkpOwotICAgIEFTU0VS
VCghcmVzdWx0KTsKLQotICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKLSAgICBBVVJlbmRlckNh
bGxiYWNrU3RydWN0IGlucHV0OwotICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0UHJvYzsKLSAg
ICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOwotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNl
dFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxi
YWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOwot
ICAgIEFTU0VSVCghcmVzdWx0KTsKLQotICAgIC8vIFNldCBzdHJlYW0gZm9ybWF0Ci0gICAgQXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLSAgICBzZXRBdWRpb1N0cmVh
bUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKLQotICAgIHJlc3VsdCA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1h
dCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9m
KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwotICAgIEFTU0VSVCghcmVzdWx0KTsKLX0K
LQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnByb2Nlc3NCdXNBZnRlclJlbmRlcihBdWRp
b0J1cyYgYnVzLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpCi17Ci0gICAgLy8gQ2xhbXAgdmFsdWVz
IGF0IDBkYiAoaS5lLiwgWy0xLjAsIDEuMF0pCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkgewotICAgICAgICBhdXRvKiBjaGFubmVsID0g
YnVzLmNoYW5uZWwoaSk7Ci0gICAgICAgIGlmICghY2hhbm5lbC0+aXNTaWxlbnQoKSkKLSAgICAg
ICAgICAgIFZlY3Rvck1hdGg6OmNsYW1wKGNoYW5uZWwtPmRhdGEoKSwgLTEsIDEsIGNoYW5uZWwt
Pm11dGFibGVEYXRhKCksIG51bWJlck9mRnJhbWVzKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKE1B
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb091
dHB1dFVuaXRBZGFwdG9yTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb091dHB1dFVuaXRBZGFwdG9yTWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGVkM2VmNzhjOGM2
YTNiMWUwNzBjYjQ0MDU5NjlhZGE0YWMzZGEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3BwCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9PdXRwdXRVbml0QWRhcHRv
ci5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVk
ZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgQXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6Y29uZmln
dXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscykKK3sKKyAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0Cisg
ICAgQXVkaW9Db21wb25lbnQgY29tcDsKKyAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGRl
c2M7CisKKyAgICBkZXNjLmNvbXBvbmVudFR5cGUgPSBrQXVkaW9Vbml0VHlwZV9PdXRwdXQ7Cisg
ICAgZGVzYy5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfRGVmYXVsdE91dHB1
dDsKKyAgICBkZXNjLmNvbXBvbmVudE1hbnVmYWN0dXJlciA9IGtBdWRpb1VuaXRNYW51ZmFjdHVy
ZXJfQXBwbGU7CisgICAgZGVzYy5jb21wb25lbnRGbGFncyA9IDA7CisgICAgZGVzYy5jb21wb25l
bnRGbGFnc01hc2sgPSAwOworICAgIGNvbXAgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KDAsICZk
ZXNjKTsKKworICAgIEFTU0VSVChjb21wKTsKKworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlv
Q29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0VW5pdCk7CisgICAgQVNTRVJUKCFy
ZXN1bHQpOworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShtX291dHB1dFVuaXQp
OworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKKyAg
ICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGlucHV0OworICAgIGlucHV0LmlucHV0UHJvYyA9IGlu
cHV0UHJvYzsKKyAgICBpbnB1dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOworICAgIHJlc3VsdCA9
IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1Nl
dFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCAwLCAmaW5wdXQsIHNpemVv
ZihpbnB1dCkpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIC8vIFNldCBzdHJlYW0gZm9y
bWF0CisgICAgY29uc3RleHByIGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwor
ICAgIGNvbnN0ZXhwciBpbnQgYml0c1BlckJ5dGUgPSA4OworCisgICAgQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKKyAgICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUg
PSBoYXJkd2FyZVNhbXBsZVJhdGU7CisgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRp
b0Zvcm1hdExpbmVhclBDTTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlv
Rm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVy
bGVhdmVkOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0
OworICAgIHN0cmVhbUZvcm1hdC5tRnJhbWVzUGVyUGFja2V0ID0gMTsKKyAgICBzdHJlYW1Gb3Jt
YXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tQ2hh
bm5lbHNQZXJGcmFtZSA9IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CisgICAgc3RyZWFtRm9ybWF0
Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdDsKKworICAgIHJl
c3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3Bl
cnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVh
bUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOworICAgIEFTU0VS
VCghcmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXgg
NWExMmNkZTRmY2RmYzU3ZmFkNDJiN2Q5ZThmZTczMjA0MzUwOWQ3OC4uNTI4NmM4NTg2NTIyNWZi
Y2NmZjI4NGJmMzhjNDhhNGFiNzcxNzc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC02OCwx
MCArNjgsMTAgQEAgdm9pZCBNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp0aWNrKCkKIHsKICAg
ICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlKCks
IG51bWJlck9mRnJhbWVzVG9Qcm9jZXNzID0gbV9udW1iZXJPZkZyYW1lc1RvUHJvY2Vzc10gewog
ICAgICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0OwotICAgICAg
ICBzZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKyAgICAgICAg
Z2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7CiAKICAgICAgICAg
V2ViQXVkaW9CdWZmZXJMaXN0IHdlYkF1ZGlvQnVmZmVyTGlzdCB7IHN0cmVhbUZvcm1hdCwgbnVt
YmVyT2ZGcmFtZXNUb1Byb2Nlc3MgfTsKLSAgICAgICAgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpp
bnB1dFByb2ModGhpcywgMCwgMCwgMCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1ZGlv
QnVmZmVyTGlzdC5saXN0KCkpOworICAgICAgICByZW5kZXIoMCwgMCwgbnVtYmVyT2ZGcmFtZXNU
b1Byb2Nlc3MsIHdlYkF1ZGlvQnVmZmVyTGlzdC5saXN0KCkpOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRleCAyN2YyYTY5OTZhYzk0MGNjZDg0NzkzNTk1
NGU2ZDkxODRhM2QzM2QwLi45ZThiOGM4NzVhNTcxYzVlMzRmNTk4NWU1NTk5ZjYzMjY0ZjQ2Zjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKQEAgLTI5LDExNiArMjksMTM1IEBA
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVk
ZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlJlbW90ZUF1ZGlvQnVz
RGF0YS5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2VzLmgi
Ci0jaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0J1cy5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb1V0aWxpdGllcy5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFB1bGxGSUZPLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAotbmFtZXNwYWNlIFdlYktp
dCB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRpb0J1ZmZlckxpc3Qu
aD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0J1cy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQXVkaW9EZXN0aW5hdGlvbi5oPgorI2VuZGlmCiAKLS8vIFRoaXMgRklGTyBzaXplIG1hdGNo
ZXMgdG8gb25lIGluIEF1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAgYW5kIHdhcyBpbXBvcnRlZCBm
cm9tIEJsaW5rLgotY29uc3RleHByIHNpemVfdCBmaWZvU2l6ZSA9IDk2ICogV2ViQ29yZTo6QXVk
aW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplOworbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNs
YXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4sIHB1YmxpYyBXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2sg
eworY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbgorICAgIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgLCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9Vbml0UmVuZGVyZXIKKyNlbmRpZgorewogcHVibGlj
OgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6QXVkaW9CdXM7Ci0gICAgdXNpbmcgQXVk
aW9EZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb247Ci0gICAgdXNpbmcgU2hh
cmVkQnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOwotCiAgICAgc3RhdGljIFJlZjxSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwKLSAg
ICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJh
dGUpCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50
aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIGlucHV0RGV2aWNl
SWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxl
UmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbigpCiAgICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9kZXN0
aW5hdGlvbi0+aXNQbGF5aW5nKCkpOwogICAgIH0KIAogICAgIHZvaWQgc2NoZWR1bGVHcmFjZWZ1
bFNodXRkb3duSWZOZWVkZWQoKQogICAgIHsKLSAgICAgICAgaWYgKCFpc1BsYXlpbmcoKSkKKyAg
ICAgICAgaWYgKCFtX2lzUGxheWluZykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9w
cm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24gPSB0aGlzOwotICAgICAgICBzdG9wKCk7
CiAgICAgfQogCi0gICAgdm9pZCBzdGFydCgpIHsgbV9kZXN0aW5hdGlvbi0+c3RhcnQoeyB9KTsg
fQotICAgIHZvaWQgc3RvcCgpIHsgbV9kZXN0aW5hdGlvbi0+c3RvcCgpOyB9Ci0gICAgYm9vbCBp
c1BsYXlpbmcoKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKTsgfQotICAgIHVu
c2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb24tPmZy
YW1lc1BlckJ1ZmZlcigpIDsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgYXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hh
bmRsZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlv
biwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCisgICAgeworICAgICAgICBtX2Rlc2NyaXB0aW9u
ID0gZGVzY3JpcHRpb247CiAKLXByaXZhdGU6Ci0gICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbihH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVp
bnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKLSAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlv
bikKLSAgICAgICAgLCBtX2lkKGlkZW50aWZpZXIpCi0gICAgICAgICwgbV9kZXN0aW5hdGlvbihB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKnRoaXMsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpCi0gICAgICAg
ICwgbV9maWZvKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZpZm9TaXplKQorICAgICAgICBpZiAo
aXBjSGFuZGxlLmhhbmRsZS5pc051bGwoKSkgeworICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5k
ZWFsbG9jYXRlKCk7CisgICAgICAgICAgICBzdG9yYWdlKCkuc2V0UmVhZE9ubHkoZmFsc2UpOwor
ICAgICAgICAgICAgc3RvcmFnZSgpLnNldFN0b3JhZ2UobnVsbHB0cik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6
bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkp
OworICAgICAgICBzdG9yYWdlKCkuc2V0U3RvcmFnZShXVEZNb3ZlKG1lbW9yeSkpOworICAgICAg
ICBzdG9yYWdlKCkuc2V0UmVhZE9ubHkodHJ1ZSk7CisKKyAgICAgICAgbV9yaW5nQnVmZmVyLT5h
bGxvY2F0ZShkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworICAgIH0KKyNlbmRpZgorCisg
ICAgdm9pZCBzdGFydCgpCiAgICAgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBhdXRv
IHJlc3VsdCA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdGFydCgpOworICAgICAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKKyNlbmRpZgogICAgIH0K
IAotICAgIHZvaWQgcmVuZGVyKEF1ZGlvQnVzKiwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzLCBjb25zdCBXZWJDb3JlOjpBdWRpb0lPUG9zaXRpb24mIG91
dHB1dFBvc2l0aW9uKSBvdmVycmlkZQorICAgIHZvaWQgc3RvcCgpCiAgICAgewotICAgICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgYXV0
byByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iuc3RvcCgpOworICAgICAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CisjZW5kaWYKKyAgICB9
CiAKLSAgICAgICAgaWYgKG1fcHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1bFNodXRkb3duKQotICAg
ICAgICAgICAgcmV0dXJuOworICAgIGJvb2wgaXNQbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gbV9p
c1BsYXlpbmc7IH0KIAotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgZnJhbWVzVG9Qcm9jZXNzID0gbV9maWZvLnB1
bGwoZGVzdGluYXRpb25CdXMsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCFmcmFtZXNUb1Byb2Nlc3MpCi0gICAgICAgICAgICByZXR1cm47Citwcml2YXRlOgorICAg
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVj
dGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVp
bnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhh
cmR3YXJlU2FtcGxlUmF0ZSkKKyAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAg
ICAgICAgLCBtX2lkKGlkZW50aWZpZXIpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICwg
bV9hdWRpb091dHB1dFVuaXRBZGFwdG9yKCp0aGlzKQorICAgICAgICAsIG1fcmluZ0J1ZmZlciht
YWtlVW5pcXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRS
aW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpKQorI2VuZGlmCisgICAgeworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgICAgICBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY29uZmlndXJlKGhhcmR3
YXJlU2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisjZW5kaWYKKyAgICB9CiAK
LSAgICAgICAgVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiBidWZmZXJzOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVzdGluYXRpb25CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsg
KytpKSB7Ci0gICAgICAgICAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUo
c2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgICAgICBidWZmZXJzLmFw
cGVuZCgqbWVtb3J5KTsKLSAgICAgICAgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFNoYXJl
ZFJpbmdCdWZmZXJTdG9yYWdlJiBzdG9yYWdlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZSY+KG1fcmluZ0J1ZmZlci0+c3RvcmFnZSgp
KTsKKyAgICB9CiAKKyAgICBPU1N0YXR1cyByZW5kZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2
NF90IGhvc3RUaW1lLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9E
YXRhKQorICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0IGlzIHVuZm9ydHVuYXRlIHdlIGhhdmUg
dG8gZGlzcGF0Y2ggdG8gdGhlIG1haW4gdGhlYWQgaGVyZS4gV2Ugc2hvdWxkIGJlIGFibGUgdG8g
SVBDIHN0cmFpZ2h0IGZyb20gdGhlCiAgICAgICAgIC8vIHJlbmRlciB0aHJlYWQgYnV0IHRoaXMg
aXMgbm90IHN1cHBvcnRlZCBieSBzZW5kV2l0aEFzeW5jUmVwbHkoKS4KLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZXNU
b1Byb2Nlc3MsIG91dHB1dFBvc2l0aW9uLCBidWZmZXJzID0gV1RGTW92ZShidWZmZXJzKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgIFJlbW90ZUF1ZGlvQnVzRGF0YSBidXNEYXRhIHsgZnJhbWVz
VG9Qcm9jZXNzLCBvdXRwdXRQb3NpdGlvbiwgYnVmZmVycy5tYXAoW10oYXV0byYgbWVtb3J5KSB7
IHJldHVybiBtZW1vcnkuY29weVJlZigpOyB9KSB9OwotICAgICAgICAgICAgQVNTRVJUKGZyYW1l
c1RvUHJvY2Vzcyk7Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpSZW5k
ZXJCdWZmZXIoYnVzRGF0YSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgYnVmZmVycyA9IFdURk1vdmUoYnVmZmVycyksIGZyYW1lc1RvUHJvY2Vzc10oKSB7
Ci0gICAgICAgICAgICAgICAgYXV0byBhdWRpb0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoYnVmZmVy
cy5zaXplKCksIGZyYW1lc1RvUHJvY2VzcywgZmFsc2UpOwotICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBidWZmZXJzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAg
ICAgICBhdWRpb0J1cy0+c2V0Q2hhbm5lbE1lbW9yeShpLCBzdGF0aWNfY2FzdDxmbG9hdCo+KGJ1
ZmZlcnNbaV0tPmRhdGEoKSksIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgICAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2ZpZm9Mb2NrKTsKLSAgICAgICAgICAgICAgICBtX2ZpZm8u
cHVzaChhdWRpb0J1cy5nZXQoKSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2FtcGxlVGltZSwgaG9zdFRpbWUsIG51bWJl
ck9mRnJhbWVzLCBpb0RhdGFdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24u
Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5OjpSZXF1ZXN0QnVmZmVyKHNhbXBsZVRpbWUsIGhvc3RUaW1lLCBudW1iZXJP
ZkZyYW1lcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
aW9EYXRhXShhdXRvIHN0YXJ0RnJhbWUsIGF1dG8gbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwgYXV0
byBib3VuZHNTdGFydEZyYW1lLCBhdXRvIGJvdW5kc0VuZEZyYW1lKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBtX3JpbmdCdWZmZXItPnNldEN1cnJlbnRGcmFtZUJvdW5kcyhib3VuZHNTdGFy
dEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7CisgICAgICAgICAgICAgICAgbV9yaW5nQnVmZmVyLT5m
ZXRjaChpb0RhdGEsIG51bWJlck9mRnJhbWVzVG9SZW5kZXIsIHN0YXJ0RnJhbWUpOwogICAgICAg
ICAgICAgfSwgbV9pZC50b1VJbnQ2NCgpKTsKICAgICAgICAgfSk7Ci0gICAgfQogCi0gICAgdm9p
ZCBpc1BsYXlpbmdEaWRDaGFuZ2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1fcHJv
dGVjdFRoaXNEdXJpbmdHcmFjZWZ1bFNodXRkb3duKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCkpOwotICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocmVmQ291bnQoKSA9PSAxKTsKLSAgICAgICAgICAgIG1fcHJvdGVjdFRoaXNEdXJpbmdH
cmFjZWZ1bFNodXRkb3duID0gbnVsbHB0cjsgLy8gRGVsZXRlcyAidGhpcyIuCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpc1BsYXlpbmcgPSBtX2Rlc3RpbmF0aW9uLT5p
c1BsYXlpbmcoKSwgaWRlbnRpZmllciA9IG1faWQudG9VSW50NjQoKV0gewotICAgICAgICAgICAg
bV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OkRpZENoYW5nZUlzUGxheWluZyhpc1BsYXlpbmcpLCBpZGVudGlmaWVyKTsK
LSAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBub0VycjsKICAgICB9CisjZW5kaWYKIAogICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvbjsKICAgICBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllciBtX2lkOwotICAgIFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9u
PiBtX2Rlc3RpbmF0aW9uOwogICAgIFJlZlB0cjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiBtX3By
b3RlY3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93bjsKLSAgICBMb2NrIG1fZmlmb0xvY2s7Ci0g
ICAgV2ViQ29yZTo6UHVzaFB1bGxGSUZPIG1fZmlmbzsKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgbV9hdWRpb091dHB1dFVuaXRBZGFw
dG9yOworCisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1fZGVzY3JpcHRp
b247CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOwor
I2VuZGlmCisKKyAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKIH07CiAKIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcihHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQpAQCAtMTQ4LDE0ICsxNjcsMTMgQEAg
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlAKIAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6
On5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKIAotdm9pZCBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBT
dHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWlu
dDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwKLSAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCB1bnNp
Z25lZCBmcmFtZXNQZXJCdWZmZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJp
bmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMy
X3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdh
cmVTYW1wbGVSYXRlLAorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gbmV3
SUQgPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZl
KCk7Ci0gICAgYXV0byBkZXN0aW5hdGlvbiA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0
ZShtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIG5ld0lELCBpbnB1dERldmljZUlkLCBudW1i
ZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwot
ICAgIGF1dG8gZnJhbWVzUGVyQnVmZmVyID0gZGVzdGluYXRpb24tPmZyYW1lc1BlckJ1ZmZlcigp
OworICAgIGF1dG8gZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUo
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJk
d2FyZVNhbXBsZVJhdGUpOwogICAgIG1fYXVkaW9EZXN0aW5hdGlvbnMuYWRkKG5ld0lELCBXVEZN
b3ZlKGRlc3RpbmF0aW9uKSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQsIGZyYW1lc1Bl
ckJ1ZmZlcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQpOwogfQogCiB2b2lkIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE4Niw2ICsyMDQsMTQgQEAgdm9pZCBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbkkKICAgICBjb21wbGV0aW9uSGFuZGxlcihpc1BsYXlpbmcpOwogfQogCisj
aWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjph
dWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYgaXBjSGFuZGxlLCBj
b25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1aW50
NjRfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICBpZiAoYXV0byogaXRlbSA9IG1fYXVkaW9EZXN0
aW5hdGlvbnMuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICBpdGVtLT5hdWRpb1NhbXBsZXNTdG9y
YWdlQ2hhbmdlZChpcGNIYW5kbGUsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCmlu
ZGV4IDExYjRiZWYxMDQxYjdhMDhhZjNiMWIwOWRlMzg0YzAzZDU4OTNkMWUuLmUyMmMxMGFjZTlh
ODg1NmYwY2IwODg3NzJiYjE0NWJlYmYxNjBmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5oCkBAIC0zNCw2ICszNCwxMiBAQAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKK30KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czsKQEAgLTQ2LDI1ICs1MiwyNSBAQCBwdWJsaWM6CiAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwogICAgIH5SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcigpOwogCi0gICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNv
bnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCB1bnNp
Z25lZCBmcmFtZXNQZXJCdWZmZXIpPiYmKTsKLSAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRp
b24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAg
IHZvaWQgc3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotCi0gICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVu
Y29kZXIpCi0gICAgewotICAgICAgICBkaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2RlciwgZW5jb2Rlcik7Ci0gICAgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
RnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKTsKIAorICAgIHZvaWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25z
dCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywg
dWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQg
aGFyZHdhcmVTYW1wbGVSYXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyKT4mJik7CisgICAgdm9pZCBkZWxldGVBdWRpb0Rlc3RpbmF0aW9u
KFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgc3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2
b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNv
cmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsK
KyNlbmRpZgorCiAgICAgSGFzaE1hcDxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwg
UmVmPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+PiBtX2F1ZGlvRGVzdGluYXRpb25zOwogICAgIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKIH07
CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmU7Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggYmMwNWFlMTE3OWFh
MmFkMzRlMzMzODUzMmJlZGI1ZTZiNGQ0MjNhMC4uMmJjOWVkYzcxYjk0ZTg2NzljYzIwYjYyZDgx
YTkzMmNlMzE1NWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgpAQCAtMjQsMTQgKzI0LDE0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCX0FVRElPKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlciBOb3RSZWZDb3VudGVkIHsKLQotICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5n
IGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3Qg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgZnJhbWVz
UGVyQnVmZmVyKSBTeW5jaHJvbm91cwotCisgICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJp
bmcgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJf
dCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2Fy
ZVNhbXBsZVJhdGUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
IGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFz
eW5jCiAKICAgICBTdGFydEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9u
b3VzCiAgICAgU3RvcEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3Vz
Ci0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChX
ZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykK
KyNlbmRpZgogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDBlZGExNWEzNWZkYmE1YzcyMjQyYzEzODU4ZjczOGM0YWM2
ZjhhMGUuLjQ5ODA4MzZiMGVjMzc0M2YzNGYxYTI1YzMwMDZjZDZkY2VhNTQ3MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMCw3
ICsxNDMwLDYgQEAKIAkJOUI1NDk5QjIyMzYyQTdFQzAwREY4QkE1IC8qIF9XS1RleHRNYW5pcHVs
YXRpb25FeGNsdXNpb25SdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjU0OTlCMDIzNjJBN0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlv
bkV4Y2x1c2lvblJ1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5QjVCRUMyNjI0MDBGNEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMjQy
NDAwRjRBOTAwNzBDNkVGIC8qIFdlYk1lZGlhU3RyYXRlZ3kuaCAqLzsgfTsKIAkJOUI1QkVDMkEy
NDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMjgyNDAxMDE1ODAw
NzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oICovOyB9OwotCQk5QjVCRUMz
MTI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9CdXNEYXRhLmggaW4gQ29weUZpbGVzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNUJFQzMwMjQwMTAyMjIwMDcwQzZF
RiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCAqLzsgfTsKIAkJOUVDNTMyQTMyNDQ3RkJBRDAwMjE1
MjE2IC8qIEdlb2xvY2F0aW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUVDNTMyQTIyNDQ3RkJBRDAwMjE1MjE2IC8qIEdlb2xvY2F0
aW9uSWRlbnRpZmllci5oICovOyB9OwogCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tD
b250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTAy
QTcwODFFQzBFRUU5MDBEODFEODIgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5w
bHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNy
b21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiICovOyB9OwpAQCAtMjEzOSw3ICsyMTM4
LDYgQEAKIAkJCQkyREI5NjA1MzIzOTg4NkMxMDAxMDI3OTEgLyogY29tLmFwcGxlLldlYktpdC5H
UFUuc2IgaW4gQ29weUZpbGVzICovLAogCQkJCUE3OENDRERCMTkzQUM5RjgwMDVFQ0MyNSAvKiBj
b20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtpbmcuc2IgaW4gQ29weUZpbGVzICovLAogCQkJCUE3OEND
RERDMTkzQUM5RkIwMDVFQ0MyNSAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgaW4g
Q29weUZpbGVzICovLAotCQkJCTlCNUJFQzMxMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRp
b0J1c0RhdGEuaCBpbiBDb3B5RmlsZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00NTQyLDcgKzQ1NDAsNiBAQAogCQk5QjVC
RUMyODI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QjVCRUMyOTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNUJFQzJFMjQw
MTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk5QjVCRUMzMDI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVk
aW9CdXNEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvQnVzRGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM1OUQ2QzFFRkNDQ0I2MDAxRThEMDkgLyogQ2FsbGJh
Y2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsYmFja0lELmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAvKiBP
cHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0
aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlFQzUzMkEy
MjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9sb2NhdGlvbklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2VvbG9jYXRpb25JZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01NTU3LDcgKzU1NTQsNiBAQAogCQkJCTA3OTIzMTMxMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwICovLAogCQkJCTA3OTIzMTMyMjM5QjNCMEMwMDk1OThF
MiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCAqLywKIAkJCQkwN0IxRDA0QjIzRDM4RkNF
MDAzOTlBNkUgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluICovLAotCQkJ
CTlCNUJFQzMwMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCAqLywKIAkJ
CQk5QjVCRUMyOTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmNwcCAqLywKIAkJCQk5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0
aW5hdGlvblByb3h5LmggKi8sCiAJCQkJOUI1QkVDMkUyNDAxMDE4QzAwNzBDNkVGIC8qIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvQnVzRGF0YS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmMyZjBjNjYwNjk2YWUzNDg2MWMwYjI0ODBhZDA1
N2ZlYTE5NjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxsYmFjay5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgUmVtb3RlQXVk
aW9CdXNEYXRhIHsKLSAgICB1aW50NjRfdCBmcmFtZXNUb1Byb2Nlc3MgeyAwIH07Ci0gICAgV2Vi
Q29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91dHB1dFBvc2l0aW9uOwotICAgIFZlY3RvcjxSZWY8U2hh
cmVkTWVtb3J5Pj4gY2hhbm5lbEJ1ZmZlcnM7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNv
ZGVyPgotICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICBlbmNvZGVyIDw8IGZyYW1lc1RvUHJvY2VzczsKLSAgICAgICAgZW5jb2RlciA8PCBvdXRw
dXRQb3NpdGlvbjsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oY2hh
bm5lbEJ1ZmZlcnMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGFu
bmVsQnVmZmVycy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5k
bGUgaGFuZGxlOwotICAgICAgICAgICAgY2hhbm5lbEJ1ZmZlcnNbaV0tPmNyZWF0ZUhhbmRsZSho
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKLSAgICAgICAgICAg
IGVuY29kZXIgPDwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGNo
YW5uZWxCdWZmZXJzW2ldLT5zaXplKCkgfTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIERlY29kZXI+Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVBdWRpb0J1c0RhdGEmIHJlc3VsdCkKLSAg
ICB7Ci0gICAgICAgIHVpbnQ2NF90IGZyYW1lc1RvUHJvY2VzczsKLSAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShmcmFtZXNUb1Byb2Nlc3MpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICByZXN1bHQuZnJhbWVzVG9Qcm9jZXNzID0gZnJhbWVzVG9Qcm9jZXNzOwotCi0gICAg
ICAgIFdlYkNvcmU6OkF1ZGlvSU9Qb3NpdGlvbiBvdXRwdXRQb3NpdGlvbjsKLSAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShvdXRwdXRQb3NpdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIHJlc3VsdC5vdXRwdXRQb3NpdGlvbiA9IG91dHB1dFBvc2l0aW9uOwotCi0g
ICAgICAgIHVpbnQ2NF90IHNpemUgPSAwOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNp
emUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSBpcGNIYW5kbGU7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKGF1dG8gbWVt
b3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkV3JpdGUpKQotICAgICAgICAgICAgICAgIHJlc3VsdC5jaGFubmVsQnVm
ZmVycy5hcHBlbmQobWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRleCA4NDA0YzQ4ZTFjMmU0ODJhYmNk
MjRlNTVkMmNjOTEzYmQyNjdlNzQxLi44NDAyZGVlZjhhYWRiYzllMzQ0NzRkODA4NGU1NmY0ZDBk
NjYwNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC0zMCwxNiAr
MzAsMjEgQEAKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNs
dWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9CdXMu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KKworI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotdXNpbmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRpb0J1czsKKy8vIEFsbG9jYXRlIGEgcmlu
ZyBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gMiBzZWNvbmRzIG9mIGF1ZGlvLgorY29u
c3RleHByIHNpemVfdCByaW5nQnVmZmVyU2l6ZUluU2Vjb25kID0gMjsKKwogdXNpbmcgQXVkaW9E
ZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb247CiB1c2luZyBBdWRpb0lPQ2Fs
bGJhY2sgPSBXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2s7CiAKQEAgLTUwLDE2ICs1NSwxNyBAQCBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpjcmVhdGUo
QXVkaW9JT0NhbGxiYWNrJiBjYWxsYgogfQogCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBj
b25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVs
cywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKLSAg
ICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2Nv
YShjYWxsYmFjaywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgZmFsc2UpCisg
ICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZTxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KG1ha2VV
bmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KHRoaXMpKSkKKyNlbmRpZgogewogICAg
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQ7Ci0gICAgdW5z
aWduZWQgZnJhbWVzUGVyQnVmZmVyIHsgMCB9OwogCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAg
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCi0gICAgICAgIE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihpbnB1dERl
dmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNh
bXBsZVJhdGUpLAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQsIGZyYW1lc1Bl
ckJ1ZmZlciksIDApOworICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNh
bXBsZVJhdGUoKSksCisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25JRCksIDApOwog
CiAgICAgYXV0byBvZmZUaHJlYWRSZW5kZXJpbmcgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewogICAgICAgICB3aGlsZSAoIW1fdGhyZWFkVGFza1F1
ZXVlLmlzS2lsbGVkKCkpIHsKQEAgLTcyLDcgKzc4LDE0IEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KEF1ZGlvSU9DYWxsYmFjayYgY2Fs
bGJhCiAgICAgY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgdGhpcywgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fZGVzdGluYXRp
b25JRCA9IGRlc3RpbmF0aW9uSUQ7Ci0gICAgbV9mcmFtZXNQZXJCdWZmZXIgPSBmcmFtZXNQZXJC
dWZmZXI7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gc3RyZWFtRm9ybWF0OworICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihz
dHJlYW1Gb3JtYXQpOworICAgIG1fbnVtYmVyT2ZGcmFtZXMgPSBoYXJkd2FyZVNhbXBsZVJhdGUo
KSAqIHJpbmdCdWZmZXJTaXplSW5TZWNvbmQ7CisgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShz
dHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0g
bWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CisjZW5kaWYKIH0K
IAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5KCkKQEAgLTkyLDM2ICsxMDUsNTQgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KCkKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0
Y2hUb1JlbmRlclRocmVhZCkKIHsKICAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQgPSBXVEZN
b3ZlKGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpOworICAgIGJvb2wgaXNQbGF5aW5nOwogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uSUQpLAotICAgICAg
ICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0
aW5hdGlvbjo6UmVwbHkobV9pc1BsYXlpbmcpLCAwKTsKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdGFydEF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGlz
UGxheWluZyksIDApOworICAgIHNldElzUGxheWluZyhpc1BsYXlpbmcpOwogfQogCiB2b2lkIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcCgpCiB7CisgICAgYm9vbCBpc1BsYXlpbmc7
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6U3RvcEF1ZGlvRGVzdGluYXRpb24obV9kZXN0aW5hdGlvbklEKSwK
LSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVk
aW9EZXN0aW5hdGlvbjo6UmVwbHkobV9pc1BsYXlpbmcpLCAwKTsKKyAgICAgICAgTWVzc2FnZXM6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVkaW9EZXN0aW5hdGlvbjo6UmVw
bHkoaXNQbGF5aW5nKSwgMCk7CisgICAgc2V0SXNQbGF5aW5nKGlzUGxheWluZyk7CiAgICAgbV9k
aXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHk6OnJlbmRlckJ1ZmZlcihjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVz
RGF0YSYgYXVkaW9CdXNEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6cmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRp
bWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2
NF90LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQoYXVkaW9CdXNEYXRh
LmZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgQVNTRVJUKGF1ZGlvQnVzRGF0YS5jaGFubmVsQnVmZmVy
cy5zaXplKCkpOwotICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGF1ZGlvQnVz
RGF0YS5jaGFubmVsQnVmZmVycy5zaXplKCksIGF1ZGlvQnVzRGF0YS5mcmFtZXNUb1Byb2Nlc3Ms
IGZhbHNlKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXVkaW9CdXNEYXRhLmNoYW5u
ZWxCdWZmZXJzLnNpemUoKTsgKytpKQotICAgICAgICBhdWRpb0J1cy0+c2V0Q2hhbm5lbE1lbW9y
eShpLCAoZmxvYXQqKWF1ZGlvQnVzRGF0YS5jaGFubmVsQnVmZmVyc1tpXS0+ZGF0YSgpLCBhdWRp
b0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgIG1fY2FsbGJhY2sucmVuZGVyKDAsIGF1
ZGlvQnVzLmdldCgpLCBhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzLCBhdWRpb0J1c0RhdGEu
b3V0cHV0UG9zaXRpb24pOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBpZiAoIWhh
c0Vub3VnaEZyYW1lcyhudW1iZXJPZkZyYW1lcykpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KDAsIDAsIDAsIDApOworCisgICAgbV9yZW5kZXJDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5zZXRTYW1wbGVDb3Vu
dChudW1iZXJPZkZyYW1lcyk7CisKKyAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlcihz
YW1wbGVUaW1lLCBob3N0VGltZSwgbnVtYmVyT2ZGcmFtZXMsIG1fYXVkaW9CdWZmZXJMaXN0LT5s
aXN0KCkpOwogfQogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hhbmdl
SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHk6OnJlbmRlck9uUmVuZGVyaW5nVGhlYWQoc2l6ZV90IGZyYW1lc1RvUmVuZGVyKQogewotICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3JlbmRlckNvbXBsZXRpb25I
YW5kbGVyKTsKKworICAgIGF1dG8gc3RhcnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOworCisgICAg
QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJPblJlbmRlcmluZ1RoZWFkKGZyYW1lc1RvUmVu
ZGVyKTsKKyAgICBtX2N1cnJlbnRGcmFtZSArPSBmcmFtZXNUb1JlbmRlcjsKKworICAgIG1fcmlu
Z0J1ZmZlci0+c3RvcmUobV9hdWRpb0J1ZmZlckxpc3QtPmxpc3QoKSwgZnJhbWVzVG9SZW5kZXIs
IHN0YXJ0RnJhbWUpOworCisgICAgdWludDY0X3QgYm91bmRzU3RhcnRGcmFtZTsKKyAgICB1aW50
NjRfdCBib3VuZHNFbmRGcmFtZTsKKyAgICBtX3JpbmdCdWZmZXItPmdldEN1cnJlbnRGcmFtZUJv
dW5kcyhib3VuZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7CisgICAgbV9yZW5kZXJDb21w
bGV0aW9uSGFuZGxlcihzdGFydEZyYW1lLCBmcmFtZXNUb1JlbmRlciwgYm91bmRzU3RhcnRGcmFt
ZSwgYm91bmRzRW5kRnJhbWUpOwogfQorI2VuZGlmCiAKIC8vIElQQzo6Q29ubmVjdGlvbjo6VGhy
ZWFkTWVzc2FnZVJlY2VpdmVyCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlz
cGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKQEAgLTEzMyw2ICsxNjQsMjgg
QEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRpc3BhdGNoVG9UaHJlYWQoRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgbV90aHJlYWRUYXNrUXVldWUuYXBwZW5kKFdURk1v
dmUodGFzaykpOwogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlKQorewor
ICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoc3RvcmFnZSkKKyAgICAg
ICAgc3RvcmFnZS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisKKyAgICAvLyBGSVhNRTogU2VuZCB0aGUgYWN0dWFsIGRhdGEgc2l6ZSB3
aXRoIElQQ0hhbmRsZS4KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisgICAgdWludDY0
X3QgZGF0YVNpemUgPSBoYW5kbGUuc2l6ZSgpOworI2Vsc2UKKyAgICB1aW50NjRfdCBkYXRhU2l6
ZSA9IDA7CisjZW5kaWYKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1G
b3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7
CisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKHN0cmVh
bUZvcm1hdCk7CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6QXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQgeyBtX2Rlc3RpbmF0aW9u
SUQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9
LCBzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMgfSwgMCk7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAppbmRleCBjNGFk
Yjc1NjBkNDYzNzU4ZWU3MTU2ZjAxZWVjOTk1OGQzY2ZkZTY2Li5kYmU0N2Q1NGNiYjk5MDFhYTcy
NmJjZWFkOGQ0MzU1NWNjODk2OGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgK
QEAgLTI4LDI0ICsyOCwzNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
Ql9BVURJTykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJSZW1vdGVBdWRp
b0J1c0RhdGEuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9B
dWRpb0Rlc3RpbmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4K
ICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgorI2luY2x1ZGUgIlNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2Eu
aD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CiAjZW5kaWYK
IAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0FSaW5nQnVmZmVyOworY2xhc3MgV2ViQXVk
aW9CdWZmZXJMaXN0OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5IDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24sIHB1
YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IHB1Ymxp
YyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EKKyAgICAsIHB1YmxpYyBTaGFyZWRSaW5n
QnVmZmVyU3RvcmFnZTo6Q2xpZW50CisjZWxzZQorICAgIDogcHVibGljIFdlYkNvcmU6OkF1ZGlv
RGVzdGluYXRpb24KKyNlbmRpZgorICAgICwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFk
TWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkpOwogcHVibGljOgotICAgIHVzaW5nIEF1ZGlvQnVzID0gV2ViQ29yZTo6
QXVkaW9CdXM7CiAgICAgdXNpbmcgQXVkaW9JT0NhbGxiYWNrID0gV2ViQ29yZTo6QXVkaW9JT0Nh
bGxiYWNrOwogICAgIHVzaW5nIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OnJlZjsKICAgICB1
c2luZyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpkZXJlZjsKQEAgLTU3LDE2ICs3MCwyMyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KIAotICAgIHZvaWQgcmVuZGVyQnVm
ZmVyKGNvbnN0IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRpZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxheWluZyk7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCByZXF1ZXN0QnVmZmVyKGRvdWJsZSBzYW1w
bGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgbnVtYmVyT2ZG
cmFtZXNUb1JlbmRlciwgdWludDY0X3QgYm91bmRzU3RhcnRGcmFtZSwgdWludDY0X3QgYm91bmRz
RW5kRnJhbWUpPiYmKTsKKyNlbmRpZgogCiBwcml2YXRlOgotICAgIC8vIFdlYkNvcmU6OkF1ZGlv
RGVzdGluYXRpb24KLSAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgp
PiYmKT4mJiBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3Ao
KSBvdmVycmlkZTsKLSAgICBib29sIGlzUGxheWluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQ
bGF5aW5nOyB9Ci0gICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2FtcGxlUmF0ZTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fZnJhbWVzUGVyQnVmZmVyOyB9CisgICAgdm9pZCBzdGFydChGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRlclRocmVhZCkg
ZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisg
ICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KKyAgICB1bnNp
Z25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisjZW5kaWYK
KworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVt
b3J5KikgZmluYWw7CisgICAgdm9pZCByZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBmcmFt
ZXNUb1JlbmRlcikgZmluYWw7CisjZW5kaWYKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKQEAgLTc2LDExICs5NiwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmTWVz
c2FnZVJlY2VpdmVyKCkgZmluYWwgeyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpyZWYoKTsg
fQogICAgIHZvaWQgZGVyZWZNZXNzYWdlUmVjZWl2ZXIoKSBmaW5hbCB7IFdlYkNvcmU6OkF1ZGlv
RGVzdGluYXRpb246OmRlcmVmKCk7IH0KIAotICAgIEF1ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFj
azsKLSAgICBmbG9hdCBtX3NhbXBsZVJhdGUgeyAwLiB9OwotICAgIHVuc2lnbmVkIG1fZnJhbWVz
UGVyQnVmZmVyIHsgMCB9OwogICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIG1f
ZGVzdGluYXRpb25JRDsKLSAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKKworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIHVpbnQ2NF90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+IG1fYXVkaW9CdWZm
ZXJMaXN0OworICAgIHVpbnQ2NF90IG1fY3VycmVudEZyYW1lIHsgMCB9OworICAgIFdURjo6RnVu
Y3Rpb248dm9pZCh1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk+IG1fcmVu
ZGVyQ29tcGxldGlvbkhhbmRsZXI7CisjZW5kaWYKKwogICAgIEZ1bmN0aW9uPHZvaWQoRnVuY3Rp
b248dm9pZCgpPiYmKT4gbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkOwogICAgIFJlZlB0cjxUaHJl
YWQ+IG1fcmVuZGVyVGhyZWFkOwogICAgIENyb3NzVGhyZWFkUXVldWU8RnVuY3Rpb248dm9pZCgp
Pj4gbV90aHJlYWRUYXNrUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGFlMWZjNzA2OTg3MTRjODcwNWU1ODI0ODE5NDY1YmFiMzI2
M2YwNjEuLmJmMDRjMWM0NTBhZDZjZTZmOWMyOGU2MjQwYzYwMmMxNDI3ZDQ5NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNCwxMCAr
MjQsOSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKIAog
bWVzc2FnZXMgLT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IE5vdFJlZkNvdW50ZWQgewot
Ci0gICAgUmVuZGVyQnVmZmVyKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVzRGF0YSBkYXRh
KSAtPiAoKSBBc3luYwotICAgIERpZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxheWluZykKLQor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJlcXVlc3RCdWZmZXIoZG91YmxlIHNhbXBsZVRpbWUs
IHVpbnQ2NF90IGhvc3RUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykgLT4gKHVpbnQ2NF90
IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzVG9SZW5kZXIsIHVpbnQ2NF90IGJv
dW5kc1N0YXJ0RnJhbWUsIHVpbnQ2NF90IGJvdW5kc0VuZEZyYW1lKSBBc3luYworI2VuZGlmCiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCmluZGV4
IDg3OTlmMTk4NDcxNDExZWM2ZjczOWEzODc5MzY0ZDI0NzUxMmVhNDQuLjJlMGE2YjFmODM5MzJh
ZTgzMzVkZjRlYWE0ZWI1MzVmODU4NzEyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlcjo6cHVzaFNhbXBsZXMoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBXZWIK
IAogICAgICAgICAvLyBBbGxvY2F0ZSBhIHJpbmcgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBjb250
YWluIDIgc2Vjb25kcyBvZiBhdWRpby4KICAgICAgICAgbV9udW1iZXJPZkZyYW1lcyA9IG1fZGVz
Y3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMjsKLSAgICAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0
ZShtX2Rlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbnVtYmVyT2ZGcmFtZXMpOwor
ICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKG1fZGVzY3JpcHRpb24sIG1fbnVtYmVyT2ZG
cmFtZXMpOwogICAgIH0KIAogICAgIEFTU0VSVChpczxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxp
c3Q+KGF1ZGlvRGF0YSkpOwo=
</data>
<flag name="commit-queue"
          id="427771"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411618</attachid>
            <date>2020-10-16 14:54:38 -0700</date>
            <delta_ts>2020-10-16 15:00:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>217715.patch</filename>
            <type>text/plain</type>
            <size>81758</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiYTE2MTBhMGEyY2IuLjI0NTA3YTQ4YThkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU1IEBACisyMDIwLTEwLTE2ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+
CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9jZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRy
YW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8gZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9j
ZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVjb3VwbGUgdGhlIGF1ZGlvIG91dHB1dCB1bml0IG1hbmFnZW1lbnQg
ZnJvbSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2Egc28gdGhhdAorICAgICAgICB3ZSBjYW4gcnVuIGl0
IHJlbW90ZWx5IGluIG90aGVyIHByb2Nlc3NlcywgbGlrZSB0aGUgR1BVIHByb2Nlc3MuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaDogRXhwb3J0
IGhhcmR3YXJlU2FtcGxlUmF0ZSgpLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb246OmNyZWF0ZSk6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBjYWxsLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29j
b2EpOiBBZGQgYSBwYXJhbWV0ZXIKKyAgICAgICAgY29uZmlndXJlQXVkaW9PdXRwdXRVbml0IHNv
IHRoYXQgd2UgY2FuIGRpc2FibGUgdGhlIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgaW4KKyAgICAg
ICAgQXVkaW9EZXN0aW5hdGlvbkNvY29hIHdoZW4gd2UgbmVlZCB0byBydW4gdGhlIEF1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IgaW4gYW5vdGhlciBwcm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNv
Y29hOjpnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICBSZW5hbWUgc2V0
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKCkgdG8gZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKCkgYmVjYXVzZQorICAgICAgICB0aGUgZnVuY3Rpb24gZXNzZW50aWFsbHkgcXVlcmll
cyB0aGUgZGVzY3JpcHRpb24uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6Omhhc0Vub3VnaEZyYW1lcyBjb25zdCk6IEFkZCB0aGlzIGZ1bmN0aW9uCisgICAgICAgIHNv
IHRoYXQgYSBzdWJjbGFzcyBjYW4gY2hlY2sgd2hldGhlciB0aGUgRklGTyBoYXMgZW5vdWdoIGF1
ZGlvIHNhbXBsZXMgdG8gcmVuZGVyLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpyZW5kZXIpOiBSZXBsYWNlIHRoZSBBdWRpb1RpbWVTdGFtcCogcGFyYW1ldGVyCisg
ICAgICAgIGJlY2F1c2Ugd2Ugb25seSBuZWVkIHR3byBmaWVsZHMgb2YgQXVkaW9UaW1lU3RhbXAg
aW4gdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6fkF1ZGlvRGVzdGluYXRpb25Db2NvYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJv
Yyk6IERlbGV0ZWQuIFRoaXMgZnVuY3Rpb24gaXMgbW92ZWQgdG8KKyAgICAgICAgQXVkaW9PdXRw
dXRVbml0QWRhcHRvci4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6
b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b091dHB1dFVuaXRBZGFwdG9yOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6On5BdWRpb091dHB1dFVuaXRBZGFwdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OnN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6aW5wdXRQcm9jKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNv
bmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFk
YXB0b3JNYWMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9PdXRw
dXRVbml0QWRhcHRvcjo6Y29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvRGVz
dGluYXRpb25Db2NvYTo6dGljayk6CisKIDIwMjAtMTAtMTYgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCBhIGR1bW15IFdl
YkF1dGhuUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNjQxNDA1OTI1NDAxLi5l
YjRlMTdmMmU3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjAzLDE5ICsyMDMsMjAg
QEAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVN
YWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCiBwbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCitwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1w
bGVCdWZmZXJMaXN0LmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291
cmNlLm1tCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3Bw
CiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KIHBsYXRmb3JtL2F1ZGlvL2NvY29hL1dl
YkF1ZGlvQnVmZmVyTGlzdC5jcHAKLXBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9u
SU9TLmNwcCBAbm8tdW5pZnkKK3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFw
dG9ySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJ
T1MuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBA
bm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBAbm8t
dW5pZnkKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0J1c01hYy5tbQotcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCitwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRw
dXRVbml0QWRhcHRvck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJN
YWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcAog
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAxYTdiZWMzYmIyYy4u
NzRkZmU3NzI5ZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC02MzMsNiArNjMzLDcgQEAKIAkJMURBQjMxMTIyNTFENkJGMzAw
RkM5NDg1IC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEIzMUExMjM3OURDODMwMDg4M0ZERSAvKiBXZWJW
aWRlb0NvbnRhaW5lckxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMURBQjMxMTQyNTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxREFC
MzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxREFCMzExNTI1MUQ3NERCMDBG
Qzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9M
YXllck1hbmFnZXJPYmpDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMURCNjZEM0IyNTM3QTk1NjAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFk
YXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFE
QjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMURCQzFCNTYyMzQ3
QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFG
IC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFERDNCNEM2MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRl
b0xheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJP
YmpDLm1tICovOyB9OwogCQkxREY3RTgxRjI1MUE5RTA2MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTI4
LDcgKzQxMjksNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0ND
MkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDA2M0Y4MjFFMjNGQTg5MDA4
MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MDFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFS
ZWdpc3RyeS5jcHAgKi87IH07CiAJCUNEMDYzRjgzMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0
YVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDA2M0Y4MTFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5oICovOyB9Owot
CQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQz
RTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgKi87IH07CisJCUNEMEVFRTBF
MTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUw
MDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCAqLzsgfTsKIAkJQ0QxMUIz
RTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDExQjNFMDIy
N0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbSAqLzsg
fTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RF
QTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDE3QTQ1RDIxMzc0MDgx
MDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxN0E0NTkyMTM3NDAxNjAwNzlFQzdCIC8qIFVuaWZp
ZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKQEAgLTUzMDUsNyArNTMwNiw2IEBACiAJCUZEMzE2MEFC
MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzUxMkIwMjZGNzAwQzFBMzU5
IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggKi87IH07CiAJCUZEMzE2MEFEMTJCMDI2RjcwMEMx
QTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzcxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYklucHV0
QnVmZmVyLmggKi87IH07CiAJCUZEMzE2MEFGMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRo
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3
OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5oICovOyB9OwotCQlGRDMxNjBCRDEyQjAy
NzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1
ZGlvRGVzdGluYXRpb25NYWMuaCAqLzsgfTsKIAkJRkQzMTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8q
IEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1h
Yy5oICovOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJhbVRpbWVs
aW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDM1
OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggKi87IH07CiAJCUZE
NDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0YxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY3
NTUsNiArNjc1NSw4IEBACiAJCTFEMDAyNkE5MjM3NEY5RDkwMENBNkNERiAvKiBKU0VudGVyUGlj
dHVyZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2QzUgLyogUGljdHVyZUluUGljdHVyZVN1
cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBQjMxMTMyNTFENzI1QzAwRkM5NDg1IC8qIFZpZGVv
TGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEQjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRp
b091dHB1dFVuaXRBZGFwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMURCNjZEMzgyNTM2NzhFQTAwQjY3
MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVk
aW9PdXRwdXRVbml0QWRhcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFE
QkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFEQzU1M0ZEMjExQkExMkEwMDRCNzgwRSAvKiBOYXZpZ2F0b3JTaGFyZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdhdG9yU2hhcmUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRjIxMUJBODQxMDA0Qjc4MEUgLyogU2hhcmVEYXRh
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFyZURhdGEuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTQzMDIsOCArMTQzMDQsNyBAQAogCQlDRDA2M0Y4MDFFMjNGQTg5
MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbml0RGF0YVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0QwNjNGODExRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5pdERhdGFSZWdpc3RyeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBDOEI1ODIxNDFDOENBMDA2MkY1OUQgLyogTWVk
aWFDYXBhYmlsaXRpZXNJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFG
QTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxMUIzREYyMjdDQUFBOTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDExQjNFMDIy
N0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBX
ZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTY1NjgsOCArMTY1NjksNyBAQAogCQlGRDMxNjA3ODEyQjAyNkY3MDBDMUEzNTkgLyogVmVj
dG9yTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWZWN0b3JN
YXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwNzkxMkIwMjZGNzAw
QzFBMzU5IC8qIFZlY3Rvck1hdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmVjdG9yTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNjBCNTEyQjAy
NzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBBdWRpb0J1c01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1
OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvRGVzdGluYXRpb25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9PdXRwdXRVbml0QWRh
cHRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE2MEI4MTJCMDI3
MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRl
ck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQkExMkIwMjcyQTAwQzFB
MzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZGVEZyYW1lTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MzEw
LDEwICsyNzMxMCw5IEBACiAJCUNEMEVFRTBEMTQ3NDNFNDgwMDNFQUZBMiAvKiBpb3MgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUNEMEVFRTBCMTQ3NDNF
MzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCAqLywKLQkJCQlDRDBFRUUwQTE0
NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovLAogCQkJCUNENTU5NjhG
MTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwICovLAogCQkJCUNENTU5
NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuaCAqLywKKwkJCQlDRDBF
RUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgKi8s
CiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywK
IAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmgg
Ki8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSAqLywKQEAgLTI3Mzc4LDYgKzI3Mzc3LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQx
MzE1MTg0MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwICovLAog
CQkJCTQxMzE1MTg2MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCAq
LywKKwkJCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRv
ci5jcHAgKi8sCisJCQkJMURCNjZEMzcyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3IuaCAqLywKIAkJCQkwNzNCODc2MjFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1w
bGVCdWZmZXJMaXN0LmNwcCAqLywKIAkJCQkwNzNCODc2MzFFNDM4NTlEMDA3MUMwRUMgLyogQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmggKi8sCiAJCQkJMDczQjg3NjUxRTQzODU5RDAwNzFDMEVDIC8q
IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oICovLApAQCAtMzAyOTAsMTIgKzMwMjkxLDExIEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUZEMzE2MEI1MTJCMDI3MkEw
MEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAqLywKLQkJCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEz
NTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8sCi0JCQkJRkQzMTYwQjcxMkIwMjcyQTAw
QzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLywKIAkJCQlGRDMxNjBCODEyQjAyNzJB
MDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNwcCAqLywKIAkJCQlGRDMxNjBCOTEyQjAy
NzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggKi8sCiAJCQkJQ0QyRjRBMjUxOEQ4
QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAgKi8sCiAJCQkJQ0Qy
RjRBMjYxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oICovLAor
CQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yTWFj
LmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFj
Lm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAg
Ki8sCiAJCQkpOwpAQCAtMzA1NzYsNyArMzA1NzYsNiBAQAogCQkJCTgzQkQzQ0VFMjQ5OThFMDEw
MEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
N0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBp
biBIZWFkZXJzICovLAotCQkJCUZEMzE2MEJEMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3Rp
bmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAwODEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDgwMTJC
MDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMwNTkyLDYgKzMwNTkxLDcgQEAKIAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBD
MUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU3MTQ2N0IzMjRB
QkFFRjIwMEZCMkY1MCAvKiBBdWRpb05vZGVPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlT3V0cHV0LmggaW4gSGVhZGVycyAq
LywKKwkJCQkxREI2NkQzQjI1MzdBOTU2MDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUQxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlv
UGFyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzU2OTlFMjUyQ0YzNjIwMEUxQjk1NiAvKiBB
dWRpb1BhcmFtRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCOTg3MEMyNTIyNUY4
MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1NYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMzUyNTQsOCAr
MzUyNTQsOCBAQAogCQkJZmlsZXMgPSAoCiAJCQkJQTk3ODdDQjQxRjVGNUM2NjAwQzU1MUM2IC8q
IEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMUY3Qjcz
MTI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNENTU5NjkxMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0Zp
bGVSZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VB
RkEyIC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEOEE3QkJCMTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNERTNBODU3MTdGNjAyMDQwMEM1QkUyMCAv
KiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAppbmRleCAxNjBjNjU3
OGUxNWUuLjQxOTY1NTJkOTE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4gaW4gQXVkaW9EZXN0aW5hdGlvbiB0
byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUKICAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUo
KSBjb25zdCA9IDA7Ci0gICAgc3RhdGljIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUoKTsKIAogICAg
IHZpcnR1YWwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9u
Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmNwcAppbmRleCAxZDBmNGUyODgxMTguLjMzMzgzMmMyYjRjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC01Niw3ICs1Niw2IEBAIFJlZjxBdWRpb0Rlc3RpbmF0
aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywg
Y29uc3QKICAgICAgICAgcmV0dXJuIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y3JlYXRlT3ZlcnJp
ZGUoY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogCiAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0
UmVmKCpuZXcgQXVkaW9EZXN0aW5hdGlvbkNvY29hKGNhbGxiYWNrLCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBzYW1wbGVSYXRlKSk7Ci0gICAgZGVzdGluYXRpb24tPmNvbmZpZ3VyZSgpOwogICAg
IHJldHVybiBkZXN0aW5hdGlvbjsKIH0KIApAQCAtNzAsMTUgKzY5LDE2IEBAIHVuc2lnbmVkIGxv
bmcgQXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KCkKICAgICByZXR1cm4gQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkubWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKTsK
IH0KIAotQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9J
T0NhbGxiYWNrJiBjYWxsYmFjaywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSkKLSAgICA6IG1fb3V0cHV0VW5pdCgwKQorQXVkaW9EZXN0aW5hdGlvbkNv
Y29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBjb25m
aWd1cmVBdWRpb091dHB1dFVuaXQpCisgICAgOiBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoKnRo
aXMpCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgICwgbV9vdXRwdXRCdXMoQXVkaW9C
dXM6OmNyZWF0ZShudW1iZXJPZk91dHB1dENoYW5uZWxzLCBBdWRpb1V0aWxpdGllczo6cmVuZGVy
UXVhbnR1bVNpemUsIGZhbHNlKS5yZWxlYXNlTm9uTnVsbCgpKQogICAgICwgbV9yZW5kZXJCdXMo
QXVkaW9CdXM6OmNyZWF0ZShudW1iZXJPZk91dHB1dENoYW5uZWxzLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUpLnJlbGVhc2VOb25OdWxsKCkpCiAgICAgLCBtX2ZpZm8obWFrZVVu
aXF1ZVJlZjxQdXNoUHVsbEZJRk8+KG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZpZm9TaXplKSkK
ICAgICAsIG1fY29udGV4dFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKIHsKLSAgICBjb25maWd1cmUo
KTsKKyAgICBpZiAoY29uZmlndXJlQXVkaW9PdXRwdXRVbml0KQorICAgICAgICBtX2F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IuY29uZmlndXJlKGhhcmR3YXJlU2FtcGxlUmF0ZSgpLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKTsKIAogICAgIGF1dG8gaGFyZHdhcmVTYW1wbGVSYXRlID0gdGhpcy0+aGFy
ZHdhcmVTYW1wbGVSYXRlKCk7CiAgICAgaWYgKHNhbXBsZVJhdGUgIT0gaGFyZHdhcmVTYW1wbGVS
YXRlKSB7CkBAIC04NywxMSArODcsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZAogICAgIH0K
IH0KIAotQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKCkKLXsK
LSAgICBpZiAobV9vdXRwdXRVbml0KQotICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlz
cG9zZShtX291dHB1dFVuaXQpOwotfQorQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0
aW5hdGlvbkNvY29hKCkgPSBkZWZhdWx0OwogCiB1bnNpZ25lZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdAogewpAQCAtMTA3LDcgKzEwMyw3IEBA
IHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9u
PHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUCiB7CiAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpzdGFydCIpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IFdURk1v
dmUoZGlzcGF0Y2hUb1JlbmRlclRocmVhZCk7Ci0gICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9P
dXRwdXRVbml0U3RhcnQobV9vdXRwdXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1
ZGlvT3V0cHV0VW5pdEFkYXB0b3Iuc3RhcnQoKTsKIAogICAgIGlmICghcmVzdWx0KQogICAgICAg
ICBzZXRJc1BsYXlpbmcodHJ1ZSk7CkBAIC0xMTYsNyArMTEyLDcgQEAgdm9pZCBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBk
aXNwYXRjaFQKIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wKCkKIHsKICAgICBMT0co
TWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3AiKTsKLSAgICBPU1N0YXR1cyByZXN1
bHQgPSBBdWRpb091dHB1dFVuaXRTdG9wKG1fb3V0cHV0VW5pdCk7CisgICAgT1NTdGF0dXMgcmVz
dWx0ID0gbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLnN0b3AoKTsKICAgICBtX2Rpc3BhdGNoVG9S
ZW5kZXJUaHJlYWQgPSBudWxscHRyOwogCiAgICAgaWYgKCFyZXN1bHQpCkBAIC0xMzMsNyArMTI5
LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldElzUGxheWluZyhib29sIGlzUGxh
eWluZykKICAgICBtX2NhbGxiYWNrLmlzUGxheWluZ0RpZENoYW5nZSgpOwogfQogCi12b2lkIEF1
ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0KQordm9pZCBBdWRpb0Rlc3RpbmF0
aW9uQ29jb2E6OmdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24mIHN0cmVhbUZvcm1hdCkKIHsKICAgICBjb25zdCBpbnQgYnl0ZXNQZXJGbG9h
dCA9IHNpemVvZihGbG9hdDMyKTsKICAgICBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OwpAQCAt
MTU3LDIyICsxNTMsMjQgQEAgc3RhdGljIHZvaWQgYXNzaWduQXVkaW9CdWZmZXJzVG9CdXMoQXVk
aW9CdWZmZXIqIGJ1ZmZlcnMsIEF1ZGlvQnVzJiBidXMsIFVJbnQzMgogICAgIH0KIH0KIAorYm9v
bCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6Omhhc0Vub3VnaEZyYW1lcyhVSW50MzIgbnVtYmVyT2ZG
cmFtZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmlmby0+bGVuZ3RoKCkgPj0gbnVtYmVyT2ZG
cmFtZXM7Cit9CisKIC8vIFB1bGxzIG9uIG91ciBwcm92aWRlciB0byBnZXQgcmVuZGVyZWQgYXVk
aW8gc3RyZWFtLgotT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIoY29uc3Qg
QXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1
ZmZlckxpc3QqIGlvRGF0YSkKK09TU3RhdHVzIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVy
KGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwgVUludDMyIG51bWJlck9mRnJh
bWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKIHsKLSAgICBpZiAobV9maWZvLT5sZW5ndGgo
KSA8IG51bWJlck9mRnJhbWVzKQorICAgIGlmICghaGFzRW5vdWdoRnJhbWVzKG51bWJlck9mRnJh
bWVzKSkKICAgICAgICAgcmV0dXJuIG5vRXJyOwogCi0gICAgaWYgKHRpbWVzdGFtcCkgewotICAg
ICAgICBtX291dHB1dFRpbWVzdGFtcCA9IHsKLSAgICAgICAgICAgIFNlY29uZHMgeyB0aW1lc3Rh
bXAtPm1TYW1wbGVUaW1lIC8gc2FtcGxlUmF0ZSgpIH0sCi0gICAgICAgICAgICBNb25vdG9uaWNU
aW1lOjpmcm9tTWFjaEFic29sdXRlVGltZSh0aW1lc3RhbXAtPm1Ib3N0VGltZSkKLSAgICAgICAg
fTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9vdXRwdXRUaW1lc3RhbXAgPSBBdWRpb0lPUG9zaXRp
b24geyB9OworICAgIG1fb3V0cHV0VGltZXN0YW1wID0geworICAgICAgICBTZWNvbmRzIHsgc2Ft
cGxlVGltZSAvIHNhbXBsZVJhdGUoKSB9LAorICAgICAgICBNb25vdG9uaWNUaW1lOjpmcm9tTWFj
aEFic29sdXRlVGltZShob3N0VGltZSkKKyAgICB9OwogCiAgICAgYXV0byogYnVmZmVycyA9IGlv
RGF0YS0+bUJ1ZmZlcnM7Ci0gICAgVUludDMyIG51bWJlck9mQnVmZmVycyA9IGlvRGF0YS0+bU51
bWJlckJ1ZmZlcnM7CisgICAgYXV0byBudW1iZXJPZkJ1ZmZlcnMgPSBpb0RhdGEtPm1OdW1iZXJC
dWZmZXJzOwogCiAgICAgLy8gQXNzb2NpYXRlIHRoZSBkZXN0aW5hdGlvbiBkYXRhIGFycmF5IHdp
dGggdGhlIG91dHB1dCBidXMgdGhlbiBmaWxsIHRoZSBGSUZPLgogICAgIGFzc2lnbkF1ZGlvQnVm
ZmVyc1RvQnVzKGJ1ZmZlcnMsIG1fb3V0cHV0QnVzLmdldCgpLCBudW1iZXJPZkJ1ZmZlcnMsIG51
bWJlck9mRnJhbWVzLCAwLCBudW1iZXJPZkZyYW1lcyk7CkBAIC0yMTAsMTMgKzIwOCw2IEBAIHZv
aWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBm
cmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNr
Ci1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0
YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCogdGlt
ZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBhdXRvKiBhdWRpb091dHB1dCA9IHN0YXRpY19j
YXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVzZXJEYXRhKTsKLSAgICByZXR1cm4gYXVkaW9P
dXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9mRnJhbWVzLCBpb0RhdGEpOwotfQotCiB2
b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlkZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nl
c3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9E
ZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAwODk0ZDYyMWEyZjEuLmNhNGVlYmZkMDNjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkF1
ZGlvRGVzdGluYXRpb24uaCIKICNpbmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKKyNpbmNsdWRl
ICJBdWRpb091dHB1dFVuaXRBZGFwdG9yLmgiCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRl
ci5oIgogI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CkBAIC00Myw0NyArNDQsMzkgQEAgY2xhc3MgUHVzaFB1bGxGSUZPOwogdXNpbmcgQ3Jl
YXRlQXVkaW9EZXN0aW5hdGlvbkNvY29hT3ZlcnJpZGUgPSBSZWY8QXVkaW9EZXN0aW5hdGlvbj4o
KikoQXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKIC8vIEFuIEF1ZGlvRGVz
dGluYXRpb24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVmYXVsdCBvdXRwdXQgQXVkaW9Vbml0Ci1jbGFz
cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGlj
IEF1ZGlvU291cmNlUHJvdmlkZXIgeworY2xhc3MgQXVkaW9EZXN0aW5hdGlvbkNvY29hIDogcHVi
bGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBBdWRpb1VuaXRSZW5kZXJlciwgcHVibGljIEF1
ZGlvU291cmNlUHJvdmlkZXIgewogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25Db2NvYShB
dWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlKTsKLSAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiwgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBjb25m
aWd1cmVBdWRpb091dHB1dFVuaXQgPSB0cnVlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBD
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSBjcmVhdGVPdmVycmlkZTsKIAogcHJv
dGVjdGVkOgotICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzRW5vdWdoRnJhbWVzKFVJbnQzMiBudW1iZXJPZkZyYW1lcykgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgcmVuZGVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRf
dCBob3N0VGltZSwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0
YSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlbmRlck9uUmVuZGVy
aW5nVGhlYWQoc2l6ZV90IGZyYW1lc1RvUmVuZGVyKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0SXNQbGF5aW5nKGJvb2wpOwogICAgIGJvb2wgaXNQbGF5aW5nKCkgZmluYWwgeyByZXR1
cm4gbV9pc1BsYXlpbmc7IH0KICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jb250ZXh0U2FtcGxlUmF0ZTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZl
cigpIGNvbnN0IGZpbmFsOwotICAgIEF1ZGlvVW5pdCYgb3V0cHV0VW5pdCgpIHsgcmV0dXJuIG1f
b3V0cHV0VW5pdDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZl
cigpIGNvbnN0IGZpbmFsOwogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygp
IGNvbnN0OwotICAgIAotICAgIC8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi0gICAgc3Rh
dGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0
aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQz
MiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwogCi0gICAgdm9pZCBz
ZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJik7CiAKICAgICBGdW5jdGlvbjx2b2lkKEZ1
bmN0aW9uPHZvaWQoKT4mJik+IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZDsKIAogcHJpdmF0ZToK
KyAgICBmcmllbmQgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0
ZShBdWRpb0lPQ2FsbGJhY2smLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZs
b2F0KTsKKwogICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcmVu
ZGVyT25SZW5kZXJpbmdUaGVhZChzaXplX3QgZnJhbWVzVG9SZW5kZXIpOwotCi0gICAgZnJpZW5k
IFJlZjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0Nh
bGxiYWNrJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBmbG9hdCk7Ci0gICAg
CiAgICAgLy8gQXVkaW9Tb3VyY2VQcm92aWRlci4KLSAgICB2b2lkIHByb3ZpZGVJbnB1dChBdWRp
b0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOwotCi0gICAgdm9pZCBjb25maWd1
cmUoKTsKLSAgICB2b2lkIHByb2Nlc3NCdXNBZnRlclJlbmRlcihBdWRpb0J1cyYsIFVJbnQzMiBu
dW1iZXJPZkZyYW1lcyk7Ci0KLSAgICBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3Rh
bXAqLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpIGZpbmFsOwogCi0gICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKKyAgICBB
dWRpb091dHB1dFVuaXRBZGFwdG9yIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcjsKICAgICBBdWRp
b0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7CiAKICAgICAvLyBUbyBwYXNzIHRoZSBkYXRhIGZyb20g
RklGTyB0byB0aGUgYXVkaW8gZGV2aWNlIGNhbGxiYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzZGQ5M2NiOWRm
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9PdXRwdXRVbml0QWRhcHRvci5o
IgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRp
b091dHB1dFVuaXRBZGFwdG9yOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yKEF1ZGlvVW5pdFJlbmRl
cmVyJiByZW5kZXJlcikKKyAgICA6IG1fb3V0cHV0VW5pdCgwKQorICAgICwgbV9hdWRpb1VuaXRS
ZW5kZXJlcihyZW5kZXJlcikKK3sKK30KKworQXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6fkF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3IoKQoreworICAgIGlmIChtX291dHB1dFVuaXQpCisgICAgICAgIEF1
ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Cit9CisKK09TU3RhdHVz
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OnN0YXJ0KCkKK3sKKyAgICByZXR1cm4gQXVkaW9PdXRw
dXRVbml0U3RhcnQobV9vdXRwdXRVbml0KTsKK30KKworT1NTdGF0dXMgQXVkaW9PdXRwdXRVbml0
QWRhcHRvcjo6c3RvcCgpCit7CisgICAgcmV0dXJuIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9vdXRw
dXRVbml0KTsKK30KKworLy8gRGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKK09TU3RhdHVzIEF1
ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0
UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCogdGltZVN0YW1wLCBVSW50
MzIgLypidXNOdW1iZXIqLywgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3Qq
IGlvRGF0YSkKK3sKKyAgICBhdXRvKiBhZGFwdG9yID0gc3RhdGljX2Nhc3Q8QXVkaW9PdXRwdXRV
bml0QWRhcHRvcio+KHVzZXJEYXRhKTsKKyAgICBkb3VibGUgc2FtcGxlVGltZSA9IDAuOworICAg
IHVpbnQ2NF90IGhvc3RUaW1lID0gMDsKKyAgICBpZiAodGltZVN0YW1wKSB7CisgICAgICAgIHNh
bXBsZVRpbWUgPSB0aW1lU3RhbXAtPm1TYW1wbGVUaW1lOworICAgICAgICBob3N0VGltZSA9IHRp
bWVTdGFtcC0+bUhvc3RUaW1lOworICAgIH0KKworICAgIHJldHVybiBhZGFwdG9yLT5tX2F1ZGlv
VW5pdFJlbmRlcmVyLnJlbmRlcihzYW1wbGVUaW1lLCBob3N0VGltZSwgbnVtYmVyT2ZGcmFtZXMs
IGlvRGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5kOGRkYmRkNjZiNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmgK
QEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQl9BVURJTykKKworI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1VuaXRSZW5kZXJlciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+QXVkaW9Vbml0UmVuZGVyZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCBPU1N0
YXR1cyByZW5kZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhvc3RUaW1lLCBVSW50MzIg
bnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKSA9IDA7Cit9OworCitjbGFz
cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBB
dWRpb091dHB1dFVuaXRBZGFwdG9yKEF1ZGlvVW5pdFJlbmRlcmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgfkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscyk7CisgICAgV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgc3RhcnQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBPU1N0YXR1cyBzdG9wKCk7CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9u
RmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQzMiBu
dW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOworCisgICAgQXVkaW9Vbml0
IG1fb3V0cHV0VW5pdDsKKyAgICBBdWRpb1VuaXRSZW5kZXJlciYgbV9hdWRpb1VuaXRSZW5kZXJl
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAKc2ltaWxhcml0eSBpbmRleCA3OSUKcmVuYW1l
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25J
T1MuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9P
dXRwdXRVbml0QWRhcHRvcklPUy5jcHAKaW5kZXggYzQ3MzNkZTdmNzVkLi4yZTk2MzBmYjYwZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3Rp
bmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDE0LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI4LDEwIEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuaCIKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
LSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCIKLQogI2luY2x1ZGUgIkF1ZGlvU2Vz
c2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCkBAIC00Niw3ICs0NSw3IEBA
IFNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywg
KEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSgpCit2b2lkIEF1ZGlvT3V0cHV0VW5pdEFk
YXB0b3I6OmNvbmZpZ3VyZShmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpCiB7CiAgICAgY29uc3QgaW50IGtQcmVmZXJyZWRCdWZmZXJTaXpl
ID0gMjU2OwogCkBAIC02MywxMSArNjIsMTEgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OmNvbmZpZ3VyZSgpCiAKICAgICBBU1NFUlQoY29tcCk7CiAKLSAgICBPU1N0YXR1cyByZXN1bHQg
PSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGNvbXAsICZvdXRwdXRVbml0KCkpOworICAgIE9T
U3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0
VW5pdCk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCiAgICAgVUludDMyIGZsYWcgPSAxOwotICAg
IHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwKKyAgICByZXN1bHQg
PSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsCiAgICAgICAgIGtBdWRpb091dHB1
dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKICAgICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwK
ICAgICAgICAgMCwKQEAgLTc1LDM0ICs3NCwzOSBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6Y29uZmlndXJlKCkKICAgICAgICAgc2l6ZW9mKGZsYWcpKTsKICAgICBBU1NFUlQoIXJlc3Vs
dCk7CiAKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVuaXQoKSk7Cisg
ICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShtX291dHB1dFVuaXQpOwogICAgIEFTU0VS
VCghcmVzdWx0KTsKICAgICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCiAgICAgQVVSZW5kZXJDYWxs
YmFja1N0cnVjdCBpbnB1dDsKICAgICBpbnB1dC5pbnB1dFByb2MgPSBpbnB1dFByb2M7CiAgICAg
aW5wdXQuaW5wdXRQcm9jUmVmQ29uID0gdGhpczsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQ
cm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFj
aywga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOworICAg
IHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFBy
b3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZpbnB1
dCwgc2l6ZW9mKGlucHV0KSk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCiAgICAgLy8gU2V0IHN0
cmVhbSBmb3JtYXQKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0
OwogCiAgICAgVUludDMyIHNpemUgPSBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
KTsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRp
b1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2
b2lkKikmc3RyZWFtRm9ybWF0LCAmc2l6ZSk7CisgICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0UHJv
cGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVk
aW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwogICAg
IEFTU0VSVCghcmVzdWx0KTsKIAotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihz
dHJlYW1Gb3JtYXQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0
VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVf
SW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uKSk7CisgICAgY29uc3RleHByIGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZs
b2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0c1BlckJ5dGUgPSA4OworICAgIHN0cmVhbUZv
cm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQu
bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9y
bWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9y
bWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAx
OworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsK
KyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1Bl
ckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0
LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQs
IDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKSk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCiAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRT
ZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJlZmVycmVkQnVmZmVyU2l6ZSk7CiB9
CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVk
aW9CdXMmLCBVSW50MzIpCi17Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRh
cHRvck1hYy5jcHAKc2ltaWxhcml0eSBpbmRleCA3MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCnJlbmFtZSB0byBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRvck1h
Yy5jcHAKaW5kZXggNzBmOWM5ZmZmNTFmLi5jOGVkM2VmNzhjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRv
ck1hYy5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNywxNyArMjgsMTYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgiCisjaW5jbHVkZSAiQXVkaW9PdXRwdXRVbml0QWRh
cHRvci5oIgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oTUFDKQogCiAjaW5j
bHVkZSAiQXVkaW9CdXMuaCIKLSNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCiAjaW5jbHVkZSA8Q29y
ZUF1ZGlvL0F1ZGlvSGFyZHdhcmUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEF1
ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkKK3ZvaWQgQXVkaW9PdXRwdXRVbml0QWRh
cHRvcjo6Y29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscykKIHsKICAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRP
dXRwdXRVbml0CiAgICAgQXVkaW9Db21wb25lbnQgY29tcDsKQEAgLTUyLDM3ICs1MiwzNyBAQCB2
b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkKIAogICAgIEFTU0VSVChjb21w
KTsKIAotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29t
cCwgJm91dHB1dFVuaXQoKSk7CisgICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9Db21wb25lbnRJ
bnN0YW5jZU5ldyhjb21wLCAmbV9vdXRwdXRVbml0KTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CiAK
LSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVuaXQoKSk7CisgICAgcmVz
dWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShtX291dHB1dFVuaXQpOwogICAgIEFTU0VSVCghcmVz
dWx0KTsKIAogICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKICAgICBBVVJlbmRlckNhbGxiYWNr
U3RydWN0IGlucHV0OwogICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0UHJvYzsKICAgICBpbnB1
dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOwotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3Bl
cnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBr
QXVkaW9Vbml0U2NvcGVfR2xvYmFsLCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOworICAgIHJl
c3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3Bl
cnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCAwLCAmaW5wdXQs
IHNpemVvZihpbnB1dCkpOwogICAgIEFTU0VSVCghcmVzdWx0KTsKIAogICAgIC8vIFNldCBzdHJl
YW0gZm9ybWF0CisgICAgY29uc3RleHByIGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0
MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0c1BlckJ5dGUgPSA4OworCiAgICAgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLSAgICBzZXRBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKyAgICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUg
PSBoYXJkd2FyZVNhbXBsZVJhdGU7CisgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRp
b0Zvcm1hdExpbmVhclBDTTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlv
Rm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVy
bGVhdmVkOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0
OworICAgIHN0cmVhbUZvcm1hdC5tRnJhbWVzUGVyUGFja2V0ID0gMTsKKyAgICBzdHJlYW1Gb3Jt
YXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tQ2hh
bm5lbHNQZXJGcmFtZSA9IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CisgICAgc3RyZWFtRm9ybWF0
Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdDsKIAotICAgIHJl
c3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3Bl
cnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVh
bUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOworICAgIHJlc3Vs
dCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5
X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZv
cm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwogICAgIEFTU0VSVCgh
cmVzdWx0KTsKIH0KIAotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnByb2Nlc3NCdXNBZnRl
clJlbmRlcihBdWRpb0J1cyYgYnVzLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpCi17Ci0gICAgLy8g
Q2xhbXAgdmFsdWVzIGF0IDBkYiAoaS5lLiwgWy0xLjAsIDEuMF0pCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkgewotICAgICAgICBhdXRv
KiBjaGFubmVsID0gYnVzLmNoYW5uZWwoaSk7Ci0gICAgICAgIGlmICghY2hhbm5lbC0+aXNTaWxl
bnQoKSkKLSAgICAgICAgICAgIFZlY3Rvck1hdGg6OmNsYW1wKGNoYW5uZWwtPmRhdGEoKSwgLTEs
IDEsIGNoYW5uZWwtPm11dGFibGVEYXRhKCksIG51bWJlck9mRnJhbWVzKTsKLSAgICB9Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCmluZGV4IDVhMTJjZGU0ZmNkZi4uOTlh
NmMyNjdjNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTY4LDEwICs2OCwxMCBAQCB2b2lk
IE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2soKQogewogICAgIG1fd29ya1F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZGcmFtZXNU
b1Byb2Nlc3MgPSBtX251bWJlck9mRnJhbWVzVG9Qcm9jZXNzXSB7CiAgICAgICAgIEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7Ci0gICAgICAgIHNldEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOworICAgICAgICBnZXRBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKIAogICAgICAgICBXZWJBdWRpb0J1ZmZlckxp
c3Qgd2ViQXVkaW9CdWZmZXJMaXN0IHsgc3RyZWFtRm9ybWF0LCBudW1iZXJPZkZyYW1lc1RvUHJv
Y2VzcyB9OwotICAgICAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh0aGlzLCAw
LCAwLCAwLCBudW1iZXJPZkZyYW1lc1RvUHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3Qo
KSk7CisgICAgICAgIHJlbmRlcigwLiwgMCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1
ZGlvQnVmZmVyTGlzdC5saXN0KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlkNzA3MWIx
NjY1Ni4uZTg5Yzg1MGIzYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIwLTEwLTE2
ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQ
VSBQcm9jZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4g
YXVkaW8gZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJl
bnQgaW1wbGVtZW50YXRpb24gb2YgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiBlc3NlbnRpYWxseSBy
dW5zIHRoZQorICAgICAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgaW4gdGhlIEdQVSBwcm9jZXNz
LCB3aGljaCBpcyBub3QgZ29vZCBiZWNhdXNlIHdlIGFyZSBhZGRpbmcKKyAgICAgICAgQXVkaW9X
b3JrbGV0IHN0dWZmIGludG8gQXVkaW9EZXN0aW5hdGlvbkNvY29hLCBidXQgdGhlIEF1ZGlvV29y
a2xldCBzdHVmZiBpcworICAgICAgICBpcnJlbGV2YW50IHRvIHRoZSBHUFUgcHJvY2Vzcy4KKwor
ICAgICAgICBXaGF0IHJlYWxseSBuZWVkcyB0byBydW4gaW4gdGhlIEdQVSBwcm9jZXNzIChmb3Ig
Q29jb2EgcGxhdGZvcm1zIGF0IGxlYXN0KSBpcyB0aGUKKyAgICAgICAgYXVkaW8gb3V0cHV0IHVu
aXQuIFRoaXMgcGF0Y2ggYWRkcyBXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yIGFuZAor
ICAgICAgICBXZWJDb3JlOjpBdWRpb1VuaXRSZW5kZXJlciB0byBpbXBsZW1lbnQgdGhhdC4gV2l0
aCB0aGlzIHBhdGNoLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCisgICAgICAgIGluIHRoZSBHUFUg
cHJvY2VzcyBpcyBhbiBBdWRpb1VuaXRSZW5kZXJlciBhbmQgaXQgZW1iZWRzIGFuIEF1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IKKyAgICAgICAgbGlrZSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgZG9lcyBp
biB0aGUgV2ViIHByb2Nlc3MuIEVzc2VudGlhbGx5LCB3ZSBydW4gQXVkaW9PdXRwdXRVbml0QWRh
cHRvcgorICAgICAgICByZW1vdGVseSBmcm9tIHRoZSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EncyBw
ZXJzcGVjdGl2ZS4KKworICAgICAgICBBbHNvLCBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biwgdGhlIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBpbiBhIFdlYgorICAgICAgICBwcm9j
ZXNzIHRyYW5zZmVycyBhdWRpbyBkYXRhIHRvIHRoZSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uIGlu
IHRoZSBHUFUgcHJvY2VzcworICAgICAgICB3aXRoIElQQyBtZXNzYWdlcyAoUmVtb3RlQXVkaW9C
dXNEYXRhKS4gVGhpcyBpcyBub3QgZWZmaWNpZW50IGJlY2F1c2Ugb2YgdGhlCisgICAgICAgIGxh
cmdlIG51bWJlciBvZiBJUEMgbWVzc2FnZXMgZm9yIGF1ZGlvIHNhbXBsZXMuCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgKFdlYiBwcm9jZXNz
KSB0cmFuc2ZlcnMgYXVkaW8gc2FtcGxlcworICAgICAgICB0byBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uKEdQVSBwcm9jZXNzKSB3aXRoIGEgQ0FSaW5nQnVmZmVyIHByb3ZpZGluZyBzaGFyZWQKKyAg
ICAgICAgYnVmZmVycyBmb3IgdGhlIFdlYiBwcm9jZXNzIGFuZCB0aGUgR1BVIHByb2Nlc3MuCisK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6flJlbW90ZUF1ZGlvRGVz
dGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjphdWRp
b1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmlzUGxh
eWluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uOjpzdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6cmVuZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlcjo6YXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjppc1BsYXlpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpmcmFtZXNQZXJCdWZmZXIg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3Nh
Z2VzLmluOgorICAgICAgICBBZGQgYSBtZXNzYWdlIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2Vk
IHRvIHN1cHBvcnQgdXNpbmcgQ0FSaW5nQnVmZmVyIHRvCisgICAgICAgIHRyYW5zbWl0IGF1ZGlv
IHNhbXBsZXMgdG8gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0J1c0RhdGEuaDogUmVtb3ZlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdGFydCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVzdEJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVuZGVyT25S
ZW5kZXJpbmdUaGVhZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6c3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OnJlbmRlckJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hhbmdlSXNQbGF5aW5nKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkuaDoKKyAgICAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IGlzIGEgc3ViY2xhc3Mg
b2YgQXVkaW9EZXN0aW5hdGlvbkNvY29hLiBJdCBwdWxscyBhdWRpbworICAgICAgICBzYW1wbGVz
IGZyb20gdGhlIFdlYkF1ZGlvIHNpZGUgYW5kIHVzZSBhIENBUmluZ0J1ZmZlciB0byBwdXNoIGF1
ZGlvIHNhbXBsZXMgdG8KKyAgICAgICAgdGhlIGF1ZGlvIG91dHB1dCB1bml0IChtYW5hZ2VkIGJ5
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24pIGluIHRoZSBHUFUgcHJvY2Vzcy4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgIEFkZCBhIG1lc3NhZ2UgUmVxdWVzdEJ1ZmZlciwgd2hpY2ggY2FuIGJlIHVz
ZWQgYnkgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiB0byBhc2sKKyAgICAgICAgZm9yIChwdWxsKSBh
dWRpbyBzYW1wbGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXI6OnB1c2hTYW1wbGVzKTogQSBtaW5vciBmaXggdG8gZ2V0IHJpZCBv
ZgorICAgICAgICBhIHR5cGUgY29udmVyc2lvbi4KKwogMjAyMC0xMC0xNiAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IGEg
ZHVtbXkgV2ViQXV0aG5Qcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRl
eCAyN2YyYTY5OTZhYzkuLjVkNzcwOWNiZTE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIuY3BwCkBAIC0yOSwxMTYgKzI5LDE0NCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQl9BVURJTykKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKLSNpbmNsdWRlICJSZW1vdGVBdWRpb0J1c0RhdGEuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9CdXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVz
dGluYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxsYmFjay5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXVkaW9VdGlsaXRpZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1B1c2hQdWxs
RklGTy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2Vt
YXBob3JlLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgeworI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRp
b091dHB1dFVuaXRBZGFwdG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+CisjZW5kaWYKIAotLy8gVGhpcyBGSUZPIHNp
emUgbWF0Y2hlcyB0byBvbmUgaW4gQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcCBhbmQgd2FzIGlt
cG9ydGVkIGZyb20gQmxpbmsuCi1jb25zdGV4cHIgc2l6ZV90IGZpZm9TaXplID0gOTYgKiBXZWJD
b3JlOjpBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemU7CituYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiwgcHVibGljIFdlYkNvcmU6OkF1ZGlvSU9D
YWxsYmFjayB7CitjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCisgICAgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4KKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpBdWRpb1VuaXRSZW5kZXJlcgorI2VuZGlmCit7
CiBwdWJsaWM6Ci0gICAgdXNpbmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRpb0J1czsKLSAgICB1
c2luZyBBdWRpb0Rlc3RpbmF0aW9uID0gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjsKLSAgICB1
c2luZyBTaGFyZWRCdWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI7Ci0KICAgICBzdGF0aWMg
UmVmPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aW9uLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyLAotICAgICAgICBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJl
ck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQg
c2FtcGxlUmF0ZSkKKyAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJf
dCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oY29ubmVjdGlv
biwgaWRlbnRpZmllciwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oY29ubmVjdGlvbiwgaWRlbnRpZmllciwgaW5w
dXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFtX2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKSk7Ci0gICAgfQorICAgIHZpcnR1YWwgflJlbW90
ZUF1ZGlvRGVzdGluYXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHNjaGVkdWxlR3JhY2Vm
dWxTaHV0ZG93bklmTmVlZGVkKCkKICAgICB7Ci0gICAgICAgIGlmICghaXNQbGF5aW5nKCkpCisg
ICAgICAgIGlmICghbV9pc1BsYXlpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1f
cHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1bFNodXRkb3duID0gdGhpczsKICAgICAgICAgc3RvcCgp
OwogICAgIH0KIAotICAgIHZvaWQgc3RhcnQoKSB7IG1fZGVzdGluYXRpb24tPnN0YXJ0KHsgfSk7
IH0KLSAgICB2b2lkIHN0b3AoKSB7IG1fZGVzdGluYXRpb24tPnN0b3AoKTsgfQotICAgIGJvb2wg
aXNQbGF5aW5nKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCk7IH0KLSAgICB1
bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uLT5m
cmFtZXNQZXJCdWZmZXIoKSA7IH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGF1ZGlv
U2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNI
YW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQorICAgIHsKKyAgICAgICAgbV9kZXNjcmlwdGlv
biA9IGRlc2NyaXB0aW9uOworCisgICAgICAgIGlmIChpcGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICBtX3JpbmdCdWZmZXItPmRlYWxsb2NhdGUoKTsKKyAgICAgICAgICAg
IHN0b3JhZ2UoKS5zZXRSZWFkT25seShmYWxzZSk7CisgICAgICAgICAgICBzdG9yYWdlKCkuc2V0
U3RvcmFnZShudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGF1dG8gbWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIHN0b3JhZ2UoKS5zZXRT
dG9yYWdlKFdURk1vdmUobWVtb3J5KSk7CisgICAgICAgIHN0b3JhZ2UoKS5zZXRSZWFkT25seSh0
cnVlKTsKKworICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGRlc2NyaXB0aW9uLCBudW1i
ZXJPZkZyYW1lcyk7CisgICAgfQorI2VuZGlmCisKKyAgICB2b2lkIHN0YXJ0KCkKKyAgICB7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIGlmIChtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iu
c3RhcnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2lzUGxheWluZyA9IHRy
dWU7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIHN0b3AoKQorICAgIHsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgaWYgKG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdG9wKCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKworICAg
ICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24pIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlZkNvdW50KCkgPT0gMSk7CisgICAgICAgICAgICBtX3Byb3Rl
Y3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93biA9IG51bGxwdHI7CisgICAgICAgIH0KKyNlbmRp
ZgorICAgIH0KKworICAgIGJvb2wgaXNQbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlp
bmc7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKQorICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkKICAgICAgICAgOiBtX2Nvbm5lY3Rp
b24oY29ubmVjdGlvbikKICAgICAgICAgLCBtX2lkKGlkZW50aWZpZXIpCi0gICAgICAgICwgbV9k
ZXN0aW5hdGlvbihBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKnRoaXMsIGlucHV0RGV2aWNlSWQs
IG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0
ZSkpCi0gICAgICAgICwgbV9maWZvKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZpZm9TaXplKQor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICAsIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcigq
dGhpcykKKyAgICAgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJp
bmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIp
KSkKKyNlbmRpZgogICAgIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgbV9hdWRpb091
dHB1dFVuaXRBZGFwdG9yLmNvbmZpZ3VyZShoYXJkd2FyZVNhbXBsZVJhdGUsIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMpOworI2VuZGlmCiAgICAgfQogCi0gICAgdm9pZCByZW5kZXIoQXVkaW9CdXMq
LCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MsIGNvbnN0
IFdlYkNvcmU6OkF1ZGlvSU9Qb3NpdGlvbiYgb3V0cHV0UG9zaXRpb24pIG92ZXJyaWRlCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UmIHN0b3JhZ2UoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdl
Jj4obV9yaW5nQnVmZmVyLT5zdG9yYWdlKCkpOworICAgIH0KKworICAgIE9TU3RhdHVzIHJlbmRl
cihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIFVJbnQzMiBudW1iZXJPZkZy
YW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCiAgICAgewogICAgICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKIAogICAgICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVs
U2h1dGRvd24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgewotICAgICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2ZpZm9Mb2NrKTsKLSAgICAgICAgICAgIGZyYW1lc1Rv
UHJvY2VzcyA9IG1fZmlmby5wdWxsKGRlc3RpbmF0aW9uQnVzLCBmcmFtZXNUb1Byb2Nlc3MpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICghZnJhbWVzVG9Qcm9jZXNzKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4gYnVmZmVyczsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlc3RpbmF0aW9uQnVzLT5udW1iZXJPZkNoYW5u
ZWxzKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFs
bG9jYXRlKHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICAgICAgYnVm
ZmVycy5hcHBlbmQoKm1lbW9yeSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBub0Vy
cjsKIAogICAgICAgICAvLyBGSVhNRTogSXQgaXMgdW5mb3J0dW5hdGUgd2UgaGF2ZSB0byBkaXNw
YXRjaCB0byB0aGUgbWFpbiB0aGVhZCBoZXJlLiBXZSBzaG91bGQgYmUgYWJsZSB0byBJUEMgc3Ry
YWlnaHQgZnJvbSB0aGUKICAgICAgICAgLy8gcmVuZGVyIHRocmVhZCBidXQgdGhpcyBpcyBub3Qg
c3VwcG9ydGVkIGJ5IHNlbmRXaXRoQXN5bmNSZXBseSgpLgotICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lc1RvUHJvY2Vz
cywgb3V0cHV0UG9zaXRpb24sIGJ1ZmZlcnMgPSBXVEZNb3ZlKGJ1ZmZlcnMpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgUmVtb3RlQXVkaW9CdXNEYXRhIGJ1c0RhdGEgeyBmcmFtZXNUb1Byb2Nl
c3MsIG91dHB1dFBvc2l0aW9uLCBidWZmZXJzLm1hcChbXShhdXRvJiBtZW1vcnkpIHsgcmV0dXJu
IG1lbW9yeS5jb3B5UmVmKCk7IH0pIH07Ci0gICAgICAgICAgICBBU1NFUlQoZnJhbWVzVG9Qcm9j
ZXNzKTsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlbmRlckJ1ZmZl
cihidXNEYXRhKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCBidWZmZXJzID0gV1RGTW92ZShidWZmZXJzKSwgZnJhbWVzVG9Qcm9jZXNzXSgpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidWZmZXJzLnNpemUo
KSwgZnJhbWVzVG9Qcm9jZXNzLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJ1ZmZlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIGF1
ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIHN0YXRpY19jYXN0PGZsb2F0Kj4oYnVmZmVyc1tp
XS0+ZGF0YSgpKSwgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgICAgIG1fZmlmby5wdXNoKGF1
ZGlvQnVzLmdldCgpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzYW1wbGVUaW1lLCBob3N0VGltZSwgbnVtYmVyT2ZGcmFt
ZXMsIGlvRGF0YV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6OlJlcXVlc3RCdWZmZXIoc2FtcGxlVGltZSwgaG9zdFRpbWUsIG51bWJlck9mRnJhbWVz
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpb0RhdGFd
KGF1dG8gc3RhcnRGcmFtZSwgYXV0byBudW1iZXJPZkZyYW1lc1RvUmVuZGVyLCBhdXRvIGJvdW5k
c1N0YXJ0RnJhbWUsIGF1dG8gYm91bmRzRW5kRnJhbWUpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIG1fcmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1lQm91bmRzKGJvdW5kc1N0YXJ0RnJhbWUs
IGJvdW5kc0VuZEZyYW1lKTsKKyAgICAgICAgICAgICAgICBtX3JpbmdCdWZmZXItPmZldGNoKGlv
RGF0YSwgbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwgc3RhcnRGcmFtZSk7CiAgICAgICAgICAgICB9
LCBtX2lkLnRvVUludDY0KCkpOwogICAgICAgICB9KTsKLSAgICB9CiAKLSAgICB2b2lkIGlzUGxh
eWluZ0RpZENoYW5nZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAobV9wcm90ZWN0VGhp
c0R1cmluZ0dyYWNlZnVsU2h1dGRvd24pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
X2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZWZDb3VudCgpID09IDEpOwotICAgICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVs
U2h1dGRvd24gPSBudWxscHRyOyAvLyBEZWxldGVzICJ0aGlzIi4KLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGlzUGxheWluZyA9IG1fZGVzdGluYXRpb24tPmlzUGxheWlu
ZygpLCBpZGVudGlmaWVyID0gbV9pZC50b1VJbnQ2NCgpXSB7Ci0gICAgICAgICAgICBtX2Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6RGlkQ2hhbmdlSXNQbGF5aW5nKGlzUGxheWluZyksIGlkZW50aWZpZXIpOwotICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuIG5vRXJyOwogICAgIH0KKyNlbmRpZgogCiAgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyIG1faWQ7Ci0gICAgUmVmUHRyPEF1ZGlvRGVzdGluYXRpb24+IG1fZGVz
dGluYXRpb247CisKICAgICBSZWZQdHI8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gbV9wcm90ZWN0
VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd247Ci0gICAgTG9jayBtX2ZpZm9Mb2NrOwotICAgIFdl
YkNvcmU6OlB1c2hQdWxsRklGTyBtX2ZpZm87CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBX
ZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcjsK
KworICAgIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uOwor
ICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyNlbmRp
ZgorCisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CiB9OwogCiBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKQEAgLTE0OCwxNCArMTc2LDEzIEBAIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcihH
UFVDb25uZWN0aW9uVG9XZWJQCiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjp+UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5n
JiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsCi0gICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgdW5zaWduZWQg
ZnJhbWVzUGVyQnVmZmVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSwKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIG5ld0lEID0g
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwot
ICAgIGF1dG8gZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUobV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKLSAgICBh
dXRvIGZyYW1lc1BlckJ1ZmZlciA9IGRlc3RpbmF0aW9uLT5mcmFtZXNQZXJCdWZmZXIoKTsKKyAg
ICBhdXRvIGRlc3RpbmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVT
YW1wbGVSYXRlKTsKICAgICBtX2F1ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgV1RGTW92ZShk
ZXN0aW5hdGlvbikpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0lELCBmcmFtZXNQZXJCdWZm
ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKIH0KIAogdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xODYsNiArMjEzLDE0IEBAIHZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JCiAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQbGF5aW5nKTsKIH0KIAorI2lmIFBM
QVRGT1JNKENPQ09BKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6YXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgY29uc3Qg
V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3Qg
bnVtYmVyT2ZGcmFtZXMpCit7CisgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRp
b25zLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgaXRlbS0+YXVkaW9TYW1wbGVzU3RvcmFnZUNo
YW5nZWQoaXBjSGFuZGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCAx
MWI0YmVmMTA0MWIuLmUyMmMxMGFjZTlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgK
QEAgLTM0LDYgKzM0LDEyIEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworfQorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpA
QCAtNDYsMjUgKzUyLDI1IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgflJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3Qg
U3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVp
bnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVk
IGZyYW1lc1BlckJ1ZmZlcik+JiYpOwotICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2Rl
cikKLSAgICB7Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKLSAgICB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9t
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwogCisgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0
cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50
MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJk
d2FyZVNhbXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
c3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOworI2Vu
ZGlmCisKICAgICBIYXNoTWFwPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBSZWY8
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4+IG1fYXVkaW9EZXN0aW5hdGlvbnM7CiAgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogfTsKIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdDsKIAogI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBiYzA1YWUxMTc5YWEuLjJi
YzllZGM3MWI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtMjQsMTQgKzI0LDE0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCX0FVRElPKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ciBOb3RSZWZDb3VudGVkIHsKLQotICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlu
cHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgZnJhbWVzUGVy
QnVmZmVyKSBTeW5jaHJvbm91cwotCisgICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcg
aW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNh
bXBsZVJhdGUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlk
ZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5j
CiAKICAgICBTdGFydEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3Vz
CiAgICAgU3RvcEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCi0K
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKKyNl
bmRpZgogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGQxMGFlZDRmNDQzMS4uM2FkNGI4Njg5MTEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NDcsNyAr
MTQ0Nyw2IEBACiAJCTlCNTQ5OUIyMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0
aW9uRXhjbHVzaW9uUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUI1NDk5QjAyMzYyQTdFQzAwREY4QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25F
eGNsdXNpb25SdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOUI1QkVDMjYyNDAwRjRBOTAwNzBDNkVGIC8qIFdlYk1lZGlhU3RyYXRlZ3kuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNUJFQzI0MjQw
MEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmggKi87IH07CiAJCTlCNUJFQzJBMjQw
MTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNUJFQzI4MjQwMTAxNTgwMDcw
QzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLzsgfTsKLQkJOUI1QkVDMzEy
NDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oIGluIENvcHlGaWxlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMzMDI0MDEwMjIyMDA3MEM2RUYg
LyogUmVtb3RlQXVkaW9CdXNEYXRhLmggKi87IH07CiAJCTlFQzUzMkEzMjQ0N0ZCQUQwMDIxNTIx
NiAvKiBHZW9sb2NhdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlFQzUzMkEyMjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9sb2NhdGlv
bklkZW50aWZpZXIuaCAqLzsgfTsKIAkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29u
dGV4dFByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTEwMkE3
MDgxRUMwRUVFOTAwRDgxRDgyIC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1
Z2luLnNiIGluIENvcHkgUGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBNUUzOTQ5MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9t
ZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiAqLzsgfTsKQEAgLTIxNjEsNyArMjE2MCw2
IEBACiAJCQkJMkRCOTYwNTMyMzk4ODZDMTAwMTAyNzkxIC8qIGNvbS5hcHBsZS5XZWJLaXQuR1BV
LnNiIGluIENvcHlGaWxlcyAqLywKIAkJCQlBNzhDQ0REQjE5M0FDOUY4MDA1RUNDMjUgLyogY29t
LmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiIGluIENvcHlGaWxlcyAqLywKIAkJCQlBNzhDQ0RE
QzE5M0FDOUZCMDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiIGluIENv
cHlGaWxlcyAqLywKLQkJCQk5QjVCRUMzMTI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9C
dXNEYXRhLmggaW4gQ29weUZpbGVzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDU4Niw3ICs0NTg0LDYgQEAKIAkJOUI1QkVD
MjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUI1QkVDMjkyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjVCRUMyRTI0MDEw
MThDMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlv
QnVzRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb0J1c0RhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNTlENkMxRUZDQ0NCNjAwMUU4RDA5IC8qIENhbGxiYWNr
SUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tJRC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM1OUQ2RDFFRkNEQzZEMDAxRThEMDkgLyogT3B0
aW9uYWxDYWxsYmFja0lELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlv
bmFsQ2FsbGJhY2tJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RUM1MzJBMjI0
NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlb2xvY2F0aW9uSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTYwMCw3ICs1NTk3LDYgQEAKIAkJCQkwNzkyMzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcCAqLywKIAkJCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIg
LyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMDdCMUQwNEIyM0QzOEZDRTAw
Mzk5QTZFIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiAqLywKLQkJCQk5
QjVCRUMzMDI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9CdXNEYXRhLmggKi8sCiAJCQkJ
OUI1QkVDMjkyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5j
cHAgKi8sCiAJCQkJOUI1QkVDMjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5oICovLAogCQkJCTlCNUJFQzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvQnVzRGF0YS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZjMmYwYzY2MDY5Li4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaAor
KysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBSZW1vdGVBdWRp
b0J1c0RhdGEgewotICAgIHVpbnQ2NF90IGZyYW1lc1RvUHJvY2VzcyB7IDAgfTsKLSAgICBXZWJD
b3JlOjpBdWRpb0lPUG9zaXRpb24gb3V0cHV0UG9zaXRpb247Ci0gICAgVmVjdG9yPFJlZjxTaGFy
ZWRNZW1vcnk+PiBjaGFubmVsQnVmZmVyczsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+Ci0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGVuY29kZXIgPDwgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBlbmNvZGVyIDw8IG91dHB1
dFBvc2l0aW9uOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjaGFu
bmVsQnVmZmVycy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYW5u
ZWxCdWZmZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBoYW5kbGU7Ci0gICAgICAgICAgICBjaGFubmVsQnVmZmVyc1tpXS0+Y3JlYXRlSGFuZGxlKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwotICAgICAgICAgICAg
ZW5jb2RlciA8PCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgY2hh
bm5lbEJ1ZmZlcnNbaV0tPnNpemUoKSB9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRGVjb2Rlcj4KLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlbW90ZUF1ZGlvQnVzRGF0YSYgcmVzdWx0KQotICAg
IHsKLSAgICAgICAgdWludDY0X3QgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGZyYW1lc1RvUHJvY2VzcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIHJlc3VsdC5mcmFtZXNUb1Byb2Nlc3MgPSBmcmFtZXNUb1Byb2Nlc3M7Ci0KLSAgICAg
ICAgV2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91dHB1dFBvc2l0aW9uOwotICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG91dHB1dFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcmVzdWx0Lm91dHB1dFBvc2l0aW9uID0gb3V0cHV0UG9zaXRpb247Ci0KLSAg
ICAgICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6
ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IGlwY0hhbmRsZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXV0byBtZW1v
cnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRXcml0ZSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxCdWZm
ZXJzLmFwcGVuZChtZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDg0MDRjNDhlMWMyZS4uODQwMmRl
ZWY4YWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC0zMCwxNiAr
MzAsMjEgQEAKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNs
dWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9CdXMu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KKworI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotdXNpbmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRpb0J1czsKKy8vIEFsbG9jYXRlIGEgcmlu
ZyBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gMiBzZWNvbmRzIG9mIGF1ZGlvLgorY29u
c3RleHByIHNpemVfdCByaW5nQnVmZmVyU2l6ZUluU2Vjb25kID0gMjsKKwogdXNpbmcgQXVkaW9E
ZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb247CiB1c2luZyBBdWRpb0lPQ2Fs
bGJhY2sgPSBXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2s7CiAKQEAgLTUwLDE2ICs1NSwxNyBAQCBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpjcmVhdGUo
QXVkaW9JT0NhbGxiYWNrJiBjYWxsYgogfQogCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBj
b25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVs
cywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKLSAg
ICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2Nv
YShjYWxsYmFjaywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgZmFsc2UpCisg
ICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZTxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KG1ha2VV
bmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KHRoaXMpKSkKKyNlbmRpZgogewogICAg
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQ7Ci0gICAgdW5z
aWduZWQgZnJhbWVzUGVyQnVmZmVyIHsgMCB9OwogCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAg
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCi0gICAgICAgIE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihpbnB1dERl
dmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNh
bXBsZVJhdGUpLAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQsIGZyYW1lc1Bl
ckJ1ZmZlciksIDApOworICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNh
bXBsZVJhdGUoKSksCisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25JRCksIDApOwog
CiAgICAgYXV0byBvZmZUaHJlYWRSZW5kZXJpbmcgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewogICAgICAgICB3aGlsZSAoIW1fdGhyZWFkVGFza1F1
ZXVlLmlzS2lsbGVkKCkpIHsKQEAgLTcyLDcgKzc4LDE0IEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KEF1ZGlvSU9DYWxsYmFjayYgY2Fs
bGJhCiAgICAgY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgdGhpcywgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fZGVzdGluYXRp
b25JRCA9IGRlc3RpbmF0aW9uSUQ7Ci0gICAgbV9mcmFtZXNQZXJCdWZmZXIgPSBmcmFtZXNQZXJC
dWZmZXI7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gc3RyZWFtRm9ybWF0OworICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihz
dHJlYW1Gb3JtYXQpOworICAgIG1fbnVtYmVyT2ZGcmFtZXMgPSBoYXJkd2FyZVNhbXBsZVJhdGUo
KSAqIHJpbmdCdWZmZXJTaXplSW5TZWNvbmQ7CisgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShz
dHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0g
bWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CisjZW5kaWYKIH0K
IAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5KCkKQEAgLTkyLDM2ICsxMDUsNTQgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KCkKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0
Y2hUb1JlbmRlclRocmVhZCkKIHsKICAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQgPSBXVEZN
b3ZlKGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpOworICAgIGJvb2wgaXNQbGF5aW5nOwogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uSUQpLAotICAgICAg
ICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0
aW5hdGlvbjo6UmVwbHkobV9pc1BsYXlpbmcpLCAwKTsKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdGFydEF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGlz
UGxheWluZyksIDApOworICAgIHNldElzUGxheWluZyhpc1BsYXlpbmcpOwogfQogCiB2b2lkIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcCgpCiB7CisgICAgYm9vbCBpc1BsYXlpbmc7
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6U3RvcEF1ZGlvRGVzdGluYXRpb24obV9kZXN0aW5hdGlvbklEKSwK
LSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVk
aW9EZXN0aW5hdGlvbjo6UmVwbHkobV9pc1BsYXlpbmcpLCAwKTsKKyAgICAgICAgTWVzc2FnZXM6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVkaW9EZXN0aW5hdGlvbjo6UmVw
bHkoaXNQbGF5aW5nKSwgMCk7CisgICAgc2V0SXNQbGF5aW5nKGlzUGxheWluZyk7CiAgICAgbV9k
aXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHk6OnJlbmRlckJ1ZmZlcihjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVz
RGF0YSYgYXVkaW9CdXNEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6cmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRp
bWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2
NF90LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQoYXVkaW9CdXNEYXRh
LmZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgQVNTRVJUKGF1ZGlvQnVzRGF0YS5jaGFubmVsQnVmZmVy
cy5zaXplKCkpOwotICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGF1ZGlvQnVz
RGF0YS5jaGFubmVsQnVmZmVycy5zaXplKCksIGF1ZGlvQnVzRGF0YS5mcmFtZXNUb1Byb2Nlc3Ms
IGZhbHNlKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXVkaW9CdXNEYXRhLmNoYW5u
ZWxCdWZmZXJzLnNpemUoKTsgKytpKQotICAgICAgICBhdWRpb0J1cy0+c2V0Q2hhbm5lbE1lbW9y
eShpLCAoZmxvYXQqKWF1ZGlvQnVzRGF0YS5jaGFubmVsQnVmZmVyc1tpXS0+ZGF0YSgpLCBhdWRp
b0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgIG1fY2FsbGJhY2sucmVuZGVyKDAsIGF1
ZGlvQnVzLmdldCgpLCBhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzLCBhdWRpb0J1c0RhdGEu
b3V0cHV0UG9zaXRpb24pOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBpZiAoIWhh
c0Vub3VnaEZyYW1lcyhudW1iZXJPZkZyYW1lcykpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KDAsIDAsIDAsIDApOworCisgICAgbV9yZW5kZXJDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5zZXRTYW1wbGVDb3Vu
dChudW1iZXJPZkZyYW1lcyk7CisKKyAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlcihz
YW1wbGVUaW1lLCBob3N0VGltZSwgbnVtYmVyT2ZGcmFtZXMsIG1fYXVkaW9CdWZmZXJMaXN0LT5s
aXN0KCkpOwogfQogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hhbmdl
SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHk6OnJlbmRlck9uUmVuZGVyaW5nVGhlYWQoc2l6ZV90IGZyYW1lc1RvUmVuZGVyKQogewotICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3JlbmRlckNvbXBsZXRpb25I
YW5kbGVyKTsKKworICAgIGF1dG8gc3RhcnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOworCisgICAg
QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJPblJlbmRlcmluZ1RoZWFkKGZyYW1lc1RvUmVu
ZGVyKTsKKyAgICBtX2N1cnJlbnRGcmFtZSArPSBmcmFtZXNUb1JlbmRlcjsKKworICAgIG1fcmlu
Z0J1ZmZlci0+c3RvcmUobV9hdWRpb0J1ZmZlckxpc3QtPmxpc3QoKSwgZnJhbWVzVG9SZW5kZXIs
IHN0YXJ0RnJhbWUpOworCisgICAgdWludDY0X3QgYm91bmRzU3RhcnRGcmFtZTsKKyAgICB1aW50
NjRfdCBib3VuZHNFbmRGcmFtZTsKKyAgICBtX3JpbmdCdWZmZXItPmdldEN1cnJlbnRGcmFtZUJv
dW5kcyhib3VuZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7CisgICAgbV9yZW5kZXJDb21w
bGV0aW9uSGFuZGxlcihzdGFydEZyYW1lLCBmcmFtZXNUb1JlbmRlciwgYm91bmRzU3RhcnRGcmFt
ZSwgYm91bmRzRW5kRnJhbWUpOwogfQorI2VuZGlmCiAKIC8vIElQQzo6Q29ubmVjdGlvbjo6VGhy
ZWFkTWVzc2FnZVJlY2VpdmVyCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlz
cGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKQEAgLTEzMyw2ICsxNjQsMjgg
QEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRpc3BhdGNoVG9UaHJlYWQoRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgbV90aHJlYWRUYXNrUXVldWUuYXBwZW5kKFdURk1v
dmUodGFzaykpOwogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlKQorewor
ICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoc3RvcmFnZSkKKyAgICAg
ICAgc3RvcmFnZS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisKKyAgICAvLyBGSVhNRTogU2VuZCB0aGUgYWN0dWFsIGRhdGEgc2l6ZSB3
aXRoIElQQ0hhbmRsZS4KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisgICAgdWludDY0
X3QgZGF0YVNpemUgPSBoYW5kbGUuc2l6ZSgpOworI2Vsc2UKKyAgICB1aW50NjRfdCBkYXRhU2l6
ZSA9IDA7CisjZW5kaWYKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1G
b3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7
CisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKHN0cmVh
bUZvcm1hdCk7CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6QXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQgeyBtX2Rlc3RpbmF0aW9u
SUQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9
LCBzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMgfSwgMCk7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAppbmRleCBjNGFk
Yjc1NjBkNDYuLmRiZTQ3ZDU0Y2JiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5o
CkBAIC0yOCwyNCArMjgsMzcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJfQVVESU8pCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiUmVtb3RlQXVk
aW9CdXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
QXVkaW9EZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+
CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUXVldWUuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlICJTaGFyZWRSaW5n
QnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbkNvY29h
Lmg+CisjZWxzZQorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2VuZGlm
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENBUmluZ0J1ZmZlcjsKK2NsYXNzIFdlYkF1
ZGlvQnVmZmVyTGlzdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uLCBw
dWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgOiBwdWJs
aWMgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hCisgICAgLCBwdWJsaWMgU2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2U6OkNsaWVudAorI2Vsc2UKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uCisjZW5kaWYKKyAgICAsIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVh
ZE1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5KTsKIHB1YmxpYzoKLSAgICB1c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6
OkF1ZGlvQnVzOwogICAgIHVzaW5nIEF1ZGlvSU9DYWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvSU9D
YWxsYmFjazsKICAgICB1c2luZyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpyZWY7CiAgICAg
dXNpbmcgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6ZGVyZWY7CkBAIC01NywxNiArNzAsMjMg
QEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAKLSAgICB2b2lkIHJlbmRlckJ1
ZmZlcihjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVzRGF0YSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcp
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgcmVxdWVzdEJ1ZmZlcihkb3VibGUgc2Ft
cGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzVG9SZW5kZXIsIHVpbnQ2NF90IGJvdW5kc1N0YXJ0RnJhbWUsIHVpbnQ2NF90IGJvdW5k
c0VuZEZyYW1lKT4mJik7CisjZW5kaWYKIAogcHJpdmF0ZToKLSAgICAvLyBXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uCi0gICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQo
KT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRlclRocmVhZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9w
KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX2lz
UGxheWluZzsgfQotICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3NhbXBsZVJhdGU7IH0KLSAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2ZyYW1lc1BlckJ1ZmZlcjsgfQorICAgIHZvaWQgc3RhcnQoRnVu
Y3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQp
IGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCisjaWYgIVBMQVRGT1JNKENPQ09BKQor
ICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAgdW5z
aWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQorI2VuZGlm
CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1l
bW9yeSopIGZpbmFsOworICAgIHZvaWQgcmVuZGVyT25SZW5kZXJpbmdUaGVhZChzaXplX3QgZnJh
bWVzVG9SZW5kZXIpIGZpbmFsOworI2VuZGlmCiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CkBAIC03NiwxMSArOTYsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZk1l
c3NhZ2VSZWNlaXZlcigpIGZpbmFsIHsgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6cmVmKCk7
IH0KICAgICB2b2lkIGRlcmVmTWVzc2FnZVJlY2VpdmVyKCkgZmluYWwgeyBXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uOjpkZXJlZigpOyB9CiAKLSAgICBBdWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJh
Y2s7Ci0gICAgZmxvYXQgbV9zYW1wbGVSYXRlIHsgMC4gfTsKLSAgICB1bnNpZ25lZCBtX2ZyYW1l
c1BlckJ1ZmZlciB7IDAgfTsKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBt
X2Rlc3RpbmF0aW9uSUQ7Ci0gICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICB1aW50NjRfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PiBtX2F1ZGlvQnVm
ZmVyTGlzdDsKKyAgICB1aW50NjRfdCBtX2N1cnJlbnRGcmFtZSB7IDAgfTsKKyAgICBXVEY6OkZ1
bmN0aW9uPHZvaWQodWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpPiBtX3Jl
bmRlckNvbXBsZXRpb25IYW5kbGVyOworI2VuZGlmCisKICAgICBGdW5jdGlvbjx2b2lkKEZ1bmN0
aW9uPHZvaWQoKT4mJik+IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZDsKICAgICBSZWZQdHI8VGhy
ZWFkPiBtX3JlbmRlclRocmVhZDsKICAgICBDcm9zc1RocmVhZFF1ZXVlPEZ1bmN0aW9uPHZvaWQo
KT4+IG1fdGhyZWFkVGFza1F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5tZXNzYWdlcy5pbgppbmRleCBhZTFmYzcwNjk4NzEuLmJmMDRjMWM0NTBhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDEw
ICsyNCw5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQog
CiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgTm90UmVmQ291bnRlZCB7
Ci0KLSAgICBSZW5kZXJCdWZmZXIoc3RydWN0IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhIGRh
dGEpIC0+ICgpIEFzeW5jCi0gICAgRGlkQ2hhbmdlSXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQot
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGlt
ZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKSAtPiAodWludDY0
X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwgdWludDY0X3Qg
Ym91bmRzU3RhcnRGcmFtZSwgdWludDY0X3QgYm91bmRzRW5kRnJhbWUpIEFzeW5jCisjZW5kaWYK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKaW5k
ZXggODc5OWYxOTg0NzE0Li4yZTBhNmIxZjgzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6cHVzaFNhbXBsZXMoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBX
ZWIKIAogICAgICAgICAvLyBBbGxvY2F0ZSBhIHJpbmcgYnVmZmVyIGxhcmdlIGVub3VnaCB0byBj
b250YWluIDIgc2Vjb25kcyBvZiBhdWRpby4KICAgICAgICAgbV9udW1iZXJPZkZyYW1lcyA9IG1f
ZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMjsKLSAgICAgICAgbV9yaW5nQnVmZmVyLT5hbGxv
Y2F0ZShtX2Rlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbnVtYmVyT2ZGcmFtZXMp
OworICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKG1fZGVzY3JpcHRpb24sIG1fbnVtYmVy
T2ZGcmFtZXMpOwogICAgIH0KIAogICAgIEFTU0VSVChpczxXZWJDb3JlOjpXZWJBdWRpb0J1ZmZl
ckxpc3Q+KGF1ZGlvRGF0YSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411619</attachid>
            <date>2020-10-16 15:01:30 -0700</date>
            <delta_ts>2020-10-16 15:33:52 -0700</delta_ts>
            <desc>Patch (fix WPE/GTK build failures)</desc>
            <filename>217715-v2.patch</filename>
            <type>text/plain</type>
            <size>81833</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiYTE2MTBhMGEyY2IuLjI0NTA3YTQ4YThkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU1IEBACisyMDIwLTEwLTE2ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+
CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9jZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRy
YW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8gZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9j
ZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVjb3VwbGUgdGhlIGF1ZGlvIG91dHB1dCB1bml0IG1hbmFnZW1lbnQg
ZnJvbSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2Egc28gdGhhdAorICAgICAgICB3ZSBjYW4gcnVuIGl0
IHJlbW90ZWx5IGluIG90aGVyIHByb2Nlc3NlcywgbGlrZSB0aGUgR1BVIHByb2Nlc3MuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaDogRXhwb3J0
IGhhcmR3YXJlU2FtcGxlUmF0ZSgpLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb246OmNyZWF0ZSk6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBjYWxsLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29j
b2EpOiBBZGQgYSBwYXJhbWV0ZXIKKyAgICAgICAgY29uZmlndXJlQXVkaW9PdXRwdXRVbml0IHNv
IHRoYXQgd2UgY2FuIGRpc2FibGUgdGhlIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgaW4KKyAgICAg
ICAgQXVkaW9EZXN0aW5hdGlvbkNvY29hIHdoZW4gd2UgbmVlZCB0byBydW4gdGhlIEF1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IgaW4gYW5vdGhlciBwcm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNv
Y29hOjpnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICBSZW5hbWUgc2V0
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKCkgdG8gZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKCkgYmVjYXVzZQorICAgICAgICB0aGUgZnVuY3Rpb24gZXNzZW50aWFsbHkgcXVlcmll
cyB0aGUgZGVzY3JpcHRpb24uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6Omhhc0Vub3VnaEZyYW1lcyBjb25zdCk6IEFkZCB0aGlzIGZ1bmN0aW9uCisgICAgICAgIHNv
IHRoYXQgYSBzdWJjbGFzcyBjYW4gY2hlY2sgd2hldGhlciB0aGUgRklGTyBoYXMgZW5vdWdoIGF1
ZGlvIHNhbXBsZXMgdG8gcmVuZGVyLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpyZW5kZXIpOiBSZXBsYWNlIHRoZSBBdWRpb1RpbWVTdGFtcCogcGFyYW1ldGVyCisg
ICAgICAgIGJlY2F1c2Ugd2Ugb25seSBuZWVkIHR3byBmaWVsZHMgb2YgQXVkaW9UaW1lU3RhbXAg
aW4gdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6fkF1ZGlvRGVzdGluYXRpb25Db2NvYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJv
Yyk6IERlbGV0ZWQuIFRoaXMgZnVuY3Rpb24gaXMgbW92ZWQgdG8KKyAgICAgICAgQXVkaW9PdXRw
dXRVbml0QWRhcHRvci4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6
b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b091dHB1dFVuaXRBZGFwdG9yOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6On5BdWRpb091dHB1dFVuaXRBZGFwdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OnN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6aW5wdXRQcm9jKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNv
bmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFk
YXB0b3JNYWMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9PdXRw
dXRVbml0QWRhcHRvcjo6Y29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvRGVz
dGluYXRpb25Db2NvYTo6dGljayk6CisKIDIwMjAtMTAtMTYgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCBhIGR1bW15IFdl
YkF1dGhuUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNjQxNDA1OTI1NDAxLi5l
YjRlMTdmMmU3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjAzLDE5ICsyMDMsMjAg
QEAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVN
YWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCiBwbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCitwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1w
bGVCdWZmZXJMaXN0LmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291
cmNlLm1tCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3Bw
CiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KIHBsYXRmb3JtL2F1ZGlvL2NvY29hL1dl
YkF1ZGlvQnVmZmVyTGlzdC5jcHAKLXBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9u
SU9TLmNwcCBAbm8tdW5pZnkKK3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFw
dG9ySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJ
T1MuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBA
bm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBAbm8t
dW5pZnkKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0J1c01hYy5tbQotcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCitwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRw
dXRVbml0QWRhcHRvck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJN
YWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcAog
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAxYTdiZWMzYmIyYy4u
NzRkZmU3NzI5ZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC02MzMsNiArNjMzLDcgQEAKIAkJMURBQjMxMTIyNTFENkJGMzAw
RkM5NDg1IC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEIzMUExMjM3OURDODMwMDg4M0ZERSAvKiBXZWJW
aWRlb0NvbnRhaW5lckxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMURBQjMxMTQyNTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxREFC
MzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxREFCMzExNTI1MUQ3NERCMDBG
Qzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9M
YXllck1hbmFnZXJPYmpDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMURCNjZEM0IyNTM3QTk1NjAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFk
YXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFE
QjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMURCQzFCNTYyMzQ3
QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFG
IC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFERDNCNEM2MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRl
b0xheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJP
YmpDLm1tICovOyB9OwogCQkxREY3RTgxRjI1MUE5RTA2MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTI4
LDcgKzQxMjksNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0ND
MkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDA2M0Y4MjFFMjNGQTg5MDA4
MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MDFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFS
ZWdpc3RyeS5jcHAgKi87IH07CiAJCUNEMDYzRjgzMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0
YVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDA2M0Y4MTFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5oICovOyB9Owot
CQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQz
RTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgKi87IH07CisJCUNEMEVFRTBF
MTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUw
MDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCAqLzsgfTsKIAkJQ0QxMUIz
RTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDExQjNFMDIy
N0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbSAqLzsg
fTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RF
QTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDE3QTQ1RDIxMzc0MDgx
MDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxN0E0NTkyMTM3NDAxNjAwNzlFQzdCIC8qIFVuaWZp
ZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKQEAgLTUzMDUsNyArNTMwNiw2IEBACiAJCUZEMzE2MEFC
MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzUxMkIwMjZGNzAwQzFBMzU5
IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggKi87IH07CiAJCUZEMzE2MEFEMTJCMDI2RjcwMEMx
QTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzcxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYklucHV0
QnVmZmVyLmggKi87IH07CiAJCUZEMzE2MEFGMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRo
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3
OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5oICovOyB9OwotCQlGRDMxNjBCRDEyQjAy
NzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1
ZGlvRGVzdGluYXRpb25NYWMuaCAqLzsgfTsKIAkJRkQzMTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8q
IEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1h
Yy5oICovOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJhbVRpbWVs
aW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDM1
OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggKi87IH07CiAJCUZE
NDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0YxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY3
NTUsNiArNjc1NSw4IEBACiAJCTFEMDAyNkE5MjM3NEY5RDkwMENBNkNERiAvKiBKU0VudGVyUGlj
dHVyZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2QzUgLyogUGljdHVyZUluUGljdHVyZVN1
cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBQjMxMTMyNTFENzI1QzAwRkM5NDg1IC8qIFZpZGVv
TGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEQjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRp
b091dHB1dFVuaXRBZGFwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMURCNjZEMzgyNTM2NzhFQTAwQjY3
MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVk
aW9PdXRwdXRVbml0QWRhcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFE
QkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFEQzU1M0ZEMjExQkExMkEwMDRCNzgwRSAvKiBOYXZpZ2F0b3JTaGFyZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdhdG9yU2hhcmUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRjIxMUJBODQxMDA0Qjc4MEUgLyogU2hhcmVEYXRh
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFyZURhdGEuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTQzMDIsOCArMTQzMDQsNyBAQAogCQlDRDA2M0Y4MDFFMjNGQTg5
MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbml0RGF0YVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0QwNjNGODExRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5pdERhdGFSZWdpc3RyeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBDOEI1ODIxNDFDOENBMDA2MkY1OUQgLyogTWVk
aWFDYXBhYmlsaXRpZXNJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFG
QTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxMUIzREYyMjdDQUFBOTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDExQjNFMDIy
N0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBX
ZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTY1NjgsOCArMTY1NjksNyBAQAogCQlGRDMxNjA3ODEyQjAyNkY3MDBDMUEzNTkgLyogVmVj
dG9yTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWZWN0b3JN
YXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwNzkxMkIwMjZGNzAw
QzFBMzU5IC8qIFZlY3Rvck1hdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmVjdG9yTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNjBCNTEyQjAy
NzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBBdWRpb0J1c01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1
OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvRGVzdGluYXRpb25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9PdXRwdXRVbml0QWRh
cHRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE2MEI4MTJCMDI3
MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRl
ck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQkExMkIwMjcyQTAwQzFB
MzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZGVEZyYW1lTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MzEw
LDEwICsyNzMxMCw5IEBACiAJCUNEMEVFRTBEMTQ3NDNFNDgwMDNFQUZBMiAvKiBpb3MgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUNEMEVFRTBCMTQ3NDNF
MzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCAqLywKLQkJCQlDRDBFRUUwQTE0
NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovLAogCQkJCUNENTU5NjhG
MTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwICovLAogCQkJCUNENTU5
NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuaCAqLywKKwkJCQlDRDBF
RUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgKi8s
CiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywK
IAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmgg
Ki8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSAqLywKQEAgLTI3Mzc4LDYgKzI3Mzc3LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQx
MzE1MTg0MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwICovLAog
CQkJCTQxMzE1MTg2MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCAq
LywKKwkJCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRv
ci5jcHAgKi8sCisJCQkJMURCNjZEMzcyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3IuaCAqLywKIAkJCQkwNzNCODc2MjFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1w
bGVCdWZmZXJMaXN0LmNwcCAqLywKIAkJCQkwNzNCODc2MzFFNDM4NTlEMDA3MUMwRUMgLyogQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmggKi8sCiAJCQkJMDczQjg3NjUxRTQzODU5RDAwNzFDMEVDIC8q
IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oICovLApAQCAtMzAyOTAsMTIgKzMwMjkxLDExIEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUZEMzE2MEI1MTJCMDI3MkEw
MEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAqLywKLQkJCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEz
NTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8sCi0JCQkJRkQzMTYwQjcxMkIwMjcyQTAw
QzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLywKIAkJCQlGRDMxNjBCODEyQjAyNzJB
MDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNwcCAqLywKIAkJCQlGRDMxNjBCOTEyQjAy
NzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggKi8sCiAJCQkJQ0QyRjRBMjUxOEQ4
QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAgKi8sCiAJCQkJQ0Qy
RjRBMjYxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oICovLAor
CQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yTWFj
LmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFj
Lm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAg
Ki8sCiAJCQkpOwpAQCAtMzA1NzYsNyArMzA1NzYsNiBAQAogCQkJCTgzQkQzQ0VFMjQ5OThFMDEw
MEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
N0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBp
biBIZWFkZXJzICovLAotCQkJCUZEMzE2MEJEMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3Rp
bmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAwODEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDgwMTJC
MDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMwNTkyLDYgKzMwNTkxLDcgQEAKIAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBD
MUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU3MTQ2N0IzMjRB
QkFFRjIwMEZCMkY1MCAvKiBBdWRpb05vZGVPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlT3V0cHV0LmggaW4gSGVhZGVycyAq
LywKKwkJCQkxREI2NkQzQjI1MzdBOTU2MDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUQxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlv
UGFyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzU2OTlFMjUyQ0YzNjIwMEUxQjk1NiAvKiBB
dWRpb1BhcmFtRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCOTg3MEMyNTIyNUY4
MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1NYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMzUyNTQsOCAr
MzUyNTQsOCBAQAogCQkJZmlsZXMgPSAoCiAJCQkJQTk3ODdDQjQxRjVGNUM2NjAwQzU1MUM2IC8q
IEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMUY3Qjcz
MTI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNENTU5NjkxMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0Zp
bGVSZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VB
RkEyIC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEOEE3QkJCMTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNERTNBODU3MTdGNjAyMDQwMEM1QkUyMCAv
KiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAppbmRleCAxNjBjNjU3
OGUxNWUuLjQxOTY1NTJkOTE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4gaW4gQXVkaW9EZXN0aW5hdGlvbiB0
byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUKICAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUo
KSBjb25zdCA9IDA7Ci0gICAgc3RhdGljIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUoKTsKIAogICAg
IHZpcnR1YWwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9u
Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmNwcAppbmRleCAxZDBmNGUyODgxMTguLjMzMzgzMmMyYjRjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC01Niw3ICs1Niw2IEBAIFJlZjxBdWRpb0Rlc3RpbmF0
aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywg
Y29uc3QKICAgICAgICAgcmV0dXJuIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y3JlYXRlT3ZlcnJp
ZGUoY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogCiAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0
UmVmKCpuZXcgQXVkaW9EZXN0aW5hdGlvbkNvY29hKGNhbGxiYWNrLCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBzYW1wbGVSYXRlKSk7Ci0gICAgZGVzdGluYXRpb24tPmNvbmZpZ3VyZSgpOwogICAg
IHJldHVybiBkZXN0aW5hdGlvbjsKIH0KIApAQCAtNzAsMTUgKzY5LDE2IEBAIHVuc2lnbmVkIGxv
bmcgQXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KCkKICAgICByZXR1cm4gQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkubWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKTsK
IH0KIAotQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9J
T0NhbGxiYWNrJiBjYWxsYmFjaywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSkKLSAgICA6IG1fb3V0cHV0VW5pdCgwKQorQXVkaW9EZXN0aW5hdGlvbkNv
Y29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBjb25m
aWd1cmVBdWRpb091dHB1dFVuaXQpCisgICAgOiBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoKnRo
aXMpCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgICwgbV9vdXRwdXRCdXMoQXVkaW9C
dXM6OmNyZWF0ZShudW1iZXJPZk91dHB1dENoYW5uZWxzLCBBdWRpb1V0aWxpdGllczo6cmVuZGVy
UXVhbnR1bVNpemUsIGZhbHNlKS5yZWxlYXNlTm9uTnVsbCgpKQogICAgICwgbV9yZW5kZXJCdXMo
QXVkaW9CdXM6OmNyZWF0ZShudW1iZXJPZk91dHB1dENoYW5uZWxzLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUpLnJlbGVhc2VOb25OdWxsKCkpCiAgICAgLCBtX2ZpZm8obWFrZVVu
aXF1ZVJlZjxQdXNoUHVsbEZJRk8+KG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZpZm9TaXplKSkK
ICAgICAsIG1fY29udGV4dFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKIHsKLSAgICBjb25maWd1cmUo
KTsKKyAgICBpZiAoY29uZmlndXJlQXVkaW9PdXRwdXRVbml0KQorICAgICAgICBtX2F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IuY29uZmlndXJlKGhhcmR3YXJlU2FtcGxlUmF0ZSgpLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKTsKIAogICAgIGF1dG8gaGFyZHdhcmVTYW1wbGVSYXRlID0gdGhpcy0+aGFy
ZHdhcmVTYW1wbGVSYXRlKCk7CiAgICAgaWYgKHNhbXBsZVJhdGUgIT0gaGFyZHdhcmVTYW1wbGVS
YXRlKSB7CkBAIC04NywxMSArODcsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZAogICAgIH0K
IH0KIAotQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKCkKLXsK
LSAgICBpZiAobV9vdXRwdXRVbml0KQotICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlz
cG9zZShtX291dHB1dFVuaXQpOwotfQorQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0
aW5hdGlvbkNvY29hKCkgPSBkZWZhdWx0OwogCiB1bnNpZ25lZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdAogewpAQCAtMTA3LDcgKzEwMyw3IEBA
IHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9u
PHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUCiB7CiAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpzdGFydCIpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IFdURk1v
dmUoZGlzcGF0Y2hUb1JlbmRlclRocmVhZCk7Ci0gICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9P
dXRwdXRVbml0U3RhcnQobV9vdXRwdXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1
ZGlvT3V0cHV0VW5pdEFkYXB0b3Iuc3RhcnQoKTsKIAogICAgIGlmICghcmVzdWx0KQogICAgICAg
ICBzZXRJc1BsYXlpbmcodHJ1ZSk7CkBAIC0xMTYsNyArMTEyLDcgQEAgdm9pZCBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBk
aXNwYXRjaFQKIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wKCkKIHsKICAgICBMT0co
TWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3AiKTsKLSAgICBPU1N0YXR1cyByZXN1
bHQgPSBBdWRpb091dHB1dFVuaXRTdG9wKG1fb3V0cHV0VW5pdCk7CisgICAgT1NTdGF0dXMgcmVz
dWx0ID0gbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLnN0b3AoKTsKICAgICBtX2Rpc3BhdGNoVG9S
ZW5kZXJUaHJlYWQgPSBudWxscHRyOwogCiAgICAgaWYgKCFyZXN1bHQpCkBAIC0xMzMsNyArMTI5
LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldElzUGxheWluZyhib29sIGlzUGxh
eWluZykKICAgICBtX2NhbGxiYWNrLmlzUGxheWluZ0RpZENoYW5nZSgpOwogfQogCi12b2lkIEF1
ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0KQordm9pZCBBdWRpb0Rlc3RpbmF0
aW9uQ29jb2E6OmdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24mIHN0cmVhbUZvcm1hdCkKIHsKICAgICBjb25zdCBpbnQgYnl0ZXNQZXJGbG9h
dCA9IHNpemVvZihGbG9hdDMyKTsKICAgICBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OwpAQCAt
MTU3LDIyICsxNTMsMjQgQEAgc3RhdGljIHZvaWQgYXNzaWduQXVkaW9CdWZmZXJzVG9CdXMoQXVk
aW9CdWZmZXIqIGJ1ZmZlcnMsIEF1ZGlvQnVzJiBidXMsIFVJbnQzMgogICAgIH0KIH0KIAorYm9v
bCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6Omhhc0Vub3VnaEZyYW1lcyhVSW50MzIgbnVtYmVyT2ZG
cmFtZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmlmby0+bGVuZ3RoKCkgPj0gbnVtYmVyT2ZG
cmFtZXM7Cit9CisKIC8vIFB1bGxzIG9uIG91ciBwcm92aWRlciB0byBnZXQgcmVuZGVyZWQgYXVk
aW8gc3RyZWFtLgotT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIoY29uc3Qg
QXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1
ZmZlckxpc3QqIGlvRGF0YSkKK09TU3RhdHVzIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVy
KGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwgVUludDMyIG51bWJlck9mRnJh
bWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKIHsKLSAgICBpZiAobV9maWZvLT5sZW5ndGgo
KSA8IG51bWJlck9mRnJhbWVzKQorICAgIGlmICghaGFzRW5vdWdoRnJhbWVzKG51bWJlck9mRnJh
bWVzKSkKICAgICAgICAgcmV0dXJuIG5vRXJyOwogCi0gICAgaWYgKHRpbWVzdGFtcCkgewotICAg
ICAgICBtX291dHB1dFRpbWVzdGFtcCA9IHsKLSAgICAgICAgICAgIFNlY29uZHMgeyB0aW1lc3Rh
bXAtPm1TYW1wbGVUaW1lIC8gc2FtcGxlUmF0ZSgpIH0sCi0gICAgICAgICAgICBNb25vdG9uaWNU
aW1lOjpmcm9tTWFjaEFic29sdXRlVGltZSh0aW1lc3RhbXAtPm1Ib3N0VGltZSkKLSAgICAgICAg
fTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9vdXRwdXRUaW1lc3RhbXAgPSBBdWRpb0lPUG9zaXRp
b24geyB9OworICAgIG1fb3V0cHV0VGltZXN0YW1wID0geworICAgICAgICBTZWNvbmRzIHsgc2Ft
cGxlVGltZSAvIHNhbXBsZVJhdGUoKSB9LAorICAgICAgICBNb25vdG9uaWNUaW1lOjpmcm9tTWFj
aEFic29sdXRlVGltZShob3N0VGltZSkKKyAgICB9OwogCiAgICAgYXV0byogYnVmZmVycyA9IGlv
RGF0YS0+bUJ1ZmZlcnM7Ci0gICAgVUludDMyIG51bWJlck9mQnVmZmVycyA9IGlvRGF0YS0+bU51
bWJlckJ1ZmZlcnM7CisgICAgYXV0byBudW1iZXJPZkJ1ZmZlcnMgPSBpb0RhdGEtPm1OdW1iZXJC
dWZmZXJzOwogCiAgICAgLy8gQXNzb2NpYXRlIHRoZSBkZXN0aW5hdGlvbiBkYXRhIGFycmF5IHdp
dGggdGhlIG91dHB1dCBidXMgdGhlbiBmaWxsIHRoZSBGSUZPLgogICAgIGFzc2lnbkF1ZGlvQnVm
ZmVyc1RvQnVzKGJ1ZmZlcnMsIG1fb3V0cHV0QnVzLmdldCgpLCBudW1iZXJPZkJ1ZmZlcnMsIG51
bWJlck9mRnJhbWVzLCAwLCBudW1iZXJPZkZyYW1lcyk7CkBAIC0yMTAsMTMgKzIwOCw2IEBAIHZv
aWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBm
cmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNr
Ci1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0
YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCogdGlt
ZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBhdXRvKiBhdWRpb091dHB1dCA9IHN0YXRpY19j
YXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVzZXJEYXRhKTsKLSAgICByZXR1cm4gYXVkaW9P
dXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9mRnJhbWVzLCBpb0RhdGEpOwotfQotCiB2
b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlkZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nl
c3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9E
ZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAwODk0ZDYyMWEyZjEuLmNhNGVlYmZkMDNjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkF1
ZGlvRGVzdGluYXRpb24uaCIKICNpbmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKKyNpbmNsdWRl
ICJBdWRpb091dHB1dFVuaXRBZGFwdG9yLmgiCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRl
ci5oIgogI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CkBAIC00Myw0NyArNDQsMzkgQEAgY2xhc3MgUHVzaFB1bGxGSUZPOwogdXNpbmcgQ3Jl
YXRlQXVkaW9EZXN0aW5hdGlvbkNvY29hT3ZlcnJpZGUgPSBSZWY8QXVkaW9EZXN0aW5hdGlvbj4o
KikoQXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKIC8vIEFuIEF1ZGlvRGVz
dGluYXRpb24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVmYXVsdCBvdXRwdXQgQXVkaW9Vbml0Ci1jbGFz
cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGlj
IEF1ZGlvU291cmNlUHJvdmlkZXIgeworY2xhc3MgQXVkaW9EZXN0aW5hdGlvbkNvY29hIDogcHVi
bGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBBdWRpb1VuaXRSZW5kZXJlciwgcHVibGljIEF1
ZGlvU291cmNlUHJvdmlkZXIgewogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25Db2NvYShB
dWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlKTsKLSAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiwgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBjb25m
aWd1cmVBdWRpb091dHB1dFVuaXQgPSB0cnVlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBD
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSBjcmVhdGVPdmVycmlkZTsKIAogcHJv
dGVjdGVkOgotICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzRW5vdWdoRnJhbWVzKFVJbnQzMiBudW1iZXJPZkZyYW1lcykgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgcmVuZGVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRf
dCBob3N0VGltZSwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0
YSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlbmRlck9uUmVuZGVy
aW5nVGhlYWQoc2l6ZV90IGZyYW1lc1RvUmVuZGVyKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0SXNQbGF5aW5nKGJvb2wpOwogICAgIGJvb2wgaXNQbGF5aW5nKCkgZmluYWwgeyByZXR1
cm4gbV9pc1BsYXlpbmc7IH0KICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jb250ZXh0U2FtcGxlUmF0ZTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZl
cigpIGNvbnN0IGZpbmFsOwotICAgIEF1ZGlvVW5pdCYgb3V0cHV0VW5pdCgpIHsgcmV0dXJuIG1f
b3V0cHV0VW5pdDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZl
cigpIGNvbnN0IGZpbmFsOwogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygp
IGNvbnN0OwotICAgIAotICAgIC8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi0gICAgc3Rh
dGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0
aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQz
MiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwogCi0gICAgdm9pZCBz
ZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJik7CiAKICAgICBGdW5jdGlvbjx2b2lkKEZ1
bmN0aW9uPHZvaWQoKT4mJik+IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZDsKIAogcHJpdmF0ZToK
KyAgICBmcmllbmQgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0
ZShBdWRpb0lPQ2FsbGJhY2smLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZs
b2F0KTsKKwogICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcmVu
ZGVyT25SZW5kZXJpbmdUaGVhZChzaXplX3QgZnJhbWVzVG9SZW5kZXIpOwotCi0gICAgZnJpZW5k
IFJlZjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0Nh
bGxiYWNrJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBmbG9hdCk7Ci0gICAg
CiAgICAgLy8gQXVkaW9Tb3VyY2VQcm92aWRlci4KLSAgICB2b2lkIHByb3ZpZGVJbnB1dChBdWRp
b0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOwotCi0gICAgdm9pZCBjb25maWd1
cmUoKTsKLSAgICB2b2lkIHByb2Nlc3NCdXNBZnRlclJlbmRlcihBdWRpb0J1cyYsIFVJbnQzMiBu
dW1iZXJPZkZyYW1lcyk7Ci0KLSAgICBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3Rh
bXAqLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpIGZpbmFsOwogCi0gICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKKyAgICBB
dWRpb091dHB1dFVuaXRBZGFwdG9yIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcjsKICAgICBBdWRp
b0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7CiAKICAgICAvLyBUbyBwYXNzIHRoZSBkYXRhIGZyb20g
RklGTyB0byB0aGUgYXVkaW8gZGV2aWNlIGNhbGxiYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzZGQ5M2NiOWRm
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9PdXRwdXRVbml0QWRhcHRvci5o
IgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRp
b091dHB1dFVuaXRBZGFwdG9yOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yKEF1ZGlvVW5pdFJlbmRl
cmVyJiByZW5kZXJlcikKKyAgICA6IG1fb3V0cHV0VW5pdCgwKQorICAgICwgbV9hdWRpb1VuaXRS
ZW5kZXJlcihyZW5kZXJlcikKK3sKK30KKworQXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6fkF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3IoKQoreworICAgIGlmIChtX291dHB1dFVuaXQpCisgICAgICAgIEF1
ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Cit9CisKK09TU3RhdHVz
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OnN0YXJ0KCkKK3sKKyAgICByZXR1cm4gQXVkaW9PdXRw
dXRVbml0U3RhcnQobV9vdXRwdXRVbml0KTsKK30KKworT1NTdGF0dXMgQXVkaW9PdXRwdXRVbml0
QWRhcHRvcjo6c3RvcCgpCit7CisgICAgcmV0dXJuIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9vdXRw
dXRVbml0KTsKK30KKworLy8gRGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKK09TU3RhdHVzIEF1
ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0
UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCogdGltZVN0YW1wLCBVSW50
MzIgLypidXNOdW1iZXIqLywgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3Qq
IGlvRGF0YSkKK3sKKyAgICBhdXRvKiBhZGFwdG9yID0gc3RhdGljX2Nhc3Q8QXVkaW9PdXRwdXRV
bml0QWRhcHRvcio+KHVzZXJEYXRhKTsKKyAgICBkb3VibGUgc2FtcGxlVGltZSA9IDAuOworICAg
IHVpbnQ2NF90IGhvc3RUaW1lID0gMDsKKyAgICBpZiAodGltZVN0YW1wKSB7CisgICAgICAgIHNh
bXBsZVRpbWUgPSB0aW1lU3RhbXAtPm1TYW1wbGVUaW1lOworICAgICAgICBob3N0VGltZSA9IHRp
bWVTdGFtcC0+bUhvc3RUaW1lOworICAgIH0KKworICAgIHJldHVybiBhZGFwdG9yLT5tX2F1ZGlv
VW5pdFJlbmRlcmVyLnJlbmRlcihzYW1wbGVUaW1lLCBob3N0VGltZSwgbnVtYmVyT2ZGcmFtZXMs
IGlvRGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5kOGRkYmRkNjZiNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmgK
QEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQl9BVURJTykKKworI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1VuaXRSZW5kZXJlciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+QXVkaW9Vbml0UmVuZGVyZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCBPU1N0
YXR1cyByZW5kZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhvc3RUaW1lLCBVSW50MzIg
bnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKSA9IDA7Cit9OworCitjbGFz
cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBB
dWRpb091dHB1dFVuaXRBZGFwdG9yKEF1ZGlvVW5pdFJlbmRlcmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgfkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscyk7CisgICAgV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgc3RhcnQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBPU1N0YXR1cyBzdG9wKCk7CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9u
RmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQzMiBu
dW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOworCisgICAgQXVkaW9Vbml0
IG1fb3V0cHV0VW5pdDsKKyAgICBBdWRpb1VuaXRSZW5kZXJlciYgbV9hdWRpb1VuaXRSZW5kZXJl
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAKc2ltaWxhcml0eSBpbmRleCA3OSUKcmVuYW1l
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25J
T1MuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9P
dXRwdXRVbml0QWRhcHRvcklPUy5jcHAKaW5kZXggYzQ3MzNkZTdmNzVkLi4yZTk2MzBmYjYwZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3Rp
bmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDE0LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI4LDEwIEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuaCIKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
LSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCIKLQogI2luY2x1ZGUgIkF1ZGlvU2Vz
c2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCkBAIC00Niw3ICs0NSw3IEBA
IFNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywg
KEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSgpCit2b2lkIEF1ZGlvT3V0cHV0VW5pdEFk
YXB0b3I6OmNvbmZpZ3VyZShmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpCiB7CiAgICAgY29uc3QgaW50IGtQcmVmZXJyZWRCdWZmZXJTaXpl
ID0gMjU2OwogCkBAIC02MywxMSArNjIsMTEgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OmNvbmZpZ3VyZSgpCiAKICAgICBBU1NFUlQoY29tcCk7CiAKLSAgICBPU1N0YXR1cyByZXN1bHQg
PSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGNvbXAsICZvdXRwdXRVbml0KCkpOworICAgIE9T
U3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0
VW5pdCk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCiAgICAgVUludDMyIGZsYWcgPSAxOwotICAg
IHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwKKyAgICByZXN1bHQg
PSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsCiAgICAgICAgIGtBdWRpb091dHB1
dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKICAgICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwK
ICAgICAgICAgMCwKQEAgLTc1LDM0ICs3NCwzOSBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6Y29uZmlndXJlKCkKICAgICAgICAgc2l6ZW9mKGZsYWcpKTsKICAgICBBU1NFUlQoIXJlc3Vs
dCk7CiAKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVuaXQoKSk7Cisg
ICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShtX291dHB1dFVuaXQpOwogICAgIEFTU0VS
VCghcmVzdWx0KTsKICAgICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCiAgICAgQVVSZW5kZXJDYWxs
YmFja1N0cnVjdCBpbnB1dDsKICAgICBpbnB1dC5pbnB1dFByb2MgPSBpbnB1dFByb2M7CiAgICAg
aW5wdXQuaW5wdXRQcm9jUmVmQ29uID0gdGhpczsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQ
cm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFj
aywga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOworICAg
IHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFBy
b3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZpbnB1
dCwgc2l6ZW9mKGlucHV0KSk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCiAgICAgLy8gU2V0IHN0
cmVhbSBmb3JtYXQKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0
OwogCiAgICAgVUludDMyIHNpemUgPSBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
KTsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRp
b1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2
b2lkKikmc3RyZWFtRm9ybWF0LCAmc2l6ZSk7CisgICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0UHJv
cGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVk
aW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwogICAg
IEFTU0VSVCghcmVzdWx0KTsKIAotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihz
dHJlYW1Gb3JtYXQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0
VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVf
SW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uKSk7CisgICAgY29uc3RleHByIGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZs
b2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0c1BlckJ5dGUgPSA4OworICAgIHN0cmVhbUZv
cm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQu
bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9y
bWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9y
bWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAx
OworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsK
KyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1Bl
ckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0
LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQs
IDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKSk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCiAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRT
ZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJlZmVycmVkQnVmZmVyU2l6ZSk7CiB9
CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVk
aW9CdXMmLCBVSW50MzIpCi17Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRh
cHRvck1hYy5jcHAKc2ltaWxhcml0eSBpbmRleCA3MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCnJlbmFtZSB0byBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRvck1h
Yy5jcHAKaW5kZXggNzBmOWM5ZmZmNTFmLi5jOGVkM2VmNzhjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRv
ck1hYy5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNywxNyArMjgsMTYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgiCisjaW5jbHVkZSAiQXVkaW9PdXRwdXRVbml0QWRh
cHRvci5oIgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oTUFDKQogCiAjaW5j
bHVkZSAiQXVkaW9CdXMuaCIKLSNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCiAjaW5jbHVkZSA8Q29y
ZUF1ZGlvL0F1ZGlvSGFyZHdhcmUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEF1
ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkKK3ZvaWQgQXVkaW9PdXRwdXRVbml0QWRh
cHRvcjo6Y29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscykKIHsKICAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRP
dXRwdXRVbml0CiAgICAgQXVkaW9Db21wb25lbnQgY29tcDsKQEAgLTUyLDM3ICs1MiwzNyBAQCB2
b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkKIAogICAgIEFTU0VSVChjb21w
KTsKIAotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29t
cCwgJm91dHB1dFVuaXQoKSk7CisgICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9Db21wb25lbnRJ
bnN0YW5jZU5ldyhjb21wLCAmbV9vdXRwdXRVbml0KTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CiAK
LSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVuaXQoKSk7CisgICAgcmVz
dWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShtX291dHB1dFVuaXQpOwogICAgIEFTU0VSVCghcmVz
dWx0KTsKIAogICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKICAgICBBVVJlbmRlckNhbGxiYWNr
U3RydWN0IGlucHV0OwogICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0UHJvYzsKICAgICBpbnB1
dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOwotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3Bl
cnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBr
QXVkaW9Vbml0U2NvcGVfR2xvYmFsLCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOworICAgIHJl
c3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3Bl
cnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCAwLCAmaW5wdXQs
IHNpemVvZihpbnB1dCkpOwogICAgIEFTU0VSVCghcmVzdWx0KTsKIAogICAgIC8vIFNldCBzdHJl
YW0gZm9ybWF0CisgICAgY29uc3RleHByIGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0
MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0c1BlckJ5dGUgPSA4OworCiAgICAgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLSAgICBzZXRBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKyAgICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUg
PSBoYXJkd2FyZVNhbXBsZVJhdGU7CisgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRp
b0Zvcm1hdExpbmVhclBDTTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlv
Rm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVy
bGVhdmVkOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0
OworICAgIHN0cmVhbUZvcm1hdC5tRnJhbWVzUGVyUGFja2V0ID0gMTsKKyAgICBzdHJlYW1Gb3Jt
YXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tQ2hh
bm5lbHNQZXJGcmFtZSA9IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CisgICAgc3RyZWFtRm9ybWF0
Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdDsKIAotICAgIHJl
c3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3Bl
cnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVh
bUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOworICAgIHJlc3Vs
dCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5
X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZv
cm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwogICAgIEFTU0VSVCgh
cmVzdWx0KTsKIH0KIAotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnByb2Nlc3NCdXNBZnRl
clJlbmRlcihBdWRpb0J1cyYgYnVzLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpCi17Ci0gICAgLy8g
Q2xhbXAgdmFsdWVzIGF0IDBkYiAoaS5lLiwgWy0xLjAsIDEuMF0pCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkgewotICAgICAgICBhdXRv
KiBjaGFubmVsID0gYnVzLmNoYW5uZWwoaSk7Ci0gICAgICAgIGlmICghY2hhbm5lbC0+aXNTaWxl
bnQoKSkKLSAgICAgICAgICAgIFZlY3Rvck1hdGg6OmNsYW1wKGNoYW5uZWwtPmRhdGEoKSwgLTEs
IDEsIGNoYW5uZWwtPm11dGFibGVEYXRhKCksIG51bWJlck9mRnJhbWVzKTsKLSAgICB9Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCmluZGV4IDVhMTJjZGU0ZmNkZi4uOTlh
NmMyNjdjNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTY4LDEwICs2OCwxMCBAQCB2b2lk
IE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2soKQogewogICAgIG1fd29ya1F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZGcmFtZXNU
b1Byb2Nlc3MgPSBtX251bWJlck9mRnJhbWVzVG9Qcm9jZXNzXSB7CiAgICAgICAgIEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7Ci0gICAgICAgIHNldEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOworICAgICAgICBnZXRBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKIAogICAgICAgICBXZWJBdWRpb0J1ZmZlckxp
c3Qgd2ViQXVkaW9CdWZmZXJMaXN0IHsgc3RyZWFtRm9ybWF0LCBudW1iZXJPZkZyYW1lc1RvUHJv
Y2VzcyB9OwotICAgICAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh0aGlzLCAw
LCAwLCAwLCBudW1iZXJPZkZyYW1lc1RvUHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3Qo
KSk7CisgICAgICAgIHJlbmRlcigwLiwgMCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1
ZGlvQnVmZmVyTGlzdC5saXN0KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlkNzA3MWIx
NjY1Ni4uZTg5Yzg1MGIzYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIwLTEwLTE2
ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQ
VSBQcm9jZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4g
YXVkaW8gZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJl
bnQgaW1wbGVtZW50YXRpb24gb2YgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiBlc3NlbnRpYWxseSBy
dW5zIHRoZQorICAgICAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgaW4gdGhlIEdQVSBwcm9jZXNz
LCB3aGljaCBpcyBub3QgZ29vZCBiZWNhdXNlIHdlIGFyZSBhZGRpbmcKKyAgICAgICAgQXVkaW9X
b3JrbGV0IHN0dWZmIGludG8gQXVkaW9EZXN0aW5hdGlvbkNvY29hLCBidXQgdGhlIEF1ZGlvV29y
a2xldCBzdHVmZiBpcworICAgICAgICBpcnJlbGV2YW50IHRvIHRoZSBHUFUgcHJvY2Vzcy4KKwor
ICAgICAgICBXaGF0IHJlYWxseSBuZWVkcyB0byBydW4gaW4gdGhlIEdQVSBwcm9jZXNzIChmb3Ig
Q29jb2EgcGxhdGZvcm1zIGF0IGxlYXN0KSBpcyB0aGUKKyAgICAgICAgYXVkaW8gb3V0cHV0IHVu
aXQuIFRoaXMgcGF0Y2ggYWRkcyBXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yIGFuZAor
ICAgICAgICBXZWJDb3JlOjpBdWRpb1VuaXRSZW5kZXJlciB0byBpbXBsZW1lbnQgdGhhdC4gV2l0
aCB0aGlzIHBhdGNoLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCisgICAgICAgIGluIHRoZSBHUFUg
cHJvY2VzcyBpcyBhbiBBdWRpb1VuaXRSZW5kZXJlciBhbmQgaXQgZW1iZWRzIGFuIEF1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IKKyAgICAgICAgbGlrZSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgZG9lcyBp
biB0aGUgV2ViIHByb2Nlc3MuIEVzc2VudGlhbGx5LCB3ZSBydW4gQXVkaW9PdXRwdXRVbml0QWRh
cHRvcgorICAgICAgICByZW1vdGVseSBmcm9tIHRoZSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EncyBw
ZXJzcGVjdGl2ZS4KKworICAgICAgICBBbHNvLCBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biwgdGhlIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBpbiBhIFdlYgorICAgICAgICBwcm9j
ZXNzIHRyYW5zZmVycyBhdWRpbyBkYXRhIHRvIHRoZSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uIGlu
IHRoZSBHUFUgcHJvY2VzcworICAgICAgICB3aXRoIElQQyBtZXNzYWdlcyAoUmVtb3RlQXVkaW9C
dXNEYXRhKS4gVGhpcyBpcyBub3QgZWZmaWNpZW50IGJlY2F1c2Ugb2YgdGhlCisgICAgICAgIGxh
cmdlIG51bWJlciBvZiBJUEMgbWVzc2FnZXMgZm9yIGF1ZGlvIHNhbXBsZXMuCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgKFdlYiBwcm9jZXNz
KSB0cmFuc2ZlcnMgYXVkaW8gc2FtcGxlcworICAgICAgICB0byBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uKEdQVSBwcm9jZXNzKSB3aXRoIGEgQ0FSaW5nQnVmZmVyIHByb3ZpZGluZyBzaGFyZWQKKyAg
ICAgICAgYnVmZmVycyBmb3IgdGhlIFdlYiBwcm9jZXNzIGFuZCB0aGUgR1BVIHByb2Nlc3MuCisK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6flJlbW90ZUF1ZGlvRGVz
dGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjphdWRp
b1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmlzUGxh
eWluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uOjpzdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6cmVuZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlcjo6YXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjppc1BsYXlpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpmcmFtZXNQZXJCdWZmZXIg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3Nh
Z2VzLmluOgorICAgICAgICBBZGQgYSBtZXNzYWdlIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2Vk
IHRvIHN1cHBvcnQgdXNpbmcgQ0FSaW5nQnVmZmVyIHRvCisgICAgICAgIHRyYW5zbWl0IGF1ZGlv
IHNhbXBsZXMgdG8gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0J1c0RhdGEuaDogUmVtb3ZlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdGFydCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVzdEJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVuZGVyT25S
ZW5kZXJpbmdUaGVhZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6c3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OnJlbmRlckJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hhbmdlSXNQbGF5aW5nKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkuaDoKKyAgICAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IGlzIGEgc3ViY2xhc3Mg
b2YgQXVkaW9EZXN0aW5hdGlvbkNvY29hLiBJdCBwdWxscyBhdWRpbworICAgICAgICBzYW1wbGVz
IGZyb20gdGhlIFdlYkF1ZGlvIHNpZGUgYW5kIHVzZSBhIENBUmluZ0J1ZmZlciB0byBwdXNoIGF1
ZGlvIHNhbXBsZXMgdG8KKyAgICAgICAgdGhlIGF1ZGlvIG91dHB1dCB1bml0IChtYW5hZ2VkIGJ5
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24pIGluIHRoZSBHUFUgcHJvY2Vzcy4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgIEFkZCBhIG1lc3NhZ2UgUmVxdWVzdEJ1ZmZlciwgd2hpY2ggY2FuIGJlIHVz
ZWQgYnkgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiB0byBhc2sKKyAgICAgICAgZm9yIChwdWxsKSBh
dWRpbyBzYW1wbGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXI6OnB1c2hTYW1wbGVzKTogQSBtaW5vciBmaXggdG8gZ2V0IHJpZCBv
ZgorICAgICAgICBhIHR5cGUgY29udmVyc2lvbi4KKwogMjAyMC0xMC0xNiAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IGEg
ZHVtbXkgV2ViQXV0aG5Qcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRl
eCAyN2YyYTY5OTZhYzkuLjVkNzcwOWNiZTE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIuY3BwCkBAIC0yOSwxMTYgKzI5LDE0NCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQl9BVURJTykKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKLSNpbmNsdWRlICJSZW1vdGVBdWRpb0J1c0RhdGEuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9CdXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVz
dGluYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxsYmFjay5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXVkaW9VdGlsaXRpZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1B1c2hQdWxs
RklGTy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2Vt
YXBob3JlLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgeworI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRp
b091dHB1dFVuaXRBZGFwdG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+CisjZW5kaWYKIAotLy8gVGhpcyBGSUZPIHNp
emUgbWF0Y2hlcyB0byBvbmUgaW4gQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcCBhbmQgd2FzIGlt
cG9ydGVkIGZyb20gQmxpbmsuCi1jb25zdGV4cHIgc2l6ZV90IGZpZm9TaXplID0gOTYgKiBXZWJD
b3JlOjpBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemU7CituYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiwgcHVibGljIFdlYkNvcmU6OkF1ZGlvSU9D
YWxsYmFjayB7CitjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCisgICAgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4KKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpBdWRpb1VuaXRSZW5kZXJlcgorI2VuZGlmCit7
CiBwdWJsaWM6Ci0gICAgdXNpbmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRpb0J1czsKLSAgICB1
c2luZyBBdWRpb0Rlc3RpbmF0aW9uID0gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjsKLSAgICB1
c2luZyBTaGFyZWRCdWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI7Ci0KICAgICBzdGF0aWMg
UmVmPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aW9uLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyLAotICAgICAgICBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJl
ck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQg
c2FtcGxlUmF0ZSkKKyAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJf
dCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oY29ubmVjdGlv
biwgaWRlbnRpZmllciwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oY29ubmVjdGlvbiwgaWRlbnRpZmllciwgaW5w
dXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFtX2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKSk7Ci0gICAgfQorICAgIHZpcnR1YWwgflJlbW90
ZUF1ZGlvRGVzdGluYXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHNjaGVkdWxlR3JhY2Vm
dWxTaHV0ZG93bklmTmVlZGVkKCkKICAgICB7Ci0gICAgICAgIGlmICghaXNQbGF5aW5nKCkpCisg
ICAgICAgIGlmICghbV9pc1BsYXlpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1f
cHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1bFNodXRkb3duID0gdGhpczsKICAgICAgICAgc3RvcCgp
OwogICAgIH0KIAotICAgIHZvaWQgc3RhcnQoKSB7IG1fZGVzdGluYXRpb24tPnN0YXJ0KHsgfSk7
IH0KLSAgICB2b2lkIHN0b3AoKSB7IG1fZGVzdGluYXRpb24tPnN0b3AoKTsgfQotICAgIGJvb2wg
aXNQbGF5aW5nKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCk7IH0KLSAgICB1
bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uLT5m
cmFtZXNQZXJCdWZmZXIoKSA7IH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGF1ZGlv
U2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNI
YW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQorICAgIHsKKyAgICAgICAgbV9kZXNjcmlwdGlv
biA9IGRlc2NyaXB0aW9uOworCisgICAgICAgIGlmIChpcGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICBtX3JpbmdCdWZmZXItPmRlYWxsb2NhdGUoKTsKKyAgICAgICAgICAg
IHN0b3JhZ2UoKS5zZXRSZWFkT25seShmYWxzZSk7CisgICAgICAgICAgICBzdG9yYWdlKCkuc2V0
U3RvcmFnZShudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGF1dG8gbWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIHN0b3JhZ2UoKS5zZXRT
dG9yYWdlKFdURk1vdmUobWVtb3J5KSk7CisgICAgICAgIHN0b3JhZ2UoKS5zZXRSZWFkT25seSh0
cnVlKTsKKworICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGRlc2NyaXB0aW9uLCBudW1i
ZXJPZkZyYW1lcyk7CisgICAgfQorI2VuZGlmCisKKyAgICB2b2lkIHN0YXJ0KCkKKyAgICB7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIGlmIChtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iu
c3RhcnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2lzUGxheWluZyA9IHRy
dWU7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIHN0b3AoKQorICAgIHsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgaWYgKG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdG9wKCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKworICAg
ICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24pIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlZkNvdW50KCkgPT0gMSk7CisgICAgICAgICAgICBtX3Byb3Rl
Y3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93biA9IG51bGxwdHI7CisgICAgICAgIH0KKyNlbmRp
ZgorICAgIH0KKworICAgIGJvb2wgaXNQbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlp
bmc7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKQorICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkKICAgICAgICAgOiBtX2Nvbm5lY3Rp
b24oY29ubmVjdGlvbikKICAgICAgICAgLCBtX2lkKGlkZW50aWZpZXIpCi0gICAgICAgICwgbV9k
ZXN0aW5hdGlvbihBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKnRoaXMsIGlucHV0RGV2aWNlSWQs
IG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0
ZSkpCi0gICAgICAgICwgbV9maWZvKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZpZm9TaXplKQor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICAsIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcigq
dGhpcykKKyAgICAgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJp
bmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIp
KSkKKyNlbmRpZgogICAgIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgbV9hdWRpb091
dHB1dFVuaXRBZGFwdG9yLmNvbmZpZ3VyZShoYXJkd2FyZVNhbXBsZVJhdGUsIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMpOworI2VuZGlmCiAgICAgfQogCi0gICAgdm9pZCByZW5kZXIoQXVkaW9CdXMq
LCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MsIGNvbnN0
IFdlYkNvcmU6OkF1ZGlvSU9Qb3NpdGlvbiYgb3V0cHV0UG9zaXRpb24pIG92ZXJyaWRlCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UmIHN0b3JhZ2UoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdl
Jj4obV9yaW5nQnVmZmVyLT5zdG9yYWdlKCkpOworICAgIH0KKworICAgIE9TU3RhdHVzIHJlbmRl
cihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIFVJbnQzMiBudW1iZXJPZkZy
YW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCiAgICAgewogICAgICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKIAogICAgICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVs
U2h1dGRvd24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgewotICAgICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2ZpZm9Mb2NrKTsKLSAgICAgICAgICAgIGZyYW1lc1Rv
UHJvY2VzcyA9IG1fZmlmby5wdWxsKGRlc3RpbmF0aW9uQnVzLCBmcmFtZXNUb1Byb2Nlc3MpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICghZnJhbWVzVG9Qcm9jZXNzKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4gYnVmZmVyczsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlc3RpbmF0aW9uQnVzLT5udW1iZXJPZkNoYW5u
ZWxzKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFs
bG9jYXRlKHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICAgICAgYnVm
ZmVycy5hcHBlbmQoKm1lbW9yeSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBub0Vy
cjsKIAogICAgICAgICAvLyBGSVhNRTogSXQgaXMgdW5mb3J0dW5hdGUgd2UgaGF2ZSB0byBkaXNw
YXRjaCB0byB0aGUgbWFpbiB0aGVhZCBoZXJlLiBXZSBzaG91bGQgYmUgYWJsZSB0byBJUEMgc3Ry
YWlnaHQgZnJvbSB0aGUKICAgICAgICAgLy8gcmVuZGVyIHRocmVhZCBidXQgdGhpcyBpcyBub3Qg
c3VwcG9ydGVkIGJ5IHNlbmRXaXRoQXN5bmNSZXBseSgpLgotICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lc1RvUHJvY2Vz
cywgb3V0cHV0UG9zaXRpb24sIGJ1ZmZlcnMgPSBXVEZNb3ZlKGJ1ZmZlcnMpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgUmVtb3RlQXVkaW9CdXNEYXRhIGJ1c0RhdGEgeyBmcmFtZXNUb1Byb2Nl
c3MsIG91dHB1dFBvc2l0aW9uLCBidWZmZXJzLm1hcChbXShhdXRvJiBtZW1vcnkpIHsgcmV0dXJu
IG1lbW9yeS5jb3B5UmVmKCk7IH0pIH07Ci0gICAgICAgICAgICBBU1NFUlQoZnJhbWVzVG9Qcm9j
ZXNzKTsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlbmRlckJ1ZmZl
cihidXNEYXRhKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCBidWZmZXJzID0gV1RGTW92ZShidWZmZXJzKSwgZnJhbWVzVG9Qcm9jZXNzXSgpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidWZmZXJzLnNpemUo
KSwgZnJhbWVzVG9Qcm9jZXNzLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJ1ZmZlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIGF1
ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIHN0YXRpY19jYXN0PGZsb2F0Kj4oYnVmZmVyc1tp
XS0+ZGF0YSgpKSwgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgICAgIG1fZmlmby5wdXNoKGF1
ZGlvQnVzLmdldCgpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzYW1wbGVUaW1lLCBob3N0VGltZSwgbnVtYmVyT2ZGcmFt
ZXMsIGlvRGF0YV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6OlJlcXVlc3RCdWZmZXIoc2FtcGxlVGltZSwgaG9zdFRpbWUsIG51bWJlck9mRnJhbWVz
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpb0RhdGFd
KGF1dG8gc3RhcnRGcmFtZSwgYXV0byBudW1iZXJPZkZyYW1lc1RvUmVuZGVyLCBhdXRvIGJvdW5k
c1N0YXJ0RnJhbWUsIGF1dG8gYm91bmRzRW5kRnJhbWUpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIG1fcmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1lQm91bmRzKGJvdW5kc1N0YXJ0RnJhbWUs
IGJvdW5kc0VuZEZyYW1lKTsKKyAgICAgICAgICAgICAgICBtX3JpbmdCdWZmZXItPmZldGNoKGlv
RGF0YSwgbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwgc3RhcnRGcmFtZSk7CiAgICAgICAgICAgICB9
LCBtX2lkLnRvVUludDY0KCkpOwogICAgICAgICB9KTsKLSAgICB9CiAKLSAgICB2b2lkIGlzUGxh
eWluZ0RpZENoYW5nZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAobV9wcm90ZWN0VGhp
c0R1cmluZ0dyYWNlZnVsU2h1dGRvd24pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
X2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZWZDb3VudCgpID09IDEpOwotICAgICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVs
U2h1dGRvd24gPSBudWxscHRyOyAvLyBEZWxldGVzICJ0aGlzIi4KLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGlzUGxheWluZyA9IG1fZGVzdGluYXRpb24tPmlzUGxheWlu
ZygpLCBpZGVudGlmaWVyID0gbV9pZC50b1VJbnQ2NCgpXSB7Ci0gICAgICAgICAgICBtX2Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6RGlkQ2hhbmdlSXNQbGF5aW5nKGlzUGxheWluZyksIGlkZW50aWZpZXIpOwotICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuIG5vRXJyOwogICAgIH0KKyNlbmRpZgogCiAgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyIG1faWQ7Ci0gICAgUmVmUHRyPEF1ZGlvRGVzdGluYXRpb24+IG1fZGVz
dGluYXRpb247CisKICAgICBSZWZQdHI8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gbV9wcm90ZWN0
VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd247Ci0gICAgTG9jayBtX2ZpZm9Mb2NrOwotICAgIFdl
YkNvcmU6OlB1c2hQdWxsRklGTyBtX2ZpZm87CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBX
ZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcjsK
KworICAgIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uOwor
ICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyNlbmRp
ZgorCisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CiB9OwogCiBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKQEAgLTE0OCwxNCArMTc2LDEzIEBAIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcihH
UFVDb25uZWN0aW9uVG9XZWJQCiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjp+UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5n
JiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsCi0gICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgdW5zaWduZWQg
ZnJhbWVzUGVyQnVmZmVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSwKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIG5ld0lEID0g
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwot
ICAgIGF1dG8gZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUobV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKLSAgICBh
dXRvIGZyYW1lc1BlckJ1ZmZlciA9IGRlc3RpbmF0aW9uLT5mcmFtZXNQZXJCdWZmZXIoKTsKKyAg
ICBhdXRvIGRlc3RpbmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVT
YW1wbGVSYXRlKTsKICAgICBtX2F1ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgV1RGTW92ZShk
ZXN0aW5hdGlvbikpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0lELCBmcmFtZXNQZXJCdWZm
ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKIH0KIAogdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xODYsNiArMjEzLDE0IEBAIHZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JCiAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQbGF5aW5nKTsKIH0KIAorI2lmIFBM
QVRGT1JNKENPQ09BKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6YXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgY29uc3Qg
V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3Qg
bnVtYmVyT2ZGcmFtZXMpCit7CisgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRp
b25zLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgaXRlbS0+YXVkaW9TYW1wbGVzU3RvcmFnZUNo
YW5nZWQoaXBjSGFuZGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCAx
MWI0YmVmMTA0MWIuLmUyMmMxMGFjZTlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgK
QEAgLTM0LDYgKzM0LDEyIEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworfQorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpA
QCAtNDYsMjUgKzUyLDI1IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgflJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3Qg
U3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVp
bnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVk
IGZyYW1lc1BlckJ1ZmZlcik+JiYpOwotICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2Rl
cikKLSAgICB7Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKLSAgICB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9t
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwogCisgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0
cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50
MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJk
d2FyZVNhbXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
c3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOworI2Vu
ZGlmCisKICAgICBIYXNoTWFwPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBSZWY8
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4+IG1fYXVkaW9EZXN0aW5hdGlvbnM7CiAgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogfTsKIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdDsKIAogI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBiYzA1YWUxMTc5YWEuLjJi
YzllZGM3MWI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtMjQsMTQgKzI0LDE0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCX0FVRElPKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ciBOb3RSZWZDb3VudGVkIHsKLQotICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlu
cHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgZnJhbWVzUGVy
QnVmZmVyKSBTeW5jaHJvbm91cwotCisgICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcg
aW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNh
bXBsZVJhdGUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlk
ZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5j
CiAKICAgICBTdGFydEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3Vz
CiAgICAgU3RvcEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCi0K
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKKyNl
bmRpZgogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGQxMGFlZDRmNDQzMS4uM2FkNGI4Njg5MTEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NDcsNyAr
MTQ0Nyw2IEBACiAJCTlCNTQ5OUIyMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0
aW9uRXhjbHVzaW9uUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUI1NDk5QjAyMzYyQTdFQzAwREY4QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25F
eGNsdXNpb25SdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOUI1QkVDMjYyNDAwRjRBOTAwNzBDNkVGIC8qIFdlYk1lZGlhU3RyYXRlZ3kuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNUJFQzI0MjQw
MEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmggKi87IH07CiAJCTlCNUJFQzJBMjQw
MTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNUJFQzI4MjQwMTAxNTgwMDcw
QzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLzsgfTsKLQkJOUI1QkVDMzEy
NDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oIGluIENvcHlGaWxlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMzMDI0MDEwMjIyMDA3MEM2RUYg
LyogUmVtb3RlQXVkaW9CdXNEYXRhLmggKi87IH07CiAJCTlFQzUzMkEzMjQ0N0ZCQUQwMDIxNTIx
NiAvKiBHZW9sb2NhdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlFQzUzMkEyMjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9sb2NhdGlv
bklkZW50aWZpZXIuaCAqLzsgfTsKIAkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29u
dGV4dFByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTEwMkE3
MDgxRUMwRUVFOTAwRDgxRDgyIC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1
Z2luLnNiIGluIENvcHkgUGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBNUUzOTQ5MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9t
ZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiAqLzsgfTsKQEAgLTIxNjEsNyArMjE2MCw2
IEBACiAJCQkJMkRCOTYwNTMyMzk4ODZDMTAwMTAyNzkxIC8qIGNvbS5hcHBsZS5XZWJLaXQuR1BV
LnNiIGluIENvcHlGaWxlcyAqLywKIAkJCQlBNzhDQ0REQjE5M0FDOUY4MDA1RUNDMjUgLyogY29t
LmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiIGluIENvcHlGaWxlcyAqLywKIAkJCQlBNzhDQ0RE
QzE5M0FDOUZCMDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiIGluIENv
cHlGaWxlcyAqLywKLQkJCQk5QjVCRUMzMTI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9C
dXNEYXRhLmggaW4gQ29weUZpbGVzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDU4Niw3ICs0NTg0LDYgQEAKIAkJOUI1QkVD
MjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUI1QkVDMjkyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjVCRUMyRTI0MDEw
MThDMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlv
QnVzRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb0J1c0RhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNTlENkMxRUZDQ0NCNjAwMUU4RDA5IC8qIENhbGxiYWNr
SUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tJRC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM1OUQ2RDFFRkNEQzZEMDAxRThEMDkgLyogT3B0
aW9uYWxDYWxsYmFja0lELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlv
bmFsQ2FsbGJhY2tJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RUM1MzJBMjI0
NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlb2xvY2F0aW9uSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTYwMCw3ICs1NTk3LDYgQEAKIAkJCQkwNzkyMzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcCAqLywKIAkJCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIg
LyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMDdCMUQwNEIyM0QzOEZDRTAw
Mzk5QTZFIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiAqLywKLQkJCQk5
QjVCRUMzMDI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9CdXNEYXRhLmggKi8sCiAJCQkJ
OUI1QkVDMjkyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5j
cHAgKi8sCiAJCQkJOUI1QkVDMjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5oICovLAogCQkJCTlCNUJFQzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvQnVzRGF0YS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZjMmYwYzY2MDY5Li4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaAor
KysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBSZW1vdGVBdWRp
b0J1c0RhdGEgewotICAgIHVpbnQ2NF90IGZyYW1lc1RvUHJvY2VzcyB7IDAgfTsKLSAgICBXZWJD
b3JlOjpBdWRpb0lPUG9zaXRpb24gb3V0cHV0UG9zaXRpb247Ci0gICAgVmVjdG9yPFJlZjxTaGFy
ZWRNZW1vcnk+PiBjaGFubmVsQnVmZmVyczsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+Ci0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGVuY29kZXIgPDwgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBlbmNvZGVyIDw8IG91dHB1
dFBvc2l0aW9uOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjaGFu
bmVsQnVmZmVycy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYW5u
ZWxCdWZmZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBoYW5kbGU7Ci0gICAgICAgICAgICBjaGFubmVsQnVmZmVyc1tpXS0+Y3JlYXRlSGFuZGxlKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwotICAgICAgICAgICAg
ZW5jb2RlciA8PCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgY2hh
bm5lbEJ1ZmZlcnNbaV0tPnNpemUoKSB9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRGVjb2Rlcj4KLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlbW90ZUF1ZGlvQnVzRGF0YSYgcmVzdWx0KQotICAg
IHsKLSAgICAgICAgdWludDY0X3QgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGZyYW1lc1RvUHJvY2VzcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIHJlc3VsdC5mcmFtZXNUb1Byb2Nlc3MgPSBmcmFtZXNUb1Byb2Nlc3M7Ci0KLSAgICAg
ICAgV2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91dHB1dFBvc2l0aW9uOwotICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG91dHB1dFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcmVzdWx0Lm91dHB1dFBvc2l0aW9uID0gb3V0cHV0UG9zaXRpb247Ci0KLSAg
ICAgICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6
ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IGlwY0hhbmRsZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXV0byBtZW1v
cnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRXcml0ZSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxCdWZm
ZXJzLmFwcGVuZChtZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDg0MDRjNDhlMWMyZS4uODQwMmRl
ZWY4YWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC0zMCwxNiAr
MzAsMjEgQEAKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNs
dWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9CdXMu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KKworI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotdXNpbmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRpb0J1czsKKy8vIEFsbG9jYXRlIGEgcmlu
ZyBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gMiBzZWNvbmRzIG9mIGF1ZGlvLgorY29u
c3RleHByIHNpemVfdCByaW5nQnVmZmVyU2l6ZUluU2Vjb25kID0gMjsKKwogdXNpbmcgQXVkaW9E
ZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb247CiB1c2luZyBBdWRpb0lPQ2Fs
bGJhY2sgPSBXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2s7CiAKQEAgLTUwLDE2ICs1NSwxNyBAQCBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpjcmVhdGUo
QXVkaW9JT0NhbGxiYWNrJiBjYWxsYgogfQogCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBj
b25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVs
cywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKLSAg
ICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2Nv
YShjYWxsYmFjaywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgZmFsc2UpCisg
ICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZTxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KG1ha2VV
bmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KHRoaXMpKSkKKyNlbmRpZgogewogICAg
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQ7Ci0gICAgdW5z
aWduZWQgZnJhbWVzUGVyQnVmZmVyIHsgMCB9OwogCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAg
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCi0gICAgICAgIE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihpbnB1dERl
dmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNh
bXBsZVJhdGUpLAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQsIGZyYW1lc1Bl
ckJ1ZmZlciksIDApOworICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNh
bXBsZVJhdGUoKSksCisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25JRCksIDApOwog
CiAgICAgYXV0byBvZmZUaHJlYWRSZW5kZXJpbmcgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewogICAgICAgICB3aGlsZSAoIW1fdGhyZWFkVGFza1F1
ZXVlLmlzS2lsbGVkKCkpIHsKQEAgLTcyLDcgKzc4LDE0IEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KEF1ZGlvSU9DYWxsYmFjayYgY2Fs
bGJhCiAgICAgY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgdGhpcywgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fZGVzdGluYXRp
b25JRCA9IGRlc3RpbmF0aW9uSUQ7Ci0gICAgbV9mcmFtZXNQZXJCdWZmZXIgPSBmcmFtZXNQZXJC
dWZmZXI7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gc3RyZWFtRm9ybWF0OworICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihz
dHJlYW1Gb3JtYXQpOworICAgIG1fbnVtYmVyT2ZGcmFtZXMgPSBoYXJkd2FyZVNhbXBsZVJhdGUo
KSAqIHJpbmdCdWZmZXJTaXplSW5TZWNvbmQ7CisgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShz
dHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0g
bWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CisjZW5kaWYKIH0K
IAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5KCkKQEAgLTkyLDM2ICsxMDUsNTQgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KCkKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0
Y2hUb1JlbmRlclRocmVhZCkKIHsKICAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQgPSBXVEZN
b3ZlKGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpOworICAgIGJvb2wgaXNQbGF5aW5nOwogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uSUQpLAotICAgICAg
ICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0
aW5hdGlvbjo6UmVwbHkobV9pc1BsYXlpbmcpLCAwKTsKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdGFydEF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGlz
UGxheWluZyksIDApOworICAgIHNldElzUGxheWluZyhpc1BsYXlpbmcpOwogfQogCiB2b2lkIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcCgpCiB7CisgICAgYm9vbCBpc1BsYXlpbmc7
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6U3RvcEF1ZGlvRGVzdGluYXRpb24obV9kZXN0aW5hdGlvbklEKSwK
LSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVk
aW9EZXN0aW5hdGlvbjo6UmVwbHkobV9pc1BsYXlpbmcpLCAwKTsKKyAgICAgICAgTWVzc2FnZXM6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVkaW9EZXN0aW5hdGlvbjo6UmVw
bHkoaXNQbGF5aW5nKSwgMCk7CisgICAgc2V0SXNQbGF5aW5nKGlzUGxheWluZyk7CiAgICAgbV9k
aXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHk6OnJlbmRlckJ1ZmZlcihjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVz
RGF0YSYgYXVkaW9CdXNEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6cmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRp
bWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2
NF90LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQoYXVkaW9CdXNEYXRh
LmZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgQVNTRVJUKGF1ZGlvQnVzRGF0YS5jaGFubmVsQnVmZmVy
cy5zaXplKCkpOwotICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGF1ZGlvQnVz
RGF0YS5jaGFubmVsQnVmZmVycy5zaXplKCksIGF1ZGlvQnVzRGF0YS5mcmFtZXNUb1Byb2Nlc3Ms
IGZhbHNlKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXVkaW9CdXNEYXRhLmNoYW5u
ZWxCdWZmZXJzLnNpemUoKTsgKytpKQotICAgICAgICBhdWRpb0J1cy0+c2V0Q2hhbm5lbE1lbW9y
eShpLCAoZmxvYXQqKWF1ZGlvQnVzRGF0YS5jaGFubmVsQnVmZmVyc1tpXS0+ZGF0YSgpLCBhdWRp
b0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgIG1fY2FsbGJhY2sucmVuZGVyKDAsIGF1
ZGlvQnVzLmdldCgpLCBhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzLCBhdWRpb0J1c0RhdGEu
b3V0cHV0UG9zaXRpb24pOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBpZiAoIWhh
c0Vub3VnaEZyYW1lcyhudW1iZXJPZkZyYW1lcykpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KDAsIDAsIDAsIDApOworCisgICAgbV9yZW5kZXJDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5zZXRTYW1wbGVDb3Vu
dChudW1iZXJPZkZyYW1lcyk7CisKKyAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlcihz
YW1wbGVUaW1lLCBob3N0VGltZSwgbnVtYmVyT2ZGcmFtZXMsIG1fYXVkaW9CdWZmZXJMaXN0LT5s
aXN0KCkpOwogfQogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hhbmdl
SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHk6OnJlbmRlck9uUmVuZGVyaW5nVGhlYWQoc2l6ZV90IGZyYW1lc1RvUmVuZGVyKQogewotICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3JlbmRlckNvbXBsZXRpb25I
YW5kbGVyKTsKKworICAgIGF1dG8gc3RhcnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOworCisgICAg
QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJPblJlbmRlcmluZ1RoZWFkKGZyYW1lc1RvUmVu
ZGVyKTsKKyAgICBtX2N1cnJlbnRGcmFtZSArPSBmcmFtZXNUb1JlbmRlcjsKKworICAgIG1fcmlu
Z0J1ZmZlci0+c3RvcmUobV9hdWRpb0J1ZmZlckxpc3QtPmxpc3QoKSwgZnJhbWVzVG9SZW5kZXIs
IHN0YXJ0RnJhbWUpOworCisgICAgdWludDY0X3QgYm91bmRzU3RhcnRGcmFtZTsKKyAgICB1aW50
NjRfdCBib3VuZHNFbmRGcmFtZTsKKyAgICBtX3JpbmdCdWZmZXItPmdldEN1cnJlbnRGcmFtZUJv
dW5kcyhib3VuZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7CisgICAgbV9yZW5kZXJDb21w
bGV0aW9uSGFuZGxlcihzdGFydEZyYW1lLCBmcmFtZXNUb1JlbmRlciwgYm91bmRzU3RhcnRGcmFt
ZSwgYm91bmRzRW5kRnJhbWUpOwogfQorI2VuZGlmCiAKIC8vIElQQzo6Q29ubmVjdGlvbjo6VGhy
ZWFkTWVzc2FnZVJlY2VpdmVyCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlz
cGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKQEAgLTEzMyw2ICsxNjQsMjgg
QEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRpc3BhdGNoVG9UaHJlYWQoRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgbV90aHJlYWRUYXNrUXVldWUuYXBwZW5kKFdURk1v
dmUodGFzaykpOwogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlKQorewor
ICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoc3RvcmFnZSkKKyAgICAg
ICAgc3RvcmFnZS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisKKyAgICAvLyBGSVhNRTogU2VuZCB0aGUgYWN0dWFsIGRhdGEgc2l6ZSB3
aXRoIElQQ0hhbmRsZS4KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisgICAgdWludDY0
X3QgZGF0YVNpemUgPSBoYW5kbGUuc2l6ZSgpOworI2Vsc2UKKyAgICB1aW50NjRfdCBkYXRhU2l6
ZSA9IDA7CisjZW5kaWYKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1G
b3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7
CisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKHN0cmVh
bUZvcm1hdCk7CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6QXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQgeyBtX2Rlc3RpbmF0aW9u
SUQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9
LCBzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMgfSwgMCk7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAppbmRleCBjNGFk
Yjc1NjBkNDYuLmVjZDBjNTYxOTFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5o
CkBAIC0yOCwyNCArMjgsMzcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJfQVVESU8pCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiUmVtb3RlQXVk
aW9CdXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
QXVkaW9EZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+
CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUXVldWUuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlICJTaGFyZWRSaW5n
QnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbkNvY29h
Lmg+CisjZWxzZQorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2VuZGlm
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENBUmluZ0J1ZmZlcjsKK2NsYXNzIFdlYkF1
ZGlvQnVmZmVyTGlzdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uLCBw
dWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgOiBwdWJs
aWMgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hCisgICAgLCBwdWJsaWMgU2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2U6OkNsaWVudAorI2Vsc2UKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uCisjZW5kaWYKKyAgICAsIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVh
ZE1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5KTsKIHB1YmxpYzoKLSAgICB1c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6
OkF1ZGlvQnVzOwogICAgIHVzaW5nIEF1ZGlvSU9DYWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvSU9D
YWxsYmFjazsKICAgICB1c2luZyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpyZWY7CiAgICAg
dXNpbmcgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6ZGVyZWY7CkBAIC01NywxNiArNzAsMjUg
QEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAKLSAgICB2b2lkIHJlbmRlckJ1
ZmZlcihjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVzRGF0YSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcp
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgcmVxdWVzdEJ1ZmZlcihkb3VibGUgc2Ft
cGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzVG9SZW5kZXIsIHVpbnQ2NF90IGJvdW5kc1N0YXJ0RnJhbWUsIHVpbnQ2NF90IGJvdW5k
c0VuZEZyYW1lKT4mJik7CisjZW5kaWYKIAogcHJpdmF0ZToKLSAgICAvLyBXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uCi0gICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQo
KT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRlclRocmVhZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9w
KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX2lz
UGxheWluZzsgfQotICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3NhbXBsZVJhdGU7IH0KLSAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2ZyYW1lc1BlckJ1ZmZlcjsgfQorICAgIHZvaWQgc3RhcnQoRnVu
Y3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQp
IGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCisjaWYgIVBMQVRGT1JNKENPQ09BKQor
ICAgIGJvb2wgaXNQbGF5aW5nKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNl
dElzUGxheWluZygpIHsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAwOyB9CisgICAgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gMDsgfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHN0b3Jh
Z2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSopIGZpbmFsOworICAgIHZvaWQgcmVuZGVyT25SZW5kZXJp
bmdUaGVhZChzaXplX3QgZnJhbWVzVG9SZW5kZXIpIGZpbmFsOworI2VuZGlmCiAKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC03NiwxMSArOTgsMTYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlZk1lc3NhZ2VSZWNlaXZlcigpIGZpbmFsIHsgV2ViQ29yZTo6QXVkaW9E
ZXN0aW5hdGlvbjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmTWVzc2FnZVJlY2VpdmVyKCkgZmlu
YWwgeyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpkZXJlZigpOyB9CiAKLSAgICBBdWRpb0lP
Q2FsbGJhY2smIG1fY2FsbGJhY2s7Ci0gICAgZmxvYXQgbV9zYW1wbGVSYXRlIHsgMC4gfTsKLSAg
ICB1bnNpZ25lZCBtX2ZyYW1lc1BlckJ1ZmZlciB7IDAgfTsKICAgICBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBtX2Rlc3RpbmF0aW9uSUQ7Ci0gICAgYm9vbCBtX2lzUGxheWluZyB7
IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB1aW50NjRfdCBtX251bWJlck9m
RnJhbWVzIHsgMCB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+
IG1fcmluZ0J1ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6V2ViQXVkaW9CdWZm
ZXJMaXN0PiBtX2F1ZGlvQnVmZmVyTGlzdDsKKyAgICB1aW50NjRfdCBtX2N1cnJlbnRGcmFtZSB7
IDAgfTsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQodWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRf
dCwgdWludDY0X3QpPiBtX3JlbmRlckNvbXBsZXRpb25IYW5kbGVyOworI2VuZGlmCisKICAgICBG
dW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVh
ZDsKICAgICBSZWZQdHI8VGhyZWFkPiBtX3JlbmRlclRocmVhZDsKICAgICBDcm9zc1RocmVhZFF1
ZXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fdGhyZWFkVGFza1F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCBhZTFmYzcwNjk4NzEuLmJm
MDRjMWM0NTBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVz
c2FnZXMuaW4KQEAgLTI0LDEwICsyNCw5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCX0FVRElPKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkgTm90UmVmQ291bnRlZCB7Ci0KLSAgICBSZW5kZXJCdWZmZXIoc3RydWN0IFdlYktpdDo6UmVt
b3RlQXVkaW9CdXNEYXRhIGRhdGEpIC0+ICgpIEFzeW5jCi0gICAgRGlkQ2hhbmdlSXNQbGF5aW5n
KGJvb2wgaXNQbGF5aW5nKQotCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmVxdWVzdEJ1ZmZl
cihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzKSAtPiAodWludDY0X3Qgc3RhcnRGcmFtZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXNU
b1JlbmRlciwgdWludDY0X3QgYm91bmRzU3RhcnRGcmFtZSwgdWludDY0X3QgYm91bmRzRW5kRnJh
bWUpIEFzeW5jCisjZW5kaWYKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5jcHAKaW5kZXggODc5OWYxOTg0NzE0Li4yZTBhNmIxZjgzOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9p
ZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6cHVzaFNhbXBsZXMoY29uc3QgTWVkaWFU
aW1lJiB0aW1lLCBjb25zdCBXZWIKIAogICAgICAgICAvLyBBbGxvY2F0ZSBhIHJpbmcgYnVmZmVy
IGxhcmdlIGVub3VnaCB0byBjb250YWluIDIgc2Vjb25kcyBvZiBhdWRpby4KICAgICAgICAgbV9u
dW1iZXJPZkZyYW1lcyA9IG1fZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMjsKLSAgICAgICAg
bV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShtX2Rlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCks
IG1fbnVtYmVyT2ZGcmFtZXMpOworICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKG1fZGVz
Y3JpcHRpb24sIG1fbnVtYmVyT2ZGcmFtZXMpOwogICAgIH0KIAogICAgIEFTU0VSVChpczxXZWJD
b3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q+KGF1ZGlvRGF0YSkpOwo=
</data>
<flag name="commit-queue"
          id="427886"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411626</attachid>
            <date>2020-10-16 15:33:52 -0700</date>
            <delta_ts>2020-10-16 21:18:42 -0700</delta_ts>
            <desc>Patch (fix WPE/GTK build failures again)</desc>
            <filename>217715-v3.patch</filename>
            <type>text/plain</type>
            <size>81837</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiYTE2MTBhMGEyY2IuLjI0NTA3YTQ4YThkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU1IEBACisyMDIwLTEwLTE2ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+
CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9jZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRy
YW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4gYXVkaW8gZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9j
ZXNzIHRvIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRGVjb3VwbGUgdGhlIGF1ZGlvIG91dHB1dCB1bml0IG1hbmFnZW1lbnQg
ZnJvbSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2Egc28gdGhhdAorICAgICAgICB3ZSBjYW4gcnVuIGl0
IHJlbW90ZWx5IGluIG90aGVyIHByb2Nlc3NlcywgbGlrZSB0aGUgR1BVIHByb2Nlc3MuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaDogRXhwb3J0
IGhhcmR3YXJlU2FtcGxlUmF0ZSgpLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb246OmNyZWF0ZSk6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBjYWxsLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29j
b2EpOiBBZGQgYSBwYXJhbWV0ZXIKKyAgICAgICAgY29uZmlndXJlQXVkaW9PdXRwdXRVbml0IHNv
IHRoYXQgd2UgY2FuIGRpc2FibGUgdGhlIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IgaW4KKyAgICAg
ICAgQXVkaW9EZXN0aW5hdGlvbkNvY29hIHdoZW4gd2UgbmVlZCB0byBydW4gdGhlIEF1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IgaW4gYW5vdGhlciBwcm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNv
Y29hOjpnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pOgorICAgICAgICBSZW5hbWUgc2V0
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKCkgdG8gZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKCkgYmVjYXVzZQorICAgICAgICB0aGUgZnVuY3Rpb24gZXNzZW50aWFsbHkgcXVlcmll
cyB0aGUgZGVzY3JpcHRpb24uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6Omhhc0Vub3VnaEZyYW1lcyBjb25zdCk6IEFkZCB0aGlzIGZ1bmN0aW9uCisgICAgICAgIHNv
IHRoYXQgYSBzdWJjbGFzcyBjYW4gY2hlY2sgd2hldGhlciB0aGUgRklGTyBoYXMgZW5vdWdoIGF1
ZGlvIHNhbXBsZXMgdG8gcmVuZGVyLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpyZW5kZXIpOiBSZXBsYWNlIHRoZSBBdWRpb1RpbWVTdGFtcCogcGFyYW1ldGVyCisg
ICAgICAgIGJlY2F1c2Ugd2Ugb25seSBuZWVkIHR3byBmaWVsZHMgb2YgQXVkaW9UaW1lU3RhbXAg
aW4gdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6fkF1ZGlvRGVzdGluYXRpb25Db2NvYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJv
Yyk6IERlbGV0ZWQuIFRoaXMgZnVuY3Rpb24gaXMgbW92ZWQgdG8KKyAgICAgICAgQXVkaW9PdXRw
dXRVbml0QWRhcHRvci4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6
b3V0cHV0VW5pdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b091dHB1dFVuaXRBZGFwdG9yOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6On5BdWRpb091dHB1dFVuaXRBZGFwdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OnN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6aW5wdXRQcm9jKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmNv
bmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvT3V0cHV0VW5pdEFk
YXB0b3JNYWMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9PdXRw
dXRVbml0QWRhcHRvcjo6Y29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvRGVz
dGluYXRpb25Db2NvYTo6dGljayk6CisKIDIwMjAtMTAtMTYgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIEltcGxlbWVudCBhIGR1bW15IFdl
YkF1dGhuUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNjQxNDA1OTI1NDAxLi5l
YjRlMTdmMmU3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjAzLDE5ICsyMDMsMjAg
QEAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVN
YWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCiBwbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCitwbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb091dHB1dFVuaXRBZGFwdG9yLmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1w
bGVCdWZmZXJMaXN0LmNwcAogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291
cmNlLm1tCiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3Bw
CiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9DQVJpbmdCdWZmZXIuY3BwCiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KIHBsYXRmb3JtL2F1ZGlvL2NvY29hL1dl
YkF1ZGlvQnVmZmVyTGlzdC5jcHAKLXBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9u
SU9TLmNwcCBAbm8tdW5pZnkKK3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb091dHB1dFVuaXRBZGFw
dG9ySU9TLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJ
T1MuY3BwIEBuby11bmlmeQogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBA
bm8tdW5pZnkKIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBAbm8t
dW5pZnkKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0J1c01hYy5tbQotcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCitwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRw
dXRVbml0QWRhcHRvck1hYy5jcHAKIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJN
YWMuY3BwCiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcAog
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAxYTdiZWMzYmIyYy4u
NzRkZmU3NzI5ZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC02MzMsNiArNjMzLDcgQEAKIAkJMURBQjMxMTIyNTFENkJGMzAw
RkM5NDg1IC8qIFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEIzMUExMjM3OURDODMwMDg4M0ZERSAvKiBXZWJW
aWRlb0NvbnRhaW5lckxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMURBQjMxMTQyNTFENzI1QzAwRkM5NDg1IC8qIFZpZGVvTGF5ZXJNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxREFC
MzExMzI1MUQ3MjVDMDBGQzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxREFCMzExNTI1MUQ3NERCMDBG
Qzk0ODUgLyogVmlkZW9MYXllck1hbmFnZXJPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQ1QTE4RTFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9M
YXllck1hbmFnZXJPYmpDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMURCNjZEM0IyNTM3QTk1NjAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFk
YXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFE
QjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMURCQzFCNTYyMzQ3
QjNEMjAwQjkwMUFGIC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMURCQzFCNTUyMzQ3QjNEMjAwQjkwMUFG
IC8qIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFERDNCNEM2MjUxREEwQjgwMDY5QjI0QSAvKiBWaWRl
b0xheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MkQ1QTE4RDFDNTQ1OTAzMDBERTM0QTMgLyogVmlkZW9MYXllck1hbmFnZXJP
YmpDLm1tICovOyB9OwogCQkxREY3RTgxRjI1MUE5RTA2MDBEQjhGNjEgLyogVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTI4
LDcgKzQxMjksNyBAQAogCQlDQ0MyQjUxNjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0ND
MkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDA2M0Y4MjFFMjNGQTg5MDA4
MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDA2M0Y4MDFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFS
ZWdpc3RyeS5jcHAgKi87IH07CiAJCUNEMDYzRjgzMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0
YVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDA2M0Y4MTFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5oICovOyB9Owot
CQlDRDBFRUUwRTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBFRUUwQjE0NzQz
RTM1MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgKi87IH07CisJCUNEMEVFRTBF
MTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMEVFRTBCMTQ3NDNFMzUw
MDNFQUZBMiAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcCAqLzsgfTsKIAkJQ0QxMUIz
RTEyMjdDRTZGMzAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDExQjNFMDIy
N0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbSAqLzsg
fTsKIAkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDEyN0RF
QTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDE3QTQ1RDIxMzc0MDgx
MDA3OUVDN0IgLyogVW5pZmllZFNvdXJjZTYyLW1tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxN0E0NTkyMTM3NDAxNjAwNzlFQzdCIC8qIFVuaWZp
ZWRTb3VyY2U2Mi1tbS5tbSAqLzsgfTsKQEAgLTUzMDUsNyArNTMwNiw2IEBACiAJCUZEMzE2MEFC
MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzUxMkIwMjZGNzAwQzFBMzU5
IC8qIFJldmVyYkNvbnZvbHZlclN0YWdlLmggKi87IH07CiAJCUZEMzE2MEFEMTJCMDI2RjcwMEMx
QTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzcxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYklucHV0
QnVmZmVyLmggKi87IH07CiAJCUZEMzE2MEFGMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRo
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA3
OTEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5oICovOyB9OwotCQlGRDMxNjBCRDEyQjAy
NzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwQjcxMkIwMjcyQTAwQzFBMzU5IC8qIEF1
ZGlvRGVzdGluYXRpb25NYWMuaCAqLzsgfTsKIAkJRkQzMTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8q
IEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1h
Yy5oICovOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJhbVRpbWVs
aW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDM1
OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggKi87IH07CiAJCUZE
NDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0YxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY3
NTUsNiArNjc1NSw4IEBACiAJCTFEMDAyNkE5MjM3NEY5RDkwMENBNkNERiAvKiBKU0VudGVyUGlj
dHVyZUluUGljdHVyZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxRDJDODJCNjIzNkEzRjZBMDA1NUQ2QzUgLyogUGljdHVyZUluUGljdHVyZVN1
cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZVN1cHBvcnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURBQjMxMTMyNTFENzI1QzAwRkM5NDg1IC8qIFZpZGVv
TGF5ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvTGF5ZXJNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFEQjY2RDM3MjUzNjc4RUEwMEI2NzFCOSAvKiBBdWRp
b091dHB1dFVuaXRBZGFwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMURCNjZEMzgyNTM2NzhFQTAwQjY3
MUI5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVk
aW9PdXRwdXRVbml0QWRhcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFE
QkMxQjU1MjM0N0IzRDIwMEI5MDFBRiAvKiBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFEQzU1M0ZEMjExQkExMkEwMDRCNzgwRSAvKiBOYXZpZ2F0b3JTaGFyZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdhdG9yU2hhcmUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxREM1NTNGRjIxMUJBODQxMDA0Qjc4MEUgLyogU2hhcmVEYXRh
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFyZURhdGEuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTQzMDIsOCArMTQzMDQsNyBAQAogCQlDRDA2M0Y4MDFFMjNGQTg5
MDA4MTJCRTMgLyogSW5pdERhdGFSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbml0RGF0YVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0QwNjNGODExRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVnaXN0cnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5pdERhdGFSZWdpc3RyeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDBDOEI1ODIxNDFDOENBMDA2MkY1OUQgLyogTWVk
aWFDYXBhYmlsaXRpZXNJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDBFRUUwQTE0NzQzRTM0MDAzRUFG
QTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdWRpb0Rlc3RpbmF0aW9uSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIg
LyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBdWRpb091dHB1dFVuaXRBZGFwdG9ySU9TLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxMUIzREYyMjdDQUFBOTAwMjNBRkM3IC8qIEFWU3RyZWFtRGF0
YVBhcnNlck1JTUVUeXBlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVZTdHJlYW1EYXRhUGFyc2Vy
TUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDExQjNFMDIy
N0NBQUE5MDAyM0FGQzcgLyogQVZTdHJlYW1EYXRhUGFyc2VyTUlNRVR5cGVDYWNoZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEFWU3RyZWFtRGF0YVBhcnNlck1JTUVUeXBlQ2FjaGUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBX
ZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTY1NjgsOCArMTY1NjksNyBAQAogCQlGRDMxNjA3ODEyQjAyNkY3MDBDMUEzNTkgLyogVmVj
dG9yTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWZWN0b3JN
YXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwNzkxMkIwMjZGNzAw
QzFBMzU5IC8qIFZlY3Rvck1hdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmVjdG9yTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDMxNjBCNTEyQjAy
NzJBMDBDMUEzNTkgLyogQXVkaW9CdXNNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBBdWRpb0J1c01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZEMzE2MEI3MTJCMDI3MkEwMEMxQTM1
OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvRGVzdGluYXRpb25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3JNYWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9PdXRwdXRVbml0QWRh
cHRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzE2MEI4MTJCMDI3
MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9GaWxlUmVhZGVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRl
ck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0ZpbGVSZWFkZXJN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzMTYwQkExMkIwMjcyQTAwQzFB
MzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZGVEZyYW1lTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MzEw
LDEwICsyNzMxMCw5IEBACiAJCUNEMEVFRTBEMTQ3NDNFNDgwMDNFQUZBMiAvKiBpb3MgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUNEMEVFRTBCMTQ3NDNF
MzUwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCAqLywKLQkJCQlDRDBFRUUwQTE0
NzQzRTM0MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5oICovLAogCQkJCUNENTU5NjhG
MTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuY3BwICovLAogCQkJCUNENTU5
NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuaCAqLywKKwkJCQlDRDBF
RUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAgKi8s
CiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSAqLywK
IAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLmgg
Ki8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4IC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSAqLywKQEAgLTI3Mzc4LDYgKzI3Mzc3LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQx
MzE1MTg0MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwICovLAog
CQkJCTQxMzE1MTg2MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCAq
LywKKwkJCQkxREI2NkQzODI1MzY3OEVBMDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRv
ci5jcHAgKi8sCisJCQkJMURCNjZEMzcyNTM2NzhFQTAwQjY3MUI5IC8qIEF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3IuaCAqLywKIAkJCQkwNzNCODc2MjFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1w
bGVCdWZmZXJMaXN0LmNwcCAqLywKIAkJCQkwNzNCODc2MzFFNDM4NTlEMDA3MUMwRUMgLyogQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmggKi8sCiAJCQkJMDczQjg3NjUxRTQzODU5RDAwNzFDMEVDIC8q
IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oICovLApAQCAtMzAyOTAsMTIgKzMwMjkxLDExIEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUZEMzE2MEI1MTJCMDI3MkEw
MEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSAqLywKLQkJCQlGRDMxNjBCNjEyQjAyNzJBMDBDMUEz
NTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgKi8sCi0JCQkJRkQzMTYwQjcxMkIwMjcyQTAw
QzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCAqLywKIAkJCQlGRDMxNjBCODEyQjAyNzJB
MDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNwcCAqLywKIAkJCQlGRDMxNjBCOTEyQjAy
NzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmggKi8sCiAJCQkJQ0QyRjRBMjUxOEQ4
QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAgKi8sCiAJCQkJQ0Qy
RjRBMjYxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5oICovLAor
CQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb091dHB1dFVuaXRBZGFwdG9yTWFj
LmNwcCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFj
Lm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAg
Ki8sCiAJCQkpOwpAQCAtMzA1NzYsNyArMzA1NzYsNiBAQAogCQkJCTgzQkQzQ0VFMjQ5OThFMDEw
MEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
N0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBp
biBIZWFkZXJzICovLAotCQkJCUZEMzE2MEJEMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3Rp
bmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAwODEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDgwMTJC
MDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMwNTkyLDYgKzMwNTkxLDcgQEAKIAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBD
MUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU3MTQ2N0IzMjRB
QkFFRjIwMEZCMkY1MCAvKiBBdWRpb05vZGVPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAxODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlT3V0cHV0LmggaW4gSGVhZGVycyAq
LywKKwkJCQkxREI2NkQzQjI1MzdBOTU2MDBCNjcxQjkgLyogQXVkaW9PdXRwdXRVbml0QWRhcHRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMUQxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlv
UGFyYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzU2OTlFMjUyQ0YzNjIwMEUxQjk1NiAvKiBB
dWRpb1BhcmFtRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCOTg3MEMyNTIyNUY4
MzAwQTkzOUYxIC8qIEF1ZGlvUGFyYW1NYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMzUyNTQsOCAr
MzUyNTQsOCBAQAogCQkJZmlsZXMgPSAoCiAJCQkJQTk3ODdDQjQxRjVGNUM2NjAwQzU1MUM2IC8q
IEFjY2Vzc2liaWxpdHlNZWRpYU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMUY3Qjcz
MTI0NDhGMkFDMDAxMjQ1NTcgLyogQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZBMiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNENTU5NjkxMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0Zp
bGVSZWFkZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QwRUVFMEUxNDc0M0YzOTAwM0VB
RkEyIC8qIEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3JJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEOEE3QkJCMTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNERTNBODU3MTdGNjAyMDQwMEM1QkUyMCAv
KiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAppbmRleCAxNjBjNjU3
OGUxNWUuLjQxOTY1NTJkOTE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvRGVzdGluYXRpb24uaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4gaW4gQXVkaW9EZXN0aW5hdGlvbiB0
byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUKICAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUo
KSBjb25zdCA9IDA7Ci0gICAgc3RhdGljIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUoKTsKIAogICAg
IHZpcnR1YWwgdW5zaWduZWQgZnJhbWVzUGVyQnVmZmVyKCkgY29uc3QgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9u
Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmNwcAppbmRleCAxZDBmNGUyODgxMTguLjMzMzgzMmMyYjRjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC01Niw3ICs1Niw2IEBAIFJlZjxBdWRpb0Rlc3RpbmF0
aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywg
Y29uc3QKICAgICAgICAgcmV0dXJuIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y3JlYXRlT3ZlcnJp
ZGUoY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogCiAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0
UmVmKCpuZXcgQXVkaW9EZXN0aW5hdGlvbkNvY29hKGNhbGxiYWNrLCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBzYW1wbGVSYXRlKSk7Ci0gICAgZGVzdGluYXRpb24tPmNvbmZpZ3VyZSgpOwogICAg
IHJldHVybiBkZXN0aW5hdGlvbjsKIH0KIApAQCAtNzAsMTUgKzY5LDE2IEBAIHVuc2lnbmVkIGxv
bmcgQXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KCkKICAgICByZXR1cm4gQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkubWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKTsK
IH0KIAotQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9J
T0NhbGxiYWNrJiBjYWxsYmFjaywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSkKLSAgICA6IG1fb3V0cHV0VW5pdCgwKQorQXVkaW9EZXN0aW5hdGlvbkNv
Y29hOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBjb25m
aWd1cmVBdWRpb091dHB1dFVuaXQpCisgICAgOiBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoKnRo
aXMpCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgICwgbV9vdXRwdXRCdXMoQXVkaW9C
dXM6OmNyZWF0ZShudW1iZXJPZk91dHB1dENoYW5uZWxzLCBBdWRpb1V0aWxpdGllczo6cmVuZGVy
UXVhbnR1bVNpemUsIGZhbHNlKS5yZWxlYXNlTm9uTnVsbCgpKQogICAgICwgbV9yZW5kZXJCdXMo
QXVkaW9CdXM6OmNyZWF0ZShudW1iZXJPZk91dHB1dENoYW5uZWxzLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUpLnJlbGVhc2VOb25OdWxsKCkpCiAgICAgLCBtX2ZpZm8obWFrZVVu
aXF1ZVJlZjxQdXNoUHVsbEZJRk8+KG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZpZm9TaXplKSkK
ICAgICAsIG1fY29udGV4dFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKIHsKLSAgICBjb25maWd1cmUo
KTsKKyAgICBpZiAoY29uZmlndXJlQXVkaW9PdXRwdXRVbml0KQorICAgICAgICBtX2F1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IuY29uZmlndXJlKGhhcmR3YXJlU2FtcGxlUmF0ZSgpLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKTsKIAogICAgIGF1dG8gaGFyZHdhcmVTYW1wbGVSYXRlID0gdGhpcy0+aGFy
ZHdhcmVTYW1wbGVSYXRlKCk7CiAgICAgaWYgKHNhbXBsZVJhdGUgIT0gaGFyZHdhcmVTYW1wbGVS
YXRlKSB7CkBAIC04NywxMSArODcsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OkF1ZGlvRGVz
dGluYXRpb25Db2NvYShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZAogICAgIH0K
IH0KIAotQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0aW5hdGlvbkNvY29hKCkKLXsK
LSAgICBpZiAobV9vdXRwdXRVbml0KQotICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlz
cG9zZShtX291dHB1dFVuaXQpOwotfQorQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp+QXVkaW9EZXN0
aW5hdGlvbkNvY29hKCkgPSBkZWZhdWx0OwogCiB1bnNpZ25lZCBBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdAogewpAQCAtMTA3LDcgKzEwMyw3IEBA
IHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9u
PHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUCiB7CiAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpzdGFydCIpOwogICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IFdURk1v
dmUoZGlzcGF0Y2hUb1JlbmRlclRocmVhZCk7Ci0gICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9P
dXRwdXRVbml0U3RhcnQobV9vdXRwdXRVbml0KTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBtX2F1
ZGlvT3V0cHV0VW5pdEFkYXB0b3Iuc3RhcnQoKTsKIAogICAgIGlmICghcmVzdWx0KQogICAgICAg
ICBzZXRJc1BsYXlpbmcodHJ1ZSk7CkBAIC0xMTYsNyArMTEyLDcgQEAgdm9pZCBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBk
aXNwYXRjaFQKIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wKCkKIHsKICAgICBMT0co
TWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3AiKTsKLSAgICBPU1N0YXR1cyByZXN1
bHQgPSBBdWRpb091dHB1dFVuaXRTdG9wKG1fb3V0cHV0VW5pdCk7CisgICAgT1NTdGF0dXMgcmVz
dWx0ID0gbV9hdWRpb091dHB1dFVuaXRBZGFwdG9yLnN0b3AoKTsKICAgICBtX2Rpc3BhdGNoVG9S
ZW5kZXJUaHJlYWQgPSBudWxscHRyOwogCiAgICAgaWYgKCFyZXN1bHQpCkBAIC0xMzMsNyArMTI5
LDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldElzUGxheWluZyhib29sIGlzUGxh
eWluZykKICAgICBtX2NhbGxiYWNrLmlzUGxheWluZ0RpZENoYW5nZSgpOwogfQogCi12b2lkIEF1
ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0KQordm9pZCBBdWRpb0Rlc3RpbmF0
aW9uQ29jb2E6OmdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24mIHN0cmVhbUZvcm1hdCkKIHsKICAgICBjb25zdCBpbnQgYnl0ZXNQZXJGbG9h
dCA9IHNpemVvZihGbG9hdDMyKTsKICAgICBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OwpAQCAt
MTU3LDIyICsxNTMsMjQgQEAgc3RhdGljIHZvaWQgYXNzaWduQXVkaW9CdWZmZXJzVG9CdXMoQXVk
aW9CdWZmZXIqIGJ1ZmZlcnMsIEF1ZGlvQnVzJiBidXMsIFVJbnQzMgogICAgIH0KIH0KIAorYm9v
bCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6Omhhc0Vub3VnaEZyYW1lcyhVSW50MzIgbnVtYmVyT2ZG
cmFtZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmlmby0+bGVuZ3RoKCkgPj0gbnVtYmVyT2ZG
cmFtZXM7Cit9CisKIC8vIFB1bGxzIG9uIG91ciBwcm92aWRlciB0byBnZXQgcmVuZGVyZWQgYXVk
aW8gc3RyZWFtLgotT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIoY29uc3Qg
QXVkaW9UaW1lU3RhbXAqIHRpbWVzdGFtcCwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1
ZmZlckxpc3QqIGlvRGF0YSkKK09TU3RhdHVzIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVy
KGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRfdCBob3N0VGltZSwgVUludDMyIG51bWJlck9mRnJh
bWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKIHsKLSAgICBpZiAobV9maWZvLT5sZW5ndGgo
KSA8IG51bWJlck9mRnJhbWVzKQorICAgIGlmICghaGFzRW5vdWdoRnJhbWVzKG51bWJlck9mRnJh
bWVzKSkKICAgICAgICAgcmV0dXJuIG5vRXJyOwogCi0gICAgaWYgKHRpbWVzdGFtcCkgewotICAg
ICAgICBtX291dHB1dFRpbWVzdGFtcCA9IHsKLSAgICAgICAgICAgIFNlY29uZHMgeyB0aW1lc3Rh
bXAtPm1TYW1wbGVUaW1lIC8gc2FtcGxlUmF0ZSgpIH0sCi0gICAgICAgICAgICBNb25vdG9uaWNU
aW1lOjpmcm9tTWFjaEFic29sdXRlVGltZSh0aW1lc3RhbXAtPm1Ib3N0VGltZSkKLSAgICAgICAg
fTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9vdXRwdXRUaW1lc3RhbXAgPSBBdWRpb0lPUG9zaXRp
b24geyB9OworICAgIG1fb3V0cHV0VGltZXN0YW1wID0geworICAgICAgICBTZWNvbmRzIHsgc2Ft
cGxlVGltZSAvIHNhbXBsZVJhdGUoKSB9LAorICAgICAgICBNb25vdG9uaWNUaW1lOjpmcm9tTWFj
aEFic29sdXRlVGltZShob3N0VGltZSkKKyAgICB9OwogCiAgICAgYXV0byogYnVmZmVycyA9IGlv
RGF0YS0+bUJ1ZmZlcnM7Ci0gICAgVUludDMyIG51bWJlck9mQnVmZmVycyA9IGlvRGF0YS0+bU51
bWJlckJ1ZmZlcnM7CisgICAgYXV0byBudW1iZXJPZkJ1ZmZlcnMgPSBpb0RhdGEtPm1OdW1iZXJC
dWZmZXJzOwogCiAgICAgLy8gQXNzb2NpYXRlIHRoZSBkZXN0aW5hdGlvbiBkYXRhIGFycmF5IHdp
dGggdGhlIG91dHB1dCBidXMgdGhlbiBmaWxsIHRoZSBGSUZPLgogICAgIGFzc2lnbkF1ZGlvQnVm
ZmVyc1RvQnVzKGJ1ZmZlcnMsIG1fb3V0cHV0QnVzLmdldCgpLCBudW1iZXJPZkJ1ZmZlcnMsIG51
bWJlck9mRnJhbWVzLCAwLCBudW1iZXJPZkZyYW1lcyk7CkBAIC0yMTAsMTMgKzIwOCw2IEBAIHZv
aWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJPblJlbmRlcmluZ1RoZWFkKHNpemVfdCBm
cmFtZXNUb1JlbmRlcikKICAgICB9CiB9CiAKLS8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNr
Ci1PU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0
YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCogdGlt
ZXN0YW1wLCBVSW50MzIgLypidXNOdW1iZXIqLywgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICBhdXRvKiBhdWRpb091dHB1dCA9IHN0YXRpY19j
YXN0PEF1ZGlvRGVzdGluYXRpb25Db2NvYSo+KHVzZXJEYXRhKTsKLSAgICByZXR1cm4gYXVkaW9P
dXRwdXQtPnJlbmRlcih0aW1lc3RhbXAsIG51bWJlck9mRnJhbWVzLCBpb0RhdGEpOwotfQotCiB2
b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cHJvdmlkZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChmcmFtZXNUb1Byb2Nl
c3MsIGZyYW1lc1RvUHJvY2VzcyA9PSBBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9E
ZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAwODk0ZDYyMWEyZjEuLmNhNGVlYmZkMDNjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkF1
ZGlvRGVzdGluYXRpb24uaCIKICNpbmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKKyNpbmNsdWRl
ICJBdWRpb091dHB1dFVuaXRBZGFwdG9yLmgiCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRl
ci5oIgogI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CkBAIC00Myw0NyArNDQsMzkgQEAgY2xhc3MgUHVzaFB1bGxGSUZPOwogdXNpbmcgQ3Jl
YXRlQXVkaW9EZXN0aW5hdGlvbkNvY29hT3ZlcnJpZGUgPSBSZWY8QXVkaW9EZXN0aW5hdGlvbj4o
KikoQXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKIC8vIEFuIEF1ZGlvRGVz
dGluYXRpb24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVmYXVsdCBvdXRwdXQgQXVkaW9Vbml0Ci1jbGFz
cyBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGlj
IEF1ZGlvU291cmNlUHJvdmlkZXIgeworY2xhc3MgQXVkaW9EZXN0aW5hdGlvbkNvY29hIDogcHVi
bGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBBdWRpb1VuaXRSZW5kZXJlciwgcHVibGljIEF1
ZGlvU291cmNlUHJvdmlkZXIgewogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25Db2NvYShB
dWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlKTsKLSAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiwgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBjb25m
aWd1cmVBdWRpb091dHB1dFVuaXQgPSB0cnVlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5BdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBD
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uQ29jb2FPdmVycmlkZSBjcmVhdGVPdmVycmlkZTsKIAogcHJv
dGVjdGVkOgotICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzRW5vdWdoRnJhbWVzKFVJbnQzMiBudW1iZXJPZkZyYW1lcykgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgcmVuZGVyKGRvdWJsZSBzYW1wbGVUaW1lLCB1aW50NjRf
dCBob3N0VGltZSwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0
YSkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlbmRlck9uUmVuZGVy
aW5nVGhlYWQoc2l6ZV90IGZyYW1lc1RvUmVuZGVyKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0SXNQbGF5aW5nKGJvb2wpOwogICAgIGJvb2wgaXNQbGF5aW5nKCkgZmluYWwgeyByZXR1
cm4gbV9pc1BsYXlpbmc7IH0KICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jb250ZXh0U2FtcGxlUmF0ZTsgfQotICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZl
cigpIGNvbnN0IGZpbmFsOwotICAgIEF1ZGlvVW5pdCYgb3V0cHV0VW5pdCgpIHsgcmV0dXJuIG1f
b3V0cHV0VW5pdDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZl
cigpIGNvbnN0IGZpbmFsOwogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygp
IGNvbnN0OwotICAgIAotICAgIC8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCi0gICAgc3Rh
dGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0
aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQz
MiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwogCi0gICAgdm9pZCBz
ZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24oQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJik7CiAKICAgICBGdW5jdGlvbjx2b2lkKEZ1
bmN0aW9uPHZvaWQoKT4mJik+IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZDsKIAogcHJpdmF0ZToK
KyAgICBmcmllbmQgUmVmPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0
ZShBdWRpb0lPQ2FsbGJhY2smLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZs
b2F0KTsKKwogICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcmVu
ZGVyT25SZW5kZXJpbmdUaGVhZChzaXplX3QgZnJhbWVzVG9SZW5kZXIpOwotCi0gICAgZnJpZW5k
IFJlZjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0Nh
bGxiYWNrJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBmbG9hdCk7Ci0gICAg
CiAgICAgLy8gQXVkaW9Tb3VyY2VQcm92aWRlci4KLSAgICB2b2lkIHByb3ZpZGVJbnB1dChBdWRp
b0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOwotCi0gICAgdm9pZCBjb25maWd1
cmUoKTsKLSAgICB2b2lkIHByb2Nlc3NCdXNBZnRlclJlbmRlcihBdWRpb0J1cyYsIFVJbnQzMiBu
dW1iZXJPZkZyYW1lcyk7Ci0KLSAgICBPU1N0YXR1cyByZW5kZXIoY29uc3QgQXVkaW9UaW1lU3Rh
bXAqLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpIGZpbmFsOwogCi0gICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKKyAgICBB
dWRpb091dHB1dFVuaXRBZGFwdG9yIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcjsKICAgICBBdWRp
b0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7CiAKICAgICAvLyBUbyBwYXNzIHRoZSBkYXRhIGZyb20g
RklGTyB0byB0aGUgYXVkaW8gZGV2aWNlIGNhbGxiYWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9PdXRwdXRVbml0QWRhcHRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzZGQ5M2NiOWRm
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvT3V0cHV0VW5pdEFkYXB0b3IuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9PdXRwdXRVbml0QWRhcHRvci5o
IgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRp
b091dHB1dFVuaXRBZGFwdG9yOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yKEF1ZGlvVW5pdFJlbmRl
cmVyJiByZW5kZXJlcikKKyAgICA6IG1fb3V0cHV0VW5pdCgwKQorICAgICwgbV9hdWRpb1VuaXRS
ZW5kZXJlcihyZW5kZXJlcikKK3sKK30KKworQXVkaW9PdXRwdXRVbml0QWRhcHRvcjo6fkF1ZGlv
T3V0cHV0VW5pdEFkYXB0b3IoKQoreworICAgIGlmIChtX291dHB1dFVuaXQpCisgICAgICAgIEF1
ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7Cit9CisKK09TU3RhdHVz
IEF1ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OnN0YXJ0KCkKK3sKKyAgICByZXR1cm4gQXVkaW9PdXRw
dXRVbml0U3RhcnQobV9vdXRwdXRVbml0KTsKK30KKworT1NTdGF0dXMgQXVkaW9PdXRwdXRVbml0
QWRhcHRvcjo6c3RvcCgpCit7CisgICAgcmV0dXJuIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9vdXRw
dXRVbml0KTsKK30KKworLy8gRGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKK09TU3RhdHVzIEF1
ZGlvT3V0cHV0VW5pdEFkYXB0b3I6OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0
UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCogdGltZVN0YW1wLCBVSW50
MzIgLypidXNOdW1iZXIqLywgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3Qq
IGlvRGF0YSkKK3sKKyAgICBhdXRvKiBhZGFwdG9yID0gc3RhdGljX2Nhc3Q8QXVkaW9PdXRwdXRV
bml0QWRhcHRvcio+KHVzZXJEYXRhKTsKKyAgICBkb3VibGUgc2FtcGxlVGltZSA9IDAuOworICAg
IHVpbnQ2NF90IGhvc3RUaW1lID0gMDsKKyAgICBpZiAodGltZVN0YW1wKSB7CisgICAgICAgIHNh
bXBsZVRpbWUgPSB0aW1lU3RhbXAtPm1TYW1wbGVUaW1lOworICAgICAgICBob3N0VGltZSA9IHRp
bWVTdGFtcC0+bUhvc3RUaW1lOworICAgIH0KKworICAgIHJldHVybiBhZGFwdG9yLT5tX2F1ZGlv
VW5pdFJlbmRlcmVyLnJlbmRlcihzYW1wbGVUaW1lLCBob3N0VGltZSwgbnVtYmVyT2ZGcmFtZXMs
IGlvRGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5kOGRkYmRkNjZiNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb091dHB1dFVuaXRBZGFwdG9yLmgK
QEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQl9BVURJTykKKworI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1VuaXRSZW5kZXJlciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+QXVkaW9Vbml0UmVuZGVyZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCBPU1N0
YXR1cyByZW5kZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhvc3RUaW1lLCBVSW50MzIg
bnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKSA9IDA7Cit9OworCitjbGFz
cyBBdWRpb091dHB1dFVuaXRBZGFwdG9yIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBB
dWRpb091dHB1dFVuaXRBZGFwdG9yKEF1ZGlvVW5pdFJlbmRlcmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgfkF1ZGlvT3V0cHV0VW5pdEFkYXB0b3IoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscyk7CisgICAgV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgc3RhcnQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBPU1N0YXR1cyBzdG9wKCk7CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9u
RmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQzMiBu
dW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOworCisgICAgQXVkaW9Vbml0
IG1fb3V0cHV0VW5pdDsKKyAgICBBdWRpb1VuaXRSZW5kZXJlciYgbV9hdWRpb1VuaXRSZW5kZXJl
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAKc2ltaWxhcml0eSBpbmRleCA3OSUKcmVuYW1l
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25J
T1MuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9P
dXRwdXRVbml0QWRhcHRvcklPUy5jcHAKaW5kZXggYzQ3MzNkZTdmNzVkLi4yZTk2MzBmYjYwZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3Rp
bmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9PdXRwdXRVbml0QWRhcHRvcklPUy5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDE0LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTEgKzI4LDEwIEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvT3V0cHV0VW5pdEFkYXB0
b3IuaCIKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
LSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCIKLQogI2luY2x1ZGUgIkF1ZGlvU2Vz
c2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCkBAIC00Niw3ICs0NSw3IEBA
IFNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvVW5pdFNldFByb3BlcnR5LCBPU1N0YXR1cywg
KEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSgpCit2b2lkIEF1ZGlvT3V0cHV0VW5pdEFk
YXB0b3I6OmNvbmZpZ3VyZShmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpCiB7CiAgICAgY29uc3QgaW50IGtQcmVmZXJyZWRCdWZmZXJTaXpl
ID0gMjU2OwogCkBAIC02MywxMSArNjIsMTEgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OmNvbmZpZ3VyZSgpCiAKICAgICBBU1NFUlQoY29tcCk7CiAKLSAgICBPU1N0YXR1cyByZXN1bHQg
PSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGNvbXAsICZvdXRwdXRVbml0KCkpOworICAgIE9T
U3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29tcCwgJm1fb3V0cHV0
VW5pdCk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCiAgICAgVUludDMyIGZsYWcgPSAxOwotICAg
IHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwKKyAgICByZXN1bHQg
PSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsCiAgICAgICAgIGtBdWRpb091dHB1
dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywKICAgICAgICAga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwK
ICAgICAgICAgMCwKQEAgLTc1LDM0ICs3NCwzOSBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6Y29uZmlndXJlKCkKICAgICAgICAgc2l6ZW9mKGZsYWcpKTsKICAgICBBU1NFUlQoIXJlc3Vs
dCk7CiAKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVuaXQoKSk7Cisg
ICAgcmVzdWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShtX291dHB1dFVuaXQpOwogICAgIEFTU0VS
VCghcmVzdWx0KTsKICAgICAvLyBTZXQgcmVuZGVyIGNhbGxiYWNrCiAgICAgQVVSZW5kZXJDYWxs
YmFja1N0cnVjdCBpbnB1dDsKICAgICBpbnB1dC5pbnB1dFByb2MgPSBpbnB1dFByb2M7CiAgICAg
aW5wdXQuaW5wdXRQcm9jUmVmQ29uID0gdGhpczsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQ
cm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFj
aywga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOworICAg
IHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFBy
b3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZpbnB1
dCwgc2l6ZW9mKGlucHV0KSk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCiAgICAgLy8gU2V0IHN0
cmVhbSBmb3JtYXQKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gc3RyZWFtRm9ybWF0
OwogCiAgICAgVUludDMyIHNpemUgPSBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
KTsKLSAgICByZXN1bHQgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShvdXRwdXRVbml0KCksIGtBdWRp
b1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2
b2lkKikmc3RyZWFtRm9ybWF0LCAmc2l6ZSk7CisgICAgcmVzdWx0ID0gQXVkaW9Vbml0R2V0UHJv
cGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVk
aW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgJnNpemUpOwogICAg
IEFTU0VSVCghcmVzdWx0KTsKIAotICAgIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihz
dHJlYW1Gb3JtYXQpOwotCi0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkob3V0cHV0
VW5pdCgpLCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVf
SW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uKSk7CisgICAgY29uc3RleHByIGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZs
b2F0MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0c1BlckJ5dGUgPSA4OworICAgIHN0cmVhbUZv
cm1hdC5tU2FtcGxlUmF0ZSA9IGhhcmR3YXJlU2FtcGxlUmF0ZTsKKyAgICBzdHJlYW1Gb3JtYXQu
bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOworICAgIHN0cmVhbUZvcm1hdC5tRm9y
bWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9y
bWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBhY2tl
dCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAx
OworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAg
c3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsK
KyAgICBzdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1Bl
ckZsb2F0OworCisgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0
LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQs
IDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKSk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwogCiAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRT
ZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJlZmVycmVkQnVmZmVyU2l6ZSk7CiB9
CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVk
aW9CdXMmLCBVSW50MzIpCi17Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVESU8pICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRh
cHRvck1hYy5jcHAKc2ltaWxhcml0eSBpbmRleCA3MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCnJlbmFtZSB0byBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRvck1h
Yy5jcHAKaW5kZXggNzBmOWM5ZmZmNTFmLi5jOGVkM2VmNzhjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9PdXRwdXRVbml0QWRhcHRv
ck1hYy5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNywxNyArMjgsMTYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgiCisjaW5jbHVkZSAiQXVkaW9PdXRwdXRVbml0QWRh
cHRvci5oIgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykgJiYgUExBVEZPUk0oTUFDKQogCiAjaW5j
bHVkZSAiQXVkaW9CdXMuaCIKLSNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCiAjaW5jbHVkZSA8Q29y
ZUF1ZGlvL0F1ZGlvSGFyZHdhcmUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEF1
ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkKK3ZvaWQgQXVkaW9PdXRwdXRVbml0QWRh
cHRvcjo6Y29uZmlndXJlKGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscykKIHsKICAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRP
dXRwdXRVbml0CiAgICAgQXVkaW9Db21wb25lbnQgY29tcDsKQEAgLTUyLDM3ICs1MiwzNyBAQCB2
b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6Y29uZmlndXJlKCkKIAogICAgIEFTU0VSVChjb21w
KTsKIAotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoY29t
cCwgJm91dHB1dFVuaXQoKSk7CisgICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9Db21wb25lbnRJ
bnN0YW5jZU5ldyhjb21wLCAmbV9vdXRwdXRVbml0KTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CiAK
LSAgICByZXN1bHQgPSBBdWRpb1VuaXRJbml0aWFsaXplKG91dHB1dFVuaXQoKSk7CisgICAgcmVz
dWx0ID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShtX291dHB1dFVuaXQpOwogICAgIEFTU0VSVCghcmVz
dWx0KTsKIAogICAgIC8vIFNldCByZW5kZXIgY2FsbGJhY2sKICAgICBBVVJlbmRlckNhbGxiYWNr
U3RydWN0IGlucHV0OwogICAgIGlucHV0LmlucHV0UHJvYyA9IGlucHV0UHJvYzsKICAgICBpbnB1
dC5pbnB1dFByb2NSZWZDb24gPSB0aGlzOwotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3Bl
cnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBr
QXVkaW9Vbml0U2NvcGVfR2xvYmFsLCAwLCAmaW5wdXQsIHNpemVvZihpbnB1dCkpOworICAgIHJl
c3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3Bl
cnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFsLCAwLCAmaW5wdXQs
IHNpemVvZihpbnB1dCkpOwogICAgIEFTU0VSVCghcmVzdWx0KTsKIAogICAgIC8vIFNldCBzdHJl
YW0gZm9ybWF0CisgICAgY29uc3RleHByIGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0
MzIpOworICAgIGNvbnN0ZXhwciBpbnQgYml0c1BlckJ5dGUgPSA4OworCiAgICAgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uIHN0cmVhbUZvcm1hdDsKLSAgICBzZXRBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKKyAgICBzdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUg
PSBoYXJkd2FyZVNhbXBsZVJhdGU7CisgICAgc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRp
b0Zvcm1hdExpbmVhclBDTTsKKyAgICBzdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlv
Rm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8IGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVy
bGVhdmVkOworICAgIHN0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0
OworICAgIHN0cmVhbUZvcm1hdC5tRnJhbWVzUGVyUGFja2V0ID0gMTsKKyAgICBzdHJlYW1Gb3Jt
YXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZsb2F0OworICAgIHN0cmVhbUZvcm1hdC5tQ2hh
bm5lbHNQZXJGcmFtZSA9IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CisgICAgc3RyZWFtRm9ybWF0
Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdDsKIAotICAgIHJl
c3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG91dHB1dFVuaXQoKSwga0F1ZGlvVW5pdFByb3Bl
cnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVh
bUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOworICAgIHJlc3Vs
dCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5
X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZv
cm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwogICAgIEFTU0VSVCgh
cmVzdWx0KTsKIH0KIAotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnByb2Nlc3NCdXNBZnRl
clJlbmRlcihBdWRpb0J1cyYgYnVzLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMpCi17Ci0gICAgLy8g
Q2xhbXAgdmFsdWVzIGF0IDBkYiAoaS5lLiwgWy0xLjAsIDEuMF0pCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkgewotICAgICAgICBhdXRv
KiBjaGFubmVsID0gYnVzLmNoYW5uZWwoaSk7Ci0gICAgICAgIGlmICghY2hhbm5lbC0+aXNTaWxl
bnQoKSkKLSAgICAgICAgICAgIFZlY3Rvck1hdGg6OmNsYW1wKGNoYW5uZWwtPmRhdGEoKSwgLTEs
IDEsIGNoYW5uZWwtPm11dGFibGVEYXRhKCksIG51bWJlck9mRnJhbWVzKTsKLSAgICB9Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pICYm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCmluZGV4IDVhMTJjZGU0ZmNkZi4uOTlh
NmMyNjdjNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTY4LDEwICs2OCwxMCBAQCB2b2lk
IE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnRpY2soKQogewogICAgIG1fd29ya1F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZGcmFtZXNU
b1Byb2Nlc3MgPSBtX251bWJlck9mRnJhbWVzVG9Qcm9jZXNzXSB7CiAgICAgICAgIEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1Gb3JtYXQ7Ci0gICAgICAgIHNldEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbihzdHJlYW1Gb3JtYXQpOworICAgICAgICBnZXRBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24oc3RyZWFtRm9ybWF0KTsKIAogICAgICAgICBXZWJBdWRpb0J1ZmZlckxp
c3Qgd2ViQXVkaW9CdWZmZXJMaXN0IHsgc3RyZWFtRm9ybWF0LCBudW1iZXJPZkZyYW1lc1RvUHJv
Y2VzcyB9OwotICAgICAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmlucHV0UHJvYyh0aGlzLCAw
LCAwLCAwLCBudW1iZXJPZkZyYW1lc1RvUHJvY2Vzcywgd2ViQXVkaW9CdWZmZXJMaXN0Lmxpc3Qo
KSk7CisgICAgICAgIHJlbmRlcigwLiwgMCwgbnVtYmVyT2ZGcmFtZXNUb1Byb2Nlc3MsIHdlYkF1
ZGlvQnVmZmVyTGlzdC5saXN0KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlkNzA3MWIx
NjY1Ni4uZTg5Yzg1MGIzYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIwLTEwLTE2
ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQ
VSBQcm9jZXNzXSBVc2UgQ0FSaW5nQnVmZmVyIHRvIHRyYW5zZmVyIGF1ZGlvIGRhdGEgb2YgYW4g
YXVkaW8gZGVzdGluYXRpb24gZnJvbSBhIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzE1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJl
bnQgaW1wbGVtZW50YXRpb24gb2YgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiBlc3NlbnRpYWxseSBy
dW5zIHRoZQorICAgICAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgaW4gdGhlIEdQVSBwcm9jZXNz
LCB3aGljaCBpcyBub3QgZ29vZCBiZWNhdXNlIHdlIGFyZSBhZGRpbmcKKyAgICAgICAgQXVkaW9X
b3JrbGV0IHN0dWZmIGludG8gQXVkaW9EZXN0aW5hdGlvbkNvY29hLCBidXQgdGhlIEF1ZGlvV29y
a2xldCBzdHVmZiBpcworICAgICAgICBpcnJlbGV2YW50IHRvIHRoZSBHUFUgcHJvY2Vzcy4KKwor
ICAgICAgICBXaGF0IHJlYWxseSBuZWVkcyB0byBydW4gaW4gdGhlIEdQVSBwcm9jZXNzIChmb3Ig
Q29jb2EgcGxhdGZvcm1zIGF0IGxlYXN0KSBpcyB0aGUKKyAgICAgICAgYXVkaW8gb3V0cHV0IHVu
aXQuIFRoaXMgcGF0Y2ggYWRkcyBXZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yIGFuZAor
ICAgICAgICBXZWJDb3JlOjpBdWRpb1VuaXRSZW5kZXJlciB0byBpbXBsZW1lbnQgdGhhdC4gV2l0
aCB0aGlzIHBhdGNoLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCisgICAgICAgIGluIHRoZSBHUFUg
cHJvY2VzcyBpcyBhbiBBdWRpb1VuaXRSZW5kZXJlciBhbmQgaXQgZW1iZWRzIGFuIEF1ZGlvT3V0
cHV0VW5pdEFkYXB0b3IKKyAgICAgICAgbGlrZSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EgZG9lcyBp
biB0aGUgV2ViIHByb2Nlc3MuIEVzc2VudGlhbGx5LCB3ZSBydW4gQXVkaW9PdXRwdXRVbml0QWRh
cHRvcgorICAgICAgICByZW1vdGVseSBmcm9tIHRoZSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EncyBw
ZXJzcGVjdGl2ZS4KKworICAgICAgICBBbHNvLCBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv
biwgdGhlIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBpbiBhIFdlYgorICAgICAgICBwcm9j
ZXNzIHRyYW5zZmVycyBhdWRpbyBkYXRhIHRvIHRoZSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uIGlu
IHRoZSBHUFUgcHJvY2VzcworICAgICAgICB3aXRoIElQQyBtZXNzYWdlcyAoUmVtb3RlQXVkaW9C
dXNEYXRhKS4gVGhpcyBpcyBub3QgZWZmaWNpZW50IGJlY2F1c2Ugb2YgdGhlCisgICAgICAgIGxh
cmdlIG51bWJlciBvZiBJUEMgbWVzc2FnZXMgZm9yIGF1ZGlvIHNhbXBsZXMuCisKKyAgICAgICAg
V2l0aCB0aGlzIHBhdGNoLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkgKFdlYiBwcm9jZXNz
KSB0cmFuc2ZlcnMgYXVkaW8gc2FtcGxlcworICAgICAgICB0byBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uKEdQVSBwcm9jZXNzKSB3aXRoIGEgQ0FSaW5nQnVmZmVyIHByb3ZpZGluZyBzaGFyZWQKKyAg
ICAgICAgYnVmZmVycyBmb3IgdGhlIFdlYiBwcm9jZXNzIGFuZCB0aGUgR1BVIHByb2Nlc3MuCisK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6flJlbW90ZUF1ZGlvRGVz
dGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjphdWRp
b1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6c3RvcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OmlzUGxh
eWluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb246OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uOjpzdG9yYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bjo6cmVuZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlcjo6YXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjppc1BsYXlpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpmcmFtZXNQZXJCdWZmZXIg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3Nh
Z2VzLmluOgorICAgICAgICBBZGQgYSBtZXNzYWdlIEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2Vk
IHRvIHN1cHBvcnQgdXNpbmcgQ0FSaW5nQnVmZmVyIHRvCisgICAgICAgIHRyYW5zbWl0IGF1ZGlv
IHNhbXBsZXMgdG8gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVBdWRpb0J1c0RhdGEuaDogUmVtb3ZlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdGFydCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVxdWVzdEJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVuZGVyT25S
ZW5kZXJpbmdUaGVhZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6c3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OnJlbmRlckJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hhbmdlSXNQbGF5aW5nKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkuaDoKKyAgICAgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IGlzIGEgc3ViY2xhc3Mg
b2YgQXVkaW9EZXN0aW5hdGlvbkNvY29hLiBJdCBwdWxscyBhdWRpbworICAgICAgICBzYW1wbGVz
IGZyb20gdGhlIFdlYkF1ZGlvIHNpZGUgYW5kIHVzZSBhIENBUmluZ0J1ZmZlciB0byBwdXNoIGF1
ZGlvIHNhbXBsZXMgdG8KKyAgICAgICAgdGhlIGF1ZGlvIG91dHB1dCB1bml0IChtYW5hZ2VkIGJ5
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24pIGluIHRoZSBHUFUgcHJvY2Vzcy4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgIEFkZCBhIG1lc3NhZ2UgUmVxdWVzdEJ1ZmZlciwgd2hpY2ggY2FuIGJlIHVz
ZWQgYnkgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiB0byBhc2sKKyAgICAgICAgZm9yIChwdWxsKSBh
dWRpbyBzYW1wbGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXI6OnB1c2hTYW1wbGVzKTogQSBtaW5vciBmaXggdG8gZ2V0IHJpZCBv
ZgorICAgICAgICBhIHR5cGUgY29udmVyc2lvbi4KKwogMjAyMC0xMC0xNiAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IGEg
ZHVtbXkgV2ViQXV0aG5Qcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRl
eCAyN2YyYTY5OTZhYzkuLjVkNzcwOWNiZTE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXIuY3BwCkBAIC0yOSwxMTYgKzI5LDE0NCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQl9BVURJTykKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKLSNpbmNsdWRlICJSZW1vdGVBdWRpb0J1c0RhdGEuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9CdXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVz
dGluYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxsYmFjay5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXVkaW9VdGlsaXRpZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1B1c2hQdWxs
RklGTy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2Vt
YXBob3JlLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgeworI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgIlNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRp
b091dHB1dFVuaXRBZGFwdG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1ZmZlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+CisjZW5kaWYKIAotLy8gVGhpcyBGSUZPIHNp
emUgbWF0Y2hlcyB0byBvbmUgaW4gQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcCBhbmQgd2FzIGlt
cG9ydGVkIGZyb20gQmxpbmsuCi1jb25zdGV4cHIgc2l6ZV90IGZpZm9TaXplID0gOTYgKiBXZWJD
b3JlOjpBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemU7CituYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiwgcHVibGljIFdlYkNvcmU6OkF1ZGlvSU9D
YWxsYmFjayB7CitjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCisgICAgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4KKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpBdWRpb1VuaXRSZW5kZXJlcgorI2VuZGlmCit7
CiBwdWJsaWM6Ci0gICAgdXNpbmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRpb0J1czsKLSAgICB1
c2luZyBBdWRpb0Rlc3RpbmF0aW9uID0gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjsKLSAgICB1
c2luZyBTaGFyZWRCdWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI7Ci0KICAgICBzdGF0aWMg
UmVmPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aW9uLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyLAotICAgICAgICBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJl
ck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQg
c2FtcGxlUmF0ZSkKKyAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJf
dCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oY29ubmVjdGlv
biwgaWRlbnRpZmllciwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oY29ubmVjdGlvbiwgaWRlbnRpZmllciwgaW5w
dXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IH5SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFtX2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKSk7Ci0gICAgfQorICAgIHZpcnR1YWwgflJlbW90
ZUF1ZGlvRGVzdGluYXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHNjaGVkdWxlR3JhY2Vm
dWxTaHV0ZG93bklmTmVlZGVkKCkKICAgICB7Ci0gICAgICAgIGlmICghaXNQbGF5aW5nKCkpCisg
ICAgICAgIGlmICghbV9pc1BsYXlpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1f
cHJvdGVjdFRoaXNEdXJpbmdHcmFjZWZ1bFNodXRkb3duID0gdGhpczsKICAgICAgICAgc3RvcCgp
OwogICAgIH0KIAotICAgIHZvaWQgc3RhcnQoKSB7IG1fZGVzdGluYXRpb24tPnN0YXJ0KHsgfSk7
IH0KLSAgICB2b2lkIHN0b3AoKSB7IG1fZGVzdGluYXRpb24tPnN0b3AoKTsgfQotICAgIGJvb2wg
aXNQbGF5aW5nKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCk7IH0KLSAgICB1
bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uLT5m
cmFtZXNQZXJCdWZmZXIoKSA7IH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGF1ZGlv
U2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBpcGNI
YW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQorICAgIHsKKyAgICAgICAgbV9kZXNjcmlwdGlv
biA9IGRlc2NyaXB0aW9uOworCisgICAgICAgIGlmIChpcGNIYW5kbGUuaGFuZGxlLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICBtX3JpbmdCdWZmZXItPmRlYWxsb2NhdGUoKTsKKyAgICAgICAgICAg
IHN0b3JhZ2UoKS5zZXRSZWFkT25seShmYWxzZSk7CisgICAgICAgICAgICBzdG9yYWdlKCkuc2V0
U3RvcmFnZShudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGF1dG8gbWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIHN0b3JhZ2UoKS5zZXRT
dG9yYWdlKFdURk1vdmUobWVtb3J5KSk7CisgICAgICAgIHN0b3JhZ2UoKS5zZXRSZWFkT25seSh0
cnVlKTsKKworICAgICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGRlc2NyaXB0aW9uLCBudW1i
ZXJPZkZyYW1lcyk7CisgICAgfQorI2VuZGlmCisKKyAgICB2b2lkIHN0YXJ0KCkKKyAgICB7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIGlmIChtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iu
c3RhcnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2lzUGxheWluZyA9IHRy
dWU7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIHN0b3AoKQorICAgIHsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICAgICAgaWYgKG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdG9wKCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKworICAg
ICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd24pIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlZkNvdW50KCkgPT0gMSk7CisgICAgICAgICAgICBtX3Byb3Rl
Y3RUaGlzRHVyaW5nR3JhY2VmdWxTaHV0ZG93biA9IG51bGxwdHI7CisgICAgICAgIH0KKyNlbmRp
ZgorICAgIH0KKworICAgIGJvb2wgaXNQbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlp
bmc7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKQorICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkKICAgICAgICAgOiBtX2Nvbm5lY3Rp
b24oY29ubmVjdGlvbikKICAgICAgICAgLCBtX2lkKGlkZW50aWZpZXIpCi0gICAgICAgICwgbV9k
ZXN0aW5hdGlvbihBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKnRoaXMsIGlucHV0RGV2aWNlSWQs
IG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0
ZSkpCi0gICAgICAgICwgbV9maWZvKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZpZm9TaXplKQor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICAsIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcigq
dGhpcykKKyAgICAgICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJp
bmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIp
KSkKKyNlbmRpZgogICAgIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgbV9hdWRpb091
dHB1dFVuaXRBZGFwdG9yLmNvbmZpZ3VyZShoYXJkd2FyZVNhbXBsZVJhdGUsIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMpOworI2VuZGlmCiAgICAgfQogCi0gICAgdm9pZCByZW5kZXIoQXVkaW9CdXMq
LCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MsIGNvbnN0
IFdlYkNvcmU6OkF1ZGlvSU9Qb3NpdGlvbiYgb3V0cHV0UG9zaXRpb24pIG92ZXJyaWRlCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UmIHN0b3JhZ2UoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdl
Jj4obV9yaW5nQnVmZmVyLT5zdG9yYWdlKCkpOworICAgIH0KKworICAgIE9TU3RhdHVzIHJlbmRl
cihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIFVJbnQzMiBudW1iZXJPZkZy
YW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCiAgICAgewogICAgICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKIAogICAgICAgICBpZiAobV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVs
U2h1dGRvd24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgewotICAgICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2ZpZm9Mb2NrKTsKLSAgICAgICAgICAgIGZyYW1lc1Rv
UHJvY2VzcyA9IG1fZmlmby5wdWxsKGRlc3RpbmF0aW9uQnVzLCBmcmFtZXNUb1Byb2Nlc3MpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICghZnJhbWVzVG9Qcm9jZXNzKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4gYnVmZmVyczsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlc3RpbmF0aW9uQnVzLT5udW1iZXJPZkNoYW5u
ZWxzKCk7ICsraSkgewotICAgICAgICAgICAgYXV0byBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFs
bG9jYXRlKHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICAgICAgYnVm
ZmVycy5hcHBlbmQoKm1lbW9yeSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBub0Vy
cjsKIAogICAgICAgICAvLyBGSVhNRTogSXQgaXMgdW5mb3J0dW5hdGUgd2UgaGF2ZSB0byBkaXNw
YXRjaCB0byB0aGUgbWFpbiB0aGVhZCBoZXJlLiBXZSBzaG91bGQgYmUgYWJsZSB0byBJUEMgc3Ry
YWlnaHQgZnJvbSB0aGUKICAgICAgICAgLy8gcmVuZGVyIHRocmVhZCBidXQgdGhpcyBpcyBub3Qg
c3VwcG9ydGVkIGJ5IHNlbmRXaXRoQXN5bmNSZXBseSgpLgotICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lc1RvUHJvY2Vz
cywgb3V0cHV0UG9zaXRpb24sIGJ1ZmZlcnMgPSBXVEZNb3ZlKGJ1ZmZlcnMpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgUmVtb3RlQXVkaW9CdXNEYXRhIGJ1c0RhdGEgeyBmcmFtZXNUb1Byb2Nl
c3MsIG91dHB1dFBvc2l0aW9uLCBidWZmZXJzLm1hcChbXShhdXRvJiBtZW1vcnkpIHsgcmV0dXJu
IG1lbW9yeS5jb3B5UmVmKCk7IH0pIH07Ci0gICAgICAgICAgICBBU1NFUlQoZnJhbWVzVG9Qcm9j
ZXNzKTsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OlJlbmRlckJ1ZmZl
cihidXNEYXRhKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCBidWZmZXJzID0gV1RGTW92ZShidWZmZXJzKSwgZnJhbWVzVG9Qcm9jZXNzXSgpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShidWZmZXJzLnNpemUo
KSwgZnJhbWVzVG9Qcm9jZXNzLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJ1ZmZlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIGF1
ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIHN0YXRpY19jYXN0PGZsb2F0Kj4oYnVmZmVyc1tp
XS0+ZGF0YSgpKSwgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fZmlmb0xvY2spOwotICAgICAgICAgICAgICAgIG1fZmlmby5wdXNoKGF1
ZGlvQnVzLmdldCgpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzYW1wbGVUaW1lLCBob3N0VGltZSwgbnVtYmVyT2ZGcmFt
ZXMsIGlvRGF0YV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6OlJlcXVlc3RCdWZmZXIoc2FtcGxlVGltZSwgaG9zdFRpbWUsIG51bWJlck9mRnJhbWVz
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpb0RhdGFd
KGF1dG8gc3RhcnRGcmFtZSwgYXV0byBudW1iZXJPZkZyYW1lc1RvUmVuZGVyLCBhdXRvIGJvdW5k
c1N0YXJ0RnJhbWUsIGF1dG8gYm91bmRzRW5kRnJhbWUpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIG1fcmluZ0J1ZmZlci0+c2V0Q3VycmVudEZyYW1lQm91bmRzKGJvdW5kc1N0YXJ0RnJhbWUs
IGJvdW5kc0VuZEZyYW1lKTsKKyAgICAgICAgICAgICAgICBtX3JpbmdCdWZmZXItPmZldGNoKGlv
RGF0YSwgbnVtYmVyT2ZGcmFtZXNUb1JlbmRlciwgc3RhcnRGcmFtZSk7CiAgICAgICAgICAgICB9
LCBtX2lkLnRvVUludDY0KCkpOwogICAgICAgICB9KTsKLSAgICB9CiAKLSAgICB2b2lkIGlzUGxh
eWluZ0RpZENoYW5nZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAobV9wcm90ZWN0VGhp
c0R1cmluZ0dyYWNlZnVsU2h1dGRvd24pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
X2Rlc3RpbmF0aW9uLT5pc1BsYXlpbmcoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZWZDb3VudCgpID09IDEpOwotICAgICAgICAgICAgbV9wcm90ZWN0VGhpc0R1cmluZ0dyYWNlZnVs
U2h1dGRvd24gPSBudWxscHRyOyAvLyBEZWxldGVzICJ0aGlzIi4KLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGlzUGxheWluZyA9IG1fZGVzdGluYXRpb24tPmlzUGxheWlu
ZygpLCBpZGVudGlmaWVyID0gbV9pZC50b1VJbnQ2NCgpXSB7Ci0gICAgICAgICAgICBtX2Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eTo6RGlkQ2hhbmdlSXNQbGF5aW5nKGlzUGxheWluZyksIGlkZW50aWZpZXIpOwotICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuIG5vRXJyOwogICAgIH0KKyNlbmRpZgogCiAgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyIG1faWQ7Ci0gICAgUmVmUHRyPEF1ZGlvRGVzdGluYXRpb24+IG1fZGVz
dGluYXRpb247CisKICAgICBSZWZQdHI8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4gbV9wcm90ZWN0
VGhpc0R1cmluZ0dyYWNlZnVsU2h1dGRvd247Ci0gICAgTG9jayBtX2ZpZm9Mb2NrOwotICAgIFdl
YkNvcmU6OlB1c2hQdWxsRklGTyBtX2ZpZm87CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBX
ZWJDb3JlOjpBdWRpb091dHB1dFVuaXRBZGFwdG9yIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcjsK
KworICAgIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBtX2Rlc2NyaXB0aW9uOwor
ICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+IG1fcmluZ0J1ZmZlcjsKKyNlbmRp
ZgorCisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07CiB9OwogCiBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKQEAgLTE0OCwxNCArMTc2LDEzIEBAIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcihH
UFVDb25uZWN0aW9uVG9XZWJQCiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjp+UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5n
JiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsCi0gICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgdW5zaWduZWQg
ZnJhbWVzUGVyQnVmZmVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBp
bnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSwKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIG5ld0lEID0g
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOwot
ICAgIGF1dG8gZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUobV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKLSAgICBh
dXRvIGZyYW1lc1BlckJ1ZmZlciA9IGRlc3RpbmF0aW9uLT5mcmFtZXNQZXJCdWZmZXIoKTsKKyAg
ICBhdXRvIGRlc3RpbmF0aW9uID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVT
YW1wbGVSYXRlKTsKICAgICBtX2F1ZGlvRGVzdGluYXRpb25zLmFkZChuZXdJRCwgV1RGTW92ZShk
ZXN0aW5hdGlvbikpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0lELCBmcmFtZXNQZXJCdWZm
ZXIpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKIH0KIAogdm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xODYsNiArMjEzLDE0IEBAIHZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JCiAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQbGF5aW5nKTsKIH0KIAorI2lmIFBM
QVRGT1JNKENPQ09BKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6YXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSwgY29uc3Qg
V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgdWludDY0X3Qg
bnVtYmVyT2ZGcmFtZXMpCit7CisgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGluYXRp
b25zLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgaXRlbS0+YXVkaW9TYW1wbGVzU3RvcmFnZUNo
YW5nZWQoaXBjSGFuZGxlLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCAx
MWI0YmVmMTA0MWIuLmUyMmMxMGFjZTlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgK
QEAgLTM0LDYgKzM0LDEyIEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworfQorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwpA
QCAtNDYsMjUgKzUyLDI1IEBAIHB1YmxpYzoKICAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgflJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyKCk7CiAKLSAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3Qg
U3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVp
bnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIHVuc2lnbmVk
IGZyYW1lc1BlckJ1ZmZlcik+JiYpOwotICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2Rl
cikKLSAgICB7Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKLSAgICB9CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9t
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwogCisgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0
cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50
MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJk
d2FyZVNhbXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
c3RvcEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOworI2Vu
ZGlmCisKICAgICBIYXNoTWFwPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBSZWY8
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbj4+IG1fYXVkaW9EZXN0aW5hdGlvbnM7CiAgICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogfTsKIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZTsKK30gLy8gbmFtZXNwYWNlIFdlYktpdDsKIAogI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBiYzA1YWUxMTc5YWEuLjJi
YzllZGM3MWI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtMjQsMTQgKzI0LDE0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCX0FVRElPKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ciBOb3RSZWZDb3VudGVkIHsKLQotICAgIENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlu
cHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgZnJhbWVzUGVy
QnVmZmVyKSBTeW5jaHJvbm91cwotCisgICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcg
aW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNh
bXBsZVJhdGUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlk
ZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5j
CiAKICAgICBTdGFydEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3Vz
CiAgICAgU3RvcEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCi0K
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChXZWJL
aXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykKKyNl
bmRpZgogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGQxMGFlZDRmNDQzMS4uM2FkNGI4Njg5MTEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NDcsNyAr
MTQ0Nyw2IEBACiAJCTlCNTQ5OUIyMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0
aW9uRXhjbHVzaW9uUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUI1NDk5QjAyMzYyQTdFQzAwREY4QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25F
eGNsdXNpb25SdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOUI1QkVDMjYyNDAwRjRBOTAwNzBDNkVGIC8qIFdlYk1lZGlhU3RyYXRlZ3kuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNUJFQzI0MjQw
MEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmggKi87IH07CiAJCTlCNUJFQzJBMjQw
MTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNUJFQzI4MjQwMTAxNTgwMDcw
QzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCAqLzsgfTsKLQkJOUI1QkVDMzEy
NDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oIGluIENvcHlGaWxlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMzMDI0MDEwMjIyMDA3MEM2RUYg
LyogUmVtb3RlQXVkaW9CdXNEYXRhLmggKi87IH07CiAJCTlFQzUzMkEzMjQ0N0ZCQUQwMDIxNTIx
NiAvKiBHZW9sb2NhdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlFQzUzMkEyMjQ0N0ZCQUQwMDIxNTIxNiAvKiBHZW9sb2NhdGlv
bklkZW50aWZpZXIuaCAqLzsgfTsKIAkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29u
dGV4dFByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTEwMkE3
MDgxRUMwRUVFOTAwRDgxRDgyIC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1
Z2luLnNiIGluIENvcHkgUGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBNUUzOTQ5MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9t
ZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiAqLzsgfTsKQEAgLTIxNjEsNyArMjE2MCw2
IEBACiAJCQkJMkRCOTYwNTMyMzk4ODZDMTAwMTAyNzkxIC8qIGNvbS5hcHBsZS5XZWJLaXQuR1BV
LnNiIGluIENvcHlGaWxlcyAqLywKIAkJCQlBNzhDQ0REQjE5M0FDOUY4MDA1RUNDMjUgLyogY29t
LmFwcGxlLldlYktpdC5OZXR3b3JraW5nLnNiIGluIENvcHlGaWxlcyAqLywKIAkJCQlBNzhDQ0RE
QzE5M0FDOUZCMDA1RUNDMjUgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiIGluIENv
cHlGaWxlcyAqLywKLQkJCQk5QjVCRUMzMTI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9C
dXNEYXRhLmggaW4gQ29weUZpbGVzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDU4Niw3ICs0NTg0LDYgQEAKIAkJOUI1QkVD
MjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUI1QkVDMjkyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjVCRUMyRTI0MDEw
MThDMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlv
QnVzRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb0J1c0RhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJDNTlENkMxRUZDQ0NCNjAwMUU4RDA5IC8qIENhbGxiYWNr
SUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tJRC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM1OUQ2RDFFRkNEQzZEMDAxRThEMDkgLyogT3B0
aW9uYWxDYWxsYmFja0lELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlv
bmFsQ2FsbGJhY2tJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RUM1MzJBMjI0
NDdGQkFEMDAyMTUyMTYgLyogR2VvbG9jYXRpb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlb2xvY2F0aW9uSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTYwMCw3ICs1NTk3LDYgQEAKIAkJCQkwNzkyMzEzMTIzOUIzQjBDMDA5NTk4RTIgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcCAqLywKIAkJCQkwNzkyMzEzMjIzOUIzQjBDMDA5NTk4RTIg
LyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMDdCMUQwNEIyM0QzOEZDRTAw
Mzk5QTZFIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiAqLywKLQkJCQk5
QjVCRUMzMDI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9CdXNEYXRhLmggKi8sCiAJCQkJ
OUI1QkVDMjkyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5j
cHAgKi8sCiAJCQkJOUI1QkVDMjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5oICovLAogCQkJCTlCNUJFQzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvQnVzRGF0YS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZjMmYwYzY2MDY5Li4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaAor
KysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBSZW1vdGVBdWRp
b0J1c0RhdGEgewotICAgIHVpbnQ2NF90IGZyYW1lc1RvUHJvY2VzcyB7IDAgfTsKLSAgICBXZWJD
b3JlOjpBdWRpb0lPUG9zaXRpb24gb3V0cHV0UG9zaXRpb247Ci0gICAgVmVjdG9yPFJlZjxTaGFy
ZWRNZW1vcnk+PiBjaGFubmVsQnVmZmVyczsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+Ci0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGVuY29kZXIgPDwgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBlbmNvZGVyIDw8IG91dHB1
dFBvc2l0aW9uOwotICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihjaGFu
bmVsQnVmZmVycy5zaXplKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYW5u
ZWxCdWZmZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBoYW5kbGU7Ci0gICAgICAgICAgICBjaGFubmVsQnVmZmVyc1tpXS0+Y3JlYXRlSGFuZGxlKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwotICAgICAgICAgICAg
ZW5jb2RlciA8PCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgY2hh
bm5lbEJ1ZmZlcnNbaV0tPnNpemUoKSB9OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRGVjb2Rlcj4KLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlbW90ZUF1ZGlvQnVzRGF0YSYgcmVzdWx0KQotICAg
IHsKLSAgICAgICAgdWludDY0X3QgZnJhbWVzVG9Qcm9jZXNzOwotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGZyYW1lc1RvUHJvY2VzcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIHJlc3VsdC5mcmFtZXNUb1Byb2Nlc3MgPSBmcmFtZXNUb1Byb2Nlc3M7Ci0KLSAgICAg
ICAgV2ViQ29yZTo6QXVkaW9JT1Bvc2l0aW9uIG91dHB1dFBvc2l0aW9uOwotICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG91dHB1dFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcmVzdWx0Lm91dHB1dFBvc2l0aW9uID0gb3V0cHV0UG9zaXRpb247Ci0KLSAg
ICAgICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6
ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IGlwY0hhbmRsZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYXV0byBtZW1v
cnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRXcml0ZSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmNoYW5uZWxCdWZm
ZXJzLmFwcGVuZChtZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IDg0MDRjNDhlMWMyZS4uODQwMmRl
ZWY4YWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC0zMCwxNiAr
MzAsMjEgQEAKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNs
dWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9CdXMu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KKworI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotdXNpbmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRpb0J1czsKKy8vIEFsbG9jYXRlIGEgcmlu
ZyBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gMiBzZWNvbmRzIG9mIGF1ZGlvLgorY29u
c3RleHByIHNpemVfdCByaW5nQnVmZmVyU2l6ZUluU2Vjb25kID0gMjsKKwogdXNpbmcgQXVkaW9E
ZXN0aW5hdGlvbiA9IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb247CiB1c2luZyBBdWRpb0lPQ2Fs
bGJhY2sgPSBXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2s7CiAKQEAgLTUwLDE2ICs1NSwxNyBAQCBS
ZWY8QXVkaW9EZXN0aW5hdGlvbj4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpjcmVhdGUo
QXVkaW9JT0NhbGxiYWNrJiBjYWxsYgogfQogCiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBj
b25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVs
cywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKLSAg
ICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICA6IFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2Nv
YShjYWxsYmFjaywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgZmFsc2UpCisg
ICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZTxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KG1ha2VV
bmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KHRoaXMpKSkKKyNlbmRpZgogewogICAg
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQ7Ci0gICAgdW5z
aWduZWQgZnJhbWVzUGVyQnVmZmVyIHsgMCB9OwogCiAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAg
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCi0gICAgICAgIE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihpbnB1dERl
dmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNh
bXBsZVJhdGUpLAotICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQsIGZyYW1lc1Bl
ckJ1ZmZlciksIDApOworICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNh
bXBsZVJhdGUoKSksCisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25JRCksIDApOwog
CiAgICAgYXV0byBvZmZUaHJlYWRSZW5kZXJpbmcgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSgpIG11dGFibGUgewogICAgICAgICB3aGlsZSAoIW1fdGhyZWFkVGFza1F1
ZXVlLmlzS2lsbGVkKCkpIHsKQEAgLTcyLDcgKzc4LDE0IEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KEF1ZGlvSU9DYWxsYmFjayYgY2Fs
bGJhCiAgICAgY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgdGhpcywgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fZGVzdGluYXRp
b25JRCA9IGRlc3RpbmF0aW9uSUQ7Ci0gICAgbV9mcmFtZXNQZXJCdWZmZXIgPSBmcmFtZXNQZXJC
dWZmZXI7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gc3RyZWFtRm9ybWF0OworICAgIGdldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihz
dHJlYW1Gb3JtYXQpOworICAgIG1fbnVtYmVyT2ZGcmFtZXMgPSBoYXJkd2FyZVNhbXBsZVJhdGUo
KSAqIHJpbmdCdWZmZXJTaXplSW5TZWNvbmQ7CisgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShz
dHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0g
bWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7CisjZW5kaWYKIH0K
IAogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5KCkKQEAgLTkyLDM2ICsxMDUsNTQgQEAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KCkKIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5OjpzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0
Y2hUb1JlbmRlclRocmVhZCkKIHsKICAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQgPSBXVEZN
b3ZlKGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpOworICAgIGJvb2wgaXNQbGF5aW5nOwogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKAogICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uSUQpLAotICAgICAg
ICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0
aW5hdGlvbjo6UmVwbHkobV9pc1BsYXlpbmcpLCAwKTsKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdGFydEF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGlz
UGxheWluZyksIDApOworICAgIHNldElzUGxheWluZyhpc1BsYXlpbmcpOwogfQogCiB2b2lkIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RvcCgpCiB7CisgICAgYm9vbCBpc1BsYXlpbmc7
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCiAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6U3RvcEF1ZGlvRGVzdGluYXRpb24obV9kZXN0aW5hdGlvbklEKSwK
LSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVk
aW9EZXN0aW5hdGlvbjo6UmVwbHkobV9pc1BsYXlpbmcpLCAwKTsKKyAgICAgICAgTWVzc2FnZXM6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVkaW9EZXN0aW5hdGlvbjo6UmVw
bHkoaXNQbGF5aW5nKSwgMCk7CisgICAgc2V0SXNQbGF5aW5nKGlzUGxheWluZyk7CiAgICAgbV9k
aXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHk6OnJlbmRlckJ1ZmZlcihjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVz
RGF0YSYgYXVkaW9CdXNEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eTo6cmVxdWVzdEJ1ZmZlcihkb3VibGUgc2FtcGxlVGltZSwgdWludDY0X3QgaG9zdFRp
bWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2
NF90LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQoYXVkaW9CdXNEYXRh
LmZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgQVNTRVJUKGF1ZGlvQnVzRGF0YS5jaGFubmVsQnVmZmVy
cy5zaXplKCkpOwotICAgIGF1dG8gYXVkaW9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlKGF1ZGlvQnVz
RGF0YS5jaGFubmVsQnVmZmVycy5zaXplKCksIGF1ZGlvQnVzRGF0YS5mcmFtZXNUb1Byb2Nlc3Ms
IGZhbHNlKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXVkaW9CdXNEYXRhLmNoYW5u
ZWxCdWZmZXJzLnNpemUoKTsgKytpKQotICAgICAgICBhdWRpb0J1cy0+c2V0Q2hhbm5lbE1lbW9y
eShpLCAoZmxvYXQqKWF1ZGlvQnVzRGF0YS5jaGFubmVsQnVmZmVyc1tpXS0+ZGF0YSgpLCBhdWRp
b0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzKTsKLQotICAgIG1fY2FsbGJhY2sucmVuZGVyKDAsIGF1
ZGlvQnVzLmdldCgpLCBhdWRpb0J1c0RhdGEuZnJhbWVzVG9Qcm9jZXNzLCBhdWRpb0J1c0RhdGEu
b3V0cHV0UG9zaXRpb24pOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBpZiAoIWhh
c0Vub3VnaEZyYW1lcyhudW1iZXJPZkZyYW1lcykpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KDAsIDAsIDAsIDApOworCisgICAgbV9yZW5kZXJDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5zZXRTYW1wbGVDb3Vu
dChudW1iZXJPZkZyYW1lcyk7CisKKyAgICBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlcihz
YW1wbGVUaW1lLCBob3N0VGltZSwgbnVtYmVyT2ZGcmFtZXMsIG1fYXVkaW9CdWZmZXJMaXN0LT5s
aXN0KCkpOwogfQogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlkQ2hhbmdl
SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5nKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHk6OnJlbmRlck9uUmVuZGVyaW5nVGhlYWQoc2l6ZV90IGZyYW1lc1RvUmVuZGVyKQogewotICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3JlbmRlckNvbXBsZXRpb25I
YW5kbGVyKTsKKworICAgIGF1dG8gc3RhcnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOworCisgICAg
QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJPblJlbmRlcmluZ1RoZWFkKGZyYW1lc1RvUmVu
ZGVyKTsKKyAgICBtX2N1cnJlbnRGcmFtZSArPSBmcmFtZXNUb1JlbmRlcjsKKworICAgIG1fcmlu
Z0J1ZmZlci0+c3RvcmUobV9hdWRpb0J1ZmZlckxpc3QtPmxpc3QoKSwgZnJhbWVzVG9SZW5kZXIs
IHN0YXJ0RnJhbWUpOworCisgICAgdWludDY0X3QgYm91bmRzU3RhcnRGcmFtZTsKKyAgICB1aW50
NjRfdCBib3VuZHNFbmRGcmFtZTsKKyAgICBtX3JpbmdCdWZmZXItPmdldEN1cnJlbnRGcmFtZUJv
dW5kcyhib3VuZHNTdGFydEZyYW1lLCBib3VuZHNFbmRGcmFtZSk7CisgICAgbV9yZW5kZXJDb21w
bGV0aW9uSGFuZGxlcihzdGFydEZyYW1lLCBmcmFtZXNUb1JlbmRlciwgYm91bmRzU3RhcnRGcmFt
ZSwgYm91bmRzRW5kRnJhbWUpOwogfQorI2VuZGlmCiAKIC8vIElQQzo6Q29ubmVjdGlvbjo6VGhy
ZWFkTWVzc2FnZVJlY2VpdmVyCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6ZGlz
cGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKQEAgLTEzMyw2ICsxNjQsMjgg
QEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRpc3BhdGNoVG9UaHJlYWQoRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgbV90aHJlYWRUYXNrUXVldWUuYXBwZW5kKFdURk1v
dmUodGFzaykpOwogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlKQorewor
ICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoc3RvcmFnZSkKKyAgICAg
ICAgc3RvcmFnZS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisKKyAgICAvLyBGSVhNRTogU2VuZCB0aGUgYWN0dWFsIGRhdGEgc2l6ZSB3
aXRoIElQQ0hhbmRsZS4KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisgICAgdWludDY0
X3QgZGF0YVNpemUgPSBoYW5kbGUuc2l6ZSgpOworI2Vsc2UKKyAgICB1aW50NjRfdCBkYXRhU2l6
ZSA9IDA7CisjZW5kaWYKKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBzdHJlYW1G
b3JtYXQ7CisgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7
CisgICAgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKHN0cmVh
bUZvcm1hdCk7CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6QXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQgeyBtX2Rlc3RpbmF0aW9u
SUQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9
LCBzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFtZXMgfSwgMCk7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAppbmRleCBjNGFk
Yjc1NjBkNDYuLmViOGQwYmI0ZjJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5o
CkBAIC0yOCwyNCArMjgsMzcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJfQVVESU8pCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiUmVtb3RlQXVk
aW9CdXNEYXRhLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
QXVkaW9EZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+
CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUXVldWUuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jaW5jbHVkZSA8V2ViQ29yZS9DQVJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlICJTaGFyZWRSaW5n
QnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbkNvY29h
Lmg+CisjZWxzZQorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2VuZGlm
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENBUmluZ0J1ZmZlcjsKK2NsYXNzIFdlYkF1
ZGlvQnVmZmVyTGlzdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uLCBw
dWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgOiBwdWJs
aWMgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hCisgICAgLCBwdWJsaWMgU2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2U6OkNsaWVudAorI2Vsc2UKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uCisjZW5kaWYKKyAgICAsIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVh
ZE1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5KTsKIHB1YmxpYzoKLSAgICB1c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6
OkF1ZGlvQnVzOwogICAgIHVzaW5nIEF1ZGlvSU9DYWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvSU9D
YWxsYmFjazsKICAgICB1c2luZyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpyZWY7CiAgICAg
dXNpbmcgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6ZGVyZWY7CkBAIC01NywxNiArNzAsMjUg
QEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAKLSAgICB2b2lkIHJlbmRlckJ1
ZmZlcihjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVzRGF0YSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcp
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgcmVxdWVzdEJ1ZmZlcihkb3VibGUgc2Ft
cGxlVGltZSwgdWludDY0X3QgaG9zdFRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzVG9SZW5kZXIsIHVpbnQ2NF90IGJvdW5kc1N0YXJ0RnJhbWUsIHVpbnQ2NF90IGJvdW5k
c0VuZEZyYW1lKT4mJik7CisjZW5kaWYKIAogcHJpdmF0ZToKLSAgICAvLyBXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uCi0gICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQo
KT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRlclRocmVhZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9w
KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX2lz
UGxheWluZzsgfQotICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3NhbXBsZVJhdGU7IH0KLSAgICB1bnNpZ25lZCBmcmFtZXNQZXJCdWZmZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2ZyYW1lc1BlckJ1ZmZlcjsgfQorICAgIHZvaWQgc3RhcnQoRnVu
Y3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQp
IGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCisjaWYgIVBMQVRGT1JNKENPQ09BKQor
ICAgIGJvb2wgaXNQbGF5aW5nKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNl
dElzUGxheWluZyhib29sKSB7IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gMDsgfQorICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBz
dG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlck9uUmVu
ZGVyaW5nVGhlYWQoc2l6ZV90IGZyYW1lc1RvUmVuZGVyKSBmaW5hbDsKKyNlbmRpZgogCiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAtNzYsMTEgKzk4LDE2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZWZNZXNzYWdlUmVjZWl2ZXIoKSBmaW5hbCB7IFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZk1lc3NhZ2VSZWNlaXZlcigp
IGZpbmFsIHsgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6ZGVyZWYoKTsgfQogCi0gICAgQXVk
aW9JT0NhbGxiYWNrJiBtX2NhbGxiYWNrOwotICAgIGZsb2F0IG1fc2FtcGxlUmF0ZSB7IDAuIH07
Ci0gICAgdW5zaWduZWQgbV9mcmFtZXNQZXJCdWZmZXIgeyAwIH07CiAgICAgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbklkZW50aWZpZXIgbV9kZXN0aW5hdGlvbklEOwotICAgIGJvb2wgbV9pc1BsYXlp
bmcgeyBmYWxzZSB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdWludDY0X3QgbV9udW1i
ZXJPZkZyYW1lcyB7IDAgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0FSaW5nQnVm
ZmVyPiBtX3JpbmdCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlv
QnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CisgICAgdWludDY0X3QgbV9jdXJyZW50RnJh
bWUgeyAwIH07CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCB1aW50NjRfdCwgdWlu
dDY0X3QsIHVpbnQ2NF90KT4gbV9yZW5kZXJDb21wbGV0aW9uSGFuZGxlcjsKKyNlbmRpZgorCiAg
ICAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiBtX2Rpc3BhdGNoVG9SZW5kZXJU
aHJlYWQ7CiAgICAgUmVmUHRyPFRocmVhZD4gbV9yZW5kZXJUaHJlYWQ7CiAgICAgQ3Jvc3NUaHJl
YWRRdWV1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3RocmVhZFRhc2tRdWV1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYWUxZmM3MDY5ODcx
Li5iZjA0YzFjNDUwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yNCwxMCArMjQsOSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKFdFQl9BVURJTykKIAogbWVzc2FnZXMgLT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5IE5vdFJlZkNvdW50ZWQgewotCi0gICAgUmVuZGVyQnVmZmVyKHN0cnVjdCBXZWJLaXQ6
OlJlbW90ZUF1ZGlvQnVzRGF0YSBkYXRhKSAtPiAoKSBBc3luYwotICAgIERpZENoYW5nZUlzUGxh
eWluZyhib29sIGlzUGxheWluZykKLQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJlcXVlc3RC
dWZmZXIoZG91YmxlIHNhbXBsZVRpbWUsIHVpbnQ2NF90IGhvc3RUaW1lLCB1aW50NjRfdCBudW1i
ZXJPZkZyYW1lcykgLT4gKHVpbnQ2NF90IHN0YXJ0RnJhbWUsIHVpbnQ2NF90IG51bWJlck9mRnJh
bWVzVG9SZW5kZXIsIHVpbnQ2NF90IGJvdW5kc1N0YXJ0RnJhbWUsIHVpbnQ2NF90IGJvdW5kc0Vu
ZEZyYW1lKSBBc3luYworI2VuZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIuY3BwCmluZGV4IDg3OTlmMTk4NDcxNC4uMmUwYTZiMWY4MzkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9BdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnB1c2hTYW1wbGVzKGNvbnN0IE1l
ZGlhVGltZSYgdGltZSwgY29uc3QgV2ViCiAKICAgICAgICAgLy8gQWxsb2NhdGUgYSByaW5nIGJ1
ZmZlciBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiAyIHNlY29uZHMgb2YgYXVkaW8uCiAgICAgICAg
IG1fbnVtYmVyT2ZGcmFtZXMgPSBtX2Rlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIDI7Ci0gICAg
ICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUobV9kZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlv
bigpLCBtX251bWJlck9mRnJhbWVzKTsKKyAgICAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZSht
X2Rlc2NyaXB0aW9uLCBtX251bWJlck9mRnJhbWVzKTsKICAgICB9CiAKICAgICBBU1NFUlQoaXM8
V2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0PihhdWRpb0RhdGEpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>