<?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>202647</bug_id>
          
          <creation_ts>2019-10-07 12:29:15 -0700</creation_ts>
          <short_desc>[Clipboard API] Refactor Pasteboard item reading functions to work on both iOS and macOS</short_desc>
          <delta_ts>2019-10-09 18:48:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1577433</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-07 12:29:15 -0700</bug_when>
    <thetext>These functions are currently only defined on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577981</commentid>
    <comment_count>1</comment_count>
      <attachid>380470</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-08 15:29:27 -0700</bug_when>
    <thetext>Created attachment 380470
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577999</commentid>
    <comment_count>2</comment_count>
      <attachid>380475</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-08 16:10:57 -0700</bug_when>
    <thetext>Created attachment 380475
WIP: Try to fix GTK/WPE builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578017</commentid>
    <comment_count>3</comment_count>
      <attachid>380479</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-08 16:50:42 -0700</bug_when>
    <thetext>Created attachment 380479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578023</commentid>
    <comment_count>4</comment_count>
      <attachid>380482</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-08 17:03:28 -0700</bug_when>
    <thetext>Created attachment 380482
WIP: Try to fix WPE build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578031</commentid>
    <comment_count>5</comment_count>
      <attachid>380484</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-08 17:37:38 -0700</bug_when>
    <thetext>Created attachment 380484
WIP: Try to fix WPE build again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578035</commentid>
    <comment_count>6</comment_count>
      <attachid>380487</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-08 17:52:47 -0700</bug_when>
    <thetext>Created attachment 380487
WIP: Try to fix WPE build again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578463</commentid>
    <comment_count>7</comment_count>
      <attachid>380487</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-10-09 17:10:43 -0700</bug_when>
    <thetext>Comment on attachment 380487
WIP: Try to fix WPE build again

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

&gt; Source/WebCore/platform/mac/PlatformPasteboardMac.mm:387
&gt; +static NSPasteboardType modernPasteboardTypeForWebSafeMIMEType(const String&amp; webSafeType)

Surely we have the MIME type strings somewhere and can use those</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578475</commentid>
    <comment_count>8</comment_count>
      <attachid>380487</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-09 17:38:06 -0700</bug_when>
    <thetext>Comment on attachment 380487
WIP: Try to fix WPE build again

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

Thanks for the review!

&gt;&gt; Source/WebCore/platform/mac/PlatformPasteboardMac.mm:387
&gt;&gt; +static NSPasteboardType modernPasteboardTypeForWebSafeMIMEType(const String&amp; webSafeType)
&gt; 
&gt; Surely we have the MIME type strings somewhere and can use those

Interestingly, I couldn’t find anything that exposes these strings as constants (though I could imagine them on MIMETypeRegistry or something similar. Perhaps functions in a MIMETypes:: namespace?)

For now, I’ll change these string constants to ASCIILiterals instead. I filed webkit.org/b/202776 to track exposing something on MIMETypeRegistry...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578476</commentid>
    <comment_count>9</comment_count>
      <attachid>380594</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-09 17:40:25 -0700</bug_when>
    <thetext>Created attachment 380594
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578487</commentid>
    <comment_count>10</comment_count>
      <attachid>380594</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-09 18:27:22 -0700</bug_when>
    <thetext>Comment on attachment 380594
Patch for landing

Clearing flags on attachment: 380594

Committed r250950: &lt;https://trac.webkit.org/changeset/250950&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578491</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-09 18:48:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/56139814&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380470</attachid>
            <date>2019-10-08 15:29:27 -0700</date>
            <delta_ts>2019-10-08 16:10:55 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-202647-20191008152926.patch</filename>
            <type>text/plain</type>
            <size>63415</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgyNGM2ZjZlOGI3Yjg0
Mzk1MmVmMDgxOTFiNDA1OTE2MDA3Yzk3My4uMmE0NTI1YjY0MjVhNmY5ZDQ2ODRhNGMwZGRiYzNk
M2U5YWVmYmU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE5LTEwLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkIGl0ZW0gcmVhZGluZyBmdW5jdGlvbnMgdG8gd29yayBv
biBib3RoIGlPUyBhbmQgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMjY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdJUCBwYXRjaC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6YWxs
UGFzdGVib2FyZEl0ZW1JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnBhc3RlYm9hcmRJdGVtSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpyZWFkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFVSTCk6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6bmFtZSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmg6CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OnBhdGhGb3JDb250ZW50VHlwZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmNvbnRlbnRUeXBlRm9ySGln
aGVzdEZpZGVsaXR5SXRlbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm86OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm86OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6ZmlsZUNvbnRlbnRTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1Q
YXN0ZWJvYXJkQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0
ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFJlc3Bl
Y3RpbmdVVElGaWRlbGl0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bW9kZXJu
UGFzdGVib2FyZFR5cGVGb3JXZWJTYWZlTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6d2Vi
U2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjpjb3VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjppdGVtQXRJbmRleCBjb25zdCk6CisKIDIwMTktMTAt
MDggIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXVtXUEVdIEZpeCBub24tdW5pZmllZCBidWlsZHMgYWZ0ZXIgcjI1MDQ4NgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAwZWFiMDQ3MGU0MmEyOGRjYzE2MGNhZGFiODYxNmJlODNiZmMyZmE4Li5kNjU4NDFmNmE1
YTM2ODVhMDRmNTRkMjRhYmJkNjk5ZjYwMTIzYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBA
CisyMDE5LTEwLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIFtDbGlwYm9hcmQgQVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkIGl0ZW0gcmVhZGluZyBm
dW5jdGlvbnMgdG8gd29yayBvbiBib3RoIGlPUyBhbmQgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjY0NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUCBwYXRjaC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRV
UkxGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5Ojp3cml0ZVVSTFRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6d3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXND
b3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFk
VVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTktMTAtMDggIEFkcmlhbiBQZXJleiBk
ZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIEZpeCBu
b24tdW5pZmllZCBidWlsZHMgYWZ0ZXIgcjI1MDQ4NgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IGIyNGVjMTQwYzg1MDY2YjMwOGIzZDJlN2NmNGI5M2M2MzkzZDZhZmEuLjlkNzA0NWQ2
OGU5ZTdkMjcyZjkyZTFkOTUzMzA2M2VjYzEwMGY3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOS0xMC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJkIEFQSV0gUmVmYWN0b3IgUGFz
dGVib2FyZCBpdGVtIHJlYWRpbmcgZnVuY3Rpb25zIHRvIHdvcmsgb24gYm90aCBpT1MgYW5kIG1h
Y09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI2
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAg
cGF0Y2guCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgp
OgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8p
OgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9ydGVkVHlw
ZUlkZW50aWZpZXJzKToKKwogMjAxOS0xMC0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBBZGQgSURMIGZvciByZXF1ZXN0SWRsZUNhbGxiYWNrCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAppbmRleCBhMDY5MmE4ZjdiN2QxODIwNjNlNTM3MGRiMzg5YjcyZDc5YmE4
YzliLi4wOTU3OTQzY2M0ZmViZTM5ZGQ3MGExMjhlZTZjNGY3MTgxYTYwMjFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTE5OCw2ICsxOTgsNyBAQCBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlw
ZVJlZ2lzdHJ5Q29jb2EubW0KIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLm1tCiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5t
bQogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCitwbGF0Zm9ybS9jb2NvYS9QbGF0
Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQubW0KIHBsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
c0NvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2EzYTli
ZGFlZjg3Mzk5YzA4ZjliM2ZiMzI3ZjBmNzVjODQ5NGU0Yy4uZDkyYjc2MmVmOTRkNTEwZjBmN2Q2
Yzg5YTA3MWE4N2VkZGEwNjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUxOTMsNiArMTUxOTMsNyBAQAogCQlGNDRFQkJE
QTFEQjVERDlEMDAyNzczMzQgLyogU3RhdGljUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDVDMjMxQjE5OTVCNzNCMDBBNkUyRTMgLyogQXhpc1Njcm9sbFNuYXBPZmZzZXRz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF4aXNTY3JvbGxTbmFw
T2Zmc2V0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUMyMzFDMTk5NUI3
M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0NjI4QTlFMjM0RDNCQkYwMEJDODg0QyAvKiBQbGF0Zm9ybVBhc3RlYm9h
cmRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRm
b3JtUGFzdGVib2FyZENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDY3
MjkyNTFFMERFNUFCMDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDc4NzU1MjE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xs
U25hcEFuaW1hdG9yU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ny
b2xsU25hcEFuaW1hdG9yU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3
ODc1NTMxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjcwOCw2ICsyMjcwOSw3IEBA
CiAJCQkJQTE4ODkwQUQxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyLmggKi8sCiAJCQkJQTE4ODkwQUMxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyLm1tICovLAogCQkJCTlCRUQyQ0FGMUY3Q0MwNjIwMDY2NjAxOCAv
KiBQYXN0ZWJvYXJkQ29jb2EubW0gKi8sCisJCQkJRjQ2MjhBOUUyMzREM0JCRjAwQkM4ODRDIC8q
IFBsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tICovLAogCQkJCTUyQjBENEJEMUM1N0ZEMUUwMDc3
Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCAqLywKIAkJCQlDREEyOUEwODFDQkQ5OUY0MDA5MDFDQ0Yg
LyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggKi8sCiAJCQkJQ0RBMjlBMEExQ0JEOUE3NDAw
OTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwCmluZGV4IDU1NWVjMjgyZTRiYjY2ZTVmOWQxMTEyMGI5NzYxYTcyNWVi
YzNmMzQuLjhmOWJhYjg0NTYxMGQwZjkxMDdkODIzMGRmMjNlZWYxZmIwMWMxNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC05OCw0ICs5OCwyOSBAQCBWZWN0b3I8
U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkQWxsU3RyaW5ncyhjb25zdCBTdHJpbmcmIHR5cGUpCiAK
ICNlbmRpZgogCitWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjphbGxQYXN0
ZWJvYXJkSXRlbUluZm8oKSBjb25zdAoreworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1lKCkpOwor
fQorCitQYXN0ZWJvYXJkSXRlbUluZm8gUGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1JbmZvKHNp
emVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBuYW1l
KCkpOworfQorCitTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUs
IG5hbWUoKSk7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCkpOworfQorCitVUkwgUGFzdGVib2Fy
ZDo6cmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpCit7CisgICAgcmV0dXJuIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKGluZGV4LCBuYW1lKCksIHRpdGxlKTsKK30KKwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuaAppbmRleCBmYjg2MGUxMzg0NTIxYTk4OTVjNDdhNTJiNDlhMjQzMmJhM2Zk
ODVhLi42OTg3ZWQyNTY1M2ZiNmM5YzY4YjNhMzdhZjc3NjA0YzA4YjY2OTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0yNjUsMTEgKzI2NSwxNiBAQCBwdWJsaWM6CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRDb2NvYVR5cGVB
c0ZpbGUoY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5TQXJyYXkg
KnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlwZXMoKTsKLSAgICBjb25zdCBTdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CiAgICAgbG9uZyBjaGFu
Z2VDb3VudCgpIGNvbnN0OwogICAgIGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiByZWFkQ3Vz
dG9tRGF0YSgpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjb25zdCBTdHJp
bmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CisjZWxzZQorICAg
IGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKyNl
bmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIENPTVB0cjxJRGF0YU9iamVjdD4gZGF0YU9i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YU9iamVjdDsgfQogICAgIHZvaWQgc2V0RXh0ZXJu
YWxEYXRhT2JqZWN0KElEYXRhT2JqZWN0Kik7CkBAIC0yNzksNiArMjg0LDEzIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHdyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYsIGNvbnN0IFVSTCYpOyAv
LyBGSVhNRTogTGF5ZXJpbmcgdmlvbGF0aW9uLgogI2VuZGlmCiAKKyAgICBWZWN0b3I8UGFzdGVi
b2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdDsKKyAgICBQYXN0ZWJv
YXJkSXRlbUluZm8gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CisKKyAg
ICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJp
bmcmIHRpdGxlKTsKKwogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJv
b2wgcmVzcGVjdHNVVElGaWRlbGl0aWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCmluZGV4IGQxZDIzMDhhZDk5NWFjZjljN2E1ZjUzZGVk
OWZkMmEwODBlZWNmNzUuLjNiMzk3YzM3MzRkMzJhMGZiNjBlNzAzMWVmOWQwYmM1YWI0ODMyYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCkBAIC02
NiwxOCArNjYsMjAgQEAgT3B0aW9uYWw8UHJlc2VudGF0aW9uU2l6ZT4gUHJlc2VudGF0aW9uU2l6
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm8g
ewogICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzRm9yRmlsZVVwbG9hZDsKLSAgICBWZWN0b3I8U3Ry
aW5nPiBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkOwotICAgIFZlY3RvcjxTdHJpbmc+IGNvbnRl
bnRUeXBlc0J5RmlkZWxpdHk7CisgICAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1UeXBlc0ZvckZp
bGVVcGxvYWQ7CisgICAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1UeXBlc0J5RmlkZWxpdHk7CiAg
ICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVOYW1lOwogICAgIFByZXNlbnRhdGlvblNpemUgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZTsKICAgICBib29sIGlzTm9uVGV4dFR5cGUgeyBmYWxzZSB9Owog
ICAgIGJvb2wgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQgeyBmYWxzZSB9Owor
ICAgIFZlY3RvcjxTdHJpbmc+IHdlYlNhZmVUeXBlc0J5RmlkZWxpdHk7CisgICAgaW50IGNoYW5n
ZUNvdW50IHsgMCB9OwogICAgIFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGUgeyBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlOjpV
bnNwZWNpZmllZCB9OwogCiAgICAgU3RyaW5nIHBhdGhGb3JDb250ZW50VHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQocGF0aHNGb3JGaWxlVXBsb2Fk
LnNpemUoKSA9PSBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLnNpemUoKSk7Ci0gICAgICAgIGF1
dG8gaW5kZXggPSBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLmZpbmQodHlwZSk7CisgICAgICAg
IEFTU0VSVChwYXRoc0ZvckZpbGVVcGxvYWQuc2l6ZSgpID09IHBsYXRmb3JtVHlwZXNGb3JGaWxl
VXBsb2FkLnNpemUoKSk7CisgICAgICAgIGF1dG8gaW5kZXggPSBwbGF0Zm9ybVR5cGVzRm9yRmls
ZVVwbG9hZC5maW5kKHR5cGUpOwogICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCiAgICAg
ICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xMDQsMTAgKzEwNiwxMCBAQCBzdHJ1Y3QgUGFzdGVi
b2FyZEl0ZW1JbmZvIHsKIAogICAgIFN0cmluZyBjb250ZW50VHlwZUZvckhpZ2hlc3RGaWRlbGl0
eUl0ZW0oKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRlbnRUeXBlc0ZvckZpbGVVcGxv
YWQuaXNFbXB0eSgpKQorICAgICAgICBpZiAocGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQuaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICByZXR1cm4gY29udGVu
dFR5cGVzRm9yRmlsZVVwbG9hZC5maXJzdCgpOworICAgICAgICByZXR1cm4gcGxhdGZvcm1UeXBl
c0ZvckZpbGVVcGxvYWQuZmlyc3QoKTsKICAgICB9CiAKICAgICBTdHJpbmcgcGF0aEZvckhpZ2hl
c3RGaWRlbGl0eUl0ZW0oKSBjb25zdApAQCAtMTI1LDcgKzEyNyw3IEBAIHN0cnVjdCBQYXN0ZWJv
YXJkSXRlbUluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgUGFzdGVib2FyZEl0
ZW1JbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8
IHBhdGhzRm9yRmlsZVVwbG9hZCA8PCBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkIDw8IGNvbnRl
bnRUeXBlc0J5RmlkZWxpdHkgPDwgc3VnZ2VzdGVkRmlsZU5hbWUgPDwgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSA8PCBpc05vblRleHRUeXBlIDw8IGNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxv
YWRDb250ZW50OworICAgIGVuY29kZXIgPDwgcGF0aHNGb3JGaWxlVXBsb2FkIDw8IHBsYXRmb3Jt
VHlwZXNGb3JGaWxlVXBsb2FkIDw8IHBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5IDw8IHN1Z2dlc3Rl
ZEZpbGVOYW1lIDw8IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPDwgaXNOb25UZXh0VHlwZSA8
PCBjb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudCA8PCB3ZWJTYWZlVHlwZXNCeUZp
ZGVsaXR5IDw8IGNoYW5nZUNvdW50OwogICAgIGVuY29kZXIuZW5jb2RlRW51bShwcmVmZXJyZWRQ
cmVzZW50YXRpb25TdHlsZSk7CiB9CiAKQEAgLTEzNiwxMCArMTM4LDEwIEBAIE9wdGlvbmFsPFBh
c3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYXRoc0ZvckZpbGVVcGxvYWQp
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZCkpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGVudFR5
cGVzQnlGaWRlbGl0eSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGxhdGZvcm1U
eXBlc0J5RmlkZWxpdHkpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVkRmlsZU5hbWUpKQpAQCAtMTU0LDYgKzE1
NiwxMiBAQCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVtSW5mbzo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
Y29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQpKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViU2FmZVR5cGVz
QnlGaWRlbGl0eSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5jaGFuZ2VDb3VudCkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQucHJlZmVycmVkUHJl
c2VudGF0aW9uU3R5bGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGRjMTZmMGZhMGM1
YTkwMTJjNjUyNWY1YTk1MzBmZTc2NTgxNTEzNjUuLjU2ZWVhYThlYmFlZjA0ZDI5M2RhNjE1ZGRj
M2FmN2Y1OWNmMDkzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRT
dHJhdGVneS5oCkBAIC00NiwxMiArNDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFzdGVib2Fy
ZChjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKLSAgICB2aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAg
IHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2aXJ0dWFsIFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBQYXN0ZWJvYXJkSXRlbUluZm8gaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZp
ZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC03Myw2ICs2NywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBsb25n
IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwogICAgIHZpcnR1YWwgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKICNlbmRpZgorICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFs
IFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgdmlydHVhbCBQYXN0ZWJvYXJk
SXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxQYXN0ZWJvYXJk
SXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CisgICAgdmlydHVhbCBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgPSAwOwogICAgIHZpcnR1YWwgbG9uZyB3cml0ZUN1
c3RvbURhdGEoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShMSUJX
UEUpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykgPSAw
OwotICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBy
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0
IFBhc3RlYm9hcmRXZWJDb250ZW50JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKSA9IDA7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgK
aW5kZXggZTAzMzE1MDk4ZTE1NWE5MjZmNzE5OGUyYzcyNmIzNzU3YzEyNDQyZi4uZGYwMzkzZTM1
ZmNhNWI3ZGIwMzQ2MzAzNzYwYWZlYzZhZGFhNmMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIFBMQVRG
T1JNKE1BQykKIE9CSkNfQ0xBU1MgTlNQYXN0ZWJvYXJkOworT0JKQ19DTEFTUyBOU1Bhc3RlYm9h
cmRJdGVtOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTksMTAgKzYw
LDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgVVNFKExJQldQRSkKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVBhc3RlYm9h
cmQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB0eXBlcyk7CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpOworICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbygp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgdW5pcXVlTmFtZSgpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2Fm
ZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUpOwpAQCAtOTAs
OSArOTEsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmlu
ZyhpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKGludCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6
ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
Y291bnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgbnVtYmVyT2ZGaWxlcygpIGNv
bnN0OwogCkBAIC0xMDksNiArMTEwLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBhbGxvd1JlYWRp
bmdVUkxBdEluZGV4KGNvbnN0IFVSTCYsIGludCBpbmRleCkgY29uc3Q7CiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtQXRJbmRleChzaXplX3Qg
aW5kZXgpIGNvbnN0OworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRy
PE5TUGFzdGVib2FyZD4gbV9wYXN0ZWJvYXJkOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggMjY0NzQ4MGJkYTcyYmYz
NjMzMmU1NDJmZTE3N2ZmYzI2OThmZjI4Ny4uYzBmYmE0YmVmMDc1MTVkZTRhZDI1NGI0MDM3MDdm
MTFiNWNiMTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFz
dGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQpAQCAtMTQ4LDcgKzE0OCw3IEBAIFBhc3RlYm9hcmQ6OkZpbGVDb250ZW50
U3RhdGUgUGFzdGVib2FyZDo6ZmlsZUNvbnRlbnRTdGF0ZSgpCiAgICAgICAgIC8vIElmIHRoZSBp
dGVtIGNhbid0IGJlIHRyZWF0ZWQgYXMgYW4gYXR0YWNobWVudCwgaXQncyB2ZXJ5IGxpa2VseSB0
aGF0IHRoZSBjb250ZW50IGJlaW5nIGRyb3BwZWQgaXMganVzdAogICAgICAgICAvLyBhbiBpbmxp
bmUgcGllY2Ugb2YgdGV4dCwgd2l0aCBubyBmaWxlcyBpbiB0aGUgcGFzdGVib2FyZCAoYW5kIHRo
ZXJlZm9yZSwgbm8gcmlzayBvZiBsZWFraW5nIGZpbGUgcGF0aHMKICAgICAgICAgLy8gdG8gd2Vi
IGNvbnRlbnQpLiBJbiBjYXNlcyBzdWNoIGFzIHRoZXNlLCB3ZSBzaG91bGQgbm90IHN1cHByZXNz
IERhdGFUcmFuc2ZlciBhY2Nlc3MuCi0gICAgICAgIGF1dG8gaXRlbXMgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhtX3Bh
c3RlYm9hcmROYW1lKTsKKyAgICAgICAgYXV0byBpdGVtcyA9IGFsbFBhc3RlYm9hcmRJdGVtSW5m
bygpOwogICAgICAgICBtYXlDb250YWluRmlsZVBhdGhzID0gaXRlbXMuc2l6ZSgpICE9IDEgfHwg
bm90Rm91bmQgIT0gaXRlbXMuZmluZE1hdGNoaW5nKFtdIChhdXRvJiBpdGVtKSB7CiAgICAgICAg
ICAgICByZXR1cm4gaXRlbS5jYW5CZVRyZWF0ZWRBc0F0dGFjaG1lbnRPckZpbGUoKSB8fCBpdGVt
LmlzTm9uVGV4dFR5cGUgfHwgaXRlbS5jb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVu
dDsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0OTU0MzNlYWNlOTY4
YjYzNjJmNmU1NmM0NGNkNTg4MzNkYWViYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQbGF0Zm9y
bVBhc3RlYm9hcmQuaCIKKworI2ltcG9ydCAiUGFzdGVib2FyZEl0ZW1JbmZvLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKQoreworICAgIFZlY3RvcjxQYXN0ZWJvYXJk
SXRlbUluZm8+IGl0ZW1JbmZvOworICAgIGludCBudW1iZXJPZkl0ZW1zID0gY291bnQoKTsKKyAg
ICBpdGVtSW5mby5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bWJlck9mSXRlbXMpOworICAgIGZv
ciAoTlNJbnRlZ2VyIGl0ZW1JbmRleCA9IDA7IGl0ZW1JbmRleCA8IG51bWJlck9mSXRlbXM7ICsr
aXRlbUluZGV4KQorICAgICAgICBpdGVtSW5mby51bmNoZWNrZWRBcHBlbmQoaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChpdGVtSW5kZXgpKTsKKyAgICByZXR1cm4gaXRlbUluZm87Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW0KaW5kZXggMDI3MWI5M2U3MDVjZTJjNDJkNjMyZmUyZGIyOWFhNDZlODM2ZDIz
OS4uZTFjZTJmMzRiNWMxNGJhMjg5NzdiOGI4MWU3ZDZkMmNjNjJiODQ2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTM1NSw3ICszNTUsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyLAogICAgICAgICAvLyBUcnkgdG8gcmVhZCBkYXRhIGZy
b20gZWFjaCB0eXBlIGlkZW50aWZpZXIgdGhhdCB0aGlzIHBhc3RlYm9hcmQgaXRlbSBzdXBwb3J0
cywgYW5kIFdlYktpdCBhbHNvIHJlY29nbml6ZXMuIFR5cGUgaWRlbnRpZmllcnMgYXJlCiAgICAg
ICAgIC8vIHJlYWQgaW4gb3JkZXIgb2YgZmlkZWxpdHksIGFzIHNwZWNpZmllZCBieSBlYWNoIHBh
c3RlYm9hcmQgaXRlbS4KICAgICAgICAgUmVhZGVyUmVzdWx0IHJlc3VsdCA9IFJlYWRlclJlc3Vs
dDo6RGlkTm90UmVhZFR5cGU7Ci0gICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGluZm8uY29udGVu
dFR5cGVzQnlGaWRlbGl0eSkgeworICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBpbmZvLnBsYXRm
b3JtVHlwZXNCeUZpZGVsaXR5KSB7CiAgICAgICAgICAgICBpZiAoIWlzVHlwZUFsbG93ZWRCeVJl
YWRpbmdQb2xpY3kodHlwZSwgcG9saWN5KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0KaW5kZXggZDhjNTZmOTVhYWEzZjM2ZmViZjE0MDNkMDk3YWE4YzdiNzFhNTUxZS4uOTE2
ZGFlYmQwYTI3ODBjOTM2M2QzNTU5ODVhOWI2MTJlZjQxZDEwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0xMTYs
MTcgKzExNiw5IEBAIHN0YXRpYyBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlIHBhc3Rl
Ym9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUoVUlQcmVmZXJyCiAKICNlbmRpZiAvLyBQQVNURUJP
QVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKLVZlY3RvcjxQ
YXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1J
bmZvKCkKK1Bhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIFZlY3RvcjxQYXN0ZWJvYXJkSXRl
bUluZm8+IGl0ZW1JbmZvOwotICAgIGZvciAoTlNJbnRlZ2VyIGl0ZW1JbmRleCA9IDA7IGl0ZW1J
bmRleCA8IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc107ICsraXRlbUluZGV4KQotICAgICAg
ICBpdGVtSW5mby5hcHBlbmQoaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpdGVtSW5kZXgpKTsK
LSAgICByZXR1cm4gaXRlbUluZm87Ci19Ci0KLVBhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4KQotewotICAgIGlm
IChpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdKQorICAgIGlmIChpbmRleCA+
PSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdKSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvOwpAQCAt
MTQwLDE1ICsxMzIsMTUgQEAgUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIGZvciAoTlNVUkwg
KnVybCBpbiB1cmxzKQogICAgICAgICAgICAgaW5mby5wYXRoc0ZvckZpbGVVcGxvYWQudW5jaGVj
a2VkQXBwZW5kKHVybC5wYXRoKTsKIAotICAgICAgICBpbmZvLmNvbnRlbnRUeXBlc0ZvckZpbGVV
cGxvYWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmaWxlVHlwZXMuY291bnQpOworICAgICAgICBp
bmZvLnBsYXRmb3JtVHlwZXNGb3JGaWxlVXBsb2FkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZmls
ZVR5cGVzLmNvdW50KTsKICAgICAgICAgZm9yIChOU1N0cmluZyAqZmlsZVR5cGUgaW4gZmlsZVR5
cGVzKQotICAgICAgICAgICAgaW5mby5jb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLnVuY2hlY2tl
ZEFwcGVuZChmaWxlVHlwZSk7CisgICAgICAgICAgICBpbmZvLnBsYXRmb3JtVHlwZXNGb3JGaWxl
VXBsb2FkLnVuY2hlY2tlZEFwcGVuZChmaWxlVHlwZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
TlNBcnJheSAqZmlsZVR5cGVzID0gaXRlbVByb3ZpZGVyLndlYl9maWxlVXBsb2FkQ29udGVudFR5
cGVzOwotICAgICAgICBpbmZvLmNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShmaWxlVHlwZXMuY291bnQpOworICAgICAgICBpbmZvLnBsYXRmb3JtVHlwZXNG
b3JGaWxlVXBsb2FkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZmlsZVR5cGVzLmNvdW50KTsKICAg
ICAgICAgaW5mby5wYXRoc0ZvckZpbGVVcGxvYWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmaWxl
VHlwZXMuY291bnQpOwogICAgICAgICBmb3IgKE5TU3RyaW5nICpmaWxlVHlwZSBpbiBmaWxlVHlw
ZXMpIHsKLSAgICAgICAgICAgIGluZm8uY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZC51bmNoZWNr
ZWRBcHBlbmQoZmlsZVR5cGUpOworICAgICAgICAgICAgaW5mby5wbGF0Zm9ybVR5cGVzRm9yRmls
ZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQoZmlsZVR5cGUpOwogICAgICAgICAgICAgaW5mby5wYXRo
c0ZvckZpbGVVcGxvYWQudW5jaGVja2VkQXBwZW5kKHsgfSk7CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNjgsOSArMTYwLDkgQEAgUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpCiAgICAgaW5mby5jb250YWluc0Zp
bGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudCA9IGl0ZW1Qcm92aWRlci53ZWJfY29udGFpbnNGaWxl
VVJMQW5kRmlsZVVwbG9hZENvbnRlbnQ7CiAgICAgaW5mby5zdWdnZXN0ZWRGaWxlTmFtZSA9IGl0
ZW1Qcm92aWRlci5zdWdnZXN0ZWROYW1lOwogICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnJlZ2lz
dGVyZWRUeXBlSWRlbnRpZmllcnMgPSBpdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVudGlm
aWVyczsKLSAgICBpbmZvLmNvbnRlbnRUeXBlc0J5RmlkZWxpdHkucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzLmNvdW50KTsKKyAgICBpbmZvLnBsYXRmb3Jt
VHlwZXNCeUZpZGVsaXR5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVnaXN0ZXJlZFR5cGVJZGVu
dGlmaWVycy5jb3VudCk7CiAgICAgZm9yIChOU1N0cmluZyAqdHlwZUlkZW50aWZpZXIgaW4gcmVn
aXN0ZXJlZFR5cGVJZGVudGlmaWVycykgewotICAgICAgICBpbmZvLmNvbnRlbnRUeXBlc0J5Rmlk
ZWxpdHkudW5jaGVja2VkQXBwZW5kKHR5cGVJZGVudGlmaWVyKTsKKyAgICAgICAgaW5mby5wbGF0
Zm9ybVR5cGVzQnlGaWRlbGl0eS51bmNoZWNrZWRBcHBlbmQodHlwZUlkZW50aWZpZXIpOwogICAg
ICAgICBDRlN0cmluZ1JlZiBjZlR5cGVJZGVudGlmaWVyID0gKENGU3RyaW5nUmVmKXR5cGVJZGVu
dGlmaWVyOwogICAgICAgICBpZiAoIVVUVHlwZUlzRGVjbGFyZWQoY2ZUeXBlSWRlbnRpZmllcikp
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE5MCwxNyArMTgyLDE0IEBAIFBhc3RlYm9hcmRJ
dGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50
IGluZGV4KQogICAgICAgICBpbmZvLmlzTm9uVGV4dFR5cGUgPSB0cnVlOwogICAgIH0KIAorICAg
IGluZm8uY2hhbmdlQ291bnQgPSBjaGFuZ2VDb3VudCgpOworCiAgICAgcmV0dXJuIGluZm87CiB9
CiAKICNlbHNlCiAKLVBhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50KQotewotICAgIHJldHVybiB7IH07Ci19Ci0KLVZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0
ZW1JbmZvKCkKK1Bhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90KQogewogICAgIHJldHVybiB7IH07CiB9CkBAIC02NTYs
NyArNjQ1LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxTdHJpbmdz
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ3M7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU0luZGV4U2V0ICppbmRleFNldCA9IFtOU0luZGV4U2V0
IGluZGV4U2V0V2l0aEluZGV4OmluZGV4XTsKIApAQCAtNjY3LDcgKzY1Niw3IEBAIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgdHlwCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJv
YXJkSXRlbS5nZXQoKSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAotU3RyaW5nIFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZFN0cmluZyhpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QK
K1N0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUgPT0gU3RyaW5nKGtVVFR5cGVV
UkwpKSB7CiAgICAgICAgIFN0cmluZyB0aXRsZTsKQEAgLTY5Nyw3ICs2ODYsNyBAQCBTdHJpbmcg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotVVJMIFBsYXRmb3JtUGFzdGVi
b2FyZDo6cmVhZFVSTChpbnQgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0CitVUkwgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3QK
IHsKICAgICBpZCB2YWx1ZSA9IFttX3Bhc3RlYm9hcmQgdmFsdWVzRm9yUGFzdGVib2FyZFR5cGU6
KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVSTCBpbkl0ZW1TZXQ6W05TSW5kZXhTZXQgaW5k
ZXhTZXRXaXRoSW5kZXg6aW5kZXhdXS5maXJzdE9iamVjdDsKICAgICBpZiAoIXZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMu
bW0KaW5kZXggMGNiMWRkOGI5MzBhMDY1YjdjMDgwMTVjYTJlMGNlNWRiZDViMmI0OS4uYzVhMTE5
NzJiNjI4MjQwMzI3YWY0ODdjNjg5MDJmZmYxNjZhZWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0zODQsNiAr
Mzg0LDExNiBAQCBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0U3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiBwYQogICAgIHJldHVybiBjaGFuZ2VDb3Vu
dCgpOwogfQogCitzdGF0aWMgTlNQYXN0ZWJvYXJkVHlwZSBtb2Rlcm5QYXN0ZWJvYXJkVHlwZUZv
cldlYlNhZmVNSU1FVHlwZShjb25zdCBTdHJpbmcmIHdlYlNhZmVUeXBlKQoreworICAgIGlmICh3
ZWJTYWZlVHlwZSA9PSAidGV4dC9wbGFpbiIpCisgICAgICAgIHJldHVybiBOU1Bhc3RlYm9hcmRU
eXBlU3RyaW5nOworICAgIGlmICh3ZWJTYWZlVHlwZSA9PSAidGV4dC9odG1sIikKKyAgICAgICAg
cmV0dXJuIE5TUGFzdGVib2FyZFR5cGVIVE1MOworICAgIGlmICh3ZWJTYWZlVHlwZSA9PSAidGV4
dC91cmktbGlzdCIpCisgICAgICAgIHJldHVybiBOU1Bhc3RlYm9hcmRUeXBlVVJMOworICAgIGlm
ICh3ZWJTYWZlVHlwZSA9PSAiaW1hZ2UvcG5nIikKKyAgICAgICAgcmV0dXJuIE5TUGFzdGVib2Fy
ZFR5cGVQTkc7CisgICAgcmV0dXJuIG5pbDsKK30KKworZW51bSBjbGFzcyBDb250YWluc0ZpbGVV
UkwgeyBObywgWWVzIH07CitzdGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBh
c3RlYm9hcmRUeXBlKE5TUGFzdGVib2FyZFR5cGUgcGxhdGZvcm1UeXBlLCBDb250YWluc0ZpbGVV
UkwgY29udGFpbnNGaWxlVVJMKQoreworICAgIGlmIChbcGxhdGZvcm1UeXBlIGlzRXF1YWw6TlNQ
YXN0ZWJvYXJkVHlwZVN0cmluZ10gJiYgY29udGFpbnNGaWxlVVJMID09IENvbnRhaW5zRmlsZVVS
TDo6Tm8pCisgICAgICAgIHJldHVybiAidGV4dC9wbGFpbiI7CisgICAgaWYgKFtwbGF0Zm9ybVR5
cGUgaXNFcXVhbDpOU1Bhc3RlYm9hcmRUeXBlSFRNTF0gfHwgW3BsYXRmb3JtVHlwZSBpc0VxdWFs
Ok5TUGFzdGVib2FyZFR5cGVSVEZdIHx8IFtwbGF0Zm9ybVR5cGUgaXNFcXVhbDpOU1Bhc3RlYm9h
cmRUeXBlUlRGRF0pCisgICAgICAgIHJldHVybiAidGV4dC9odG1sIjsKKyAgICBpZiAoW3BsYXRm
b3JtVHlwZSBpc0VxdWFsOk5TUGFzdGVib2FyZFR5cGVVUkxdICYmIGNvbnRhaW5zRmlsZVVSTCA9
PSBDb250YWluc0ZpbGVVUkw6Ok5vKQorICAgICAgICByZXR1cm4gInRleHQvdXJpLWxpc3QiOwor
ICAgIGlmIChbcGxhdGZvcm1UeXBlIGlzRXF1YWw6TlNQYXN0ZWJvYXJkVHlwZVBOR10gfHwgW3Bs
YXRmb3JtVHlwZSBpc0VxdWFsOk5TUGFzdGVib2FyZFR5cGVUSUZGXSkKKyAgICAgICAgcmV0dXJu
ICJpbWFnZS9wbmciOworICAgIHJldHVybiB7IH07Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKK3sKKyAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5k
ZXgoaW5kZXgpOworICAgIGlmICghaXRlbSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1
dG8gcGxhdGZvcm1UeXBlID0gbW9kZXJuUGFzdGVib2FyZFR5cGVGb3JXZWJTYWZlTUlNRVR5cGUo
dHlwZSk7CisgICAgaWYgKCFwbGF0Zm9ybVR5cGUpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnBsYXRmb3JtVHlwZV0p
IHsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7CisgICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgIH0KKworICAgIHJl
dHVybiBudWxscHRyOworfQorCitTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAoreworICAgIE5TUGFzdGVi
b2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CisgICAgaWYgKCFpdGVtKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBwbGF0Zm9ybVR5cGUgPSBtb2Rlcm5QYXN0ZWJv
YXJkVHlwZUZvcldlYlNhZmVNSU1FVHlwZSh0eXBlKTsKKyAgICBpZiAoIXBsYXRmb3JtVHlwZSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBbaXRlbSBzdHJpbmdGb3JUeXBlOnBs
YXRmb3JtVHlwZV07Cit9CisKK1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwoc2l6ZV90
IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdAoreworICAgIHRpdGxlID0gZW1wdHlTdHJpbmco
KTsKKworICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7Cisg
ICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgUmV0YWluUHRyPE5TVVJM
PiB1cmw7CisgICAgaWYgKGlkIHByb3BlcnR5TGlzdCA9IFtpdGVtIHByb3BlcnR5TGlzdEZvclR5
cGU6TlNQYXN0ZWJvYXJkVHlwZVVSTF0pCisgICAgICAgIHVybCA9IGFkb3B0TlMoW1tOU1VSTCBh
bGxvY10gaW5pdFdpdGhQYXN0ZWJvYXJkUHJvcGVydHlMaXN0OnByb3BlcnR5TGlzdCBvZlR5cGU6
TlNQYXN0ZWJvYXJkVHlwZVVSTF0pOworICAgIGVsc2UgaWYgKE5TU3RyaW5nICphYnNvbHV0ZVN0
cmluZyA9IFtpdGVtIHN0cmluZ0ZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVVSTF0pCisgICAgICAg
IHVybCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOmFic29sdXRlU3RyaW5nXTsKKyAgICByZXR1cm4g
eyBbdXJsIGlzRmlsZVVSTF0gPyBuaWwgOiB1cmwuZ2V0KCkgfTsKK30KKworaW50IFBsYXRmb3Jt
UGFzdGVib2FyZDo6Y291bnQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIHBh
c3RlYm9hcmRJdGVtc10uY291bnQ7Cit9CisKK1Bhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4KQoreworICAg
IE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CisgICAgaWYgKCFp
dGVtKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm87
CisgICAgTlNBcnJheTxOU1Bhc3RlYm9hcmRUeXBlPiAqcGxhdGZvcm1UeXBlcyA9IFtpdGVtIHR5
cGVzXTsKKyAgICBhdXRvIGNvbnRhaW5zRmlsZVVSTCA9IFtwbGF0Zm9ybVR5cGVzIGNvbnRhaW5z
T2JqZWN0Ok5TUGFzdGVib2FyZFR5cGVGaWxlVVJMXSA/IENvbnRhaW5zRmlsZVVSTDo6WWVzIDog
Q29udGFpbnNGaWxlVVJMOjpObzsKKyAgICBMaXN0SGFzaFNldDxTdHJpbmc+IHdlYlNhZmVUeXBl
czsKKyAgICBpbmZvLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkocGxhdGZvcm1UeXBlcy5jb3VudCk7CisgICAgZm9yIChOU1Bhc3RlYm9hcmRUeXBlIHR5cGUg
aW4gcGxhdGZvcm1UeXBlcykgeworICAgICAgICBpbmZvLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5
LnVuY2hlY2tlZEFwcGVuZCh0eXBlKTsKKyAgICAgICAgYXV0byB3ZWJTYWZlVHlwZSA9IHdlYlNh
ZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKHR5cGUsIGNvbnRhaW5zRmlsZVVSTCk7
CisgICAgICAgIGlmICh3ZWJTYWZlVHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICB3ZWJTYWZlVHlwZXMuYWRkKFdURk1vdmUod2ViU2FmZVR5cGUpKTsKKyAg
ICB9CisgICAgaW5mby5jb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudCA9IGNvbnRh
aW5zRmlsZVVSTCA9PSBDb250YWluc0ZpbGVVUkw6OlllczsKKyAgICBpbmZvLndlYlNhZmVUeXBl
c0J5RmlkZWxpdHkgPSBjb3B5VG9WZWN0b3Iod2ViU2FmZVR5cGVzKTsKKyAgICBpbmZvLmNoYW5n
ZUNvdW50ID0gY2hhbmdlQ291bnQoKTsKKyAgICByZXR1cm4gaW5mbzsKK30KKworTlNQYXN0ZWJv
YXJkSXRlbSAqUGxhdGZvcm1QYXN0ZWJvYXJkOjppdGVtQXRJbmRleChzaXplX3QgaW5kZXgpIGNv
bnN0Cit7CisgICAgTlNBcnJheTxOU1Bhc3RlYm9hcmRJdGVtICo+ICppdGVtcyA9IFttX3Bhc3Rl
Ym9hcmQgcGFzdGVib2FyZEl0ZW1zXTsKKyAgICByZXR1cm4gaW5kZXggPj0gaXRlbXMuY291bnQg
PyBuaWwgOiBpdGVtc1tpbmRleF07Cit9CisKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0KaW5kZXggZGUzOTVkYTk2ZmNkYTk4MTdjMWUyNmU3ZDZlNWZkMzMzOTZm
M2JmMC4uMGExODE3NDQ1MTBlODNhOGYzMWJiNmExNWU2Y2VkNjIyNTRjZjI4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0KQEAgLTE4MCw0MSArMTgwLDM0IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3
cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmIGRhCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53
cml0ZShkYXRhKSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQotewotICAgIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUodXJsKTsKLX0KLQotdm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OndyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkV2ViQ29udGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3Zv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGNvbnRlbnQpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1J
bmZvKCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVJbWFnZVRvUGFzdGVi
b2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQYXN0ZWJvYXJkSXRlbUluZm8mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
bmRleCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUocGFzdGVib2FyZFR5cGUs
IHRleHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuY291bnQoKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmlu
ZyhpbmRleCwgcGFzdGVib2FyZFR5cGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6
OnJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYm
IHRpdGxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0
bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFN0cmluZyB0aXRsZTsKICAgICBTdHJp
bmcgdXJsID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4
LCB0aXRsZSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHRp
dGxlKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVt
b3J5OjpIYW5kbGUmJiwgdWludDY0X3Qgc2l6ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OkhhbmRsZSYmLCB1aW50
NjRfdCBzaXplKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZm
ZXIoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIzMSwxOSAr
MjI0LDI2IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGhhbmRsZSksIHNpemUpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlVVJMVG9Q
YXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmNvdW50KCkpOworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkud3JpdGUodXJsKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlV2ViQ29udGVudFRvUGFzdGVib2Fy
ZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpKTsKKyAgICBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGNvbnRlbnQpOwogfQogCi12
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UGFzdGVib2FyZEl0ZW1JbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CiB7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4KSk7CisgICAgUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOworfQorCit2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQoreworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3Jp
dGUocGFzdGVib2FyZFR5cGUsIHRleHQpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVu
dGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTI1MSw2ICsyNTEsNiBA
QCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZAogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkudXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzKTsKIH0K
IAotI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5
LmNwcAppbmRleCA3YmZmOTM0YmZkNjMxOTk0ZDU1NjJhODY5MzRhMTFiOTdjMjg0MWFjLi4yNWE0
ZGQ3MmQ1ZGI4NThjNTRhZDYxYTlhOWU5NWRjMmQxNzEwYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKQEAgLTI2LDkgKzI2LDExIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5LmgiCiAKKyNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPG11dGV4Pgor
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTczLDYgKzc1LDM2IEBAIHZvaWQg
V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGEmLCBjCiAgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7CiB9CiAKK3ZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworfQorCit2
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3Qs
IGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGFzdGVib2FyZEl0ZW1JbmZv
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChj
b25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKK30KKwordm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cit9CisK
K3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90LCBj
b25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5n
JiYgdGl0bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgeyB9KTsKK30KKwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpIYW5kbGUmJiwgdWludDY0X3Qgc2l6ZSk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKK30K
KwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAppbmRleCAwZTBlMjE1Njk1ODhjOGQ0NzA1Yzk3MWRj
MWJkM2JkYTg1MzE5MzFiLi40NjExYjA4OGUwMTg0NjkyY2NhMGM5NTBjYTYwMmNhZDQxZTJlNDdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAt
NzMsMTIgKzczLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlV2ViQ29udGVudFRvUGFzdGVi
b2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOwogICAgIHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVib2FyZChjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsK
ICAgICB2b2lkIHdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAg
IHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Ci0gICAgdm9pZCByZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYpOwotICAg
IHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYsIHVpbnQ2NF90IHNpemUpPiYm
KTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKLSAgICB2b2lk
IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYp
PiYmKTsKLSAgICB2b2lkIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlBhc3RlYm9hcmRJdGVtSW5mbyYmKT4mJik7CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBl
SWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTAx
LDYgKzk1LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKICNlbmRpZgogCisgICAgdm9pZCByZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmKT4mJik7CisgICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsKKyAgICB2b2lkIHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hh
cmVkTWVtb3J5OjpIYW5kbGUmJiwgdWludDY0X3Qgc2l6ZSk+JiYpOworICAgIHZvaWQgZ2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvJiYpPiYmKTsKKyAg
ICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8+JiYpPiYmKTsKKwogICAgIHZvaWQgd3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogICAgIHZvaWQgdHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwog
CkBAIC0xMTQsNyArMTE1LDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShMSUJXUEUpCiAgICAgdm9p
ZCBnZXRQYXN0ZWJvYXJkVHlwZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJik7Ci0gICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIHdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYpOwogICAgIHZvaWQgd3JpdGVTdHJp
bmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkM2VhM2JhNDI5Yzg3ZjU3Y2I4YzJhOTg0MTgz
NmQwZGM1ZGNhZWFkLi5iNDZiNzRiY2Y0M2UwNGI3MzM3YjMzMjk5NTljMDhkYTkwYjljNGZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yNiwxNyArMjYsMTcgQEAgbWVzc2FnZXMgLT4gV2ViUGFzdGVib2Fy
ZFByb3h5IHsKICAgICBXcml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRXZWJDb250ZW50IGNvbnRlbnQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICAg
ICBXcml0ZUltYWdlVG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2Ug
cGFzdGVib2FyZEltYWdlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpCiAgICAgV3JpdGVTdHJpbmdU
b1Bhc3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgdGV4dCwgU3RyaW5nIHBh
c3RlYm9hcmROYW1lKQotICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRl
eCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJp
bmcgc3RyaW5nKSBTeW5jaHJvbm91cwotICAgIFJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRf
dCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5nIHRp
dGxlKSBTeW5jaHJvbm91cwotICAgIFJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBp
bmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkgU3luY2hy
b25vdXMKLSAgICBHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUp
IC0+ICh1aW50NjRfdCBpdGVtc0NvdW50KSBTeW5jaHJvbm91cwotICAgIEFsbFBhc3RlYm9hcmRJ
dGVtSW5mbyhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiBhbGxJbmZvKSBTeW5jaHJvbm91cwotICAgIEluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHN0cnVj
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbykgU3luY2hyb25vdXMKICAgICBVcGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMsIFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSkKICNlbmRpZgogCiAgICAgV3JpdGVDdXN0b21EYXRhKHN0cnVj
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBkYXRhLCBTdHJpbmcgcGFzdGVib2FyZE5h
bWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMKICAgICBUeXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBvcmlnaW4p
IC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25vdXMKKyAgICBBbGxQYXN0ZWJvYXJk
SXRlbUluZm8oU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4gYWxsSW5mbykgU3luY2hyb25vdXMKKyAgICBJbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChzdHJ1
Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm8pIFN5bmNocm9ub3VzCisgICAgR2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3Qg
aXRlbXNDb3VudCkgU3luY2hyb25vdXMKKyAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWlu
dDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1l
KSAtPiAoU3RyaW5nIHN0cmluZykgU3luY2hyb25vdXMKKyAgICBSZWFkVVJMRnJvbVBhc3RlYm9h
cmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyB1cmws
IFN0cmluZyB0aXRsZSkgU3luY2hyb25vdXMKKyAgICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
dWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmRO
YW1lKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNp
emUpIFN5bmNocm9ub3VzCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAjIFBhc3RlYm9hcmQg
bWVzc2FnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGYxZmU0YjZi
MWYwMTkxNDQ2ZGQ4ZjgwNWIzZGQ5ZTAwOTMxMGFiZDguLjE1MjNkNmM1MzIzMzBjY2NmMmZiYjVm
MzZhMWI5ZDFlNGFiMzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBA
IC0yNDMsMjggKzI0Myw2IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldE51bWJlck9m
RmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICByZXR1cm4gbnVtYmVyT2ZG
aWxlczsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLXZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpXcml0ZVVSTFRvUGFzdGVib2FyZCh1cmwsIHBhc3RlYm9hcmROYW1lKSwgMCk7Ci19
Ci0KLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlV2Vi
Q29udGVudFRvUGFzdGVib2FyZChjb250ZW50LCBwYXN0ZWJvYXJkTmFtZSksIDApOwotfQotCi12
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZEltYWdlJiBpbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
LXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQoaW1hZ2UsIHBhc3RlYm9hcmROYW1lKSwgMCk7Ci19Ci0KLXZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChwYXN0
ZWJvYXJkVHlwZSwgdGV4dCwgcGFzdGVib2FyZE5hbWUpLCAwKTsKLX0KLQogaW50IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKIHsKICAgICB1aW50NjRfdCBpdGVtc0NvdW50IHsgMCB9OwpAQCAtMjc5LDE5
ICsyNTcsMTQgQEAgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3QKICAgICByZXR1cm4gYWxsSW5mbzsK
IH0KIAotUGFzdGVib2FyZEl0ZW1JbmZvIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CitQYXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
IHsKICAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJk
TmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXg6OlJlcGx5KGluZm8pLCAwKTsKICAgICByZXR1cm4gaW5mbzsKIH0KIAotdm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
Ci17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpVcGRhdGVTdXBwb3J0ZWRUeXBl
SWRlbnRpZmllcnMoaWRlbnRpZmllcnMsIHBhc3RlYm9hcmROYW1lKSwgMCk7Ci19Ci0KLVJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgdWlu
dDY0X3Qgc2l6ZSB7IDAgfTsKQEAgLTMwMiwxOSArMjc1LDQ2IEBAIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKGluCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKIH0KIAotVVJM
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKK1VSTCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCiB7CiAgICAgU3RyaW5nIHVy
bFN0cmluZzsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJv
bVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkOjpSZXBseSh1cmxTdHJpbmcsIHRpdGxlKSwg
MCk7CiAgICAgcmV0dXJuIFVSTCh7IH0sIHVybFN0cmluZyk7CiB9CiAKLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQogewogICAgIFN0cmluZyB2YWx1ZTsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9h
cmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCAwKTsKICAgICByZXR1cm4gdmFs
dWU7CiB9CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCit2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6V3JpdGVVUkxUb1Bhc3RlYm9hcmQodXJsLCBwYXN0ZWJvYXJkTmFtZSksIDApOworfQor
Cit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVdlYkNv
bnRlbnRUb1Bhc3RlYm9hcmQoY29udGVudCwgcGFzdGVib2FyZE5hbWUpLCAwKTsKK30KKwordm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRJbWFnZSYgaW1hZ2UsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZUltYWdlVG9QYXN0ZWJvYXJk
KGltYWdlLCBwYXN0ZWJvYXJkTmFtZSksIDApOworfQorCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQocGFzdGVi
b2FyZFR5cGUsIHRleHQsIHBhc3RlYm9hcmROYW1lKSwgMCk7Cit9CisKK3ZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorewor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGlkZW50aWZpZXJzLCBwYXN0ZWJvYXJkTmFtZSksIDApOworfQogI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKQEAgLTM0NSw3
ICszNDUsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBh
c3RlYm9hcmRUeXBlcygpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJv
YXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQogewogICAgIFN0cmluZyB2YWx1ZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKSwgTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkOjpSZXBs
eSh2YWx1ZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGY3ZjEwNDFk
ODk0MmNmZThiYTM3OTc3NmI1OTViOTdjZTkyZTI2OGMuLjg3NTZkYTA1NWUyNzY4ZDdmMGRkNWI2
MTAzZmFhMGYyNTVjMWJkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTUw
LDEyICs1MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBX
ZWJDb3JlOjogUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBp
bnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFVSTCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC04OCw2ICs4MiwxMiBA
QCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIFN0cmlu
ZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSkgb3ZlcnJpZGU7CisgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9h
cmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRvUmVh
ZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKSBvdmVycmlkZTsKICAgICBsb25nIHdyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZDE2MGE4Mzg2NTM4Mzc4ODE1YzI5MzMwYmQxODYx
NzMzNTgxZjcwNC4uOWYwMDM5OTAwNTlhZjQ0MjBjMDViYjdhM2MzYjk5OWZiOGMwMDZlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTUxLDE0ICs1MSwxNCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNv
bnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lk
IHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb1Bhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgaW50IGdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFN0
cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGlu
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3Zl
cnJpZGU7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAg
IFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGlu
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlk
ZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRp
ZgorICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBVUkwgcmVhZFVSTEZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlBh
c3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMo
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGY2NzcyMGUzOTVj
ZmZlMzAzMTBkODY0YmY5ODliZTJmY2ZhMmJjODcuLjk4ZDMyNGM1MmY2M2RlZTcyZmNhMWVkNWRi
ZWUwYzZiN2FjNTg3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTE3Myw2
MCArMTczLDYwIEBAIGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURhdGEo
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmCiAgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoZGF0YSk7CiB9CiAKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3Rl
Ym9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQorV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53
cml0ZSh1cmwpOworICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgpOwogfQogCi12b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdl
YkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitWZWN0b3I8
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoY29udGVudCk7CisgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1J
bmZvKCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2Fy
ZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIGltYWdlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQoraW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGltYWdlKTsKKyAgICByZXR1cm4gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi12b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4dCk7CisgICAgcmV0dXJuIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7
CiB9CiAKLWludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQogewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkucmVhZFVSTChpbmRleCwgdGl0bGUpOwogfQogCi12b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVwZGF0ZVN1
cHBvcnRlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVycyk7CisgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmluZyhpbmRleCwgdHlwZSk7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK3Zv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJv
YXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlw
ZSk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwpOwog
fQogCi1VUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQordm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJl
YWRVUkwoaW5kZXgsIHRpdGxlKTsKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLndyaXRlKGNvbnRlbnQpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiBpbWFnZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGluZGV4LCB0eXBlKTsKKyAgICBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGltYWdlKTsKIH0KIAotVmVjdG9y
PFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxs
UGFzdGVib2FyZEl0ZW1JbmZvKCk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS53cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4dCk7CiB9CiAKLVdlYkNvcmU6OlBhc3RlYm9h
cmRJdGVtSW5mbyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7
Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChpbmRleCk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwogfQog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380475</attachid>
            <date>2019-10-08 16:10:57 -0700</date>
            <delta_ts>2019-10-08 16:50:41 -0700</delta_ts>
            <desc>WIP: Try to fix GTK/WPE builds</desc>
            <filename>bug-202647-20191008161056.patch</filename>
            <type>text/plain</type>
            <size>65030</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgyNGM2ZjZlOGI3Yjg0
Mzk1MmVmMDgxOTFiNDA1OTE2MDA3Yzk3My4uOWI3ZmU0ZTM1OWVjOTY3OGQ4ZTVkZjA5MmRkM2Ix
NjI1ZmRhMTA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE5LTEwLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlwYm9hcmQg
QVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkIGl0ZW0gcmVhZGluZyBmdW5jdGlvbnMgdG8gd29yayBv
biBib3RoIGlPUyBhbmQgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMjY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdJUCBwYXRjaC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6YWxs
UGFzdGVib2FyZEl0ZW1JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnBhc3RlYm9hcmRJdGVtSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpyZWFkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFVSTCk6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6bmFtZSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmg6CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OnBhdGhGb3JDb250ZW50VHlwZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmNvbnRlbnRUeXBlRm9ySGln
aGVzdEZpZGVsaXR5SXRlbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm86OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm86OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6ZmlsZUNvbnRlbnRTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1Q
YXN0ZWJvYXJkQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0
ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFJlc3Bl
Y3RpbmdVVElGaWRlbGl0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9saWJ3cGUvUGxhdGZvcm1QYXN0ZWJvYXJkTGliV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vZGVy
blBhc3RlYm9hcmRUeXBlRm9yV2ViU2FmZU1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ondl
YlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6Y291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6aXRlbUF0SW5kZXggY29uc3QpOgorCiAyMDE5LTEw
LTA4ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS11bV1BFXSBGaXggbm9uLXVuaWZpZWQgYnVpbGRzIGFmdGVyIHIyNTA0ODYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMGVhYjA0NzBlNDJhMjhkY2MxNjBjYWRhYjg2MTZiZTgzYmZjMmZhOC4uZDY1ODQxZjZh
NWEzNjg1YTA0ZjU0ZDI0YWJiZDY5OWY2MDEyM2MzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBA
QAorMjAxOS0xMC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ2xpcGJvYXJkIEFQSV0gUmVmYWN0b3IgUGFzdGVib2FyZCBpdGVtIHJlYWRpbmcg
ZnVuY3Rpb25zIHRvIHdvcmsgb24gYm90aCBpT1MgYW5kIG1hY09TCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI2NDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAgcGF0Y2guCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXND
b3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFk
VVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRQcm94eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OndyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1z
Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5
OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0
ZWJvYXJkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3Vw
cG9ydGVkVHlwZUlkZW50aWZpZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorCiAyMDE5LTEwLTA4ICBBZHJpYW4gUGVyZXog
ZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBGaXgg
bm9uLXVuaWZpZWQgYnVpbGRzIGFmdGVyIHIyNTA0ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCBiMjRlYzE0MGM4NTA2NmIzMDhiM2QyZTdjZjRiOTNjNjM5M2Q2YWZhLi45ZDcwNDVk
NjhlOWU3ZDI3MmY5MmUxZDk1MzMwNjNlY2MxMDBmN2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTktMTAtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NsaXBib2FyZCBBUEldIFJlZmFjdG9yIFBh
c3RlYm9hcmQgaXRlbSByZWFkaW5nIGZ1bmN0aW9ucyB0byB3b3JrIG9uIGJvdGggaU9TIGFuZCBt
YWNPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAy
NjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQ
IHBhdGNoLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZv
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyk6CisKIDIwMTktMTAtMDcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQWRkIElETCBmb3IgcmVxdWVzdElkbGVDYWxsYmFjawpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggYTA2OTJhOGY3YjdkMTgyMDYzZTUzNzBkYjM4OWI3MmQ3OWJh
OGM5Yi4uMDk1Nzk0M2NjNGZlYmUzOWRkNzBhMTI4ZWU2YzRmNzE4MWE2MDIxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CkBAIC0xOTgsNiArMTk4LDcgQEAgcGxhdGZvcm0vY29jb2EvTUlNRVR5
cGVSZWdpc3RyeUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbQogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIu
bW0KIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorcGxhdGZvcm0vY29jb2EvUGxh
dGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KIHBsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Lm1tCiBwbGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3NDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhM2E5
YmRhZWY4NzM5OWMwOGY5YjNmYjMyN2YwZjc1Yzg0OTRlNGMuLmQ5MmI3NjJlZjk0ZDUxMGYwZjdk
NmM4OWEwNzFhODdlZGRhMDY2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MTkzLDYgKzE1MTkzLDcgQEAKIAkJRjQ0RUJC
REExREI1REQ5RDAwMjc3MzM0IC8qIFN0YXRpY1JhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY1JhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjQ1QzIzMUIxOTk1QjczQjAwQTZFMkUzIC8qIEF4aXNTY3JvbGxTbmFwT2Zmc2V0
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBeGlzU2Nyb2xsU25h
cE9mZnNldHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDVDMjMxQzE5OTVC
NzNCMDBBNkUyRTMgLyogQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNDYyOEE5RTIzNEQzQkJGMDBCQzg4NEMgLyogUGxhdGZvcm1QYXN0ZWJv
YXJkQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0
Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ2
NzI5MjUxRTBERTVBQjAwQUNDM0Q4IC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3ODc1NTIxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9s
bFNuYXBBbmltYXRvclN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cm9sbFNuYXBBbmltYXRvclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
Nzg3NTUzMTk5ODNBRkYwMDI0QTI4NyAvKiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbFNuYXBBbmltYXRvclN0
YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI3MDgsNiArMjI3MDksNyBA
QAogCQkJCUExODg5MEFEMUFBMTNGMjUwMDI2QzMwMSAvKiBQYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlci5oICovLAogCQkJCUExODg5MEFDMUFBMTNGMjUwMDI2QzMwMSAvKiBQYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlci5tbSAqLywKIAkJCQk5QkVEMkNBRjFGN0NDMDYyMDA2NjYwMTgg
LyogUGFzdGVib2FyZENvY29hLm1tICovLAorCQkJCUY0NjI4QTlFMjM0RDNCQkYwMEJDODg0QyAv
KiBQbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbSAqLywKIAkJCQk1MkIwRDRCRDFDNTdGRDFFMDA3
N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggKi8sCiAJCQkJQ0RBMjlBMDgxQ0JEOTlGNDAwOTAxQ0NG
IC8qIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oICovLAogCQkJCUNEQTI5QTBBMUNCRDlBNzQw
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25Nb2RlbC5oICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmNwcAppbmRleCA1NTVlYzI4MmU0YmI2NmU1ZjlkMTExMjBiOTc2MWE3MjVl
YmMzZjM0Li44ZjliYWI4NDU2MTBkMGY5MTA3ZDgyMzBkZjIzZWVmMWZiMDFjMTRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtOTgsNCArOTgsMjkgQEAgVmVjdG9y
PFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEFsbFN0cmluZ3MoY29uc3QgU3RyaW5nJiB0eXBlKQog
CiAjZW5kaWYKIAorVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZDo6YWxsUGFz
dGVib2FyZEl0ZW1JbmZvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5hbGxQYXN0ZWJvYXJkSXRlbUluZm8obmFtZSgpKTsK
K30KKworUGFzdGVib2FyZEl0ZW1JbmZvIFBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJdGVtSW5mbyhz
aXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgbmFt
ZSgpKTsKK30KKworU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBl
LCBuYW1lKCkpOworfQorCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpKTsKK30KKworVVJMIFBhc3RlYm9h
cmQ6OnJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKQoreworICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRVUkxGcm9tUGFz
dGVib2FyZChpbmRleCwgbmFtZSgpLCB0aXRsZSk7Cit9CisKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmgKaW5kZXggZmI4NjBlMTM4NDUyMWE5ODk1YzQ3YTUyYjQ5YTI0MzJiYTNm
ZDg1YS4uNjk4N2VkMjU2NTNmYjZjOWM2OGIzYTM3YWY3NzYwNGMwOGI2Njk1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMjY1LDExICsyNjUsMTYgQEAgcHVibGljOgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN0YXRpYyBib29sIHNob3VsZFRyZWF0Q29jb2FUeXBl
QXNGaWxlKGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBOU0FycmF5
ICpzdXBwb3J0ZWRGaWxlVXBsb2FkUGFzdGVib2FyZFR5cGVzKCk7Ci0gICAgY29uc3QgU3RyaW5n
JiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXN0ZWJvYXJkTmFtZTsgfQogICAgIGxvbmcgY2hh
bmdlQ291bnQoKSBjb25zdDsKICAgICBjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgcmVhZEN1
c3RvbURhdGEoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY29uc3QgU3Ry
aW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXN0ZWJvYXJkTmFtZTsgfQorI2Vsc2UKKyAg
ICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9Cisj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTikKICAgICBDT01QdHI8SURhdGFPYmplY3Q+IGRhdGFP
YmplY3QoKSBjb25zdCB7IHJldHVybiBtX2RhdGFPYmplY3Q7IH0KICAgICB2b2lkIHNldEV4dGVy
bmFsRGF0YU9iamVjdChJRGF0YU9iamVjdCopOwpAQCAtMjc5LDYgKzI4NCwxMyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmLCBjb25zdCBVUkwmKTsg
Ly8gRklYTUU6IExheWVyaW5nIHZpb2xhdGlvbi4KICNlbmRpZgogCisgICAgVmVjdG9yPFBhc3Rl
Ym9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkgY29uc3Q7CisgICAgUGFzdGVi
b2FyZEl0ZW1JbmZvIHBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0OworCisg
ICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3Ry
aW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBi
b29sIHJlc3BlY3RzVVRJRmlkZWxpdGllcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaAppbmRleCBkMWQyMzA4YWQ5OTVhY2Y5YzdhNWY1M2Rl
ZDlmZDJhMDgwZWVjZjc1Li4zYjM5N2MzNzM0ZDMyYTBmYjYwZTcwMzFlZjlkMGJjNWFiNDgzMmMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaApAQCAt
NjYsMTggKzY2LDIwIEBAIE9wdGlvbmFsPFByZXNlbnRhdGlvblNpemU+IFByZXNlbnRhdGlvblNp
emU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZv
IHsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoc0ZvckZpbGVVcGxvYWQ7Ci0gICAgVmVjdG9yPFN0
cmluZz4gY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZDsKLSAgICBWZWN0b3I8U3RyaW5nPiBjb250
ZW50VHlwZXNCeUZpZGVsaXR5OworICAgIFZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVHlwZXNGb3JG
aWxlVXBsb2FkOworICAgIFZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5Owog
ICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlTmFtZTsKICAgICBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemU7CiAgICAgYm9vbCBpc05vblRleHRUeXBlIHsgZmFsc2UgfTsK
ICAgICBib29sIGNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50IHsgZmFsc2UgfTsK
KyAgICBWZWN0b3I8U3RyaW5nPiB3ZWJTYWZlVHlwZXNCeUZpZGVsaXR5OworICAgIGludCBjaGFu
Z2VDb3VudCB7IDAgfTsKICAgICBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlIHByZWZl
cnJlZFByZXNlbnRhdGlvblN0eWxlIHsgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6
VW5zcGVjaWZpZWQgfTsKIAogICAgIFN0cmluZyBwYXRoRm9yQ29udGVudFR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKHBhdGhzRm9yRmlsZVVwbG9h
ZC5zaXplKCkgPT0gY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZC5zaXplKCkpOwotICAgICAgICBh
dXRvIGluZGV4ID0gY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZC5maW5kKHR5cGUpOworICAgICAg
ICBBU1NFUlQocGF0aHNGb3JGaWxlVXBsb2FkLnNpemUoKSA9PSBwbGF0Zm9ybVR5cGVzRm9yRmls
ZVVwbG9hZC5zaXplKCkpOworICAgICAgICBhdXRvIGluZGV4ID0gcGxhdGZvcm1UeXBlc0ZvckZp
bGVVcGxvYWQuZmluZCh0eXBlKTsKICAgICAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQogICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMTA0LDEwICsxMDYsMTAgQEAgc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbyB7CiAKICAgICBTdHJpbmcgY29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxp
dHlJdGVtKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChjb250ZW50VHlwZXNGb3JGaWxlVXBs
b2FkLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKHBsYXRmb3JtVHlwZXNGb3JGaWxlVXBsb2FkLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgcmV0dXJuIGNvbnRl
bnRUeXBlc0ZvckZpbGVVcGxvYWQuZmlyc3QoKTsKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtVHlw
ZXNGb3JGaWxlVXBsb2FkLmZpcnN0KCk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBhdGhGb3JIaWdo
ZXN0RmlkZWxpdHlJdGVtKCkgY29uc3QKQEAgLTEyNSw3ICsxMjcsNyBAQCBzdHJ1Y3QgUGFzdGVi
b2FyZEl0ZW1JbmZvIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFBhc3RlYm9hcmRJ
dGVtSW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8
PCBwYXRoc0ZvckZpbGVVcGxvYWQgPDwgY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZCA8PCBjb250
ZW50VHlwZXNCeUZpZGVsaXR5IDw8IHN1Z2dlc3RlZEZpbGVOYW1lIDw8IHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUgPDwgaXNOb25UZXh0VHlwZSA8PCBjb250YWluc0ZpbGVVUkxBbmRGaWxlVXBs
b2FkQ29udGVudDsKKyAgICBlbmNvZGVyIDw8IHBhdGhzRm9yRmlsZVVwbG9hZCA8PCBwbGF0Zm9y
bVR5cGVzRm9yRmlsZVVwbG9hZCA8PCBwbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eSA8PCBzdWdnZXN0
ZWRGaWxlTmFtZSA8PCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplIDw8IGlzTm9uVGV4dFR5cGUg
PDwgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQgPDwgd2ViU2FmZVR5cGVzQnlG
aWRlbGl0eSA8PCBjaGFuZ2VDb3VudDsKICAgICBlbmNvZGVyLmVuY29kZUVudW0ocHJlZmVycmVk
UHJlc2VudGF0aW9uU3R5bGUpOwogfQogCkBAIC0xMzYsMTAgKzEzOCwxMCBAQCBPcHRpb25hbDxQ
YXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVtSW5mbzo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGF0aHNGb3JGaWxlVXBsb2Fk
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LmNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQpKQorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnBsYXRmb3JtVHlwZXNGb3JGaWxlVXBsb2FkKSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvbnRlbnRU
eXBlc0J5RmlkZWxpdHkpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBsYXRmb3Jt
VHlwZXNCeUZpZGVsaXR5KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnN1Z2dlc3RlZEZpbGVOYW1lKSkKQEAgLTE1NCw2ICsx
NTYsMTIgQEAgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkSXRlbUluZm86
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50KSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LndlYlNhZmVUeXBl
c0J5RmlkZWxpdHkpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuY2hhbmdlQ291bnQpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnByZWZlcnJlZFBy
ZXNlbnRhdGlvblN0eWxlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBkYzE2ZjBmYTBj
NWE5MDEyYzY1MjVmNWE5NTMwZmU3NjU4MTUxMzY1Li41NmVlYWE4ZWJhZWYwNGQyOTNkYTYxNWRk
YzNhZjdmNTljZjA5M2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaApAQCAtNDYsMTIgKzQ2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3
cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9h
cmQoY29uc3QgUGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7Ci0gICAgdmlydHVhbCBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAg
ICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7Ci0gICAgdmlydHVhbCBWZWN0
b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUGFzdGVib2FyZEl0ZW1JbmZvIGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlm
aWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogI2lmIFBM
QVRGT1JNKENPQ09BKQpAQCAtNzMsNiArNjcsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgbG9u
ZyBzZXRDb2xvcihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKICAgICB2aXJ0dWFsIGxvbmcgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7CiAjZW5kaWYKKyAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVh
bCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgPSAwOworICAgIHZpcnR1YWwgUGFzdGVib2Fy
ZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOworICAgIHZpcnR1YWwgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmlu
Zz4gdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pID0gMDsKICAgICB2aXJ0dWFsIGxvbmcgd3JpdGVD
dXN0b21EYXRhKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoTElC
V1BFKQogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpID0g
MDsKLSAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25z
dCBQYXN0ZWJvYXJkV2ViQ29udGVudCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJikgPSAw
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CmluZGV4IGUwMzMxNTA5OGUxNTVhOTI2ZjcxOThlMmM3MjZiMzc1N2MxMjQ0MmYuLmRmMDM5M2Uz
NWZjYTViN2RiMDM0NjMwMzc2MGFmZWM2YWRhYTZjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBQTEFU
Rk9STShNQUMpCiBPQkpDX0NMQVNTIE5TUGFzdGVib2FyZDsKK09CSkNfQ0xBU1MgTlNQYXN0ZWJv
YXJkSXRlbTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU5LDEwICs2
MCwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgUGxhdGZvcm1QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IFVTRShMSUJXUEUpCiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1QYXN0ZWJv
YXJkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gYWxs
UGFzdGVib2FyZEl0ZW1JbmZvKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEl0ZW1J
bmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4KTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMpOwogI2VuZGlmCisgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEl0ZW1J
bmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8o
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHVuaXF1ZU5hbWUoKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNh
ZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBkb21UeXBlKTsKQEAgLTkw
LDkgKzkxLDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3Qg
UGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJp
bmcoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChpbnQgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNp
emVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50
IGNvdW50KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IG51bWJlck9mRmlsZXMoKSBj
b25zdDsKIApAQCAtMTA5LDYgKzExMCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgYWxsb3dSZWFk
aW5nVVJMQXRJbmRleChjb25zdCBVUkwmLCBpbnQgaW5kZXgpIGNvbnN0OwogI2VuZGlmCiAKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbUF0SW5kZXgoc2l6ZV90
IGluZGV4KSBjb25zdDsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0
cjxOU1Bhc3RlYm9hcmQ+IG1fcGFzdGVib2FyZDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDI2NDc0ODBiZGE3MmJm
MzYzMzJlNTQyZmUxNzdmZmMyNjk4ZmYyODcuLmMwZmJhNGJlZjA3NTE1ZGU0YWQyNTRiNDAzNzA3
ZjExYjVjYjE2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
c3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0
ZWJvYXJkQ29jb2EubW0KQEAgLTE0OCw3ICsxNDgsNyBAQCBQYXN0ZWJvYXJkOjpGaWxlQ29udGVu
dFN0YXRlIFBhc3RlYm9hcmQ6OmZpbGVDb250ZW50U3RhdGUoKQogICAgICAgICAvLyBJZiB0aGUg
aXRlbSBjYW4ndCBiZSB0cmVhdGVkIGFzIGFuIGF0dGFjaG1lbnQsIGl0J3MgdmVyeSBsaWtlbHkg
dGhhdCB0aGUgY29udGVudCBiZWluZyBkcm9wcGVkIGlzIGp1c3QKICAgICAgICAgLy8gYW4gaW5s
aW5lIHBpZWNlIG9mIHRleHQsIHdpdGggbm8gZmlsZXMgaW4gdGhlIHBhc3RlYm9hcmQgKGFuZCB0
aGVyZWZvcmUsIG5vIHJpc2sgb2YgbGVha2luZyBmaWxlIHBhdGhzCiAgICAgICAgIC8vIHRvIHdl
YiBjb250ZW50KS4gSW4gY2FzZXMgc3VjaCBhcyB0aGVzZSwgd2Ugc2hvdWxkIG5vdCBzdXBwcmVz
cyBEYXRhVHJhbnNmZXIgYWNjZXNzLgotICAgICAgICBhdXRvIGl0ZW1zID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5hbGxQYXN0ZWJvYXJkSXRlbUluZm8obV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIGF1dG8gaXRlbXMgPSBhbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8oKTsKICAgICAgICAgbWF5Q29udGFpbkZpbGVQYXRocyA9IGl0ZW1zLnNpemUoKSAhPSAxIHx8
IG5vdEZvdW5kICE9IGl0ZW1zLmZpbmRNYXRjaGluZyhbXSAoYXV0byYgaXRlbSkgewogICAgICAg
ICAgICAgcmV0dXJuIGl0ZW0uY2FuQmVUcmVhdGVkQXNBdHRhY2htZW50T3JGaWxlKCkgfHwgaXRl
bS5pc05vblRleHRUeXBlIHx8IGl0ZW0uY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRl
bnQ7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDk1NDMzZWFjZTk2
OGI2MzYyZjZlNTZjNDRjZDU4ODMzZGFlYmM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTAsMCAr
MSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGxhdGZv
cm1QYXN0ZWJvYXJkLmgiCisKKyNpbXBvcnQgIlBhc3RlYm9hcmRJdGVtSW5mby5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1ZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3JtUGFz
dGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkKK3sKKyAgICBWZWN0b3I8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBpdGVtSW5mbzsKKyAgICBpbnQgbnVtYmVyT2ZJdGVtcyA9IGNvdW50KCk7Cisg
ICAgaXRlbUluZm8ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZkl0ZW1zKTsKKyAgICBm
b3IgKE5TSW50ZWdlciBpdGVtSW5kZXggPSAwOyBpdGVtSW5kZXggPCBudW1iZXJPZkl0ZW1zOyAr
K2l0ZW1JbmRleCkKKyAgICAgICAgaXRlbUluZm8udW5jaGVja2VkQXBwZW5kKGluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoaXRlbUluZGV4KSk7CisgICAgcmV0dXJuIGl0ZW1JbmZvOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tCmluZGV4IDAyNzFiOTNlNzA1Y2UyYzQyZDYzMmZlMmRiMjlhYTQ2ZTgzNmQy
MzkuLmUxY2UyZjM0YjVjMTRiYTI4OTc3YjhiODFlN2Q2ZDJjYzYyYjg0NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zNTUsNyArMzU1LDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwKICAgICAgICAgLy8gVHJ5IHRvIHJlYWQgZGF0YSBm
cm9tIGVhY2ggdHlwZSBpZGVudGlmaWVyIHRoYXQgdGhpcyBwYXN0ZWJvYXJkIGl0ZW0gc3VwcG9y
dHMsIGFuZCBXZWJLaXQgYWxzbyByZWNvZ25pemVzLiBUeXBlIGlkZW50aWZpZXJzIGFyZQogICAg
ICAgICAvLyByZWFkIGluIG9yZGVyIG9mIGZpZGVsaXR5LCBhcyBzcGVjaWZpZWQgYnkgZWFjaCBw
YXN0ZWJvYXJkIGl0ZW0uCiAgICAgICAgIFJlYWRlclJlc3VsdCByZXN1bHQgPSBSZWFkZXJSZXN1
bHQ6OkRpZE5vdFJlYWRUeXBlOwotICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBpbmZvLmNvbnRl
bnRUeXBlc0J5RmlkZWxpdHkpIHsKKyAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogaW5mby5wbGF0
Zm9ybVR5cGVzQnlGaWRlbGl0eSkgewogICAgICAgICAgICAgaWYgKCFpc1R5cGVBbGxvd2VkQnlS
ZWFkaW5nUG9saWN5KHR5cGUsIHBvbGljeSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tCmluZGV4IGQ4YzU2Zjk1YWFhM2YzNmZlYmYxNDAzZDA5N2FhOGM3YjcxYTU1MWUuLjkx
NmRhZWJkMGEyNzgwYzkzNjNkMzU1OTg1YTliNjEyZWY0MWQxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMTE2
LDE3ICsxMTYsOSBAQCBzdGF0aWMgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZSBwYXN0
ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlKFVJUHJlZmVycgogCiAjZW5kaWYgLy8gUEFTVEVC
T0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogCi1WZWN0b3I8
UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVt
SW5mbygpCitQYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBWZWN0b3I8UGFzdGVib2FyZEl0
ZW1JbmZvPiBpdGVtSW5mbzsKLSAgICBmb3IgKE5TSW50ZWdlciBpdGVtSW5kZXggPSAwOyBpdGVt
SW5kZXggPCBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdOyArK2l0ZW1JbmRleCkKLSAgICAg
ICAgaXRlbUluZm8uYXBwZW5kKGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaXRlbUluZGV4KSk7
Ci0gICAgcmV0dXJuIGl0ZW1JbmZvOwotfQotCi1QYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCkKLXsKLSAgICBp
ZiAoaW5kZXggPj0gW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkKKyAgICBpZiAoaW5kZXgg
Pj0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKQEAg
LTE0MCwxNSArMTMyLDE1IEBAIFBhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4KQogICAgICAgICBmb3IgKE5TVVJM
ICp1cmwgaW4gdXJscykKICAgICAgICAgICAgIGluZm8ucGF0aHNGb3JGaWxlVXBsb2FkLnVuY2hl
Y2tlZEFwcGVuZCh1cmwucGF0aCk7CiAKLSAgICAgICAgaW5mby5jb250ZW50VHlwZXNGb3JGaWxl
VXBsb2FkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZmlsZVR5cGVzLmNvdW50KTsKKyAgICAgICAg
aW5mby5wbGF0Zm9ybVR5cGVzRm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZp
bGVUeXBlcy5jb3VudCk7CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmZpbGVUeXBlIGluIGZpbGVU
eXBlcykKLSAgICAgICAgICAgIGluZm8uY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZC51bmNoZWNr
ZWRBcHBlbmQoZmlsZVR5cGUpOworICAgICAgICAgICAgaW5mby5wbGF0Zm9ybVR5cGVzRm9yRmls
ZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQoZmlsZVR5cGUpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IE5TQXJyYXkgKmZpbGVUeXBlcyA9IGl0ZW1Qcm92aWRlci53ZWJfZmlsZVVwbG9hZENvbnRlbnRU
eXBlczsKLSAgICAgICAgaW5mby5jb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoZmlsZVR5cGVzLmNvdW50KTsKKyAgICAgICAgaW5mby5wbGF0Zm9ybVR5cGVz
Rm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5jb3VudCk7CiAg
ICAgICAgIGluZm8ucGF0aHNGb3JGaWxlVXBsb2FkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZmls
ZVR5cGVzLmNvdW50KTsKICAgICAgICAgZm9yIChOU1N0cmluZyAqZmlsZVR5cGUgaW4gZmlsZVR5
cGVzKSB7Ci0gICAgICAgICAgICBpbmZvLmNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQudW5jaGVj
a2VkQXBwZW5kKGZpbGVUeXBlKTsKKyAgICAgICAgICAgIGluZm8ucGxhdGZvcm1UeXBlc0ZvckZp
bGVVcGxvYWQudW5jaGVja2VkQXBwZW5kKGZpbGVUeXBlKTsKICAgICAgICAgICAgIGluZm8ucGF0
aHNGb3JGaWxlVXBsb2FkLnVuY2hlY2tlZEFwcGVuZCh7IH0pOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTY4LDkgKzE2MCw5IEBAIFBhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4KQogICAgIGluZm8uY29udGFpbnNG
aWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQgPSBpdGVtUHJvdmlkZXIud2ViX2NvbnRhaW5zRmls
ZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50OwogICAgIGluZm8uc3VnZ2VzdGVkRmlsZU5hbWUgPSBp
dGVtUHJvdmlkZXIuc3VnZ2VzdGVkTmFtZTsKICAgICBOU0FycmF5PE5TU3RyaW5nICo+ICpyZWdp
c3RlcmVkVHlwZUlkZW50aWZpZXJzID0gaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRp
ZmllcnM7Ci0gICAgaW5mby5jb250ZW50VHlwZXNCeUZpZGVsaXR5LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkocmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycy5jb3VudCk7CisgICAgaW5mby5wbGF0Zm9y
bVR5cGVzQnlGaWRlbGl0eS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlZ2lzdGVyZWRUeXBlSWRl
bnRpZmllcnMuY291bnQpOwogICAgIGZvciAoTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyIGluIHJl
Z2lzdGVyZWRUeXBlSWRlbnRpZmllcnMpIHsKLSAgICAgICAgaW5mby5jb250ZW50VHlwZXNCeUZp
ZGVsaXR5LnVuY2hlY2tlZEFwcGVuZCh0eXBlSWRlbnRpZmllcik7CisgICAgICAgIGluZm8ucGxh
dGZvcm1UeXBlc0J5RmlkZWxpdHkudW5jaGVja2VkQXBwZW5kKHR5cGVJZGVudGlmaWVyKTsKICAg
ICAgICAgQ0ZTdHJpbmdSZWYgY2ZUeXBlSWRlbnRpZmllciA9IChDRlN0cmluZ1JlZil0eXBlSWRl
bnRpZmllcjsKICAgICAgICAgaWYgKCFVVFR5cGVJc0RlY2xhcmVkKGNmVHlwZUlkZW50aWZpZXIp
KQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xOTAsMTcgKzE4MiwxNCBAQCBQYXN0ZWJvYXJk
SXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGlu
dCBpbmRleCkKICAgICAgICAgaW5mby5pc05vblRleHRUeXBlID0gdHJ1ZTsKICAgICB9CiAKKyAg
ICBpbmZvLmNoYW5nZUNvdW50ID0gY2hhbmdlQ291bnQoKTsKKwogICAgIHJldHVybiBpbmZvOwog
fQogCiAjZWxzZQogCi1QYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCkKLXsKLSAgICByZXR1cm4geyB9OwotfQotCi1WZWN0
b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJ
dGVtSW5mbygpCitQYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCkKIHsKICAgICByZXR1cm4geyB9OwogfQpAQCAtNjU2
LDcgKzY0NSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5n
c0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIo
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgTlNJbmRleFNldCAqaW5kZXhTZXQgPSBbTlNJbmRleFNl
dCBpbmRleFNldFdpdGhJbmRleDppbmRleF07CiAKQEAgLTY2Nyw3ICs2NTYsNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cAogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVi
b2FyZEl0ZW0uZ2V0KCkgb2JqZWN0QXRJbmRleDowXSk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRTdHJpbmcoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
CitTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICh0eXBlID09IFN0cmluZyhrVVRUeXBl
VVJMKSkgewogICAgICAgICBTdHJpbmcgdGl0bGU7CkBAIC02OTcsNyArNjg2LDcgQEAgU3RyaW5n
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVVSTCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRVUkwoaW50IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdAorVVJMIFBsYXRm
b3JtUGFzdGVib2FyZDo6cmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0
CiB7CiAgICAgaWQgdmFsdWUgPSBbbV9wYXN0ZWJvYXJkIHZhbHVlc0ZvclBhc3RlYm9hcmRUeXBl
OihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVVUkwgaW5JdGVtU2V0OltOU0luZGV4U2V0IGlu
ZGV4U2V0V2l0aEluZGV4OmluZGV4XV0uZmlyc3RPYmplY3Q7CiAgICAgaWYgKCF2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybVBhc3RlYm9h
cmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3JtUGFz
dGVib2FyZExpYldQRS5jcHAKaW5kZXggMGZkYjc1ZGFmNjlkNThlNWRlMDFhMTRiMWU1ZWQ1YTdi
OGQ5NDdjZi4uZTU0MGMzNWQ1M2ZmYTQxMTMyMWI4ODE4YjJiZWE2MjA2YjU3NWI0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3JtUGFzdGVib2FyZExp
YldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3JtUGFz
dGVib2FyZExpYldQRS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB3cGVfcGFzdGVib2FyZF9z
dHJpbmdfdmVjdG9yX2ZyZWUoJnBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKLVN0cmluZyBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoaW50LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitT
dHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCwgY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAogewogICAgIHN0cnVjdCB3cGVfcGFzdGVib2FyZF9zdHJpbmcgc3RyaW5n
ID0geyBudWxscHRyLCAwIH07CiAgICAgd3BlX3Bhc3RlYm9hcmRfZ2V0X3N0cmluZyhtX3Bhc3Rl
Ym9hcmQsIHR5cGUudXRmOCgpLmRhdGEoKSwgJnN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCAwY2IxZGQ4
YjkzMGEwNjViN2MwODAxNWNhMmUwY2U1ZGJkNWIyYjQ5Li5jNWExMTk3MmI2MjgyNDAzMjdhZjQ4
N2M2ODkwMmZmZjE2NmFlYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTM4NCw2ICszODQsMTE2IEBAIGxvbmcg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBjb25zdCBTdHJpbmcmIHBhCiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CiB9CiAKK3N0YXRp
YyBOU1Bhc3RlYm9hcmRUeXBlIG1vZGVyblBhc3RlYm9hcmRUeXBlRm9yV2ViU2FmZU1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgd2ViU2FmZVR5cGUpCit7CisgICAgaWYgKHdlYlNhZmVUeXBlID09ICJ0
ZXh0L3BsYWluIikKKyAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVTdHJpbmc7CisgICAg
aWYgKHdlYlNhZmVUeXBlID09ICJ0ZXh0L2h0bWwiKQorICAgICAgICByZXR1cm4gTlNQYXN0ZWJv
YXJkVHlwZUhUTUw7CisgICAgaWYgKHdlYlNhZmVUeXBlID09ICJ0ZXh0L3VyaS1saXN0IikKKyAg
ICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVVUkw7CisgICAgaWYgKHdlYlNhZmVUeXBlID09
ICJpbWFnZS9wbmciKQorICAgICAgICByZXR1cm4gTlNQYXN0ZWJvYXJkVHlwZVBORzsKKyAgICBy
ZXR1cm4gbmlsOworfQorCitlbnVtIGNsYXNzIENvbnRhaW5zRmlsZVVSTCB7IE5vLCBZZXMgfTsK
K3N0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQ
YXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5cGUsIENvbnRhaW5zRmlsZVVSTCBjb250YWluc0ZpbGVV
UkwpCit7CisgICAgaWYgKFtwbGF0Zm9ybVR5cGUgaXNFcXVhbDpOU1Bhc3RlYm9hcmRUeXBlU3Ry
aW5nXSAmJiBjb250YWluc0ZpbGVVUkwgPT0gQ29udGFpbnNGaWxlVVJMOjpObykKKyAgICAgICAg
cmV0dXJuICJ0ZXh0L3BsYWluIjsKKyAgICBpZiAoW3BsYXRmb3JtVHlwZSBpc0VxdWFsOk5TUGFz
dGVib2FyZFR5cGVIVE1MXSB8fCBbcGxhdGZvcm1UeXBlIGlzRXF1YWw6TlNQYXN0ZWJvYXJkVHlw
ZVJURl0gfHwgW3BsYXRmb3JtVHlwZSBpc0VxdWFsOk5TUGFzdGVib2FyZFR5cGVSVEZEXSkKKyAg
ICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOworICAgIGlmIChbcGxhdGZvcm1UeXBlIGlzRXF1YWw6
TlNQYXN0ZWJvYXJkVHlwZVVSTF0gJiYgY29udGFpbnNGaWxlVVJMID09IENvbnRhaW5zRmlsZVVS
TDo6Tm8pCisgICAgICAgIHJldHVybiAidGV4dC91cmktbGlzdCI7CisgICAgaWYgKFtwbGF0Zm9y
bVR5cGUgaXNFcXVhbDpOU1Bhc3RlYm9hcmRUeXBlUE5HXSB8fCBbcGxhdGZvcm1UeXBlIGlzRXF1
YWw6TlNQYXN0ZWJvYXJkVHlwZVRJRkZdKQorICAgICAgICByZXR1cm4gImltYWdlL3BuZyI7Cisg
ICAgcmV0dXJuIHsgfTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAor
eworICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CisgICAg
aWYgKCFpdGVtKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBwbGF0Zm9ybVR5cGUg
PSBtb2Rlcm5QYXN0ZWJvYXJkVHlwZUZvcldlYlNhZmVNSU1FVHlwZSh0eXBlKTsKKyAgICBpZiAo
IXBsYXRmb3JtVHlwZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoTlNEYXRh
ICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6cGxhdGZvcm1UeXBlXSkgeworICAgICAgICBhdXRv
IG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK1N0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Cit7CisgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9
IGl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIWl0ZW0pCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBhdXRvIHBsYXRmb3JtVHlwZSA9IG1vZGVyblBhc3RlYm9hcmRUeXBlRm9yV2ViU2Fm
ZU1JTUVUeXBlKHR5cGUpOworICAgIGlmICghcGxhdGZvcm1UeXBlKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgcmV0dXJuIFtpdGVtIHN0cmluZ0ZvclR5cGU6cGxhdGZvcm1UeXBlXTsKK30K
KworVVJMIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYg
dGl0bGUpIGNvbnN0Cit7CisgICAgdGl0bGUgPSBlbXB0eVN0cmluZygpOworCisgICAgTlNQYXN0
ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIWl0ZW0pCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHVybDsKKyAgICBpZiAo
aWQgcHJvcGVydHlMaXN0ID0gW2l0ZW0gcHJvcGVydHlMaXN0Rm9yVHlwZTpOU1Bhc3RlYm9hcmRU
eXBlVVJMXSkKKyAgICAgICAgdXJsID0gYWRvcHROUyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFBh
c3RlYm9hcmRQcm9wZXJ0eUxpc3Q6cHJvcGVydHlMaXN0IG9mVHlwZTpOU1Bhc3RlYm9hcmRUeXBl
VVJMXSk7CisgICAgZWxzZSBpZiAoTlNTdHJpbmcgKmFic29sdXRlU3RyaW5nID0gW2l0ZW0gc3Ry
aW5nRm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlVVJMXSkKKyAgICAgICAgdXJsID0gW05TVVJMIFVS
TFdpdGhTdHJpbmc6YWJzb2x1dGVTdHJpbmddOworICAgIHJldHVybiB7IFt1cmwgaXNGaWxlVVJM
XSA/IG5pbCA6IHVybC5nZXQoKSB9OworfQorCitpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpjb3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZEl0ZW1zXS5j
b3VudDsKK30KKworUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpCit7CisgICAgTlNQYXN0ZWJvYXJkSXRl
bSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIWl0ZW0pCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKKyAgICBOU0FycmF5PE5T
UGFzdGVib2FyZFR5cGU+ICpwbGF0Zm9ybVR5cGVzID0gW2l0ZW0gdHlwZXNdOworICAgIGF1dG8g
Y29udGFpbnNGaWxlVVJMID0gW3BsYXRmb3JtVHlwZXMgY29udGFpbnNPYmplY3Q6TlNQYXN0ZWJv
YXJkVHlwZUZpbGVVUkxdID8gQ29udGFpbnNGaWxlVVJMOjpZZXMgOiBDb250YWluc0ZpbGVVUkw6
Ok5vOworICAgIExpc3RIYXNoU2V0PFN0cmluZz4gd2ViU2FmZVR5cGVzOworICAgIGluZm8ucGxh
dGZvcm1UeXBlc0J5RmlkZWxpdHkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwbGF0Zm9ybVR5cGVz
LmNvdW50KTsKKyAgICBmb3IgKE5TUGFzdGVib2FyZFR5cGUgdHlwZSBpbiBwbGF0Zm9ybVR5cGVz
KSB7CisgICAgICAgIGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkudW5jaGVja2VkQXBwZW5k
KHR5cGUpOworICAgICAgICBhdXRvIHdlYlNhZmVUeXBlID0gd2ViU2FmZU1JTUVUeXBlRm9yTW9k
ZXJuUGFzdGVib2FyZFR5cGUodHlwZSwgY29udGFpbnNGaWxlVVJMKTsKKyAgICAgICAgaWYgKHdl
YlNhZmVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHdl
YlNhZmVUeXBlcy5hZGQoV1RGTW92ZSh3ZWJTYWZlVHlwZSkpOworICAgIH0KKyAgICBpbmZvLmNv
bnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50ID0gY29udGFpbnNGaWxlVVJMID09IENv
bnRhaW5zRmlsZVVSTDo6WWVzOworICAgIGluZm8ud2ViU2FmZVR5cGVzQnlGaWRlbGl0eSA9IGNv
cHlUb1ZlY3Rvcih3ZWJTYWZlVHlwZXMpOworICAgIGluZm8uY2hhbmdlQ291bnQgPSBjaGFuZ2VD
b3VudCgpOworICAgIHJldHVybiBpbmZvOworfQorCitOU1Bhc3RlYm9hcmRJdGVtICpQbGF0Zm9y
bVBhc3RlYm9hcmQ6Oml0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBOU0Fy
cmF5PE5TUGFzdGVib2FyZEl0ZW0gKj4gKml0ZW1zID0gW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJk
SXRlbXNdOworICAgIHJldHVybiBpbmRleCA+PSBpdGVtcy5jb3VudCA/IG5pbCA6IGl0ZW1zW2lu
ZGV4XTsKK30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpp
bmRleCBkZTM5NWRhOTZmY2RhOTgxN2MxZTI2ZTdkNmU1ZmQzMzM5NmYzYmYwLi4wYTE4MTc0NDUx
MGU4M2E4ZjMxYmI2YTE1ZTZjZWQ2MjI1NGNmMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTgw
LDQxICsxODAsMzQgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGEKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGRhdGEpKTsKIH0K
IAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3
cml0ZVVSTFRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS53cml0ZSh1cmwpOwotfQotCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVXZWJD
b250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiBj
b250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkud3JpdGUoY29udGVudCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSk7CiB9CiAKLXZv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFBhc3RlYm9hcmRJdGVtSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHBhc3Rl
Ym9hcmRJbWFnZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4KSk7CiB9CiAKLXZv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1z
Q291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4dCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgp
KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGluZGV4LCBwYXN0ZWJv
YXJkVHlwZSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIFN0cmluZyB1cmwgPSBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRpdGxlKTsKICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVybCksIFdURk1vdmUodGl0bGUpKTsKIH0KIAotdm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OkhhbmRsZSYmLCB1
aW50NjRfdCBzaXplKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYsIHVpbnQ2NF90IHNpemUpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgcGFzdGVi
b2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjMxLDE5ICsyMjQsMjYgQEAgdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlKSwg
c2l6ZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQoY29uc3Qg
UGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAg
IGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291
bnQoKSk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwp
OwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6d3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkpOworICAgIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoY29udGVudCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQYXN0ZWJvYXJkSXRlbUlu
Zm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3Jp
dGVJbWFnZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIHBhc3Rl
Ym9hcmRJbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoaW5kZXgpKTsKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7Cisg
ICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlw
ZSwgdGV4dCk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtMjUxLDYgKzI1MSw2IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGlkCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS51cGRhdGVT
dXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwogfQogCi0jZW5kaWYKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCmluZGV4IDdiZmY5
MzRiZmQ2MzE5OTRkNTU2MmE4NjkzNGExMWI5N2MyODQxYWMuLjI1YTRkZDcyZDVkYjg1OGM1NGFk
NjFhOWE5ZTk1ZGMyZDE3MTBiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5LmNwcApAQCAtMjYsOSArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHkuaCIKIAorI2luY2x1ZGUgIlNoYXJlZE1l
bW9yeS5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNzMsNiArNzUsMzYgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYs
IGMKICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKIH0KIAordm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCwgY29uc3QgU3RyaW5nJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChQYXN0ZWJvYXJkSXRlbUluZm8mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKwordm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOworfQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKwordm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QsIGNvbnN0IFN0cmluZyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7IH0pOworfQor
Cit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVf
dCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
aGFyZWRNZW1vcnk6OkhhbmRsZSYmLCB1aW50NjRfdCBzaXplKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworfQorCiAjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYXN0ZWJvYXJkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eS5oCmluZGV4IDBlMGUyMTU2OTU4OGM4ZDQ3MDVjOTcxZGMxYmQzYmRhODUzMTkzMWIu
LjQ2MTFiMDg4ZTAxODQ2OTJjY2EwYzk1MGNhNjAyY2FkNDFlMmU0N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCkBAIC03MywxMiArNzMsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CiAgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIHZvaWQgd3JpdGVT
dHJpbmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgdm9pZCByZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nJiYpPiYmKTsKLSAgICB2b2lkIHJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJik7Ci0gICAgdm9pZCByZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U2hhcmVkTWVtb3J5OjpIYW5kbGUmJiwgdWludDY0X3Qgc2l6ZSk+JiYpOwotICAgIHZvaWQgZ2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgYWxsUGFzdGVib2FyZEl0
ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYpOwotICAgIHZvaWQg
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvJiYpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMDEsNiArOTUsMTMgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCk+JiYpOwogI2VuZGlmCiAKKyAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsK
KyAgICB2b2lkIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBT
dHJpbmcmJiB0aXRsZSk+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OkhhbmRs
ZSYmLCB1aW50NjRfdCBzaXplKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQ2NF90KT4mJik7CisgICAgdm9pZCBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8mJik+JiYpOworICAgIHZvaWQgYWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYpOworCiAg
ICAgdm9pZCB3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGEmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQ2NF90KT4mJik7CiAgICAgdm9pZCB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAKQEAgLTExNCw3ICsxMTUs
NyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKExJQldQRSkKICAgICB2b2lkIGdldFBhc3RlYm9hcmRU
eXBlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2
b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwor
ICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYp
OwogICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRXZWJDb250ZW50Jik7CiAgICAgdm9pZCB3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IGQzZWEzYmE0MjljODdmNTdjYjhjMmE5ODQxODM2ZDBkYzVkY2FlYWQuLmI0
NmI3NGJjZjQzZTA0YjczMzdiMzMyOTk1OWMwOGRhOTBiOWM0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KQEAg
LTI2LDE3ICsyNiwxNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXN0ZWJvYXJkUHJveHkgewogICAgIFdy
aXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNv
bnRlbnQgY29udGVudCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQogICAgIFdyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSBwYXN0ZWJvYXJkSW1hZ2Us
IFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICAgICBXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChTdHJp
bmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyB0ZXh0LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpCi0g
ICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVi
b2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyBzdHJpbmcpIFN5bmNo
cm9ub3VzCi0gICAgUmVhZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUpIFN5bmNocm9ub3Vz
Ci0gICAgUmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFz
dGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVt
b3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKSBTeW5jaHJvbm91cwotICAgIEdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90IGl0
ZW1zQ291bnQpIFN5bmNocm9ub3VzCi0gICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFs
bEluZm8pIFN5bmNocm9ub3VzCi0gICAgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCh1aW50NjRf
dCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoc3RydWN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbyBpbmZvKSBTeW5jaHJvbm91cwogICAgIFVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgU3RyaW5nIHBhc3RlYm9hcmRO
YW1lKQogI2VuZGlmCiAKICAgICBXcml0ZUN1c3RvbURhdGEoc3RydWN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhIGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90
IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cwogICAgIFR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdy
aXRlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIG9yaWdpbikgLT4gKFZlY3RvcjxTdHJp
bmc+IHR5cGVzKSBTeW5jaHJvbm91cworICAgIEFsbFBhc3RlYm9hcmRJdGVtSW5mbyhTdHJpbmcg
cGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBh
bGxJbmZvKSBTeW5jaHJvbm91cworICAgIEluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgodWludDY0
X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8gaW5mbykgU3luY2hyb25vdXMKKyAgICBHZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBpdGVtc0NvdW50KSBTeW5j
aHJvbm91cworICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3Ry
aW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgc3Ry
aW5nKSBTeW5jaHJvbm91cworICAgIFJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRl
eCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5nIHRpdGxlKSBT
eW5jaHJvbm91cworICAgIFJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwg
U3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkgU3luY2hyb25vdXMK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICMgUGFzdGVib2FyZCBtZXNzYWdlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjFmZTRiNmIxZjAxOTE0NDZkZDhmODA1
YjNkZDllMDA5MzEwYWJkOC4uNTdjNmY1OWNkMzcyNGE3MzQ2NjY2ZWQ5NDcxZGRiYzkyYzc1Mzkw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTI2NSw1NiArMjY1LDEw
IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSwgdGV4dCwgcGFzdGVi
b2FyZE5hbWUpLCAwKTsKIH0KIAotaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVi
b2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAgICB1aW50
NjRfdCBpdGVtc0NvdW50IHsgMCB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldFBhc3RlYm9hcmRJdGVtc0NvdW50KHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZEl0ZW1zQ291bnQ6OlJlcGx5KGl0ZW1zQ291
bnQpLCAwKTsKLSAgICByZXR1cm4gaXRlbXNDb3VudDsKLX0KLQotVmVjdG9yPFBhc3RlYm9hcmRJ
dGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAgICBWZWN0b3I8UGFzdGVib2FyZEl0ZW1J
bmZvPiBhbGxJbmZvOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5mbzo6UmVwbHkoYWxsSW5mbyksIDApOwotICAgIHJl
dHVybiBhbGxJbmZvOwotfQotCi1QYXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKLXsKLSAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGlu
ZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXg6OlJlcGx5KGluZm8pLCAwKTsKLSAgICByZXR1cm4gaW5mbzsK
LX0KLQogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpVcGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMsIHBhc3RlYm9hcmROYW1lKSwg
MCk7CiB9Ci0KLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAgICBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7Ci0gICAgdWludDY0X3Qgc2l6ZSB7IDAgfTsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXpl
KSwgMCk7Ci0gICAgaWYgKGhhbmRsZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVt
b3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAq
PihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOwotfQotCi1VUkwgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQotewotICAgIFN0cmluZyB1cmxTdHJp
bmc7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0
ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwot
ICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQotewotICAg
IFN0cmluZyB2YWx1ZTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFt
ZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZDo6UmVwbHkodmFsdWUpLCAwKTsKLSAgICByZXR1cm4gdmFsdWU7Ci19CiAjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpAQCAtMzQ1LDcg
KzI5OSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFz
dGVib2FyZFR5cGVzKCksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9h
cmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
CiB7CiAgICAgU3RyaW5nIHZhbHVlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQ6OlJlcGx5
KHZhbHVlKSwgMCk7CkBAIC0zNzgsNCArMzMyLDUwIEBAIGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEm
CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCitpbnQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQoreworICAgIHVpbnQ2NF90IGl0ZW1zQ291bnQgeyAwIH07CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZEl0ZW1zQ291bnQocGFzdGVib2FyZE5hbWUp
LCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudDo6
UmVwbHkoaXRlbXNDb3VudCksIDApOworICAgIHJldHVybiBpdGVtc0NvdW50OworfQorCitWZWN0
b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9h
cmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFZlY3RvcjxQ
YXN0ZWJvYXJkSXRlbUluZm8+IGFsbEluZm87CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6QWxsUGFzdGVib2FyZEl0ZW1JbmZvKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6QWxsUGFzdGVib2FyZEl0ZW1JbmZvOjpSZXBseShhbGxJbmZv
KSwgMCk7CisgICAgcmV0dXJuIGFsbEluZm87Cit9CisKK1Bhc3RlYm9hcmRJdGVtSW5mbyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFBhc3RlYm9hcmRJdGVtSW5m
byBpbmZvOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleDo6UmVwbHkoaW5mbyksIDApOwor
ICAgIHJldHVybiBpbmZvOworfQorCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCit7CisgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIHVpbnQ2NF90IHNp
emUgeyAwIH07CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpLCBN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJl
cGx5KGhhbmRsZSwgc2l6ZSksIDApOworICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1
ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKK30K
KworVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKK3sK
KyAgICBTdHJpbmcgdXJsU3RyaW5nOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHVybFN0
cmluZywgdGl0bGUpLCAwKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgdXJsU3RyaW5nKTsKK30KKwor
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKK3sKKyAgICBTdHJpbmcgdmFsdWU7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJv
YXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpS
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgMCk7CisgICAgcmV0dXJuIHZh
bHVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAppbmRleCBmN2YxMDQxZDg5NDJjZmU4YmEzNzk3NzZiNTk1Yjk3Y2U5MmUyNjhjLi44NzU2
ZGEwNTVlMjc2OGQ3ZjBkZDViNjEwM2ZhYTBmMjU1YzFiZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCkBAIC01MCwxMiArNTAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVU
b1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7Ci0gICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKLSAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFdl
YkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBl
SWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09B
KQpAQCAtODgsNiArODIsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
I2VuZGlmCiAKKyAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJl
YWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIGludCBnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFZlY3Rv
cjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiB0
eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIG9yaWdpbikgb3ZlcnJpZGU7CiAgICAgbG9uZyB3cml0ZUN1c3RvbURh
dGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGQxNjBhODM4NjUz
ODM3ODgxNWMyOTMzMGJkMTg2MTczMzU4MWY3MDQuLjlmMDAzOTkwMDU5YWY0NDIwYzA1YmI3YTNj
M2I5OTlmYjhjMDA2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01MSwxNCAr
NTEsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAg
ICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAg
IGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKLSAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgVVJMIHJlYWRV
UkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CiAjZW5kaWYKKyAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
CisgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIGludCBnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKKyAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OworICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJ
dGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBpbnQg
Z2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQppbmRleCBmNjc3MjBlMzk1Y2ZmZTMwMzEwZDg2NGJmOTg5YmUyZmNmYTJiYzg3Li45OGQzMjRj
NTJmNjNkZWU3MmZjYTFlZDVkYmVlMGM2YjdhYzU4NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCkBAIC0xNzMsNjAgKzE3Myw2MCBAQCBsb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhJgog
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGRhdGEp
OwogfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1dlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUodXJsKTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4KTsKIH0K
IAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQorVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRl
KGNvbnRlbnQpOworICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiBpbWFn
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShpbWFnZSk7
CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsK
IH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUocGFzdGVib2FyZFR5cGUsIHRl
eHQpOworICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRC
dWZmZXIoaW5kZXgsIHR5cGUpOwogfQogCi1pbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorVVJMIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICByZXR1
cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOworICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRpdGxl
KTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwor
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRTdHJpbmco
aW5kZXgsIHR5cGUpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3Rl
Ym9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJl
YWRCdWZmZXIoaW5kZXgsIHR5cGUpOworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkud3JpdGUodXJsKTsKIH0KIAotVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVS
TEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVi
b2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4LCB0aXRsZSk7CisgICAgUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShjb250ZW50KTsKIH0KIAotU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJbWFnZSYgaW1hZ2UsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmluZyhpbmRl
eCwgdHlwZSk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShp
bWFnZSk7CiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpOworICAgIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUocGFzdGVib2FyZFR5cGUsIHRleHQpOwogfQog
Ci1XZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgpOworICAgIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
KGlkZW50aWZpZXJzKTsKIH0KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380479</attachid>
            <date>2019-10-08 16:50:42 -0700</date>
            <delta_ts>2019-10-08 17:03:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202647-20191008165041.patch</filename>
            <type>text/plain</type>
            <size>70564</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgyNGM2ZjZlOGI3Yjg0
Mzk1MmVmMDgxOTFiNDA1OTE2MDA3Yzk3My4uZjMxYmEyOGE0MTc2YmE3MTFiYTQzYjRkMDEzN2Ey
ODEwOTY1ZTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxOS0xMC0wOCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJk
IEFQSV0gUmVmYWN0b3IgUGFzdGVib2FyZCBpdGVtIHJlYWRpbmcgZnVuY3Rpb25zIHRvIHdvcmsg
b24gYm90aCBpT1MgYW5kIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDI2NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlcyBzb21lIHBhc3RlYm9hcmQgaGVscGVyIGZ1bmN0aW9ucyBvdXQg
b2YgaU9TLXNwZWNpZmljIGNvZGUsIGFuZCBpbnRvIHBsYXRmb3JtLWFnbm9zdGljIGNvZGUuIFNl
ZSBiZWxvdyBmb3IKKyAgICAgICAgbW9yZSBkZXRhaWxzLiBUaGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IsIGFzIG5vdGhpbmcgZXhlcmNpc2VzIHRoZXNlIG5ldyBwYXN0ZWJvYXJkIGZ1bmN0
aW9ucyBvbiBtYWNPUyB5ZXQuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpwYXN0
ZWJvYXJkSXRlbUluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVh
ZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRVUkwpOgorCisgICAgICAgIEFkZCBzb21l
IG5ldyBoZWxwZXJzIG9uIFBhc3RlYm9hcmQgdG8gcmVhZCBTdHJpbmdzLCBkYXRhLCBhbmQgVVJM
cyBmcm9tIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLiBUaGVzZSBmb3J3YXJkCisgICAgICAgIHRv
IHRoZSBwbGF0Zm9ybSBzdHJhdGVneSB3aGljaCwgaW4gV2ViS2l0MiwgYXJlIGN1cnJlbnRseSBp
bXBsZW1lbnRlZCB1c2luZyBzeW5jIElQQywgYnV0IGNvdWxkIGJlIGNoYW5nZWQgaW4KKyAgICAg
ICAgdGhlIGZ1dHVyZSB0byBiZSBmdWxseSBhc3luY2hyb25vdXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpuYW1lIGNv
bnN0KToKKworICAgICAgICBFeHBvc2UgYSBjcm9zcy1wbGF0Zm9ybSBuYW1lKCkgZ2V0dGVyIG9u
IFBhc3RlYm9hcmQuIE9uIG5vbi1Db2NvYSBwbGF0Zm9ybXMsIHRoaXMgc2ltcGx5IHJldHVybnMg
dGhlIGVtcHR5CisgICAgICAgIHN0cmluZywgYnV0IG9uIG1hY09TIGFuZCBpT1MsIHRoaXMgcmV0
dXJucyB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZCBuYW1lLCB3aGljaCBpcyBzdG9yZWQgaW4gbV9w
YXN0ZWJvYXJkTmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5o
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpwYXRoRm9yQ29udGVudFR5
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpjb250ZW50
VHlwZUZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvOjpkZWNvZGUpOgorCisgICAgICAgIEFkZHMgYSBjb3VwbGUgb2YgbmV3IG1l
bWJlcnMgdG8gUGFzdGVib2FyZEl0ZW1JbmZvICh3aGljaCByZXByZXNlbnRzIG1ldGFkYXRhIGFi
b3V0IGEgZ2l2ZW4gaXRlbSBpbiB0aGUgcGxhdGZvcm0KKyAgICAgICAgcGFzdGVib2FyZCkuIFRo
ZXNlIGFyZSBjaGFuZ2VDb3VudCAod2hpY2ggaXMgc2VsZiBleHBsYW5hdG9yeSksIGFuZCB3ZWJT
YWZlVHlwZXNCeUZpZGVsaXR5LCB3aGljaCBpcyBhIGxpc3Qgb2YKKyAgICAgICAgdHlwZXMgaW4g
ZmlkZWxpdHkgb3JkZXIgd2hpY2ggY29udGFpbnMgdGhlIGxpc3Qgb2YgcGFzdGVib2FyZCB0eXBl
cyB0aGF0IGFyZSBzYWZlIHRvIGV4cG9zZSB0byBiaW5kaW5ncy4gVGhlc2UKKyAgICAgICAgbWF5
IGluY2x1ZGUgdHlwZXMgc3VjaCBhcyAidGV4dC9wbGFpbiIsICJ0ZXh0L2h0bWwiLCAidGV4dC91
cmktbGlzdCIsIGFuZCAiaW1hZ2UvcG5nIi4KKworICAgICAgICBUbyBkaXN0aW5ndWlzaCB0aGlz
IGxpc3QgZnJvbSB0aGUgZXhpc3RpbmcgY29udGVudFR5cGVzQnlGaWRlbGl0eSBsaXN0LCBJJ3Zl
IGFsc28gcmVuYW1lZCBjb250ZW50VHlwZXNCeUZpZGVsaXR5CisgICAgICAgIHRvIHBsYXRmb3Jt
VHlwZXNCeUZpZGVsaXR5LCB0byBtYWtlIGl0IG1vcmUgb2J2aW91cyB0aGF0IHRoaXMgb3RoZXIg
bGlzdCBvZiB0eXBlcyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMsIGFuZCBub3QKKyAgICAgICAgZ2Vu
ZXJhbGx5IHNhZmUgdG8gZXhwb3NlIHRvIHRoZSB3ZWIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKworICAgICAgICBNb3ZlIHNldmVyYWwgaGVscGVycyBvdXQgaW50byBwbGF0Zm9ybS1h
Z25vc3RpYyBjb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZmlsZUNvbnRlbnRTdGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW06IEFkZGVk
LgorCisgICAgICAgIEFkZCBhIG5ldyBmaWxlIHRvIGNvbnRhaW4gdGhlIGltcGxlbWVudGF0aW9u
IG9mIFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvLCB3aGljaCBpcyB0
aGUgc2FtZQorICAgICAgICBhY3Jvc3MgQ29jb2EgcGxhdGZvcm1zLgorCisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwgY29uc3QpOgorCisgICAgICAgIEFkZGl0
aW9uYWxseSByZWZhY3RvciBhbGwgbWV0aG9kcyBvbiBQbGF0Zm9ybVBhc3RlYm9hcmQgdGhhdCB0
YWtlIHBhc3RlYm9hcmQgaXRlbSBpbmRpY2VzIGFzIHNpZ25lZCBpbnRlZ2VycworICAgICAgICAo
YGludGApIHRvIHJlY2VpdmUgYHNpemVfdGAgdmFsdWVzIGluc3RlYWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybVBh
c3RlYm9hcmRMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkU3RyaW5nIGNvbnN0KToKKworICAgICAgICBBZGQgYW4gaW1wbGVtZW50YXRpb24gc3R1
YiBmb3IgV1BFLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vZGVyblBhc3RlYm9hcmRUeXBlRm9yV2ViU2FmZU1J
TUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OndlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3Rl
Ym9hcmRUeXBlKToKKworICAgICAgICBBZGQgaGVscGVycyB0byBjb252ZXJ0IGJldHdlZW4gbW9k
ZXJuIE5TUGFzdGVib2FyZFR5cGVzIGFuZCB3ZWItc2FmZSB0eXBlcy4gV2hpbGUgc29tZSBsb2dp
YyBleGlzdHMgdG9kYXkgb24KKyAgICAgICAgbWFjT1MgdG8gY29udmVydCBiZXR3ZWVuIGxlZ2Fj
eSBwYXN0ZWJvYXJkIHR5cGVzIGFuZCB3ZWItc2FmZSB0eXBlcywgY29udmVyc2lvbiBiZXR3ZWVu
IHRoZSBtb2Rlcm4gcGFzdGVib2FyZAorICAgICAgICB0eXBlcyBhbmQgd2ViLXNhZmUgdHlwZXMg
YXJlIG5lZWRlZCBzaW5jZSBOU1Bhc3RlYm9hcmRJdGVtJ3MgdHlwZXMgb25seSBzdXBwb3J0IE5T
UGFzdGVib2FyZFR5cGVzIGFuZAorICAgICAgICBkeW5hbWljYWxseSBkZWNsYXJlZCB0eXBlcyB0
aGF0IG1hdGNoIHRoZSBmb3JtYXQgb2YgYSB1bml2ZXJzYWwgdHlwZSBpZGVudGZpZXIgKGZvciBp
bnN0YW5jZSwgImNvbS5mb28uYmFyIikuCisKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6Y291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKworICAgICAgICBJbXBsZW1lbnQgYWxs
IG9mIHRoZXNlIGhlbHBlcnMgYnkgbG9va2luZyB1cCB0aGUgTlNQYXN0ZWJvYXJkSXRlbSBhdCB0
aGUgZ2l2ZW4gaXRlbSBpbmRleCBhbmQgcXVlcnlpbmcgaXQgZm9yCisgICAgICAgIGRhdGEgZm9y
IG5vbi1sZWdhY3kgcGFzdGVib2FyZCB0eXBlcy4KKworICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjppdGVtQXRJbmRleCBjb25zdCk6CisKIDIwMTktMTAtMDggIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVd
IEZpeCBub24tdW5pZmllZCBidWlsZHMgYWZ0ZXIgcjI1MDQ4NgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwZWFiMDQ3
MGU0MmEyOGRjYzE2MGNhZGFiODYxNmJlODNiZmMyZmE4Li5mMjE5YjYwMDIzMTM2MGNiMmI1YjFi
YmZkZGM0MDg0OWI4MmRkMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTEwLTA4
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlw
Ym9hcmQgQVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkIGl0ZW0gcmVhZGluZyBmdW5jdGlvbnMgdG8g
d29yayBvbiBib3RoIGlPUyBhbmQgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGlPUy1zcGVjaWZpYyBwYXN0ZWJvYXJkIGZ1bmN0
aW9ucyB0byBiZSBwbGF0Zm9ybS1hZ25vc3RpYy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFz
dGVib2FyZEl0ZW1JbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
c3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlV2ViQ29udGVudFRv
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVJ
bWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6
d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBh
c3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy93cGUvV2ViUGFzdGVib2FyZFByb3h5V1BFLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJv
bVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAx
OS0xMC0wOCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1dQRV0gRml4IG5vbi11bmlmaWVkIGJ1aWxkcyBhZnRlciByMjUwNDg2CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjI0ZWMxNDBjODUwNjZiMzA4YjNkMmU3Y2Y0
YjkzYzYzOTNkNmFmYS4uOWJmZmUzYmNiYjBmY2YyYzdkYzYyOGJhZWM0ZmIyNjgyZTMzNzNjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTA4
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlw
Ym9hcmQgQVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkIGl0ZW0gcmVhZGluZyBmdW5jdGlvbnMgdG8g
d29yayBvbiBib3RoIGlPUyBhbmQgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGlPUy1zcGVjaWZpYyBwYXN0ZWJvYXJkIGZ1bmN0
aW9ucyB0byBiZSBwbGF0Zm9ybS1hZ25vc3RpYy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRl
bUluZm8pOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9t
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzKToKKwogMjAxOS0xMC0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgSURMIGZvciByZXF1ZXN0SWRsZUNhbGxiYWNrCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMDY5MmE4ZjdiN2QxODIwNjNlNTM3MGRiMzg5Yjcy
ZDc5YmE4YzliLi4wOTU3OTQzY2M0ZmViZTM5ZGQ3MGExMjhlZTZjNGY3MTgxYTYwMjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE5OCw2ICsxOTgsNyBAQCBwbGF0Zm9ybS9jb2NvYS9N
SU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLm1tCiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbQogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCitwbGF0Zm9ybS9jb2Nv
YS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KIHBsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrc0NvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
N2EzYTliZGFlZjg3Mzk5YzA4ZjliM2ZiMzI3ZjBmNzVjODQ5NGU0Yy4uZDkyYjc2MmVmOTRkNTEw
ZjBmN2Q2Yzg5YTA3MWE4N2VkZGEwNjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUxOTMsNiArMTUxOTMsNyBAQAogCQlG
NDRFQkJEQTFEQjVERDlEMDAyNzczMzQgLyogU3RhdGljUmFuZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDVDMjMxQjE5OTVCNzNCMDBBNkUyRTMgLyogQXhpc1Njcm9sbFNuYXBP
ZmZzZXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF4aXNTY3Jv
bGxTbmFwT2Zmc2V0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUMyMzFD
MTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY0NjI4QTlFMjM0RDNCQkYwMEJDODg0QyAvKiBQbGF0Zm9ybVBh
c3RlYm9hcmRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFBsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDY3MjkyNTFFMERFNUFCMDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDc4NzU1MjE5OTgzQUZGMDAyNEEyODcgLyog
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQ3ODc1NTMxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjcwOCw2ICsyMjcw
OSw3IEBACiAJCQkJQTE4ODkwQUQxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLmggKi8sCiAJCQkJQTE4ODkwQUMxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tICovLAogCQkJCTlCRUQyQ0FGMUY3Q0MwNjIwMDY2
NjAxOCAvKiBQYXN0ZWJvYXJkQ29jb2EubW0gKi8sCisJCQkJRjQ2MjhBOUUyMzREM0JCRjAwQkM4
ODRDIC8qIFBsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tICovLAogCQkJCTUyQjBENEJEMUM1N0ZE
MUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCAqLywKIAkJCQlDREEyOUEwODFDQkQ5OUY0MDA5
MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggKi8sCiAJCQkJQ0RBMjlBMEExQ0JE
OUE3NDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDU1NWVjMjgyZTRiYjY2ZTVmOWQxMTEyMGI5NzYx
YTcyNWViYzNmMzQuLjhmOWJhYjg0NTYxMGQwZjkxMDdkODIzMGRmMjNlZWYxZmIwMWMxNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC05OCw0ICs5OCwyOSBAQCBW
ZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkQWxsU3RyaW5ncyhjb25zdCBTdHJpbmcmIHR5
cGUpCiAKICNlbmRpZgogCitWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjph
bGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdAoreworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1l
KCkpOworfQorCitQYXN0ZWJvYXJkSXRlbUluZm8gUGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1J
bmZvKHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4
LCBuYW1lKCkpOworfQorCitTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgs
IHR5cGUsIG5hbWUoKSk7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCit7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCkpOworfQorCitVUkwgUGFz
dGVib2FyZDo6cmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpCit7CisgICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFVSTEZy
b21QYXN0ZWJvYXJkKGluZGV4LCBuYW1lKCksIHRpdGxlKTsKK30KKwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBmYjg2MGUxMzg0NTIxYTk4OTVjNDdhNTJiNDlhMjQz
MmJhM2ZkODVhLi42OTg3ZWQyNTY1M2ZiNmM5YzY4YjNhMzdhZjc3NjA0YzA4YjY2OTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0yNjUsMTEgKzI2NSwxNiBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRDb2Nv
YVR5cGVBc0ZpbGUoY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5T
QXJyYXkgKnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlwZXMoKTsKLSAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CiAgICAgbG9u
ZyBjaGFuZ2VDb3VudCgpIGNvbnN0OwogICAgIGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBy
ZWFkQ3VzdG9tRGF0YSgpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjb25z
dCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CisjZWxz
ZQorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
IH0KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIENPTVB0cjxJRGF0YU9iamVjdD4g
ZGF0YU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YU9iamVjdDsgfQogICAgIHZvaWQgc2V0
RXh0ZXJuYWxEYXRhT2JqZWN0KElEYXRhT2JqZWN0Kik7CkBAIC0yNzksNiArMjg0LDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIHdyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYsIGNvbnN0IFVS
TCYpOyAvLyBGSVhNRTogTGF5ZXJpbmcgdmlvbGF0aW9uLgogI2VuZGlmCiAKKyAgICBWZWN0b3I8
UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdDsKKyAgICBQ
YXN0ZWJvYXJkSXRlbUluZm8gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7
CisKKyAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4
LCBTdHJpbmcmIHRpdGxlKTsKKwogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgcmVzcGVjdHNVVElGaWRlbGl0aWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCmluZGV4IGQxZDIzMDhhZDk5NWFjZjljN2E1
ZjUzZGVkOWZkMmEwODBlZWNmNzUuLjNiMzk3YzM3MzRkMzJhMGZiNjBlNzAzMWVmOWQwYmM1YWI0
ODMyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVt
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5o
CkBAIC02NiwxOCArNjYsMjAgQEAgT3B0aW9uYWw8UHJlc2VudGF0aW9uU2l6ZT4gUHJlc2VudGF0
aW9uU2l6ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKIHN0cnVjdCBQYXN0ZWJvYXJkSXRl
bUluZm8gewogICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzRm9yRmlsZVVwbG9hZDsKLSAgICBWZWN0
b3I8U3RyaW5nPiBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkOwotICAgIFZlY3RvcjxTdHJpbmc+
IGNvbnRlbnRUeXBlc0J5RmlkZWxpdHk7CisgICAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1UeXBl
c0ZvckZpbGVVcGxvYWQ7CisgICAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1UeXBlc0J5RmlkZWxp
dHk7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVOYW1lOwogICAgIFByZXNlbnRhdGlvblNpemUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTsKICAgICBib29sIGlzTm9uVGV4dFR5cGUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQgeyBmYWxz
ZSB9OworICAgIFZlY3RvcjxTdHJpbmc+IHdlYlNhZmVUeXBlc0J5RmlkZWxpdHk7CisgICAgaW50
IGNoYW5nZUNvdW50IHsgMCB9OwogICAgIFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgeyBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0
eWxlOjpVbnNwZWNpZmllZCB9OwogCiAgICAgU3RyaW5nIHBhdGhGb3JDb250ZW50VHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQocGF0aHNGb3JGaWxl
VXBsb2FkLnNpemUoKSA9PSBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLnNpemUoKSk7Ci0gICAg
ICAgIGF1dG8gaW5kZXggPSBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLmZpbmQodHlwZSk7Cisg
ICAgICAgIEFTU0VSVChwYXRoc0ZvckZpbGVVcGxvYWQuc2l6ZSgpID09IHBsYXRmb3JtVHlwZXNG
b3JGaWxlVXBsb2FkLnNpemUoKSk7CisgICAgICAgIGF1dG8gaW5kZXggPSBwbGF0Zm9ybVR5cGVz
Rm9yRmlsZVVwbG9hZC5maW5kKHR5cGUpOwogICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xMDQsMTAgKzEwNiwxMCBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZEl0ZW1JbmZvIHsKIAogICAgIFN0cmluZyBjb250ZW50VHlwZUZvckhpZ2hlc3RG
aWRlbGl0eUl0ZW0oKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRlbnRUeXBlc0ZvckZp
bGVVcGxvYWQuaXNFbXB0eSgpKQorICAgICAgICBpZiAocGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxv
YWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICByZXR1cm4g
Y29udGVudFR5cGVzRm9yRmlsZVVwbG9hZC5maXJzdCgpOworICAgICAgICByZXR1cm4gcGxhdGZv
cm1UeXBlc0ZvckZpbGVVcGxvYWQuZmlyc3QoKTsKICAgICB9CiAKICAgICBTdHJpbmcgcGF0aEZv
ckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKSBjb25zdApAQCAtMTI1LDcgKzEyNyw3IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkSXRlbUluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgUGFzdGVi
b2FyZEl0ZW1JbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNv
ZGVyIDw8IHBhdGhzRm9yRmlsZVVwbG9hZCA8PCBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkIDw8
IGNvbnRlbnRUeXBlc0J5RmlkZWxpdHkgPDwgc3VnZ2VzdGVkRmlsZU5hbWUgPDwgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSA8PCBpc05vblRleHRUeXBlIDw8IGNvbnRhaW5zRmlsZVVSTEFuZEZp
bGVVcGxvYWRDb250ZW50OworICAgIGVuY29kZXIgPDwgcGF0aHNGb3JGaWxlVXBsb2FkIDw8IHBs
YXRmb3JtVHlwZXNGb3JGaWxlVXBsb2FkIDw8IHBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5IDw8IHN1
Z2dlc3RlZEZpbGVOYW1lIDw8IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPDwgaXNOb25UZXh0
VHlwZSA8PCBjb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudCA8PCB3ZWJTYWZlVHlw
ZXNCeUZpZGVsaXR5IDw8IGNoYW5nZUNvdW50OwogICAgIGVuY29kZXIuZW5jb2RlRW51bShwcmVm
ZXJyZWRQcmVzZW50YXRpb25TdHlsZSk7CiB9CiAKQEAgLTEzNiwxMCArMTM4LDEwIEBAIE9wdGlv
bmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYXRoc0ZvckZpbGVV
cGxvYWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZCkpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQpKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29u
dGVudFR5cGVzQnlGaWRlbGl0eSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGxh
dGZvcm1UeXBlc0J5RmlkZWxpdHkpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVkRmlsZU5hbWUpKQpAQCAtMTU0
LDYgKzE1NiwxMiBAQCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVt
SW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViU2Fm
ZVR5cGVzQnlGaWRlbGl0eSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGFuZ2VDb3VudCkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQucHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGRjMTZm
MGZhMGM1YTkwMTJjNjUyNWY1YTk1MzBmZTc2NTgxNTEzNjUuLjU2ZWVhYThlYmFlZjA0ZDI5M2Rh
NjE1ZGRjM2FmN2Y1OWNmMDkzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCkBAIC00NiwxMiArNDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwotICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2aXJ0dWFs
IFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlk
ZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC03Myw2ICs2NywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBsb25nIHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKICNlbmRpZgorICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2
aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgdmlydHVhbCBQYXN0
ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxQYXN0
ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgPSAwOwogICAgIHZpcnR1YWwgbG9uZyB3
cml0ZUN1c3RvbURhdGEoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKIAogI2lmIFVT
RShMSUJXUEUpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cykgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFN0
cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJk
KGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0
ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
KSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKaW5kZXggZTAzMzE1MDk4ZTE1NWE5MjZmNzE5OGUyYzcyNmIzNzU3YzEyNDQyZi4uZGYw
MzkzZTM1ZmNhNWI3ZGIwMzQ2MzAzNzYwYWZlYzZhZGFhNmMzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lm
IFBMQVRGT1JNKE1BQykKIE9CSkNfQ0xBU1MgTlNQYXN0ZWJvYXJkOworT0JKQ19DTEFTUyBOU1Bh
c3RlYm9hcmRJdGVtOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTks
MTAgKzYwLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQbGF0Zm9y
bVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgfHwgVVNFKExJQldQRSkKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVBh
c3RlYm9hcmQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZv
PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJvYXJk
SXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcyk7CiAjZW5kaWYKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJvYXJk
SXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpOworICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVt
SW5mbygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgdW5pcXVlTmFtZSgpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBl
Rm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUpOwpA
QCAtOTAsOSArOTEsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShj
b25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVh
ZFN0cmluZyhpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKGludCBpbmRleCwgU3RyaW5nJiB0aXRsZSkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRV
Ukwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBpbnQgY291bnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgbnVtYmVyT2ZGaWxl
cygpIGNvbnN0OwogCkBAIC0xMDksNiArMTEwLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBhbGxv
d1JlYWRpbmdVUkxBdEluZGV4KGNvbnN0IFVSTCYsIGludCBpbmRleCkgY29uc3Q7CiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtQXRJbmRleChz
aXplX3QgaW5kZXgpIGNvbnN0OworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0
YWluUHRyPE5TUGFzdGVib2FyZD4gbV9wYXN0ZWJvYXJkOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggMjY0NzQ4MGJk
YTcyYmYzNjMzMmU1NDJmZTE3N2ZmYzI2OThmZjI4Ny4uYzBmYmE0YmVmMDc1MTVkZTRhZDI1NGI0
MDM3MDdmMTFiNWNiMTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtMTQ4LDcgKzE0OCw3IEBAIFBhc3RlYm9hcmQ6OkZpbGVD
b250ZW50U3RhdGUgUGFzdGVib2FyZDo6ZmlsZUNvbnRlbnRTdGF0ZSgpCiAgICAgICAgIC8vIElm
IHRoZSBpdGVtIGNhbid0IGJlIHRyZWF0ZWQgYXMgYW4gYXR0YWNobWVudCwgaXQncyB2ZXJ5IGxp
a2VseSB0aGF0IHRoZSBjb250ZW50IGJlaW5nIGRyb3BwZWQgaXMganVzdAogICAgICAgICAvLyBh
biBpbmxpbmUgcGllY2Ugb2YgdGV4dCwgd2l0aCBubyBmaWxlcyBpbiB0aGUgcGFzdGVib2FyZCAo
YW5kIHRoZXJlZm9yZSwgbm8gcmlzayBvZiBsZWFraW5nIGZpbGUgcGF0aHMKICAgICAgICAgLy8g
dG8gd2ViIGNvbnRlbnQpLiBJbiBjYXNlcyBzdWNoIGFzIHRoZXNlLCB3ZSBzaG91bGQgbm90IHN1
cHByZXNzIERhdGFUcmFuc2ZlciBhY2Nlc3MuCi0gICAgICAgIGF1dG8gaXRlbXMgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmFsbFBhc3RlYm9hcmRJdGVtSW5m
byhtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgYXV0byBpdGVtcyA9IGFsbFBhc3RlYm9hcmRJ
dGVtSW5mbygpOwogICAgICAgICBtYXlDb250YWluRmlsZVBhdGhzID0gaXRlbXMuc2l6ZSgpICE9
IDEgfHwgbm90Rm91bmQgIT0gaXRlbXMuZmluZE1hdGNoaW5nKFtdIChhdXRvJiBpdGVtKSB7CiAg
ICAgICAgICAgICByZXR1cm4gaXRlbS5jYW5CZVRyZWF0ZWRBc0F0dGFjaG1lbnRPckZpbGUoKSB8
fCBpdGVtLmlzTm9uVGV4dFR5cGUgfHwgaXRlbS5jb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2Fk
Q29udGVudDsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0OTU0MzNl
YWNlOTY4YjYzNjJmNmU1NmM0NGNkNTg4MzNkYWViYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbQpAQCAt
MCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQ
bGF0Zm9ybVBhc3RlYm9hcmQuaCIKKworI2ltcG9ydCAiUGFzdGVib2FyZEl0ZW1JbmZvLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKQoreworICAgIFZlY3RvcjxQYXN0
ZWJvYXJkSXRlbUluZm8+IGl0ZW1JbmZvOworICAgIGludCBudW1iZXJPZkl0ZW1zID0gY291bnQo
KTsKKyAgICBpdGVtSW5mby5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bWJlck9mSXRlbXMpOwor
ICAgIGZvciAoTlNJbnRlZ2VyIGl0ZW1JbmRleCA9IDA7IGl0ZW1JbmRleCA8IG51bWJlck9mSXRl
bXM7ICsraXRlbUluZGV4KQorICAgICAgICBpdGVtSW5mby51bmNoZWNrZWRBcHBlbmQoaW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChpdGVtSW5kZXgpKTsKKyAgICByZXR1cm4gaXRlbUluZm87Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMDI3MWI5M2U3MDVjZTJjNDJkNjMyZmUyZGIyOWFhNDZl
ODM2ZDIzOS4uZTFjZTJmMzRiNWMxNGJhMjg5NzdiOGI4MWU3ZDZkMmNjNjJiODQ2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTM1NSw3ICsz
NTUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0
ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLAogICAgICAgICAvLyBUcnkgdG8gcmVhZCBk
YXRhIGZyb20gZWFjaCB0eXBlIGlkZW50aWZpZXIgdGhhdCB0aGlzIHBhc3RlYm9hcmQgaXRlbSBz
dXBwb3J0cywgYW5kIFdlYktpdCBhbHNvIHJlY29nbml6ZXMuIFR5cGUgaWRlbnRpZmllcnMgYXJl
CiAgICAgICAgIC8vIHJlYWQgaW4gb3JkZXIgb2YgZmlkZWxpdHksIGFzIHNwZWNpZmllZCBieSBl
YWNoIHBhc3RlYm9hcmQgaXRlbS4KICAgICAgICAgUmVhZGVyUmVzdWx0IHJlc3VsdCA9IFJlYWRl
clJlc3VsdDo6RGlkTm90UmVhZFR5cGU7Ci0gICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGluZm8u
Y29udGVudFR5cGVzQnlGaWRlbGl0eSkgeworICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBpbmZv
LnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5KSB7CiAgICAgICAgICAgICBpZiAoIWlzVHlwZUFsbG93
ZWRCeVJlYWRpbmdQb2xpY3kodHlwZSwgcG9saWN5KSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0KaW5kZXggZDhjNTZmOTVhYWEzZjM2ZmViZjE0MDNkMDk3YWE4YzdiNzFhNTUx
ZS4uOTE2ZGFlYmQwYTI3ODBjOTM2M2QzNTU5ODVhOWI2MTJlZjQxZDEwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBA
IC0xMTYsMTcgKzExNiw5IEBAIHN0YXRpYyBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxl
IHBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUoVUlQcmVmZXJyCiAKICNlbmRpZiAvLyBQ
QVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBCiAKLVZl
Y3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKCkKK1Bhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIFZlY3RvcjxQYXN0ZWJv
YXJkSXRlbUluZm8+IGl0ZW1JbmZvOwotICAgIGZvciAoTlNJbnRlZ2VyIGl0ZW1JbmRleCA9IDA7
IGl0ZW1JbmRleCA8IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc107ICsraXRlbUluZGV4KQot
ICAgICAgICBpdGVtSW5mby5hcHBlbmQoaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpdGVtSW5k
ZXgpKTsKLSAgICByZXR1cm4gaXRlbUluZm87Ci19Ci0KLVBhc3RlYm9hcmRJdGVtSW5mbyBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4KQotewot
ICAgIGlmIChpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdKQorICAgIGlmIChp
bmRleCA+PSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRl
bXNdKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZv
OwpAQCAtMTQwLDE1ICsxMzIsMTUgQEAgUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVi
b2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIGZvciAo
TlNVUkwgKnVybCBpbiB1cmxzKQogICAgICAgICAgICAgaW5mby5wYXRoc0ZvckZpbGVVcGxvYWQu
dW5jaGVja2VkQXBwZW5kKHVybC5wYXRoKTsKIAotICAgICAgICBpbmZvLmNvbnRlbnRUeXBlc0Zv
ckZpbGVVcGxvYWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmaWxlVHlwZXMuY291bnQpOworICAg
ICAgICBpbmZvLnBsYXRmb3JtVHlwZXNGb3JGaWxlVXBsb2FkLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoZmlsZVR5cGVzLmNvdW50KTsKICAgICAgICAgZm9yIChOU1N0cmluZyAqZmlsZVR5cGUgaW4g
ZmlsZVR5cGVzKQotICAgICAgICAgICAgaW5mby5jb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLnVu
Y2hlY2tlZEFwcGVuZChmaWxlVHlwZSk7CisgICAgICAgICAgICBpbmZvLnBsYXRmb3JtVHlwZXNG
b3JGaWxlVXBsb2FkLnVuY2hlY2tlZEFwcGVuZChmaWxlVHlwZSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgTlNBcnJheSAqZmlsZVR5cGVzID0gaXRlbVByb3ZpZGVyLndlYl9maWxlVXBsb2FkQ29u
dGVudFR5cGVzOwotICAgICAgICBpbmZvLmNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShmaWxlVHlwZXMuY291bnQpOworICAgICAgICBpbmZvLnBsYXRmb3Jt
VHlwZXNGb3JGaWxlVXBsb2FkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZmlsZVR5cGVzLmNvdW50
KTsKICAgICAgICAgaW5mby5wYXRoc0ZvckZpbGVVcGxvYWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShmaWxlVHlwZXMuY291bnQpOwogICAgICAgICBmb3IgKE5TU3RyaW5nICpmaWxlVHlwZSBpbiBm
aWxlVHlwZXMpIHsKLSAgICAgICAgICAgIGluZm8uY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZC51
bmNoZWNrZWRBcHBlbmQoZmlsZVR5cGUpOworICAgICAgICAgICAgaW5mby5wbGF0Zm9ybVR5cGVz
Rm9yRmlsZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQoZmlsZVR5cGUpOwogICAgICAgICAgICAgaW5m
by5wYXRoc0ZvckZpbGVVcGxvYWQudW5jaGVja2VkQXBwZW5kKHsgfSk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNjgsOSArMTYwLDkgQEAgUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVi
b2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpCiAgICAgaW5mby5jb250
YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudCA9IGl0ZW1Qcm92aWRlci53ZWJfY29udGFp
bnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQ7CiAgICAgaW5mby5zdWdnZXN0ZWRGaWxlTmFt
ZSA9IGl0ZW1Qcm92aWRlci5zdWdnZXN0ZWROYW1lOwogICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4g
KnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgPSBpdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJ
ZGVudGlmaWVyczsKLSAgICBpbmZvLmNvbnRlbnRUeXBlc0J5RmlkZWxpdHkucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzLmNvdW50KTsKKyAgICBpbmZvLnBs
YXRmb3JtVHlwZXNCeUZpZGVsaXR5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVnaXN0ZXJlZFR5
cGVJZGVudGlmaWVycy5jb3VudCk7CiAgICAgZm9yIChOU1N0cmluZyAqdHlwZUlkZW50aWZpZXIg
aW4gcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycykgewotICAgICAgICBpbmZvLmNvbnRlbnRUeXBl
c0J5RmlkZWxpdHkudW5jaGVja2VkQXBwZW5kKHR5cGVJZGVudGlmaWVyKTsKKyAgICAgICAgaW5m
by5wbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eS51bmNoZWNrZWRBcHBlbmQodHlwZUlkZW50aWZpZXIp
OwogICAgICAgICBDRlN0cmluZ1JlZiBjZlR5cGVJZGVudGlmaWVyID0gKENGU3RyaW5nUmVmKXR5
cGVJZGVudGlmaWVyOwogICAgICAgICBpZiAoIVVUVHlwZUlzRGVjbGFyZWQoY2ZUeXBlSWRlbnRp
ZmllcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE5MCwxNyArMTgyLDE0IEBAIFBhc3Rl
Ym9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoaW50IGluZGV4KQogICAgICAgICBpbmZvLmlzTm9uVGV4dFR5cGUgPSB0cnVlOwogICAgIH0K
IAorICAgIGluZm8uY2hhbmdlQ291bnQgPSBjaGFuZ2VDb3VudCgpOworCiAgICAgcmV0dXJuIGlu
Zm87CiB9CiAKICNlbHNlCiAKLVBhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50KQotewotICAgIHJldHVybiB7IH07Ci19Ci0K
LVZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKCkKK1Bhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6Omlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90KQogewogICAgIHJldHVybiB7IH07CiB9CkBA
IC02NTYsNyArNjQ1LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxT
dHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmlu
Z3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlcihpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU0luZGV4U2V0ICppbmRleFNldCA9IFtOU0lu
ZGV4U2V0IGluZGV4U2V0V2l0aEluZGV4OmluZGV4XTsKIApAQCAtNjY3LDcgKzY1Niw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtw
YXN0ZWJvYXJkSXRlbS5nZXQoKSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAotU3RyaW5nIFBsYXRm
b3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKK1N0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUgPT0gU3RyaW5nKGtV
VFR5cGVVUkwpKSB7CiAgICAgICAgIFN0cmluZyB0aXRsZTsKQEAgLTY5Nyw3ICs2ODYsNyBAQCBT
dHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGludCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotVVJMIFBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZFVSTChpbnQgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0CitVUkwg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkg
Y29uc3QKIHsKICAgICBpZCB2YWx1ZSA9IFttX3Bhc3RlYm9hcmQgdmFsdWVzRm9yUGFzdGVib2Fy
ZFR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVSTCBpbkl0ZW1TZXQ6W05TSW5kZXhT
ZXQgaW5kZXhTZXRXaXRoSW5kZXg6aW5kZXhdXS5maXJzdE9iamVjdDsKICAgICBpZiAoIXZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRM
aWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJX
UEUuY3BwCmluZGV4IGY4YTYxZWM3MGMwYzFhNGNkMzc3ZjBlN2NkNjc2ZWZiOWRlNWJjOGEuLjQz
YmE5ZTRkZWE1ZjY1YTc2MDllMzMyZWFkMmZlYjczZGYzYjMyNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRPcmlnaW4oKQogCiBTdHJpbmcgUGFzdGVi
b2FyZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKDAsIHR5cGUpOworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCB0eXBlLCBuYW1lKCkp
OwogfQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBT
dHJpbmcmKQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0
cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0
KQogewotICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3BsYWluO2NoYXJzZXQ9
dXRmLTgiKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFy
c2V0PXV0Zi04IiwgbmFtZSgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxhdGZvcm1QYXN0ZWJvYXJkTGliV1BF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybVBhc3RlYm9hcmRM
aWJXUEUuY3BwCmluZGV4IDBmZGI3NWRhZjY5ZDU4ZTVkZTAxYTE0YjFlNWVkNWE3YjhkOTQ3Y2Yu
LmU1NDBjMzVkNTNmZmE0MTEzMjFiODgxOGIyYmVhNjIwNmI1NzViNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybVBhc3RlYm9hcmRMaWJXUEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybVBhc3RlYm9hcmRM
aWJXUEUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgd3BlX3Bhc3RlYm9hcmRfc3RyaW5nX3Zl
Y3Rvcl9mcmVlKCZwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpyZWFkU3RyaW5nKGludCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorU3RyaW5nIFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIHsKICAgICBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmRfc3RyaW5nIHN0cmluZyA9IHsgbnVs
bHB0ciwgMCB9OwogICAgIHdwZV9wYXN0ZWJvYXJkX2dldF9zdHJpbmcobV9wYXN0ZWJvYXJkLCB0
eXBlLnV0ZjgoKS5kYXRhKCksICZzdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggMGNiMWRkOGI5MzBhMDY1
YjdjMDgwMTVjYTJlMGNlNWRiZDViMmI0OS4uYzVhMTE5NzJiNjI4MjQwMzI3YWY0ODdjNjg5MDJm
ZmYxNjZhZWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0zODQsNiArMzg0LDExNiBAQCBsb25nIFBsYXRmb3Jt
UGFzdGVib2FyZDo6c2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3Qg
U3RyaW5nJiBwYQogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwogfQogCitzdGF0aWMgTlNQYXN0
ZWJvYXJkVHlwZSBtb2Rlcm5QYXN0ZWJvYXJkVHlwZUZvcldlYlNhZmVNSU1FVHlwZShjb25zdCBT
dHJpbmcmIHdlYlNhZmVUeXBlKQoreworICAgIGlmICh3ZWJTYWZlVHlwZSA9PSAidGV4dC9wbGFp
biIpCisgICAgICAgIHJldHVybiBOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nOworICAgIGlmICh3ZWJT
YWZlVHlwZSA9PSAidGV4dC9odG1sIikKKyAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVI
VE1MOworICAgIGlmICh3ZWJTYWZlVHlwZSA9PSAidGV4dC91cmktbGlzdCIpCisgICAgICAgIHJl
dHVybiBOU1Bhc3RlYm9hcmRUeXBlVVJMOworICAgIGlmICh3ZWJTYWZlVHlwZSA9PSAiaW1hZ2Uv
cG5nIikKKyAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVQTkc7CisgICAgcmV0dXJuIG5p
bDsKK30KKworZW51bSBjbGFzcyBDb250YWluc0ZpbGVVUkwgeyBObywgWWVzIH07CitzdGF0aWMg
U3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVib2Fy
ZFR5cGUgcGxhdGZvcm1UeXBlLCBDb250YWluc0ZpbGVVUkwgY29udGFpbnNGaWxlVVJMKQorewor
ICAgIGlmIChbcGxhdGZvcm1UeXBlIGlzRXF1YWw6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ10gJiYg
Y29udGFpbnNGaWxlVVJMID09IENvbnRhaW5zRmlsZVVSTDo6Tm8pCisgICAgICAgIHJldHVybiAi
dGV4dC9wbGFpbiI7CisgICAgaWYgKFtwbGF0Zm9ybVR5cGUgaXNFcXVhbDpOU1Bhc3RlYm9hcmRU
eXBlSFRNTF0gfHwgW3BsYXRmb3JtVHlwZSBpc0VxdWFsOk5TUGFzdGVib2FyZFR5cGVSVEZdIHx8
IFtwbGF0Zm9ybVR5cGUgaXNFcXVhbDpOU1Bhc3RlYm9hcmRUeXBlUlRGRF0pCisgICAgICAgIHJl
dHVybiAidGV4dC9odG1sIjsKKyAgICBpZiAoW3BsYXRmb3JtVHlwZSBpc0VxdWFsOk5TUGFzdGVi
b2FyZFR5cGVVUkxdICYmIGNvbnRhaW5zRmlsZVVSTCA9PSBDb250YWluc0ZpbGVVUkw6Ok5vKQor
ICAgICAgICByZXR1cm4gInRleHQvdXJpLWxpc3QiOworICAgIGlmIChbcGxhdGZvcm1UeXBlIGlz
RXF1YWw6TlNQYXN0ZWJvYXJkVHlwZVBOR10gfHwgW3BsYXRmb3JtVHlwZSBpc0VxdWFsOk5TUGFz
dGVib2FyZFR5cGVUSUZGXSkKKyAgICAgICAgcmV0dXJuICJpbWFnZS9wbmciOworICAgIHJldHVy
biB7IH07Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK3sKKyAgICBO
U1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOworICAgIGlmICghaXRl
bSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gcGxhdGZvcm1UeXBlID0gbW9kZXJu
UGFzdGVib2FyZFR5cGVGb3JXZWJTYWZlTUlNRVR5cGUodHlwZSk7CisgICAgaWYgKCFwbGF0Zm9y
bVR5cGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKE5TRGF0YSAqZGF0YSA9
IFtpdGVtIGRhdGFGb3JUeXBlOnBsYXRmb3JtVHlwZV0pIHsKKyAgICAgICAgYXV0byBuc0RhdGEg
PSBhZG9wdE5TKGRhdGEuY29weSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShuc0RhdGEuZ2V0KCkpOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCitTdHJp
bmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAoreworICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJ
bmRleChpbmRleCk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
YXV0byBwbGF0Zm9ybVR5cGUgPSBtb2Rlcm5QYXN0ZWJvYXJkVHlwZUZvcldlYlNhZmVNSU1FVHlw
ZSh0eXBlKTsKKyAgICBpZiAoIXBsYXRmb3JtVHlwZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIHJldHVybiBbaXRlbSBzdHJpbmdGb3JUeXBlOnBsYXRmb3JtVHlwZV07Cit9CisKK1VSTCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBj
b25zdAoreworICAgIHRpdGxlID0gZW1wdHlTdHJpbmcoKTsKKworICAgIE5TUGFzdGVib2FyZEl0
ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgUmV0YWluUHRyPE5TVVJMPiB1cmw7CisgICAgaWYgKGlkIHByb3Bl
cnR5TGlzdCA9IFtpdGVtIHByb3BlcnR5TGlzdEZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVVSTF0p
CisgICAgICAgIHVybCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhQYXN0ZWJvYXJk
UHJvcGVydHlMaXN0OnByb3BlcnR5TGlzdCBvZlR5cGU6TlNQYXN0ZWJvYXJkVHlwZVVSTF0pOwor
ICAgIGVsc2UgaWYgKE5TU3RyaW5nICphYnNvbHV0ZVN0cmluZyA9IFtpdGVtIHN0cmluZ0ZvclR5
cGU6TlNQYXN0ZWJvYXJkVHlwZVVSTF0pCisgICAgICAgIHVybCA9IFtOU1VSTCBVUkxXaXRoU3Ry
aW5nOmFic29sdXRlU3RyaW5nXTsKKyAgICByZXR1cm4geyBbdXJsIGlzRmlsZVVSTF0gPyBuaWwg
OiB1cmwuZ2V0KCkgfTsKK30KKworaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6Y291bnQoKSBjb25z
dAoreworICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRJdGVtc10uY291bnQ7Cit9
CisKK1Bhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4KQoreworICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0g
PSBpdGVtQXRJbmRleChpbmRleCk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm87CisgICAgTlNBcnJheTxOU1Bhc3RlYm9h
cmRUeXBlPiAqcGxhdGZvcm1UeXBlcyA9IFtpdGVtIHR5cGVzXTsKKyAgICBhdXRvIGNvbnRhaW5z
RmlsZVVSTCA9IFtwbGF0Zm9ybVR5cGVzIGNvbnRhaW5zT2JqZWN0Ok5TUGFzdGVib2FyZFR5cGVG
aWxlVVJMXSA/IENvbnRhaW5zRmlsZVVSTDo6WWVzIDogQ29udGFpbnNGaWxlVVJMOjpObzsKKyAg
ICBMaXN0SGFzaFNldDxTdHJpbmc+IHdlYlNhZmVUeXBlczsKKyAgICBpbmZvLnBsYXRmb3JtVHlw
ZXNCeUZpZGVsaXR5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGxhdGZvcm1UeXBlcy5jb3VudCk7
CisgICAgZm9yIChOU1Bhc3RlYm9hcmRUeXBlIHR5cGUgaW4gcGxhdGZvcm1UeXBlcykgeworICAg
ICAgICBpbmZvLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5LnVuY2hlY2tlZEFwcGVuZCh0eXBlKTsK
KyAgICAgICAgYXV0byB3ZWJTYWZlVHlwZSA9IHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3Rl
Ym9hcmRUeXBlKHR5cGUsIGNvbnRhaW5zRmlsZVVSTCk7CisgICAgICAgIGlmICh3ZWJTYWZlVHlw
ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB3ZWJTYWZlVHlw
ZXMuYWRkKFdURk1vdmUod2ViU2FmZVR5cGUpKTsKKyAgICB9CisgICAgaW5mby5jb250YWluc0Zp
bGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudCA9IGNvbnRhaW5zRmlsZVVSTCA9PSBDb250YWluc0Zp
bGVVUkw6OlllczsKKyAgICBpbmZvLndlYlNhZmVUeXBlc0J5RmlkZWxpdHkgPSBjb3B5VG9WZWN0
b3Iod2ViU2FmZVR5cGVzKTsKKyAgICBpbmZvLmNoYW5nZUNvdW50ID0gY2hhbmdlQ291bnQoKTsK
KyAgICByZXR1cm4gaW5mbzsKK30KKworTlNQYXN0ZWJvYXJkSXRlbSAqUGxhdGZvcm1QYXN0ZWJv
YXJkOjppdGVtQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgTlNBcnJheTxOU1Bh
c3RlYm9hcmRJdGVtICo+ICppdGVtcyA9IFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZEl0ZW1zXTsK
KyAgICByZXR1cm4gaW5kZXggPj0gaXRlbXMuY291bnQgPyBuaWwgOiBpdGVtc1tpbmRleF07Cit9
CisKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggZGUz
OTVkYTk2ZmNkYTk4MTdjMWUyNmU3ZDZlNWZkMzMzOTZmM2JmMC4uMGExODE3NDQ1MTBlODNhOGYz
MWJiNmExNWU2Y2VkNjIyNTRjZjI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTE4MCw0MSArMTgw
LDM0IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmIGRhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShkYXRhKSk7CiB9CiAKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVVUkxU
b1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQotewotICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3Jp
dGUodXJsKTsKLX0KLQotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlV2ViQ29udGVudFRv
UGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojph
bGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndy
aXRlKGNvbnRlbnQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkpOwogfQogCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChQYXN0ZWJvYXJkSXRlbUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkSW1h
Z2UpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCkpOwogfQogCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkud3JpdGUocGFzdGVib2FyZFR5cGUsIHRleHQpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKSk7CiB9CiAK
LXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmluZyhpbmRleCwgcGFzdGVib2FyZFR5cGUp
KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCh1
aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFN0cmluZyB0aXRsZTsKICAgICBTdHJpbmcgdXJsID0gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4LCB0aXRsZSk7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHRpdGxlKSk7CiB9CiAKLXZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpIYW5kbGUmJiwgdWludDY0X3Qg
c2l6ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTaGFyZWRNZW1vcnk6OkhhbmRsZSYmLCB1aW50NjRfdCBzaXplKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHBhc3RlYm9hcmRUeXBl
KTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIzMSwxOSArMjI0LDI2IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZSksIHNpemUpOwog
fQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwordm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlVVJMVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9h
cmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCkpOwor
ICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUodXJsKTsKIH0KIAot
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQYXN0ZWJv
YXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OndyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkV2ViQ29udGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsK
LSAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpKTsKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpLndyaXRlKGNvbnRlbnQpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGFzdGVib2FyZEl0ZW1JbmZvJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlSW1hZ2VU
b1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1h
Z2UsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgY29tcGxldGlvbkhhbmRs
ZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KGluZGV4KSk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53
cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOworfQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3Jp
dGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUocGFzdGVib2FyZFR5cGUsIHRleHQp
OwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKQEAgLTI1MSw2ICsyNTEsNiBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBp
ZAogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzKTsKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAppbmRleCA3YmZmOTM0YmZkNjMx
OTk0ZDU1NjJhODY5MzRhMTFiOTdjMjg0MWFjLi4yNWE0ZGQ3MmQ1ZGI4NThjNTRhZDYxYTlhOWU5
NWRjMmQxNzEwYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0
ZWJvYXJkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eS5jcHAKQEAgLTI2LDkgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViUGFzdGVib2FyZFByb3h5LmgiCiAKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIK
ICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTczLDYgKzc1LDM2IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0
ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmLCBjCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoMCk7CiB9CiAKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworfQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUGFzdGVib2FyZEl0ZW1JbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21w
bGV0aW9uSGFuZGxlcigwKTsKK30KKwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZChzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9KTsKK30KKwordm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVt
b3J5OjpIYW5kbGUmJiwgdWludDY0X3Qgc2l6ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVi
b2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
aAppbmRleCAwZTBlMjE1Njk1ODhjOGQ0NzA1Yzk3MWRjMWJkM2JkYTg1MzE5MzFiLi40NjExYjA4
OGUwMTg0NjkyY2NhMGM5NTBjYTYwMmNhZDQxZTJlNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtNzMsMTIgKzczLDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkV2ViQ29udGVudCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIHZv
aWQgd3JpdGVJbWFnZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2Um
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nVG9Q
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJik7Ci0gICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
JiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYpOwotICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1l
bW9yeTo6SGFuZGxlJiYsIHVpbnQ2NF90IHNpemUpPiYmKTsKLSAgICB2b2lkIGdldFBhc3RlYm9h
cmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDY0X3QpPiYmKTsKLSAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKLSAgICB2b2lkIGluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyYmKT4m
Jik7CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTAxLDYgKzk1LDEzIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6
OkhhbmRsZSYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3Qp
PiYmKTsKICNlbmRpZgogCisgICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9p
ZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYg
dGl0bGUpPiYmKTsKKyAgICB2b2lkIHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpIYW5kbGUmJiwgdWlu
dDY0X3Qgc2l6ZSk+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+
JiYpOworICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvJiYpPiYmKTsKKyAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVt
SW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKKwogICAgIHZvaWQg
d3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCk+JiYpOwogICAgIHZvaWQgdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogCkBAIC0xMTQsNyArMTE1LDcgQEAgcHJp
dmF0ZToKIAogI2lmIFVTRShMSUJXUEUpCiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCByZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAgICB2b2lk
IHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICB2
b2lkIHdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
V2ViQ29udGVudCYpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBkM2VhM2JhNDI5Yzg3ZjU3Y2I4YzJhOTg0MTgzNmQwZGM1ZGNhZWFkLi42OTFkMDI1Mzcx
OGMwMmEwZGUwYTZiZThlMzRkMjEwMzRlMDAzYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNiwxNyAr
MjYsMTcgQEAgbWVzc2FnZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICAgICBXcml0ZVdlYkNv
bnRlbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50IGNv
bnRlbnQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICAgICBXcml0ZUltYWdlVG9QYXN0ZWJvYXJk
KHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2FyZEltYWdlLCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUpCiAgICAgV3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoU3RyaW5nIHBhc3Rl
Ym9hcmRUeXBlLCBTdHJpbmcgdGV4dCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQotICAgIFJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBl
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgc3RyaW5nKSBTeW5jaHJvbm91cwot
ICAgIFJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9h
cmROYW1lKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5nIHRpdGxlKSBTeW5jaHJvbm91cwotICAgIFJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRU
eXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFu
ZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkgU3luY2hyb25vdXMKLSAgICBHZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBpdGVtc0NvdW50
KSBTeW5jaHJvbm91cwotICAgIEFsbFBhc3RlYm9hcmRJdGVtSW5mbyhTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxJbmZvKSBT
eW5jaHJvbm91cwotICAgIEluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgs
IFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8gaW5mbykgU3luY2hyb25vdXMKICAgICBVcGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnMoVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICNl
bmRpZgogCiAgICAgV3JpdGVDdXN0b21EYXRhKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBkYXRhLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VD
b3VudCkgU3luY2hyb25vdXMKICAgICBUeXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShTdHJp
bmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBvcmlnaW4pIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBl
cykgU3luY2hyb25vdXMKKyAgICBBbGxQYXN0ZWJvYXJkSXRlbUluZm8oU3RyaW5nIHBhc3RlYm9h
cmROYW1lKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsSW5mbykg
U3luY2hyb25vdXMKKyAgICBJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvIGluZm8pIFN5bmNocm9ub3VzCisgICAgR2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoU3Ry
aW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgaXRlbXNDb3VudCkgU3luY2hyb25vdXMK
KyAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0
ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHN0cmluZykgU3lu
Y2hyb25vdXMKKyAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hyb25v
dXMKKyAgICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBw
YXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpIFN5bmNocm9ub3VzCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAjIFBhc3RlYm9hcmQgbWVzc2FnZXMuCkBAIC02Niw3ICs2Niw2
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSB7CiAKICNpZiBVU0UoTElCV1BFKQog
ICAgIEdldFBhc3RlYm9hcmRUeXBlcygpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hy
b25vdXMKLSAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmlu
ZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzCiAgICAgV3Jp
dGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29u
dGVudCBjb250ZW50KQogICAgIFdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJv
YXJkVHlwZSwgU3RyaW5nIHRleHQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dwZS9XZWJQYXN0ZWJvYXJkUHJveHlXUEUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd3BlL1dlYlBhc3RlYm9hcmRQcm94eVdQRS5jcHAKaW5kZXggYTliYTZmOTA1YjI1
NmQxNmJkYzQ4NzZiNjQ4YzQ4N2IyZjNkY2VhYi4uZWFiNDg5ZmEzMjgzYTdkODQ5ZjJjMDcyY2M0
NzQ1ZGI5YTkxYTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dl
YlBhc3RlYm9hcmRQcm94eVdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3Bl
L1dlYlBhc3RlYm9hcmRQcm94eVdQRS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmcKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHBhc3RlYm9hcmRUeXBl
cykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZCgpLnJlYWRTdHJpbmcoaW5kZXgsIHBhc3Rl
Ym9hcmRUeXBlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGYx
ZmU0YjZiMWYwMTkxNDQ2ZGQ4ZjgwNWIzZGQ5ZTAwOTMxMGFiZDguLjU1NDRhMjUwNGQ2NzEwM2Uz
YWIzNWU3YWVmOGNjNTA3MDI0ZDI0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCkBAIC0yNjUsNTYgKzI2NSwxMCBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3Jp
dGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29ucwogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQocGFzdGVi
b2FyZFR5cGUsIHRleHQsIHBhc3RlYm9hcmROYW1lKSwgMCk7CiB9CiAKLWludCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCi17Ci0gICAgdWludDY0X3QgaXRlbXNDb3VudCB7IDAgfTsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChwYXN0ZWJv
YXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVt
c0NvdW50OjpSZXBseShpdGVtc0NvdW50KSwgMCk7Ci0gICAgcmV0dXJuIGl0ZW1zQ291bnQ7Ci19
Ci0KLVZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxs
UGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAg
VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsSW5mbzsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm8ocGFzdGVib2FyZE5hbWUpLCBN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm86OlJlcGx5
KGFsbEluZm8pLCAwKTsKLSAgICByZXR1cm4gYWxsSW5mbzsKLX0KLQotUGFzdGVib2FyZEl0ZW1J
bmZvIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgUGFzdGVib2FyZEl0
ZW1JbmZvIGluZm87Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4OjpSZXBseShpbmZvKSwg
MCk7Ci0gICAgcmV0dXJuIGluZm87Ci19Ci0KIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1
cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50
aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6VXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZp
ZXJzLCBwYXN0ZWJvYXJkTmFtZSksIDApOwogfQotCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCi17Ci0gICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwotICAgIHVpbnQ2
NF90IHNpemUgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5h
bWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQ6OlJlcGx5KGhhbmRsZSwgc2l6ZSksIDApOwotICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1l
bW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXpl
KTsKLX0KLQotVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkK
LXsKLSAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHVy
bFN0cmluZywgdGl0bGUpLCAwKTsKLSAgICByZXR1cm4gVVJMKHsgfSwgdXJsU3RyaW5nKTsKLX0K
LQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKLXsKLSAgICBTdHJpbmcgdmFsdWU7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJv
YXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpS
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgMCk7Ci0gICAgcmV0dXJuIHZh
bHVlOwotfQogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRpZiAvLyBQTEFU
Rk9STShDT0NPQSkKQEAgLTM0NSwxMyArMjk5LDYgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMoKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQotewotICAgIFN0cmluZyB2YWx1
ZTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIDApOwotICAgIHJl
dHVybiB2YWx1ZTsKLX0KLQogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0
ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogewog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVXZWJDb250ZW50VG9QYXN0ZWJv
YXJkKGNvbnRlbnQpLCAwKTsKQEAgLTM3OCw0ICszMjUsNTAgQEAgbG9uZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSYKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKK2ludCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCit7CisgICAgdWludDY0X3QgaXRlbXNDb3VudCB7IDAgfTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChwYXN0ZWJvYXJk
TmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50OjpSZXBseShpdGVtc0NvdW50KSwgMCk7CisgICAgcmV0dXJuIGl0ZW1zQ291bnQ7Cit9CisK
K1ZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFz
dGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAgVmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsSW5mbzsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm8ocGFzdGVib2FyZE5hbWUpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm86OlJlcGx5KGFs
bEluZm8pLCAwKTsKKyAgICByZXR1cm4gYWxsSW5mbzsKK30KKworUGFzdGVib2FyZEl0ZW1JbmZv
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAgUGFzdGVib2FyZEl0
ZW1JbmZvIGluZm87CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4OjpSZXBseShpbmZvKSwg
MCk7CisgICAgcmV0dXJuIGluZm87Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKK3sKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgdWludDY0
X3Qgc2l6ZSB7IDAgfTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFt
ZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwgMCk7CisgICAgaWYgKGhhbmRsZS5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVt
b3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRPbmx5KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUp
OworfQorCitVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
KQoreworICAgIFN0cmluZyB1cmxTdHJpbmc7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHko
dXJsU3RyaW5nLCB0aXRsZSksIDApOworICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOwor
fQorCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFN0cmluZyB2YWx1ZTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBh
c3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OlJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCAwKTsKKyAgICByZXR1
cm4gdmFsdWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCmluZGV4IGY3ZjEwNDFkODk0MmNmZThiYTM3OTc3NmI1OTViOTdjZTkyZTI2OGMu
Ljg3NTZkYTA1NWUyNzY4ZDdmMGRkNWI2MTAzZmFhMGYyNTVjMWJkZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKQEAgLTUwLDEyICs1MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjogUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9h
cmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwotICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKLSAgICBWZWN0
b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRl
ZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC04OCw2ICs4MiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVUb1Bhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAorICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBV
UkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgaW50IGdldFBhc3RlYm9h
cmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAg
IFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAg
VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSBvdmVycmlkZTsKICAgICBsb25nIHdyaXRlQ3Vz
dG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYsIGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZDE2MGE4
Mzg2NTM4Mzc4ODE1YzI5MzMwYmQxODYxNzMzNTgxZjcwNC4uOWYwMDM5OTAwNTlhZjQ0MjBjMDVi
YjdhM2MzYjk5OWZiOGMwMDZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTUx
LDE0ICs1MSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBVUkwg
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgorICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKKyAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgaW50
IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOworICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAg
IGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCmluZGV4IGY2NzcyMGUzOTVjZmZlMzAzMTBkODY0YmY5ODliZTJmY2ZhMmJjODcuLjk4
ZDMyNGM1MmY2M2RlZTcyZmNhMWVkNWRiZWUwYzZiN2FjNTg3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0KQEAgLTE3Myw2MCArMTczLDYwIEBAIGxvbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjp3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGEmCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUo
ZGF0YSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi12b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwpOworICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgp
OwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCitWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQogewotICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
d3JpdGUoY29udGVudCk7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2Um
IGltYWdlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGlt
YWdlKTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3Vu
dCgpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0g
ICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlw
ZSwgdGV4dCk7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
cmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CiAKLWludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitV
UkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQogewotICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CisgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFVSTChpbmRleCwg
dGl0bGUpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVy
cyk7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0
cmluZyhpbmRleCwgdHlwZSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRv
UGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS53cml0ZSh1cmwpOwogfQogCi1VUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9Q
YXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRpdGxlKTsKKyAgICBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGNvbnRlbnQpOwogfQogCi1TdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZEltYWdlJiBpbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsK
LSAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5n
KGluZGV4LCB0eXBlKTsKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndy
aXRlKGltYWdlKTsKIH0KIAotVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7CisgICAgUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4dCk7
CiB9CiAKLVdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCk7CisgICAgUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRp
ZmllcnMoaWRlbnRpZmllcnMpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380482</attachid>
            <date>2019-10-08 17:03:28 -0700</date>
            <delta_ts>2019-10-08 17:37:37 -0700</delta_ts>
            <desc>WIP: Try to fix WPE build</desc>
            <filename>bug-202647-20191008170327.patch</filename>
            <type>text/plain</type>
            <size>70353</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgyNGM2ZjZlOGI3Yjg0
Mzk1MmVmMDgxOTFiNDA1OTE2MDA3Yzk3My4uZjMxYmEyOGE0MTc2YmE3MTFiYTQzYjRkMDEzN2Ey
ODEwOTY1ZTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxOS0xMC0wOCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJk
IEFQSV0gUmVmYWN0b3IgUGFzdGVib2FyZCBpdGVtIHJlYWRpbmcgZnVuY3Rpb25zIHRvIHdvcmsg
b24gYm90aCBpT1MgYW5kIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDI2NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlcyBzb21lIHBhc3RlYm9hcmQgaGVscGVyIGZ1bmN0aW9ucyBvdXQg
b2YgaU9TLXNwZWNpZmljIGNvZGUsIGFuZCBpbnRvIHBsYXRmb3JtLWFnbm9zdGljIGNvZGUuIFNl
ZSBiZWxvdyBmb3IKKyAgICAgICAgbW9yZSBkZXRhaWxzLiBUaGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IsIGFzIG5vdGhpbmcgZXhlcmNpc2VzIHRoZXNlIG5ldyBwYXN0ZWJvYXJkIGZ1bmN0
aW9ucyBvbiBtYWNPUyB5ZXQuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpwYXN0
ZWJvYXJkSXRlbUluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVh
ZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRVUkwpOgorCisgICAgICAgIEFkZCBzb21l
IG5ldyBoZWxwZXJzIG9uIFBhc3RlYm9hcmQgdG8gcmVhZCBTdHJpbmdzLCBkYXRhLCBhbmQgVVJM
cyBmcm9tIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLiBUaGVzZSBmb3J3YXJkCisgICAgICAgIHRv
IHRoZSBwbGF0Zm9ybSBzdHJhdGVneSB3aGljaCwgaW4gV2ViS2l0MiwgYXJlIGN1cnJlbnRseSBp
bXBsZW1lbnRlZCB1c2luZyBzeW5jIElQQywgYnV0IGNvdWxkIGJlIGNoYW5nZWQgaW4KKyAgICAg
ICAgdGhlIGZ1dHVyZSB0byBiZSBmdWxseSBhc3luY2hyb25vdXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpuYW1lIGNv
bnN0KToKKworICAgICAgICBFeHBvc2UgYSBjcm9zcy1wbGF0Zm9ybSBuYW1lKCkgZ2V0dGVyIG9u
IFBhc3RlYm9hcmQuIE9uIG5vbi1Db2NvYSBwbGF0Zm9ybXMsIHRoaXMgc2ltcGx5IHJldHVybnMg
dGhlIGVtcHR5CisgICAgICAgIHN0cmluZywgYnV0IG9uIG1hY09TIGFuZCBpT1MsIHRoaXMgcmV0
dXJucyB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZCBuYW1lLCB3aGljaCBpcyBzdG9yZWQgaW4gbV9w
YXN0ZWJvYXJkTmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5o
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpwYXRoRm9yQ29udGVudFR5
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpjb250ZW50
VHlwZUZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvOjpkZWNvZGUpOgorCisgICAgICAgIEFkZHMgYSBjb3VwbGUgb2YgbmV3IG1l
bWJlcnMgdG8gUGFzdGVib2FyZEl0ZW1JbmZvICh3aGljaCByZXByZXNlbnRzIG1ldGFkYXRhIGFi
b3V0IGEgZ2l2ZW4gaXRlbSBpbiB0aGUgcGxhdGZvcm0KKyAgICAgICAgcGFzdGVib2FyZCkuIFRo
ZXNlIGFyZSBjaGFuZ2VDb3VudCAod2hpY2ggaXMgc2VsZiBleHBsYW5hdG9yeSksIGFuZCB3ZWJT
YWZlVHlwZXNCeUZpZGVsaXR5LCB3aGljaCBpcyBhIGxpc3Qgb2YKKyAgICAgICAgdHlwZXMgaW4g
ZmlkZWxpdHkgb3JkZXIgd2hpY2ggY29udGFpbnMgdGhlIGxpc3Qgb2YgcGFzdGVib2FyZCB0eXBl
cyB0aGF0IGFyZSBzYWZlIHRvIGV4cG9zZSB0byBiaW5kaW5ncy4gVGhlc2UKKyAgICAgICAgbWF5
IGluY2x1ZGUgdHlwZXMgc3VjaCBhcyAidGV4dC9wbGFpbiIsICJ0ZXh0L2h0bWwiLCAidGV4dC91
cmktbGlzdCIsIGFuZCAiaW1hZ2UvcG5nIi4KKworICAgICAgICBUbyBkaXN0aW5ndWlzaCB0aGlz
IGxpc3QgZnJvbSB0aGUgZXhpc3RpbmcgY29udGVudFR5cGVzQnlGaWRlbGl0eSBsaXN0LCBJJ3Zl
IGFsc28gcmVuYW1lZCBjb250ZW50VHlwZXNCeUZpZGVsaXR5CisgICAgICAgIHRvIHBsYXRmb3Jt
VHlwZXNCeUZpZGVsaXR5LCB0byBtYWtlIGl0IG1vcmUgb2J2aW91cyB0aGF0IHRoaXMgb3RoZXIg
bGlzdCBvZiB0eXBlcyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMsIGFuZCBub3QKKyAgICAgICAgZ2Vu
ZXJhbGx5IHNhZmUgdG8gZXhwb3NlIHRvIHRoZSB3ZWIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKworICAgICAgICBNb3ZlIHNldmVyYWwgaGVscGVycyBvdXQgaW50byBwbGF0Zm9ybS1h
Z25vc3RpYyBjb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZmlsZUNvbnRlbnRTdGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW06IEFkZGVk
LgorCisgICAgICAgIEFkZCBhIG5ldyBmaWxlIHRvIGNvbnRhaW4gdGhlIGltcGxlbWVudGF0aW9u
IG9mIFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvLCB3aGljaCBpcyB0
aGUgc2FtZQorICAgICAgICBhY3Jvc3MgQ29jb2EgcGxhdGZvcm1zLgorCisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwgY29uc3QpOgorCisgICAgICAgIEFkZGl0
aW9uYWxseSByZWZhY3RvciBhbGwgbWV0aG9kcyBvbiBQbGF0Zm9ybVBhc3RlYm9hcmQgdGhhdCB0
YWtlIHBhc3RlYm9hcmQgaXRlbSBpbmRpY2VzIGFzIHNpZ25lZCBpbnRlZ2VycworICAgICAgICAo
YGludGApIHRvIHJlY2VpdmUgYHNpemVfdGAgdmFsdWVzIGluc3RlYWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybVBh
c3RlYm9hcmRMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkU3RyaW5nIGNvbnN0KToKKworICAgICAgICBBZGQgYW4gaW1wbGVtZW50YXRpb24gc3R1
YiBmb3IgV1BFLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vZGVyblBhc3RlYm9hcmRUeXBlRm9yV2ViU2FmZU1J
TUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OndlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3Rl
Ym9hcmRUeXBlKToKKworICAgICAgICBBZGQgaGVscGVycyB0byBjb252ZXJ0IGJldHdlZW4gbW9k
ZXJuIE5TUGFzdGVib2FyZFR5cGVzIGFuZCB3ZWItc2FmZSB0eXBlcy4gV2hpbGUgc29tZSBsb2dp
YyBleGlzdHMgdG9kYXkgb24KKyAgICAgICAgbWFjT1MgdG8gY29udmVydCBiZXR3ZWVuIGxlZ2Fj
eSBwYXN0ZWJvYXJkIHR5cGVzIGFuZCB3ZWItc2FmZSB0eXBlcywgY29udmVyc2lvbiBiZXR3ZWVu
IHRoZSBtb2Rlcm4gcGFzdGVib2FyZAorICAgICAgICB0eXBlcyBhbmQgd2ViLXNhZmUgdHlwZXMg
YXJlIG5lZWRlZCBzaW5jZSBOU1Bhc3RlYm9hcmRJdGVtJ3MgdHlwZXMgb25seSBzdXBwb3J0IE5T
UGFzdGVib2FyZFR5cGVzIGFuZAorICAgICAgICBkeW5hbWljYWxseSBkZWNsYXJlZCB0eXBlcyB0
aGF0IG1hdGNoIHRoZSBmb3JtYXQgb2YgYSB1bml2ZXJzYWwgdHlwZSBpZGVudGZpZXIgKGZvciBp
bnN0YW5jZSwgImNvbS5mb28uYmFyIikuCisKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6Y291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKworICAgICAgICBJbXBsZW1lbnQgYWxs
IG9mIHRoZXNlIGhlbHBlcnMgYnkgbG9va2luZyB1cCB0aGUgTlNQYXN0ZWJvYXJkSXRlbSBhdCB0
aGUgZ2l2ZW4gaXRlbSBpbmRleCBhbmQgcXVlcnlpbmcgaXQgZm9yCisgICAgICAgIGRhdGEgZm9y
IG5vbi1sZWdhY3kgcGFzdGVib2FyZCB0eXBlcy4KKworICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjppdGVtQXRJbmRleCBjb25zdCk6CisKIDIwMTktMTAtMDggIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVd
IEZpeCBub24tdW5pZmllZCBidWlsZHMgYWZ0ZXIgcjI1MDQ4NgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwZWFiMDQ3
MGU0MmEyOGRjYzE2MGNhZGFiODYxNmJlODNiZmMyZmE4Li5mMjE5YjYwMDIzMTM2MGNiMmI1YjFi
YmZkZGM0MDg0OWI4MmRkMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTEwLTA4
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlw
Ym9hcmQgQVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkIGl0ZW0gcmVhZGluZyBmdW5jdGlvbnMgdG8g
d29yayBvbiBib3RoIGlPUyBhbmQgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGlPUy1zcGVjaWZpYyBwYXN0ZWJvYXJkIGZ1bmN0
aW9ucyB0byBiZSBwbGF0Zm9ybS1hZ25vc3RpYy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFz
dGVib2FyZEl0ZW1JbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
c3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlV2ViQ29udGVudFRv
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVJ
bWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6
d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBh
c3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy93cGUvV2ViUGFzdGVib2FyZFByb3h5V1BFLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJv
bVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAx
OS0xMC0wOCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1dQRV0gRml4IG5vbi11bmlmaWVkIGJ1aWxkcyBhZnRlciByMjUwNDg2CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjI0ZWMxNDBjODUwNjZiMzA4YjNkMmU3Y2Y0
YjkzYzYzOTNkNmFmYS4uOWJmZmUzYmNiYjBmY2YyYzdkYzYyOGJhZWM0ZmIyNjgyZTMzNzNjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTA4
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlw
Ym9hcmQgQVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkIGl0ZW0gcmVhZGluZyBmdW5jdGlvbnMgdG8g
d29yayBvbiBib3RoIGlPUyBhbmQgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGlPUy1zcGVjaWZpYyBwYXN0ZWJvYXJkIGZ1bmN0
aW9ucyB0byBiZSBwbGF0Zm9ybS1hZ25vc3RpYy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRl
bUluZm8pOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9t
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzKToKKwogMjAxOS0xMC0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgSURMIGZvciByZXF1ZXN0SWRsZUNhbGxiYWNrCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMDY5MmE4ZjdiN2QxODIwNjNlNTM3MGRiMzg5Yjcy
ZDc5YmE4YzliLi4wOTU3OTQzY2M0ZmViZTM5ZGQ3MGExMjhlZTZjNGY3MTgxYTYwMjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE5OCw2ICsxOTgsNyBAQCBwbGF0Zm9ybS9jb2NvYS9N
SU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLm1tCiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbQogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCitwbGF0Zm9ybS9jb2Nv
YS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KIHBsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrc0NvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
N2EzYTliZGFlZjg3Mzk5YzA4ZjliM2ZiMzI3ZjBmNzVjODQ5NGU0Yy4uZDkyYjc2MmVmOTRkNTEw
ZjBmN2Q2Yzg5YTA3MWE4N2VkZGEwNjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUxOTMsNiArMTUxOTMsNyBAQAogCQlG
NDRFQkJEQTFEQjVERDlEMDAyNzczMzQgLyogU3RhdGljUmFuZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDVDMjMxQjE5OTVCNzNCMDBBNkUyRTMgLyogQXhpc1Njcm9sbFNuYXBP
ZmZzZXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF4aXNTY3Jv
bGxTbmFwT2Zmc2V0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUMyMzFD
MTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY0NjI4QTlFMjM0RDNCQkYwMEJDODg0QyAvKiBQbGF0Zm9ybVBh
c3RlYm9hcmRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFBsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDY3MjkyNTFFMERFNUFCMDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDc4NzU1MjE5OTgzQUZGMDAyNEEyODcgLyog
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQ3ODc1NTMxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjcwOCw2ICsyMjcw
OSw3IEBACiAJCQkJQTE4ODkwQUQxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLmggKi8sCiAJCQkJQTE4ODkwQUMxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tICovLAogCQkJCTlCRUQyQ0FGMUY3Q0MwNjIwMDY2
NjAxOCAvKiBQYXN0ZWJvYXJkQ29jb2EubW0gKi8sCisJCQkJRjQ2MjhBOUUyMzREM0JCRjAwQkM4
ODRDIC8qIFBsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tICovLAogCQkJCTUyQjBENEJEMUM1N0ZE
MUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCAqLywKIAkJCQlDREEyOUEwODFDQkQ5OUY0MDA5
MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggKi8sCiAJCQkJQ0RBMjlBMEExQ0JE
OUE3NDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDU1NWVjMjgyZTRiYjY2ZTVmOWQxMTEyMGI5NzYx
YTcyNWViYzNmMzQuLjhmOWJhYjg0NTYxMGQwZjkxMDdkODIzMGRmMjNlZWYxZmIwMWMxNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC05OCw0ICs5OCwyOSBAQCBW
ZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkQWxsU3RyaW5ncyhjb25zdCBTdHJpbmcmIHR5
cGUpCiAKICNlbmRpZgogCitWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjph
bGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdAoreworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1l
KCkpOworfQorCitQYXN0ZWJvYXJkSXRlbUluZm8gUGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1J
bmZvKHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4
LCBuYW1lKCkpOworfQorCitTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgs
IHR5cGUsIG5hbWUoKSk7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCit7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCkpOworfQorCitVUkwgUGFz
dGVib2FyZDo6cmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpCit7CisgICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFVSTEZy
b21QYXN0ZWJvYXJkKGluZGV4LCBuYW1lKCksIHRpdGxlKTsKK30KKwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBmYjg2MGUxMzg0NTIxYTk4OTVjNDdhNTJiNDlhMjQz
MmJhM2ZkODVhLi42OTg3ZWQyNTY1M2ZiNmM5YzY4YjNhMzdhZjc3NjA0YzA4YjY2OTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0yNjUsMTEgKzI2NSwxNiBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRDb2Nv
YVR5cGVBc0ZpbGUoY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5T
QXJyYXkgKnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlwZXMoKTsKLSAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CiAgICAgbG9u
ZyBjaGFuZ2VDb3VudCgpIGNvbnN0OwogICAgIGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBy
ZWFkQ3VzdG9tRGF0YSgpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjb25z
dCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CisjZWxz
ZQorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
IH0KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIENPTVB0cjxJRGF0YU9iamVjdD4g
ZGF0YU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YU9iamVjdDsgfQogICAgIHZvaWQgc2V0
RXh0ZXJuYWxEYXRhT2JqZWN0KElEYXRhT2JqZWN0Kik7CkBAIC0yNzksNiArMjg0LDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIHdyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYsIGNvbnN0IFVS
TCYpOyAvLyBGSVhNRTogTGF5ZXJpbmcgdmlvbGF0aW9uLgogI2VuZGlmCiAKKyAgICBWZWN0b3I8
UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdDsKKyAgICBQ
YXN0ZWJvYXJkSXRlbUluZm8gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7
CisKKyAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4
LCBTdHJpbmcmIHRpdGxlKTsKKwogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgcmVzcGVjdHNVVElGaWRlbGl0aWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCmluZGV4IGQxZDIzMDhhZDk5NWFjZjljN2E1
ZjUzZGVkOWZkMmEwODBlZWNmNzUuLjNiMzk3YzM3MzRkMzJhMGZiNjBlNzAzMWVmOWQwYmM1YWI0
ODMyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVt
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5o
CkBAIC02NiwxOCArNjYsMjAgQEAgT3B0aW9uYWw8UHJlc2VudGF0aW9uU2l6ZT4gUHJlc2VudGF0
aW9uU2l6ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKIHN0cnVjdCBQYXN0ZWJvYXJkSXRl
bUluZm8gewogICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzRm9yRmlsZVVwbG9hZDsKLSAgICBWZWN0
b3I8U3RyaW5nPiBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkOwotICAgIFZlY3RvcjxTdHJpbmc+
IGNvbnRlbnRUeXBlc0J5RmlkZWxpdHk7CisgICAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1UeXBl
c0ZvckZpbGVVcGxvYWQ7CisgICAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1UeXBlc0J5RmlkZWxp
dHk7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVOYW1lOwogICAgIFByZXNlbnRhdGlvblNpemUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTsKICAgICBib29sIGlzTm9uVGV4dFR5cGUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQgeyBmYWxz
ZSB9OworICAgIFZlY3RvcjxTdHJpbmc+IHdlYlNhZmVUeXBlc0J5RmlkZWxpdHk7CisgICAgaW50
IGNoYW5nZUNvdW50IHsgMCB9OwogICAgIFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgeyBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0
eWxlOjpVbnNwZWNpZmllZCB9OwogCiAgICAgU3RyaW5nIHBhdGhGb3JDb250ZW50VHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQocGF0aHNGb3JGaWxl
VXBsb2FkLnNpemUoKSA9PSBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLnNpemUoKSk7Ci0gICAg
ICAgIGF1dG8gaW5kZXggPSBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLmZpbmQodHlwZSk7Cisg
ICAgICAgIEFTU0VSVChwYXRoc0ZvckZpbGVVcGxvYWQuc2l6ZSgpID09IHBsYXRmb3JtVHlwZXNG
b3JGaWxlVXBsb2FkLnNpemUoKSk7CisgICAgICAgIGF1dG8gaW5kZXggPSBwbGF0Zm9ybVR5cGVz
Rm9yRmlsZVVwbG9hZC5maW5kKHR5cGUpOwogICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xMDQsMTAgKzEwNiwxMCBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZEl0ZW1JbmZvIHsKIAogICAgIFN0cmluZyBjb250ZW50VHlwZUZvckhpZ2hlc3RG
aWRlbGl0eUl0ZW0oKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRlbnRUeXBlc0ZvckZp
bGVVcGxvYWQuaXNFbXB0eSgpKQorICAgICAgICBpZiAocGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxv
YWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICByZXR1cm4g
Y29udGVudFR5cGVzRm9yRmlsZVVwbG9hZC5maXJzdCgpOworICAgICAgICByZXR1cm4gcGxhdGZv
cm1UeXBlc0ZvckZpbGVVcGxvYWQuZmlyc3QoKTsKICAgICB9CiAKICAgICBTdHJpbmcgcGF0aEZv
ckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKSBjb25zdApAQCAtMTI1LDcgKzEyNyw3IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkSXRlbUluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgUGFzdGVi
b2FyZEl0ZW1JbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNv
ZGVyIDw8IHBhdGhzRm9yRmlsZVVwbG9hZCA8PCBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkIDw8
IGNvbnRlbnRUeXBlc0J5RmlkZWxpdHkgPDwgc3VnZ2VzdGVkRmlsZU5hbWUgPDwgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSA8PCBpc05vblRleHRUeXBlIDw8IGNvbnRhaW5zRmlsZVVSTEFuZEZp
bGVVcGxvYWRDb250ZW50OworICAgIGVuY29kZXIgPDwgcGF0aHNGb3JGaWxlVXBsb2FkIDw8IHBs
YXRmb3JtVHlwZXNGb3JGaWxlVXBsb2FkIDw8IHBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5IDw8IHN1
Z2dlc3RlZEZpbGVOYW1lIDw8IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPDwgaXNOb25UZXh0
VHlwZSA8PCBjb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudCA8PCB3ZWJTYWZlVHlw
ZXNCeUZpZGVsaXR5IDw8IGNoYW5nZUNvdW50OwogICAgIGVuY29kZXIuZW5jb2RlRW51bShwcmVm
ZXJyZWRQcmVzZW50YXRpb25TdHlsZSk7CiB9CiAKQEAgLTEzNiwxMCArMTM4LDEwIEBAIE9wdGlv
bmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYXRoc0ZvckZpbGVV
cGxvYWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZCkpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQpKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29u
dGVudFR5cGVzQnlGaWRlbGl0eSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGxh
dGZvcm1UeXBlc0J5RmlkZWxpdHkpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVkRmlsZU5hbWUpKQpAQCAtMTU0
LDYgKzE1NiwxMiBAQCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVt
SW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViU2Fm
ZVR5cGVzQnlGaWRlbGl0eSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGFuZ2VDb3VudCkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQucHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGRjMTZm
MGZhMGM1YTkwMTJjNjUyNWY1YTk1MzBmZTc2NTgxNTEzNjUuLjU3N2NhZjg5NWJlYjE5Nzk4OTky
NzAxZWQ1ZmY4YWM3MDUyMGYzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCkBAIC00NiwxMiArNDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwotICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2aXJ0dWFs
IFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlk
ZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC03Myw2ICs2NywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBsb25nIHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKICNlbmRpZgorICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2
aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgdmlydHVhbCBQYXN0
ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxQYXN0
ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgPSAwOwogICAgIHZpcnR1YWwgbG9uZyB3
cml0ZUN1c3RvbURhdGEoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CkBAIC04NCw3ICs4NCw2IEBAIHB1YmxpYzoKIAogI2lmIFVT
RShMSUJXUEUpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cykgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBlMDMzMTUwOThlMTU1YTkyNmY3MTk4ZTJj
NzI2YjM3NTdjMTI0NDJmLi5kZjAzOTNlMzVmY2E1YjdkYjAzNDYzMDM3NjBhZmVjNmFkYWE2YzMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAt
MzMsNiArMzMsNyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogT0JKQ19DTEFTUyBOU1Bhc3RlYm9h
cmQ7CitPQkpDX0NMQVNTIE5TUGFzdGVib2FyZEl0ZW07CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCkBAIC01OSwxMCArNjAsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBVU0UoTElCV1BFKQogICAgIFdFQkNP
UkVfRVhQT1JUIFBsYXRmb3JtUGFzdGVib2FyZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbygpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGlu
dCBpbmRleCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKICNlbmRpZgorICAgIFdFQkNP
UkVfRVhQT1JUIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCBpbmRleCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5m
bz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0
cmluZyB1bmlxdWVOYW1lKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHBs
YXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0
IFN0cmluZyYgZG9tVHlwZSk7CkBAIC05MCw5ICs5MSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJM
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoaW50IGlu
ZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBudW1iZXJPZkZpbGVzKCkgY29uc3Q7CiAKQEAgLTEwOSw2ICsxMTAsMTAgQEAgcHJp
dmF0ZToKICAgICBib29sIGFsbG93UmVhZGluZ1VSTEF0SW5kZXgoY29uc3QgVVJMJiwgaW50IGlu
ZGV4KSBjb25zdDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIE5TUGFzdGVib2Fy
ZEl0ZW0gKml0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3Q7CisjZW5kaWYKKwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBtX3Bhc3RlYm9hcmQ7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQppbmRleCAyNjQ3NDgwYmRhNzJiZjM2MzMyZTU0MmZlMTc3ZmZjMjY5OGZmMjg3Li5jMGZi
YTRiZWYwNzUxNWRlNGFkMjU0YjQwMzcwN2YxMWI1Y2IxNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0xNDgsNyArMTQ4LDcg
QEAgUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZSBQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0
YXRlKCkKICAgICAgICAgLy8gSWYgdGhlIGl0ZW0gY2FuJ3QgYmUgdHJlYXRlZCBhcyBhbiBhdHRh
Y2htZW50LCBpdCdzIHZlcnkgbGlrZWx5IHRoYXQgdGhlIGNvbnRlbnQgYmVpbmcgZHJvcHBlZCBp
cyBqdXN0CiAgICAgICAgIC8vIGFuIGlubGluZSBwaWVjZSBvZiB0ZXh0LCB3aXRoIG5vIGZpbGVz
IGluIHRoZSBwYXN0ZWJvYXJkIChhbmQgdGhlcmVmb3JlLCBubyByaXNrIG9mIGxlYWtpbmcgZmls
ZSBwYXRocwogICAgICAgICAvLyB0byB3ZWIgY29udGVudCkuIEluIGNhc2VzIHN1Y2ggYXMgdGhl
c2UsIHdlIHNob3VsZCBub3Qgc3VwcHJlc3MgRGF0YVRyYW5zZmVyIGFjY2Vzcy4KLSAgICAgICAg
YXV0byBpdGVtcyA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
YWxsUGFzdGVib2FyZEl0ZW1JbmZvKG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBhdXRvIGl0
ZW1zID0gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7CiAgICAgICAgIG1heUNvbnRhaW5GaWxlUGF0
aHMgPSBpdGVtcy5zaXplKCkgIT0gMSB8fCBub3RGb3VuZCAhPSBpdGVtcy5maW5kTWF0Y2hpbmco
W10gKGF1dG8mIGl0ZW0pIHsKICAgICAgICAgICAgIHJldHVybiBpdGVtLmNhbkJlVHJlYXRlZEFz
QXR0YWNobWVudE9yRmlsZSgpIHx8IGl0ZW0uaXNOb25UZXh0VHlwZSB8fCBpdGVtLmNvbnRhaW5z
RmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50OwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzQ5NTQzM2VhY2U5NjhiNjM2MmY2ZTU2YzQ0Y2Q1ODgzM2RhZWJjNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFz
dGVib2FyZENvY29hLm1tCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgorCisjaW1wb3J0ICJQYXN0
ZWJvYXJkSXRlbUluZm8uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWZWN0b3I8UGFzdGVi
b2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbygp
Cit7CisgICAgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gaXRlbUluZm87CisgICAgaW50IG51
bWJlck9mSXRlbXMgPSBjb3VudCgpOworICAgIGl0ZW1JbmZvLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobnVtYmVyT2ZJdGVtcyk7CisgICAgZm9yIChOU0ludGVnZXIgaXRlbUluZGV4ID0gMDsgaXRl
bUluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpdGVtSW5kZXgpCisgICAgICAgIGl0ZW1JbmZvLnVu
Y2hlY2tlZEFwcGVuZChpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGl0ZW1JbmRleCkpOworICAg
IHJldHVybiBpdGVtSW5mbzsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAwMjcxYjkzZTcwNWNl
MmM0MmQ2MzJmZTJkYjI5YWE0NmU4MzZkMjM5Li5lMWNlMmYzNGI1YzE0YmEyODk3N2I4YjgxZTdk
NmQyY2M2MmI4NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3Rp
bmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsCiAgICAg
ICAgIC8vIFRyeSB0byByZWFkIGRhdGEgZnJvbSBlYWNoIHR5cGUgaWRlbnRpZmllciB0aGF0IHRo
aXMgcGFzdGVib2FyZCBpdGVtIHN1cHBvcnRzLCBhbmQgV2ViS2l0IGFsc28gcmVjb2duaXplcy4g
VHlwZSBpZGVudGlmaWVycyBhcmUKICAgICAgICAgLy8gcmVhZCBpbiBvcmRlciBvZiBmaWRlbGl0
eSwgYXMgc3BlY2lmaWVkIGJ5IGVhY2ggcGFzdGVib2FyZCBpdGVtLgogICAgICAgICBSZWFkZXJS
ZXN1bHQgcmVzdWx0ID0gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKLSAgICAgICAgZm9y
IChhdXRvJiB0eXBlIDogaW5mby5jb250ZW50VHlwZXNCeUZpZGVsaXR5KSB7CisgICAgICAgIGZv
ciAoYXV0byYgdHlwZSA6IGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkpIHsKICAgICAgICAg
ICAgIGlmICghaXNUeXBlQWxsb3dlZEJ5UmVhZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBkOGM1NmY5NWFhYTNmMzZmZWJm
MTQwM2QwOTdhYThjN2I3MWE1NTFlLi45MTZkYWViZDBhMjc4MGM5MzYzZDM1NTk4NWE5YjYxMmVm
NDFkMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KQEAgLTExNiwxNyArMTE2LDkgQEAgc3RhdGljIFBhc3RlYm9hcmRJ
dGVtUHJlc2VudGF0aW9uU3R5bGUgcGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShVSVBy
ZWZlcnIKIAogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxF
X0FORF9URUFNX0RBVEEKIAotVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKQorUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRm
b3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
Ci0gICAgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gaXRlbUluZm87Ci0gICAgZm9yIChOU0lu
dGVnZXIgaXRlbUluZGV4ID0gMDsgaXRlbUluZGV4IDwgW21fcGFzdGVib2FyZCBudW1iZXJPZkl0
ZW1zXTsgKytpdGVtSW5kZXgpCi0gICAgICAgIGl0ZW1JbmZvLmFwcGVuZChpbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KGl0ZW1JbmRleCkpOwotICAgIHJldHVybiBpdGVtSW5mbzsKLX0KLQotUGFz
dGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChpbnQgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVy
T2ZJdGVtc10pCisgICAgaWYgKGluZGV4ID49IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KFttX3Bh
c3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgUGFz
dGVib2FyZEl0ZW1JbmZvIGluZm87CkBAIC0xNDAsMTUgKzEzMiwxNSBAQCBQYXN0ZWJvYXJkSXRl
bUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBp
bmRleCkKICAgICAgICAgZm9yIChOU1VSTCAqdXJsIGluIHVybHMpCiAgICAgICAgICAgICBpbmZv
LnBhdGhzRm9yRmlsZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQodXJsLnBhdGgpOwogCi0gICAgICAg
IGluZm8uY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZp
bGVUeXBlcy5jb3VudCk7CisgICAgICAgIGluZm8ucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmaWxlVHlwZXMuY291bnQpOwogICAgICAgICBmb3IgKE5T
U3RyaW5nICpmaWxlVHlwZSBpbiBmaWxlVHlwZXMpCi0gICAgICAgICAgICBpbmZvLmNvbnRlbnRU
eXBlc0ZvckZpbGVVcGxvYWQudW5jaGVja2VkQXBwZW5kKGZpbGVUeXBlKTsKKyAgICAgICAgICAg
IGluZm8ucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQudW5jaGVja2VkQXBwZW5kKGZpbGVUeXBl
KTsKICAgICB9IGVsc2UgewogICAgICAgICBOU0FycmF5ICpmaWxlVHlwZXMgPSBpdGVtUHJvdmlk
ZXIud2ViX2ZpbGVVcGxvYWRDb250ZW50VHlwZXM7Ci0gICAgICAgIGluZm8uY29udGVudFR5cGVz
Rm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5jb3VudCk7Cisg
ICAgICAgIGluZm8ucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShmaWxlVHlwZXMuY291bnQpOwogICAgICAgICBpbmZvLnBhdGhzRm9yRmlsZVVwbG9hZC5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5jb3VudCk7CiAgICAgICAgIGZvciAoTlNT
dHJpbmcgKmZpbGVUeXBlIGluIGZpbGVUeXBlcykgewotICAgICAgICAgICAgaW5mby5jb250ZW50
VHlwZXNGb3JGaWxlVXBsb2FkLnVuY2hlY2tlZEFwcGVuZChmaWxlVHlwZSk7CisgICAgICAgICAg
ICBpbmZvLnBsYXRmb3JtVHlwZXNGb3JGaWxlVXBsb2FkLnVuY2hlY2tlZEFwcGVuZChmaWxlVHlw
ZSk7CiAgICAgICAgICAgICBpbmZvLnBhdGhzRm9yRmlsZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQo
eyB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2OCw5ICsxNjAsOSBAQCBQYXN0ZWJvYXJkSXRl
bUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBp
bmRleCkKICAgICBpbmZvLmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50ID0gaXRl
bVByb3ZpZGVyLndlYl9jb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudDsKICAgICBp
bmZvLnN1Z2dlc3RlZEZpbGVOYW1lID0gaXRlbVByb3ZpZGVyLnN1Z2dlc3RlZE5hbWU7CiAgICAg
TlNBcnJheTxOU1N0cmluZyAqPiAqcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyA9IGl0ZW1Qcm92
aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzOwotICAgIGluZm8uY29udGVudFR5cGVzQnlG
aWRlbGl0eS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMu
Y291bnQpOworICAgIGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzLmNvdW50KTsKICAgICBmb3IgKE5TU3Ry
aW5nICp0eXBlSWRlbnRpZmllciBpbiByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7Ci0gICAg
ICAgIGluZm8uY29udGVudFR5cGVzQnlGaWRlbGl0eS51bmNoZWNrZWRBcHBlbmQodHlwZUlkZW50
aWZpZXIpOworICAgICAgICBpbmZvLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5LnVuY2hlY2tlZEFw
cGVuZCh0eXBlSWRlbnRpZmllcik7CiAgICAgICAgIENGU3RyaW5nUmVmIGNmVHlwZUlkZW50aWZp
ZXIgPSAoQ0ZTdHJpbmdSZWYpdHlwZUlkZW50aWZpZXI7CiAgICAgICAgIGlmICghVVRUeXBlSXNE
ZWNsYXJlZChjZlR5cGVJZGVudGlmaWVyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTkw
LDE3ICsxODIsMTQgQEAgUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIGluZm8uaXNOb25UZXh0
VHlwZSA9IHRydWU7CiAgICAgfQogCisgICAgaW5mby5jaGFuZ2VDb3VudCA9IGNoYW5nZUNvdW50
KCk7CisKICAgICByZXR1cm4gaW5mbzsKIH0KIAogI2Vsc2UKIAotUGFzdGVib2FyZEl0ZW1JbmZv
IFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQpCi17Ci0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKQorUGFzdGVib2FyZEl0ZW1JbmZvIFBs
YXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QpCiB7CiAg
ICAgcmV0dXJuIHsgfTsKIH0KQEAgLTY1Niw3ICs2NDUsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIE5TSW5kZXhT
ZXQgKmluZGV4U2V0ID0gW05TSW5kZXhTZXQgaW5kZXhTZXRXaXRoSW5kZXg6aW5kZXhdOwogCkBA
IC02NjcsNyArNjU2LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXAKICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtLmdldCgpIG9iamVjdEF0SW5kZXg6MF0p
OwogfQogCi1TdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBp
ZiAodHlwZSA9PSBTdHJpbmcoa1VUVHlwZVVSTCkpIHsKICAgICAgICAgU3RyaW5nIHRpdGxlOwpA
QCAtNjk3LDcgKzY4Niw3IEBAIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmco
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCi1VUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkVVJMKGludCBpbmRleCwgU3RyaW5n
JiB0aXRsZSkgY29uc3QKK1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwoc2l6ZV90IGlu
ZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdAogewogICAgIGlkIHZhbHVlID0gW21fcGFzdGVib2Fy
ZCB2YWx1ZXNGb3JQYXN0ZWJvYXJkVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVJM
IGluSXRlbVNldDpbTlNJbmRleFNldCBpbmRleFNldFdpdGhJbmRleDppbmRleF1dLmZpcnN0T2Jq
ZWN0OwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9s
aWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKaW5kZXggZjhhNjFlYzcwYzBjMWE0Y2QzNzdmMGU3
Y2Q2NzZlZmI5ZGU1YmM4YS4uNDNiYTllNGRlYTVmNjVhNzYwOWUzMzJlYWQyZmViNzNkZjNiMzI0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRM
aWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZE9yaWdp
bigpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkK
IHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgdHlwZSk7CisgICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKDAsIHR5cGUsIG5hbWUoKSk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
SW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikKIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRQbGFpblRleHQmIHRleHQpCiB7Ci0gICAgdGV4dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwg
InRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIpOworICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KDAsICJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCBuYW1lKCkpOwogfQogCiB2b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGlu
Z1BvbGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0
Zm9ybVBhc3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3Bl
L1BsYXRmb3JtUGFzdGVib2FyZExpYldQRS5jcHAKaW5kZXggMGZkYjc1ZGFmNjlkNThlNWRlMDFh
MTRiMWU1ZWQ1YTdiOGQ5NDdjZi4uZTU0MGMzNWQ1M2ZmYTQxMTMyMWI4ODE4YjJiZWE2MjA2YjU3
NWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3Jt
UGFzdGVib2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3Bl
L1BsYXRmb3JtUGFzdGVib2FyZExpYldQRS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB3cGVf
cGFzdGVib2FyZF9zdHJpbmdfdmVjdG9yX2ZyZWUoJnBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKLVN0
cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoaW50LCBjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CitTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIHN0cnVjdCB3cGVfcGFzdGVib2FyZF9z
dHJpbmcgc3RyaW5nID0geyBudWxscHRyLCAwIH07CiAgICAgd3BlX3Bhc3RlYm9hcmRfZ2V0X3N0
cmluZyhtX3Bhc3RlYm9hcmQsIHR5cGUudXRmOCgpLmRhdGEoKSwgJnN0cmluZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpp
bmRleCAwY2IxZGQ4YjkzMGEwNjViN2MwODAxNWNhMmUwY2U1ZGJkNWIyYjQ5Li5jNWExMTk3MmI2
MjgyNDAzMjdhZjQ4N2M2ODkwMmZmZjE2NmFlYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTM4NCw2ICszODQs
MTE2IEBAIGxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhCiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7
CiB9CiAKK3N0YXRpYyBOU1Bhc3RlYm9hcmRUeXBlIG1vZGVyblBhc3RlYm9hcmRUeXBlRm9yV2Vi
U2FmZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgd2ViU2FmZVR5cGUpCit7CisgICAgaWYgKHdlYlNh
ZmVUeXBlID09ICJ0ZXh0L3BsYWluIikKKyAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVT
dHJpbmc7CisgICAgaWYgKHdlYlNhZmVUeXBlID09ICJ0ZXh0L2h0bWwiKQorICAgICAgICByZXR1
cm4gTlNQYXN0ZWJvYXJkVHlwZUhUTUw7CisgICAgaWYgKHdlYlNhZmVUeXBlID09ICJ0ZXh0L3Vy
aS1saXN0IikKKyAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVVUkw7CisgICAgaWYgKHdl
YlNhZmVUeXBlID09ICJpbWFnZS9wbmciKQorICAgICAgICByZXR1cm4gTlNQYXN0ZWJvYXJkVHlw
ZVBORzsKKyAgICByZXR1cm4gbmlsOworfQorCitlbnVtIGNsYXNzIENvbnRhaW5zRmlsZVVSTCB7
IE5vLCBZZXMgfTsKK3N0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVi
b2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5cGUsIENvbnRhaW5zRmlsZVVSTCBj
b250YWluc0ZpbGVVUkwpCit7CisgICAgaWYgKFtwbGF0Zm9ybVR5cGUgaXNFcXVhbDpOU1Bhc3Rl
Ym9hcmRUeXBlU3RyaW5nXSAmJiBjb250YWluc0ZpbGVVUkwgPT0gQ29udGFpbnNGaWxlVVJMOjpO
bykKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIjsKKyAgICBpZiAoW3BsYXRmb3JtVHlwZSBp
c0VxdWFsOk5TUGFzdGVib2FyZFR5cGVIVE1MXSB8fCBbcGxhdGZvcm1UeXBlIGlzRXF1YWw6TlNQ
YXN0ZWJvYXJkVHlwZVJURl0gfHwgW3BsYXRmb3JtVHlwZSBpc0VxdWFsOk5TUGFzdGVib2FyZFR5
cGVSVEZEXSkKKyAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOworICAgIGlmIChbcGxhdGZvcm1U
eXBlIGlzRXF1YWw6TlNQYXN0ZWJvYXJkVHlwZVVSTF0gJiYgY29udGFpbnNGaWxlVVJMID09IENv
bnRhaW5zRmlsZVVSTDo6Tm8pCisgICAgICAgIHJldHVybiAidGV4dC91cmktbGlzdCI7CisgICAg
aWYgKFtwbGF0Zm9ybVR5cGUgaXNFcXVhbDpOU1Bhc3RlYm9hcmRUeXBlUE5HXSB8fCBbcGxhdGZv
cm1UeXBlIGlzRXF1YWw6TlNQYXN0ZWJvYXJkVHlwZVRJRkZdKQorICAgICAgICByZXR1cm4gImlt
YWdlL3BuZyI7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdAoreworICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChp
bmRleCk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBw
bGF0Zm9ybVR5cGUgPSBtb2Rlcm5QYXN0ZWJvYXJkVHlwZUZvcldlYlNhZmVNSU1FVHlwZSh0eXBl
KTsKKyAgICBpZiAoIXBsYXRmb3JtVHlwZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6cGxhdGZvcm1UeXBlXSkgewor
ICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKKyAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgfQorCisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK1N0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Cit7CisgICAgTlNQYXN0ZWJvYXJk
SXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIWl0ZW0pCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBhdXRvIHBsYXRmb3JtVHlwZSA9IG1vZGVyblBhc3RlYm9hcmRU
eXBlRm9yV2ViU2FmZU1JTUVUeXBlKHR5cGUpOworICAgIGlmICghcGxhdGZvcm1UeXBlKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIFtpdGVtIHN0cmluZ0ZvclR5cGU6cGxhdGZv
cm1UeXBlXTsKK30KKworVVJMIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFVSTChzaXplX3QgaW5k
ZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0Cit7CisgICAgdGl0bGUgPSBlbXB0eVN0cmluZygpOwor
CisgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBp
ZiAoIWl0ZW0pCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHVy
bDsKKyAgICBpZiAoaWQgcHJvcGVydHlMaXN0ID0gW2l0ZW0gcHJvcGVydHlMaXN0Rm9yVHlwZTpO
U1Bhc3RlYm9hcmRUeXBlVVJMXSkKKyAgICAgICAgdXJsID0gYWRvcHROUyhbW05TVVJMIGFsbG9j
XSBpbml0V2l0aFBhc3RlYm9hcmRQcm9wZXJ0eUxpc3Q6cHJvcGVydHlMaXN0IG9mVHlwZTpOU1Bh
c3RlYm9hcmRUeXBlVVJMXSk7CisgICAgZWxzZSBpZiAoTlNTdHJpbmcgKmFic29sdXRlU3RyaW5n
ID0gW2l0ZW0gc3RyaW5nRm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlVVJMXSkKKyAgICAgICAgdXJs
ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6YWJzb2x1dGVTdHJpbmddOworICAgIHJldHVybiB7IFt1
cmwgaXNGaWxlVVJMXSA/IG5pbCA6IHVybC5nZXQoKSB9OworfQorCitpbnQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpjb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgcGFzdGVi
b2FyZEl0ZW1zXS5jb3VudDsKK30KKworUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVi
b2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpCit7CisgICAgTlNQ
YXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIWl0ZW0p
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKKyAg
ICBOU0FycmF5PE5TUGFzdGVib2FyZFR5cGU+ICpwbGF0Zm9ybVR5cGVzID0gW2l0ZW0gdHlwZXNd
OworICAgIGF1dG8gY29udGFpbnNGaWxlVVJMID0gW3BsYXRmb3JtVHlwZXMgY29udGFpbnNPYmpl
Y3Q6TlNQYXN0ZWJvYXJkVHlwZUZpbGVVUkxdID8gQ29udGFpbnNGaWxlVVJMOjpZZXMgOiBDb250
YWluc0ZpbGVVUkw6Ok5vOworICAgIExpc3RIYXNoU2V0PFN0cmluZz4gd2ViU2FmZVR5cGVzOwor
ICAgIGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShw
bGF0Zm9ybVR5cGVzLmNvdW50KTsKKyAgICBmb3IgKE5TUGFzdGVib2FyZFR5cGUgdHlwZSBpbiBw
bGF0Zm9ybVR5cGVzKSB7CisgICAgICAgIGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkudW5j
aGVja2VkQXBwZW5kKHR5cGUpOworICAgICAgICBhdXRvIHdlYlNhZmVUeXBlID0gd2ViU2FmZU1J
TUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUodHlwZSwgY29udGFpbnNGaWxlVVJMKTsKKyAg
ICAgICAgaWYgKHdlYlNhZmVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIHdlYlNhZmVUeXBlcy5hZGQoV1RGTW92ZSh3ZWJTYWZlVHlwZSkpOworICAgIH0K
KyAgICBpbmZvLmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50ID0gY29udGFpbnNG
aWxlVVJMID09IENvbnRhaW5zRmlsZVVSTDo6WWVzOworICAgIGluZm8ud2ViU2FmZVR5cGVzQnlG
aWRlbGl0eSA9IGNvcHlUb1ZlY3Rvcih3ZWJTYWZlVHlwZXMpOworICAgIGluZm8uY2hhbmdlQ291
bnQgPSBjaGFuZ2VDb3VudCgpOworICAgIHJldHVybiBpbmZvOworfQorCitOU1Bhc3RlYm9hcmRJ
dGVtICpQbGF0Zm9ybVBhc3RlYm9hcmQ6Oml0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QK
K3sKKyAgICBOU0FycmF5PE5TUGFzdGVib2FyZEl0ZW0gKj4gKml0ZW1zID0gW21fcGFzdGVib2Fy
ZCBwYXN0ZWJvYXJkSXRlbXNdOworICAgIHJldHVybiBpbmRleCA+PSBpdGVtcy5jb3VudCA/IG5p
bCA6IGl0ZW1zW2luZGV4XTsKK30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbQppbmRleCBkZTM5NWRhOTZmY2RhOTgxN2MxZTI2ZTdkNmU1ZmQzMzM5NmYzYmYw
Li4wYTE4MTc0NDUxMGU4M2E4ZjMxYmI2YTE1ZTZjZWQ2MjI1NGNmMjgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbQpAQCAtMTgwLDQxICsxODAsMzQgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRl
Q3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGEKICAgICBj
b21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRl
KGRhdGEpKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLXZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp3cml0ZVVSTFRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwpOwotfQotCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6d3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRX
ZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQYXN0ZWJvYXJkSXRl
bUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoY29udGVudCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8o
KSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJk
KGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBhc3RlYm9hcmRJdGVtSW5mbyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4
KSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4
dCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5jb3VudCgpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGlu
ZGV4LCBwYXN0ZWJvYXJkVHlwZSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0
bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRV
UkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIFN0cmluZyB1
cmwgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRp
dGxlKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVybCksIFdURk1vdmUodGl0bGUp
KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6
OkhhbmRsZSYmLCB1aW50NjRfdCBzaXplKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYsIHVpbnQ2NF90
IHNpemUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihp
bmRleCwgcGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjMxLDE5ICsyMjQs
MjYgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1
aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoaGFuZGxlKSwgc2l6ZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0
ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3Rl
Ym9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuY291bnQoKSk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS53cml0ZSh1cmwpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkpOworICAgIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoY29udGVudCk7CiB9CiAKLXZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQYXN0
ZWJvYXJkSXRlbUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
SW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsK
LSAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgpKTsKKyAgICBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7Cit9CisKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCit7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShw
YXN0ZWJvYXJkVHlwZSwgdGV4dCk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp1cGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZp
ZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtMjUxLDYgKzI1MSw2IEBAIHZv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwogfQogCi0j
ZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3Bw
CmluZGV4IDdiZmY5MzRiZmQ2MzE5OTRkNTU2MmE4NjkzNGExMWI5N2MyODQxYWMuLjI1YTRkZDcy
ZDVkYjg1OGM1NGFkNjFhOWE5ZTk1ZGMyZDE3MTBiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcApAQCAtMjYsOSArMjYsMTEgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHkuaCIKIAorI2luY2x1
ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzMsNiArNzUsMzYgQEAgdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSYsIGMKICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKIH0KIAordm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cit9CisKK3ZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCwgY29u
c3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQYXN0ZWJvYXJkSXRlbUluZm8mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30K
Kwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOworfQorCit2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKwordm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QsIGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0
aXRsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
LCB7IH0pOworfQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpemVfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OkhhbmRsZSYmLCB1aW50NjRfdCBzaXplKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworfQorCiAj
ZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhc3RlYm9hcmRQcm94eS5oCmluZGV4IDBlMGUyMTU2OTU4OGM4ZDQ3MDVjOTcxZGMxYmQz
YmRhODUzMTkzMWIuLmFkYmMyMjZhZGI4ZWY1MmVhMzcxOGVhMDY1NmE4OWY1MTBiOGI5MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCkBAIC03Mywx
MiArNzMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJk
KGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7CiAgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAg
IHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgdm9p
ZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKLSAgICB2b2lkIHJlYWRVUkxGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJik7Ci0gICAgdm9p
ZCByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpIYW5kbGUmJiwgdWludDY0X3Qgc2l6ZSk+JiYpOwot
ICAgIHZvaWQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgYWxs
UGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYp
OwotICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvJiYpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMDEsNiAr
OTUsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogI2VuZGlmCiAKKyAgICB2b2lkIHJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmKTsKKyAgICB2b2lkIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRN
ZW1vcnk6OkhhbmRsZSYmLCB1aW50NjRfdCBzaXplKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBpbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8mJik+JiYpOworICAgIHZv
aWQgYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4m
Jik+JiYpOworCiAgICAgdm9pZCB3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAgICAgdm9pZCB0eXBlc1NhZmVGb3JET01Ub1Jl
YWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAKQEAg
LTExNCw3ICsxMTUsNiBAQCBwcml2YXRlOgogCiAjaWYgVVNFKExJQldQRSkKICAgICB2b2lkIGdl
dFBhc3RlYm9hcmRUeXBlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKLSAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJik+JiYpOwogICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50Jik7CiAgICAgdm9pZCB3cml0ZVN0cmluZ1RvUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGQzZWEzYmE0MjljODdmNTdjYjhjMmE5ODQxODM2ZDBkYzVk
Y2FlYWQuLjY5MWQwMjUzNzE4YzAyYTBkZTBhNmJlOGUzNGQyMTAzNGUwMDNhMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTI2LDE3ICsyNiwxNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXN0ZWJvYXJkUHJveHkg
ewogICAgIFdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVi
b2FyZFdlYkNvbnRlbnQgY29udGVudCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQogICAgIFdyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSBwYXN0ZWJv
YXJkSW1hZ2UsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICAgICBXcml0ZVN0cmluZ1RvUGFzdGVi
b2FyZChTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyB0ZXh0LCBTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUpCi0gICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJp
bmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyBzdHJp
bmcpIFN5bmNocm9ub3VzCi0gICAgUmVhZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUpIFN5
bmNocm9ub3VzCi0gICAgUmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBT
dHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFdlYktpdDo6
U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKSBTeW5jaHJvbm91cwot
ICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVp
bnQ2NF90IGl0ZW1zQ291bnQpIFN5bmNocm9ub3VzCi0gICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZv
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8+IGFsbEluZm8pIFN5bmNocm9ub3VzCi0gICAgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoc3RydWN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvKSBTeW5jaHJvbm91cwogICAgIFVwZGF0ZVN1cHBv
cnRlZFR5cGVJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgU3RyaW5nIHBh
c3RlYm9hcmROYW1lKQogI2VuZGlmCiAKICAgICBXcml0ZUN1c3RvbURhdGEoc3RydWN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhIGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4g
KHVpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cwogICAgIFR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIG9yaWdpbikgLT4gKFZl
Y3RvcjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJvbm91cworICAgIEFsbFBhc3RlYm9hcmRJdGVtSW5m
byhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPiBhbGxJbmZvKSBTeW5jaHJvbm91cworICAgIEluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHN0cnVjdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbykgU3luY2hyb25vdXMKKyAgICBHZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBpdGVtc0Nv
dW50KSBTeW5jaHJvbm91cworICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBp
bmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChT
dHJpbmcgc3RyaW5nKSBTeW5jaHJvbm91cworICAgIFJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50
NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5n
IHRpdGxlKSBTeW5jaHJvbm91cworICAgIFJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRf
dCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+
IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkgU3lu
Y2hyb25vdXMKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICMgUGFzdGVib2FyZCBtZXNzYWdl
cy4KQEAgLTY2LDcgKzY2LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5IHsKIAog
I2lmIFVTRShMSUJXUEUpCiAgICAgR2V0UGFzdGVib2FyZFR5cGVzKCkgLT4gKFZlY3RvcjxTdHJp
bmc+IHR5cGVzKSBTeW5jaHJvbm91cwotICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50
NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoU3RyaW5nIHN0cmluZykgU3lu
Y2hyb25vdXMKICAgICBXcml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRXZWJDb250ZW50IGNvbnRlbnQpCiAgICAgV3JpdGVTdHJpbmdUb1Bhc3RlYm9h
cmQoU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgdGV4dCkKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhc3RlYm9hcmRQcm94eVdQRS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFzdGVib2FyZFByb3h5V1BFLmNwcApp
bmRleCBhOWJhNmY5MDViMjU2ZDE2YmRjNDg3NmI2NDhjNDg3YjJmM2RjZWFiLi5lYWI0ODlmYTMy
ODNhN2Q4NDlmMmMwNzJjYzQ3NDVkYjlhOTFhMzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93cGUvV2ViUGFzdGVib2FyZFByb3h5V1BFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFzdGVib2FyZFByb3h5V1BFLmNwcApAQCAtNDAsNyArNDAs
NyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFR5cGVzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocGFzdGVib2FyZFR5cGVzKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKCkucmVhZFN0
cmluZyhpbmRleCwgcGFzdGVib2FyZFR5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKaW5kZXggZjFmZTRiNmIxZjAxOTE0NDZkZDhmODA1YjNkZDllMDA5MzEwYWJkOC4u
NTU0NGEyNTA0ZDY3MTAzZTNhYjM1ZTdhZWY4Y2M1MDcwMjRkMjQ1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTI2NSw1NiArMjY1LDEwIEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVN0cmluZ1Rv
UGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSwgdGV4dCwgcGFzdGVib2FyZE5hbWUpLCAwKTsKIH0K
IAotaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAgICB1aW50NjRfdCBpdGVtc0NvdW50IHsg
MCB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
R2V0UGFzdGVib2FyZEl0ZW1zQ291bnQ6OlJlcGx5KGl0ZW1zQ291bnQpLCAwKTsKLSAgICByZXR1
cm4gaXRlbXNDb3VudDsKLX0KLQotVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKLXsKLSAgICBWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxJbmZvOwotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5mbyhw
YXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9h
cmRJdGVtSW5mbzo6UmVwbHkoYWxsSW5mbyksIDApOwotICAgIHJldHVybiBhbGxJbmZvOwotfQot
Ci1QYXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsK
LSAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJkTmFt
ZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXg6OlJlcGx5KGluZm8pLCAwKTsKLSAgICByZXR1cm4gaW5mbzsKLX0KLQogdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpVcGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnMoaWRlbnRpZmllcnMsIHBhc3RlYm9hcmROYW1lKSwgMCk7CiB9Ci0KLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGU7Ci0gICAgdWludDY0X3Qgc2l6ZSB7IDAgfTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRU
eXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwgMCk7Ci0gICAgaWYgKGhh
bmRsZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZm
ZXItPmRhdGEoKSksIHNpemUpOwotfQotCi1VUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
VVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlKQotewotICAgIFN0cmluZyB1cmxTdHJpbmc7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0
ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFz
dGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwotICAgIHJldHVybiBVUkwoeyB9
LCB1cmxTdHJpbmcpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQotewotICAgIFN0cmluZyB2YWx1ZTsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCAw
KTsKLSAgICByZXR1cm4gdmFsdWU7Ci19CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpAQCAtMzQ1LDEzICsyOTksNiBAQCB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcygpLCBN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5
cGVzKSwgMCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCi17
Ci0gICAgU3RyaW5nIHZhbHVlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHZh
bHVlKSwgMCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotfQotCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRl
bnQmIGNvbnRlbnQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVdl
YkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29udGVudCksIDApOwpAQCAtMzc4LDQgKzMyNSw1MCBAQCBs
b25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDdXN0b21EYXRhJgogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAor
aW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3sKKyAgICB1aW50NjRfdCBpdGVtc0NvdW50IHsgMCB9
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQ6OlJlcGx5KGl0ZW1zQ291bnQpLCAwKTsKKyAgICByZXR1cm4g
aXRlbXNDb3VudDsKK30KKworVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKK3sKKyAgICBWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxJbmZvOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5mbyhwYXN0
ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJ
dGVtSW5mbzo6UmVwbHkoYWxsSW5mbyksIDApOworICAgIHJldHVybiBhbGxJbmZvOworfQorCitQ
YXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3sK
KyAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJkTmFt
ZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXg6OlJlcGx5KGluZm8pLCAwKTsKKyAgICByZXR1cm4gaW5mbzsKK30KKworUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhh
bmRsZTsKKyAgICB1aW50NjRfdCBzaXplIHsgMCB9OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5
cGUsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShoYW5kbGUsIHNpemUpLCAwKTsKKyAgICBpZiAoaGFu
ZGxlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZl
ci0+ZGF0YSgpKSwgc2l6ZSk7Cit9CisKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRV
UkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUpCit7CisgICAgU3RyaW5nIHVybFN0cmluZzsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBh
c3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21Q
YXN0ZWJvYXJkOjpSZXBseSh1cmxTdHJpbmcsIHRpdGxlKSwgMCk7CisgICAgcmV0dXJuIFVSTCh7
IH0sIHVybFN0cmluZyk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAgU3RyaW5nIHZhbHVl
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkOjpSZXBseSh2YWx1
ZSksIDApOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZjdmMTA0MWQ4OTQyY2ZlOGJhMzc5Nzc2
YjU5NWI5N2NlOTJlMjY4Yy4uODc1NmRhMDU1ZTI3NjhkN2YwZGQ1YjYxMDNmYWEwZjI1NWMxYmRk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTAsMTIgKzUwLDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OiBQYXN0ZWJv
YXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludCBnZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBT
dHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92
ZXJyaWRlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAg
ICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZv
aWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBp
ZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5k
aWYKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTg4LDYgKzgyLDEyIEBAIHByaXZhdGU6CiAgICAg
dm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCisgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOworICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAg
ICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIG92ZXJyaWRlOwog
ICAgIGxvbmcgd3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21E
YXRhJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAppbmRleCBkMTYwYTgzODY1MzgzNzg4MTVjMjkzMzBiZDE4NjE3MzM1ODFmNzA0Li45ZjAw
Mzk5MDA1OWFmNDQyMGMwNWJiN2EzYzNiOTk5ZmI4YzAwNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaApAQCAtNTEsMTQgKzUxLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZVRv
UGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9h
cmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKLSAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwotICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKLSAgICBWZWN0
b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRl
ZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCisgICAgU3RyaW5nIHJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBv
dmVycmlkZTsKKyAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZjY3NzIwZTM5NWNmZmUzMDMxMGQ4NjRiZjk4
OWJlMmZjZmEyYmM4Ny4uOThkMzI0YzUyZjYzZGVlNzJmY2ExZWQ1ZGJlZTBjNmI3YWM1ODczNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTczLDYwICsxNzMsNjAgQEAgbG9u
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSYKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS53cml0ZShkYXRhKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0K
LXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0
ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsK
LSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHVybCk7CisgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChpbmRleCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0
ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVu
dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1ZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS53cml0ZShjb250ZW50KTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8oKTsKIH0KIAotdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRJbWFnZSYgaW1hZ2UsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitp
bnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkud3JpdGUoaW1hZ2UpOworICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3
cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndy
aXRlKHBhc3RlYm9hcmRUeXBlLCB0ZXh0KTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KIAotaW50IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmlu
ZyYgdGl0bGUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuY291bnQoKTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5yZWFkVVJMKGluZGV4LCB0aXRsZSk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlk
ZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGlkZW50aWZpZXJzKTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5yZWFkU3RyaW5nKGluZGV4LCB0eXBlKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwordm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKKyAgICBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHVybCk7CiB9CiAKLVVSTCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCit2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNv
bnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFVSTChpbmRleCwgdGl0
bGUpOworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoY29udGVu
dCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2Fy
ZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIGltYWdlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQogewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnJlYWRTdHJpbmcoaW5kZXgsIHR5cGUpOworICAgIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkud3JpdGUoaW1hZ2UpOwogfQogCi1WZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5m
byhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICByZXR1
cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8oKTsKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHBhc3Rl
Ym9hcmRUeXBlLCB0ZXh0KTsKIH0KIAotV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVu
dGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICByZXR1cm4gUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KGluZGV4KTsKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVwZGF0ZVN1
cHBvcnRlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVycyk7CiB9CiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380484</attachid>
            <date>2019-10-08 17:37:38 -0700</date>
            <delta_ts>2019-10-08 17:52:46 -0700</delta_ts>
            <desc>WIP: Try to fix WPE build again</desc>
            <filename>bug-202647-20191008173737.patch</filename>
            <type>text/plain</type>
            <size>70595</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgyNGM2ZjZlOGI3Yjg0
Mzk1MmVmMDgxOTFiNDA1OTE2MDA3Yzk3My4uZjMxYmEyOGE0MTc2YmE3MTFiYTQzYjRkMDEzN2Ey
ODEwOTY1ZTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxOS0xMC0wOCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJk
IEFQSV0gUmVmYWN0b3IgUGFzdGVib2FyZCBpdGVtIHJlYWRpbmcgZnVuY3Rpb25zIHRvIHdvcmsg
b24gYm90aCBpT1MgYW5kIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDI2NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlcyBzb21lIHBhc3RlYm9hcmQgaGVscGVyIGZ1bmN0aW9ucyBvdXQg
b2YgaU9TLXNwZWNpZmljIGNvZGUsIGFuZCBpbnRvIHBsYXRmb3JtLWFnbm9zdGljIGNvZGUuIFNl
ZSBiZWxvdyBmb3IKKyAgICAgICAgbW9yZSBkZXRhaWxzLiBUaGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IsIGFzIG5vdGhpbmcgZXhlcmNpc2VzIHRoZXNlIG5ldyBwYXN0ZWJvYXJkIGZ1bmN0
aW9ucyBvbiBtYWNPUyB5ZXQuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpwYXN0
ZWJvYXJkSXRlbUluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVh
ZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRVUkwpOgorCisgICAgICAgIEFkZCBzb21l
IG5ldyBoZWxwZXJzIG9uIFBhc3RlYm9hcmQgdG8gcmVhZCBTdHJpbmdzLCBkYXRhLCBhbmQgVVJM
cyBmcm9tIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLiBUaGVzZSBmb3J3YXJkCisgICAgICAgIHRv
IHRoZSBwbGF0Zm9ybSBzdHJhdGVneSB3aGljaCwgaW4gV2ViS2l0MiwgYXJlIGN1cnJlbnRseSBp
bXBsZW1lbnRlZCB1c2luZyBzeW5jIElQQywgYnV0IGNvdWxkIGJlIGNoYW5nZWQgaW4KKyAgICAg
ICAgdGhlIGZ1dHVyZSB0byBiZSBmdWxseSBhc3luY2hyb25vdXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpuYW1lIGNv
bnN0KToKKworICAgICAgICBFeHBvc2UgYSBjcm9zcy1wbGF0Zm9ybSBuYW1lKCkgZ2V0dGVyIG9u
IFBhc3RlYm9hcmQuIE9uIG5vbi1Db2NvYSBwbGF0Zm9ybXMsIHRoaXMgc2ltcGx5IHJldHVybnMg
dGhlIGVtcHR5CisgICAgICAgIHN0cmluZywgYnV0IG9uIG1hY09TIGFuZCBpT1MsIHRoaXMgcmV0
dXJucyB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZCBuYW1lLCB3aGljaCBpcyBzdG9yZWQgaW4gbV9w
YXN0ZWJvYXJkTmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5o
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpwYXRoRm9yQ29udGVudFR5
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpjb250ZW50
VHlwZUZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvOjpkZWNvZGUpOgorCisgICAgICAgIEFkZHMgYSBjb3VwbGUgb2YgbmV3IG1l
bWJlcnMgdG8gUGFzdGVib2FyZEl0ZW1JbmZvICh3aGljaCByZXByZXNlbnRzIG1ldGFkYXRhIGFi
b3V0IGEgZ2l2ZW4gaXRlbSBpbiB0aGUgcGxhdGZvcm0KKyAgICAgICAgcGFzdGVib2FyZCkuIFRo
ZXNlIGFyZSBjaGFuZ2VDb3VudCAod2hpY2ggaXMgc2VsZiBleHBsYW5hdG9yeSksIGFuZCB3ZWJT
YWZlVHlwZXNCeUZpZGVsaXR5LCB3aGljaCBpcyBhIGxpc3Qgb2YKKyAgICAgICAgdHlwZXMgaW4g
ZmlkZWxpdHkgb3JkZXIgd2hpY2ggY29udGFpbnMgdGhlIGxpc3Qgb2YgcGFzdGVib2FyZCB0eXBl
cyB0aGF0IGFyZSBzYWZlIHRvIGV4cG9zZSB0byBiaW5kaW5ncy4gVGhlc2UKKyAgICAgICAgbWF5
IGluY2x1ZGUgdHlwZXMgc3VjaCBhcyAidGV4dC9wbGFpbiIsICJ0ZXh0L2h0bWwiLCAidGV4dC91
cmktbGlzdCIsIGFuZCAiaW1hZ2UvcG5nIi4KKworICAgICAgICBUbyBkaXN0aW5ndWlzaCB0aGlz
IGxpc3QgZnJvbSB0aGUgZXhpc3RpbmcgY29udGVudFR5cGVzQnlGaWRlbGl0eSBsaXN0LCBJJ3Zl
IGFsc28gcmVuYW1lZCBjb250ZW50VHlwZXNCeUZpZGVsaXR5CisgICAgICAgIHRvIHBsYXRmb3Jt
VHlwZXNCeUZpZGVsaXR5LCB0byBtYWtlIGl0IG1vcmUgb2J2aW91cyB0aGF0IHRoaXMgb3RoZXIg
bGlzdCBvZiB0eXBlcyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMsIGFuZCBub3QKKyAgICAgICAgZ2Vu
ZXJhbGx5IHNhZmUgdG8gZXhwb3NlIHRvIHRoZSB3ZWIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKworICAgICAgICBNb3ZlIHNldmVyYWwgaGVscGVycyBvdXQgaW50byBwbGF0Zm9ybS1h
Z25vc3RpYyBjb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZmlsZUNvbnRlbnRTdGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW06IEFkZGVk
LgorCisgICAgICAgIEFkZCBhIG5ldyBmaWxlIHRvIGNvbnRhaW4gdGhlIGltcGxlbWVudGF0aW9u
IG9mIFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvLCB3aGljaCBpcyB0
aGUgc2FtZQorICAgICAgICBhY3Jvc3MgQ29jb2EgcGxhdGZvcm1zLgorCisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwgY29uc3QpOgorCisgICAgICAgIEFkZGl0
aW9uYWxseSByZWZhY3RvciBhbGwgbWV0aG9kcyBvbiBQbGF0Zm9ybVBhc3RlYm9hcmQgdGhhdCB0
YWtlIHBhc3RlYm9hcmQgaXRlbSBpbmRpY2VzIGFzIHNpZ25lZCBpbnRlZ2VycworICAgICAgICAo
YGludGApIHRvIHJlY2VpdmUgYHNpemVfdGAgdmFsdWVzIGluc3RlYWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybVBh
c3RlYm9hcmRMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkU3RyaW5nIGNvbnN0KToKKworICAgICAgICBBZGQgYW4gaW1wbGVtZW50YXRpb24gc3R1
YiBmb3IgV1BFLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vZGVyblBhc3RlYm9hcmRUeXBlRm9yV2ViU2FmZU1J
TUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OndlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3Rl
Ym9hcmRUeXBlKToKKworICAgICAgICBBZGQgaGVscGVycyB0byBjb252ZXJ0IGJldHdlZW4gbW9k
ZXJuIE5TUGFzdGVib2FyZFR5cGVzIGFuZCB3ZWItc2FmZSB0eXBlcy4gV2hpbGUgc29tZSBsb2dp
YyBleGlzdHMgdG9kYXkgb24KKyAgICAgICAgbWFjT1MgdG8gY29udmVydCBiZXR3ZWVuIGxlZ2Fj
eSBwYXN0ZWJvYXJkIHR5cGVzIGFuZCB3ZWItc2FmZSB0eXBlcywgY29udmVyc2lvbiBiZXR3ZWVu
IHRoZSBtb2Rlcm4gcGFzdGVib2FyZAorICAgICAgICB0eXBlcyBhbmQgd2ViLXNhZmUgdHlwZXMg
YXJlIG5lZWRlZCBzaW5jZSBOU1Bhc3RlYm9hcmRJdGVtJ3MgdHlwZXMgb25seSBzdXBwb3J0IE5T
UGFzdGVib2FyZFR5cGVzIGFuZAorICAgICAgICBkeW5hbWljYWxseSBkZWNsYXJlZCB0eXBlcyB0
aGF0IG1hdGNoIHRoZSBmb3JtYXQgb2YgYSB1bml2ZXJzYWwgdHlwZSBpZGVudGZpZXIgKGZvciBp
bnN0YW5jZSwgImNvbS5mb28uYmFyIikuCisKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6Y291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKworICAgICAgICBJbXBsZW1lbnQgYWxs
IG9mIHRoZXNlIGhlbHBlcnMgYnkgbG9va2luZyB1cCB0aGUgTlNQYXN0ZWJvYXJkSXRlbSBhdCB0
aGUgZ2l2ZW4gaXRlbSBpbmRleCBhbmQgcXVlcnlpbmcgaXQgZm9yCisgICAgICAgIGRhdGEgZm9y
IG5vbi1sZWdhY3kgcGFzdGVib2FyZCB0eXBlcy4KKworICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjppdGVtQXRJbmRleCBjb25zdCk6CisKIDIwMTktMTAtMDggIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVd
IEZpeCBub24tdW5pZmllZCBidWlsZHMgYWZ0ZXIgcjI1MDQ4NgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwZWFiMDQ3
MGU0MmEyOGRjYzE2MGNhZGFiODYxNmJlODNiZmMyZmE4Li5mMjE5YjYwMDIzMTM2MGNiMmI1YjFi
YmZkZGM0MDg0OWI4MmRkMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTEwLTA4
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlw
Ym9hcmQgQVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkIGl0ZW0gcmVhZGluZyBmdW5jdGlvbnMgdG8g
d29yayBvbiBib3RoIGlPUyBhbmQgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGlPUy1zcGVjaWZpYyBwYXN0ZWJvYXJkIGZ1bmN0
aW9ucyB0byBiZSBwbGF0Zm9ybS1hZ25vc3RpYy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFz
dGVib2FyZEl0ZW1JbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
c3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlV2ViQ29udGVudFRv
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVJ
bWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6
d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBh
c3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy93cGUvV2ViUGFzdGVib2FyZFByb3h5V1BFLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJv
bVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAx
OS0xMC0wOCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1dQRV0gRml4IG5vbi11bmlmaWVkIGJ1aWxkcyBhZnRlciByMjUwNDg2CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjI0ZWMxNDBjODUwNjZiMzA4YjNkMmU3Y2Y0
YjkzYzYzOTNkNmFmYS4uOWJmZmUzYmNiYjBmY2YyYzdkYzYyOGJhZWM0ZmIyNjgyZTMzNzNjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTA4
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlw
Ym9hcmQgQVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkIGl0ZW0gcmVhZGluZyBmdW5jdGlvbnMgdG8g
d29yayBvbiBib3RoIGlPUyBhbmQgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGlPUy1zcGVjaWZpYyBwYXN0ZWJvYXJkIGZ1bmN0
aW9ucyB0byBiZSBwbGF0Zm9ybS1hZ25vc3RpYy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRl
bUluZm8pOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9t
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzKToKKwogMjAxOS0xMC0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgSURMIGZvciByZXF1ZXN0SWRsZUNhbGxiYWNrCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMDY5MmE4ZjdiN2QxODIwNjNlNTM3MGRiMzg5Yjcy
ZDc5YmE4YzliLi4wOTU3OTQzY2M0ZmViZTM5ZGQ3MGExMjhlZTZjNGY3MTgxYTYwMjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE5OCw2ICsxOTgsNyBAQCBwbGF0Zm9ybS9jb2NvYS9N
SU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLm1tCiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbQogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCitwbGF0Zm9ybS9jb2Nv
YS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KIHBsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrc0NvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
N2EzYTliZGFlZjg3Mzk5YzA4ZjliM2ZiMzI3ZjBmNzVjODQ5NGU0Yy4uZDkyYjc2MmVmOTRkNTEw
ZjBmN2Q2Yzg5YTA3MWE4N2VkZGEwNjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUxOTMsNiArMTUxOTMsNyBAQAogCQlG
NDRFQkJEQTFEQjVERDlEMDAyNzczMzQgLyogU3RhdGljUmFuZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDVDMjMxQjE5OTVCNzNCMDBBNkUyRTMgLyogQXhpc1Njcm9sbFNuYXBP
ZmZzZXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF4aXNTY3Jv
bGxTbmFwT2Zmc2V0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUMyMzFD
MTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY0NjI4QTlFMjM0RDNCQkYwMEJDODg0QyAvKiBQbGF0Zm9ybVBh
c3RlYm9hcmRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFBsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDY3MjkyNTFFMERFNUFCMDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDc4NzU1MjE5OTgzQUZGMDAyNEEyODcgLyog
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQ3ODc1NTMxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjcwOCw2ICsyMjcw
OSw3IEBACiAJCQkJQTE4ODkwQUQxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLmggKi8sCiAJCQkJQTE4ODkwQUMxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tICovLAogCQkJCTlCRUQyQ0FGMUY3Q0MwNjIwMDY2
NjAxOCAvKiBQYXN0ZWJvYXJkQ29jb2EubW0gKi8sCisJCQkJRjQ2MjhBOUUyMzREM0JCRjAwQkM4
ODRDIC8qIFBsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tICovLAogCQkJCTUyQjBENEJEMUM1N0ZE
MUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCAqLywKIAkJCQlDREEyOUEwODFDQkQ5OUY0MDA5
MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggKi8sCiAJCQkJQ0RBMjlBMEExQ0JE
OUE3NDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDU1NWVjMjgyZTRiYjY2ZTVmOWQxMTEyMGI5NzYx
YTcyNWViYzNmMzQuLjhmOWJhYjg0NTYxMGQwZjkxMDdkODIzMGRmMjNlZWYxZmIwMWMxNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC05OCw0ICs5OCwyOSBAQCBW
ZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkQWxsU3RyaW5ncyhjb25zdCBTdHJpbmcmIHR5
cGUpCiAKICNlbmRpZgogCitWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjph
bGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdAoreworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1l
KCkpOworfQorCitQYXN0ZWJvYXJkSXRlbUluZm8gUGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1J
bmZvKHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4
LCBuYW1lKCkpOworfQorCitTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgs
IHR5cGUsIG5hbWUoKSk7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCit7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCkpOworfQorCitVUkwgUGFz
dGVib2FyZDo6cmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpCit7CisgICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFVSTEZy
b21QYXN0ZWJvYXJkKGluZGV4LCBuYW1lKCksIHRpdGxlKTsKK30KKwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBmYjg2MGUxMzg0NTIxYTk4OTVjNDdhNTJiNDlhMjQz
MmJhM2ZkODVhLi42OTg3ZWQyNTY1M2ZiNmM5YzY4YjNhMzdhZjc3NjA0YzA4YjY2OTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0yNjUsMTEgKzI2NSwxNiBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRDb2Nv
YVR5cGVBc0ZpbGUoY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5T
QXJyYXkgKnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlwZXMoKTsKLSAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CiAgICAgbG9u
ZyBjaGFuZ2VDb3VudCgpIGNvbnN0OwogICAgIGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBy
ZWFkQ3VzdG9tRGF0YSgpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjb25z
dCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CisjZWxz
ZQorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
IH0KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIENPTVB0cjxJRGF0YU9iamVjdD4g
ZGF0YU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YU9iamVjdDsgfQogICAgIHZvaWQgc2V0
RXh0ZXJuYWxEYXRhT2JqZWN0KElEYXRhT2JqZWN0Kik7CkBAIC0yNzksNiArMjg0LDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIHdyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYsIGNvbnN0IFVS
TCYpOyAvLyBGSVhNRTogTGF5ZXJpbmcgdmlvbGF0aW9uLgogI2VuZGlmCiAKKyAgICBWZWN0b3I8
UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdDsKKyAgICBQ
YXN0ZWJvYXJkSXRlbUluZm8gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7
CisKKyAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4
LCBTdHJpbmcmIHRpdGxlKTsKKwogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgcmVzcGVjdHNVVElGaWRlbGl0aWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCmluZGV4IGQxZDIzMDhhZDk5NWFjZjljN2E1
ZjUzZGVkOWZkMmEwODBlZWNmNzUuLjNiMzk3YzM3MzRkMzJhMGZiNjBlNzAzMWVmOWQwYmM1YWI0
ODMyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVt
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5o
CkBAIC02NiwxOCArNjYsMjAgQEAgT3B0aW9uYWw8UHJlc2VudGF0aW9uU2l6ZT4gUHJlc2VudGF0
aW9uU2l6ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKIHN0cnVjdCBQYXN0ZWJvYXJkSXRl
bUluZm8gewogICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzRm9yRmlsZVVwbG9hZDsKLSAgICBWZWN0
b3I8U3RyaW5nPiBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkOwotICAgIFZlY3RvcjxTdHJpbmc+
IGNvbnRlbnRUeXBlc0J5RmlkZWxpdHk7CisgICAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1UeXBl
c0ZvckZpbGVVcGxvYWQ7CisgICAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1UeXBlc0J5RmlkZWxp
dHk7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVOYW1lOwogICAgIFByZXNlbnRhdGlvblNpemUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTsKICAgICBib29sIGlzTm9uVGV4dFR5cGUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQgeyBmYWxz
ZSB9OworICAgIFZlY3RvcjxTdHJpbmc+IHdlYlNhZmVUeXBlc0J5RmlkZWxpdHk7CisgICAgaW50
IGNoYW5nZUNvdW50IHsgMCB9OwogICAgIFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgeyBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0
eWxlOjpVbnNwZWNpZmllZCB9OwogCiAgICAgU3RyaW5nIHBhdGhGb3JDb250ZW50VHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQocGF0aHNGb3JGaWxl
VXBsb2FkLnNpemUoKSA9PSBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLnNpemUoKSk7Ci0gICAg
ICAgIGF1dG8gaW5kZXggPSBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLmZpbmQodHlwZSk7Cisg
ICAgICAgIEFTU0VSVChwYXRoc0ZvckZpbGVVcGxvYWQuc2l6ZSgpID09IHBsYXRmb3JtVHlwZXNG
b3JGaWxlVXBsb2FkLnNpemUoKSk7CisgICAgICAgIGF1dG8gaW5kZXggPSBwbGF0Zm9ybVR5cGVz
Rm9yRmlsZVVwbG9hZC5maW5kKHR5cGUpOwogICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xMDQsMTAgKzEwNiwxMCBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZEl0ZW1JbmZvIHsKIAogICAgIFN0cmluZyBjb250ZW50VHlwZUZvckhpZ2hlc3RG
aWRlbGl0eUl0ZW0oKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRlbnRUeXBlc0ZvckZp
bGVVcGxvYWQuaXNFbXB0eSgpKQorICAgICAgICBpZiAocGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxv
YWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICByZXR1cm4g
Y29udGVudFR5cGVzRm9yRmlsZVVwbG9hZC5maXJzdCgpOworICAgICAgICByZXR1cm4gcGxhdGZv
cm1UeXBlc0ZvckZpbGVVcGxvYWQuZmlyc3QoKTsKICAgICB9CiAKICAgICBTdHJpbmcgcGF0aEZv
ckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKSBjb25zdApAQCAtMTI1LDcgKzEyNyw3IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkSXRlbUluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgUGFzdGVi
b2FyZEl0ZW1JbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNv
ZGVyIDw8IHBhdGhzRm9yRmlsZVVwbG9hZCA8PCBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkIDw8
IGNvbnRlbnRUeXBlc0J5RmlkZWxpdHkgPDwgc3VnZ2VzdGVkRmlsZU5hbWUgPDwgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSA8PCBpc05vblRleHRUeXBlIDw8IGNvbnRhaW5zRmlsZVVSTEFuZEZp
bGVVcGxvYWRDb250ZW50OworICAgIGVuY29kZXIgPDwgcGF0aHNGb3JGaWxlVXBsb2FkIDw8IHBs
YXRmb3JtVHlwZXNGb3JGaWxlVXBsb2FkIDw8IHBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5IDw8IHN1
Z2dlc3RlZEZpbGVOYW1lIDw8IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPDwgaXNOb25UZXh0
VHlwZSA8PCBjb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudCA8PCB3ZWJTYWZlVHlw
ZXNCeUZpZGVsaXR5IDw8IGNoYW5nZUNvdW50OwogICAgIGVuY29kZXIuZW5jb2RlRW51bShwcmVm
ZXJyZWRQcmVzZW50YXRpb25TdHlsZSk7CiB9CiAKQEAgLTEzNiwxMCArMTM4LDEwIEBAIE9wdGlv
bmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYXRoc0ZvckZpbGVV
cGxvYWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZCkpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQpKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29u
dGVudFR5cGVzQnlGaWRlbGl0eSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGxh
dGZvcm1UeXBlc0J5RmlkZWxpdHkpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVkRmlsZU5hbWUpKQpAQCAtMTU0
LDYgKzE1NiwxMiBAQCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVt
SW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViU2Fm
ZVR5cGVzQnlGaWRlbGl0eSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGFuZ2VDb3VudCkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQucHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGRjMTZm
MGZhMGM1YTkwMTJjNjUyNWY1YTk1MzBmZTc2NTgxNTEzNjUuLjU3N2NhZjg5NWJlYjE5Nzk4OTky
NzAxZWQ1ZmY4YWM3MDUyMGYzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCkBAIC00NiwxMiArNDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwotICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2aXJ0dWFs
IFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlk
ZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC03Myw2ICs2NywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBsb25nIHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKICNlbmRpZgorICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2
aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgdmlydHVhbCBQYXN0
ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxQYXN0
ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgPSAwOwogICAgIHZpcnR1YWwgbG9uZyB3
cml0ZUN1c3RvbURhdGEoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CkBAIC04NCw3ICs4NCw2IEBAIHB1YmxpYzoKIAogI2lmIFVT
RShMSUJXUEUpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cykgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBlMDMzMTUwOThlMTU1YTkyNmY3MTk4ZTJj
NzI2YjM3NTdjMTI0NDJmLi5kZjAzOTNlMzVmY2E1YjdkYjAzNDYzMDM3NjBhZmVjNmFkYWE2YzMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAt
MzMsNiArMzMsNyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogT0JKQ19DTEFTUyBOU1Bhc3RlYm9h
cmQ7CitPQkpDX0NMQVNTIE5TUGFzdGVib2FyZEl0ZW07CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCkBAIC01OSwxMCArNjAsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBVU0UoTElCV1BFKQogICAgIFdFQkNP
UkVfRVhQT1JUIFBsYXRmb3JtUGFzdGVib2FyZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbygpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGlu
dCBpbmRleCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKICNlbmRpZgorICAgIFdFQkNP
UkVfRVhQT1JUIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCBpbmRleCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5m
bz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0
cmluZyB1bmlxdWVOYW1lKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHBs
YXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0
IFN0cmluZyYgZG9tVHlwZSk7CkBAIC05MCw5ICs5MSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJM
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoaW50IGlu
ZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBudW1iZXJPZkZpbGVzKCkgY29uc3Q7CiAKQEAgLTEwOSw2ICsxMTAsMTAgQEAgcHJp
dmF0ZToKICAgICBib29sIGFsbG93UmVhZGluZ1VSTEF0SW5kZXgoY29uc3QgVVJMJiwgaW50IGlu
ZGV4KSBjb25zdDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIE5TUGFzdGVib2Fy
ZEl0ZW0gKml0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3Q7CisjZW5kaWYKKwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBtX3Bhc3RlYm9hcmQ7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQppbmRleCAyNjQ3NDgwYmRhNzJiZjM2MzMyZTU0MmZlMTc3ZmZjMjY5OGZmMjg3Li5jMGZi
YTRiZWYwNzUxNWRlNGFkMjU0YjQwMzcwN2YxMWI1Y2IxNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0xNDgsNyArMTQ4LDcg
QEAgUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZSBQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0
YXRlKCkKICAgICAgICAgLy8gSWYgdGhlIGl0ZW0gY2FuJ3QgYmUgdHJlYXRlZCBhcyBhbiBhdHRh
Y2htZW50LCBpdCdzIHZlcnkgbGlrZWx5IHRoYXQgdGhlIGNvbnRlbnQgYmVpbmcgZHJvcHBlZCBp
cyBqdXN0CiAgICAgICAgIC8vIGFuIGlubGluZSBwaWVjZSBvZiB0ZXh0LCB3aXRoIG5vIGZpbGVz
IGluIHRoZSBwYXN0ZWJvYXJkIChhbmQgdGhlcmVmb3JlLCBubyByaXNrIG9mIGxlYWtpbmcgZmls
ZSBwYXRocwogICAgICAgICAvLyB0byB3ZWIgY29udGVudCkuIEluIGNhc2VzIHN1Y2ggYXMgdGhl
c2UsIHdlIHNob3VsZCBub3Qgc3VwcHJlc3MgRGF0YVRyYW5zZmVyIGFjY2Vzcy4KLSAgICAgICAg
YXV0byBpdGVtcyA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
YWxsUGFzdGVib2FyZEl0ZW1JbmZvKG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBhdXRvIGl0
ZW1zID0gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7CiAgICAgICAgIG1heUNvbnRhaW5GaWxlUGF0
aHMgPSBpdGVtcy5zaXplKCkgIT0gMSB8fCBub3RGb3VuZCAhPSBpdGVtcy5maW5kTWF0Y2hpbmco
W10gKGF1dG8mIGl0ZW0pIHsKICAgICAgICAgICAgIHJldHVybiBpdGVtLmNhbkJlVHJlYXRlZEFz
QXR0YWNobWVudE9yRmlsZSgpIHx8IGl0ZW0uaXNOb25UZXh0VHlwZSB8fCBpdGVtLmNvbnRhaW5z
RmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50OwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzQ5NTQzM2VhY2U5NjhiNjM2MmY2ZTU2YzQ0Y2Q1ODgzM2RhZWJjNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFz
dGVib2FyZENvY29hLm1tCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgorCisjaW1wb3J0ICJQYXN0
ZWJvYXJkSXRlbUluZm8uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWZWN0b3I8UGFzdGVi
b2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbygp
Cit7CisgICAgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gaXRlbUluZm87CisgICAgaW50IG51
bWJlck9mSXRlbXMgPSBjb3VudCgpOworICAgIGl0ZW1JbmZvLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobnVtYmVyT2ZJdGVtcyk7CisgICAgZm9yIChOU0ludGVnZXIgaXRlbUluZGV4ID0gMDsgaXRl
bUluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpdGVtSW5kZXgpCisgICAgICAgIGl0ZW1JbmZvLnVu
Y2hlY2tlZEFwcGVuZChpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGl0ZW1JbmRleCkpOworICAg
IHJldHVybiBpdGVtSW5mbzsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAwMjcxYjkzZTcwNWNl
MmM0MmQ2MzJmZTJkYjI5YWE0NmU4MzZkMjM5Li5lMWNlMmYzNGI1YzE0YmEyODk3N2I4YjgxZTdk
NmQyY2M2MmI4NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3Rp
bmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsCiAgICAg
ICAgIC8vIFRyeSB0byByZWFkIGRhdGEgZnJvbSBlYWNoIHR5cGUgaWRlbnRpZmllciB0aGF0IHRo
aXMgcGFzdGVib2FyZCBpdGVtIHN1cHBvcnRzLCBhbmQgV2ViS2l0IGFsc28gcmVjb2duaXplcy4g
VHlwZSBpZGVudGlmaWVycyBhcmUKICAgICAgICAgLy8gcmVhZCBpbiBvcmRlciBvZiBmaWRlbGl0
eSwgYXMgc3BlY2lmaWVkIGJ5IGVhY2ggcGFzdGVib2FyZCBpdGVtLgogICAgICAgICBSZWFkZXJS
ZXN1bHQgcmVzdWx0ID0gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKLSAgICAgICAgZm9y
IChhdXRvJiB0eXBlIDogaW5mby5jb250ZW50VHlwZXNCeUZpZGVsaXR5KSB7CisgICAgICAgIGZv
ciAoYXV0byYgdHlwZSA6IGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkpIHsKICAgICAgICAg
ICAgIGlmICghaXNUeXBlQWxsb3dlZEJ5UmVhZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBkOGM1NmY5NWFhYTNmMzZmZWJm
MTQwM2QwOTdhYThjN2I3MWE1NTFlLi45MTZkYWViZDBhMjc4MGM5MzYzZDM1NTk4NWE5YjYxMmVm
NDFkMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KQEAgLTExNiwxNyArMTE2LDkgQEAgc3RhdGljIFBhc3RlYm9hcmRJ
dGVtUHJlc2VudGF0aW9uU3R5bGUgcGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShVSVBy
ZWZlcnIKIAogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxF
X0FORF9URUFNX0RBVEEKIAotVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKQorUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRm
b3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
Ci0gICAgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gaXRlbUluZm87Ci0gICAgZm9yIChOU0lu
dGVnZXIgaXRlbUluZGV4ID0gMDsgaXRlbUluZGV4IDwgW21fcGFzdGVib2FyZCBudW1iZXJPZkl0
ZW1zXTsgKytpdGVtSW5kZXgpCi0gICAgICAgIGl0ZW1JbmZvLmFwcGVuZChpbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KGl0ZW1JbmRleCkpOwotICAgIHJldHVybiBpdGVtSW5mbzsKLX0KLQotUGFz
dGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChpbnQgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVy
T2ZJdGVtc10pCisgICAgaWYgKGluZGV4ID49IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KFttX3Bh
c3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgUGFz
dGVib2FyZEl0ZW1JbmZvIGluZm87CkBAIC0xNDAsMTUgKzEzMiwxNSBAQCBQYXN0ZWJvYXJkSXRl
bUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBp
bmRleCkKICAgICAgICAgZm9yIChOU1VSTCAqdXJsIGluIHVybHMpCiAgICAgICAgICAgICBpbmZv
LnBhdGhzRm9yRmlsZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQodXJsLnBhdGgpOwogCi0gICAgICAg
IGluZm8uY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZp
bGVUeXBlcy5jb3VudCk7CisgICAgICAgIGluZm8ucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmaWxlVHlwZXMuY291bnQpOwogICAgICAgICBmb3IgKE5T
U3RyaW5nICpmaWxlVHlwZSBpbiBmaWxlVHlwZXMpCi0gICAgICAgICAgICBpbmZvLmNvbnRlbnRU
eXBlc0ZvckZpbGVVcGxvYWQudW5jaGVja2VkQXBwZW5kKGZpbGVUeXBlKTsKKyAgICAgICAgICAg
IGluZm8ucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQudW5jaGVja2VkQXBwZW5kKGZpbGVUeXBl
KTsKICAgICB9IGVsc2UgewogICAgICAgICBOU0FycmF5ICpmaWxlVHlwZXMgPSBpdGVtUHJvdmlk
ZXIud2ViX2ZpbGVVcGxvYWRDb250ZW50VHlwZXM7Ci0gICAgICAgIGluZm8uY29udGVudFR5cGVz
Rm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5jb3VudCk7Cisg
ICAgICAgIGluZm8ucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShmaWxlVHlwZXMuY291bnQpOwogICAgICAgICBpbmZvLnBhdGhzRm9yRmlsZVVwbG9hZC5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5jb3VudCk7CiAgICAgICAgIGZvciAoTlNT
dHJpbmcgKmZpbGVUeXBlIGluIGZpbGVUeXBlcykgewotICAgICAgICAgICAgaW5mby5jb250ZW50
VHlwZXNGb3JGaWxlVXBsb2FkLnVuY2hlY2tlZEFwcGVuZChmaWxlVHlwZSk7CisgICAgICAgICAg
ICBpbmZvLnBsYXRmb3JtVHlwZXNGb3JGaWxlVXBsb2FkLnVuY2hlY2tlZEFwcGVuZChmaWxlVHlw
ZSk7CiAgICAgICAgICAgICBpbmZvLnBhdGhzRm9yRmlsZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQo
eyB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2OCw5ICsxNjAsOSBAQCBQYXN0ZWJvYXJkSXRl
bUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBp
bmRleCkKICAgICBpbmZvLmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50ID0gaXRl
bVByb3ZpZGVyLndlYl9jb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudDsKICAgICBp
bmZvLnN1Z2dlc3RlZEZpbGVOYW1lID0gaXRlbVByb3ZpZGVyLnN1Z2dlc3RlZE5hbWU7CiAgICAg
TlNBcnJheTxOU1N0cmluZyAqPiAqcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyA9IGl0ZW1Qcm92
aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzOwotICAgIGluZm8uY29udGVudFR5cGVzQnlG
aWRlbGl0eS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMu
Y291bnQpOworICAgIGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzLmNvdW50KTsKICAgICBmb3IgKE5TU3Ry
aW5nICp0eXBlSWRlbnRpZmllciBpbiByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7Ci0gICAg
ICAgIGluZm8uY29udGVudFR5cGVzQnlGaWRlbGl0eS51bmNoZWNrZWRBcHBlbmQodHlwZUlkZW50
aWZpZXIpOworICAgICAgICBpbmZvLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5LnVuY2hlY2tlZEFw
cGVuZCh0eXBlSWRlbnRpZmllcik7CiAgICAgICAgIENGU3RyaW5nUmVmIGNmVHlwZUlkZW50aWZp
ZXIgPSAoQ0ZTdHJpbmdSZWYpdHlwZUlkZW50aWZpZXI7CiAgICAgICAgIGlmICghVVRUeXBlSXNE
ZWNsYXJlZChjZlR5cGVJZGVudGlmaWVyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTkw
LDE3ICsxODIsMTQgQEAgUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIGluZm8uaXNOb25UZXh0
VHlwZSA9IHRydWU7CiAgICAgfQogCisgICAgaW5mby5jaGFuZ2VDb3VudCA9IGNoYW5nZUNvdW50
KCk7CisKICAgICByZXR1cm4gaW5mbzsKIH0KIAogI2Vsc2UKIAotUGFzdGVib2FyZEl0ZW1JbmZv
IFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQpCi17Ci0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKQorUGFzdGVib2FyZEl0ZW1JbmZvIFBs
YXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QpCiB7CiAg
ICAgcmV0dXJuIHsgfTsKIH0KQEAgLTY1Niw3ICs2NDUsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIE5TSW5kZXhT
ZXQgKmluZGV4U2V0ID0gW05TSW5kZXhTZXQgaW5kZXhTZXRXaXRoSW5kZXg6aW5kZXhdOwogCkBA
IC02NjcsNyArNjU2LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXAKICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtLmdldCgpIG9iamVjdEF0SW5kZXg6MF0p
OwogfQogCi1TdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBp
ZiAodHlwZSA9PSBTdHJpbmcoa1VUVHlwZVVSTCkpIHsKICAgICAgICAgU3RyaW5nIHRpdGxlOwpA
QCAtNjk3LDcgKzY4Niw3IEBAIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmco
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCi1VUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkVVJMKGludCBpbmRleCwgU3RyaW5n
JiB0aXRsZSkgY29uc3QKK1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwoc2l6ZV90IGlu
ZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdAogewogICAgIGlkIHZhbHVlID0gW21fcGFzdGVib2Fy
ZCB2YWx1ZXNGb3JQYXN0ZWJvYXJkVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVJM
IGluSXRlbVNldDpbTlNJbmRleFNldCBpbmRleFNldFdpdGhJbmRleDppbmRleF1dLmZpcnN0T2Jq
ZWN0OwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9s
aWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKaW5kZXggZjhhNjFlYzcwYzBjMWE0Y2QzNzdmMGU3
Y2Q2NzZlZmI5ZGU1YmM4YS4uNDNiYTllNGRlYTVmNjVhNzYwOWUzMzJlYWQyZmViNzNkZjNiMzI0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRM
aWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZE9yaWdp
bigpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkK
IHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgdHlwZSk7CisgICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKDAsIHR5cGUsIG5hbWUoKSk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
SW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikKIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRQbGFpblRleHQmIHRleHQpCiB7Ci0gICAgdGV4dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwg
InRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIpOworICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KDAsICJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCBuYW1lKCkpOwogfQogCiB2b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGlu
Z1BvbGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0
Zm9ybVBhc3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3Bl
L1BsYXRmb3JtUGFzdGVib2FyZExpYldQRS5jcHAKaW5kZXggMGZkYjc1ZGFmNjlkNThlNWRlMDFh
MTRiMWU1ZWQ1YTdiOGQ5NDdjZi4uZTU0MGMzNWQ1M2ZmYTQxMTMyMWI4ODE4YjJiZWE2MjA2YjU3
NWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3Jt
UGFzdGVib2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3Bl
L1BsYXRmb3JtUGFzdGVib2FyZExpYldQRS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB3cGVf
cGFzdGVib2FyZF9zdHJpbmdfdmVjdG9yX2ZyZWUoJnBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKLVN0
cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoaW50LCBjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CitTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIHN0cnVjdCB3cGVfcGFzdGVib2FyZF9z
dHJpbmcgc3RyaW5nID0geyBudWxscHRyLCAwIH07CiAgICAgd3BlX3Bhc3RlYm9hcmRfZ2V0X3N0
cmluZyhtX3Bhc3RlYm9hcmQsIHR5cGUudXRmOCgpLmRhdGEoKSwgJnN0cmluZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpp
bmRleCAwY2IxZGQ4YjkzMGEwNjViN2MwODAxNWNhMmUwY2U1ZGJkNWIyYjQ5Li5jNWExMTk3MmI2
MjgyNDAzMjdhZjQ4N2M2ODkwMmZmZjE2NmFlYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTM4NCw2ICszODQs
MTE2IEBAIGxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhCiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7
CiB9CiAKK3N0YXRpYyBOU1Bhc3RlYm9hcmRUeXBlIG1vZGVyblBhc3RlYm9hcmRUeXBlRm9yV2Vi
U2FmZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgd2ViU2FmZVR5cGUpCit7CisgICAgaWYgKHdlYlNh
ZmVUeXBlID09ICJ0ZXh0L3BsYWluIikKKyAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVT
dHJpbmc7CisgICAgaWYgKHdlYlNhZmVUeXBlID09ICJ0ZXh0L2h0bWwiKQorICAgICAgICByZXR1
cm4gTlNQYXN0ZWJvYXJkVHlwZUhUTUw7CisgICAgaWYgKHdlYlNhZmVUeXBlID09ICJ0ZXh0L3Vy
aS1saXN0IikKKyAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVVUkw7CisgICAgaWYgKHdl
YlNhZmVUeXBlID09ICJpbWFnZS9wbmciKQorICAgICAgICByZXR1cm4gTlNQYXN0ZWJvYXJkVHlw
ZVBORzsKKyAgICByZXR1cm4gbmlsOworfQorCitlbnVtIGNsYXNzIENvbnRhaW5zRmlsZVVSTCB7
IE5vLCBZZXMgfTsKK3N0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVi
b2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5cGUsIENvbnRhaW5zRmlsZVVSTCBj
b250YWluc0ZpbGVVUkwpCit7CisgICAgaWYgKFtwbGF0Zm9ybVR5cGUgaXNFcXVhbDpOU1Bhc3Rl
Ym9hcmRUeXBlU3RyaW5nXSAmJiBjb250YWluc0ZpbGVVUkwgPT0gQ29udGFpbnNGaWxlVVJMOjpO
bykKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIjsKKyAgICBpZiAoW3BsYXRmb3JtVHlwZSBp
c0VxdWFsOk5TUGFzdGVib2FyZFR5cGVIVE1MXSB8fCBbcGxhdGZvcm1UeXBlIGlzRXF1YWw6TlNQ
YXN0ZWJvYXJkVHlwZVJURl0gfHwgW3BsYXRmb3JtVHlwZSBpc0VxdWFsOk5TUGFzdGVib2FyZFR5
cGVSVEZEXSkKKyAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOworICAgIGlmIChbcGxhdGZvcm1U
eXBlIGlzRXF1YWw6TlNQYXN0ZWJvYXJkVHlwZVVSTF0gJiYgY29udGFpbnNGaWxlVVJMID09IENv
bnRhaW5zRmlsZVVSTDo6Tm8pCisgICAgICAgIHJldHVybiAidGV4dC91cmktbGlzdCI7CisgICAg
aWYgKFtwbGF0Zm9ybVR5cGUgaXNFcXVhbDpOU1Bhc3RlYm9hcmRUeXBlUE5HXSB8fCBbcGxhdGZv
cm1UeXBlIGlzRXF1YWw6TlNQYXN0ZWJvYXJkVHlwZVRJRkZdKQorICAgICAgICByZXR1cm4gImlt
YWdlL3BuZyI7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdAoreworICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChp
bmRleCk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBw
bGF0Zm9ybVR5cGUgPSBtb2Rlcm5QYXN0ZWJvYXJkVHlwZUZvcldlYlNhZmVNSU1FVHlwZSh0eXBl
KTsKKyAgICBpZiAoIXBsYXRmb3JtVHlwZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6cGxhdGZvcm1UeXBlXSkgewor
ICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKKyAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgfQorCisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK1N0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Cit7CisgICAgTlNQYXN0ZWJvYXJk
SXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIWl0ZW0pCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBhdXRvIHBsYXRmb3JtVHlwZSA9IG1vZGVyblBhc3RlYm9hcmRU
eXBlRm9yV2ViU2FmZU1JTUVUeXBlKHR5cGUpOworICAgIGlmICghcGxhdGZvcm1UeXBlKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIFtpdGVtIHN0cmluZ0ZvclR5cGU6cGxhdGZv
cm1UeXBlXTsKK30KKworVVJMIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFVSTChzaXplX3QgaW5k
ZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0Cit7CisgICAgdGl0bGUgPSBlbXB0eVN0cmluZygpOwor
CisgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBp
ZiAoIWl0ZW0pCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHVy
bDsKKyAgICBpZiAoaWQgcHJvcGVydHlMaXN0ID0gW2l0ZW0gcHJvcGVydHlMaXN0Rm9yVHlwZTpO
U1Bhc3RlYm9hcmRUeXBlVVJMXSkKKyAgICAgICAgdXJsID0gYWRvcHROUyhbW05TVVJMIGFsbG9j
XSBpbml0V2l0aFBhc3RlYm9hcmRQcm9wZXJ0eUxpc3Q6cHJvcGVydHlMaXN0IG9mVHlwZTpOU1Bh
c3RlYm9hcmRUeXBlVVJMXSk7CisgICAgZWxzZSBpZiAoTlNTdHJpbmcgKmFic29sdXRlU3RyaW5n
ID0gW2l0ZW0gc3RyaW5nRm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlVVJMXSkKKyAgICAgICAgdXJs
ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6YWJzb2x1dGVTdHJpbmddOworICAgIHJldHVybiB7IFt1
cmwgaXNGaWxlVVJMXSA/IG5pbCA6IHVybC5nZXQoKSB9OworfQorCitpbnQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpjb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgcGFzdGVi
b2FyZEl0ZW1zXS5jb3VudDsKK30KKworUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVi
b2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpCit7CisgICAgTlNQ
YXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIWl0ZW0p
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKKyAg
ICBOU0FycmF5PE5TUGFzdGVib2FyZFR5cGU+ICpwbGF0Zm9ybVR5cGVzID0gW2l0ZW0gdHlwZXNd
OworICAgIGF1dG8gY29udGFpbnNGaWxlVVJMID0gW3BsYXRmb3JtVHlwZXMgY29udGFpbnNPYmpl
Y3Q6TlNQYXN0ZWJvYXJkVHlwZUZpbGVVUkxdID8gQ29udGFpbnNGaWxlVVJMOjpZZXMgOiBDb250
YWluc0ZpbGVVUkw6Ok5vOworICAgIExpc3RIYXNoU2V0PFN0cmluZz4gd2ViU2FmZVR5cGVzOwor
ICAgIGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShw
bGF0Zm9ybVR5cGVzLmNvdW50KTsKKyAgICBmb3IgKE5TUGFzdGVib2FyZFR5cGUgdHlwZSBpbiBw
bGF0Zm9ybVR5cGVzKSB7CisgICAgICAgIGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkudW5j
aGVja2VkQXBwZW5kKHR5cGUpOworICAgICAgICBhdXRvIHdlYlNhZmVUeXBlID0gd2ViU2FmZU1J
TUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUodHlwZSwgY29udGFpbnNGaWxlVVJMKTsKKyAg
ICAgICAgaWYgKHdlYlNhZmVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIHdlYlNhZmVUeXBlcy5hZGQoV1RGTW92ZSh3ZWJTYWZlVHlwZSkpOworICAgIH0K
KyAgICBpbmZvLmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50ID0gY29udGFpbnNG
aWxlVVJMID09IENvbnRhaW5zRmlsZVVSTDo6WWVzOworICAgIGluZm8ud2ViU2FmZVR5cGVzQnlG
aWRlbGl0eSA9IGNvcHlUb1ZlY3Rvcih3ZWJTYWZlVHlwZXMpOworICAgIGluZm8uY2hhbmdlQ291
bnQgPSBjaGFuZ2VDb3VudCgpOworICAgIHJldHVybiBpbmZvOworfQorCitOU1Bhc3RlYm9hcmRJ
dGVtICpQbGF0Zm9ybVBhc3RlYm9hcmQ6Oml0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QK
K3sKKyAgICBOU0FycmF5PE5TUGFzdGVib2FyZEl0ZW0gKj4gKml0ZW1zID0gW21fcGFzdGVib2Fy
ZCBwYXN0ZWJvYXJkSXRlbXNdOworICAgIHJldHVybiBpbmRleCA+PSBpdGVtcy5jb3VudCA/IG5p
bCA6IGl0ZW1zW2luZGV4XTsKK30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbQppbmRleCBkZTM5NWRhOTZmY2RhOTgxN2MxZTI2ZTdkNmU1ZmQzMzM5NmYzYmYw
Li4wYTE4MTc0NDUxMGU4M2E4ZjMxYmI2YTE1ZTZjZWQ2MjI1NGNmMjgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbQpAQCAtMTgwLDQxICsxODAsMzQgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRl
Q3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGEKICAgICBj
b21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRl
KGRhdGEpKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLXZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp3cml0ZVVSTFRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwpOwotfQotCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6d3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRX
ZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQYXN0ZWJvYXJkSXRl
bUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoY29udGVudCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8o
KSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJk
KGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBhc3RlYm9hcmRJdGVtSW5mbyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4
KSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4
dCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5jb3VudCgpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGlu
ZGV4LCBwYXN0ZWJvYXJkVHlwZSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0
bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRV
UkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIFN0cmluZyB1
cmwgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRp
dGxlKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVybCksIFdURk1vdmUodGl0bGUp
KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6
OkhhbmRsZSYmLCB1aW50NjRfdCBzaXplKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYsIHVpbnQ2NF90
IHNpemUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihp
bmRleCwgcGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjMxLDE5ICsyMjQs
MjYgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1
aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoaGFuZGxlKSwgc2l6ZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0
ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3Rl
Ym9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuY291bnQoKSk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS53cml0ZSh1cmwpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkpOworICAgIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoY29udGVudCk7CiB9CiAKLXZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQYXN0
ZWJvYXJkSXRlbUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
SW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsK
LSAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgpKTsKKyAgICBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7Cit9CisKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCit7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShw
YXN0ZWJvYXJkVHlwZSwgdGV4dCk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp1cGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZp
ZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtMjUxLDYgKzI1MSw2IEBAIHZv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwogfQogCi0j
ZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3Bw
CmluZGV4IDdiZmY5MzRiZmQ2MzE5OTRkNTU2MmE4NjkzNGExMWI5N2MyODQxYWMuLjI1YTRkZDcy
ZDVkYjg1OGM1NGFkNjFhOWE5ZTk1ZGMyZDE3MTBiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcApAQCAtMjYsOSArMjYsMTEgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHkuaCIKIAorI2luY2x1
ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzMsNiArNzUsMzYgQEAgdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSYsIGMKICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKIH0KIAordm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cit9CisKK3ZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCwgY29u
c3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQYXN0ZWJvYXJkSXRlbUluZm8mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30K
Kwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOworfQorCit2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKwordm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QsIGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0
aXRsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
LCB7IH0pOworfQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpemVfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OkhhbmRsZSYmLCB1aW50NjRfdCBzaXplKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworfQorCiAj
ZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhc3RlYm9hcmRQcm94eS5oCmluZGV4IDBlMGUyMTU2OTU4OGM4ZDQ3MDVjOTcxZGMxYmQz
YmRhODUzMTkzMWIuLmFkYmMyMjZhZGI4ZWY1MmVhMzcxOGVhMDY1NmE4OWY1MTBiOGI5MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCkBAIC03Mywx
MiArNzMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJk
KGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7CiAgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAg
IHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgdm9p
ZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKLSAgICB2b2lkIHJlYWRVUkxGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJik7Ci0gICAgdm9p
ZCByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpIYW5kbGUmJiwgdWludDY0X3Qgc2l6ZSk+JiYpOwot
ICAgIHZvaWQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgYWxs
UGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYp
OwotICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvJiYpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMDEsNiAr
OTUsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogI2VuZGlmCiAKKyAgICB2b2lkIHJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmKTsKKyAgICB2b2lkIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRN
ZW1vcnk6OkhhbmRsZSYmLCB1aW50NjRfdCBzaXplKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBpbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8mJik+JiYpOworICAgIHZv
aWQgYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4m
Jik+JiYpOworCiAgICAgdm9pZCB3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAgICAgdm9pZCB0eXBlc1NhZmVGb3JET01Ub1Jl
YWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAKQEAg
LTExNCw3ICsxMTUsNiBAQCBwcml2YXRlOgogCiAjaWYgVVNFKExJQldQRSkKICAgICB2b2lkIGdl
dFBhc3RlYm9hcmRUeXBlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKLSAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJik+JiYpOwogICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50Jik7CiAgICAgdm9pZCB3cml0ZVN0cmluZ1RvUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGQzZWEzYmE0MjljODdmNTdjYjhjMmE5ODQxODM2ZDBkYzVk
Y2FlYWQuLjY5MWQwMjUzNzE4YzAyYTBkZTBhNmJlOGUzNGQyMTAzNGUwMDNhMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTI2LDE3ICsyNiwxNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXN0ZWJvYXJkUHJveHkg
ewogICAgIFdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVi
b2FyZFdlYkNvbnRlbnQgY29udGVudCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQogICAgIFdyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSBwYXN0ZWJv
YXJkSW1hZ2UsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICAgICBXcml0ZVN0cmluZ1RvUGFzdGVi
b2FyZChTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyB0ZXh0LCBTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUpCi0gICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJp
bmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyBzdHJp
bmcpIFN5bmNocm9ub3VzCi0gICAgUmVhZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUpIFN5
bmNocm9ub3VzCi0gICAgUmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBT
dHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFdlYktpdDo6
U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKSBTeW5jaHJvbm91cwot
ICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVp
bnQ2NF90IGl0ZW1zQ291bnQpIFN5bmNocm9ub3VzCi0gICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZv
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8+IGFsbEluZm8pIFN5bmNocm9ub3VzCi0gICAgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoc3RydWN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvKSBTeW5jaHJvbm91cwogICAgIFVwZGF0ZVN1cHBv
cnRlZFR5cGVJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgU3RyaW5nIHBh
c3RlYm9hcmROYW1lKQogI2VuZGlmCiAKICAgICBXcml0ZUN1c3RvbURhdGEoc3RydWN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhIGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4g
KHVpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cwogICAgIFR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIG9yaWdpbikgLT4gKFZl
Y3RvcjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJvbm91cworICAgIEFsbFBhc3RlYm9hcmRJdGVtSW5m
byhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPiBhbGxJbmZvKSBTeW5jaHJvbm91cworICAgIEluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHN0cnVjdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbykgU3luY2hyb25vdXMKKyAgICBHZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBpdGVtc0Nv
dW50KSBTeW5jaHJvbm91cworICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBp
bmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChT
dHJpbmcgc3RyaW5nKSBTeW5jaHJvbm91cworICAgIFJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50
NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5n
IHRpdGxlKSBTeW5jaHJvbm91cworICAgIFJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRf
dCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+
IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkgU3lu
Y2hyb25vdXMKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICMgUGFzdGVib2FyZCBtZXNzYWdl
cy4KQEAgLTY2LDcgKzY2LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5IHsKIAog
I2lmIFVTRShMSUJXUEUpCiAgICAgR2V0UGFzdGVib2FyZFR5cGVzKCkgLT4gKFZlY3RvcjxTdHJp
bmc+IHR5cGVzKSBTeW5jaHJvbm91cwotICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50
NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoU3RyaW5nIHN0cmluZykgU3lu
Y2hyb25vdXMKICAgICBXcml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRXZWJDb250ZW50IGNvbnRlbnQpCiAgICAgV3JpdGVTdHJpbmdUb1Bhc3RlYm9h
cmQoU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgdGV4dCkKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhc3RlYm9hcmRQcm94eVdQRS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFzdGVib2FyZFByb3h5V1BFLmNwcApp
bmRleCBhOWJhNmY5MDViMjU2ZDE2YmRjNDg3NmI2NDhjNDg3YjJmM2RjZWFiLi5lYWI0ODlmYTMy
ODNhN2Q4NDlmMmMwNzJjYzQ3NDVkYjlhOTFhMzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93cGUvV2ViUGFzdGVib2FyZFByb3h5V1BFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFzdGVib2FyZFByb3h5V1BFLmNwcApAQCAtNDAsNyArNDAs
NyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFR5cGVzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocGFzdGVib2FyZFR5cGVzKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKCkucmVhZFN0
cmluZyhpbmRleCwgcGFzdGVib2FyZFR5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKaW5kZXggZjFmZTRiNmIxZjAxOTE0NDZkZDhmODA1YjNkZDllMDA5MzEwYWJkOC4u
NTU0NGEyNTA0ZDY3MTAzZTNhYjM1ZTdhZWY4Y2M1MDcwMjRkMjQ1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTI2NSw1NiArMjY1LDEwIEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVN0cmluZ1Rv
UGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSwgdGV4dCwgcGFzdGVib2FyZE5hbWUpLCAwKTsKIH0K
IAotaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAgICB1aW50NjRfdCBpdGVtc0NvdW50IHsg
MCB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
R2V0UGFzdGVib2FyZEl0ZW1zQ291bnQ6OlJlcGx5KGl0ZW1zQ291bnQpLCAwKTsKLSAgICByZXR1
cm4gaXRlbXNDb3VudDsKLX0KLQotVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKLXsKLSAgICBWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxJbmZvOwotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5mbyhw
YXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9h
cmRJdGVtSW5mbzo6UmVwbHkoYWxsSW5mbyksIDApOwotICAgIHJldHVybiBhbGxJbmZvOwotfQot
Ci1QYXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsK
LSAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJkTmFt
ZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXg6OlJlcGx5KGluZm8pLCAwKTsKLSAgICByZXR1cm4gaW5mbzsKLX0KLQogdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpVcGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnMoaWRlbnRpZmllcnMsIHBhc3RlYm9hcmROYW1lKSwgMCk7CiB9Ci0KLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGU7Ci0gICAgdWludDY0X3Qgc2l6ZSB7IDAgfTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRU
eXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwgMCk7Ci0gICAgaWYgKGhh
bmRsZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZm
ZXItPmRhdGEoKSksIHNpemUpOwotfQotCi1VUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
VVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlKQotewotICAgIFN0cmluZyB1cmxTdHJpbmc7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0
ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFz
dGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwotICAgIHJldHVybiBVUkwoeyB9
LCB1cmxTdHJpbmcpOwotfQotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQotewotICAgIFN0cmluZyB2YWx1ZTsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCAw
KTsKLSAgICByZXR1cm4gdmFsdWU7Ci19CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpAQCAtMzQ1LDEzICsyOTksNiBAQCB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcygpLCBN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5
cGVzKSwgMCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCi17
Ci0gICAgU3RyaW5nIHZhbHVlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHZh
bHVlKSwgMCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotfQotCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRl
bnQmIGNvbnRlbnQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVdl
YkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29udGVudCksIDApOwpAQCAtMzc4LDQgKzMyNSw1MCBAQCBs
b25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDdXN0b21EYXRhJgogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAor
aW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3sKKyAgICB1aW50NjRfdCBpdGVtc0NvdW50IHsgMCB9
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQ6OlJlcGx5KGl0ZW1zQ291bnQpLCAwKTsKKyAgICByZXR1cm4g
aXRlbXNDb3VudDsKK30KKworVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKK3sKKyAgICBWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxJbmZvOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5mbyhwYXN0
ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJ
dGVtSW5mbzo6UmVwbHkoYWxsSW5mbyksIDApOworICAgIHJldHVybiBhbGxJbmZvOworfQorCitQ
YXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3sK
KyAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJkTmFt
ZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXg6OlJlcGx5KGluZm8pLCAwKTsKKyAgICByZXR1cm4gaW5mbzsKK30KKworUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhh
bmRsZTsKKyAgICB1aW50NjRfdCBzaXplIHsgMCB9OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5
cGUsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShoYW5kbGUsIHNpemUpLCAwKTsKKyAgICBpZiAoaGFu
ZGxlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZl
ci0+ZGF0YSgpKSwgc2l6ZSk7Cit9CisKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRV
UkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyYgdGl0bGUpCit7CisgICAgU3RyaW5nIHVybFN0cmluZzsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBh
c3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21Q
YXN0ZWJvYXJkOjpSZXBseSh1cmxTdHJpbmcsIHRpdGxlKSwgMCk7CisgICAgcmV0dXJuIFVSTCh7
IH0sIHVybFN0cmluZyk7Cit9CisKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAgU3RyaW5nIHZhbHVl
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkOjpSZXBseSh2YWx1
ZSksIDApOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZjdmMTA0MWQ4OTQyY2ZlOGJhMzc5Nzc2
YjU5NWI5N2NlOTJlMjY4Yy4uMDcwMjM1OTY0ZGU3OWI4ZjBjMWRlZjVlYmI5ZWVjZjM1MzJhYmJj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTAsMTIgKzUwLDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OiBQYXN0ZWJv
YXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludCBnZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBT
dHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92
ZXJyaWRlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAg
ICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZv
aWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBp
ZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5k
aWYKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTgzLDExICs3NywxNiBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAjaWYgVVNFKExJQldQRSkKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcykgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQg
d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmKSBv
dmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUp
IG92ZXJyaWRlOworICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdp
bikgb3ZlcnJpZGU7CiAgICAgbG9uZyB3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGQxNjBhODM4NjUzODM3ODgxNWMyOTMzMGJkMTg2MTcz
MzU4MWY3MDQuLjlmMDAzOTkwMDU5YWY0NDIwYzA1YmI3YTNjM2I5OTlmYjhjMDA2ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01MSwxNCArNTEsMTQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250
ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3
cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGludCBnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBTdHJp
bmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGlu
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJy
aWRlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9h
cmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQg
dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVu
dGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYK
KyAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVVJMIHJlYWRVUkxGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0
cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFZlY3RvcjxXZWJDb3Jl
OjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmNjc3MjBlMzk1Y2Zm
ZTMwMzEwZDg2NGJmOTg5YmUyZmNmYTJiYzg3Li45OGQzMjRjNTJmNjNkZWU3MmZjYTFlZDVkYmVl
MGM2YjdhYzU4NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xNzMsNjAg
KzE3Myw2MCBAQCBsb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhJgogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGRhdGEpOwogfQogCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLQotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJv
YXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK1dlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQogewotICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3Jp
dGUodXJsKTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5p
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4KTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJD
b250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorVmVjdG9yPFdl
YkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0
ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGNvbnRlbnQpOworICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFBhc3RlYm9hcmRJdGVtSW5m
bygpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQo
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiBpbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKK2ludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShpbWFnZSk7CisgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1Jl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkud3JpdGUocGFzdGVib2FyZFR5cGUsIHRleHQpOworICAgIHJldHVybiBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwog
fQogCi1pbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOworICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRpdGxlKTsKIH0KIAotdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS51cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOworICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRTdHJpbmcoaW5kZXgsIHR5cGUpOwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCit2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2Fy
ZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUp
OworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUodXJsKTsKIH0K
IAotVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKK3ZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFk
VVJMKGluZGV4LCB0aXRsZSk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS53cml0ZShjb250ZW50KTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Ondy
aXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYgaW1hZ2UsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmluZyhpbmRleCwgdHlwZSk7CisgICAgUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShpbWFnZSk7CiB9CiAKLVZlY3RvcjxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFz
dGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQogewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFBh
c3RlYm9hcmRJdGVtSW5mbygpOworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkud3JpdGUocGFzdGVib2FyZFR5cGUsIHRleHQpOwogfQogCi1XZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewot
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoaW5kZXgpOworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkudXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzKTsKIH0KICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380487</attachid>
            <date>2019-10-08 17:52:47 -0700</date>
            <delta_ts>2019-10-09 17:10:43 -0700</delta_ts>
            <desc>WIP: Try to fix WPE build again</desc>
            <filename>bug-202647-20191008175246.patch</filename>
            <type>text/plain</type>
            <size>70671</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgyNGM2ZjZlOGI3Yjg0
Mzk1MmVmMDgxOTFiNDA1OTE2MDA3Yzk3My4uZjMxYmEyOGE0MTc2YmE3MTFiYTQzYjRkMDEzN2Ey
ODEwOTY1ZTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxOS0xMC0wOCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJk
IEFQSV0gUmVmYWN0b3IgUGFzdGVib2FyZCBpdGVtIHJlYWRpbmcgZnVuY3Rpb25zIHRvIHdvcmsg
b24gYm90aCBpT1MgYW5kIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDI2NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlcyBzb21lIHBhc3RlYm9hcmQgaGVscGVyIGZ1bmN0aW9ucyBvdXQg
b2YgaU9TLXNwZWNpZmljIGNvZGUsIGFuZCBpbnRvIHBsYXRmb3JtLWFnbm9zdGljIGNvZGUuIFNl
ZSBiZWxvdyBmb3IKKyAgICAgICAgbW9yZSBkZXRhaWxzLiBUaGVyZSBpcyBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IsIGFzIG5vdGhpbmcgZXhlcmNpc2VzIHRoZXNlIG5ldyBwYXN0ZWJvYXJkIGZ1bmN0
aW9ucyBvbiBtYWNPUyB5ZXQuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpwYXN0
ZWJvYXJkSXRlbUluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVh
ZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRVUkwpOgorCisgICAgICAgIEFkZCBzb21l
IG5ldyBoZWxwZXJzIG9uIFBhc3RlYm9hcmQgdG8gcmVhZCBTdHJpbmdzLCBkYXRhLCBhbmQgVVJM
cyBmcm9tIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLiBUaGVzZSBmb3J3YXJkCisgICAgICAgIHRv
IHRoZSBwbGF0Zm9ybSBzdHJhdGVneSB3aGljaCwgaW4gV2ViS2l0MiwgYXJlIGN1cnJlbnRseSBp
bXBsZW1lbnRlZCB1c2luZyBzeW5jIElQQywgYnV0IGNvdWxkIGJlIGNoYW5nZWQgaW4KKyAgICAg
ICAgdGhlIGZ1dHVyZSB0byBiZSBmdWxseSBhc3luY2hyb25vdXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpuYW1lIGNv
bnN0KToKKworICAgICAgICBFeHBvc2UgYSBjcm9zcy1wbGF0Zm9ybSBuYW1lKCkgZ2V0dGVyIG9u
IFBhc3RlYm9hcmQuIE9uIG5vbi1Db2NvYSBwbGF0Zm9ybXMsIHRoaXMgc2ltcGx5IHJldHVybnMg
dGhlIGVtcHR5CisgICAgICAgIHN0cmluZywgYnV0IG9uIG1hY09TIGFuZCBpT1MsIHRoaXMgcmV0
dXJucyB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZCBuYW1lLCB3aGljaCBpcyBzdG9yZWQgaW4gbV9w
YXN0ZWJvYXJkTmFtZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5o
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpwYXRoRm9yQ29udGVudFR5
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpjb250ZW50
VHlwZUZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvOjpkZWNvZGUpOgorCisgICAgICAgIEFkZHMgYSBjb3VwbGUgb2YgbmV3IG1l
bWJlcnMgdG8gUGFzdGVib2FyZEl0ZW1JbmZvICh3aGljaCByZXByZXNlbnRzIG1ldGFkYXRhIGFi
b3V0IGEgZ2l2ZW4gaXRlbSBpbiB0aGUgcGxhdGZvcm0KKyAgICAgICAgcGFzdGVib2FyZCkuIFRo
ZXNlIGFyZSBjaGFuZ2VDb3VudCAod2hpY2ggaXMgc2VsZiBleHBsYW5hdG9yeSksIGFuZCB3ZWJT
YWZlVHlwZXNCeUZpZGVsaXR5LCB3aGljaCBpcyBhIGxpc3Qgb2YKKyAgICAgICAgdHlwZXMgaW4g
ZmlkZWxpdHkgb3JkZXIgd2hpY2ggY29udGFpbnMgdGhlIGxpc3Qgb2YgcGFzdGVib2FyZCB0eXBl
cyB0aGF0IGFyZSBzYWZlIHRvIGV4cG9zZSB0byBiaW5kaW5ncy4gVGhlc2UKKyAgICAgICAgbWF5
IGluY2x1ZGUgdHlwZXMgc3VjaCBhcyAidGV4dC9wbGFpbiIsICJ0ZXh0L2h0bWwiLCAidGV4dC91
cmktbGlzdCIsIGFuZCAiaW1hZ2UvcG5nIi4KKworICAgICAgICBUbyBkaXN0aW5ndWlzaCB0aGlz
IGxpc3QgZnJvbSB0aGUgZXhpc3RpbmcgY29udGVudFR5cGVzQnlGaWRlbGl0eSBsaXN0LCBJJ3Zl
IGFsc28gcmVuYW1lZCBjb250ZW50VHlwZXNCeUZpZGVsaXR5CisgICAgICAgIHRvIHBsYXRmb3Jt
VHlwZXNCeUZpZGVsaXR5LCB0byBtYWtlIGl0IG1vcmUgb2J2aW91cyB0aGF0IHRoaXMgb3RoZXIg
bGlzdCBvZiB0eXBlcyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMsIGFuZCBub3QKKyAgICAgICAgZ2Vu
ZXJhbGx5IHNhZmUgdG8gZXhwb3NlIHRvIHRoZSB3ZWIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKworICAgICAgICBNb3ZlIHNldmVyYWwgaGVscGVycyBvdXQgaW50byBwbGF0Zm9ybS1h
Z25vc3RpYyBjb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZmlsZUNvbnRlbnRTdGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW06IEFkZGVk
LgorCisgICAgICAgIEFkZCBhIG5ldyBmaWxlIHRvIGNvbnRhaW4gdGhlIGltcGxlbWVudGF0aW9u
IG9mIFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvLCB3aGljaCBpcyB0
aGUgc2FtZQorICAgICAgICBhY3Jvc3MgQ29jb2EgcGxhdGZvcm1zLgorCisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwgY29uc3QpOgorCisgICAgICAgIEFkZGl0
aW9uYWxseSByZWZhY3RvciBhbGwgbWV0aG9kcyBvbiBQbGF0Zm9ybVBhc3RlYm9hcmQgdGhhdCB0
YWtlIHBhc3RlYm9hcmQgaXRlbSBpbmRpY2VzIGFzIHNpZ25lZCBpbnRlZ2VycworICAgICAgICAo
YGludGApIHRvIHJlY2VpdmUgYHNpemVfdGAgdmFsdWVzIGluc3RlYWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybVBh
c3RlYm9hcmRMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkU3RyaW5nIGNvbnN0KToKKworICAgICAgICBBZGQgYW4gaW1wbGVtZW50YXRpb24gc3R1
YiBmb3IgV1BFLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vZGVyblBhc3RlYm9hcmRUeXBlRm9yV2ViU2FmZU1J
TUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OndlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3Rl
Ym9hcmRUeXBlKToKKworICAgICAgICBBZGQgaGVscGVycyB0byBjb252ZXJ0IGJldHdlZW4gbW9k
ZXJuIE5TUGFzdGVib2FyZFR5cGVzIGFuZCB3ZWItc2FmZSB0eXBlcy4gV2hpbGUgc29tZSBsb2dp
YyBleGlzdHMgdG9kYXkgb24KKyAgICAgICAgbWFjT1MgdG8gY29udmVydCBiZXR3ZWVuIGxlZ2Fj
eSBwYXN0ZWJvYXJkIHR5cGVzIGFuZCB3ZWItc2FmZSB0eXBlcywgY29udmVyc2lvbiBiZXR3ZWVu
IHRoZSBtb2Rlcm4gcGFzdGVib2FyZAorICAgICAgICB0eXBlcyBhbmQgd2ViLXNhZmUgdHlwZXMg
YXJlIG5lZWRlZCBzaW5jZSBOU1Bhc3RlYm9hcmRJdGVtJ3MgdHlwZXMgb25seSBzdXBwb3J0IE5T
UGFzdGVib2FyZFR5cGVzIGFuZAorICAgICAgICBkeW5hbWljYWxseSBkZWNsYXJlZCB0eXBlcyB0
aGF0IG1hdGNoIHRoZSBmb3JtYXQgb2YgYSB1bml2ZXJzYWwgdHlwZSBpZGVudGZpZXIgKGZvciBp
bnN0YW5jZSwgImNvbS5mb28uYmFyIikuCisKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6Y291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKworICAgICAgICBJbXBsZW1lbnQgYWxs
IG9mIHRoZXNlIGhlbHBlcnMgYnkgbG9va2luZyB1cCB0aGUgTlNQYXN0ZWJvYXJkSXRlbSBhdCB0
aGUgZ2l2ZW4gaXRlbSBpbmRleCBhbmQgcXVlcnlpbmcgaXQgZm9yCisgICAgICAgIGRhdGEgZm9y
IG5vbi1sZWdhY3kgcGFzdGVib2FyZCB0eXBlcy4KKworICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjppdGVtQXRJbmRleCBjb25zdCk6CisKIDIwMTktMTAtMDggIEFkcmlhbiBQ
ZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVd
IEZpeCBub24tdW5pZmllZCBidWlsZHMgYWZ0ZXIgcjI1MDQ4NgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwZWFiMDQ3
MGU0MmEyOGRjYzE2MGNhZGFiODYxNmJlODNiZmMyZmE4Li5mMjE5YjYwMDIzMTM2MGNiMmI1YjFi
YmZkZGM0MDg0OWI4MmRkMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTEwLTA4
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlw
Ym9hcmQgQVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkIGl0ZW0gcmVhZGluZyBmdW5jdGlvbnMgdG8g
d29yayBvbiBib3RoIGlPUyBhbmQgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGlPUy1zcGVjaWZpYyBwYXN0ZWJvYXJkIGZ1bmN0
aW9ucyB0byBiZSBwbGF0Zm9ybS1hZ25vc3RpYy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFz
dGVib2FyZEl0ZW1JbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
c3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlV2ViQ29udGVudFRv
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVJ
bWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6
d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBh
c3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy93cGUvV2ViUGFzdGVib2FyZFByb3h5V1BFLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJv
bVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAx
OS0xMC0wOCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1dQRV0gRml4IG5vbi11bmlmaWVkIGJ1aWxkcyBhZnRlciByMjUwNDg2CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjI0ZWMxNDBjODUwNjZiMzA4YjNkMmU3Y2Y0
YjkzYzYzOTNkNmFmYS4uOWJmZmUzYmNiYjBmY2YyYzdkYzYyOGJhZWM0ZmIyNjgyZTMzNzNjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTA4
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDbGlw
Ym9hcmQgQVBJXSBSZWZhY3RvciBQYXN0ZWJvYXJkIGl0ZW0gcmVhZGluZyBmdW5jdGlvbnMgdG8g
d29yayBvbiBib3RoIGlPUyBhbmQgbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjY0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGlPUy1zcGVjaWZpYyBwYXN0ZWJvYXJkIGZ1bmN0
aW9ucyB0byBiZSBwbGF0Zm9ybS1hZ25vc3RpYy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRl
bUluZm8pOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9t
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzKToKKwogMjAxOS0xMC0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgSURMIGZvciByZXF1ZXN0SWRsZUNhbGxiYWNrCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMDY5MmE4ZjdiN2QxODIwNjNlNTM3MGRiMzg5Yjcy
ZDc5YmE4YzliLi4wOTU3OTQzY2M0ZmViZTM5ZGQ3MGExMjhlZTZjNGY3MTgxYTYwMjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE5OCw2ICsxOTgsNyBAQCBwbGF0Zm9ybS9jb2NvYS9N
SU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLm1tCiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbQogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCitwbGF0Zm9ybS9jb2Nv
YS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KIHBsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrc0NvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
N2EzYTliZGFlZjg3Mzk5YzA4ZjliM2ZiMzI3ZjBmNzVjODQ5NGU0Yy4uZDkyYjc2MmVmOTRkNTEw
ZjBmN2Q2Yzg5YTA3MWE4N2VkZGEwNjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUxOTMsNiArMTUxOTMsNyBAQAogCQlG
NDRFQkJEQTFEQjVERDlEMDAyNzczMzQgLyogU3RhdGljUmFuZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDVDMjMxQjE5OTVCNzNCMDBBNkUyRTMgLyogQXhpc1Njcm9sbFNuYXBP
ZmZzZXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF4aXNTY3Jv
bGxTbmFwT2Zmc2V0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUMyMzFD
MTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY0NjI4QTlFMjM0RDNCQkYwMEJDODg0QyAvKiBQbGF0Zm9ybVBh
c3RlYm9hcmRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFBsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDY3MjkyNTFFMERFNUFCMDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDc4NzU1MjE5OTgzQUZGMDAyNEEyODcgLyog
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQ3ODc1NTMxOTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjcwOCw2ICsyMjcw
OSw3IEBACiAJCQkJQTE4ODkwQUQxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLmggKi8sCiAJCQkJQTE4ODkwQUMxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tICovLAogCQkJCTlCRUQyQ0FGMUY3Q0MwNjIwMDY2
NjAxOCAvKiBQYXN0ZWJvYXJkQ29jb2EubW0gKi8sCisJCQkJRjQ2MjhBOUUyMzREM0JCRjAwQkM4
ODRDIC8qIFBsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tICovLAogCQkJCTUyQjBENEJEMUM1N0ZE
MUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCAqLywKIAkJCQlDREEyOUEwODFDQkQ5OUY0MDA5
MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggKi8sCiAJCQkJQ0RBMjlBMEExQ0JE
OUE3NDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDU1NWVjMjgyZTRiYjY2ZTVmOWQxMTEyMGI5NzYx
YTcyNWViYzNmMzQuLjhmOWJhYjg0NTYxMGQwZjkxMDdkODIzMGRmMjNlZWYxZmIwMWMxNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC05OCw0ICs5OCwyOSBAQCBW
ZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkQWxsU3RyaW5ncyhjb25zdCBTdHJpbmcmIHR5
cGUpCiAKICNlbmRpZgogCitWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjph
bGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdAoreworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1l
KCkpOworfQorCitQYXN0ZWJvYXJkSXRlbUluZm8gUGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1J
bmZvKHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4
LCBuYW1lKCkpOworfQorCitTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgs
IHR5cGUsIG5hbWUoKSk7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCit7Cisg
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCkpOworfQorCitVUkwgUGFz
dGVib2FyZDo6cmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpCit7CisgICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFVSTEZy
b21QYXN0ZWJvYXJkKGluZGV4LCBuYW1lKCksIHRpdGxlKTsKK30KKwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBmYjg2MGUxMzg0NTIxYTk4OTVjNDdhNTJiNDlhMjQz
MmJhM2ZkODVhLi42OTg3ZWQyNTY1M2ZiNmM5YzY4YjNhMzdhZjc3NjA0YzA4YjY2OTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0yNjUsMTEgKzI2NSwxNiBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRDb2Nv
YVR5cGVBc0ZpbGUoY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5T
QXJyYXkgKnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlwZXMoKTsKLSAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CiAgICAgbG9u
ZyBjaGFuZ2VDb3VudCgpIGNvbnN0OwogICAgIGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBy
ZWFkQ3VzdG9tRGF0YSgpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjb25z
dCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CisjZWxz
ZQorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
IH0KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIENPTVB0cjxJRGF0YU9iamVjdD4g
ZGF0YU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YU9iamVjdDsgfQogICAgIHZvaWQgc2V0
RXh0ZXJuYWxEYXRhT2JqZWN0KElEYXRhT2JqZWN0Kik7CkBAIC0yNzksNiArMjg0LDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIHdyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYsIGNvbnN0IFVS
TCYpOyAvLyBGSVhNRTogTGF5ZXJpbmcgdmlvbGF0aW9uLgogI2VuZGlmCiAKKyAgICBWZWN0b3I8
UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdDsKKyAgICBQ
YXN0ZWJvYXJkSXRlbUluZm8gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7
CisKKyAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4
LCBTdHJpbmcmIHRpdGxlKTsKKwogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgcmVzcGVjdHNVVElGaWRlbGl0aWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCmluZGV4IGQxZDIzMDhhZDk5NWFjZjljN2E1
ZjUzZGVkOWZkMmEwODBlZWNmNzUuLjNiMzk3YzM3MzRkMzJhMGZiNjBlNzAzMWVmOWQwYmM1YWI0
ODMyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVt
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5o
CkBAIC02NiwxOCArNjYsMjAgQEAgT3B0aW9uYWw8UHJlc2VudGF0aW9uU2l6ZT4gUHJlc2VudGF0
aW9uU2l6ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKIHN0cnVjdCBQYXN0ZWJvYXJkSXRl
bUluZm8gewogICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzRm9yRmlsZVVwbG9hZDsKLSAgICBWZWN0
b3I8U3RyaW5nPiBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkOwotICAgIFZlY3RvcjxTdHJpbmc+
IGNvbnRlbnRUeXBlc0J5RmlkZWxpdHk7CisgICAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1UeXBl
c0ZvckZpbGVVcGxvYWQ7CisgICAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1UeXBlc0J5RmlkZWxp
dHk7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVOYW1lOwogICAgIFByZXNlbnRhdGlvblNpemUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTsKICAgICBib29sIGlzTm9uVGV4dFR5cGUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQgeyBmYWxz
ZSB9OworICAgIFZlY3RvcjxTdHJpbmc+IHdlYlNhZmVUeXBlc0J5RmlkZWxpdHk7CisgICAgaW50
IGNoYW5nZUNvdW50IHsgMCB9OwogICAgIFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgeyBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0
eWxlOjpVbnNwZWNpZmllZCB9OwogCiAgICAgU3RyaW5nIHBhdGhGb3JDb250ZW50VHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQocGF0aHNGb3JGaWxl
VXBsb2FkLnNpemUoKSA9PSBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLnNpemUoKSk7Ci0gICAg
ICAgIGF1dG8gaW5kZXggPSBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLmZpbmQodHlwZSk7Cisg
ICAgICAgIEFTU0VSVChwYXRoc0ZvckZpbGVVcGxvYWQuc2l6ZSgpID09IHBsYXRmb3JtVHlwZXNG
b3JGaWxlVXBsb2FkLnNpemUoKSk7CisgICAgICAgIGF1dG8gaW5kZXggPSBwbGF0Zm9ybVR5cGVz
Rm9yRmlsZVVwbG9hZC5maW5kKHR5cGUpOwogICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xMDQsMTAgKzEwNiwxMCBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZEl0ZW1JbmZvIHsKIAogICAgIFN0cmluZyBjb250ZW50VHlwZUZvckhpZ2hlc3RG
aWRlbGl0eUl0ZW0oKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRlbnRUeXBlc0ZvckZp
bGVVcGxvYWQuaXNFbXB0eSgpKQorICAgICAgICBpZiAocGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxv
YWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICByZXR1cm4g
Y29udGVudFR5cGVzRm9yRmlsZVVwbG9hZC5maXJzdCgpOworICAgICAgICByZXR1cm4gcGxhdGZv
cm1UeXBlc0ZvckZpbGVVcGxvYWQuZmlyc3QoKTsKICAgICB9CiAKICAgICBTdHJpbmcgcGF0aEZv
ckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKSBjb25zdApAQCAtMTI1LDcgKzEyNyw3IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkSXRlbUluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgUGFzdGVi
b2FyZEl0ZW1JbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNv
ZGVyIDw8IHBhdGhzRm9yRmlsZVVwbG9hZCA8PCBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkIDw8
IGNvbnRlbnRUeXBlc0J5RmlkZWxpdHkgPDwgc3VnZ2VzdGVkRmlsZU5hbWUgPDwgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSA8PCBpc05vblRleHRUeXBlIDw8IGNvbnRhaW5zRmlsZVVSTEFuZEZp
bGVVcGxvYWRDb250ZW50OworICAgIGVuY29kZXIgPDwgcGF0aHNGb3JGaWxlVXBsb2FkIDw8IHBs
YXRmb3JtVHlwZXNGb3JGaWxlVXBsb2FkIDw8IHBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5IDw8IHN1
Z2dlc3RlZEZpbGVOYW1lIDw8IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPDwgaXNOb25UZXh0
VHlwZSA8PCBjb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudCA8PCB3ZWJTYWZlVHlw
ZXNCeUZpZGVsaXR5IDw8IGNoYW5nZUNvdW50OwogICAgIGVuY29kZXIuZW5jb2RlRW51bShwcmVm
ZXJyZWRQcmVzZW50YXRpb25TdHlsZSk7CiB9CiAKQEAgLTEzNiwxMCArMTM4LDEwIEBAIE9wdGlv
bmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYXRoc0ZvckZpbGVV
cGxvYWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZCkpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQpKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29u
dGVudFR5cGVzQnlGaWRlbGl0eSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGxh
dGZvcm1UeXBlc0J5RmlkZWxpdHkpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVkRmlsZU5hbWUpKQpAQCAtMTU0
LDYgKzE1NiwxMiBAQCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVt
SW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViU2Fm
ZVR5cGVzQnlGaWRlbGl0eSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGFuZ2VDb3VudCkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQucHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGRjMTZm
MGZhMGM1YTkwMTJjNjUyNWY1YTk1MzBmZTc2NTgxNTEzNjUuLjU3N2NhZjg5NWJlYjE5Nzk4OTky
NzAxZWQ1ZmY4YWM3MDUyMGYzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCkBAIC00NiwxMiArNDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwotICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2aXJ0dWFs
IFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlk
ZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC03Myw2ICs2NywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBsb25nIHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKICNlbmRpZgorICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2
aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgdmlydHVhbCBQYXN0
ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxQYXN0
ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgPSAwOwogICAgIHZpcnR1YWwgbG9uZyB3
cml0ZUN1c3RvbURhdGEoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CkBAIC04NCw3ICs4NCw2IEBAIHB1YmxpYzoKIAogI2lmIFVT
RShMSUJXUEUpCiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cykgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBlMDMzMTUwOThlMTU1YTkyNmY3MTk4ZTJj
NzI2YjM3NTdjMTI0NDJmLi5kZjAzOTNlMzVmY2E1YjdkYjAzNDYzMDM3NjBhZmVjNmFkYWE2YzMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAt
MzMsNiArMzMsNyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogT0JKQ19DTEFTUyBOU1Bhc3RlYm9h
cmQ7CitPQkpDX0NMQVNTIE5TUGFzdGVib2FyZEl0ZW07CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCkBAIC01OSwxMCArNjAsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBVU0UoTElCV1BFKQogICAgIFdFQkNP
UkVfRVhQT1JUIFBsYXRmb3JtUGFzdGVib2FyZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbygpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGlu
dCBpbmRleCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKICNlbmRpZgorICAgIFdFQkNP
UkVfRVhQT1JUIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCBpbmRleCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5m
bz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0
cmluZyB1bmlxdWVOYW1lKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHBs
YXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0
IFN0cmluZyYgZG9tVHlwZSk7CkBAIC05MCw5ICs5MSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJM
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyByZWFkU3RyaW5nKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoaW50IGlu
ZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBudW1iZXJPZkZpbGVzKCkgY29uc3Q7CiAKQEAgLTEwOSw2ICsxMTAsMTAgQEAgcHJp
dmF0ZToKICAgICBib29sIGFsbG93UmVhZGluZ1VSTEF0SW5kZXgoY29uc3QgVVJMJiwgaW50IGlu
ZGV4KSBjb25zdDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIE5TUGFzdGVib2Fy
ZEl0ZW0gKml0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3Q7CisjZW5kaWYKKwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBtX3Bhc3RlYm9hcmQ7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQppbmRleCAyNjQ3NDgwYmRhNzJiZjM2MzMyZTU0MmZlMTc3ZmZjMjY5OGZmMjg3Li5jMGZi
YTRiZWYwNzUxNWRlNGFkMjU0YjQwMzcwN2YxMWI1Y2IxNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0xNDgsNyArMTQ4LDcg
QEAgUGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZSBQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0
YXRlKCkKICAgICAgICAgLy8gSWYgdGhlIGl0ZW0gY2FuJ3QgYmUgdHJlYXRlZCBhcyBhbiBhdHRh
Y2htZW50LCBpdCdzIHZlcnkgbGlrZWx5IHRoYXQgdGhlIGNvbnRlbnQgYmVpbmcgZHJvcHBlZCBp
cyBqdXN0CiAgICAgICAgIC8vIGFuIGlubGluZSBwaWVjZSBvZiB0ZXh0LCB3aXRoIG5vIGZpbGVz
IGluIHRoZSBwYXN0ZWJvYXJkIChhbmQgdGhlcmVmb3JlLCBubyByaXNrIG9mIGxlYWtpbmcgZmls
ZSBwYXRocwogICAgICAgICAvLyB0byB3ZWIgY29udGVudCkuIEluIGNhc2VzIHN1Y2ggYXMgdGhl
c2UsIHdlIHNob3VsZCBub3Qgc3VwcHJlc3MgRGF0YVRyYW5zZmVyIGFjY2Vzcy4KLSAgICAgICAg
YXV0byBpdGVtcyA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
YWxsUGFzdGVib2FyZEl0ZW1JbmZvKG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBhdXRvIGl0
ZW1zID0gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7CiAgICAgICAgIG1heUNvbnRhaW5GaWxlUGF0
aHMgPSBpdGVtcy5zaXplKCkgIT0gMSB8fCBub3RGb3VuZCAhPSBpdGVtcy5maW5kTWF0Y2hpbmco
W10gKGF1dG8mIGl0ZW0pIHsKICAgICAgICAgICAgIHJldHVybiBpdGVtLmNhbkJlVHJlYXRlZEFz
QXR0YWNobWVudE9yRmlsZSgpIHx8IGl0ZW0uaXNOb25UZXh0VHlwZSB8fCBpdGVtLmNvbnRhaW5z
RmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50OwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzQ5NTQzM2VhY2U5NjhiNjM2MmY2ZTU2YzQ0Y2Q1ODgzM2RhZWJjNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFz
dGVib2FyZENvY29hLm1tCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgorCisjaW1wb3J0ICJQYXN0
ZWJvYXJkSXRlbUluZm8uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWZWN0b3I8UGFzdGVi
b2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbygp
Cit7CisgICAgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gaXRlbUluZm87CisgICAgaW50IG51
bWJlck9mSXRlbXMgPSBjb3VudCgpOworICAgIGl0ZW1JbmZvLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobnVtYmVyT2ZJdGVtcyk7CisgICAgZm9yIChOU0ludGVnZXIgaXRlbUluZGV4ID0gMDsgaXRl
bUluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpdGVtSW5kZXgpCisgICAgICAgIGl0ZW1JbmZvLnVu
Y2hlY2tlZEFwcGVuZChpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGl0ZW1JbmRleCkpOworICAg
IHJldHVybiBpdGVtSW5mbzsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAwMjcxYjkzZTcwNWNl
MmM0MmQ2MzJmZTJkYjI5YWE0NmU4MzZkMjM5Li5lMWNlMmYzNGI1YzE0YmEyODk3N2I4YjgxZTdk
NmQyY2M2MmI4NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3Rp
bmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsCiAgICAg
ICAgIC8vIFRyeSB0byByZWFkIGRhdGEgZnJvbSBlYWNoIHR5cGUgaWRlbnRpZmllciB0aGF0IHRo
aXMgcGFzdGVib2FyZCBpdGVtIHN1cHBvcnRzLCBhbmQgV2ViS2l0IGFsc28gcmVjb2duaXplcy4g
VHlwZSBpZGVudGlmaWVycyBhcmUKICAgICAgICAgLy8gcmVhZCBpbiBvcmRlciBvZiBmaWRlbGl0
eSwgYXMgc3BlY2lmaWVkIGJ5IGVhY2ggcGFzdGVib2FyZCBpdGVtLgogICAgICAgICBSZWFkZXJS
ZXN1bHQgcmVzdWx0ID0gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKLSAgICAgICAgZm9y
IChhdXRvJiB0eXBlIDogaW5mby5jb250ZW50VHlwZXNCeUZpZGVsaXR5KSB7CisgICAgICAgIGZv
ciAoYXV0byYgdHlwZSA6IGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkpIHsKICAgICAgICAg
ICAgIGlmICghaXNUeXBlQWxsb3dlZEJ5UmVhZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBkOGM1NmY5NWFhYTNmMzZmZWJm
MTQwM2QwOTdhYThjN2I3MWE1NTFlLi45MTZkYWViZDBhMjc4MGM5MzYzZDM1NTk4NWE5YjYxMmVm
NDFkMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KQEAgLTExNiwxNyArMTE2LDkgQEAgc3RhdGljIFBhc3RlYm9hcmRJ
dGVtUHJlc2VudGF0aW9uU3R5bGUgcGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShVSVBy
ZWZlcnIKIAogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxF
X0FORF9URUFNX0RBVEEKIAotVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKQorUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRm
b3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
Ci0gICAgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gaXRlbUluZm87Ci0gICAgZm9yIChOU0lu
dGVnZXIgaXRlbUluZGV4ID0gMDsgaXRlbUluZGV4IDwgW21fcGFzdGVib2FyZCBudW1iZXJPZkl0
ZW1zXTsgKytpdGVtSW5kZXgpCi0gICAgICAgIGl0ZW1JbmZvLmFwcGVuZChpbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KGl0ZW1JbmRleCkpOwotICAgIHJldHVybiBpdGVtSW5mbzsKLX0KLQotUGFz
dGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChpbnQgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVy
T2ZJdGVtc10pCisgICAgaWYgKGluZGV4ID49IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KFttX3Bh
c3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgUGFz
dGVib2FyZEl0ZW1JbmZvIGluZm87CkBAIC0xNDAsMTUgKzEzMiwxNSBAQCBQYXN0ZWJvYXJkSXRl
bUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBp
bmRleCkKICAgICAgICAgZm9yIChOU1VSTCAqdXJsIGluIHVybHMpCiAgICAgICAgICAgICBpbmZv
LnBhdGhzRm9yRmlsZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQodXJsLnBhdGgpOwogCi0gICAgICAg
IGluZm8uY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZp
bGVUeXBlcy5jb3VudCk7CisgICAgICAgIGluZm8ucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmaWxlVHlwZXMuY291bnQpOwogICAgICAgICBmb3IgKE5T
U3RyaW5nICpmaWxlVHlwZSBpbiBmaWxlVHlwZXMpCi0gICAgICAgICAgICBpbmZvLmNvbnRlbnRU
eXBlc0ZvckZpbGVVcGxvYWQudW5jaGVja2VkQXBwZW5kKGZpbGVUeXBlKTsKKyAgICAgICAgICAg
IGluZm8ucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQudW5jaGVja2VkQXBwZW5kKGZpbGVUeXBl
KTsKICAgICB9IGVsc2UgewogICAgICAgICBOU0FycmF5ICpmaWxlVHlwZXMgPSBpdGVtUHJvdmlk
ZXIud2ViX2ZpbGVVcGxvYWRDb250ZW50VHlwZXM7Ci0gICAgICAgIGluZm8uY29udGVudFR5cGVz
Rm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5jb3VudCk7Cisg
ICAgICAgIGluZm8ucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShmaWxlVHlwZXMuY291bnQpOwogICAgICAgICBpbmZvLnBhdGhzRm9yRmlsZVVwbG9hZC5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5jb3VudCk7CiAgICAgICAgIGZvciAoTlNT
dHJpbmcgKmZpbGVUeXBlIGluIGZpbGVUeXBlcykgewotICAgICAgICAgICAgaW5mby5jb250ZW50
VHlwZXNGb3JGaWxlVXBsb2FkLnVuY2hlY2tlZEFwcGVuZChmaWxlVHlwZSk7CisgICAgICAgICAg
ICBpbmZvLnBsYXRmb3JtVHlwZXNGb3JGaWxlVXBsb2FkLnVuY2hlY2tlZEFwcGVuZChmaWxlVHlw
ZSk7CiAgICAgICAgICAgICBpbmZvLnBhdGhzRm9yRmlsZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQo
eyB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2OCw5ICsxNjAsOSBAQCBQYXN0ZWJvYXJkSXRl
bUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBp
bmRleCkKICAgICBpbmZvLmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50ID0gaXRl
bVByb3ZpZGVyLndlYl9jb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudDsKICAgICBp
bmZvLnN1Z2dlc3RlZEZpbGVOYW1lID0gaXRlbVByb3ZpZGVyLnN1Z2dlc3RlZE5hbWU7CiAgICAg
TlNBcnJheTxOU1N0cmluZyAqPiAqcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyA9IGl0ZW1Qcm92
aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzOwotICAgIGluZm8uY29udGVudFR5cGVzQnlG
aWRlbGl0eS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMu
Y291bnQpOworICAgIGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzLmNvdW50KTsKICAgICBmb3IgKE5TU3Ry
aW5nICp0eXBlSWRlbnRpZmllciBpbiByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7Ci0gICAg
ICAgIGluZm8uY29udGVudFR5cGVzQnlGaWRlbGl0eS51bmNoZWNrZWRBcHBlbmQodHlwZUlkZW50
aWZpZXIpOworICAgICAgICBpbmZvLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5LnVuY2hlY2tlZEFw
cGVuZCh0eXBlSWRlbnRpZmllcik7CiAgICAgICAgIENGU3RyaW5nUmVmIGNmVHlwZUlkZW50aWZp
ZXIgPSAoQ0ZTdHJpbmdSZWYpdHlwZUlkZW50aWZpZXI7CiAgICAgICAgIGlmICghVVRUeXBlSXNE
ZWNsYXJlZChjZlR5cGVJZGVudGlmaWVyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTkw
LDE3ICsxODIsMTQgQEAgUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIGluZm8uaXNOb25UZXh0
VHlwZSA9IHRydWU7CiAgICAgfQogCisgICAgaW5mby5jaGFuZ2VDb3VudCA9IGNoYW5nZUNvdW50
KCk7CisKICAgICByZXR1cm4gaW5mbzsKIH0KIAogI2Vsc2UKIAotUGFzdGVib2FyZEl0ZW1JbmZv
IFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQpCi17Ci0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKQorUGFzdGVib2FyZEl0ZW1JbmZvIFBs
YXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QpCiB7CiAg
ICAgcmV0dXJuIHsgfTsKIH0KQEAgLTY1Niw3ICs2NDUsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIE5TSW5kZXhT
ZXQgKmluZGV4U2V0ID0gW05TSW5kZXhTZXQgaW5kZXhTZXRXaXRoSW5kZXg6aW5kZXhdOwogCkBA
IC02NjcsNyArNjU2LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXAKICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtLmdldCgpIG9iamVjdEF0SW5kZXg6MF0p
OwogfQogCi1TdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBp
ZiAodHlwZSA9PSBTdHJpbmcoa1VUVHlwZVVSTCkpIHsKICAgICAgICAgU3RyaW5nIHRpdGxlOwpA
QCAtNjk3LDcgKzY4Niw3IEBAIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmco
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCi1VUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkVVJMKGludCBpbmRleCwgU3RyaW5n
JiB0aXRsZSkgY29uc3QKK1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwoc2l6ZV90IGlu
ZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdAogewogICAgIGlkIHZhbHVlID0gW21fcGFzdGVib2Fy
ZCB2YWx1ZXNGb3JQYXN0ZWJvYXJkVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVJM
IGluSXRlbVNldDpbTlNJbmRleFNldCBpbmRleFNldFdpdGhJbmRleDppbmRleF1dLmZpcnN0T2Jq
ZWN0OwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9s
aWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKaW5kZXggZjhhNjFlYzcwYzBjMWE0Y2QzNzdmMGU3
Y2Q2NzZlZmI5ZGU1YmM4YS4uNDNiYTllNGRlYTVmNjVhNzYwOWUzMzJlYWQyZmViNzNkZjNiMzI0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRM
aWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZE9yaWdp
bigpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkK
IHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgdHlwZSk7CisgICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKDAsIHR5cGUsIG5hbWUoKSk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
SW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikKIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRQbGFpblRleHQmIHRleHQpCiB7Ci0gICAgdGV4dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwg
InRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIpOworICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KDAsICJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCBuYW1lKCkpOwogfQogCiB2b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGlu
Z1BvbGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0
Zm9ybVBhc3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3Bl
L1BsYXRmb3JtUGFzdGVib2FyZExpYldQRS5jcHAKaW5kZXggMGZkYjc1ZGFmNjlkNThlNWRlMDFh
MTRiMWU1ZWQ1YTdiOGQ5NDdjZi4uZTU0MGMzNWQ1M2ZmYTQxMTMyMWI4ODE4YjJiZWE2MjA2YjU3
NWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3Jt
UGFzdGVib2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3Bl
L1BsYXRmb3JtUGFzdGVib2FyZExpYldQRS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB3cGVf
cGFzdGVib2FyZF9zdHJpbmdfdmVjdG9yX2ZyZWUoJnBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKLVN0
cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoaW50LCBjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CitTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIHN0cnVjdCB3cGVfcGFzdGVib2FyZF9z
dHJpbmcgc3RyaW5nID0geyBudWxscHRyLCAwIH07CiAgICAgd3BlX3Bhc3RlYm9hcmRfZ2V0X3N0
cmluZyhtX3Bhc3RlYm9hcmQsIHR5cGUudXRmOCgpLmRhdGEoKSwgJnN0cmluZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpp
bmRleCAwY2IxZGQ4YjkzMGEwNjViN2MwODAxNWNhMmUwY2U1ZGJkNWIyYjQ5Li5jNWExMTk3MmI2
MjgyNDAzMjdhZjQ4N2M2ODkwMmZmZjE2NmFlYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTM4NCw2ICszODQs
MTE2IEBAIGxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhCiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7
CiB9CiAKK3N0YXRpYyBOU1Bhc3RlYm9hcmRUeXBlIG1vZGVyblBhc3RlYm9hcmRUeXBlRm9yV2Vi
U2FmZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgd2ViU2FmZVR5cGUpCit7CisgICAgaWYgKHdlYlNh
ZmVUeXBlID09ICJ0ZXh0L3BsYWluIikKKyAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVT
dHJpbmc7CisgICAgaWYgKHdlYlNhZmVUeXBlID09ICJ0ZXh0L2h0bWwiKQorICAgICAgICByZXR1
cm4gTlNQYXN0ZWJvYXJkVHlwZUhUTUw7CisgICAgaWYgKHdlYlNhZmVUeXBlID09ICJ0ZXh0L3Vy
aS1saXN0IikKKyAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVVUkw7CisgICAgaWYgKHdl
YlNhZmVUeXBlID09ICJpbWFnZS9wbmciKQorICAgICAgICByZXR1cm4gTlNQYXN0ZWJvYXJkVHlw
ZVBORzsKKyAgICByZXR1cm4gbmlsOworfQorCitlbnVtIGNsYXNzIENvbnRhaW5zRmlsZVVSTCB7
IE5vLCBZZXMgfTsKK3N0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVi
b2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5cGUsIENvbnRhaW5zRmlsZVVSTCBj
b250YWluc0ZpbGVVUkwpCit7CisgICAgaWYgKFtwbGF0Zm9ybVR5cGUgaXNFcXVhbDpOU1Bhc3Rl
Ym9hcmRUeXBlU3RyaW5nXSAmJiBjb250YWluc0ZpbGVVUkwgPT0gQ29udGFpbnNGaWxlVVJMOjpO
bykKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIjsKKyAgICBpZiAoW3BsYXRmb3JtVHlwZSBp
c0VxdWFsOk5TUGFzdGVib2FyZFR5cGVIVE1MXSB8fCBbcGxhdGZvcm1UeXBlIGlzRXF1YWw6TlNQ
YXN0ZWJvYXJkVHlwZVJURl0gfHwgW3BsYXRmb3JtVHlwZSBpc0VxdWFsOk5TUGFzdGVib2FyZFR5
cGVSVEZEXSkKKyAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiOworICAgIGlmIChbcGxhdGZvcm1U
eXBlIGlzRXF1YWw6TlNQYXN0ZWJvYXJkVHlwZVVSTF0gJiYgY29udGFpbnNGaWxlVVJMID09IENv
bnRhaW5zRmlsZVVSTDo6Tm8pCisgICAgICAgIHJldHVybiAidGV4dC91cmktbGlzdCI7CisgICAg
aWYgKFtwbGF0Zm9ybVR5cGUgaXNFcXVhbDpOU1Bhc3RlYm9hcmRUeXBlUE5HXSB8fCBbcGxhdGZv
cm1UeXBlIGlzRXF1YWw6TlNQYXN0ZWJvYXJkVHlwZVRJRkZdKQorICAgICAgICByZXR1cm4gImlt
YWdlL3BuZyI7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdAoreworICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChp
bmRleCk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBw
bGF0Zm9ybVR5cGUgPSBtb2Rlcm5QYXN0ZWJvYXJkVHlwZUZvcldlYlNhZmVNSU1FVHlwZSh0eXBl
KTsKKyAgICBpZiAoIXBsYXRmb3JtVHlwZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6cGxhdGZvcm1UeXBlXSkgewor
ICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKKyAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgfQorCisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK1N0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Cit7CisgICAgTlNQYXN0ZWJvYXJk
SXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIWl0ZW0pCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBhdXRvIHBsYXRmb3JtVHlwZSA9IG1vZGVyblBhc3RlYm9hcmRU
eXBlRm9yV2ViU2FmZU1JTUVUeXBlKHR5cGUpOworICAgIGlmICghcGxhdGZvcm1UeXBlKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIFtpdGVtIHN0cmluZ0ZvclR5cGU6cGxhdGZv
cm1UeXBlXTsKK30KKworVVJMIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFVSTChzaXplX3QgaW5k
ZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0Cit7CisgICAgdGl0bGUgPSBlbXB0eVN0cmluZygpOwor
CisgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBp
ZiAoIWl0ZW0pCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHVy
bDsKKyAgICBpZiAoaWQgcHJvcGVydHlMaXN0ID0gW2l0ZW0gcHJvcGVydHlMaXN0Rm9yVHlwZTpO
U1Bhc3RlYm9hcmRUeXBlVVJMXSkKKyAgICAgICAgdXJsID0gYWRvcHROUyhbW05TVVJMIGFsbG9j
XSBpbml0V2l0aFBhc3RlYm9hcmRQcm9wZXJ0eUxpc3Q6cHJvcGVydHlMaXN0IG9mVHlwZTpOU1Bh
c3RlYm9hcmRUeXBlVVJMXSk7CisgICAgZWxzZSBpZiAoTlNTdHJpbmcgKmFic29sdXRlU3RyaW5n
ID0gW2l0ZW0gc3RyaW5nRm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlVVJMXSkKKyAgICAgICAgdXJs
ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6YWJzb2x1dGVTdHJpbmddOworICAgIHJldHVybiB7IFt1
cmwgaXNGaWxlVVJMXSA/IG5pbCA6IHVybC5nZXQoKSB9OworfQorCitpbnQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpjb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgcGFzdGVi
b2FyZEl0ZW1zXS5jb3VudDsKK30KKworUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVi
b2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpCit7CisgICAgTlNQ
YXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIWl0ZW0p
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKKyAg
ICBOU0FycmF5PE5TUGFzdGVib2FyZFR5cGU+ICpwbGF0Zm9ybVR5cGVzID0gW2l0ZW0gdHlwZXNd
OworICAgIGF1dG8gY29udGFpbnNGaWxlVVJMID0gW3BsYXRmb3JtVHlwZXMgY29udGFpbnNPYmpl
Y3Q6TlNQYXN0ZWJvYXJkVHlwZUZpbGVVUkxdID8gQ29udGFpbnNGaWxlVVJMOjpZZXMgOiBDb250
YWluc0ZpbGVVUkw6Ok5vOworICAgIExpc3RIYXNoU2V0PFN0cmluZz4gd2ViU2FmZVR5cGVzOwor
ICAgIGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShw
bGF0Zm9ybVR5cGVzLmNvdW50KTsKKyAgICBmb3IgKE5TUGFzdGVib2FyZFR5cGUgdHlwZSBpbiBw
bGF0Zm9ybVR5cGVzKSB7CisgICAgICAgIGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkudW5j
aGVja2VkQXBwZW5kKHR5cGUpOworICAgICAgICBhdXRvIHdlYlNhZmVUeXBlID0gd2ViU2FmZU1J
TUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUodHlwZSwgY29udGFpbnNGaWxlVVJMKTsKKyAg
ICAgICAgaWYgKHdlYlNhZmVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIHdlYlNhZmVUeXBlcy5hZGQoV1RGTW92ZSh3ZWJTYWZlVHlwZSkpOworICAgIH0K
KyAgICBpbmZvLmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50ID0gY29udGFpbnNG
aWxlVVJMID09IENvbnRhaW5zRmlsZVVSTDo6WWVzOworICAgIGluZm8ud2ViU2FmZVR5cGVzQnlG
aWRlbGl0eSA9IGNvcHlUb1ZlY3Rvcih3ZWJTYWZlVHlwZXMpOworICAgIGluZm8uY2hhbmdlQ291
bnQgPSBjaGFuZ2VDb3VudCgpOworICAgIHJldHVybiBpbmZvOworfQorCitOU1Bhc3RlYm9hcmRJ
dGVtICpQbGF0Zm9ybVBhc3RlYm9hcmQ6Oml0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QK
K3sKKyAgICBOU0FycmF5PE5TUGFzdGVib2FyZEl0ZW0gKj4gKml0ZW1zID0gW21fcGFzdGVib2Fy
ZCBwYXN0ZWJvYXJkSXRlbXNdOworICAgIHJldHVybiBpbmRleCA+PSBpdGVtcy5jb3VudCA/IG5p
bCA6IGl0ZW1zW2luZGV4XTsKK30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbQppbmRleCBkZTM5NWRhOTZmY2RhOTgxN2MxZTI2ZTdkNmU1ZmQzMzM5NmYzYmYw
Li4wYTE4MTc0NDUxMGU4M2E4ZjMxYmI2YTE1ZTZjZWQ2MjI1NGNmMjgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbQpAQCAtMTgwLDQxICsxODAsMzQgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRl
Q3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGEKICAgICBj
b21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRl
KGRhdGEpKTsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLXZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp3cml0ZVVSTFRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwpOwotfQotCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6d3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRX
ZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQYXN0ZWJvYXJkSXRl
bUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoY29udGVudCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8o
KSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJk
KGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBhc3RlYm9hcmRJdGVtSW5mbyYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4
KSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4
dCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5jb3VudCgpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGlu
ZGV4LCBwYXN0ZWJvYXJkVHlwZSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0
bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRV
UkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgU3RyaW5nIHRpdGxlOwogICAgIFN0cmluZyB1
cmwgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRp
dGxlKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVybCksIFdURk1vdmUodGl0bGUp
KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6
OkhhbmRsZSYmLCB1aW50NjRfdCBzaXplKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYsIHVpbnQ2NF90
IHNpemUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihp
bmRleCwgcGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQpAQCAtMjMxLDE5ICsyMjQs
MjYgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1
aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoaGFuZGxlKSwgc2l6ZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0
ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3Rl
Ym9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuY291bnQoKSk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS53cml0ZSh1cmwpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkpOworICAgIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoY29udGVudCk7CiB9CiAKLXZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQYXN0
ZWJvYXJkSXRlbUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
SW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsK
LSAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgpKTsKKyAgICBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7Cit9CisKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCit7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShw
YXN0ZWJvYXJkVHlwZSwgdGV4dCk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp1cGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZp
ZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtMjUxLDYgKzI1MSw2IEBAIHZv
aWQgV2ViUGFzdGVib2FyZFByb3h5Ojp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwogfQogCi0j
ZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3Bw
CmluZGV4IDdiZmY5MzRiZmQ2MzE5OTRkNTU2MmE4NjkzNGExMWI5N2MyODQxYWMuLjBmZWJkYzEy
MzE2Y2ViY2U0ODAwNGM5MTViYjIwODQ1ZGIwYmM2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcApAQCAtMjYsOSArMjYsMTEgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHkuaCIKIAorI2luY2x1
ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzMsNiArNzUsNDAgQEAgdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSYsIGMKICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKIH0KIAotI2VuZGlmCit2
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmlu
ZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30K
Kwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6
ZV90LCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBhc3RlYm9hcmRJdGVt
SW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7
IH0pOworfQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7Cit9CisKK3ZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90LCBjb25zdCBT
dHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0
bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwg
eyB9KTsKK30KKwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChzaXplX3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpIYW5kbGUmJiwgdWludDY0X3Qgc2l6ZSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKK30KKworI2lm
ICFQTEFURk9STShXUEUpCisKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOworfQorCisjZW5kaWYgLy8gIVBMQVRGT1JNKFdQRSkKKwor
I2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCmluZGV4IDBlMGUyMTU2
OTU4OGM4ZDQ3MDVjOTcxZGMxYmQzYmRhODUzMTkzMWIuLmFkYmMyMjZhZGI4ZWY1MmVhMzcxOGVh
MDY1NmE4OWY1MTBiOGI5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhc3RlYm9hcmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5oCkBAIC03MywxMiArNzMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVX
ZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgdm9pZCB3cml0ZUltYWdlVG9Q
YXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7Ci0gICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKLSAgICB2b2lk
IHJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYm
IHRpdGxlKT4mJik7Ci0gICAgdm9pZCByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpIYW5kbGUmJiwg
dWludDY0X3Qgc2l6ZSk+JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCk+JiYpOwotICAgIHZvaWQgYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4mJik+JiYpOwotICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvJiYpPiYmKTsKICAgICB2b2lkIHVw
ZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRp
ZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCkBAIC0xMDEsNiArOTUsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFBhc3Rl
Ym9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0
X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogI2VuZGlmCiAK
KyAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIHJlYWRVUkxGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYpOworICAg
IHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OkhhbmRsZSYmLCB1aW50NjRfdCBzaXplKT4mJik7
CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8mJik+JiYpOworICAgIHZvaWQgYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6
OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYpOworCiAgICAgdm9pZCB3cml0ZUN1c3RvbURhdGEo
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAgICAgdm9p
ZCB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJik7CiAKQEAgLTExNCw3ICsxMTUsNiBAQCBwcml2YXRlOgogCiAjaWYgVVNF
KExJQldQRSkKICAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlcyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQgd3JpdGVXZWJDb250ZW50
VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50Jik7CiAgICAg
dm9pZCB3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGQzZWEzYmE0MjljODdm
NTdjYjhjMmE5ODQxODM2ZDBkYzVkY2FlYWQuLjY5MWQwMjUzNzE4YzAyYTBkZTBhNmJlOGUzNGQy
MTAzNGUwMDNhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KQEAgLTI2LDE3ICsyNiwxNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYXN0ZWJvYXJkUHJveHkgewogICAgIFdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChz
dHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQgY29udGVudCwgU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lKQogICAgIFdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRJbWFnZSBwYXN0ZWJvYXJkSW1hZ2UsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICAg
ICBXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyB0
ZXh0LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpCi0gICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSkgLT4gKFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzCi0gICAgUmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcg
dXJsLCBTdHJpbmcgdGl0bGUpIFN5bmNocm9ub3VzCi0gICAgUmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRf
dCBzaXplKSBTeW5jaHJvbm91cwotICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90IGl0ZW1zQ291bnQpIFN5bmNocm9ub3VzCi0gICAg
QWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbEluZm8pIFN5bmNocm9ub3VzCi0gICAgSW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRO
YW1lKSAtPiAoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvKSBTeW5jaHJv
bm91cwogICAgIFVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBp
ZGVudGlmaWVycywgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQogI2VuZGlmCiAKICAgICBXcml0ZUN1
c3RvbURhdGEoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhIGRhdGEsIFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cwog
ICAgIFR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nIG9yaWdpbikgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJvbm91cworICAg
IEFsbFBhc3RlYm9hcmRJdGVtSW5mbyhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxJbmZvKSBTeW5jaHJvbm91cworICAgIElu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbykgU3luY2hy
b25vdXMKKyAgICBHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUp
IC0+ICh1aW50NjRfdCBpdGVtc0NvdW50KSBTeW5jaHJvbm91cworICAgIFJlYWRTdHJpbmdGcm9t
UGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgc3RyaW5nKSBTeW5jaHJvbm91cworICAgIFJlYWRV
UkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAt
PiAoU3RyaW5nIHVybCwgU3RyaW5nIHRpdGxlKSBTeW5jaHJvbm91cworICAgIFJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJp
bmcgcGFzdGVib2FyZE5hbWUpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRs
ZSwgdWludDY0X3Qgc2l6ZSkgU3luY2hyb25vdXMKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
ICMgUGFzdGVib2FyZCBtZXNzYWdlcy4KQEAgLTY2LDcgKzY2LDYgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFzdGVib2FyZFByb3h5IHsKIAogI2lmIFVTRShMSUJXUEUpCiAgICAgR2V0UGFzdGVib2FyZFR5
cGVzKCkgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJvbm91cwotICAgIFJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAt
PiAoU3RyaW5nIHN0cmluZykgU3luY2hyb25vdXMKICAgICBXcml0ZVdlYkNvbnRlbnRUb1Bhc3Rl
Ym9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50IGNvbnRlbnQpCiAgICAg
V3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgdGV4
dCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBh
c3RlYm9hcmRQcm94eVdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFz
dGVib2FyZFByb3h5V1BFLmNwcAppbmRleCBhOWJhNmY5MDViMjU2ZDE2YmRjNDg3NmI2NDhjNDg3
YjJmM2RjZWFiLi41MjkzZTMyODVmM2ZiZmI4ZDgxOWUxZmU4NzZkYWI0NjdiYmUwZWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFzdGVib2FyZFByb3h5V1BF
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFzdGVib2FyZFByb3h5
V1BFLmNwcApAQCAtNDAsNyArNDAsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFz
dGVib2FyZFR5cGVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZwogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocGFzdGVib2FyZFR5cGVzKSk7CiB9CiAKLXZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3Jt
UGFzdGVib2FyZCgpLnJlYWRTdHJpbmcoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGYxZmU0YjZiMWYwMTkxNDQ2ZGQ4Zjgw
NWIzZGQ5ZTAwOTMxMGFiZDguLjU1NDRhMjUwNGQ2NzEwM2UzYWIzNWU3YWVmOGNjNTA3MDI0ZDI0
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0yNjUsNTYgKzI2NSwx
MCBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29ucwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6V3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUsIHRleHQsIHBhc3Rl
Ym9hcmROYW1lKSwgMCk7CiB9CiAKLWludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3Rl
Ym9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgdWlu
dDY0X3QgaXRlbXNDb3VudCB7IDAgfTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVtc0NvdW50OjpSZXBseShpdGVtc0Nv
dW50KSwgMCk7Ci0gICAgcmV0dXJuIGl0ZW1zQ291bnQ7Ci19Ci0KLVZlY3RvcjxQYXN0ZWJvYXJk
SXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgVmVjdG9yPFBhc3RlYm9hcmRJdGVt
SW5mbz4gYWxsSW5mbzsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQ
YXN0ZWJvYXJkSXRlbUluZm8ocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm86OlJlcGx5KGFsbEluZm8pLCAwKTsKLSAgICBy
ZXR1cm4gYWxsSW5mbzsKLX0KLQotUGFzdGVib2FyZEl0ZW1JbmZvIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCi17Ci0gICAgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm87Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
bmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpJbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4OjpSZXBseShpbmZvKSwgMCk7Ci0gICAgcmV0dXJuIGluZm87
Ci19Ci0KIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6VXBk
YXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzLCBwYXN0ZWJvYXJkTmFtZSks
IDApOwogfQotCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17Ci0gICAgU2hh
cmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwotICAgIHVpbnQ2NF90IHNpemUgeyAwIH07Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGhhbmRsZSwgc2l6
ZSksIDApOwotICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1l
bW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIg
Kj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKLX0KLQotVVJMIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKLXsKLSAgICBTdHJpbmcgdXJsU3Ry
aW5nOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFz
dGVib2FyZChpbmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHVybFN0cmluZywgdGl0bGUpLCAwKTsK
LSAgICByZXR1cm4gVVJMKHsgfSwgdXJsU3RyaW5nKTsKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKLXsKLSAg
ICBTdHJpbmcgdmFsdWU7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5h
bWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQ6OlJlcGx5KHZhbHVlKSwgMCk7Ci0gICAgcmV0dXJuIHZhbHVlOwotfQogI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKQEAgLTM0NSwx
MyArMjk5LDYgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxT
dHJpbmc+JiB0eXBlcykKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQ
YXN0ZWJvYXJkVHlwZXMoKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQotewotICAgIFN0cmluZyB2YWx1ZTsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3Rl
Ym9hcmRUeXBlKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIDApOwotICAgIHJldHVybiB2YWx1ZTsKLX0KLQogdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogewogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6V3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnRlbnQpLCAwKTsKQEAg
LTM3OCw0ICszMjUsNTAgQEAgbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9t
RGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYKICAgICByZXR1cm4gbmV3
Q2hhbmdlQ291bnQ7CiB9CiAKK2ludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9h
cmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAgdWludDY0
X3QgaXRlbXNDb3VudCB7IDAgfTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVtc0NvdW50OjpSZXBseShpdGVtc0NvdW50
KSwgMCk7CisgICAgcmV0dXJuIGl0ZW1zQ291bnQ7Cit9CisKK1ZlY3RvcjxQYXN0ZWJvYXJkSXRl
bUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5m
bz4gYWxsSW5mbzsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQYXN0
ZWJvYXJkSXRlbUluZm8ocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm86OlJlcGx5KGFsbEluZm8pLCAwKTsKKyAgICByZXR1
cm4gYWxsSW5mbzsKK30KKworUGFzdGVib2FyZEl0ZW1JbmZvIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCit7CisgICAgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm87CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
bmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpJbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4OjpSZXBseShpbmZvKSwgMCk7CisgICAgcmV0dXJuIGluZm87
Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3sKKyAgICBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgdWludDY0X3Qgc2l6ZSB7IDAgfTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXpl
KSwgMCk7CisgICAgaWYgKGhhbmRsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVt
b3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAq
PihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOworfQorCitVUkwgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQoreworICAgIFN0cmluZyB1cmxT
dHJpbmc7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nLCB0aXRsZSksIDAp
OworICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOworfQorCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
eworICAgIFN0cmluZyB2YWx1ZTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJv
YXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZDo6UmVwbHkodmFsdWUpLCAwKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGY3ZjEw
NDFkODk0MmNmZThiYTM3OTc3NmI1OTViOTdjZTkyZTI2OGMuLjA3MDIzNTk2NGRlNzliOGYwYzFk
ZWY1ZWJiOWVlY2YzNTMyYWJiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAg
LTUwLDEyICs1MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25z
dCBXZWJDb3JlOjogUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAg
ICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFVSTCByZWFk
VVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC04MywxMSArNzcs
MTYgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFVTRShMSUJXUEUpCiAgICAgdm9pZCBnZXRUeXBl
cyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIG92ZXJyaWRlOwotICAgIFN0cmluZyByZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBv
dmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRXZWJDb250ZW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNl
bmRpZgogCisgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFVSTCByZWFk
VVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1z
Q291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgV2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlw
ZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pIG92ZXJyaWRlOwogICAgIGxvbmcgd3JpdGVDdXN0b21EYXRh
KGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBkMTYwYTgzODY1Mzgz
Nzg4MTVjMjkzMzBiZDE4NjE3MzM1ODFmNzA0Li45ZjAwMzk5MDA1OWFmNDQyMGMwNWJiN2EzYzNi
OTk5ZmI4YzAwNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTEsMTQgKzUx
LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBp
bnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFVSTCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogI2VuZGlmCisgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwor
ICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICBpbnQgZ2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
CisgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
KyAgICBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRl
bUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgaW50IGdl
dE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
aW5kZXggZjY3NzIwZTM5NWNmZmUzMDMxMGQ4NjRiZjk4OWJlMmZjZmEyYmM4Ny4uOThkMzI0YzUy
ZjYzZGVlNzJmY2ExZWQ1ZGJlZTBjNmI3YWM1ODczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbQpAQCAtMTczLDYwICsxNzMsNjAgQEAgbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OndyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYKICAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShkYXRhKTsK
IH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCitXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLndyaXRlKHVybCk7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCk7CiB9CiAK
LXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKK1ZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShj
b250ZW50KTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5h
bGxQYXN0ZWJvYXJkSXRlbUluZm8oKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYgaW1hZ2Us
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQog
ewotICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoaW1hZ2UpOwor
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9
CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHBhc3RlYm9hcmRUeXBlLCB0ZXh0
KTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVm
ZmVyKGluZGV4LCB0eXBlKTsKIH0KIAotaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1VSTCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKKyAgICByZXR1cm4g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4LCB0aXRsZSk7
CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRl
bnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmlu
Z0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkudXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzKTsKKyAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGlu
ZGV4LCB0eXBlKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKwordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJv
YXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFk
QnVmZmVyKGluZGV4LCB0eXBlKTsKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLndyaXRlKHVybCk7CiB9CiAKLVVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0
cmluZyYgdGl0bGUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9h
cmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkucmVhZFVSTChpbmRleCwgdGl0bGUpOworICAgIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoY29udGVudCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkSW1hZ2UmIGltYWdlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRTdHJpbmcoaW5kZXgs
IHR5cGUpOworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoaW1h
Z2UpOwogfQogCi1WZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8oKTsKKyAgICBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHBhc3RlYm9hcmRUeXBlLCB0ZXh0KTsKIH0KIAot
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhp
ZGVudGlmaWVycyk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>
<flag name="review"
          id="396238"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380594</attachid>
            <date>2019-10-09 17:40:25 -0700</date>
            <delta_ts>2019-10-09 18:27:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-202647-20191009174024.patch</filename>
            <type>text/plain</type>
            <size>70675</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgyNGM2ZjZlOGI3Yjg0
Mzk1MmVmMDgxOTFiNDA1OTE2MDA3Yzk3My4uYjRiNjQ3YmQyZGNmNDgyMmZkOWMzODJiYjdiZjhh
NjY1NDA0NDkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxOS0xMC0wOCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJk
IEFQSV0gUmVmYWN0b3IgUGFzdGVib2FyZCBpdGVtIHJlYWRpbmcgZnVuY3Rpb25zIHRvIHdvcmsg
b24gYm90aCBpT1MgYW5kIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDI2NDcKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgor
CisgICAgICAgIE1vdmVzIHNvbWUgcGFzdGVib2FyZCBoZWxwZXIgZnVuY3Rpb25zIG91dCBvZiBp
T1Mtc3BlY2lmaWMgY29kZSwgYW5kIGludG8gcGxhdGZvcm0tYWdub3N0aWMgY29kZS4gU2VlIGJl
bG93IGZvcgorICAgICAgICBtb3JlIGRldGFpbHMuIFRoZXJlIGlzIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciwgYXMgbm90aGluZyBleGVyY2lzZXMgdGhlc2UgbmV3IHBhc3RlYm9hcmQgZnVuY3Rpb25z
IG9uIG1hY09TIHlldC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6YWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnBhc3RlYm9h
cmRJdGVtSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFVSTCk6CisKKyAgICAgICAgQWRkIHNvbWUgbmV3
IGhlbHBlcnMgb24gUGFzdGVib2FyZCB0byByZWFkIFN0cmluZ3MsIGRhdGEsIGFuZCBVUkxzIGZy
b20gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQuIFRoZXNlIGZvcndhcmQKKyAgICAgICAgdG8gdGhl
IHBsYXRmb3JtIHN0cmF0ZWd5IHdoaWNoLCBpbiBXZWJLaXQyLCBhcmUgY3VycmVudGx5IGltcGxl
bWVudGVkIHVzaW5nIHN5bmMgSVBDLCBidXQgY291bGQgYmUgY2hhbmdlZCBpbgorICAgICAgICB0
aGUgZnV0dXJlIHRvIGJlIGZ1bGx5IGFzeW5jaHJvbm91cy4KKworICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6Om5hbWUgY29uc3Qp
OgorCisgICAgICAgIEV4cG9zZSBhIGNyb3NzLXBsYXRmb3JtIG5hbWUoKSBnZXR0ZXIgb24gUGFz
dGVib2FyZC4gT24gbm9uLUNvY29hIHBsYXRmb3JtcywgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUg
ZW1wdHkKKyAgICAgICAgc3RyaW5nLCBidXQgb24gbWFjT1MgYW5kIGlPUywgdGhpcyByZXR1cm5z
IHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkIG5hbWUsIHdoaWNoIGlzIHN0b3JlZCBpbiBtX3Bhc3Rl
Ym9hcmROYW1lLgorCisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OnBhdGhGb3JDb250ZW50VHlwZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmNvbnRlbnRUeXBl
Rm9ySGlnaGVzdEZpZGVsaXR5SXRlbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm86OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm86OmRlY29kZSk6CisKKyAgICAgICAgQWRkcyBhIGNvdXBsZSBvZiBuZXcgbWVtYmVy
cyB0byBQYXN0ZWJvYXJkSXRlbUluZm8gKHdoaWNoIHJlcHJlc2VudHMgbWV0YWRhdGEgYWJvdXQg
YSBnaXZlbiBpdGVtIGluIHRoZSBwbGF0Zm9ybQorICAgICAgICBwYXN0ZWJvYXJkKS4gVGhlc2Ug
YXJlIGNoYW5nZUNvdW50ICh3aGljaCBpcyBzZWxmIGV4cGxhbmF0b3J5KSwgYW5kIHdlYlNhZmVU
eXBlc0J5RmlkZWxpdHksIHdoaWNoIGlzIGEgbGlzdCBvZgorICAgICAgICB0eXBlcyBpbiBmaWRl
bGl0eSBvcmRlciB3aGljaCBjb250YWlucyB0aGUgbGlzdCBvZiBwYXN0ZWJvYXJkIHR5cGVzIHRo
YXQgYXJlIHNhZmUgdG8gZXhwb3NlIHRvIGJpbmRpbmdzLiBUaGVzZQorICAgICAgICBtYXkgaW5j
bHVkZSB0eXBlcyBzdWNoIGFzICJ0ZXh0L3BsYWluIiwgInRleHQvaHRtbCIsICJ0ZXh0L3VyaS1s
aXN0IiwgYW5kICJpbWFnZS9wbmciLgorCisgICAgICAgIFRvIGRpc3Rpbmd1aXNoIHRoaXMgbGlz
dCBmcm9tIHRoZSBleGlzdGluZyBjb250ZW50VHlwZXNCeUZpZGVsaXR5IGxpc3QsIEkndmUgYWxz
byByZW5hbWVkIGNvbnRlbnRUeXBlc0J5RmlkZWxpdHkKKyAgICAgICAgdG8gcGxhdGZvcm1UeXBl
c0J5RmlkZWxpdHksIHRvIG1ha2UgaXQgbW9yZSBvYnZpb3VzIHRoYXQgdGhpcyBvdGhlciBsaXN0
IG9mIHR5cGVzIGFyZSBwbGF0Zm9ybS1zcGVjaWZpYywgYW5kIG5vdAorICAgICAgICBnZW5lcmFs
bHkgc2FmZSB0byBleHBvc2UgdG8gdGhlIHdlYi4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorCisgICAgICAgIE1vdmUgc2V2ZXJhbCBoZWxwZXJzIG91dCBpbnRvIHBsYXRmb3JtLWFnbm9z
dGljIGNvZGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbTogQWRkZWQuCisK
KyAgICAgICAgQWRkIGEgbmV3IGZpbGUgdG8gY29udGFpbiB0aGUgaW1wbGVtZW50YXRpb24gb2Yg
UGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8sIHdoaWNoIGlzIHRoZSBz
YW1lCisgICAgICAgIGFjcm9zcyBDb2NvYSBwbGF0Zm9ybXMuCisKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFVSTCBjb25zdCk6CisKKyAgICAgICAgQWRkaXRpb25h
bGx5IHJlZmFjdG9yIGFsbCBtZXRob2RzIG9uIFBsYXRmb3JtUGFzdGVib2FyZCB0aGF0IHRha2Ug
cGFzdGVib2FyZCBpdGVtIGluZGljZXMgYXMgc2lnbmVkIGludGVnZXJzCisgICAgICAgIChgaW50
YCkgdG8gcmVjZWl2ZSBgc2l6ZV90YCB2YWx1ZXMgaW5zdGVhZC4KKworICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1BsYXRmb3JtUGFzdGVi
b2FyZExpYldQRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRTdHJpbmcgY29uc3QpOgorCisgICAgICAgIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBzdHViIGZv
ciBXUEUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6bW9kZXJuUGFzdGVib2FyZFR5cGVGb3JXZWJTYWZlTUlNRVR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6d2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2Fy
ZFR5cGUpOgorCisgICAgICAgIEFkZCBoZWxwZXJzIHRvIGNvbnZlcnQgYmV0d2VlbiBtb2Rlcm4g
TlNQYXN0ZWJvYXJkVHlwZXMgYW5kIHdlYi1zYWZlIHR5cGVzLiBXaGlsZSBzb21lIGxvZ2ljIGV4
aXN0cyB0b2RheSBvbgorICAgICAgICBtYWNPUyB0byBjb252ZXJ0IGJldHdlZW4gbGVnYWN5IHBh
c3RlYm9hcmQgdHlwZXMgYW5kIHdlYi1zYWZlIHR5cGVzLCBjb252ZXJzaW9uIGJldHdlZW4gdGhl
IG1vZGVybiBwYXN0ZWJvYXJkCisgICAgICAgIHR5cGVzIGFuZCB3ZWItc2FmZSB0eXBlcyBhcmUg
bmVlZGVkIHNpbmNlIE5TUGFzdGVib2FyZEl0ZW0ncyB0eXBlcyBvbmx5IHN1cHBvcnQgTlNQYXN0
ZWJvYXJkVHlwZXMgYW5kCisgICAgICAgIGR5bmFtaWNhbGx5IGRlY2xhcmVkIHR5cGVzIHRoYXQg
bWF0Y2ggdGhlIGZvcm1hdCBvZiBhIHVuaXZlcnNhbCB0eXBlIGlkZW50ZmllciAoZm9yIGluc3Rh
bmNlLCAiY29tLmZvby5iYXIiKS4KKworICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6cmVhZFN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjpjb3VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorCisgICAgICAgIEltcGxlbWVudCBhbGwgb2Yg
dGhlc2UgaGVscGVycyBieSBsb29raW5nIHVwIHRoZSBOU1Bhc3RlYm9hcmRJdGVtIGF0IHRoZSBn
aXZlbiBpdGVtIGluZGV4IGFuZCBxdWVyeWluZyBpdCBmb3IKKyAgICAgICAgZGF0YSBmb3Igbm9u
LWxlZ2FjeSBwYXN0ZWJvYXJkIHR5cGVzLgorCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBh
c3RlYm9hcmQ6Oml0ZW1BdEluZGV4IGNvbnN0KToKKwogMjAxOS0xMC0wOCAgQWRyaWFuIFBlcmV6
IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gRml4
IG5vbi11bmlmaWVkIGJ1aWxkcyBhZnRlciByMjUwNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBlYWIwNDcwZTQy
YTI4ZGNjMTYwY2FkYWI4NjE2YmU4M2JmYzJmYTguLjYzZjk0NGM0OTc3MWU0OTk4YTQ4NDAwMWE1
YzViNGNlMGU5Mzg5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTktMTAtMDggIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NsaXBib2Fy
ZCBBUEldIFJlZmFjdG9yIFBhc3RlYm9hcmQgaXRlbSByZWFkaW5nIGZ1bmN0aW9ucyB0byB3b3Jr
IG9uIGJvdGggaU9TIGFuZCBtYWNPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAyNjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4K
KworICAgICAgICBSZWZhY3RvciBpT1Mtc3BlY2lmaWMgcGFzdGVib2FyZCBmdW5jdGlvbnMgdG8g
YmUgcGxhdGZvcm0tYWdub3N0aWMuIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJ
dGVtSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
c3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlVVJMVG9QYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9h
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlU3Ry
aW5nVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJk
SXRlbUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dl
YlBhc3RlYm9hcmRQcm94eVdQRS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OndyaXRlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTktMTAtMDgg
IEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXVtXUEVdIEZpeCBub24tdW5pZmllZCBidWlsZHMgYWZ0ZXIgcjI1MDQ4NgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IGIyNGVjMTQwYzg1MDY2YjMwOGIzZDJlN2NmNGI5M2M2Mzkz
ZDZhZmEuLjIwOTg3Yzc4MTdiZmJjNDQyYmVlZGVmNDk0NDM1MDkyMDdkYTkyYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOS0xMC0wOCAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2xpcGJvYXJkIEFQ
SV0gUmVmYWN0b3IgUGFzdGVib2FyZCBpdGVtIHJlYWRpbmcgZnVuY3Rpb25zIHRvIHdvcmsgb24g
Ym90aCBpT1MgYW5kIG1hY09TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDI2NDcKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisg
ICAgICAgIFJlZmFjdG9yIGlPUy1zcGVjaWZpYyBwYXN0ZWJvYXJkIGZ1bmN0aW9ucyB0byBiZSBw
bGF0Zm9ybS1hZ25vc3RpYy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAg
IChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8pOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZCk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50
aWZpZXJzKToKKwogMjAxOS0xMC0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGQgSURMIGZvciByZXF1ZXN0SWRsZUNhbGxiYWNrCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAppbmRleCBhMDY5MmE4ZjdiN2QxODIwNjNlNTM3MGRiMzg5YjcyZDc5YmE4YzliLi4w
OTU3OTQzY2M0ZmViZTM5ZGQ3MGExMjhlZTZjNGY3MTgxYTYwMjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKQEAgLTE5OCw2ICsxOTgsNyBAQCBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lz
dHJ5Q29jb2EubW0KIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
Lm1tCiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQogcGxh
dGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCitwbGF0Zm9ybS9jb2NvYS9QbGF0Zm9ybVBh
c3RlYm9hcmRDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQubW0KIHBsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29h
Lm1tCiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2EzYTliZGFlZjg3
Mzk5YzA4ZjliM2ZiMzI3ZjBmNzVjODQ5NGU0Yy4uZDkyYjc2MmVmOTRkNTEwZjBmN2Q2Yzg5YTA3
MWE4N2VkZGEwNjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTUxOTMsNiArMTUxOTMsNyBAQAogCQlGNDRFQkJEQTFEQjVE
RDlEMDAyNzczMzQgLyogU3RhdGljUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RhdGljUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDVDMjMxQjE5OTVCNzNCMDBBNkUyRTMgLyogQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF4aXNTY3JvbGxTbmFwT2Zmc2V0
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUMyMzFDMTk5NUI3M0IwMEE2
RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY0NjI4QTlFMjM0RDNCQkYwMEJDODg0QyAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtUGFz
dGVib2FyZENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDY3MjkyNTFF
MERFNUFCMDBBQ0MzRDggLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDc4NzU1MjE5OTgzQUZGMDAyNEEyODcgLyogU2Nyb2xsU25hcEFu
aW1hdG9yU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3ODc1NTMx
OTk4M0FGRjAwMjRBMjg3IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjcwOCw2ICsyMjcwOSw3IEBACiAJCQkJ
QTE4ODkwQUQxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
LmggKi8sCiAJCQkJQTE4ODkwQUMxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tICovLAogCQkJCTlCRUQyQ0FGMUY3Q0MwNjIwMDY2NjAxOCAvKiBQYXN0
ZWJvYXJkQ29jb2EubW0gKi8sCisJCQkJRjQ2MjhBOUUyMzREM0JCRjAwQkM4ODRDIC8qIFBsYXRm
b3JtUGFzdGVib2FyZENvY29hLm1tICovLAogCQkJCTUyQjBENEJEMUM1N0ZEMUUwMDc3Q0U1MyAv
KiBQbGF0Zm9ybVZpZXcuaCAqLywKIAkJCQlDREEyOUEwODFDQkQ5OUY0MDA5MDFDQ0YgLyogUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlLmggKi8sCiAJCQkJQ0RBMjlBMEExQ0JEOUE3NDAwOTAxQ0NG
IC8qIFBsYXliYWNrU2Vzc2lvbk1vZGVsLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuY3BwCmluZGV4IDU1NWVjMjgyZTRiYjY2ZTVmOWQxMTEyMGI5NzYxYTcyNWViYzNmMzQu
LjhmOWJhYjg0NTYxMGQwZjkxMDdkODIzMGRmMjNlZWYxZmIwMWMxNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC05OCw0ICs5OCwyOSBAQCBWZWN0b3I8U3RyaW5n
PiBQYXN0ZWJvYXJkOjpyZWFkQWxsU3RyaW5ncyhjb25zdCBTdHJpbmcmIHR5cGUpCiAKICNlbmRp
ZgogCitWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJk
SXRlbUluZm8oKSBjb25zdAoreworICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1lKCkpOworfQorCitQ
YXN0ZWJvYXJkSXRlbUluZm8gUGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBp
bmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBuYW1lKCkpOwor
fQorCitTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUo
KSk7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgcmV0dXJuIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCkpOworfQorCitVUkwgUGFzdGVib2FyZDo6cmVh
ZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpCit7CisgICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFVSTEZyb21QYXN0ZWJvYXJk
KGluZGV4LCBuYW1lKCksIHRpdGxlKTsKK30KKwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAppbmRleCBmYjg2MGUxMzg0NTIxYTk4OTVjNDdhNTJiNDlhMjQzMmJhM2ZkODVhLi42
OTg3ZWQyNTY1M2ZiNmM5YzY4YjNhMzdhZjc3NjA0YzA4YjY2OTUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCkBAIC0yNjUsMTEgKzI2NSwxNiBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRDb2NvYVR5cGVBc0ZpbGUo
Y29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5TQXJyYXkgKnN1cHBv
cnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlwZXMoKTsKLSAgICBjb25zdCBTdHJpbmcmIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CiAgICAgbG9uZyBjaGFuZ2VDb3Vu
dCgpIGNvbnN0OwogICAgIGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiByZWFkQ3VzdG9tRGF0
YSgpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjb25zdCBTdHJpbmcmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CisjZWxzZQorICAgIGNvbnN0
IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIENPTVB0cjxJRGF0YU9iamVjdD4gZGF0YU9iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YU9iamVjdDsgfQogICAgIHZvaWQgc2V0RXh0ZXJuYWxEYXRh
T2JqZWN0KElEYXRhT2JqZWN0Kik7CkBAIC0yNzksNiArMjg0LDEzIEBAIHB1YmxpYzoKICAgICB2
b2lkIHdyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYsIGNvbnN0IFVSTCYpOyAvLyBGSVhN
RTogTGF5ZXJpbmcgdmlvbGF0aW9uLgogI2VuZGlmCiAKKyAgICBWZWN0b3I8UGFzdGVib2FyZEl0
ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdDsKKyAgICBQYXN0ZWJvYXJkSXRl
bUluZm8gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CisKKyAgICBTdHJp
bmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSk7CisgICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRp
dGxlKTsKKwogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgcmVz
cGVjdHNVVElGaWRlbGl0aWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRJdGVtSW5mby5oCmluZGV4IGQxZDIzMDhhZDk5NWFjZjljN2E1ZjUzZGVkOWZkMmEw
ODBlZWNmNzUuLjNiMzk3YzM3MzRkMzJhMGZiNjBlNzAzMWVmOWQwYmM1YWI0ODMyYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCkBAIC02NiwxOCAr
NjYsMjAgQEAgT3B0aW9uYWw8UHJlc2VudGF0aW9uU2l6ZT4gUHJlc2VudGF0aW9uU2l6ZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm8gewogICAg
IFZlY3RvcjxTdHJpbmc+IHBhdGhzRm9yRmlsZVVwbG9hZDsKLSAgICBWZWN0b3I8U3RyaW5nPiBj
b250ZW50VHlwZXNGb3JGaWxlVXBsb2FkOwotICAgIFZlY3RvcjxTdHJpbmc+IGNvbnRlbnRUeXBl
c0J5RmlkZWxpdHk7CisgICAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxv
YWQ7CisgICAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1UeXBlc0J5RmlkZWxpdHk7CiAgICAgU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVOYW1lOwogICAgIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZTsKICAgICBib29sIGlzTm9uVGV4dFR5cGUgeyBmYWxzZSB9OwogICAgIGJv
b2wgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQgeyBmYWxzZSB9OworICAgIFZl
Y3RvcjxTdHJpbmc+IHdlYlNhZmVUeXBlc0J5RmlkZWxpdHk7CisgICAgaW50IGNoYW5nZUNvdW50
IHsgMCB9OwogICAgIFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUgcHJlZmVycmVkUHJl
c2VudGF0aW9uU3R5bGUgeyBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlOjpVbnNwZWNp
ZmllZCB9OwogCiAgICAgU3RyaW5nIHBhdGhGb3JDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQocGF0aHNGb3JGaWxlVXBsb2FkLnNpemUo
KSA9PSBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLnNpemUoKSk7Ci0gICAgICAgIGF1dG8gaW5k
ZXggPSBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkLmZpbmQodHlwZSk7CisgICAgICAgIEFTU0VS
VChwYXRoc0ZvckZpbGVVcGxvYWQuc2l6ZSgpID09IHBsYXRmb3JtVHlwZXNGb3JGaWxlVXBsb2Fk
LnNpemUoKSk7CisgICAgICAgIGF1dG8gaW5kZXggPSBwbGF0Zm9ybVR5cGVzRm9yRmlsZVVwbG9h
ZC5maW5kKHR5cGUpOwogICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCiAgICAgICAgICAg
ICByZXR1cm4geyB9OwogCkBAIC0xMDQsMTAgKzEwNiwxMCBAQCBzdHJ1Y3QgUGFzdGVib2FyZEl0
ZW1JbmZvIHsKIAogICAgIFN0cmluZyBjb250ZW50VHlwZUZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0o
KSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRlbnRUeXBlc0ZvckZpbGVVcGxvYWQuaXNF
bXB0eSgpKQorICAgICAgICBpZiAocGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICByZXR1cm4gY29udGVudFR5cGVz
Rm9yRmlsZVVwbG9hZC5maXJzdCgpOworICAgICAgICByZXR1cm4gcGxhdGZvcm1UeXBlc0ZvckZp
bGVVcGxvYWQuZmlyc3QoKTsKICAgICB9CiAKICAgICBTdHJpbmcgcGF0aEZvckhpZ2hlc3RGaWRl
bGl0eUl0ZW0oKSBjb25zdApAQCAtMTI1LDcgKzEyNyw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSXRl
bUluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgUGFzdGVib2FyZEl0ZW1JbmZv
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHBhdGhz
Rm9yRmlsZVVwbG9hZCA8PCBjb250ZW50VHlwZXNGb3JGaWxlVXBsb2FkIDw8IGNvbnRlbnRUeXBl
c0J5RmlkZWxpdHkgPDwgc3VnZ2VzdGVkRmlsZU5hbWUgPDwgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSA8PCBpc05vblRleHRUeXBlIDw8IGNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250
ZW50OworICAgIGVuY29kZXIgPDwgcGF0aHNGb3JGaWxlVXBsb2FkIDw8IHBsYXRmb3JtVHlwZXNG
b3JGaWxlVXBsb2FkIDw8IHBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5IDw8IHN1Z2dlc3RlZEZpbGVO
YW1lIDw8IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPDwgaXNOb25UZXh0VHlwZSA8PCBjb250
YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudCA8PCB3ZWJTYWZlVHlwZXNCeUZpZGVsaXR5
IDw8IGNoYW5nZUNvdW50OwogICAgIGVuY29kZXIuZW5jb2RlRW51bShwcmVmZXJyZWRQcmVzZW50
YXRpb25TdHlsZSk7CiB9CiAKQEAgLTEzNiwxMCArMTM4LDEwIEBAIE9wdGlvbmFsPFBhc3RlYm9h
cmRJdGVtSW5mbz4gUGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYXRoc0ZvckZpbGVVcGxvYWQpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuY29udGVudFR5cGVzRm9yRmlsZVVwbG9hZCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGVudFR5cGVzQnlG
aWRlbGl0eSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGxhdGZvcm1UeXBlc0J5
RmlkZWxpdHkpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVkRmlsZU5hbWUpKQpAQCAtMTU0LDYgKzE1NiwxMiBA
QCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVtSW5mbzo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGFp
bnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViU2FmZVR5cGVzQnlGaWRl
bGl0eSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5jaGFuZ2VDb3VudCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQucHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGRjMTZmMGZhMGM1YTkwMTJj
NjUyNWY1YTk1MzBmZTc2NTgxNTEzNjUuLjU3N2NhZjg5NWJlYjE5Nzk4OTkyNzAxZWQ1ZmY4YWM3
MDUyMGYzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRT
dHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oCkBAIC00NiwxMiArNDYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9Q
YXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25z
dCBQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
LSAgICB2aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1
YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxQYXN0
ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC03Myw2ICs2NywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBsb25nIHNldENv
bG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAg
IHZpcnR1YWwgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNl
bmRpZgorICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFVSTCBy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgdmlydHVhbCBQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUlu
Zm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7CisgICAgdmlydHVhbCBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogCiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBl
c1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIG9yaWdpbikgPSAwOwogICAgIHZpcnR1YWwgbG9uZyB3cml0ZUN1c3RvbURh
dGEoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CkBAIC04NCw3ICs4NCw2IEBAIHB1YmxpYzoKIAogI2lmIFVTRShMSUJXUEUpCiAg
ICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykgPSAwOwotICAg
IHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bh
c3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVBhc3RlYm9hcmQuaAppbmRleCBlMDMzMTUwOThlMTU1YTkyNmY3MTk4ZTJjNzI2YjM3NTdjMTI0
NDJmLi5kZjAzOTNlMzVmY2E1YjdkYjAzNDYzMDM3NjBhZmVjNmFkYWE2YzMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtMzMsNiArMzMsNyBA
QAogCiAjaWYgUExBVEZPUk0oTUFDKQogT0JKQ19DTEFTUyBOU1Bhc3RlYm9hcmQ7CitPQkpDX0NM
QVNTIE5TUGFzdGVib2FyZEl0ZW07CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC01OSwxMCArNjAsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSB8fCBVU0UoTElCV1BFKQogICAgIFdFQkNPUkVfRVhQT1JUIFBs
YXRmb3JtUGFzdGVib2FyZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxQYXN0ZWJvYXJk
SXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbygpOwotICAgIFdFQkNPUkVfRVhQT1JUIFBh
c3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKICNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIFBh
c3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB1bmlxdWVO
YW1lKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVi
b2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9t
VHlwZSk7CkBAIC05MCw5ICs5MSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyByZWFkU3RyaW5nKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoaW50IGluZGV4LCBTdHJpbmcm
IHRpdGxlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBV
UkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBudW1i
ZXJPZkZpbGVzKCkgY29uc3Q7CiAKQEAgLTEwOSw2ICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICBi
b29sIGFsbG93UmVhZGluZ1VSTEF0SW5kZXgoY29uc3QgVVJMJiwgaW50IGluZGV4KSBjb25zdDsK
ICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW1B
dEluZGV4KHNpemVfdCBpbmRleCkgY29uc3Q7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBtX3Bhc3RlYm9hcmQ7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCAy
NjQ3NDgwYmRhNzJiZjM2MzMyZTU0MmZlMTc3ZmZjMjY5OGZmMjg3Li5jMGZiYTRiZWYwNzUxNWRl
NGFkMjU0YjQwMzcwN2YxMWI1Y2IxNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0xNDgsNyArMTQ4LDcgQEAgUGFzdGVib2Fy
ZDo6RmlsZUNvbnRlbnRTdGF0ZSBQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRlKCkKICAgICAg
ICAgLy8gSWYgdGhlIGl0ZW0gY2FuJ3QgYmUgdHJlYXRlZCBhcyBhbiBhdHRhY2htZW50LCBpdCdz
IHZlcnkgbGlrZWx5IHRoYXQgdGhlIGNvbnRlbnQgYmVpbmcgZHJvcHBlZCBpcyBqdXN0CiAgICAg
ICAgIC8vIGFuIGlubGluZSBwaWVjZSBvZiB0ZXh0LCB3aXRoIG5vIGZpbGVzIGluIHRoZSBwYXN0
ZWJvYXJkIChhbmQgdGhlcmVmb3JlLCBubyByaXNrIG9mIGxlYWtpbmcgZmlsZSBwYXRocwogICAg
ICAgICAvLyB0byB3ZWIgY29udGVudCkuIEluIGNhc2VzIHN1Y2ggYXMgdGhlc2UsIHdlIHNob3Vs
ZCBub3Qgc3VwcHJlc3MgRGF0YVRyYW5zZmVyIGFjY2Vzcy4KLSAgICAgICAgYXV0byBpdGVtcyA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBhdXRvIGl0ZW1zID0gYWxsUGFz
dGVib2FyZEl0ZW1JbmZvKCk7CiAgICAgICAgIG1heUNvbnRhaW5GaWxlUGF0aHMgPSBpdGVtcy5z
aXplKCkgIT0gMSB8fCBub3RGb3VuZCAhPSBpdGVtcy5maW5kTWF0Y2hpbmcoW10gKGF1dG8mIGl0
ZW0pIHsKICAgICAgICAgICAgIHJldHVybiBpdGVtLmNhbkJlVHJlYXRlZEFzQXR0YWNobWVudE9y
RmlsZSgpIHx8IGl0ZW0uaXNOb25UZXh0VHlwZSB8fCBpdGVtLmNvbnRhaW5zRmlsZVVSTEFuZEZp
bGVVcGxvYWRDb250ZW50OwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzQ5NTQzM2VhY2U5NjhiNjM2MmY2ZTU2YzQ0Y2Q1ODgzM2RhZWJjNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29h
Lm1tCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgorCisjaW1wb3J0ICJQYXN0ZWJvYXJkSXRlbUlu
Zm8uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZv
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpCit7CisgICAgVmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gaXRlbUluZm87CisgICAgaW50IG51bWJlck9mSXRlbXMg
PSBjb3VudCgpOworICAgIGl0ZW1JbmZvLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZJ
dGVtcyk7CisgICAgZm9yIChOU0ludGVnZXIgaXRlbUluZGV4ID0gMDsgaXRlbUluZGV4IDwgbnVt
YmVyT2ZJdGVtczsgKytpdGVtSW5kZXgpCisgICAgICAgIGl0ZW1JbmZvLnVuY2hlY2tlZEFwcGVu
ZChpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGl0ZW1JbmRleCkpOworICAgIHJldHVybiBpdGVt
SW5mbzsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAwMjcxYjkzZTcwNWNlMmM0MmQ2MzJmZTJk
YjI5YWE0NmU4MzZkMjM5Li5lMWNlMmYzNGI1YzE0YmEyODk3N2I4YjgxZTdkNmQyY2M2MmI4NDY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAt
MzU1LDcgKzM1NSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0
aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsCiAgICAgICAgIC8vIFRyeSB0
byByZWFkIGRhdGEgZnJvbSBlYWNoIHR5cGUgaWRlbnRpZmllciB0aGF0IHRoaXMgcGFzdGVib2Fy
ZCBpdGVtIHN1cHBvcnRzLCBhbmQgV2ViS2l0IGFsc28gcmVjb2duaXplcy4gVHlwZSBpZGVudGlm
aWVycyBhcmUKICAgICAgICAgLy8gcmVhZCBpbiBvcmRlciBvZiBmaWRlbGl0eSwgYXMgc3BlY2lm
aWVkIGJ5IGVhY2ggcGFzdGVib2FyZCBpdGVtLgogICAgICAgICBSZWFkZXJSZXN1bHQgcmVzdWx0
ID0gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKLSAgICAgICAgZm9yIChhdXRvJiB0eXBl
IDogaW5mby5jb250ZW50VHlwZXNCeUZpZGVsaXR5KSB7CisgICAgICAgIGZvciAoYXV0byYgdHlw
ZSA6IGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkpIHsKICAgICAgICAgICAgIGlmICghaXNU
eXBlQWxsb3dlZEJ5UmVhZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBkOGM1NmY5NWFhYTNmMzZmZWJmMTQwM2QwOTdhYThj
N2I3MWE1NTFlLi45MTZkYWViZDBhMjc4MGM5MzYzZDM1NTk4NWE5YjYxMmVmNDFkMTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0KQEAgLTExNiwxNyArMTE2LDkgQEAgc3RhdGljIFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0
aW9uU3R5bGUgcGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShVSVByZWZlcnIKIAogI2Vu
ZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxFX0FORF9URUFNX0RB
VEEKIAotVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oKQorUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgVmVjdG9y
PFBhc3RlYm9hcmRJdGVtSW5mbz4gaXRlbUluZm87Ci0gICAgZm9yIChOU0ludGVnZXIgaXRlbUlu
ZGV4ID0gMDsgaXRlbUluZGV4IDwgW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXTsgKytpdGVt
SW5kZXgpCi0gICAgICAgIGl0ZW1JbmZvLmFwcGVuZChpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KGl0ZW1JbmRleCkpOwotICAgIHJldHVybiBpdGVtSW5mbzsKLX0KLQotUGFzdGVib2FyZEl0ZW1J
bmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5k
ZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCisg
ICAgaWYgKGluZGV4ID49IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KFttX3Bhc3RlYm9hcmQgbnVt
YmVyT2ZJdGVtc10pKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgUGFzdGVib2FyZEl0ZW1J
bmZvIGluZm87CkBAIC0xNDAsMTUgKzEzMiwxNSBAQCBQYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZv
cm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCkKICAgICAg
ICAgZm9yIChOU1VSTCAqdXJsIGluIHVybHMpCiAgICAgICAgICAgICBpbmZvLnBhdGhzRm9yRmls
ZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQodXJsLnBhdGgpOwogCi0gICAgICAgIGluZm8uY29udGVu
dFR5cGVzRm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5jb3Vu
dCk7CisgICAgICAgIGluZm8ucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShmaWxlVHlwZXMuY291bnQpOwogICAgICAgICBmb3IgKE5TU3RyaW5nICpmaWxl
VHlwZSBpbiBmaWxlVHlwZXMpCi0gICAgICAgICAgICBpbmZvLmNvbnRlbnRUeXBlc0ZvckZpbGVV
cGxvYWQudW5jaGVja2VkQXBwZW5kKGZpbGVUeXBlKTsKKyAgICAgICAgICAgIGluZm8ucGxhdGZv
cm1UeXBlc0ZvckZpbGVVcGxvYWQudW5jaGVja2VkQXBwZW5kKGZpbGVUeXBlKTsKICAgICB9IGVs
c2UgewogICAgICAgICBOU0FycmF5ICpmaWxlVHlwZXMgPSBpdGVtUHJvdmlkZXIud2ViX2ZpbGVV
cGxvYWRDb250ZW50VHlwZXM7Ci0gICAgICAgIGluZm8uY29udGVudFR5cGVzRm9yRmlsZVVwbG9h
ZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZpbGVUeXBlcy5jb3VudCk7CisgICAgICAgIGluZm8u
cGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmaWxlVHlw
ZXMuY291bnQpOwogICAgICAgICBpbmZvLnBhdGhzRm9yRmlsZVVwbG9hZC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGZpbGVUeXBlcy5jb3VudCk7CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmZpbGVU
eXBlIGluIGZpbGVUeXBlcykgewotICAgICAgICAgICAgaW5mby5jb250ZW50VHlwZXNGb3JGaWxl
VXBsb2FkLnVuY2hlY2tlZEFwcGVuZChmaWxlVHlwZSk7CisgICAgICAgICAgICBpbmZvLnBsYXRm
b3JtVHlwZXNGb3JGaWxlVXBsb2FkLnVuY2hlY2tlZEFwcGVuZChmaWxlVHlwZSk7CiAgICAgICAg
ICAgICBpbmZvLnBhdGhzRm9yRmlsZVVwbG9hZC51bmNoZWNrZWRBcHBlbmQoeyB9KTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTE2OCw5ICsxNjAsOSBAQCBQYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZv
cm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCkKICAgICBp
bmZvLmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50ID0gaXRlbVByb3ZpZGVyLndl
Yl9jb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudDsKICAgICBpbmZvLnN1Z2dlc3Rl
ZEZpbGVOYW1lID0gaXRlbVByb3ZpZGVyLnN1Z2dlc3RlZE5hbWU7CiAgICAgTlNBcnJheTxOU1N0
cmluZyAqPiAqcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyA9IGl0ZW1Qcm92aWRlci5yZWdpc3Rl
cmVkVHlwZUlkZW50aWZpZXJzOwotICAgIGluZm8uY29udGVudFR5cGVzQnlGaWRlbGl0eS5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMuY291bnQpOworICAg
IGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWdp
c3RlcmVkVHlwZUlkZW50aWZpZXJzLmNvdW50KTsKICAgICBmb3IgKE5TU3RyaW5nICp0eXBlSWRl
bnRpZmllciBpbiByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7Ci0gICAgICAgIGluZm8uY29u
dGVudFR5cGVzQnlGaWRlbGl0eS51bmNoZWNrZWRBcHBlbmQodHlwZUlkZW50aWZpZXIpOworICAg
ICAgICBpbmZvLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5LnVuY2hlY2tlZEFwcGVuZCh0eXBlSWRl
bnRpZmllcik7CiAgICAgICAgIENGU3RyaW5nUmVmIGNmVHlwZUlkZW50aWZpZXIgPSAoQ0ZTdHJp
bmdSZWYpdHlwZUlkZW50aWZpZXI7CiAgICAgICAgIGlmICghVVRUeXBlSXNEZWNsYXJlZChjZlR5
cGVJZGVudGlmaWVyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTkwLDE3ICsxODIsMTQg
QEAgUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIGluZm8uaXNOb25UZXh0VHlwZSA9IHRydWU7
CiAgICAgfQogCisgICAgaW5mby5jaGFuZ2VDb3VudCA9IGNoYW5nZUNvdW50KCk7CisKICAgICBy
ZXR1cm4gaW5mbzsKIH0KIAogI2Vsc2UKIAotUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFz
dGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQpCi17Ci0gICAgcmV0dXJuIHsg
fTsKLX0KLQotVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjph
bGxQYXN0ZWJvYXJkSXRlbUluZm8oKQorUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVi
b2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QpCiB7CiAgICAgcmV0dXJuIHsg
fTsKIH0KQEAgLTY1Niw3ICs2NDUsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1
cm4gc3RyaW5nczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIE5TSW5kZXhTZXQgKmluZGV4U2V0
ID0gW05TSW5kZXhTZXQgaW5kZXhTZXRXaXRoSW5kZXg6aW5kZXhdOwogCkBAIC02NjcsNyArNjU2
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXAKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoW3Bhc3RlYm9hcmRJdGVtLmdldCgpIG9iamVjdEF0SW5kZXg6MF0pOwogfQogCi1TdHJp
bmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAorU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAodHlwZSA9PSBT
dHJpbmcoa1VUVHlwZVVSTCkpIHsKICAgICAgICAgU3RyaW5nIHRpdGxlOwpAQCAtNjk3LDcgKzY4
Niw3IEBAIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1VUkwg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkVVJMKGludCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29u
c3QKK1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcm
IHRpdGxlKSBjb25zdAogewogICAgIGlkIHZhbHVlID0gW21fcGFzdGVib2FyZCB2YWx1ZXNGb3JQ
YXN0ZWJvYXJkVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVJMIGluSXRlbVNldDpb
TlNJbmRleFNldCBpbmRleFNldFdpdGhJbmRleDppbmRleF1dLmZpcnN0T2JqZWN0OwogICAgIGlm
ICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFz
dGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVi
b2FyZExpYldQRS5jcHAKaW5kZXggZjhhNjFlYzcwYzBjMWE0Y2QzNzdmMGU3Y2Q2NzZlZmI5ZGU1
YmM4YS4uNDNiYTllNGRlYTVmNjVhNzYwOWUzMzJlYWQyZmViNzNkZjNiMzI0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApA
QCAtNzIsNyArNzIsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZE9yaWdpbigpCiAKIFN0cmlu
ZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICByZXR1
cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQoMCwgdHlwZSk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsIHR5cGUs
IG5hbWUoKSk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRh
KGNvbnN0IFN0cmluZyYpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIo
Y29uc3QgU3RyaW5nJikKIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRl
eHQmIHRleHQpCiB7Ci0gICAgdGV4dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47
Y2hhcnNldD11dGYtOCIpOworICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3Bs
YWluO2NoYXJzZXQ9dXRmLTgiLCBuYW1lKCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybVBhc3RlYm9h
cmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3JtUGFz
dGVib2FyZExpYldQRS5jcHAKaW5kZXggMGZkYjc1ZGFmNjlkNThlNWRlMDFhMTRiMWU1ZWQ1YTdi
OGQ5NDdjZi4uZTU0MGMzNWQ1M2ZmYTQxMTMyMWI4ODE4YjJiZWE2MjA2YjU3NWI0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3JtUGFzdGVib2FyZExp
YldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3JtUGFz
dGVib2FyZExpYldQRS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB3cGVfcGFzdGVib2FyZF9z
dHJpbmdfdmVjdG9yX2ZyZWUoJnBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKLVN0cmluZyBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoaW50LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitT
dHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCwgY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdAogewogICAgIHN0cnVjdCB3cGVfcGFzdGVib2FyZF9zdHJpbmcgc3RyaW5n
ID0geyBudWxscHRyLCAwIH07CiAgICAgd3BlX3Bhc3RlYm9hcmRfZ2V0X3N0cmluZyhtX3Bhc3Rl
Ym9hcmQsIHR5cGUudXRmOCgpLmRhdGEoKSwgJnN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCAwY2IxZGQ4
YjkzMGEwNjViN2MwODAxNWNhMmUwY2U1ZGJkNWIyYjQ5Li4xOTRhZGRiY2Y5ZTE1YzRlZGI2NjUw
NDExMjEzM2ExMzJkZWY0OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTM4NCw2ICszODQsMTE2IEBAIGxvbmcg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBjb25zdCBTdHJpbmcmIHBhCiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CiB9CiAKK3N0YXRp
YyBOU1Bhc3RlYm9hcmRUeXBlIG1vZGVyblBhc3RlYm9hcmRUeXBlRm9yV2ViU2FmZU1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgd2ViU2FmZVR5cGUpCit7CisgICAgaWYgKHdlYlNhZmVUeXBlID09ICJ0
ZXh0L3BsYWluIl9zKQorICAgICAgICByZXR1cm4gTlNQYXN0ZWJvYXJkVHlwZVN0cmluZzsKKyAg
ICBpZiAod2ViU2FmZVR5cGUgPT0gInRleHQvaHRtbCJfcykKKyAgICAgICAgcmV0dXJuIE5TUGFz
dGVib2FyZFR5cGVIVE1MOworICAgIGlmICh3ZWJTYWZlVHlwZSA9PSAidGV4dC91cmktbGlzdCJf
cykKKyAgICAgICAgcmV0dXJuIE5TUGFzdGVib2FyZFR5cGVVUkw7CisgICAgaWYgKHdlYlNhZmVU
eXBlID09ICJpbWFnZS9wbmciX3MpCisgICAgICAgIHJldHVybiBOU1Bhc3RlYm9hcmRUeXBlUE5H
OworICAgIHJldHVybiBuaWw7Cit9CisKK2VudW0gY2xhc3MgQ29udGFpbnNGaWxlVVJMIHsgTm8s
IFllcyB9Oworc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJk
VHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHlwZSwgQ29udGFpbnNGaWxlVVJMIGNvbnRh
aW5zRmlsZVVSTCkKK3sKKyAgICBpZiAoW3BsYXRmb3JtVHlwZSBpc0VxdWFsOk5TUGFzdGVib2Fy
ZFR5cGVTdHJpbmddICYmIGNvbnRhaW5zRmlsZVVSTCA9PSBDb250YWluc0ZpbGVVUkw6Ok5vKQor
ICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgaWYgKFtwbGF0Zm9ybVR5cGUgaXNF
cXVhbDpOU1Bhc3RlYm9hcmRUeXBlSFRNTF0gfHwgW3BsYXRmb3JtVHlwZSBpc0VxdWFsOk5TUGFz
dGVib2FyZFR5cGVSVEZdIHx8IFtwbGF0Zm9ybVR5cGUgaXNFcXVhbDpOU1Bhc3RlYm9hcmRUeXBl
UlRGRF0pCisgICAgICAgIHJldHVybiAidGV4dC9odG1sIl9zOworICAgIGlmIChbcGxhdGZvcm1U
eXBlIGlzRXF1YWw6TlNQYXN0ZWJvYXJkVHlwZVVSTF0gJiYgY29udGFpbnNGaWxlVVJMID09IENv
bnRhaW5zRmlsZVVSTDo6Tm8pCisgICAgICAgIHJldHVybiAidGV4dC91cmktbGlzdCJfczsKKyAg
ICBpZiAoW3BsYXRmb3JtVHlwZSBpc0VxdWFsOk5TUGFzdGVib2FyZFR5cGVQTkddIHx8IFtwbGF0
Zm9ybVR5cGUgaXNFcXVhbDpOU1Bhc3RlYm9hcmRUeXBlVElGRl0pCisgICAgICAgIHJldHVybiAi
aW1hZ2UvcG5nIl9zOworICAgIHJldHVybiB7IH07Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+
IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKK3sKKyAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5k
ZXgoaW5kZXgpOworICAgIGlmICghaXRlbSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1
dG8gcGxhdGZvcm1UeXBlID0gbW9kZXJuUGFzdGVib2FyZFR5cGVGb3JXZWJTYWZlTUlNRVR5cGUo
dHlwZSk7CisgICAgaWYgKCFwbGF0Zm9ybVR5cGUpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnBsYXRmb3JtVHlwZV0p
IHsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7CisgICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgIH0KKworICAgIHJl
dHVybiBudWxscHRyOworfQorCitTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAoreworICAgIE5TUGFzdGVi
b2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CisgICAgaWYgKCFpdGVtKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBwbGF0Zm9ybVR5cGUgPSBtb2Rlcm5QYXN0ZWJv
YXJkVHlwZUZvcldlYlNhZmVNSU1FVHlwZSh0eXBlKTsKKyAgICBpZiAoIXBsYXRmb3JtVHlwZSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBbaXRlbSBzdHJpbmdGb3JUeXBlOnBs
YXRmb3JtVHlwZV07Cit9CisKK1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRVUkwoc2l6ZV90
IGluZGV4LCBTdHJpbmcmIHRpdGxlKSBjb25zdAoreworICAgIHRpdGxlID0gZW1wdHlTdHJpbmco
KTsKKworICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7Cisg
ICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgUmV0YWluUHRyPE5TVVJM
PiB1cmw7CisgICAgaWYgKGlkIHByb3BlcnR5TGlzdCA9IFtpdGVtIHByb3BlcnR5TGlzdEZvclR5
cGU6TlNQYXN0ZWJvYXJkVHlwZVVSTF0pCisgICAgICAgIHVybCA9IGFkb3B0TlMoW1tOU1VSTCBh
bGxvY10gaW5pdFdpdGhQYXN0ZWJvYXJkUHJvcGVydHlMaXN0OnByb3BlcnR5TGlzdCBvZlR5cGU6
TlNQYXN0ZWJvYXJkVHlwZVVSTF0pOworICAgIGVsc2UgaWYgKE5TU3RyaW5nICphYnNvbHV0ZVN0
cmluZyA9IFtpdGVtIHN0cmluZ0ZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVVSTF0pCisgICAgICAg
IHVybCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOmFic29sdXRlU3RyaW5nXTsKKyAgICByZXR1cm4g
eyBbdXJsIGlzRmlsZVVSTF0gPyBuaWwgOiB1cmwuZ2V0KCkgfTsKK30KKworaW50IFBsYXRmb3Jt
UGFzdGVib2FyZDo6Y291bnQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIHBh
c3RlYm9hcmRJdGVtc10uY291bnQ7Cit9CisKK1Bhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4KQoreworICAg
IE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CisgICAgaWYgKCFp
dGVtKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm87
CisgICAgTlNBcnJheTxOU1Bhc3RlYm9hcmRUeXBlPiAqcGxhdGZvcm1UeXBlcyA9IFtpdGVtIHR5
cGVzXTsKKyAgICBhdXRvIGNvbnRhaW5zRmlsZVVSTCA9IFtwbGF0Zm9ybVR5cGVzIGNvbnRhaW5z
T2JqZWN0Ok5TUGFzdGVib2FyZFR5cGVGaWxlVVJMXSA/IENvbnRhaW5zRmlsZVVSTDo6WWVzIDog
Q29udGFpbnNGaWxlVVJMOjpObzsKKyAgICBMaXN0SGFzaFNldDxTdHJpbmc+IHdlYlNhZmVUeXBl
czsKKyAgICBpbmZvLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkocGxhdGZvcm1UeXBlcy5jb3VudCk7CisgICAgZm9yIChOU1Bhc3RlYm9hcmRUeXBlIHR5cGUg
aW4gcGxhdGZvcm1UeXBlcykgeworICAgICAgICBpbmZvLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5
LnVuY2hlY2tlZEFwcGVuZCh0eXBlKTsKKyAgICAgICAgYXV0byB3ZWJTYWZlVHlwZSA9IHdlYlNh
ZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKHR5cGUsIGNvbnRhaW5zRmlsZVVSTCk7
CisgICAgICAgIGlmICh3ZWJTYWZlVHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICB3ZWJTYWZlVHlwZXMuYWRkKFdURk1vdmUod2ViU2FmZVR5cGUpKTsKKyAg
ICB9CisgICAgaW5mby5jb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudCA9IGNvbnRh
aW5zRmlsZVVSTCA9PSBDb250YWluc0ZpbGVVUkw6OlllczsKKyAgICBpbmZvLndlYlNhZmVUeXBl
c0J5RmlkZWxpdHkgPSBjb3B5VG9WZWN0b3Iod2ViU2FmZVR5cGVzKTsKKyAgICBpbmZvLmNoYW5n
ZUNvdW50ID0gY2hhbmdlQ291bnQoKTsKKyAgICByZXR1cm4gaW5mbzsKK30KKworTlNQYXN0ZWJv
YXJkSXRlbSAqUGxhdGZvcm1QYXN0ZWJvYXJkOjppdGVtQXRJbmRleChzaXplX3QgaW5kZXgpIGNv
bnN0Cit7CisgICAgTlNBcnJheTxOU1Bhc3RlYm9hcmRJdGVtICo+ICppdGVtcyA9IFttX3Bhc3Rl
Ym9hcmQgcGFzdGVib2FyZEl0ZW1zXTsKKyAgICByZXR1cm4gaW5kZXggPj0gaXRlbXMuY291bnQg
PyBuaWwgOiBpdGVtc1tpbmRleF07Cit9CisKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0KaW5kZXggZGUzOTVkYTk2ZmNkYTk4MTdjMWUyNmU3ZDZlNWZkMzMzOTZm
M2JmMC4uMGExODE3NDQ1MTBlODNhOGYzMWJiNmExNWU2Y2VkNjIyNTRjZjI4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0KQEAgLTE4MCw0MSArMTgwLDM0IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3
cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmIGRhCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53
cml0ZShkYXRhKSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6d3JpdGVVUkxUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQotewotICAgIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUodXJsKTsKLX0KLQotdm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OndyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkV2ViQ29udGVudCYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3Zv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGNvbnRlbnQpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1J
bmZvKCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVJbWFnZVRvUGFzdGVi
b2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQYXN0ZWJvYXJkSXRlbUluZm8mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
bmRleCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUocGFzdGVib2FyZFR5cGUs
IHRleHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuY291bnQoKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmlu
ZyhpbmRleCwgcGFzdGVib2FyZFR5cGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6
OnJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYm
IHRpdGxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0
bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFN0cmluZyB0aXRsZTsKICAgICBTdHJp
bmcgdXJsID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4
LCB0aXRsZSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHRp
dGxlKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVt
b3J5OjpIYW5kbGUmJiwgdWludDY0X3Qgc2l6ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OkhhbmRsZSYmLCB1aW50
NjRfdCBzaXplKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZm
ZXIoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTIzMSwxOSAr
MjI0LDI2IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGhhbmRsZSksIHNpemUpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlVVJMVG9Q
YXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmNvdW50KCkpOworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkud3JpdGUodXJsKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlV2ViQ29udGVudFRvUGFzdGVib2Fy
ZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpKTsKKyAgICBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGNvbnRlbnQpOwogfQogCi12
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UGFzdGVib2FyZEl0ZW1JbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CiB7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4KSk7CisgICAgUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOworfQorCit2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQoreworICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3Jp
dGUocGFzdGVib2FyZFR5cGUsIHRleHQpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVu
dGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTI1MSw2ICsyNTEsNiBA
QCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZAogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkudXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGlkZW50aWZpZXJzKTsKIH0K
IAotI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5
LmNwcAppbmRleCA3YmZmOTM0YmZkNjMxOTk0ZDU1NjJhODY5MzRhMTFiOTdjMjg0MWFjLi4wZmVi
ZGMxMjMxNmNlYmNlNDgwMDRjOTE1YmIyMDg0NWRiMGJjNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKQEAgLTI2LDkgKzI2LDExIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGFzdGVib2FyZFByb3h5LmgiCiAKKyNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPG11dGV4Pgor
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTczLDYgKzc1LDQwIEBAIHZvaWQg
V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGEmLCBjCiAgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7CiB9CiAKLSNlbmRp
Zgordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBT
dHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KHNpemVfdCwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQYXN0ZWJvYXJk
SXRlbUluZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKK30KKwordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOworfQorCit2
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCwgY29u
c3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYm
IHRpdGxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7
IH0sIHsgfSk7Cit9CisKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYsIHVpbnQ2NF90IHNpemUpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7Cit9CisK
KyNpZiAhUExBVEZPUk0oV1BFKQorCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmlu
Z0Zyb21QYXN0ZWJvYXJkKHNpemVfdCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKK30KKworI2VuZGlmIC8vICFQTEFURk9STShXUEUp
CisKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAppbmRleCAwZTBl
MjE1Njk1ODhjOGQ0NzA1Yzk3MWRjMWJkM2JkYTg1MzE5MzFiLi5hZGJjMjI2YWRiOGVmNTJlYTM3
MThlYTA2NTZhODlmNTEwYjhiOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkuaApAQCAtNzMsMTIgKzczLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdy
aXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29u
dGVudCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIHZvaWQgd3JpdGVJbWFn
ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOwotICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVpbnQ2
NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Ci0gICAg
dm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJp
bmcmJiB0aXRsZSk+JiYpOwotICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2
NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFuZGxl
JiYsIHVpbnQ2NF90IHNpemUpPiYmKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QpPiYmKTsKLSAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKLSAgICB2b2lkIGluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyYmKT4mJik7CiAgICAgdm9p
ZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlk
ZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKQpAQCAtMTAxLDYgKzk1LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQ
YXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVp
bnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKICNlbmRp
ZgogCisgICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCByZWFkVVJMRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmIHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsK
KyAgICB2b2lkIHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5OjpIYW5kbGUmJiwgdWludDY0X3Qgc2l6ZSk+
JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZv
aWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvJiYpPiYmKTsKKyAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKKwogICAgIHZvaWQgd3JpdGVDdXN0b21E
YXRhKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogICAg
IHZvaWQgdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJik+JiYpOwogCkBAIC0xMTQsNyArMTE1LDYgQEAgcHJpdmF0ZToKIAogI2lm
IFVTRShMSUJXUEUpCiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCByZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIHdyaXRlV2ViQ29u
dGVudFRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYpOwog
ICAgIHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkM2VhM2JhNDI5
Yzg3ZjU3Y2I4YzJhOTg0MTgzNmQwZGM1ZGNhZWFkLi42OTFkMDI1MzcxOGMwMmEwZGUwYTZiZThl
MzRkMjEwMzRlMDAzYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNiwxNyArMjYsMTcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICAgICBXcml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9h
cmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50IGNvbnRlbnQsIFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSkKICAgICBXcml0ZUltYWdlVG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2FyZEltYWdlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUp
CiAgICAgV3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJp
bmcgdGV4dCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQotICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVi
b2FyZE5hbWUpIC0+IChTdHJpbmcgc3RyaW5nKSBTeW5jaHJvbm91cwotICAgIFJlYWRVUkxGcm9t
UGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3Ry
aW5nIHVybCwgU3RyaW5nIHRpdGxlKSBTeW5jaHJvbm91cwotICAgIFJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFz
dGVib2FyZE5hbWUpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWlu
dDY0X3Qgc2l6ZSkgU3luY2hyb25vdXMKLSAgICBHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChTdHJp
bmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBpdGVtc0NvdW50KSBTeW5jaHJvbm91cwot
ICAgIEFsbFBhc3RlYm9hcmRJdGVtSW5mbyhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0
b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxJbmZvKSBTeW5jaHJvbm91cwotICAg
IEluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbykgU3lu
Y2hyb25vdXMKICAgICBVcGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoVmVjdG9yPFN0cmlu
Zz4gaWRlbnRpZmllcnMsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICNlbmRpZgogCiAgICAgV3Jp
dGVDdXN0b21EYXRhKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBkYXRhLCBT
dHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25v
dXMKICAgICBUeXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShTdHJpbmcgcGFzdGVib2FyZE5h
bWUsIFN0cmluZyBvcmlnaW4pIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25vdXMK
KyAgICBBbGxQYXN0ZWJvYXJkSXRlbUluZm8oU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVj
dG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsSW5mbykgU3luY2hyb25vdXMKKyAg
ICBJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVi
b2FyZE5hbWUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm8pIFN5
bmNocm9ub3VzCisgICAgR2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmRO
YW1lKSAtPiAodWludDY0X3QgaXRlbXNDb3VudCkgU3luY2hyb25vdXMKKyAgICBSZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3Ry
aW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHN0cmluZykgU3luY2hyb25vdXMKKyAgICBS
ZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkgU3luY2hyb25vdXMKKyAgICBSZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwg
U3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGUsIHVpbnQ2NF90IHNpemUpIFN5bmNocm9ub3VzCiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAjIFBhc3RlYm9hcmQgbWVzc2FnZXMuCkBAIC02Niw3ICs2Niw2IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhc3RlYm9hcmRQcm94eSB7CiAKICNpZiBVU0UoTElCV1BFKQogICAgIEdldFBhc3RlYm9h
cmRUeXBlcygpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgU3luY2hyb25vdXMKLSAgICBSZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSkgLT4gKFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzCiAgICAgV3JpdGVXZWJDb250ZW50VG9Q
YXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCBjb250ZW50KQog
ICAgIFdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5n
IHRleHQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9X
ZWJQYXN0ZWJvYXJkUHJveHlXUEUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dl
YlBhc3RlYm9hcmRQcm94eVdQRS5jcHAKaW5kZXggYTliYTZmOTA1YjI1NmQxNmJkYzQ4NzZiNjQ4
YzQ4N2IyZjNkY2VhYi4uNTI5M2UzMjg1ZjNmYmZiOGQ4MTllMWZlODc2ZGFiNDY3YmJlMGVjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhc3RlYm9hcmRQcm94
eVdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhc3RlYm9hcmRQ
cm94eVdQRS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRUeXBlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmcKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0
Zm9ybVBhc3RlYm9hcmQoKS5yZWFkU3RyaW5nKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmMWZlNGI2YjFmMDE5MTQ0NmRk
OGY4MDViM2RkOWUwMDkzMTBhYmQ4Li41NTQ0YTI1MDRkNjcxMDNlM2FiMzVlN2FlZjhjYzUwNzAy
NGQyNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMjY1LDU2ICsy
NjUsMTAgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnMKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJv
YXJkUHJveHk6OldyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlLCB0ZXh0LCBw
YXN0ZWJvYXJkTmFtZSksIDApOwogfQogCi1pbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQotewotICAg
IHVpbnQ2NF90IGl0ZW1zQ291bnQgeyAwIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6R2V0UGFzdGVib2FyZEl0ZW1zQ291bnQocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudDo6UmVwbHkoaXRl
bXNDb3VudCksIDApOwotICAgIHJldHVybiBpdGVtc0NvdW50OwotfQotCi1WZWN0b3I8UGFzdGVi
b2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5m
byhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQotewotICAgIFZlY3RvcjxQYXN0ZWJvYXJk
SXRlbUluZm8+IGFsbEluZm87Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
QWxsUGFzdGVib2FyZEl0ZW1JbmZvKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6QWxsUGFzdGVib2FyZEl0ZW1JbmZvOjpSZXBseShhbGxJbmZvKSwgMCk7Ci0g
ICAgcmV0dXJuIGFsbEluZm87Ci19Ci0KLVBhc3RlYm9hcmRJdGVtSW5mbyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQotewotICAgIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvOwotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleDo6UmVwbHkoaW5mbyksIDApOwotICAgIHJldHVybiBp
bmZvOwotfQotCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9ydGVkVHlw
ZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVycywgcGFzdGVib2FyZE5h
bWUpLCAwKTsKIH0KLQotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQotewotICAg
IFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKLSAgICB1aW50NjRfdCBzaXplIHsgMCB9Owot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShoYW5kbGUs
IHNpemUpLCAwKTsKLSAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFy
ZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7Ci19Ci0KLVVSTCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpCi17Ci0gICAgU3RyaW5nIHVy
bFN0cmluZzsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJv
bVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkOjpSZXBseSh1cmxTdHJpbmcsIHRpdGxlKSwg
MCk7Ci0gICAgcmV0dXJuIFVSTCh7IH0sIHVybFN0cmluZyk7Ci19Ci0KLVN0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCi17
Ci0gICAgU3RyaW5nIHZhbHVlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9h
cmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkOjpSZXBseSh2YWx1ZSksIDApOwotICAgIHJldHVybiB2YWx1ZTsKLX0KICNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCkBAIC0z
NDUsMTMgKzI5OSw2IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
R2V0UGFzdGVib2FyZFR5cGVzKCksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBh
c3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkKLXsKLSAgICBTdHJpbmcgdmFsdWU7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGluZGV4LCBw
YXN0ZWJvYXJkVHlwZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCAwKTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0K
IHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIHsKICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OldyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb250ZW50KSwgMCk7
CkBAIC0zNzgsNCArMzI1LDUwIEBAIGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1
c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmCiAgICAgcmV0dXJu
IG5ld0NoYW5nZUNvdW50OwogfQogCitpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0
ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIHVp
bnQ2NF90IGl0ZW1zQ291bnQgeyAwIH07CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6R2V0UGFzdGVib2FyZEl0ZW1zQ291bnQocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudDo6UmVwbHkoaXRlbXND
b3VudCksIDApOworICAgIHJldHVybiBpdGVtc0NvdW50OworfQorCitWZWN0b3I8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFZlY3RvcjxQYXN0ZWJvYXJkSXRl
bUluZm8+IGFsbEluZm87CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWxs
UGFzdGVib2FyZEl0ZW1JbmZvKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6QWxsUGFzdGVib2FyZEl0ZW1JbmZvOjpSZXBseShhbGxJbmZvKSwgMCk7CisgICAg
cmV0dXJuIGFsbEluZm87Cit9CisKK1Bhc3RlYm9hcmRJdGVtSW5mbyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQoreworICAgIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleDo6UmVwbHkoaW5mbyksIDApOworICAgIHJldHVybiBp
bmZvOworfQorCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit7CisgICAg
U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIHVpbnQ2NF90IHNpemUgeyAwIH07Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGhhbmRsZSwg
c2l6ZSksIDApOworICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJl
ZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKK30KKworVVJMIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBTdHJpbmcg
dXJsU3RyaW5nOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxG
cm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHVybFN0cmluZywgdGl0bGUp
LCAwKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgdXJsU3RyaW5nKTsKK30KKworU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK3sKKyAgICBTdHJpbmcgdmFsdWU7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFz
dGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgMCk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBm
N2YxMDQxZDg5NDJjZmU4YmEzNzk3NzZiNTk1Yjk3Y2U5MmUyNjhjLi4wNzAyMzU5NjRkZTc5Yjhm
MGMxZGVmNWViYjllZWNmMzUzMmFiYmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CkBAIC01MCwxMiArNTAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQo
Y29uc3QgV2ViQ29yZTo6IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBVUkwg
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtODMsMTEg
Kzc3LDE2IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBVU0UoTElCV1BFKQogICAgIHZvaWQgZ2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKSBvdmVycmlkZTsKLSAgICBTdHJpbmcgcmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkV2ViQ29udGVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiAjZW5kaWYKIAorICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBVUkwg
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgaW50IGdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFdl
YkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgVmVj
dG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+
IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSBvdmVycmlkZTsKICAgICBsb25nIHdyaXRlQ3VzdG9t
RGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYsIGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZDE2MGE4Mzg2
NTM4Mzc4ODE1YzI5MzMwYmQxODYxNzMzNTgxZjcwNC4uOWYwMDM5OTAwNTlhZjQ0MjBjMDViYjdh
M2MzYjk5OWZiOGMwMDZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTUxLDE0
ICs1MSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwog
ICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBVUkwgcmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9h
cmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICNlbmRpZgorICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKKyAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgaW50IGdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOworICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CisgICAgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIGlu
dCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCmluZGV4IGY2NzcyMGUzOTVjZmZlMzAzMTBkODY0YmY5ODliZTJmY2ZhMmJjODcuLjk4ZDMy
NGM1MmY2M2RlZTcyZmNhMWVkNWRiZWUwYzZiN2FjNTg3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0KQEAgLTE3Myw2MCArMTczLDYwIEBAIGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEm
CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoZGF0
YSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotCi12b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZSh1cmwpOworICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgpOwog
fQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCitWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQogewotICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3Jp
dGUoY29udGVudCk7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIGlt
YWdlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGltYWdl
KTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgp
OwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAg
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlwZSwg
dGV4dCk7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVh
ZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CiAKLWludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitVUkwg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKQogewotICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CisgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFVSTChpbmRleCwgdGl0
bGUpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRlU3VwcG9ydGVkVHlw
ZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhpZGVudGlmaWVycyk7
CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0cmlu
ZyhpbmRleCwgdHlwZSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
cmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS53cml0ZSh1cmwpOwogfQogCi1VUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
VVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9QYXN0
ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRpdGxlKTsKKyAgICBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGNvbnRlbnQpOwogfQogCi1TdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZEltYWdlJiBpbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGlu
ZGV4LCB0eXBlKTsKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRl
KGltYWdlKTsKIH0KIAotVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7CisgICAgUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4dCk7CiB9
CiAKLVdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCk7CisgICAgUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS51cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnMoaWRlbnRpZmllcnMpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>